aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--blurb8
-rw-r--r--data/data/README19
-rw-r--r--data/data/fcvt2
-rw-r--r--data/data/fcvt.awk96
-rw-r--r--data/data/fontdefs.ld1049
-rw-r--r--data/data/latin2.ld1058
-rw-r--r--data/data/loutrefs.ld298
-rw-r--r--data/data/oldrefs.ld212
-rw-r--r--data/data/refstyle.ld308
-rw-r--r--data/data/standard.ld2709
-rw-r--r--doc/doc/README20
-rw-r--r--doc/doc/design/README26
-rw-r--r--doc/doc/design/all58
-rw-r--r--doc/doc/design/mydefs591
-rw-r--r--doc/doc/design/outfile.ps12860
-rw-r--r--doc/doc/design/s1_045
-rw-r--r--doc/doc/design/s2_014
-rw-r--r--doc/doc/design/s2_187
-rw-r--r--doc/doc/design/s2_279
-rw-r--r--doc/doc/design/s2_3326
-rw-r--r--doc/doc/design/s2_4345
-rw-r--r--doc/doc/design/s2_590
-rw-r--r--doc/doc/design/s2_92
-rw-r--r--doc/doc/design/s3_010
-rw-r--r--doc/doc/design/s3_176
-rw-r--r--doc/doc/design/s3_2113
-rw-r--r--doc/doc/design/s3_3143
-rw-r--r--doc/doc/design/s3_451
-rw-r--r--doc/doc/design/s3_92
-rw-r--r--doc/doc/design/s4_088
-rw-r--r--doc/doc/design/s5_011
-rw-r--r--doc/doc/design/s5_1123
-rw-r--r--doc/doc/design/s5_2372
-rw-r--r--doc/doc/design/s5_3125
-rw-r--r--doc/doc/design/s5_497
-rw-r--r--doc/doc/design/s5_5109
-rw-r--r--doc/doc/design/s5_92
-rw-r--r--doc/doc/design/s6_018
-rw-r--r--doc/doc/design/s6_185
-rw-r--r--doc/doc/design/s6_279
-rw-r--r--doc/doc/design/s6_92
-rw-r--r--doc/doc/design/s7_084
-rw-r--r--doc/doc/expert/README24
-rw-r--r--doc/doc/expert/all28
-rw-r--r--doc/doc/expert/det17
-rw-r--r--doc/doc/expert/det_filt109
-rw-r--r--doc/doc/expert/det_gall388
-rw-r--r--doc/doc/expert/det_hori91
-rw-r--r--doc/doc/expert/det_lexi273
-rw-r--r--doc/doc/expert/det_name90
-rw-r--r--doc/doc/expert/det_opti39
-rw-r--r--doc/doc/expert/det_prec110
-rw-r--r--doc/doc/expert/det_size157
-rw-r--r--doc/doc/expert/det_sort90
-rw-r--r--doc/doc/expert/det_visi181
-rw-r--r--doc/doc/expert/exa22
-rw-r--r--doc/doc/expert/exa_bibl238
-rw-r--r--doc/doc/expert/exa_chap273
-rw-r--r--doc/doc/expert/exa_equa149
-rw-r--r--doc/doc/expert/exa_inde178
-rw-r--r--doc/doc/expert/exa_page267
-rw-r--r--doc/doc/expert/exa_para236
-rw-r--r--doc/doc/expert/mydefs461
-rw-r--r--doc/doc/expert/outfile.ps23719
-rw-r--r--doc/doc/expert/pre59
-rw-r--r--doc/doc/expert/pre_back12
-rw-r--r--doc/doc/expert/pre_begi31
-rw-r--r--doc/doc/expert/pre_bend61
-rw-r--r--doc/doc/expert/pre_brea197
-rw-r--r--doc/doc/expert/pre_case51
-rw-r--r--doc/doc/expert/pre_colo101
-rw-r--r--doc/doc/expert/pre_conc327
-rw-r--r--doc/doc/expert/pre_cont45
-rw-r--r--doc/doc/expert/pre_cove32
-rw-r--r--doc/doc/expert/pre_cros36
-rw-r--r--doc/doc/expert/pre_data37
-rw-r--r--doc/doc/expert/pre_font211
-rw-r--r--doc/doc/expert/pre_gall14
-rw-r--r--doc/doc/expert/pre_grap284
-rw-r--r--doc/doc/expert/pre_hadj33
-rw-r--r--doc/doc/expert/pre_hcon17
-rw-r--r--doc/doc/expert/pre_head124
-rw-r--r--doc/doc/expert/pre_hexp29
-rw-r--r--doc/doc/expert/pre_hlim18
-rw-r--r--doc/doc/expert/pre_hmir30
-rw-r--r--doc/doc/expert/pre_hsca34
-rw-r--r--doc/doc/expert/pre_hshi43
-rw-r--r--doc/doc/expert/pre_incg36
-rw-r--r--doc/doc/expert/pre_incl43
-rw-r--r--doc/doc/expert/pre_incr43
-rw-r--r--doc/doc/expert/pre_inse19
-rw-r--r--doc/doc/expert/pre_kshr23
-rw-r--r--doc/doc/expert/pre_lang61
-rw-r--r--doc/doc/expert/pre_link85
-rw-r--r--doc/doc/expert/pre_mome72
-rw-r--r--doc/doc/expert/pre_next17
-rw-r--r--doc/doc/expert/pre_notr61
-rw-r--r--doc/doc/expert/pre_null26
-rw-r--r--doc/doc/expert/pre_oneo62
-rw-r--r--doc/doc/expert/pre_oner36
-rw-r--r--doc/doc/expert/pre_open41
-rw-r--r--doc/doc/expert/pre_outl21
-rw-r--r--doc/doc/expert/pre_page20
-rw-r--r--doc/doc/expert/pre_plai15
-rw-r--r--doc/doc/expert/pre_prep30
-rw-r--r--doc/doc/expert/pre_rota57
-rw-r--r--doc/doc/expert/pre_rump89
-rw-r--r--doc/doc/expert/pre_scal26
-rw-r--r--doc/doc/expert/pre_spac55
-rw-r--r--doc/doc/expert/pre_span58
-rw-r--r--doc/doc/expert/pre_tagg15
-rw-r--r--doc/doc/expert/pre_text92
-rw-r--r--doc/doc/expert/pre_ucol21
-rw-r--r--doc/doc/expert/pre_unde34
-rw-r--r--doc/doc/expert/pre_verb30
-rw-r--r--doc/doc/expert/pre_wide22
-rw-r--r--doc/doc/expert/pre_yuni35
-rw-r--r--doc/doc/expert/preface31
-rw-r--r--doc/doc/expert/pri15
-rw-r--r--doc/doc/expert/pri_cros112
-rw-r--r--doc/doc/expert/pri_defi246
-rw-r--r--doc/doc/expert/pri_gall279
-rw-r--r--doc/doc/expert/pri_obje178
-rw-r--r--doc/doc/expert/tex383
-rw-r--r--doc/doc/slides/README18
-rw-r--r--doc/doc/slides/all680
-rw-r--r--doc/doc/slides/mydefs8
-rw-r--r--doc/doc/slides/outfile.ps6106
-rw-r--r--doc/doc/user/README48
-rw-r--r--doc/doc/user/all52
-rw-r--r--doc/doc/user/ap_byp100
-rw-r--r--doc/doc/user/ap_col581
-rw-r--r--doc/doc/user/ap_qck367
-rw-r--r--doc/doc/user/bas32
-rw-r--r--doc/doc/user/bas_char603
-rw-r--r--doc/doc/user/bas_conv75
-rw-r--r--doc/doc/user/bas_date84
-rw-r--r--doc/doc/user/bas_drop44
-rw-r--r--doc/doc/user/bas_empt26
-rw-r--r--doc/doc/user/bas_font670
-rw-r--r--doc/doc/user/bas_head31
-rw-r--r--doc/doc/user/bas_hyph39
-rw-r--r--doc/doc/user/bas_lang127
-rw-r--r--doc/doc/user/bas_line43
-rw-r--r--doc/doc/user/bas_marg33
-rw-r--r--doc/doc/user/bas_objs141
-rw-r--r--doc/doc/user/bas_par1106
-rw-r--r--doc/doc/user/bas_par2338
-rw-r--r--doc/doc/user/bas_spac104
-rw-r--r--doc/doc/user/bas_star129
-rw-r--r--doc/doc/user/bas_supe17
-rw-r--r--doc/doc/user/bas_unde55
-rw-r--r--doc/doc/user/bas_verb104
-rw-r--r--doc/doc/user/bgr24
-rw-r--r--doc/doc/user/bgr_boxs216
-rw-r--r--doc/doc/user/bgr_clip49
-rw-r--r--doc/doc/user/bgr_colo60
-rw-r--r--doc/doc/user/bgr_incl82
-rw-r--r--doc/doc/user/bgr_mirr38
-rw-r--r--doc/doc/user/bgr_outl16
-rw-r--r--doc/doc/user/bgr_prec216
-rw-r--r--doc/doc/user/bgr_rota35
-rw-r--r--doc/doc/user/bgr_scal68
-rw-r--r--doc/doc/user/bgr_text261
-rw-r--r--doc/doc/user/dia56
-rw-r--r--doc/doc/user/dia_cons7
-rw-r--r--doc/doc/user/dia_defi366
-rw-r--r--doc/doc/user/dia_erro87
-rw-r--r--doc/doc/user/dia_geom206
-rw-r--r--doc/doc/user/dia_intr116
-rw-r--r--doc/doc/user/dia_labe514
-rw-r--r--doc/doc/user/dia_link381
-rw-r--r--doc/doc/user/dia_node721
-rw-r--r--doc/doc/user/dia_posi233
-rw-r--r--doc/doc/user/dia_summ2112
-rw-r--r--doc/doc/user/dia_synt604
-rw-r--r--doc/doc/user/dia_tags202
-rw-r--r--doc/doc/user/dia_tree417
-rw-r--r--doc/doc/user/draft.eps289
-rw-r--r--doc/doc/user/equ31
-rw-r--r--doc/doc/user/equ_defs57
-rw-r--r--doc/doc/user/equ_disp126
-rw-r--r--doc/doc/user/equ_intr60
-rw-r--r--doc/doc/user/equ_math212
-rw-r--r--doc/doc/user/equ_spac106
-rw-r--r--doc/doc/user/equ_summ782
-rw-r--r--doc/doc/user/equ_symb437
-rw-r--r--doc/doc/user/equ_tequ44
-rw-r--r--doc/doc/user/equ_vert175
-rw-r--r--doc/doc/user/fmt16
-rw-r--r--doc/doc/user/fmt1.awk12
-rw-r--r--doc/doc/user/fmt2.awk16
-rw-r--r--doc/doc/user/fmt_head330
-rw-r--r--doc/doc/user/fmt_marg149
-rw-r--r--doc/doc/user/fmt_setu211
-rw-r--r--doc/doc/user/fmt_size103
-rw-r--r--doc/doc/user/gra46
-rw-r--r--doc/doc/user/gra_capt110
-rw-r--r--doc/doc/user/gra_data382
-rw-r--r--doc/doc/user/gra_erro48
-rw-r--r--doc/doc/user/gra_func180
-rw-r--r--doc/doc/user/gra_intr51
-rw-r--r--doc/doc/user/gra_keys171
-rw-r--r--doc/doc/user/gra_over224
-rw-r--r--doc/doc/user/gra_plac54
-rw-r--r--doc/doc/user/gra_summ473
-rw-r--r--doc/doc/user/gra_tick296
-rw-r--r--doc/doc/user/johnson19
-rw-r--r--doc/doc/user/johnson.out66
-rw-r--r--doc/doc/user/letterbook356
-rw-r--r--doc/doc/user/mat40
-rw-r--r--doc/doc/user/mat_comm124
-rw-r--r--doc/doc/user/mat_defs55
-rw-r--r--doc/doc/user/mat_disp126
-rw-r--r--doc/doc/user/mat_intr63
-rw-r--r--doc/doc/user/mat_matr295
-rw-r--r--doc/doc/user/mat_summ1314
-rw-r--r--doc/doc/user/mybook540
-rw-r--r--doc/doc/user/mydefs225
-rw-r--r--doc/doc/user/pascal162
-rw-r--r--doc/doc/user/pie53
-rw-r--r--doc/doc/user/pie_capt111
-rw-r--r--doc/doc/user/pie_erro35
-rw-r--r--doc/doc/user/pie_intr65
-rw-r--r--doc/doc/user/pie_labe382
-rw-r--r--doc/doc/user/pie_over117
-rw-r--r--doc/doc/user/pie_slic203
-rw-r--r--doc/doc/user/pie_summ187
-rw-r--r--doc/doc/user/preface71
-rw-r--r--doc/doc/user/prg160
-rw-r--r--doc/doc/user/prg_chan144
-rw-r--r--doc/doc/user/prg_comm77
-rw-r--r--doc/doc/user/prg_embe90
-rw-r--r--doc/doc/user/prg_erro43
-rw-r--r--doc/doc/user/prg_form57
-rw-r--r--doc/doc/user/prg_lone57
-rw-r--r--doc/doc/user/prg_opti172
-rw-r--r--doc/doc/user/prg_perl126
-rw-r--r--doc/doc/user/prg_pipe70
-rw-r--r--doc/doc/user/prg_prog38
-rw-r--r--doc/doc/user/prg_tabs76
-rw-r--r--doc/doc/user/ref32
-rw-r--r--doc/doc/user/ref_chan241
-rw-r--r--doc/doc/user/ref_cite100
-rw-r--r--doc/doc/user/ref_crea134
-rw-r--r--doc/doc/user/ref_entr314
-rw-r--r--doc/doc/user/ref_labe70
-rw-r--r--doc/doc/user/ref_sett114
-rw-r--r--doc/doc/user/str20
-rw-r--r--doc/doc/user/str_colu40
-rw-r--r--doc/doc/user/str_cont101
-rw-r--r--doc/doc/user/str_cros232
-rw-r--r--doc/doc/user/str_defs133
-rw-r--r--doc/doc/user/str_disp94
-rw-r--r--doc/doc/user/str_figs291
-rw-r--r--doc/doc/user/str_foot154
-rw-r--r--doc/doc/user/str_glos209
-rw-r--r--doc/doc/user/str_indx497
-rw-r--r--doc/doc/user/str_larg194
-rw-r--r--doc/doc/user/str_list524
-rw-r--r--doc/doc/user/str_marg160
-rw-r--r--doc/doc/user/str_theo108
-rw-r--r--doc/doc/user/su_crest.eps1156
-rw-r--r--doc/doc/user/tbl56
-rw-r--r--doc/doc/user/tbl_alig105
-rw-r--r--doc/doc/user/tbl_cell167
-rw-r--r--doc/doc/user/tbl_inde69
-rw-r--r--doc/doc/user/tbl_intr135
-rw-r--r--doc/doc/user/tbl_marg76
-rw-r--r--doc/doc/user/tbl_mark71
-rw-r--r--doc/doc/user/tbl_mult152
-rw-r--r--doc/doc/user/tbl_plai94
-rw-r--r--doc/doc/user/tbl_rows64
-rw-r--r--doc/doc/user/tbl_rule204
-rw-r--r--doc/doc/user/tbl_setu63
-rw-r--r--doc/doc/user/tbl_span206
-rw-r--r--doc/doc/user/tbl_summ272
-rw-r--r--doc/doc/user/tbl_widt96
-rw-r--r--doc/doc/user/typ36
-rw-r--r--doc/doc/user/typ_apdf47
-rw-r--r--doc/doc/user/typ_book523
-rw-r--r--doc/doc/user/typ_illu86
-rw-r--r--doc/doc/user/typ_ordi314
-rw-r--r--doc/doc/user/typ_orga108
-rw-r--r--doc/doc/user/typ_over315
-rw-r--r--doc/doc/user/typ_plai76
-rw-r--r--doc/doc/user/typ_repo357
-rwxr-xr-xdoc/doc/user/vbas3
-rwxr-xr-xdoc/doc/user/vbgr11
-rwxr-xr-xdoc/doc/user/vdia13
-rwxr-xr-xdoc/doc/user/vequ9
-rwxr-xr-xdoc/doc/user/vfmt5
-rwxr-xr-xdoc/doc/user/vgra2
-rwxr-xr-xdoc/doc/user/vmat1
-rwxr-xr-xdoc/doc/user/vpie15
-rwxr-xr-xdoc/doc/user/vprg2
-rwxr-xr-xdoc/doc/user/vref7
-rwxr-xr-xdoc/doc/user/vstr2
-rwxr-xr-xdoc/doc/user/vtbl15
-rwxr-xr-xdoc/doc/user/vtyp2
-rw-r--r--externs.h2
-rw-r--r--font/font/00README25
-rw-r--r--font/font/AG-Bd571
-rw-r--r--font/font/AG-Bd+44
-rw-r--r--font/font/AG-BdO571
-rw-r--r--font/font/AG-BdO+44
-rw-r--r--font/font/AG-Bk573
-rw-r--r--font/font/AG-Bk+44
-rw-r--r--font/font/AG-BkO573
-rw-r--r--font/font/AG-BkO+44
-rw-r--r--font/font/AG-CnBd447
-rw-r--r--font/font/AG-CnBd+44
-rw-r--r--font/font/AG-CnBk447
-rw-r--r--font/font/AG-CnBk+44
-rw-r--r--font/font/AG-CnDm447
-rw-r--r--font/font/AG-CnDm+44
-rw-r--r--font/font/AG-CnMd447
-rw-r--r--font/font/AG-CnMd+44
-rw-r--r--font/font/AG-Dm576
-rw-r--r--font/font/AG-Dm+44
-rw-r--r--font/font/AG-DmO576
-rw-r--r--font/font/AG-DmO+44
-rw-r--r--font/font/AG-ExLt532
-rw-r--r--font/font/AG-ExLt+44
-rw-r--r--font/font/AG-ExLtO532
-rw-r--r--font/font/AG-ExLtO+44
-rw-r--r--font/font/AG-Md581
-rw-r--r--font/font/AG-Md+44
-rw-r--r--font/font/AG-MdO581
-rw-r--r--font/font/AG-MdO+44
-rw-r--r--font/font/Bk-Bd510
-rw-r--r--font/font/Bk-Bd+44
-rw-r--r--font/font/Bk-BdIt509
-rw-r--r--font/font/Bk-BdIt+44
-rw-r--r--font/font/Bk-Dm415
-rw-r--r--font/font/Bk-Dm+44
-rw-r--r--font/font/Bk-DmIt417
-rw-r--r--font/font/Bk-DmIt+44
-rw-r--r--font/font/Bk-Lt407
-rw-r--r--font/font/Bk-Lt+44
-rw-r--r--font/font/Bk-LtIt410
-rw-r--r--font/font/Bk-LtIt+44
-rw-r--r--font/font/Bk-Md451
-rw-r--r--font/font/Bk-Md+44
-rw-r--r--font/font/Bk-MdIt509
-rw-r--r--font/font/Bk-MdIt+44
-rw-r--r--font/font/Cr345
-rw-r--r--font/font/Cr+44
-rw-r--r--font/font/Cr-Bd345
-rw-r--r--font/font/Cr-Bd+44
-rw-r--r--font/font/Cr-BdO345
-rw-r--r--font/font/Cr-BdO+44
-rw-r--r--font/font/Cr-O345
-rw-r--r--font/font/Cr-O+44
-rw-r--r--font/font/He612
-rw-r--r--font/font/He+44
-rw-r--r--font/font/He-Bd570
-rw-r--r--font/font/He-Bd+44
-rw-r--r--font/font/He-BdO570
-rw-r--r--font/font/He-BdO+44
-rw-r--r--font/font/He-Bl445
-rw-r--r--font/font/He-Bl+44
-rw-r--r--font/font/He-BlO445
-rw-r--r--font/font/He-BlO+44
-rw-r--r--font/font/He-Cm418
-rw-r--r--font/font/He-Cm+44
-rw-r--r--font/font/He-Cn447
-rw-r--r--font/font/He-Cn+44
-rw-r--r--font/font/He-CnBd447
-rw-r--r--font/font/He-CnBd+44
-rw-r--r--font/font/He-CnBdO447
-rw-r--r--font/font/He-CnBdO+44
-rw-r--r--font/font/He-CnBl445
-rw-r--r--font/font/He-CnBl+44
-rw-r--r--font/font/He-CnBlO445
-rw-r--r--font/font/He-CnBlO+44
-rw-r--r--font/font/He-CnLi445
-rw-r--r--font/font/He-CnLi+44
-rw-r--r--font/font/He-CnLiO445
-rw-r--r--font/font/He-CnLiO+44
-rw-r--r--font/font/He-CnO447
-rw-r--r--font/font/He-CnO+44
-rw-r--r--font/font/He-ExtC415
-rw-r--r--font/font/He-ExtC+44
-rw-r--r--font/font/He-Lt445
-rw-r--r--font/font/He-Lt+44
-rw-r--r--font/font/He-LtO445
-rw-r--r--font/font/He-LtO+44
-rw-r--r--font/font/He-Nr612
-rw-r--r--font/font/He-Nr+44
-rw-r--r--font/font/He-NrBd570
-rw-r--r--font/font/He-NrBd+44
-rw-r--r--font/font/He-NrBdO570
-rw-r--r--font/font/He-NrBdO+44
-rw-r--r--font/font/He-NrO612
-rw-r--r--font/font/He-NrO+44
-rw-r--r--font/font/He-O612
-rw-r--r--font/font/He-O+44
-rw-r--r--font/font/He-UlCm417
-rw-r--r--font/font/He-UlCm+44
-rw-r--r--font/font/NCS-Bd472
-rw-r--r--font/font/NCS-Bd+44
-rw-r--r--font/font/NCS-BdIt602
-rw-r--r--font/font/NCS-BdIt+44
-rw-r--r--font/font/NCS-It536
-rw-r--r--font/font/NCS-It+44
-rw-r--r--font/font/NCS-Rm524
-rw-r--r--font/font/NCS-Rm+44
-rw-r--r--font/font/Pa-Bd434
-rw-r--r--font/font/Pa-Bd+44
-rw-r--r--font/font/Pa-BdF432
-rw-r--r--font/font/Pa-BdF+44
-rw-r--r--font/font/Pa-BdIt441
-rw-r--r--font/font/Pa-BdIt+44
-rw-r--r--font/font/Pa-BdItF439
-rw-r--r--font/font/Pa-BdItF+44
-rw-r--r--font/font/Pa-It439
-rw-r--r--font/font/Pa-It+44
-rw-r--r--font/font/Pa-ItF437
-rw-r--r--font/font/Pa-ItF+44
-rw-r--r--font/font/Pa-Rm445
-rw-r--r--font/font/Pa-Rm+44
-rw-r--r--font/font/Pa-SC511
-rw-r--r--font/font/Pa-SC+44
-rw-r--r--font/font/Symbol209
-rw-r--r--font/font/Ti-Bd648
-rw-r--r--font/font/Ti-Bd+44
-rw-r--r--font/font/Ti-BdIt648
-rw-r--r--font/font/Ti-BdIt+44
-rw-r--r--font/font/Ti-BdItF518
-rw-r--r--font/font/Ti-BdItF+44
-rw-r--r--font/font/Ti-BdSC570
-rw-r--r--font/font/Ti-BdSC+44
-rw-r--r--font/font/Ti-ExBd420
-rw-r--r--font/font/Ti-ExBd+44
-rw-r--r--font/font/Ti-It648
-rw-r--r--font/font/Ti-It+72
-rw-r--r--font/font/Ti-ItF531
-rw-r--r--font/font/Ti-ItF+44
-rw-r--r--font/font/Ti-Rm648
-rw-r--r--font/font/Ti-Rm+74
-rw-r--r--font/font/Ti-RmSC550
-rw-r--r--font/font/Ti-RmSC+44
-rw-r--r--font/font/Ti-Sm416
-rw-r--r--font/font/Ti-Sm+44
-rw-r--r--font/font/Ti-SmIt415
-rw-r--r--font/font/Ti-SmIt+44
-rw-r--r--font/font/ZC-Bd491
-rw-r--r--font/font/ZC-Bd+44
-rw-r--r--font/font/ZC-Dm480
-rw-r--r--font/font/ZC-Dm+44
-rw-r--r--font/font/ZC-It452
-rw-r--r--font/font/ZC-It+44
-rw-r--r--font/font/ZC-Lt481
-rw-r--r--font/font/ZC-Lt+44
-rw-r--r--font/font/ZC-LtIt433
-rw-r--r--font/font/ZC-LtIt+44
-rw-r--r--font/font/ZC-MdIt480
-rw-r--r--font/font/ZC-MdIt+44
-rw-r--r--font/font/ZC-Rm486
-rw-r--r--font/font/ZC-Rm+44
-rw-r--r--font/font/ZD222
-rw-r--r--hyph/hyph/README124
-rw-r--r--hyph/hyph/croatian.lh1546
-rw-r--r--hyph/hyph/czech.lh4599
-rw-r--r--hyph/hyph/danish.lh1201
-rw-r--r--hyph/hyph/dutch.lh6183
-rw-r--r--hyph/hyph/english.lh4515
-rw-r--r--hyph/hyph/engluk.lh8617
-rw-r--r--hyph/hyph/esperanto.lh580
-rw-r--r--hyph/hyph/finnish.lh303
-rw-r--r--hyph/hyph/french.lh1393
-rw-r--r--hyph/hyph/german.lh585
-rw-r--r--hyph/hyph/italian.lh117
-rw-r--r--hyph/hyph/magyar.lh2457
-rw-r--r--hyph/hyph/norweg.lh6318
-rw-r--r--hyph/hyph/polish.lh4181
-rw-r--r--hyph/hyph/portugal.lh121
-rw-r--r--hyph/hyph/programming.lh32
-rw-r--r--hyph/hyph/russian.lh6146
-rw-r--r--hyph/hyph/slovak.lh2706
-rw-r--r--hyph/hyph/slovenia.lh1141
-rw-r--r--hyph/hyph/spanish.lh185
-rw-r--r--hyph/hyph/swedish.lh3788
-rw-r--r--hyph/hyph/uppersorbian.lh1356
-rw-r--r--include/include/README113
-rw-r--r--include/include/blue118
-rw-r--r--include/include/bluef446
-rw-r--r--include/include/book542
-rw-r--r--include/include/bookf1645
-rw-r--r--include/include/bsf1929
-rw-r--r--include/include/bsf.lpg147
-rw-r--r--include/include/coltex434
-rw-r--r--include/include/cprint118
-rw-r--r--include/include/cprintf446
-rw-r--r--include/include/diag669
-rw-r--r--include/include/diagf8217
-rw-r--r--include/include/diagf.etc644
-rw-r--r--include/include/diagf.lpg3414
-rw-r--r--include/include/doc466
-rw-r--r--include/include/docf845
-rw-r--r--include/include/dsf5426
-rw-r--r--include/include/eiffel118
-rw-r--r--include/include/eiffelf446
-rw-r--r--include/include/eq29
-rw-r--r--include/include/eqf1717
-rw-r--r--include/include/fig29
-rw-r--r--include/include/figf926
-rw-r--r--include/include/figf.lpg1010
-rw-r--r--include/include/graph112
-rw-r--r--include/include/graphf1097
-rw-r--r--include/include/graphf.etc312
-rw-r--r--include/include/graphf.lpg1091
-rw-r--r--include/include/haskell118
-rw-r--r--include/include/haskellf527
-rw-r--r--include/include/init37
-rw-r--r--include/include/java118
-rw-r--r--include/include/javaf446
-rw-r--r--include/include/javascript118
-rw-r--r--include/include/javascriptf446
-rw-r--r--include/include/langdefs31
-rw-r--r--include/include/latin29
-rw-r--r--include/include/lengths167
-rw-r--r--include/include/math32
-rw-r--r--include/include/mathf2944
-rw-r--r--include/include/modula29
-rw-r--r--include/include/modulaf154
-rw-r--r--include/include/mydefs11
-rw-r--r--include/include/np117
-rw-r--r--include/include/npf460
-rw-r--r--include/include/old_graph29
-rw-r--r--include/include/old_graphf954
-rw-r--r--include/include/pas29
-rw-r--r--include/include/pasf127
-rw-r--r--include/include/perl136
-rw-r--r--include/include/perlf446
-rw-r--r--include/include/picture352
-rw-r--r--include/include/picturef55
-rw-r--r--include/include/pie111
-rw-r--r--include/include/pief426
-rw-r--r--include/include/pief.lpg488
-rw-r--r--include/include/pod178
-rw-r--r--include/include/podf567
-rw-r--r--include/include/python118
-rw-r--r--include/include/pythonf450
-rw-r--r--include/include/report506
-rw-r--r--include/include/reportf1030
-rw-r--r--include/include/rsl119
-rw-r--r--include/include/rslf504
-rw-r--r--include/include/ruby118
-rw-r--r--include/include/rubyf449
-rw-r--r--include/include/russian12
-rw-r--r--include/include/russian.fd40
-rw-r--r--include/include/slides412
-rw-r--r--include/include/slidesf414
-rw-r--r--include/include/tab31
-rw-r--r--include/include/tabf953
-rw-r--r--include/include/tabf.lpg118
-rw-r--r--include/include/tbl82
-rw-r--r--include/include/tblf3218
-rw-r--r--include/include/tcl118
-rw-r--r--include/include/tclf446
-rw-r--r--include/include/ts108
-rw-r--r--include/include/xrgb697
-rw-r--r--locale/locale/README20
-rw-r--r--locale/locale/msgs.english.3.16581
-rw-r--r--locale/locale/old.msgs.de497
-rw-r--r--locale/locale/old.msgs.fr503
-rw-r--r--man/man/lout.1269
-rw-r--r--man/man/lout.txt196
-rw-r--r--man/man/prg2lout.1160
-rw-r--r--man/man/prg2lout.txt116
-rw-r--r--maps/maps/00README107
-rw-r--r--maps/maps/Ding.LCM275
-rw-r--r--maps/maps/KOI8-R.LCM288
-rw-r--r--maps/maps/Latin1.LCM276
-rw-r--r--maps/maps/LtKOI8.LCM280
-rw-r--r--maps/maps/LtLatin1.LCM294
-rw-r--r--maps/maps/LtLatin2.LCM305
-rw-r--r--maps/maps/LtLatin3.LCM294
-rw-r--r--maps/maps/Std.LCM276
-rw-r--r--maps/maps/Symb.LCM275
-rw-r--r--maps/maps/koi8r.LCM263
-rw-r--r--maps/maps/null.LCM274
-rw-r--r--prg2lout.c114
-rw-r--r--software/software/README16
-rw-r--r--software/software/lout.barcodes28
-rw-r--r--software/software/lout.eiffel8
-rw-r--r--software/software/lout.latin23
-rw-r--r--software/software/lout.russian5
-rw-r--r--software/software/lout.teq40
-rw-r--r--software/software/lout.tib26
-rw-r--r--whatsnew36
-rw-r--r--z06.c5
-rw-r--r--z08.c4
-rw-r--r--z12.c5
-rw-r--r--z17.c2
-rw-r--r--z18.c25
-rw-r--r--z19.c45
-rw-r--r--z20.c7
-rw-r--r--z21.c3
-rw-r--r--z22.c12
-rw-r--r--z37.c13
-rw-r--r--z47.c2
-rw-r--r--z50.c4
605 files changed, 249821 insertions, 45 deletions
diff --git a/blurb b/blurb
index ea3ea34..adc8dd1 100644
--- a/blurb
+++ b/blurb
@@ -1,7 +1,7 @@
- THE LOUT DOCUMENT FORMATTING SYSTEM, VERSION 3.39
+ THE LOUT DOCUMENT FORMATTING SYSTEM, VERSION 3.40
-Version 3.39 of the Lout document formatting system is now available
+Version 3.40 of the Lout document formatting system is now available
(free of charge). The system reads a high-level description of a
document similar in style to LaTeX and produces a PostScript or
plain text output file.
@@ -21,7 +21,7 @@ went back to the beginning.
Lout is written in highly portable ANSI C. It is distributed under the
GNU public license and is obtainable from
- ftp://ftp.it.usyd.edu.au/jeff/lout/lout-3.39.tar.gz
+ ftp://ftp.it.usyd.edu.au/jeff/lout/lout-3.40.tar.gz
The distribution contains
@@ -37,7 +37,7 @@ The distribution contains
A PostScript version of the User's Guide is available at:
- ftp://ftp.it.usyd.edu.au/jeff/lout/lout-3.39-user.ps.gz
+ ftp://ftp.it.usyd.edu.au/jeff/lout/lout-3.40-user.ps.gz
Lout was created by Jeffrey H. Kingston (jeff@it.usyd.edu.au) of the
School of Information Technologies at the University of Sydney.
diff --git a/data/data/README b/data/data/README
new file mode 100644
index 0000000..993fc9f
--- /dev/null
+++ b/data/data/README
@@ -0,0 +1,19 @@
+Directory lout/data
+
+This directory contains Lout database files:
+
+ fontdefs.ld Font database
+ latin2.ld Latin2 font database
+ loutrefs.ld References used in the Lout documentation
+ oldrefs.ld More references used in the Lout documentation
+ refstyle.ld Standard reference printing styles
+ standard.ld Roman numerals, months, etc.
+
+Corresponding .li files will be created during the initializing
+"lout -x" run, or else the first time each database is accessed.
+
+There are also two files, fcvt and fcvt.awk, which are useful for
+converting old fontdefs files into new font database files.
+
+Jeffrey H. Kingston
+26 June 2013
diff --git a/data/data/fcvt b/data/data/fcvt
new file mode 100644
index 0000000..10b8b07
--- /dev/null
+++ b/data/data/fcvt
@@ -0,0 +1,2 @@
+( echo NO_EXTRAS; cat ../include/old.fd ) | awk -f fcvt.awk > fontdefs.ld
+( echo EXTRAS; cat ../include/latin2.fd ) | awk -f fcvt.awk > latin2.ld
diff --git a/data/data/fcvt.awk b/data/data/fcvt.awk
new file mode 100644
index 0000000..7446c85
--- /dev/null
+++ b/data/data/fcvt.awk
@@ -0,0 +1,96 @@
+# convert old fontdefs file to new font database
+# this program has been placed in the public domain by
+# its author, Jeffrey H. Kingston
+NR==1 {
+print "###########################################################################"
+print "# #"
+
+ # first line must be either EXTRAS or NO_EXTRAS
+ if( $0 == "EXTRAS" )
+ {
+print "# Font definitions database (created by fcvt, with @ExtraMetrics) #"
+ extra_metrics = 1
+ }
+ else if( $0 == "NO_EXTRAS" )
+ {
+print "# Font definitions database (created by fcvt, without @ExtraMetrics) #"
+ extra_metrics = 0
+ }
+ else
+ {
+print "# Font definitions database ERRONEOUS FIRST LINE NEEDS INVESTIGATION #"
+ }
+print "# #"
+print "# Each entry defines one font. The fields and their meanings are: #"
+print "# #"
+print "# Name Compulsory Meaning #"
+print "# --------------------------------------------------------------- #"
+print "# @Tag Yes Must equal @Family-@Face #"
+print "# @Family Yes Font family name #"
+print "# @Face Yes Font face name #"
+print "# @Name Yes PostScript name as in @Metrics file #"
+print "# @Metrics Yes Adobe font metrics file of this font #"
+print "# @ExtraMetrics No Extra metrics #"
+print "# @Mapping Yes .LCM (Lout Character Mapping) file #"
+print "# @Recode No Recode or not (Yes or No, default Yes) #"
+print "# #"
+print "# Jeffrey H. Kingston #"
+print "# 6 May 20000 #"
+print "# #"
+print "###########################################################################"
+ }
+
+$0~/^#/ {
+ # comment line, skip it
+ next;
+ }
+
+ {
+ # a real line
+ # can't get split to work, so using this
+ j = 1
+ for(i = 1; i < NF; i++ )
+ {
+ if( $1 != "" )
+ {
+ field[j++] = $i
+ }
+ }
+
+ # now print the lot
+ if( j == 1 )
+ {
+ # empty line, echo it
+ print ""
+ }
+ else if( j != 9 )
+ {
+ print "# error, " j " fields: " $0
+ }
+ else
+ {
+ family = field[2]
+ face = field[3]
+ name = field[5]
+ afmfile = field[6]
+ lcmfile = field[7]
+ recode = field[8]
+ if( used[family "-" face] == "" )
+ {
+ used[family "-" face] = "used"
+ print "{ @FontDef"
+ print " @Tag { " family "-" face " }"
+ print " @Family { " family " }"
+ print " @Face { " face " }"
+ print " @Name { " name " }"
+ print " @Metrics { " afmfile " }"
+ if( extra_metrics == 1 )
+ print " @ExtraMetrics { " afmfile "+ }"
+ print " @Mapping { " lcmfile " }"
+ if( recode == "NoRecode" )
+ print " @Recode { No }"
+ print "}"
+ print ""
+ }
+ }
+ }
diff --git a/data/data/fontdefs.ld b/data/data/fontdefs.ld
new file mode 100644
index 0000000..a271a3e
--- /dev/null
+++ b/data/data/fontdefs.ld
@@ -0,0 +1,1049 @@
+###########################################################################
+# #
+# Font definitions database (created by fcvt, without @ExtraMetrics) #
+# #
+# Each entry defines one font. The fields and their meanings are: #
+# #
+# Name Compulsory Meaning #
+# --------------------------------------------------------------- #
+# @Tag Yes Must equal @Family-@Face #
+# @Family Yes Font family name #
+# @Face Yes Font face name #
+# @Name Yes PostScript name as in @Metrics file #
+# @Metrics Yes Adobe font metrics file of this font #
+# @ExtraMetrics No Extra metrics #
+# @Mapping Yes .LCM (Lout Character Mapping) file #
+# @Recode No Recode or not (Yes or No, default Yes) #
+# #
+# Jeffrey H. Kingston #
+# 6 May 20000 #
+# #
+# This file has been placed in the public domain by its author. #
+# #
+###########################################################################
+
+{ @FontDef
+ @Tag { AvantGarde-Base }
+ @Family { AvantGarde }
+ @Face { Base }
+ @Name { AvantGarde-Medium }
+ @Metrics { AG-Md }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { AvantGarde-Slope }
+ @Family { AvantGarde }
+ @Face { Slope }
+ @Name { AvantGarde-MediumObl }
+ @Metrics { AG-MdO }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { AvantGarde-Bold }
+ @Family { AvantGarde }
+ @Face { Bold }
+ @Name { AvantGarde-Bold }
+ @Metrics { AG-Bd }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { AvantGarde-BoldSlope }
+ @Family { AvantGarde }
+ @Face { BoldSlope }
+ @Name { AvantGarde-BoldObl }
+ @Metrics { AG-BdO }
+ @Mapping { LtLatin1.LCM }
+}
+
+
+{ @FontDef
+ @Tag { AvantGarde-BoldObl }
+ @Family { AvantGarde }
+ @Face { BoldObl }
+ @Name { AvantGarde-BoldObl }
+ @Metrics { AG-BdO }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { AvantGarde-Book }
+ @Family { AvantGarde }
+ @Face { Book }
+ @Name { AvantGarde-Book }
+ @Metrics { AG-Bk }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { AvantGarde-BookOblique }
+ @Family { AvantGarde }
+ @Face { BookOblique }
+ @Name { AvantGarde-BookOblique }
+ @Metrics { AG-BkO }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { AvantGarde-CondBold }
+ @Family { AvantGarde }
+ @Face { CondBold }
+ @Name { AvantGarde-CondBold }
+ @Metrics { AG-CnBd }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { AvantGarde-CondBook }
+ @Family { AvantGarde }
+ @Face { CondBook }
+ @Name { AvantGarde-CondBook }
+ @Metrics { AG-CnBk }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { AvantGarde-CondDemi }
+ @Family { AvantGarde }
+ @Face { CondDemi }
+ @Name { AvantGarde-CondDemi }
+ @Metrics { AG-CnDm }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { AvantGarde-CondMedium }
+ @Family { AvantGarde }
+ @Face { CondMedium }
+ @Name { AvantGarde-CondMedium }
+ @Metrics { AG-CnMd }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { AvantGarde-Demi }
+ @Family { AvantGarde }
+ @Face { Demi }
+ @Name { AvantGarde-Demi }
+ @Metrics { AG-Dm }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { AvantGarde-DemiOblique }
+ @Family { AvantGarde }
+ @Face { DemiOblique }
+ @Name { AvantGarde-DemiOblique }
+ @Metrics { AG-DmO }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { AvantGarde-ExtraLight }
+ @Family { AvantGarde }
+ @Face { ExtraLight }
+ @Name { AvantGarde-ExtraLight }
+ @Metrics { AG-ExLt }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { AvantGarde-ExtraLightObl }
+ @Family { AvantGarde }
+ @Face { ExtraLightObl }
+ @Name { AvantGarde-ExtraLightObl }
+ @Metrics { AG-ExLtO }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { AvantGarde-Medium }
+ @Family { AvantGarde }
+ @Face { Medium }
+ @Name { AvantGarde-Medium }
+ @Metrics { AG-Md }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { AvantGarde-MediumObl }
+ @Family { AvantGarde }
+ @Face { MediumObl }
+ @Name { AvantGarde-MediumObl }
+ @Metrics { AG-MdO }
+ @Mapping { LtLatin1.LCM }
+}
+
+
+
+{ @FontDef
+ @Tag { Bookman-Base }
+ @Family { Bookman }
+ @Face { Base }
+ @Name { Bookman-Medium }
+ @Metrics { Bk-Md }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Bookman-Slope }
+ @Family { Bookman }
+ @Face { Slope }
+ @Name { Bookman-MediumItalic }
+ @Metrics { Bk-MdIt }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Bookman-Bold }
+ @Family { Bookman }
+ @Face { Bold }
+ @Name { Bookman-Bold }
+ @Metrics { Bk-Bd }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Bookman-BoldSlope }
+ @Family { Bookman }
+ @Face { BoldSlope }
+ @Name { Bookman-BoldItalic }
+ @Metrics { Bk-BdIt }
+ @Mapping { LtLatin1.LCM }
+}
+
+
+{ @FontDef
+ @Tag { Bookman-BoldItalic }
+ @Family { Bookman }
+ @Face { BoldItalic }
+ @Name { Bookman-BoldItalic }
+ @Metrics { Bk-BdIt }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Bookman-Demi }
+ @Family { Bookman }
+ @Face { Demi }
+ @Name { Bookman-Demi }
+ @Metrics { Bk-Dm }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Bookman-DemiItalic }
+ @Family { Bookman }
+ @Face { DemiItalic }
+ @Name { Bookman-DemiItalic }
+ @Metrics { Bk-DmIt }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Bookman-Light }
+ @Family { Bookman }
+ @Face { Light }
+ @Name { Bookman-Light }
+ @Metrics { Bk-Lt }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Bookman-LightItalic }
+ @Family { Bookman }
+ @Face { LightItalic }
+ @Name { Bookman-LightItalic }
+ @Metrics { Bk-LtIt }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Bookman-Medium }
+ @Family { Bookman }
+ @Face { Medium }
+ @Name { Bookman-Medium }
+ @Metrics { Bk-Md }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Bookman-MediumItalic }
+ @Family { Bookman }
+ @Face { MediumItalic }
+ @Name { Bookman-MediumItalic }
+ @Metrics { Bk-MdIt }
+ @Mapping { LtLatin1.LCM }
+}
+
+
+
+{ @FontDef
+ @Tag { Courier-Base }
+ @Family { Courier }
+ @Face { Base }
+ @Name { Courier }
+ @Metrics { Cr }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Courier-Slope }
+ @Family { Courier }
+ @Face { Slope }
+ @Name { Courier-Oblique }
+ @Metrics { Cr-O }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Courier-Bold }
+ @Family { Courier }
+ @Face { Bold }
+ @Name { Courier-Bold }
+ @Metrics { Cr-Bd }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Courier-BoldSlope }
+ @Family { Courier }
+ @Face { BoldSlope }
+ @Name { Courier-BoldOblique }
+ @Metrics { Cr-BdO }
+ @Mapping { LtLatin1.LCM }
+}
+
+
+{ @FontDef
+ @Tag { Courier-BoldOblique }
+ @Family { Courier }
+ @Face { BoldOblique }
+ @Name { Courier-BoldOblique }
+ @Metrics { Cr-BdO }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Courier-Oblique }
+ @Family { Courier }
+ @Face { Oblique }
+ @Name { Courier-Oblique }
+ @Metrics { Cr-O }
+ @Mapping { LtLatin1.LCM }
+}
+
+
+
+{ @FontDef
+ @Tag { Helvetica-Base }
+ @Family { Helvetica }
+ @Face { Base }
+ @Name { Helvetica }
+ @Metrics { He }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Helvetica-Slope }
+ @Family { Helvetica }
+ @Face { Slope }
+ @Name { Helvetica-Oblique }
+ @Metrics { He-O }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Helvetica-Bold }
+ @Family { Helvetica }
+ @Face { Bold }
+ @Name { Helvetica-Bold }
+ @Metrics { He-Bd }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Helvetica-BoldSlope }
+ @Family { Helvetica }
+ @Face { BoldSlope }
+ @Name { Helvetica-BoldOblique }
+ @Metrics { He-BdO }
+ @Mapping { LtLatin1.LCM }
+}
+
+
+{ @FontDef
+ @Tag { Helvetica-Black }
+ @Family { Helvetica }
+ @Face { Black }
+ @Name { Helvetica-Black }
+ @Metrics { He-Bl }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Helvetica-BlackOblique }
+ @Family { Helvetica }
+ @Face { BlackOblique }
+ @Name { Helvetica-BlackOblique }
+ @Metrics { He-BlO }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Helvetica-BoldOblique }
+ @Family { Helvetica }
+ @Face { BoldOblique }
+ @Name { Helvetica-BoldOblique }
+ @Metrics { He-BdO }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Helvetica-Compressed }
+ @Family { Helvetica }
+ @Face { Compressed }
+ @Name { Helvetica-Compressed }
+ @Metrics { He-Cm }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Helvetica-Cond }
+ @Family { Helvetica }
+ @Face { Cond }
+ @Name { Helvetica-Condensed }
+ @Metrics { He-Cn }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Helvetica-CondBlack }
+ @Family { Helvetica }
+ @Face { CondBlack }
+ @Name { Helvetica-Condensed-Black }
+ @Metrics { He-CnBl }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Helvetica-CondBlackObl }
+ @Family { Helvetica }
+ @Face { CondBlackObl }
+ @Name { Helvetica-Condensed-BlackObl }
+ @Metrics { He-CnBlO }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Helvetica-CondBold }
+ @Family { Helvetica }
+ @Face { CondBold }
+ @Name { Helvetica-Condensed-Bold }
+ @Metrics { He-CnBd }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Helvetica-CondBoldObl }
+ @Family { Helvetica }
+ @Face { CondBoldObl }
+ @Name { Helvetica-Condensed-BoldObl }
+ @Metrics { He-CnBdO }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Helvetica-CondLight }
+ @Family { Helvetica }
+ @Face { CondLight }
+ @Name { Helvetica-Condensed-Light }
+ @Metrics { He-CnLi }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Helvetica-CondLightObl }
+ @Family { Helvetica }
+ @Face { CondLightObl }
+ @Name { Helvetica-Condensed-LightObl }
+ @Metrics { He-CnLiO }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Helvetica-CondOblique }
+ @Family { Helvetica }
+ @Face { CondOblique }
+ @Name { Helvetica-Condensed-Oblique }
+ @Metrics { He-CnO }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Helvetica-ExtraCompressed }
+ @Family { Helvetica }
+ @Face { ExtraCompressed }
+ @Name { Helvetica-ExtraCompressed }
+ @Metrics { He-ExtC }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Helvetica-Light }
+ @Family { Helvetica }
+ @Face { Light }
+ @Name { Helvetica-Light }
+ @Metrics { He-Lt }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Helvetica-LightOblique }
+ @Family { Helvetica }
+ @Face { LightOblique }
+ @Name { Helvetica-LightOblique }
+ @Metrics { He-LtO }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Helvetica-Narrow }
+ @Family { Helvetica }
+ @Face { Narrow }
+ @Name { Helvetica-Narrow }
+ @Metrics { He-Nr }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Helvetica-NarrowBold }
+ @Family { Helvetica }
+ @Face { NarrowBold }
+ @Name { Helvetica-Narrow-Bold }
+ @Metrics { He-NrBd }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Helvetica-NarrowBoldObl }
+ @Family { Helvetica }
+ @Face { NarrowBoldObl }
+ @Name { Helvetica-Narrow-BoldOblique }
+ @Metrics { He-NrBdO }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Helvetica-NarrowObl }
+ @Family { Helvetica }
+ @Face { NarrowObl }
+ @Name { Helvetica-Narrow-Oblique }
+ @Metrics { He-NrO }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Helvetica-Oblique }
+ @Family { Helvetica }
+ @Face { Oblique }
+ @Name { Helvetica-Oblique }
+ @Metrics { He-O }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Helvetica-UltraCompressed }
+ @Family { Helvetica }
+ @Face { UltraCompressed }
+ @Name { Helvetica-UltraCompressed }
+ @Metrics { He-UlCm }
+ @Mapping { LtLatin1.LCM }
+}
+
+
+
+{ @FontDef
+ @Tag { Schoolbook-Base }
+ @Family { Schoolbook }
+ @Face { Base }
+ @Name { NewCenturySchlbk-Roman }
+ @Metrics { NCS-Rm }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Schoolbook-Slope }
+ @Family { Schoolbook }
+ @Face { Slope }
+ @Name { NewCenturySchlbk-Italic }
+ @Metrics { NCS-It }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Schoolbook-Bold }
+ @Family { Schoolbook }
+ @Face { Bold }
+ @Name { NewCenturySchlbk-Bold }
+ @Metrics { NCS-Bd }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Schoolbook-BoldSlope }
+ @Family { Schoolbook }
+ @Face { BoldSlope }
+ @Name { NewCenturySchlbk-BoldItalic }
+ @Metrics { NCS-BdIt }
+ @Mapping { LtLatin1.LCM }
+}
+
+
+{ @FontDef
+ @Tag { Schoolbook-BoldItalic }
+ @Family { Schoolbook }
+ @Face { BoldItalic }
+ @Name { NewCenturySchlbk-BoldItalic }
+ @Metrics { NCS-BdIt }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Schoolbook-Italic }
+ @Family { Schoolbook }
+ @Face { Italic }
+ @Name { NewCenturySchlbk-Italic }
+ @Metrics { NCS-It }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Schoolbook-Roman }
+ @Family { Schoolbook }
+ @Face { Roman }
+ @Name { NewCenturySchlbk-Roman }
+ @Metrics { NCS-Rm }
+ @Mapping { LtLatin1.LCM }
+}
+
+
+
+{ @FontDef
+ @Tag { Palatino-Base }
+ @Family { Palatino }
+ @Face { Base }
+ @Name { Palatino-Roman }
+ @Metrics { Pa-Rm }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Palatino-Slope }
+ @Family { Palatino }
+ @Face { Slope }
+ @Name { Palatino-Italic }
+ @Metrics { Pa-It }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Palatino-Bold }
+ @Family { Palatino }
+ @Face { Bold }
+ @Name { Palatino-Bold }
+ @Metrics { Pa-Bd }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Palatino-BoldSlope }
+ @Family { Palatino }
+ @Face { BoldSlope }
+ @Name { Palatino-BoldItalic }
+ @Metrics { Pa-BdIt }
+ @Mapping { LtLatin1.LCM }
+}
+
+
+{ @FontDef
+ @Tag { Palatino-BoldItalic }
+ @Family { Palatino }
+ @Face { BoldItalic }
+ @Name { Palatino-BoldItalic }
+ @Metrics { Pa-BdIt }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Palatino-BoldItalicOsF }
+ @Family { Palatino }
+ @Face { BoldItalicOsF }
+ @Name { Palatino-BoldItalicOsF }
+ @Metrics { Pa-BdItF }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Palatino-BoldOsF }
+ @Family { Palatino }
+ @Face { BoldOsF }
+ @Name { Palatino-BoldOsF }
+ @Metrics { Pa-BdF }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Palatino-Italic }
+ @Family { Palatino }
+ @Face { Italic }
+ @Name { Palatino-Italic }
+ @Metrics { Pa-It }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Palatino-ItalicOsF }
+ @Family { Palatino }
+ @Face { ItalicOsF }
+ @Name { Palatino-ItalicOsF }
+ @Metrics { Pa-ItF }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Palatino-Roman }
+ @Family { Palatino }
+ @Face { Roman }
+ @Name { Palatino-Roman }
+ @Metrics { Pa-Rm }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Palatino-SC }
+ @Family { Palatino }
+ @Face { SC }
+ @Name { Palatino-SC }
+ @Metrics { Pa-SC }
+ @Mapping { LtLatin1.LCM }
+}
+
+
+
+{ @FontDef
+ @Tag { Symbol-Base }
+ @Family { Symbol }
+ @Face { Base }
+ @Name { Symbol }
+ @Metrics { Symbol }
+ @Mapping { Symb.LCM }
+ @Recode { No }
+}
+
+{ @FontDef
+ @Tag { Symbol-Slope }
+ @Family { Symbol }
+ @Face { Slope }
+ @Name { Symbol }
+ @Metrics { Symbol }
+ @Mapping { Symb.LCM }
+ @Recode { No }
+}
+
+{ @FontDef
+ @Tag { Symbol-Bold }
+ @Family { Symbol }
+ @Face { Bold }
+ @Name { Symbol }
+ @Metrics { Symbol }
+ @Mapping { Symb.LCM }
+ @Recode { No }
+}
+
+{ @FontDef
+ @Tag { Symbol-BoldSlope }
+ @Family { Symbol }
+ @Face { BoldSlope }
+ @Name { Symbol }
+ @Metrics { Symbol }
+ @Mapping { Symb.LCM }
+ @Recode { No }
+}
+
+
+
+{ @FontDef
+ @Tag { Times-Base }
+ @Family { Times }
+ @Face { Base }
+ @Name { Times-Roman }
+ @Metrics { Ti-Rm }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Times-Slope }
+ @Family { Times }
+ @Face { Slope }
+ @Name { Times-Italic }
+ @Metrics { Ti-It }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Times-Bold }
+ @Family { Times }
+ @Face { Bold }
+ @Name { Times-Bold }
+ @Metrics { Ti-Bd }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Times-BoldSlope }
+ @Family { Times }
+ @Face { BoldSlope }
+ @Name { Times-BoldItalic }
+ @Metrics { Ti-BdIt }
+ @Mapping { LtLatin1.LCM }
+}
+
+
+{ @FontDef
+ @Tag { Times-BoldItalic }
+ @Family { Times }
+ @Face { BoldItalic }
+ @Name { Times-BoldItalic }
+ @Metrics { Ti-BdIt }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Times-BoldItalicOsF }
+ @Family { Times }
+ @Face { BoldItalicOsF }
+ @Name { Times-BoldItalicOsF }
+ @Metrics { Ti-BdItF }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Times-BoldSC }
+ @Family { Times }
+ @Face { BoldSC }
+ @Name { Times-BoldSC }
+ @Metrics { Ti-BdSC }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Times-ExtraBold }
+ @Family { Times }
+ @Face { ExtraBold }
+ @Name { Times-ExtraBold }
+ @Metrics { Ti-ExBd }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Times-Italic }
+ @Family { Times }
+ @Face { Italic }
+ @Name { Times-Italic }
+ @Metrics { Ti-It }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Times-ItalicOsF }
+ @Family { Times }
+ @Face { ItalicOsF }
+ @Name { Times-ItalicOsF }
+ @Metrics { Ti-ItF }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Times-Roman }
+ @Family { Times }
+ @Face { Roman }
+ @Name { Times-Roman }
+ @Metrics { Ti-Rm }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Times-RomanSC }
+ @Family { Times }
+ @Face { RomanSC }
+ @Name { Times-RomanSC }
+ @Metrics { Ti-RmSC }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Times-Semibold }
+ @Family { Times }
+ @Face { Semibold }
+ @Name { Times-Semibold }
+ @Metrics { Ti-Sm }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Times-SemiboldItalic }
+ @Family { Times }
+ @Face { SemiboldItalic }
+ @Name { Times-SemiboldItalic }
+ @Metrics { Ti-SmIt }
+ @Mapping { LtLatin1.LCM }
+}
+
+
+
+{ @FontDef
+ @Tag { Chancery-Base }
+ @Family { Chancery }
+ @Face { Base }
+ @Name { ZapfChancery-Roman }
+ @Metrics { ZC-Rm }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Chancery-Slope }
+ @Family { Chancery }
+ @Face { Slope }
+ @Name { ZapfChancery-Italic }
+ @Metrics { ZC-It }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Chancery-Bold }
+ @Family { Chancery }
+ @Face { Bold }
+ @Name { ZapfChancery-Bold }
+ @Metrics { ZC-Bd }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Chancery-BoldSlope }
+ @Family { Chancery }
+ @Face { BoldSlope }
+ @Name { ZapfChancery-MediumItalic }
+ @Metrics { ZC-MdIt }
+ @Mapping { LtLatin1.LCM }
+}
+
+
+{ @FontDef
+ @Tag { Chancery-Roman }
+ @Family { Chancery }
+ @Face { Roman }
+ @Name { ZapfChancery-Roman }
+ @Metrics { ZC-Rm }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Chancery-Italic }
+ @Family { Chancery }
+ @Face { Italic }
+ @Name { ZapfChancery-Italic }
+ @Metrics { ZC-It }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Chancery-Light }
+ @Family { Chancery }
+ @Face { Light }
+ @Name { ZapfChancery-Light }
+ @Metrics { ZC-Lt }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Chancery-Demi }
+ @Family { Chancery }
+ @Face { Demi }
+ @Name { ZapfChancery-Demi }
+ @Metrics { ZC-Dm }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Chancery-LightItalic }
+ @Family { Chancery }
+ @Face { LightItalic }
+ @Name { ZapfChancery-LightItalic }
+ @Metrics { ZC-LtIt }
+ @Mapping { LtLatin1.LCM }
+}
+
+{ @FontDef
+ @Tag { Chancery-MediumItalic }
+ @Family { Chancery }
+ @Face { MediumItalic }
+ @Name { ZapfChancery-MediumItalic }
+ @Metrics { ZC-MdIt }
+ @Mapping { LtLatin1.LCM }
+}
+
+
+
+{ @FontDef
+ @Tag { Dingbats-Base }
+ @Family { Dingbats }
+ @Face { Base }
+ @Name { ZapfDingbats }
+ @Metrics { ZD }
+ @Mapping { Ding.LCM }
+ @Recode { No }
+}
+
+{ @FontDef
+ @Tag { Dingbats-Slope }
+ @Family { Dingbats }
+ @Face { Slope }
+ @Name { ZapfDingbats }
+ @Metrics { ZD }
+ @Mapping { Ding.LCM }
+ @Recode { No }
+}
+
+{ @FontDef
+ @Tag { Dingbats-Bold }
+ @Family { Dingbats }
+ @Face { Bold }
+ @Name { ZapfDingbats }
+ @Metrics { ZD }
+ @Mapping { Ding.LCM }
+ @Recode { No }
+}
+
+{ @FontDef
+ @Tag { Dingbats-BoldSlope }
+ @Family { Dingbats }
+ @Face { BoldSlope }
+ @Name { ZapfDingbats }
+ @Metrics { ZD }
+ @Mapping { Ding.LCM }
+ @Recode { No }
+}
+
+{ @FontDef
+ @Tag { BarCode-Base }
+ @Family { BarCode }
+ @Face { Base }
+ @Name { Code39 }
+ @Metrics { BC39 }
+ @Mapping { BC39.LCM }
+ @Recode { Yes }
+}
+
diff --git a/data/data/latin2.ld b/data/data/latin2.ld
new file mode 100644
index 0000000..3d73717
--- /dev/null
+++ b/data/data/latin2.ld
@@ -0,0 +1,1058 @@
+###########################################################################
+# #
+# Font definitions database (created by fcvt, with @ExtraMetrics) #
+# #
+# Each entry defines one font. The fields and their meanings are: #
+# #
+# Name Compulsory Meaning #
+# --------------------------------------------------------------- #
+# @Tag Yes Must equal @Family-@Face #
+# @Family Yes Font family name #
+# @Face Yes Font face name #
+# @Name Yes PostScript name as in @Metrics file #
+# @Metrics Yes Adobe font metrics file of this font #
+# @ExtraMetrics No Extra metrics #
+# @Mapping Yes .LCM (Lout Character Mapping) file #
+# @Recode No Recode or not (Yes or No, default Yes) #
+# #
+# Jeffrey H. Kingston #
+# 6 May 20000 #
+# #
+# This file has been placed in the public domain by its author. #
+# #
+###########################################################################
+
+
+
+{ @FontDef
+ @Tag { AvantGardeCE-Base }
+ @Family { AvantGardeCE }
+ @Face { Base }
+ @Name { AvantGarde-Medium }
+ @Metrics { AG-Md }
+ @ExtraMetrics { AG-Md+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { AvantGardeCE-Slope }
+ @Family { AvantGardeCE }
+ @Face { Slope }
+ @Name { AvantGarde-MediumObl }
+ @Metrics { AG-MdO }
+ @ExtraMetrics { AG-MdO+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { AvantGardeCE-Bold }
+ @Family { AvantGardeCE }
+ @Face { Bold }
+ @Name { AvantGarde-Bold }
+ @Metrics { AG-Bd }
+ @ExtraMetrics { AG-Bd+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { AvantGardeCE-BoldSlope }
+ @Family { AvantGardeCE }
+ @Face { BoldSlope }
+ @Name { AvantGarde-BoldObl }
+ @Metrics { AG-BdO }
+ @ExtraMetrics { AG-BdO+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+
+{ @FontDef
+ @Tag { AvantGardeCE-BoldObl }
+ @Family { AvantGardeCE }
+ @Face { BoldObl }
+ @Name { AvantGarde-BoldObl }
+ @Metrics { AG-BdO }
+ @ExtraMetrics { AG-BdO+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { AvantGardeCE-Book }
+ @Family { AvantGardeCE }
+ @Face { Book }
+ @Name { AvantGarde-Book }
+ @Metrics { AG-Bk }
+ @ExtraMetrics { AG-Bk+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { AvantGardeCE-BookOblique }
+ @Family { AvantGardeCE }
+ @Face { BookOblique }
+ @Name { AvantGarde-BookOblique }
+ @Metrics { AG-BkO }
+ @ExtraMetrics { AG-BkO+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { AvantGardeCE-CondBold }
+ @Family { AvantGardeCE }
+ @Face { CondBold }
+ @Name { AvantGarde-CondBold }
+ @Metrics { AG-CnBd }
+ @ExtraMetrics { AG-CnBd+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { AvantGardeCE-CondBook }
+ @Family { AvantGardeCE }
+ @Face { CondBook }
+ @Name { AvantGarde-CondBook }
+ @Metrics { AG-CnBk }
+ @ExtraMetrics { AG-CnBk+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { AvantGardeCE-CondDemi }
+ @Family { AvantGardeCE }
+ @Face { CondDemi }
+ @Name { AvantGarde-CondDemi }
+ @Metrics { AG-CnDm }
+ @ExtraMetrics { AG-CnDm+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { AvantGardeCE-CondMedium }
+ @Family { AvantGardeCE }
+ @Face { CondMedium }
+ @Name { AvantGarde-CondMedium }
+ @Metrics { AG-CnMd }
+ @ExtraMetrics { AG-CnMd+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { AvantGardeCE-Demi }
+ @Family { AvantGardeCE }
+ @Face { Demi }
+ @Name { AvantGarde-Demi }
+ @Metrics { AG-Dm }
+ @ExtraMetrics { AG-Dm+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { AvantGardeCE-DemiOblique }
+ @Family { AvantGardeCE }
+ @Face { DemiOblique }
+ @Name { AvantGarde-DemiOblique }
+ @Metrics { AG-DmO }
+ @ExtraMetrics { AG-DmO+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { AvantGardeCE-ExtraLight }
+ @Family { AvantGardeCE }
+ @Face { ExtraLight }
+ @Name { AvantGarde-ExtraLight }
+ @Metrics { AG-ExLt }
+ @ExtraMetrics { AG-ExLt+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { AvantGardeCE-ExtraLightObl }
+ @Family { AvantGardeCE }
+ @Face { ExtraLightObl }
+ @Name { AvantGarde-ExtraLightObl }
+ @Metrics { AG-ExLtO }
+ @ExtraMetrics { AG-ExLtO+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { AvantGardeCE-Medium }
+ @Family { AvantGardeCE }
+ @Face { Medium }
+ @Name { AvantGarde-Medium }
+ @Metrics { AG-Md }
+ @ExtraMetrics { AG-Md+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { AvantGardeCE-MediumObl }
+ @Family { AvantGardeCE }
+ @Face { MediumObl }
+ @Name { AvantGarde-MediumObl }
+ @Metrics { AG-MdO }
+ @ExtraMetrics { AG-MdO+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+
+
+{ @FontDef
+ @Tag { BookmanCE-Base }
+ @Family { BookmanCE }
+ @Face { Base }
+ @Name { Bookman-Medium }
+ @Metrics { Bk-Md }
+ @ExtraMetrics { Bk-Md+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { BookmanCE-Slope }
+ @Family { BookmanCE }
+ @Face { Slope }
+ @Name { Bookman-MediumItalic }
+ @Metrics { Bk-MdIt }
+ @ExtraMetrics { Bk-MdIt+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { BookmanCE-Bold }
+ @Family { BookmanCE }
+ @Face { Bold }
+ @Name { Bookman-Bold }
+ @Metrics { Bk-Bd }
+ @ExtraMetrics { Bk-Bd+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { BookmanCE-BoldSlope }
+ @Family { BookmanCE }
+ @Face { BoldSlope }
+ @Name { Bookman-BoldItalic }
+ @Metrics { Bk-BdIt }
+ @ExtraMetrics { Bk-BdIt+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+
+{ @FontDef
+ @Tag { BookmanCE-BoldItalic }
+ @Family { BookmanCE }
+ @Face { BoldItalic }
+ @Name { Bookman-BoldItalic }
+ @Metrics { Bk-BdIt }
+ @ExtraMetrics { Bk-BdIt+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { BookmanCE-Demi }
+ @Family { BookmanCE }
+ @Face { Demi }
+ @Name { Bookman-Demi }
+ @Metrics { Bk-Dm }
+ @ExtraMetrics { Bk-Dm+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { BookmanCE-DemiItalic }
+ @Family { BookmanCE }
+ @Face { DemiItalic }
+ @Name { Bookman-DemiItalic }
+ @Metrics { Bk-DmIt }
+ @ExtraMetrics { Bk-DmIt+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { BookmanCE-Light }
+ @Family { BookmanCE }
+ @Face { Light }
+ @Name { Bookman-Light }
+ @Metrics { Bk-Lt }
+ @ExtraMetrics { Bk-Lt+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { BookmanCE-LightItalic }
+ @Family { BookmanCE }
+ @Face { LightItalic }
+ @Name { Bookman-LightItalic }
+ @Metrics { Bk-LtIt }
+ @ExtraMetrics { Bk-LtIt+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { BookmanCE-Medium }
+ @Family { BookmanCE }
+ @Face { Medium }
+ @Name { Bookman-Medium }
+ @Metrics { Bk-Md }
+ @ExtraMetrics { Bk-Md+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { BookmanCE-MediumItalic }
+ @Family { BookmanCE }
+ @Face { MediumItalic }
+ @Name { Bookman-MediumItalic }
+ @Metrics { Bk-MdIt }
+ @ExtraMetrics { Bk-MdIt+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+
+
+{ @FontDef
+ @Tag { CourierCE-Base }
+ @Family { CourierCE }
+ @Face { Base }
+ @Name { Courier }
+ @Metrics { Cr }
+ @ExtraMetrics { Cr+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { CourierCE-Slope }
+ @Family { CourierCE }
+ @Face { Slope }
+ @Name { Courier-Oblique }
+ @Metrics { Cr-O }
+ @ExtraMetrics { Cr-O+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { CourierCE-Bold }
+ @Family { CourierCE }
+ @Face { Bold }
+ @Name { Courier-Bold }
+ @Metrics { Cr-Bd }
+ @ExtraMetrics { Cr-Bd+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { CourierCE-BoldSlope }
+ @Family { CourierCE }
+ @Face { BoldSlope }
+ @Name { Courier-BoldOblique }
+ @Metrics { Cr-BdO }
+ @ExtraMetrics { Cr-BdO+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+
+{ @FontDef
+ @Tag { CourierCE-BoldOblique }
+ @Family { CourierCE }
+ @Face { BoldOblique }
+ @Name { Courier-BoldOblique }
+ @Metrics { Cr-BdO }
+ @ExtraMetrics { Cr-BdO+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { CourierCE-Oblique }
+ @Family { CourierCE }
+ @Face { Oblique }
+ @Name { Courier-Oblique }
+ @Metrics { Cr-O }
+ @ExtraMetrics { Cr-O+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+
+
+{ @FontDef
+ @Tag { HelveticaCE-Base }
+ @Family { HelveticaCE }
+ @Face { Base }
+ @Name { Helvetica }
+ @Metrics { He }
+ @ExtraMetrics { He+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { HelveticaCE-Slope }
+ @Family { HelveticaCE }
+ @Face { Slope }
+ @Name { Helvetica-Oblique }
+ @Metrics { He-O }
+ @ExtraMetrics { He-O+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { HelveticaCE-Bold }
+ @Family { HelveticaCE }
+ @Face { Bold }
+ @Name { Helvetica-Bold }
+ @Metrics { He-Bd }
+ @ExtraMetrics { He-Bd+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { HelveticaCE-BoldSlope }
+ @Family { HelveticaCE }
+ @Face { BoldSlope }
+ @Name { Helvetica-BoldOblique }
+ @Metrics { He-BdO }
+ @ExtraMetrics { He-BdO+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+
+{ @FontDef
+ @Tag { HelveticaCE-Black }
+ @Family { HelveticaCE }
+ @Face { Black }
+ @Name { Helvetica-Black }
+ @Metrics { He-Bl }
+ @ExtraMetrics { He-Bl+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { HelveticaCE-BlackOblique }
+ @Family { HelveticaCE }
+ @Face { BlackOblique }
+ @Name { Helvetica-BlackOblique }
+ @Metrics { He-BlO }
+ @ExtraMetrics { He-BlO+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { HelveticaCE-BoldOblique }
+ @Family { HelveticaCE }
+ @Face { BoldOblique }
+ @Name { Helvetica-BoldOblique }
+ @Metrics { He-BdO }
+ @ExtraMetrics { He-BdO+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { HelveticaCE-Compressed }
+ @Family { HelveticaCE }
+ @Face { Compressed }
+ @Name { Helvetica-Compressed }
+ @Metrics { He-Cm }
+ @ExtraMetrics { He-Cm+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { HelveticaCE-Cond }
+ @Family { HelveticaCE }
+ @Face { Cond }
+ @Name { Helvetica-Condensed }
+ @Metrics { He-Cn }
+ @ExtraMetrics { He-Cn+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { HelveticaCE-CondBlack }
+ @Family { HelveticaCE }
+ @Face { CondBlack }
+ @Name { Helvetica-Condensed-Black }
+ @Metrics { He-CnBl }
+ @ExtraMetrics { He-CnBl+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { HelveticaCE-CondBlackObl }
+ @Family { HelveticaCE }
+ @Face { CondBlackObl }
+ @Name { Helvetica-Condensed-BlackObl }
+ @Metrics { He-CnBlO }
+ @ExtraMetrics { He-CnBlO+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { HelveticaCE-CondBold }
+ @Family { HelveticaCE }
+ @Face { CondBold }
+ @Name { Helvetica-Condensed-Bold }
+ @Metrics { He-CnBd }
+ @ExtraMetrics { He-CnBd+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { HelveticaCE-CondBoldObl }
+ @Family { HelveticaCE }
+ @Face { CondBoldObl }
+ @Name { Helvetica-Condensed-BoldObl }
+ @Metrics { He-CnBdO }
+ @ExtraMetrics { He-CnBdO+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { HelveticaCE-CondLight }
+ @Family { HelveticaCE }
+ @Face { CondLight }
+ @Name { Helvetica-Condensed-Light }
+ @Metrics { He-CnLi }
+ @ExtraMetrics { He-CnLi+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { HelveticaCE-CondLightObl }
+ @Family { HelveticaCE }
+ @Face { CondLightObl }
+ @Name { Helvetica-Condensed-LightObl }
+ @Metrics { He-CnLiO }
+ @ExtraMetrics { He-CnLiO+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { HelveticaCE-CondOblique }
+ @Family { HelveticaCE }
+ @Face { CondOblique }
+ @Name { Helvetica-Condensed-Oblique }
+ @Metrics { He-CnO }
+ @ExtraMetrics { He-CnO+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { HelveticaCE-ExtraCompressed }
+ @Family { HelveticaCE }
+ @Face { ExtraCompressed }
+ @Name { Helvetica-ExtraCompressed }
+ @Metrics { He-ExtC }
+ @ExtraMetrics { He-ExtC+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { HelveticaCE-Light }
+ @Family { HelveticaCE }
+ @Face { Light }
+ @Name { Helvetica-Light }
+ @Metrics { He-Lt }
+ @ExtraMetrics { He-Lt+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { HelveticaCE-LightOblique }
+ @Family { HelveticaCE }
+ @Face { LightOblique }
+ @Name { Helvetica-LightOblique }
+ @Metrics { He-LtO }
+ @ExtraMetrics { He-LtO+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { HelveticaCE-Narrow }
+ @Family { HelveticaCE }
+ @Face { Narrow }
+ @Name { Helvetica-Narrow }
+ @Metrics { He-Nr }
+ @ExtraMetrics { He-Nr+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { HelveticaCE-NarrowBold }
+ @Family { HelveticaCE }
+ @Face { NarrowBold }
+ @Name { Helvetica-Narrow-Bold }
+ @Metrics { He-NrBd }
+ @ExtraMetrics { He-NrBd+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { HelveticaCE-NarrowBoldObl }
+ @Family { HelveticaCE }
+ @Face { NarrowBoldObl }
+ @Name { Helvetica-Narrow-BoldOblique }
+ @Metrics { He-NrBdO }
+ @ExtraMetrics { He-NrBdO+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { HelveticaCE-NarrowObl }
+ @Family { HelveticaCE }
+ @Face { NarrowObl }
+ @Name { Helvetica-Narrow-Oblique }
+ @Metrics { He-NrO }
+ @ExtraMetrics { He-NrO+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { HelveticaCE-Oblique }
+ @Family { HelveticaCE }
+ @Face { Oblique }
+ @Name { Helvetica-Oblique }
+ @Metrics { He-O }
+ @ExtraMetrics { He-O+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { HelveticaCE-UltraCompressed }
+ @Family { HelveticaCE }
+ @Face { UltraCompressed }
+ @Name { Helvetica-UltraCompressed }
+ @Metrics { He-UlCm }
+ @ExtraMetrics { He-UlCm+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+
+
+{ @FontDef
+ @Tag { SchoolbookCE-Base }
+ @Family { SchoolbookCE }
+ @Face { Base }
+ @Name { NewCenturySchlbk-Roman }
+ @Metrics { NCS-Rm }
+ @ExtraMetrics { NCS-Rm+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { SchoolbookCE-Slope }
+ @Family { SchoolbookCE }
+ @Face { Slope }
+ @Name { NewCenturySchlbk-Italic }
+ @Metrics { NCS-It }
+ @ExtraMetrics { NCS-It+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { SchoolbookCE-Bold }
+ @Family { SchoolbookCE }
+ @Face { Bold }
+ @Name { NewCenturySchlbk-Bold }
+ @Metrics { NCS-Bd }
+ @ExtraMetrics { NCS-Bd+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { SchoolbookCE-BoldSlope }
+ @Family { SchoolbookCE }
+ @Face { BoldSlope }
+ @Name { NewCenturySchlbk-BoldItalic }
+ @Metrics { NCS-BdIt }
+ @ExtraMetrics { NCS-BdIt+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+
+{ @FontDef
+ @Tag { SchoolbookCE-BoldItalic }
+ @Family { SchoolbookCE }
+ @Face { BoldItalic }
+ @Name { NewCenturySchlbk-BoldItalic }
+ @Metrics { NCS-BdIt }
+ @ExtraMetrics { NCS-BdIt+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { SchoolbookCE-Italic }
+ @Family { SchoolbookCE }
+ @Face { Italic }
+ @Name { NewCenturySchlbk-Italic }
+ @Metrics { NCS-It }
+ @ExtraMetrics { NCS-It+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { SchoolbookCE-Roman }
+ @Family { SchoolbookCE }
+ @Face { Roman }
+ @Name { NewCenturySchlbk-Roman }
+ @Metrics { NCS-Rm }
+ @ExtraMetrics { NCS-Rm+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+
+
+{ @FontDef
+ @Tag { PalatinoCE-Base }
+ @Family { PalatinoCE }
+ @Face { Base }
+ @Name { Palatino-Roman }
+ @Metrics { Pa-Rm }
+ @ExtraMetrics { Pa-Rm+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { PalatinoCE-Slope }
+ @Family { PalatinoCE }
+ @Face { Slope }
+ @Name { Palatino-Italic }
+ @Metrics { Pa-It }
+ @ExtraMetrics { Pa-It+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { PalatinoCE-Bold }
+ @Family { PalatinoCE }
+ @Face { Bold }
+ @Name { Palatino-Bold }
+ @Metrics { Pa-Bd }
+ @ExtraMetrics { Pa-Bd+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { PalatinoCE-BoldSlope }
+ @Family { PalatinoCE }
+ @Face { BoldSlope }
+ @Name { Palatino-BoldItalic }
+ @Metrics { Pa-BdIt }
+ @ExtraMetrics { Pa-BdIt+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+
+{ @FontDef
+ @Tag { PalatinoCE-BoldItalic }
+ @Family { PalatinoCE }
+ @Face { BoldItalic }
+ @Name { Palatino-BoldItalic }
+ @Metrics { Pa-BdIt }
+ @ExtraMetrics { Pa-BdIt+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { PalatinoCE-BoldItalicOsF }
+ @Family { PalatinoCE }
+ @Face { BoldItalicOsF }
+ @Name { Palatino-BoldItalicOsF }
+ @Metrics { Pa-BdItF }
+ @ExtraMetrics { Pa-BdItF+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { PalatinoCE-BoldOsF }
+ @Family { PalatinoCE }
+ @Face { BoldOsF }
+ @Name { Palatino-BoldOsF }
+ @Metrics { Pa-BdF }
+ @ExtraMetrics { Pa-BdF+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { PalatinoCE-Italic }
+ @Family { PalatinoCE }
+ @Face { Italic }
+ @Name { Palatino-Italic }
+ @Metrics { Pa-It }
+ @ExtraMetrics { Pa-It+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { PalatinoCE-ItalicOsF }
+ @Family { PalatinoCE }
+ @Face { ItalicOsF }
+ @Name { Palatino-ItalicOsF }
+ @Metrics { Pa-ItF }
+ @ExtraMetrics { Pa-ItF+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { PalatinoCE-Roman }
+ @Family { PalatinoCE }
+ @Face { Roman }
+ @Name { Palatino-Roman }
+ @Metrics { Pa-Rm }
+ @ExtraMetrics { Pa-Rm+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { PalatinoCE-SC }
+ @Family { PalatinoCE }
+ @Face { SC }
+ @Name { Palatino-SC }
+ @Metrics { Pa-SC }
+ @ExtraMetrics { Pa-SC+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+
+
+{ @FontDef
+ @Tag { TimesCE-Base }
+ @Family { TimesCE }
+ @Face { Base }
+ @Name { Times-Roman }
+ @Metrics { Ti-Rm }
+ @ExtraMetrics { Ti-Rm+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { TimesCE-Slope }
+ @Family { TimesCE }
+ @Face { Slope }
+ @Name { Times-Italic }
+ @Metrics { Ti-It }
+ @ExtraMetrics { Ti-It+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { TimesCE-Bold }
+ @Family { TimesCE }
+ @Face { Bold }
+ @Name { Times-Bold }
+ @Metrics { Ti-Bd }
+ @ExtraMetrics { Ti-Bd+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { TimesCE-BoldSlope }
+ @Family { TimesCE }
+ @Face { BoldSlope }
+ @Name { Times-BoldItalic }
+ @Metrics { Ti-BdIt }
+ @ExtraMetrics { Ti-BdIt+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+
+{ @FontDef
+ @Tag { TimesCE-BoldItalic }
+ @Family { TimesCE }
+ @Face { BoldItalic }
+ @Name { Times-BoldItalic }
+ @Metrics { Ti-BdIt }
+ @ExtraMetrics { Ti-BdIt+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { TimesCE-BoldItalicOsF }
+ @Family { TimesCE }
+ @Face { BoldItalicOsF }
+ @Name { Times-BoldItalicOsF }
+ @Metrics { Ti-BdItF }
+ @ExtraMetrics { Ti-BdItF+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { TimesCE-BoldSC }
+ @Family { TimesCE }
+ @Face { BoldSC }
+ @Name { Times-BoldSC }
+ @Metrics { Ti-BdSC }
+ @ExtraMetrics { Ti-BdSC+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { TimesCE-ExtraBold }
+ @Family { TimesCE }
+ @Face { ExtraBold }
+ @Name { Times-ExtraBold }
+ @Metrics { Ti-ExBd }
+ @ExtraMetrics { Ti-ExBd+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { TimesCE-Italic }
+ @Family { TimesCE }
+ @Face { Italic }
+ @Name { Times-Italic }
+ @Metrics { Ti-It }
+ @ExtraMetrics { Ti-It+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { TimesCE-ItalicOsF }
+ @Family { TimesCE }
+ @Face { ItalicOsF }
+ @Name { Times-ItalicOsF }
+ @Metrics { Ti-ItF }
+ @ExtraMetrics { Ti-ItF+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { TimesCE-Roman }
+ @Family { TimesCE }
+ @Face { Roman }
+ @Name { Times-Roman }
+ @Metrics { Ti-Rm }
+ @ExtraMetrics { Ti-Rm+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { TimesCE-RomanSC }
+ @Family { TimesCE }
+ @Face { RomanSC }
+ @Name { Times-RomanSC }
+ @Metrics { Ti-RmSC }
+ @ExtraMetrics { Ti-RmSC+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { TimesCE-Semibold }
+ @Family { TimesCE }
+ @Face { Semibold }
+ @Name { Times-Semibold }
+ @Metrics { Ti-Sm }
+ @ExtraMetrics { Ti-Sm+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { TimesCE-SemiboldItalic }
+ @Family { TimesCE }
+ @Face { SemiboldItalic }
+ @Name { Times-SemiboldItalic }
+ @Metrics { Ti-SmIt }
+ @ExtraMetrics { Ti-SmIt+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+
+
+{ @FontDef
+ @Tag { ChanceryCE-Base }
+ @Family { ChanceryCE }
+ @Face { Base }
+ @Name { ZapfChancery-Roman }
+ @Metrics { ZC-Rm }
+ @ExtraMetrics { ZC-Rm+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { ChanceryCE-Slope }
+ @Family { ChanceryCE }
+ @Face { Slope }
+ @Name { ZapfChancery-Italic }
+ @Metrics { ZC-It }
+ @ExtraMetrics { ZC-It+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { ChanceryCE-Bold }
+ @Family { ChanceryCE }
+ @Face { Bold }
+ @Name { ZapfChancery-Bold }
+ @Metrics { ZC-Bd }
+ @ExtraMetrics { ZC-Bd+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { ChanceryCE-BoldSlope }
+ @Family { ChanceryCE }
+ @Face { BoldSlope }
+ @Name { ZapfChancery-MediumItalic }
+ @Metrics { ZC-MdIt }
+ @ExtraMetrics { ZC-MdIt+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+
+{ @FontDef
+ @Tag { ChanceryCE-Roman }
+ @Family { ChanceryCE }
+ @Face { Roman }
+ @Name { ZapfChancery-Roman }
+ @Metrics { ZC-Rm }
+ @ExtraMetrics { ZC-Rm+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { ChanceryCE-Italic }
+ @Family { ChanceryCE }
+ @Face { Italic }
+ @Name { ZapfChancery-Italic }
+ @Metrics { ZC-It }
+ @ExtraMetrics { ZC-It+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { ChanceryCE-Light }
+ @Family { ChanceryCE }
+ @Face { Light }
+ @Name { ZapfChancery-Light }
+ @Metrics { ZC-Lt }
+ @ExtraMetrics { ZC-Lt+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { ChanceryCE-Demi }
+ @Family { ChanceryCE }
+ @Face { Demi }
+ @Name { ZapfChancery-Demi }
+ @Metrics { ZC-Dm }
+ @ExtraMetrics { ZC-Dm+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { ChanceryCE-LightItalic }
+ @Family { ChanceryCE }
+ @Face { LightItalic }
+ @Name { ZapfChancery-LightItalic }
+ @Metrics { ZC-LtIt }
+ @ExtraMetrics { ZC-LtIt+ }
+ @Mapping { LtLatin2.LCM }
+}
+
+{ @FontDef
+ @Tag { ChanceryCE-MediumItalic }
+ @Family { ChanceryCE }
+ @Face { MediumItalic }
+ @Name { ZapfChancery-MediumItalic }
+ @Metrics { ZC-MdIt }
+ @ExtraMetrics { ZC-MdIt+ }
+ @Mapping { LtLatin2.LCM }
+}
+
diff --git a/data/data/loutrefs.ld b/data/data/loutrefs.ld
new file mode 100644
index 0000000..55e74f4
--- /dev/null
+++ b/data/data/loutrefs.ld
@@ -0,0 +1,298 @@
+# This file has been placed in the public domain by its author, #
+# Jeffrey H. Kingston #
+
+{ @Reference
+ @Tag { knuth1984tex }
+ @Type { Book }
+ @Author { Donald E. Knuth }
+ @Title { The {@TeX}Book }
+ @Publisher { Addison-Wesley }
+ @Year { 1984 }
+}
+
+{ @Reference
+ @Tag { adobe1996epsforms }
+ @Type { TechReport }
+ @Author { Adobe Systems, Inc. }
+ @Title { Using EPS files in PostScript Language Forms }
+ @TRType { Technical Note }
+ @Number { 5144 }
+ @Year { 1996 }
+}
+
+{ @Reference
+ @Tag { adobe1990ps }
+ @Type { Book }
+ @Author { Adobe Systems, Inc. }
+ @Title { PostScript Language Reference Manual, Second Edition }
+ @Publisher { Addison-Wesley }
+ @Year { 1990 }
+}
+
+{ @Reference
+ @Tag { jensen1975pascal }
+ @Type { Book }
+ @Author { K. Jensen and N. Wirth }
+ @Title { Pascal User Manual and Report }
+ @Publisher { Springer-Verlag }
+ @Year { 1975 }
+}
+
+{ @Reference
+ @Tag { meyer1992eiffel }
+ @Type { Book }
+ @Author { Bertrand Meyer }
+ @Title { Eiffel: The Language }
+ @Publisher { Prentice-Hall }
+ @Year { 1992 }
+}
+
+{ @Reference
+ @Tag { reid1980scribe }
+ @Type { InProceedings }
+ @Author { Brian K. Reid }
+ @Title { A High-Level Approach to Computer Document Production }
+ @InTitle { Proceedings of the 7th Symposium on the Principles
+of Programming Languages (POPL), Las Vegas NV }
+ @Pages { 24--31 }
+ @Year { 1980 }
+}
+
+{ @Reference
+ @Tag { strunk1979style }
+ @Type { Book }
+ @Author { William Strunk and E. B. White }
+ @Title { The Elements of Style }
+ @Publisher { Macmillan }
+ @Edition { Third Edition }
+ @Year { 1979 }
+}
+
+{ @Reference
+ @Tag { ossanna1976troff }
+ @Type { TechReport }
+ @Author { Joseph F. Ossanna }
+ @Title { "Nroff/Troff" User's Manual }
+ @Number { 54 }
+ @Institution { Bell Laboratories }
+ @Address { Murray Hill, NJ 07974 }
+ @Year { 1976 }
+}
+
+{ @Reference
+ @Tag { kernighan1975eqn }
+ @Type { Article }
+ @Author { Brian W. Kernighan and Lorinda L. Cherry }
+ @Title { A system for typesetting mathematics }
+ @Journal { Communications of the ACM }
+ @Volume { 18 }
+ @Pages { 182--193 }
+ @Year { 1975 }
+}
+
+{ @Reference
+ @Tag { lesk1976tbl }
+ @Type { TechReport }
+ @Author { M. E. Lesk }
+ @Title { Tbl -- a program to format tables }
+ @Number { 49 }
+ @Institution { AT"&"T Bell Laboratories }
+ @Address { Murray Hill, NJ 07974 }
+ @Year { 1976 }
+}
+
+{ @Reference
+ @Tag { kernighan1982pic }
+ @Type { Article }
+ @Author { Brian W. Kernighan }
+ @Title { PIC -- A language for typesetting graphics }
+ @Journal { Software Practice and Experience }
+ @Volume { 12 }
+ @Pages { 1--21 }
+ @Year { 1982 }
+}
+
+{ @Reference
+ @Tag { bentley1984grap }
+ @Type { TechReport }
+ @Author { Jon L. Bentley and Brian W. Kernighan }
+ @Title { GRAP -- a language for typesetting graphs }
+ @Number { 114 (Computing Science) }
+ @Institution { AT"&"T Bell Laboratories }
+ @Address { Murray Hill, NJ 07974 }
+ @Year { 1984 }
+}
+
+{ @Reference
+ @Tag { ellis1990cpp }
+ @Type { Book }
+ @Author { Margaret A. Ellis and Bjarne Stroustrup }
+ @Title { The annotated C++ reference manual }
+ @Publisher { Addison-Wesley }
+ @Year { 1990 }
+}
+
+{ @Reference
+ @Tag { kingston1995lout.program }
+ @Type { Book }
+ @Author { Jeffrey H. Kingston }
+ @Title { The Basser Lout Document Formatting System (Version 3) }
+ @TitleNote { Computer program }
+ @Year { 1995 }
+ @Note { Publicly available in the
+@I jeff subdirectory of the home directory of @I ftp to host
+@I ftp.cs.su.oz.au with login name @I anonymous or @I ftp and any
+non-empty password (e.g. {@I none}). Lout distributions are also
+available from the @I comp.sources.misc newsgroup, and by electronic
+mail from the author. All enquiries to {@I "jeff@cs.su.oz.au" }. }
+}
+
+{ @Reference
+ @Tag { kingston1995lout.expert }
+ @Type { Book }
+ @Author { Jeffrey H. Kingston }
+ @Title { An Expert's Guide to the Lout Document Formatting
+System (Version 3) }
+ @Institution { Basser Department of Computer Science }
+ @Address { University of Sydney }
+ @Year { 1995 }
+}
+
+{ @Reference
+ @Tag { kingston1995lout.user }
+ @Type { Book }
+ @Author { Jeffrey H. Kingston }
+ @Title { A User's Guide to the Lout Document Formatting
+System (Version 3) }
+ @Institution { Basser Department of Computer Science }
+ @Address { University of Sydney }
+ @Year { 1995 }
+}
+
+{ @Reference
+ @Tag { kingston1994lout.overheads }
+ @Type { TechReport }
+ @TRType { Overhead transparencies }
+ @Author { Jeffrey H. Kingston }
+ @Title { A Practical Introduction to the Lout Document Formatting
+System }
+ @Institution { Basser Department of Computer Science }
+ @Address { University of Sydney }
+ @Year { 1994 }
+}
+
+{ @Reference
+ @Tag { kingston1993lout.design }
+ @Type { Article }
+ @Author { Jeffrey H. Kingston }
+ @Title { The design and implementation of the Lout document
+formatting language }
+ @Journal { Software---Practice and Experience }
+ @Volume { 23 }
+ @Pages { 1001--1041 }
+ @Year { 1993 }
+}
+
+{ @Reference
+ @Tag { wirth1971pascal }
+ @Type { Article }
+ @Author { N. Wirth }
+ @Title { The programming language Pascal }
+ @Journal { Acta Informatica }
+ @Volume { 1 }
+ @Year { 1975 }
+ @Pages { 35--63 }
+}
+
+{ @Reference
+ @Tag { brooks1991lilac }
+ @Type { Article }
+ @Author { Kenneth P. Brooks }
+ @Title { Lilac: a two-view document editor }
+ @Journal { IEEE Computer }
+ @Pages { 7--19 }
+ @Year { 1991 }
+}
+
+{ @Reference
+ @Tag { furuta1982survey }
+ @Type { Article }
+ @Author { Richard Furuta, Jeffrey Scofield, and Alan Shaw }
+ @Title { Document formatting systems: survey,
+concepts, and issues }
+ @Journal { Computing Surveys }
+ @Volume { 14 }
+ @Pages { 417--472 }
+ @Year { 1982 }
+}
+
+{ @Reference
+ @Tag { kernighan1988c }
+ @Type { Book }
+ @Author { Brian W. Kernighan and Dennis M. Ritchie }
+ @Title { The C programming language (second edition) }
+ @Publisher { Prentice Hall }
+ @Year { 1988 }
+}
+
+{ @Reference
+ @Tag { vanleunen1992handbook }
+ @Type { Book }
+ @Author { Mary-Claire van Leunen }
+ @Title { A Handbook for Scholars }
+ @Publisher { Oxford }
+ @Edition { Revised Edition }
+ @Year { 1992 }
+}
+
+{ @Reference
+ @Tag { homer.odyssey }
+ @Type { Book }
+ @Author { Homer }
+ @Title { The Odyssey }
+ @TitleNote { Translated by E. V. Rieu }
+ @Pinpoint { Chapter VI }
+ @Pages { 102--111 }
+ @Page { 102 }
+ @Publisher { Penguin Books }
+ @Address { Harmondsworth, Middlesex }
+ @Edition { Penguin Classics Edition }
+ @Month { August }
+ @Year { 1942 }
+ @Note { The date of composition is unknown, but
+is thought to be about the tenth century BC. }
+}
+
+{ @Reference
+ @Tag { rieu1942intro }
+ @Type { InBook }
+ @Author { E. V. Rieu }
+ @Title { Introduction to @I { The Odyssey } }
+ @InAuthor { Homer }
+ @InTitle { The Odyssey }
+ @Publisher { Penguin }
+ @Year { 1942 }
+}
+
+{ @Reference
+ @Tag { christofides1976tsp }
+ @Type { TechReport }
+ @Author { N. Christofides }
+ @Title { Worst-case analysis of a new heuristic
+for the travelling salesman problem }
+ @Number { 388 }
+ @Institution { Graduate School of Industrial
+Administration, Carnegie-Mellon University }
+ @Address { Pittsburgh, PA }
+ @Year { 1976 }
+}
+
+{ @Reference
+ @Tag { lamport1986latex }
+ @Type { Book }
+ @Author { Leslie Lamport }
+ @Title { @LaTeX User's Guide and Reference Manual }
+ @Publisher { Addison-Wesley }
+ @Year { 1986 }
+}
+
diff --git a/data/data/oldrefs.ld b/data/data/oldrefs.ld
new file mode 100644
index 0000000..0d11e50
--- /dev/null
+++ b/data/data/oldrefs.ld
@@ -0,0 +1,212 @@
+# This file has been placed in the public domain by its author, #
+# Jeffrey H. Kingston #
+
+{ @Reference
+ @Tag { knuth84 }
+ @Type { Book }
+ @Author { Knuth, Donald E. }
+ @Title { The T{ /0.2fo E}XBook }
+ @Publisher { Addison-Wesley }
+ @Year { 1984 }
+}
+
+{ @Reference
+ @Tag { adobe85 }
+ @Type { Book }
+ @Author { Adobe Systems, Inc. }
+ @Title { PostScript Language Reference Manual }
+ @Publisher { Addison-Wesley }
+ @Year { 1985 }
+}
+
+{ @Reference
+ @Tag { reid80 }
+ @Type { InProceedings }
+ @Author { Reid, Brian K. }
+ @Title { A High-Level Approach to Computer Document Production }
+ @InTitle { Proceedings of the 7th Symposium on the Principles
+of Programming Languages (POPL), Las Vegas NV }
+ @Pages { 24--31 }
+ @Year { 1980 }
+}
+
+{ @Reference
+ @Tag { strunk79 }
+ @Type { Book }
+ @Author { Strunk, William and White, E. B. }
+ @Title { The Elements of Style }
+ @Publisher { Macmillan }
+ @Edition { Third Edition }
+ @Year { 1979 }
+}
+
+{ @Reference
+ @Tag { ossanna76 }
+ @Type { TechReport }
+ @Author { Joseph F. Ossanna }
+ @Title { "Nroff/Troff" User's Manual }
+ @Number { 54 }
+ @Institution { Bell Laboratories }
+ @Address { Murray Hill, NJ 07974 }
+ @Year { 1976 }
+}
+
+{ @Reference
+ @Tag { kernighan75 }
+ @Type { Article }
+ @Author { Kernighan, Brian W. and Cherry, Lorinda L. }
+ @Title { A system for typesetting mathematics }
+ @Journal { Communications of the ACM }
+ @Volume { 18 }
+ @Pages { 182--193 }
+ @Year { 1975 }
+}
+
+{ @Reference
+ @Tag { lesk76 }
+ @Type { TechReport }
+ @Author { Lesk, M. E. }
+ @Title { Tbl -- a program to format tables }
+ @Number { 49 }
+ @Institution { Bell Laboratories }
+ @Address { Murray Hill, NJ 07974 }
+ @Year { 1976 }
+}
+
+{ @Reference
+ @Tag { kernighan82 }
+ @Type { Article }
+ @Author { Kernighan, Brian W. }
+ @Title { PIC -- A language for typesetting graphics}
+ @Journal { Software Practice and Experience }
+ @Volume { 12 }
+ @Pages { 1--21 }
+ @Year { 1982 }
+}
+
+{ @Reference
+ @Tag { kingston91 }
+ @Type { TechReport }
+ @Author { Kingston, Jeffrey H. }
+ @Title { Document Formatting with Lout }
+ @Number { 408 }
+ @Institution { Basser Department of Computer
+Science, The University of Sydney, Australia }
+ @Year { 1991 }
+}
+
+{ @Reference
+ @Tag { kingston91basser }
+ @Type { Misc }
+ @Author { Kingston, Jeffrey H. }
+ @Title { The Basser Lout Document Formatter }
+ @Year { 1991 }
+ @Note { Computer program; Version 2 publicly available
+in the @I pub subdirectory
+of the home directory of @I ftp to host
+@I ftp.cs.su.oz.au with login name
+@I anonymous and no password. Distribution
+via email is available for non-{@I ftp} sites. All enquiries to "jeff@cs.su.oz.au". }
+}
+
+{ @Reference
+ @Tag { kingston91begin }
+ @Type { TechReport }
+ @Author { Kingston, Jeffrey H. }
+ @Title { A beginners' guide to Lout }
+ @Number { 409 }
+ @Institution { Basser Department of Computer
+Science, The University of Sydney, Australia }
+ @Year { 1991 }
+}
+
+{ @Reference
+ @Tag { kingston91eq }
+ @Type { TechReport }
+ @Author { Kingston, Jeffrey H. }
+ @Title { Eq -- a Lout package for typesetting mathematics }
+ @Number { 410 }
+ @Institution { Basser Department of Computer
+Science, The University of Sydney, Australia }
+ @Year { 1991 }
+ @Note { (Contains an appendix describing the Pas Pascal formatter.) }
+}
+
+{ @Reference
+ @Tag { kingston91fig }
+ @Type { TechReport }
+ @Author { Kingston, Jeffrey H. }
+ @Title { Fig -- a Lout package for drawing figures }
+ @Number { 411 }
+ @Institution { Basser Department of Computer
+Science, The University of Sydney, Australia }
+ @Year { 1991 }
+}
+
+{ @Reference
+ @Tag { kingston91over }
+ @Type { TechReport }
+ @Author { Kingston, Jeffrey H. }
+ @Title { A new approach to document formatting }
+ @Number { 412 }
+ @Institution { Basser Department of Computer
+Science, The University of Sydney, Australia }
+ @Year { 1991 }
+}
+
+{ @Reference
+ @Tag { kingston91tab }
+ @Type { TechReport }
+ @Author { Kingston, Jeffrey H. }
+ @Title { Tab -- a Lout package for formatting tables }
+ @Number { 413 }
+ @Institution { Basser Department of Computer
+Science, The University of Sydney, Australia }
+ @Year { 1991 }
+}
+
+{ @Reference
+ @Tag { kingston91design }
+ @Type { TechReport }
+ @Author { Kingston, Jeffrey H. }
+ @Title { The design and implementation of a document formatting language }
+ @Number { @Null }
+ @Institution { Basser Department of Computer
+Science, The University of Sydney, Australia }
+ @Year { 1991 }
+ @Note { @I { In preparation. } }
+}
+
+{ @Reference
+ @Tag { wirth71 }
+ @Type { Article }
+ @Author { Wirth, N. }
+ @Title { The programming language Pascal }
+ @Journal { Acta Informatica }
+ @Volume { 1 }
+ @Year { 1975 }
+ @Pages { 35--63 }
+}
+
+{ @Reference
+ @Tag { brooks91 }
+ @Type { Article }
+ @Author { Brooks, Kenneth P. }
+ @Title { Lilac: a two-view document editor }
+ @Journal { IEEE Computer }
+ @Pages { 7--19 }
+ @Year { 1991 }
+}
+
+{ @Reference
+ @Tag { furuta82 }
+ @Type { Article }
+ @Author { Furuta, Richard, Scofield, Jeffrey,
+and Shaw, Alan }
+ @Title { Document formatting systems: survey,
+concepts, and issues }
+ @Journal { Computing Surveys }
+ @Volume { 14 }
+ @Pages { 417--472 }
+ @Year { 1982 }
+}
diff --git a/data/data/refstyle.ld b/data/data/refstyle.ld
new file mode 100644
index 0000000..7020f64
--- /dev/null
+++ b/data/data/refstyle.ld
@@ -0,0 +1,308 @@
+##########################################################################
+# #
+# refstyles.ld #
+# #
+# Standard reference styles database. #
+# Jeffrey H. Kingston #
+# August 1994 (@NumSep added in Version 3.13, February 1999). #
+# #
+# This file has been placed in the public domain by its author. #
+# #
+##########################################################################
+
+
+##########################################################################
+# #
+# Large works: Book, Proceedings (identical to Book), PhDThesis. #
+# #
+##########################################################################
+
+{ Book @RefStyle @Style
+ { @Reference&&reftag @Open
+ {
+ { @Author. {} } @If @Author
+ { @I @Title } @If @Title
+ { @Word&&notitle } @If @Not @Title
+ { , @Pinpoint } @If @Pinpoint
+ { , @Word&&pages @NumSep @Pages } @If @Pages
+ { , @Word&&page @NumSep @Page } @If @Page
+ { . @TitleNote } @If @TitleNote
+ { . @HowPublished } @If @HowPublished
+ { . @Publisher } @If @Publisher
+ { . @Organization } @If @Organization
+ { . @Institution } @If @Institution
+ { , @Address } @If @Address
+ { . @Edition } @If @Edition
+ { , @Month @Year } @If @Year @And @Month
+ { , @Year } @If @Year @And @Not @Month
+ { . } @If @True
+ { {} URL @I { @URL }. } @If @URL
+ { {} @Note } @If @Note
+ }
+ }
+}
+
+{ Proceedings @RefStyle @Style
+ { @Reference&&reftag @Open
+ {
+ { @Author. {} } @If @Author
+ { @I @Title } @If @Title
+ { @Word&&notitle } @If @Not @Title
+ { , @Pinpoint } @If @Pinpoint
+ { , @Word&&pages @NumSep @Pages } @If @Pages
+ { , @Word&&page @NumSep @Page } @If @Page
+ { . @TitleNote } @If @TitleNote
+ { . @HowPublished } @If @HowPublished
+ { . @Publisher } @If @Publisher
+ { . @Organization } @If @Organization
+ { . @Institution } @If @Institution
+ { , @Address } @If @Address
+ { . @Edition } @If @Edition
+ { , @Month @Year } @If @Year @And @Month
+ { , @Year } @If @Year @And @Not @Month
+ { . } @If @True
+ { {} URL @I { @URL }. } @If @URL
+ { {} @Note } @If @Note
+ }
+ }
+}
+
+{ PhDThesis @RefStyle @Style
+ { @Reference&&reftag @Open
+ {
+ { @Author. {} } @If @Author
+ { @I @Title } @If @Title
+ { @Word&&notitle } @If @Not @Title
+ { , @Pinpoint } @If @Pinpoint
+ { , @Word&&pages @NumSep @Pages } @If @Pages
+ { , @Word&&page @NumSep @Page } @If @Page
+ { . @TitleNote } @If @TitleNote
+ { . @Word&&phdthesis } @If @True
+ { , @HowPublished } @If @HowPublished
+ { , @Publisher } @If @Publisher
+ { , @Organization } @If @Organization
+ { , @Institution } @If @Institution
+ { , @Address } @If @Address
+ { . @Edition } @If @Edition
+ { , @Month @Year } @If @Year @And @Month
+ { , @Year } @If @Year @And @Not @Month
+ { . } @If @True
+ { {} URL @I { @URL }. } @If @URL
+ { {} @Note } @If @Note
+ }
+ }
+}
+
+
+##########################################################################
+# #
+# Small works not appearing within anything else: TechReport, Manual, #
+# MastersThesis, Seminar, Misc #
+# #
+##########################################################################
+
+{ TechReport @RefStyle @Style
+ { @Reference&&reftag @Open
+ {
+ { @Author. {} } @If @Author
+ { @Title } @If @Title
+ { @Word&&notitle } @If @Not @Title
+ { , @Pinpoint } @If @Pinpoint
+ { , @Word&&pages @NumSep @Pages } @If @Pages
+ { , @Word&&page @NumSep @Page } @If @Page
+ { . @TitleNote } @If @TitleNote
+ { . @TRType } @If @TRType
+ { . @Word&&techrep } @If @Not @TRType
+ { {} @Number } @If @Number
+ { {} (@Month @Year) } @If @Year @And @Month
+ { {} (@Year) } @If @Year @And @Not @Month
+ { , @HowPublished } @If @HowPublished
+ { , @Publisher } @If @Publisher
+ { , @Organization } @If @Organization
+ { , @Institution } @If @Institution
+ { , @Address } @If @Address
+ { . @Edition } @If @Edition
+ { . } @If @True
+ { {} URL @I { @URL }. } @If @URL
+ { {} @Note } @If @Note
+ }
+ }
+}
+
+{ MastersThesis @RefStyle @Style
+ { @Reference&&reftag @Open
+ {
+ { @Author. {} } @If @Author
+ { @Title } @If @Title
+ { @Word&&notitle } @If @Not @Title
+ { , @Pinpoint } @If @Pinpoint
+ { , @Word&&pages @NumSep @Pages } @If @Pages
+ { , @Word&&page @NumSep @Page } @If @Page
+ { . @TitleNote } @If @TitleNote
+ { . @Word&&mastersthesis } @If @True
+ { {} @Number } @If @Number
+ { {} (@Month @Year) } @If @Year @And @Month
+ { {} (@Year) } @If @Year @And @Not @Month
+ { , @HowPublished } @If @HowPublished
+ { , @Publisher } @If @Publisher
+ { , @Organization } @If @Organization
+ { , @Institution } @If @Institution
+ { , @Address } @If @Address
+ { . @Edition } @If @Edition
+ { . } @If @True
+ { {} URL @I { @URL }. } @If @URL
+ { {} @Note } @If @Note
+ }
+ }
+}
+
+{ Seminar @RefStyle @Style
+ { @Reference&&reftag @Open
+ {
+ { @Author. {} } @If @Author
+ { @I @Title } @If @Title
+ { @Word&&notitle } @If @Not @Title
+ { , @Pinpoint } @If @Pinpoint
+ { , @Word&&pages @NumSep @Pages } @If @Pages
+ { , @Word&&page @NumSep @Page } @If @Page
+ { . @TitleNote } @If @TitleNote
+ { . @HowPublished } @If @HowPublished
+ { . @Publisher } @If @Publisher
+ { . @Organization } @If @Organization
+ { . @Institution } @If @Institution
+ { , @Address } @If @Address
+ { . @Edition } @If @Edition
+ { , @Day @Month @Year } @If @Year @And @Month @And @Day
+ { , @Month @Year } @If @Year @And @Month @And @Not @Day
+ { , @Year } @If @Year @And @Not @Month
+ { . } @If @True
+ { {} URL @I { @URL }. } @If @URL
+ { {} @Note } @If @Note
+ }
+ }
+}
+
+{ Misc @RefStyle @Style
+ { @Reference&&reftag @Open
+ {
+ { @Author. {} } @If @Author
+ { @Title } @If @Title
+ { @Word&&notitle } @If @Not @Title
+ { , @Pinpoint } @If @Pinpoint
+ { , @Word&&pages @NumSep @Pages } @If @Pages
+ { , @Word&&page @NumSep @Page } @If @Page
+ { . @TitleNote } @If @TitleNote
+ { . @HowPublished } @If @HowPublished
+ { , @Publisher } @If @Publisher
+ { , @Organization } @If @Organization
+ { , @Institution } @If @Institution
+ { , @Address } @If @Address
+ { . @Edition } @If @Edition
+ { , @Month @Year } @If @Year @And @Month
+ { , @Year } @If @Year @And @Not @Month
+ { . } @If @True
+ { {} URL @I { @URL }. } @If @URL
+ { {} @Note } @If @Note
+ }
+ }
+}
+
+
+##########################################################################
+# #
+# Small works appearing within an ongoing forum: Article. #
+# #
+##########################################################################
+
+{ Article @RefStyle @Style
+ { @Reference&&reftag @Open
+ {
+ { @Author. {} } @If @Author
+ { @Title } @If @Title
+ { @Word&&notitle } @If @Not @Title
+ { , @Pinpoint } @If @Pinpoint
+ { . } @If @True
+ { {} @TitleNote. } @If @TitleNote
+ { {} @I @Journal } @If @Journal
+ { {} @Word&&nopublisher } @If @Not @Journal
+ { {} @B @Volume } @If @Volume
+ { {} (@Number) } @If @Number @And @Volume
+ { {} @Number } @If @Number @And @Not @Volume
+ { , @Pages } @If @Pages
+ { , @Word&&page @Page } @If @Page
+ { , @Word&&page @NumSep @Page } @If @Page
+ { {} (@Day @Month @Year) } @If @Year @And @Month @And @Day
+ { {} (@Month @Year) } @If @Year @And @Month @And @Not @Day
+ { {} (@Year) } @If @Year @And @Not @Month
+ { . } @If @True
+ { {} URL @I { @URL }. } @If @URL
+ { {} @Note } @If @Note
+ }
+ }
+}
+
+
+##########################################################################
+# #
+# Small works appearing within large works: InBook, InProceedings #
+# (identical to InBook). #
+# #
+##########################################################################
+
+{ InBook @RefStyle @Style
+ { @Reference&&reftag @Open
+ {
+ { @Author. {} } @If @Author
+ { @Title } @If @Title
+ { @Word&&notitle } @If @Not @Title
+ { . @Word&&in {} } @If @True
+ { @InAuthor, {} } @If @InAuthor
+ { @I @InTitle } @If @InTitle
+ { @Word&&notitle } @If @Not @InTitle
+ { , @Pinpoint } @If @Pinpoint
+ { , @Word&&pages @NumSep @Pages } @If @Pages
+ { , @Word&&page @NumSep @Page } @If @Page
+ { . @TitleNote } @If @TitleNote
+ { . @HowPublished } @If @HowPublished
+ { . @Publisher } @If @Publisher
+ { . @Organization } @If @Organization
+ { . @Institution } @If @Institution
+ { , @Address } @If @Address
+ { . @Edition } @If @Edition
+ { , @Month @Year } @If @Year @And @Month
+ { , @Year } @If @Year @And @Not @Month
+ { . } @If @True
+ { {} URL @I { @URL }. } @If @URL
+ { {} @Note } @If @Note
+ }
+ }
+}
+
+{ InProceedings @RefStyle @Style
+ { @Reference&&reftag @Open
+ {
+ { @Author. {} } @If @Author
+ { @Title } @If @Title
+ { @Word&&notitle } @If @Not @Title
+ { . @Word&&in {} } @If @True
+ { @InAuthor, {} } @If @InAuthor
+ { @I @InTitle } @If @InTitle
+ { @Word&&notitle } @If @Not @InTitle
+ { , @Pinpoint } @If @Pinpoint
+ { , @Word&&pages @NumSep @Pages } @If @Pages
+ { , @Word&&page @NumSep @Page } @If @Page
+ { . @TitleNote } @If @TitleNote
+ { . @HowPublished } @If @HowPublished
+ { . @Publisher } @If @Publisher
+ { . @Organization } @If @Organization
+ { . @Institution } @If @Institution
+ { , @Address } @If @Address
+ { . @Edition } @If @Edition
+ { , @Month @Year } @If @Year @And @Month
+ { , @Year } @If @Year @And @Not @Month
+ { . } @If @True
+ { {} URL @I { @URL }. } @If @URL
+ { {} @Note } @If @Note
+ }
+ }
+}
diff --git a/data/data/standard.ld b/data/data/standard.ld
new file mode 100644
index 0000000..eafa78a
--- /dev/null
+++ b/data/data/standard.ld
@@ -0,0 +1,2709 @@
+######################################################
+# #
+# standard.ld Jeffrey H. Kingston #
+# February 1995 #
+# February 1999 #
+# #
+# Database of commonly used symbols: #
+# #
+# @Word language-specific words #
+# @Roman lower case Roman numerals #
+# @UCRoman upper case Roman numerals #
+# @Alpha lower case Roman alphabet #
+# @UCAlpha upper case Roman alphabet #
+# @FnBullets bullets as footnote markers #
+# @FnSymbols traditional footnote markers #
+# @Months months of the year #
+# @ShortMonths months of the year, abbreviated #
+# @WeekDays days of the week #
+# @ShortWeekDays days of the week, abbreviated #
+# @TwelveHours hours on twelve-hour clock #
+# @ShortHours short hours on 24-hour clock #
+# @MeriDiem a.m. or p.m. #
+# @ShortMeriDiem am or pm #
+# @DateTimeFormat format of date and time. #
+# #
+# This file has been placed in the public domain #
+# by its author. #
+# #
+######################################################
+
+{ contents @Word @CurrLang @Case {
+ Croatian @Yield { Sadr{@Char zcaron}aj }
+ Czech @Yield { Obsah }
+ Danish @Yield { Indhold }
+ Dutch @Yield { Inhoudsopgave }
+ English @Yield { Contents }
+ EnglishUK @Yield { Contents }
+ Esperanto @Yield { Enhavo }
+ Finnish @Yield { Sis{@Char adieresis}lt{@Char odieresis} }
+ French @Yield { Table des Mati{@Char egrave}res }
+ German @Yield { Inhalt }
+ Hungarian @Yield { Tartalom }
+ Italian @Yield { Indice }
+ Norwegian @Yield { Innhold }
+ Polish @Yield { Spis tre{@Char sacute}ci }
+ Portuguese @Yield { Conte{@Char uacute}do }
+ Russian @Yield { "\363\317\304\305\322\326\301\316\311\305" }
+ Slovak @Yield { Obsah }
+ Slovenian @Yield { Vsebina }
+ Spanish @Yield { Contenidos }
+ Swedish @Yield { Inneh{@Char aring}ll }
+ UpperSorbian @Yield { Wobsah }
+ }
+}
+
+{ references @Word @CurrLang @Case {
+ Croatian @Yield { Reference }
+ Czech @Yield { Odkazy na literaturu }
+ Danish @Yield { Referencer }
+ Dutch @Yield { Referenties }
+ English @Yield { References }
+ EnglishUK @Yield { References }
+ Esperanto @Yield { Referencoj }
+ Finnish @Yield { Viitteet }
+ French @Yield { R{@Char eacute}f{@Char eacute}rences }
+ German @Yield { Literaturverzeichnis }
+ Hungarian @Yield { Hivatkoz{@Char aacute}sok }
+ Italian @Yield { Riferimenti }
+ Norwegian @Yield { Referanser }
+ Polish @Yield { Odno{@Char sacute}niki }
+ Portuguese @Yield { Refer{@Char ecircumflex}ncias }
+ Russian @Yield { "\354\311\324\305\322\301\324\325\322\301" }
+ Slovak @Yield { Odkazy na literat{@Char uacute}uru }
+ Slovenian @Yield { Reference }
+ Spanish @Yield { Referencias }
+ Swedish @Yield { Referenser }
+ UpperSorbian @Yield { Literatura }
+ }
+}
+
+{ bibliography @Word @CurrLang @Case {
+ Croatian @Yield { Bibliografija }
+ Czech @Yield { Seznam literatury }
+ Danish @Yield { Bibliografi }
+ Dutch @Yield { Bibliografie }
+ English @Yield { Bibliography }
+ EnglishUK @Yield { Bibliography }
+ Esperanto @Yield { Bibliografio }
+ Finnish @Yield { Kirjallisuusluettelo }
+ French @Yield { Bibliographie }
+ German @Yield { Literaturverzeichnis }
+ Hungarian @Yield { Irodalomjegyz{@Char eacute}k }
+ Italian @Yield { Bibliografia }
+ Norwegian @Yield { Litteratur }
+ Polish @Yield { Literatura }
+ Portuguese @Yield { Bibliografia }
+ Russian @Yield { "\354\311\324\305\322\301\324\325\322\301" }
+ Slovak @Yield { Zoznam literat{@Char uacute}ry }
+ Slovenian @Yield { Literatura }
+ Spanish @Yield { Bibliograf{@Char iacute}a }
+ Swedish @Yield { Bibliografi }
+ UpperSorbian @Yield { Bibliografija }
+ }
+}
+
+{ figure @Word @CurrLang @Case {
+ Croatian @Yield { Slika }
+ Czech @Yield { Obr{@Char aacute}zek }
+ Danish @Yield { Figur }
+ Dutch @Yield { Figuur }
+ English @Yield { Figure }
+ EnglishUK @Yield { Figure }
+ Esperanto @Yield { Figuro }
+ Finnish @Yield { Kuva }
+ French @Yield { Figure }
+ German @Yield { Abbildung }
+ Hungarian @Yield { {@Char aacute}bra }
+ Italian @Yield { Figura }
+ Norwegian @Yield { Figur }
+ Polish @Yield { Rysunek }
+ Portuguese @Yield { Figura }
+ Russian @Yield { "\362\311\323\325\316\317\313" }
+ Slovak @Yield { Obr{@Char aacute}zok }
+ Slovenian @Yield { Slika }
+ Spanish @Yield { Figura }
+ Swedish @Yield { Figur }
+ UpperSorbian @Yield { Wobraz }
+ }
+}
+
+{ figurelist @Word @CurrLang @Case {
+ Croatian @Yield { Popis slika }
+ Czech @Yield { Seznam obr{@Char aacute}zk{@Char uring} }
+ Danish @Yield { Figurliste }
+ Dutch @Yield { Lijst van figuren } # Figuren, Figurenlijst
+ English @Yield { List of Figures }
+ EnglishUK @Yield { List of Figures }
+ Esperanto @Yield { Figurolisto }
+ Finnish @Yield { Kuvat }
+ French @Yield { Liste des figures }
+ German @Yield { Abbildungsverzeichnis }
+ Hungarian @Yield { {@Char Aacute}br{@Char aacute}k jegyz{@Char eacute}ke }
+ Italian @Yield { Elenco delle figure }
+ Norwegian @Yield { ?? }
+ Polish @Yield { Spis rysunk{@Char oacute}w }
+ Portuguese @Yield { Lista de Figuras }
+ Russian @Yield { "\363\320\311\323\317\313 \311\314\314\300\323\324\322\301\303\311\312" }
+ Slovak @Yield { Zoznam obr{@Char aacute}zkov }
+ Slovenian @Yield { Seznam slik }
+ Spanish @Yield { Lista de figuras }
+ Swedish @Yield { ?? }
+ UpperSorbian @Yield { Zapisk wobrazow }
+ }
+}
+
+{ table @Word @CurrLang @Case {
+ Croatian @Yield { Tablica }
+ Czech @Yield { Tabulka }
+ Danish @Yield { Tabel }
+ Dutch @Yield { Tabel }
+ English @Yield { Table }
+ EnglishUK @Yield { Table }
+ Esperanto @Yield { Tabelo }
+ Finnish @Yield { Taulukko }
+ French @Yield { Table }
+ German @Yield { Tabelle }
+ Hungarian @Yield { t{@Char aacute}bl{@Char aacute}zat }
+ Italian @Yield { Tabella }
+ Norwegian @Yield { Tabell }
+ Polish @Yield { Tabela }
+ Portuguese @Yield { Tabela }
+ Russian @Yield { "\364\301\302\314\311\303\301" }
+ Slovak @Yield { Tabu{@Char lcaron}ka }
+ Slovenian @Yield { Tabela }
+ Spanish @Yield { Tabla }
+ Swedish @Yield { Tabell }
+ UpperSorbian @Yield { Tabulka }
+ }
+}
+
+{ tablelist @Word @CurrLang @Case {
+ Croatian @Yield { Popis tablica }
+ Czech @Yield { Seznam tabulek }
+ Danish @Yield { Tabelliste }
+ Dutch @Yield { Lijst van tabellen } # Tabellen, Tabellenlijst
+ English @Yield { List of Tables }
+ EnglishUK @Yield { List of Tables }
+ Esperanto @Yield { Tabelolisto }
+ Finnish @Yield { Taulukot }
+ French @Yield { Liste des tables }
+ German @Yield { Tabellenverzeichnis }
+ Hungarian @Yield { T{@Char aacute}bl{@Char aacute}zatok jegyz{@Char eacute}ke }
+ Italian @Yield { Elenco delle tabelle }
+ Norwegian @Yield { ?? }
+ Polish @Yield { Spis tabel }
+ Portuguese @Yield { Lista de Tabelas }
+ Russian @Yield { "\363\320\311\323\317\313 \324\301\302\314\311\303" }
+ Slovak @Yield { Zoznam tabuliek }
+ Slovenian @Yield { Seznam tabel }
+ Spanish @Yield { Lista de tablas }
+ Swedish @Yield { ?? }
+ UpperSorbian @Yield { Zapisk tabulkow }
+ }
+}
+
+# unlikely to be used in practice
+{ floater @Word @CurrLang @Case {
+ English @Yield { Floater }
+ EnglishUK @Yield { Floater }
+ }
+}
+
+# unlikely to be used in practice
+{ floaterlist @Word @CurrLang @Case {
+ English @Yield { List of Floaters }
+ EnglishUK @Yield { List of Floaters }
+ }
+}
+
+{ definition @Word @CurrLang @Case {
+ Croatian @Yield { Definicija }
+ Czech @Yield { Definice }
+ Danish @Yield { Definition }
+ Dutch @Yield { Definitie }
+ English @Yield { Definition }
+ EnglishUK @Yield { Definition }
+ Esperanto @Yield { Difino }
+ Finnish @Yield { M{@Char adieresis}{@Char adieresis}ritelm{@Char adieresis} }
+ French @Yield { D{@Char eacute}finition }
+ German @Yield { Definition }
+ Hungarian @Yield { defin{@Char iacute}ci{@Char oacute} }
+ Italian @Yield { Definizione }
+ Norwegian @Yield { ?? }
+ Polish @Yield { Definicja }
+ Portuguese @Yield { Defini{@Char ccedila}{@Char atilde}o }
+ Russian @Yield { "\357\320\322\305\304\305\314\305\316\311\305" }
+ Slovak @Yield { Defin{@Char iacute}ce }
+ Slovenian @Yield { Definicija }
+ Spanish @Yield { Definici{@Char oacute}n }
+ Swedish @Yield { ?? }
+ UpperSorbian @Yield { Definicija }
+ }
+}
+
+{ lemma @Word @CurrLang @Case {
+ Croatian @Yield { Lema }
+ Czech @Yield { Lemma }
+ Danish @Yield { Lemma }
+ Dutch @Yield { Lemma }
+ English @Yield { Lemma }
+ EnglishUK @Yield { Lemma }
+ Esperanto @Yield { Lemo }
+ Finnish @Yield { Lemma }
+ French @Yield { Lemme }
+ German @Yield { Lemma }
+ Hungarian @Yield { lemma }
+ Italian @Yield { Lemma }
+ Norwegian @Yield { ?? }
+ Polish @Yield { Lemat }
+ Portuguese @Yield { Lema }
+ Russian @Yield { "\354\305\315\315\301" }
+ Slovak @Yield { Lemma }
+ Slovenian @Yield { Lema }
+ Spanish @Yield { ?? }
+ Swedish @Yield { ?? }
+ UpperSorbian @Yield { Lema }
+ }
+}
+
+{ theorem @Word @CurrLang @Case {
+ Croatian @Yield { Teorem }
+ Czech @Yield { Teor{@Char eacute}m }
+ Danish @Yield { S{@Char ae}tning }
+ Dutch @Yield { Theorema }
+ English @Yield { Theorem }
+ EnglishUK @Yield { Theorem }
+ Esperanto @Yield { Teoremo }
+ Finnish @Yield { Lause }
+ French @Yield { Th{@Char eacute}or{@Char egrave}me }
+ German @Yield { Theorem }
+ Hungarian @Yield { t{@Char eacute}tel }
+ Italian @Yield { Teorema }
+ Norwegian @Yield { ?? }
+ Polish @Yield { Twierdzenie }
+ Portuguese @Yield { Teorema }
+ Russian @Yield { "\364\305\317\322\305\315\301" }
+ Slovak @Yield { Teor{@Char eacute}ma }
+ Slovenian @Yield { Teorem }
+ Spanish @Yield { Teorema }
+ Swedish @Yield { ?? }
+ UpperSorbian @Yield { Teorem }
+ }
+}
+
+{ proposition @Word @CurrLang @Case {
+ Croatian @Yield { Propozicija }
+ Czech @Yield { P{@Char rcaron}edpoklad }
+ Danish @Yield { Proposition }
+ Dutch @Yield { Propositie } # Bewering
+ English @Yield { Proposition }
+ EnglishUK @Yield { Proposition }
+ Esperanto @Yield { Propozicio }
+ Finnish @Yield { Propositio }
+ French @Yield { Proposition }
+ German @Yield { Satz }
+ Hungarian @Yield { {@Char aacute}ll{@Char iacute}t{@Char aacute}s }
+ Italian @Yield { Proposizione }
+ Norwegian @Yield { ?? }
+ Polish @Yield { Za{@Char lslash}o{@Char zdotabove}enie }
+ Portuguese @Yield { Proposi{@Char ccedilla}{@Char atilde}o }
+ Russian @Yield { "\360\322\305\304\314\317\326\305\316\311\305" }
+ Slovak @Yield { Predpoklad }
+ Slovenian @Yield { Predpostavka }
+ Spanish @Yield { Proposici{@Char oacute}n }
+ Swedish @Yield { ?? }
+ UpperSorbian @Yield { Postajenje }
+ }
+}
+
+{ corollary @Word @CurrLang @Case {
+ Croatian @Yield { Korolar }
+ Czech @Yield { D{@Char uring}sledek }
+ Danish @Yield { Korollar }
+ Dutch @Yield { Corollaar }
+ English @Yield { Corollary }
+ EnglishUK @Yield { Corollary }
+ Esperanto @Yield { Korolario }
+ Finnish @Yield { Seuraus }
+ French @Yield { Corollaire }
+ German @Yield { Korollar }
+ Hungarian @Yield { ?? }
+ Italian @Yield { Corollario }
+ Norwegian @Yield { ?? }
+ Polish @Yield { Wniosek }
+ Portuguese @Yield { Corol{@Char aacute}rio }
+ Russian @Yield { "\363\314\305\304\323\324\327\311\305" }
+ Slovak @Yield { D{@Char ocircumflex}sledok }
+ Slovenian @Yield { Sklep }
+ Spanish @Yield { Corolario }
+ Swedish @Yield { ?? }
+ UpperSorbian @Yield { Korolar }
+ }
+}
+
+{ example @Word @CurrLang @Case {
+ Croatian @Yield { Primjer }
+ Czech @Yield { P{@Char rcaron}{@Char iacute}klad }
+ Danish @Yield { Eksempel }
+ Dutch @Yield { Voorbeeld }
+ English @Yield { Example }
+ EnglishUK @Yield { Example }
+ Esperanto @Yield { Ekzemplo }
+ Finnish @Yield { Esimerkki }
+ French @Yield { Exemple }
+ German @Yield { Beispiel }
+ Hungarian @Yield { p{@Char eacute}lda }
+ Italian @Yield { Esempio }
+ Norwegian @Yield { ?? }
+ Polish @Yield { Przyk{@Char lslash}ad }
+ Portuguese @Yield { Exemplo }
+ Russian @Yield { "\360\322\311\315\305\322" }
+ Slovak @Yield { Pr{@Char iacute}klad }
+ Slovenian @Yield { Primer }
+ Spanish @Yield { Ejemplo }
+ Swedish @Yield { ?? }
+ UpperSorbian @Yield { p{@Char rcaron}ik{@Char lslash}ad }
+ }
+}
+
+{ claim @Word @CurrLang @Case {
+ Croatian @Yield { Tvrdnja }
+ Czech @Yield { Tvrzen{@Char iacute} }
+ Danish @Yield { P{@Char aa}stand }
+ Dutch @Yield { Stelling }
+ English @Yield { Claim }
+ EnglishUK @Yield { Claim }
+ Esperanto @Yield { Aserto }
+ Finnish @Yield { V{@Char adieresis}ite }
+ French @Yield { Affirmation }
+ German @Yield { Behauptung }
+ Hungarian @Yield { kijelent{@Char eacute}s }
+ Italian @Yield { Affermazione }
+ Norwegian @Yield { ?? }
+ Polish @Yield { Stwierdzenie }
+ Portuguese @Yield { Crédito }
+ Russian @Yield { "\365\324\327\305\322\326\304\305\316\311\305" }
+ Slovak @Yield { Tvrdenie }
+ Slovenian @Yield { Trditev }
+ Spanish @Yield { Hip{@Char oacute}tesis }
+ Swedish @Yield { ?? }
+ UpperSorbian @Yield { Twjerd{@Char zacute}enje }
+ }
+}
+
+{ proof @Word @CurrLang @Case {
+ Croatian @Yield { Dokaz }
+ Czech @Yield { D{@Char uring}kaz }
+ Danish @Yield { Bevis }
+ Dutch @Yield { Bewijs }
+ English @Yield { Proof }
+ EnglishUK @Yield { Proof }
+ Esperanto @Yield { Pruvo }
+ Finnish @Yield { Todistus }
+ French @Yield { Preuve }
+ German @Yield { Beweis }
+ Hungarian @Yield { Bizony{@Char iacute}t{@Char aacute}s }
+ Italian @Yield { Dimostrazione }
+ Norwegian @Yield { ?? }
+ Polish @Yield { Dow{@Char oacute}d }
+ Portuguese @Yield { Prova }
+ Russian @Yield { "\344\317\313\301\332\301\324\305\314\330\323\324\327\317" }
+ Slovak @Yield { D{@Char ocircumflex}kaz }
+ Slovenian @Yield { Dokaz }
+ Spanish @Yield { Demostraci{@Char oacute}n }
+ Swedish @Yield { ?? }
+ UpperSorbian @Yield { Dopokaz }
+ }
+}
+
+{ abstract @Word @CurrLang @Case {
+ Croatian @Yield { Sa{@Char zcaron}etak }
+ Czech @Yield { Abstrakt }
+ Danish @Yield { Synopsis }
+ Dutch @Yield { Samenvatting }
+ English @Yield { Abstract }
+ EnglishUK @Yield { Abstract }
+ Esperanto @Yield { Resumo }
+ Finnish @Yield { Yleiskatsaus }
+ French @Yield { R{@Char eacute}sum{@Char eacute} }
+ German @Yield { Zusammenfassung }
+ Hungarian @Yield { Kivonat }
+ Italian @Yield { Riassunto }
+ Norwegian @Yield { Sammendrag }
+ Polish @Yield { Abstrakt }
+ Portuguese @Yield { Resumo }
+ Russian @Yield { "\341\302\323\324\322\301\313\324" } #correct!
+ Slovak @Yield { Abstrakt }
+ Slovenian @Yield { Povzetek }
+ Spanish @Yield { Sinopsis }
+ Swedish @Yield { {@Char Odieresis}versikt }
+ UpperSorbian @Yield { Zje{@Char cacute}e }
+ }
+}
+
+{ preface @Word @CurrLang @Case {
+ Croatian @Yield { Predgovor }
+ Czech @Yield { P{@Char rcaron}edmluva }
+ Danish @Yield { Forord }
+ Dutch @Yield { Voorwoord } # or { Woord vooraf }
+ English @Yield { Preface }
+ EnglishUK @Yield { Preface }
+ Esperanto @Yield { Preface }
+ Finnish @Yield { Esipuhe }
+ French @Yield { Pr{@Char eacute}face }
+ German @Yield { Vorwort }
+ Hungarian @Yield { El{@Char odblacute}sz{@Char oacute} }
+ Italian @Yield { Prefazione }
+ Norwegian @Yield { Forord }
+ Polish @Yield { Przedmowa }
+ Portuguese @Yield { Pref{@Char aacute}cio }
+ Russian @Yield { "\360\322\305\304\311\323\314\317\327\311\305" }
+ Slovak @Yield { Predhovor }
+ Slovenian @Yield { Predgovor }
+ Spanish @Yield { Prefacio }
+ Swedish @Yield { F{@Char odieresis}rord }
+ UpperSorbian @Yield { P{@Char rcaron}eds{@Char lslash}owo }
+ }
+}
+
+{ abbreviations @Word @CurrLang @Case {
+ Croatian @Yield { Skra{@Char cacute}enice }
+ Czech @Yield { Zkratky }
+ Danish @Yield { ?? }
+ Dutch @Yield { ?? }
+ English @Yield { Abbreviations }
+ EnglishUK @Yield { Abbreviations }
+ Esperanto @Yield { Mallongigo }
+ Finnish @Yield { Lyhenteet }
+ French @Yield { Abr{@Char eacute}viation }
+ German @Yield { Abk{@Char udiaresis}rzungsverzeichnis }
+ Hungarian @Yield { ?? }
+ Italian @Yield { Abbreviazioni }
+ Norwegian @Yield { ?? }
+ Polish @Yield { ?? }
+ Portuguese @Yield { Abrevia{@Char ccedilla}{@Char otilde}es }
+ Russian @Yield { ?? }
+ Slovak @Yield { Skratky }
+ Slovenian @Yield { ?? }
+ Spanish @Yield { ?? }
+ Swedish @Yield { ?? }
+ UpperSorbian @Yield { Skr{@Char oacute}t{@Char scaron}enki }
+ }
+}
+
+{ introduction @Word @CurrLang @Case {
+ Croatian @Yield { Uvod }
+ Czech @Yield { {@Char Uacute}vod }
+ Danish @Yield { Indledning }
+ Dutch @Yield { Afkortingen }
+ English @Yield { Introduction }
+ EnglishUK @Yield { Introduction }
+ Esperanto @Yield { Enkonduko }
+ Finnish @Yield { Johdanto }
+ French @Yield { Introduction }
+ German @Yield { Einleitung }
+ Hungarian @Yield { Bevezet{@Char eacute}s }
+ Italian @Yield { Introduzione }
+ Norwegian @Yield { Innledning }
+ Polish @Yield { Wst{@Char eogonek}p }
+ Portuguese @Yield { Introdu{@Char ccedilla}{@Char atilde}o }
+ Russian @Yield { "\367\327\305\304\305\316\311\305" }
+ Slovak @Yield { {@Char Uacute}vod }
+ Slovenian @Yield { Uvod }
+ Spanish @Yield { Introducci{@Char oacute}n }
+ Swedish @Yield { Inledning }
+ UpperSorbian @Yield { Zawod }
+ }
+}
+
+{ chapter @Word @CurrLang @Case {
+ Croatian @Yield { Poglavlje }
+ Czech @Yield { Kapitola }
+ Danish @Yield { Kapitel }
+ Dutch @Yield { Hoofdstuk }
+ English @Yield { Chapter }
+ EnglishUK @Yield { Chapter }
+ Esperanto @Yield { {@Char Ccircumflex}apitro }
+ Finnish @Yield { Luku }
+ French @Yield { Chapitre }
+ German @Yield { Kapitel }
+ Hungarian @Yield { fejezet }
+ Italian @Yield { Capitolo }
+ Norwegian @Yield { Kapittel }
+ Polish @Yield { Rozdzia{@Char lslash} }
+ Portuguese @Yield { Cap{@Char iacute}tolo }
+ Russian @Yield { "\347\314\301\327\301" }
+ Slovak @Yield { Kapitola }
+ Slovenian @Yield { Poglavje }
+ Spanish @Yield { Cap{@Char iacute}tulo }
+ Swedish @Yield { Kapitel }
+ UpperSorbian @Yield { Staw }
+ }
+}
+
+{ appendix @Word @CurrLang @Case {
+ Croatian @Yield { Dodatak }
+ Czech @Yield { P{@Char rcaron}{@Char iacute}loha }
+ Danish @Yield { Appendiks }
+ Dutch @Yield { Appendix }
+ English @Yield { Appendix }
+ EnglishUK @Yield { Appendix }
+ Esperanto @Yield { Aldono }
+ Finnish @Yield { Liite }
+ French @Yield { Annexe }
+ German @Yield { Anhang }
+ Hungarian @Yield { f{@Char udieresis}ggel{@Char eacute}k }
+ Italian @Yield { Appendice }
+ Norwegian @Yield { Tillegg }
+ Polish @Yield { Dodatek }
+ Portuguese @Yield { Apêndice }
+ Russian @Yield { "\360\322\311\314\317\326\305\316\311\305" }
+ Slovak @Yield { Pr{@Char iacute}loha }
+ Slovenian @Yield { Dodatek }
+ Spanish @Yield { Ap{@Char eacute}ndice }
+ Swedish @Yield { Appendix }
+ UpperSorbian @Yield { Dodawki }
+ }
+}
+
+{ lecture @Word @CurrLang @Case {
+ Croatian @Yield { Predavanje }
+ Czech @Yield { P{@Char rcaron}edn{@Char aacute}{@Char scaron}ka }
+ Danish @Yield { Lecture }
+ Dutch @Yield { Lecture }
+ English @Yield { Lecture }
+ EnglishUK @Yield { Lecture }
+ Esperanto @Yield { Prelego }
+ Finnish @Yield { Luento }
+ French @Yield { Conf{@Char eacute}rence }
+ German @Yield { Vorselung }
+ Hungarian @Yield { Lecture }
+ Italian @Yield { Conferenza }
+ Norwegian @Yield { Lecture }
+ Polish @Yield { Lecture }
+ Portuguese @Yield { Conferência }
+ Russian @Yield { Lecture }
+ Slovak @Yield { Predn{@Char aacute}{@Char scaron}ka }
+ Slovenian @Yield { Lecture }
+ Spanish @Yield { Conferencia }
+ Swedish @Yield { Lecture }
+ UpperSorbian @Yield { P{@Char rcaron}edno{@Char scaron}k }
+ }
+}
+
+{ glossary @Word @CurrLang @Case {
+ Croatian @Yield { ?? }
+ Czech @Yield { ?? }
+ Danish @Yield { Ordforklaringer }
+ Dutch @Yield { ?? }
+ English @Yield { Glossary }
+ EnglishUK @Yield { Glossary }
+ Esperanto @Yield { Glosaro }
+ Finnish @Yield { ?? }
+ French @Yield { Glossaire }
+ German @Yield { Glossar }
+ Hungarian @Yield { ?? }
+ Italian @Yield { ?? }
+ Norwegian @Yield { Ordforklaringer }
+ Polish @Yield { ?? }
+ Portuguese @Yield { Gloss{@Char aacute}rio }
+ Russian @Yield { ?? }
+ Slovak @Yield { Vecn{@Char yacute} register }
+ Slovenian @Yield { ?? }
+ Spanish @Yield { Glosario }
+ Swedish @Yield { Ordf{@Char odieresis}rklaringar }
+ UpperSorbian @Yield { ?? }
+ }
+}
+
+{ index @Word @CurrLang @Case {
+ Croatian @Yield { Indeks }
+ Czech @Yield { Rejst{@Char rcaron}{@Char iacute}k }
+ Danish @Yield { Indeks }
+ Dutch @Yield { Index }
+ English @Yield { Index }
+ EnglishUK @Yield { Index }
+ Esperanto @Yield { Indekso }
+ Finnish @Yield { Hakemisto }
+ French @Yield { Index }
+ German @Yield { Index }
+ Hungarian @Yield { Index }
+ Italian @Yield { Indice }
+ Norwegian @Yield { Register }
+ Polish @Yield { Skorowidz }
+ Portuguese @Yield { {@Char Iacute}ndice Remissivo }
+ Russian @Yield { "\351\316\304\305\313\323" }
+ Slovak @Yield { Index }
+ Slovenian @Yield { Indeks }
+ Spanish @Yield { Indice }
+ Swedish @Yield { Index }
+ UpperSorbian @Yield { Indeks }
+ }
+}
+
+{ colophon @Word @CurrLang @Case {
+ Croatian @Yield { ?? }
+ Czech @Yield { ?? }
+ Danish @Yield { ?? }
+ Dutch @Yield { ?? }
+ English @Yield { Colophon }
+ EnglishUK @Yield { Colophon }
+ Esperanto @Yield { Kolofono }
+ Finnish @Yield { ?? }
+ French @Yield { ?? }
+ German @Yield { Kolophon }
+ Hungarian @Yield { ?? }
+ Italian @Yield { ?? }
+ Norwegian @Yield { ?? }
+ Polish @Yield { ?? }
+ Portuguese @Yield { ?? }
+ Russian @Yield { ?? }
+ Slovak @Yield { ?? }
+ Slovenian @Yield { ?? }
+ Spanish @Yield { ?? }
+ Swedish @Yield { ?? }
+ UpperSorbian @Yield { ?? }
+ }
+}
+
+{ notitle @Word @CurrLang @Case {
+ Croatian @Yield { Bez naslova }
+ Czech @Yield { Bez n{@Char aacute}zvu }
+ Danish @Yield { Ingen titel }
+ Dutch @Yield { Zonder titel }
+ English @Yield { No title }
+ EnglishUK @Yield { No title }
+ Esperanto @Yield { Sen titolo }
+ Finnish @Yield { Ei nime{@Char adieresis} }
+ French @Yield { Sans titre }
+ German @Yield { Ohne Titel }
+ Hungarian @Yield { C{@Char iacute}m n{@Char eacute}lk{@Char udieresis}l }
+ Polish @Yield { Bez tytu{@Char lslash}u }
+ Portuguese @Yield { Sem t{@Char iacute}tulo }
+ Italian @Yield { Senza titolo }
+ Norwegian @Yield { Utel tittel }
+ Russian @Yield { "\342\305\332 \316\301\332\327\301\316\311\321" }
+ Slovak @Yield { Bez n{@Char aacute}zvu }
+ Slovenian @Yield { Brez naslova }
+ Spanish @Yield { Sin t{@Char iacute}tulo }
+ Swedish @Yield { Ingen titel }
+ UpperSorbian @Yield { Bjez titla }
+ }
+}
+
+{ pages @Word @CurrLang @Case {
+ Croatian @Yield { stranica }
+ Czech @Yield { stranky }
+ Danish @Yield { sider }
+ Dutch @Yield { pagina's } # or {bladzijden}, {pag.}, {blz.}
+ English @Yield { pages }
+ EnglishUK @Yield { pages }
+ Esperanto @Yield { pa{@Char gcircumflex}oj }
+ Finnish @Yield { sivut }
+ French @Yield { pages }
+ German @Yield { Seiten }
+ Hungarian @Yield { oldal }
+ Italian @Yield { pagine }
+ Norwegian @Yield { sider }
+ Polish @Yield { strony }
+ Portuguese @Yield { p{@Char aacute}ginas }
+ Russian @Yield { "\323\324\322\301\316\311\303\331" }
+ Slovak @Yield { str{@Char aacute}n }
+ Slovenian @Yield { strani }
+ Spanish @Yield { p{@Char aacute}ginas }
+ Swedish @Yield { sidor }
+ UpperSorbian @Yield { strony }
+ }
+}
+
+{ page @Word @CurrLang @Case {
+ Croatian @Yield { strana }
+ Czech @Yield { strana }
+ Danish @Yield { side }
+ Dutch @Yield { pagina } # or {bladzijde}, {pag.}, {blz.}
+ English @Yield { page }
+ EnglishUK @Yield { page }
+ Esperanto @Yield { pa{@Char gcircumflex}o }
+ Finnish @Yield { sivu }
+ French @Yield { page }
+ German @Yield { Seite }
+ Hungarian @Yield { oldal }
+ Italian @Yield { pagina }
+ Norwegian @Yield { side }
+ Polish @Yield { strona }
+ Portuguese @Yield { p{@Char aacute}gina }
+ Russian @Yield { "\323\324\322\301\316\311\303\301" }
+ Slovak @Yield { strana }
+ Slovenian @Yield { stran }
+ Spanish @Yield { p{@Char aacute}gina }
+ Swedish @Yield { sida }
+ UpperSorbian @Yield { strona }
+ }
+}
+
+{ nopublisher @Word @CurrLang @Case {
+ Croatian @Yield { Bez izdava{@Char ccaron}a }
+ Czech @Yield { Vydavatel neuveden }
+ Danish @Yield { Intet forlag }
+ Dutch @Yield { Ongepubliceerd } # or {Zonder uitgever}
+ English @Yield { No publisher }
+ EnglishUK @Yield { No publisher }
+ Esperanto @Yield { Sen eldonisto }
+ Finnish @Yield { Ei kustantajaa }
+ French @Yield { Sans {@Char eacute}diteur }
+ German @Yield { Ohne Verleger }
+ Hungarian @Yield { Kiad{@Char oacute} n{@Char eacute}lk{@Char udieresis}l }
+ Italian @Yield { Senza editore }
+ Norwegian @Yield { Upublisert }
+ Polish @Yield { Bez wydawcy }
+ Portuguese @Yield { Sem editora }
+ Russian @Yield { "\302\305\332 \311\332\304\301\324\305\314\321" }
+ Slovak @Yield { Vydavate{@Char lcaron} neuveden{@Char eacute} }
+ Slovenian @Yield { Brez zalo{@Char zcaron}nika }
+ Spanish @Yield { Sin editor }
+ Swedish @Yield { Inget f{@Char odieresis}rlag }
+ UpperSorbian @Yield { Wudawa{@Char cacute}el njeznaty }
+ }
+}
+
+{ techrep @Word @CurrLang @Case {
+ Croatian @Yield { Tehni{@Char ccaron}ko izvje{@Char scaron}{@Char cacute}e }
+ Czech @Yield { Technick{@Char aacute} zpr{@Char aacute}va }
+ Danish @Yield { Teknisk rapport }
+ Dutch @Yield { Technisch rapport }
+ English @Yield { Tech. Rep. }
+ EnglishUK @Yield { Tech. Rep. }
+ Esperanto @Yield { Teknika raporto }
+ Finnish @Yield { Tekn. rap. }
+ French @Yield { Rapport technique }
+ German @Yield { Techn. Ber. }
+ Hungarian @Yield { Techn. jel. }
+ Italian @Yield { Rapporto tecnico }
+ Norwegian @Yield { Tekn. Rapp. }
+ Russian @Yield { "\324\305\310. \304\317\313\314\301\304" }
+ Slovak @Yield { Technick{@Char aacute} spr{@Char aacute}va }
+ Polish @Yield { Sprawozdanie techniczne }
+ Portuguese @Yield { Relat{@Char oacute}rio t{@Char eacute}cnico }
+ Slovenian @Yield { Tehn. por. }
+ Spanish @Yield { Informe t{@Char eacute}cnico }
+ Swedish @Yield { Tekn. rap. }
+ UpperSorbian @Yield { Techn. rozp. }
+ }
+}
+
+{ phdthesis @Word @CurrLang @Case {
+ Croatian @Yield { Doktorska disertacija }
+ Czech @Yield { Doktorsk{@Char aacute} disertace }
+ Danish @Yield { Ph.D.-afhandling }
+ Dutch @Yield { Proefschrift } # or {Dissertatie}
+ English @Yield { Ph.D. thesis }
+ EnglishUK @Yield { Ph.D. thesis }
+ Esperanto @Yield { Doktoriga tezo }
+ Finnish @Yield { tohtorinv{@Char adieresis}it{@Char odieresis}skirja }
+ French @Yield { Th{@Char egrave}se de Doctorat }
+ German @Yield { Doktorarbeit }
+ Hungarian @Yield { Doktori disszert{@Char aacute}ci{@Char oacute} }
+ Italian @Yield { Tesi di dottorato }
+ Norwegian @Yield { Doktorgradsavhandling }
+ Polish @Yield { Praca doktorska }
+ Portuguese @Yield { Tese de doutoramento }
+ Russian @Yield { "\313\301\316\304\311\304\301\324\323\313\301\321"
+"\304\311\323\323\305\322\324\301\303\311\321" }
+ Slovak @Yield { Doktorsk{@Char aacute} dizert{@Char aacute}cia }
+ Slovenian @Yield { Doktorska disertacija }
+ Spanish @Yield { Tesis Doctoral }
+ Swedish @Yield { doktorsavhandling }
+ UpperSorbian @Yield { Disertacija }
+ }
+}
+
+{ mastersthesis @Word @CurrLang @Case {
+ Croatian @Yield { Magistarski rad }
+ Czech @Yield { Diplomov{@Char aacute} pr{@Char aacute}ce }
+ Danish @Yield { Specialeafhandling }
+ Dutch @Yield { Doctoraalscriptie }
+ English @Yield { Master's thesis }
+ EnglishUK @Yield { Master's thesis }
+ Esperanto @Yield { Magistriga tezo }
+ Finnish @Yield { diplomity{@Char odieresis} }
+ French @Yield { M{@Char eacute}moire de Ma{@Char icircumflex}trise }
+ German @Yield { Magisterarbeit }
+ Hungarian @Yield { Diplomamunka }
+ Italian @Yield { Tesi di laurea }
+ Norwegian @Yield { Diplomoppgave }
+ Polish @Yield { Praca magisterska }
+ Portuguese @Yield { Disserta{@Char ccedilla}{@Char atilde}o de mestrado }
+ Russian @Yield { "\304\311\320\314\317\315\316\301\321"
+"\322\301\302\317\324\301" }
+ Slovak @Yield { Diplomov{@Char aacute} pr{@Char aacute}ca }
+ Slovenian @Yield { Diploma }
+ Spanish @Yield { Tesis Magistral }
+ Swedish @Yield { diplomarbete }
+ UpperSorbian @Yield { Diplomowe d{@Char zacute}{@Char ecaron}{@Char lslash}o }
+ }
+}
+
+{ in @Word @CurrLang @Case {
+ Croatian @Yield { U }
+ Czech @Yield { In }
+ Danish @Yield { I }
+ Dutch @Yield { In }
+ English @Yield { In }
+ EnglishUK @Yield { In }
+ Esperanto @Yield { En }
+ Finnish @Yield { teoksessa }
+ French @Yield { dans }
+ German @Yield { In }
+ Hungarian @Yield { ?? }
+ Italian @Yield { In }
+ Norwegian @Yield { I }
+ Polish @Yield { W }
+ Portuguese @Yield { Em }
+ Russian @Yield { "\327" }
+ Slovak @Yield { In }
+ Slovenian @Yield { V }
+ Spanish @Yield { En }
+ Swedish @Yield { I }
+ UpperSorbian @Yield { W }
+ }
+}
+
+{ continued @Word @CurrLang @Case {
+ Croatian @Yield { nast. }
+ Czech @Yield { pokra{@Char ccaron}ov{@Char aacute}n{@Char iacute} }
+ Danish @Yield { ?? }
+ Dutch @Yield { ?? }
+ English @Yield { ctd. }
+ EnglishUK @Yield { ctd. }
+ Esperanto @Yield { sekva{@Char jcircumflex}o }
+ Finnish @Yield { jatk. }
+ French @Yield { suite }
+ German @Yield { Fortsetzung }
+ Hungarian @Yield { folyt. }
+ Italian @Yield { cont. }
+ Norwegian @Yield { ?? }
+ Polish @Yield { ?? }
+ Portuguese @Yield { cont. }
+ Russian @Yield { ?? }
+ Slovak @Yield { pokra{@Char ccaron}ovanie }
+ Slovenian @Yield { ?? }
+ Spanish @Yield { continuaci{@Char oacute}n }
+ Swedish @Yield { ?? }
+ UpperSorbian @Yield { Pokro{@Char zcaron}owanje }
+ }
+}
+
+{ am @Word @CurrLang @Case {
+ Croatian @Yield { a.m. }
+ Czech @Yield { a.m. }
+ Danish @Yield { a.m. }
+ Dutch @Yield { a.m. }
+ English @Yield { a.m. }
+ EnglishUK @Yield { a.m. }
+ Esperanto @Yield { a.t.m. } # antauxtagmeze
+ Finnish @Yield { a.m. }
+ French @Yield { a.m. }
+ German @Yield { a.m. }
+ Hungarian @Yield { de. }
+ Italian @Yield { a.m. }
+ Norwegian @Yield { a.m. }
+ Polish @Yield { a.m. }
+ Portuguese @Yield { a.m. }
+ Russian @Yield { a.m. }
+ Slovak @Yield { a.m. }
+ Slovenian @Yield { a.m. }
+ Spanish @Yield { a.m. }
+ Swedish @Yield { a.m. }
+ UpperSorbian @Yield { dopo{@Char lslash}dnja }
+ }
+}
+
+{ pm @Word @CurrLang @Case {
+ Croatian @Yield { p.m. }
+ Czech @Yield { p.m. }
+ Danish @Yield { p.m. }
+ Dutch @Yield { p.m. }
+ English @Yield { p.m. }
+ EnglishUK @Yield { p.m. }
+ Esperanto @Yield { p.t.m. } # posttagmeze
+ Finnish @Yield { p.m. }
+ French @Yield { p.m. }
+ German @Yield { p.m. }
+ Hungarian @Yield { du. }
+ Italian @Yield { p.m. }
+ Norwegian @Yield { p.m. }
+ Polish @Yield { p.m. }
+ Portuguese @Yield { p.m. }
+ Russian @Yield { p.m. }
+ Slovak @Yield { p.m. }
+ Slovenian @Yield { p.m. }
+ Spanish @Yield { p.m. }
+ Swedish @Yield { p.m. }
+ UpperSorbian @Yield { popo{@Char lslash}dnju }
+ }
+}
+
+{ shortam @Word @CurrLang @Case {
+ Croatian @Yield { am }
+ Czech @Yield { am }
+ Danish @Yield { am }
+ Dutch @Yield { am }
+ English @Yield { am }
+ EnglishUK @Yield { am }
+ Esperanto @Yield { atm }
+ Finnish @Yield { am }
+ French @Yield { am }
+ German @Yield { am }
+ Hungarian @Yield { de }
+ Italian @Yield { am }
+ Norwegian @Yield { am }
+ Polish @Yield { am }
+ Portuguese @Yield { am }
+ Russian @Yield { am }
+ Slovak @Yield { am }
+ Slovenian @Yield { am }
+ Spanish @Yield { am }
+ Swedish @Yield { am }
+ UpperSorbian @Yield { dopo{@Char lslash}. }
+ }
+}
+
+{ shortpm @Word @CurrLang @Case {
+ Croatian @Yield { pm }
+ Czech @Yield { pm }
+ Danish @Yield { pm }
+ Dutch @Yield { pm }
+ English @Yield { pm }
+ EnglishUK @Yield { pm }
+ Esperanto @Yield { ptm }
+ Finnish @Yield { pm }
+ French @Yield { pm }
+ German @Yield { pm }
+ Hungarian @Yield { du }
+ Italian @Yield { pm }
+ Norwegian @Yield { pm }
+ Polish @Yield { pm }
+ Portuguese @Yield { pm }
+ Russian @Yield { pm }
+ Slovak @Yield { pm }
+ Slovenian @Yield { pm }
+ Spanish @Yield { pm }
+ Swedish @Yield { pm }
+ UpperSorbian @Yield { popo{@Char lslash}. }
+ }
+}
+
+
+{ ?? @Roman ?? }
+{ 1 @Roman i }
+{ 2 @Roman ii }
+{ 3 @Roman iii }
+{ 4 @Roman iv }
+{ 5 @Roman v }
+{ 6 @Roman vi }
+{ 7 @Roman vii }
+{ 8 @Roman viii }
+{ 9 @Roman ix }
+{ 10 @Roman x }
+{ 11 @Roman xi }
+{ 12 @Roman xii }
+{ 13 @Roman xiii }
+{ 14 @Roman xiv }
+{ 15 @Roman xv }
+{ 16 @Roman xvi }
+{ 17 @Roman xvii }
+{ 18 @Roman xviii }
+{ 19 @Roman xix }
+{ 20 @Roman xx }
+{ 21 @Roman xxi }
+{ 22 @Roman xxii }
+{ 23 @Roman xxiii }
+{ 24 @Roman xxiv }
+{ 25 @Roman xxv }
+{ 26 @Roman xxvi }
+{ 27 @Roman xxvii }
+{ 28 @Roman xxviii }
+{ 29 @Roman xxix }
+{ 30 @Roman xxx }
+{ 31 @Roman xxxi }
+{ 32 @Roman xxxii }
+{ 33 @Roman xxxiii }
+{ 34 @Roman xxxiv }
+{ 35 @Roman xxxv }
+{ 36 @Roman xxxvi }
+{ 37 @Roman xxxvii }
+{ 38 @Roman xxxviii }
+{ 39 @Roman xxxix }
+{ 40 @Roman xl }
+{ 41 @Roman xli }
+{ 42 @Roman xlii }
+{ 43 @Roman xliii }
+{ 44 @Roman xliv }
+{ 45 @Roman xlv }
+{ 46 @Roman xlvi }
+{ 47 @Roman xlvii }
+{ 48 @Roman xlviii }
+{ 49 @Roman xlix }
+{ 50 @Roman l }
+{ 51 @Roman li }
+{ 52 @Roman lii }
+{ 53 @Roman liii }
+{ 54 @Roman liv }
+{ 55 @Roman lv }
+{ 56 @Roman lvi }
+{ 57 @Roman lvii }
+{ 58 @Roman lviii }
+{ 59 @Roman lix }
+{ 60 @Roman lx }
+{ 61 @Roman lxi }
+{ 62 @Roman lxii }
+{ 63 @Roman lxiii }
+{ 64 @Roman lxiv }
+{ 65 @Roman lxv }
+{ 66 @Roman lxvi }
+{ 67 @Roman lxvii }
+{ 68 @Roman lxviii }
+{ 69 @Roman lxix }
+{ 70 @Roman lxx }
+{ 71 @Roman lxxi }
+{ 72 @Roman lxxii }
+{ 73 @Roman lxxiii }
+{ 74 @Roman lxxiv }
+{ 75 @Roman lxxv }
+{ 76 @Roman lxxvi }
+{ 77 @Roman lxxvii }
+{ 78 @Roman lxxviii }
+{ 79 @Roman lxxix }
+{ 80 @Roman lxxx }
+{ 81 @Roman lxxxi }
+{ 82 @Roman lxxxii }
+{ 83 @Roman lxxxiii }
+{ 84 @Roman lxxxiv }
+{ 85 @Roman lxxxv }
+{ 86 @Roman lxxxvi }
+{ 87 @Roman lxxxvii }
+{ 88 @Roman lxxxviii }
+{ 89 @Roman lxxxix }
+{ 90 @Roman xc }
+{ 91 @Roman xci }
+{ 92 @Roman xcii }
+{ 93 @Roman xciii }
+{ 94 @Roman xciv }
+{ 95 @Roman xcv }
+{ 96 @Roman xcvi }
+{ 97 @Roman xcvii }
+{ 98 @Roman xcviii }
+{ 99 @Roman xcix }
+{ 100 @Roman cc }
+{ 101 @Roman ci }
+{ 102 @Roman cii }
+{ 103 @Roman ciii }
+{ 104 @Roman civ }
+{ 105 @Roman cv }
+{ 106 @Roman cvi }
+{ 107 @Roman cvii }
+{ 108 @Roman cviii }
+{ 109 @Roman cix }
+{ 110 @Roman cx }
+{ 111 @Roman cxi }
+{ 112 @Roman cxii }
+{ 113 @Roman cxiii }
+{ 114 @Roman cxiv }
+{ 115 @Roman cxv }
+{ 116 @Roman cxvi }
+{ 117 @Roman cxvii }
+{ 118 @Roman cxviii }
+{ 119 @Roman cxix }
+{ 120 @Roman cxx }
+{ 121 @Roman cxxi }
+{ 122 @Roman cxxii }
+{ 123 @Roman cxxiii }
+{ 124 @Roman cxxiv }
+{ 125 @Roman cxxv }
+{ 126 @Roman cxxvi }
+{ 127 @Roman cxxvii }
+{ 128 @Roman cxxviii }
+{ 129 @Roman cxxix }
+{ 130 @Roman cxxx }
+{ 131 @Roman cxxxi }
+{ 132 @Roman cxxxii }
+{ 133 @Roman cxxxiii }
+{ 134 @Roman cxxxiv }
+{ 135 @Roman cxxxv }
+{ 136 @Roman cxxxvi }
+{ 137 @Roman cxxxvii }
+{ 138 @Roman cxxxviii }
+{ 139 @Roman cxxxix }
+{ 140 @Roman cxl }
+{ 141 @Roman cxli }
+{ 142 @Roman cxlii }
+{ 143 @Roman cxliii }
+{ 144 @Roman cxliv }
+{ 145 @Roman cxlv }
+{ 146 @Roman cxlvi }
+{ 147 @Roman cxlvii }
+{ 148 @Roman cxlviii }
+{ 149 @Roman cxlix }
+{ 150 @Roman cl }
+{ 151 @Roman cli }
+{ 152 @Roman clii }
+{ 153 @Roman cliii }
+{ 154 @Roman cliv }
+{ 155 @Roman clv }
+{ 156 @Roman clvi }
+{ 157 @Roman clvii }
+{ 158 @Roman clviii }
+{ 159 @Roman clix }
+{ 160 @Roman clx }
+{ 161 @Roman clxi }
+{ 162 @Roman clxii }
+{ 163 @Roman clxiii }
+{ 164 @Roman clxiv }
+{ 165 @Roman clxv }
+{ 166 @Roman clxvi }
+{ 167 @Roman clxvii }
+{ 168 @Roman clxviii }
+{ 169 @Roman clxix }
+{ 170 @Roman clxx }
+{ 171 @Roman clxxi }
+{ 172 @Roman clxxii }
+{ 173 @Roman clxxiii }
+{ 174 @Roman clxxiv }
+{ 175 @Roman clxxv }
+{ 176 @Roman clxxvi }
+{ 177 @Roman clxxvii }
+{ 178 @Roman clxxviii }
+{ 179 @Roman clxxix }
+{ 180 @Roman clxxx }
+{ 181 @Roman clxxxi }
+{ 182 @Roman clxxxii }
+{ 183 @Roman clxxxiii }
+{ 184 @Roman clxxxiv }
+{ 185 @Roman clxxxv }
+{ 186 @Roman clxxxvi }
+{ 187 @Roman clxxxvii }
+{ 188 @Roman clxxxviii }
+{ 189 @Roman clxxxix }
+{ 190 @Roman cxc }
+{ 191 @Roman cxci }
+{ 192 @Roman cxcii }
+{ 193 @Roman cxciii }
+{ 194 @Roman cxciv }
+{ 195 @Roman cxcv }
+{ 196 @Roman cxcvi }
+{ 197 @Roman cxcvii }
+{ 198 @Roman cxcviii }
+{ 199 @Roman cxcix }
+{ 200 @Roman cc }
+
+{ ?? @UCRoman ?? }
+{ 1 @UCRoman I }
+{ 2 @UCRoman II }
+{ 3 @UCRoman III }
+{ 4 @UCRoman IV }
+{ 5 @UCRoman V }
+{ 6 @UCRoman VI }
+{ 7 @UCRoman VII }
+{ 8 @UCRoman VIII }
+{ 9 @UCRoman IX }
+{ 10 @UCRoman X }
+{ 11 @UCRoman XI }
+{ 12 @UCRoman XII }
+{ 13 @UCRoman XIII }
+{ 14 @UCRoman XIV }
+{ 15 @UCRoman XV }
+{ 16 @UCRoman XVI }
+{ 17 @UCRoman XVII }
+{ 18 @UCRoman XVIII }
+{ 19 @UCRoman XIX }
+{ 20 @UCRoman XX }
+{ 21 @UCRoman XXI }
+{ 22 @UCRoman XXII }
+{ 23 @UCRoman XXIII }
+{ 24 @UCRoman XXIV }
+{ 25 @UCRoman XXV }
+{ 26 @UCRoman XXVI }
+{ 27 @UCRoman XXVII }
+{ 28 @UCRoman XXVIII }
+{ 29 @UCRoman XXIX }
+{ 30 @UCRoman XXX }
+{ 31 @UCRoman XXXI }
+{ 32 @UCRoman XXXII }
+{ 33 @UCRoman XXXIII }
+{ 34 @UCRoman XXXIV }
+{ 35 @UCRoman XXXV }
+{ 36 @UCRoman XXXVI }
+{ 37 @UCRoman XXXVII }
+{ 38 @UCRoman XXXVIII }
+{ 39 @UCRoman XXXIX }
+{ 40 @UCRoman XL }
+{ 41 @UCRoman XLI }
+{ 42 @UCRoman XLII }
+{ 43 @UCRoman XLIII }
+{ 44 @UCRoman XLIV }
+{ 45 @UCRoman XLV }
+{ 46 @UCRoman XLVI }
+{ 47 @UCRoman XLVII }
+{ 48 @UCRoman XLVIII }
+{ 49 @UCRoman XLIX }
+{ 50 @UCRoman L }
+{ 51 @UCRoman LI }
+{ 52 @UCRoman LII }
+{ 53 @UCRoman LIII }
+{ 54 @UCRoman LIV }
+{ 55 @UCRoman LV }
+{ 56 @UCRoman LVI }
+{ 57 @UCRoman LVII }
+{ 58 @UCRoman LVIII }
+{ 59 @UCRoman LIX }
+{ 60 @UCRoman LX }
+{ 61 @UCRoman LXI }
+{ 62 @UCRoman LXII }
+{ 63 @UCRoman LXIII }
+{ 64 @UCRoman LXIV }
+{ 65 @UCRoman LXV }
+{ 66 @UCRoman LXVI }
+{ 67 @UCRoman LXVII }
+{ 68 @UCRoman LXVIII }
+{ 69 @UCRoman LXIX }
+{ 70 @UCRoman LXX }
+{ 71 @UCRoman LXXI }
+{ 72 @UCRoman LXXII }
+{ 73 @UCRoman LXXIII }
+{ 74 @UCRoman LXXIV }
+{ 75 @UCRoman LXXV }
+{ 76 @UCRoman LXXVI }
+{ 77 @UCRoman LXXVII }
+{ 78 @UCRoman LXXVIII }
+{ 79 @UCRoman LXXIX }
+{ 80 @UCRoman LXXX }
+{ 81 @UCRoman LXXXI }
+{ 82 @UCRoman LXXXII }
+{ 83 @UCRoman LXXXIII }
+{ 84 @UCRoman LXXXIV }
+{ 85 @UCRoman LXXXV }
+{ 86 @UCRoman LXXXVI }
+{ 87 @UCRoman LXXXVII }
+{ 88 @UCRoman LXXXVIII }
+{ 89 @UCRoman LXXXIX }
+{ 90 @UCRoman XC }
+{ 91 @UCRoman XCI }
+{ 92 @UCRoman XCII }
+{ 93 @UCRoman XCIII }
+{ 94 @UCRoman XCIV }
+{ 95 @UCRoman XCV }
+{ 96 @UCRoman XCVI }
+{ 97 @UCRoman XCVII }
+{ 98 @UCRoman XCVIII }
+{ 99 @UCRoman XCIX }
+{ 100 @UCRoman CC }
+{ 101 @UCRoman CI }
+{ 102 @UCRoman CII }
+{ 103 @UCRoman CIII }
+{ 104 @UCRoman CIV }
+{ 105 @UCRoman CV }
+{ 106 @UCRoman CVI }
+{ 107 @UCRoman CVII }
+{ 108 @UCRoman CVIII }
+{ 109 @UCRoman CIX }
+{ 110 @UCRoman CX }
+{ 111 @UCRoman CXI }
+{ 112 @UCRoman CXII }
+{ 113 @UCRoman CXIII }
+{ 114 @UCRoman CXIV }
+{ 115 @UCRoman CXV }
+{ 116 @UCRoman CXVI }
+{ 117 @UCRoman CXVII }
+{ 118 @UCRoman CXVIII }
+{ 119 @UCRoman CXIX }
+{ 120 @UCRoman CXX }
+{ 121 @UCRoman CXXI }
+{ 122 @UCRoman CXXII }
+{ 123 @UCRoman CXXIII }
+{ 124 @UCRoman CXXIV }
+{ 125 @UCRoman CXXV }
+{ 126 @UCRoman CXXVI }
+{ 127 @UCRoman CXXVII }
+{ 128 @UCRoman CXXVIII }
+{ 129 @UCRoman CXXIX }
+{ 130 @UCRoman CXXX }
+{ 131 @UCRoman CXXXI }
+{ 132 @UCRoman CXXXII }
+{ 133 @UCRoman CXXXIII }
+{ 134 @UCRoman CXXXIV }
+{ 135 @UCRoman CXXXV }
+{ 136 @UCRoman CXXXVI }
+{ 137 @UCRoman CXXXVII }
+{ 138 @UCRoman CXXXVIII }
+{ 139 @UCRoman CXXXIX }
+{ 140 @UCRoman CXL }
+{ 141 @UCRoman CXLI }
+{ 142 @UCRoman CXLII }
+{ 143 @UCRoman CXLIII }
+{ 144 @UCRoman CXLIV }
+{ 145 @UCRoman CXLV }
+{ 146 @UCRoman CXLVI }
+{ 147 @UCRoman CXLVII }
+{ 148 @UCRoman CXLVIII }
+{ 149 @UCRoman CXLIX }
+{ 150 @UCRoman CL }
+{ 151 @UCRoman CLI }
+{ 152 @UCRoman CLII }
+{ 153 @UCRoman CLIII }
+{ 154 @UCRoman CLIV }
+{ 155 @UCRoman CLV }
+{ 156 @UCRoman CLVI }
+{ 157 @UCRoman CLVII }
+{ 158 @UCRoman CLVIII }
+{ 159 @UCRoman CLIX }
+{ 160 @UCRoman CLX }
+{ 161 @UCRoman CLXI }
+{ 162 @UCRoman CLXII }
+{ 163 @UCRoman CLXIII }
+{ 164 @UCRoman CLXIV }
+{ 165 @UCRoman CLXV }
+{ 166 @UCRoman CLXVI }
+{ 167 @UCRoman CLXVII }
+{ 168 @UCRoman CLXVIII }
+{ 169 @UCRoman CLXIX }
+{ 170 @UCRoman CLXX }
+{ 171 @UCRoman CLXXI }
+{ 172 @UCRoman CLXXII }
+{ 173 @UCRoman CLXXIII }
+{ 174 @UCRoman CLXXIV }
+{ 175 @UCRoman CLXXV }
+{ 176 @UCRoman CLXXVI }
+{ 177 @UCRoman CLXXVII }
+{ 178 @UCRoman CLXXVIII }
+{ 179 @UCRoman CLXXIX }
+{ 180 @UCRoman CLXXX }
+{ 181 @UCRoman CLXXXI }
+{ 182 @UCRoman CLXXXII }
+{ 183 @UCRoman CLXXXIII }
+{ 184 @UCRoman CLXXXIV }
+{ 185 @UCRoman CLXXXV }
+{ 186 @UCRoman CLXXXVI }
+{ 187 @UCRoman CLXXXVII }
+{ 188 @UCRoman CLXXXVIII}
+{ 189 @UCRoman CLXXXIX }
+{ 190 @UCRoman CXC }
+{ 191 @UCRoman CXCI }
+{ 192 @UCRoman CXCII }
+{ 193 @UCRoman CXCIII }
+{ 194 @UCRoman CXCIV }
+{ 195 @UCRoman CXCV }
+{ 196 @UCRoman CXCVI }
+{ 197 @UCRoman CXCVII }
+{ 198 @UCRoman CXCVIII }
+{ 199 @UCRoman CXCIX }
+{ 200 @UCRoman CC }
+
+
+{ ?? @Alpha ?? }
+{ 1 @Alpha "a" }
+{ 2 @Alpha "b" }
+{ 3 @Alpha "c" }
+{ 4 @Alpha "d" }
+{ 5 @Alpha "e" }
+{ 6 @Alpha "f" }
+{ 7 @Alpha "g" }
+{ 8 @Alpha "h" }
+{ 9 @Alpha "i" }
+{ 10 @Alpha "j" }
+{ 11 @Alpha "k" }
+{ 12 @Alpha "l" }
+{ 13 @Alpha "m" }
+{ 14 @Alpha "n" }
+{ 15 @Alpha "o" }
+{ 16 @Alpha "p" }
+{ 17 @Alpha "q" }
+{ 18 @Alpha "r" }
+{ 19 @Alpha "s" }
+{ 20 @Alpha "t" }
+{ 21 @Alpha "u" }
+{ 22 @Alpha "v" }
+{ 23 @Alpha "w" }
+{ 24 @Alpha "x" }
+{ 25 @Alpha "y" }
+{ 26 @Alpha "z" }
+
+{ 27 @Alpha @CurrLang @Case {
+ Croatian @Yield { ?? }
+ Czech @Yield { ?? }
+ Danish @Yield { @Char ae }
+ English @Yield { ?? }
+ EnglishUK @Yield { ?? }
+ Esperanto @Yield { @Char ccircumflex }
+ Dutch @Yield { ?? }
+ Finnish @Yield { @Char aring }
+ French @Yield { @Char ae }
+ German @Yield { ?? }
+ Hungarian @Yield { ?? }
+ Italian @Yield { ?? }
+ Norwegian @Yield { @Char ae }
+ Polish @Yield { ?? }
+ Portuguese @Yield { ?? }
+ Russian @Yield { ?? }
+ Slovak @Yield { ?? }
+ Slovenian @Yield { ?? }
+ Spanish @Yield { ?? }
+ Swedish @Yield { @Char aring }
+ UpperSorbian @Yield { ?? }
+} }
+
+{ 28 @Alpha @CurrLang @Case {
+ Croatian @Yield { ?? }
+ Czech @Yield { ?? }
+ Danish @Yield { @Char oslash }
+ Dutch @Yield { ?? }
+ English @Yield { ?? }
+ EnglishUK @Yield { ?? }
+ Esperanto @Yield { @Char gcircumflex }
+ Finnish @Yield { @Char adieresis }
+ French @Yield { ?? }
+ German @Yield { ?? }
+ Hungarian @Yield { ?? }
+ Italian @Yield { ?? }
+ Norwegian @Yield { @Char oslash }
+ Polish @Yield { ?? }
+ Portuguese @Yield { ?? }
+ Russian @Yield { ?? }
+ Slovak @Yield { ?? }
+ Slovenian @Yield { ?? }
+ Spanish @Yield { ?? }
+ Swedish @Yield { @Char adieresis }
+ UpperSorbian @Yield { ?? }
+} }
+
+{ 29 @Alpha @CurrLang @Case {
+ Croatian @Yield { ?? }
+ Czech @Yield { ?? }
+ Danish @Yield { @Char aring }
+ Dutch @Yield { ?? }
+ English @Yield { ?? }
+ EnglishUK @Yield { ?? }
+ Esperanto @Yield { @Char hcircumflex }
+ Finnish @Yield { @Char odieresis }
+ French @Yield { ?? }
+ German @Yield { ?? }
+ Hungarian @Yield { ?? }
+ Italian @Yield { ?? }
+ Norwegian @Yield { @Char aring }
+ Polish @Yield { ?? }
+ Portuguese @Yield { ?? }
+ Russian @Yield { ?? }
+ Slovak @Yield { ?? }
+ Slovenian @Yield { ?? }
+ Spanish @Yield { ?? }
+ Swedish @Yield { @Char odieresis }
+ UpperSorbian @Yield { ?? }
+} }
+
+{ 30 @Alpha @CurrLang @Case {
+ Esperanto @Yield { @Char jcircumflex }
+ else @Yield { ?? }
+} }
+
+{ 31 @Alpha @CurrLang @Case {
+ Esperanto @Yield { @Char ubreve }
+ else @Yield { ?? }
+} }
+
+{ ?? @UCAlpha ?? }
+{ 1 @UCAlpha "A" }
+{ 2 @UCAlpha "B" }
+{ 3 @UCAlpha "C" }
+{ 4 @UCAlpha "D" }
+{ 5 @UCAlpha "E" }
+{ 6 @UCAlpha "F" }
+{ 7 @UCAlpha "G" }
+{ 8 @UCAlpha "H" }
+{ 9 @UCAlpha "I" }
+{ 10 @UCAlpha "J" }
+{ 11 @UCAlpha "K" }
+{ 12 @UCAlpha "L" }
+{ 13 @UCAlpha "M" }
+{ 14 @UCAlpha "N" }
+{ 15 @UCAlpha "O" }
+{ 16 @UCAlpha "P" }
+{ 17 @UCAlpha "Q" }
+{ 18 @UCAlpha "R" }
+{ 19 @UCAlpha "S" }
+{ 20 @UCAlpha "T" }
+{ 21 @UCAlpha "U" }
+{ 22 @UCAlpha "V" }
+{ 23 @UCAlpha "W" }
+{ 24 @UCAlpha "X" }
+{ 25 @UCAlpha "Y" }
+{ 26 @UCAlpha "Z" }
+
+{ 27 @UCAlpha @CurrLang @Case {
+ Croatian @Yield { ?? }
+ Czech @Yield { ?? }
+ Danish @Yield { @Char AE }
+ Dutch @Yield { ?? }
+ English @Yield { ?? }
+ EnglishUK @Yield { ?? }
+ Esperanto @Yield { @Char Ccircumflex }
+ Finnish @Yield { @Char Aring }
+ French @Yield { @Char AE }
+ German @Yield { ?? }
+ Hungarian @Yield { ?? }
+ Italian @Yield { ?? }
+ Norwegian @Yield { @Char AE }
+ Polish @Yield { ?? }
+ Portuguese @Yield { ?? }
+ Russian @Yield { ?? }
+ Slovak @Yield { ?? }
+ Slovenian @Yield { ?? }
+ Spanish @Yield { ?? }
+ Swedish @Yield { @Char Aring }
+ UpperSorbian @Yield { ?? }
+} }
+
+{ 28 @UCAlpha @CurrLang @Case {
+ Croatian @Yield { ?? }
+ Czech @Yield { ?? }
+ Danish @Yield { @Char Oslash }
+ Dutch @Yield { ?? }
+ English @Yield { ?? }
+ EnglishUK @Yield { ?? }
+ Esperanto @Yield { @Char Gcircumflex }
+ Finnish @Yield { @Char Adieresis }
+ French @Yield { ?? }
+ German @Yield { ?? }
+ Hungarian @Yield { ?? }
+ Italian @Yield { ?? }
+ Norwegian @Yield { @Char Oslash }
+ Polish @Yield { ?? }
+ Portuguese @Yield { ?? }
+ Russian @Yield { ?? }
+ Slovak @Yield { ?? }
+ Slovenian @Yield { ?? }
+ Spanish @Yield { ?? }
+ Swedish @Yield { @Char Adieresis }
+ UpperSorbian @Yield { ?? }
+} }
+
+{ 29 @UCAlpha @CurrLang @Case {
+ Croatian @Yield { ?? }
+ Czech @Yield { ?? }
+ Danish @Yield { @Char Aring }
+ Dutch @Yield { ?? }
+ English @Yield { ?? }
+ EnglishUK @Yield { ?? }
+ Esperanto @Yield { @Char Hcircumflex }
+ Finnish @Yield { @Char Odieresis }
+ French @Yield { ?? }
+ German @Yield { ?? }
+ Hungarian @Yield { ?? }
+ Italian @Yield { ?? }
+ Norwegian @Yield { @Char Aring }
+ Polish @Yield { ?? }
+ Portuguese @Yield { ?? }
+ Russian @Yield { ?? }
+ Slovak @Yield { ?? }
+ Slovenian @Yield { ?? }
+ Spanish @Yield { ?? }
+ Swedish @Yield { @Char Odieresis }
+ UpperSorbian @Yield { ?? }
+} }
+
+{ 30 @UCAlpha @CurrLang @Case {
+ Esperanto @Yield { @Char Jcircumflex }
+ else @Yield { ?? }
+} }
+
+{ 31 @UCAlpha @CurrLang @Case {
+ Esperanto @Yield { @Char Ubreve }
+ else @Yield { ?? }
+} }
+
+{ ?? @FnBullets ?? }
+{ 1 @FnBullets @Bullet }
+{ 2 @FnBullets { @Bullet @Bullet } }
+{ 3 @FnBullets { @Bullet @Bullet @Bullet } }
+{ 4 @FnBullets { @Bullet @Bullet @Bullet @Bullet } }
+
+{ ?? @FnSymbols ?? }
+{ 1 @FnSymbols @Star }
+{ 2 @FnSymbols @Dagger }
+{ 3 @FnSymbols @DaggerDbl }
+{ 4 @FnSymbols @SectSym }
+{ 5 @FnSymbols @ParSym }
+{ 6 @FnSymbols "||" }
+{ 7 @FnSymbols { @Star @Star } }
+{ 8 @FnSymbols { @Dagger @Dagger } }
+{ 9 @FnSymbols { @DaggerDbl @DaggerDbl } }
+
+{ 1 @Months @CurrLang @Case {
+ Croatian @Yield { sije{@Char ccaron}anj }
+ Czech @Yield { ledna }
+ Danish @Yield { januar }
+ Dutch @Yield { januari }
+ English @Yield { January }
+ EnglishUK @Yield { January }
+ Esperanto @Yield { januaro }
+ Finnish @Yield { tammikuu }
+ French @Yield { janvier }
+ German @Yield { Januar }
+ Hungarian @Yield { janu{@Char aacute}r }
+ Italian @Yield { gennaio }
+ Norwegian @Yield { januar }
+ Polish @Yield { stycze{@Char nacute} }
+ Portuguese @Yield { janeiro }
+ Russian @Yield { "\321\316\327\301\322\321" }
+ Slovak @Yield { janu{@Char aacute}r }
+ Slovenian @Yield { januar }
+ Spanish @Yield { Enero }
+ Swedish @Yield { januari }
+ UpperSorbian @Yield { wulkeho r{@Char oacute}{@Char zcaron}ka }
+} }
+
+{ 2 @Months @CurrLang @Case {
+ Croatian @Yield { velja{@Char ccaron}a }
+ Czech @Yield { {@Char uacute}nora }
+ Danish @Yield { februar }
+ Dutch @Yield { februari }
+ English @Yield { February }
+ EnglishUK @Yield { February }
+ Esperanto @Yield { februaro }
+ Finnish @Yield { helmikuu }
+ French @Yield { f{@Char eacute}vrier }
+ German @Yield { Februar }
+ Hungarian @Yield { febru{@Char aacute}r }
+ Italian @Yield { febbraio }
+ Norwegian @Yield { februar }
+ Polish @Yield { luty }
+ Portuguese @Yield { fevereiro }
+ Russian @Yield { "\306\305\327\322\301\314\321" }
+ Slovak @Yield { febru{@Char aacute}r }
+ Slovenian @Yield { februar }
+ Spanish @Yield { Febrero }
+ Swedish @Yield { februari }
+ UpperSorbian @Yield { ma{@Char lslash}eho r{@Char oacute}{@Char zcaron}ka }
+} }
+
+{ 3 @Months @CurrLang @Case {
+ Croatian @Yield { o{@Char zcaron}ujak }
+ Czech @Yield { b{@Char rcaron}ezna }
+ Danish @Yield { marts }
+ Dutch @Yield { maart }
+ English @Yield { March }
+ EnglishUK @Yield { March }
+ Esperanto @Yield { marto }
+ Finnish @Yield { maaliskuu }
+ French @Yield { mars }
+ German @Yield { M{@Char adieresis}rz }
+ Hungarian @Yield { m{@Char aacute}rcius }
+ Italian @Yield { marzo }
+ Norwegian @Yield { mars }
+ Polish @Yield { marzec }
+ Portuguese @Yield { mar{@Char ccedilla}o }
+ Russian @Yield { "\315\301\322\324\301" }
+ Slovak @Yield { marec }
+ Slovenian @Yield { marec }
+ Spanish @Yield { Marzo }
+ Swedish @Yield { mars }
+ UpperSorbian @Yield { nal{@Char ecaron}tnika }
+} }
+
+{ 4 @Months @CurrLang @Case {
+ Croatian @Yield { travanj }
+ Czech @Yield { dubna }
+ Danish @Yield { april }
+ Dutch @Yield { april }
+ English @Yield { April }
+ EnglishUK @Yield { April }
+ Esperanto @Yield { aprilo }
+ Finnish @Yield { huhtikuu }
+ French @Yield { avril }
+ German @Yield { April }
+ Hungarian @Yield { {@Char aacute}prilis }
+ Italian @Yield { aprile }
+ Norwegian @Yield { april }
+ Polish @Yield { kwiecie{@Char nacute} }
+ Portuguese @Yield { abril }
+ Russian @Yield { "\301\320\322\305\314\321" }
+ Slovak @Yield { april }
+ Slovenian @Yield { april }
+ Spanish @Yield { Abril }
+ Swedish @Yield { april }
+ UpperSorbian @Yield { jutrownika }
+} }
+
+{ 5 @Months @CurrLang @Case {
+ Croatian @Yield { svibanj }
+ Czech @Yield { kv{@Char ecaron}tna }
+ Danish @Yield { maj }
+ Dutch @Yield { mei }
+ English @Yield { May }
+ EnglishUK @Yield { May }
+ Esperanto @Yield { majo }
+ Finnish @Yield { toukokuu }
+ French @Yield { mai }
+ German @Yield { Mai }
+ Hungarian @Yield { m{@Char aacute}jus }
+ Italian @Yield { maggio }
+ Norwegian @Yield { mai }
+ Polish @Yield { maj }
+ Portuguese @Yield { maio }
+ Russian @Yield { "\315\301\321" }
+ Slovak @Yield { m{@Char aacute}j }
+ Slovenian @Yield { maj }
+ Spanish @Yield { Mayo }
+ Swedish @Yield { maj }
+ UpperSorbian @Yield { ma{@Char lslash}eho r{@Char oacute}{@Char zcaron}ka }
+} }
+
+{ 6 @Months @CurrLang @Case {
+ Croatian @Yield { lipanj }
+ Czech @Yield { {@Char ccaron}ervna }
+ Danish @Yield { juni }
+ Dutch @Yield { juni }
+ English @Yield { June }
+ EnglishUK @Yield { June }
+ Esperanto @Yield { junio }
+ Finnish @Yield { kes{@Char adieresis}kuu }
+ French @Yield { juin }
+ German @Yield { Juni }
+ Hungarian @Yield { j{@Char uacute}nius }
+ Italian @Yield { giugno }
+ Norwegian @Yield { juni }
+ Polish @Yield { czerwiec }
+ Portuguese @Yield { junho }
+ Russian @Yield { "\311\300\316\321" }
+ Slovak @Yield { j{@Char uacute}n }
+ Slovenian @Yield { junij }
+ Spanish @Yield { Junio }
+ Swedish @Yield { juni }
+ UpperSorbian @Yield { sma{@Char zcaron}nika }
+} }
+
+
+{ 7 @Months @CurrLang @Case {
+ Croatian @Yield { srpanj }
+ Czech @Yield { {@Char ccaron}ervence }
+ Danish @Yield { juli }
+ Dutch @Yield { juli }
+ English @Yield { July }
+ EnglishUK @Yield { July }
+ Esperanto @Yield { julio }
+ Finnish @Yield { hein{@Char adieresis}kuu }
+ French @Yield { juillet }
+ German @Yield { Juli }
+ Hungarian @Yield { j{@Char uacute}lius }
+ Italian @Yield { luglio }
+ Norwegian @Yield { juli }
+ Polish @Yield { lipiec }
+ Portuguese @Yield { julho }
+ Russian @Yield { "\311\300\314\321" }
+ Slovak @Yield { j{@Char uacute}l }
+ Slovenian @Yield { julij }
+ Spanish @Yield { Julio }
+ Swedish @Yield { juli }
+ UpperSorbian @Yield { pra{@Char zcaron}nika }
+} }
+
+{ 8 @Months @CurrLang @Case {
+ Croatian @Yield { kolovoz }
+ Czech @Yield { srpna }
+ Danish @Yield { august }
+ Dutch @Yield { augustus }
+ English @Yield { August }
+ EnglishUK @Yield { August }
+ Esperanto @Yield { a{@Char ubreve}gusto }
+ Finnish @Yield { elokuu }
+ French @Yield { ao{@Char ucircumflex}t }
+ German @Yield { August }
+ Hungarian @Yield { augusztus }
+ Italian @Yield { agosto }
+ Norwegian @Yield { august }
+ Polish @Yield { sierpie{@Char nacute} }
+ Portuguese @Yield { agosto }
+ Russian @Yield { "\301\327\307\325\323\324\301" }
+ Slovak @Yield { august }
+ Slovenian @Yield { avgust }
+ Spanish @Yield { Agosto }
+ Swedish @Yield { augusti }
+ UpperSorbian @Yield { {@Char zcaron}njenca }
+} }
+
+{ 9 @Months @CurrLang @Case {
+ Croatian @Yield { rujan }
+ Czech @Yield { z{@Char aacute}{@Char rcaron}{@Char iacute} }
+ Danish @Yield { september }
+ Dutch @Yield { september }
+ English @Yield { September }
+ EnglishUK @Yield { September }
+ Esperanto @Yield { septembro }
+ Finnish @Yield { syyskuu }
+ French @Yield { septembre }
+ German @Yield { September }
+ Hungarian @Yield { szeptember }
+ Italian @Yield { settembre }
+ Norwegian @Yield { september }
+ Polish @Yield { wrzesie{@Char nacute} }
+ Portuguese @Yield { setembro }
+ Russian @Yield { "\323\305\316\324\321\302\322\321" }
+ Slovak @Yield { september }
+ Slovenian @Yield { september }
+ Spanish @Yield { Septiembre }
+ Swedish @Yield { september }
+ UpperSorbian @Yield { po{@Char zcaron}njenca }
+} }
+
+{ 10 @Months @CurrLang @Case {
+ Croatian @Yield { listopad }
+ Czech @Yield { {@Char rcaron}{@Char iacute}jna }
+ Danish @Yield { oktober }
+ Dutch @Yield { oktober }
+ English @Yield { October }
+ EnglishUK @Yield { October }
+ Esperanto @Yield { oktobro }
+ Finnish @Yield { lokakuu }
+ French @Yield { octobre }
+ German @Yield { Oktober }
+ Hungarian @Yield { okt{@Char oacute}ber }
+ Italian @Yield { ottobre }
+ Norwegian @Yield { oktober }
+ Polish @Yield { pa{@Char zacute}dziernik }
+ Portuguese @Yield { outubro }
+ Russian @Yield { "\317\313\324\321\302\322\321" }
+ Slovak @Yield { okt{@Char oacute}ber }
+ Slovenian @Yield { oktober }
+ Spanish @Yield { Octubre }
+ Swedish @Yield { oktober }
+ UpperSorbian @Yield { winowca }
+} }
+
+{ 11 @Months @CurrLang @Case {
+ Croatian @Yield { studeni }
+ Czech @Yield { listopadu }
+ Danish @Yield { november }
+ Dutch @Yield { november }
+ English @Yield { November }
+ EnglishUK @Yield { November }
+ Esperanto @Yield { novembro }
+ Finnish @Yield { marraskuu }
+ French @Yield { novembre }
+ German @Yield { November }
+ Hungarian @Yield { november }
+ Italian @Yield { novembre }
+ Norwegian @Yield { november }
+ Polish @Yield { listopad }
+ Portuguese @Yield { novembro }
+ Russian @Yield { "\316\317\321\302\322\321" }
+ Slovak @Yield { november }
+ Slovenian @Yield { november }
+ Spanish @Yield { Noviembre }
+ Swedish @Yield { november }
+ UpperSorbian @Yield { nazymnika }
+} }
+
+{ 12 @Months @CurrLang @Case {
+ Croatian @Yield { prosinac }
+ Czech @Yield { prosince }
+ Danish @Yield { december }
+ Dutch @Yield { december }
+ English @Yield { December }
+ EnglishUK @Yield { December }
+ Esperanto @Yield { decembro }
+ Finnish @Yield { joulukuu }
+ French @Yield { d{@Char eacute}cembre }
+ German @Yield { Dezember }
+ Hungarian @Yield { december }
+ Italian @Yield { dicembre }
+ Norwegian @Yield { desember }
+ Polish @Yield { grudzie{@Char nacute} }
+ Portuguese @Yield { dezembro }
+ Russian @Yield { "\304\305\313\301\302\322\321" }
+ Slovak @Yield { december }
+ Slovenian @Yield { december }
+ Spanish @Yield { Diciembre }
+ Swedish @Yield { december }
+ UpperSorbian @Yield { hodownika }
+} }
+
+
+{ 1 @ShortMonths @CurrLang @Case {
+ Croatian @Yield { sij }
+ Czech @Yield { ledna }
+ Danish @Yield { jan }
+ Dutch @Yield { jan }
+ English @Yield { Jan }
+ EnglishUK @Yield { Jan }
+ Esperanto @Yield { jan }
+ Finnish @Yield { tammikuu }
+ French @Yield { jan }
+ German @Yield { Jan }
+ Hungarian @Yield { jan }
+ Italian @Yield { gen }
+ Norwegian @Yield { jan }
+ Polish @Yield { sty }
+ Portuguese @Yield { jan }
+ Russian @Yield { "\321\316\327" }
+ Slovak @Yield { jan }
+ Slovenian @Yield { jan }
+ Spanish @Yield { Ene }
+ Swedish @Yield { jan }
+ UpperSorbian @Yield { jan }
+} }
+
+{ 2 @ShortMonths @CurrLang @Case {
+ Croatian @Yield { velj }
+ Czech @Yield { {@Char uacute}nora }
+ Danish @Yield { feb }
+ Dutch @Yield { feb }
+ English @Yield { Feb }
+ EnglishUK @Yield { Feb }
+ Esperanto @Yield { feb }
+ Finnish @Yield { helmikuu }
+ French @Yield { f{@Char eacute}v }
+ German @Yield { Feb }
+ Hungarian @Yield { feb }
+ Italian @Yield { feb }
+ Norwegian @Yield { feb }
+ Polish @Yield { luty }
+ Portuguese @Yield { fev }
+ Russian @Yield { "\306\305\327" }
+ Slovak @Yield { feb }
+ Slovenian @Yield { feb }
+ Spanish @Yield { Feb }
+ Swedish @Yield { feb }
+ UpperSorbian @Yield { feb }
+} }
+
+{ 3 @ShortMonths @CurrLang @Case {
+ Croatian @Yield { o{@Char zcaron}u }
+ Czech @Yield { b{@Char rcaron}ezna }
+ Danish @Yield { mar }
+ Dutch @Yield { mrt }
+ English @Yield { Mar }
+ EnglishUK @Yield { Mar }
+ Esperanto @Yield { mar }
+ Finnish @Yield { maaliskuu }
+ French @Yield { mar }
+ German @Yield { M{@Char adieresis}r }
+ Hungarian @Yield { m{@Char aacute}rc }
+ Italian @Yield { mar }
+ Norwegian @Yield { mar }
+ Polish @Yield { marz }
+ Portuguese @Yield { mar }
+ Russian @Yield { "\315\301\322" }
+ Slovak @Yield { mar }
+ Slovenian @Yield { mar }
+ Spanish @Yield { Mar }
+ Swedish @Yield { mar }
+ UpperSorbian @Yield { m{@Char ecaron}r }
+} }
+
+{ 4 @ShortMonths @CurrLang @Case {
+ Croatian @Yield { tra }
+ Czech @Yield { dubna }
+ Danish @Yield { apr }
+ Dutch @Yield { apr }
+ English @Yield { Apr }
+ EnglishUK @Yield { Apr }
+ Esperanto @Yield { apr }
+ Finnish @Yield { huhtikuu }
+ French @Yield { avr }
+ German @Yield { Apr }
+ Hungarian @Yield { {@Char aacute}pr }
+ Italian @Yield { apr }
+ Norwegian @Yield { apr }
+ Polish @Yield { kwie }
+ Portuguese @Yield { abr }
+ Russian @Yield { "\301\320\322" }
+ Slovak @Yield { apr }
+ Slovenian @Yield { apr }
+ Spanish @Yield { Abr }
+ Swedish @Yield { apr }
+ UpperSorbian @Yield { apr }
+} }
+
+{ 5 @ShortMonths @CurrLang @Case {
+ Croatian @Yield { svi }
+ Czech @Yield { kv{@Char ecaron}tna }
+ Danish @Yield { maj }
+ Dutch @Yield { mei }
+ English @Yield { May }
+ EnglishUK @Yield { May }
+ Esperanto @Yield { maj }
+ Finnish @Yield { toukokuu }
+ French @Yield { mai }
+ German @Yield { Mai }
+ Hungarian @Yield { m{@Char aacute}j }
+ Italian @Yield { mag }
+ Norwegian @Yield { mai }
+ Polish @Yield { maj }
+ Portuguese @Yield { mai }
+ Russian @Yield { "\315\301\321" }
+ Slovak @Yield { m{@Char aacute}j }
+ Slovenian @Yield { maj }
+ Spanish @Yield { May }
+ Swedish @Yield { maj }
+ UpperSorbian @Yield { meje }
+} }
+
+{ 6 @ShortMonths @CurrLang @Case {
+ Croatian @Yield { lip }
+ Czech @Yield { {@Char ccaron}ervna }
+ Danish @Yield { jun }
+ Dutch @Yield { jun }
+ English @Yield { Jun }
+ EnglishUK @Yield { Jun }
+ Esperanto @Yield { jun }
+ Finnish @Yield { kes{@Char adieresis}kuu }
+ French @Yield { juin }
+ German @Yield { Jun }
+ Hungarian @Yield { j{@Char uacute}n }
+ Italian @Yield { giu }
+ Norwegian @Yield { jun }
+ Polish @Yield { czer }
+ Portuguese @Yield { jun }
+ Russian @Yield { "\311\300\316\321" }
+ Slovak @Yield { j{@Char uacute}n }
+ Slovenian @Yield { jun }
+ Spanish @Yield { Jun }
+ Swedish @Yield { jun }
+ UpperSorbian @Yield { jun }
+} }
+
+{ 7 @ShortMonths @CurrLang @Case {
+ Croatian @Yield { srp }
+ Czech @Yield { {@Char ccaron}ervence }
+ Danish @Yield { jul }
+ Dutch @Yield { jul }
+ English @Yield { Jul }
+ EnglishUK @Yield { Jul }
+ Esperanto @Yield { jul }
+ Finnish @Yield { hein{@Char adieresis}kuu }
+ French @Yield { juil }
+ German @Yield { Jul }
+ Hungarian @Yield { j{@Char uacute}l }
+ Italian @Yield { lug }
+ Norwegian @Yield { jul }
+ Polish @Yield { lip }
+ Portuguese @Yield { jul }
+ Russian @Yield { "\311\300\314\321" }
+ Slovak @Yield { j{@Char uacute}l }
+ Slovenian @Yield { jul }
+ Spanish @Yield { Jul }
+ Swedish @Yield { jul }
+ UpperSorbian @Yield { jul }
+} }
+
+{ 8 @ShortMonths @CurrLang @Case {
+ Croatian @Yield { kol }
+ Czech @Yield { srpna }
+ Danish @Yield { aug }
+ Dutch @Yield { aug }
+ English @Yield { Aug }
+ EnglishUK @Yield { Aug }
+ Esperanto @Yield { a{@Char ubreve}g }
+ Finnish @Yield { elokuu }
+ French @Yield { ao{@Char ucircumflex} }
+ German @Yield { Aug }
+ Hungarian @Yield { aug }
+ Italian @Yield { ago }
+ Norwegian @Yield { aug }
+ Polish @Yield { sier }
+ Portuguese @Yield { ago }
+ Russian @Yield { "\301\327\307" }
+ Slovak @Yield { aug }
+ Slovenian @Yield { avg }
+ Spanish @Yield { Ago }
+ Swedish @Yield { aug }
+ UpperSorbian @Yield { awg }
+} }
+
+{ 9 @ShortMonths @CurrLang @Case {
+ Croatian @Yield { ruj }
+ Czech @Yield { z{@Char aacute}{@Char rcaron}{@Char iacute} }
+ Danish @Yield { sep }
+ Dutch @Yield { sep }
+ English @Yield { Sep }
+ EnglishUK @Yield { Sep }
+ Esperanto @Yield { sep }
+ Finnish @Yield { syyskuu }
+ French @Yield { sep }
+ German @Yield { Sep }
+ Hungarian @Yield { szept }
+ Italian @Yield { set }
+ Norwegian @Yield { sep }
+ Polish @Yield { wrze }
+ Portuguese @Yield { set }
+ Russian @Yield { "\323\305\316" }
+ Slovak @Yield { sep }
+ Slovenian @Yield { sep }
+ Spanish @Yield { Sep }
+ Swedish @Yield { sep }
+ UpperSorbian @Yield { sep }
+} }
+
+{ 10 @ShortMonths @CurrLang @Case {
+ Croatian @Yield { lis }
+ Czech @Yield { {@Char rcaron}{@Char iacute}jna }
+ Danish @Yield { okt }
+ Dutch @Yield { okt }
+ English @Yield { Oct }
+ EnglishUK @Yield { Oct }
+ Esperanto @Yield { okt }
+ Finnish @Yield { lokakuu }
+ French @Yield { oct }
+ German @Yield { Okt }
+ Hungarian @Yield { okt }
+ Italian @Yield { ott }
+ Norwegian @Yield { okt }
+ Polish @Yield { pa{@Char zacute} }
+ Portuguese @Yield { out }
+ Russian @Yield { "\317\313\324" }
+ Slovak @Yield { okt }
+ Slovenian @Yield { okt }
+ Spanish @Yield { Oct }
+ Swedish @Yield { okt }
+ UpperSorbian @Yield { okt }
+} }
+
+{ 11 @ShortMonths @CurrLang @Case {
+ Croatian @Yield { stu }
+ Czech @Yield { listopadu }
+ Danish @Yield { nov }
+ Dutch @Yield { nov }
+ English @Yield { Nov }
+ EnglishUK @Yield { Nov }
+ Esperanto @Yield { nov }
+ Finnish @Yield { marraskuu }
+ French @Yield { nov }
+ German @Yield { Nov }
+ Hungarian @Yield { nov }
+ Italian @Yield { nov }
+ Norwegian @Yield { nov }
+ Polish @Yield { list }
+ Portuguese @Yield { nov }
+ Russian @Yield { "\316\317\321" }
+ Slovak @Yield { nov }
+ Slovenian @Yield { nov }
+ Spanish @Yield { Nov }
+ Swedish @Yield { nov }
+ UpperSorbian @Yield { now }
+} }
+
+{ 12 @ShortMonths @CurrLang @Case {
+ Croatian @Yield { pro }
+ Czech @Yield { prosince }
+ Danish @Yield { dec }
+ Dutch @Yield { dec }
+ English @Yield { Dec }
+ EnglishUK @Yield { Dec }
+ Esperanto @Yield { dec }
+ Finnish @Yield { joulukuu }
+ French @Yield { d{@Char eacute}c }
+ German @Yield { Dez }
+ Hungarian @Yield { dec }
+ Italian @Yield { dic }
+ Norwegian @Yield { des }
+ Polish @Yield { gru }
+ Portuguese @Yield { dez }
+ Russian @Yield { "\304\305\313" }
+ Slovak @Yield { dec }
+ Slovenian @Yield { dec }
+ Spanish @Yield { Dic }
+ Swedish @Yield { dec }
+ UpperSorbian @Yield { dec }
+} }
+
+
+{ 1 @WeekDays @CurrLang @Case {
+ Croatian @Yield { nedjelja }
+ Czech @Yield { ned{@Char ecaron}le }
+ Danish @Yield { s{@Char oslash}ndag }
+ Dutch @Yield { zondag }
+ English @Yield { Sunday }
+ EnglishUK @Yield { Sunday }
+ Esperanto @Yield { diman{@Char ccircumflex}o }
+ Finnish @Yield { sunnuntai }
+ French @Yield { dimanche }
+ German @Yield { Sonntag }
+ Hungarian @Yield { h{@Char eacute}tf{@Char odblacute} }
+ Italian @Yield { domenica }
+ Norwegian @Yield { s{@Char oslash}ndag }
+ Polish @Yield { niedziela }
+ Portuguese @Yield { Domingo }
+ Russian @Yield { "\327\317\323\313\322\305\323\305\316\330\305" }
+ Slovak @Yield { nede{@Char lcaron}a }
+ Slovenian @Yield { nedelja }
+ Spanish @Yield { Domingo }
+ Swedish @Yield { s{@Char odieresis}ndag }
+ UpperSorbian @Yield { njed{@Char zacute}ela }
+} }
+
+{ 2 @WeekDays @CurrLang @Case {
+ Croatian @Yield { ponedjeljak }
+ Czech @Yield { pond{@Char ecaron}l{@Char iacute} }
+ Danish @Yield { mandag }
+ Dutch @Yield { maandag }
+ English @Yield { Monday }
+ EnglishUK @Yield { Monday }
+ Esperanto @Yield { lundo }
+ Finnish @Yield { maanantai }
+ French @Yield { lundi }
+ German @Yield { Montag }
+ Hungarian @Yield { kedd }
+ Italian @Yield { luned{@Char igrave} }
+ Norwegian @Yield { mandag }
+ Polish @Yield { poniedzia{@Char lslash}ek }
+ Portuguese @Yield { Segunda }
+ Russian @Yield { "\320\317\316\305\304\305\314\330\316\311\313" }
+ Slovak @Yield { pondelok }
+ Slovenian @Yield { ponedeljek }
+ Spanish @Yield { Lunes }
+ Swedish @Yield { m{@Char aring}ndag }
+ UpperSorbian @Yield { p{@Char oacute}nd{@Char zacute}ela }
+} }
+
+{ 3 @WeekDays @CurrLang @Case {
+ Croatian @Yield { utorak }
+ Czech @Yield { {@Char uacute}ter{@Char yacute} }
+ Danish @Yield { tirsdag }
+ Dutch @Yield { dinsdag }
+ English @Yield { Tuesday }
+ EnglishUK @Yield { Tuesday }
+ Esperanto @Yield { mardo }
+ Finnish @Yield { tiistai }
+ French @Yield { mardi }
+ German @Yield { Dienstag }
+ Hungarian @Yield { szerda }
+ Italian @Yield { marted{@Char igrave} }
+ Norwegian @Yield { tirsdag }
+ Polish @Yield { wtorek }
+ Portuguese @Yield { Ter{@Char ccedilla}a }
+ Russian @Yield { "\327\324\317\322\316\311\313" }
+ Slovak @Yield { utorok }
+ Slovenian @Yield { torek }
+ Spanish @Yield { Martes }
+ Swedish @Yield { tisdag }
+ UpperSorbian @Yield { wutora }
+} }
+
+{ 4 @WeekDays @CurrLang @Case {
+ Croatian @Yield { srijeda }
+ Czech @Yield { st{@Char rcaron}eda }
+ Danish @Yield { onsdag }
+ Dutch @Yield { woensdag }
+ English @Yield { Wednesday }
+ EnglishUK @Yield { Wednesday }
+ Esperanto @Yield { merkredo }
+ Finnish @Yield { keskiviikko }
+ French @Yield { mercredi }
+ German @Yield { Mittwoch }
+ Hungarian @Yield { cs{@Char udieresis}t{@Char odieresis}rt{@Char odieresis} }
+ Italian @Yield { mercoled{@Char igrave} }
+ Norwegian @Yield { onsdag }
+ Polish @Yield { {@Char sacute}roda }
+ Portuguese @Yield { Quarta }
+ Russian @Yield { "\323\322\305\304\301" }
+ Slovak @Yield { streda }
+ Slovenian @Yield { sreda }
+ Spanish @Yield { Mi{@Char eacute}rcoles }
+ Swedish @Yield { onsdag }
+ UpperSorbian @Yield { srjeda }
+} }
+
+{ 5 @WeekDays @CurrLang @Case {
+ Croatian @Yield { {@Char ccaron}etvrtak }
+ Czech @Yield { {@Char ccaron}tvrtek }
+ Danish @Yield { torsdag }
+ Dutch @Yield { donderdag }
+ English @Yield { Thursday }
+ EnglishUK @Yield { Thursday }
+ Esperanto @Yield { {@Char jcircumflex}a{@Char ubreve}do }
+ Finnish @Yield { torstai }
+ French @Yield { jeudi }
+ German @Yield { Donnerstag }
+ Hungarian @Yield { p{@Char eacute}ntek }
+ Italian @Yield { gioved{@Char igrave} }
+ Norwegian @Yield { torsdag }
+ Polish @Yield { czwartek }
+ Portuguese @Yield { Quinta }
+ Russian @Yield { "\336\305\324\327\305\322\307" }
+ Slovak @Yield { {@Char scaron}tvrtok }
+ Slovenian @Yield { {@Char ccaron}etrtek }
+ Spanish @Yield { Jueves }
+ Swedish @Yield { torsdag }
+ UpperSorbian @Yield { {@Char scaron}tw{@Char oacute}rtk }
+} }
+
+{ 6 @WeekDays @CurrLang @Case {
+ Croatian @Yield { petak }
+ Czech @Yield { p{@Char aacute}tek }
+ Danish @Yield { fredag }
+ Dutch @Yield { vrijdag }
+ English @Yield { Friday }
+ EnglishUK @Yield { Friday }
+ Esperanto @Yield { vendredo }
+ Finnish @Yield { perjantai }
+ French @Yield { vendredi }
+ German @Yield { Freitag }
+ Hungarian @Yield { szombat }
+ Italian @Yield { venerd{@Char igrave} }
+ Norwegian @Yield { fredag }
+ Polish @Yield { pi{@Char aogonek}tek }
+ Portuguese @Yield { Sexta }
+ Russian @Yield { "\320\321\324\316\311\303\301" }
+ Slovak @Yield { piatok }
+ Slovenian @Yield { petek }
+ Spanish @Yield { Viernes }
+ Swedish @Yield { fredag }
+ UpperSorbian @Yield { pjatk }
+} }
+
+{ 7 @WeekDays @CurrLang @Case {
+ Croatian @Yield { subota }
+ Czech @Yield { sobota }
+ Danish @Yield { l{@Char oslash}rdag }
+ Dutch @Yield { zaterdag }
+ English @Yield { Saturday }
+ EnglishUK @Yield { Saturday }
+ Esperanto @Yield { sabato }
+ Finnish @Yield { lauantai }
+ French @Yield { samedi }
+ German @Yield { Samstag }
+ Hungarian @Yield { vas{@Char aacute}rnap }
+ Italian @Yield { sabato }
+ Norwegian @Yield { l{@Char oslash}rdag }
+ Polish @Yield { sobota }
+ Portuguese @Yield { S{@Char aacute}bado }
+ Russian @Yield { "\323\325\302\302\317\324\301" }
+ Slovak @Yield { sobota }
+ Slovenian @Yield { sobota }
+ Spanish @Yield { S{@Char aacute}bado }
+ Swedish @Yield { l{@Char odieresis}rdag }
+ UpperSorbian @Yield { sobota }
+} }
+
+
+{ 1 @ShortWeekDays @CurrLang @Case {
+ Croatian @Yield { ned }
+ Czech @Yield { ne }
+ Danish @Yield { s{@Char oslash}n }
+ Dutch @Yield { zo }
+ English @Yield { Sun }
+ EnglishUK @Yield { Sun }
+ Esperanto @Yield { dim }
+ Finnish @Yield { su }
+ French @Yield { dim }
+ German @Yield { So }
+ Hungarian @Yield { H }
+ Italian @Yield { dom }
+ Norwegian @Yield { s{@Char oslash}n }
+ Polish @Yield { niedz }
+ Portuguese @Yield { Dom }
+ Russian @Yield { "\327\323" }
+ Slovak @Yield { ne }
+ Slovenian @Yield { ned }
+ Spanish @Yield { Dom }
+ Swedish @Yield { s{@Char odieresis} }
+ UpperSorbian @Yield { nje }
+} }
+
+{ 2 @ShortWeekDays @CurrLang @Case {
+ Croatian @Yield { pon }
+ Czech @Yield { po }
+ Danish @Yield { man }
+ Dutch @Yield { ma }
+ English @Yield { Mon }
+ EnglishUK @Yield { Mon }
+ Esperanto @Yield { lun }
+ Finnish @Yield { ma }
+ French @Yield { lun }
+ German @Yield { Mo }
+ Hungarian @Yield { K }
+ Italian @Yield { lun }
+ Norwegian @Yield { man }
+ Polish @Yield { pon }
+ Portuguese @Yield { Seg }
+ Russian @Yield { "\320\316" }
+ Slovak @Yield { po }
+ Slovenian @Yield { pon }
+ Spanish @Yield { Lun }
+ Swedish @Yield { m{@Char aring} }
+ UpperSorbian @Yield { p{@Char oacute} }
+} }
+
+{ 3 @ShortWeekDays @CurrLang @Case {
+ Croatian @Yield { uto }
+ Czech @Yield { {@Char uacute}t }
+ Danish @Yield { tir }
+ Dutch @Yield { di }
+ English @Yield { Tue }
+ EnglishUK @Yield { Tue }
+ Esperanto @Yield { mar }
+ Finnish @Yield { ti }
+ French @Yield { mar }
+ German @Yield { Di }
+ Hungarian @Yield { Sze }
+ Italian @Yield { mar }
+ Norwegian @Yield { tir }
+ Polish @Yield { wto }
+ Portuguese @Yield { Ter }
+ Russian @Yield { "\327\324" }
+ Slovak @Yield { ut }
+ Slovenian @Yield { tor }
+ Spanish @Yield { Mar }
+ Swedish @Yield { ti }
+ UpperSorbian @Yield { wu }
+} }
+
+{ 4 @ShortWeekDays @CurrLang @Case {
+ Croatian @Yield { sri }
+ Czech @Yield { st }
+ Danish @Yield { ons }
+ Dutch @Yield { wo }
+ English @Yield { Wed }
+ EnglishUK @Yield { Wed }
+ Esperanto @Yield { mer }
+ Finnish @Yield { ke }
+ French @Yield { mer }
+ German @Yield { Mi }
+ Hungarian @Yield { Cs }
+ Italian @Yield { mer }
+ Norwegian @Yield { ons }
+ Polish @Yield { {@Char sacute}ro }
+ Portuguese @Yield { Qua }
+ Russian @Yield { "\323\322" }
+ Slovak @Yield { st }
+ Slovenian @Yield { sre }
+ Spanish @Yield { Mie }
+ Swedish @Yield { on }
+ UpperSorbian @Yield { srj }
+} }
+
+{ 5 @ShortWeekDays @CurrLang @Case {
+ Croatian @Yield { {@Char ccaron}et }
+ Czech @Yield { {@Char ccaron}t }
+ Danish @Yield { tor }
+ Dutch @Yield { do }
+ English @Yield { Thu }
+ EnglishUK @Yield { Thu }
+ Esperanto @Yield { {@Char jcircumflex}a{@Char ubreve} }
+ Finnish @Yield { to }
+ French @Yield { jeu }
+ German @Yield { Do }
+ Hungarian @Yield { P }
+ Italian @Yield { gio }
+ Norwegian @Yield { tor }
+ Polish @Yield { czw }
+ Portuguese @Yield { Qui }
+ Russian @Yield { "\336\324" }
+ Slovak @Yield { {@Char scaron}t }
+ Slovenian @Yield { cet }
+ Spanish @Yield { Jue }
+ Swedish @Yield { to }
+ UpperSorbian @Yield { {@Char scaron}tw }
+} }
+
+{ 6 @ShortWeekDays @CurrLang @Case {
+ Croatian @Yield { pet }
+ Czech @Yield { p{@Char aacute} }
+ Danish @Yield { fre }
+ Dutch @Yield { vr }
+ English @Yield { Fri }
+ EnglishUK @Yield { Fri }
+ Esperanto @Yield { ven }
+ Finnish @Yield { pe }
+ French @Yield { ven }
+ German @Yield { Fr }
+ Hungarian @Yield { Szo }
+ Italian @Yield { ven }
+ Norwegian @Yield { fre }
+ Polish @Yield { pi{@Char aogonek}t }
+ Portuguese @Yield { Sex }
+ Russian @Yield { "\320\324" }
+ Slovak @Yield { pi }
+ Slovenian @Yield { pet }
+ Spanish @Yield { Vie }
+ Swedish @Yield { fr }
+ UpperSorbian @Yield { pj }
+} }
+
+{ 7 @ShortWeekDays @CurrLang @Case {
+ Croatian @Yield { sub }
+ Czech @Yield { so }
+ Danish @Yield { l{@Char oslash}r }
+ Dutch @Yield { za }
+ English @Yield { Sat }
+ EnglishUK @Yield { Sat }
+ Esperanto @Yield { sab }
+ Finnish @Yield { la }
+ French @Yield { sam }
+ German @Yield { Sa }
+ Hungarian @Yield { V }
+ Italian @Yield { sab }
+ Norwegian @Yield { l{@Char oslash}r }
+ Polish @Yield { sob }
+ Portuguese @Yield { S{@Char aacute}b }
+ Russian @Yield { "\323\302" }
+ Slovak @Yield { so }
+ Slovenian @Yield { sob }
+ Spanish @Yield { Sab }
+ Swedish @Yield { l{@Char odieresis} }
+ UpperSorbian @Yield { so }
+} }
+
+
+{ 00 @TwelveHours 12 }
+{ 01 @TwelveHours 1 }
+{ 02 @TwelveHours 2 }
+{ 03 @TwelveHours 3 }
+{ 04 @TwelveHours 4 }
+{ 05 @TwelveHours 5 }
+{ 06 @TwelveHours 6 }
+{ 07 @TwelveHours 7 }
+{ 08 @TwelveHours 8 }
+{ 09 @TwelveHours 9 }
+{ 10 @TwelveHours 10 }
+{ 11 @TwelveHours 11 }
+{ 12 @TwelveHours 12 }
+{ 13 @TwelveHours 1 }
+{ 14 @TwelveHours 2 }
+{ 15 @TwelveHours 3 }
+{ 16 @TwelveHours 4 }
+{ 17 @TwelveHours 5 }
+{ 18 @TwelveHours 6 }
+{ 19 @TwelveHours 7 }
+{ 20 @TwelveHours 8 }
+{ 21 @TwelveHours 9 }
+{ 22 @TwelveHours 10 }
+{ 23 @TwelveHours 11 }
+
+
+{ 00 @ShortHours 0 }
+{ 01 @ShortHours 1 }
+{ 02 @ShortHours 2 }
+{ 03 @ShortHours 3 }
+{ 04 @ShortHours 4 }
+{ 05 @ShortHours 5 }
+{ 06 @ShortHours 6 }
+{ 07 @ShortHours 7 }
+{ 08 @ShortHours 8 }
+{ 09 @ShortHours 9 }
+{ 10 @ShortHours 10 }
+{ 11 @ShortHours 11 }
+{ 12 @ShortHours 12 }
+{ 13 @ShortHours 13 }
+{ 14 @ShortHours 14 }
+{ 15 @ShortHours 15 }
+{ 16 @ShortHours 16 }
+{ 17 @ShortHours 17 }
+{ 18 @ShortHours 18 }
+{ 19 @ShortHours 19 }
+{ 20 @ShortHours 20 }
+{ 21 @ShortHours 21 }
+{ 22 @ShortHours 22 }
+{ 23 @ShortHours 23 }
+
+
+{ 00 @MeriDiems @Word&&am }
+{ 01 @MeriDiems @Word&&am }
+{ 02 @MeriDiems @Word&&am }
+{ 03 @MeriDiems @Word&&am }
+{ 04 @MeriDiems @Word&&am }
+{ 05 @MeriDiems @Word&&am }
+{ 06 @MeriDiems @Word&&am }
+{ 07 @MeriDiems @Word&&am }
+{ 08 @MeriDiems @Word&&am }
+{ 09 @MeriDiems @Word&&am }
+{ 10 @MeriDiems @Word&&am }
+{ 11 @MeriDiems @Word&&am }
+{ 12 @MeriDiems @Word&&pm }
+{ 13 @MeriDiems @Word&&pm }
+{ 14 @MeriDiems @Word&&pm }
+{ 15 @MeriDiems @Word&&pm }
+{ 16 @MeriDiems @Word&&pm }
+{ 17 @MeriDiems @Word&&pm }
+{ 18 @MeriDiems @Word&&pm }
+{ 19 @MeriDiems @Word&&pm }
+{ 20 @MeriDiems @Word&&pm }
+{ 21 @MeriDiems @Word&&pm }
+{ 22 @MeriDiems @Word&&pm }
+{ 23 @MeriDiems @Word&&pm }
+
+
+{ 00 @ShortMeriDiems @Word&&shortam }
+{ 01 @ShortMeriDiems @Word&&shortam }
+{ 02 @ShortMeriDiems @Word&&shortam }
+{ 03 @ShortMeriDiems @Word&&shortam }
+{ 04 @ShortMeriDiems @Word&&shortam }
+{ 05 @ShortMeriDiems @Word&&shortam }
+{ 06 @ShortMeriDiems @Word&&shortam }
+{ 07 @ShortMeriDiems @Word&&shortam }
+{ 08 @ShortMeriDiems @Word&&shortam }
+{ 09 @ShortMeriDiems @Word&&shortam }
+{ 10 @ShortMeriDiems @Word&&shortam }
+{ 11 @ShortMeriDiems @Word&&shortam }
+{ 12 @ShortMeriDiems @Word&&shortpm }
+{ 13 @ShortMeriDiems @Word&&shortpm }
+{ 14 @ShortMeriDiems @Word&&shortpm }
+{ 15 @ShortMeriDiems @Word&&shortpm }
+{ 16 @ShortMeriDiems @Word&&shortpm }
+{ 17 @ShortMeriDiems @Word&&shortpm }
+{ 18 @ShortMeriDiems @Word&&shortpm }
+{ 19 @ShortMeriDiems @Word&&shortpm }
+{ 20 @ShortMeriDiems @Word&&shortpm }
+{ 21 @ShortMeriDiems @Word&&shortpm }
+{ 22 @ShortMeriDiems @Word&&shortpm }
+{ 23 @ShortMeriDiems @Word&&shortpm }
+
+
+{ date @DateTimeFormat @Value { @CurrLang @Case {
+ Croatian @Yield { @DayNum. @Month @Year }
+ Czech @Yield { @DayNum. @Month @Year }
+ Danish @Yield { @DayNum. @Month, @Year }
+ Dutch @Yield { @DayNum @Month @Year }
+ English @Yield { @DayNum @Month, @Year }
+ EnglishUK @Yield { @DayNum @Month, @Year }
+ Esperanto @Yield { @DayNum"a" "de" @Month "de" @Year }
+ Finnish @Yield { @DayNum. @Month"ta" @Year }
+ French @Yield { @DayNum @Month @Year }
+ German @Yield { @DayNum. @Month @Year }
+ Hungarian @Yield { @Year. @Month @DayNum. }
+ Italian @Yield { @DayNum @Month @Year }
+ Norwegian @Yield { @DayNum @Month, @Year }
+ Polish @Yield { @DayNum @Month @Year }
+ Portuguese @Yield { @DayNum "de" @Month "de" @Year }
+ Russian @Yield { @DayNum @Month @Year }
+ Slovak @Yield { @DayNum. @Month @Year }
+ Slovenian @Yield { @DayNum @Month @Year }
+ Spanish @Yield { @DayNum "de" @Month, @Year }
+ Swedish @Yield { @DayNum @Month @Year }
+ UpperSorbian @Yield { @DayNum @Month @Year }
+ } }
+}
+
+{ time @DateTimeFormat @Value { @CurrLang @Case {
+ Croatian @Yield { @ShortHour:@Minute }
+ Czech @Yield { @ShortHour:@Minute }
+ Danish @Yield { @ShortHour.@Minute }
+ Dutch @Yield { @ShortHour.@Minute }
+ English @Yield { @TwelveHour.@Minute @MeriDiem }
+ EnglishUK @Yield { @TwelveHour.@Minute @MeriDiem }
+ Esperanto @Yield { @ShortHour:@Minute }
+ Finnish @Yield { @ShortHour.@Minute }
+ French @Yield { @ShortHour"h"@Minute }
+ German @Yield { @ShortHour.@Minute }
+ Hungarian @Yield { @ShortHour {@Char oacute}ra @Minute perc }
+ Italian @Yield { @ShortHour:@Minute }
+ Norwegian @Yield { @ShortHour.@Minute }
+ Polish @Yield { @ShortHour.@Minute }
+ Portuguese @Yield { @ShortHour:@Minute }
+ Russian @Yield { @ShortHour.@Minute }
+ Slovak @Yield { @ShortHour:@Minute }
+ Slovenian @Yield { @ShortHour.@Minute }
+ Spanish @Yield { @ShortHour:@Minute }
+ Swedish @Yield { @ShortHour.@Minute }
+ UpperSorbian @Yield { @ShortHour.@Minute }
+ } }
+}
diff --git a/doc/doc/README b/doc/doc/README
new file mode 100644
index 0000000..7e8381c
--- /dev/null
+++ b/doc/doc/README
@@ -0,0 +1,20 @@
+Directory lout/doc
+
+This directory contains directories holding the four documents
+that describe the Lout document formatting system:
+
+design `The design and implementation of the Lout document
+ formatting language,' Software--Practice and Experience,
+ vol. 23, pp1001-1041 (September 1993)
+
+expert An Expert's Guide to the Lout Document Formatting System
+
+slides A Practical Introduction to the Lout Document Formatting
+ System (overhead transparencies)
+
+user A User's Guide to the Lout Document Formatting System
+
+The author of these documents, Jeffrey H. Kingston, owns the
+copyright in them. He gives permission for them to be
+copied and modified freely, provided that his authorship
+is acknowledged in any documents derived from these ones.
diff --git a/doc/doc/design/README b/doc/doc/design/README
new file mode 100644
index 0000000..de0a07d
--- /dev/null
+++ b/doc/doc/design/README
@@ -0,0 +1,26 @@
+Directory lout/doc/design
+
+This directory contains the Lout source files
+for the report entitled `The design and
+implementation of the Lout document formatting
+language' which appeared in Software--Practice
+and Experience, vol 23, pp1001-1041 (September
+1993). To produce the report, type the command
+
+ lout -r3 all > outfile.ps
+
+in this directory. The -r3 flag causes Lout to
+run over the document three times, which is
+needed to completely resolve all cross references,
+although a readable PostScript file outfile.ps
+would be produced after one run if -r3 is omitted.
+Auxiliary files with .li and .ld suffixes will be
+created in this directory. A copy of the final
+outfile.ps is included.
+
+The second and third runs should produce no error
+messages (although changing the paper size might
+produce one or two benign ones).
+
+Jeffrey H. Kingston
+26 June 2013
diff --git a/doc/doc/design/all b/doc/doc/design/all
new file mode 100644
index 0000000..2755e5b
--- /dev/null
+++ b/doc/doc/design/all
@@ -0,0 +1,58 @@
+@SysInclude { eq }
+@SysInclude { tab }
+@SysInclude { fig }
+@SysInclude { report }
+@SysDatabase @Reference { oldrefs }
+@Report
+ @Title { The Design and Implementation
+of the
+Lout Document Formatting Language }
+ @Author { Jeffrey H. Kingston }
+ @Institution { Basser Department of Computer Science,
+The University of Sydney 2006,
+Australia }
+ @DateLine { 27 January, 1993 }
+ @InitialLanguage { English }
+ @OptimizePages { Yes }
+ @AbstractTitle { SUMMARY }
+ @Abstract
+{
+Lout is a high-level language for document formatting, whose ease of use
+has permitted an unprecedented number of advanced features to be added
+quickly and reliably. This paper charts the evolution of the design and
+implementation of Lout from conception in mid-1984 to public release in
+October 1991. It includes extensive discussions of remaining problems
+and possible solutions.
+@DP
+{@B Keywords} document formatting typesetting
+}
+
+//
+
+@Include { s1_0 }
+@Include { s2_0 }
+@Include { s2_1 }
+@Include { s2_2 }
+@Include { s2_3 }
+@Include { s2_4 }
+@Include { s2_5 }
+@Include { s2_9 }
+@Include { s3_0 }
+@Include { s3_1 }
+@Include { s3_2 }
+@Include { s3_3 }
+@Include { s3_4 }
+@Include { s3_9 }
+@Include { s4_0 }
+@Include { s5_0 }
+@Include { s5_1 }
+@Include { s5_2 }
+@Include { s5_3 }
+@Include { s5_4 }
+@Include { s5_5 }
+@Include { s5_9 }
+@Include { s6_0 }
+@Include { s6_1 }
+@Include { s6_2 }
+@Include { s6_9 }
+@Include { s7_0 }
diff --git a/doc/doc/design/mydefs b/doc/doc/design/mydefs
new file mode 100644
index 0000000..5473fbf
--- /dev/null
+++ b/doc/doc/design/mydefs
@@ -0,0 +1,591 @@
+
+def @TeX { T{ /0.2fo E}X }
+
+def @Code
+ right x
+{ { Helvetica Base -1p } @Font lines @Break x
+}
+
+######################################################
+# #
+# Nodes and trees. #
+# #
+######################################################
+
+import @Fig
+def @FBox
+ named width { 0.6c }
+ named height { 0.4c }
+ named margin { 0.1c }
+ right x
+{
+ @Box margin { margin }
+ { width @Wide height @High
+ { /0.5rt |0.5rt @OneCol @OneRow 0.8f @Font x
+ }
+ }
+}
+
+import @Fig
+def @FEllipse
+ named width { 0.6c }
+ named height { 0.4c }
+ named margin { 0.1c }
+ right x
+{
+ @Ellipse margin { margin }
+ { height @High
+ { /0.5rt |0.5rt @OneCol @OneRow 0.8f @Font x
+ }
+ }
+}
+
+import @Fig
+def @FCircle
+ named width { 0.4c }
+ named height { 0.4c }
+ named margin { 0.1c }
+ right x
+{
+ @Circle margin { margin }
+ { width @Wide height @High
+ { /0.5rt |0.5rt @OneCol @OneRow 0.8f @Font x
+ }
+ }
+}
+
+import @Fig
+def @JoinFigures
+ left A
+ named linestyle { solid }
+ named linewidth { 0.5 pt }
+ named linecap { round }
+ named dashlength { 0.15 cm }
+ named arrow { noarrow }
+ named headstyle { open }
+ named headwidth { 0.05 cm }
+ named headlength { 0.15 cm }
+ right B
+{
+ @Line
+ from { {A"@CTR"} ++ {{A"@CTR"} @Angle {B"@CTR"} A"@CIRCUM"} }
+ to { {B"@CTR"} ++ {{B"@CTR"} @Angle {A"@CTR"} B"@CIRCUM"} }
+ linestyle { linestyle }
+ linewidth { linewidth }
+ linecap { linecap }
+ dashlength { dashlength }
+ arrow { arrow }
+ headstyle { headstyle }
+ headwidth { headwidth }
+ headlength { headlength }
+ {}
+}
+
+import @Fig
+export @LeftSub @RightSub @FirstSub @NextSub @StubSub @Node
+def @Tree
+ named hmargin { 0.2c }
+ named vmargin { 0.3c }
+ named linestyle { solid }
+ named linewidth { 0.5 pt }
+ named linecap { round }
+ named dashlength { 0.15 cm }
+ named arrow { noarrow }
+ named headstyle { open }
+ named headwidth { 0.05 cm }
+ named headlength { 0.15 cm }
+ body x
+@Begin
+
+ def @LeftSub
+ precedence 90
+ associativity left
+ left root
+ named hmargin { hmargin }
+ named linestyle { linestyle }
+ named linewidth { linewidth }
+ named linecap { linecap }
+ named dashlength { dashlength }
+ named arrow { arrow }
+ named headstyle { headstyle }
+ named headwidth { headwidth }
+ named headlength { headlength }
+ right x
+ {
+ { /vmargin {L::x} } |hmargin root |
+ L@T @JoinFigures
+ linestyle { linestyle }
+ linewidth { linewidth }
+ linecap { linecap }
+ dashlength { dashlength }
+ arrow { arrow }
+ headstyle { headstyle }
+ headwidth { headwidth }
+ headlength { headlength }
+ T
+ }
+
+ def fixroot
+ precedence 90
+ left root
+ {
+ |0.5rt root
+ }
+
+ def firstsub
+ precedence 90
+ associativity left
+ named hmargin { hmargin }
+ named linestyle { linestyle }
+ named linewidth { linewidth }
+ named linecap { linecap }
+ named dashlength { dashlength }
+ named arrow { arrow }
+ named headstyle { headstyle }
+ named headwidth { headwidth }
+ named headlength { headlength }
+ right x
+ {
+ S::x &
+ S@T @JoinFigures
+ linestyle { linestyle }
+ linewidth { linewidth }
+ linecap { linecap }
+ dashlength { dashlength }
+ arrow { arrow }
+ headstyle { headstyle }
+ headwidth { headwidth }
+ headlength { headlength }
+ T
+ }
+
+ macro @FirstSub { fixroot //vmargin |0.5rt firstsub }
+
+ def @NextSub
+ precedence 90
+ associativity left
+ left others
+ named hmargin { hmargin }
+ named linestyle { linestyle }
+ named linewidth { linewidth }
+ named linecap { linecap }
+ named dashlength { dashlength }
+ named arrow { arrow }
+ named headstyle { headstyle }
+ named headwidth { headwidth }
+ named headlength { headlength }
+ right x
+ {
+ others &hmargin S::x &
+ S@T @JoinFigures
+ linestyle { linestyle }
+ linewidth { linewidth }
+ linecap { linecap }
+ dashlength { dashlength }
+ arrow { arrow }
+ headstyle { headstyle }
+ headwidth { headwidth }
+ headlength { headlength }
+ T
+ }
+
+ def @RightSub
+ precedence 90
+ associativity left
+ left root
+ named hmargin { hmargin }
+ named linestyle { linestyle }
+ named linewidth { linewidth }
+ named linecap { linecap }
+ named dashlength { dashlength }
+ named arrow { arrow }
+ named headstyle { headstyle }
+ named headwidth { headwidth }
+ named headlength { headlength }
+ right x
+ {
+ root |hmargin { /vmargin {R::x} } |
+ R@T @JoinFigures
+ linestyle { linestyle }
+ linewidth { linewidth }
+ linecap { linecap }
+ dashlength { dashlength }
+ arrow { arrow }
+ headstyle { headstyle }
+ headwidth { headwidth }
+ headlength { headlength }
+ T
+ }
+
+ def @StubSub
+ precedence 90
+ associativity left
+ left root
+ named linestyle { linestyle }
+ named linewidth { linewidth }
+ named linecap { linecap }
+ named dashlength { dashlength }
+ {
+ root |
+ @Figure
+ shape { T@SW
+ T@W -- { 0.1 cm 0.7 cm }
+ T@E -- {-0.1 cm 0.7 cm }
+ T@SE
+ }
+ linestyle { linestyle }
+ linewidth { linewidth }
+ linecap { linecap }
+ dashlength { dashlength }
+ { @Null }
+ }
+
+ def @Node
+ # named mark {}
+ right root
+ {
+ T:: root
+ # & T@W ++ { -0.2 cm 0.1 cm } @BaseOf mark
+ }
+
+ @OneCol @OneRow x
+
+@End @Tree
+
+
+def @ShowMarks
+ named linewidth { 0.015 cm }
+ named linestyle { dashed }
+ named dashlength { 0.15 cm }
+ named paint { lightgrey }
+ named marks { both } # none, horizontal, vertical, or both
+ right x
+{
+ @Fig
+ { @Box margin { 0c } linewidth { linewidth } paint { paint }
+ { @Figure
+ shape {
+ marks @Case {
+ { horizontal both } @Yield
+ { -0.3 cm ymark {xsize ymark} ++ {0.3 cm 0} }
+ else @Yield {}
+ }
+ marks @Case {
+ both @Yield []
+ else @Yield {}
+ }
+ marks @Case {
+ { vertical both } @Yield
+ { xmark -0.3 cm {xmark ysize} ++ {0 0.3 cm} }
+ else @Yield {}
+ }
+ }
+ linewidth { linewidth }
+ linestyle { linestyle }
+ dashlength { dashlength }
+ x
+ }
+ }
+}
+
+ import @Fig
+ def @DagBox
+ named top {}
+ named mid {}
+ named base {}
+ {
+ @OneRow {
+ TOP:: @FBox top
+ // MID:: @FBox mid
+ // BASE:: @FBox base
+ }
+ }
+
+ import @Fig
+ def @BlackDot
+ named diameter { 0.07c }
+ {
+ @Circle
+ margin { 0c }
+ paint { black }
+ { diameter @Wide diameter @High {}
+ }
+ }
+
+ import @Fig
+ def @TVShape # television shape enclosing points ne, nw, se, sw
+ named nw {}
+ named ne {}
+ named sw {}
+ named se {}
+ named delta { 0.5 cm }
+ {
+ @Figure
+ shape {
+ { {nw @Min sw @Min ne @Min se} -- { delta 0 } } @Label BL
+ { {nw @Max sw @Max ne @Max se} ++ { delta 0 } } @Label TR
+ BL ++ { 0 BL @YDistance TR } @Label TL
+ BL ++ { BL @XDistance TR 0 } @Label BR
+ BL
+ BR [ BR ++ {0 delta} ]
+ BR ++ {delta delta}
+ TR ++ {delta -delta} [ TR -- {0 delta} ]
+ TR
+ TL [ TL -- {0 delta} ]
+ TL -- {delta delta}
+ BL ++ {-delta delta} [ BL ++ {0 delta} ]
+ BL
+ }
+ {}
+ }
+
+ import @Fig
+ def @FunnyArrow
+ named from {}
+ named to {}
+ named arrow { forward }
+ {
+ @Figure
+ shape {from from ++ {0 from @YDistance to} to}
+ arrow { arrow }
+ {}
+ }
+
+ def "->" { {Symbol Base} @Font "\256" } #174 decimal
+ def "=>" { {Symbol Base} @Font "\336" } #222 decimal
+ macro @JP { /0.5v }
+
+ ###################################################
+ # #
+ # Lout keywords. #
+ # #
+ ###################################################
+
+ def @@Begin { @Code "@Begin" }
+ def @@Break { @Code "@Break" }
+ def @@Case { @Code "@Case" }
+ def @@Database { @Code "@Database" }
+ def @@End { @Code "@End" }
+ def @@Font { @Code "@Font" }
+ def @@Galley { @Code "@Galley" }
+ def @@Graphic { @Code "@Graphic" }
+ def @@HExpand { @Code "@HExpand" }
+ def @@HScale { @Code "@HScale" }
+ def @@High { @Code "@High" }
+ def @@Include { @Code "@Include" }
+ def @@Key { @Code "@Key" }
+ def @@LClos { @Code "@LClos" }
+ def @@LEnv { @Code "@LEnv" }
+ def @@LInput { @Code "@LInput" }
+ def @@Moment { @Code "@Moment" }
+ def @@Next { @Code "@Next" }
+ def @@Null { @Code "@Null" }
+ def @@OneCol { @Code "@OneCol" }
+ def @@OneRow { @Code "@OneRow" }
+ def @@Open { @Code "@Open" }
+ def @@Prepend { @Code "@Prepend" }
+ def @@Rotate { @Code "@Rotate" }
+ def @@Space { @Code "@Space" }
+ def @@SysDatabase { @Code "@SysDatabase" }
+ def @@SysInclude { @Code "@SysInclude" }
+ def @@SysPrepend { @Code "@SysPrepend" }
+ def @@Tag { @Code "@Tag" }
+ def @@Tagged { @Code "@Tagged" }
+ def @@Use { @Code "@Use" }
+ def @@VExpand { @Code "@VExpand" }
+ def @@VScale { @Code "@VScale" }
+ def @@Yield { @Code "@Yield" }
+ def @@Wide { @Code "@Wide" }
+
+
+ ###################################################
+ # #
+ # Miscellaneous, mostly graphical definitions. #
+ # #
+ ###################################################
+
+ def @Leaders
+ { .. @Leaders
+ }
+
+ def @HLine {
+ @BackEnd @Case {
+ PostScript @Yield {
+ { 0 0 moveto xsize 0 lineto stroke }
+ @Graphic {}
+ }
+ PDF @Yield {
+ { 0 0 m __xsize 0 l S }
+ @Graphic {}
+ }
+ }
+ }
+
+ def @VDashLine
+ right length
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ length @High
+ { 0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke }
+ @Graphic {}
+ }
+ PDF @Yield {
+ length @High
+ { [ __mul(3, __pt) ] 0 d 0 0 m 0 __ysize l stroke }
+ @Graphic {}
+ }
+ }
+ }
+
+ def @LBox
+ right offset
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ @OneCol @OneRow
+ {
+ { //0.2c
+ 0.6c @High 1.2c @Wide
+ { 0 0 moveto xsize 0 lineto
+ xsize ysize lineto 0 ysize lineto closepath
+ gsave 0.9 setgray fill grestore stroke }
+ @Graphic {}
+ }
+ ||offset @VDashLine 1c
+ }
+ }
+ PDF @Yield {
+ @OneCol @OneRow
+ {
+ { //0.2c
+ 0.6c @High 1.2c @Wide
+ { 0 0 m __xsize 0 l
+ __xsize __ysize l 0 __ysize l h
+ q 0.9 g f Q S }
+ @Graphic {}
+ }
+ ||offset @VDashLine 1c
+ }
+ }
+ }
+ }
+
+ def @Arrow
+ right length
+ { @OneCol @OneRow
+ {
+ 30d @Rotate {0.12c @Wide @HLine}
+ //
+ length @Wide @HLine
+ //
+ "-30d" @Rotate {0.12c @Wide @HLine}
+ }
+ }
+
+ def @DoubleArrow
+ right length
+ { @OneCol @OneRow
+ {
+ & 180d @Rotate @Arrow length
+ |0io @Arrow length
+ }
+ }
+
+ def @Put
+ left coord
+ right x
+ { @OneCol @OneRow
+ { coord / | @OneCol @OneRow x
+ }
+ }
+
+ macro @At { //0io }
+
+
+ ###################################################
+ # #
+ # Interpolated example documents. #
+ # #
+ ###################################################
+
+ def @LittleEndRunPlace { @Galley }
+ def @LittleEndRun
+ force into { @LittleEndRunPlace&&preceding }
+ {}
+
+ def @LittleTextPlace { @Galley }
+ def @LittleText into { @LittleTextPlace&&preceding }
+ right x
+ { x
+ }
+
+ def @LittleFootPlace { @Galley }
+ def @LittleFootNote into { @LittleFootPlace&&following }
+ right x
+ { x
+ }
+
+ def @LittlePageColumn
+ right x
+ {
+ 9px @Break 8p @Font
+ 2.8c @Wide x
+ }
+
+ def @LittlePage
+ right x
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ @HContract @VContract
+ { 0 0 moveto xsize 0 lineto xsize ysize lineto
+ 0 ysize lineto closepath stroke } @Graphic
+ { //0.3c ||0.3c
+ 9px @Break 8p @Font
+ 2.8c @Wide 3.8c @High x
+ ||0.3c //0.3c
+ }
+ }
+ PDF @Yield {
+ @HContract @VContract
+ { 0 0 m __xsize 0 l __xsize __ysize l 0 __ysize l s } @Graphic
+ { //0.3c ||0.3c
+ 9px @Break 8p @Font
+ 2.8c @Wide 3.8c @High x
+ ||0.3c //0.3c
+ }
+ }
+ }
+ }
+
+ def @LittleFootSect
+ { 1c @Wide @HLine
+ //0.3v @LittleFootPlace ||0.5c
+ }
+
+ def @LittlePageList
+ right @PageNum
+ {
+ @LittlePage { # |0.5rt @PageNum //0.8v
+ //0.3v @LittleTextPlace
+ //1rt @LittleFootSect
+ }
+ //
+ @LittlePageList @Next @PageNum
+ }
+
+ def @LittleDocument
+ { @LittlePage
+ { @LittleTextPlace
+ //1rt @LittleFootSect
+ }
+ // @LittlePageList 2
+ // @LittleEndRunPlace
+ }
+
+ def @Strange
+ named @Format right @Val { [@Val] }
+ right x
+ { @Format x
+ }
diff --git a/doc/doc/design/outfile.ps b/doc/doc/design/outfile.ps
new file mode 100644
index 0000000..b8709e2
--- /dev/null
+++ b/doc/doc/design/outfile.ps
@@ -0,0 +1,12860 @@
+%!PS-Adobe-3.0
+%%Creator: Basser Lout Version 3.40 (June 2013)
+%%CreationDate: Wed Jun 26 09:44:18 2013
+%%DocumentData: Binary
+%%DocumentNeededResources: (atend)
+%%DocumentSuppliedResources: (atend)
+%%DocumentMedia: A4 595 842 0 white ()
+%%PageOrder: Ascend
+%%LanguageLevel: 2
+%%Pages: (atend)
+%%BoundingBox: 0 0 595 842
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset LoutStartUp
+/cp_x 0 def
+/cp_y 0 def
+/louts 0 def
+/loutv 0 def
+/loutf 0 def
+/ymark 0 def
+/xmark 0 def
+/ysize 0 def
+/xsize 0 def
+/save_cp { currentpoint /cp_y exch def /cp_x exch def } bind def
+/restore_cp { cp_x cp_y moveto } bind def
+/outline { gsave 1 1 1 setrgbcolor dup show save_cp
+ grestore true charpath stroke restore_cp } bind def
+/m { 3 1 roll moveto show } bind def
+/mo { 3 1 roll moveto outline } bind def
+/s { exch currentpoint exch pop moveto show } bind def
+/so { exch currentpoint exch pop moveto outline } bind def
+/k { exch neg 0 rmoveto show } bind def
+/ko { exch neg 0 rmoveto outline } bind def
+/r { exch 0 rmoveto show } bind def
+/ro { exch 0 rmoveto outline } bind def
+/c { gsave 3 1 roll rmoveto show grestore } bind def
+/co { gsave 3 1 roll rmoveto outline grestore } bind def
+/ul { gsave setlinewidth dup 3 1 roll
+ moveto lineto stroke grestore } bind def
+/in { 1440 mul } bind def
+/cm { 567 mul } bind def
+/pt { 20 mul } bind def
+/em { 120 mul } bind def
+/sp { louts mul } def
+/vs { loutv mul } def
+/ft { loutf mul } def
+/dg { } def
+
+/LoutGraphic {
+ /louts exch def
+ /loutv exch def
+ /loutf exch def
+ /ymark exch def
+ /xmark exch def
+ /ysize exch def
+ /xsize exch def
+} def
+
+/LoutGr2 { gsave translate LoutGraphic gsave } def
+
+/LoutFont
+{ findfont exch scalefont setfont
+} bind def
+
+/LoutRecode {
+ { findfont dup length dict begin
+ {1 index /FID ne {def} {pop pop} ifelse} forall
+ /Encoding exch def
+ currentdict end definefont pop
+ }
+ stopped pop
+} bind def
+
+/PreEPSF_state 0 def
+/dict_stack 0 def
+/ops_count 0 def
+/LoutStartEPSF { % prepare for EPSF inclusion
+ /PreEPSF_state save def
+ /dict_stack countdictstack def
+ /ops_count count 1 sub def
+ 20 dict begin
+ /showpage {} def
+ 0 setgray 0 setlinecap
+ 1 setlinewidth 0 setlinejoin
+ 10 setmiterlimit [] 0 setdash newpath
+ /languagelevel where
+ { pop languagelevel
+ 1 ne
+ { false setstrokeadjust false setoverprint
+ } if
+ } if
+} bind def
+
+/LoutEPSFCleanUp { % clean up after EPSF inclusion
+ count ops_count sub { pop } repeat
+ countdictstack dict_stack sub { end } repeat
+ PreEPSF_state restore
+} bind def
+
+% Find current texture (may be null)
+% - LoutCurrentP p
+/LoutCurrentP
+{
+ currentcolorspace
+ 0 get /Pattern eq
+ {
+ [ currentcolor ]
+ dup length 1 sub get
+ }
+ {
+ null
+ } ifelse
+} def
+
+% Find current color and color space
+% - LoutCurrentCCS c cs
+/LoutCurrentCCS
+{
+ LoutCurrentP dup null eq
+ {
+ pop [ currentcolor ]
+ currentcolorspace
+ }
+ {
+ dup
+ /UnderlyingColor get
+ exch /UnderlyingColorSpace get
+ } ifelse
+} def
+
+% Install c, cs, and (a copy of) p into graphics state
+% c cs p LoutSetCCSP -
+/LoutSetCCSP
+{
+ dup null eq
+ {
+ pop setcolorspace
+ aload pop setcolor
+ }
+ {
+ % copy pattern dictionary
+ 12 dict copy
+
+ % record cs and c in p
+ dup /UnderlyingColorSpace 3 index
+ put
+ dup /UnderlyingColor 4 index
+ put
+
+ % do setcolorspace and setcolor
+ dup /PaintType get 1 eq
+ {
+ [ /Pattern ] setcolorspace
+ setcolor
+ pop pop
+ }
+ {
+ [ /Pattern
+ 4 -1 roll
+ ] setcolorspace
+ exch aload length 1 add
+ -1 roll
+ setcolor
+ } ifelse
+ } ifelse
+} bind def
+
+% num LoutSetGray -
+/LoutSetGray
+{
+ [ 2 1 roll ]
+ [ /DeviceGray ]
+ LoutCurrentP
+ LoutSetCCSP
+} bind def
+
+% r g b LoutSetRGBColor -
+/LoutSetRGBColor
+{
+ [ 4 1 roll ]
+ [ /DeviceRGB ]
+ LoutCurrentP
+ LoutSetCCSP
+} bind def
+
+% h s b LoutSetHSBColor -
+/LoutSetHSBColor
+{
+ gsave sethsbcolor
+ currentrgbcolor grestore
+ LoutSetRGBColor
+} bind def
+
+% c m y k LoutSetRGBColor -
+/LoutSetCMYKColor
+{
+ [ 5 1 roll ]
+ [ /DeviceCMYK ]
+ LoutCurrentP
+ LoutSetCCSP
+} bind def
+
+% p LoutSetTexture -
+/LoutSetTexture
+{
+ LoutCurrentCCS
+ 3 -1 roll
+ LoutSetCCSP
+} bind def
+
+% <scale > <scalex> <scaley> <rotate> <hshift> <vshift>
+% <painttype> <bbox> <xstep> <ystep> <paintproc> LoutMakeTexture p
+/LoutMakeTexture
+{
+ 12 dict begin
+ /PaintProc exch def
+ /YStep exch def
+ /XStep exch def
+ /BBox exch def
+ /PaintType exch def
+ /PatternType 1 def
+ /TilingType 1 def
+ currentdict end
+ 7 1 roll
+ matrix translate
+ 5 1 roll
+ matrix rotate
+ 4 1 roll
+ matrix scale
+ exch dup matrix scale
+ matrix concatmatrix
+ matrix concatmatrix
+ matrix concatmatrix
+ /makepattern where
+ {
+ pop makepattern
+ }
+ {
+ pop pop null
+ } ifelse
+} bind def
+
+/LoutTextureSolid
+{
+ null
+ LoutSetTexture
+} bind def
+%%EndResource
+
+%%BeginResource: procset LoutTabPrependGraphic
+% @PrependGraphic file /home/jeff/lout.lib/include/tabf.lpg
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% PostScript @SysPrependGraphic file for @Tab %
+% %
+% This file has been placed in the public domain %
+% by its author, Jeffrey H. Kingston %
+% %
+% To assist in avoiding name clashes, the names %
+% of all these symbols begin with "ltab". %
+% %
+% Jeffrey H. Kingston %
+% 24 September 1991 %
+% 22 December 1992 %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% linewidth ltabhs -
+% horizontal single line
+/ltabhs
+{ 0 0 moveto xsize 0 lineto
+ setlinewidth 0 setlinecap stroke
+} def
+
+% linewidth ltabhsp -
+% horizontal single line with projecting ends
+/ltabhsp
+{ 0 0 moveto xsize 0 lineto
+ setlinewidth 2 setlinecap stroke
+} def
+
+% linewidth ltabhd -
+% horizontal double line
+/ltabhd
+{ dup dup
+ 0 0 moveto xsize 0 lineto
+ 0 exch 3 mul moveto xsize exch 3 mul lineto
+ setlinewidth 0 setlinecap stroke
+} def
+
+% linewidth ltabhdb -
+% horizontal double line below mark
+/ltabhdb
+{ dup dup
+ 0 0 moveto xsize 0 lineto
+ 0 exch -3 mul moveto xsize exch -3 mul lineto
+ setlinewidth 0 setlinecap stroke
+} def
+
+% linewidth ltabhdnw -
+% horizontal double line with northwest corner
+/ltabhdnw
+{ dup dup dup dup
+ 0 0 moveto xsize 0 lineto
+ xsize exch 3 mul moveto
+ -3 mul exch 3 mul lineto
+ -3 mul 0 lineto
+ setlinewidth 0 setlinejoin 2 setlinecap stroke
+} def
+
+% linewidth ltabhdne -
+% horizontal double line with northeast corner
+/ltabhdne
+{ dup dup dup dup
+ 0 0 moveto xsize 0 lineto
+ 0 exch 3 mul moveto
+ 3 mul xsize add exch 3 mul lineto
+ 3 mul xsize add 0 lineto
+ setlinewidth 0 setlinejoin 2 setlinecap stroke
+} def
+
+% linewidth ltabhdsw -
+% horizontal double line with southwest corner
+/ltabhdsw
+{ dup dup dup dup
+ 0 0 moveto xsize 0 lineto
+ xsize exch -3 mul moveto
+ -3 mul exch -3 mul lineto
+ -3 mul 0 lineto
+ setlinewidth 0 setlinejoin 2 setlinecap stroke
+} def
+
+% linewidth ltabhdse -
+% horizontal double line with southeast corner
+/ltabhdse
+{ dup dup dup dup
+ 0 0 moveto xsize 0 lineto
+ 0 exch -3 mul moveto
+ 3 mul xsize add exch -3 mul lineto
+ 3 mul xsize add 0 lineto
+ setlinewidth 0 setlinejoin 2 setlinecap stroke
+} def
+
+% linewidth ltabvs -
+% vertical single line
+/ltabvs
+{ 0 0 moveto 0 ysize lineto
+ setlinewidth 0 setlinecap stroke
+} def
+
+% linewidth ltabvd -
+% vertical double line
+/ltabvd
+{ dup dup
+ 0 0 moveto 0 ysize lineto
+ -3 mul 0 moveto -3 mul ysize lineto
+ setlinewidth 0 setlinecap stroke
+} def
+
+% linewidth ltabvdr -
+% vertical double line to right of mark
+/ltabvdr
+{ dup dup
+ 0 0 moveto 0 ysize lineto
+ 3 mul 0 moveto 3 mul ysize lineto
+ setlinewidth 0 setlinecap stroke
+} def
+%%EndResource
+
+%%BeginResource: procset LoutFigPrependGraphic
+% @PrependGraphic file /home/jeff/lout.lib/include/figf.lpg
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% PostScript @SysPrependGraphic file for @Fig Jeffrey H. Kingston %
+% Version 2.0 (includes CIRCUM label) January 1992 %
+% %
+% This file has been placed in the public domain by its author, %
+% Jeffrey H. Kingston %
+% %
+% Although Fig is now obsolete I have updated it 20 October 2002 %
+% to work with textures, i.e. replacing setrgbcolor with %
+% LoutSetRGBColor. %
+% %
+% To assist in avoiding name clashes, the names of all symbols %
+% defined here begin with "lfig". However, this is not feasible %
+% with user-defined labels and some labels used by users. %
+% %
+% <point> is two numbers, a point. %
+% <length> is one number, a length %
+% <angle> is one number, an angle in degrees %
+% <dashlength> is one number, the preferred length of a dash %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+errordict begin
+ /handleerror
+ {
+ { /Times-Roman findfont 8 pt scalefont setfont
+ 0 setgray 4 pt 4 pt moveto
+ $error /errorname get
+ dup lfigdict exch known
+ { lfigdict exch get }
+ { 30 string cvs } ifelse
+ show
+ ( Command: ) show
+ $error /command get 30 string cvs show
+ } stopped {} if
+ showpage stop
+ } def
+end
+
+% concat strings: <string> <string> lfigconcat <string>
+% must be defined outside lfigdict since used in lfigpromotelabels
+/lfigconcat
+{ 2 copy length exch length add string
+ dup 0 4 index putinterval
+ dup 3 index length 3 index putinterval
+ 3 1 roll pop pop
+} def
+
+% <string> lfigdebugprint -
+% must be defined outside lfigdict since used in arbitrary places
+% /lfigdebugprint
+% { print
+% (; operand stack:\n) print
+% count copy
+% count 2 idiv
+% { ==
+% (\n) print
+% } repeat
+% (\n) print
+% } def
+
+/lfigdict 120 dict def
+lfigdict begin
+
+% error messages
+/dictfull (dictfull error: too many labels?) def
+/dictstackoverflow (dictstackoverflow error: labels nested too deeply?) def
+/execstackoverflow (execstackoverflow error: figure nested too deeply?) def
+/limitcheck (limitcheck error: figure nested too deeply or too large?) def
+/syntaxerror (syntaxerror error: syntax error in text of figure?) def
+/typecheck (typecheck error: syntax error in text of figure?) def
+/undefined (undefined error: unknown or misspelt label?) def
+/VMError (VMError error: run out of memory?) def
+
+% push pi onto stack: - lfigpi <num>
+/lfigpi 3.14159 def
+
+% arc directions
+/clockwise false def
+/anticlockwise true def
+
+% maximum of two numbers: <num> <num> lfigmax <num>
+/lfigmax { 2 copy gt { pop } { exch pop } ifelse } def
+
+% minimum of two numbers: <num> <num> lfigmin <num>
+/lfigmin { 2 copy lt { pop } { exch pop } ifelse } def
+
+% add two points: <point> <point> lfigpadd <point>
+/lfigpadd { exch 3 1 roll add 3 1 roll add exch } def
+
+% subtract first point from second: <point> <point> lfigpsub <point>
+/lfigpsub { 3 2 roll sub 3 1 roll exch sub exch } def
+
+% max two points: <point> <point> lfigpmax <point>
+/lfigpmax { exch 3 1 roll lfigmax 3 1 roll lfigmax exch } def
+
+% min two points: <point> <point> lfigpmin <point>
+/lfigpmin { exch 3 1 roll lfigmin 3 1 roll lfigmin exch } def
+
+% scalar multiplication: <point> <num> lfigpmul <point>
+/lfigpmul { dup 3 1 roll mul 3 1 roll mul exch } def
+
+% point at angle and distance: <point> <length> <angle> lfigatangle <point>
+/lfigatangle { 2 copy cos mul 3 1 roll sin mul lfigpadd } def
+
+% angle from one point to another: <point> <point> lfigangle <angle>
+/lfigangle { lfigpsub 2 copy 0 eq exch 0 eq and {pop} {exch atan} ifelse } def
+
+% distance between two points: <point> <point> lfigdistance <length>
+/lfigdistance { lfigpsub dup mul exch dup mul add sqrt } def
+
+% difference in x coords: <point> <point> lfigxdistance <length>
+/lfigxdistance { pop 3 1 roll pop sub } def
+
+%difference in y coords: <point> <point> lfigydistance <length>
+/lfigydistance { 3 1 roll pop sub exch pop } def
+
+% stroke a solid line: <length> <dashlength> lfigsolid -
+/lfigsolid
+{ pop pop [] 0 setdash stroke
+} def
+
+% stroke a lfigdashed line: <length> <dashlength> lfigdashed -
+/lfigdashed
+{ 2 copy div 2 le 1 index 0 le or
+ { exch pop 1 pt lfigmax [ exch dup ] 0 setdash }
+ { dup [ exch 4 2 roll 2 copy div
+ 1 sub 2 div ceiling dup 4 1 roll
+ 1 add mul sub exch div ] 0 setdash
+ } ifelse stroke
+} def
+
+% stroke a lfigcdashed line: <length> <dashlength> lfigcdashed -
+/lfigcdashed
+{ 2 copy le 1 index 0 le or
+ { exch pop 1 pt lfigmax [ exch dup ] dup 0 get 2 div setdash }
+ { dup [ 4 2 roll exch 2 copy exch div
+ 2 div ceiling div 1 index sub
+ ] exch 2 div setdash
+ } ifelse stroke
+} def
+
+% stroke a dotted line: <length> <dashlength> lfigdotted -
+/lfigdotted
+{ 2 copy le 1 index 0 le or
+ { exch pop 1 pt lfigmax [ exch 0 exch ] 0 setdash }
+ { 1 index exch div ceiling div
+ [ 0 3 2 roll ] 0 setdash
+ } ifelse stroke
+} def
+
+% stroke a noline line: <length> <dashlength> lfignoline -
+/lfignoline
+{ pop pop
+} def
+
+% painting (i.e. filling): - lfigwhite - (etc.)
+/lfignopaint { } def
+/lfignochange { fill } def
+/lfigdarkblue { 0.0 0.0 0.5 LoutSetRGBColor fill } def
+/lfigblue { 0.0 0.0 1.0 LoutSetRGBColor fill } def
+/lfiglightblue { 0.5 0.5 1.0 LoutSetRGBColor fill } def
+/lfigdarkgreen { 0.0 0.5 0.0 LoutSetRGBColor fill } def
+/lfiggreen { 0.0 1.0 0.0 LoutSetRGBColor fill } def
+/lfiglightgreen { 0.5 1.0 0.5 LoutSetRGBColor fill } def
+/lfigdarkred { 0.5 0.0 0.0 LoutSetRGBColor fill } def
+/lfigred { 1.0 0.0 0.0 LoutSetRGBColor fill } def
+/lfiglightred { 1.0 0.5 0.5 LoutSetRGBColor fill } def
+/lfigdarkcyan { 0.0 0.5 0.5 LoutSetRGBColor fill } def
+/lfigcyan { 0.0 1.0 1.0 LoutSetRGBColor fill } def
+/lfiglightcyan { 0.5 1.0 1.0 LoutSetRGBColor fill } def
+/lfigdarkmagenta { 0.5 0.0 0.5 LoutSetRGBColor fill } def
+/lfigmagenta { 1.0 0.0 1.0 LoutSetRGBColor fill } def
+/lfiglightmagenta { 1.0 0.5 1.0 LoutSetRGBColor fill } def
+/lfigdarkyellow { 0.5 0.5 0.0 LoutSetRGBColor fill } def
+/lfigyellow { 1.0 1.0 0.0 LoutSetRGBColor fill } def
+/lfiglightyellow { 1.0 1.0 0.5 LoutSetRGBColor fill } def
+/lfigdarkgray { 0.2 0.2 0.2 LoutSetRGBColor fill } def
+/lfiggray { 0.5 0.5 0.5 LoutSetRGBColor fill } def
+/lfiglightgray { 0.8 0.8 0.8 LoutSetRGBColor fill } def
+/lfigdarkgrey { 0.2 0.2 0.2 LoutSetRGBColor fill } def
+/lfiggrey { 0.5 0.5 0.5 LoutSetRGBColor fill } def
+/lfiglightgrey { 0.8 0.8 0.8 LoutSetRGBColor fill } def
+/lfigblack { 0.0 0.0 0.0 LoutSetRGBColor fill } def
+/lfigwhite { 1.0 1.0 1.0 LoutSetRGBColor fill } def
+
+% line caps (and joins, not currently used)
+/lfigbutt 0 def
+/lfiground 1 def
+/lfigprojecting 2 def
+/lfigmiter 0 def
+/lfigbevel 2 def
+
+% shape and labels of the @Box symbol
+/lfigbox
+{
+ 0 0 /SW lfigpointdef
+ xsize 0 /SE lfigpointdef
+ xsize ysize /NE lfigpointdef
+ 0 ysize /NW lfigpointdef
+ SE 0.5 lfigpmul /S lfigpointdef
+ NW 0.5 lfigpmul /W lfigpointdef
+ W SE lfigpadd /E lfigpointdef
+ S NW lfigpadd /N lfigpointdef
+ NE 0.5 lfigpmul /CTR lfigpointdef
+ [ CTR NE lfigpsub /lfigboxcircum cvx ] lfigcircumdef
+ SW SE NE NW SW
+} def
+
+% shape and labels of the @CurveBox symbol
+/lfigcurvebox
+{
+
+ xsize 0.5 mul ysize 0.5 mul /CTR lfigpointdef
+ xsize 0.5 mul 0 /S lfigpointdef
+ xsize ysize 0.5 mul /E lfigpointdef
+ xsize 0.5 mul ysize /N lfigpointdef
+ 0 ysize 0.5 mul /W lfigpointdef
+
+ xmark 0.293 mul xmark 0.293 mul /SW lfigpointdef
+ xsize xmark 0.293 mul sub xmark 0.293 mul /SE lfigpointdef
+ xsize xmark 0.293 mul sub ysize xmark 0.293 mul sub /NE lfigpointdef
+ xmark 0.293 mul ysize xmark 0.293 mul sub /NW lfigpointdef
+
+ [ xsize ysize 0.5 lfigpmul xmark /lfigcurveboxcircum cvx ] lfigcircumdef
+
+ xmark 0
+ xsize xmark sub 0
+ [ xsize xmark sub xmark ]
+ xsize xmark
+ xsize ysize xmark sub
+ [ xsize xmark sub ysize xmark sub ]
+ xsize xmark sub ysize
+ xmark ysize
+ [ xmark ysize xmark sub ]
+ 0 ysize xmark sub
+ 0 xmark
+ [ xmark xmark ]
+ xmark 0
+} def
+
+% shadow of the @ShadowBox symbol
+% its shape and labels are done, somewhat inaccurately, with lfigbox
+/lfigshadow
+{ xmark 2 mul 0 moveto xsize 0 lineto
+ xsize ysize xmark 2 mul sub lineto
+ xsize xmark sub ysize xmark 2 mul sub lineto
+ xsize xmark sub xmark lineto
+ xmark 2 mul xmark lineto closepath fill
+} def
+
+% shape and labels of the @Square symbol
+/lfigsquare
+{
+ xsize ysize 0.5 lfigpmul /CTR lfigpointdef
+ CTR xsize xsize ysize ysize lfigpmax 0.5 lfigpmul lfigpadd /NE lfigpointdef
+ CTR 0 0 CTR NE lfigdistance 135 lfigatangle lfigpadd /NW lfigpointdef
+ CTR 0 0 CTR NE lfigdistance 225 lfigatangle lfigpadd /SW lfigpointdef
+ CTR 0 0 CTR NE lfigdistance 315 lfigatangle lfigpadd /SE lfigpointdef
+ SW 0.5 lfigpmul SE 0.5 lfigpmul lfigpadd /S lfigpointdef
+ NW 0.5 lfigpmul NE 0.5 lfigpmul lfigpadd /N lfigpointdef
+ SW 0.5 lfigpmul NW 0.5 lfigpmul lfigpadd /W lfigpointdef
+ SE 0.5 lfigpmul NE 0.5 lfigpmul lfigpadd /E lfigpointdef
+ [ CTR NE lfigpsub /lfigboxcircum cvx ] lfigcircumdef
+ SW SE NE NW SW
+} def
+
+% shape and labels of the @Diamond symbol
+/lfigdiamond
+{
+ xsize 0 0.5 lfigpmul /S lfigpointdef
+ 0 ysize 0.5 lfigpmul /W lfigpointdef
+ S W lfigpadd /CTR lfigpointdef
+ CTR W lfigpadd /N lfigpointdef
+ CTR S lfigpadd /E lfigpointdef
+ [ xsize ysize 0.5 lfigpmul /lfigdiamondcircum cvx ] lfigcircumdef
+ S E N W S
+} def
+
+% shape and labels of the @Ellipse symbol
+/lfigellipse
+{
+ xsize 0 0.5 lfigpmul /S lfigpointdef
+ 0 ysize 0.5 lfigpmul /W lfigpointdef
+ S W lfigpadd /CTR lfigpointdef
+ CTR W lfigpadd /N lfigpointdef
+ CTR S lfigpadd /E lfigpointdef
+ CTR xsize 0 0.3536 lfigpmul lfigpadd 0 ysize 0.3536 lfigpmul lfigpadd /NE lfigpointdef
+ 0 ysize 0.3536 lfigpmul CTR xsize 0 0.3536 lfigpmul lfigpadd lfigpsub /SE lfigpointdef
+ xsize 0 0.3536 lfigpmul CTR lfigpsub 0 ysize 0.3536 lfigpmul lfigpadd /NW lfigpointdef
+ 0 ysize 0.3536 lfigpmul xsize 0 0.3536 lfigpmul CTR lfigpsub lfigpsub /SW lfigpointdef
+ [ xsize ysize 0.5 lfigpmul /lfigellipsecircum cvx ] lfigcircumdef
+ S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S
+} def
+
+% shape and labels of the @Circle symbol
+/lfigcircle
+{
+ xsize ysize 0.5 lfigpmul /CTR lfigpointdef
+ CTR xsize 0 ysize 0 lfigpmax 0.5 lfigpmul lfigpadd /E lfigpointdef
+ CTR 0 0 CTR E lfigdistance 45 lfigatangle lfigpadd /NE lfigpointdef
+ CTR 0 0 CTR E lfigdistance 90 lfigatangle lfigpadd /N lfigpointdef
+ CTR 0 0 CTR E lfigdistance 135 lfigatangle lfigpadd /NW lfigpointdef
+ CTR 0 0 CTR E lfigdistance 180 lfigatangle lfigpadd /W lfigpointdef
+ CTR 0 0 CTR E lfigdistance 225 lfigatangle lfigpadd /SW lfigpointdef
+ CTR 0 0 CTR E lfigdistance 270 lfigatangle lfigpadd /S lfigpointdef
+ CTR 0 0 CTR E lfigdistance 315 lfigatangle lfigpadd /SE lfigpointdef
+ [ S E lfigpsub /lfigellipsecircum cvx ] lfigcircumdef
+ S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S
+} def
+
+% shape and labels of the @HLine and @HArrow symbols
+/lfighline
+{
+ 0 ymark lfigprevious /FROM lfigpointdef
+ xsize ymark lfigprevious /TO lfigpointdef
+} def
+
+% shape and labels of the @VLine and @VArrow symbols
+/lfigvline
+{
+ xmark ysize lfigprevious /FROM lfigpointdef
+ xmark 0 lfigprevious /TO lfigpointdef
+} def
+
+% points of a polygon around base with given no of sides, vert init angle:
+% <sides> <angle> figpolygon <point> ... <point>
+/lfigpolygon
+{ xsize ysize 0.5 lfigpmul /CTR lfigpointdef
+ 90 sub CTR 2 copy lfigmax 5 3 roll
+ [ 4 copy pop /lfigpolycircum cvx ] lfigcircumdef
+ exch dup 360 exch div exch
+ 1 1 3 2 roll
+ { 4 string cvs (P) exch lfigconcat cvn
+ 6 copy pop pop lfigatangle 2 copy 10 2 roll
+ 3 2 roll lfigpointdef
+ dup 3 1 roll add exch
+ } for
+ pop lfigatangle
+} def
+
+% next array element: <array> <index> lfiggetnext <array> <index> <any> true
+% or <array> <index> false
+/lfiggetnext
+{ 2 copy exch length ge
+ { false }
+ { 2 copy get exch 1 add exch true } ifelse
+} def
+
+% check whether thing is number: <any> lfigisnumbertype <any> <bool>
+/lfigisnumbertype
+{ dup type dup
+ /integertype eq exch /realtype eq or
+} def
+
+% check whether thing is an array: <any> lfigisarraytype <any> <bool>
+/lfigisarraytype { dup type /arraytype eq } def
+
+% get next item: <array> <index> lfiggetnextitem <array> <index> 0
+% or <array> <index> <array> 1
+% or <array> <index> <point> 2
+/lfiggetnextitem
+{ lfiggetnext
+ { lfigisarraytype
+ { 1
+ }
+ { lfigisnumbertype
+ { 3 1 roll
+ lfiggetnext
+ { lfigisnumbertype
+ { 4 3 roll exch 2
+ }
+ { pop 3 2 roll pop 0
+ } ifelse
+ }
+ { 3 2 roll pop 0
+ } ifelse
+ }
+ { pop 0
+ } ifelse
+ } ifelse
+ }
+ { 0
+ } ifelse
+} def
+
+% set arc path: bool x1 y1 x2 y2 x0 y0 lfigsetarc <angle> <angle> <dist>
+% the path goes from x1 y1 to x2 y2 about centre x0 y0,
+% anticlockwise if bool is true else clockwise.
+% The orientations of backwards pointing and forwards pointing
+% arrowheads are returned in the two angles, and
+% the length of the arc is returned in <dist>.
+/lfigsetarc
+{
+ 20 dict begin
+ matrix currentmatrix 8 1 roll
+ 2 copy translate 2 copy 8 2 roll
+ 4 2 roll lfigpsub 6 2 roll lfigpsub
+ dup /y1 exch def dup mul /y1s exch def
+ dup /x1 exch def dup mul /x1s exch def
+ dup /y2 exch def dup mul /y2s exch def
+ dup /x2 exch def dup mul /x2s exch def
+
+ y1s y2s eq
+ { -1
+ }
+ { y1s x2s mul y2s x1s mul sub y1s y2s sub div
+ } ifelse
+ /da exch def
+
+ x1s x2s eq
+ { -1
+ }
+ { x1s y2s mul x2s y1s mul sub x1s x2s sub div
+ } ifelse
+ /db exch def
+
+ da 0 gt db 0 gt and
+ { /LMax da sqrt db sqrt lfigmax def
+ /scalex da sqrt LMax div def
+ /scaley db sqrt LMax div def
+ scalex scaley scale
+ 0 0 LMax
+ 0 0 x1 scalex mul y1 scaley mul lfigangle
+ 0 0 x2 scalex mul y2 scaley mul lfigangle
+ 2 copy eq { 360 add } if
+ 2 copy 8 2 roll
+ 5 index { arc } { arcn } ifelse
+ 2 index 1 index
+ { 90 sub } { 90 add } ifelse
+ dup sin scaley mul exch cos scalex mul atan
+ 2 index 2 index
+ { 90 add } { 90 sub } ifelse
+ dup sin scaley mul exch cos scalex mul atan
+ 5 2 roll % res1 res2 ang1 ang2 anticlockwise
+ { exch sub } { sub } ifelse
+ dup 0 le { 360 add } if lfigpi mul LMax mul 180 div
+ }
+ { 0 0 x1 y1 lfigdistance 0 0 x2 y2 lfigdistance eq
+ 0 0 x1 y1 lfigdistance 0 gt and
+ { 0 0
+ 0 0 x1 y1 lfigdistance
+ 0 0 x1 y1 lfigangle
+ 0 0 x2 y2 lfigangle
+ 2 copy eq { 360 add } if
+ 2 copy 8 2 roll
+ 5 index { arc } { arcn } ifelse
+ 2 index 1 index
+ { 90 sub } { 90 add } ifelse
+ 2 index 2 index
+ { 90 add } { 90 sub } ifelse
+ 5 2 roll % res1 res2 ang1 ang2 clockwise
+ { exch sub } { sub } ifelse
+ dup 0 le { 360 add } if lfigpi mul 0 0 x1 y1 lfigdistance mul 180 div
+ }
+ { x2 y2 lineto pop
+ x2 y2 x1 y1 lfigangle
+ x1 y1 x2 y2 lfigangle
+ x1 y1 x2 y2 lfigdistance
+ } ifelse
+ } ifelse
+ 4 -1 roll setmatrix
+ end
+} def
+
+% lfigsetcurve: set up a Bezier curve from x0 y0 to x3 y3
+% and return arrowhead angles and length of curve (actually 0)
+% x0 y0 x1 y1 x2 y2 x3 y3 lfigsetcurve <angle> <angle> <length>
+/lfigsetcurve
+{ 8 copy curveto pop pop
+ lfigangle
+ 5 1 roll
+ 4 2 roll lfigangle
+ exch
+ 0
+} def
+
+% lfigpaintpath: paint a path of the given shape
+% /paint [ shape ] lfigpaintpath -
+/lfigpaintpath
+{
+ 10 dict begin
+ 0 newpath
+ /prevseen false def
+ /curveseen false def
+ { lfiggetnextitem
+ dup 0 eq { pop exit }
+ { 1 eq
+ { /curveseen true def
+ /curve exch def
+ curve length 0 eq { /curveseen false def } if
+ }
+ { /ycurr exch def
+ /xcurr exch def
+ prevseen
+ { curveseen
+ { curve length 4 eq
+ { xprev yprev
+ curve 0 get curve 1 get
+ curve 2 get curve 3 get
+ xcurr ycurr
+ lfigsetcurve pop pop pop
+ }
+ { xprev yprev xcurr ycurr
+ curve length 1 ge { curve 0 get } { 0 } ifelse
+ curve length 2 ge { curve 1 get } { 0 } ifelse
+ curve length 3 ge { curve 2 get } { true } ifelse
+ 7 1 roll
+ lfigsetarc pop pop pop
+ } ifelse
+ }
+ { xcurr ycurr lineto
+ } ifelse
+ }
+ { xcurr ycurr moveto
+ } ifelse
+ /xprev xcurr def
+ /yprev ycurr def
+ /prevseen true def
+ /curveseen false def
+ } ifelse
+ } ifelse
+ } loop pop pop cvx exec
+ end
+} def
+
+% stroke a path of the given shape in the given linestyle and dash length.
+% Return the origin and angle of the backward and forward arrow heads.
+% dashlength /linestyle [shape] lfigdopath [<point> <angle>] [<point> <angle>]
+/lfigdopath
+{
+ 10 dict begin
+ 0
+ /prevseen false def
+ /curveseen false def
+ /backarrow [] def
+ /fwdarrow [] def
+ {
+ lfiggetnextitem
+ dup 0 eq { pop exit }
+ {
+ 1 eq
+ { /curveseen true def
+ /curve exch def
+ curve length 0 eq { /prevseen false def } if
+ }
+ { /ycurr exch def
+ /xcurr exch def
+ prevseen
+ { newpath xprev yprev moveto
+ curveseen
+ { curve length 4 eq
+ { xprev yprev
+ curve 0 get curve 1 get
+ curve 2 get curve 3 get
+ xcurr ycurr lfigsetcurve
+ }
+ { xprev yprev xcurr ycurr
+ curve length 1 ge { curve 0 get } { 0 } ifelse
+ curve length 2 ge { curve 1 get } { 0 } ifelse
+ curve length 3 ge { curve 2 get } { true } ifelse
+ 7 1 roll
+ lfigsetarc
+ } ifelse
+ }
+ { xcurr ycurr lineto
+ xcurr ycurr xprev yprev lfigangle dup 180 sub
+ xprev yprev xcurr ycurr lfigdistance
+ } ifelse
+ 6 index 6 index cvx exec
+ [ xprev yprev 5 -1 roll ]
+ backarrow length 0 eq
+ { /backarrow exch def }
+ { pop } ifelse
+ [ xcurr ycurr 4 -1 roll ] /fwdarrow exch def
+ } if
+ /xprev xcurr def
+ /yprev ycurr def
+ /prevseen true def
+ /curveseen false def
+ } ifelse
+ } ifelse
+ } loop
+ pop pop pop pop
+ backarrow length 0 eq { [ 0 0 0 ] } { backarrow } ifelse
+ fwdarrow length 0 eq { [ 0 0 0 ] } { fwdarrow } ifelse
+ end
+} def
+
+% lfigdoarrow: draw an arrow head of given form
+% dashlength /lstyle /pstyle hfrac height width [ <point> <angle> ] lfigdoarrow -
+/lfigdoarrow
+{ matrix currentmatrix 8 1 roll
+ dup 0 get 1 index 1 get translate
+ 2 get rotate
+ [ 2 index neg 2 index 0 0
+ 3 index 3 index neg
+ 1 index 10 index mul 0
+ 7 index 7 index ]
+ 4 1 roll pop pop pop
+ dup 3 1 roll
+ gsave lfigpaintpath grestore lfigdopath pop pop
+ setmatrix
+} def
+
+% arrow head styles
+/lfigopen 0.0 def
+/lfighalfopen 0.5 def
+/lfigclosed 1.0 def
+
+% stroke no arrows, forward, back, and both
+/lfignoarrow { pop pop pop pop pop pop pop pop } def
+/lfigforward { 7 -1 roll lfigdoarrow pop } def
+/lfigback { 8 -2 roll pop lfigdoarrow } def
+/lfigboth { 8 -1 roll 7 copy lfigdoarrow pop 7 -1 roll lfigdoarrow } def
+
+% lfigprevious: return previous point on path
+/lfigprevious
+{ lfigisnumbertype
+ { 2 copy }
+ { lfigisarraytype
+ { 2 index 2 index }
+ { 0 0 }
+ ifelse
+ } ifelse
+} def
+
+% label a point in 2nd top dictionary: <point> /name lfigpointdef -
+/lfigpointdef
+{
+ % (Entering lfigpointdef) lfigdebugprint
+ [ 4 2 roll transform
+ /itransform cvx ] cvx
+ currentdict end
+ 3 1 roll
+ % currentdict length currentdict maxlength lt
+ % { def }
+ % { exec moveto (too many labels) show stop }
+ % ifelse
+ def
+ begin
+ % (Leaving lfigpointdef) lfigdebugprint
+} def
+
+% promote labels from second top to third top dictionary
+% <string> lfigpromotelabels -
+/lfigpromotelabels
+{
+ % (Entering lfigpromotelabels) lfigdebugprint
+ currentdict end exch currentdict end
+ { exch 20 string cvs 2 index
+ (@) lfigconcat exch lfigconcat cvn exch def
+ } forall pop begin
+ % (Leaving lfigpromotelabels) lfigdebugprint
+} def
+
+% show labels (except CIRCUM): - lfigshowlabels -
+/lfigshowlabels
+{
+ % (Entering lfigshowlabels) lfigdebugprint
+ currentdict end
+ currentdict
+ { 1 index 20 string cvs (CIRCUM) search % if CIRCUM in key
+ { pop pop pop pop pop }
+ { pop cvx exec 2 copy
+ newpath 1.5 pt 0 360 arc
+ 0 setgray fill
+ /Times-Roman findfont 8 pt scalefont setfont
+ moveto 0.2 cm 0.1 cm rmoveto 20 string cvs show
+ }
+ ifelse
+ } forall
+ begin
+ % (Leaving lfigshowlabels) lfigdebugprint
+} def
+
+% fix an angle to 0 <= res < 360: <angle> lfigfixangle <angle>
+/lfigfixangle
+{
+ % (Entering lfigfixangle) lfigdebugprint
+ { dup 0 ge { exit } if
+ 360 add
+ } loop
+ { dup 360 lt { exit } if
+ 360 sub
+ } loop
+ % (Leaving lfigfixangle) lfigdebugprint
+} def
+
+% find point on circumference of box: alpha a b lfigboxcircum x y
+/lfigboxcircum
+{
+ % (Entering lfigboxcircum) lfigdebugprint
+ 4 dict begin
+ /b exch def
+ /a exch def
+ lfigfixangle /alpha exch def
+ 0 0 a b lfigangle /theta exch def
+
+ % if alpha <= theta, return (a, a*tan(alpha))
+ alpha theta le
+ { a a alpha sin mul alpha cos div }
+ {
+ % else if alpha <= 180 - theta, return (b*cot(alpha), b)
+ alpha 180 theta sub le
+ { b alpha cos mul alpha sin div b }
+ {
+ % else if alpha <= 180 + theta, return (-a, -a*tan(alpha))
+ alpha 180 theta add le
+ { a neg a neg alpha sin mul alpha cos div }
+ {
+ % else if alpha <= 360 - theta, return (-b*cot(alpha), -b)
+ alpha 360 theta sub le
+ { b neg alpha cos mul alpha sin div b neg }
+ {
+ % else 360 - theta <= alpha, return (a, a*tan(alpha))
+ a a alpha sin mul alpha cos div
+ } ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+ end
+ % (Leaving lfigboxcircum) lfigdebugprint
+} def
+
+% find quadratic roots (assume a != 0): a b c lfigqroots x1 x2 2
+% or x2 1
+% or 0
+/lfigqroots
+{
+ 4 dict begin
+ /c exch def
+ /b exch def
+ /a exch def
+ /disc b b mul 4 a c mul mul sub def
+ disc 0 lt
+ { 0
+ }
+ { disc 0 eq
+ { b neg 2 a mul div
+ 1
+ }
+ { b neg disc sqrt add 2 a mul div
+ b neg disc sqrt sub 2 a mul div
+ 2
+ }
+ ifelse
+ }
+ ifelse
+ end
+} def
+
+% work our which quadrant: <angle> lfigquadrant <0-3>
+/lfigquadrant
+{ dup 90 lt
+ { pop 0
+ }
+ { dup 180 lt
+ { pop 1
+ }
+ { 270 lt
+ { 2
+ }
+ { 3
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+
+% find curvebox circum, assuming upper right quadrant: alpha a b xmk lfigcb x y
+/lfigcb
+{
+ 6 dict begin
+ /xmk exch def
+ /b exch def
+ /a exch def
+ /alpha exch def
+ /theta1 0 0 a b xmk sub lfigangle def
+ /theta2 0 0 a xmk sub b lfigangle def
+ alpha theta1 le
+ { % if alpha <= theta1, return (a, a*tan(alpha))
+ a a alpha sin mul alpha cos div
+ }
+ { alpha theta2 ge
+ { % else if alpha > theta2, return (b*cot(alpha), b)
+ b alpha cos mul alpha sin div b
+ }
+ {
+ % else, return the intersection of line and circle
+ a xmk sub b xmk sub xmk 0 0 alpha lfigcircleintersect
+ dup 0 eq
+ { % should never happen, just return any reasonable point
+ pop
+ a b 0.5 lfigpmul
+ }
+ { 1 eq
+ { % should never happen, just return the point on top of stack
+ }
+ { % the usual case, two points on stack, return the larger
+ lfigpmax
+ } ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+ end
+} def
+
+% find point on circumference of curvebox: alpha a b xmk lfigcurveboxcircum x y
+/lfigcurveboxcircum
+{
+ % (Entering lfigcurveboxcircum) lfigdebugprint
+ 5 dict begin
+ /xmk exch def
+ /b exch def
+ /a exch def
+ lfigfixangle /alpha exch def
+
+ % work out which quadrant we are in, and reflect accordingly
+ /quad alpha lfigquadrant def
+ quad 0 eq
+ { alpha a b xmk lfigcb
+ }
+ { quad 1 eq
+ { 180 alpha sub a b xmk lfigcb exch neg exch
+ }
+ { quad 2 eq
+ { alpha 180 sub a b xmk lfigcb neg exch neg exch
+ }
+ { 360 alpha sub a b xmk lfigcb neg
+ } ifelse
+ } ifelse
+ } ifelse
+ end
+ % (Leaving lfigcurveboxcircum) lfigdebugprint
+} def
+
+% find point on circumference of diamond: alpha a b lfigdiamondcircum x y
+/lfigdiamondcircum
+{
+ % (Entering lfigdiamondcircum) lfigdebugprint
+ 4 dict begin
+ /b exch def
+ /a exch def
+ lfigfixangle /alpha exch def
+ b alpha cos abs mul a alpha sin abs mul add /denom exch def
+ a b mul alpha cos mul denom div
+ a b mul alpha sin mul denom div
+ end
+ % (Leaving lfigdiamondcircum) lfigdebugprint
+} def
+
+% find point on circumference of ellipse: alpha a b lfigellipsecircum x y
+/lfigellipsecircum
+{
+ % (Entering lfigellipsecircum) lfigdebugprint
+ 4 dict begin
+ /b exch def
+ /a exch def
+ lfigfixangle /alpha exch def
+ b alpha cos mul dup mul a alpha sin mul dup mul add sqrt /denom exch def
+ a b mul alpha cos mul denom div
+ a b mul alpha sin mul denom div
+ end
+ % (Leaving lfigellipsecircum) lfigdebugprint
+} def
+
+% find point of intersection of two lines each defined by two points
+% x1 y1 x2 y2 x3 y3 x4 y4 lfiglineintersect x y
+/lfiglineintersect
+{
+ % (Entering lfiglineintersect) lfigdebugprint
+ 13 dict begin
+ /y4 exch def
+ /x4 exch def
+ /y3 exch def
+ /x3 exch def
+ /y2 exch def
+ /x2 exch def
+ /y1 exch def
+ /x1 exch def
+ x2 x1 sub /x21 exch def
+ x4 x3 sub /x43 exch def
+ y2 y1 sub /y21 exch def
+ y4 y3 sub /y43 exch def
+ y21 x43 mul y43 x21 mul sub /det exch def
+
+ % calculate x
+ y21 x43 mul x1 mul
+ y43 x21 mul x3 mul sub
+ y3 y1 sub x21 mul x43 mul add
+ det div
+
+ % calculate y
+ x21 y43 mul y1 mul
+ x43 y21 mul y3 mul sub
+ x3 x1 sub y21 mul y43 mul add
+ det neg div
+
+ end
+ % (Leaving lfiglineintersect) lfigdebugprint
+} def
+
+% find point on circumference of polygon
+% alpha radius num theta lfigpolycircum x y
+/lfigpolycircum
+{
+ % (Entering lfigpolycircum) lfigdebugprint
+ 13 dict begin
+ /theta exch def
+ /num exch def
+ /radius exch def
+ /alpha exch def
+
+ % calculate delta, the angle from theta to alpha
+ alpha theta sub lfigfixangle
+
+ % calculate the angle which is the multiple of 360/num closest to delta
+ 360 num div div truncate 360 num div mul theta add /anglea exch def
+
+ % calculate the next multiple of 360/num after anglea
+ anglea 360 num div add /angleb exch def
+
+ % intersect the line through these two points with the alpha line
+ anglea cos anglea sin angleb cos angleb sin
+ 0 0 alpha cos 2 mul alpha sin 2 mul
+ lfiglineintersect radius lfigpmul
+
+ end
+ % (Leaving lfigpolycircum) lfigdebugprint
+} def
+
+% find point of intersection of a point and a circle
+% x0 y0 r x1 y1 theta lfigcircleintersect xa ya xb yb 2
+% or xb yb 1
+% or 0
+/lfigcircleintersect
+{
+ % (Entering lfigcircleintersect) lfigdebugprint
+ 15 dict begin
+ /theta exch def
+ /y1 exch def
+ /x1 exch def
+ /r exch def
+ /y0 exch def
+ /x0 exch def
+
+ % if sin(theta) = 0 then line is horizontal and y must be y1
+ theta sin abs 0.00001 lt
+ {
+ /a 1 def
+ /b -2 x0 mul def
+ /c x0 dup mul y1 y0 sub dup mul add r dup mul sub def
+ a b c lfigqroots dup
+ 0 eq
+ { pop
+ 0
+ }
+ { 1 eq
+ { y1 1
+ }
+ { y1 exch y1 2
+ } ifelse
+ } ifelse
+ }
+ {
+ /ct theta cos theta sin div def
+ /a ct ct mul 1 add def
+ /b ct x1 x0 sub mul y1 add y0 sub 2 mul def
+ /c x1 x0 sub dup mul y1 y0 sub dup mul add r dup mul sub def
+ a b c lfigqroots dup
+ 0 eq
+ { pop
+ 0
+ }
+ { 1 eq
+ { y1 add /yb exch def
+ yb y1 sub ct mul x1 add /xb exch def
+ xb yb 1
+ }
+ { y1 add /ya exch def
+ ya y1 sub ct mul x1 add /xa exch def
+ y1 add /yb exch def
+ yb y1 sub ct mul x1 add /xb exch def
+ xa ya xb yb 2
+ } ifelse
+ } ifelse
+ } ifelse
+ end
+ % (Leaving lfigcircleintersect) lfigdebugprint
+} def
+
+% add CIRCUM operator with this body: <array> lfigcircumdef -
+/lfigcircumdef
+{ % (Entering lfigcircumdef) lfigdebugprint
+ /CIRCUM exch cvx
+ currentdict end
+ 3 1 roll
+ % currentdict length currentdict maxlength lt
+ % { def }
+ % { exec moveto (too many labels) show stop }
+ % ifelse
+ def
+ begin
+ % (Leaving lfigcircumdef) lfigdebugprint
+} def
+
+end
+%%EndResource
+
+%%BeginResource: procset LoutBasicSetup
+% @PrependGraphic file /home/jeff/lout.lib/include/bsf.lpg
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% PostScript @SysPrependGraphic file for @BasicSetup %
+% %
+% This file has been placed in the public domain by its author, %
+% Jeffrey H. Kingston %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% width height linethickness louteuro -
+% draw a Euro symbol of this width and height with this line thickness
+/louteuro {
+ 20 dict begin
+ /eurothick exch def
+ /euroheight exch def
+ /eurowidth exch def
+ /eurostrokewidth euroheight 0.8 mul def
+ /eurostep eurothick 60 cos mul 60 sin div def
+ /eurotheta 40 def
+
+ % llx lly width thickness louteurobox -
+ % draw angled box starting at (llx, lly) with given width and thickness
+ /louteurobox
+ {
+ /euroboxthick exch def
+ /euroboxwidth exch def
+ newpath moveto euroboxwidth 0 rlineto
+ eurostep euroboxthick rlineto
+ euroboxwidth neg 0 rlineto closepath fill
+ } def
+
+ % lower cross stroke
+ 0 euroheight 2 div eurothick 1.5 mul sub
+ eurostrokewidth eurothick louteurobox
+
+ % upper cross stroke
+ 0 euroheight 2 div eurothick 0.5 mul add
+ eurostrokewidth eurostep 2 mul add eurothick louteurobox
+
+ % circular part
+ /eurohctr eurowidth euroheight 2 div eurotheta cos mul sub def
+ /eurovctr euroheight 2 div def
+ newpath
+ eurohctr eurovctr eurovctr eurotheta 350 eurotheta sub arc
+ eurohctr eurovctr eurovctr eurothick sub 365 eurotheta sub eurotheta arcn
+ closepath fill
+ end
+} def
+
+% path for @FullWidthRule symbol
+/LoutRule
+{ 0 0 moveto xsize 0 lineto
+} def
+
+% path for @Box symbol
+/LoutBox
+{ 0 0 moveto xsize 0 lineto
+ xsize ysize lineto 0 ysize lineto
+ closepath
+} def
+
+% path for @CurveBox symbol
+/LoutCurveBox
+{ xmark 0 moveto
+ xsize xmark sub xmark xmark 270 360 arc
+ xsize xmark sub ysize xmark sub xmark 0 90 arc
+ xmark ysize xmark sub xmark 90 180 arc
+ xmark xmark xmark 180 270 arc
+ closepath
+} def
+
+% path for @ShadowBox symbol
+/LoutShadowBox
+{ xmark 2 mul 0 moveto xsize 0 lineto
+ xsize ysize xmark 2 mul sub lineto
+ xsize xmark sub ysize xmark 2 mul sub lineto
+ xsize xmark sub xmark lineto
+ xmark 2 mul xmark lineto
+ closepath
+} def
+
+% set up dictionary containing margin note data: parity LoutMargSet -
+/LoutMargSet
+{ /LoutMargDict 12 dict def
+ LoutMargDict begin
+ /parity exch def
+ /matr matrix currentmatrix def
+ /rightx xsize def
+ /lefty ysize def % highest allowable point for top of next left note
+ /righty ysize def % highest allowable point for top of next right note
+ /max { 2 copy gt { pop } { exch pop } ifelse } def
+ /min { 2 copy lt { pop } { exch pop } ifelse } def
+ end
+} def
+
+%translate coordinate system for marginal notes: type LoutMargShift -
+% where type 0 is left margin, 1 is right margin, 2 is outer, 3 is inner
+/LoutMargShift
+{ LoutMargDict begin
+
+ % y coordinate of top of note, in margin coords, before vertical adjust
+ 0 ysize transform matr itransform exch pop
+
+ % decide whether left or right margin based on type and parity
+ exch [ 0 1 parity 1 parity sub ] exch get 0 eq
+ {
+ % left margin: adjust top of note downwards if overlaps previous note
+ lefty min
+
+ % bottom of note is new lefty position and also translate position
+ ysize sub dup /lefty exch def
+
+ % want right edge of note at coordinate zero
+ xsize neg exch
+ }
+ {
+ % right margin: adjust top of note downwards if overlaps previous note
+ righty min
+
+ % bottom of note is new righty position and also translate position
+ ysize sub dup /righty exch def
+
+ % want left edge of note at coordinate rightx
+ rightx exch
+ } ifelse
+
+ % stack now contains coord of bottom left corner in margin coordinates
+ matr setmatrix translate
+ end
+} def
+
+% create LoutPageDict with left, right, foot, top for @Place symbol users
+/LoutPageSet
+{
+ /LoutPageDict 5 dict def
+ LoutPageDict begin
+ /matr matrix currentmatrix def
+ /left 0 def
+ /right xsize def
+ /foot 0 def
+ /top ysize def
+ end
+
+} def
+
+%%EndResource
+
+%%EndProlog
+
+%%BeginSetup
+%%BeginResource: encoding vec2
+/vec2 [
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright
+/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
+/zero /one /two /three /four /five /six /seven
+/eight /nine /colon /semicolon /less /equal /greater /question
+/at /A /B /C /D /E /F /G
+/H /I /J /K /L /M /N /O
+/P /Q /R /S /T /U /V /W
+/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
+/quoteleft /a /b /c /d /e /f /g
+/h /i /j /k /l /m /n /o
+/p /q /r /s /t /u /v /w
+/x /y /z /braceleft /bar /braceright /asciitilde /.notdef
+/quotesinglbase /quotedblbase /ellipsis /OE /oe /quotedblleft /quotedblright /fi
+/fl /endash /emdash /bullet /dagger /daggerdbl /florin /fraction
+/dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent
+/dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek /caron
+/space /exclamdown /cent /sterling /currency /yen /brokenbar /section
+/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron
+/degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered
+/cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown
+/Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
+/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis
+/Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply
+/Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls
+/agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla
+/egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
+/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide
+/oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis
+] def
+%%EndResource
+
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+%%EndSetup
+
+%%Page: i 1
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt2 vec2 /Times-Bold LoutRecode
+/fnt2 { /Times-Boldfnt2 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt3 vec2 /Times-Italic LoutRecode
+/fnt3 { /Times-Italicfnt3 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+gsave
+1417 -15423 translate
+0.0 0.0 0.0 LoutSetRGBColor
+9066 14006 0 14006 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+240 fnt2 2897 12401(The)m 3352(Design)s 4099(and)s 4540(Implementation)s
+4239 11998(of)m 4511(the)s 2589 11595(Lout)m 3141(Document)s 4250(F)s 6(ormatting)k
+5468(Language)s 240 fnt3 3630 11097(J)m 6(ef)k 4(fr)k 8(e)k 7(y)k
+4310(H.)s 4577(Kingston)s 240 fnt1 2551 10596(Basser)m 3248(Department)s
+4436(of)s 4707(Computer)s 5724(Science,)s 3007 10308(The)m 3435(Uni)s 6(v)k 3(ersity)k
+4489(of)s 4760(Sydne)s 3(y)k 5530(2006,)s 4095 10020(Australia)m
+3739 9568(27)m 4027(January)s 15(,)k 4863(1993)s 240 fnt2
+3901 8775(SUMMAR)m 8(Y)k 240 fnt1 0 8320(Lout)m 543(is)s
+784(a)s 982(high-le)s 6(v)k 3(el)k 2028(language)s
+2979(for)s 3349(document)s 4384(formatting,)s 5530(whose)s 6230(ease)s
+6728(of)s 7030(use)s 7437(has)s 7838(permitted)s 8843(an)s
+0 8032(unprecedented)m 1501(number)s 2340(of)s 2659(adv)s 6(anced)k
+3663(features)s 4517(to)s 4804(be)s 5134(added)s 5812(quickly)s
+6632(and)s 7084(reliably)s 15(.)k 8010(This)s 8535(paper)s
+0 7744(charts)m 625(the)s 978(e)s 6(v)k 4(olution)k
+1933(of)s 2209(the)s 2561(design)s 3248(and)s 3656(implementation)s
+5218(of)s 5493(Lout)s 6010(from)s 6538(conception)s 7650(in)s
+7897(mid-1984)s 8887(to)s 0 7456(public)m 672(release)s 1412(in)s
+1677(October)s 2529(1991.)s 3194(It)s 3421(includes)s 4291(e)s 3(xtensi)k 6(v)k 3(e)k
+5260(discussions)s 6422(of)s 6715(remaining)s 7759(problems)s 8722(and)s
+0 7168(possible)m 840(solutions.)s 240 fnt2 0 6664(K)m 6(eyw)k 2(ords)k
+240 fnt1 1143 6665(document)m 2147(formatting)s 3208(typesetting)s
+grestore
+gsave
+1417 -15423 translate
+0.0 0.0 0.0 LoutSetRGBColor
+0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 1 2
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt2 vec2 /Times-Bold LoutRecode
+/fnt2 { /Times-Boldfnt2 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt3 vec2 /Times-Italic LoutRecode
+/fnt3 { /Times-Italicfnt3 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+gsave
+1417 -15423 translate
+0.0 0.0 0.0 LoutSetRGBColor
+9066 14006 0 14006 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+240 fnt2 2897 12401(The)m 3352(Design)s 4099(and)s 4540(Implementation)s
+4239 11998(of)m 4511(the)s 2589 11595(Lout)m 3141(Document)s 4250(F)s 6(ormatting)k
+5468(Language)s 240 fnt3 3630 11097(J)m 6(ef)k 4(fr)k 8(e)k 7(y)k
+4310(H.)s 4577(Kingston)s 240 fnt1 2551 10596(Basser)m 3248(Department)s
+4436(of)s 4707(Computer)s 5724(Science,)s 3007 10308(The)m 3435(Uni)s 6(v)k 3(ersity)k
+4489(of)s 4760(Sydne)s 3(y)k 5530(2006,)s 4095 10020(Australia)m
+3739 9568(27)m 4027(January)s 15(,)k 4863(1993)s 240 fnt2
+0 8926(1.)m 291(Intr)s 4(oduction)k
+[ /Dest /LOUT18_694_s1_0_1 /DEST pdfmark
+240 fnt1 480 8495(Lout)m
+985([1,)s 1284(2])s 1515(is)s 1718(a)s 1877(high-le)s 6(v)k 3(el)k
+2885(language)s 3798(for)s 4129(document)s 5126(formatting,)s 6234(designed)s
+7136(and)s 7533(implemented)s 8832(by)s 0 8207(the)m 341(author)s 13(.)k
+1096(The)s 1517(implementation,)s 3117(kno)s 6(wn)k 3814(as)s
+4057(Basser)s 4747(Lout,)s 5299(is)s 5502(a)s 5661(fully)s
+6159(operational)s 7282(production)s 8368(v)s 3(ersion)k 0 7919(written)m
+736(in)s 983(C)s 1198(for)s 1540(the)s 1891(Unix)s
+2429(operating)s 3389(system,)s 153 fnt1 4100 8008(1)m 240 fnt1
+4223 7919(which)m 4869(translates)s 5824(Lout)s 6340(source)s 7023(code)s
+7535(into)s 7964(PostScript,)s 153 fnt1 8993 8008(2)m 240 fnt1
+0 7631(a)m 201(de)s 6(vice-independent)k 2164(graphics)s 3061(rendering)s
+4066(language)s 5021(accepted)s 5951(by)s 6281(man)s 3(y)k
+6900(high-resolution)s 8454(output)s 0 7343(de)m 6(vices,)k 833(including)s
+1805(most)s 2346(laser)s 2871(printers.)s 3779(Basser)s 4492(Lout)s
+5019(is)s 5244(a)s 4(v)k 6(ailable)k 6168(free)s
+6609(of)s 6895(char)s 4(ge)k 7600([3].)s 8057(It)s
+8278(includes)s 0 7055(installation)m 1118(instructions,)s 2339(C)s 2550(source,)s
+3281(se)s 6(v)k 3(en)k 3873(standard)s 4740(packages,)s
+5723(and)s 6127(complete)s 7058(documentation)s 8536(in)s 8778(the)s
+0 6767(form)m 524(of)s 795(six)s 1129(technical)s 2046(reports)s
+2760(and)s 3164(a)s 3330(manual)s 4089(page.)s 480 6393(The)m
+900(Lout)s 1404(project)s 2118(arose)s 2670(out)s 3027(of)s
+3290(the)s 3629(author')s 13(s)k 4442(desire)s 5060(to)s
+5290(bring)s 5840(to)s 6070(document)s 7066(formatting)s 8118(languages)s
+0 6105(the)m 343(ele)s 3(g)k 1(ance)k 1225(of)s
+1491(e)s 3(xpression)k 2562(found)s 3174(in)s 3411(programming)s
+4761(languages)s 5763(lik)s 2(e)k 6170(Algol-)s 6783(60)s
+7072(and)s 7471(P)s 3(ascal.)k 8236(This)s 8706(em-)s
+0 5817(phasis)m 638(on)s 924(e)s 3(xpressi)k 6(v)k 3(eness)k
+2373(has)s 2731(produced)s 3669(an)s 3941(order)s 4493(of)s
+4753(magnitude)s 5808(reduction)s 6757(in)s 6988(the)s 7325(cost)s
+7759(of)s 8018(de)s 6(v)k 3(eloping)k 0 5529(document)m
+998(formatting)s 2053(applications.)s 3366(F)s 3(or)k 3748(e)s 3(xample,)k
+4656(an)s 4933(equation)s 5807(formatting)s 6862(application,)s 8025(which)s
+8660(may)s 0 5241(be)m 282(dif\207cult)s 1098(or)s 1357(impossible)s
+2449(to)s 2688(add)s 3092(to)s 3331(other)s 3882(systems,)s
+4746(can)s 5135(be)s 5417(written)s 6150(in)s 6393(Lout)s
+6905(in)s 7148(a)s 7314(fe)s 6(w)k 7720(days.)s
+480 4867(When)m 1099(e)s 3(xpert)k 1742(users)s 2274(can)s
+2652(implement)s 3724(such)s 4209(applications)s 5405(quickly)s 15(,)k
+6204(non-)s 6632(e)s 3(xperts)k 7360(bene\207t.)s 8164(Although)s
+0 4579(Lout)m 509(itself)s 1053(pro)s 3(vides)k 1922(only)s
+2398(a)s 2560(small)s 3129(k)s 2(ernel)k 3775(of)s
+4042(carefully)s 4941(chosen)s 5659(primiti)s 6(v)k 3(es,)k
+6721(packages)s 7646(written)s 8375(in)s 8614(Lout)s 0 4291(and)m
+399(distrib)s 4(uted)k 1470(with)s 1946(Basser)s 2638(Lout)s
+3145(pro)s 3(vide)k 3923(an)s 4201(unprecedented)s 5649(array)s
+6187(of)s 6453(adv)s 6(anced)k 7404(features)s 8204(in)s
+8442(a)s 8602(form)s 0 4003(accessible)m 1035(to)s 1286(non-)s
+1714(e)s 3(xpert)k 2380(users.)s 3047(The)s 3487(features)s
+4305(include)s 5076(rotation)s 5888(and)s 6304(scaling,)s 7100(fonts,)s
+7697(paragraph)s 8722(and)s 0 3715(page)m 500(breaking,)s 1435(displays)s
+2262(and)s 2657(lists,)s 3139(\210oating)s 3915(\207gures)s 4608(and)s
+5004(tables,)s 5659(footnotes,)s 6647(chapters)s 7486(and)s 7881(sections)s
+8693(\(au-)s 0 3427(tomatically)m 1128(numbered\),)s 2272(running)s 3070(page)s
+3579(headers)s 4361(and)s 4765(footers,)s 5536(odd-)s 5964(e)s 6(v)k 3(en)k
+6464(page)s 6973(layouts,)s 7772(automatically)s 0 3139(generated)m 975(tables)s
+1570(of)s 1829(contents,)s 2720(sorted)s 3350(inde)s 3(x)k 3(es)k
+4113(and)s 4505(reference)s 5435(lists,)s 5914(bibliographic)s 7229(and)s
+7621(other)s 8159(databases)s 0 2851(\(including)m 1038(databases)s 2008(of)s
+2281(formats)s 3064(for)s 3405(printing)s 4217(references\),)s 5386(equations,)s
+6412(tables,)s 7079(diagrams,)s 8065(formatting)s 0 2563(of)m 271(P)s 3(ascal)k
+933(programs,)s 1943(and)s 2347(automatically)s 3701(maintained)s 4821(cross)s
+5363(references.)s 480 2189(This)m 1015(paper)s 1666(charts)s 2347(the)s
+2755(e)s 6(v)k 4(olution)k 3766(of)s 4097(Lout)s
+4669(from)s 5253(conception)s 6420(in)s 6723(mid-1984)s 7768(to)s
+8067(the)s 8475(public)s 0 1901(release)m 722(of)s 997(Basser)s
+1699(Lout)s 2215(in)s 2462(October)s 3297(1991.)s 3945(Lout)s
+4461(is)s 4676(or)s 4(g)k 1(anized)k 5676(around)s
+6403(four)s 6866(k)s 2(e)k 3(y)k 7265(concepts)s
+8157(\211)s 8342(objects,)s 0 1613(de\207nitions,)m 1131(g)s 1(alle)k 3(ys,)k
+1925(and)s 2343(cross)s 2899(references)s 3944(\211)s 4138(and)s
+4556(the)s 3(y)k 5033(were)s 5567(de)s 6(v)k 3(eloped)k
+6614(in)s 6871(the)s 7233(order)s 7811(listed,)s 8449(so)s
+8730(this)s 0 1325(paper)m 593(will)s 1022(treat)s 1508(each)s
+2006(in)s 2252(turn,)s 2747(discussing)s 3800(its)s 4079(design,)s
+4814(implementation,)s 6424(problems,)s 7424(and)s 7831(prospects)s 8788(for)s
+1134 0 0 0 240 288 60 0 574 LoutGr2
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+122 fnt1 0 379(1)m 192 fnt1 58 309(Unix)m 485(is)s
+653(a)s 786(trademark)s 1609(of)s 1825(A)s 21(T&T)k
+2370(Bell)s 2733(Laboratories.)s 122 fnt1 0 112(2)m 192 fnt1
+67 42(PostScript)m 900(is)s 1068(a)s 1201(trademark)s 2024(of)s
+2240(Adobe)s 2796(Systems,)s 3519(Incorporated.)s
+grestore
+gsave
+1417 -15423 translate
+0.0 0.0 0.0 LoutSetRGBColor 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 2 3
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Symbol
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt2 vec2 /Times-Bold LoutRecode
+/fnt2 { /Times-Boldfnt2 LoutFont } def
+%%IncludeResource: font Symbol
+/fnt4 { /Symbol LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt3 vec2 /Times-Italic LoutRecode
+/fnt3 { /Times-Italicfnt3 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt5 vec2 /Helvetica LoutRecode
+/fnt5 { /Helveticafnt5 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5765 -1579(-)m 5893(2)s 6067(-)s 9066 13419 0 13310 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+0 13256(further)m 709(impro)s 3(v)k 3(ement.)k
+240 fnt2 0 12463(2.)m 291(Objects)s
+[ /Dest /LOUT18_694_s2_0_1 /DEST pdfmark
+240 fnt1 480 11987(The)m
+923(essence)s 1725(of)s 2011(an)s 3(y)k 2424(mo)s 3(v)k 3(e)k
+3021(to)s 3276(a)s 3457(higher)s 4144(le)s 6(v)k 3(el)k
+4669(is)s 4895(the)s 5258(introduction)s 6500(of)s 6786(some)s
+7363(abstraction)s 8484(which)s 0 11699(serv)m 3(es)k 639(to)s
+872(or)s 4(g)k 1(anize)k 1740(the)s 2082(lo)s 6(w-)k
+2503(le)s 6(v)k 3(el)k 3006(operations,)s 4103(resulting)s
+4986(in)s 5223(a)s 5383(more)s 5923(succinct)s 6760(e)s 3(xpression)k
+7831(of)s 8096(their)s 8586(com-)s 0 11411(mon)m 475(combinations)s
+1806(at)s 2030(the)s 2369(cost)s 2805(of)s 3068(some)s
+3620(loss)s 4034(of)s 4297(detailed)s 5102(control.)s 5934(The)s
+6354(early)s 6876(part)s 7298(of)s 7561(the)s 7900(Lout)s
+8403(project)s 0 11123(w)m 2(as)k 426(spent)s 996(in)s
+1245(the)s 1598(de)s 6(v)k 3(elopment)k 2891(of)s
+3167(such)s 3668(an)s 3957(abstraction)s 5067(for)s 5411(the)s
+5764(b)s 4(uilding)k 6616(blocks)s 7298(of)s 7574(documents,)s
+8724(one)s 0 10835(which)m 635(could)s 1217(e)s 3(xplain,)k
+2017(not)s 2375(just)s 2772(the)s 3113(simple)s 3798(phenomena)s
+4954(of)s 5217(w)s 2(ords,)k 5899(lines,)s 6450(and)s
+6846(paragraphs,)s 7994(b)s 4(ut)k 8348(also)s 8778(the)s
+0 10547(alignment)m 1016(of)s 1287(columns)s 2149(in)s 2392(tables,)s
+3056(and)s 3460(the)s 3808(comple)s 3(x)k 4684(nested)s
+5353(structures)s 6332(of)s 6603(equations.)s 240 fnt2 0 9898(2.1.)m
+471(The)s 926(genesis)s 1697(of)s 1969(the)s 2343(object)s
+3026(abstraction)s
+[ /Dest /LOUTgenesis /DEST pdfmark
+240 fnt1 480 9421(When)m 1163(one)s 1620(e)s 3(xamines)k
+2626(pre)s 6(vious)k 3549(document)s 4608(formatting)s 5724(systems)s
+6587([4])s 6958(looking)s 7798(for)s 8191(ideas)s 8788(for)s
+0 9133(abstractions,)m 1245(as)s 1492(the)s 1837(author)s 2505(did)s
+2866(in)s 3106(1984,)s 3690(the)s 4035(Eqn)s 4475(formatting)s
+5533(language)s 6450([5])s 6764(stands)s 7410(out)s 7773(lik)s 2(e)k
+8182(a)s 8344(beacon.)s 0 8845(In)m 256(Eqn,)s 749(a)s
+915(mathematical)s 2256(formula)s 3072(such)s 3568(as)s 168 fnt4
+586 8390(2)m 240 fnt3 480 8330(x)m 240 fnt4 738 8322(+)m
+939(1)s gsave
+480 8274 translate
+240 fnt3 553 0 0 0 240 288 12 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke
+grestore
+
+grestore
+700 8046(4)m 240 fnt1 0 7535(is)m
+210(produced)s 1159(by)s 1453(typing)s 220 fnt5 480 7037({ x sup 2 + 1 } o)m 3(v)k 5(er 4)k
+240 fnt1 0 6541(in)m 261(the)s 627(input)s 1197(\207le;)s
+220 fnt5 1632 6538(sup)m 240 fnt1 2056 6541(and)m 220 fnt5
+2478 6538(o)m 3(v)k 5(er)k 240 fnt1 2975 6541(are)m
+3340(binary)s 4023(operators,)s 5037(and)s 5459(braces)s 6138(are)s
+6503(used)s 7018(for)s 7374(grouping.)s 8421(This)s 8916(is)s
+0 6253(document)m 1017(formatting)s 2091(at)s 2337(a)s 2516(v)s 3(ery)k
+3006(high)s 3502(le)s 6(v)k 3(el,)k 4077(close)s
+4638(to)s 4890(the)s 5252(language)s 6185(of)s 6469(mathematics)s
+7741(itself,)s 8337(with)s 8833(all)s 0 5965(reference)m 943(to)s
+1182(font)s 1627(changes)s 2449(and)s 2853(spacing)s 3637(suppressed.)s
+480 5591(Eqn)m 916(pro)s 3(vides)k 1780(a)s 1938(single)s
+2557(data)s 3008(type)s 3468(\(let)s 3837(us)s 4093(call)s
+4485(it)s 4669(the)s 240 fnt3 5009 5593(e)m 4(xpr)k 8(ession)k
+240 fnt1 6014 5591(\),)m 6192(b)s 4(uilt)k 6679(up)s
+6964(recursi)s 6(v)k 3(ely)k 8062(in)s 8297(conte)s 3(xt-)k
+0 5303(free)m 457(style:)s 1106(where)s 1778(one)s 2212(e)s 3(xpression)k
+3321(may)s 3819(appear)s 9(,)k 4586(an)s 3(y)k
+5015(e)s 3(xpression)k 6124(may)s 6622(appear)s 13(.)k
+7442(This)s 7950(approach)s 8916(is)s 0 5015(common)m 905(in)s
+1158(algebra)s 1931(and)s 2345(programming)s 3710(languages,)s 4785(where)s
+5435(its)s 5721(simplicity)s 6740(and)s 7154(e)s 3(xpressi)k 6(v)k 3(eness)k
+8625(ha)s 4(v)k 3(e)k 0 4727(long)m 479(been)s
+987(appreciated;)s 2199(b)s 4(ut)k 2560(Eqn)s 3002(w)s 2(as)k
+3423(the)s 3770(\207rst)s 4200(language)s 5119(to)s 5357(demonstrate)s
+6581(its)s 6856(utility)s 7479(in)s 7721(document)s 8724(for)s 4(-)k
+0 4439(matting.)m 480 4065(Each)m 1015(e)s 3(xpression)k 2092(is)s
+2302(treated)s 3009(by)s 3304(Eqn)s 3747(as)s 3997(a)s
+4163(rectangle)s 5094(with)s 5577(a)s 240 fnt3 5743 4067(horizontal)m
+6787(axis)s 240 fnt1 7167 4065(,)m 7274(used)s 7771(for)s
+8110(alignment)s 0 3777(with)m 482(adjacent)s 1338(e)s 3(xpressions:)k
+553 519 0 288 240 288 60 480 2918 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+553 519 0 288 240 288 60 0 0 LoutGr2
+/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+553 519 0 288 240 288 60 0 0 LoutGr2
+
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd
+
+ ] lfigdopath
+pop pop
+grestore
+168 fnt4 106 404(2)m 240 fnt3 0 344(x)m 240 fnt4
+258 336(+)m 459(1)s gsave
+0 288 translate
+240 fnt3 553 0 0 0 240 288 12 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke
+grestore
+
+grestore
+220 60(4)m
+grestore
+
+grestore
+end end restore
+grestore
+0 2467(The)m
+425(size)s 848(and)s 1248(rendering)s 2213(of)s 2481(the)s
+2825(e)s 3(xpression)k 3898(on)s 4191(the)s 4536(printed)s
+5267(page)s 5771(are)s 6114(kno)s 6(wn)k 6815(only)s
+7291(to)s 7526(the)s 7870(implementa-)s 0 2179(tion,)m 481(ne)s 6(v)k 3(er)k
+1066(e)s 3(xplicitly)k 2021(calculated)s 3050(or)s 3312(accessed)s
+4208(by)s 4505(the)s 4855(user)s 13(.)k 5407(This)s
+5886(prohibition)s 7008(is)s 7221(crucial)s 7927(to)s 8169(the)s
+8520(main-)s 0 1891(tenance)m 785(of)s 1055(the)s 1402(conte)s 3(xt-)k
+2171(free)s 2596(property)s 3459(in)s 3701(practice.)s 4619(In)s
+4874(Lout,)s 5432(for)s 5769(e)s 3(xample,)k 6682(equations,)s
+7705(\207gures,)s 8462(tables,)s 0 1603(and)m 393(arbitrary)s 1256(objects)s
+1972(may)s 2427(be)s 2697(mix)s 3(ed)k 3338(together)s
+4169(freely)s 15(.)k 4863(This)s 5327(w)s 2(ould)k
+5970(be)s 6241(impossible)s 7321(if)s 7526(size)s 7941(information)s
+0 1315(w)m 2(as)k 421(hidden)s 1130(from)s 1654(the)s
+2002(implementation)s 3559(in)s 3802(user)s 4260(calculations.)s 480 941(The)m
+927(object)s 1591(abstraction)s 2715(of)s 3006(Lout)s 3537(is)s
+3767(a)s 3952(direct)s 4575(descendant)s 5717(of)s 6008(the)s
+6375(Eqn)s 6838(e)s 3(xpression.)k 8041(It)s 8266(emplo)s 2(ys)k
+0 653(the)m 385(same)s 969(conte)s 3(xt-free)k 2212(recursi)s 6(v)k 3(e)k
+3171(style)s 3715(of)s 4023(construction,)s 5350(and)s 5791(each)s
+6323(object)s 7004(is)s 7251(treated)s 7995(by)s 8326(Lout)s
+8876(as)s
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 3 4
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Symbol
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt3 vec2 /Times-Italic LoutRecode
+/fnt3 { /Times-Italicfnt3 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt2 vec2 /Times-Bold LoutRecode
+/fnt2 { /Times-Boldfnt2 LoutFont } def
+%%IncludeResource: font Symbol
+/fnt4 { /Symbol LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt5 vec2 /Helvetica LoutRecode
+/fnt5 { /Helveticafnt5 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5770 -1579(-)m 5898(3)s 6062(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+0 13253(a)m 166(rectangle:)s
+1701 453 567 198 240 288 60 480 12460 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+1701 453 567 198 240 288 60 0 0 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+1701 453 567 198 240 288 60 0 0 LoutGr2
+/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+1701 453 567 198 240 288 60 0 0 LoutGr2
+
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd
+[]
+xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
+pop pop
+grestore
+
+grestore
+
+grestore
+end end restore
+grestore
+end end restore
+grestore
+0 12007(The)m 442(horizontal)s 1481(axis,)s 1987(called)s 2630(a)s
+240 fnt3 2810 12009(r)m 10(ow)k 3244(mark)s 240 fnt1
+3814 12007(in)m 4072(Lout,)s 4645(has)s 5030(a)s 5210(v)s 3(ertical)k
+5992(analogue)s 6926(called)s 7569(a)s 240 fnt3 7749 12009(column)m
+8523(mark)s 240 fnt1 9019 12007(,)m 0 11719(creating)m 822(a)s
+988(v)s 6(aluable)k 1848(symmetry)s 2857(between)s 3711(horizontal)s
+4735(and)s 5139(v)s 3(ertical.)k 6014(Multiple)s 6893(column)s
+7668(and)s 8072(ro)s 6(w)k 8491(marks)s 0 11431(are)m
+347(permitted:)s 1984 1189 0 1189 240 288 60 480 9902 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+680 453 0 453 240 288 60 0 736 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+680 453 0 453 240 288 60 0 0 LoutGr2
+/lfiggrey [ lfigbox ] gsave lfigpaintpath grestore
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+
+grestore
+(A) lfigpromotelabels
+grestore
+737 453 0 453 240 288 60 1247 736 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+567 453 0 453 240 288 60 0 0 LoutGr2
+/lfiggrey [ lfigbox ] gsave lfigpaintpath grestore
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+
+grestore
+(B) lfigpromotelabels
+grestore
+680 453 0 453 240 288 60 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+396 453 0 453 240 288 60 0 0 LoutGr2
+/lfiggrey [ lfigbox ] gsave lfigpaintpath grestore
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+
+grestore
+(C) lfigpromotelabels
+grestore
+737 453 0 453 240 288 60 1247 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+737 453 0 453 240 288 60 0 0 LoutGr2
+/lfiggrey [ lfigbox ] gsave lfigpaintpath grestore
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+
+grestore
+(D) lfigpromotelabels
+grestore
+0 0 0 0 240 288 60 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ 0.3 cm 0 A@W lfigpsub lfigprevious /FROM lfigpointdef
+B@W 1.6 cm 0 lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+0 0 0 0 240 288 60 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ 0.3 cm 0 C@W lfigpsub lfigprevious /FROM lfigpointdef
+D@W 1.6 cm 0 lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+0 0 0 0 240 288 60 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ A@NW 0 0.3 cm lfigpadd lfigprevious /FROM lfigpointdef
+0 0.3 cm C@SW lfigpsub lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+0 0 0 0 240 288 60 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ B@NW 0.3 cm 0.3 cm lfigpadd lfigprevious /FROM lfigpointdef
+D@SW 0.3 cm -0.3 cm lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+end end restore
+grestore
+0 9451(so)m 266(that)s 684(objects)s 1412(are)s
+1759(able)s 2213(to)s 2452(represent)s 3387(tables.)s 480 9077(This)m
+946(abstraction)s 2041(has)s 2401(some)s 2952(limitations,)s 4069(the)s
+4407(most)s 4922(ob)s 3(vious)k 5719(being)s 6293(the)s
+6631(restriction)s 7645(of)s 7906(size)s 8322(calcula-)s 0 8789(tions)m
+507(to)s 736(rectangular)s 1860(bounding)s 2809(box)s 3(es.)k
+3519(Non-)s 4000(rectangular)s 5124(and)s 5518(disconnected)s 6815(shapes)s
+7494(arise)s 7990(naturally)s 8883(in)s 0 8501(\207gures)m 704(and)s
+1111(in)s 1356(the)s 1707(characters)s 2727(of)s 3001(fonts;)s
+3594(the)s 3944(e)s 3(xtension)k 4918(to)s 5159(them)s
+5700(is)s 5912(conceptually)s 7191(straightforw)s 2(ard)k 8722(and)s
+0 8213(might)m 615(help)s 1076(to)s 1311(e)s 3(xplain)k
+2065(some)s 2622(\207ne)s 3033(points)s 3665(of)s 3933(layout)s
+4587(such)s 5079(as)s 5325(k)s 2(erning.)k 6214(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
+7170(there)s 7699(are)s 8042(implemen-)s 0 7925(tation)m 599(and)s
+1001(language)s 1918(design)s 2598(problems,)s 3592(particularly)s 4744(when)s
+5317(\207lling)s 5939(non-)s 6367(rectangular)s 7498(shapes)s 8185(with)s
+8664(te)s 3(xt,)k 0 7637(and)m 404(so)s 670(the)s
+1018(author)s 1689(chose)s 2290(to)s 2529(k)s 2(eep)k
+3032(to)s 3271(Eqn')s 13(s)k 3867(rectangles.)s 480 7263(A)m
+766(more)s 1370(fundamental)s 2676(limitation)s 3718(of)s 4045(the)s
+4450(object)s 5151(abstraction)s 6312(arises)s 6963(from)s 7543(the)s
+7948(inability)s 8855(of)s 0 6975(recursi)m 6(v)k 3(e)k
+936(data)s 1408(types)s 1978(to)s 2231(describe)s 3097(cross-link)s 2(ed)k
+4335(structures,)s 5384(which)s 6040(seem)s 6605(to)s 6858(require)s
+7604(some)s 8179(means)s 8855(of)s 0 6687(naming)m 756(the)s
+1089(multiply)s 1938(referenced)s 2988(parts.)s 3601(Lout)s 4098(is)s
+4293(obliged)s 5054(to)s 5278(introduce)s 6222(additional)s 7218(abstractions)s
+8395(to)s 8618(cope)s 0 6399(with)m 490(cross)s 1040(linking:)s
+1892(g)s 1(alle)k 3(ys)k 2624(for)s 2970(inserting)s
+3867(te)s 3(xt)k 4291(into)s 4724(pages)s 5328(\(Section)s
+6189(5.1\),)s 6683(cross)s 7233(references)s 8273(\(Section)s 0 6111(6.1\),)m
+490(and)s 898(labelled)s 1716(points)s 2356(in)s 2603(\207gure)s
+3221(dra)s 3(wing)k 4059([6].)s 4506(An)s 4860(abstraction)s
+5969(closer)s 6603(to)s 6846(h)s 1(yperte)k 3(xt)k
+7809(might)s 8431(form)s 8960(a)s 0 5823(more)m 547(uni\207ed)s
+1270(basis)s 1799(for)s 2137(these)s 2684(features.)s 240 fnt2
+0 5224(2.2.)m 471(Grammatical)s 1893(and)s 2334(lexical)s 3039(structur)s 4(e)k
+
+[ /Dest /LOUTlexical /DEST pdfmark
+240 fnt1 480 4792(If)m 700(objects)s 1417(are)s 1754(to)s
+1982(be)s 2253(constructed)s 3403(lik)s 2(e)k 3804(mathematical)s
+5134(e)s 3(xpressions,)k 6344(the)s 6681(natural)s 7388(notation)s
+8219(is)s 8418(a)s 8573(func-)s 0 4504(tional)m 599(language)s
+1519(based)s 2122(on)s 2419(operators,)s 3415(as)s 3665(in)s
+3908(Eqn.)s 4458(The)s 4886(grammar)s 5808(of)s 6079(Lout)s
+6591(objects)s 7319(is)s 7529(accordingly)s 240 fnt4 1332 3945(\256)m
+1332 3612(\256)m 1332 3279(\256)m 1332 2995(\256)m 1332 2662(\256)m 1332 2368(\256)m
+1332 2035(\256)m 1332 1751(\256)m 240 fnt3 480 3953(object)m 1826(object)s
+2498(in\207xop)s 3227(object)s 1826 3620(pr)m 8(e\207xop)k 2680(object)s
+1826 3287(object)m 2498(post\207xop)s 1826 3003(nopar)m 2(sop)k 1826 2670(liter)m 3(alwor)k 8(d)k
+220 fnt5 1826 2371({)m 240 fnt3 1974 2376(object)m 220 fnt5
+2646 2371(})m 240 fnt3 1826 2043(object)m 2498(object)s 240 fnt1
+0 1248(where)m 240 fnt3 640 1250(in\207xop)m 240 fnt1 1285 1248(,)m
+240 fnt3 1391 1250(pr)m 8(e\207xop)k 240 fnt1 2161 1248(,)m
+240 fnt3 2267 1250(post\207xop)m 240 fnt1 3125 1248(,)m 3232(and)s
+240 fnt3 3635 1250(nopar)m 2(sop)k 240 fnt1 4591 1248(are)m
+4938(identi\207ers)s 5943(naming)s 6713(operators)s 7653(which)s 8294(tak)s 2(e)k
+8745(0,)s 8971(1)s 0 960(or)m 255(2)s 424(parameters,)s
+1573(as)s 1819(sho)s 6(wn,)k 2541(and)s 240 fnt3
+2940 962(liter)m 3(alwor)k 8(d)k 240 fnt1 4067 960(is)m
+4272(a)s 4433(sequence)s 5362(of)s 5628(non-space)s 6649(characters,)s
+7719(or)s 7973(an)s 8251(arbitrary)s 0 672(sequence)m 969(of)s
+1276(characters)s 2330(enclosed)s 3262(in)s 3541(double)s 4285(quotes.)s
+5110(Ambiguities)s 6380(are)s 6763(resolv)s 3(ed)k 7664(by)s
+7995(precedence)s 0 384(and)m 404(associati)s 6(vity)k 15(.)k
+
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 4 5
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Helvetica
+%%+ font Times-Italic
+%%+ font Times-Bold
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt5 vec2 /Helvetica LoutRecode
+/fnt5 { /Helveticafnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt3 vec2 /Times-Italic LoutRecode
+/fnt3 { /Times-Italicfnt3 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt2 vec2 /Times-Bold LoutRecode
+/fnt2 { /Times-Boldfnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5765 -1579(-)m 5893(4)s 6067(-)s 9066 13419 0 13310 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+480 13256(The)m 941(last)s
+1366(production)s 2494(allo)s 6(ws)k 3197(a)s 3397(meaning)s
+4307(for)s 4679(e)s 3(xpressions)k 5877(such)s 6407(as)s
+220 fnt5 6691 13253({})m 240 fnt1 6828 13256(,)m 6968(in)s
+7245(which)s 7921(an)s 8238(object)s 8916(is)s 0 12968(missing.)m
+907(The)s 1333(v)s 6(alue)k 1899(of)s 2168(this)s
+240 fnt3 2562 12970(empty)m 3187(object)s 240 fnt1 3833 12968(is)m
+4041(a)s 4205(rectangle)s 5135(of)s 5404(size)s 5829(0)s
+6002(by)s 6294(0,)s 6519(with)s 6999(one)s 7399(column)s
+8172(mark)s 8722(and)s 0 12680(one)m 402(ro)s 6(w)k
+822(mark,)s 1420(that)s 1838(prints)s 2433(as)s 2683(nothing.)s
+480 12306(The)m 938(second-last)s 2103(production)s 3227(generates)s 4210(sequences)s
+5261(of)s 5562(arbitrary)s 6467(objects)s 7225(separated)s 8215(by)s
+8539(white)s 0 12018(space,)m 671(called)s 240 fnt3 1333 12020(par)m 3(a)k 2(gr)k 3(aphs)k
+240 fnt1 2439 12018(.)m 2636(Ignoring)s 3547(paragraph)s 4593(breaking)s
+5517(for)s 5888(no)s 6(w)k 15(,)k 6421(the)s
+6802(natural)s 7554(meaning)s 8464(is)s 8708(that)s 0 11730(the)m
+361(tw)s 2(o)k 784(objects)s 1525(should)s 2235(appear)s
+2946(side)s 3400(by)s 3707(side,)s 4212(and)s 4629(Lout')s 13(s)k
+5305(parser)s 5961(accordingly)s 7157(interpolates)s 8335(an)s 8632(in\207x)s
+0 11442(horizontal)m 1017(concatenation)s 2395(operator)s 3244(\(see)s 3677(belo)s 6(w\))k
+4377(between)s 5224(them.)s 5859(This)s 6328(operator)s 7177(is)s
+7380(associati)s 6(v)k 3(e,)k 8519(so)s 8778(the)s
+0 11154(grammatical)m 1262(ambiguity)s 2301(does)s 2806(no)s 3113(harm.)s
+3783(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
+4758(the)s 5120(Algol-60)s 6054(rule)s 6496(that)s 6928(white)s
+7530(space)s 8132(should)s 8844(be)s 0 10866(signi\207cant)m 1056(only)s
+1536(as)s 1786(a)s 1952(separator)s 2887(is)s 3097(necessarily)s
+4212(brok)s 2(en)k 4932(by)s 5226(Lout)s 5738(in)s
+5981(just)s 6386(this)s 6782(one)s 7184(place.)s 480 10492(Algol-lik)m 2(e)k
+1506(languages)s 2504(distinguish)s 3601(literal)s 4201(strings)s 4879(from)s
+5393(identi\207ers)s 6389(by)s 6673(enclosing)s 7633(them)s 8161(in)s
+8394(quotes,)s 0 10204(b)m 4(ut)k 372(literals)s 1082(are)s
+1440(f)s 2(ar)k 1773(too)s 2143(frequent)s 3010(in)s
+3264(document)s 4278(formatting)s 5350(for)s 5699(this)s 6106(to)s
+6356(be)s 6649(viable.)s 7408(The)s 7847(con)s 9(v)k 3(entional)k
+0 9916(solution)m 829(is)s 1041(to)s 1282(be)s 3(gin)k
+1870(identi\207ers)s 2878(with)s 3362(a)s 3530(special)s 4250(character)s 9(,)k
+5224(and)s 5630(Lout)s 6144(follo)s 6(ws)k 6908(Scribe)s
+7576([7])s 7895(in)s 8140(using)s 8714(`@')s 0 9628(rather)m
+616(than)s 1085(the)s 1433(`\\')s 1690(of)s 1961(trof)s 6(f)k
+2450([8])s 2767(and)s 3171(T)s 3313 9580(E)m 3456 9628(X)m
+3685([9].)s 480 9254(Ho)m 6(we)k 6(v)k 3(er)k 9(,)k
+1447(Lout)s 1966(tak)s 2(es)k 2513(the)s 2868(unusual)s
+3675(step)s 4120(of)s 4398(making)s 5176(an)s 5466(initial)s
+6084(`@')s 6503(optional.)s 7458(The)s 7893(designers)s 8855(of)s
+0 8966(Eqn)m 449(apparently)s 1519(considered)s 2620(such)s 3122(characters)s
+4147(dis\207guring)s 5244(in)s 5494(\207ne-grained)s 6713(input)s 7272(lik)s 2(e)k
+7691(equations,)s 8722(and)s 0 8678(this)m 401(author)s 1077(agrees.)s
+1856(The)s 2289(implementation)s 3851(is)s 4066(straightforw)s 2(ard:)k
+5707(`@')s 6124(is)s 6339(classed)s 7092(as)s 7347(just)s
+7757(another)s 8539(letter)s 9(,)k 0 8390(and)m 407(e)s 6(v)k 3(ery)k
+986(w)s 2(ord)k 1537(is)s 1750(searched)s 2647(for)s
+2988(in)s 3234(the)s 3585(symbol)s 4348(table.)s 4979(If)s
+5212(it)s 5407(is)s 5620(found,)s 6289(it)s 6484(is)s
+6697(an)s 6983(identi\207er)s 9(,)k 7946(otherwise)s 8934(it)s
+0 8102(is)m 214(a)s 384(literal.)s 1107(A)s 1341(w)s 2(arning)k
+2181(message)s 3051(is)s 3265(printed)s 4004(when)s 4585(a)s
+4755(literal)s 5369(be)s 3(ginning)k 6381(with)s 6867(`@')s
+7284(is)s 7498(found,)s 8168(since)s 8719(it)s 8916(is)s
+0 7814(probably)m 905(a)s 1071(mis-spelt)s 2006(identi\207er)s 13(.)k
+3019(No)s 3365(such)s 3861(safety)s 4485(net)s 4837(is)s
+5047(possible)s 5887(for)s 6225(identi\207ers)s 7231(without)s 8022(`@'.)s
+480 7440(Equation)m 1418(formatting)s 2496(also)s 2951(demands)s 3871(symbols)s
+4737(made)s 5328(from)s 5869(punctuation)s 7074(characters,)s 8165(such)s
+8678(as)s 220 fnt5 8946 7437(+)m 240 fnt1 0 7152(and)m
+220 fnt5 404 7149(<=)m 240 fnt1 652 7152(.)m 816(It)s
+1021(is)s 1231(traditional)s 2267(to)s 2506(allo)s 6(w)k
+3085(such)s 3581(symbols)s 4430(to)s 4669(be)s 4951(juxtaposed,)s
+6095(which)s 6737(means)s 7399(that)s 7817(the)s 8165(input)s
+220 fnt5 480 6702(<=++)m 240 fnt1 0 6251(for)m 354(e)s 3(xample)k
+1234(must)s 1776(be)s 2075(interpreted)s 3184(within)s 3869(the)s
+4234(le)s 3(xical)k 4939(analyser)s 5812(by)s 6123(searching)s
+7109(the)s 7474(symbol)s 8251(table)s 8788(for)s 0 5963(its)m
+306(pre\207x)s 3(es)k 1142(in)s 1416(the)s 1795(order)s
+220 fnt5 2390 5960(<=++)m 240 fnt1 2894 5963(,)m 220 fnt5
+3032 5960(<=+)m 240 fnt1 3408 5963(,)m 220 fnt5 3546 5960(<=)m
+240 fnt1 3794 5963(.)m 3988(Although)s 4981(this)s 5408(tak)s 2(es)k
+5979(quadratic)s 6952(time,)s 7514(in)s 7788(practice)s 8630(such)s
+0 5675(sequences)m 1021(are)s 1368(too)s 1727(short)s 2265(to)s
+2504(mak)s 2(e)k 3076(a)s 3242(more)s 3789(sophisticated)s
+5095(linear)s 5698(method)s 6474(lik)s 2(e)k 6886(tries)s
+7347(w)s 2(orthwhile.)k 240 fnt2 0 5026(2.3.)m 471(Basic)s
+1073(structural)s 2149(operators)s
+[ /Dest /LOUTobjects /DEST pdfmark
+240 fnt1 480 4549(A)m 696(programming)s
+2036(language)s 2941(may)s 3393(be)s 3660(considered)s 4739(complete)s
+5656(when)s 6218(it)s 6395(attains)s 7054(the)s 7388(po)s 6(wer)k
+8025(of)s 8281(a)s 8432(T)s 10(uring)k 0 4261(machine,)m
+917(b)s 4(ut)k 1280(no)s 1574(such)s 2071(criterion)s
+2937(seems)s 3573(rele)s 6(v)k 6(ant)k 4390(to)s
+4630(document)s 5635(formatting.)s 6808(Instead,)s 7606(as)s 7857(the)s
+8206(language)s 0 3973(de)m 6(v)k 3(elops)k 913(and)s
+1338(ne)s 6(w)k 1806(applications)s 3033(are)s 3401(attempted,)s
+4471(de\207ciencies)s 5670(are)s 6038(e)s 3(xposed)k 6899(and)s
+7324(the)s 7693(operator)s 8570(set)s 8916(is)s 0 3685(re)m 6(vised)k
+742(to)s 981(o)s 3(v)k 3(ercome)k 1974(them.)s
+480 3311(Lout)m 1025(has)s 1429(a)s 1629(repertoire)s 2646(of)s
+2950(23)s 3268(primiti)s 6(v)k 3(e)k 4224(operators)s
+5198(\(Figure)s 5990(1\),)s 6390(which)s 7066(has)s 7470(pro)s 3(v)k 3(en)k
+8220(adequate)s 0 3023(for)m 348(a)s 525(wide)s 1056(v)s 6(ariety)k
+1778(of)s 2059(features,)s 2932(including)s 3899(equations,)s 4934(tables,)s
+5609(and)s 6023(page)s 6542(layout,)s 7257(and)s 7672(so)s
+7948(seems)s 8594(to)s 8844(be)s 0 2735(reasonably)m 1077(complete)s
+1995(in)s 2225(this)s 2607(pragmatic)s 3602(sense.)s 4270(In)s
+4513(this)s 4895(section)s 5616(we)s 5937(introduce)s 6883(the)s
+7217(eight)s 7741(concatenation)s 0 2447(and)m 424(mark-hiding)s 1680(operators.)s
+2754(T)s 19(o)k 3075(them)s 3634(f)s 2(alls)k
+4114(the)s 4482(basic)s 5047(task)s 5514(of)s 5806(assembling)s
+6956(comple)s 3(x)k 7853(objects)s 8602(from)s 0 2159(simple)m
+693(ones,)s 1239(and)s 1643(the)s 3(y)k 2106(were)s
+2626(the)s 2974(\207rst)s 3405(to)s 3644(be)s 3926(designed)s
+4835(and)s 5239(implemented.)s 480 1785(Man)m 3(y)k 1094(of)s
+1370(the)s 1723(operators)s 2668(of)s 2944(Eqn)s 3392(can)s
+3786(be)s 4073(vie)s 6(wed)k 4821(as)s 5076(b)s 4(uilding)k
+5928(small)s 6505(tables.)s 7231(A)s 7466(b)s 4(uilt-up)k
+8277(fraction,)s 0 1497(for)m 367(e)s 3(xample,)k 1310(has)s
+1710(one)s 2141(column)s 2945(and)s 3379(three)s 3941(ro)s 6(ws)k
+4480(\(numerator)s 9(,)k 5669(line,)s 6163(and)s 6596(denominator\).)s
+8078(Numerous)s 0 1209(in)m 9(v)k 3(estig)k 1(ations)k
+1377(of)s 1660(this)s 2068(kind)s 2564(con)s 9(vinced)k
+3609(the)s 3969(author)s 4652(that)s 5082(operators)s 6034(capable)s
+6832(of)s 7115(assembling)s 8256(the)s 8616(ro)s 6(ws)k
+0 921(and)m 404(columns)s 1266(of)s 1537(tables)s 2145(w)s 2(ould)k
+2800(suf\207ce)s 3493(for)s 3831(b)s 4(uilding)k 4678(all)s
+4971(kinds)s 5541(of)s 5812(objects.)s 480 547(The)m 906(simplest)s
+1759(objects)s 2485(are)s 2829(empty)s 3479(objects)s 4204(and)s
+4605(literal)s 5213(w)s 2(ords)k 5844(lik)s 2(e)k
+220 fnt5 6254 544(metempsychosis)m 240 fnt1 7882 547(,)m 7986(which)s
+8625(ha)s 4(v)k 3(e)k
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 5 6
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Helvetica
+%%+ font Times-Bold
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt3 vec2 /Times-Italic LoutRecode
+/fnt3 { /Times-Italicfnt3 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt5 vec2 /Helvetica LoutRecode
+/fnt5 { /Helveticafnt5 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt2 vec2 /Times-Bold LoutRecode
+/fnt2 { /Times-Boldfnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5769 -1582(-)m 5897(5)s 6063(-)s 9066 13413 0 13413 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+240 fnt3 266 13217(object)m
+220 fnt5 974 13212(/)m 240 fnt3 1038 13217(gap)m 1511(object)s
+240 fnt1 3816 13215(V)m 26(ertical)k 4613(concatenation)s 5998(with)s
+6480(mark)s 7032(alignment)s 240 fnt3 266 12929(object)m 220 fnt5
+974 12924(//)m 240 fnt3 1099 12929(gap)m 1572(object)s 240 fnt1
+3816 12927(V)m 26(ertical)k 4613(concatenation)s 5998(with)s 6480(left)s
+6857(justi\207cation)s 240 fnt3 266 12641(object)m 220 fnt5 974 12636(|)m
+240 fnt3 1011 12641(gap)m 1484(object)s 240 fnt1 3816 12639(Horizontal)m
+4893(concatenation)s 6278(with)s 6760(mark)s 7312(alignment)s 240 fnt3
+266 12353(object)m 220 fnt5 974 12348(||)m 240 fnt3 1068 12353(gap)m
+1541(object)s 240 fnt1 3816 12351(Horizontal)m 4893(concatenation)s 6278(with)s
+6760(top-justi\207cation)s 240 fnt3 266 12065(object)m 220 fnt5 974 12060(&)m
+240 fnt3 1116 12065(gap)m 1589(object)s 240 fnt1 3816 12063(Horizontal)m
+4893(concatenation)s 6278(within)s 6946(paragraphs)s 220 fnt5 266 11772(@OneCol)m
+240 fnt3 1338 11777(object)m 240 fnt1 3816 11775(Hide)m 4337(all)s
+4630(b)s 4(ut)k 4992(one)s 5394(column)s 6169(mark)s
+6721(of)s 240 fnt3 6992 11777(object)m 220 fnt5 266 11484(@OneRo)m 3(w)k
+240 fnt3 1457 11489(object)m 240 fnt1 3816 11487(Hide)m 4337(all)s
+4630(b)s 4(ut)k 4992(one)s 5394(ro)s 6(w)k
+5814(mark)s 6366(of)s 240 fnt3 6637 11489(object)m 266 11201(font)m
+220 fnt5 762 11196(@F)m 6(ont)k 240 fnt3 1534 11201(object)m
+240 fnt1 3816 11199(Render)m 240 fnt3 4567 11201(object)m 240 fnt1
+5215 11199(in)m 5458(nominated)s 6526(font)s 240 fnt3 266 10913(br)m 8(eakstyle)k
+220 fnt5 1353 10908(@Break)m 240 fnt3 2269 10913(object)m 240 fnt1
+3816 10911(Break)m 4448(paragraphs)s 5548(of)s 240 fnt3 5819 10913(object)m
+240 fnt1 6467 10911(in)m 6710(nominated)s 7778(style)s 240 fnt3
+266 10625(spacestyle)m 220 fnt5 1361 10620(@Space)m 240 fnt3 2318 10625(object)m
+240 fnt1 3816 10623(Render)m 4567(spaces)s 5242(between)s 6096(w)s 2(ords)k
+6730(in)s 6973(nominated)s 8041(style)s 240 fnt3 266 10337(length)m
+220 fnt5 979 10332(@Wide)m 240 fnt3 1813 10337(object)m 240 fnt1
+3816 10335(Render)m 240 fnt3 4567 10337(object)m 240 fnt1 5215 10335(to)m
+5454(width)s 240 fnt3 6056 10337(length)m 266 10049(length)m 220 fnt5
+979 10044(@High)m 240 fnt3 1758 10049(object)m 240 fnt1 3816 10047(Render)m
+240 fnt3 4567 10049(object)m 240 fnt1 5215 10047(to)m 5454(height)s
+240 fnt3 6112 10049(length)m 220 fnt5 266 9756(@HExpand)m 240 fnt3
+1499 9761(object)m 240 fnt1 3816 9759(Expand)m 4606(horizontal)s 5630(g)s 1(aps)k
+6119(to)s 6358(\207ll)s 6678(a)s 4(v)k 6(ailable)k
+7586(space)s 220 fnt5 266 9468(@VExpand)m 240 fnt3 1487 9473(object)m
+240 fnt1 3816 9471(Expand)m 4606(v)s 3(ertical)k 5373(g)s 1(aps)k
+5862(to)s 6101(\207ll)s 6421(a)s 4(v)k 6(ailable)k
+7329(space)s 220 fnt5 266 9180(@HScale)m 240 fnt3 1307 9185(object)m
+240 fnt1 3816 9183(Horizontal)m 4893(geometrical)s 6075(scaling)s 6805(to)s
+7044(\207ll)s 7364(a)s 4(v)k 6(ailable)k 8272(space)s
+220 fnt5 266 8892(@VScale)m 240 fnt3 1295 8897(object)m 240 fnt1
+3816 8895(V)m 26(ertical)k 4613(geometrical)s 5795(scaling)s 6525(to)s
+6764(\207ll)s 7084(a)s 4(v)k 6(ailable)k 7992(space)s
+240 fnt3 266 8609(angle)m 220 fnt5 911 8604(@Rotate)m 240 fnt3
+1892 8609(object)m 240 fnt1 3816 8607(Rotate)m 240 fnt3 4496 8609(object)m
+240 fnt1 5144 8607(by)m 240 fnt3 5438 8609(angle)m 266 8321(P)m 19(ostScript)k
+220 fnt5 1367 8316(@Gr)m 2(aphic)k 240 fnt3 2471 8321(object)m
+240 fnt1 3816 8319(Escape)m 4549(to)s 4788(graphics)s 5649(language)s
+220 fnt5 266 8028(@Ne)m 6(xt)k 240 fnt3 1050 8033(object)m
+240 fnt1 3816 8031(Add)m 4287(1)s 4442(to)s 4681(an)s
+4964(object)s 5608(denoting)s 6499(a)s 6665(number)s 240 fnt3
+266 7745(object)m 220 fnt5 974 7740(@Case)m 240 fnt3 1821 7745(alternatives)m
+240 fnt1 3816 7743(Select)m 4459(from)s 4983(a)s 5149(set)s
+5474(of)s 5745(alternati)s 6(v)k 3(e)k 6799(objects)s
+240 fnt3 266 7457(identi\207er)m 220 fnt5 1254 7452(&&)m 240 fnt3
+1662 7457(object)m 240 fnt1 3816 7455(Cross)m 4412(reference)s 240 fnt3
+266 7169(cr)m 10(oss-r)k 8(efer)k 8(ence)k 220 fnt5
+1839 7164(@Open)m 240 fnt3 2705 7169(object)m 240 fnt1 3816 7167(Retrie)m 6(v)k 3(e)k
+4672(v)s 6(alue)k 5240(from)s 5764(cross)s 6306(reference)s
+240 fnt3 266 6881(cr)m 10(oss-r)k 8(efer)k 8(ence)k
+220 fnt5 1839 6876(@T)m 26(agged)k 240 fnt3 2888 6881(object)m
+240 fnt1 3816 6879(Attach)m 4510(cross)s 5052(referencing)s 6192(tag)s
+6537(to)s 6776(object)s
+[ /Dest /LOUTprimitives /DEST pdfmark
+200 fnt2 1346 6226(Figur)m 3(e)k
+1954(1.)s 200 fnt1 2196 6227(The)m 2552(23)s 2789(primiti)s 5(v)k 3(e)k
+3556(operators)s 4338(of)s 4564(Lout,)s 5030(in)s 5232(order)s
+5702(of)s 5928(increasing)s 6789(precedence.)s 240 fnt1 0 5596(one)m
+402(column)s 1177(mark)s 1729(and)s 2133(one)s 2535(ro)s 6(w)k
+2955(mark:)s 1572 215 0 106 240 288 60 480 5090 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+1572 215 0 106 240 288 60 0 0 LoutGr2
+/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+1572 215 0 106 240 288 60 0 0 LoutGr2
+
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd
+[]
+xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
+pop pop
+grestore
+0 52(metempsychosis)m
+grestore
+
+grestore
+end end restore
+grestore
+0 4639(T)m 19(o)k 337(place)s
+934(tw)s 2(o)k 1381(arbitrary)s 2294(objects)s 3059(side)s
+3537(by)s 3868(side,)s 4398(we)s 4770(use)s 5182(the)s
+5567(in\207x)s 6099(operator)s 220 fnt5 6992 4636(|)m 240 fnt1
+7029 4639(,)m 7173(denoting)s 8102(horizontal)s 0 4351(concatenation.)m 1492(F)s 3(or)k
+1881(e)s 3(xample,)k 220 fnt5 480 3850(USA |0.2i A)m 6(ustr)k 2(alia)k
+240 fnt1 0 3395(produces)m 915(the)s 1263(object)s 476 166 0 57 240 288 60 480 2889 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+476 165 0 57 240 288 60 0 0 LoutGr2
+/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+476 165 0 57 240 288 60 0 0 LoutGr2
+
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd
+[]
+xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
+pop pop
+grestore
+0 3(USA)m
+
+grestore
+
+grestore
+end end restore
+grestore
+875 166 0 57 240 288 60 1244 2889 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+875 165 0 56 240 288 60 0 1 LoutGr2
+/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+875 165 0 56 240 288 60 0 0 LoutGr2
+
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd
+[]
+xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
+pop pop
+grestore
+0 2(Australia)m
+grestore
+
+grestore
+end end restore
+grestore
+0 2438(The)m 443(ro)s 6(w)k 879(marks)s
+1529(are)s 1892(mer)s 4(ged)k 2678(into)s 3119(one,)s
+3587(\207xing)s 4215(the)s 4579(v)s 3(ertical)k 5361(position)s
+6205(of)s 6491(the)s 6855(objects)s 7598(relati)s 6(v)k 3(e)k
+8376(to)s 8631(each)s 0 2150(other;)m 611(their)s 1116(horizontal)s
+2148(separation)s 3196(is)s 3414(determined)s 4555(by)s 4857(the)s
+240 fnt3 5214 2152(gap)m 240 fnt1 5635 2150(attached)m 6497(to)s
+6744(the)s 7101(operator)s 9(,)k 8003(in)s 8254(this)s
+8659(case)s 0 1862(0.2)m 361(inches.)s 1143(W)s 19(e)k
+1519(think)s 2080(of)s 2358(the)s 2713(g)s 1(ap)k
+3118(as)s 3376(part)s 3814(of)s 4092(the)s 4448(operator)s 9(,)k
+5349(although)s 6251(strictly)s 6974(it)s 7174(is)s 7391(a)s
+7564(third)s 8081(parameter)s 13(.)k 0 1574(It)m 205(may)s
+671(be)s 953(omitted,)s 1790(def)s 2(aulting)k 2810(to)s
+220 fnt5 3049 1571(0i)m 240 fnt1 3205 1574(.)m 240 fnt3
+480 1202(V)m 26(ertical)k 1294(concatenation)s 240 fnt1 2644 1200(,)m
+2762(denoted)s 3590(by)s 3895(the)s 4254(in\207x)s 4760(operator)s
+220 fnt5 5627 1197(/)m 240 fnt1 5691 1200(,)m 5809(is)s
+6031(the)s 6390(same)s 6948(apart)s 7497(from)s 8032(the)s
+8392(change)s 0 912(of)m 271(direction:)s 220 fnt5 480 461(A)m 6(ustr)k 2(alia /0.1i USA)k
+
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 6 7
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Helvetica
+%%+ font Times-Italic
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt5 vec2 /Helvetica LoutRecode
+/fnt5 { /Helveticafnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt3 vec2 /Times-Italic LoutRecode
+/fnt3 { /Times-Italicfnt3 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5765 -1581(-)m 5893(6)s 6066(-)s 9066 13414 0 13305 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+0 13251(produces)m 915(the)s
+1263(object)s 875 165 0 56 240 288 60 480 12746 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+875 165 0 56 240 288 60 0 0 LoutGr2
+/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+875 165 0 56 240 288 60 0 0 LoutGr2
+
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd
+[]
+xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
+pop pop
+grestore
+0 2(Australia)m
+grestore
+
+grestore
+end end restore
+grestore
+875 165 0 57 240 288 60 480 12437 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+476 165 0 57 240 288 60 0 0 LoutGr2
+/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+476 165 0 57 240 288 60 0 0 LoutGr2
+
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd
+[]
+xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
+pop pop
+grestore
+0 3(USA)m
+grestore
+
+grestore
+end end restore
+grestore
+0 11986(with)m 482(column)s
+1257(marks)s 1892(mer)s 4(ged)k 2663(and)s 3067(a)s
+3233(0.1)s 3568(inch)s 4037(g)s 1(ap.)k 480 11612(Consider)m
+1404(no)s 6(w)k 1865(what)s 2390(happens)s 3226(when)s
+3802(horizontal)s 4826(and)s 5230(v)s 3(ertical)k 5997(are)s
+6344(combined:)s 220 fnt5 1000 11111({)m 1186(USA)s 2442(|0.2i)s
+2958(A)s 6(ustr)k 2(alia)k 3919(})s 480 10823(/0.1i)m
+1000({)s 1186(W)s 8(ashington)k 2442(|)s 2958(Canberr)s 2(a)k
+3987(})s 240 fnt1 0 10324(The)m 445(tw)s 2(o)k
+872(parameters)s 1987(of)s 220 fnt5 2275 10321(/)m 240 fnt1
+2416 10324(no)m 6(w)k 2895(ha)s 4(v)k 3(e)k
+3413(tw)s 2(o)k 3840(column)s 4632(marks)s 5284(each,)s
+5846(and)s 6268(the)s 3(y)k 6748(will)s 7191(be)s
+7490(mer)s 4(ged)k 8278(with)s 8778(the)s 0 10036(corresponding)m
+1422(marks)s 2057(in)s 2300(the)s 2648(other)s 3199(parameter)s 9(,)k
+4251(yielding)s 5088(the)s 5436(object)s 476 166 0 57 240 288 60 480 9530 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+476 165 0 57 240 288 60 0 0 LoutGr2
+/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+476 165 0 57 240 288 60 0 0 LoutGr2
+
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd
+[]
+xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
+pop pop
+grestore
+0 3(USA)m
+grestore
+
+grestore
+end end restore
+grestore
+659 166 0 57 240 288 60 956 9530 LoutGr2
+0 ymark moveto xsize 10 pt add ymark lineto [ 3 pt ] 0 setdash stroke
+grestore
+
+grestore
+876 166 0 57 240 288 60 1903 9530 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+875 165 0 56 240 288 60 0 1 LoutGr2
+/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+875 165 0 56 240 288 60 0 0 LoutGr2
+
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd
+[]
+xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
+pop pop
+grestore
+0 2(Australia)m
+
+grestore
+
+grestore
+end end restore
+grestore
+1135 215 0 106 240 288 60 480 9171 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+1135 215 0 106 240 288 60 0 0 LoutGr2
+/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+1135 215 0 106 240 288 60 0 0 LoutGr2
+
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd
+[]
+xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
+pop pop
+grestore
+0 52(W)m 19(ashington)k
+grestore
+
+grestore
+end end restore
+grestore
+876 215 0 106 240 288 60 1903 9171 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+876 166 0 57 240 288 60 0 49 LoutGr2
+/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+876 166 0 57 240 288 60 0 0 LoutGr2
+
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd
+[]
+xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
+pop pop
+grestore
+0 3(Canberra)m
+grestore
+
+grestore
+end end restore
+grestore
+0 8720(The)m 220 fnt5
+425 8717(0.2i)m 240 fnt1 821 8720(g)m 1(ap)k 1216(separates)s
+2139(columns,)s 3054(not)s 3416(indi)s 6(vidual)k 4432(items)s
+4997(in)s 5237(columns,)s 6152(so)s 6414(a)s 6577(g)s 1(ap)k
+6972(attached)s 7823(to)s 8059(the)s 8403(second)s 220 fnt5
+0 8429(|)m 240 fnt1 96 8432(w)m 2(ould)k 749(serv)s 3(e)k
+1304(no)s 1595(purpose;)s 2464(an)s 3(y)k 2859(such)s
+3353(g)s 1(ap)k 3749(is)s 3957(ignored.)s 4851(If)s
+5079(the)s 5425(number)s 6214(of)s 6484(marks)s 7117(to)s
+7354(be)s 7634(mer)s 4(ged)k 8403(dif)s 6(fers,)k
+0 8144(empty)m 638(columns)s 1485(are)s 1818(added)s 2433(at)s
+2651(the)s 2984(right)s 3481(to)s 3705(equalize)s 4542(the)s
+4876(number)s 13(.)k 5743(The)s 6157(four)s 6600(marks)s
+7221(protruding)s 8269(from)s 8778(the)s 0 7856(result)m 601(are)s
+959(all)s 1263(a)s 4(v)k 6(ailable)k 2182(for)s
+2531(mer)s 4(ging)k 3389(with)s 3882(neighbouring)s 5223(marks)s
+5869(by)s 6174(other)s 6736(concatenation)s 8133(operators.)s 0 7568(The)m
+428(precedence)s 1559(of)s 220 fnt5 1830 7565(|)m 240 fnt1
+1927 7568(is)m 2137(higher)s 2808(than)s 3277(the)s 3625(precedence)s
+4756(of)s 220 fnt5 5027 7565(/)m 240 fnt1 5091 7568(,)m
+5198(so)s 5464(the)s 5812(braces)s 6473(could)s 7063(be)s
+7345(omitted.)s 480 7194(When)m 1131(lines)s 1656(of)s 1950(te)s 3(xt)k
+2387(are)s 2757(concatenated,)s 4135(it)s 4349(is)s 4582(con)s 9(v)k 3(entional)k
+5884(to)s 6145(measure)s 7020(their)s 7540(separation)s 8602(from)s
+0 6906(baseline)m 832(to)s 1063(baseline)s 1894(\(mark)s 2517(to)s
+2748(mark)s 3292(in)s 3527(Lout\),)s 4157(rather)s 4765(than)s
+5226(from)s 5742(edge)s 6242(to)s 6473(edge)s 6973(as)s
+7215(abo)s 3(v)k 3(e.)k 7937(This)s 8405(idea)s
+8855(of)s 0 6618(dif)m 6(ferent)k 863(reference)s 1794(points)s
+2417(for)s 2743(measurement)s 4065(e)s 6(v)k 4(olv)k 3(ed)k
+4855(o)s 3(v)k 3(er)k 5322(the)s 5658(years)s
+6200(into)s 6613(a)s 6767(system)s 7478(of)s 7737(six)s
+240 fnt3 8059 6620(gap)m 8459(modes)s 240 fnt1 0 6330(\(Figure)m
+769(2\),)s 1085(e)s 3(xpressed)k 2094(by)s 2398(appending)s
+3460(a)s 3636(letter)s 4195(to)s 4445(the)s 4803(length.)s
+5576(F)s 3(or)k 5975(e)s 3(xample,)k 220 fnt5
+6899 6327(|0.2i)m 240 fnt1 7366 6330(is)m 7586(an)s 7880(abbre)s 6(viation)k
+0 6042(for)m 220 fnt5 377 6039(|0.2ie)m 240 fnt1 901 6042(,)m
+1047(meaning)s 1963(0.2)s 2356(inches)s 3057(measured)s 4070(from)s
+4633(edge)s 5180(to)s 5458(edge;)s 220 fnt5 6061 6039(|0.3ix)m
+240 fnt1 6678 6042(produces)m 7632(a)s 7837(0.3)s 8220(inch)s
+8728(g)s 1(ap)k 0 5754(measured)m 972(from)s 1493(mark)s
+2043(to)s 2279(mark)s 2829(and)s 3230(widened)s 4097(if)s
+4311(necessary)s 5292(to)s 5528(pre)s 6(v)k 3(ent)k
+6294(o)s 3(v)k 3(erstriking;)k 7552(and)s 220 fnt5
+7954 5751(|2.5it)m 240 fnt1 8478 5754(places)m 0 5466(its)m 273(right)s
+781(parameter)s 1792(2.5)s 2135(inches)s 2794(from)s 3314(the)s
+3659(current)s 4392(left)s 4766(mar)s 4(gin,)k 5543(irrespecti)s 6(v)k 3(e)k
+6699(of)s 6967(the)s 7312(position)s 8137(of)s 8405(the)s
+8749(left)s 0 5178(parameter)m 13(.)k 1098(There)s 1704(is)s
+1907(also)s 2338(a)s 2496(choice)s 3169(of)s 3433(ele)s 6(v)k 3(en)k
+4098(units)s 4606(of)s 4870(measurement)s 6197(\(inches,)s 6987(centimetres,)s
+8186(multiples)s 0 4890(of)m 288(the)s 654(current)s 1407(font)s
+1870(size,)s 2365(etc.\),)s 2907(the)s 3272(most)s 3815(interesting)s
+4894(being)s 5496(the)s 220 fnt5 5862 4887(r)m 240 fnt1
+6012 4890(unit:)m 6568(one)s 220 fnt5 6987 4887(r)m 240 fnt1
+7138 4890(is)m 7365(the)s 7731(column)s 8524(width)s 0 4602(minus)m
+635(the)s 982(width)s 1583(of)s 1852(the)s 2199(follo)s 6(wing)k
+3175(object,)s 3864(so)s 4129(that)s 220 fnt5 4546 4599(|1r)m -8(t)k
+240 fnt1 4921 4602(produces)m 5835(suf\207cient)s 6783(space)s 7368(to)s
+7606(right)s 8116(justify)s 8778(the)s 0 4314(follo)m 6(wing)k
+987(object,)s 1688(and)s 220 fnt5 2103 4311(|0.5r)m -8(t)k
+240 fnt1 2673 4314(to)m 2923(center)s 3576(it.)s 3883(These)s
+4520(features)s 5337(implement)s 6429(spacings)s 7315(needed)s 8061(in)s
+8315(practice)s 0 4026(rather)m 608(than)s 1069(suggested)s 2063(by)s
+2349(theory)s 15(.)k 3101(The)s 3(y)k 3636(w)s 2(ork)k
+4179(with)s 4653(all)s 4938(\207v)s 3(e)k 5342(concatenation)s
+6719(operators,)s 7707(horizontal)s 8722(and)s 0 3738(v)m 3(ertical.)k
+480 3364(When)m 1113(we)s 1452(construct)s 2392(a)s 2562(b)s 4(uilt-up)k
+3372(fraction,)s 4225(the)s 4577(result)s 5171(has)s 5545(three)s
+6082(ro)s 6(w)k 6506(marks,)s 7201(b)s 4(ut)k
+7567(only)s 8051(the)s 8403(second)s 0 3076(should)m 697(be)s
+979(visible)s 1672(outside)s 2419(the)s 2767(object:)s gsave
+480 2245 translate
+240 fnt3
+156 491 0 288 240 288 12 LoutGraphic
+gsave
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+156 491 0 288 240 288 12 0 0 LoutGr2
+/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+156 491 0 288 240 288 12 0 0 LoutGr2
+
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd
+[]
+xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
+pop pop
+grestore
+0 336(X)m 156 0 0 0 240 288 12 0 288 LoutGr2
+0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke
+grestore
+
+grestore
+2 68(Y)m
+grestore
+
+grestore
+end end restore
+grestore
+0 1794(This)m 493(is)s 721(a)s
+905(common)s 1817(problem,)s 2739(and)s 3161(accordingly)s 4361(a)s
+220 fnt5 4545 1791(@OneRo)m 3(w)k 240 fnt1 5694 1794(operator)m
+6567(w)s 2(as)k 7006(introduced)s 8105(for)s 8461(hiding)s
+0 1506(all)m 291(b)s 4(ut)k 650(one)s 1050(of)s
+1318(the)s 1663(ro)s 6(w)k 2081(marks)s 2713(of)s
+2981(its)s 3255(parameter)s 13(.)k 4357(Normally)s 15(,)k
+5363(the)s 5708(\207rst)s 6136(mark)s 6686(is)s 6893(the)s
+7238(survi)s 6(v)k 4(or)k 9(,)k 8121(b)s 4(ut)k
+8480(a)s 8643(later)s 0 1218(mark)m 552(can)s 941(be)s
+1223(chosen)s 1945(by)s 2239(pre\207xing)s 220 fnt5 3156 1215(^)m
+240 fnt1 3322 1218(to)m 3561(the)s 3909(preceding)s 4905(concatenation)s
+6290(operator:)s 220 fnt5 480 717(@OneRo)m 3(w { X ^/2p @HLine /2p )k 19(Y })k
+
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 7 8
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Helvetica
+%%+ font Times-Italic
+%%+ font Symbol
+%%+ font Times-Bold
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt5 vec2 /Helvetica LoutRecode
+/fnt5 { /Helveticafnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt3 vec2 /Times-Italic LoutRecode
+/fnt3 { /Times-Italicfnt3 LoutFont } def
+%%IncludeResource: font Symbol
+/fnt4 { /Symbol LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt2 vec2 /Times-Bold LoutRecode
+/fnt2 { /Times-Boldfnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5768 -1575(-)m 5896(7)s 6064(-)s 9066 13422 0 13422 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+6693 8221 0 8221 240 288 60 1186 5201 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+0 7447(Edge-to-edge)m 220 fnt5
+1786 7444(|)m 240 fnt3 1843 7449(length)m 220 fnt5 2456 7444(e)m
+240 fnt1 0 6238(Hyphenation)m 220 fnt5 1786 6235(|)m 240 fnt3
+1843 6240(length)m 220 fnt5 2456 6235(h)m 240 fnt1 0 5029(Ov)m 3(erstrik)k 2(e)k
+220 fnt5 1786 5026(|)m 240 fnt3 1843 5031(length)m 220 fnt5
+2456 5026(o)m 240 fnt1 0 3820(Mark-to-mark)m 220 fnt5 1786 3817(|)m
+240 fnt3 1843 3822(length)m 220 fnt5 2456 3817(x)m 240 fnt1
+0 2611(K)m 6(erning)k 220 fnt5 1786 2608(|)m 240 fnt3
+1843 2613(length)m 220 fnt5 2456 2608(k)m 240 fnt1 0 1402(T)m 19(ab)k 4(ulation)k
+220 fnt5 1786 1399(|)m 240 fnt3 1843 1404(length)m 220 fnt5
+2456 1399(t)m gsave
+3291 0 translate
+240 fnt1 3402 8221 0 8221 240 288 60 LoutGraphic
+gsave
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+gsave
+567 7485 translate
+180 fnt1 680 340 0 340 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto
+xsize ysize lineto 0 ysize lineto closepath
+gsave 0.9 setgray fill grestore stroke
+grestore
+
+grestore
+gsave
+680 7371 translate
+180 fnt1 2722 567 0 567 180 288 45 LoutGraphic
+gsave
+0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke
+grestore
+
+grestore
+gsave
+2268 7485 translate
+180 fnt1
+680 340 0 340 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto
+xsize ysize lineto 0 ysize lineto closepath
+gsave 0.9 setgray fill grestore stroke
+grestore
+
+grestore
+gsave
+2551 7371 translate
+180 fnt1 851 567 0 567 180 288 45 LoutGraphic
+gsave
+0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke
+grestore
+
+grestore
+gsave
+2267 7395 translate
+180.0000 rotate
+gsave
+0 0 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+0 0 translate
+180 fnt1 1020 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+0 0 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+
+grestore
+gsave
+1247 7395 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1
+68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+1247 7395 translate
+180 fnt1 1020 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+1247 7395 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+180 fnt3 1534 7192(length)m gsave
+567 6304 translate
+180 fnt1
+680 340 0 340 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto
+xsize ysize lineto 0 ysize lineto closepath
+gsave 0.9 setgray fill grestore stroke
+grestore
+
+grestore
+gsave
+680 6190 translate
+180 fnt1 2722 567 0 567 180 288 45 LoutGraphic
+gsave
+0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke
+grestore
+
+grestore
+gsave
+2268 6304 translate
+180 fnt1 680 340 0 340 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto
+xsize ysize lineto 0 ysize lineto closepath
+gsave 0.9 setgray fill grestore stroke
+grestore
+
+grestore
+gsave
+2551 6190 translate
+180 fnt1 851 567 0 567 180 288 45 LoutGraphic
+gsave
+0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke
+grestore
+
+grestore
+gsave
+2267 6214 translate
+180.0000 rotate
+gsave
+0 0 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+0 0 translate
+180 fnt1
+1020 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+0 0 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+
+grestore
+gsave
+1247 6214 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+1247 6214 translate
+180 fnt1 1020 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+1247 6214 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+1534 6011(length)m
+gsave
+567 5123 translate
+180 fnt1 680 340 0 340 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto
+xsize ysize lineto 0 ysize lineto closepath
+gsave 0.9 setgray fill grestore stroke
+grestore
+
+grestore
+gsave
+680 5009 translate
+180 fnt1 2722 567 0 567 180 288 45 LoutGraphic
+gsave
+0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke
+grestore
+
+grestore
+gsave
+2268 5123 translate
+180 fnt1 680 340 0 340 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto
+xsize ysize lineto 0 ysize lineto closepath
+gsave 0.9 setgray fill grestore stroke
+grestore
+
+grestore
+gsave
+2551 5009 translate
+180 fnt1 851 567 0 567 180 288 45 LoutGraphic
+gsave
+0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke
+grestore
+
+grestore
+gsave
+2551 4976 translate
+180.0000 rotate
+gsave
+0 0 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1
+68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+0 0 translate
+180 fnt1 1871 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+0 0 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+
+grestore
+gsave
+680 4976 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+680 4976 translate
+180 fnt1 1871 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+680 4976 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1
+68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+1392 4774(length)m gsave
+567 3886 translate
+180 fnt1 680 340 0 340 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto
+xsize ysize lineto 0 ysize lineto closepath
+gsave 0.9 setgray fill grestore stroke
+grestore
+
+grestore
+gsave
+680 3772 translate
+180 fnt1 2722 567 0 567 180 288 45 LoutGraphic
+gsave
+0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke
+grestore
+
+grestore
+gsave
+2268 3886 translate
+180 fnt1 680 340 0 340 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto
+xsize ysize lineto 0 ysize lineto closepath
+gsave 0.9 setgray fill grestore stroke
+grestore
+
+grestore
+gsave
+2551 3772 translate
+180 fnt1
+851 567 0 567 180 288 45 LoutGraphic
+gsave
+0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke
+grestore
+
+grestore
+gsave
+2551 3739 translate
+180.0000 rotate
+gsave
+0 0 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+0 0 translate
+180 fnt1 1871 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+0 0 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+
+grestore
+gsave
+680 3739 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+680 3739 translate
+180 fnt1
+1871 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+680 3739 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+180 fnt1 941 3536(max)m 180 fnt4 1256 3531(\()m
+180 fnt3 1319 3537(length)m 180 fnt4 1774 3531(,)m 180 fnt3
+1854 3537(a)m 180 fnt4 1994 3531(+)m 180 fnt3 2145 3537(b)m
+180 fnt4 2240 3531(\))m gsave
+1247 4363 translate
+180.0000 rotate
+gsave
+0 0 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+0 0 translate
+180 fnt1 567 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+0 0 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1
+68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+
+grestore
+gsave
+680 4363 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+680 4363 translate
+180 fnt1 567 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+680 4363 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+180 fnt3 920 4431(a)m
+gsave
+2551 4363 translate
+180.0000 rotate
+gsave
+0 0 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+0 0 translate
+180 fnt1 283 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+0 0 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+
+grestore
+gsave
+2268 4363 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+2268 4363 translate
+180 fnt1
+283 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+2268 4363 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+2366 4387(b)m gsave
+567 2590 translate
+180 fnt1 680 340 0 340 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto
+xsize ysize lineto 0 ysize lineto closepath
+gsave 0.9 setgray fill grestore stroke
+grestore
+
+grestore
+gsave
+680 2476 translate
+180 fnt1 2722 567 0 567 180 288 45 LoutGraphic
+gsave
+0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke
+grestore
+
+grestore
+gsave
+2268 2590 translate
+180 fnt1
+680 340 0 340 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto
+xsize ysize lineto 0 ysize lineto closepath
+gsave 0.9 setgray fill grestore stroke
+grestore
+
+grestore
+gsave
+2551 2476 translate
+180 fnt1 851 567 0 567 180 288 45 LoutGraphic
+gsave
+0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke
+grestore
+
+grestore
+gsave
+2551 2443 translate
+180.0000 rotate
+gsave
+0 0 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+0 0 translate
+180 fnt1 1871 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+0 0 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+
+grestore
+gsave
+680 2443 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1
+68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+680 2443 translate
+180 fnt1 1871 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+680 2443 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+180 fnt1 999 2240(max)m 180 fnt4
+1314 2235(\()m 180 fnt3 1377 2241(length)m 180 fnt4 1832 2235(,)m
+180 fnt3 1912 2241(a)m 180 fnt4 2007 2235(,)m 180 fnt3
+2087 2241(b)m 180 fnt4 2182 2235(\))m gsave
+1247 3067 translate
+180.0000 rotate
+gsave
+0 0 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+0 0 translate
+180 fnt1
+567 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+0 0 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+
+grestore
+gsave
+680 3067 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+680 3067 translate
+180 fnt1 567 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+680 3067 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+180 fnt3
+920 3135(a)m gsave
+2551 3067 translate
+180.0000 rotate
+gsave
+0 0 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+0 0 translate
+180 fnt1 283 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+0 0 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+
+grestore
+gsave
+2268 3067 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1
+68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+2268 3067 translate
+180 fnt1 283 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+2268 3067 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+2366 3091(b)m gsave
+567 1438 translate
+180 fnt1 680 340 0 340 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto
+xsize ysize lineto 0 ysize lineto closepath
+gsave 0.9 setgray fill grestore stroke
+grestore
+
+grestore
+gsave
+680 1324 translate
+180 fnt1
+2722 567 0 567 180 288 45 LoutGraphic
+gsave
+0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke
+grestore
+
+grestore
+gsave
+2268 1438 translate
+180 fnt1 680 340 0 340 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto
+xsize ysize lineto 0 ysize lineto closepath
+gsave 0.9 setgray fill grestore stroke
+grestore
+
+grestore
+gsave
+2551 1324 translate
+180 fnt1 851 567 0 567 180 288 45 LoutGraphic
+gsave
+0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke
+grestore
+
+grestore
+gsave
+2268 1234 translate
+180.0000 rotate
+gsave
+0 0 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+0 0 translate
+180 fnt1 2268 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+0 0 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1
+68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+
+grestore
+gsave
+0 1234 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+0 1234 translate
+180 fnt1 2268 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+0 1234 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+1587 1032(length)m gsave
+3402 734 translate
+180.0000 rotate
+gsave
+0 0 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1
+68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+0 0 translate
+180 fnt1 3402 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+0 0 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+
+grestore
+gsave
+0 734 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+0 734 translate
+180 fnt1 3402 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+0 734 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1
+68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+1189 523(curr)m 6(ent)k 1759(bound)s
+grestore
+end end restore
+grestore
+
+[ /Dest /LOUTgapmodes /DEST pdfmark
+200 fnt2 180 4638(Figur)m 3(e)k
+788(2.)s 200 fnt1 1030 4639(The)m 1386(six)s 1664(g)s 1(ap)k
+1995(modes)s 2557(\()s 200 fnt3 2618 4640(length)m 200 fnt1
+3162 4639(is)m 3336(an)s 3(y)k 3666(length\).)s 4367(Hyphenation)s
+5444(mode)s 5933(has)s 6240(an)s 6475(e)s 3(xtra)k
+6919(property)s 7639(not)s 7944(sho)s 5(wn)k 8507(here.)s
+240 fnt1 0 4008(has)m 396(the)s 770(desired)s 1545(result,)s
+2208(where)s 220 fnt5 2874 4005(2p)m 240 fnt1 3197 4008(is)m
+3433(tw)s 2(o)k 3870(points)s 4532(and)s 220 fnt5
+4962 4005(@HLine)m 240 fnt1 5836 4008(is)m 6072(an)s 6381(easy)s
+6887(combination)s 8166(of)s 8464(Lout')s 13(s)k 0 3720(graphics)m
+861(operators.)s 1914(A)s 2144(similar)s 2866(operator)s 9(,)k
+220 fnt5 3760 3717(@OneCol)m 240 fnt1 4712 3720(,)m 4819(hides)s
+5375(column)s 6150(marks.)s 480 3346(A)m 728(v)s 6(ariant)k
+1463(of)s 220 fnt5 1753 3343(/)m 240 fnt1 1895 3346(called)m
+220 fnt5 2542 3343(//)m 240 fnt1 2745 3346(is)m 2974(pro)s 3(vided)k
+3898(which)s 4558(performs)s 5490(v)s 3(ertical)k 6275(concatenation)s
+7679(b)s 4(ut)k 8059(ignores)s 8833(all)s 0 3058(column)m
+775(marks)s 1410(and)s 1814(simply)s 2519(left-justi\207es)s 3709(its)s
+3985(tw)s 2(o)k 4395(parameters:)s 220 fnt5 480 2557(Heading //0.1i)m
+480 2269(A |0.2i B /0.1i)m 480 1981(C | D)m 240 fnt1 0 1526(has)m 370(result)s
+480 1073(Heading)m 480 716(A)m 938(B)s 480 410(C)m 938(D)s
+
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 8 9
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Helvetica
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Symbol
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt5 vec2 /Helvetica LoutRecode
+/fnt5 { /Helveticafnt5 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt2 vec2 /Times-Bold LoutRecode
+/fnt2 { /Times-Boldfnt2 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt3 vec2 /Times-Italic LoutRecode
+/fnt3 { /Times-Italicfnt3 LoutFont } def
+%%IncludeResource: font Symbol
+/fnt4 { /Symbol LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5768 -1579(-)m 5896(8)s 6063(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+0 13253(sho)m 6(wing)k
+883(that)s 1325(spanning)s 2267(columns)s 3153(in)s 3420(tables)s
+4052(moti)s 6(v)k 6(ate)k 4956(the)s 5328(inclusion)s
+6286(of)s 6581(this)s 7001(operator)s 13(.)k 7972(There)s
+8609(is)s 8843(an)s 0 12965(analogous)m 220 fnt5 1029 12962(||)m
+240 fnt1 1191 12965(operator)m 13(.)k 2145(The)s 2581(author)s
+3259(w)s 2(ould)k 3922(ha)s 4(v)k 3(e)k
+4430(preferred)s 5370(to)s 5616(lea)s 4(v)k 3(e)k
+6177(out)s 6550(these)s 7105(operators,)s 8108(since)s 8663(the)s 3(y)k
+0 12677(complicate)m 1104(the)s 1452(implementation,)s 3059(and)s 3463(it)s
+3655(is)s 3865(interesting)s 4926(to)s 5165(e)s 3(xamine)k
+6028(the)s 6376(prospects)s 7330(of)s 7601(doing)s 8200(so.)s
+480 12303(The)m 220 fnt5 953 12300(//)m 240 fnt1 1184 12303(operator)m
+2086(is)s 2342(formally)s 3263(redundant,)s 4373(because)s 5232(in)s
+5521(general)s 6324(the)s 6718(e)s 3(xpression)k 220 fnt5
+7841 12300(x // y)m 240 fnt1 8409 12303(can)m 8844(be)s 0 12015(replaced)m
+867(by)s 220 fnt5 480 11514(@OneCol { | x } /)m 480 11226(@OneCol { | y })m 240 fnt1
+0 10728(for)m 338(an)s 3(y)k 734(objects)s 220 fnt5
+1462 10725(x)m 240 fnt1 1629 10728(and)m 220 fnt5 2032 10725(y)m
+240 fnt1 2140 10728(.)m 2304(By)s 2637(concatenating)s 4017(an)s
+4300(empty)s 4951(object)s 5594(at)s 5826(the)s 6173(left)s
+6549(of)s 220 fnt5 6820 10725(x)m 240 fnt1 6987 10728(and)m
+7390(hiding)s 8055(all)s 8347(b)s 4(ut)k 8708(that)s
+0 10440(empty)m 641(object')s 13(s)k 1423(column)s 2186(mark,)s
+2772(we)s 3095(ef)s 6(fecti)k 6(v)k 3(ely)k
+4143(shift)s 220 fnt5 4615 10437(x)m 240 fnt1 4723 10440(')m 13(s)k
+4921(column)s 5684(mark)s 6224(to)s 6452(its)s 6716(left)s
+7081(edge.)s 7685(The)s 8101(same)s 8636(goes)s 0 10152(for)m
+220 fnt5 349 10149(y)m 240 fnt1 457 10152(,)m 575(so)s
+852(the)s 220 fnt5 1211 10149(/)m 240 fnt1 1347 10152(operator)m
+2214(has)s 2595(just)s 3011(one)s 3424(column)s 4211(mark)s
+4774(to)s 5024(mer)s 4(ge,)k 5735(at)s 5978(the)s
+6338(e)s 3(xtreme)k 7171(left,)s 7606(and)s 8021(its)s
+8308(ef)s 6(fect)k 8916(is)s 0 9864(indistinguishable)m 1690(from)s
+220 fnt5 2214 9861(//)m 240 fnt1 2339 9864(.)m 480 9490(Unfortunately)m 15(,)k
+1915(if)s 220 fnt5 2134 9487(y)m 240 fnt1 2304 9490(consists)m
+3114(of)s 3387(tw)s 2(o)k 3799(ro)s 6(ws)k
+4311(separated)s 5274(by)s 220 fnt5 5570 9487(/)m 240 fnt1
+5634 9490(,)m 5743(as)s 5995(in)s 6240(the)s 6590(e)s 3(xample)k
+7455(abo)s 3(v)k 3(e,)k 8130(both)s 8616(ro)s 6(ws)k
+0 9202(must)m 533(be)s 823(placed)s 1513(inside)s 2148(the)s
+220 fnt5 2504 9199(@OneCol)m 240 fnt1 3456 9202(,)m 3571(and)s
+3983(the)s 4340(table)s 4868(cannot)s 5574(be)s 5864(entered)s
+6633(in)s 6884(the)s 7240(simple)s 7942(ro)s 6(w-by-ro)k 6(w)k
+0 8914(manner)m 777(that)s 1194(non-e)s 3(xpert)k 2287(users)s
+2828(naturally)s 3731(e)s 3(xpect.)k 4515(Another)s 5359(adv)s 6(antage)k
+6378(of)s 220 fnt5 6649 8911(//)m 240 fnt1 6833 8914(is)m
+7043(that)s 7460(its)s 7736(left)s 8112(parameter)s 0 8626(can)m
+382(be)s 657(printed)s 1385(before)s 2044(its)s 2313(right)s
+2817(parameter)s 3824(is)s 4027(kno)s 6(wn;)k 4779(this)s
+5168(is)s 5371(important)s 6353(when)s 6922(the)s 7263(left)s
+7633(parameter)s 8640(is)s 8843(an)s 0 8338(entire)m 599(page.)s
+480 7964(The)m 960(\207fth)s 1468(and)s 1924(\207nal)s 2457(concatenation)s
+3895(operator)s 9(,)k 220 fnt5 4841 7961(&)m 240 fnt1
+4983 7964(,)m 5143(is)s 5405(an)s 5741(e)s 3(xplicit)k
+6567(v)s 3(ersion)k 7377(of)s 7701(the)s 8102(horizontal)s
+0 7676(concatenation)m 1402(operator)s 2275(interpolated)s 3492(when)s 4085(objects)s
+4830(are)s 5195(separated)s 6172(by)s 6483(white)s 7088(space.)s
+7800(It)s 8022(is)s 8250(formally)s 0 7388(identical)m 907(to)s
+220 fnt5 1177 7385(|)m 240 fnt1 1305 7388(e)m 3(xcept)k
+2017(for)s 2386(taking)s 3068(higher)s 3770(precedence)s 4932(and)s
+5367(being)s 5983(subject)s 6751(to)s 7021(replacement)s 8279(by)s
+220 fnt5 8604 7385(//1vx)m 240 fnt1 0 7100(during)m 678(paragraph)s
+1691(breaking)s 2581(\(Section)s 3434(2.5\).)s 240 fnt2 0 6451(2.4.)m
+471(Implementation)s 2159(of)s 2431(objects)s 3201(and)s 3642(concatenation)s
+
+[ /Dest /LOUTobjects_impl /DEST pdfmark
+240 fnt1 480 5974(In)m 738(this)s 1136(section)s 1872(we)s
+2210(discuss)s 2954(the)s 3304(implementation)s 4863(of)s 5137(objects)s
+5867(and)s 6273(concatenation,)s 7710(and)s 8117(especially)s 0 5686(mark)m
+552(alignment.)s 1672(The)s 2100(\207rst)s 2531(step)s 2969(is)s
+3179(to)s 3418(use)s 3793(an)s 4076(operator)s 4932(precedence)s
+6063(parser)s 6706(to)s 6945(con)s 9(v)k 3(ert)k
+7710(input)s 8262(such)s 8758(as)s 220 fnt5 480 5185(a |0.5i b /0.2i c | d)m
+240 fnt1 0 4730(into)m 425(parse)s 985(trees)s 1486(such)s
+1982(as)s gsave
+480 3036 translate
+240 fnt3 3396 1354 0 1298 240 288 12 LoutGraphic
+gsave
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+1867 338 56 282 240 288 12 1529 1016 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt4 136 106(\244)m
+grestore
+(T) lfigpromotelabels
+grestore
+1413 846 0 790 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+876 338 56 282 240 288 12 537 508 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt4
+156 121(|)m
+grestore
+(T) lfigpromotelabels
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3 123 128(a)m
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 338 282 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+511 338 56 282 240 288 12 451 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+511 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+511 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+192 fnt4 56 105(0)m
+192 fnt3 195 111(.)m 192 fnt4 270 105(5)m 192 fnt3
+404 111(i)m
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 962 282 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+338 338 56 282 240 288 12 1075 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3 123 105(b)m
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 1413 282 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 1413 790 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+517 846 56 790 240 288 12 1526 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+517 846 56 790 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+517 338 56 282 240 288 12 0 508 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+192 fnt4 56 105(0)m
+192 fnt3 195 111(.)m 192 fnt4 270 105(2)m 192 fnt3
+410 111(i)m
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 2043 790 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+1240 846 0 790 240 288 12 2156 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+789 338 56 282 240 288 12 451 508 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt4 156 121(|)m
+grestore
+(T) lfigpromotelabels
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3 128 128(c)m
+
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 338 282 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+338 338 56 282 240 288 12 451 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 789 282 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+338 338 56 282 240 288 12 902 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3 118 105(d)m
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 1240 282 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 3396 790 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+end end restore
+grestore
+0 2585(Missing)m 879(objects)s 1662(are)s
+2065(replaced)s 2987(by)s 3336(empty)s 4044(objects,)s 4883(and)s
+5342(sequences)s 6419(of)s 6745(concatenation)s 8186(operators)s 0 2297(are)m
+347(consolidated:)s gsave
+480 648 translate
+240 fnt3 2492 1359 0 1298 240 288 12 LoutGraphic
+gsave
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+1415 338 56 282 240 288 12 1077 1016 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt4 156 121(|)m
+grestore
+(T) lfigpromotelabels
+grestore
+338 846 56 790 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 846 56 790 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 508 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3
+123 128(a)m
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 338 790 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+517 846 56 790 240 288 12 451 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+517 846 56 790 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+517 338 56 282 240 288 12 0 508 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+192 fnt4 56 105(0)m 192 fnt3 195 111(.)m
+192 fnt4 270 105(2)m 192 fnt3 410 111(i)m
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 968 790 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+1411 846 0 790 240 288 12 1081 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+875 338 56 282 240 288 12 536 508 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt4
+156 121(|)m
+grestore
+(T) lfigpromotelabels
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3 128 128(c)m
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 338 282 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+509 338 56 282 240 288 12 451 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+509 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+509 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+192 fnt4 56 105(0)m
+192 fnt3 195 111(.)m 192 fnt4 270 105(3)m 192 fnt3
+402 111(i)m
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 960 282 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+338 338 56 282 240 288 12 1073 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3 118 105(d)m
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 1411 282 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 2492 790 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+end end restore
+grestore
+240 fnt4 3284 1886(\336)m
+gsave
+3825 648 translate
+240 fnt3 2492 1359 0 1298 240 288 12 LoutGraphic
+gsave
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+1415 338 56 282 240 288 12 1077 1016 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt4 156 121(|)m
+grestore
+(T) lfigpromotelabels
+grestore
+338 846 56 790 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 846 56 790 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 508 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3 123 128(a)m
+
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 338 790 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+517 846 56 790 240 288 12 451 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+517 846 56 790 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+517 338 56 282 240 288 12 0 508 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+192 fnt4 56 105(0)m 192 fnt3 195 111(.)m 192 fnt4
+270 105(2)m 192 fnt3 410 111(i)m
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 968 790 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+338 846 56 790 240 288 12 1081 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 846 56 790 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 508 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3 128 128(c)m
+
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 1419 790 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+509 846 56 790 240 288 12 1532 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+509 846 56 790 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+509 338 56 282 240 288 12 0 508 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+192 fnt4 56 105(0)m 192 fnt3 195 111(.)m 192 fnt4
+270 105(3)m 192 fnt3 402 111(i)m
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 2041 790 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+338 846 56 790 240 288 12 2154 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 846 56 790 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 508 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3 118 105(d)m
+
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 2492 790 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+end end restore
+grestore
+
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 9 10
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Symbol
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt3 vec2 /Times-Italic LoutRecode
+/fnt3 { /Times-Italicfnt3 LoutFont } def
+%%IncludeResource: font Symbol
+/fnt4 { /Symbol LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt5 vec2 /Helvetica LoutRecode
+/fnt5 { /Helveticafnt5 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5766 -1579(-)m 5894(9)s 6065(-)s 9066 13414 0 13305 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+0 13251(to)m 239(mak)s 2(e)k
+811(manifest)s 1693(their)s 2190(associati)s 6(vity)k 3432(and)s
+3836(reduce)s 4529(the)s 4877(depth)s 5466(of)s 5737(the)s
+6085(tree)s 6498(for)s 6836(ef\207cienc)s 3(y)k 7829(later)s 13(.)k
+480 12877(The)m 970(required)s 1887(semantic)s 2851(information)s 4099(is)s
+4371(the)s 4782(size)s 5271(of)s 5605(each)s 6162(subobject,)s
+7249(consisting)s 8334(of)s 8668(four)s 0 12589(inte)m 3(gers:)k
+920(width)s 1524(to)s 1765(left)s 2144(and)s 2550(right)s
+3062(of)s 3335(the)s 3685(distinguished)s 5021(column)s 5798(mark,)s
+6397(and)s 6803(height)s 7463(abo)s 3(v)k 3(e)k
+8087(and)s 8493(belo)s 6(w)k 0 12301(the)m 368(distinguished)s
+1722(ro)s 6(w)k 2162(mark.)s 2837(These)s 3484(numbers)s
+4379(are)s 4746(al)s 2(w)k 2(ays)k 5477(non-ne)s 3(g)k 1(ati)k 6(v)k 3(e)k
+6789(in)s 7052(Basser)s 7769(Lout,)s 8348(b)s 4(ut)k
+8730(this)s 0 12013(restriction)m 1024(is)s 1234(unnecessary)s 2457(and)s
+2861(should)s 3558(be)s 3840(dropped.)s 480 11639(F)m 3(or)k
+867(the)s 1212(lea)s 4(v)k 3(es,)k 1907(which)s
+2546(are)s 2890(simple)s 3581(w)s 2(ords,)k 4268(the)s
+4614(numbers)s 5486(are)s 5830(obtained)s 6710(from)s 7231(font)s
+7674(tables.)s 8392(F)s 3(or)k 8778(the)s 0 11351(higher)m
+678(le)s 6(v)k 3(els)k 1285(we)s 1628(apply)s
+2222(recursi)s 6(v)k 3(e)k 3152(rules.)s 3788(Suppose)s
+4664(that)s 240 fnt3 5090 11353(hgap)m 240 fnt4 5583 11345(\()m
+240 fnt3 5675 11353(x)m 240 fnt4 5801 11345(,)m 240 fnt3
+5932 11353(g)m 240 fnt4 6066 11345(,)m 240 fnt3 6197 11353(y)m
+240 fnt4 6319 11345(\))m 240 fnt1 6453 11351(returns)m 7175(the)s
+7531(desired)s 8287(distance)s 0 11063(between)m 846(the)s 1186(column)s
+1952(marks)s 2579(of)s 2841(objects)s 240 fnt3 3561 11065(x)m
+240 fnt1 3719 11063(and)m 240 fnt3 4114 11065(y)m 240 fnt1
+4268 11063(when)m 4835(the)s 3(y)k 5290(are)s 5629(separated)s
+6580(by)s 6866(g)s 1(ap)k 240 fnt3 7255 11065(g)m
+240 fnt1 7369 11063(:)m 240 fnt3 7527 11065(right)m 240 fnt4
+8000 11057(\()m 240 fnt3 8075 11065(x)m 240 fnt4 8185 11057(\))m
+8298(+)s 240 fnt3 8473 11065(length)m 240 fnt4 0 10769(\()m
+240 fnt3 89 10777(g)m 240 fnt4 221 10769(\))m 376(+)s
+240 fnt3 594 10777(left)m 240 fnt4 920 10769(\()m 240 fnt3
+1009 10777(y)m 240 fnt4 1129 10769(\))m 240 fnt1 1261 10775(when)m
+1842(the)s 2196(g)s 1(ap)k 2600(mode)s 3193(is)s
+3409(edge-to-edge,)s 4770(the)s 5124(lar)s 4(ger)k 5741(of)s
+240 fnt3 6018 10777(length)m 240 fnt4 6629 10769(\()m 240 fnt3
+6718 10777(g)m 240 fnt4 6850 10769(\))m 240 fnt1 6982 10775(and)m
+240 fnt3 7391 10777(right)m 240 fnt4 7878 10769(\()m 240 fnt3
+7968 10777(x)m 240 fnt4 8091 10769(\))m 8246(+)s 240 fnt3
+8464 10777(left)m 240 fnt4 8790 10769(\()m 240 fnt3 8880 10777(y)m
+240 fnt4 9000 10769(\))m 240 fnt1 0 10487(when)m 576(the)s
+924(mode)s 1512(is)s 1722(mark-to-mark,)s 3155(and)s 3559(so)s
+3825(on.)s 4229(Gi)s 6(v)k 3(en)k 4862(an)s
+5145(object)s 240 fnt3 480 9992(X)m 240 fnt4 720 9984(=)m
+240 fnt3 933 9992(x)m 168 fnt4 1039 9899(1)m 240 fnt4
+1249 9984(|)m 240 fnt3 1294 9992(g)m 168 fnt4 1405 9899(1)m
+240 fnt4 1615 9984(\274)m 200 fnt3 1973 10000(^)m 240 fnt4
+2069 9984(|)m 240 fnt3 2114 9992(g)m 168 fnt3 2225 9905(i)m
+168 fnt4 2291 9899(-)m 2403(1)s 240 fnt3 2613 9992(x)m
+168 fnt3 2719 9905(i)m 240 fnt4 2907 9984(\274)m 3265(|)s
+240 fnt3 3310 9992(g)m 168 fnt3 3421 9905(n)m 168 fnt4
+3523 9899(-)m 3635(1)s 240 fnt3 3845 9992(x)m 168 fnt3
+3951 9905(n)m 240 fnt1 0 9448(we)m 335(may)s 801(calculate)s
+1705(its)s 1981(size)s 2408(as)s 2658(follo)s 6(ws:)k
+240 fnt3 740 8945(left)m 240 fnt4 1060 8937(\()m 240 fnt3
+1144 8945(X)m 240 fnt4 1312 8937(\))m 1474(=)s 240 fnt3
+1687 8945(left)m 240 fnt4 2007 8937(\()m 240 fnt3 2091 8945(x)m
+168 fnt4 2197 8852(1)m 240 fnt4 2275 8937(\))m 2413(+)s
+240 fnt3 2614 8945(hgap)m 240 fnt4 3099 8937(\()m 240 fnt3
+3183 8945(x)m 168 fnt4 3289 8852(1)m 240 fnt4 3367 8937(,)m
+240 fnt3 3474 8945(g)m 168 fnt4 3585 8852(1)m 240 fnt4
+3663 8937(,)m 240 fnt3 3770 8945(x)m 168 fnt4 3876 8852(2)m
+240 fnt4 3968 8937(\))m 4106(+)s 4307(\274)s 4593(+)s
+240 fnt3 4794 8945(hgap)m 240 fnt4 5279 8937(\()m 240 fnt3
+5363 8945(x)m 168 fnt3 5469 8858(i)m 168 fnt4 5535 8852(-)m
+5647(1)s 240 fnt4 5725 8937(,)m 240 fnt3 5832 8945(g)m
+168 fnt3 5943 8858(i)m 168 fnt4 6009 8852(-)m 6121(1)s
+240 fnt4 6199 8937(,)m 240 fnt3 6306 8945(x)m 168 fnt3
+6412 8858(i)m 240 fnt4 6468 8937(\))m 240 fnt3 579 8542(right)m
+240 fnt4 1060 8534(\()m 240 fnt3 1144 8542(X)m 240 fnt4
+1312 8534(\))m 1474(=)s 240 fnt3 1687 8542(hgap)m 240 fnt4
+2172 8534(\()m 240 fnt3 2256 8542(x)m 168 fnt3 2362 8455(i)m
+240 fnt4 2418 8534(,)m 240 fnt3 2525 8542(g)m 168 fnt3
+2636 8455(i)m 240 fnt4 2692 8534(,)m 240 fnt3 2799 8542(x)m
+168 fnt3 2905 8455(i)m 168 fnt4 2971 8449(+)m 3084(1)s
+240 fnt4 3162 8534(\))m 3300(+)s 3501(\274)s 3787(+)s
+240 fnt3 3988 8542(hgap)m 240 fnt4 4473 8534(\()m 240 fnt3
+4557 8542(x)m 168 fnt3 4663 8455(n)m 168 fnt4 4765 8449(-)m
+4877(1)s 240 fnt4 4955 8534(,)m 240 fnt3 5062 8542(g)m
+168 fnt3 5173 8455(n)m 168 fnt4 5275 8449(-)m 5387(1)s
+240 fnt4 5465 8534(,)m 240 fnt3 5572 8542(x)m 168 fnt3
+5678 8455(n)m 240 fnt4 5770 8534(\))m 5908(+)s 240 fnt3
+6109 8542(right)m 240 fnt4 6590 8534(\()m 240 fnt3 6674 8542(x)m
+168 fnt3 6780 8455(n)m 240 fnt4 6872 8534(\))m 240 fnt3
+485 8139(abo)m 2(ve)k 240 fnt4 1060 8131(\()m 240 fnt3
+1144 8139(X)m 240 fnt4 1312 8131(\))m 1474(=)s 240 fnt3
+1687 8139(abo)m 2(ve)k 240 fnt4 2262 8131(\()m 240 fnt3
+2346 8139(x)m 168 fnt4 2452 8044(1)m 240 fnt4 2530 8131(\))m
+2680(\255)s 2901(\274)s 3199(\255)s 240 fnt3 3420 8139(abo)m 2(ve)k
+240 fnt4 3995 8131(\()m 240 fnt3 4079 8139(x)m 168 fnt3
+4185 8050(n)m 240 fnt4 4277 8131(\))m 240 fnt3 480 7736(below)m
+240 fnt4 1060 7728(\()m 240 fnt3 1144 7736(X)m 240 fnt4
+1312 7728(\))m 1474(=)s 240 fnt3 1687 7736(below)m 240 fnt4
+2267 7728(\()m 240 fnt3 2351 7736(x)m 168 fnt4 2457 7641(1)m
+240 fnt4 2535 7728(\))m 2685(\255)s 2906(\274)s 3204(\255)s
+240 fnt3 3425 7736(below)m 240 fnt4 4005 7728(\()m 240 fnt3
+4089 7736(x)m 168 fnt3 4195 7647(n)m 240 fnt4 4287 7728(\))m
+240 fnt1 0 7141(where)m 240 fnt4 693 7135(\255)m 240 fnt1
+943 7141(returns)m 1678(the)s 2046(lar)s 4(ger)k 2679(of)s
+2971(its)s 3267(tw)s 2(o)k 3698(parameters.)s 4930(Similar)s
+5712(formulas)s 6633(are)s 7001(easily)s 7632(deri)s 6(v)k 3(ed)k
+8419(for)s 8778(the)s 0 6853(other)m 551(operators.)s 480 6479(F)m 3(or)k
+866(purposes)s 1765(of)s 2033(e)s 3(xposition)k 3081(we)s
+3412(will)s 3835(no)s 6(w)k 4293(mak)s 2(e)k
+4862(the)s 5207(simplifying)s 6358(assumptions)s 7589(that)s 8004(all)s
+8294(g)s 1(aps)k 8779(are)s 220 fnt5 0 6188(0i)m
+240 fnt1 156 6191(,)m 248(all)s 525(column)s 1285(marks)s
+1904(lie)s 2183(at)s 2399(the)s 2732(left)s 3093(edge,)s
+3637(and)s 4025(all)s 4303(ro)s 6(w)k 4707(marks)s
+5327(lie)s 5605(at)s 5822(the)s 6154(top)s 6498(edge.)s
+7098(Then)s 7632(the)s 7964(size)s 8376(of)s 8631(each)s
+0 5903(object)m 644(can)s 1033(be)s 1315(e)s 3(xpressed)k
+2313(by)s 2607(just)s 3012(tw)s 2(o)k 3422(numbers,)s
+4353(width)s 4955(and)s 5359(height,)s 6064(and)s 6468(the)s
+6816(four)s 7274(formulas)s 8174(reduce)s 8867(to)s 240 fnt3
+555 5400(width)m 240 fnt4 1094 5392(\()m 240 fnt3 1178 5400(x)m
+168 fnt4 1284 5307(1)m 240 fnt4 1434 5392(|)m 1551(\274)s
+1849(|)s 240 fnt3 1966 5400(x)m 168 fnt3 2072 5313(n)m
+240 fnt4 2164 5392(\))m 2326(=)s 240 fnt3 2539 5400(width)m
+240 fnt4 3078 5392(\()m 240 fnt3 3162 5400(x)m 168 fnt4
+3268 5307(1)m 240 fnt4 3346 5392(\))m 3484(+)s 3685(\274)s
+3971(+)s 240 fnt3 4172 5400(width)m 240 fnt4 4711 5392(\()m
+240 fnt3 4795 5400(x)m 168 fnt3 4901 5313(n)m 240 fnt4
+4993 5392(\))m 240 fnt3 480 4997(height)m 240 fnt4 1094 4989(\()m
+240 fnt3 1178 4997(x)m 168 fnt4 1284 4904(1)m 240 fnt4
+1434 4989(|)m 1551(\274)s 1849(|)s 240 fnt3 1966 4997(x)m
+168 fnt3 2072 4910(n)m 240 fnt4 2164 4989(\))m 2326(=)s
+240 fnt3 2539 4997(height)m 240 fnt4 3153 4989(\()m 240 fnt3
+3237 4997(x)m 168 fnt4 3343 4904(1)m 240 fnt4 3421 4989(\))m
+3571(\255)s 3792(\274)s 4090(\255)s 240 fnt3 4311 4997(height)m
+240 fnt4 4925 4989(\()m 240 fnt3 5009 4997(x)m 168 fnt3
+5115 4910(n)m 240 fnt4 5207 4989(\))m 240 fnt1 0 4453(The)m
+428(corresponding)s 1850(formulas)s 2750(for)s 3088(v)s 3(ertical)k
+3855(concatenation)s 5240(are)s 240 fnt3 555 3903(width)m 240 fnt4
+1094 3895(\()m 240 fnt3 1178 3903(x)m 168 fnt4 1284 3810(1)m
+240 fnt3 1434 3903(/)m 240 fnt4 1609 3895(\274)m 240 fnt3
+1907 3903(/)m 2082(x)s 168 fnt3 2188 3816(n)m 240 fnt4
+2280 3895(\))m 2442(=)s 240 fnt3 2655 3903(width)m 240 fnt4
+3194 3895(\()m 240 fnt3 3278 3903(x)m 168 fnt4 3384 3810(1)m
+240 fnt4 3462 3895(\))m 3612(\255)s 3833(\274)s 4131(\255)s
+240 fnt3 4352 3903(width)m 240 fnt4 4891 3895(\()m 240 fnt3
+4975 3903(x)m 168 fnt3 5081 3816(n)m 240 fnt4 5173 3895(\))m
+240 fnt3 480 3500(height)m 240 fnt4 1094 3492(\()m 240 fnt3
+1178 3500(x)m 168 fnt4 1284 3407(1)m 240 fnt3 1434 3500(/)m
+240 fnt4 1609 3492(\274)m 240 fnt3 1907 3500(/)m 2082(x)s
+168 fnt3 2188 3413(n)m 240 fnt4 2280 3492(\))m 2442(=)s
+240 fnt3 2655 3500(height)m 240 fnt4 3269 3492(\()m 240 fnt3
+3353 3500(x)m 168 fnt4 3459 3407(1)m 240 fnt4 3537 3492(\))m
+3675(+)s 3876(\274)s 4162(+)s 240 fnt3 4363 3500(height)m
+240 fnt4 4977 3492(\()m 240 fnt3 5061 3500(x)m 168 fnt3
+5167 3413(n)m 240 fnt4 5259 3492(\))m 240 fnt1 0 2956(According)m
+1063(to)s 1302(these)s 1849(formulas,)s 2805(the)s 3153(height)s
+3811(of)s gsave
+480 1262 translate
+240 fnt3 3044 1354 56 1298 240 288 12 LoutGraphic
+gsave
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+1240 846 56 790 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3 123 128(a)m
+grestore
+(T) lfigpromotelabels
+grestore
+(L) lfigpromotelabels
+grestore
+338 338 56 282 240 288 12 451 508 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt4
+156 121(|)m
+grestore
+(T) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 789 790 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ L@T@CTR L@T@CTR T@CTR lfigangle L@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR L@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+338 338 56 282 240 288 12 902 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3 123 105(b)m
+grestore
+(T) lfigpromotelabels
+grestore
+(R) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 1240 790 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ R@T@CTR R@T@CTR T@CTR lfigangle R@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR R@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+(L) lfigpromotelabels
+grestore
+338 338 56 282 240 288 12 1353 1016 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt4 136 106(\244)m
+
+grestore
+(T) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 1691 1298 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ L@T@CTR L@T@CTR T@CTR lfigangle L@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR L@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+1240 846 56 790 240 288 12 1804 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3 128 128(c)m
+grestore
+(T) lfigpromotelabels
+grestore
+(L) lfigpromotelabels
+grestore
+338 338 56 282 240 288 12 451 508 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt4 156 121(|)m
+grestore
+(T) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 789 790 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ L@T@CTR L@T@CTR T@CTR lfigangle L@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR L@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+338 338 56 282 240 288 12 902 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3
+118 105(d)m
+grestore
+(T) lfigpromotelabels
+grestore
+(R) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 1240 790 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ R@T@CTR R@T@CTR T@CTR lfigangle R@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR R@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+(R) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 3044 1298 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ R@T@CTR R@T@CTR T@CTR lfigangle R@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR R@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+end end restore
+grestore
+
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 10 11
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Symbol
+%%+ font Times-Italic
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Symbol
+/fnt4 { /Symbol LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt3 vec2 /Times-Italic LoutRecode
+/fnt3 { /Times-Italicfnt3 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5704 -1579(-)m 5832(10)s 6127(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+0 13253(is)m 240 fnt4
+480 12745([)m 240 fnt3 563 12753(height)m 240 fnt4 1177 12745(\()m
+240 fnt3 1261 12753(a)m 240 fnt4 1388 12745(\))m 1538(\255)s
+240 fnt3 1759 12753(height)m 240 fnt4 2373 12745(\()m 240 fnt3
+2457 12753(b)m 240 fnt4 2583 12745(\))m 2661(])s 2792(+)s
+2993([)s 240 fnt3 3076 12753(height)m 240 fnt4 3690 12745(\()m
+240 fnt3 3774 12753(c)m 240 fnt4 3888 12745(\))m 4038(\255)s
+240 fnt3 4259 12753(height)m 240 fnt4 4873 12745(\()m 240 fnt3
+4957 12753(d)m 240 fnt4 5095 12745(\))m 5173(])s 240 fnt1
+0 12249(which)m 642(is)s 852(correct,)s 1621(b)s 4(ut)k
+1983(for)s 2321(width)s 2923(the)s 3(y)k 3386(yield)s
+240 fnt4 480 11691([)m 240 fnt3 563 11699(width)m 240 fnt4
+1102 11691(\()m 240 fnt3 1186 11699(a)m 240 fnt4 1313 11691(\))m
+1451(+)s 240 fnt3 1652 11699(width)m 240 fnt4 2191 11691(\()m
+240 fnt3 2275 11699(b)m 240 fnt4 2401 11691(\))m 2479(])s
+2622(\255)s 2843([)s 240 fnt3 2926 11699(width)m 240 fnt4
+3465 11691(\()m 240 fnt3 3549 11699(c)m 240 fnt4 3663 11691(\))m
+3801(+)s 240 fnt3 4002 11699(width)m 240 fnt4 4541 11691(\()m
+240 fnt3 4625 11699(d)m 240 fnt4 4763 11691(\))m 4841(])s
+240 fnt1 0 11195(which)m 645(is)s 859(not,)s 1276(since)s
+1827(it)s 2023(does)s 2517(not)s 2887(tak)s 2(e)k
+3343(the)s 3694(mer)s 4(ging)k 4544(of)s 4819(column)s
+5598(marks)s 6237(into)s 6666(account.)s 7578(The)s 8010(asymmetry)s
+0 10907(between)m 874(horizontal)s 1918(and)s 2342(v)s 3(ertical)k
+3130(has)s 3520(come)s 4114(about)s 4726(because)s 5560(the)s
+5928(ro)s 6(w)k 6368(entries,)s 7131(such)s 7648(as)s
+240 fnt3 7918 10909(a)m 240 fnt1 8113 10907(and)m 240 fnt3
+8537 10909(b)m 240 fnt1 8651 10907(,)m 8779(are)s 0 10619(adjacent)m
+849(in)s 1085(the)s 1426(tree,)s 1883(b)s 4(ut)k
+2238(the)s 2579(column)s 3346(entries,)s 4082(such)s 4571(as)s
+240 fnt3 4814 10621(a)m 240 fnt1 4982 10619(and)m 240 fnt3
+5379 10621(c)m 240 fnt1 5481 10619(,)m 5581(are)s 5920(not.)s
+6383(It)s 6581(w)s 2(ould)k 7229(be)s 7504(possible)s
+8337(to)s 8568(solv)s 3(e)k 0 10331(this)m 395(cross-linking)s
+1694(problem)s 2550(by)s 2842(augmenting)s 4024(the)s 4370(size)s
+4795(information)s 5979(stored)s 6619(in)s 6861(each)s 7354(node)s
+7875(to)s 8112(record)s 8778(the)s 0 10043(number)m 791(of)s
+1063(marks)s 1698(and)s 2103(the)s 2451(size)s 2879(of)s
+3150(each,)s 3696(b)s 4(ut)k 4058(the)s 4407(author)s
+5078(has)s 5449(preferred)s 6381(the)s 6730(follo)s 6(wing)k
+7707(method)s 8484(which)s 0 9755(mak)m 2(es)k 660(structural)s
+1616(changes)s 2438(to)s 2677(the)s 3025(tree)s 3438(instead.)s
+480 9381(If)m 240 fnt3 715 9383(a)m 240 fnt1 896 9381(and)m
+240 fnt3 1305 9383(c)m 240 fnt1 1473 9381(share)m 2038(a)s
+2210(column)s 2990(mark,)s 3594(the)s 3(y)k 4063(each)s
+4563(might)s 5187(as)s 5442(well)s 5914(ha)s 4(v)k 3(e)k
+6420(width)s 240 fnt3 7028 9383(width)m 240 fnt4 7572 9375(\()m
+240 fnt3 7662 9383(a)m 240 fnt4 7795 9375(\))m 7961(\255)s
+240 fnt3 8199 9383(width)m 240 fnt4 8743 9375(\()m 240 fnt3
+8833 9383(c)m 240 fnt4 8953 9375(\))m 240 fnt1 9019 9381(,)m
+0 9093(since)m 547(all)s 840(width)s 1442(calculations)s 2635(apply)s
+3221(to)s 3460(entire)s 4060(columns.)s 5035(Accordingly)s 15(,)k
+6323(we)s 6659(introduce)s 7618(a)s 7784(ne)s 6(w)k
+8232(operator)s 9(,)k 240 fnt3 0 8807(COL)m 240 fnt1
+466 8805(,)m 573(de\207ned)s 1336(by)s 240 fnt3 480 8255(width)m
+240 fnt4 1019 8247(\()m 240 fnt3 1103 8255(x)m 168 fnt4
+1209 8162(1)m 240 fnt3 1347 8255(COL)m 240 fnt4 1885 8247(\274)m
+240 fnt3 2171 8255(COL)m 2709(x)s 168 fnt3 2815 8168(n)m
+240 fnt4 2907 8247(\))m 3057(=)s 240 fnt3 3270 8255(width)m
+240 fnt4 3809 8247(\()m 240 fnt3 3893 8255(x)m 168 fnt4
+3999 8162(1)m 240 fnt4 4077 8247(\))m 4227(\255)s 4448(\274)s
+4746(\255)s 240 fnt3 4967 8255(width)m 240 fnt4 5506 8247(\()m
+240 fnt3 5590 8255(x)m 168 fnt3 5696 8168(n)m 240 fnt4
+5788 8247(\))m 240 fnt1 0 7711(and)m 440(replace)s 1221(both)s
+240 fnt3 1741 7713(a)m 240 fnt1 1952 7711(and)m 240 fnt3
+2393 7713(c)m 240 fnt1 2591 7711(by)m 240 fnt3 2922 7713(a)m
+3218(COL)s 3865(c)s 240 fnt1 3967 7711(.)m 4168(T)s 19(o)k
+4504(pre)s 6(v)k 3(ent)k 240 fnt3 5309 7713(COL)m
+240 fnt1 5871 7711(operators)m 6848(from)s 7408(disturbing)s 8468(height)s
+0 7423(calculations,)m 1248(we)s 1583(de\207ne)s 2224(a)s 2390(binary)s
+3055(operator)s 3911(called)s 240 fnt3 4539 7425(SPLIT)m 240 fnt1
+5228 7423(by)m 240 fnt3 555 6920(width)m 240 fnt4 1094 6912(\()m
+240 fnt3 1178 6920(x)m 1356(SPLIT)s 2057(y)s 240 fnt4
+2171 6912(\))m 2333(=)s 240 fnt3 2546 6920(width)m 240 fnt4
+3085 6912(\()m 240 fnt3 3169 6920(x)m 240 fnt4 3287 6912(\))m
+240 fnt3 480 6517(height)m 240 fnt4 1094 6509(\()m 240 fnt3
+1178 6517(x)m 1356(SPLIT)s 2057(y)s 240 fnt4 2171 6509(\))m
+2333(=)s 240 fnt3 2546 6517(height)m 240 fnt4 3160 6509(\()m
+240 fnt3 3244 6517(y)m 240 fnt4 3358 6509(\))m 240 fnt1
+0 6013(which)m 642(switches)s 1516(height)s 2174(and)s 2578(width)s
+3180(calculations)s 4372(onto)s 4851(dif)s 6(ferent)k 5726(subtrees.)s
+6673(Then)s 7222(the)s 7570(transformation)s gsave
+480 4314 translate
+240 fnt3 338 1359 56 1298 240 288 12 LoutGraphic
+gsave
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+338 1359 56 1298 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 1016 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3
+123 128(a)m
+grestore
+(T) lfigpromotelabels
+grestore
+end end restore
+grestore
+240 fnt4 1130 5552(\336)m gsave
+1671 4314 translate
+240 fnt3 2564 1359 56 1298 240 288 12 LoutGraphic
+gsave
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+1386 846 56 790 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3
+123 128(a)m
+grestore
+(T) lfigpromotelabels
+grestore
+(L) lfigpromotelabels
+grestore
+484 338 56 282 240 288 12 451 508 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+484 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+192 fnt3 56 107(COL)m
+grestore
+(T) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 935 790 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ L@T@CTR L@T@CTR T@CTR lfigangle L@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR L@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+338 338 56 282 240 288 12 1048 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3 128 128(c)m
+
+grestore
+(T) lfigpromotelabels
+grestore
+(R) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 1386 790 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ R@T@CTR R@T@CTR T@CTR lfigangle R@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR R@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+(L) lfigpromotelabels
+grestore
+614 338 56 282 240 288 12 1499 1016 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+614 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+192 fnt3 56 107(SPLIT)m
+grestore
+(T) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 2113 1298 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ L@T@CTR L@T@CTR T@CTR lfigangle L@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR L@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+338 846 56 790 240 288 12 2226 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 846 56 790 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 508 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3 123 128(a)m
+grestore
+(T) lfigpromotelabels
+grestore
+(R) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 2564 1298 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ R@T@CTR R@T@CTR T@CTR lfigangle R@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR R@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+end end restore
+grestore
+240 fnt1
+0 3814(widens)m 240 fnt3 740 3816(a)m 240 fnt1 926 3814(to)m
+240 fnt3 1176 3816(width)m 240 fnt4 1726 3808(\()m 240 fnt3
+1821 3816(a)m 240 fnt4 1959 3808(\))m 2142(\255)s 240 fnt3
+2396 3816(width)m 240 fnt4 2946 3808(\()m 240 fnt3 3041 3816(c)m
+240 fnt4 3166 3808(\))m 240 fnt1 3303 3814(without)m 4105(af)s 6(fecting)k
+5011(its)s 5298(height;)s 6019(it)s 6222(is)s 6443(applied)s
+7216(to)s 7466(e)s 6(v)k 3(ery)k 8053(object)s
+8708(that)s 0 3526(shares)m 638(its)s 904(column)s 1669(mark)s
+2211(with)s 2683(at)s 2905(least)s 3392(one)s 3784(other)s
+4325(object.)s 5063(A)s 5283(similar)s 5995(transformation)s 7448(in)s 9(v)k 4(olving)k
+8396(a)s 240 fnt3 8552 3528(R)m 9(O)k 12(W)k
+240 fnt1 0 3238(operator)m 856(deals)s 1398(with)s 1880(shared)s
+2562(ro)s 6(w)k 2982(marks.)s 3730(The)s 4158(ef)s 6(fect)k
+4754(on)s 5051(our)s 5430(little)s 5922(table)s 6442(is)s
+6652(to)s 6891(replace)s gsave
+480 1544 translate
+240 fnt3 3044 1354 56 1298 240 288 12 LoutGraphic
+gsave
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+1240 846 56 790 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3 123 128(a)m
+
+grestore
+(T) lfigpromotelabels
+grestore
+(L) lfigpromotelabels
+grestore
+338 338 56 282 240 288 12 451 508 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt4 156 121(|)m
+grestore
+(T) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 789 790 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ L@T@CTR L@T@CTR T@CTR lfigangle L@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR L@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+338 338 56 282 240 288 12 902 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3 123 105(b)m
+grestore
+(T) lfigpromotelabels
+grestore
+(R) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 1240 790 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ R@T@CTR R@T@CTR T@CTR lfigangle R@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR R@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+(L) lfigpromotelabels
+grestore
+338 338 56 282 240 288 12 1353 1016 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt4
+136 106(\244)m
+grestore
+(T) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 1691 1298 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ L@T@CTR L@T@CTR T@CTR lfigangle L@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR L@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+1240 846 56 790 240 288 12 1804 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3 128 128(c)m
+grestore
+(T) lfigpromotelabels
+grestore
+(L) lfigpromotelabels
+grestore
+338 338 56 282 240 288 12 451 508 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt4 156 121(|)m
+
+grestore
+(T) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 789 790 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ L@T@CTR L@T@CTR T@CTR lfigangle L@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR L@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+338 338 56 282 240 288 12 902 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3 118 105(d)m
+grestore
+(T) lfigpromotelabels
+grestore
+(R) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 1240 790 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ R@T@CTR R@T@CTR T@CTR lfigangle R@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR R@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+(R) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 3044 1298 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ R@T@CTR R@T@CTR T@CTR lfigangle R@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR R@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+end end restore
+grestore
+0 1093(by)m
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 11 12
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Symbol
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt3 vec2 /Times-Italic LoutRecode
+/fnt3 { /Times-Italicfnt3 LoutFont } def
+%%IncludeResource: font Symbol
+/fnt4 { /Symbol LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt5 vec2 /Helvetica LoutRecode
+/fnt5 { /Helveticafnt5 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5714 -1579(-)m 5842(11)s 6117(-)s 9066 13419 0 13363 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+gsave
+480 11049 translate
+240 fnt3 6248 2370 0 2314 240 288 12 LoutGraphic
+gsave
+grestore save gsave 70 dict begin lfigdict begin
+grestore
+3293 338 56 282 240 288 12 2955 2032 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt4
+136 106(\244)m
+grestore
+(T) lfigpromotelabels
+grestore
+3096 1862 0 1806 240 288 12 0 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+1717 338 56 282 240 288 12 1379 1524 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt4 156 121(|)m
+grestore
+(T) lfigpromotelabels
+grestore
+1520 1354 0 1298 240 288 12 0 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+1067 338 56 282 240 288 12 453 1016 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+614 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+192 fnt3 56 107(SPLIT)m
+
+grestore
+(T) lfigpromotelabels
+grestore
+732 846 0 790 240 288 12 0 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+608 338 56 282 240 288 12 124 508 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+484 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+192 fnt3 56 107(COL)m
+grestore
+(T) lfigpromotelabels
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3 123 128(a)m
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 338 282 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+338 338 56 282 240 288 12 394 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3
+128 128(c)m
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 732 282 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 732 790 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+732 846 0 790 240 288 12 788 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+628 338 56 282 240 288 12 104 508 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+524 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+192 fnt3 56 107(R)m 7(O)k 9(W)k
+
+grestore
+(T) lfigpromotelabels
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3 123 128(a)m
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 338 282 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+338 338 56 282 240 288 12 394 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3 123 105(b)m
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 732 282 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 1520 790 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 1520 1298 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+1520 1354 0 1298 240 288 12 1576 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+1067 338 56 282 240 288 12 453 1016 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+614 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+192 fnt3
+56 107(SPLIT)m
+grestore
+(T) lfigpromotelabels
+grestore
+732 846 0 790 240 288 12 0 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+608 338 56 282 240 288 12 124 508 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+484 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+192 fnt3 56 107(COL)m
+grestore
+(T) lfigpromotelabels
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3 123 105(b)m
+
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 338 282 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+338 338 56 282 240 288 12 394 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3 118 105(d)m
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 732 282 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 732 790 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+732 846 0 790 240 288 12 788 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+628 338 56 282 240 288 12 104 508 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+524 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+192 fnt3 56 107(R)m 7(O)k 9(W)k
+
+grestore
+(T) lfigpromotelabels
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3 123 128(a)m
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 338 282 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+338 338 56 282 240 288 12 394 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3 123 105(b)m
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 732 282 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 1520 790 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 3096 1298 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 3096 1806 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+3096 1862 0 1806 240 288 12 3152 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+1717 338 56 282 240 288 12 1379 1524 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt4
+156 121(|)m
+grestore
+(T) lfigpromotelabels
+grestore
+1520 1354 0 1298 240 288 12 0 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+1067 338 56 282 240 288 12 453 1016 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+614 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+192 fnt3 56 107(SPLIT)m
+grestore
+(T) lfigpromotelabels
+grestore
+732 846 0 790 240 288 12 0 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+608 338 56 282 240 288 12 124 508 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+484 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+192 fnt3 56 107(COL)m
+
+grestore
+(T) lfigpromotelabels
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3 123 128(a)m
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 338 282 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+338 338 56 282 240 288 12 394 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3 128 128(c)m
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 732 282 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 732 790 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+732 846 0 790 240 288 12 788 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+628 338 56 282 240 288 12 104 508 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+524 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+192 fnt3
+56 107(R)m 7(O)k 9(W)k
+grestore
+(T) lfigpromotelabels
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3 128 128(c)m
+
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 338 282 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+338 338 56 282 240 288 12 394 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3 118 105(d)m
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 732 282 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 1520 790 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 1520 1298 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+1520 1354 0 1298 240 288 12 1576 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+1067 338 56 282 240 288 12 453 1016 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+614 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+192 fnt3 56 107(SPLIT)m
+grestore
+(T) lfigpromotelabels
+grestore
+732 846 0 790 240 288 12 0 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+608 338 56 282 240 288 12 124 508 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+484 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+192 fnt3
+56 107(COL)m
+grestore
+(T) lfigpromotelabels
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3 123 105(b)m
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 338 282 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+338 338 56 282 240 288 12 394 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3 118 105(d)m
+
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 732 282 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 732 790 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+732 846 0 790 240 288 12 788 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+628 338 56 282 240 288 12 104 508 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+524 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+192 fnt3 56 107(R)m 7(O)k 9(W)k
+grestore
+(T) lfigpromotelabels
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3
+128 128(c)m
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 338 282 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+338 338 56 282 240 288 12 394 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 70 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3 118 105(d)m
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 732 282 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 1520 790 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 3096 1298 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 6248 1806 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+end end restore
+grestore
+0 10598(In)m 244(f)s 2(act,)k
+693(common)s 1576(sube)s 3(xpressions)k 3060(are)s 3395(identi\207ed)s
+4343(\(tri)s 6(vially\))k 5286(and)s 5678(the)s 6013(result)s
+6591(is)s 6788(a)s 6942(directed)s 7756(ac)s 3(yclic)k
+8469(graph;)s 0 10310(each)m 486(af)s 6(fected)k 1296(leaf)s
+1716(has)s 2076(tw)s 2(o)k 2477(parents,)s 3264(one)s
+3657(for)s 3985(width)s 4578(and)s 4972(one)s 5365(for)s
+5693(height;)s 6394(and)s 6788(each)s 240 fnt3 7274 10312(COL)m
+240 fnt1 7790 10310(or)m 240 fnt3 8040 10312(R)m 9(O)k 12(W)k
+240 fnt1 8604 10310(node)m 0 10022(has)m 360(one)s 752(parent)s
+1398(and)s 1792(one)s 2184(child)s 2709(for)s 3037(each)s
+3521(object)s 4155(lying)s 4690(on)s 4976(the)s 5314(corresponding)s
+6726(mark.)s 7370(The)s 7788(data)s 8235(structure)s 0 9734(roughly)m
+799(doubles)s 1595(in)s 1838(size,)s 2316(and)s 2720(this)s
+3116(occurs)s 3791(only)s 4271(rarely)s 4881(in)s 5124(practice.)s
+480 9360(This)m 956(method)s 1732(can)s 2121(cope)s 2629(with)s
+3111(an)s 3(y)k 3508(le)s 3(g)k 1(al)k
+4023(input,)s 4622(including)s 220 fnt5 480 8859({ a // c | d } | { b / e })m 480 8571(/ { f / i } | { g | h // j })m
+240 fnt1 0 8072(which)m 642(produces)s 1557(o)s 3(v)k 3(erlapping)k
+2747(spanning)s 3665(columns:)s gsave
+480 5924 translate
+240 fnt3 1699 1808 0 1695 240 288 60 LoutGraphic
+gsave
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+1133 452 113 339 240 288 60 0 1356 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+230 fnt3 511 178(a)m
+
+grestore
+566 452 113 339 240 288 60 1133 1356 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+230 fnt3 228 150(b)m
+grestore
+566 452 113 339 240 288 60 0 904 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+230 fnt3 234 178(c)m
+grestore
+566 452 113 339 240 288 60 566 904 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+230 fnt3
+222 150(d)m
+grestore
+566 452 113 339 240 288 60 1132 904 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+230 fnt3 235 178(e)m
+grestore
+566 452 113 339 240 288 60 0 452 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+230 fnt3 235 173(f)m
+
+grestore
+566 452 113 339 240 288 60 566 452 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+230 fnt3 228 200(g)m
+grestore
+566 452 113 339 240 288 60 1132 452 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+230 fnt3 228 149(h)m
+grestore
+566 452 113 339 240 288 60 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+230 fnt3
+253 153(i)m
+grestore
+1133 452 113 339 240 288 60 566 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+230 fnt3 535 176(j)m
+grestore
+end end restore
+grestore
+0 5473(The)m 428(box)s 3(es)k
+1035(ha)s 4(v)k 3(e)k 1536(been)s 2045(added)s
+2675(to)s 2914(clarify)s 3590(the)s 3938(structure.)s 4937(The)s
+5365(width)s 5967(of)s 6238(this)s 6634(object)s 7278(is)s
+7488(formally)s 240 fnt4 480 4915(\()m 564(\()s 240 fnt3
+648 4923(width)m 240 fnt4 1187 4915(\()m 240 fnt3 1271 4923(a)m
+240 fnt4 1398 4915(\))m 1548(\255)s 1769(\()s 240 fnt3
+1853 4923(x)m 240 fnt4 2031 4915(+)m 240 fnt3 2232 4923(y)m
+240 fnt4 2346 4915(\))m 2424(\))s 2562(+)s 240 fnt3
+2763 4923(z)m 240 fnt4 2866 4915(\))m 3016(\255)s 3237(\()s
+240 fnt3 3321 4923(x)m 240 fnt4 3499 4915(+)m 3700(\()s
+3784(\()s 240 fnt3 3868 4923(y)m 240 fnt4 4042 4915(+)m
+240 fnt3 4243 4923(z)m 240 fnt4 4346 4915(\))m 4496(\255)s
+240 fnt3 4717 4923(width)m 240 fnt4 5256 4915(\()m 240 fnt3
+5340 4923(j)m 240 fnt4 5418 4915(\))m 5496(\))s 5574(\))s
+240 fnt1 0 4419(where)m 240 fnt3 480 3918(x)m 240 fnt4
+670 3910(=)m 240 fnt3 883 3918(width)m 240 fnt4 1422 3910(\()m
+240 fnt3 1506 3918(c)m 240 fnt4 1620 3910(\))m 1770(\255)s
+240 fnt3 1991 3918(width)m 240 fnt4 2530 3910(\()m 240 fnt3
+2662 3918(f)m 240 fnt4 2823 3910(\))m 2973(\255)s 240 fnt3
+3194 3918(width)m 240 fnt4 3733 3910(\()m 240 fnt3 3817 3918(i)m
+240 fnt4 3892 3910(\))m
+[ /Dest /LOUT12_1794_s2_4_1 /DEST pdfmark
+240 fnt3 480 3367(y)m 240 fnt4
+666 3359(=)m 240 fnt3 879 3367(width)m 240 fnt4 1418 3359(\()m
+240 fnt3 1502 3367(d)m 240 fnt4 1688 3359(\))m 1838(\255)s
+240 fnt3 2059 3367(width)m 240 fnt4 2598 3359(\()m 240 fnt3
+2682 3367(g)m 240 fnt4 2808 3359(\))m
+[ /Dest /LOUT12_1794_s2_4_2 /DEST pdfmark
+240 fnt3 480 2816(z)m
+240 fnt4 655 2808(=)m 240 fnt3 868 2816(width)m 240 fnt4
+1407 2808(\()m 240 fnt3 1491 2816(b)m 240 fnt4 1617 2808(\))m
+1767(\255)s 240 fnt3 1988 2816(width)m 240 fnt4 2527 2808(\()m
+240 fnt3 2611 2816(e)m 240 fnt4 2722 2808(\))m 2872(\255)s
+240 fnt3 3093 2816(width)m 240 fnt4 3632 2808(\()m 240 fnt3
+3716 2816(h)m 240 fnt4 3843 2808(\))m
+[ /Dest /LOUT12_1794_s2_4_3 /DEST pdfmark
+240 fnt1 0 2312(It)m
+224(seems)s 878(clear)s 1420(that)s 240 fnt3 1857 2314(y)m
+240 fnt1 2038 2312(at)m 2289(least)s 2805(must)s 3349(appear)s
+4065(twice)s 4657(in)s 4919(an)s 3(y)k 5335(e)s 3(xpression)k
+6431(for)s 6788(the)s 7155(width)s 7776(of)s 8066(this)s
+8482(object)s 0 2024(made)m 602(out)s 997(of)s 1297(simple)s
+2019(addition)s 2889(and)s 3322(maxing)s 4121(operations,)s 5253(sho)s 6(wing)k
+6141(that)s 6588(an)s 6900(ordinary)s 7793(tree)s 8235(structure)s
+0 1736(is)m 227(insuf\207cient)s 1379(for)s 1734(o)s 3(v)k 3(erlapping)k
+2941(spanning)s 3876(columns.)s 4868(The)s 5313(Basser)s 6027(Lout)s
+6556(interpreter)s 7626(actually)s 8453(rejects)s 0 1448(such)m 521(structures,)s
+1581(o)s 6(wing)k 2252(to)s 2517(the)s 2890(author')s 13(s)k
+3736(doubts)s 4451(about)s 5069(the)s 5442(implementability)s 7153(of)s
+240 fnt3 7449 1450(Constr)m 3(ained)k 240 fnt1 8722 1448(and)m
+240 fnt3 0 1162(AdjustSize)m 240 fnt1 1049 1160(\(Section)m 1902(5.3\))s
+2330(on)s 2627(them;)s 3217(b)s 4(ut)k 3579(with)s
+4061(hindsight)s 5012(this)s 5408(caution)s 6169(w)s 2(as)k
+6590(unnecessary)s 15(.)k 480 786(The)m 915(directed)s 1749(ac)s 3(yclic)k
+2482(graph)s 3091(is)s 3308(ordered)s 4104(in)s 4354(the)s
+4709(sense)s 5290(that)s 5715(the)s 6071(order)s 6642(of)s
+6920(the)s 7275(edges)s 7878(entering)s 8722(and)s 0 498(lea)m 4(ving)k
+746(each)s 1234(node)s 1748(matters.)s 2607(The)s 3028(structure)s
+3911(is)s 4114(highly)s 4773(dynamic,)s 5696(and)s 6093(tra)s 4(v)k 3(ersals)k
+7044(both)s 7519(with)s 7994(and)s 8390(ag)s 1(ainst)k
+
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 12 13
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt3 vec2 /Times-Italic LoutRecode
+/fnt3 { /Times-Italicfnt3 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt2 vec2 /Times-Bold LoutRecode
+/fnt2 { /Times-Boldfnt2 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt5 vec2 /Helvetica LoutRecode
+/fnt5 { /Helveticafnt5 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5705 -1579(-)m 5833(12)s 6127(-)s 9066 13419 0 13310 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+0 13256(the)m 349(arro)s 6(ws)k
+1045(are)s 1394(required.)s 2355(After)s 2920(a)s 3087(fe)s 6(w)k
+3494(ad-)s 3788(hoc)s 4189(attempts)s 5050(to)s 5291(e)s 3(xtend)k
+5985(the)s 6334(usual)s 6896(tree)s 7310(representation)s 8722(had)s
+0 12968(f)m 2(ailed,)k 665(the)s 1030(author)s 1718(de)s 6(v)k 3(eloped)k
+2769(a)s 2952(representation)s 4379(based)s 5000(on)s 5314(doubly)s
+6051(link)s 2(ed)k 6723(lists)s 7175(of)s 7463(records)s
+8235(denoting)s 0 12680(links,)m 578(whose)s 1252(\210e)s 3(xibility)k
+2238(more)s 2792(than)s 3267(compensated)s 4580(for)s 4924(the)s
+5279(some)s 6(what)k 6309(e)s 3(xcessi)k 6(v)k 3(e)k
+7275(memory)s 8133(consump-)s 0 12392(tion.)m 536(F)s 3(or)k
+925(e)s 3(xample,)k gsave
+480 10526 translate
+240 fnt3 3282 1526 0 1470 240 288 12 LoutGraphic
+gsave
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+338 338 56 282 240 288 12 0 1188 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3 123 128(a)m
+
+grestore
+(A) lfigpromotelabels
+grestore
+338 338 56 282 240 288 12 2944 1188 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3 123 105(b)m
+grestore
+(B) lfigpromotelabels
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3 128 128(c)m
+grestore
+(C) lfigpromotelabels
+grestore
+338 338 56 282 240 288 12 1472 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+338 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+192 fnt3
+118 105(d)m
+grestore
+(D) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ A@CTR A@CTR C@CTR lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+C@CTR C@CTR A@CTR lfigangle C@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+0.15 cm /lfigsolid /lfigblack
+lfigopen
+0.15 cm 0.05 cm lfigforward
+grestore
+
+grestore
+0 0 0 0 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ A@CTR A@CTR D@CTR lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+D@CTR D@CTR A@CTR lfigangle D@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+0.15 cm /lfigsolid /lfigblack
+lfigopen
+0.15 cm 0.05 cm lfigforward
+grestore
+
+grestore
+0 0 0 0 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ B@CTR B@CTR D@CTR lfigangle B@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+D@CTR D@CTR B@CTR lfigangle D@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+0.15 cm /lfigsolid /lfigblack
+lfigopen
+0.15 cm 0.05 cm lfigforward
+grestore
+
+grestore
+end end restore
+grestore
+0 10075(is)m 210(represented)s 1369(by)s gsave
+1135 5559 translate
+240 fnt3
+6796 4176 0 4120 240 288 12 LoutGraphic
+gsave
+grestore save gsave 300 dict begin lfigdict begin
+grestore
+452 1014 0 958 240 288 12 0 3162 LoutGr2
+currentdict end 300 dict begin begin
+grestore
+452 338 56 282 240 288 12 0 676 LoutGr2
+currentdict end 300 dict begin begin
+grestore
+452 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+
+grestore
+(TOP) lfigpromotelabels
+grestore
+452 338 56 282 240 288 12 0 338 LoutGr2
+currentdict end 300 dict begin begin
+grestore
+452 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+gsave
+206 150 translate
+192 fnt3 39 39 0 39 192 288 48 LoutGraphic
+gsave
+/lfigblack [ lfigcircle ] gsave lfigpaintpath grestore
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+
+grestore
+
+grestore
+(MID) lfigpromotelabels
+grestore
+452 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 300 dict begin begin
+grestore
+452 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+192 fnt3 180 128(a)m
+grestore
+(BASE) lfigpromotelabels
+grestore
+(A) lfigpromotelabels
+grestore
+452 1014 0 958 240 288 12 6344 3162 LoutGr2
+currentdict end 300 dict begin begin
+grestore
+452 338 56 282 240 288 12 0 676 LoutGr2
+currentdict end 300 dict begin begin
+grestore
+452 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+
+grestore
+(TOP) lfigpromotelabels
+grestore
+452 338 56 282 240 288 12 0 338 LoutGr2
+currentdict end 300 dict begin begin
+grestore
+452 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+gsave
+206 150 translate
+192 fnt3 39 39 0 39 192 288 48 LoutGraphic
+gsave
+/lfigblack [ lfigcircle ] gsave lfigpaintpath grestore
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+
+grestore
+
+grestore
+(MID) lfigpromotelabels
+grestore
+452 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 300 dict begin begin
+grestore
+452 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+192 fnt3
+180 105(b)m
+grestore
+(BASE) lfigpromotelabels
+grestore
+(B) lfigpromotelabels
+grestore
+452 1014 0 958 240 288 12 0 1581 LoutGr2
+currentdict end 300 dict begin begin
+grestore
+452 338 56 282 240 288 12 0 676 LoutGr2
+currentdict end 300 dict begin begin
+grestore
+452 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+gsave
+206 150 translate
+192 fnt3 39 39 0 39 192 288 48 LoutGraphic
+gsave
+/lfigblack [ lfigcircle ] gsave lfigpaintpath grestore
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+
+grestore
+
+grestore
+(TOP) lfigpromotelabels
+grestore
+452 338 56 282 240 288 12 0 338 LoutGr2
+currentdict end 300 dict begin begin
+grestore
+452 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+gsave
+206 150 translate
+192 fnt3 39 39 0 39 192 288 48 LoutGraphic
+gsave
+/lfigblack [ lfigcircle ] gsave lfigpaintpath grestore
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+
+grestore
+
+grestore
+(MID) lfigpromotelabels
+grestore
+452 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 300 dict begin begin
+grestore
+452 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+192 fnt3 104 107(LK)m
+
+grestore
+(BASE) lfigpromotelabels
+grestore
+(L) lfigpromotelabels
+grestore
+452 1014 0 958 240 288 12 1586 1581 LoutGr2
+currentdict end 300 dict begin begin
+grestore
+452 338 56 282 240 288 12 0 676 LoutGr2
+currentdict end 300 dict begin begin
+grestore
+452 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+gsave
+206 150 translate
+192 fnt3 39 39 0 39 192 288 48 LoutGraphic
+gsave
+/lfigblack [ lfigcircle ] gsave lfigpaintpath grestore
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+
+grestore
+
+grestore
+(TOP) lfigpromotelabels
+grestore
+452 338 56 282 240 288 12 0 338 LoutGr2
+currentdict end 300 dict begin begin
+grestore
+452 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+gsave
+206 150 translate
+192 fnt3 39 39 0 39 192 288 48 LoutGraphic
+gsave
+/lfigblack [ lfigcircle ] gsave lfigpaintpath grestore
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+
+grestore
+
+grestore
+(MID) lfigpromotelabels
+grestore
+452 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 300 dict begin begin
+grestore
+452 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+192 fnt3 104 107(LK)m
+grestore
+(BASE) lfigpromotelabels
+grestore
+(M) lfigpromotelabels
+grestore
+452 1014 0 958 240 288 12 4758 1581 LoutGr2
+currentdict end 300 dict begin begin
+grestore
+452 338 56 282 240 288 12 0 676 LoutGr2
+currentdict end 300 dict begin begin
+grestore
+452 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+gsave
+206 150 translate
+192 fnt3
+39 39 0 39 192 288 48 LoutGraphic
+gsave
+/lfigblack [ lfigcircle ] gsave lfigpaintpath grestore
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+
+grestore
+
+grestore
+(TOP) lfigpromotelabels
+grestore
+452 338 56 282 240 288 12 0 338 LoutGr2
+currentdict end 300 dict begin begin
+grestore
+452 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+gsave
+206 150 translate
+192 fnt3 39 39 0 39 192 288 48 LoutGraphic
+gsave
+/lfigblack [ lfigcircle ] gsave lfigpaintpath grestore
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+
+grestore
+
+grestore
+(MID) lfigpromotelabels
+grestore
+452 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 300 dict begin begin
+grestore
+452 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+192 fnt3 104 107(LK)m
+grestore
+(BASE) lfigpromotelabels
+grestore
+(N) lfigpromotelabels
+grestore
+452 1014 0 958 240 288 12 0 0 LoutGr2
+currentdict end 300 dict begin begin
+grestore
+452 338 56 282 240 288 12 0 676 LoutGr2
+currentdict end 300 dict begin begin
+grestore
+452 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+gsave
+206 150 translate
+192 fnt3 39 39 0 39 192 288 48 LoutGraphic
+gsave
+/lfigblack [ lfigcircle ] gsave lfigpaintpath grestore
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+
+grestore
+
+grestore
+(TOP) lfigpromotelabels
+grestore
+452 338 56 282 240 288 12 0 338 LoutGr2
+currentdict end 300 dict begin begin
+grestore
+452 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+
+grestore
+(MID) lfigpromotelabels
+grestore
+452 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 300 dict begin begin
+grestore
+452 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+192 fnt3
+185 128(c)m
+grestore
+(BASE) lfigpromotelabels
+grestore
+(C) lfigpromotelabels
+grestore
+452 1014 0 958 240 288 12 3172 0 LoutGr2
+currentdict end 300 dict begin begin
+grestore
+452 338 56 282 240 288 12 0 676 LoutGr2
+currentdict end 300 dict begin begin
+grestore
+452 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+gsave
+206 150 translate
+192 fnt3 39 39 0 39 192 288 48 LoutGraphic
+gsave
+/lfigblack [ lfigcircle ] gsave lfigpaintpath grestore
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigcircle ] lfigdopath
+pop pop
+grestore
+
+grestore
+
+grestore
+(TOP) lfigpromotelabels
+grestore
+452 338 56 282 240 288 12 0 338 LoutGr2
+currentdict end 300 dict begin begin
+grestore
+452 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+
+grestore
+(MID) lfigpromotelabels
+grestore
+452 338 56 282 240 288 12 0 0 LoutGr2
+currentdict end 300 dict begin begin
+grestore
+452 338 56 282 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+192 fnt3 175 105(d)m
+grestore
+(BASE) lfigpromotelabels
+grestore
+(D) lfigpromotelabels
+grestore
+0 0 0 0 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ 0.5 cm 0 A@MID@CTR L@MID@CTR A@MID@CTR M@MID@CTR lfigpmin lfigpmin lfigpmin lfigpsub /BL lfigpointdef
+A@MID@CTR L@MID@CTR A@MID@CTR M@MID@CTR lfigpmax lfigpmax lfigpmax 0.5 cm 0 lfigpadd /TR lfigpointdef
+BL 0 BL TR lfigydistance lfigpadd /TL lfigpointdef
+BL BL TR lfigxdistance 0 lfigpadd /BR lfigpointdef
+BL
+BR [ BR 0 0.5 cm lfigpadd ]
+BR 0.5 cm 0.5 cm lfigpadd
+TR 0.5 cm -0.5 cm lfigpadd [ 0 0.5 cm TR lfigpsub ]
+TR
+TL [ 0 0.5 cm TL lfigpsub ]
+0.5 cm 0.5 cm TL lfigpsub
+BL -0.5 cm 0.5 cm lfigpadd [ BL 0 0.5 cm lfigpadd ]
+BL ] lfigdopath
+pop pop
+grestore
+
+grestore
+0 0 0 0 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ 0.5 cm 0 L@TOP@CTR C@TOP@CTR L@TOP@CTR C@TOP@CTR lfigpmin lfigpmin lfigpmin lfigpsub /BL lfigpointdef
+L@TOP@CTR C@TOP@CTR L@TOP@CTR C@TOP@CTR lfigpmax lfigpmax lfigpmax 0.5 cm 0 lfigpadd /TR lfigpointdef
+BL 0 BL TR lfigydistance lfigpadd /TL lfigpointdef
+BL BL TR lfigxdistance 0 lfigpadd /BR lfigpointdef
+BL
+BR [ BR 0 0.5 cm lfigpadd ]
+BR 0.5 cm 0.5 cm lfigpadd
+TR 0.5 cm -0.5 cm lfigpadd [ 0 0.5 cm TR lfigpsub ]
+TR
+TL [ 0 0.5 cm TL lfigpsub ]
+0.5 cm 0.5 cm TL lfigpsub
+BL -0.5 cm 0.5 cm lfigpadd [ BL 0 0.5 cm lfigpadd ]
+BL ] lfigdopath
+pop pop
+grestore
+
+grestore
+0 0 0 0 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ 0.5 cm 0 M@TOP@CTR D@TOP@CTR N@TOP@CTR D@TOP@CTR lfigpmin lfigpmin lfigpmin lfigpsub /BL lfigpointdef
+M@TOP@CTR D@TOP@CTR N@TOP@CTR D@TOP@CTR lfigpmax lfigpmax lfigpmax 0.5 cm 0 lfigpadd /TR lfigpointdef
+BL 0 BL TR lfigydistance lfigpadd /TL lfigpointdef
+BL BL TR lfigxdistance 0 lfigpadd /BR lfigpointdef
+BL
+BR [ BR 0 0.5 cm lfigpadd ]
+BR 0.5 cm 0.5 cm lfigpadd
+TR 0.5 cm -0.5 cm lfigpadd [ 0 0.5 cm TR lfigpsub ]
+TR
+TL [ 0 0.5 cm TL lfigpsub ]
+0.5 cm 0.5 cm TL lfigpsub
+BL -0.5 cm 0.5 cm lfigpadd [ BL 0 0.5 cm lfigpadd ]
+BL ] lfigdopath
+pop pop
+grestore
+
+grestore
+0 0 0 0 240 288 12 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ 0.5 cm 0 B@MID@CTR N@MID@CTR B@MID@CTR N@MID@CTR lfigpmin lfigpmin lfigpmin lfigpsub /BL lfigpointdef
+B@MID@CTR N@MID@CTR B@MID@CTR N@MID@CTR lfigpmax lfigpmax lfigpmax 0.5 cm 0 lfigpadd /TR lfigpointdef
+BL 0 BL TR lfigydistance lfigpadd /TL lfigpointdef
+BL BL TR lfigxdistance 0 lfigpadd /BR lfigpointdef
+BL
+BR [ BR 0 0.5 cm lfigpadd ]
+BR 0.5 cm 0.5 cm lfigpadd
+TR 0.5 cm -0.5 cm lfigpadd [ 0 0.5 cm TR lfigpsub ]
+TR
+TL [ 0 0.5 cm TL lfigpsub ]
+0.5 cm 0.5 cm TL lfigpsub
+BL -0.5 cm 0.5 cm lfigpadd [ BL 0 0.5 cm lfigpadd ]
+BL ] lfigdopath
+pop pop
+grestore
+
+grestore
+end end restore
+grestore
+0 5108(where)m
+240 fnt3 645 5110(LK)m 240 fnt1 1017 5108(tags)m 1458(a)s
+1630(record)s 2304(representing)s 3543(a)s 3715(link.)s 4257(The)s
+4690(\207rst)s 5127(list)s 5484(in)s 5732(an)s 3(y)k
+6135(node)s 6663(contains)s 7516(all)s 7815(the)s 8169(incoming)s
+0 4820(links,)m 577(the)s 931(second)s 1660(contains)s 2514(the)s
+2867(outgoing)s 3778(ones.)s 4387(The)s 4821(node)s 5348(serv)s 3(es)k
+5999(as)s 6255(the)s 6609(header)s 7311(for)s 7655(both)s
+8144(lists.)s 8698(The)s 0 4532(required)m 890(operations)s 1974(reduce)s
+2704(to)s 2979(simple)s 3709(appends,)s 4638(deletes,)s 5444(and)s
+5885(tra)s 4(v)k 3(ersals)k 6880(of)s 7187(doubly)s
+7944(link)s 2(ed)k 8635(lists,)s 0 4244(all)m 325(ha)s 4(ving)k
+1058(small)s 1663(constant)s 2552(cost.)s 3133(There)s 3779(is)s
+4021(a)s 4219(highly)s 4918(tuned)s 5540(memory)s 6423(allocator)s 9(,)k
+7389(and)s 7825(care)s 8310(is)s 8553(tak)s 2(en)k
+0 3956(to)m 269(dispose)s 1073(of)s 1374(each)s 1900(node)s
+2452(when)s 3058(the)s 3436(last)s 3858(incoming)s 4845(link)s
+5308(is)s 5549(deleted,)s 6376(so)s 6672(that)s 7120(there)s
+7684(is)s 7924(no)s 8247(need)s 8788(for)s 0 3668(g)m 1(arbage)k
+812(collection.)s 480 3294(In)m 739(normal)s 1475(use)s 1854(the)s
+2205(number)s 3000(of)s 3275(nodes)s 3888(at)s 4124(higher)s
+4799(le)s 6(v)k 3(els)k 5402(of)s 5676(the)s
+6028(dag)s 6431(is)s 6644(small)s 7220(in)s 7467(comparison)s
+8644(with)s 0 3006(the)m 351(lea)s 4(v)k 3(es)k
+995(and)s 1402(their)s 1903(incoming)s 2863(links,)s 3438(so)s
+3707(we)s 4046(may)s 4515(estimate)s 5369(the)s 5720(space)s
+6311(comple)s 3(xity)k 7441(at)s 7676(about)s 8271(60)s
+8570(bytes)s 0 2718(per)m 355(input)s 896(w)s 2(ord)k
+1433(\(20)s 1797(bytes)s 2342(per)s 2696(link,)s 3165(40)s
+3449(per)s 3803(leaf)s 4222(node\).)s 4920(Careful)s 5680(optimization)s
+6935(could)s 7514(easily)s 8114(halv)s 3(e)k 8674(this,)s
+0 2430(b)m 4(ut)k 362(since)s 909(memory)s 1760(is)s
+1970(reclaimed)s 2969(after)s 3465(printing)s 4275(each)s 4770(page)s
+5278(there)s 5811(is)s 6021(little)s 6513(need.)s 240 fnt2
+0 1781(2.5.)m 471(Context-sensiti)s 2(v)k 2(e)k 2274(attrib)s 4(utes)k
+3318(of)s 3590(objects)s
+[ /Dest /LOUTstyle /DEST pdfmark
+240 fnt1 480 1305(Although)m 1466(we)s
+1826(are)s 2198(free)s 2649(to)s 2913(place)s 3498(an)s 3(y)k
+3920(object)s 4588(in)s 4856(an)s 3(y)k 5278(conte)s 3(xt,)k
+6111(the)s 6484(conte)s 3(xt)k 7270(must)s 7820(in\210uence)s
+8778(the)s 0 1017(appearance)m 1131(of)s 1402(the)s 1750(object,)s
+2441(since)s 2988(otherwise)s 220 fnt5 480 518(A shor)m -8(t par)k 2(ag)k 2(r)k 2(aph of te)k 6(xt.)k
+
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 13 14
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Helvetica
+%%+ font Times-Italic
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt5 vec2 /Helvetica LoutRecode
+/fnt5 { /Helveticafnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt3 vec2 /Times-Italic LoutRecode
+/fnt3 { /Times-Italicfnt3 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5710 -1579(-)m 5838(13)s 6122(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+0 13253(could)m 588(not)s
+952(appear)s 1647(in)s 1887(a)s 2051(v)s 6(ariety)k
+2760(of)s 3028(fonts,)s 3611(column)s 4384(widths,)s 5126(etc.)s
+5566(This)s 6040(in\210uence)s 6970(cannot)s 7666(tak)s 2(e)k
+8116(the)s 8461(purely)s 0 12965(static)m 569(form)s 1106(that)s
+1538(block-structured)s 3175(languages)s 4196(use)s 4585(to)s 4837(associate)s
+5769(v)s 6(alues)k 6438(with)s 6933(identi\207ers,)s 8009(for)s
+8360(then)s 8843(an)s 0 12677(operator)m 850(could)s 1434(not)s
+1794(in\210uence)s 2721(the)s 3063(appearance)s 4188(of)s 4453(its)s
+4723(parameters;)s 5876(and)s 6274(a)s 6434(state)s 6921(v)s 6(ariable)k
+7734(solution)s 8556(is)s 8760(not)s 0 12389(compatible)m 1118(with)s
+1600(the)s 1948(o)s 3(v)k 3(erall)k 2660(functional)s
+3684(design.)s 480 12015(The)m 914(information)s 2105(needed)s 2848(from)s
+3378(the)s 3733(conte)s 3(xt)k 4500(seems)s 5141(quite)s
+5682(limited,)s 6471(comprising)s 7607(the)s 7961(font)s 8413(f)s 2(amily)k 15(,)k
+0 11727(f)m 2(ace,)k 525(and)s 952(size)s 1402(to)s
+1664(use,)s 2114(the)s 2485(style)s 3015(of)s 3309(paragraph)s
+4345(breaking)s 5259(required,)s 6185(ho)s 6(w)k 6669(much)s
+7281(space)s 7891(to)s 8154(substitute)s 0 11439(between)m 873(the)s
+1240(w)s 2(ords)k 1893(of)s 2184(paragraphs,)s 3359(and)s
+3782(ho)s 6(w)k 4263(much)s 4871(horizontal)s 5914(and)s
+6337(v)s 3(ertical)k 7124(space)s 7730(is)s 7959(a)s 4(v)k 6(ailable)k
+8887(to)s 0 11151(recei)m 6(v)k 3(e)k 763(the)s
+1139(object.)s 1914(These)s 2569(four)s 3054(items)s 3650(constitute)s
+4662(the)s 5038(so-called)s 5985(`style)s 6599(information')s 7866(of)s
+8165(Lout.)s 8809(As)s 0 10863(graphics)m 902(rendering)s 1912(hardw)s 2(are)k
+2896(impro)s 3(v)k 3(es,)k 3928(the)s 4317(style)s
+4865(information)s 6091(will)s 6558(probably)s 7504(gro)s 6(w)k
+8085(to)s 8366(include)s 0 10575(colour)m 671(and)s 1075(te)s 3(xture)k
+1791(information.)s 480 10201(The)m 908(w)s 2(ay)k 1359(to)s
+1598(deal)s 2051(with)s 2533(fonts)s 3062(at)s 3294(least)s
+3791(is)s 4001(v)s 3(ery)k 4477(clear:)s 220 fnt5
+480 9700({ )m 11(Times Slope 12p } @F)k 6(ont { Hello)k 8(, w)k 2(or)k -3(ld })k
+240 fnt1 0 9204(should)m 697(ha)s 4(v)k 3(e)k
+1198(result)s 240 fnt3 480 8750(Hello,)m 1104(world)s 240 fnt1
+0 8268(Lout)m 528(also)s 983(pro)s 3(vides)k 220 fnt5
+1872 8265(@Break)m 240 fnt1 2745 8268(and)m 220 fnt5 3166 8265(@Space)m
+240 fnt1 4080 8268(symbols)m 4946(for)s 5301(controlling)s 6420(the)s
+6785(paragraph)s 7815(breaking)s 8722(and)s 0 7980(space)m 610(styles)s
+1229(mentioned)s 2320(abo)s 3(v)k 3(e.)k 3074(These)s
+3724(w)s 2(ork)k 4299(in)s 4565(the)s 4937(same)s
+5507(w)s 2(ay)k 15(,)k 6020(returning)s 6972(their)s
+7493(right)s 8028(parameters)s 0 7692(in)m 261(the)s 627(style)s
+1152(of)s 1441(their)s 1956(left.)s 2455(The)s 2901(implementation)s
+4476(is)s 4704(v)s 3(ery)k 5198(simple:)s 6019(one)s
+6439(merely)s 7174(broadcasts)s 8252(the)s 8619(style)s 0 7404(information)m
+1183(do)s 6(wn)k 1765(into)s 2188(the)s 2533(parse)s
+3091(tree)s 3502(of)s 3771(the)s 4116(right)s 4625(parameter)s 13(.)k
+5728(A)s 5956(font,)s 6445(for)s 6781(e)s 3(xample,)k
+7693(is)s 7901(con)s 9(v)k 3(erted)k 8887(to)s
+0 7116(an)m 278(8-bit)s 783(internal)s 1562(name)s 2130(and)s
+2529(stored)s 3165(in)s 3403(each)s 3892(leaf,)s 4351(while)s
+4932(a)s 5093(breaking)s 5977(style)s 6479(is)s 6683(stored)s
+7320(in)s 7557(the)s 7900(root)s 8339(node)s 8855(of)s
+0 6828(each)m 495(paragraph.)s 480 6454(The)m 954(same)s 1547(language)s
+2514(design)s 3242(can)s 3677(be)s 4006(used)s 4549(for)s
+4933(a)s 4(v)k 6(ailable)k 5888(width)s 6536(and)s
+6986(height,)s 7738(only)s 8264(here)s 8778(the)s 0 6166(implementation)m
+1557(is)s 1767(much)s 2356(more)s 2903(demanding:)s 220 fnt5
+480 5665(2i @Wide {)m 480 5377(\(1\) |0.1i An e)m 6(xample)k 480 5089(containing a small)m 480 4801(par)m 2(ag)k 2(r)k 2(aph of \207lled te)k 6(xt.)k
+480 4513(})m 240 fnt1 0 4019(is)m 210(guaranteed)s 1317(to)s
+1556(be)s 1838(tw)s 2(o)k 2248(inches)s 2910(wide:)s
+480 3516(\(1\))m 891(An)s 1270(e)s 3(xample)k 2162(containing)s
+3254(a)s 891 3228(small)m 1504(paragraph)s 2558(of)s 2871(\207lled)s
+891 2940(te)m 3(xt.)k 0 2487(One)m 448(must)s 966(calculate)s
+1863(that)s 2273(1.9)s 2617(inches)s 3272(minus)s 3900(the)s
+4241(width)s 4836(of)s 220 fnt5 5100 2484(\(1\))m 240 fnt1
+5406 2487(is)m 5609(a)s 4(v)k 6(ailable)k 6510(to)s
+6741(the)s 7082(paragraph,)s 8138(and)s 8534(break)s 0 2199(it)m
+186(accordingly;)s 1421(Basser)s 2111(Lout)s 2617(does)s 3100(this)s
+3490(in)s 3727(tw)s 2(o)k 4130(stages.)s 4872(In)s
+5121(the)s 5463(\207rst,)s 5935(upw)s 2(ard-mo)k 3(ving)k
+7505(stage,)s 8097(widths)s 8779(are)s 0 1911(calculated)m 1018(using)s
+1581(the)s 1920(formulae)s 2829(of)s 3091(Section)s 3856(2.3,)s
+4254(which)s 4887(assume)s 5638(that)s 6047(a)s 4(v)k 6(ailable)k
+6946(space)s 7524(is)s 7725(in\207nite.)s 8557(If)s 8778(the)s
+0 1623(upw)m 2(ard)k 763(mo)s 3(v)k 3(ement)k
+1815(reaches)s 2570(a)s 240 fnt3 2724 1625(WIDE)m 240 fnt1
+3375 1623(node,)m 3936(corresponding)s 5346(to)s 5573(a)s 220 fnt5
+5728 1620(@Wide)m 240 fnt1 6490 1623(operator)m 9(,)k 7372(and)s
+7764(the)s 8100(calculated)s 0 1335(width)m 627(e)s 3(xceeds)k
+1457(that)s 1900(allo)s 6(wed,)k 2784(a)s 2975(second,)s
+3772(do)s 6(wnw)k 2(ard-mo)k 3(ving)k 5661(stage)s
+6234(is)s 6469(initiated)s 7334(which)s 8001(attempts)s 8887(to)s
+0 1047(reduce)m 681(the)s 1017(width)s 1606(by)s 1888(\207nding)s
+2607(and)s 2999(breaking)s 3877(paragraphs.)s 5077(This)s 5541(second)s
+6251(stage)s 6786(is)s 6984(quite)s 7505(routine)s 8226(e)s 3(xcept)k
+8894(at)s 220 fnt5 0 756(|)m 240 fnt1 84 759(nodes,)m
+736(whose)s 1390(children)s 2216(are)s 2549(the)s 2883(columns)s
+3731(of)s 3988(a)s 4141(table.)s 4755(It)s 4946(is)s
+5142(necessary)s 6111(to)s 6336(apportion)s 7296(the)s 7630(a)s 4(v)k 6(ailable)k
+8524(width)s 0 471(\(minus)m 727(inter)s 4(-column)k 2026(g)s 1(aps\))k
+2604(among)s 3321(the)s 3681(columns.)s 4668(Basser)s 5377(Lout)s
+5901(lea)s 4(v)k 3(es)k 6554(narro)s 6(w)k
+7291(columns)s 8166(unbrok)s 2(en)k
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 14 15
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Helvetica
+%%+ font Times-Bold
+%%+ font Symbol
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt5 vec2 /Helvetica LoutRecode
+/fnt5 { /Helveticafnt5 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt2 vec2 /Times-Bold LoutRecode
+/fnt2 { /Times-Boldfnt2 LoutFont } def
+%%IncludeResource: font Symbol
+/fnt4 { /Symbol LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5705 -1579(-)m 5833(14)s 6127(-)s 9066 13419 0 13310 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+0 13256(and)m 404(breaks)s
+1079(the)s 1427(remaining)s 2449(columns)s 3311(to)s 3550(equal)s
+4123(width,)s 4775(using)s 5347(up)s 5640(all)s 5933(of)s
+6204(the)s 6552(a)s 4(v)k 6(ailable)k 7460(space.)s
+480 12882(The)m 897(size)s 1313(of)s 1572(an)s 1844(object)s
+2476(is)s 2675(not)s 3029(clearly)s 3721(determined)s 4843(when)s
+5407(the)s 5744(upw)s 2(ard-mo)k 3(ving)k 7309(size)s
+7725(is)s 7923(less)s 8321(than)s 8778(the)s 0 12594(do)m 6(wnw)k 2(ard-mo)k 3(ving)k
+1871(a)s 4(v)k 6(ailable)k 2786(space,)s 3431(and)s
+3842(the)s 4197(object)s 4849(contains)s 5704(constructs)s 6731(that)s
+7156(depend)s 7913(on)s 8218(a)s 4(v)k 6(ailable)k
+0 12306(space)m 587(\(e.g.)s 1056(right)s 1567(justi\207cation\).)s 2938(F)s 3(or)k
+3327(e)s 3(xample,)k 4241(in)s 220 fnt5 480 11805(2i @Wide { Heading // a |1r)m -8(t b })k
+240 fnt1 0 11306(it)m 211(seems)s 865(natural)s 1603(to)s
+1861(assign)s 2536(a)s 2721(width)s 3342(of)s 3633(tw)s 2(o)k
+4062(inches)s 4744(to)s 5002(the)s 5369(subobject)s 220 fnt5
+6366 11303(a |1r)m -8(t b)k 240 fnt1 7124 11306(because)m 7957(of)s
+8247(the)s 8615(right)s 0 11018(justi\207cation,)m 1270(b)s 4(ut)k
+1667(it)s 1895(w)s 2(ould)k 2585(be)s 2903(equally)s
+3696(plausible)s 4650(if)s 4903(the)s 5286(width)s 5924(of)s
+220 fnt5 6230 11015(Heading)m 240 fnt1 7129 11018(w)m 2(as)k
+7586(assigned)s 8503(to)s 8778(the)s 0 10730(subobject)m 989(instead.)s
+1843(The)s 2284(author)s 2968(is)s 3191(conscious)s 4199(of)s
+4483(ha)s 4(ving)k 5197(f)s 2(ailed)k 5809(to)s
+6061(resolv)s 3(e)k 6817(this)s 7226(matter)s 7908(properly;)s
+8843(an)s 0 10442(e)m 3(xtra)k 534(operator)s 1390(for)s
+1728(controlling)s 2830(a)s 4(v)k 6(ailable)k 3738(space)s
+4325(is)s 4535(probably)s 5440(necessary)s 15(.)k 480 10068(The)m
+930(actual)s 1578(paragraph)s 2614(breaking)s 3527(is)s 3759(just)s
+4187(a)s 4376(simple)s 5092(transformation)s 6578(on)s 6897(the)s
+7268(parse)s 7851(tree;)s 8343(the)s 8714(real)s 0 9780(issue)m
+544(is)s 764(ho)s 6(w)k 1235(to)s 1484(describe)s
+2346(the)s 2704(v)s 6(arious)k 3463(styles:)s 4183(ragged)s
+4902(right,)s 5470(adjusted,)s 6384(outdented,)s 7445(and)s 7859(so)s
+8135(on.)s 8549(Their)s 0 9492(di)m 6(v)k 3(ersity)k
+874(suggests)s 1729(that)s 2140(the)s 3(y)k 2596(should)s
+3286(someho)s 6(w)k 4245(be)s 4519(de\207ned)s 5275(using)s
+5840(more)s 6380(basic)s 6917(features;)s 7777(b)s 4(ut)k
+8132(then)s 8593(there)s 0 9204(are)m 367(algorithms)s 1461(for)s
+1820(high-quality)s 3064(paragraph)s 4098(breaking,)s 5063(which)s 5726(presumably)s
+6917(must)s 7463(be)s 7766(b)s 4(uilt-in.)k 8650(This)s
+0 8916(dilemma)m 915(w)s 2(as)k 1355(not)s 1741(clearly)s
+2463(grasped)s 3285(by)s 3598(the)s 3966(author)s 4656(in)s
+4919(1985,)s 5525(and)s 5949(he)s 6250(included)s 7152(a)s
+7337(b)s 4(uilt-in)k 8113(paragraph)s 0 8628(break)m 2(er)k 9(,)k
+818(with)s 1306(the)s 220 fnt5 1660 8625(@Break)m 240 fnt1
+2522 8628(operator)m 3384(selecting)s 4292(from)s 4822(a)s 4995(\207x)s 3(ed)k
+5535(set)s 5866(of)s 6143(styles.)s 6857(A)s 7093(much)s
+7688(better)s 8298(solution)s 0 8340(based)m 603(on)s 900(g)s 1(alle)k 3(ys)k
+1624(will)s 2050(be)s 2332(gi)s 6(v)k 3(en)k
+2912(in)s 3155(Section)s 3929(5.5,)s 4336(b)s 4(ut,)k
+4745(re)s 3(grettably)k 15(,)k 5868(it)s 6060(is)s
+6270(not)s 6636(implemented.)s 240 fnt2 0 7547(3.)m 291(De\207nitions)s
+
+[ /Dest /LOUT18_694_s3_0_1 /DEST pdfmark
+240 fnt1 480 7116(The)m 936(need)s 1474(to)s 1741(pro)s 3(vide)k
+2554(a)s 2748(means)s 3438(of)s 3737(packaging)s 4803(useful)s
+5470(pieces)s 6146(of)s 6445(code)s 6982(for)s 7348(easy)s
+7855(repeated)s 8751(use)s 0 6828(w)m 2(as)k 440(recognised)s
+1554(in)s 1816(the)s 2184(v)s 3(ery)k 2679(earliest)s
+3447(programming)s 4822(languages.)s 5962(This)s 6458(need)s 6987(is)s
+7217(e)s 6(v)k 3(en)k 7736(more)s 8303(acute)s
+8883(in)s 0 6540(document)m 1004(formatting,)s 2118(if)s 2335(that)s
+2752(is)s 2962(possible,)s 3852(because)s 4664(the)s 5012(majority)s
+5874(of)s 6145(users)s 6686(are)s 7033(not)s 7398(programmers)s
+8722(and)s 0 6252(do)m 293(not)s 659(understand)s 1767(the)s
+2115(code)s 2623(the)s 3(y)k 3086(in)s 9(v)k 4(ok)k 2(e.)k
+240 fnt2 0 5603(3.1.)m 471(Operators)s
+[ /Dest /LOUToperators /DEST pdfmark
+240 fnt1 480 5126(It)m
+680(is)s 885(e)s 6(vident)k 1637(from)s 2156(the)s
+2498(e)s 3(xample)k 3356(of)s 3621(Eqn)s 4059(that)s
+4471(user)s 4(-de\207ned)k 5702(operators)s 6636(are)s 6978(needed)s
+7708(that)s 8121(mimic)s 8778(the)s 0 4838(primiti)m 6(v)k 3(e)k
+929(ones)s 1426(in)s 1677(taking)s 2335(objects)s 3071(as)s
+3328(parameters)s 4434(and)s 4845(returning)s 5781(objects)s 6517(as)s
+6774(results.)s 7569(F)s 3(or)k 7965(e)s 3(xample,)k
+8887(to)s 0 4550(de\207ne)m 641(a)s 807(superscript)s 1915(operator)s
+2771(so)s 3037(that)s 220 fnt5 480 4056(2 sup n)m 240 fnt1
+0 3531(appears)m 781(as)s 168 fnt1 1145 3647(n)m 240 fnt4
+1031 3525(2)m 240 fnt1 1227 3531(,)m 1334(the)s 1682(follo)s 6(wing)k
+2659(operator)s 3515(de\207nition)s 4489(may)s 4955(be)s 5237(used:)s
+220 fnt5 480 3032(def sup)m 480 2744( precedence 50)m 480 2456( associativity r)m -3(ight)k
+480 2168( left x)m 480 1880( r)m -3(ight y)k 480 1592({)m 480 1304( @OneRo)m 3(w { | {-2p @F)k 6(ont y} ^/0.5fk x })k
+480 1016(})m 240 fnt1 0 520(The)m 220 fnt5 481 517(sup)m
+240 fnt1 940 520(operator)m 1850(has)s 2273(precedence)s 3458(50,)s
+3858(is)s 4122(right)s 4686(associati)s 6(v)k 3(e,)k
+5886(tak)s 2(es)k 6479(tw)s 2(o)k 6943(objects)s
+7724(as)s 8028(parameters)s 0 232(passed)m 720(on)s 1041(the)s
+1413(left)s 1814(and)s 2242(right,)s 2825(and)s 3253(returns)s
+3991(the)s 4363(object)s 5031(between)s 5910(braces)s 6595(as)s
+6869(result.)s 7587(This)s 8087(object)s 8756(has)s
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 15 16
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Helvetica
+%%+ font Times-Bold
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt3 vec2 /Times-Italic LoutRecode
+/fnt3 { /Times-Italicfnt3 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt5 vec2 /Helvetica LoutRecode
+/fnt5 { /Helveticafnt5 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt2 vec2 /Times-Bold LoutRecode
+/fnt2 { /Times-Boldfnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5709 -1582(-)m 5837(15)s 6123(-)s 9066 13413 0 13304 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+0 13250(the)m 348(structure)s
+gsave
+608 12769 translate
+280 fnt3 128 191 0 123 280 288 70 LoutGraphic
+gsave
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+128 191 0 123 280 288 70 0 0 LoutGr2
+/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+128 191 0 123 280 288 70 0 0 LoutGr2
+
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd
+[]
+xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
+pop pop
+grestore
+260 fnt5 0 56(y)m
+grestore
+
+grestore
+end end restore
+grestore
+gsave
+480 12634 translate
+280 fnt3 128 135 0 67 280 288 70 LoutGraphic
+gsave
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+128 135 0 67 280 288 70 0 0 LoutGr2
+/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+128 135 0 67 280 288 70 0 0 LoutGr2
+
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd
+[]
+xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
+pop pop
+grestore
+260 fnt5
+0 0(x)m
+grestore
+
+grestore
+end end restore
+grestore
+0 12183(b)m 4(ut)k 381(with)s 882(the)s
+1249(\207rst)s 1699(ro)s 6(w)k 2138(mark)s 2709(hidden)s
+3437(by)s 3751(the)s 220 fnt5 4118 12180(@OneRo)m 3(w)k
+240 fnt1 5268 12183(operator)m 9(,)k 6181(and)s 220 fnt5
+6604 12180(y)m 240 fnt1 6791 12183(tw)m 2(o)k 7220(points)s
+7875(smaller)s 8657(than)s 0 11895(it)m 220(w)s 2(ould)k
+904(otherwise)s 1917(ha)s 4(v)k 3(e)k 2447(been.)s
+3091(The)s 3548(length)s 220 fnt5 4231 11892(0.5f)m 240 fnt1
+4683 11895(speci\207es)m 5585(half)s 6057(the)s 6433(current)s 7198(font)s
+7671(size;)s 8243(Figure)s 8952(2)s 0 11607(describes)m 936(the)s
+220 fnt5 1280 11604(k)m 240 fnt1 1446 11607(g)m 1(ap)k
+1840(mode.)s 2532(In)s 2784(the)s 3128(Eq)s 3448(equation)s
+4325(formatting)s 5382(package)s 6218([10])s 6651(the)s 6995(equation)s
+7872(as)s 8118(a)s 8280(whole)s 8916(is)s 0 11319(set)m
+331(in)s 580(italic)s 1116(font,)s 1614(and)s 220 fnt5
+2024 11316(2)m 240 fnt1 2203 11319(is)m 2419(an)s 2709(identi\207er)s
+3637(whose)s 4311(body)s 4852(contains)s 5706(a)s 5879(font)s
+6330(change)s 7070(back)s 7590(to)s 7835(Roman.)s 8698(The)s
+0 11031(digits)m 220 fnt5 586 11028(0)m 240 fnt1 765 11031(to)m
+220 fnt5 1009 11028(9)m 240 fnt1 1186 11031(are)m 1538(classed)s
+2291(as)s 2546(punctuation)s 3737(characters,)s 4816(permitting)s 220 fnt5
+5869 11028(234)m 240 fnt1 6293 11031(for)m 6635(e)s 3(xample)k
+7503(to)s 7747(be)s 8034(interpreted)s 0 10743(as)m 250(a)s
+416(sequence)s 1349(of)s 1620(three)s 2153(identi\207ers.)s 480 10369(These)m
+1152(de\207nitions)s 2258(are)s 2650(easily)s 3307(implemented)s 4658(by)s
+4997(a)s 5208(standard)s 6122(symbol)s 6927(table)s 7492(and)s
+7941(an)s 8270(operator)s 0 10081(precedence)m 1155(parser)s 13(.)k
+1914(Algol)s 2539(block)s 3157(structure)s 4073(with)s 4580(the)s
+4953(usual)s 5538(scope)s 6164(rules)s 6704(w)s 2(as)k
+7150(adopted)s 7991(as)s 8266(a)s 8457(matter)s 0 9793(of)m
+271(course.)s 480 9419(Operators)m 1481(are)s 1837(limited)s 2580(to)s
+2828(at)s 3069(most)s 3603(tw)s 2(o)k 4022(parameters,)s
+5185(left)s 5571(and)s 5984(right,)s 6551(and)s 6964(the)s
+7321(parameters)s 8428(cannot)s 0 9131(be)m 282(gi)s 6(v)k 3(en)k
+862(def)s 2(ault)k 1583(v)s 6(alues.)k 240 fnt3
+2352 9133(Named)m 240 fnt1 3097 9131(parameters)m 4195(solv)s 3(e)k
+4753(both)s 5236(problems:)s 220 fnt5 480 8630(def @Pref)m 6(ace)k
+480 8342( named @T)m 26(ag {})k 480 8054( named @Title { Pref)m 6(ace })k 480 7766( r)m -3(ight @Body)k
+480 7478({)m 480 7190( Bold @F)m 6(ont @Title)k 480 6902( //0.3v @Body)m 480 6614(})m
+240 fnt1 0 6120(The)m 452(def)s 2(ault)k 1197(v)s 6(alue)k
+1789(appears)s 2594(just)s 3023(after)s 3543(the)s 3915(parameter')s 13(s)k
+5103(declaration,)s 6295(between)s 7173(braces.)s 7972(In)s 9(v)k 4(ocations)k
+0 5832(ha)m 4(v)k 3(e)k 501(a)s 667(natural)s
+1385(syntax:)s 220 fnt5 480 5331(@Pref)m 6(ace)k 480 5043( @Title { About this book })m
+480 4755({)m 480 4467( F)m 6(e)k 4(w obser)k -6(v)k 5(ers w)k 2(ould ha)k 4(v)k 5(e supposed in 1984, that ...)k
+480 4179(})m 240 fnt1 0 3685(with)m 480(the)s 826(actual)s
+1449(named)s 2143(parameters)s 3239(follo)s 6(wing)k 4214(directly)s
+4995(after)s 5489(the)s 5835(operator)s 9(,)k 6727(before)s
+7391(an)s 3(y)k 7786(right)s 8295(parame-)s 0 3397(ter)m 13(.)k
+400(In)s 653(this)s 1046(e)s 3(xample,)k 220 fnt5
+1958 3394(@T)m 26(ag)k 240 fnt1 2578 3397(will)m 3001(recei)s 6(v)k 3(e)k
+3735(its)s 4008(def)s 2(ault)k 4726(v)s 6(alue,)k
+5342(and)s 5744(a)s 5907(less)s 6313(e)s 3(xpert)k
+6965(user)s 7420(could)s 8007(safely)s 8628(omit)s 0 3109(the)m
+220 fnt5 348 3106(@Title)m 240 fnt1 1036 3109(parameter)m 2050(as)s
+2300(well.)s 480 2735(Lout)m 1007(permits)s 1789(named)s 2500(parameters)s
+3613(to)s 3867(ha)s 4(v)k 3(e)k 4384(parameters,)s
+5553(a)s 5734(feature)s 6467(with)s 6964(applications)s 8185(to)s
+8440(biblio-)s 0 2447(graphic)m 781(databases,)s 1816(running)s 2626(headers,)s
+3475(and)s 3891(other)s 4454(places)s 5114(where)s 5766(a)s
+5944(format)s 6652(has)s 7034(to)s 7285(be)s 7579(supplied)s
+8460(before)s 0 2159(content)m 760(is)s 965(kno)s 6(wn.)k
+1771(One)s 2221(could)s 2806(go)s 3094(further)s 3798(and)s
+4197(pro)s 3(vide)k 4976(a)s 5137(complete)s 6064(lambda)s
+6823(calculus,)s 7708(with)s 8185(functions)s 0 1871(as)m 250(\207rst-)s
+689(class)s 1204(objects,)s 1988(pro)s 3(vided)k 2894(care)s
+3347(w)s 2(as)k 3768(tak)s 2(en)k 4341(not)s
+4707(to)s 4946(intimidate)s 5970(the)s 6318(non-)s 6746(e)s 3(xpert)k
+7400(user)s 13(.)k 240 fnt2 0 1222(3.2.)m 471(Recursion)s
+1563(and)s 2004(page)s 2539(lay)s 6(out)k
+[ /Dest /LOUTrecursion /DEST pdfmark
+240 fnt1
+480 745(Design)m 1302(and)s 1794(implementation)s 3439(should)s 4223(proceed)s
+5126(together)s 6057(in)s 6387(e)s 3(xploratory)k 7628(projects,)s
+8579(since)s 0 457(otherwise)m 988(the)s 1340(design)s 2025(too)s
+2388(easily)s 3003(becomes)s 3894(unrealistic.)s 5056(Sometimes)s 6173(the)s
+6524(implementation)s 8085(does)s 8579(more)s
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 16 17
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt5 vec2 /Helvetica LoutRecode
+/fnt5 { /Helveticafnt5 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5705 -1581(-)m 5833(16)s 6126(-)s 9066 13414 0 13305 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+0 13251(than)m 469(its)s
+745(designer)s 1615(intended.)s 2603(The)s 3031(author)s 3702(wrote)s
+4302(the)s 4650(follo)s 6(wing)k 5627(purely)s 6292(as)s
+6542(a)s 6708(testing)s 7398(scaf)s 6(fold:)k 220 fnt5
+480 12750(def @P)m 8(age r)k -3(ight x)k 480 12462({)m 480 12174( 8i @Wide 11i @High)m
+480 11886( {)m 480 11598( //1i ||1i x ||1i)m 480 11310( //1i)m 480 11022( })m 480 10734(})m
+240 fnt1 0 10240(Only)m 518(afterw)s 2(ards)k 1558(did)s
+1906(he)s 2172(realize)s 2848(its)s 3108(signi\207cance:)s 4400(the)s
+4732(concept)s 5521(of)s 5776(a)s 5926(page)s 6418(had)s
+6807(been)s 7300(de\207ned)s 8047(outside)s 8778(the)s 0 9952(implementation,)m
+1619(remo)s 3(ving)k 2598(the)s 2959(need)s 3481(for)s
+3831(commands)s 4932(for)s 5282(setting)s 5984(page)s 6505(width)s
+7119(and)s 7535(height,)s 8253(mar)s 4(gins,)k 0 9664(and)m
+404(so)s 670(on.)s 480 9290(De\207ning)m 1393(a)s 1582(sequence)s
+2538(of)s 2831(pages)s 3450(is)s 3683(harder)s 9(,)k
+4414(since)s 4983(their)s 5503(number)s 6317(is)s 6550(not)s
+6938(kno)s 6(wn)k 7665(in)s 7931(adv)s 6(ance.)k
+8896(A)s 0 9002(simple)m 693(v)s 3(ersion)k 1451(of)s
+1722(this)s 2118(same)s 2665(problem)s 3522(is)s 3732(af)s 6(forded)k
+4593(by)s 4887(the)s 5235(leaders)s 5962(found)s 6579(in)s
+6822(tables)s 7430(of)s 7701(contents:)s 480 8497(Chapter)m 1297(7)s
+1525(..)s 1809(..)s 2093(..)s 2377(..)s 2661(..)s
+2945(..)s 3229(..)s 3513(..)s 3797(..)s 4081(..)s
+4365(..)s 4649(..)s 4933(..)s 5217(..)s 5501(..)s
+5785(..)s 6009(53)s 0 7994(This)m 476(seemed)s 1251(to)s
+1490(require)s 2222(recursion,)s 3218(speci\207cally)s 4360(the)s 4708(de\207nition)s
+220 fnt5 480 7493(def @Leaders { ..)m 13( @Leaders })k 240 fnt1 0 6999(Note)m
+535(that)s 968(both)s 220 fnt5 1465 6996(..)m 240 fnt1
+1643 6999(and)m 220 fnt5 2061 6996(@Leaders)m 240 fnt1 3145 6999(are)m
+3506(objects,)s 4305(so)s 4585(the)s 4948(tw)s 2(o)k
+5372(spaces)s 6062(separating)s 7111(them)s 7664(are)s 8026(signi\207cant.)s
+0 6711(No)m 361(base)s 858(case)s 1341(is)s 1567(gi)s 6(v)k 3(en,)k
+2213(and)s 2633(indeed)s 3345(we)s 3696(ha)s 4(v)k 3(e)k
+4213(no)s 4522(boolean)s 5353(or)s 5628(conditional)s 6775(operators)s
+7731(with)s 8229(which)s 8887(to)s 0 6423(e)m 3(xpress)k
+757(it;)s 993(b)s 4(ut)k 1346(we)s 1673(can)s
+2053(adopt)s 2637(the)s 2977(implicit)s 3770(base)s 4243(`if)s
+4530(space)s 5109(is)s 5311(not)s 5668(suf\207cient,)s 6656(delete)s
+220 fnt5 7273 6420(@Leaders)m 240 fnt1 8334 6423(and)m 8729(an)s 3(y)k
+0 6135(preceding)m 996(space'.)s 1770(Then)s 2319(the)s 2667(e)s 3(xpression)k
+220 fnt5 480 5634(4i @Wide { Chapter 7 @Leaders 53 })m 240 fnt1 0 5138(will)m 416(produce)s
+1233(the)s 1571(object)s 2205(sho)s 6(wn)k 2872(abo)s 3(v)k 3(e.)k
+3592(It)s 3787(is)s 3987(hard)s 4460(to)s 4689(see)s
+5040(ho)s 6(w)k 5491(this)s 5877(base)s 6348(could)s
+6928(be)s 7200(made)s 7764(e)s 3(xplicit,)k 8573(with-)s
+0 4850(out)m 348(violating)s 1232(the)s 1561(general)s 2301(principle)s
+3187(of)s 3439(k)s 2(eeping)k 4230(all)s 4504(size)s
+4912(information)s 6079(internal.)s 6953(In)s 7190(the)s 7519(implementation,)s
+220 fnt5 0 4559(@Leaders)m 240 fnt1 1071 4562(remains)m 1881(une)s 3(xpanded)k
+3097(while)s 3686(sizes)s 4204(are)s 4554(being)s 5142(calculated;)s
+6224(then)s 6696(it)s 6891(is)s 7103(treated)s 7813(similarly)s
+8718(to)s 8960(a)s 0 4274(recepti)m 6(v)k 3(e)k
+922(symbol,)s 1734(with)s 2216(its)s 2492(body)s 3026(as)s
+3276(an)s 3559(incoming)s 4516(g)s 1(alle)k 3(y)k
+5150(\(Section)s 6003(5.2\).)s 480 3900(W)m 9(ith)k 1014(this)s
+1418(settled,)s 2156(it)s 2356(is)s 2574(no)s 6(w)k
+3044(clear)s 3575(ho)s 6(w)k 4044(to)s 4291(de\207ne)s
+4940(a)s 5115(document)s 6127(which)s 6777(is)s 6995(a)s
+7169(numbered)s 8193(sequence)s 0 3612(of)m 271(pages.)s 980(Let)s
+220 fnt5 1358 3609(@Ne)m 6(xt)k 240 fnt1 2082 3612(be)m
+2364(a)s 2530(pre\207x)s 3143(operator)s 3999(which)s 4641(returns)s
+5355(its)s 5631(parameter)s 6645(plus)s 7095(one.)s 7605(Then)s
+220 fnt5 480 3111(def @P)m 8(ageList)k 480 2823( r)m -3(ight @P)k 8(ageNum)k
+480 2535({)m 480 2247( @P)m 8(age {)k 480 1959( |0.5r)m -8(t - @P)k 8(ageNum -)k
+480 1671( //1v @T)m 26(e)k 6(xtPlace)k 480 1383( //1r)m -8(t @F)k 6(ootSect)k
+480 1095( })m 480 807( //)m 480 519( @P)m 8(ageList @Ne)k 6(xt @P)k 8(ageNum)k
+480 231(})m
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 17 18
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt5 vec2 /Helvetica LoutRecode
+/fnt5 { /Helveticafnt5 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5708 -1579(-)m 5836(17)s 6124(-)s 9066 13418 0 13418 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+0 13255(when)m 576(in)s 9(v)k 4(ok)k 2(ed)k
+1391(in)s 1634(the)s 1982(e)s 3(xpression)k 220 fnt5
+3059 13252(@P)m 8(ageList 1)k 240 fnt1 4267 13255(,)m 4374(has)s
+4744(for)s 5082(its)s 5358(result)s 5948(the)s 6296(potentially)s
+7372(in\207nite)s 8105(object)s 1927 2494 0 2494 240 288 60 480 10421 LoutGr2
+0 0 moveto xsize 0 lineto xsize ysize lineto
+0 ysize lineto closepath stroke
+grestore
+160 fnt1 845 2216(-)m 931(1)s
+1035(-)s 140 fnt5 170 2000(@T)m 16(e)k 4(xtPlace)k
+170 173(@F)m 4(ootSect)k
+grestore
+1927 2494 0 2494 240 288 60 480 7927 LoutGr2
+0 0 moveto xsize 0 lineto xsize ysize lineto
+0 ysize lineto closepath stroke
+grestore
+160 fnt1 839 2216(-)m 925(2)s
+1041(-)s 140 fnt5 170 2000(@T)m 16(e)k 4(xtPlace)k
+170 173(@F)m 4(ootSect)k
+grestore
+140 fnt5 480 7712(@P)m 5(ageList 3)k
+240 fnt1 0 7230(Similarly)m 15(,)k 980(we)s 1315(may)s
+1781(de\207ne)s 220 fnt5 2422 7227(@F)m 6(ootSect)k 240 fnt1
+3573 7230(lik)m 2(e)k 3985(this:)s 220 fnt5 480 6729(def @F)m 6(ootSect)k
+480 6441({)m 480 6153( def @F)m 6(ootList)k 480 5865( r)m -3(ight @Num)k
+480 5577( {)m 480 5289( @F)m 6(ootPlace)k 480 5001( //1v)m 480 4713( @F)m 6(ootList @Ne)k 6(xt @Num)k
+480 4425( })m 480 3849( 1i @Wide @HLine)m 480 3561( //1v)m 480 3273( @F)m 6(ootList 1)k
+480 2985(})m 240 fnt1 0 2491(so)m 266(that)s 684(an)s
+967(in)s 9(v)k 4(ocation)k 2021(of)s 220 fnt5
+2292 2488(@F)m 6(ootSect)k 240 fnt1 3443 2491(produces)m gsave
+480 2151 translate
+220 fnt5
+1440 0 0 0 220 288 61 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+220 fnt5 480 1806(@F)m 6(ootPlace)k 480 1518(@F)m 6(ootPlace)k
+480 1230(@F)m 6(ootPlace)k 480 942(...)m
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 18 19
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Helvetica
+%%+ font Times-Bold
+%%+ font Times-Italic
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt5 vec2 /Helvetica LoutRecode
+/fnt5 { /Helveticafnt5 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt2 vec2 /Times-Bold LoutRecode
+/fnt2 { /Times-Boldfnt2 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt3 vec2 /Times-Italic LoutRecode
+/fnt3 { /Times-Italicfnt3 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5708 -1579(-)m 5836(18)s 6123(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+0 13253(The)m 476(e)s 3(xpansion)k
+1550(process)s 2367(is)s 2626(v)s 3(ery)k 3150(similar)s
+3921(to)s 4209(a)s 4424(BNF)s 4997(deri)s 6(v)k 6(ation,)k
+6109(and)s 6562(w)s 2(ould)k 7266(be)s 7597(attempted)s
+8646(only)s 0 12965(on)m 297(demand.)s 480 12591(Clearly)m 15(,)k
+1276(deciding)s 2154(which)s 2797(e)s 3(xpansions)k 3910(to)s
+4150(tak)s 2(e)k 4603(and)s 5008(replacing)s 220 fnt5
+5951 12588(@T)m 26(e)k 6(xtPlace)k 240 fnt1 7170 12591(and)m
+220 fnt5 7575 12588(@F)m 6(ootPlace)k 240 fnt1 8832 12591(by)m
+0 12303(the)m 338(appropriate)s 1471(actual)s 2085(te)s 3(xt)k
+2489(will)s 2904(not)s 3259(be)s 3530(easy;)s 4056(this)s
+4441(is)s 4640(the)s 4977(subject)s 5703(of)s 5963(Section)s
+6726(5.1.)s 7179(The)s 7596(important)s 8574(point)s 0 12015(for)m
+331(no)s 6(w)k 784(is)s 986(that)s 1397(we)s
+1724(ha)s 4(v)k 3(e)k 2217(here)s 2677(a)s
+2835(v)s 3(ery)k 3303(simple)s 3989(and)s 4385(\210e)s 3(xible)k
+5147(method)s 5916(of)s 6179(specifying)s 7220(the)s 7561(layout)s
+8211(of)s 8474(pages,)s 0 11727(which)m 642(requires)s 1462(no)s
+1755(specialized)s 2874(language)s 3794(features.)s 240 fnt2 0 11079(3.3.)m
+471(Modules)s
+[ /Dest /LOUTmodules /DEST pdfmark
+240 fnt1 480 10648(It)m 679(is)s 882(well)s
+1342(accepted)s 2229(that)s 2641(the)s 2982(visibility)s 3879(of)s
+4143(symbols)s 4986(is)s 5189(not)s 5549(adequately)s 6632(controlled)s
+7653(by)s 7940(Algol)s 8533(block)s 0 10360(structure.)m 999(The)s
+1427(author)s 2098(is)s 2308(a)s 3(w)k 2(are)k
+2929(of)s 3200(se)s 6(v)k 3(eral)k 3922(major)s
+4539(problems)s 5480(of)s 5751(this)s 6147(kind)s 6631(in)s
+6874(document)s 7878(formatting.)s 480 9986(One)m 976(problem)s 1874(is)s
+2126(that)s 2585(some)s 3187(symbols)s 4078(should)s 4816(be)s
+5139(visible)s 5874(only)s 6395(within)s 7104(restricted)s 8091(parts)s
+8647(of)s 8960(a)s 0 9698(document.)m 1108(F)s 3(or)k
+1497(e)s 3(xample,)k 2411(we)s 2746(naturally)s 3649(e)s 3(xpect)k
+4330(equation)s 5211(formatting)s 6272(to)s 6511(be)s 6793(accomplished)s
+8166(lik)s 2(e)k 8578(this:)s 220 fnt5 480 9201(surrounding te)m 6(xt)k
+480 8913(@Eq { {x sup 2 + 1} o)m 3(v)k 5(er 4 })k 480 8625(surrounding te)m 6(xt)k
+240 fnt1 0 8126(with)m 482(the)s 830(symbols)s 220 fnt5
+1679 8123(sup)m 240 fnt1 2025 8126(,)m 220 fnt5 2132 8123(o)m 3(v)k 5(er)k
+240 fnt1 2551 8126(,)m 2658(etc.,)s 3103(visible)s 3796(only)s
+4276(within)s 4944(the)s 5292(equation,)s 6223(not)s 6589(in)s
+6832(the)s 7180(surrounding)s 8390(te)s 3(xt.)k 480 7752(It)m
+695(seems)s 1341(natural)s 2069(to)s 2319(de\207ne)s 2970(these)s
+3528(symbols)s 4387(within)s 220 fnt5 5066 7749(@Eq)m 240 fnt1
+5544 7752(,)m 5661(since)s 6219(the)s 3(y)k 6692(are)s
+7050(local)s 7579(to)s 7829(equations.)s 8921(It)s 0 7464(only)m
+494(remains)s 1316(then)s 1799(to)s 2053(decree)s 2746(that)s
+3179(symbols)s 4043(local)s 4576(to)s 220 fnt5 4830 7461(@Eq)m
+240 fnt1 5382 7464(are)m 5744(to)s 5998(be)s 6294(visible)s
+7002(within)s 7684(its)s 7975(actual)s 8615(right)s 0 7176(parameter)m 9(,)k
+1052(and)s 1456(this)s 1852(is)s 2062(done)s 2584(by)s
+2878(replacing)s 3820(the)s 4168(right)s 4679(formal)s 5370(parameter)s
+6384(with)s 6866(a)s 240 fnt3 7032 7178(body)m 240 fnt1
+7554 7176(parameter:)m 220 fnt5 480 6690(e)m 6(xpor)k -8(t sup o)k 3(v)k 5(er)k
+480 6402(def @Eq)m 480 6114( body @Body)m 480 5826({)m 480 5538( def sup ...)m 480 5250( def o)m 3(v)k 5(er ...)k
+480 4674( Slope @F)m 6(ont @Body)k 480 4386(})m 240 fnt1 0 3892(The)m
+220 fnt5 426 3889(e)m 6(xpor)k -8(t)k 240 fnt1
+1092 3892(clause)m 1743(lists)s 2176(the)s 2522(identi\207ers)s 3526(which)s
+4166(are)s 4511(permitted)s 5482(to)s 5719(be)s 5999(visible)s
+6690(outside)s 7435(their)s 7930(usual)s 8488(range,)s 0 3604(the)m
+359(body)s 905(of)s 220 fnt5 1188 3601(@Eq)m 240 fnt1
+1666 3604(;)m 1790(and)s 2206(the)s 220 fnt5 2566 3601(body)m
+240 fnt1 3112 3604(declaration)m 4241(imports)s 5034(them)s 5584(into)s
+6021(\(mak)s 2(es)k 6772(them)s 7322(visible)s 8027(within\))s
+8778(the)s 0 3316(actual)m 614(right)s 1114(parameter)s 2117(of)s
+2376(each)s 2860(in)s 9(v)k 4(ocation)k 3903(of)s
+220 fnt5 4162 3313(@Eq)m 240 fnt1 4640 3316(.)m 4793(This)s
+5258(arrangement)s 6500(has)s 6859(pro)s 3(v)k 3(en)k
+7564(v)s 3(ery)k 8028(con)s 9(v)k 3(enient)k
+0 3028(for)m 338(de\207ning)s 1176(a)s 1342(v)s 6(ariety)k
+2053(of)s 2324(special-purpose)s 3880(packages.)s 480 2654(Another)m 1361(problem)s
+2256(arises)s 2888(when)s 3502(global)s 4193(symbols,)s 5136(such)s
+5669(as)s 5957(the)s 6343(ones)s 6871(used)s 7406(for)s
+7782(headings)s 8722(and)s 0 2366(paragraph)m 1034(separators,)s 2130(call)s
+2550(on)s 2868(v)s 6(alues)k 3545(that)s 3984(the)s
+4353(non-e)s 3(xpert)k 5468(user)s 5947(will)s 6394(need)s
+6925(to)s 7185(modify)s 15(,)k 7989(such)s 8506(as)s
+8778(the)s 0 2078(initial)m 605(font)s 1044(or)s 1297(paragraph)s
+2303(indent.)s 3059(These)s 3680(v)s 6(alues)k 4329(are)s
+4670(lik)s 2(e)k 5076(parameters)s 6167(of)s 6432(the)s
+6774(document)s 7771(as)s 8015(a)s 8175(whole,)s 8860(so)s
+0 1790(it)m 192(is)s 402(natural)s 1120(to)s 1359(try)s
+1678(this:)s
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 19 20
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt5 vec2 /Helvetica LoutRecode
+/fnt5 { /Helveticafnt5 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5706 -1579(-)m 5834(19)s 6125(-)s 9066 13414 0 13310 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+220 fnt5 480 13253(e)m 6(xpor)k -8(t @Heading @PP ...)k
+480 12965(def @BookLa)m 6(y)k 4(out)k 480 12677( named @InitialF)m 6(ont { )k 11(Times Base 12p })k
+480 12389( named @InitialBreak { adjust 14p })m 480 12101( named @ColumnWidth { 6i })m 480 11813( ...)m 480 11525({)m 480 11237( def @Heading ...)m
+480 10949( def @PP ...)m 480 10661(})m 240 fnt1 0 10167(No)m 6(w)k
+220 fnt5 579 10164(@Heading)m 240 fnt1 1732 10167(and)m 220 fnt5
+2202 10164(@PP)m 240 fnt1 2833 10167(may)m 3365(in)s 9(v)k 4(ok)k 2(e)k
+220 fnt5 4124 10164(@InitialF)m 6(ont)k 240 fnt1 5411 10167(and)m
+5881(the)s 6295(other)s 6911(parameters.)s 8188(T)s 19(o)k
+8554(mak)s 2(e)k 220 fnt5 0 9876(@Heading)m 240 fnt1
+1100 9879(and)m 220 fnt5 1517 9876(@PP)m 240 fnt1 2096 9879(visible)m
+2802(throughout)s 3926(the)s 4287(document,)s 5352(we)s 5700(need)s
+6223(only)s 6716(add)s 7133(a)s 7312(body)s 7859(parameter)s
+8887(to)s 220 fnt5 0 9588(@BookLa)m 6(y)k 4(out)k
+240 fnt1 1428 9591(and)m 1832(present)s 2582(the)s 2930(entire)s
+3529(document)s 4533(as)s 220 fnt5 480 9090(@BookLa)m 6(y)k 4(out)k
+480 8802( @InitialF)m 6(ont { Helv)k 5(etica Base 10p })k 480 8514( @InitialBreak { adjust 12p })m 480 8226({)m
+480 7938( )m 11(The document.)k 480 7650(})m 240 fnt1 0 7156(b)m 4(ut)k
+383(for)s 742(practical)s 1639(reasons)s 2429(gi)s 6(v)k 3(en)k
+3030(belo)s 6(w)k 3684(we)s 4040(prefer)s 4691(not)s
+5078(to)s 5338(enclose)s 6132(the)s 6502(entire)s 7122(document)s
+8147(in)s 8412(braces.)s 0 6868(Instead,)m 797(we)s 1132(write)s
+220 fnt5 480 6386(@Use { @BookLa)m 6(y)k 4(out)k 480 6098( @InitialF)m 6(ont { Helv)k 5(etica Base 10p })k
+480 5810( @InitialBreak { adjust 12p })m 480 5522(})m 480 5234(The document.)m 240 fnt1 0 4780(which)m
+643(has)s 1015(the)s 1365(same)s 1914(ef)s 6(fect:)k
+220 fnt5 2617 4777(@Use)m 240 fnt1 3284 4780(mak)m 2(es)k
+3946(the)s 4296(e)s 3(xported)k 5190(symbols)s 6040(of)s
+220 fnt5 6313 4777(@BookLa)m 6(y)k 4(out)k 240 fnt1
+7743 4780(visible)m 8438(for)s 8778(the)s 0 4492(remainder)m 1028(of)s
+1299(the)s 1647(document,)s 2698(and)s 3102(is)s 3312(permitted)s
+4285(only)s 4765(at)s 4997(the)s 5345(be)s 3(ginning.)k
+480 4118(The)m 925(third)s 1451(feature)s 2187(that)s 2622(af)s 6(fects)k
+3319(visibility)s 15(,)k 4278(and)s 4699(which)s 5359(will)s
+5802(pro)s 3(v)k 3(e)k 6414(useful)s 7071(for)s
+7426(cross)s 7986(referencing)s 0 3830(\(Section)m 851(6.1\),)s 1335(is)s
+1543(the)s 220 fnt5 1889 3827(@Open)m 240 fnt1 2693 3830(symbol.)m
+3560(It)s 3763(mak)s 2(es)k 4421(the)s 4767(e)s 3(xported)k
+5657(symbols)s 6504(of)s 6773(its)s 7047(left)s 7422(parameter)s
+8433(visible)s 0 3542(within)m 668(its)s 944(right)s 1455(parameter)s 9(,)k
+2507(and)s 2911(is)s 3121(therefore)s 4038(similar)s 4760(to)s
+4999(the)s 5347(P)s 3(ascal)k 220 fnt5 6009 3539(with)m
+240 fnt1 6444 3542(statement.)m 480 3168(It)m 698(could)s 1301(be)s
+1596(ar)s 4(gued)k 2314(that)s 2745(Lout)s 3270(is)s
+3493(o)s 3(v)k 3(er)k 4(-supplied)k 4869(with)s
+5364(these)s 5924(visibility)s 6840(modifying)s 7903(features:)s 8778(the)s
+0 2880(body)m 544(parameter)s 9(,)k 220 fnt5 1606 2877(@Use)m
+240 fnt1 2282 2880(and)m 220 fnt5 2696 2877(@Open)m 240 fnt1
+3513 2880(do)m 3816(not)s 4193(seem)s 4754(suf\207ciently)s 5894(dif)s 6(ferent)k
+6779(from)s 7314(each)s 7819(another)s 13(.)k 8698(The)s
+220 fnt5 0 2589(@Open)m 240 fnt1 806 2592(symbol)m 1566(is)s
+1776(the)s 2124(most)s 2649(general,)s 3459(being)s 4044(capable)s
+4830(of)s 5101(replacing)s 6043(the)s 6391(other)s 6942(tw)s 2(o.)k
+7463(F)s 3(or)k 7852(e)s 3(xample,)k 220 fnt5
+480 2091(@Use { x })m 480 1803(@Use { y })m 480 1515(Body of document)m 240 fnt1 0 1017(can)m
+389(be)s 671(replaced)s 1538(by)s
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 20 21
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Helvetica
+%%+ font Times-Bold
+%%+ font Times-Italic
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt5 vec2 /Helvetica LoutRecode
+/fnt5 { /Helveticafnt5 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt2 vec2 /Times-Bold LoutRecode
+/fnt2 { /Times-Boldfnt2 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt3 vec2 /Times-Italic LoutRecode
+/fnt3 { /Times-Italicfnt3 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5704 -1579(-)m 5832(20)s 6127(-)s 9066 13416 0 13312 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+220 fnt5 480 13255(x @Open {)m
+480 12967(y @Open {)m 480 12679(Body of document)m 480 12391(}})m 240 fnt1 0 11897(and,)m
+453(taking)s 1104(the)s 220 fnt5 1452 11894(@Eq)m 240 fnt1
+1990 11897(symbol)m 2750(abo)s 3(v)k 3(e)k 3372(as)s
+3622(e)s 3(xample,)k 4536(we)s 4871(could)s 5461(eliminate)s
+6405(its)s 6681(body)s 7215(parameter)s 9(,)k 8267(add)s
+220 fnt5 480 11396(def @Body r)m -3(ight x { Slope @F)k 6(ont x })k 240 fnt1
+0 10897(to)m 239(the)s 587(e)s 3(xported)k 1479(de\207nitions)s
+2540(of)s 220 fnt5 2811 10894(@Eq)m 240 fnt1 3289 10897(,)m
+3396(and)s 3800(replace)s 220 fnt5 480 10396(@Eq { object })m 240 fnt1
+0 9899(by)m 220 fnt5 480 9398(@Eq @Open { @Body { object } })m 240 fnt1 0 8898(If)m
+220 fnt5 232 8895(@Eq)m 240 fnt1 772 8898(is)m 985(a)s
+1153(g)s 1(alle)k 3(y)k 1790(\(Section)s 2645(5.1\),)s
+220 fnt5 3133 8895(@Body)m 240 fnt1 3917 8898(must)m 4444(tak)s 2(e)k
+4899(o)s 3(v)k 3(er)k 5380(that)s 5800(function.)s
+6764(But)s 7172(one)s 7577(w)s 2(ould)k 8234(not)s
+8603(w)s 2(ant)k 0 8610(to)m 253(write)s 813(these)s
+1374(clumsy)s 2133(e)s 3(xpressions)k 3311(in)s 3568(practice,)s
+4444(and)s 4862(the)s 5224(enclosure)s 6210(of)s 6495(lar)s 4(ge)k
+7038(quantities)s 8032(of)s 8317(input)s 8883(in)s 0 8322(e)m 3(xtra)k
+534(braces)s 1195(could)s 1785(cause)s 2372(Basser)s 3069(Lout)s
+3581(to)s 3820(run)s 4196(out)s 4562(of)s 4833(memory)s
+5684(\(Section)s 6537(5.4\).)s 480 7948(A)m 700(quite)s 1224(separate)s
+2052(kind)s 2526(of)s 2786(visibility)s 3679(problem)s 4526(arises)s
+5110(when)s 5676(e)s 3(xpert)k 6319(users)s 6851(wish)s
+7350(to)s 7579(de\207ne)s 8210(an)s 8482(object)s 0 7660(or)m
+259(operator)s 1115(for)s 1453(repeated)s 2320(use)s 2695(within,)s
+3413(say)s 15(,)k 3824(equations:)s 220 fnt5 480 7161(def isum { sum from i=1 to n })m
+240 fnt1 0 6667(As)m 338(it)s 551(stands)s 1221(this)s
+1638(can)s 2048(only)s 2549(be)s 2852(placed)s 3555(within)s
+4244(the)s 220 fnt5 4613 6664(@Eq)m 240 fnt1 5172 6667(package)m
+6033(itself,)s 6637(where)s 220 fnt5 7298 6664(sum)m 240 fnt1
+7780 6667(and)m 8205(the)s 8575(other)s 0 6379(symbols)m 841(are)s
+1179(visible,)s 1915(b)s 4(ut)k 2268(it)s 2451(is)s
+2653(not)s 3010(desirable)s 3919(to)s 4150(modify)s 4886(the)s
+5225(source)s 5897(code)s 6396(of)s 6658(a)s 6816(standard)s
+7675(package.)s 8614(Lout)s 0 6091(pro)m 3(vides)k 872(an)s
+220 fnt5 1155 6088(impor)m -8(t)k 240 fnt1 1828 6091(clause)m
+2481(to)s 2720(solv)s 3(e)k 3278(this)s 3674(problem:)s
+220 fnt5 480 5590(impor)m -8(t @Eq)k 480 5302(def isum { sum from i=1 to n })m 240 fnt1
+0 4808(may)m 469(appear)s 1169(after)s 220 fnt5 1669 4805(@Eq)m
+240 fnt1 2210 4808(is)m 2423(de\207ned,)s 3239(and)s 3646(it)s
+3842(will)s 4271(mak)s 2(e)k 4846(the)s 5198(e)s 3(xported)k
+6093(symbols)s 6945(of)s 220 fnt5 7220 4805(@Eq)m 240 fnt1
+7761 4808(visible)m 8458(within)s 0 4520(the)m 335(body)s 855(of)s
+220 fnt5 1112 4517(isum)m 240 fnt1 1561 4520(.)m 1711(This)s
+2174(feature)s 2878(complicates)s 4056(the)s 4390(treatment)s 5337(of)s
+5595(en)s 9(vironments)k 6925(\(Section)s 7764(3.4\),)s 8236(and)s
+8626(e)s 6(v)k 3(en)k 0 4232(introduces)m 1050(an)s
+1336(insecurity)s 15(,)k 2373(when)s 220 fnt5 2952 4229(isum)m
+240 fnt1 3464 4232(is)m 3677(in)s 9(v)k 4(ok)k 2(ed)k
+4495(outside)s 5245(an)s 5531(equation.)s 6522(A)s 6755(simpler)s
+7534(approach)s 8471(w)s 2(ould)k 0 3944(be)m 290(to)s
+538(allo)s 6(w)k 1126(only)s 1615(one)s 2026(symbol)s
+2795(in)s 3047(an)s 220 fnt5 3339 3941(impor)m -8(t)k
+240 fnt1 4020 3944(clause,)m 4733(and)s 5146(treat)s 5638(the)s
+5995(follo)s 6(wing)k 6981(de\207nition)s 7964(e)s 3(xactly)k
+8714(lik)s 2(e)k 0 3656(a)m 174(local)s 702(de\207nition)s
+1684(of)s 1964(that)s 2390(symbol;)s 3216(b)s 4(ut)k
+3587(then)s 4064(it)s 4265(w)s 2(ould)k 4928(not)s
+5303(be)s 5594(possible)s 6442(to)s 6690(de\207ne)s 7339(symbols)s
+8197(using)s 8778(the)s 0 3368(resources)m 953(of)s 1224(more)s
+1771(than)s 2240(one)s 2642(of)s 2913(the)s 3261(standard)s
+4129(packages.)s 240 fnt2 0 2719(3.4.)m 471(Implementation)s 2159(of)s
+2431(de\207nitions)s
+[ /Dest /LOUTdefs_impl /DEST pdfmark
+240 fnt1 480 2242(Input)m 1089(is)s 1343(processed)s
+2388(by)s 2726(a)s 2936(h)s 1(ybrid)k 3663(parser)s
+4350(which)s 5036(emplo)s 2(ys)k 5940(operator)s 6840(precedence)s
+8015(for)s 8398(objects)s 0 1954(and)m 433(simple)s 1156(recursi)s 6(v)k 3(e)k
+2108(descent)s 2915(for)s 3283(the)s 3661(headers)s 4472(of)s
+4772(de\207nitions.)s 5976(A)s 6236(symbol)s 7026(table)s 7576(stores)s
+8214(the)s 8592(body)s 0 1666(of)m 278(each)s 780(de\207nition)s
+1761(as)s 2018(a)s 2191(parse)s 2758(tree,)s 3229(e)s 3(xcept)k
+3917(for)s 4263(macros)s 5011(which)s 5660(are)s 6014(lists)s
+6456(of)s 6734(tok)s 2(ens,)k 7471(and)s 7882(manages)s
+8778(the)s 0 1378(usual)m 564(stack)s 1121(of)s 1397(static)s
+1958(scopes,)s 2708(accepting)s 240 fnt3 3682 1380(PushScope)m 240 fnt1
+4791 1378(and)m 240 fnt3 5200 1380(P)m 19(opScope)k 240 fnt1
+6197 1378(operations)m 7249(as)s 7504(the)s 7857(parser)s 8505(enters)s
+0 1090(and)m 447(lea)s 4(v)k 3(es)k 1131(scope)s
+1775(re)s 3(gions,)k 2626(including)s 3627(actual)s 4295(body)s
+4872(parameters)s 6013(and)s 6461(the)s 6852(right)s 7406(parameter)s
+8463(of)s 8778(the)s 220 fnt5 0 799(@Open)m 240 fnt1
+806 802(operator)m 13(.)k 480 428(As)m 818(the)s 1187(parse)s
+1769(proceeds,)s 2747(a)s 2934(complete)s 3888(call)s 4308(graph)s
+4932(is)s 5163(constructed,)s 6393(recording,)s 7438(for)s 7797(each)s
+8314(symbol,)s 0 140(which)m 633(symbols)s 1472(are)s 1809(in)s 9(v)k 4(ok)k 2(ed)k
+2615(within)s 3273(its)s 3539(body)s 15(.)k 4159(Immediately)s
+5410(after)s 5896(the)s 6235(last)s 6616(de\207nition)s 7580(is)s
+7781(read,)s 8289(the)s 8627(tran-)s
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 21 22
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Helvetica
+%%+ font Times-Bold
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt3 vec2 /Times-Italic LoutRecode
+/fnt3 { /Times-Italicfnt3 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt5 vec2 /Helvetica LoutRecode
+/fnt5 { /Helveticafnt5 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt2 vec2 /Times-Bold LoutRecode
+/fnt2 { /Times-Boldfnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5714 -1579(-)m 5842(21)s 6117(-)s 9066 13419 0 13310 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+0 13256(siti)m 6(v)k 3(e)k
+565(closure)s 1312(of)s 1584(the)s 1933(call)s 2334(graph)s
+2937(is)s 3148(computed,)s 4200(and)s 4605(used)s 5104(to)s
+5344(determine)s 6356(whether)s 7187(each)s 7684(non-)s 8112(parameter)s
+0 12968(symbol)m 775(is)s 1001(recursi)s 6(v)k 3(e)k
+1939(or)s 2214(recepti)s 6(v)k 3(e)k 3151(\(Section)s
+4020(5.1\),)s 4522(and)s 4942(whether)s 5787(each)s 6298(parameter)s
+7328(is)s 7554(in)s 9(v)k 4(ok)k 2(ed)k
+8385(e)s 3(xactly)k 0 12680(once)m 508(or)s 767(not.)s
+480 12306(Purely)m 1188(functional)s 2243(systems)s 3082(may)s 3579(e)s 6(v)k 6(aluate)k
+4450(symbol)s 5240(in)s 9(v)k 4(ocations)k 6412(in)s
+6686(applicati)s 6(v)k 3(e)k 7812(order)s 8407(\(where)s
+0 12018(parameters)m 1092(are)s 1433(e)s 6(v)k 6(aluated)k
+2389(before)s 3049(substitution)s 4216(into)s 4635(bodies\),)s 5440(or)s
+5693(in)s 5930(normal)s 6656(order)s 7214(\(substitution)s 8460(before)s
+0 11730(e)m 6(v)k 6(aluation\),)k 1164(and)s 1562(the)s 3(y)k
+2018(may)s 2478(also)s 2909(share)s 3463(the)s 3804(v)s 6(alue)k
+4366(of)s 4630(a)s 4790(parameter)s 5798(among)s 6496(all)s
+6783(uses)s 7239(of)s 7504(it.)s 7793(But)s 8193(in)s
+8429(Basser)s 0 11442(Lout,)m 603(the)s 996(presence)s 1932(of)s
+2248(conte)s 3(xt-sensiti)k 6(v)k 3(e)k 3955(style)s
+4507(information)s 5736(\(Section)s 6634(2.5\))s 7106(forces)s 7785(normal)s
+8562(order)s 0 11154(e)m 6(v)k 6(aluation)k 1041(and)s
+1445(pre)s 6(v)k 3(ents)k 2297(sharing)s 3054(of)s
+3325(parameter)s 4339(v)s 6(alues.)k 480 10780(T)m 19(o)k
+780(e)s 6(v)k 6(aluate)k 1620(an)s 1903(unsized)s
+2692(object)s 3336(\(pure)s 3896(parse)s 4456(tree\),)s 4999(its)s
+240 fnt3 5275 10782(en)m 9(vir)k 10(onment)k 240 fnt1
+6456 10780(,)m 6563(the)s 6911(equi)s 6(v)k 6(alent)k
+7955(of)s 8226(the)s 8574(stack)s 0 10492(frames)m 728(in)s
+999(Algol-lik)s 2(e)k 2064(languages,)s 3156(must)s 3710(be)s
+4020(a)s 4(v)k 6(ailable,)k 5008(containing)s 6099(the)s
+6476(actual)s 7129(v)s 6(alues)k 7814(of)s 8113(all)s
+8435(formal)s 0 10204(parameters)m 1119(that)s 1558(are)s 1927(visible)s
+2641(within)s 3330(the)s 3700(unsized)s 4510(object.)s 5279(En)s 9(vironment)k
+6601(handling)s 7513(is)s 7744(a)s 7932(well-kno)s 6(wn)k
+0 9916(implementation)m 1557(technique,)s 2594(so)s 2860(it)s 3052(will)s
+3478(be)s 3760(discussed)s 4735(only)s 5215(brie\210y)s 5893(here.)s
+480 9542(En)m 9(vironments)k 1894(are)s 2272(e)s 3(xtra)k
+2837(subtrees)s 3702(hung)s 4265(from)s 4820(the)s 5199(objects)s
+5958(the)s 3(y)k 6451(refer)s 6991(to.)s 7372(This)s
+7879(or)s 4(g)k 1(anization)k 0 9254(mak)m 2(es)k
+668(e)s 3(xcellent)k 1595(use)s 1978(of)s 2257(the)s
+2613(ordered)s 3409(dag)s 3816(to)s 4063(permit)s 4754(en)s 9(vironments)k
+6106(to)s 6353(be)s 6643(shared,)s 7382(and)s 7794(deleted)s
+8550(when)s 0 8966(the)m 339(last)s 721(reference)s 1655(to)s
+1885(them)s 2413(is)s 2614(remo)s 3(v)k 3(ed.)k
+3600(Se)s 6(v)k 3(eral)k 4353(optimizations)s 5695(ha)s 4(v)k 3(e)k
+6187(been)s 6687(implemented.)s 8090(Actual)s 8772(pa-)s 0 8678(rameters)m
+860(kno)s 6(wn)k 1552(to)s 1778(be)s 2048(in)s 9(v)k 4(ok)k 2(ed)k
+2850(only)s 3318(once)s 3814(are)s 4148(mo)s 3(v)k 3(ed)k
+4840(in)s 5070(from)s 5582(the)s 5918(en)s 9(vironment,)k
+7212(not)s 7566(copied;)s 8303(cop)s 2(ying)k 0 8390(could)m
+581(lead)s 1028(to)s 1258(quadratic)s 2191(time)s 2662(comple)s 3(xity)k 15(.)k
+3875(Actual)s 4558(parameters)s 5647(of)s 5909(the)s 6248(form)s
+220 fnt5 6763 8387(@Ne)m 6(xt)k 240 fnt3 7478 8392(object)m
+240 fnt1 8117 8390(recei)m 6(v)k 3(e)k 8843(an)s
+0 8102(applicati)m 6(v)k 3(e)k 1105(pre-)s 1478(e)s 6(v)k 6(aluation)k
+2529(which)s 3181(pre)s 6(v)k 3(ents)k 4044(long)s
+4533(chains)s 5205(of)s 220 fnt5 5486 8099(@Ne)m 6(xt)k
+240 fnt1 6221 8102(symbols)m 7080(from)s 7614(forming)s 8448(during)s
+0 7814(the)m 359(generation)s 1437(of)s 1719(lar)s 4(ge)k
+2260(page)s 2779(numbers.)s 3779(Some)s 4391(en)s 9(vironments)k
+5747(which)s 6400(pro)s 3(v)k 6(ably)k 7308(contrib)s 4(ute)k
+8341(nothing)s 0 7526(are)m 344(deleted,)s 1137(most)s 1659(notably)s
+2427(when)s 3000(a)s 3162(symbol)s 3918(in)s 9(v)k 4(ocation)k
+4969(has)s 5335(no)s 5625(symbols)s 6470(within)s 7135(its)s
+7407(actual)s 8028(parameters)s 0 7238(and)m 406(no)s 702(import)s
+1402(list,)s 1803(so)s 2071(that)s 2492(only)s 2975(the)s
+3326(en)s 9(vironment)k 4589(of)s 4862(its)s 5141(body)s
+5678(need)s 6191(be)s 6476(k)s 2(ept;)k 7000(this)s
+7399(sa)s 4(v)k 3(es)k 7964(a)s 8133(great)s
+8673(deal)s 0 6950(of)m 271(space)s 858(when)s 1434(objects)s
+2162(with)s 2644(en)s 9(vironments)k 3988(are)s 4335(written)s
+5068(to)s 5307(auxiliary)s 6210(\207les)s 6659(\(Section)s 7512(6.1\).)s
+240 fnt2 0 6157(4.)m 291(Implementation)s 1979(of)s 2251(the)s
+2625(functional)s 3715(subset)s
+[ /Dest /LOUTfunctional /DEST pdfmark
+240 fnt1 480 5680(The)m 941(objects)s
+1702(and)s 2139(de\207nitions)s 3233(of)s 3537(Lout)s 4082(are)s
+4462(v)s 3(ery)k 4971(similar)s 5726(to)s 5998(those)s
+6592(found)s 7242(in)s 7518(other)s 8102(functional)s 0 5392(languages,)m
+1085(and)s 1510(the)s 3(y)k 1994(form)s 2539(a)s
+2726(natural)s 3465(subset)s 4144(of)s 4436(the)s 4805(language.)s
+5854(So)s 6181(we)s 6537(pause)s 7159(here)s 7647(and)s
+8072(present)s 8843(an)s 0 5104(o)m 3(v)k 3(ervie)k 6(w)k
+932(of)s 1203(the)s 1551(Basser)s 2248(Lout)s 2760(object)s
+3404(e)s 6(v)k 6(aluation)k 4445(algorithm.)s 480 4730(The)m
+922(problem)s 1794(is)s 2019(to)s 2272(tak)s 2(e)k
+2739(an)s 3037(unsized)s 3841(object)s 4499(\(pure)s 5074(parse)s
+5649(tree\),)s 6206(its)s 6497(en)s 9(vironment)k 7772(\(Section)s
+8640(3.4\),)s 0 4442(and)m 404(its)s 681(style)s 1188(\(Section)s
+2042(2.5\),)s 2528(and)s 2933(to)s 3173(produce)s 4000(a)s
+4167(PostScript)s 5209(\207le)s 5571(for)s 5910(rendering)s 6879(the)s
+7228(object)s 7872(on)s 8170(an)s 8454(output)s 0 4154(de)m 6(vice.)k
+786(This)s 1267(\207le)s 1632(is)s 1847(essentially)s 2914(a)s
+3084(sequence)s 4022(of)s 4298(instructions)s 5468(to)s 5712(print)s
+6227(a)s 6398(gi)s 6(v)k 3(en)k 6983(string)s
+7584(of)s 7860(characters)s 8883(in)s 0 3866(a)m 166(gi)s 6(v)k 3(en)k
+746(font)s 1191(at)s 1423(a)s 1589(gi)s 6(v)k 3(en)k
+2169(point.)s 480 3492(Before)m 1189(the)s 1541(algorithm)s 2534(be)s 3(gins,)k
+3266(the)s 3618(parse)s 4182(tree)s 4599(must)s 5127(be)s
+5413(obtained,)s 6348(either)s 6955(by)s 7252(parsing)s 8013(input)s
+8569(or)s 8832(by)s 0 3204(cop)m 2(ying)k 823(from)s
+1347(the)s 1695(symbol)s 2455(table.)s 3082(Afterw)s 2(ards)k
+4205(the)s 4553(data)s 5011(structure)s 5901(must)s 6426(be)s
+6708(disposed.)s 7710(The)s 8137(algorithm)s 0 2916(proper)m 692(consists)s
+1508(of)s 1787(\207v)s 3(e)k 2207(passes,)s 2933(each)s
+3437(a)s 3611(recursi)s 6(v)k 3(e)k 4541(tra)s 4(v)k 3(ersal)k
+5418(of)s 5697(the)s 6054(structure)s 6953(from)s 7485(the)s
+7841(root)s 8294(do)s 6(wn)k 8887(to)s 0 2628(the)m
+348(lea)s 4(v)k 3(es)k 989(and)s 1393(back.)s
+240 fnt3 0 2174(1.)m 330(Evaluation)s 1490(of)s 1827(unsized)s
+2667(objects.)s 240 fnt1 3554 2172(On)m 3960(the)s 4364(w)s 2(ay)k
+4871(do)s 6(wn,)k 5561(calculate)s 6521(en)s 9(vironments)k
+7921(and)s 8381(replace)s 0 1884(non-recursi)m 6(v)k 3(e,)k
+1404(non-recepti)s 6(v)k 3(e)k 2757(symbols)s 3598(by)s
+3884(their)s 4373(bodies)s 5041(\(Section)s 5886(3.4\);)s 6369(broadcast)s
+7337(fonts)s 7858(to)s 8089(the)s 8429(lea)s 4(v)k 3(es,)k
+0 1596(and)m 409(paragraph)s 1427(breaking)s 2322(and)s 2731(spacing)s
+3521(styles)s 4121(to)s 4365(the)s 4718(paragraph)s 5736(nodes.)s
+6465(On)s 6820(the)s 7173(w)s 2(ay)k 7629(back)s
+8147(up,)s 8500(delete)s 240 fnt3 0 1310(FONT)m 240 fnt1
+630 1308(,)m 240 fnt3 737 1310(BREAK)m 240 fnt1 1494 1308(,)m
+1601(and)s 240 fnt3 2005 1310(SP)m 21(A)k 7(CE)k
+240 fnt1 2760 1308(nodes,)m 3426(and)s 3830(insert)s 240 fnt3
+4420 1310(SPLIT)m 240 fnt1 5049 1308(,)m 240 fnt3 5156 1310(COL)m
+240 fnt1 5622 1308(,)m 5729(and)s 240 fnt3 6133 1310(R)m 9(O)k 12(W)k
+240 fnt1 6707 1308(nodes)m 7317(\(Section)s 8170(2.3\).)s 240 fnt3
+0 815(2.)m 293(W)s 13(idth)k 925(calculations)s 2169(and)s
+2614(br)s 8(eaking)k 3(.)k 240 fnt1 3628 813(Calculate)m
+4605(the)s 4973(width)s 5594(of)s 5885(e)s 6(v)k 3(ery)k
+6480(subobject)s 7477(from)s 8020(the)s 8388(bottom)s 0 525(up.)m
+404(As)s 720(described)s 1693(in)s 1936(Section)s 2709(2.3,)s
+240 fnt3 3115 527(WIDE)m 240 fnt1 3777 525(nodes)m 4386(may)s
+4851(trigger)s 5547(object)s 6190(breaking)s 7079(sub-tra)s 4(v)k 3(ersals)k
+8448(during)s 0 237(this)m 396(pass.)s
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 22 23
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt3 vec2 /Times-Italic LoutRecode
+/fnt3 { /Times-Italicfnt3 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt2 vec2 /Times-Bold LoutRecode
+/fnt2 { /Times-Boldfnt2 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt5 vec2 /Helvetica LoutRecode
+/fnt5 { /Helveticafnt5 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5705 -1579(-)m 5833(22)s 6127(-)s 9066 13419 0 13308 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+240 fnt3 0 13256(3.)m
+274(Height)s 989(calculations.)s 240 fnt1 2312 13254(Calculate)m 3270(the)s
+3618(height)s 4276(of)s 4547(e)s 6(v)k 3(ery)k
+5123(subobject,)s 6147(from)s 6671(the)s 7019(bottom)s 7757(up.)s
+240 fnt3 0 12751(4.)m 283(Horizontal)s 1389(coor)s 8(dinates.)k
+240 fnt1 2674 12749(Calculate)m 3641(the)s 3998(horizontal)s 5032(coordinate)s
+6106(of)s 6386(each)s 6890(subobject)s 7876(from)s 8409(the)s
+8767(top)s 0 12461(do)m 6(wn,)k 634(and)s 1038(store)s
+1558(each)s 2053(leaf)s -13(')k 13(s)k 2633(coordinate)s
+3698(in)s 3941(the)s 4289(leaf.)s 240 fnt3 0 11977(5.)m
+295(V)s 26(ertical)k 1119(coor)s 8(dinates)k 2317(and)s
+2765(P)s 19(ostScript)k 3827(g)s 2(ener)k 3(ation.)k
+240 fnt1 5034 11975(Calculate)m 6013(the)s 6383(v)s 3(ertical)k
+7171(coordinate)s 8257(of)s 8550(e)s 6(v)k 3(ery)k
+0 11687(subobject)m 981(from)s 1509(the)s 1861(top)s 2224(do)s 6(wn,)k
+2862(and)s 3270(at)s 3506(each)s 4005(leaf,)s 4473(retrie)s 6(v)k 3(e)k
+5252(the)s 5604(character)s 6542(string,)s 7197(font,)s 7693(and)s
+8102(horizontal)s 0 11399(coordinate,)m 1116(and)s 1520(print)s 2031(the)s
+2379(PostScript)s 3421(instruction)s 4500(for)s 4838(rendering)s 5807(that)s
+6225(leaf.)s 0 10896(Figure)m 692(3)s 869(gi)s 6(v)k 3(es)k
+1428(the)s 1789(amount)s 2579(of)s 2863(code)s 3383(required)s
+4250(for)s 4600(each)s 5168(pass.)s 5756(Symmetry)s 6819(between)s
+7685(horizontal)s 8722(and)s 0 10608(v)m 3(ertical)k 764(is)s
+971(e)s 3(xploited)k 1913(throughout)s 3021(Basser)s 3715(Lout,)s
+4271(and)s 4672(passes)s 5331(2)s 5502(and)s 5903(3,)s
+6127(as)s 6374(well)s 6837(as)s 7084(4)s 7255(and)s
+7656(5,)s 7880(are)s 8224(e)s 3(x)k 3(ecuted)k
+0 10320(on)m 297(shared)s 979(code.)s 480 9946(The)m 929(author)s
+1621(can)s 2031(see)s 2413(no)s 2728(simple)s 3442(w)s 2(ay)k
+3914(to)s 4174(reduce)s 4888(the)s 5258(number)s 6070(of)s
+6362(passes.)s 7158(The)s 7607(introduction)s 8855(of)s 0 9658(horizontal)m
+1027(g)s 1(alle)k 3(ys)k 1755(\(Section)s 2612(5.5\))s
+3044(w)s 2(ould)k 3703(remo)s 3(v)k 3(e)k
+4474(the)s 4826(need)s 5340(for)s 5682(the)s 6034(object)s
+6682(breaking)s 7576(transformations)s 0 9370(within)m 700(this)s 1128(algorithm)s
+2149(that)s 2599(are)s 2978(the)s 3359(principal)s 4295(obstacles)s
+5254(in)s 5529(the)s 5909(w)s 2(ay)k 6393(of)s
+6696(the)s 7076(mer)s 4(ging)k 7954(of)s 8257(passes)s
+8952(2)s 0 9082(and)m 404(3.)s 240 fnt2 0 8338(5.)m
+291(Galleys)s
+[ /Dest /LOUT18_694_s5_0_1 /DEST pdfmark
+240 fnt1 480 7861(W)m 9(ith)k 1022(objects)s
+1767(and)s 2188(de\207nitions)s 3266(under)s 3888(control,)s 4689(the)s
+5053(author)s 5741(f)s 2(aced)k 6331(the)s 6696(problem)s
+7570(of)s 7858(getting)s 8592(body)s 0 7573(te)m 3(xt,)k
+478(footnotes,)s 1491(\210oating)s 2291(\207gures)s 3009(and)s 3429(tables,)s
+4109(references,)s 5213(inde)s 3(x)k 5813(entries,)s 6572(and)s
+6992(entries)s 7695(in)s 7954(the)s 8318(table)s 8855(of)s
+0 7285(contents)m 844(into)s 1264(their)s 1757(places.)s 2513(The)s
+2937(resulting)s 3821(in)s 9(v)k 3(estig)k 1(ation)k
+5095(occupied)s 6013(three)s 6541(months)s 7293(of)s 7559(full-time)s
+8444(design)s 0 6997(w)m 2(ork,)k 612(and)s 1031(proceeded)s
+2088(approximately)s 3538(as)s 3803(described)s 4793(in)s 5051(Section)s
+5840(5.1;)s 6268(the)s 6631(implementation)s 8204(occupied)s 0 6709(the)m
+348(years)s 903(1987-89.)s 240 fnt2 0 6060(5.1.)m 471(The)s
+926(galley)s 1580(abstraction)s
+[ /Dest /LOUTgalleys /DEST pdfmark
+240 fnt1 480 5583(Let)m 870(us)s
+1147(tak)s 2(e)k 1611(the)s 1972(footnote)s 2838(as)s
+3100(a)s 3279(representati)s 6(v)k 3(e)k 4677(e)s 3(xample.)k
+5661(At)s 5973(some)s 6546(point)s 7111(in)s 7366(the)s
+7727(document,)s 8791(we)s 0 5295(wish)m 509(to)s 748(write)s
+220 fnt5 480 4847(preceding te)m 6(xt)k 480 4559(@F)m 6(ootNote { f)k 6(ootnote te)k 6(xt })k
+480 4271(f)m 6(ollo)k 3(wing te)k 6(xt)k 240 fnt1
+0 3772(and)m 406(we)s 744(e)s 3(xpect)k 1428(the)s
+1779(formatter)s 2729(to)s 2971(remo)s 3(v)k 3(e)k
+3741(the)s 4092(footnote)s 4947(from)s 5474(this)s 5873(conte)s 3(xt)k
+6637(and)s 7044(place)s 7607(it)s 7802(at)s 8037(the)s
+8388(bottom)s 0 3484(of)m 282(the)s 641(current)s 1388(page,)s
+1958(possibly)s 2821(splitting)s 3668(some)s 4240(or)s 4510(all)s
+4814(of)s 5096(it)s 5299(onto)s 5789(a)s 5966(follo)s 6(wing)k
+6954(page)s 7473(if)s 7701(space)s 8299(is)s 8520(insuf-)s
+0 3196(\207cient.)m 480 2822(An)m 844(object)s 1503(appears)s 2298(in)s
+2556(the)s 2918(\207nal)s 3413(document)s 4431(at)s 4678(the)s
+5040(point)s 5607(it)s 5813(is)s 6038(in)s 9(v)k 4(ok)k 2(ed,)k
+6916(b)s 4(ut)k 7293(this)s 7703(basic)s 8262(property)s
+0 2534(does)m 503(not)s 882(hold)s 1379(for)s 1730(footnotes:)s
+2799(the)s 3160(point)s 3725(of)s 4009(in)s 9(v)k 4(ocation)k
+5076(and)s 5493(the)s 5854(point)s 6419(of)s 6703(appearance)s
+7847(are)s 8207(dif)s 6(ferent.)k 0 2246(In)m 254(some)s
+813(w)s 2(ay)k 15(,)k 1299(the)s 1645(footnote)s
+2496(is)s 2703(attached)s 3555(to)s 3791(the)s 4137(document)s
+5139(at)s 5368(both)s 5849(points,)s 6539(introducing)s 7692(a)s
+7856(cross)s 8395(linking)s 0 1958(\(Section)m 853(2.1\))s 1281(that)s
+1699(cannot)s 2397(be)s 2679(described)s 3653(in)s 3896(purely)s
+4561(functional)s 5585(terms.)s 480 1584(Since)m 1069(the)s 1420(interpretation)s
+2766(of)s 3040(an)s 3(y)k 3440(object)s 4087(depends)s
+4926(on)s 5226(an)s 5512(en)s 9(vironment)k 6775(and)s
+7182(style)s 7692(inherited)s 8602(from)s 0 1296(the)m 347(conte)s 3(xt,)k
+1153(the)s 1499(\207rst)s 1929(question)s 2795(must)s 3318(be)s
+3598(whether)s 4427(the)s 4773(footnote)s 5624(inherits)s 6390(them)s
+6926(through)s 7726(the)s 8072(in)s 9(v)k 4(ocation)k
+0 1008(point)m 552(or)s 811(through)s 1613(the)s 1961(point\(s\))s
+2753(of)s 3024(appearance.)s 480 634(If)m 697(symbols)s 1533(are)s
+1867(to)s 2092(be)s 2361(interpreted)s 3440(statically)s 4341(as)s
+4578(heretofore,)s 5653(then)s 6108(en)s 9(vironments)k 7439(must)s
+7951(be)s 8219(inherited)s 0 346(through)m 829(the)s 1204(in)s 9(v)k 4(ocation)k
+2285(point)s 2865(alone.)s 3574(Dynamic)s 4531(inheritance)s 5675(through)s
+6505(the)s 6880(point)s 7459(of)s 7757(appearance)s 8916(is)s
+0 58(enticing)m 836(in)s 1092(some)s 1666(w)s 2(ays:)k
+2335(it)s 2541(might)s 3172(replace)s 3930(the)s 4291(body)s
+4838(parameter)s 9(,)k 5904(and)s 6321(it)s 6526(might)s
+7157(help)s 7635(with)s 8131(automatic)s
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 23 24
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt3 vec2 /Times-Italic LoutRecode
+/fnt3 { /Times-Italicfnt3 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt2 vec2 /Times-Bold LoutRecode
+/fnt2 { /Times-Boldfnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5710 -1579(-)m 5838(23)s 6122(-)s 9066 13416 0 13416 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+1659 13218(1.)m 2163(Initialization)s
+7172(200)s 1659 12930(2.)m 2163(Memory)s 3041(allocation,)s 4090(ordered)s
+4878(dag)s 5277(operations)s 7172(400)s 1659 12642(3.)m 2163(Le)s 3(xical)k
+2931(analysis,)s 3808(macros,)s 4605(\207le)s 4966(handling)s 6992(1,350)s
+1659 12354(4.)m 2163(P)s 3(arsing)k 2930(of)s 3201(objects)s
+3929(and)s 4333(de\207nitions)s 6992(1,150)s 1659 12066(5.)m 2163(Symbol)s
+2963(table)s 3483(and)s 3887(call)s 4286(graph)s 7172(600)s
+1659 11778(6.)m 2163(Ev)s 6(aluation)k 3250(of)s 3521(pure)s
+4002(parse)s 4562(trees)s 6992(1,650)s 1659 11490(7.)m 2163(Reading,)s
+3068(storing,)s 3839(and)s 4243(scaling)s 4973(of)s 5244(fonts)s
+7172(600)s 1659 11202(8.)m 2163(Cross)s 2759(references)s 3790(and)s
+4194(databases)s 6992(1,000)s 1659 10914(9.)m 2163(W)s 9(idth)k
+2809(and)s 3213(height)s 3871(calculations,)s 5119(and)s 5523(breaking)s
+7172(700)s 1539 10626(10.)m 240 fnt3 2163 10628(Constr)m 3(ained)k
+240 fnt1 3410 10626(and)m 240 fnt3 3814 10628(AdjustSize)m 240 fnt1
+7172 10626(700)m 1539 10338(11.)m 2163(T)s 8(ransfer)k 3023(of)s
+3294(sized)s 3843(objects)s 4571(into)s 4996(g)s 1(alle)k 3(y)k
+5630(tree)s 7172(450)s 1539 10050(12.)m 2163(Galle)s 3(y)k
+2851(\210ushing)s 3676(algorithm)s 6992(1,500)s 1539 9762(13.)m 2163(Coordinate)s
+3282(calculations)s 4474(and)s 4878(PostScript)s 5920(output)s 7172(700)s
+1539 9474(14.)m 2163(Deb)s 4(ugging)k 3277(and)s 3681(error)s
+4204(handling)s 6992(1,200)s 655 0 0 0 240 288 60 6872 9328 LoutGr2
+0.5 pt ltabhs
+grestore
+
+grestore
+6872 9074(12,200)m
+[ /Dest /LOUTcomponents /DEST pdfmark
+200 fnt2 41 8421(Figur)m 3(e)k
+649(3.)s 200 fnt1 891 8422(Major)m 1427(components)s 2432(of)s
+2658(the)s 2947(Basser)s 3526(Lout)s 3953(interpreter)s 8(,)k
+4861(sho)s 5(wing)k 5576(the)s 5865(approximate)s 6906(number)s
+7565(of)s 7791(lines)s 8208(of)s 8434(C)s 8611(code.)s
+240 fnt1 0 7791(numbering,)m 1163(since)s 1730(the)s 2097(number)s
+2908(of)s 3198(a)s 3384(footnote)s 4256(is)s 4486(kno)s 6(wn)k
+5209(only)s 5709(at)s 5960(the)s 6328(point)s 6899(of)s
+7190(appearance;)s 8396(b)s 4(ut)k 8778(the)s 0 7503(implementation)m
+1606(problems)s 2597(are)s 2993(se)s 6(v)k 3(ere,)k
+3751(and)s 4204(static)s 4810(inheritance)s 5976(seems)s 6661(much)s
+7299(simpler)s 8125(and)s 8579(more)s 0 7215(comprehensible)m 1572(to)s
+1814(the)s 2165(user)s 13(.)k 2716(Style,)s 3317(at)s
+3552(least)s 4052(its)s 4330(a)s 4(v)k 6(ailable)k
+5241(width)s 5846(and)s 6253(height)s 6913(part,)s 7394(must)s
+7922(of)s 8196(necessity)s 0 6927(be)m 268(inherited)s 1160(through)s
+1947(the)s 2280(point)s 2817(of)s 3073(appearance.)s 4297(F)s 3(or)k
+4671(consistenc)s 3(y)k 15(,)k 5861(the)s 6194(entire)s
+6778(style)s 7270(should)s 7952(be)s 8219(inherited)s 0 6639(in)m
+256(this)s 666(w)s 2(ay)k 15(.)k 1226(There)s
+1853(is)s 2077(a)s 2257(suggesti)s 6(v)k 3(e)k
+3328(analogy)s 4154(here)s 4635(with)s 5131(actual)s 5770(parameters,)s
+6938(which)s 7594(ha)s 4(v)k 3(e)k 8109(a)s
+8289(point)s 8855(of)s 0 6351(in)m 9(v)k 4(ocation)k
+1060(from)s 1591(which)s 2240(the)s 3(y)k 2710(inherit)s
+3400(an)s 3690(en)s 9(vironment,)k 5004(and)s 5414(a)s
+5587(point)s 6146(of)s 6424(appearance)s 7562(within)s 8237(the)s
+8592(body)s 0 6063(of)m 265(the)s 606(enclosing)s 1569(de\207nition,)s
+2587(from)s 3104(which)s 3739(the)s 3(y)k 4196(inherit)s
+4872(a)s 5031(style.)s 5639(It)s 5838(may)s 6297(be)s
+6572(possible)s 7406(to)s 7638(treat)s 8114(a)s 8273(footnote)s
+0 5775(as)m 250(the)s 598(actual)s 1223(parameter)s 2237(of)s
+2508(some)s 3069(symbol,)s 3881(therefore,)s 4849(although)s 5744(the)s
+6092(details)s 6766(seem)s 7317(v)s 3(ery)k 7793(obscure.)s
+480 5401(But)m 881(the)s 1224(most)s 1744(profound)s 2674(consequence)s
+3948(of)s 4214(ha)s 4(ving)k 4910(tw)s 2(o)k
+5314(types)s 5865(of)s 6131(attachment)s 7234(point)s 7780(is)s
+7985(that)s 8398(it)s 8584(leads)s 0 5113(to)m 261(tw)s 2(o)k
+693(distincti)s 6(v)k 3(e)k 1757(tree)s 2192(structures.)s
+3306(Considering)s 4551(in)s 9(v)k 4(ocation)k 5627(points)s
+6285(only)s 6787(leads)s 7351(to)s 7612(static)s 8190(trees)s
+8714(lik)s 2(e)k 0 4825(this)m 396(one:)s gsave
+480 2539 translate
+240 fnt3
+3666 1996 170 1715 240 288 60 LoutGraphic
+gsave
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+1117 1273 170 993 240 288 60 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+1117 1273 170 993 240 288 60 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+1117 551 170 272 240 288 60 0 721 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+170 220(footnote)m
+grestore
+(T) lfigpromotelabels
+grestore
+(L) lfigpromotelabels
+grestore
+1206 553 170 272 240 288 60 1230 1443 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+1206 553 170 272 240 288 60 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+170 220(body)m 692(te)s 4(xt)k
+grestore
+(T) lfigpromotelabels
+grestore
+0 0 0 0 240 288 60 2436 1715 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ L@T@CTR L@T@CTR T@CTR lfigangle L@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR L@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+1117 1273 0 993 240 288 60 2549 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+1001 552 170 272 240 288 60 116 721 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+884 552 170 272 240 288 60 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+170 220(\207gur)m 8(e)k
+
+grestore
+(T) lfigpromotelabels
+grestore
+1117 551 170 272 240 288 60 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+1117 551 170 272 240 288 60 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+1117 551 170 272 240 288 60 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+170 220(footnote)m
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 60 1117 272 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+(R) lfigpromotelabels
+grestore
+0 0 0 0 240 288 60 3666 1715 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ R@T@CTR R@T@CTR T@CTR lfigangle R@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR R@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+end end restore
+grestore
+0 2088(which)m 663(sho)s 6(ws)k 1329(that)s
+1769(the)s 2139(body)s 2695(te)s 3(xt)k 3131(contains)s
+4001(a)s 4189(footnote)s 5064(and)s 5490(a)s 5677(\207gure,)s
+6364(the)s 6734(latter)s 7305(itself)s 7875(containing)s 8960(a)s
+0 1800(footnote.)m 961(Considering)s 2184(points)s 2820(of)s 3091(appearance)s
+4222(only)s 4702(gi)s 6(v)k 3(es)k 5249(a)s
+5415(completely)s 6531(dif)s 6(ferent,)k 7453(dynamic)s 8330(tree:)s
+gsave
+480 186 translate
+240 fnt3 4663 1274 0 995 240 288 60 LoutGraphic
+gsave
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+3382 551 170 272 240 288 60 1281 723 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+2101 551 170 272 240 288 60 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+170 220(sequence)m 1100(of)s 1381(pa)s 2(g)k 2(es)k
+
+grestore
+(T) lfigpromotelabels
+grestore
+1206 553 170 272 240 288 60 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+1206 553 170 272 240 288 60 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+1206 553 170 272 240 288 60 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+170 220(body)m 692(te)s 4(xt)k
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 60 1206 272 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+1117 553 170 272 240 288 60 1319 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+1117 553 170 272 240 288 60 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+1117 551 170 272 240 288 60 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+170 220(footnote)m
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 60 2436 272 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+884 553 170 272 240 288 60 2549 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+884 553 170 272 240 288 60 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+884 552 170 272 240 288 60 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+170 220(\207gur)m 8(e)k
+
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 60 3433 272 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+1117 553 170 272 240 288 60 3546 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+1117 553 170 272 240 288 60 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+1117 551 170 272 240 288 60 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+170 220(footnote)m
+grestore
+(T) lfigpromotelabels
+grestore
+(S) lfigpromotelabels
+grestore
+0 0 0 0 240 288 60 4663 272 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ S@T@CTR S@T@CTR T@CTR lfigangle S@T@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+T@CTR T@CTR S@T@CTR lfigangle T@CIRCUM lfigpadd lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+
+grestore
+end end restore
+grestore
+
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 24 25
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Helvetica
+%%+ font Times-Bold
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt3 vec2 /Times-Italic LoutRecode
+/fnt3 { /Times-Italicfnt3 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt5 vec2 /Helvetica LoutRecode
+/fnt5 { /Helveticafnt5 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt2 vec2 /Times-Bold LoutRecode
+/fnt2 { /Times-Boldfnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5705 -1579(-)m 5833(24)s 6127(-)s 9066 13419 0 13419 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+0 13256(The)m 468(tree)s
+921(can)s 1351(be)s 1673(deeper)s 9(,)k 2448(for)s
+2827(e)s 3(xample)k 3730(with)s 4253(sections)s 5114(appearing)s
+6150(within)s 6859(chapters)s 7746(which)s 8429(appear)s 0 12968(within)m
+680(the)s 1041(body)s 1587(te)s 3(xt,)k 2062(which)s
+2717(appears)s 3510(within)s 4191(the)s 4551(\207nal)s 5044(sequence)s
+5990(of)s 6273(pages.)s 6995(Document)s 8065(formatting)s 0 12680(languages)m
+1024(generally)s 1984(shirk)s 2540(the)s 2905(issues)s 3544(raised)s
+4189(by)s 4500(this)s 4912(dual)s 5396(tree)s 5826(structure,)s
+6785(by)s 7096(making)s 7884(the)s 8249(dynamic)s 0 12392(tree)m
+421(b)s 4(uilt-in,)k 1235(by)s 1537(limiting)s 2354(one)s
+2764(or)s 3032(both)s 3523(trees)s 4032(to)s 4279(tw)s 2(o)k
+4697(le)s 6(v)k 3(els,)k 5360(and)s 5773(so)s
+6047(on,)s 6402(pro)s 3(viding)k 7391(a)s 7565(classic)s
+8263(e)s 3(xample)k 0 12104(of)m 295(the)s 667(impo)s 3(v)k 3(erishing)k
+2120(ef)s 6(fect)k 2740(of)s 3035(f)s 2(ailing)k
+3733(to)s 3997(permit)s 4704(language)s 5648(features)s 6478(to)s
+6741(attain)s 7352(their)s 7873(natural)s 8616(le)s 6(v)k 3(el)k
+0 11816(of)m 271(generality)s 15(.)k 480 11442(W)m 19(e)k
+854(are)s 1206(thus)s 1662(led)s 2017(to)s 2261(propose)s
+3081(a)s 3252(second)s 3980(abstraction)s 5091(for)s 5434(document)s
+6443(formatting,)s 7564(which)s 8211(we)s 8552(name)s 0 11154(the)m
+240 fnt3 371 11156(galle)m 7(y)k 240 fnt1 1028 11154(in)m
+1294(recognition)s 2464(of)s 2759(its)s 3058(similarity)s 4050(to)s
+4312(the)s 4684(g)s 1(alle)k 3(ys)k 5432(used)s
+5952(in)s 6219(manual)s 7001(typesetting.)s 8238(A)s 8492(g)s 1(alle)k 3(y)k
+0 10866(consists)m 817(of)s 1098(an)s 1391(object)s 2045(\(such)s
+2630(as)s 2890(a)s 3066(footnote\))s 4001(together)s 4854(with)s
+5346(a)s 5522(sequence)s 6465(of)s 6746(places)s 7404(where)s
+8054(that)s 8482(object)s 0 10578(may)m 491(appear)s 1214(\(such)s
+1814(as)s 2090(the)s 2464(bottoms)s 3311(of)s 3608(the)s
+3982(current)s 4743(and)s 5173(follo)s 6(wing)k 6176(pages\).)s
+6989(Splitting)s 7891(occurs)s 8592(quite)s 0 10290(naturally)m 903(when)s
+1479(space)s 2066(at)s 2298(an)s 3(y)k 2695(place)s
+3255(is)s 3465(insuf\207cient)s 4600(to)s 4839(hold)s 5323(the)s
+5671(entire)s 6270(object.)s 480 9916(In)m 736(Lout,)s 1295(a)s
+1461(footnote)s 2314(g)s 1(alle)k 3(y)k 2948(and)s
+3352(its)s 3628(place)s 4188(of)s 4459(appearance)s 5590(are)s
+5937(de\207ned)s 6700(as)s 6950(follo)s 6(ws:)k 220 fnt5
+480 9415(def @F)m 6(ootPlace { @Galle)k 4(y })k 480 8839(def @F)m 6(ootNote into { @F)k 6(ootPlace&&f)k 6(ollo)k 3(wing })k
+480 8551( r)m -3(ight x)k 480 8263({ x })m 240 fnt1 0 7769(The)m
+220 fnt5 445 7766(@F)m 6(ootPlace)k 240 fnt1 1719 7769(symbol)m
+2496(contains)s 3362(the)s 3727(special)s 4463(symbol)s 220 fnt5
+5240 7766(@Galle)m 4(y)k 240 fnt1 6078 7769(,)m 6203(indicating)s
+7229(that)s 7665(it)s 7874(is)s 8102(a)s 8285(point)s
+8855(of)s 0 7481(appearance)m 1143(for)s 1493(a)s 1672(g)s 1(alle)k 3(y)k 15(.)k
+2413(By)s 2759(placing)s 3529(in)s 9(v)k 4(ocations)k
+4682(of)s 220 fnt5 4965 7478(@F)m 6(ootPlace)k 240 fnt1
+6234 7481(at)m 6478(the)s 6838(bottoms)s 7673(of)s 7956(pages,)s
+8620(as)s 8883(in)s 0 7193(Section)m 801(3.2,)s 1235(we)s
+1597(de\207ne)s 2265(the)s 2640(desired)s 3415(points)s 4078(of)s
+4376(appearance)s 5534(for)s 5899(footnotes.)s 6980(Symbols)s 7896(whose)s
+8592(body)s 0 6905(contains)m 220 fnt5 863 6902(@Galle)m 4(y)k
+240 fnt1 1776 6905(either)m 2394(directly)s 3192(or)s 3466(indirectly)s
+4450(are)s 4812(called)s 5455(recepti)s 6(v)k 3(e)k
+6392(symbols,)s 7312(meaning)s 8204(recepti)s 6(v)k 3(e)k
+0 6617(to)m 239(g)s 1(alle)k 3(ys,)k 1019(and)s
+1423(the)s 3(y)k 1886(are)s 2233(e)s 3(xpanded)k
+3207(only)s 3687(on)s 3984(demand.)s 4906(The)s 5334(ef)s 6(fect)k
+5930(of)s 6202(the)s 220 fnt5 6550 6614(into)m 240 fnt1
+6956 6617(clause)m 7609(is)s 7819(to)s 8058(mak)s 2(e)k
+8631(each)s 0 6329(in)m 9(v)k 4(ocation)k 1057(of)s
+220 fnt5 1332 6326(@F)m 6(ootNote)k 240 fnt1 2506 6329(a)m
+2676(g)s 1(alle)k 3(y)k 3313(whose)s 3985(object)s
+4632(is)s 4846(the)s 5198(result)s 5791(of)s 6066(the)s
+6417(in)s 9(v)k 4(ocation)k 7475(in)s 7721(the)s
+8073(usual)s 8637(w)s 2(ay)k 15(,)k 0 6041(and)m
+406(whose)s 1076(sequence)s 2011(of)s 2285(points)s 2923(of)s
+3196(appearance)s 4329(is)s 4542(speci\207ed)s 5452(by)s 5748(the)s
+220 fnt5 6098 6038(into)m 240 fnt1 6507 6041(clause;)m 7218(in)s
+7463(this)s 7861(e)s 3(xample,)k 8778(the)s 0 5753(sequence)m
+933(of)s 1204(all)s 220 fnt5 1497 5750(@F)m 6(ootPlace)k
+240 fnt1 2753 5753(symbols)m 3602(follo)s 6(wing)k 4579(the)s
+4927(in)s 9(v)k 4(ocation)k 5981(point.)s 480 5379(Lout)m
+995(permits)s 1766(g)s 1(alle)k 3(ys)k 2494(to)s
+2737(be)s 3023(in)s 9(v)k 4(ok)k 2(ed)k
+3842(within)s 4514(other)s 5069(g)s 1(alle)k 3(ys)k
+5797(to)s 6040(arbitrary)s 6919(depth,)s 7562(so)s 7832(that)s
+8254(one)s 8660(may)s 0 5091(ha)m 4(v)k 3(e)k
+514(footnotes)s 1468(within)s 2149(\207gures)s 2864(within)s 3546(the)s
+3907(body)s 4454(te)s 3(xt)k 4882(g)s 1(alle)k 3(y)k 15(,)k
+5568(for)s 5919(e)s 3(xample,)k 6846(creating)s 7681(arbitrary)s
+8570(static)s 0 4803(trees.)m 649(Recepti)s 6(v)k 3(e)k
+1688(symbols)s 2573(lik)s 2(e)k 220 fnt5 3021 4800(@F)m 6(ootPlace)k
+240 fnt1 4313 4803(may)m 4815(appear)s 5548(within)s 6252(an)s 3(y)k
+6685(g)s 1(alle)k 3(y)k 15(,)k 7393(creating)s
+8251(arbitrary)s 0 4515(dynamic)m 912(trees)s 1449(as)s 1734(well.)s
+2345(The)s 2808(root)s 3289(of)s 3595(the)s 3979(dynamic)s
+4891(tree,)s 5391(which)s 6068(w)s 2(ould)k 6759(normally)s
+7711(consist)s 8471(of)s 8778(the)s 0 4227(sequence)m 959(of)s
+1257(pages)s 1880(of)s 2178(the)s 2553(complete)s 3512(assembled)s
+4593(document,)s 5671(is)s 5908(considered)s 7029(to)s 7295(be)s
+7604(a)s 7797(g)s 1(alle)k 3(y)k 8458(whose)s
+0 3939(point)m 563(of)s 845(appearance)s 1987(is)s 2208(the)s
+2567(output)s 3250(\207le.)s 3730(Points)s 4390(of)s 4672(appearance)s
+5814(may)s 6291(be)s 220 fnt5 6584 3936(preceding)m 240 fnt1
+7606 3939(or)m 220 fnt5 7876 3936(f)m 6(ollo)k 3(wing)k
+240 fnt1 8778 3939(the)m 0 3651(in)m 9(v)k 4(ocation)k
+1054(point;)s 1658(entries)s 2345(in)s 2588(tables)s 3196(of)s
+3467(contents)s 4315(are)s 4662(the)s 5010(main)s 5545(users)s
+6087(of)s 220 fnt5 6358 3648(preceding)m 240 fnt1 7309 3651(.)m
+480 3277(The)m 913(g)s 1(alle)k 3(y)k 1552(abstraction)s
+2662(is)s 2877(adequate)s 3788(for)s 4131(all)s 4429(of)s
+4706(the)s 5059(applications)s 6270(listed)s 6850(at)s 7087(the)s
+7440(be)s 3(ginning)k 8453(of)s 8730(this)s 0 2989(section,)m
+808(e)s 3(xcept)k 1514(that)s 1957(there)s 2515(is)s
+2749(no)s 3067(pro)s 3(vision)k 4050(for)s 4413(sorting)s
+5155(inde)s 3(x)k 5763(entries)s 6475(and)s 6904(references.)s
+8073(Sorting)s 8855(of)s 0 2701(g)m 1(alle)k 3(ys)k
+715(has)s 1075(been)s 1574(added)s 2194(to)s 2423(Lout)s
+2925(as)s 3165(a)s 3321(b)s 4(uilt-in)k 4068(feature,)s
+4827(in)s 9(v)k 4(ok)k 2(ed)k 5632(by)s
+5916(adding)s 6611(a)s 6767(special)s 220 fnt5 7475 2698(@K)m 8(e)k 4(y)k
+240 fnt1 8112 2701(parameter)m 0 2413(to)m 227(the)s 563(g)s 1(alle)k 3(ys,)k
+1330(and)s 1722(using)s 2281(its)s 2545(v)s 6(alue)k
+3100(as)s 3338(the)s 3673(sort)s 4079(k)s 2(e)k 3(y)k 15(.)k
+4556(The)s 4972(author)s 5631(w)s 2(as)k 6039(at)s
+6259(a)s 6412(loss)s 6823(to)s 7049(\207nd)s 7468(an)s 3(y)k
+7852(other)s 8391(w)s 2(ay)k 15(,)k 8867(or)s
+0 2125(an)m 3(y)k 397(useful)s 1036(generalization)s 2446(of)s
+2717(this)s 3113(feature.)s 3939(Its)s 4228(implementation)s 5785(will)s
+6211(be)s 6493(discussed)s 7468(in)s 7711(Section)s 8485(6.2.)s
+240 fnt2 0 1476(5.2.)m 471(The)s 926(galley)s 1580(\210ushing)s
+2447(algorithm)s
+[ /Dest /LOUTflushing /DEST pdfmark
+240 fnt1 480 999(Galle)m 3(y)k 1177(components)s
+2395(are)s 2751(promoted)s 3736(one)s 4148(by)s 4451(one)s
+4863(into)s 5298(the)s 5655(point)s 6217(of)s 6498(appearance)s
+7638(in)s 7891(the)s 8249(dynamic)s 0 711(parent)m 672(g)s 1(alle)k 3(y)k 15(,)k
+1359(then)s 1843(carried)s 2579(along)s 3179(with)s 3676(it,)s
+3931(ultimately)s 4968(to)s 5222(the)s 5586(root)s 6046(g)s 1(alle)k 3(y)k
+6695(and)s 7115(the)s 7478(output)s 8165(\207le.)s 8650(This)s
+0 423(process)m 800(is)s 1042(called)s 240 fnt3 1703 425(galle)m 7(y)k
+2368(\210ushing)s 240 fnt1 3121 423(:)m 3259(the)s 3640(g)s 1(alle)k 3(ys)k
+4396(are)s 4775(ri)s 6(v)k 3(ers)k 5393(running)s
+6223(together)s 7098(to)s 7370(the)s 7750(sea,)s 8194(and)s
+8631(each)s 0 135(component)m 1124(is)s 1334(a)s 1500(drop)s
+1992(of)s 2263(w)s 2(ater)k 13(.)k
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 25 26
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Helvetica
+%%+ font Times-Italic
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt5 vec2 /Helvetica LoutRecode
+/fnt5 { /Helveticafnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt3 vec2 /Times-Italic LoutRecode
+/fnt3 { /Times-Italicfnt3 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5709 -1582(-)m 5837(25)s 6123(-)s 9066 13413 0 13304 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+480 13250(Here)m 1057(is)s
+1324(a)s 1547(snapshot)s 2502(of)s 2830(a)s 3053(small)s
+3682(dynamic)s 4616(tree,)s 5137(based)s 5797(on)s 6151(the)s
+220 fnt5 6556 13247(@P)m 8(ageList)k 240 fnt1 7737 13250(de\207nitions)m
+8855(of)s 0 12962(Section)m 774(3.2:)s 6982 3257 0 3257 240 288 60 480 9414 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+200 fnt3 0 3121(output)m
+563(\207le)s gsave
+860 0 translate
+240 fnt1 0 3257 0 3165 240 288 60 LoutGraphic
+gsave
+currentdict end 200 dict begin begin
+grestore
+0 0 0 0 240 288 60 0 3165 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfignoline [ lfigbox ] lfigdopath
+pop pop
+grestore
+
+grestore
+(A) lfigpromotelabels
+grestore
+1994(r)s 9(oot)k 2370(galle)s 6(y)k
+gsave
+1994 2967 translate
+240 fnt1 1927 0 0 0 240 288 60 LoutGraphic
+gsave
+currentdict end 200 dict begin begin
+grestore
+0 0 0 0 240 288 60 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfignoline [ lfigbox ] lfigdopath
+pop pop
+grestore
+
+grestore
+(B) lfigpromotelabels
+grestore
+gsave
+1994 473 translate
+240 fnt1 1927 2494 0 2494 240 288 60 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto xsize ysize lineto
+0 ysize lineto closepath stroke
+grestore
+160 fnt1 845 2216(-)m 931(1)s
+1035(-)s 410 2000(A)m 563(small)s 140 fnt5 170 1784(@Galle)m 2(y)k
+160 fnt1 743(*)s 904 1617 5 1545 160 180 40 853 275 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+10 10 5 5 160 180 40 0 1540 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfignoline [ lfigbox ] lfigdopath
+pop pop
+grestore
+
+grestore
+(C) lfigpromotelabels
+grestore
+140 fnt5 170 173(@F)m 4(ootSect)k
+
+grestore
+gsave
+1994 0 translate
+240 fnt1 1927 473 170 237 240 288 60 LoutGraphic
+gsave
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+140 fnt5 170 201(@P)m 5(ageList 2)k
+grestore
+5055 2611(body)m
+5490(te)s 4(xt)k gsave
+5055 1974 translate
+240 fnt1 1927 483 170 240 240 288 60 LoutGraphic
+gsave
+currentdict end 200 dict begin begin
+grestore
+1927 483 170 240 240 288 60 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+160 fnt1 170 204(paragraph)m
+
+grestore
+(D) lfigpromotelabels
+grestore
+gsave
+5055 1524 translate
+240 fnt1 1927 450 170 207 240 288 60 LoutGraphic
+gsave
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+160 fnt1 170 171(of)m 351(te)s 2(xt.)k
+
+grestore
+gsave
+5055 1034 translate
+240 fnt1 1927 490 170 244 240 288 60 LoutGraphic
+gsave
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+160 fnt5 170 203(@Input)m
+grestore
+gsave
+0 0 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ B@W lfigprevious /FROM lfigpointdef
+A@E lfigprevious /TO lfigpointdef ] lfigdopath
+0.15 cm /lfigsolid /lfigblack
+lfigopen
+0.15 cm 0.05 cm lfigforward
+grestore
+
+grestore
+gsave
+0 0 translate
+240 fnt1
+0 0 0 0 240 288 60 LoutGraphic
+gsave
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ D@W lfigprevious /FROM lfigpointdef
+C@E lfigprevious /TO lfigpointdef ] lfigdopath
+0.15 cm /lfigsolid /lfigblack
+lfigopen
+0.15 cm 0.05 cm lfigforward
+grestore
+
+grestore
+end end restore
+grestore
+0 8963(The)m 472(components)s 1724(of)s 2039(the)s 2431(body)s
+3009(te)s 3(xt)k 3468(g)s 1(alle)k 3(y)k
+4146(are)s 4537(lines,)s 5139(e)s 3(xcept)k 5864(for)s
+6246(the)s 6638(special)s 7400(recepti)s 6(v)k 3(e)k
+8366(symbol)s 220 fnt5 0 8672(@Input)m 240 fnt1 759 8675(which)m
+1393(is)s 1595(a)s 1753(placeholder)s 2920(for)s 3249(as)s
+3491(yet)s 3835(unread)s 4536(input)s 5080(\(Section)s 5924(5.4\).)s
+6459(The)s 6879(components)s 8079(of)s 8342(the)s 8681(root)s
+0 8387(g)m 1(alle)k 3(y)k 646(are)s 1006(pages,)s
+1671(e)s 3(xcept)k 2364(for)s 2715(the)s 3076(concluding)s
+4205(une)s 3(xpanded)k 5431(in)s 9(v)k 4(ocation)k
+6498(of)s 220 fnt5 6781 8384(@P)m 8(ageList)k 240 fnt1
+7845 8387(,)m 7965(which)s 8620(is)s 8843(an)s 0 8099(ine)m 3(xhaustible)k
+1328(source)s 2008(of)s 2279(more)s 2826(pages,)s 3478(e)s 3(xpanded)k
+4451(on)s 4748(demand.)s 480 7725(The)m 923(concrete)s 1804(data)s
+2277(structure)s 3184(used)s 3696(by)s 4006(Basser)s 4718(Lout)s
+5246(permits)s 6028(the)s 6392(g)s 1(alle)k 3(y)k
+7041(\210ushing)s 7882(algorithm)s 8887(to)s 0 7437(na)m 4(vig)k 1(ate)k
+861(the)s 1209(dynamic)s 2086(tree)s 2499(and)s 2903(\207nd)s
+3334(signi\207cant)s 4390(features)s 5196(quickly:)s gsave
+480 78 translate
+200 fnt1 8081 7019 226 7019 200 288 50 LoutGraphic
+gsave
+grestore save gsave 100 dict begin lfigdict begin
+grestore
+980 7019 226 6704 200 288 50 0 0 LoutGr2
+currentdict end 100 dict begin begin
+grestore
+980 585 226 270 200 288 50 0 6434 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+200 fnt3
+226 226(HEAD)m
+grestore
+(A) lfigpromotelabels
+grestore
+1927 588 226 273 200 288 50 1830 6431 LoutGr2
+currentdict end 100 dict begin begin
+grestore
+1631 588 226 273 200 288 50 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+200 fnt3 226 229(RECEIVING)m 1306(*)s
+grestore
+(B) lfigpromotelabels
+grestore
+0 0 0 0 200 288 50 1830 6431 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ A@CTR A@CTR B@W lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+B@W lfigprevious /TO lfigpointdef ] lfigdopath
+0.15 cm /lfigsolid /lfigblack
+lfigopen
+0.15 cm 0.05 cm lfigforward
+grestore
+
+grestore
+1927 588 226 273 200 288 50 1830 5503 LoutGr2
+currentdict end 100 dict begin begin
+grestore
+1498 588 226 273 200 288 50 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+200 fnt3
+226 229(RECEPTIVE)m
+grestore
+(C) lfigpromotelabels
+grestore
+0 0 0 0 200 288 50 1830 5503 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ A@CTR A@CTR C@W lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+C@W lfigprevious /TO lfigpointdef ] lfigdopath
+0.15 cm /lfigsolid /lfigblack
+lfigopen
+0.15 cm 0.05 cm lfigforward
+grestore
+
+grestore
+1927 0 0 0 200 288 50 1830 5163 LoutGr2
+currentdict end 100 dict begin begin
+grestore
+0 0 0 0 200 288 50 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfignoline [ lfigbox ] lfigdopath
+pop pop
+grestore
+
+grestore
+(D) lfigpromotelabels
+grestore
+0 0 0 0 200 288 50 1830 5163 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ A@CTR A@CTR D@NW lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+D@NW lfigprevious /TO lfigpointdef ] lfigdopath
+0.15 cm /lfigsolid /lfigblack
+lfigopen
+0.15 cm 0.05 cm lfigforward
+grestore
+
+grestore
+1927 2494 0 2494 200 288 50 1830 2669 LoutGr2
+0 0 moveto xsize 0 lineto xsize ysize lineto
+0 ysize lineto closepath stroke
+grestore
+160 fnt1 845 2216(-)m 931(1)s 1035(-)s
+410 2000(A)m 563(small)s 1587 1611 0 1545 160 180 40 170 275 LoutGr2
+currentdict end 100 dict begin begin
+grestore
+572 132 0 66 160 180 40 0 1479 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfignoline [ lfigbox ] lfigdopath
+pop pop
+grestore
+140 fnt5 0 30(@Galle)m 2(y )k
+
+grestore
+(E) lfigpromotelabels
+grestore
+1587 105 0 39 160 180 40 170 170 LoutGr2
+currentdict end 100 dict begin begin
+grestore
+731 105 0 39 160 180 40 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfignoline [ lfigbox ] lfigdopath
+pop pop
+grestore
+140 fnt5 0 3(@F)m 4(ootSect )k
+grestore
+(F) lfigpromotelabels
+grestore
+
+grestore
+0 0 0 0 200 288 50 1830 2669 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ B@E B@E 0 B@E E@E lfigydistance lfigpadd E@E ] lfigdopath
+0.15 cm /lfigsolid /lfigblack
+lfigopen
+0.15 cm 0.05 cm lfigforward
+grestore
+
+grestore
+0 0 0 0 200 288 50 1830 2669 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ C@E C@E 0 C@E F@E lfigydistance lfigpadd F@E ] lfigdopath
+0.15 cm /lfigsolid /lfigblack
+lfigopen
+0.15 cm 0.05 cm lfigforward
+grestore
+
+grestore
+1927 588 226 273 200 288 50 1830 1741 LoutGr2
+currentdict end 100 dict begin begin
+grestore
+839 588 226 273 200 288 50 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+200 fnt3 226 229(GAP)m
+
+grestore
+(C) lfigpromotelabels
+grestore
+0 0 0 0 200 288 50 1830 1741 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ A@CTR A@CTR C@W lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+C@W lfigprevious /TO lfigpointdef ] lfigdopath
+0.15 cm /lfigsolid /lfigblack
+lfigopen
+0.15 cm 0.05 cm lfigforward
+grestore
+
+grestore
+1927 588 226 273 200 288 50 1830 813 LoutGr2
+currentdict end 100 dict begin begin
+grestore
+1498 588 226 273 200 288 50 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+200 fnt3 226 229(RECEPTIVE)m
+grestore
+(C) lfigpromotelabels
+grestore
+0 0 0 0 200 288 50 1830 813 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ A@CTR A@CTR C@W lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+C@W lfigprevious /TO lfigpointdef ] lfigdopath
+0.15 cm /lfigsolid /lfigblack
+lfigopen
+0.15 cm 0.05 cm lfigforward
+grestore
+
+grestore
+1927 473 170 237 200 288 50 1830 0 LoutGr2
+currentdict end 100 dict begin begin
+grestore
+1927 473 170 237 200 288 50 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+140 fnt5 170 201(@P)m 5(ageList 2)k
+
+grestore
+(D) lfigpromotelabels
+grestore
+0 0 0 0 200 288 50 1830 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ A@CTR A@CTR D@NW lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+D@NW lfigprevious /TO lfigpointdef ] lfigdopath
+0.15 cm /lfigsolid /lfigblack
+lfigopen
+0.15 cm 0.05 cm lfigforward
+grestore
+
+grestore
+0 0 0 0 200 288 50 1830 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ C@E C@E 0 C@E D@W 1.8 cm 0 lfigpadd lfigydistance lfigpadd D@W 1.8 cm 0 lfigpadd ] lfigdopath
+0.15 cm /lfigsolid /lfigblack
+lfigopen
+0.15 cm 0.05 cm lfigforward
+grestore
+
+grestore
+980 7019 226 6704 200 288 50 4324 0 LoutGr2
+currentdict end 100 dict begin begin
+grestore
+980 585 226 270 200 288 50 0 6434 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+200 fnt3 226 226(HEAD)m
+grestore
+(A) lfigpromotelabels
+grestore
+0 0 0 0 200 288 50 5304 6704 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ B@E lfigprevious /FROM lfigpointdef
+A@W lfigprevious /TO lfigpointdef ] lfigdopath
+0.15 cm /lfigsolid /lfigblack
+lfigopen
+0.15 cm 0.05 cm lfigforward
+grestore
+
+grestore
+1927 483 170 240 200 288 50 6154 6536 LoutGr2
+currentdict end 100 dict begin begin
+grestore
+1927 483 170 240 200 288 50 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+160 fnt1 170 204(paragraph)m
+grestore
+(B) lfigpromotelabels
+grestore
+0 0 0 0 200 288 50 6154 6536 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ A@CTR A@CTR B@W lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+B@W lfigprevious /TO lfigpointdef ] lfigdopath
+0.15 cm /lfigsolid /lfigblack
+lfigopen
+0.15 cm 0.05 cm lfigforward
+grestore
+
+grestore
+1927 588 226 273 200 288 50 6154 5608 LoutGr2
+currentdict end 100 dict begin begin
+grestore
+839 588 226 273 200 288 50 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+200 fnt3
+226 229(GAP)m
+grestore
+(B) lfigpromotelabels
+grestore
+0 0 0 0 200 288 50 6154 5608 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ A@CTR A@CTR B@W lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+B@W lfigprevious /TO lfigpointdef ] lfigdopath
+0.15 cm /lfigsolid /lfigblack
+lfigopen
+0.15 cm 0.05 cm lfigforward
+grestore
+
+grestore
+1927 450 170 207 200 288 50 6154 4818 LoutGr2
+currentdict end 100 dict begin begin
+grestore
+1927 450 170 207 200 288 50 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+160 fnt1 170 171(of)m 351(te)s 2(xt.)k
+
+grestore
+(B) lfigpromotelabels
+grestore
+0 0 0 0 200 288 50 6154 4818 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ A@CTR A@CTR B@NW lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+B@NW lfigprevious /TO lfigpointdef ] lfigdopath
+0.15 cm /lfigsolid /lfigblack
+lfigopen
+0.15 cm 0.05 cm lfigforward
+grestore
+
+grestore
+1927 588 226 273 200 288 50 6154 3890 LoutGr2
+currentdict end 100 dict begin begin
+grestore
+839 588 226 273 200 288 50 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+200 fnt3 226 229(GAP)m
+grestore
+(B) lfigpromotelabels
+grestore
+0 0 0 0 200 288 50 6154 3890 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ A@CTR A@CTR B@W lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+B@W lfigprevious /TO lfigpointdef ] lfigdopath
+0.15 cm /lfigsolid /lfigblack
+lfigopen
+0.15 cm 0.05 cm lfigforward
+grestore
+
+grestore
+1927 588 226 273 200 288 50 6154 2962 LoutGr2
+currentdict end 100 dict begin begin
+grestore
+1498 588 226 273 200 288 50 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+200 fnt3 226 229(RECEPTIVE)m
+grestore
+(B) lfigpromotelabels
+grestore
+0 0 0 0 200 288 50 6154 2962 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ A@CTR A@CTR B@W lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+B@W lfigprevious /TO lfigpointdef ] lfigdopath
+0.15 cm /lfigsolid /lfigblack
+lfigopen
+0.15 cm 0.05 cm lfigforward
+grestore
+
+grestore
+1927 471 170 235 200 288 50 6154 2151 LoutGr2
+currentdict end 100 dict begin begin
+grestore
+1927 471 170 235 200 288 50 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+140 fnt5
+170 199(@Input)m
+grestore
+(C) lfigpromotelabels
+grestore
+0 0 0 0 200 288 50 6154 2151 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ A@CTR A@CTR C@NW lfigangle A@CIRCUM lfigpadd lfigprevious /FROM lfigpointdef
+C@NW lfigprevious /TO lfigpointdef ] lfigdopath
+0.15 cm /lfigsolid /lfigblack
+lfigopen
+0.15 cm 0.05 cm lfigforward
+grestore
+
+grestore
+0 0 0 0 200 288 50 6154 2151 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ B@E B@E 0 B@E C@W 1.2 cm 0 lfigpadd lfigydistance lfigpadd C@W 1.2 cm 0 lfigpadd ] lfigdopath
+0.15 cm /lfigsolid /lfigblack
+lfigopen
+0.15 cm 0.05 cm lfigforward
+grestore
+
+grestore
+end end restore
+grestore
+
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 26 27
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt3 vec2 /Times-Italic LoutRecode
+/fnt3 { /Times-Italicfnt3 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt5 vec2 /Helvetica LoutRecode
+/fnt5 { /Helveticafnt5 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5705 -1581(-)m 5833(26)s 6126(-)s 9066 13414 0 13414 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+0 13251(Each)m 521(g)s 1(alle)k 3(y)k
+1140(has)s 1495(a)s 240 fnt3 1647 13253(HEAD)m 240 fnt1
+2325 13251(node)m 2832(whose)s 3485(children)s 4311(are)s 4643(its)s
+4904(component)s 6013(objects,)s 6783(separated)s 7728(by)s 240 fnt3
+8007 13253(GAP)m 240 fnt1 8516 13251(nodes)m 0 12963(recording)m 969(the)s
+1317(inter)s 4(-component)k 2953(g)s 1(aps.)k 480 12589(Each)m
+1026(component)s 2161(is)s 2383(preceded)s 3315(by)s 3621(zero)s
+4096(or)s 4367(more)s 240 fnt3 4925 12591(galle)m 7(y)k
+5569(inde)s 4(x)k 6155(nodes)s 240 fnt1 6780 12589(of)m
+7063(v)s 6(arious)k 7823(types.)s 8504(Ev)s 3(ery)k
+0 12301(recepti)m 6(v)k 3(e)k 922(symbol)s 1681(has)s
+2050(a)s 240 fnt3 2216 12303(RECEPTIVE)m 240 fnt1 3528 12301(inde)m 3(x)k
+4111(pointing)s 4962(to)s 5200(it,)s 5438(so)s 5704(that)s
+6121(it)s 6312(can)s 6701(be)s 6982(found)s 7598(without)s
+8388(search-)s 0 12013(ing)m 355(through)s 1152(its)s 1423(component.)s
+2646(If)s 2871(the)s 3215(symbol)s 3970(is)s 4175(currently)s
+5086(the)s 5429(tar)s 4(get)k 6023(of)s 6290(a)s
+6451(g)s 1(alle)k 3(y)k 15(,)k 7118(it)s
+7305(has)s 7670(a)s 240 fnt3 7831 12015(RECEIVING)m 240 fnt1
+0 11725(inde)m 3(x)k 595(instead)s 1342(which)s 1995(is)s
+2217(also)s 2667(link)s 2(ed)k 3332(to)s 3583(the)s
+3942(incoming)s 4911(g)s 1(alle)k 3(y)k 15(.)k
+5652(Galle)s 3(ys)k 6441(that)s 6871(are)s 7229(currently)s
+8157(without)s 8960(a)s 0 11437(tar)m 4(get)k 586(are)s
+920(link)s 2(ed)k 1560(to)s 1786(the)s 2120(dynamic)s
+2984(tree)s 3383(by)s 240 fnt3 3664 11439(UN)m 6(A)k 8(TT)k 12(A)k 7(CHED)k
+240 fnt1 5215 11437(g)m 1(alle)k 3(y)k 5836(inde)s 3(x)k 3(es,)k
+6654(either)s 7244(just)s 7635(after)s 8118(their)s 8601(most)s
+0 11149(recent)m 643(tar)s 4(get)k 1242(if)s 1459(there)s
+1992(has)s 2362(been)s 2871(one,)s 3324(or)s 3583(else)s
+4010(at)s 4242(their)s 4739(point)s 5291(of)s 5562(in)s 9(v)k 4(ocation.)k
+480 10775(Each)m 1041(g)s 1(alle)k 3(y)k 1701(should)s
+2424(be)s 2732(thought)s 3550(of)s 3847(as)s 4123(a)s
+4315(concurrent)s 5423(process,)s 6273(although)s 7194(the)s 7569(implementation)s
+0 10487(in)m 268(C)s 506(uses)s 995(coroutines)s 2067(implemented)s
+3399(by)s 3719(procedures.)s 4957(A)s 5213(g)s 1(alle)k 3(y)k
+5873(may)s 6364(promote)s 7243(its)s 7545(\207rst)s 8002(component)s
+0 10199(only)m 499(if)s 735(it)s 946(has)s 1335(a)s
+1520(tar)s 4(get,)k 2185(suf\207cient)s 3153(space)s 3759(is)s
+3988(a)s 4(v)k 6(ailable)k 4915(at)s 5166(the)s
+5533(tar)s 4(get)k 6151(to)s 6409(recei)s 6(v)k 3(e)k
+7164(the)s 7531(component,)s 8722(and)s 0 9911(the)m 349(component)s
+1475(contains)s 2325(no)s 2620(recepti)s 6(v)k 3(e)k
+3544(symbols.)s 4508(This)s 4986(last)s 5379(condition)s 6342(seems)s
+6979(to)s 7220(be)s 7504(the)s 7854(k)s 2(e)k 3(y)k
+8251(to)s 8492(g)s 1(alle)k 3(y)k 0 9623(synchronization:)m
+1722(it)s 1943(forces)s 2606(a)s 2801(bottom-up)s 3880(promotion)s
+4963(re)s 3(gime,)k 5759(pre)s 6(v)k 3(enting)k
+6855(pages)s 7480(from)s 8033(\210ushing)s 8887(to)s 0 9335(output)m
+672(before)s 1338(te)s 3(xt)k 1753(\210ushes)s 2469(into)s
+2894(them,)s 3479(for)s 3817(e)s 3(xample.)k 480 8961(Each)m
+1022(g)s 1(alle)k 3(y)k 1663(contains)s 2519(a)s
+2692(number)s 3490(of)s 3769(binary)s 4441(semaphores,)s 5685(sho)s 6(wn)k
+6369(as)s 6626(asterisks)s 7507(in)s 7757(our)s 8144(snapshots)s
+0 8673(when)m 583(set.)s 1019(At)s 1325(an)s 3(y)k
+1730(gi)s 6(v)k 3(en)k 2317(moment,)s 3215(a)s
+3389(g)s 1(alle)k 3(y)k 4030(process)s 4805(is)s
+5022(either)s 5633(running)s 6438(or)s 6704(else)s 7139(is)s
+7356(suspended)s 8419(on)s 8724(one)s 0 8385(of)m 269(its)s
+543(o)s 6(wn)k 1005(semaphores.)s 2296(The)s 240 fnt3
+2722 8387(HEAD)m 240 fnt1 3413 8385(node)m 3933(contains)s 4779(a)s
+4943(semaphore)s 6033(which)s 6673(is)s 6881(set)s 7204(when)s
+7778(the)s 8124(g)s 1(alle)k 3(y)k 8756(has)s
+0 8097(tried)m 499(to)s 742(\207nd)s 1177(a)s 1347(tar)s 4(get)k
+1950(and)s 2359(f)s 2(ailed.)k 3068(Each)s 3607(recepti)s 6(v)k 3(e)k
+4533(symbol)s 5297(has)s 5671(a)s 5842(semaphore)s 6938(which)s
+7584(is)s 7798(set)s 8127(when)s 8708(that)s 0 7809(symbol)m
+760(is)s 970(pre)s 6(v)k 3(enting)k 2037(the)s
+2385(\207rst)s 2816(component)s 3940(from)s 4464(being)s 5049(promoted.)s
+480 7435(F)m 3(or)k 859(e)s 3(xample,)k 1762(in)s
+1994(the)s 2331(snapshot)s 3218(at)s 3439(the)s 3776(be)s 3(ginning)k
+4773(of)s 5033(this)s 5418(section,)s 6191(the)s 6528(root)s
+6962(g)s 1(alle)k 3(y)k 7585(is)s 7784(suspended)s
+8829(on)s 0 7147(the)m 220 fnt5 351 7144(@Galle)m 4(y)k
+240 fnt1 1253 7147(symbol,)m 2069(b)s 4(ut)k 2435(the)s
+2787(te)s 3(xt)k 3205(g)s 1(alle)k 3(y)k
+3843(is)s 4057(running.)s 4970(It)s 5179(will)s 5608(suspend)s
+6442(on)s 6743(the)s 220 fnt5 7095 7144(@Input)m 240 fnt1
+7866 7147(symbol)m 8630(after)s 0 6859(the)m 348(\207rst)s 779(tw)s 2(o)k
+1189(components)s 2397(are)s 2744(promoted.)s 480 6485(Ev)m 3(ery)k
+1145(g)s 1(alle)k 3(y)k 240 fnt3 1822 6487(G)m
+240 fnt1 1995 6485(,)m 2145(be)s 2470(it)s 2705(a)s
+2914(list)s 3308(of)s 3623(pages,)s 4318(body)s 4895(te)s 3(xt,)k
+5400(a)s 5609(footnote,)s 6556(or)s 6858(whate)s 6(v)k 3(er)k 9(,)k
+7866(e)s 3(x)k 3(ecutes)k 8778(the)s 0 6197(follo)m 6(wing)k
+977(algorithm)s 1966(in)s 2209(parallel)s 2979(with)s 3461(e)s 6(v)k 3(ery)k
+4037(other)s 4588(g)s 1(alle)k 3(y:)k 0 5694(1.)m
+303(Initially)s 240 fnt3 1132 5696(G)m 240 fnt1 1384 5694(is)m
+1614(unattached.)s 2834(Search)s 3560(forw)s 2(ards)k 4478(or)s
+4756(backw)s 2(ards)k 5848(from)s 6392(its)s 240 fnt3
+6687 5696(UN)m 6(A)k 8(TT)k 12(A)k 7(CHED)k
+240 fnt1 8272 5694(inde)m 3(x)k 8876(as)s 0 5406(required,)m
+903(to)s 1142(\207nd)s 1573(a)s 1739(recepti)s 6(v)k 3(e)k
+2661(symbol)s 240 fnt3 3421 5408(S)m 240 fnt1 3602 5406(which)m
+4244(can)s 4633(e)s 3(xpand)k 5380(to)s 5619(re)s 6(v)k 3(eal)k
+6248(a)s 6414(tar)s 4(get)k 7013(for)s 240 fnt3
+7351 5408(G)m 240 fnt1 7524 5406(.)m 0 4903(2.)m 284(If)s
+514(no)s 240 fnt3 807 4905(S)m 240 fnt1 988 4903(can)m
+1377(be)s 1659(found,)s 2325(suspend)s 3155(on)s 3452(the)s
+3800(attachment)s 4908(semaphore.)s 6108(Resume)s 6935(later)s 7418(from)s
+7942(step)s 8380(1.)s 0 4400(3.)m 281(Expand)s 240 fnt3
+1068 4402(S)m 240 fnt1 1246 4400(to)m 1482(re)s 6(v)k 3(eal)k
+2107(the)s 2452(tar)s 4(get)k 3048(of)s 240 fnt3
+3316 4402(G)m 240 fnt1 3489 4400(.)m 3649(Preserv)s 3(e)k
+240 fnt3 4521 4402(S)m 240 fnt1 4642 4400(')m 13(s)k
+4849(semaphore)s 5938(by)s 6229(mo)s 3(ving)k 7007(it)s
+7196(to)s 7432(the)s 7777(\207rst)s 8204(recepti)s 6(v)k 3(e)k
+0 4112(symbol)m 760(within)s 1428(the)s 1776(e)s 3(xpansion)k
+2801(of)s 240 fnt3 3072 4114(S)m 240 fnt1 3193 4112(.)m
+0 3609(4.)m 295(Calculate)s 1264(the)s 1624(a)s 4(v)k 6(ailable)k
+2543(width)s 3156(and)s 3572(height)s 4241(at)s 4484(the)s
+4844(tar)s 4(get,)k 5501(and)s 5917(if)s 240 fnt3
+6145 3611(G)m 240 fnt1 6389 3609(is)m 6611(still)s 7034(a)s
+7211(pure)s 7704(parse)s 8275(tree,)s 8751(use)s 0 3321(the)m
+377(en)s 9(vironment)k 1667(attached)s 2550(to)s 240 fnt3
+2819 3323(G)m 240 fnt1 3081 3321(and)m 3515(the)s 3892(style)s
+4429(information)s 5643(from)s 6197(the)s 6574(tar)s 4(get)k
+7203(to)s 7471(e)s 6(v)k 6(aluate)k 240 fnt3
+8341 3323(G)m 240 fnt1 8603 3321(as)m 8883(in)s 0 3033(Section)m
+774(4.)s 0 2577(5.)m 284(Examine)s 1190(the)s 1538(components)s
+2746(of)s 240 fnt3 3017 2579(G)m 240 fnt1 3250 2577(one)m
+3652(by)s 3946(one.)s 4456(F)s 3(or)k 4845(each)s
+5340(component)s 6464(there)s 6997(are)s 7344(three)s 7877(possibilities:)s
+240 fnt3 480 2205(A)m 7(CCEPT)k 17(.)k 240 fnt1
+1513 2203(If)m 1756(the)s 2116(component)s 3253(\207ts)s 3609(into)s
+4046(the)s 4407(a)s 4(v)k 6(ailable)k 5328(space,)s
+5978(and)s 6395(has)s 6778(no)s 7083(other)s 7647(problems,)s
+8657(then)s 0 1915(promote)m 875(it)s 1090(into)s 1538(the)s
+1909(tar)s 4(get.)k 2635(If)s 2888(this)s 3306(is)s
+3539(the)s 3910(\207rst)s 4364(component)s 5511(promoted)s 6509(into)s
+6956(this)s 7375(tar)s 4(get,)k 8044(and)s 240 fnt3
+8471 1917(G)m 240 fnt1 8727 1915(is)m 8960(a)s 0 1627(forcing)m
+768(g)s 1(alle)k 3(y)k 1428(\(Section)s 2307(5.4\),)s
+2819(delete)s 3470(e)s 6(v)k 3(ery)k 4072(recepti)s 6(v)k 3(e)k
+5020(symbol)s 5806(preceding)s 6827(the)s 7201(tar)s 4(get)k
+7826(in)s 8095(the)s 8469(parent)s 0 1339(g)m 1(alle)k 3(y)k 15(.)k
+729(If)s 240 fnt3 959 1341(G)m 240 fnt1 1192 1339(is)m
+1402(the)s 1750(root)s 2195(g)s 1(alle)k 3(y)k 15(,)k
+2867(render)s 3537(the)s 3885(component)s 5009(on)s 5306(the)s
+5654(output)s 6326(\207le)s 6687(and)s 7091(dispose)s 7865(it;)s
+240 fnt3 480 967(REJECT)m 17(.)k 240 fnt1 1490 965(If)m
+1756(the)s 2140(component)s 3300(is)s 3546(too)s 3941(lar)s 4(ge)k
+4506(for)s 4880(the)s 5264(a)s 4(v)k 6(ailable)k
+6208(space,)s 6882(or)s 7177(a)s 240 fnt3 7379 967(FOLLO)m 12(WS)k
+240 fnt1 8542 965(inde)m 3(x)k 0 677(\(described)m 1043(belo)s 6(w\))k
+1740(forbids)s 2458(its)s 2723(promotion)s 3767(into)s 4182(this)s
+4568(tar)s 4(get,)k 5203(then)s 5662(detach)s 240 fnt3
+6333 679(G)m 240 fnt1 6556 677(from)m 7069(the)s 7407(tar)s 4(get.)k
+8100(If)s 8320(this)s 8705(w)s 2(as)k 0 389(the)m
+338(\207rst)s 758(component)s 1872(at)s 2093(this)s 2479(tar)s 4(get,)k
+240 fnt3 3114 391(S)m 240 fnt1 3284 389(has)m 3644(been)s
+4142(a)s 4298(complete)s 5219(f)s 2(ailure,)k 5936(so)s
+6191(undo)s 6713(step)s 7141(3)s 7294(\(Basser)s 8060(Lout)s
+8561(is)s 8760(not)s
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 27 28
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt3 vec2 /Times-Italic LoutRecode
+/fnt3 { /Times-Italicfnt3 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt5 vec2 /Helvetica LoutRecode
+/fnt5 { /Helveticafnt5 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5708 -1579(-)m 5836(27)s 6124(-)s 9066 13418 0 13309 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+0 13255(able)m 454(to)s
+693(undo)s 1226(step)s 1664(4\);)s 1975(otherwise)s 2960(delete)s
+3586(the)s 3934(tar)s 4(get.)k 4637(Return)s 5345(to)s
+5584(step)s 6022(1)s 6177(and)s 6581(continue)s 7461(immediately;)s
+240 fnt3 480 12883(SUSPEND.)m 240 fnt1 1685 12881(If)m 1928(the)s
+2289(component)s 3426(contains)s 4287(a)s 4466(recepti)s 6(v)k 3(e)k
+5402(symbol,)s 6227(it)s 6432(cannot)s 7143(be)s 7438(promoted)s
+8426(yet.)s 8896(If)s 0 12593(this)m 392(symbol)s 1148(is)s
+1354(the)s 1697(tar)s 4(get)k 2292(of)s 2559(a)s
+2720(g)s 1(alle)k 3(y)k 3350(that)s 3764(w)s 2(as)k
+4180(written)s 4909(to)s 5144(an)s 5423(auxiliary)s 6321(\207le)s
+6678(on)s 6971(a)s 7132(pre)s 6(vious)k 7997(run,)s
+8419(read)s 8883(in)s 0 12305(that)m 427(g)s 1(alle)k 3(y)k
+1071(and)s 1484(\210ush)s 2017(it.)s 2322(Otherwise)s 3370(suspend)s
+4209(on)s 4516(the)s 4873(recepti)s 6(v)k 3(e)k
+5805(symbol')s 13(s)k 6729(semaphore;)s 7887(resume)s 8643(later)s
+0 12017(from)m 524(step)s 962(4.)s 0 11513(6.)m 284(T)s 16(erminate)k
+1305(when)s 1881(the)s 2229(g)s 1(alle)k 3(y)k
+2863(is)s 3073(empty)s 15(.)k 0 11010(At)m 354(v)s 6(arious)k
+1158(points)s 1850(in)s 2148(this)s 2599(algorithm,)s 3691(recepti)s 6(v)k 3(e)k
+4668(symbols)s 5572(\(and)s 6111(their)s 6663(semaphores\))s 7975(are)s
+8378(deleted)s 0 10722(in)m 273(the)s 652(dynamic)s 1560(parent)s
+2247(g)s 1(alle)k 3(y)k 15(,)k 2950(possibly)s
+3833(permitting)s 4911(it)s 5134(to)s 5404(resume)s 6180(\210ushing.)s
+7147(When)s 7807(this)s 8234(happens,)s 0 10434(Basser)m 701(Lout)s
+1218(resumes)s 2057(the)s 2410(parent)s 3071(immediately)s 4324(after)s
+240 fnt3 4825 10436(G)m 240 fnt1 5063 10434(suspends)m 5983(or)s
+6247(terminates.)s 7410(Also,)s 7974(whene)s 6(v)k 3(er)k
+8960(a)s 0 10146(component)m 1140(is)s 1366(promoted,)s 2406(an)s 3(y)k
+2819(child)s 3371(g)s 1(alle)k 3(ys)k 4111(connected)s
+5156(to)s 5411(it)s 5619(by)s 240 fnt3 5929 10148(UN)m 6(A)k 8(TT)k 12(A)k 7(CHED)k
+240 fnt1 7510 10146(inde)m 3(x)k 3(es)k 8302(must)s
+8844(be)s 0 9858(resumed,)m 918(since)s 1466(these)s 2014(g)s 1(alle)k 3(ys)k
+2739(may)s 3206(be)s 3490(able)s 3945(to)s 4185(\207nd)s
+4617(a)s 4784(tar)s 4(get)k 5384(no)s 6(w)k 15(.)k
+5942(A)s 6173(good)s 6712(e)s 3(xample)k 7576(of)s
+7848(this)s 8246(situation)s 0 9570(occurs)m 664(when)s 1228(a)s
+1382(line)s 1785(of)s 2044(body)s 2566(te)s 3(xt)k
+2969(with)s 3440(one)s 3830(or)s 4077(more)s 4613(footnotes)s
+5542(is)s 5740(promoted)s 6703(onto)s 7171(a)s 7325(page.)s
+7929(Basser)s 8614(Lout)s 0 9282(gi)m 6(v)k 3(es)k
+547(priority)s 1317(to)s 1556(such)s 2052(children,)s 2942(suspending)s
+240 fnt3 4073 9284(G)m 240 fnt1 4306 9282(while)m 4893(each)s
+5388(is)s 5598(gi)s 6(v)k 3(en)k 6178(a)s
+6344(chance)s 7064(to)s 7303(\210ush.)s 480 8908(Basser)m 1211(Lout)s
+1758(searches)s 2653(for)s 3025(the)s 3408(\207rst)s 3874(tar)s 4(get)k
+4507(of)s 240 fnt3 4813 8910(G)m 240 fnt1 5081 8908(only)m
+5595(in)s 5873(re)s 3(gions)k 6660(of)s 6965(the)s
+7348(dynamic)s 8260(tree)s 8708(that)s 0 8620(will)m 437(clearly)s
+1152(precede)s 1963(or)s 2233(follo)s 6(w)k 240 fnt3
+2917 8622(G)m 240 fnt1 3090 8620(')m 13(s)k 3312(in)s 9(v)k 4(ocation)k
+4378(point)s 4941(in)s 5196(the)s 5556(\207nal)s 6047(printed)s
+6794(document,)s 7857(whiche)s 6(v)k 3(er)k 8916(is)s
+0 8332(speci\207ed)m 904(in)s 1142(the)s 220 fnt5 1486 8329(into)m
+240 fnt1 1887 8332(clause;)m 2591(subsequent)s 3711(tar)s 4(gets)k
+4389(are)s 4731(sought)s 5426(later)s 5904(in)s 6142(the)s
+6486(same)s 7028(g)s 1(alle)k 3(y)k 7657(as)s
+7903(the)s 8246(\207rst.)s 8776(An)s 0 8044(e)m 3(xception)k
+982(to)s 1219(this)s 1613(rule,)s 2089(whose)s 2755(necessity)s
+3683(will)s 4107(be)s 4387(made)s 4959(clear)s 5480(later)s 9(,)k
+5999(is)s 6207(that)s 6623(a)s 6787(\207rst)s 220 fnt5
+7216 8041(f)m 6(ollo)k 3(wing)k 240 fnt1 8104 8044(tar)m 4(get)k
+8700(will)s 0 7756(be)m 282(sought)s 981(within)s 1649(a)s
+1815(dynamic)s 2692(sibling)s 3396(g)s 1(alle)k 3(y)k
+4030(preceding)s 240 fnt3 5026 7758(G)m 240 fnt1 5199 7756(')m 13(s)k
+5409(in)s 9(v)k 4(ocation)k 6463(point:)s gsave
+480 2770 translate
+200 fnt1
+5379 4646 0 4646 200 288 50 LoutGraphic
+gsave
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+200 fnt3 0 4510(dynamic)m 722(par)s 7(ent)k gsave
+0 1353 translate
+200 fnt1
+2039 3003 226 2777 200 288 50 LoutGraphic
+gsave
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+1587 171 0 86 200 288 50 226 2323 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+796 171 0 86 200 288 50 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfignoline [ lfigbox ] lfigdopath
+pop pop
+grestore
+180 fnt5 0 40(@XT)m 21(arget)k
+grestore
+(A) lfigpromotelabels
+grestore
+1587 136 0 47 200 288 50 226 1620 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+1254 136 0 47 200 288 50 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfignoline [ lfigbox ] lfigdopath
+pop pop
+grestore
+200 fnt3 0 3(UN)m 5(A)k 7(TT)k 10(A)k 6(CHED)k
+
+grestore
+(C) lfigpromotelabels
+grestore
+180 fnt5 226 752(@XT)m 21(arget)k
+grestore
+gsave
+2889 4135 translate
+200 fnt1 2490 171 0 86 200 288 50 LoutGraphic
+gsave
+currentdict end 200 dict begin begin
+grestore
+2450 171 0 86 200 288 50 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfignoline [ lfigbox ] lfigdopath
+pop pop
+grestore
+180 fnt5
+0 40(X into { @XT)m 21(arget&&f)k 5(ollo)k 2(wing })k
+grestore
+(B) lfigpromotelabels
+grestore
+gsave
+2889 2720 translate
+200 fnt1
+2039 1302 226 1076 200 288 50 LoutGraphic
+gsave
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+180 fnt5 226 492(@GT)m 21(arget)k
+grestore
+gsave
+2889 1982 translate
+200 fnt1 2490 171 0 86 200 288 50 LoutGraphic
+gsave
+currentdict end 200 dict begin begin
+grestore
+2490 171 0 86 200 288 50 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfignoline [ lfigbox ] lfigdopath
+pop pop
+grestore
+180 fnt5
+0 40(G into { @GT)m 21(arget&&f)k 5(ollo)k 2(wing })k
+grestore
+(D) lfigpromotelabels
+grestore
+gsave
+2889 0 translate
+200 fnt1
+2039 1869 226 1643 200 288 50 LoutGraphic
+gsave
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+
+grestore
+gsave
+0 0 translate
+200 fnt1 0 0 0 0 200 288 50 LoutGraphic
+gsave
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ A@E 0.2 cm 0 lfigpadd lfigprevious /FROM lfigpointdef
+0.2 cm 0 B@W lfigpsub lfigprevious /TO lfigpointdef ] lfigdopath
+0.15 cm /lfigsolid /lfigblack
+lfigopen
+0.15 cm 0.05 cm lfigforward
+grestore
+
+grestore
+gsave
+0 0 translate
+200 fnt1 0 0 0 0 200 288 50 LoutGraphic
+gsave
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ C@E 0.2 cm 0 lfigpadd lfigprevious /FROM lfigpointdef
+0.2 cm 0 D@W lfigpsub lfigprevious /TO lfigpointdef ] lfigdopath
+0.15 cm /lfigsolid /lfigblack
+lfigopen
+0.15 cm 0.05 cm lfigforward
+grestore
+
+grestore
+end end restore
+grestore
+0 2319(Here)m 240 fnt3 524 2321(G)m
+240 fnt1 762 2319(will)m 1193(\207nd)s 1629(the)s 220 fnt5
+1982 2316(@GT)m 26(arget)k 240 fnt1 3045 2319(tar)m 4(get)k
+3649(within)s 240 fnt3 4322 2321(X)m 240 fnt1 4478 2319(.)m
+4647(This)s 5128(is)s 5343(dangerous,)s 6439(since)s 6991(if)s
+7213(the)s 7566(\207rst)s 8002(component)s 0 2031(of)m 240 fnt3
+303 2033(G)m 240 fnt1 568 2031(is)m 811(then)s 1312(promoted)s
+2320(via)s 240 fnt3 2704 2033(X)m 240 fnt1 2952 2031(into)m
+3410(the)s 3790(\207rst)s 220 fnt5 4254 2028(@XT)m 26(arget)k
+240 fnt1 5319 2031(rather)m 5967(than)s 6469(into)s 6926(the)s
+7307(second,)s 240 fnt3 8111 2033(G)m 240 fnt1 8284 2031(')m 13(s)k
+8527(tar)s 4(get)k 0 1743(will)m 438(not)s 817(appear)s
+1526(later)s 2022(in)s 2277(the)s 2638(\207nal)s 3130(printed)s
+3878(document)s 4894(than)s 5376(its)s 5664(in)s 9(v)k 4(ocation)k
+6731(point,)s 7342(as)s 7605(required)s 8471(by)s 8778(the)s
+220 fnt5 0 1452(into)m 240 fnt1 406 1455(clause.)m 480 1081(Accordingly)m 15(,)k
+1753(when)s 2313(such)s 2794(a)s 2944(tar)s 4(get)k
+3528(is)s 3722(chosen,)s 4478(tw)s 2(o)k 4873(special)s
+5575(g)s 1(alle)k 3(y)k 6194(inde)s 3(x)k 3(es)k
+6954(are)s 7286(inserted)s 8084(and)s 8472(link)s 2(ed)k
+0 793(together:)m 898(a)s 240 fnt3 1074 795(PRECEDES)m 240 fnt1
+2327 793(inde)m 3(x)k 2921(at)s 240 fnt3 3163 795(G)m
+240 fnt1 3336 793(')m 13(s)k 3555(in)s 9(v)k 4(ocation)k
+4619(point,)s 5227(and)s 5641(a)s 240 fnt3 5817 795(FOLLO)m 12(WS)k
+240 fnt1 6952 793(inde)m 3(x)k 7546(at)s 7787(the)s
+8145(\207rst)s 8586(com-)s 0 505(ponent)m 720(of)s 240 fnt3
+1000 507(G)m 240 fnt1 1173 505(.)m 1346(The)s 1783(algorithm)s
+2781(checks)s 3492(before)s 4167(promoting)s 5226(an)s 3(y)k
+240 fnt3 5632 507(FOLLO)m 12(WS)k 240 fnt1 6767 505(inde)m 3(x)k
+7360(that)s 7787(its)s 8072(promotion)s
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 28 29
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Helvetica
+%%+ font Symbol
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt3 vec2 /Times-Italic LoutRecode
+/fnt3 { /Times-Italicfnt3 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt5 vec2 /Helvetica LoutRecode
+/fnt5 { /Helveticafnt5 LoutFont } def
+%%IncludeResource: font Symbol
+/fnt4 { /Symbol LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5708 -1579(-)m 5836(28)s 6123(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+0 13253(w)m 2(ould)k
+661(not)s 1033(place)s 1599(it)s 1797(earlier)s 2471(than)s
+2946(the)s 3300(corresponding)s 240 fnt3 4728 13255(PRECEDES)m 240 fnt1
+5978 13253(inde)m 3(x)k 6568(in)s 6817(the)s 7171(same)s
+7724(g)s 1(alle)k 3(y)k 15(,)k 8402(and)s
+8813(re-)s 0 12965(jects)m 486(the)s 831(component)s 1952(if)s
+2166(it)s 2355(w)s 2(ould.)k 3113(Since)s 240 fnt3
+3697 12967(PRECEDES)m 240 fnt1 4939 12965(and)m 240 fnt3 5340 12967(FOLLO)m 12(WS)k
+240 fnt1 6463 12965(inde)m 3(x)k 3(es)k 7236(are)s
+7580(rarely)s 8187(used,)s 8730(this)s 0 12677(check)m 619(can)s
+1008(be)s 1290(implemented)s 2596(by)s 2890(linear)s 3493(search.)s
+480 12303(When)m 1114(tw)s 2(o)k 1529(components)s 2742(are)s
+3094(separated)s 4060(by)s 220 fnt5 4359 12300(/)m 240 fnt1
+4423 12303(,)m 4535(as)s 4790(opposed)s 5652(to)s 5897(the)s
+6250(more)s 6802(usual)s 220 fnt5 7367 12300(//)m 240 fnt1
+7492 12303(,)m 7604(each)s 8105(in\210uences)s 0 12015(the)m 358(horizontal)s
+1393(position)s 2232(of)s 2514(the)s 2872(other)s 13(.)k
+3525(Because)s 4389(of)s 4671(this,)s 5133(the)s 240 fnt3
+5492 12017(SUSPEND)m 240 fnt1 6596 12015(action)m 7248(is)s 7468(in)s
+7722(f)s 2(act)k 8148(tak)s 2(en)k 8732(if)s
+8960(a)s 0 11727(recepti)m 6(v)k 3(e)k 930(symbol)s
+1698(occurs)s 2382(in)s 2633(an)s 3(y)k 3039(component)s
+4171(separated)s 5140(from)s 5672(the)s 6028(\207rst)s 6468(by)s
+220 fnt5 6770 11724(/)m 240 fnt1 6903 11727(operators)m 7851(only)s 15(.)k
+8435(Ag)s 1(ain,)k 0 11439(linear)m 603(search)s 1270(forw)s 2(ards)k
+2168(to)s 2407(the)s 2755(\207rst)s 220 fnt5 3186 11436(//)m
+240 fnt1 3371 11439(suf\207ces)m 4152(for)s 4490(this)s 4886(check.)s
+480 11065(A)m 740(good)s 1308(illustration)s 2430(of)s 2731(these)s
+3308(unusual)s 4139(cases)s 4724(is)s 4964(af)s 6(forded)k
+5856(by)s 6180(the)s 220 fnt5 6558 11062(@Align)m 240 fnt1
+7344 11065(symbols)m 8223(from)s 8778(the)s 0 10777(standard)m 867(DocumentLayout)s
+2600(package.)s 3546(These)s 4171(are)s 4516(used)s 5012(to)s
+5249(produce)s 6074(displayed)s 7047(equations,)s 8069(aligned)s 8829(on)s
+0 10489(their)m 497(equals)s 1159(signs)s 1702(despite)s 2435(being)s
+3020(separated)s 3980(by)s 4274(arbitrary)s 5149(body)s 5683(te)s 3(xt.)k
+480 10115(The)m 220 fnt5 921 10112(@Align)m 240 fnt1 1689 10115(symbols)m
+2551(are)s 2911(packaged)s 3886(neatly)s 4537(for)s 4889(the)s
+5250(con)s 9(v)k 3(enience)k 6503(of)s 6787(the)s
+7148(non-e)s 3(xpert)k 8254(user)s 9(,)k 8764(b)s 4(ut)k
+0 9827(we)m 335(will)s 761(sho)s 6(w)k 1315(just)s
+1720(the)s 2067(essence)s 2853(of)s 3124(the)s 3472(implementation)s
+5029(here.)s 5603(First,)s 6147(an)s 220 fnt5 6430 9824(@AlignList)m
+240 fnt1 7536 9827(g)m 1(alle)k 3(y)k 8170(is)s
+8379(created)s 0 9539(which)m 642(contains)s 1490(an)s 1773(in\207nite)s
+2506(supply)s 3199(of)s 220 fnt5 3470 9536(@AlignPlace)m 240 fnt1
+4779 9539(recepti)m 6(v)k 3(e)k 5701(symbols)s 6550(separated)s
+7510(by)s 220 fnt5 7804 9536(/)m 240 fnt1 7928 9539(operators:)m
+4777 3207 0 3207 240 288 60 480 5992 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+240 fnt3 0 3044(body)m 522(te)s 4(xt)k 926(galle)s 7(y)k
+gsave
+0 161 translate
+240 fnt1 2039 2720 226 2494 240 288 60 LoutGraphic
+gsave
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+1587 1418 0 1314 240 288 60 226 226 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+838 208 0 104 240 288 60 0 1210 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfignoline [ lfigbox ] lfigdopath
+pop pop
+grestore
+220 fnt5 0 47(@Galle)m 4(y)k
+grestore
+(A) lfigpromotelabels
+grestore
+
+grestore
+gsave
+2889 1638 translate
+240 fnt1
+1888 209 0 105 240 288 60 LoutGraphic
+gsave
+currentdict end 200 dict begin begin
+grestore
+1046 209 0 105 240 288 60 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfignoline [ lfigbox ] lfigdopath
+pop pop
+grestore
+220 fnt5 0 48(@AlignList)m
+grestore
+(B) lfigpromotelabels
+grestore
+gsave
+2889 0 translate
+240 fnt1 1888 1525 226 1195 240 288 60 LoutGraphic
+gsave
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+220 fnt5 226 1138(@AlignPlace)m
+226 850(@AlignPlace)m 226 562(...)m 226 274(@EndAlignList)m
+grestore
+gsave
+0 0 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ A@E 0.2 cm 0 lfigpadd lfigprevious /FROM lfigpointdef
+0.2 cm 0 B@W lfigpsub lfigprevious /TO lfigpointdef ] lfigdopath
+0.15 cm /lfigsolid /lfigblack
+lfigopen
+0.15 cm 0.05 cm lfigforward
+grestore
+
+grestore
+end end restore
+grestore
+0 5541(Then)m
+549(equations)s 1517(lik)s 2(e)k 1471 214 393 105 240 288 60 480 4987 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+1471 214 393 105 240 288 60 0 0 LoutGr2
+/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+1471 214 393 105 240 288 60 0 0 LoutGr2
+
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ -0.3 cm ymark xsize ymark 0.3 cm 0 lfigpadd
+[]
+xmark -0.3 cm xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
+pop pop
+grestore
+240 fnt3 0 53(f)m
+240 fnt4 113 45(\()m 240 fnt3 197 53(x)m 240 fnt4
+315 45(\))m 477(=)s 240 fnt3 690 53(g)m 240 fnt4
+816 45(\()m 240 fnt3 900 53(x)m 240 fnt4 1018 45(\))m
+1156(+)s 1357(2)s
+grestore
+
+grestore
+end end restore
+grestore
+0 4536(are)m 358(created)s 1117(and)s
+1532(sent)s 1989(to)s 220 fnt5 2239 4533(@AlignPlace&&f)m 6(ollo)k 3(wing)k
+240 fnt1 4690 4536(tar)m 4(gets.)k 5498(The)s 3(y)k
+6052(collect)s 6760(in)s 7014(the)s 220 fnt5 7374 4533(@AlignList)m
+240 fnt1 8492 4536(g)m 1(alle)k 3(y)k 0 4248(and)m
+404(are)s 751(aligned)s 1513(there:)s 5836 3212 0 3212 240 288 60 480 696 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+240 fnt3 0 3049(body)m
+522(te)s 4(xt)k 926(galle)s 7(y)k gsave
+0 166 translate
+240 fnt1
+2039 2720 226 2494 240 288 60 LoutGraphic
+gsave
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+1587 1418 0 1314 240 288 60 226 226 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+838 208 0 104 240 288 60 0 1210 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfignoline [ lfigbox ] lfigdopath
+pop pop
+grestore
+220 fnt5 0 47(@Galle)m 4(y)k
+grestore
+(A) lfigpromotelabels
+grestore
+
+grestore
+gsave
+2889 1643 translate
+240 fnt1 2947 209 0 105 240 288 60 LoutGraphic
+gsave
+currentdict end 200 dict begin begin
+grestore
+1046 209 0 105 240 288 60 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfignoline [ lfigbox ] lfigdopath
+pop pop
+grestore
+220 fnt5
+0 48(@AlignList)m
+grestore
+(B) lfigpromotelabels
+grestore
+gsave
+2889 0 translate
+240 fnt1 2947 1530 1285 1195 240 288 60 LoutGraphic
+gsave
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+2495 1078 1059 969 240 288 60 226 226 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ xmark ysize lfigprevious /FROM lfigpointdef
+xmark 0 lfigprevious /TO lfigpointdef ] lfigdopath
+pop pop
+grestore
+240 fnt3 666 917(f)m 240 fnt4
+779 909(\()m 240 fnt3 863 917(x)m 240 fnt4 981 909(\))m
+1143(=)s 240 fnt3 1356 917(g)m 240 fnt4 1482 909(\()m
+240 fnt3 1566 917(x)m 240 fnt4 1684 909(\))m 1822(+)s
+2023(2)s 240 fnt3 0 629(f)m 240 fnt4 113 621(\()m
+240 fnt3 197 629(x)m 240 fnt4 315 621(\))m 453(-)s
+240 fnt3 653 629(g)m 240 fnt4 779 621(\()m 240 fnt3
+863 629(x)m 240 fnt4 981 621(\))m 1143(=)s 1356(2)s
+220 fnt5 1059 336(...)m 1059 48(@EndAlignList)m
+grestore
+
+grestore
+gsave
+0 0 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ A@E 0.2 cm 0 lfigpadd lfigprevious /FROM lfigpointdef
+0.2 cm 0 B@W lfigpsub lfigprevious /TO lfigpointdef ] lfigdopath
+0.15 cm /lfigsolid /lfigblack
+lfigopen
+0.15 cm 0.05 cm lfigforward
+grestore
+
+grestore
+end end restore
+grestore
+
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 29 30
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Helvetica
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Symbol
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt5 vec2 /Helvetica LoutRecode
+/fnt5 { /Helveticafnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt3 vec2 /Times-Italic LoutRecode
+/fnt3 { /Times-Italicfnt3 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt2 vec2 /Times-Bold LoutRecode
+/fnt2 { /Times-Boldfnt2 LoutFont } def
+%%IncludeResource: font Symbol
+/fnt4 { /Symbol LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5706 -1579(-)m 5834(29)s 6125(-)s 9066 13414 0 13305 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+0 13251(The)m 220 fnt5
+450 13248(@AlignList)m 240 fnt1 1579 13251(g)m 1(alle)k 3(y)k
+2236(does)s 2749(not)s 3138(\210ush,)s 3734(because)s 4570(its)s
+4868(\207rst)s 5322(component)s 6469(is)s 6702(connected)s 7753(to)s
+8015(a)s 8204(recepti)s 6(v)k 3(e)k 0 12963(symbol)m
+760(by)s 220 fnt5 1054 12960(/)m 240 fnt1 1178 12963(operators.)m
+480 12589(After)m 1048(the)s 1402(last)s 1799(equation,)s 2736(an)s
+3025(empty)s 3683(forcing)s 4432(g)s 1(alle)k 3(y)k
+5072(is)s 5288(sent)s 5739(to)s 220 fnt5 5984 12586(@EndAlignList)m
+240 fnt1 7420 12589(,)m 7533(deleting)s 8362(the)s 8716(tw)s 2(o)k
+0 12301(remaining)m 1028(recepti)s 6(v)k 3(e)k 1957(symbols)s
+2813(from)s 3344(the)s 220 fnt5 3699 12298(@AlignList)m 240 fnt1
+4812 12301(g)m 1(alle)k 3(y)k 5452(and)s 5863(permitting)s
+6918(it)s 7117(to)s 7363(\210ush.)s 240 fnt3 8000 12303(FOLLO)m 12(WS)k
+240 fnt1 0 12013(inde)m 3(x)k 3(es)k 797(ensure)s
+1499(that)s 1939(each)s 2456(equation)s 3359(\207nds)s 3898(a)s
+4086(tar)s 4(get)k 4707(placed)s 5410(in)s 5675(the)s
+6045(body)s 6601(te)s 3(xt)k 7038(just)s 7465(after)s
+7983(its)s 8281(point)s 8855(of)s 0 11725(in)m 9(v)k 4(ocation,)k
+1090(so)s 1341(the)s 1675(equations)s 2628(return,)s 3290(aligned,)s
+4087(to)s 4311(approximately)s 5732(the)s 6065(points)s 6686(where)s
+7312(the)s 3(y)k 7760(were)s 8265(in)s 9(v)k 4(ok)k 2(ed.)k
+0 11437(Notice)m 703(that)s 1131(the)s 1489(\210ushing)s 2324(of)s
+2605(body)s 3149(te)s 3(xt)k 3574(is)s 3794(suspended)s
+4860(until)s 5363(the)s 5721(list)s 6082(of)s 6363(equations)s
+7341(is)s 7561(completed,)s 8674(as)s 8934(it)s 0 11149(must)m
+513(be,)s 833(since)s 1367(the)s 1702(horizontal)s 2713(position)s
+3528(of)s 3786(the)s 4121(\207rst)s 4539(equation)s 5407(cannot)s
+6092(be)s 6361(kno)s 6(wn)k 7052(until)s 7532(the)s
+7867(last)s 8245(equation)s 0 10861(is)m 210(added)s 840(to)s
+1079(the)s 1427(list.)s 480 10487(Layout)m 1262(quality)s 2025(can)s
+2459(occasionally)s 3753(be)s 4080(impro)s 3(v)k 3(ed)k
+5094(by)s 5433(rejecting)s 6366(a)s 6577(component)s 7746(that)s
+8209(could)s 8844(be)s 0 10199(promoted)m 978(\211)s 1161(for)s
+1502(e)s 3(xample,)k 2419(a)s 2588(component)s 3715(of)s
+3989(body)s 4526(te)s 3(xt)k 4944(that)s 5365(carries)s
+6054(a)s 6223(footnote)s 7079(too)s 7441(lar)s 4(ge)k
+7973(to)s 8215(\207t)s 8477(on)s 8778(the)s 0 9911(current)m
+747(page.)s 1374(Since)s 1972(Lout)s 2496(does)s 2997(not)s
+3374(specify)s 4130(ho)s 6(w)k 4602(breaking)s 5503(decisions)s
+6455(are)s 6814(made,)s 7450(be)s 3(yond)k 8222(the)s
+8582(basic)s 0 9623(constraints)m 1089(imposed)s 1961(by)s 2258(a)s 4(v)k 6(ailable)k
+3169(space)s 3759(and)s 220 fnt5 4166 9620(into)m 240 fnt1
+4575 9623(clauses,)m 5375(in)s 5621(principle)s 6529(such)s 7028(high)s
+7514(quality)s 8236(breaking)s 0 9335(could)m 592(be)s 877(added)s
+1510(to)s 1752(the)s 2102(implementation)s 3662(with)s 4147(no)s
+4443(change)s 5180(to)s 5421(the)s 5772(language.)s 6803(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
+7766(the)s 8117(generality)s 0 9047(of)m 280(the)s 637(g)s 1(alle)k 3(y)k
+1280(\210ushing)s 2115(algorithm,)s 3160(and)s 3573(its)s 3859(already)s
+4625(considerable)s 5898(comple)s 3(xity)k 15(,)k 7073(mak)s 2(e)k
+7654(this)s 8059(a)s 8235(daunting)s 0 8759(problem)m 890(in)s
+1167(practice,)s 2062(although)s 2991(a)s 3190(f)s 2(ascinating)k
+4323(one.)s 4866(T)s 5008 8711(E)m 5151 8759(X)m 5414([9],)s
+5832(with)s 6348(its)s 6657(unnested)s 7600(set)s 7958(of)s
+8263(`\210oating)s 0 8471(insertions')m 1041(clearly)s 1744(identi\207able)s 2875(as)s
+3125(each)s 3620(page)s 4128(is)s 4338(be)s 3(gun,)k
+5028(has)s 5398(the)s 5746(adv)s 6(antage)k 6766(in)s
+7009(this)s 7405(respect.)s 240 fnt2 0 7822(5.3.)m 471(Size)s
+938(constraints)s 2120(and)s 2561(size)s 2988(adjustments)s
+[ /Dest /LOUTconstraints /DEST pdfmark
+240 fnt1
+480 7346(The)m 893(g)s 1(alle)k 3(y)k 1512(\210ushing)s
+2321(algorithm)s 3295(needs)s 3876(to)s 4099(kno)s 6(w)k
+4665(the)s 4998(a)s 4(v)k 6(ailable)k 5890(width)s
+6477(and)s 6866(height)s 7508(at)s 7725(each)s 8204(recepti)s 6(v)k 3(e)k
+0 7058(symbol.)m 869(These)s 1496(symbols)s 2346(may)s 2812(lie)s
+3106(within)s 3775(arbitrarily)s 4782(comple)s 3(x)k 5659(objects,)s
+6443(and)s 6847(the)s 3(y)k 7311(may)s 7777(compete)s
+8644(with)s 0 6770(each)m 492(other)s 1040(for)s 1375(a)s 4(v)k 6(ailable)k
+2280(space)s 2864(\(as)s 3189(body)s 3720(te)s 3(xt)k
+4132(and)s 4533(footnote)s 5383(tar)s 4(gets)k 6062(do\),)s
+6485(so)s 6748(this)s 7141(information)s 8323(must)s 8844(be)s
+0 6482(e)m 3(xtracted)k 930(from)s 1454(the)s 1802(tree)s
+2215(structure)s 3106(when)s 3682(required.)s 480 6108(F)m 3(or)k
+869(e)s 3(xample,)k 1783(consider)s 2653(the)s 3001(object)s
+220 fnt5 480 5607(5i @Wide { a / b })m 240 fnt1 0 5113(and)m 406(suppose)s
+1236(that)s 1656(the)s 2006(width)s 2610(of)s 220 fnt5
+2883 5110(a)m 240 fnt1 3062 5113(is)m 240 fnt4 3274 5107(1)m
+240 fnt3 3382 5115(i)m 240 fnt4 3459 5107(,)m 3572(2)s
+240 fnt3 3700 5115(i)m 240 fnt1 3825 5113(\()m 240 fnt4
+3898 5107(1)m 240 fnt3 4006 5115(i)m 240 fnt1 4131 5113(to)m
+4372(the)s 4722(left)s 5101(of)s 5374(the)s 5724(mark,)s
+240 fnt4 6324 5107(2)m 240 fnt3 6452 5115(i)m 240 fnt1
+6577 5113(to)m 6818(the)s 7168(right\).)s 7864(What)s 8444(then)s
+8916(is)s 0 4825(the)m 348(a)s 4(v)k 6(ailable)k
+1256(width)s 1858(at)s 220 fnt5 2090 4822(b)m 240 fnt1
+2204 4825(?)m 2423(If)s 2653(we)s 2988(let)s 3286(the)s
+3634(width)s 4236(of)s 220 fnt5 4507 4822(b)m 240 fnt1
+4681 4825(be)m 240 fnt3 4963 4827(l)m 240 fnt4 5041 4819(,)m
+240 fnt3 5148 4827(r)m 240 fnt1 5246 4825(,)m 5353(we)s
+5688(must)s 6213(ha)s 4(v)k 3(e)k 240 fnt4
+480 4277(\()m 564(1)s 240 fnt3 670 4285(i)m 240 fnt4
+817 4277(\255)m 240 fnt3 1038 4285(l)m 240 fnt4 1116 4277(\))m
+1254(+)s 1455(\()s 1539(2)s 240 fnt3 1665 4285(i)m
+240 fnt4 1812 4277(\255)m 240 fnt3 2033 4285(r)m 240 fnt4
+2143 4277(\))m 2293(\243)s 2503(5)s 240 fnt3 2622 4285(i)m
+240 fnt1 0 3732(with)m 482(the)s 240 fnt4 842 3726(\255)m
+240 fnt1 1051 3732(\(i.e.)m 1466(max\))s 2006(operations)s 3053(arising)s
+3756(from)s 4280(mark)s 4832(alignment.)s 5952(Eliminating)s 7133(them)s
+7671(gi)s 6(v)k 3(es)k 240 fnt4 480 3180(1)m
+240 fnt3 586 3188(i)m 240 fnt4 721 3180(+)m 922(2)s
+240 fnt3 1048 3188(i)m 240 fnt4 1207 3180(\243)m 1417(5)s
+240 fnt3 1536 3188(i)m 583 2893(l)m 240 fnt4 721 2885(+)m
+922(2)s 240 fnt3 1048 2893(i)m 240 fnt4 1207 2885(\243)m
+1417(5)s 240 fnt3 1536 2893(i)m 240 fnt4 571 2597(1)m
+240 fnt3 677 2605(i)m 240 fnt4 812 2597(+)m 240 fnt3
+1013 2605(r)m 240 fnt4 1207 2597(\243)m 1417(5)s 240 fnt3
+1536 2605(i)m 674 2310(l)m 240 fnt4 812 2302(+)m 240 fnt3
+1013 2310(r)m 240 fnt4 1207 2302(\243)m 1417(5)s 240 fnt3
+1536 2310(i)m 240 fnt1 0 1799(and)m 428(since)s 1000(we)s
+1359(assume)s 2144(that)s 220 fnt5 2587 1796(a)m 240 fnt1
+2788 1799(\207ts)m 3156(into)s 3606(the)s 3978(a)s 4(v)k 6(ailable)k
+4911(space,)s 5573(the)s 5946(\207rst)s 6402(inequality)s 7436(may)s
+7927(be)s 8234(dropped,)s 0 1511(lea)m 4(ving)k
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 30 31
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Symbol
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt3 vec2 /Times-Italic LoutRecode
+/fnt3 { /Times-Italicfnt3 LoutFont } def
+%%IncludeResource: font Symbol
+/fnt4 { /Symbol LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt5 vec2 /Helvetica LoutRecode
+/fnt5 { /Helveticafnt5 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5704 -1579(-)m 5832(30)s 6127(-)s 9066 13416 0 12991 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+240 fnt3 851 13205(l)m
+240 fnt4 1013 13197(\243)m 1223(3)s 240 fnt3 1340 13205(i)m
+480 12910(l)m 240 fnt4 618 12902(+)m 240 fnt3 819 12910(r)m
+240 fnt4 1013 12902(\243)m 1223(5)s 240 fnt3 1342 12910(i)m
+819 12622(r)m 240 fnt4 1013 12614(\243)m 1223(4)s 240 fnt3
+1348 12622(i)m 240 fnt1 0 12113(Object)m 220 fnt5 697 12110(b)m
+240 fnt1 871 12113(may)m 1337(ha)s 4(v)k 3(e)k
+1838(width)s 240 fnt3 2440 12115(l)m 240 fnt4 2518 12107(,)m
+240 fnt3 2625 12115(r)m 240 fnt1 2783 12113(for)m 3121(an)s 3(y)k
+240 fnt3 3518 12115(l)m 240 fnt1 3644 12113(and)m 240 fnt3
+4048 12115(r)m 240 fnt1 4206 12113(satisfying)m 5188(these)s 5735(inequalities,)s
+6943(and)s 7347(no)s 7640(others.)s 480 11739(Here)m 1000(is)s
+1210(another)s 1987(e)s 3(xample:)k 220 fnt5 480 11238(5i @High { a /2ix b })m
+240 fnt1 0 10737(Assuming)m 1024(that)s 220 fnt5 1442 10734(a)m
+240 fnt1 1619 10737(has)m 1989(height)s 240 fnt4 2647 10731(1)m
+240 fnt3 2753 10739(i)m 240 fnt4 2828 10731(,)m 2935(1)s
+240 fnt3 3041 10739(i)m 240 fnt1 3104 10737(,)m 3211(the)s
+3559(height)s 240 fnt3 4217 10739(l)m 240 fnt4 4295 10731(,)m
+240 fnt3 4402 10739(r)m 240 fnt1 4560 10737(of)m 220 fnt5
+4831 10734(b)m 240 fnt1 5005 10737(must)m 5530(satisfy)s 240 fnt4
+480 10179(1)m 240 fnt3 586 10187(i)m 240 fnt4 721 10179(+)m
+922(\()s 1006(\()s 1090(1)s 240 fnt3 1196 10187(i)m
+240 fnt4 1331 10179(+)m 240 fnt3 1532 10187(l)m 240 fnt4
+1610 10179(\))m 1760(\255)s 1981(2)s 240 fnt3 2107 10187(i)m
+240 fnt4 2182 10179(\))m 2320(+)s 240 fnt3 2521 10187(r)m
+240 fnt4 2703 10179(\243)m 2913(5)s 240 fnt3 3032 10187(i)m
+240 fnt1 0 9634(This)m 478(time)s 960(the)s 240 fnt4
+1325 9628(\255)m 240 fnt1 1539 9634(operation)m 2501(arises)s 3098(from)s
+3624(the)s 3975(mark-to-mark)s 5364(g)s 1(ap)k 5765(mode,)s
+6406(which)s 7050(will)s 7479(widen)s 8123(the)s 240 fnt4
+8474 9628(2)m 240 fnt3 8602 9636(i)m 240 fnt1 8728 9634(g)m 1(ap)k
+0 9346(if)m 217(necessary)s 1200(to)s 1439(pre)s 6(v)k 3(ent)k
+220 fnt5 2207 9343(a)m 240 fnt1 2384 9346(and)m 220 fnt5
+2788 9343(b)m 240 fnt1 2962 9346(from)m 3486(o)s 3(v)k 3(erlapping.)k
+4787(This)s 5263(inequality)s 6273(can)s 6662(be)s 6944(re)s 6(written)k
+7856(as)s 240 fnt3 851 8795(l)m 240 fnt4 1013 8787(\243)m
+288 fnt4 1223 8775(\245)m 240 fnt3 480 8504(l)m 240 fnt4
+618 8496(+)m 240 fnt3 819 8504(r)m 240 fnt4 1013 8496(\243)m
+1223(3)s 240 fnt3 1340 8504(i)m 819 8216(r)m 240 fnt4
+1013 8208(\243)m 1223(2)s 240 fnt3 1349 8216(i)m 240 fnt1
+0 7709(In)m 263(general,)s 1080(Lout)s 1599(is)s 1816(designed)s
+2732(so)s 3005(that)s 3430(the)s 3785(a)s 4(v)k 6(ailable)k
+4700(width)s 5309(or)s 5575(height)s 6240(at)s 6479(an)s 3(y)k
+6883(point)s 7442(can)s 7838(be)s 8128(e)s 3(xpressed)k
+0 7421(by)m 294(three)s 827(inequalities)s 1979(of)s 2250(the)s
+2598(form)s 240 fnt3 851 6870(l)m 240 fnt4 1013 6862(\243)m
+240 fnt3 1223 6870(x)m 480 6579(l)m 240 fnt4 618 6571(+)m
+240 fnt3 819 6579(r)m 240 fnt4 1013 6571(\243)m 240 fnt3
+1223 6579(y)m 819 6264(r)m 240 fnt4 1013 6256(\243)m 240 fnt3
+1223 6264(z)m 240 fnt1 0 5743(where)m 240 fnt3 641 5745(x)m
+240 fnt1 747 5743(,)m 240 fnt3 855 5745(y)m 240 fnt1
+1018 5743(and)m 240 fnt3 1423 5745(z)m 240 fnt1 1575 5743(may)m
+2042(be)s 288 fnt4 2325 5725(\245)m 240 fnt1 2523 5743(.)m
+2688(W)s 19(e)k 3058(abbre)s 6(viate)k 4104(these)s
+4652(three)s 5186(inequalities)s 6339(to)s 240 fnt3 6579 5745(l)m
+240 fnt4 6658 5737(,)m 240 fnt3 6768 5745(r)m 240 fnt4
+6953 5737(\243)m 240 fnt3 7166 5745(x)m 240 fnt4 7285 5737(,)m
+240 fnt3 7395 5745(y)m 240 fnt4 7510 5737(,)m 240 fnt3
+7620 5745(z)m 240 fnt1 7711 5743(,)m 7819(and)s 8224(we)s
+8560(call)s 240 fnt3 8960 5745(x)m 240 fnt4 0 5449(,)m
+240 fnt3 107 5457(y)m 240 fnt4 221 5449(,)m 240 fnt3
+328 5457(z)m 240 fnt1 479 5455(a)m 240 fnt3 645 5457(size)m
+1056(constr)s 3(aint)k 240 fnt1 2027 5455(.)m 480 5081(The)m
+920(tw)s 2(o)k 1343(e)s 3(xamples)k 2307(abo)s 3(v)k 3(e)k
+2942(sho)s 6(wed)k 3739(ho)s 6(w)k 4213(to)s
+4465(propag)s 1(ate)k 5475(the)s 5836(size)s 6276(constraint)s
+288 fnt4 7291 5063(\245)m 240 fnt4 7514 5075(,)m 7659(5)s
+240 fnt3 7791 5083(i)m 240 fnt4 7879 5075(,)m 288 fnt4
+8025 5063(\245)m 240 fnt1 8296 5081(for)m 220 fnt5 8647 5078(a / b)m
+240 fnt1 0 4793(do)m 6(wn)k 586(one)s 991(le)s 6(v)k 3(el)k
+1504(to)s 1746(the)s 2097(child)s 220 fnt5 2636 4790(b)m
+240 fnt1 2750 4793(.)m 2917(Basser)s 3617(Lout)s 4132(contains)s
+4982(a)s 5151(complete)s 6086(set)s 6414(of)s 6688(general)s
+7449(rules)s 7967(for)s 8308(all)s 8604(node)s 0 4505(types,)m
+627(too)s 1002(complicated)s 2244(to)s 2499(gi)s 6(v)k 3(e)k
+2974(here.)s 3565(Instead,)s 4378(we)s 4729(gi)s 6(v)k 3(e)k
+5203(just)s 5624(one)s 6042(e)s 3(xample)k 6921(of)s
+7208(ho)s 6(w)k 7685(these)s 8248(rules)s 8779(are)s
+0 4217(deri)m 6(v)k 3(ed,)k 815(using)s 1387(the)s
+1735(object)s 240 fnt3 480 3721(x)m 168 fnt4 586 3628(1)m
+220 fnt5 772 3716(/)m 240 fnt3 956 3721(x)m 168 fnt4
+1062 3628(2)m 220 fnt5 1262 3716(/)m 240 fnt3 1446 3721(.)m
+1552(.)s 1658(.)s 220 fnt5 1812 3716(/)m 240 fnt3
+1996 3721(x)m 168 fnt3 2102 3634(n)m 240 fnt1 0 3175(where)m
+240 fnt3 640 3177(x)m 168 fnt3 746 3090(j)m 240 fnt1
+852 3175(has)m 1222(width)s 240 fnt3 1824 3177(l)m 168 fnt3
+1890 3090(j)m 240 fnt4 1948 3169(,)m 240 fnt3 2055 3177(r)m
+168 fnt3 2127 3090(j)m 240 fnt1 2233 3175(for)m 2571(all)s
+240 fnt3 2864 3177(j)m 240 fnt1 2930 3175(.)m 480 2801(Suppose)m
+1345(the)s 1689(whole)s 2326(object)s 2966(has)s 3333(width)s
+3931(constraint)s 240 fnt3 4929 2803(X)m 240 fnt4 5097 2795(,)m
+240 fnt3 5204 2803(Y)m 240 fnt4 5367 2795(,)m 240 fnt3
+5474 2803(Z)m 240 fnt1 5619 2801(,)m 5722(and)s 6123(we)s
+6454(require)s 7182(the)s 7526(width)s 8124(constraint)s 0 2513(of)m
+240 fnt3 271 2515(x)m 168 fnt3 377 2428(i)m 240 fnt1
+421 2513(.)m 586(Let)s 240 fnt3 965 2515(L)m 240 fnt4
+1185 2507(=)m 240 fnt1 1401 2513(max)m 168 fnt3 1808 2428(j)m
+240 fnt3 1917 2515(l)m 168 fnt3 1983 2428(j)m 240 fnt1
+2090 2513(and)m 240 fnt3 2495 2515(R)m 240 fnt4 2723 2507(=)m
+240 fnt1 2939 2513(max)m 168 fnt3 3346 2428(j)m 240 fnt3
+3455 2515(r)m 168 fnt3 3527 2428(j)m 240 fnt1 3573 2513(,)m
+3681(so)s 3948(that)s 240 fnt3 4367 2515(L)m 240 fnt4
+4512 2507(,)m 240 fnt3 4619 2515(R)m 240 fnt1 4821 2513(is)m
+5032(the)s 5381(width)s 5984(of)s 6256(the)s 6605(whole)s
+7247(object.)s 7996(W)s 19(e)k 8366(assume)s 240 fnt3
+0 2202(L)m 240 fnt4 145 2194(,)m 240 fnt3 252 2202(R)m
+240 fnt4 477 2194(\243)m 240 fnt3 687 2202(X)m 240 fnt4
+855 2194(,)m 240 fnt3 962 2202(Y)m 240 fnt4 1125 2194(,)m
+240 fnt3 1232 2202(Z)m 240 fnt1 1377 2200(.)m 1541(Then)s
+240 fnt3 2090 2202(x)m 168 fnt3 2196 2115(i)m 240 fnt1
+2300 2200(can)m 2689(be)s 2971(enlar)s 4(ged)k 3848(to)s
+4087(an)s 3(y)k 4484(size)s 240 fnt3 4911 2202(l)m
+168 fnt3 4977 2115(i)m 240 fnt4 5081 2194(,)m 240 fnt3
+5188 2202(r)m 168 fnt3 5260 2115(i)m 240 fnt1 5364 2200(satisfying)m
+240 fnt4 480 1607(\()m 240 fnt3 564 1615(l)m 168 fnt3
+630 1528(i)m 240 fnt4 758 1607(\255)m 240 fnt3 979 1615(L)m
+240 fnt4 1124 1607(\))m 1202(,)s 1309(\()s 240 fnt3
+1393 1615(r)m 168 fnt3 1465 1528(i)m 240 fnt4 1593 1607(\255)m
+240 fnt3 1814 1615(R)m 240 fnt4 1967 1607(\))m 2117(\243)s
+240 fnt3 2327 1615(X)m 240 fnt4 2495 1607(,)m 240 fnt3
+2602 1615(Y)m 240 fnt4 2765 1607(,)m 240 fnt3 2872 1615(Z)m
+
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 31 32
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Symbol
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt3 vec2 /Times-Italic LoutRecode
+/fnt3 { /Times-Italicfnt3 LoutFont } def
+%%IncludeResource: font Symbol
+/fnt4 { /Symbol LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt2 vec2 /Times-Bold LoutRecode
+/fnt2 { /Times-Boldfnt2 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt5 vec2 /Helvetica LoutRecode
+/fnt5 { /Helveticafnt5 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5714 -1579(-)m 5842(31)s 6117(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+0 13253(which)m 642(e)s 3(xpands)k
+1475(to)s 1714(eight)s 2252(inequalities:)s 240 fnt3 917 12702(l)m
+168 fnt3 983 12615(i)m 240 fnt4 1123 12694(\243)m 240 fnt3
+1333 12702(X)m 894 12338(L)m 240 fnt4 1123 12330(\243)m 240 fnt3
+1333 12338(X)m 528 12047(l)m 168 fnt3 594 11960(i)m 240 fnt4
+710 12039(+)m 240 fnt3 911 12047(r)m 168 fnt3 983 11960(i)m
+240 fnt4 1123 12039(\243)m 240 fnt3 1333 12047(Y)m 503 11675(l)m
+168 fnt3 569 11588(i)m 240 fnt4 685 11667(+)m 240 fnt3
+886 11675(R)m 240 fnt4 1123 11667(\243)m 240 fnt3 1333 11675(Y)m
+505 11311(L)m 240 fnt4 710 11303(+)m 240 fnt3 911 11311(r)m
+168 fnt3 983 11224(i)m 240 fnt4 1123 11303(\243)m 240 fnt3
+1333 11311(Y)m 480 10947(L)m 240 fnt4 685 10939(+)m 240 fnt3
+886 10947(R)m 240 fnt4 1123 10939(\243)m 240 fnt3 1333 10947(Y)m
+911 10664(r)m 168 fnt3 983 10577(i)m 240 fnt4 1123 10656(\243)m
+240 fnt3 1333 10664(Z)m 886 10300(R)m 240 fnt4 1123 10292(\243)m
+240 fnt3 1333 10300(Z)m 240 fnt1 0 9793(Three)m 613(are)s
+960(already)s 1717(kno)s 6(wn,)k 2471(and)s 2875(slightly)s
+3646(rearranging)s 4800(the)s 5148(others)s 5783(gi)s 6(v)k 3(es)k
+240 fnt3 869 9242(l)m 168 fnt3 935 9155(i)m 240 fnt4
+1075 9234(\243)m 240 fnt3 1285 9242(X)m 869 8870(l)m 168 fnt3
+935 8783(i)m 240 fnt4 1075 8862(\243)m 240 fnt3 1285 8870(Y)m
+240 fnt4 1508 8862(-)m 240 fnt3 1708 8870(R)m 480 8498(l)m
+168 fnt3 546 8411(i)m 240 fnt4 662 8490(+)m 240 fnt3
+863 8498(r)m 168 fnt3 935 8411(i)m 240 fnt4 1075 8490(\243)m
+240 fnt3 1285 8498(Y)m 863 8134(r)m 168 fnt3 935 8047(i)m
+240 fnt4 1075 8126(\243)m 240 fnt3 1285 8134(Z)m 863 7770(r)m
+168 fnt3 935 7683(i)m 240 fnt4 1075 7762(\243)m 240 fnt3
+1285 7770(Y)m 240 fnt4 1508 7762(-)m 240 fnt3 1708 7770(L)m
+240 fnt1 0 7182(Therefore)m 997(the)s 1345(width)s 1947(constraint)s
+2949(of)s 240 fnt3 3220 7184(x)m 168 fnt3 3326 7097(i)m
+240 fnt1 3430 7182(is)m 480 6644(min)m 240 fnt4 861 6638(\()m
+240 fnt3 945 6646(X)m 240 fnt4 1113 6638(,)m 240 fnt3
+1220 6646(Y)m 240 fnt4 1443 6638(-)m 240 fnt3 1643 6646(R)m
+240 fnt4 1796 6638(\))m 1874(,)s 240 fnt3 1981 6646(Y)m
+240 fnt4 2144 6638(,)m 240 fnt1 2251 6644(min)m 240 fnt4
+2632 6638(\()m 240 fnt3 2716 6646(Z)m 240 fnt4 2873 6638(,)m
+240 fnt3 2980 6646(Y)m 240 fnt4 3203 6638(-)m 240 fnt3
+3403 6646(L)m 240 fnt4 3548 6638(\))m 240 fnt1 0 6142(The)m
+445(size)s 890(constraint)s 1909(of)s 2198(an)s 3(y)k
+2613(node)s 3152(can)s 3559(be)s 3858(found)s 4493(by)s
+4805(climbing)s 5725(the)s 6091(tree)s 6521(to)s 6778(a)s
+240 fnt3 6962 6144(WIDE)m 240 fnt1 7641 6142(or)m 240 fnt3
+7918 6144(HIGH)m 240 fnt1 8604 6142(node)m 0 5854(where)m 636(the)s
+980(constraint)s 1978(is)s 2184(tri)s 6(vial,)k 2850(then)s
+3315(propag)s 1(ating)k 4506(it)s 4694(back)s 5203(do)s 6(wn)k
+5783(to)s 6018(the)s 6362(node,)s 6931(and)s 7331(this)s
+7723(is)s 7929(the)s 8272(function)s 0 5566(of)m 271(procedure)s
+240 fnt3 1283 5568(Constr)m 3(ained)k 240 fnt1 2530 5566(in)m
+2773(Basser)s 3470(Lout.)s 480 5192(After)m 1043(some)s 1604(components)s
+2813(ha)s 4(v)k 3(e)k 3314(been)s 3824(promoted)s
+4799(into)s 5225(a)s 5391(tar)s 4(get,)k 6038(the)s
+6386(sizes)s 6902(stored)s 7544(in)s 7788(its)s 8064(parent)s
+8722(and)s 0 4904(higher)m 665(ancestors)s 1598(must)s 2117(be)s
+2392(adjusted)s 3241(to)s 3473(re\210ect)s 4122(the)s 4464(increased)s
+5417(size.)s 5946(This)s 6415(is)s 6618(done)s 7134(by)s
+7421(yet)s 7767(another)s 8537(set)s 8855(of)s 0 4616(recursi)m 6(v)k 3(e)k
+925(rules,)s 1500(upw)s 2(ard-mo)k 3(ving)k 3081(this)s
+3481(time,)s 4016(which)s 4662(cease)s 5239(as)s 5492(soon)s
+6006(as)s 6260(some)s 6825(ancestor')s 13(s)k 7835(size)s
+8266(does)s 8760(not)s 0 4328(change.)m 830(These)s 1445(rules)s
+1948(are)s 2283(embodied)s 3273(in)s 3504(procedure)s 240 fnt3
+4504 4330(AdjustSize)m 240 fnt1 5541 4328(of)m 5800(Basser)s 6485(Lout.)s
+7089(The)s 7505(adjustment)s 8601(must)s 0 4040(be)m 282(done)s
+804(before)s 1470(relinquishing)s 2785(control)s 3517(to)s 3756(an)s 3(y)k
+4153(other)s 4704(g)s 1(alle)k 3(y)k 15(,)k
+5376(b)s 4(ut)k 5738(not)s 6104(after)s 6600(e)s 6(v)k 3(ery)k
+7176(component.)s 240 fnt2 0 3391(5.4.)m 471(The)s 926(limited)s
+1696(lookahead)s 2802(pr)s 4(oblem)k
+[ /Dest /LOUTlookahead /DEST pdfmark
+240 fnt1 480 2914(Basser)m
+1189(Lout)s 1714(assumes)s 2575(that)s 3006(there)s 3552(will)s
+3991(be)s 4286(enough)s 5062(internal)s 5859(memory)s 6723(to)s
+6975(hold)s 7472(the)s 7833(symbol)s 8606(table)s 0 2626(plus)m
+461(a)s 638(fe)s 6(w)k 1055(pages,)s 1719(b)s 4(ut)k
+2092(not)s 2469(an)s 2764(entire)s 3374(document.)s 4493(This)s
+4980(section)s 5726(describes)s 6677(the)s 7036(consequent)s 8185(problems)s
+0 2338(and)m 441(ho)s 6(w)k 940(the)s 3(y)k
+1441(were)s 1999(solv)s 3(ed.)k 2763(Other)s 3405(interpreters,)s
+4636(notably)s 5446(interacti)s 6(v)k 3(e)k 6538(editors)s
+7277(running)s 8113(on)s 8448(virtual)s 0 2050(memory)m 851(systems,)s
+1715(w)s 2(ould)k 2370(not)s 2736(necessarily)s 3851(need)s
+4361(this)s 4757(assumption.)s 480 1676(Although)m 1434(Basser)s 2122(Lout)s
+2625(can)s 3005(read)s 3466(and)s 3861(format)s 4548(an)s 3(y)k
+4936(le)s 3(g)k 1(al)k 5442(input,)s 6033(its)s
+6300(memory)s 7142(consumption)s 8427(will)s 8844(be)s 0 1388(optimized)m
+1004(when)s 1570(the)s 1908(b)s 4(ulk)k 2381(of)s
+2642(the)s 2980(document)s 3974(resides)s 4677(in)s 4910(g)s 1(alle)k 3(ys)k
+5624(whose)s 6282(tar)s 4(gets)k 6955(can)s 7334(be)s
+7606(identi\207ed)s 8557(at)s 8778(the)s 0 1100(moment)m 843(the)s 3(y)k
+1304(are)s 1650(encountered.)s 2981(Let)s 3358(us)s 3620(tak)s 2(e)k
+4071(the)s 4417(typical)s 5121(e)s 3(xample)k 5982(of)s
+6252(a)s 6416(root)s 6860(g)s 1(alle)k 3(y)k
+7492(which)s 8133(is)s 8341(a)s 8506(list)s 8855(of)s
+0 812(pages,)m 652(a)s 220 fnt5 818 809(@BodyT)m 26(e)k 6(xt)k
+240 fnt1 1991 812(g)m 1(alle)k 3(y)k 2625(tar)s 4(geted)k
+3448(into)s 3872(the)s 4220(pages,)s 220 fnt5 4872 809(@Chapter)m
+240 fnt1 5934 812(g)m 1(alle)k 3(ys)k 6658(tar)s 4(geted)k
+7481(into)s 220 fnt5 7905 809(@BodyT)m 26(e)k 6(xt)k
+240 fnt1 9019 812(,)m 0 524(and)m 220 fnt5 404 521(@Section)m
+240 fnt1 1404 524(g)m 1(alle)k 3(ys)k 2128(tar)s 4(geted)k
+2951(into)s 3376(the)s 220 fnt5 3724 521(@Chapter)m 240 fnt1
+4787 524(g)m 1(alle)k 3(ys:)k
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 32 33
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Helvetica
+%%+ font Times-Italic
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt5 vec2 /Helvetica LoutRecode
+/fnt5 { /Helveticafnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt3 vec2 /Times-Italic LoutRecode
+/fnt3 { /Times-Italicfnt3 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5705 -1579(-)m 5833(32)s 6127(-)s 9066 13416 0 13312 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+220 fnt5 480 13255(@P)m 8(ageList)k
+480 12967(//)m 480 12679(@BodyT)m 26(e)k 6(xt)k 480 12391(//)m
+480 12103(@Chapter {)m 480 11815( @Section { ...)m 13( })k 480 11527( @Section { ...)m 13( })k
+480 11239( ...)m 480 10951( @Section { ...)m 13( })k 480 10663(})m 480 10375(@Chapter {)m
+480 10087( ...)m 480 9799(})m 240 fnt1 0 9305(Basser)m 702(Lout)s
+1220(is)s 1436(able)s 1896(to)s 2141(read)s 2616(and)s
+3026(process)s 3800(such)s 4302(g)s 1(alle)k 3(ys)k
+5032(one)s 5440(paragraph)s 6459(at)s 6697(a)s 6869(time)s
+7355(\(strictly)s 15(,)k 8194(from)s 8724(one)s 220 fnt5
+0 9014(//)m 240 fnt1 185 9017(at)m 417(the)s 765(outer)s
+1316(le)s 6(v)k 3(el)k 1826(of)s 2097(a)s
+2263(g)s 1(alle)k 3(y)k 2897(to)s 3136(the)s
+3484(ne)s 3(xt\),)k 4079(as)s 4329(we)s 4664(no)s 6(w)k
+5125(describe.)s 480 8643(When)m 1147(the)s 1534(parser)s 2215(encounters)s
+3341(the)s 3727(be)s 3(ginning)k 4774(of)s 5083(a)s
+5288(g)s 1(alle)k 3(y)k 15(,)k 5998(lik)s 2(e)k
+220 fnt5 6449 8640(@Chapter)m 240 fnt1 7550 8643(or)m 220 fnt5
+7848 8640(@Section)m 240 fnt1 8788 8643(,)m 8934(it)s 0 8355(initiates)m
+831(a)s 1023(ne)s 6(w)k 1495(g)s 1(alle)k 3(y)k
+2155(process.)s 3061(The)s 3515(special)s 4258(recepti)s 6(v)k 3(e)k
+5206(symbol)s 220 fnt5 5991 8352(@Input)m 240 fnt1 6784 8355(is)m
+7019(substituted)s 8139(for)s 8502(the)s 8876(as)s 0 8067(yet)m
+357(unread)s 1071(right)s 1588(parameter)s 2607(of)s 2884(the)s
+3237(g)s 1(alle)k 3(y)k 15(.)k 3972(As)s
+4294(each)s 4795(paragraph)s 5813(of)s 6090(the)s 6443(right)s
+6960(parameter)s 7979(is)s 8195(read,)s 8718(it)s 8916(is)s
+0 7779(deleted)m 763(from)s 1302(the)s 1665(parse)s 2240(tree)s
+2668(and)s 3087(injected)s 3916(into)s 4356(the)s 4719(g)s 1(alle)k 3(y')k 13(s)k
+220 fnt5 5524 7776(@Input)m 240 fnt1 6231 7779(.)m 6410(The)s
+6853(g)s 1(alle)k 3(y)k 7502(is)s 7727(then)s
+8212(resumed.)s 0 7491(The)m 429(parser)s 1074(thus)s 1526(acts)s
+1950(as)s 2202(an)s 2487(e)s 3(xtra)k 3022(concurrent)s
+4106(process;)s 4937(it)s 5131(has)s 5503(lo)s 6(w)k
+5912(priority)s 15(,)k 6721(so)s 6989(that)s 7409(input)s
+7963(is)s 8175(read)s 8646(only)s 0 7203(when)m 597(there)s
+1151(is)s 1382(nothing)s 2188(else)s 2636(to)s 2897(do.)s
+3322(Since)s 3930(g)s 1(alle)k 3(ys)k 4675(may)s
+5162(be)s 5465(nested,)s 6205(a)s 6392(stack)s 6965(of)s
+220 fnt5 7257 7200(@Input)m 240 fnt1 8045 7203(symbols)m 8916(is)s
+0 6915(needed,)m 781(each)s 1271(with)s 1749(its)s 2020(o)s 6(wn)k
+2480(en)s 9(vironment)k 3735(and)s 4135(style.)s 4745(If)s
+4971(a)s 5132(g)s 1(alle)k 3(y)k 5762(is)s
+5967(encountered)s 7190(for)s 7523(which)s 8161(a)s 8322(tar)s 4(get)k
+8916(is)s 0 6627(not)m 370(immediately)s 1622(identi\207able)s 2757(\(a)s
+3006(footnote,)s 3914(for)s 4257(e)s 3(xample\),)k 5254(it)s
+5450(is)s 5664(read)s 6137(in)s 6385(its)s 6665(entirety)s
+7452(and)s 7860(hung)s 8397(in)s 8645(pure)s 0 6339(parse)m
+551(tree)s 954(form)s 1468(from)s 1983(an)s 240 fnt3
+2256 6341(UN)m 6(A)k 8(TT)k 12(A)k 7(CHED)k
+240 fnt1 3811 6339(inde)m 3(x)k 4386(in)s 4619(the)s
+4957(usual)s 5508(w)s 2(ay)k 15(,)k 5987(with)s
+6459(an)s 6733(en)s 9(vironment)k 7983(b)s 4(ut)k
+8335(without)s 0 6051(a)m 166(style.)s 781(It)s 986(will)s
+1412(be)s 1694(\210ushed)s 2444(later)s 2927(when)s 3503(its)s
+3779(component)s 4903(is)s 5113(promoted.)s 480 5677(In)m 735(addition)s
+1575(to)s 1813(producing)s 2836(a)s 3001(steady)s 3665(\210o)s 6(w)k
+4138(of)s 4407(components)s 5614(from)s 6137(input,)s 6735(we)s
+7069(must)s 7593(also)s 8030(ensure)s 8708(that)s 0 5389(recepti)m 6(v)k 3(e)k
+928(symbols)s 1783(do)s 2083(not)s 2455(unduly)s 3182(block)s
+3781(their)s 4285(promotion.)s 5452(The)s 220 fnt5 5886 5386(@F)m 6(ootSect)k
+240 fnt1 7044 5389(symbol)m 7810(at)s 8049(the)s 8403(foot)s
+8855(of)s 0 5101(each)m 495(page)s 1003(is)s 1213(a)s
+1379(typical)s 2084(e)s 3(xample:)k 3057(until)s 3550(it)s
+3742(is)s 3952(deleted)s 4700(the)s 5048(page)s 5556(cannot)s
+6254(be)s 6536(printed.)s 480 4727(Recepti)m 6(v)k 3(e)k
+1501(symbols)s 2368(are)s 2733(e)s 3(xpanded)k 3724(only)s
+4222(on)s 4537(demand,)s 5421(so)s 220 fnt5 5705 4724(@F)m 6(ootSect)k
+240 fnt1 6874 4727(can)m 7281(be)s 7581(deleted)s 8347(as)s
+8616(soon)s 0 4439(as)m 250(we)s 585(can)s 974(pro)s 3(v)k 3(e)k
+1570(that)s 1988(it)s 2180(is)s 2390(not)s 2757(w)s 2(anted.)k
+3610(The)s 4038(symbol)s 4799(table)s 5319(can)s 5708(tell)s
+6067(us)s 6332(that)s 6750(only)s 220 fnt5 7230 4436(@F)m 6(ootNote)k
+240 fnt1 8402 4439(g)m 1(alle)k 3(ys)k 0 4151(\(with)m
+220 fnt5 555 4148(@F)m 6(ootPlace&&f)k 6(ollo)k 3(wing)k
+240 fnt1 2935 4151(tar)m 4(gets\))k 3688(w)s 2(ant)k
+4205(it,)s 4438(so)s 4697(it)s 4883(might)s 5494(be)s
+5770(possible)s 6604(to)s 6836(deduce)s 7564(that)s 220 fnt5
+7975 4148(@F)m 6(ootSect)k 240 fnt1 0 3863(may)m 466(be)s
+748(deleted)s 1496(as)s 1746(soon)s 2256(as)s 2506(body)s
+3040(te)s 3(xt)k 3455(enters)s 4076(the)s 4424(follo)s 6(wing)k
+5401(page.)s 480 3489(The)m 904(author)s 1571(w)s 2(as)k
+1987(unable)s 2677(to)s 2912(mak)s 2(e)k 3479(this)s
+3871(w)s 2(ork,)k 4463(so)s 4725(Basser)s 5418(Lout)s
+5925(requires)s 6741(the)s 7085(user)s 7538(to)s 7773(identify)s
+8565(those)s 0 3201(g)m 1(alle)k 3(ys)k 715(which)s
+1348(will)s 1764(carry)s 2299(the)s 2637(b)s 4(ulk)k
+3111(of)s 3372(the)s 3711(document)s 4705(\()s 220 fnt5
+4778 3198(@Chapter)m 240 fnt1 5781 3201(,)m 220 fnt5 5879 3198(@Section)m
+240 fnt1 6819 3201(,)m 220 fnt5 6916 3198(@BodyT)m 26(e)k 6(xt)k
+240 fnt1 8030 3201(\))m 8149(as)s 240 fnt3 8389 3203(for)m 8(cing)k
+0 2915(galle)m 7(ys)k 240 fnt1 665 2913(,)m 792(by)s
+1107(writing)s 220 fnt5 1871 2910(f)m 6(orce into)k 240 fnt1
+2841 2913(instead)m 3596(of)s 220 fnt5 3888 2910(into)m 240 fnt1
+4315 2913(in)m 4579(their)s 5097(de\207nitions.)s 6291(As)s 6629(described)s
+7624(in)s 7888(the)s 8257(pre)s 6(vious)k 0 2625(section,)m
+790(when)s 1373(a)s 1546(forcing)s 2296(g)s 1(alle)k 3(y)k
+2937(attaches)s 3763(to)s 4009(a)s 4182(tar)s 4(get,)k
+4835(all)s 5135(recepti)s 6(v)k 3(e)k 6063(symbols)s
+6919(preceding)s 7922(the)s 8277(tar)s 4(get)k 8883(in)s
+0 2337(its)m 278(g)s 1(alle)k 3(y)k 914(are)s
+1263(deleted,)s 2062(remo)s 3(ving)k 3031(all)s 3326(impediments)s
+4614(to)s 4855(\210ushing.)s 5793(F)s 3(or)k 6184(e)s 3(xample,)k
+7100(when)s 7678(a)s 7846(forcing)s 8592(body)s 0 2049(te)m 3(xt)k
+421(g)s 1(alle)k 3(y)k 1062(enters)s 1690(a)s
+1863(ne)s 6(w)k 2317(page,)s 2882(the)s 220 fnt5
+3237 2046(@F)m 6(ootSect)k 240 fnt1 4395 2049(symbol)m 5162(on)s
+5466(the)s 5820(preceding)s 6823(page)s 7338(will)s 7771(be)s
+8060(deleted.)s 8921(It)s 0 1761(seems)m 629(lik)s 2(ely)k
+1219(that)s 1631(a)s 1791(system)s 2509(which)s 3145(could)s
+3729(af)s 6(ford)k 4358(to)s 4591(w)s 2(ait)k
+5054(until)s 5541(all)s 5828(input)s 6374(w)s 2(as)k
+6789(read)s 7252(before)s 7912(deleting)s 8729(an)s 3(y)k
+0 1473(recepti)m 6(v)k 3(e)k 922(symbols)s 1771(w)s 2(ould)k
+2426(not)s 2792(need)s 3302(forcing)s 4045(g)s 1(alle)k 3(ys.)k
+480 1099(Galle)m 3(ys)k 1258(whose)s 1925(tar)s 4(gets)k
+2607(are)s 2953(a)s 3118(long)s 3597(w)s 2(ay)k
+4047(from)s 4570(their)s 5066(in)s 9(v)k 4(ocation)k
+6119(points)s 6755(can)s 7143(be)s 7424(a)s 7589(problem.)s
+8549(If)s 8778(the)s 0 811(direction)m 917(is)s 220 fnt5
+1139 808(f)m 6(ollo)k 3(wing)k 240 fnt1 1969 811(,)m
+2087(such)s 2595(g)s 1(alle)k 3(ys)k 3330(are)s
+3689(held)s 4170(in)s 4425(internal)s 5221(memory)s 6083(for)s
+6433(a)s 6610(long)s 7101(time,)s 7643(unless)s 8304(the)s 3(y)k
+8779(are)s 0 523(to)m 248(be)s 539(sorted.)s 1296(If)s
+1535(the)s 1892(direction)s 2807(is)s 220 fnt5 3026 520(preceding)m
+240 fnt1 3977 523(,)m 4093(then)s 4571(either)s 5183(the)s
+5540(entire)s 6148(interv)s 3(ening)k 7296(document)s 8309(must)s
+8844(be)s
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 33 34
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt2 vec2 /Times-Bold LoutRecode
+/fnt2 { /Times-Boldfnt2 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt3 vec2 /Times-Italic LoutRecode
+/fnt3 { /Times-Italicfnt3 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt5 vec2 /Helvetica LoutRecode
+/fnt5 { /Helveticafnt5 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5710 -1579(-)m 5838(33)s 6122(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+0 13253(held)m 466(in)s
+704(memory)s 1551(\(pre)s 6(v)k 3(ented)k 2617(by)s
+2907(the)s 3250(tar)s 4(get)k 3844(from)s 4364(\210ushing\),)s
+5317(or)s 5572(else)s 5994(some)s 6551(forcing)s 7289(g)s 1(alle)k 3(y)k
+7918(prematurely)s 0 12965(deletes)m 714(the)s 1062(tar)s 4(get,)k
+1708(lea)s 4(ving)k 2461(the)s 2809(g)s 1(alle)k 3(y)k
+3443(bereft.)s 480 12591(The)m 929(typical)s 1655(e)s 3(xample)k
+2539(of)s 2832(the)s 3201(latter)s 3771(case)s 4260(occurs)s
+4956(when)s 5553(the)s 5922(g)s 1(alle)k 3(y)k
+6578(is)s 6809(an)s 7113(entry)s 7680(in)s 7944(the)s
+8313(table)s 8855(of)s 0 12303(contents,)m 907(launched)s 1832(backw)s 2(ards)k
+2907(from)s 3435(the)s 3786(be)s 3(ginning)k 4797(of)s
+5071(a)s 5241(chapter)s 6007(or)s 6269(section.)s 7113(Its)s
+7406(tar)s 4(get)k 8008(in)s 8254(the)s 8606(table)s
+0 12015(of)m 286(contents)s 1150(will)s 1592(ha)s 4(v)k 3(e)k
+2108(been)s 2633(deleted)s 3397(long)s 3891(before,)s 4624(to)s
+4879(permit)s 5578(the)s 5941(rest)s 6361(of)s 6648(the)s
+7011(document)s 8031(to)s 8286(print,)s 8860(so)s 0 11727(the)m
+349(g)s 1(alle)k 3(y)k 985(ultimately)s 2009(emer)s 4(ges)k
+2854(as)s 3106(an)s 3391(unattached)s 4487(g)s 1(alle)k 3(y)k
+5122(promoted)s 6099(out)s 6467(of)s 6740(the)s 7090(root)s
+7537(g)s 1(alle)k 3(y)k 15(.)k 8268(All)s
+8630(such)s 0 11439(g)m 1(alle)k 3(ys)k 717(are)s
+1056(written)s 1781(to)s 2013(an)s 2288(auxiliary)s 3183(\207le,)s
+3588(inde)s 3(x)k 3(ed)k 4390(by)s 4676(the)s
+5016(missing)s 5806(tar)s 4(get.)k 6501(On)s 6843(the)s
+7184(ne)s 3(xt)k 7645(run,)s 8063(just)s 8460(before)s
+0 11151(that)m 418(tar)s 4(get)k 1017(is)s 1227(deleted,)s
+2024(the)s 2372(auxiliary)s 3275(\207le)s 3636(is)s 3846(check)s 2(ed)k
+4686(and)s 5090(an)s 3(y)k 5487(g)s 1(alle)k 3(ys)k
+6211(for)s 6549(it)s 6741(are)s 7088(read)s 7557(in)s
+7800(and)s 8204(\210ushed.)s 240 fnt2 0 10502(5.5.)m 471(Horizontal)s
+1628(galleys)s
+[ /Dest /LOUThorizontal /DEST pdfmark
+240 fnt1 480 10025(There)m 1108(is)s 1333(a)s
+1514(strong)s 2180(analogy)s 3007(between)s 3876(breaking)s 4781(a)s
+4962(column)s 5752(of)s 6038(te)s 3(xt)k 6468(into)s
+6908(page-sized)s 8003(pieces,)s 8722(and)s 0 9737(breaking)m 912(a)s
+1101(paragraph)s 2137(into)s 2585(line-sized)s 3594(pieces.)s 4378(In)s
+4657(f)s 2(act,)k 5142(the)s 5513(tw)s 2(o)k
+5946(dif)s 6(fer)k 6552(only)s 7055(in)s 7321(direction:)s
+8359(v)s 3(ertical)k 0 9449(for)m 343(body)s 883(te)s 3(xt,)k
+1351(horizontal)s 2381(for)s 2724(paragraphs.)s 3943(In)s 4205(this)s
+4607(section)s 5347(we)s 5687(de\207ne)s 240 fnt3 6334 9451(horizontal)m
+7384(galle)s 7(ys)k 240 fnt1 8049 9449(,)m 8162(and)s
+8572(sho)s 6(w)k 0 9161(ho)m 6(w)k 493(the)s 3(y)k
+989(pro)s 3(vide)k 1806(an)s 2122(unlimited)s 3129(number)s
+3953(of)s 4257(paragraph)s 5302(breaking)s 6225(styles,)s 6909(as)s
+7192(well)s 7691(as)s 7974(solv)s 3(e)k 8565(some)s
+0 8873(other)m 587(problems.)s 1677(Re)s 3(grettably)k 15(,)k
+2917(lack)s 3412(of)s 3719(time)s 4235(has)s 4641(pre)s 6(v)k 3(ented)k
+5669(their)s 6202(incorporation)s 7583(into)s 8044(the)s 8429(Basser)s
+0 8585(Lout)m 512(interpreter)s 13(.)k 480 8211(Imagine)m 1337(a)s
+1521(g)s 1(alle)k 3(y)k 2173(whose)s 2859(components)s
+4085(are)s 4450(separated)s 5428(by)s 5740(horizontal)s 6782(concatenation)s
+8186(operators)s 0 7923(instead)m 725(of)s 986(v)s 3(ertical)k
+1742(ones,)s 2278(perhaps)s 3062(indicated)s 3986(by)s 4269(a)s
+220 fnt5 4425 7920(hor)m -3(iz)k 3(ontally)k 5582(into)s
+240 fnt1 5977 7923(clause.)m 6728(Then)s 7266(all)s 7549(object)s
+8182(breaking,)s 0 7635(including)m 957(paragraph)s 1970(breaking,)s 2914(could)s
+3504(be)s 3786(replaced)s 4653(by)s 4947(g)s 1(alle)k 3(y)k
+5581(component)s 6705(promotion)s 7759(lik)s 2(e)k 8171(this:)s
+220 fnt5 480 7134(def @P)m 8(ar)k 2(ag)k 2(r)k 2(aph r)k -3(ight x)k
+480 6846({)m 480 6558( def @LinePlace { @Galle)m 4(y })k 480 5982( def @LineList)m 480 5694( {)m
+480 5406( @HExpand @LinePlace)m 480 5118( //1vx @LineList)m 480 4830( })m 480 4254( def @P)m 8(ar hor)k -3(iz)k 3(ontally into { @LinePlace&&preceding })k
+480 3966( r)m -3(ight x)k 480 3678( { x })m 480 3102( @LineList // @P)m 8(ar { 0.2i @Wide {} &0i x &1r)k -8(t })k
+480 2814(})m 240 fnt1 0 2320(The)m 220 fnt5 431 2317(@HExpand)m
+240 fnt1 1607 2320(operator)m 9(,)k 2504(which)s 3149(is)s
+3362(a)s 3531(primiti)s 6(v)k 3(e)k 4456(of)s
+4730(Basser)s 5430(Lout,)s 5992(horizontally)s 7204(e)s 3(xpands)k
+8040(the)s 8391(g)s 1(aps)k 8883(in)s 0 2032(its)m
+290(right)s 816(parameter)s 1844(until)s 2352(the)s 2715(result)s
+3319(\207lls)s 3743(the)s 4105(a)s 4(v)k 6(ailable)k
+5028(space,)s 5681(thus)s 6145(implementing)s 7541(line)s 7970(adjustment,)s
+0 1744(e)m 3(xcept)k 689(when)s 1274(the)s 1631(parameter)s
+2654(contains)s 3511(tab)s 4(ulation)k 4529(g)s 1(aps)k
+5027(lik)s 2(e)k 220 fnt5 5447 1741(&1r)m -8(t)k
+240 fnt1 5853 1744(,)m 5969(which)s 6620(cause)s 7216(the)s
+7573(parameter)s 8596(to)s 8844(be)s 0 1456(already)m 757(e)s 3(xpanded.)k
+1836(The)s 2264(result)s 2854(of)s 220 fnt5 480 955(@P)m 8(ar)k 2(ag)k 2(r)k 2(aph { A shor)k -8(t par)k 2(ag)k 2(r)k 2(aph of te)k 6(xt.)k 13( })k
+240 fnt1 0 456(w)m 2(ould)k 655(then)s 1124(be)s
+1406(something)s 2456(lik)s 2(e)k
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 34 35
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Helvetica
+%%+ font Times-Italic
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt5 vec2 /Helvetica LoutRecode
+/fnt5 { /Helveticafnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt3 vec2 /Times-Italic LoutRecode
+/fnt3 { /Times-Italicfnt3 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5705 -1579(-)m 5833(34)s 6127(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+768 13253(A)m 1073(short)s
+1687(paragraph)s 480 12965(of)m 751(te)s 3(xt.)k 0 12512(depending)m
+1061(on)s 1368(the)s 1726(a)s 4(v)k 6(ailable)k
+2645(horizontal)s 3679(space.)s 4384(An)s 4744(unlimited)s 5729(range)s
+6326(of)s 6607(paragraph)s 7630(breaking)s 8531(styles)s 0 12224(could)m
+590(be)s 872(de\207ned,)s 1684(including)s 2641(ragged)s 3350(right,)s
+3908(ragged)s 4617(left,)s 5041(break-and-center)s 9(,)k 6757(and)s
+7161(so)s 7427(on.)s 480 11850(In)m 765(Basser)s 1492(Lout,)s
+2081(indented)s 2992(paragraphs)s 4122(are)s 4499(produced)s 5477(by)s
+5801(preceding)s 6827(them)s 7394(with)s 7906(a)s 8102(horizontal)s
+0 11562(concatenation)m 1380(operator)s 9(,)k 2269(for)s 2602(e)s 3(xample)k
+220 fnt5 3459 11559(|0.5i)m 240 fnt1 3855 11562(.)m 4014(This)s
+4485(has)s 4849(the)s 5192(unfortunate)s 6345(ef)s 6(fect)k
+6935(of)s 7201(making)s 7967(an)s 8244(indented)s 0 11274(paragraph)m
+1007(into)s 1426(a)s 1586(single)s 2207(component)s 3325(of)s
+3590(the)s 3932(enclosing)s 4895(g)s 1(alle)k 3(y)k 15(,)k
+5561(so)s 5821(that)s 6233(it)s 6419(will)s 6839(al)s 2(w)k 2(ays)k
+7544(be)s 7820(k)s 2(ept)k 8283(together)s 0 10986(on)m
+297(one)s 699(page.)s 1315(Horizontal)s 2392(g)s 1(alle)k 3(ys)k
+3116(solv)s 3(e)k 3674(this)s 4070(problem)s 4927(with)s
+5409(a)s 5575(simple)s 6268(change)s 7002(to)s 220 fnt5
+7241 10983(@LineList)m 240 fnt1 8215 10986(:)m 220 fnt5 480 10485(def @LineList)m
+480 10197({)m 480 9909( |0.5i @HExpand @LinePlace)m 480 9621( //1vx @LineList)m 480 9333(})m 240 fnt1
+0 8839(sho)m 6(wing)k 860(the)s 1210(\210e)s 3(xibility)k
+2192(that)s 2611(comes)s 3275(from)s 3801(bringing)s 4666(the)s
+5016(full)s 5404(po)s 6(wer)k 6057(of)s 6330(the)s
+6680(Lout)s 7193(language)s 8115(to)s 8356(bear)s 8829(on)s
+0 8551(paragraph)m 1013(layout.)s 1775(It)s 1980(is)s 2190(easy)s
+2669(to)s 2908(mak)s 2(e)k 3480(pro)s 3(vision)k
+4438(for)s 4776(a)s 4942(tag)s 5287(on)s 5584(the)s
+5932(\207rst)s 6363(line.)s 480 8177(Although)m 1451(Basser)s 2158(Lout)s
+2679(permits)s 3456(recepti)s 6(v)k 3(e)k 4387(symbols)s
+5246(within)s 5923(paragraphs,)s 7089(the)s 3(y)k 7561(are)s
+7918(of)s 8198(little)s 8700(use,)s 0 7889(because)m 835(their)s
+1355(a)s 4(v)k 6(ailable)k 2286(width)s 2911(is)s
+3144(calculated)s 4193(after)s 4711(paragraph)s 5747(breaking,)s 6714(and)s
+7141(the)s 7512(incoming)s 8492(g)s 1(alle)k 3(y)k
+0 7601(cannot)m 736(spread)s 1456(o)s 3(v)k 3(er)k
+1973(more)s 2558(than)s 3065(one)s 3505(line.)s 4066(W)s 9(ith)k
+4630(horizontal)s 5692(g)s 1(alle)k 3(ys,)k 6510(such)s
+7044(symbols)s 7931(w)s 2(ould)k 8625(ha)s 4(v)k 3(e)k
+0 7313(in\207nite)m 733(a)s 4(v)k 6(ailable)k 1641(width,)s
+2293(and)s 2697(we)s 3032(could)s 3622(easily)s 4233(produce)s
+5060(a)s 5226(\207lled)s 5775(paragraph)s 6788(of)s 7059(footnotes)s
+8000(lik)s 2(e)k 8412(this:)s 200 fnt1 480 6838(1)m
+240 fnt1 559 6743(See)m 987(Jones)s 1597(and)s 2028(Saunders)s
+2983(\(1982\).)s 200 fnt1 3932 6838(2)m 240 fnt1 4027 6743(Or)m
+4366(so)s 4659(Jacobsen)s 480 6443(\(1973\))m 1167(asserts.)s 200 fnt1
+2087 6538(3)m 240 fnt3 2174 6445(ibid)m 240 fnt1 2552 6443(,)m
+2659(p.)s 2883(327.)s 0 5940(based)m 603(on)s 900(an)s
+1183(in\207nite)s 1916(horizontal)s 2940(sequence)s 3873(of)s 220 fnt5
+4144 5937(@F)m 6(ootPlace)k 240 fnt1 5400 5940(symbols)m 6249(inside)s
+6876(a)s 7042(horizontal)s 8066(g)s 1(alle)k 3(y)k 15(.)k
+480 5566(When)m 1133(body)s 1692(te)s 3(xt)k 2132(is)s
+2367(placed)s 3074(on)s 3395(pages,)s 4072(the)s 4445(length)s
+5125(of)s 5421(each)s 5940(column)s 6740(v)s 6(aries)k
+7380(depending)s 8456(on)s 8778(the)s 0 5278(a)m 4(v)k 6(ailable)k
+914(v)s 3(ertical)k 1687(space.)s 2389(Horizontal)s 3472(g)s 1(alle)k 3(ys)k
+4203(could)s 4799(analogously)s 6017(produce)s 6850(lines)s 7359(of)s
+7636(v)s 6(arying)k 8421(length,)s 0 4990(and)m 404(so)s
+670(could)s 1260(\207ll)s 1580(non-rectangular)s 3153(shapes.)s 480 4616(An)m
+835(important)s 1829(theoretical)s 2896(bene\207t)s 3612(of)s 3888(horizontal)s
+4918(g)s 1(alle)k 3(ys)k 5647(is)s 5862(that)s
+6285(the)s 3(y)k 6753(w)s 2(ould)k 7413(permit)s
+8102(horizontal)s 0 4328(and)m 403(v)s 3(ertical)k 1168(to)s
+1405(be)s 1685(treated)s 2390(in)s 2631(a)s 2795(perfectly)s
+3695(symmetrical)s 4928(w)s 2(ay)k 15(,)k 5415(whereas)s
+6247(at)s 6477(present)s 7225(paragraph)s 8236(breaking)s 0 4040(is)m
+243(horizontal)s 1300(only)s 15(,)k 1851(and)s 2288(g)s 1(alle)k 3(y)k
+2955(breaking)s 3878(is)s 4121(v)s 3(ertical)k 4921(only)s 15(.)k
+5529(This)s 6038(must)s 6596(simplify)s 7479(the)s 7860(treatment)s
+8855(of)s 0 3752(non-European)m 1432(languages)s 2459(which)s 3121(\207ll)s
+3460(in)s 3722(unusual)s 4542(directions,)s 5610(although)s 6525(it)s
+6736(is)s 6965(not)s 7351(itself)s 7918(suf\207cient)s 8887(to)s
+0 3464(implement)m 1082(them.)s 480 3090(There)m 1132(are)s 1519(a)s
+1725(fe)s 6(w)k 2170(minor)s 2841(problems)s 3822(with)s
+4343(horizontal)s 5407(g)s 1(alle)k 3(ys.)k 6284(First,)s
+6867(the)s 7255(syntactic)s 8197(o)s 3(v)k 3(erhead)k
+0 2802(of)m 319(enclosing)s 1337(each)s 1880(paragraph)s 2941(in)s
+220 fnt5 3233 2799(@P)m 8(ar)k 2(ag)k 2(r)k 2(aph { ...)k 13( })k
+240 fnt1 5064 2802(or)m 5371(whate)s 6(v)k 3(er)k
+6346(is)s 6604(unacceptable.)s 8065(Permitting)s 0 2514(user)m 4(-de\207ned)k
+1234(operators)s 2172(to)s 2409(ha)s 4(v)k 3(e)k
+2908(lo)s 6(wer)k 3504(precedence)s 4633(than)s 5100(the)s
+5446(white)s 6031(space)s 6616(between)s 7468(tw)s 2(o)k
+7876(w)s 2(ords)k 8508(might)s 0 2226(help)m 450(here.)s
+1009(Second,)s 1805(the)s 2137(b)s 4(uilt-in)k 2877(paragraph)s
+3874(break)s 2(er)k 4632(includes)s 5464(h)s 1(yphenation,)k
+6738(and)s 7126(it)s 7302(permits)s 8053(line)s 8451(breaks)s
+0 1938(in)m 246(the)s 598(input)s 1153(to)s 1396(determine)s
+2410(line)s 2828(breaks)s 3506(in)s 3753(the)s 4105(output,)s
+4827(if)s 5048(desired.)s 5905(These)s 6536(features)s 7345(must)s
+7874(someho)s 6(w)k 8844(be)s 0 1650(preserv)m 3(ed.)k
+1081(Finally)s 15(,)k 1841(we)s 2167(ha)s 4(v)k 3(e)k
+2659(e)s 3(xplained)k 3634(ho)s 6(w)k 4086(the)s
+4425(Basser)s 5113(Lout)s 5616(interpreter)s 6659(assigns)s 7392(equal)s
+7956(width)s 8549(to)s 8778(the)s 0 1362(wider)m 607(columns)s
+1473(of)s 1748(tables)s 2359(\(Section)s 3216(2.5\).)s 3763(The)s
+4194(equi)s 6(v)k 6(alent)k 5242(situation)s 6126(in)s
+6372(v)s 3(ertical)k 7143(g)s 1(alle)k 3(ys)k
+7871(occurs)s 8550(when)s 0 1074(tw)m 2(o)k 416(recepti)s 6(v)k 3(e)k
+1345(symbols)s 2201(compete)s 3074(for)s 3419(v)s 3(ertical)k
+4193(space)s 4786(\(e.g.)s 220 fnt5 5262 1071(@T)m 26(e)k 6(xtPlace)k
+240 fnt1 6487 1074(and)m 220 fnt5 6898 1071(@F)m 6(ootSect)k
+240 fnt1 7989 1074(\),)m 8182(and)s 8593(there)s 0 786(it)m
+187(is)s 392(con)s 9(v)k 3(entional)k 1666(to)s
+1900(grant)s 2446(as)s 2691(much)s 3274(as)s 3519(required)s
+4368(to)s 4602(the)s 4945(\207rst)s 5371(arri)s 6(v)k 6(al.)k
+6140(It)s 6339(is)s 6544(not)s 6905(clear)s 7423(to)s
+7657(the)s 8000(author)s 8665(ho)s 6(w)k 0 498(these)m
+547(dif)s 6(ferent)k 1422(approaches)s 2549(can)s 2938(be)s
+3220(reconciled.)s
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 35 36
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Helvetica
+%%+ font Times-Italic
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt2 vec2 /Times-Bold LoutRecode
+/fnt2 { /Times-Boldfnt2 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt5 vec2 /Helvetica LoutRecode
+/fnt5 { /Helveticafnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt3 vec2 /Times-Italic LoutRecode
+/fnt3 { /Times-Italicfnt3 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5709 -1582(-)m 5837(35)s 6123(-)s 9066 13413 0 13413 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+240 fnt2 0 12672(6.)m
+291(Cr)s 4(oss)k 926(r)s 4(efer)k 4(ences)k
+
+[ /Dest /LOUT18_694_s6_0_1 /DEST pdfmark
+240 fnt1 480 12240(Cross)m 1064(references,)s 2138(such)s 2622(as)s
+2859(`see)s 3286(page)s 3782(57')s 4121(and)s 4512(`see)s
+4940(Figure)s 5607(5,)s 16(')k 5871(are)s 6205(a)s
+6358(useful)s 6985(b)s 4(ut)k 7334(highly)s 7987(error)s 4(-prone)k
+0 11952(feature)m 716(of)s 985(documents.)s 2184(Scribe)s 2848([7])s
+3163(introduced)s 4242(a)s 4406(method)s 5180(of)s 5449(k)s 2(eeping)k
+6256(them)s 6792(up)s 7083(to)s 7320(date)s 7772(automatically)s
+0 11664(as)m 245(the)s 587(document)s 1585(changes:)s 2517(the)s
+2859(user)s 3311(gi)s 6(v)k 3(es)k 3852(each)s
+4342(referenced)s 5401(entity)s 5993(a)s 6153(tag,)s 6547(and)s
+6945(operators)s 7879(are)s 8220(pro)s 3(vided)k 0 11376(that)m
+418(return)s 1045(the)s 1393(page)s 1901(or)s 2160(sequence)s
+3093(number)s 3884(of)s 4155(the)s 4503(entity)s 5101(with)s
+5583(a)s 5749(gi)s 6(v)k 3(en)k 6329(tag.)s
+480 11002(A)m 712(cross)s 1256(reference)s 2201(tak)s 2(es)k
+2743(an)s 3028(object)s 3674(\(such)s 4251(as)s 4503(a)s
+4671(page)s 5181(number\))s 6042(from)s 6568(one)s 6972(point)s
+7526(in)s 7771(the)s 8122(document)s 0 10714(and)m 435(copies)s
+1128(it)s 1351(to)s 1621(another)s 9(,)k 2467(and)s
+2902(this)s 3329(generalization)s 4770(suggests)s 5663(other)s 6245(applications.)s
+7595(F)s 3(or)k 8015(e)s 3(xample,)k 8960(a)s
+0 10426(running)m 831(header)s 1562(is)s 1806(copied)s 2536(from)s
+3094(the)s 3475(title)s 3935(of)s 4240(a)s 4440(nearby)s
+5179(chapter)s 9(,)k 6013(and)s 6451(a)s 6651(reference)s
+7628(is)s 7872(copied)s 8602(from)s 0 10138(a)m 207(bibliographic)s
+1576(database.)s 2604(Making)s 3443(the)s 3832(unity)s 4419(of)s
+4731(these)s 5319(applications)s 6566(manifest)s 7489(is)s 7740(an)s
+8065(interesting)s 0 9850(language)m 920(design)s 1602(problem.)s 240 fnt2
+0 9201(6.1.)m 471(The)s 926(cr)s 4(oss)k 1494(r)s 4(efer)k 4(ence)k
+2496(abstraction)s
+[ /Dest /LOUTcross /DEST pdfmark
+240 fnt1 480 8770(In)m 736(de)s 6(v)k 3(eloping)k
+1844(the)s 2191(cross)s 2733(reference)s 3675(abstraction,)s 4830(it)s
+5021(seemed)s 5796(best)s 6241(to)s 6479(be)s 3(gin)k
+7065(with)s 7546(the)s 7894(database)s 8772(ap-)s 0 8482(plication,)m
+943(since)s 1490(it)s 1682(is)s 1892(the)s 2240(simplest.)s
+3200(Database)s 4132(relations)s 5005(are)s 5352(naturally)s 6255(mapped)s
+7071(into)s 7496(Lout)s 8008(de\207nitions:)s 220 fnt5 480 7981(def @Ref)m 6(erence)k
+480 7693( named @T)m 26(ag {})k 480 7405( named @A)m 6(uthor {})k 480 7117( named @Title {})m
+480 6829( named @Jour)m -5(nal {})k 480 6541({})m 240 fnt1 0 6047(The)m
+434(set)s 766(of)s 1043(all)s 1343(in)s 9(v)k 4(ocations)k
+2490(of)s 220 fnt5 2768 6044(@Ref)m 6(erence)k 240 fnt1
+4055 6047(is)m 4272(a)s 4444(relation)s 5237(whose)s 5911(attrib)s 4(utes)k
+6853(are)s 7206(the)s 7561(parameters,)s 8722(and)s 0 5759(whose)m
+659(tuples)s 1271(are)s 1608(the)s 1946(in)s 9(v)k 4(ocations.)k
+3191(T)s 19(o)k 3481(complete)s 4403(the)s 4741(correspondence,)s
+6339(we)s 6665(need)s 7165(only)s 7635(declare)s 8370(that)s
+8778(the)s 220 fnt5 0 5468(@T)m 26(ag)k 240 fnt1
+623 5471(parameter)m 1637(is)s 1847(special,)s 2617(serving)s 3374(as)s
+3624(the)s 3972(k)s 2(e)k 3(y)k 4367(attrib)s 4(ute.)k
+480 5097(F)m 3(ollo)k 6(wing)k 1508(the)s 1856(database)s
+2735(model,)s 3440(we)s 3775(ne)s 3(xt)k 4244(need)s
+4755(a)s 4921(notation)s 5762(for)s 6100(retrie)s 6(ving)k
+7075(the)s 7423(in)s 9(v)k 4(ocation)k 8477(with)s
+8960(a)s 0 4809(gi)m 6(v)k 3(en)k 580(tag:)s
+220 fnt5 480 4308(@Ref)m 6(erence&&kingston91)k 240 fnt1 0 3809(This)m
+240 fnt3 534 3811(cr)m 10(oss)k 1143(r)s 8(efer)k 8(ence)k
+240 fnt1 2141 3809(is)m 2410(lik)s 2(e)k 2881(an)s
+3223(arro)s 6(w)k 3887(pointing)s 4796(to)s 5094(the)s
+5501(in)s 9(v)k 4(ocation.)k 6721(T)s 19(o)k
+7080(access)s 7800(its)s 8135(attrib)s 4(utes,)k 0 3521(we)m
+335(write)s 220 fnt5 480 3069(@Ref)m 6(erence&&kingston91 @Open { @A)k 6(uthor)k 11(, @Title })k
+240 fnt1 0 2570(The)m 220 fnt5 484 2567(@Open)m 240 fnt1
+1347 2570(operator)m 2260(e)s 6(v)k 6(aluates)k 3245(its)s
+3578(right)s 4146(parameter)s 5217(in)s 5517(an)s 5857(en)s 9(vironment)k
+7174(which)s 7873(includes)s 8778(the)s 0 2282(e)m 3(xported)k
+892(parameters)s 1990(of)s 2261(its)s 2537(left.)s 480 1908(An)m
+829(in)s 9(v)k 4(ocation)k 1882(is)s 2091(chosen)s
+2812(to)s 3050(be)s 3331(a)s 3496(running)s 4293(header)s
+4989(because)s 5801(of)s 6071(its)s 6346(proximity)s 7342(to)s
+7580(the)s 7927(place)s 8486(where)s 0 1620(it)m 223(is)s
+465(used,)s 1043(rather)s 1691(than)s 2192(by)s 2517(its)s
+2825(tag.)s 3313(Such)s 3881(proximity)s 4910(is)s 5151(naturally)s
+6086(e)s 3(xpressed)k 7116(by)s 7442(tw)s 2(o)k
+7884(special)s 8634(tags,)s 220 fnt5 0 1329(preceding)m 240 fnt1
+1049 1332(and)m 220 fnt5 1491 1329(f)m 6(ollo)k 3(wing)k
+240 fnt1 2321 1332(;)m 2471(for)s 2848(e)s 3(xample,)k
+220 fnt5 3800 1329(@Sym&&f)m 6(ollo)k 3(wing)k 240 fnt1
+5682 1332(will)m 6146(point)s 6737(to)s 7014(the)s 7400(closest)s
+8149(follo)s 6(wing)k 0 1044(in)m 9(v)k 4(ocation)k
+1083(of)s 220 fnt5 1383 1041(@Sym)m 240 fnt1 2121 1044(in)m
+2393(the)s 2771(\207nal)s 3280(printed)s 4045(document.)s 5182(This)s
+5688(is)s 5927(much)s 6546(simpler)s 7351(conceptually)s 8657(than)s
+0 756(reference)m 937(to)s 1169(the)s 1511(internal)s 2288(state)s
+2775(of)s 3039(the)s 3381(document)s 4378(formatter)s 5319(at)s
+5544(a)s 5704(critical)s 6413(moment,)s 7298(the)s 7639(usual)s
+8192(approach)s 0 468(to)m 239(running)s 1037(headers.)s 480 94(It)m
+691(turns)s 1227(out)s 1600(that)s 2025(the)s 2380(abo)s 3(v)k 3(e)k
+3009(design)s 3698(solv)s 3(es)k 4350(all)s 4650(the)s
+5005(cross)s 5554(referencing)s 6701(problems)s 7649(encountered)s 8883(in)s
+
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 36 37
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Helvetica
+%%+ font Times-Bold
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt5 vec2 /Helvetica LoutRecode
+/fnt5 { /Helveticafnt5 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt2 vec2 /Times-Bold LoutRecode
+/fnt2 { /Times-Boldfnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5705 -1581(-)m 5833(36)s 6126(-)s 9066 13414 0 13305 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+0 13251(practice)m 825(e)s 3(xcept)k
+1521(one,)s 1988(which)s 2645(may)s 3126(be)s 3422(typi\207ed)s
+4226(by)s 4535(the)s 4897(problem)s 5769(of)s 6054(\207nding)s
+6801(the)s 7164(number)s 7969(of)s 8255(the)s 8618(page)s
+0 12963(on)m 303(which)s 952(the)s 1306(chapter)s 2076(whose)s
+2750(tag)s 3102(is)s 220 fnt5 3318 12960(intro)m 240 fnt1
+3804 12963(be)m 3(gins.)k 4596(T)s 19(w)k 2(o)k
+5074(cross)s 5622(referencing)s 6769(steps)s 7304(are)s 7658(needed,)s
+8449(\207rst)s 8887(to)s 220 fnt5 0 12672(@Chapter&&intro)m 240 fnt1
+1714 12675(,)m 1821(then)s 2290(from)s 2814(there)s 3347(to)s
+220 fnt5 3586 12672(@P)m 8(age&&preceding)k 240 fnt1 5556 12675(,)m
+5663(where)s 6303(the)s 6651(page)s 7159(number)s 7950(is)s
+8160(kno)s 6(wn.)k 480 12301(Gi)m 6(v)k 3(en)k
+1113(our)s 1492(success)s 2260(so)s 2526(f)s 2(ar)k 9(,)k
+2886(this)s 3282(last)s 3673(problem)s 4530(pro)s 3(v)k 3(es)k
+5213(to)s 5452(be)s 5734(surprisingly)s 6930(dif\207cult.)s 7850(W)s 19(e)k
+8219(\207rst)s 8650(try)s 220 fnt5 480 11800(@Chapter&&intro @Open {)m 480 11512( @P)m 8(age&&preceding @Open { @P)k 8(ageNum })k
+480 11224(})m 240 fnt1 0 10730(b)m 4(ut)k 363(this)s
+761(f)s 2(ails)k 1222(because)s 220 fnt5 2037 10727(@P)m 8(age&&preceding)k
+240 fnt1 4069 10730(is)m 4281(e)s 6(v)k 6(aluated)k
+5245(in)s 5490(the)s 5840(present)s 6592(conte)s 3(xt,)k
+7402(not)s 7770(in)s 8015(the)s 8365(conte)s 3(xt)k
+0 10442(of)m 220 fnt5 271 10439(@Chapter&&intro)m 240 fnt1 2045 10442(as)m
+2295(required.)s 3255(So)s 3561(our)s 3940(ne)s 3(xt)k
+4409(attempt)s 5185(is)s 220 fnt5 480 9941(def @Chapter)m 480 9653( named @P)m 8(ageNum { @P)k 8(age&&preceding @Open { @P)k 8(ageNum } })k
+480 9365( ...)m 240 fnt1 0 8914(with)m 482(the)s 220 fnt5
+830 8911(@P)m 8(age&&preceding)k 240 fnt1 2860 8914(cross)m 3402(reference)s
+4345(attached)s 5199(to)s 5438(the)s 5786(chapter;)s 6601(we)s
+6936(write)s 220 fnt5 480 8413(@Chapter&&intro @Open { @P)m 8(ageNum })k 240 fnt1
+0 7914(This)m 604(also)s 1170(f)s 2(ails,)k 1813(because)s
+2754(parameters)s 3980(are)s 4456(e)s 6(v)k 6(aluated)k
+5546(after)s 6170(substitution,)s 7521(so)s 7915(once)s 8552(ag)s 1(ain)k
+220 fnt5 0 7623(@P)m 8(age&&preceding)k 240 fnt1 2015 7626(is)m
+2209(e)s 6(v)k 6(aluated)k 3156(in)s 3383(the)s
+3716(wrong)s 4365(conte)s 3(xt.)k 5215(W)s 19(e)k
+5568(could)s 6143(of)s 6398(course)s 7063(de\207ne)s 7688(a)s
+7839(ne)s 6(w)k 8270(operator)s 0 7338(speci\207cally)m 1142(for)s
+1480(this)s 1876(case:)s 220 fnt5 480 6837(@P)m 8(age&&{ @Preceding @Chapter&&intro })k
+240 fnt1 0 6338(or)m 267(some)s 836(such.)s 1448(This)s
+1932(is)s 2151(free)s 2585(of)s 2864(the)s 3221(anno)s 2(ying)k
+4172(conte)s 3(xt-sensiti)k 6(vity)k 15(,)k 6029(b)s 4(ut)k
+6399(it)s 6599(seems)s 7243(quite)s 7785(comple)s 3(x,)k
+8722(and)s 0 6050(the)m 348(e)s 3(xpected)k 1253(cross)s
+1795(reference)s 220 fnt5 2738 6047(@P)m 8(age&&preceding)k 240 fnt1
+4768 6050(does)m 5258(not)s 5624(appear)s 13(.)k 480 5676(The)m
+939(author)s 1642(w)s 2(as)k 2095(lost)s 2532(in)s
+2806(these)s 3385(obscurities)s 4503(for)s 4873(some)s 5465(time,)s
+6028(and)s 6464(ultimately)s 7518(rescued)s 8338(himself)s 0 5388(by)m
+306(looking)s 1103(ahead)s 1731(to)s 1982(the)s 2342(implementation)s
+3912(of)s 4195(the)s 220 fnt5 4555 5385(preceding)m 240 fnt1
+5578 5388(and)m 220 fnt5 5994 5385(f)m 6(ollo)k 3(wing)k
+240 fnt1 6897 5388(tags,)m 7401(to)s 7652(see)s 8025(if)s
+8254(a)s 8433(simple)s 0 5100(e)m 3(xtension)k 971(of)s
+1242(it)s 1434(w)s 2(ould)k 2089(solv)s 3(e)k
+2647(the)s 2995(problem.)s 3956(This)s 4432(led)s 4782(to)s
+5021(the)s 220 fnt5 5369 5097(@T)m 26(agged)k 240 fnt1
+6358 5100(operator:)m 220 fnt5 480 4599(@P)m 8(age&&preceding @T)k 26(agged intro)k
+240 fnt1 0 4100(placed)m 686(at)s 922(the)s 1274(be)s 3(ginning)k
+2286(of)s 2562(the)s 2914(body)s 3452(of)s 3727(the)s
+4079(chapter)s 4847(will)s 5277(attach)s 220 fnt5 5908 4097(intro)m
+240 fnt1 6391 4100(as)m 6645(an)s 6933(e)s 3(xtra)k
+7471(tag)s 7820(to)s 8063(the)s 8416(closest)s 0 3812(preceding)m
+996(in)s 9(v)k 4(ocation)k 2050(of)s 220 fnt5
+2321 3809(@P)m 8(age)k 240 fnt1 3040 3812(,)m 3147(so)s
+3413(that)s 220 fnt5 480 3311(@P)m 8(age&&intro @Open { @P)k 8(ageNum })k
+240 fnt1 0 2812(yields)m 635(the)s 996(desired)s 1758(page)s
+2279(number)s 13(.)k 3174(There)s 3801(is)s 4024(something)s
+5087(lo)s 6(w-le)k 6(v)k 3(el)k 6043(and)s
+6460(ad)s 6757(hoc)s 7170(about)s 7775(the)s 220 fnt5
+8137 2809(@T)m 26(agged)k 240 fnt1 0 2524(operator)m 9(,)k
+894(b)s 4(ut)k 1256(the)s 1604(tw)s 2(o)k
+2014(cross)s 2556(references)s 3587(do)s 3880(appear)s 4577(naturally)s 15(,)k
+5518(and)s 5922(it)s 6114(w)s 2(orks.)k 240 fnt2
+0 1875(6.2.)m 471(Implementation)s 2159(of)s 2431(cr)s 4(oss)k
+2999(r)s 4(efer)k 4(ences)k
+[ /Dest /LOUTcross_impl /DEST pdfmark
+240 fnt1 480 1398(Before)m
+1185(an)s 1466(object)s 2109(can)s 2496(be)s 2777(sized)s
+3324(and)s 3727(printed,)s 4509(the)s 4855(v)s 6(alues)k
+5510(of)s 5779(an)s 3(y)k 6175(cross)s 6715(references)s
+7745(within)s 8411(it)s 8601(must)s 0 1110(be)m 279(kno)s 6(wn.)k
+1086(If)s 1312(the)s 3(y)k 1772(refer)s 2277(to)s
+2512(in)s 9(v)k 4(ocations)k 3650(that)s 4064(ha)s 4(v)k 3(e)k
+4561(not)s 4924(yet)s 5272(been)s 5777(read,)s 6292(there)s
+6821(is)s 7027(a)s 7190(problem.)s 8147(Scribe)s 8809([7])s
+0 822(solv)m 3(es)k 649(it)s 844(by)s 1141(capitalizing)s
+2311(on)s 2611(the)s 2962(f)s 2(act)k 3381(that)s
+3802(documents)s 4893(are)s 5243(formatted)s 6232(repeatedly)s 7284(during)s
+7965(the)s 8317(drafting)s 0 534(process.)m 868(All)s 1214(tagged)s
+1897(in)s 9(v)k 4(ocations)k 3024(are)s 3358(copied)s
+4040(to)s 4266(an)s 4535(auxiliary)s 5425(\207le)s 5772(during)s
+6437(the)s 6771(\207rst)s 7189(run,)s 7601(and)s 7992(inde)s 3(x)k 3(ed)k
+8788(for)s 0 246(quick)m 593(retrie)s 6(v)k 6(al)k
+1429(on)s 1725(the)s 2072(second.)s 2901(A)s 3130(ne)s 6(w)k
+3576(auxiliary)s 4478(\207le)s 4839(is)s 5048(written)s 5780(during)s
+6457(the)s 6805(second)s 7527(run,)s 7952(for)s 8289(retrie)s 6(v)k 6(al)k
+
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 37 38
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt3 vec2 /Times-Italic LoutRecode
+/fnt3 { /Times-Italicfnt3 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt5 vec2 /Helvetica LoutRecode
+/fnt5 { /Helveticafnt5 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5708 -1579(-)m 5836(37)s 6124(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+0 13253(on)m 301(the)s
+654(third,)s 1217(and)s 1625(so)s 1896(on.)s 2305(Cross)s
+2906(references)s 3941(al)s 2(w)k 2(ays)k 4657(lag)s
+5007(one)s 5413(run)s 5794(behind)s 6509(the)s 6862(rest)s
+7270(of)s 7546(the)s 7899(document;)s 8960(a)s 0 12965(perfect)m
+711(cop)s 2(y)k 1217(may)s 1671(be)s 1942(produced)s
+2879(by)s 3161(formatting)s 4210(the)s 4547(same)s 5082(v)s 3(ersion)k
+5828(twice,)s 6440(e)s 3(xcept)k 7110(in)s 7341(a)s
+7495(fe)s 6(w)k 7889(pathological)s 0 12677(cases)m 555(that)s
+973(f)s 2(ail)k 1343(to)s 1582(con)s 9(v)k 3(er)k 4(ge.)k
+480 12303(Cross)m 1123(referencing)s 2310(in)s 2600(Lout)s 3159(is)s
+3416(implemented)s 4769(on)s 5113(top)s 5519(of)s 5837(a)s
+6050(simple)s 6790(database)s 7716(system.)s 8591(Each)s 0 12015(database)m
+879(is)s 1089(either)s 1692(writable)s 2530(or)s 2790(readable)s
+3655(b)s 4(ut)k 4017(not)s 4383(both)s 4867(at)s
+5099(once,)s 5658(and)s 6062(holds)s 6633(a)s 6799(set)s
+7124(of)s 7395(k)s 2(e)k 3(y-v)k 6(alue)k
+8384(entries:)s 0 11727(the)m 348(k)s 2(e)k 3(ys)k
+833(are)s 1180(ASCII)s 1861(strings,)s 2605(and)s 3009(the)s
+3358(v)s 6(alues)k 4014(are)s 4361(Lout)s 4873(objects,)s
+5658(possibly)s 6510(with)s 6992(en)s 9(vironments,)k 8393(written)s
+0 11439(in)m 290(Lout)s 850(source.)s 1685(Operations)s 2833(are)s
+3227(pro)s 3(vided)k 4181(for)s 4566(writing)s 5357(an)s
+5687(entry)s 15(,)k 6318(con)s 9(v)k 3(erting)k
+7429(from)s 8001(writable)s 8887(to)s 0 11151(readable,)m 916(retrie)s 6(v)k 6(al)k
+1753(by)s 2047(k)s 2(e)k 3(y)k 15(,)k
+2480(and)s 2884(sequential)s 3908(retrie)s 6(v)k 6(al)k
+4745(in)s 4988(k)s 2(e)k 3(y)k 5383(order)s 13(.)k
+480 10777(The)m 905(implementation,)s 2509(which)s 3148(is)s 3354(quite)s
+3885(unsophisticated,)s 5477(emplo)s 2(ys)k 6334(one)s 6732(or)s
+6988(more)s 7532(ASCII)s 240 fnt3 8208 10779(database)m 0 10491(\207les)m
+240 fnt1 380 10489(,)m 485(containing)s 1545(the)s 1891(v)s 6(alues,)k
+2600(and)s 3001(one)s 3401(ASCII)s 240 fnt3 4078 10491(inde)m 4(x)k
+4650(\207le)s 240 fnt1 4992 10489(per)m 5354(database,)s 6282(containing)s
+7342(the)s 7688(k)s 2(e)k 3(ys.)k 8283(T)s 19(o)k
+8580(write)s 0 10201(an)m 283(entry)s 15(,)k 866(the)s
+1214(v)s 6(alue)k 1782(is)s 1992(\207rst)s 2423(appended)s
+3399(to)s 3638(a)s 3804(database)s 4683(\207le,)s 5095(then)s
+5564(a)s 5730(line)s 6144(lik)s 2(e)k 220 fnt5
+480 9700(@Chapter&&intro ch1.ld 57)m 240 fnt1 0 9204(is)m 204(appended)s 1174(to)s
+1406(the)s 1748(inde)s 3(x)k 2326(\207le,)s 2731(gi)s 6(ving)k
+3384(the)s 3725(\207le)s 4080(and)s 4478(of)s 6(fset)k
+5068(where)s 5702(the)s 6043(v)s 6(alue)k 6605(is)s
+6809(stored.)s 7550(T)s 19(o)k 7844(con)s 9(v)k 3(ert)k
+8602(from)s 0 8916(writable)m 831(to)s 1062(readable,)s 1971(the)s
+2311(inde)s 3(x)k 2887(\207le)s 3241(is)s 3443(sorted.)s
+4183(Then)s 4725(retrie)s 6(v)k 6(al)k 5554(by)s
+5840(k)s 2(e)k 3(y)k 6228(requires)s 7040(a)s
+7198(binary)s 7856(search)s 8515(of)s 8778(the)s 0 8628(inde)m 3(x)k
+584(\207le)s 945(and)s 1349(one)s 1751(seek)s 2237(into)s
+2662(a)s 2828(database)s 3707(\207le,)s 4119(and)s 4523(sequential)s
+5547(retrie)s 6(v)k 6(al)k 6384(by)s 6678(k)s 2(e)k 3(y)k
+7073(is)s 7283(tri)s 6(vial.)k 480 8254(This)m 945(database)s
+1813(system)s 2526(is)s 2725(used)s 3211(in)s 3443(se)s 6(v)k 3(eral)k
+4154(w)s 2(ays.)k 4797(F)s 3(or)k 5175(an)s
+5447(e)s 3(xternal)k 6257(database,)s 7176(say)s 7538(of)s
+7798(bibliographic)s 0 7966(references,)m 1093(the)s 1447(user)s 1912(creates)s
+2631(the)s 2985(database)s 3871(\207le)s 4238(of)s 4516(v)s 6(alues)k
+5178(\(without)s 6054(en)s 9(vironments\),)k 7540(Lout)s 8058(creates)s
+8778(the)s 0 7678(inde)m 3(x)k 587(\207le)s 951(whene)s 6(v)k 3(er)k
+1935(it)s 2130(cannot)s 2831(\207nd)s 3265(one,)s 3721(and)s
+4128(retrie)s 6(v)k 6(als)k 5057(by)s 5354(k)s 2(e)k 3(y)k
+5752(proceed)s 6570(as)s 6823(usual.)s 7495(Cross)s 8095(references)s
+0 7390(with)m 476(tags)s 906(other)s 1451(than)s 220 fnt5
+1913 7387(preceding)m 240 fnt1 2918 7390(and)m 220 fnt5 3316 7387(f)m 6(ollo)k 3(wing)k
+240 fnt1 4200 7390(are)m 4540(treated)s 5241(as)s 5485(described)s
+6453(abo)s 3(v)k 3(e,)k 7119(by)s 7407(writing)s
+8144(all)s 8430(tagged)s 0 7102(in)m 9(v)k 4(ocations)k
+1131(\(with)s 1681(en)s 9(vironments\))k 3092(to)s 3320(a)s
+3475(single)s 4092(database,)s 5011(which)s 5643(is)s 5842(con)s 9(v)k 3(erted)k
+6820(to)s 7049(readable)s 7903(at)s 8125(the)s 8462(end)s
+8855(of)s 0 6814(the)m 334(run)s 695(for)s 1018(retrie)s 6(v)k 6(als)k
+1930(on)s 2212(the)s 2545(ne)s 3(xt)k 3000(run.)s
+3468(Sorted)s 4135(g)s 1(alle)k 3(ys,)k 4900(such)s
+5382(as)s 5617(inde)s 3(x)k 6186(entries,)s 6915(are)s
+7247(written)s 7965(out)s 8316(inde)s 3(x)k 3(ed)k
+0 6526(by)m 307(tar)s 4(get)k 920(and)s 1337(k)s 2(e)k 3(y)k
+1746(and)s 2163(retrie)s 6(v)k 3(ed)k 3074(sequentially)s
+4297(on)s 4607(the)s 4969(ne)s 3(xt)k 5451(run.)s
+5948(Unsorted)s 6896(g)s 1(alle)k 3(ys)k 7634(with)s
+8130(preceding)s 0 6238(tar)m 4(gets)k 684(which)s 1327(pop)s
+1741(of)s 6(f)k 2086(the)s 2435(top)s 2795(of)s
+3067(the)s 3416(root)s 3863(g)s 1(alle)k 3(y)k
+4498(without)s 5290(\207nding)s 6023(a)s 6190(tar)s 4(get,)k
+6837(such)s 7334(as)s 7585(entries)s 8273(in)s 8518(tables)s
+0 5950(of)m 274(contents,)s 1181(are)s 1532(treated)s 2242(similarly)s 15(,)k
+3186(e)s 3(xcept)k 3870(that)s 4291(the)s 3(y)k
+4758(are)s 5108(inde)s 3(x)k 3(ed)k 5922(by)s
+6219(tar)s 4(get)k 6821(and)s 7229(a)s 7398(sequence)s
+8335(number)s 0 5662(that)m 418(preserv)s 3(es)k 1368(their)s
+1865(relati)s 6(v)k 3(e)k 2627(order)s 3191(during)s
+3869(the)s 4217(sort.)s 480 5288(When)m 1107(Lout)s 1617(processes)s
+2581(a)s 2745(multi-\207le)s 3687(document,)s 4735(one)s 5135(cross)s
+5674(reference)s 6615(database)s 7492(\207le)s 7850(is)s 8058(written)s
+8788(for)s 0 5000(each)m 504(input)s 1065(\207le,)s 1486(b)s 4(ut)k
+1858(the)s 3(y)k 2330(share)s 2899(a)s 3074(common)s
+3979(inde)s 3(x)k 4572(\207le.)s 5050(At)s 5358(end)s
+5772(of)s 6052(run,)s 6487(the)s 6844(ne)s 6(w)k
+7301(inde)s 3(x)k 7894(\207le)s 8264(is)s 8484(sorted)s
+0 4712(and)m 404(mer)s 4(ged)k 1176(with)s 1658(the)s
+2007(old)s 2371(one)s 2774(in)s 3017(such)s 3514(a)s
+3680(w)s 2(ay)k 4132(as)s 4383(to)s 4622(preserv)s 3(e)k
+5485(entries)s 6172(relating)s 6955(to)s 7194(\207les)s 7644(not)s
+8010(read)s 8480(on)s 8778(the)s 0 4424(current)m 737(run.)s
+1221(This)s 1699(pro)s 3(vides)k 2572(some)s 3135(support)s
+3914(for)s 4254(piecemeal)s 5278(formatting,)s 6395(b)s 4(ut)k
+6758(e)s 6(v)k 3(entually)k 7801(the)s 8150(\207les)s
+8601(must)s 0 4136(all)m 293(be)s 575(formatted)s 1561(together)s 13(.)k
+480 3762(When)m 1120(a)s 220 fnt5 1297 3759(preceding)m 240 fnt1
+2319 3762(or)m 220 fnt5 2590 3759(f)m 6(ollo)k 3(wing)k
+240 fnt1 3491 3762(cross)m 4044(reference)s 4998(is)s 5220(found,)s
+5897(it)s 6100(is)s 6321(attached)s 7187(to)s 7437(a)s
+7614(g)s 1(alle)k 3(y)k 8259(inde)s 3(x)k
+8855(of)s 0 3474(type)m 240 fnt3 474 3476(CR)m 9(OSS_PREC)k
+240 fnt1 1973 3474(or)m 240 fnt3 2238 3476(CR)m 9(OSS_FOLL)k
+240 fnt1 3653 3474(,)m 3766(together)s 4615(with)s 5103(an)s
+5392(automatically)s 6752(generated)s 7745(tag)s 8097(composed)s 0 3186(of)m
+258(the)s 593(current)s 1316(\207le)s 1663(name)s 2224(and)s
+2615(a)s 2767(sequence)s 3687(number)s 13(.)k 4556(When)s
+5172(a)s 5324(tagged)s 6007(in)s 9(v)k 4(ocation)k
+7048(is)s 7244(found,)s 7897(it)s 8076(is)s 8272(attached)s
+0 2898(to)m 237(a)s 240 fnt3 401 2900(CR)m 9(OSS_T)k 12(ARG)k
+240 fnt1 1875 2898(inde)m 3(x.)k 2565(These)s 3190(g)s 1(alle)k 3(y)k
+3822(inde)s 3(x)k 3(es)k 4595(are)s 4940(carried)s
+5658(along)s 6241(through)s 7040(the)s 7386(dynamic)s 8261(tree,)s
+8722(and)s 0 2610(e)m 6(v)k 3(entually)k 1049(pop)s
+1470(of)s 6(f)k 1822(the)s 2178(top)s 2545(of)s
+2824(the)s 3180(root)s 3633(g)s 1(alle)k 3(y)k 15(,)k
+4313(at)s 4553(which)s 5203(point)s 5763(it)s 5963(is)s
+6181(easy)s 6668(to)s 6915(determine)s 7934(which)s 8584(cross)s
+0 2322(references)m 1029(refer)s 1536(to)s 1773(which)s 2413(in)s 9(v)k 4(ocations,)k
+3608(since)s 4153(the)s 4499(inde)s 3(x)k 3(es)k
+5273(are)s 5618(no)s 6(w)k 6077(in)s 6318(\207nal)s
+6796(printed)s 7529(document)s 8531(order)s 13(.)k 0 2034(Each)m
+541(referenced)s 1613(in)s 9(v)k 4(ocation)k 2674(is)s
+2891(then)s 3367(written)s 4107(to)s 4353(the)s 4708(cross)s
+5257(reference)s 6207(database,)s 7144(multiply)s 8015(inde)s 3(x)k 3(ed)k
+8832(by)s 0 1746(the)m 344(generated)s 1327(tags)s 1758(of)s
+2025(the)s 2369(associated)s 3404(cross)s 3942(references.)s 5082(On)s
+5427(the)s 5771(ne)s 3(xt)k 6236(run,)s 6657(when)s
+7229(the)s 7573(same)s 220 fnt5 8115 1743(preceding)m 240 fnt1
+0 1458(and)m 220 fnt5 408 1455(f)m 6(ollo)k 3(wing)k
+240 fnt1 1302 1458(cross)m 1848(references)s 2883(are)s 3234(found,)s
+3904(chances)s 4716(are)s 5067(good)s 5609(that)s 6031(the)s
+6383(same)s 6934(tags)s 7374(will)s 7804(be)s 8090(generated,)s
+0 1170(and)m 404(the)s 752(appropriate)s 1896(v)s 6(alues)k
+2552(can)s 2941(be)s 3223(retrie)s 6(v)k 3(ed)k
+4120(from)s 4644(the)s 4992(database)s 5871(immediately)s 15(.)k
+480 796(This)m 982(approach)s 1942(w)s 2(as)k 2389(the)s
+2763(genesis)s 3544(of)s 3842(the)s 220 fnt5 4216 793(@T)m 26(agged)k
+240 fnt1 5231 796(operator)m 9(,)k 6151(whose)s 6845(implementation)s
+8428(is)s 8665(no)s 6(w)k 0 508(immediate:)m 1106(for)s
+1436(each)s 220 fnt5 1923 505(@T)m 26(agged)k 240 fnt1
+2903 508(operator)m 3751(we)s 4078(produce)s 4897(one)s 240 fnt3
+5290 510(CR)m 9(OSS_PREC)k 240 fnt1 6775 508(or)m 240 fnt3
+7026 510(CR)m 9(OSS_FOLL)k 240 fnt1 8492 508(g)m 1(alle)k 3(y)k
+0 220(inde)m 3(x,)k 645(replacing)s 1596(the)s 1953(generated)s
+2949(tag)s 3304(with)s 3795(the)s 4152(right)s 4672(parameter)s
+5696(of)s 5976(the)s 220 fnt5 6333 217(@T)m 26(agged)k
+240 fnt1 7331 220(operator)m 13(.)k 8288(Nothing)s
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 38 39
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt2 vec2 /Times-Bold LoutRecode
+/fnt2 { /Times-Boldfnt2 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt3 vec2 /Times-Italic LoutRecode
+/fnt3 { /Times-Italicfnt3 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5708 -1579(-)m 5836(38)s 6123(-)s 9066 13416 0 13307 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+0 13253(more)m 547(is)s
+757(required.)s 240 fnt2 0 12460(7.)m 291(Conclusion)s
+[ /Dest /LOUT18_694_s7_0_1 /DEST pdfmark
+240 fnt1
+480 12028(Since)m 1054(its)s 1316(public)s 1953(release)s 2657(in)s
+2886(October)s 3702(1991,)s 4275(the)s 4609(Basser)s 5292(Lout)s
+5790(interpreter)s 6829(has)s 7185(been)s 7680(ported)s 8335(without)s
+0 11740(incident)m 819(to)s 1047(a)s 1202(wide)s 1712(v)s 6(ariety)k
+2412(of)s 2672(Unix)s 3195(systems)s 3992(and)s 4385(hardw)s 2(are.)k
+5425(It)s 5619(w)s 2(as)k 6029(tested)s 6633(e)s 3(xtensi)k 6(v)k 3(ely)k
+7753(before)s 8408(release)s 0 11452(on)m 293(its)s 565(o)s 6(wn)k
+1025(documentation,)s 2549(and)s 2949(the)s 3293(fe)s 6(w)k
+3695(minor)s 4321(b)s 4(ugs)k 4817(which)s 5455(ha)s 4(v)k 3(e)k
+5952(emer)s 4(ged)k 6824(since)s 7367(then)s 7832(ha)s 4(v)k 3(e)k
+8329(all)s 8617(been)s 0 11164(\207x)m 3(ed)k 534(in)s
+777(the)s 1125(second)s 1848(release,)s 2617(scheduled)s 3632(to)s
+3871(appear)s 4568(in)s 4811(mid-1992.)s 480 10790(Se)m 6(v)k 3(en)k
+1105(substantial)s 2173(packages)s 3093(of)s 3355(de\207nitions)s 4407(are)s
+4746(distrib)s 4(uted)k 5813(with)s 6286(Basser)s 6975(Lout.)s
+7582(The)s 8001(Document-)s 0 10502(Layout)m 748(package,)s 1649(and)s
+2063(its)s 2349(v)s 6(ariants)k 3160(ReportLayout)s 4560(and)s
+4974(BookLayout,)s 6289(pro)s 3(vide)k 7083(the)s 7441(standard)s
+8320(features)s 0 10214(that)m 411(all)s 696(documents)s 1776(require:)s
+2610(pages,)s 3254(columns,)s 4165(paragraphs,)s 5313(headings,)s 6263(footnotes,)s
+7252(\210oating)s 8028(\207gures)s 8722(and)s 0 9926(tables,)m 683(chapters)s
+1550(and)s 1974(sections,)s 2871(displays)s 3726(and)s 4150(lists,)s
+4660(access)s 5341(to)s 5600(bibliographic)s 6948(databases,)s 7991(cross)s
+8553(refer)s 4(-)k 0 9638(ences,)m 623(and)s 1012(so)s
+1263(on)s 1545([11].)s 2092(The)s 2505(BookLayout)s 3748(package)s
+4572(has)s 4927(e)s 3(xtra)k 5446(features)s 6237(needed)s
+6958(by)s 7237(books,)s 7902(including)s 8843(an)s 0 9350(automatically)m
+1354(generated)s 2342(table)s 2863(of)s 3135(contents,)s 4040(Roman)s
+4790(page)s 5298(numbers)s 6174(for)s 6513(the)s 6862(pref)s 2(atory)k
+7790(material,)s 8679(run-)s 0 9062(ning)m 468(page)s 965(headers,)s
+1790(odd)s 2197(and)s 2589(e)s 6(v)k 3(en)k
+3078(page)s 3574(layouts,)s 4361(and)s 4754(a)s 4908(sorted)s
+5539(inde)s 3(x.)k 6220(The)s 6637(Eq)s 6949(package)s
+7778(formats)s 8546(equa-)s 0 8774(tions,)m 572(and)s 976(P)s 3(as)k
+1356(formats)s 2136(P)s 3(ascal)k 2798(programs)s 3752([10];)s
+4262(T)s 19(ab)k 4668(formats)s 5448(tables)s 6056([12];)s
+6566(and)s 6970(Fig)s 7342(dra)s 3(ws)k 7961(\207gures)s
+8663([6].)s 480 8400(The)m 899(non-e)s 3(xpert)k 1983(user)s
+2431(who)s 2888(uses)s 3341(these)s 3879(packages)s 4797(percei)s 6(v)k 3(es)k
+5732(a)s 5889(system)s 6603(of)s 6865(a)s 7021(standard)s
+7880(quite)s 8404(similar)s 0 8112(to)m 246(other)s 804(fully)s
+1317(de)s 6(v)k 3(eloped)k 2357(batch)s 2940(formatters,)s
+4034(although)s 4936(the)s 5292(interf)s 2(ace)k 6187(is)s
+6405(considerably)s 7688(more)s 8243(coherent)s 0 7824(than,)m 525(say)s 15(,)k
+942(the)s 1297(trof)s 6(f)k 1792(f)s 2(amily')k 13(s)k
+2630([8].)s 3078(The)s 3512(e)s 3(xpert)k 4173(user)s
+4637(percei)s 6(v)k 3(es)k 5588(a)s 5760(system)s
+6490(which)s 7139(is)s 7355(radically)s 8251(dif)s 6(ferent)k
+0 7536(from)m 547(pre)s 6(vious)k 1440(ones,)s 2009(in)s
+2276(which)s 2941(a)s 3131(great)s 3691(deal)s 4168(can)s
+4580(be)s 4886(achie)s 6(v)k 3(ed)k 5808(v)s 3(ery)k
+6308(quickly)s 15(.)k 7198(T)s 19(o)k 7522(tak)s 2(e)k
+7997(an)s 8304(e)s 3(xtreme)k 0 7248(e)m 3(xample,)k
+936(P)s 3(as)k 1338(w)s 2(as)k 1781(designed,)s
+2761(implemented,)s 4138(tested,)s 4825(and)s 5251(documented)s 6501(in)s
+6766(one)s 7190(afternoon.)s 8292(Eq)s 8639(took)s 0 6960(about)m
+587(a)s 747(week,)s 1353(b)s 4(ut)k 1709(most)s
+2229(of)s 2494(that)s 2906(time)s 3380(w)s 2(as)k
+3796(spent)s 4355(in)s 4592(marshalling)s 5767(the)s 6110(v)s 6(ast)k
+6543(repertoire)s 7520(of)s 7785(mathematical)s 0 6672(symbols,)m 934(and)s
+1367(\207ne-tuning)s 2499(the)s 2876(spacing.)s 3800(Most)s 4381(of)s
+4681(the)s 5059(ef)s 6(fort)k 5671(seems)s 6335(to)s
+6603(go)s 6925(into)s 7379(designing)s 8392(a)s 8588(good)s
+0 6384(interf)m 2(ace;)k 944(most)s 1469(symbols)s 2318(are)s
+2665(implemented)s 3971(in)s 4214(just)s 4619(one)s 5021(or)s
+5280(a)s 5446(fe)s 6(w)k 5852(lines)s 6354(of)s
+6625(Lout.)s 480 6010(A)m 698(group)s 1297(of)s 1556(about)s
+2135(20)s 2418(satis\207ed)s 3246(non-e)s 3(xpert)k 4327(users)s
+4856(has)s 5214(gro)s 6(wn)k 5864(up)s 6145(within)s
+6800(the)s 7136(author')s 13(s)k 7944(department,)s 0 5722(mainly)m
+703(Honours)s 1563(students)s 2383(with)s 2849(no)s 3127(in)s 9(v)k 3(estment)k
+4208(in)s 4436(older)s 4971(systems)s 5764(to)s 5987(hold)s
+6456(them)s 6978(back.)s 7579(Basser)s 8260(Lout)s 8756(has)s
+0 5434(been)m 511(adv)s 3(ertised)k 1550(on)s 1849(the)s
+2199(Internet)s 3003(ne)s 6(ws)k 3542(as)s 3794(a)s 4(v)k 6(ailable)k
+4704(via)s 5058(anon)s 3(ymous)k 240 fnt3 6213 5436(ftp)m
+240 fnt1 6458 5434(,)m 6567(so)s 6835(the)s 7185(e)s 3(xtent)k
+7828(of)s 8101(its)s 8379(outside)s 0 5146(user)m 469(community)s
+1624(is)s 1845(hard)s 2339(to)s 2589(g)s 1(auge.)k
+3335(About)s 4005(50)s 4311(people)s 5016(ha)s 4(v)k 3(e)k
+5528(mailed)s 6247(comments)s 7292(or)s 7562(questions)s 8528(to)s
+8778(the)s 0 4858(author;)m 733(man)s 3(y)k 1327(of)s
+1608(these)s 2166(people)s 2871(ha)s 4(v)k 3(e)k
+3382(ported)s 4062(the)s 4420(program,)s 5348(written)s 6092(small)s
+6674(de\207nitions,)s 7802(and)s 8217(modi\207ed)s 0 4570(the)m 348(standard)s
+1216(packages.)s 480 4196(Future)m 1160(w)s 2(ork)k 1711(could)s
+2300(usefully)s 3124(be)s 3(gin)k 3709(with)s 4191(the)s
+4539(impro)s 3(v)k 3(ements)k 5951(suggested)s 6953(in)s
+7195(this)s 7591(paper:)s 8287(o)s 3(v)k 3(erlap-)k
+0 3908(ping)m 489(spanning)s 1418(columns,)s 2346(better)s 2960(semantics)s
+3964(for)s 4312(a)s 4(v)k 6(ailable)k 5231(space,)s
+5880(and)s 6294(especially)s 7314(horizontal)s 8349(g)s 1(alle)k 3(ys.)k
+0 3620(Support)m 814(for)s 1147(non-)s 1575(European)s 2544(languages)s
+3547(is)s 3752(also)s 4185(needed.)s 5022(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
+5977(the)s 6320(main)s 6850(task)s 7291(is)s 7496(the)s
+7839(de)s 6(v)k 3(elopment)k 0 3332(of)m 271(an)s
+553(interacti)s 6(v)k 3(e)k 1607(document)s 2610(editor)s
+3227(based)s 3829(on)s 4126(Lout.)s 4741(A)s 4971(structure)s
+5861(editor)s 6478(similar)s 7199(to)s 7438(Lilac)s 7980([13],)s
+8484(which)s 0 3044(already)m 753(has)s 1119(objects)s 1843(and)s
+2243(user)s 4(-)k 2705(de\207ned)s 3463(symbols,)s 4364(is)s
+4570(en)s 9(visaged;)k 5626(since)s 6168(cross)s 6706(references)s
+7733(are)s 8076(easy)s 8550(when)s 0 2756(the)m 343(whole)s
+979(document)s 1977(is)s 2182(a)s 4(v)k 6(ailable,)k
+3135(the)s 3478(only)s 3953(major)s 4564(ne)s 6(w)k
+5006(problem)s 5857(is)s 6062(the)s 6405(treatment)s 7360(of)s
+7626(g)s 1(alle)k 3(ys,)k 8400(includ-)s 0 2468(ing)m
+359(the)s 707(e)s 3(xpansion)k 1732(and)s 2136(retraction)s
+3107(of)s 3378(recepti)s 6(v)k 3(e)k 4300(symbols.)s
+240 fnt2 0 1719(Note.)m 240 fnt1 657 1720(Since)m 1253(the)s
+1610(abo)s 3(v)k 3(e)k 2240(w)s 2(as)k
+2670(written)s 3412(the)s 3768(author)s 4448(has)s 4827(completed)s
+5889(a)s 6064(re)s 6(vised)k 6815(v)s 3(ersion)k
+7581(of)s 7861(Basser)s 8567(Lout,)s 0 1432(in)m 243(which)s
+885(the)s 1233(problem)s 2090(concerning)s 3206(a)s 4(v)k 6(ailable)k
+4114(space)s 4701(mentioned)s 5769(in)s 6012(Section)s 6786(2.5)s
+7132(has)s 7502(been)s 8011(resolv)s 3(ed.)k 240 fnt2
+0 683(Ackno)m 2(wledgment.)k 240 fnt1 2027 684(The)m 2534(author)s
+3283(gratefully)s 4344(ackno)s 6(wledges)k 5824(man)s 3(y)k
+6485(v)s 6(aluable)k 7424(discussions)s 8644(with)s 0 396(Douglas)m
+862(W)s 22(.)k 1183(Jones,)s 1835(especially)s 2857(during)s
+3548(the)s 3909(de)s 6(v)k 3(elopment)k 5209(of)s
+5493(the)s 5854(g)s 1(alle)k 3(y)k 6501(abstraction;)s
+7674(and)s 8091(also)s 8543(man)s 3(y)k 0 108(helpful)m
+732(comments)s 1766(on)s 2063(presentation)s 3288(by)s 3582(the)s
+3930(anon)s 3(ymous)k 5083(referee.)s
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 39 40
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt2 vec2 /Times-Bold LoutRecode
+/fnt2 { /Times-Boldfnt2 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt3 vec2 /Times-Italic LoutRecode
+/fnt3 { /Times-Italicfnt3 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+0.0 0.0 0.0 LoutSetRGBColor
+5706 -1579(-)m 5834(39)s 6125(-)s 9066 13414 0 13414 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+240 fnt2 0 12961(Refer)m 4(ences)k
+240 fnt1 0 12507(1.)m 480(Kingston,)s 1501(Jef)s 6(fre)k 3(y)k
+2244(H..)s 2677(Document)s 3770(F)s 3(ormatting)k 4918(with)s
+5436(Lout)s 5888(.)s 6088(T)s 16(ech.)k 6690(Rep.)s
+7216(408)s 7659(\(1991\))s 8286(,)s 8429(Basser)s 480 12219(Department)m
+1668(of)s 1939(Computer)s 2956(Science,)s 3806(The)s 4234(Uni)s 6(v)k 3(ersity)k
+5288(of)s 5559(Sydne)s 3(y)k 15(,)k 6367(Australia)s
+7242(.)s
+[ /Dest /LOUT12_1794_s7_0_1 /DEST pdfmark
+0 11716(2.)m 480(Kingston,)s 1492(Jef)s 6(fre)k 3(y)k
+2227(H..)s 2652(A)s 2910(ne)s 6(w)k 3385(approach)s
+4347(to)s 4613(document)s 5645(formatting)s 6646(.)s 6838(T)s 16(ech.)k
+7432(Rep.)s 7950(412)s 8392(\(1991\))s 9019(,)s 480 11428(Basser)m
+1177(Department)s 2365(of)s 2636(Computer)s 3653(Science,)s 4503(The)s
+4931(Uni)s 6(v)k 3(ersity)k 5985(of)s 6256(Sydne)s 3(y)k 15(,)k
+7064(Australia)s 7939(.)s
+[ /Dest /LOUT12_1794_s7_0_2 /DEST pdfmark
+0 10925(3.)m 480(Kingston,)s 1491(Jef)s 6(fre)k 3(y)k
+2224(H..)s 2647(The)s 3101(Basser)s 3824(Lout)s 4362(Document)s
+5445(F)s 3(ormatter)k 6383(,)s 6516(1991)s 6971(.)s
+7161(Computer)s 8204(program;)s 480 10637(V)m 26(ersion)k 1287(2)s
+1480(publicly)s 2337(a)s 4(v)k 6(ailable)k 3264(in)s
+3526(the)s 240 fnt3 3893 10639(pub)m 240 fnt1 4326 10637(subdirectory)m
+5595(of)s 5885(the)s 6252(home)s 6859(directory)s 7794(of)s
+240 fnt3 8084 10639(ftp)m 240 fnt1 8408 10637(to)m 8667(host)s
+240 fnt3 480 10351(ftp.cs.su.oz.au)m 240 fnt1 1924 10349(with)m 2439(login)s
+3021(name)s 240 fnt3 3628 10351(anonymous)m 240 fnt1 4808 10349(and)m
+5246(no)s 5572(passw)s 2(ord.)k 6671(Distrib)s 4(ution)k
+7912(via)s 8297(email)s 8916(is)s 480 10061(a)m 4(v)k 6(ailable)k
+1388(for)s 1726(non-)s 240 fnt3 2154 10063(ftp)m 240 fnt1
+2459 10061(sites.)m 3047(All)s 3407(enquiries)s 4334(to)s 4573(jef)s 6(f@cs.su.oz.au.)k
+
+[ /Dest /LOUT12_1794_s7_0_3 /DEST pdfmark
+0 9558(4.)m 480(Furuta,)s 1211(Richard,)s 2075(Sco\207eld,)s 2965(Jef)s 6(fre)k 3(y)k 15(,)k
+3710(and)s 4113(Sha)s 3(w)k 15(,)k 4734(Alan.)s
+5363(Document)s 6419(formatting)s 7480(systems:)s 8402(surv)s 3(e)k 3(y)k 15(,)k
+480 9270(concepts,)m 1424(and)s 1828(issues)s 2390(.)s 240 fnt3
+2554 9272(Computing)m 3673(Surve)s 7(ys)k 240 fnt2 4465 9269(14)m
+240 fnt1 4699 9270(,)m 4806(417\211472)s 5700(\(1982\))s 6327(.)s
+
+[ /Dest /LOUT12_1794_s7_0_4 /DEST pdfmark
+0 8765(5.)m 480(K)s 6(ernighan,)k 1645(Brian)s 2287(W)s 22(.)k
+2649(and)s 3107(Cherry)s 15(,)k 3917(Lorinda)s 4789(L..)s
+5213(A)s 5497(system)s 6275(for)s 6667(typesetting)s 7824(mathematics)s
+9022(.)s 240 fnt3 480 8479(Communications)m 2158(of)s 2439(the)s
+2784(A)s 7(CM)k 240 fnt2 3351 8476(18)m 240 fnt1
+3585 8477(,)m 3692(182\211193)s 4576(\(1975\))s 5203(.)s
+[ /Dest /LOUT12_1794_s7_0_5 /DEST pdfmark
+0 7977(6.)m
+480(Kingston,)s 1488(Jef)s 6(fre)k 3(y)k 2218(H..)s
+2638(Fig)s 3033(\211)s 3236(a)s 3425(Lout)s 3961(package)s
+4824(for)s 5185(dra)s 3(wing)k 6042(\207gures)s 6684(.)s
+6871(T)s 16(ech.)k 7460(Rep.)s 7973(411)s 8392(\(1991\))s
+9019(,)s 480 7689(Basser)m 1177(Department)s 2365(of)s 2636(Computer)s
+3653(Science,)s 4503(The)s 4931(Uni)s 6(v)k 3(ersity)k
+5985(of)s 6256(Sydne)s 3(y)k 15(,)k 7064(Australia)s
+7939(.)s
+[ /Dest /LOUT12_1794_s7_0_6 /DEST pdfmark
+0 7184(7.)m 480(Reid,)s 1042(Brian)s 1634(K..)s
+2034(A)s 2268(High-)s 2815(Le)s 6(v)k 3(el)k
+3409(Approach)s 4413(to)s 4656(Computer)s 5677(Document)s 6737(Production)s
+7784(.)s 7952(In)s 240 fnt3 8212 7186(Pr)m 10(oceed-)k
+480 6898(ings)m 934(of)s 1216(the)s 1562(7th)s 1924(Symposium)s
+3072(on)s 3367(the)s 3713(Principles)s 4751(of)s 5033(Pr)s 10(o)k 2(gr)k 3(amming)k
+6417(Langua)s 2(g)k 2(es)k 7521(\(POPL\),)s 8371(Las)s
+8773(V)s 26(e-)k 480 6610(gas)m 868(NV)s 240 fnt1
+1192 6608(,)m 1299(pages)s 1895(24\21131)s 2470(,)s 2577(1980)s
+3052(.)s
+[ /Dest /LOUT12_1794_s7_0_7 /DEST pdfmark
+0 6103(8.)m 480(Joseph)s 1207(F)s 19(.)k
+1443(Ossanna.)s 2436(Nrof)s 6(f/T)k 8(rof)k 6(f)k
+3605(User')s 13(s)k 4284(Manual)s 5010(.)s 5193(T)s 16(ech.)k
+5777(Rep.)s 6285(54)s 6597(\(1976\))s 7224(,)s 7349(Bell)s
+7821(Laboratories)s 9019(,)s 480 5815(Murray)m 1251(Hill,)s 1729(NJ)s
+2051(07974)s 2645(.)s
+[ /Dest /LOUT12_1794_s7_0_8 /DEST pdfmark
+0 5310(9.)m 480(Knuth,)s 1186(Donald)s
+1949(E..)s 240 fnt3 2319 5312(The)m 2731(T)s 2882 5264(E)m
+3033 5312(XBook)m 240 fnt1 3675 5310(.)m 3839(Addison-W)s 19(esle)k 3(y)k
+5419(,)s 5526(1984)s 6000(.)s
+[ /Dest /LOUT12_1794_s7_0_9 /DEST pdfmark
+0 4807(10.)m 480(Kingston,)s
+1485(Jef)s 6(fre)k 3(y)k 2212(H..)s 2629(Eq)s
+2973(\211)s 3173(a)s 3359(Lout)s 3892(package)s 4752(for)s
+5110(typesetting)s 6232(mathematics)s 7430(.)s 7614(T)s 16(ech.)k
+8200(Rep.)s 8711(410)s 480 4519(\(1991\))m 1107(,)s 1248(Basser)s
+1980(Department)s 3203(of)s 3509(Computer)s 4561(Science,)s 5446(The)s
+5909(Uni)s 6(v)k 3(ersity)k 6998(of)s 7304(Sydne)s 3(y)k 15(,)k
+8147(Australia)s 9022(.)s 480 4231(\(Contains)m 1461(an)s 1744(appendix)s
+2677(describing)s 3726(the)s 4074(P)s 3(as)k 4454(P)s 3(ascal)k
+5116(formatter)s 13(.\))k
+[ /Dest /LOUT12_1794_s7_0_10 /DEST pdfmark
+0 3728(11.)m 480(Kingston,)s 1478(Jef)s 6(fre)k 3(y)k
+2198(H..)s 2608(A)s 2851(be)s 3(ginners')k 3903(guide)s
+4504(to)s 4756(Lout)s 5208(.)s 5385(T)s 16(ech.)k
+5964(Rep.)s 6467(409)s 6891(\(1991\))s 7518(,)s 7638(Basser)s
+8348(Depart-)s 480 3440(ment)m 1018(of)s 1289(Computer)s 2306(Science,)s
+3156(The)s 3584(Uni)s 6(v)k 3(ersity)k 4638(of)s
+4909(Sydne)s 3(y)k 15(,)k 5717(Australia)s 6592(.)s
+
+[ /Dest /LOUT12_1794_s7_0_11 /DEST pdfmark
+0 2937(12.)m 480(Kingston,)s 1475(Jef)s 6(fre)k 3(y)k
+2193(H..)s 2600(T)s 19(ab)k 3017(\211)s 3207(a)s
+3384(Lout)s 3907(package)s 4757(for)s 5106(formatting)s 6177(tables)s
+6725(.)s 6900(T)s 16(ech.)k 7476(Rep.)s 7977(413)s
+8392(\(1991\))s 9019(,)s 480 2649(Basser)m 1177(Department)s 2365(of)s
+2636(Computer)s 3653(Science,)s 4503(The)s 4931(Uni)s 6(v)k 3(ersity)k
+5985(of)s 6256(Sydne)s 3(y)k 15(,)k 7064(Australia)s
+7939(.)s
+[ /Dest /LOUT12_1794_s7_0_12 /DEST pdfmark
+0 2146(13.)m 480(Brooks,)s 1279(K)s 6(enneth)k
+2141(P)s 26(..)k 2472(Lilac:)s 3068(a)s 3234(tw)s 2(o-vie)k 6(w)k
+4183(document)s 5187(editor)s 5744(.)s 240 fnt3 5908 2148(IEEE)m
+6490(Computer)s 240 fnt1 7453 2146(,)m 7560(7\21119)s 8091(\(1991\))s
+8718(.)s
+[ /Dest /LOUT12_1794_s7_0_13 /DEST pdfmark
+
+grestore
+0 0 0 0 240 288 60 1417 -15423 LoutGr2
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Trailer
+%%DocumentNeededResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Symbol
+%%+ font Helvetica
+%%DocumentSuppliedResources: procset LoutStartUp
+%%+ procset LoutTabPrependGraphic
+%%+ procset LoutFigPrependGraphic
+%%+ procset LoutBasicSetup
+%%+ encoding vec2
+%%Pages: 40
+%%EOF
diff --git a/doc/doc/design/s1_0 b/doc/doc/design/s1_0
new file mode 100644
index 0000000..ca487ba
--- /dev/null
+++ b/doc/doc/design/s1_0
@@ -0,0 +1,45 @@
+@Section
+ @Title { Introduction }
+@Begin
+@PP
+Lout [1, 2] is a high-level language
+for document formatting, designed and implemented by the author. The
+implementation, known as Basser Lout, is a fully operational production
+version written in C for the Unix operating system,
+@FootNote { Unix is a trademark of "AT&T" Bell Laboratories. }
+which translates Lout source code into PostScript,
+@FootNote { PostScript is a trademark of Adobe Systems, Incorporated. }
+a device-independent graphics rendering language accepted by many
+high-resolution output devices, including most laser printers. Basser
+Lout is available free of charge [3]. It includes
+installation instructions, C source, seven standard packages, and complete
+documentation in the form of six technical reports and a manual page.
+@PP
+The Lout project arose out of the author's desire to bring to document
+formatting languages the elegance of expression found in programming
+languages like Algol-60 and Pascal. This emphasis on expressiveness
+has produced an order of magnitude reduction in the cost of developing
+document formatting applications. For example, an equation formatting
+application, which may be difficult or impossible to add to other
+systems, can be written in Lout in a few days.
+@PP
+When expert users can implement such applications quickly, non-experts
+benefit. Although Lout itself provides only a small kernel of carefully
+chosen primitives, packages written in Lout and distributed with Basser
+Lout provide an unprecedented array of advanced features in a form
+accessible to non-expert users. The features include rotation and scaling,
+fonts, paragraph and page breaking, displays and lists, floating figures
+and tables, footnotes, chapters and sections (automatically numbered),
+running page headers and footers, odd-even page layouts, automatically
+generated tables of contents, sorted indexes and reference lists,
+bibliographic and other databases (including databases of formats for
+printing references), equations, tables, diagrams, formatting of
+Pascal programs, and automatically maintained cross references.
+@PP
+This paper charts the evolution of Lout from conception in mid-1984 to the
+public release of Basser Lout in October 1991. Lout is organized around
+four key concepts -- objects, definitions, galleys, and cross references --
+and they were developed in the order listed, so this paper will treat each
+in turn, discussing its design, implementation, problems, and
+prospects for further improvement.
+@End @Section
diff --git a/doc/doc/design/s2_0 b/doc/doc/design/s2_0
new file mode 100644
index 0000000..ef4bea7
--- /dev/null
+++ b/doc/doc/design/s2_0
@@ -0,0 +1,14 @@
+@Section
+ @Title { Objects }
+@Begin
+@PP
+The essence of any move to a higher level is the introduction of some
+abstraction which serves to organize the low-level operations,
+resulting in a more succinct expression of their
+common combinations at the cost of some loss of detailed control. The
+early part of the Lout project was spent in the development of such an
+abstraction for the building blocks of documents, one which could
+explain, not just the simple phenomena of words, lines, and paragraphs,
+but also the alignment of columns in tables, and the complex nested
+structures of equations.
+@BeginSubSections
diff --git a/doc/doc/design/s2_1 b/doc/doc/design/s2_1
new file mode 100644
index 0000000..4ee4c31
--- /dev/null
+++ b/doc/doc/design/s2_1
@@ -0,0 +1,87 @@
+@SubSection
+ @Tag { genesis }
+ @Title { The genesis of the object abstraction }
+@Begin
+@PP
+When one examines previous document formatting systems [4]
+looking for ideas for abstractions, as the author did in 1984, the Eqn
+formatting language [5] stands out like a beacon. In
+Eqn, a mathematical formula such as
+@ID @Eq { { x sup 2 + 1 } over 4 }
+is produced by typing
+@ID @Code "{ x sup 2 + 1 } over 4"
+in the input file; @Code sup and @Code over are binary operators, and
+braces are used for grouping. This is document formatting at a very
+high level, close to the language of mathematics itself, with all
+reference to font changes and spacing suppressed.
+@PP
+Eqn provides a single data type (let us call it the {@I expression}),
+built up recursively in context-free style: where one expression may appear,
+any expression may appear. This approach is common in algebra and
+programming languages, where its simplicity and expressiveness have long
+been appreciated; but Eqn was the first language to demonstrate its
+utility in document formatting.
+@PP
+Each expression is treated by Eqn as a rectangle with a
+{@I {horizontal axis}}, used for alignment with adjacent expressions:
+@ID @ShowMarks marks { horizontal } @Eq { { x sup 2 + 1 } over 4 }
+The size and rendering of the expression on the printed page are
+known only to the implementation, never explicitly calculated or
+accessed by the user. This prohibition is
+crucial to the maintenance of the context-free property in practice. In
+Lout, for example, equations, figures, tables, and arbitrary objects may
+be mixed together freely. This would be impossible if size information
+was hidden from the implementation in user calculations.
+@PP
+The object abstraction of Lout is a direct descendant of the Eqn
+expression. It employs the same context-free recursive style of construction,
+and each object is treated by Lout as a rectangle:
+@ID @Fig {
+@ShowMarks { 1c @Wide ^| 2c @Wide 0.45c @High ^/ 0.35c @High }
+}
+The horizontal axis, called a @I { row mark } in Lout, has a
+vertical analogue called a {@I {column mark}}, creating a valuable
+symmetry between horizontal and vertical. Multiple column and row marks
+are permitted:
+@ID @OneRow @Fig {
+A:: @Box margin { 0c } paint { grey } { 1.2c @Wide 0.8c @High }
+|1c
+B:: @Box margin { 0c } paint { grey } { 1c @Wide 0.8c @High }
+/0.5c
+C:: @Box margin { 0c } paint { grey } { 0.7c @Wide 0.8c @High }
+|1c
+D:: @Box margin { 0c } paint { grey } { 1.3c @Wide 0.8c @High }
+// @Line linestyle { dashed }
+ from { A@W -- { 0.3 cm 0 } }
+ to { B@W ++ { 1.6 cm 0 } }
+// @Line linestyle { dashed }
+ from { C@W -- { 0.3 cm 0 } }
+ to { D@W ++ { 1.6 cm 0 } }
+// @Line linestyle { dashed }
+ from { A@NW ++ { 0 0.3 cm } }
+ to { C@SW -- { 0 0.3 cm } }
+// @Line linestyle { dashed }
+ from { B@NW ++ { 0.3 cm 0.3 cm } }
+ to { D@SW ++ { 0.3 cm -0.3 cm } }
+}
+so that objects are able to represent tables.
+@PP
+This abstraction has some limitations, the most obvious being the restriction
+of size calculations to rectangular bounding boxes. Non-rectangular and
+disconnected shapes arise naturally in figures and in the characters of
+fonts; the extension to them is conceptually straightforward and might
+help to explain some fine points of layout such as kerning. However,
+there are implementation and language design problems, particularly
+when filling non-rectangular shapes with text, and so the author chose
+to keep to Eqn's rectangles.
+@PP
+A more fundamental limitation of the object abstraction arises from the
+inability of recursive data types to describe cross-linked structures,
+which seem to require some means of naming the multiply referenced
+parts. Lout is obliged to introduce additional abstractions to cope
+with cross linking: galleys for inserting text into pages
+(Section {@NumberOf galleys}), cross references (Section {@NumberOf cross}),
+and labelled points in figure drawing [6]. An
+abstraction closer to hypertext might form a more unified basis for
+these features.
+@End @SubSection
diff --git a/doc/doc/design/s2_2 b/doc/doc/design/s2_2
new file mode 100644
index 0000000..f4a3818
--- /dev/null
+++ b/doc/doc/design/s2_2
@@ -0,0 +1,79 @@
+@SubSection
+ @Tag { lexical }
+ @Title { Grammatical and lexical structure }
+@Begin
+@PP
+If objects are to be constructed like mathematical expressions, the
+natural notation is a functional language based on operators, as in
+Eqn. The grammar of Lout objects is accordingly
+@ID @OneRow @Eq {
+matrix {
+object
+nextcol
+--> above --> above --> above --> above --> above --> above --> above -->
+nextcol
+{ object ``` infixop ``` object }
+labove gap { "1fx" }
+{ prefixop ``` object }
+labove gap { "1fx" }
+{ object ``` postfixop }
+labove gap { "1fx" }
+{ noparsop }
+labove gap { "1fx" }
+{ literalword }
+labove gap { "1fx" }
+{ @Code "{" ``` object ``` @Code "}" }
+labove gap { "1fx" }
+{ object ``` object }
+labove gap { "1fx" }
+}
+}
+where {@Eq {infixop}}, {@Eq {prefixop}}, {@Eq {postfixop}}, and
+{@Eq {noparsop}} are identifiers naming operators which take 0, 1
+or 2 parameters, as shown, and @Eq {literalword} is a sequence of
+non-space characters, or an arbitrary sequence of characters
+enclosed in double quotes. Ambiguities are resolved by precedence
+and associativity.
+@PP
+The last production allows a meaning for expressions such as
+{@Code "{}"}, in which an object is missing. The value of this
+@I {empty object} is a rectangle of size 0 by 0, with one column
+mark and one row mark, that prints as nothing.
+@PP
+The second-last production generates sequences of arbitrary objects
+separated by white space, called {@I paragraphs}. Ignoring
+paragraph breaking for now, the natural meaning is that the two
+objects should appear side by side, and Lout's parser accordingly
+interpolates an infix horizontal concatenation operator (see below)
+between them. This operator is associative, so the grammatical
+ambiguity does no harm. However, the Algol-60 rule that white space
+should be significant only as a separator is necessarily broken by
+Lout in just this one place.
+@PP
+Algol-like languages distinguish literal strings from identifiers by
+enclosing them in quotes, but literals are far too frequent in document
+formatting for this to be viable. The conventional solution is to
+begin identifiers with a special character, and Lout follows Scribe
+[7] in using "`@'" rather than the "`\\'" of troff
+[8] and @TeX [9].
+@PP
+However, Lout takes the unusual step of making an initial "`@'"
+optional. The designers of Eqn apparently considered such
+characters disfiguring in fine-grained input like equations, and
+this author agrees. The implementation is straightforward: "`@'" is
+classed as just another letter, and every word is searched for in
+the symbol table. If it is found, it is an identifier, otherwise it
+is a literal. A warning message is printed when a literal beginning
+with "`@'" is found, since it is probably a mis-spelt identifier. No
+such safety net is possible for identifiers without "`@'".
+@PP
+Equation formatting also demands symbols made from punctuation
+characters, such as @Code "+" and {@Code "<="}. It is traditional to
+allow such symbols to be juxtaposed, which means that the input
+@ID @Code "<=++"
+for example must be interpreted within the lexical analyser by searching
+the symbol table for its prefixes in the order {@Code "<=++"},
+{@Code "<=+"}, {@Code "<="}. Although this takes quadratic time, in
+practice such sequences are too short to make a more sophisticated
+linear method like tries worthwhile.
+@End @SubSection
diff --git a/doc/doc/design/s2_3 b/doc/doc/design/s2_3
new file mode 100644
index 0000000..341ea74
--- /dev/null
+++ b/doc/doc/design/s2_3
@@ -0,0 +1,326 @@
+@SubSection
+ @Tag { objects }
+ @Title { Basic structural operators }
+@Begin
+@PP
+A programming language may be considered complete when it attains the
+power of a Turing machine, but no such criterion seems relevant to
+document formatting. Instead, as the language develops and new
+applications are attempted, deficiencies are exposed and the operator set is
+revised to overcome them.
+@PP
+Lout has a repertoire of 23 primitive operators
+(Figure {@NumberOf primitives}),
+
+@Figure
+ @Caption { The 23 primitive operators of Lout, in order of
+increasing precedence. }
+ @Tag { primitives }
+@Tab
+ vmargin { 0.5vx }
+ @Fmta { @Col @I A ! @Col B }
+{
+@Rowa
+ A { object {@Code "/"}gap object }
+ B { Vertical concatenation with mark alignment }
+@Rowa
+ A { object {@Code "//"}gap object }
+ B { Vertical concatenation with left justification }
+@Rowa
+ A { object {@Code "|"}gap object }
+ B { Horizontal concatenation with mark alignment }
+@Rowa
+ A { object {@Code "||"}gap object }
+ B { Horizontal concatenation with top-justification }
+@Rowa
+ A { object {@Code "&"}gap object }
+ B { Horizontal concatenation within paragraphs }
+@Rowa
+ A { {@Code "@OneCol"} object }
+ B { Hide all but one column mark of @I object }
+@Rowa
+ A { {@Code "@OneRow"} object }
+ B { Hide all but one row mark of @I object }
+@Rowa
+ A { font @Code "@Font" object }
+ B { Render @I object in nominated font }
+@Rowa
+ A { breakstyle @Code "@Break" object}
+ B { Break paragraphs of @I object in nominated style }
+@Rowa
+ A { spacestyle @Code "@Space" object }
+ B { Render spaces between words in nominated style }
+@Rowa
+ A { length {@Code "@Wide"} object }
+ B { Render @I object to width @I length }
+@Rowa
+ A { length {@Code "@High"} object }
+ B { Render @I object to height @I length }
+@Rowa
+ A { {@Code "@HExpand"} object}
+ B { Expand horizontal gaps to fill available space }
+@Rowa
+ A { {@Code "@VExpand"} object}
+ B { Expand vertical gaps to fill available space }
+@Rowa
+ A { {@Code "@HScale"} object }
+ B { Horizontal geometrical scaling to fill available space }
+@Rowa
+ A { {@Code "@VScale"} object }
+ B { Vertical geometrical scaling to fill available space }
+@Rowa
+ A { angle {@Code "@Rotate"} object }
+ B { Rotate @I object by @I angle }
+@Rowa
+ A { PostScript {@Code "@Graphic"} object }
+ B { Escape to graphics language }
+@Rowa
+ A { @Code "@Next" object }
+ B { Add 1 to an object denoting a number }
+@Rowa
+ A { object @Code "@Case" alternatives }
+ B { Select from a set of alternative objects }
+@Rowa
+ A { identifier @Code "&&" object }
+ B { Cross reference }
+@Rowa
+ A { cross-reference @Code "@Open" object }
+ B { Retrieve value from cross reference }
+@Rowa
+ A { cross-reference @Code "@Tagged" object}
+ B { Attach cross referencing tag to object }
+}
+
+which has proven adequate for a wide variety of features, including equations,
+tables, and page layout, and so seems to be reasonably complete in this
+pragmatic sense. In this section we introduce the eight concatenation and
+mark-hiding operators. To them falls the basic task of assembling complex
+objects from simple ones, and they were the first
+to be designed and implemented.
+@PP
+Many of the operators of Eqn can be viewed as building small tables. A
+built-up fraction, for example, has one column and three rows
+(numerator, line, and denominator). Numerous investigations of this
+kind convinced the author that operators capable of assembling the rows
+and columns of tables would suffice for building all kinds of objects.
+@PP
+The simplest objects are empty objects and literal words like
+{@Code metempsychosis}, which have one column mark and one row mark:
+@ID {
+@ShowMarks metempsychosis
+}
+To place two arbitrary objects side by side, we use the infix
+operator {@Code "|"}, denoting horizontal concatenation. For
+example,
+@ID {
+@Code "USA |0.2i Australia"
+}
+produces the object
+@ID {
+@ShowMarks USA |0.2i @ShowMarks Australia
+}
+The row marks are merged into one, fixing the vertical position of
+the objects relative to each other; their horizontal separation is
+determined by the @I gap attached to the operator, in this case 0.2
+inches. We think of the gap as part of the operator, although
+strictly it is a third parameter. It may be omitted, defaulting to
+{@Code "0i"}.
+@PP
+@I {Vertical concatenation} & , denoted by the infix operator {@Code "/"},
+is the same apart from the change of direction:
+@ID {
+@Code "Australia /0.1i USA"
+}
+produces the object
+@ID {
+@ShowMarks Australia /0.1i
+@ShowMarks USA
+}
+with column marks merged and a 0.1 inch gap.
+@PP
+Consider now what happens when horizontal and vertical are combined:
+@ID @OneRow @Code {
+ |1m "{" USA |1m "|0.2i" |1m Australia "}"
+/1vx "/0.1i" | "{" Washington | "|" | Canberra "}"
+}
+The two parameters of @Code "/" now have two column marks each, and
+they will be merged with the corresponding marks in the other
+parameter, yielding the object
+
+@ID @OneRow {
+ @BackEnd @Case {
+ PostScript @Yield {
+ @ShowMarks USA &
+ { 0 ymark moveto xsize 10 pt add ymark lineto [ 3 pt ] 0 setdash stroke }
+ @Graphic {1c @Wide }
+ |0.2i @ShowMarks Australia
+/0.1i @ShowMarks Washington | @ShowMarks Canberra
+ }
+ PDF @Yield {
+ @ShowMarks USA &
+ { [ __mul(3, __pt) ] 0 d 0 __ymark m __add(__xsize, __mul(10, __pt)) __ymark l S }
+ @Graphic {1c @Wide }
+ |0.2i @ShowMarks Australia
+/0.1i @ShowMarks Washington | @ShowMarks Canberra
+ }
+ }
+}
+The @Code "0.2i" gap separates columns, not individual items in
+columns, so a gap attached to the second @Code "|" would serve no
+purpose; any such gap is ignored. If the number of marks to be merged
+differs, empty columns are added at the right to equalize the number. The
+four marks protruding from the result are all available for merging
+with neighbouring marks by other concatenation operators. The precedence
+of @Code "|" is higher than the precedence of {@Code "/"}, so the braces
+could be omitted.
+@PP
+When lines of text are concatenated, it is conventional to measure
+their separation from baseline to baseline (mark to mark in Lout),
+rather than from edge to edge as above. This idea of different
+reference points for measurement evolved over the years into a
+system of six @I {gap modes} (Figure {@NumberOf gapmodes}), expressed
+by appending a letter to the length. For example, @Code "|0.2i" is
+an abbreviation for {@Code "|0.2ie"}, meaning 0.2 inches measured
+from edge to edge; @Code "|0.3ix"
+produces a 0.3 inch gap measured from mark to mark and widened if
+necessary to prevent overstriking; and @Code "|2.5it" places its right
+parameter 2.5 inches from the current left margin, irrespective of
+the position of the left parameter. There is also a choice of
+eleven units of measurement (inches, centimetres, multiples of the
+current font size, etc.), the most interesting being
+the @Code r unit: one @Code r is the column width minus the width of
+the following object, so that @Code "|1rt" produces sufficient space
+to right justify the following object, and @Code "|0.5rt" to center
+it. These features implement spacings needed in practice rather
+than suggested by theory. They work with all five concatenation
+operators, horizontal and vertical.
+
+@Figure
+ @Tag { gapmodes }
+ @Caption { The six gap modes (@I length is any length). Hyphenation
+mode has an extra property not shown here. }
+@Fig {
+{ /2.5vx Edge-to-edge |0.3i {@Code "|"} &1p {@I length} &1p {@Code e}
+ /4.2vx Hyphenation |0.3i {@Code "|"} &1p {@I length} &1p {@Code h}
+ /4.2vx Overstrike |0.3i {@Code "|"} &1p {@I length} &1p {@Code o}
+ /4.2vx Mark-to-mark |0.3i {@Code "|"} &1p {@I length} &1p {@Code x}
+ /4.2vx Kerning |0.3i {@Code "|"} &1p {@I length} &1p {@Code k}
+ /4.2vx Tabulation |0.3i {@Code "|"} &1p {@I length} &1p {@Code t}
+}
+||0.5i
+@Box margin { 0c } 6c @Wide 14.5c @High 9p @Font
+{
+ @OneRow {
+ @At { 1c @Wide 0.5c @High } @Put { @LBox 0.2co }
+ @At { 4c @Wide 0.5c @High } @Put { @LBox 0.5co }
+ @At { 2.2c @Wide 1.4c @High } @Put { @DoubleArrow 1.8c }
+ @At { 2.2c @Wide 1.6c @High } @Put { 1.8c @Wide { &0.5rt @I length } }
+ }
+ //4vx
+ @OneRow {
+ @At { 1c @Wide 0.5c @High } @Put { @LBox 0.2co }
+ @At { 4c @Wide 0.5c @High } @Put { @LBox 0.5co }
+ @At { 2.2c @Wide 1.4c @High } @Put { @DoubleArrow 1.8c }
+ @At { 2.2c @Wide 1.6c @High } @Put { 1.8c @Wide { &0.5rt @I length } }
+ }
+ //4vx
+ @OneRow {
+ @At { 1c @Wide 0.5c @High } @Put { @LBox 0.2co }
+ @At { 4c @Wide 0.5c @High } @Put { @LBox 0.5co }
+ @At { 1.2c @Wide 1.5c @High } @Put { @DoubleArrow 3.3c }
+ @At { 1.2c @Wide 1.7c @High } @Put { 3.3c @Wide { &0.5rt @I length } }
+ }
+ //4vx
+ @OneRow {
+ @At { 1c @Wide 0.5c @High } @Put { @LBox 0.2co }
+ @At { 4c @Wide 0.5c @High } @Put { @LBox 0.5co }
+ @At { 1.2c @Wide 1.5c @High } @Put { @DoubleArrow 3.3c }
+ @At { 1.2c @Wide 1.7c @High }
+ @Put 3.3c @Wide { |0.5rt @Eq { max(length, a+b) } }
+ @At { 1.2c @Wide 0.4c @High } @Put { @DoubleArrow 1.0c }
+ @At { 1.2c @Wide 0.2c @High } @Put { 1.0c @Wide { &0.5rt @I a } }
+ @At { 4c @Wide 0.4c @High } @Put { @DoubleArrow 0.5c }
+ @At { 4c @Wide 0.2c @High } @Put { 0.5c @Wide { &0.5rt @I b } }
+ }
+ //4.5vx
+ @OneRow {
+ @At { 1c @Wide 0.5c @High } @Put { @LBox 0.2co }
+ @At { 4c @Wide 0.5c @High } @Put { @LBox 0.5co }
+ @At { 1.2c @Wide 1.5c @High } @Put { @DoubleArrow 3.3c }
+ @At { 1.2c @Wide 1.7c @High }
+ @Put { 3.3c @Wide { |0.5rt @Eq { max(length, a, b) } } }
+ @At { 1.2c @Wide 0.4c @High } @Put { @DoubleArrow 1.0c }
+ @At { 1.2c @Wide 0.2c @High } @Put { 1.0c @Wide { &0.5rt @I a } }
+ @At { 4c @Wide 0.4c @High } @Put { @DoubleArrow 0.5c }
+ @At { 4c @Wide 0.2c @High } @Put { 0.5c @Wide { &0.5rt @I b } }
+ }
+ //4vx
+ @OneRow {
+ @At { 1c @Wide 0.5c @High } @Put { @LBox 0.2co }
+ @At { 4c @Wide 0.5c @High } @Put { @LBox 0.5co }
+ @At { 0.0c @Wide 1.6c @High } @Put { @DoubleArrow 4.0c }
+ @At { 2.8c @Wide 1.8c @High } @Put { @I length }
+ }
+ //5vx
+ @DoubleArrow 6c
+ //0.1c |0.5rt @I { current bound }
+}
+}
+
+@PP
+When we construct a built-up fraction, the result has three row marks, but
+only the second should be visible outside the object:
+@ID @Eq { @ShowMarks { X over Y } }
+This is a common problem, and accordingly a @Code "@OneRow" operator was
+introduced for hiding all but one of the row marks of its
+parameter. Normally, the first mark is the survivor, but a later mark can
+be chosen by prefixing @Code "^" to the preceding concatenation operator:
+@ID @Code "@OneRow { X ^/2p @HLine /2p Y }"
+has the desired result, where {@Code "2p"} is two points and @Code "@HLine"
+is an easy combination of Lout's graphics operators. A similar operator,
+{@Code "@OneCol"}, hides column marks.
+@PP
+A variant of @Code "/" called @Code "//" is provided which performs
+vertical concatenation but ignores all column marks and simply
+left-justifies its two parameters:
+@ID @OneRow @Code {
+"Heading //0.1i"
+"A |0.2i B /0.1i"
+"C | D"
+}
+has result
+@ID { Heading //0.1i A |0.2i B /0.1i C | D }
+showing that spanning columns in tables motivate the inclusion of this
+operator. There is an analogous @Code "||" operator. The author
+would have preferred to leave out these operators, since they
+complicate the implementation, and it is interesting to examine the
+prospects of doing so.
+@PP
+The @Code "//" operator is formally redundant, because in general
+the expression @Code "x // y" can be replaced by
+@ID @OneRow @Code {
+"@OneCol { | x } /"
+"@OneCol { | y }"
+}
+for any objects {@Code x} and {@Code y}. By concatenating an empty
+object at the left of @Code x and hiding all but that empty object's
+column mark, we effectively shift {@Code x}'s column mark to its left
+edge. The same goes for {@Code y}, so the @Code "/" operator has just
+one column mark to merge, at the extreme left, and its effect is
+indistinguishable from {@Code "//"}.
+@PP
+Unfortunately, if @Code y consists of two rows separated by {@Code "/"},
+as in the example above, both rows must be placed inside the
+{@Code "@OneCol"}, and the table cannot be entered in the simple
+row-by-row manner that non-expert users naturally expect. Another
+advantage of @Code "//" is that its left parameter can be printed
+before its right parameter is known; this is important when the left
+parameter is an entire page.
+@PP
+The fifth and final concatenation operator, {@Code "&"}, is an explicit
+version of the horizontal concatenation operator interpolated when
+objects are separated by white space. It is formally identical to
+@Code "|" except for taking higher precedence and being subject to
+replacement by @Code "//1vx" during paragraph breaking
+(Section {@NumberOf style}).
+@End @SubSection
diff --git a/doc/doc/design/s2_4 b/doc/doc/design/s2_4
new file mode 100644
index 0000000..38d25e7
--- /dev/null
+++ b/doc/doc/design/s2_4
@@ -0,0 +1,345 @@
+@SubSection
+ @Tag { objects.impl }
+ @Title { Implementation of objects and concatenation }
+@Begin
+@PP
+In this section we discuss the implementation of objects and concatenation,
+and especially mark alignment. The first step is to use an operator
+precedence parser to convert input such as
+@ID @Code "a |0.5i b /0.2i c | d"
+into parse trees such as
+@ID @Eq {
+@Fig {
+@Tree {
+@Node @FCircle fraction
+@FirstSub {
+ @Node @FCircle bar
+ @FirstSub { @Node @FCircle a }
+ @NextSub { @Node @FEllipse 0.5i }
+ @NextSub { @Node @FCircle b }
+}
+@NextSub { @Node @FEllipse 0.2i }
+@NextSub {
+ @Node @FCircle bar
+ @FirstSub { @Node @FCircle c }
+ @NextSub { @Node @FCircle }
+ @NextSub { @Node @FCircle d }
+}
+}
+}
+}
+Missing objects are replaced by empty objects, and sequences of
+concatenation operators are consolidated:
+@ID @Eq {
+@Fig {
+@Tree {
+@Node @FCircle bar
+@FirstSub { @Node @FCircle a }
+@NextSub { @Node @FEllipse 0.2i }
+@NextSub {
+ @Node @FCircle bar
+ @FirstSub { @Node @FCircle c }
+ @NextSub { @Node @FEllipse 0.3i }
+ @NextSub { @Node @FCircle d }
+}
+}
+}
+&2m ==> &2m
+@Fig {
+@Tree {
+@Node @FCircle bar
+@FirstSub { @Node @FCircle a }
+@NextSub { @Node @FEllipse 0.2i }
+@NextSub { @Node @FCircle c }
+@NextSub { @Node @FEllipse 0.3i }
+@NextSub { @Node @FCircle d }
+}
+}
+}
+to make manifest their associativity and reduce the depth of the tree
+for efficiency later.
+@PP
+The required semantic information is the size of each subobject,
+consisting of four integers: width to left and right of the
+distinguished column mark, and height above and below the distinguished
+row mark. These numbers are always non-negative in Basser Lout, but
+this restriction is unnecessary and should be dropped.
+@PP
+For the leaves, which are simple words, the numbers are obtained from
+font tables. For the higher levels we apply recursive rules. Suppose
+that @Eq { hgap(x, g, y) } returns the desired distance between the
+column marks of objects @Eq { x } and @Eq { y } when they are separated by
+gap @Eq { g }: @Eq { right(x) + length(g) + left(y) } when the gap mode is
+edge-to-edge, the larger of @Eq { length(g) } and
+@Eq { right(x) + left(y) } when the mode is mark-to-mark, and so on. Given
+an object
+@ID @Eq {
+X = x sub 1 ````` bar g sub 1 ````` ... ````` { "-2p" @Font "^"}bar g sub i-1
+````` x sub i ````` ... ````` bar g sub n-1 ````` x sub n
+}
+we may calculate its size as follows:
+@ID @Eq {
+left(X) ^= left( x sub 1 ) + hgap( x sub 1 , g sub 1 , x sub 2 )
++ ... + hgap( x sub i-1 , g sub i-1 , x sub i )
+/1.4vx
+right(X) ^= hgap( x sub i , g sub i , x sub i+1 )
++ ... + hgap( x sub n-1 , g sub n-1 , x sub n ) + right( x sub n )
+/1.4vx
+"above"(X) ^= "above"(x sub 1 ) up ... up "above"(x sub n )
+/1.4vx
+"below"(X) ^= "below"(x sub 1 ) up ... up "below"(x sub n )
+}
+where @Eq { non up } returns the larger of its two parameters. Similar
+formulas are easily derived for the other operators.
+@PP
+For purposes of exposition we will now make the simplifying
+assumptions that all gaps are {@Code "0i"}, all column marks lie at
+the left edge, and all row marks lie at the top edge. Then the size
+of each object can be expressed by just two numbers, width and
+height, and the four formulas reduce to
+@ID @Eq {
+width( x sub 1 rel bar ... rel bar x sub n ) ^=
+width( x sub 1 ) + ... + width( x sub n )
+/1.4vx
+height( x sub 1 rel bar ... rel bar x sub n ) ^=
+height( x sub 1 ) up ... up height( x sub n )
+}
+The corresponding formulas for vertical concatenation are
+@ID @Eq {
+width( x sub 1 rel "/" ... rel "/" x sub n ) ^=
+width( x sub 1 ) up ... up width( x sub n )
+/1.4vx
+height( x sub 1 rel "/" ... rel "/" x sub n ) ^=
+height( x sub 1 ) + ... + height( x sub n )
+}
+According to these formulas, the height of
+@ID @Eq { @Fig { @Tree {
+@Node @FCircle fraction
+@LeftSub {
+ @Node @FCircle bar
+ @LeftSub { @Node @FCircle a }
+ @RightSub { @Node @FCircle b }
+}
+@RightSub {
+ @Node @FCircle bar
+ @LeftSub { @Node @FCircle c }
+ @RightSub { @Node @FCircle d }
+}
+}}}
+is
+@ID @Eq {
+[ height(a) up height(b)] + [ height(c) up height(d)]
+}
+which is correct, but for width they yield
+@ID @Eq {
+[ width(a) + width(b)] up [ width(c) + width(d)]
+}
+which is not, since it does not take the merging of column marks into
+account. The asymmetry between horizontal and vertical has come
+about because the row entries, such as @Eq {a} and {@Eq {b}}, are
+adjacent in the tree, but the column entries, such as @Eq {a} and
+{@Eq {c}}, are not. It would be possible to solve this cross-linking
+problem by augmenting the size information stored in each node to
+record the number of marks and the size of each, but the author has
+preferred the following method which makes structural changes to the
+tree instead.
+@PP
+If @Eq { a } and @Eq { c } share a column mark, they each might as well
+have width { @Eq {width(a) up width(c) }}, since all width calculations
+apply to entire columns. Accordingly, we introduce a new operator,
+@Eq {COL}, defined by
+@ID @Eq { width( x sub 1 bin COL ... bin COL x sub n ) =
+width( x sub 1 ) up ... up width( x sub n )
+}
+and replace both @Eq { a } and @Eq { c } by {@Eq { a bin COL c }}. To
+prevent @Eq { COL } operators from disturbing height calculations, we
+define a binary operator called @Eq { SPLIT } by
+@ID @Eq { width( x bin SPLIT y) ^= width(x)
+/1.4vx
+height( x bin SPLIT y) ^= height(y) }
+which switches height and width calculations onto different
+subtrees. Then the transformation
+@ID @Eq {
+@Fig { @Tree {
+ @Node @FCircle a
+}}
+&2m ==> &2m
+@Fig { @Tree {
+ @Node @FEllipse SPLIT
+ @LeftSub {
+ @Node @FEllipse COL
+ @LeftSub { @Node @FCircle a }
+ @RightSub { @Node @FCircle c }
+ }
+ @RightSub { @Node @FCircle a }
+}}
+}
+# where @Eq { S } denotes a @Eq { SPLIT } node and @Eq { C } denotes a
+# @Eq { COL } node,
+widens @Eq { a } to @Eq {width(a) up width(c) } without affecting its height;
+it is applied to every object that shares its column mark with at least
+one other object. A similar transformation involving a @Eq { ROW } operator
+deals with shared row marks. The effect on our little table is to replace
+@ID @Eq { @Fig { @Tree {
+@Node @FCircle fraction
+@LeftSub {
+ @Node @FCircle bar
+ @LeftSub { @Node @FCircle a }
+ @RightSub { @Node @FCircle b }
+}
+@RightSub {
+ @Node @FCircle bar
+ @LeftSub { @Node @FCircle c }
+ @RightSub { @Node @FCircle d }
+}
+}}}
+by
+@ID @Eq { @Fig maxlabels { "70" } { @Tree hmargin { "0.1c" } {
+@Node @FCircle fraction
+@FirstSub {
+ @Node @FCircle bar
+ @FirstSub {
+ @Node @FEllipse SPLIT
+ @FirstSub {
+ @Node @FEllipse COL
+ @FirstSub { @Node @FCircle a }
+ @NextSub { @Node @FCircle c }
+ }
+ @NextSub {
+ @Node @FEllipse ROW
+ @FirstSub { @Node @FCircle a }
+ @NextSub { @Node @FCircle b }
+ }
+ }
+ @NextSub {
+ @Node @FEllipse SPLIT
+ @FirstSub {
+ @Node @FEllipse COL
+ @FirstSub { @Node @FCircle b }
+ @NextSub { @Node @FCircle d }
+ }
+ @NextSub {
+ @Node @FEllipse ROW
+ @FirstSub { @Node @FCircle a }
+ @NextSub { @Node @FCircle b }
+ }
+ }
+}
+@NextSub {
+ @Node @FCircle bar
+ @FirstSub {
+ @Node @FEllipse SPLIT
+ @FirstSub {
+ @Node @FEllipse COL
+ @FirstSub { @Node @FCircle a }
+ @NextSub { @Node @FCircle c }
+ }
+ @NextSub {
+ @Node @FEllipse ROW
+ @FirstSub { @Node @FCircle c }
+ @NextSub { @Node @FCircle d }
+ }
+ }
+ @NextSub {
+ @Node @FEllipse SPLIT
+ @FirstSub {
+ @Node @FEllipse COL
+ @FirstSub { @Node @FCircle b }
+ @NextSub { @Node @FCircle d }
+ }
+ @NextSub {
+ @Node @FEllipse ROW
+ @FirstSub { @Node @FCircle c }
+ @NextSub { @Node @FCircle d }
+ }
+ }
+}
+}}}
+In fact, common subexpressions are identified (trivially) and the result
+is a directed acyclic graph; each affected leaf has two parents, one for
+width and one for height; and each @Eq { COL } or @Eq { ROW } node has
+one parent and one child for each object lying on the corresponding
+mark. The data structure roughly doubles in size, and this occurs only
+rarely in practice.
+@PP
+This method can cope with any legal input, including
+@ID @OneRow @Code {
+"{ a // c | d } | { b / e }"
+"/ { f / i } | { g | h // j }"
+}
+which produces overlapping spanning columns:
+@ID @I @Fig {
+ @FBox margin { 0.2c } width { 1.6c } 1.2f @Font a |
+ @FBox margin { 0.2c } width { 0.6c } 1.2f @Font b |
+// @FBox margin { 0.2c } width { 0.6c } 1.2f @Font c |
+ @FBox margin { 0.2c } width { 0.6c } 1.2f @Font d |
+ @FBox margin { 0.2c } width { 0.6c } 1.2f @Font e |
+// @FBox margin { 0.2c } width { 0.6c } 1.2f @Font f |
+ @FBox margin { 0.2c } width { 0.6c } 1.2f @Font g |
+ @FBox margin { 0.2c } width { 0.6c } 1.2f @Font h |
+// @FBox margin { 0.2c } width { 0.6c } 1.2f @Font i |
+ @FBox margin { 0.2c } width { 1.6c } 1.2f @Font j |
+}
+The boxes have been added to clarify the structure. The width of this
+object is formally
+@ID @Eq { ((width(a) up (x + y)) + z) up (x + ((y + z) up width(j))) }
+where
+@IL
+@ListItem @Eq { x = width(c) up width(`f`) up width(i) }
+@ListItem @Eq { y = width(d`) up width(g) }
+@ListItem @Eq { z = width(b) up width(e) up width(h) }
+@EL
+It seems clear that @Eq { y } at least must appear twice in any
+expression for the width of this object made out of simple addition
+and maxing operations, showing that an ordinary tree
+structure is insufficient for overlapping spanning columns. The Basser
+Lout interpreter actually rejects such structures, owing to the author's
+doubts about the implementability of @I Constrained and @I AdjustSize
+(Section {@NumberOf constraints}) on them; but with hindsight this caution
+was unnecessary.
+@PP
+The directed acyclic graph is ordered in the sense that the order of
+the edges entering and leaving each node matters. The structure is
+highly dynamic, and traversals both with and against the arrows are
+required. After a few ad-hoc attempts to extend the usual tree
+representation had failed, the author developed a representation based
+on doubly linked lists of records denoting links, whose flexibility more
+than compensated for the somewhat excessive memory consumption. For example,
+@ID @Eq { @Fig {
+ A:: @FCircle a |2c |2c B:: @FCircle b
+/1.5c C:: @FCircle c | D:: @FCircle d
+// A @JoinFigures arrow { forward } C
+// A @JoinFigures arrow { forward } D
+// B @JoinFigures arrow { forward } D
+}}
+is represented by
+@CD @Eq { @Fig maxlabels { "300" } {
+A:: @DagBox mid { @BlackDot } base { a } |2c |2c |2c |2c
+B:: @DagBox mid { @BlackDot } base { b }
+/1c L:: @DagBox top { @BlackDot } mid { @BlackDot } base { LK }
+| M:: @DagBox top { @BlackDot } mid { @BlackDot } base { LK }
+| | N:: @DagBox top { @BlackDot } mid { @BlackDot } base { LK }
+/1c
+C:: @DagBox top { @BlackDot } base { c } | |
+D:: @DagBox top { @BlackDot } base { d }
+// @TVShape nw { A@MID@CTR } ne { A@MID@CTR } sw {L@MID@CTR } se { M@MID@CTR }
+// @TVShape nw { L@TOP@CTR } ne { L@TOP@CTR } sw {C@TOP@CTR } se { C@TOP@CTR }
+// @TVShape nw { M@TOP@CTR } ne { N@TOP@CTR } sw {D@TOP@CTR } se { D@TOP@CTR }
+// @TVShape nw { B@MID@CTR } ne { B@MID@CTR } sw {N@MID@CTR } se { N@MID@CTR }
+}}
+where @Eq { LK } tags a record representing a link. The first list
+in any node contains all the incoming links, the second contains the
+outgoing ones. The node serves as the header for both lists. The
+required operations reduce to simple appends, deletes, and traversals
+of doubly linked lists, all having small constant cost. There is a
+highly tuned memory allocator, and care is taken to dispose of each node
+when the last incoming link is deleted, so that there is no need for
+garbage collection.
+@PP
+In normal use the number of nodes at higher levels of the dag is small
+in comparison with the leaves and their incoming links, so we may
+estimate the space complexity at about 60 bytes per input word (20 bytes
+per link, 40 per leaf node). Careful optimization could easily halve
+this, but since memory is reclaimed after printing each page there is
+little need.
+@End @SubSection
diff --git a/doc/doc/design/s2_5 b/doc/doc/design/s2_5
new file mode 100644
index 0000000..87d826b
--- /dev/null
+++ b/doc/doc/design/s2_5
@@ -0,0 +1,90 @@
+@SubSection
+ @Tag { style }
+ @Title { Context-sensitive attributes of objects }
+@Begin
+@PP
+Although we are free to place any object in any context, the context
+must influence the appearance of the object, since otherwise
+@ID @Code "A short paragraph of text."
+could not appear in a variety of fonts, column widths, etc. This
+influence cannot take the purely static form that block-structured
+languages use to associate values with identifiers, for then an operator
+could not influence the appearance of its parameters; and a state
+variable solution is not compatible with the overall functional design.
+@PP
+The information needed from the context seems quite limited, comprising
+the font family, face, and size to use, the style of paragraph breaking
+required, how much space to substitute between the words of paragraphs,
+and how much horizontal and vertical space is available to receive the
+object. These four items constitute the so-called `style information'
+of Lout. As graphics rendering hardware improves, the style information
+will probably grow to include colour and texture information.
+@PP
+The way to deal with fonts at least is very clear:
+@ID @Code "{ Times Slope 12p } @Font { Hello, world }"
+should have result
+@ID { { Times Slope 12p } @Font { Hello, world } }
+Lout also provides @Code "@Break" and @Code "@Space" symbols for
+controlling the paragraph breaking and space styles mentioned
+above. These work in the same way, returning their right
+parameters in the style of their left. The implementation is very
+simple: one merely broadcasts the style information down into the parse
+tree of the right parameter. A font, for example, is converted to an
+8-bit internal name and stored in each leaf, while a breaking style is
+stored in the root node of each paragraph.
+@PP
+The same language design can be used for available width and height,
+only here the implementation is much more demanding:
+@ID @Code {
+"2i @Wide {"
+"(1) |0.1i An example"
+"containing a small"
+"paragraph of filled text."
+"}"
+}
+is guaranteed to be two inches wide:
+@ID {
+2i @Wide {
+(1) |0.1i An example
+containing a small
+paragraph of filled text.
+}
+}
+One must calculate that 1.9 inches minus the width of @Code "(1)" is
+available
+to the paragraph, and break it accordingly; Basser Lout does this in two
+stages. In the first, upward-moving stage, widths are calculated using the
+formulae of Section {@NumberOf objects}, which assume that available
+space is infinite. If the upward movement reaches a @Eq { WIDE }
+node, corresponding to a @Code "@Wide" operator, and
+the calculated width exceeds that allowed, a second, downward-moving stage
+is initiated which attempts to reduce the width by finding and breaking
+paragraphs. This second stage is quite routine except at @Code "|" nodes,
+whose children are the columns of a table. It is necessary to apportion
+the available width (minus inter-column gaps) among the columns. Basser
+Lout leaves narrow columns unbroken and breaks the remaining columns to
+equal width, using up all of the available space.
+@PP
+The size of an object is not clearly determined when the upward-moving
+size is less than the downward-moving available space, and the object
+contains constructs that depend on available space (e.g. right
+justification). For example, in
+@ID @Code "2i @Wide { Heading // a |1rt b }"
+it seems natural to assign a width of two inches to the subobject
+@Code "a |1rt b" because of the right justification, but it would be
+equally plausible if the width of @Code Heading was assigned to the
+subobject instead. The author is conscious of having failed to resolve
+this matter properly; an extra operator for controlling available space
+is probably necessary.
+@PP
+The actual paragraph breaking is just a simple transformation on the
+parse tree; the real issue is how to describe the various styles: ragged
+right, adjusted, outdented, and so on. Their diversity suggests that
+they should somehow be defined using more basic features; but then there
+are algorithms for high-quality paragraph breaking, which presumably
+must be built-in. This dilemma was not clearly grasped by the author in
+1985, and he included a built-in paragraph breaker, with the @Code
+"@Break" operator selecting from a fixed set of styles. A much better
+solution based on galleys will be given in Section {@NumberOf horizontal},
+but, regrettably, it is not implemented.
+@End @SubSection
diff --git a/doc/doc/design/s2_9 b/doc/doc/design/s2_9
new file mode 100644
index 0000000..648a1b6
--- /dev/null
+++ b/doc/doc/design/s2_9
@@ -0,0 +1,2 @@
+@EndSubSections
+@End @Section
diff --git a/doc/doc/design/s3_0 b/doc/doc/design/s3_0
new file mode 100644
index 0000000..3f42ff5
--- /dev/null
+++ b/doc/doc/design/s3_0
@@ -0,0 +1,10 @@
+@Section
+ @Title { Definitions }
+@Begin
+@PP
+The need to provide a means of packaging useful pieces of code for easy
+repeated use was recognised in the very earliest programming
+languages. This need is even more acute in document formatting, if that
+is possible, because the majority of users are not programmers and do
+not understand the code they invoke.
+@BeginSubSections
diff --git a/doc/doc/design/s3_1 b/doc/doc/design/s3_1
new file mode 100644
index 0000000..2fb44c6
--- /dev/null
+++ b/doc/doc/design/s3_1
@@ -0,0 +1,76 @@
+@SubSection
+ @Tag { operators }
+ @Title { Operators }
+@Begin
+@PP
+It is evident from the example of Eqn that user-defined operators are
+needed that mimic the primitive ones in taking objects as parameters
+and returning objects as results. For example, to define a superscript
+operator so that
+@ID @Code "2 sup n"
+appears as {@Eq {2 sup @R n}}, the following operator definition may
+be used:
+@ID @OneRow @Code {
+"def sup"
+" precedence 50"
+" associativity right"
+" left x"
+" right y"
+"{"
+" @OneRow { | {-2p @Font y} ^/0.5fk x }"
+"}"
+}
+The @Code "sup" operator has precedence 50, is right associative, takes
+two objects as parameters passed on the left and right, and returns the
+object between braces as result. This object has the structure
+@ID @I +2p @Font {
+| @ShowMarks @Code y / @ShowMarks @Code x
+}
+but with the first row mark hidden by the @Code "@OneRow" operator,
+and @Code y two points smaller than it would otherwise have been. The
+length @Code "0.5f" specifies half the current font size; Figure
+{@NumberOf gapmodes} describes the @Code k gap mode. In the Eq equation
+formatting package [10] the equation as a whole is
+set in italic font, and @Code 2 is an identifier whose body contains
+a font change back to Roman. The digits @Code 0 to @Code 9 are classed
+as punctuation characters, permitting @Code 234 for example to be
+interpreted as a sequence of three identifiers.
+@PP
+These definitions are easily implemented by a standard symbol table
+and an operator precedence parser. Algol block structure with the
+usual scope rules was adopted as a matter of course.
+@PP
+Operators are limited to at most two parameters, left and
+right, and the parameters cannot be given default values. @I Named
+parameters solve both problems:
+@ID @OneRow @Code {
+"def @Preface"
+" named @Tag {}"
+" named @Title { Preface }"
+" right @Body"
+"{"
+" Bold @Font @Title"
+" //0.3v @Body"
+"}"
+}
+The default value appears just after the parameter's declaration,
+between braces. Invocations have a natural syntax:
+@ID @OneRow @Code {
+"@Preface"
+" @Title { About this book }"
+"{"
+" Few observers would have supposed in 1984, that ..."
+"}"
+}
+with the actual named parameters following directly after the
+operator, before any right parameter. In this example, @Code "@Tag"
+will receive its default value, and a less expert user could safely
+omit the @Code "@Title" parameter as well.
+@PP
+Lout permits named parameters to have parameters, a feature with
+applications to bibliographic databases, running headers, and other
+places where a format has to be supplied before content is
+known. One could go further and provide a complete lambda calculus,
+with functions as first-class objects, provided care was taken not
+to intimidate the non-expert user.
+@End @SubSection
diff --git a/doc/doc/design/s3_2 b/doc/doc/design/s3_2
new file mode 100644
index 0000000..0c5fd70
--- /dev/null
+++ b/doc/doc/design/s3_2
@@ -0,0 +1,113 @@
+@SubSection
+ @Tag { recursion }
+ @Title { Recursion and page layout }
+@Begin
+@PP
+Design and implementation should proceed together in exploratory projects,
+since otherwise the design too easily becomes unrealistic. Sometimes the
+implementation does more than its designer intended. The author wrote the
+following purely as a testing scaffold:
+@ID @OneRow @Code {
+"def @Page right x"
+"{"
+" 8i @Wide 11i @High"
+" {"
+" //1i ||1i x ||1i"
+" //1i"
+" }"
+"}"
+}
+Only afterwards did he realize its significance: the concept of a page
+had been defined outside the implementation, removing the need for
+commands for setting page width and height, margins, and so on.
+@PP
+Defining a sequence of pages is harder, since their number is not known
+in advance. A simple version of this same problem is afforded by the
+leaders found in tables of contents:
+@ID {
+4i @Wide { Chapter 7 @Leaders 53 }
+}
+This seemed to require recursion, specifically the definition
+@ID @Code {
+"def @Leaders { .. @Leaders }"
+}
+Note that both @Code ".." and @Code "@Leaders" are objects, so the two
+spaces separating them are significant. No base case is given, and indeed
+we have no boolean or conditional operators with which to express it;
+but we can adopt the implicit base `if space is not sufficient, delete
+{@Code "@Leaders"} and any preceding space'. Then the expression
+@ID @Code "4i @Wide { Chapter 7 @Leaders 53 }"
+will produce the object shown above. It is hard to see how this base
+could be made explicit, without violating the general principle of
+keeping all size information internal. In the implementation,
+@Code "@Leaders" remains unexpanded while sizes are being
+calculated; then it is treated similarly to a receptive symbol, with
+its body as an incoming galley (Section {@NumberOf flushing}).
+@PP
+With this settled, it is now clear how to define a document which is a
+numbered sequence of pages. Let @Code "@Next" be a prefix operator
+which returns its parameter plus one. Then
+@ID @OneRow @Code {
+"def @PageList"
+" right @PageNum"
+"{"
+" @Page {"
+" |0.5rt - @PageNum -"
+" //1v @TextPlace"
+" //1rt @FootSect"
+" }"
+" //"
+" @PageList @Next @PageNum"
+"}"
+}
+when invoked in the expression {@Code "@PageList 1"}, has for its result
+the potentially infinite object
+@ID @OneRow {
+@LittlePage {
+|0.5rt - 1 -
+//1.2vx @Code "@TextPlace"
+//1rt @Code "@FootSect"
+}
+//
+@LittlePage {
+|0.5rt - 2 -
+//1.2vx @Code "@TextPlace"
+//1rt @Code "@FootSect"
+}
+//0.2c
+8p @Font @Code "@PageList 3"
+}
+Similarly, we may define @Code "@FootSect" like this:
+@ID @OneRow @Code {
+"def @FootSect"
+"{"
+" def @FootList"
+" right @Num"
+" {"
+" @FootPlace"
+" //1v"
+" @FootList @Next @Num"
+" }"
+""
+" 1i @Wide @HLine"
+" //1v"
+" @FootList 1"
+"}"
+}
+so that an invocation of @Code "@FootSect" produces
+@ID @OneRow @Code {
+1i @Wide @HLine
+"@FootPlace"
+"@FootPlace"
+"@FootPlace"
+"..."
+}
+The expansion process is very similar to a BNF derivation, and would be
+attempted only on demand.
+@PP
+Clearly, deciding which expansions to take and replacing @Code "@TextPlace"
+and {@Code "@FootPlace"} by the appropriate actual text will not be easy;
+this is the subject of Section {@NumberOf galleys}. The important point
+for now is that we have here a very simple and flexible method of specifying
+the layout of pages, which requires no specialized language features.
+@End @SubSection
diff --git a/doc/doc/design/s3_3 b/doc/doc/design/s3_3
new file mode 100644
index 0000000..d04a8db
--- /dev/null
+++ b/doc/doc/design/s3_3
@@ -0,0 +1,143 @@
+@SubSection
+ @Tag { modules }
+ @Title { Modules }
+@Begin
+@PP
+It is well accepted that the visibility of symbols is not adequately
+controlled by Algol block structure. The author is aware of several
+major problems of this kind in document formatting.
+@PP
+One problem is that some symbols should be visible only within
+restricted parts of a document. For example, we naturally expect
+equation formatting to be accomplished like this:
+@ID @OneRow @Code {
+"surrounding text"
+"@Eq { {x sup 2 + 1} over 4 }"
+"surrounding text"
+}
+with the symbols {@Code "sup"}, {@Code "over"}, etc., visible only within
+the equation, not in the surrounding text.
+@PP
+It seems natural to define these symbols within {@Code "@Eq"}, since
+they are local to equations. It only remains then to decree that
+symbols local to @Code "@Eq" are to be visible within its actual right
+parameter, and this is done by replacing the right formal parameter with a
+@I body parameter:
+@ID @OneRow @Code {
+"export sup over"
+"def @Eq"
+" body @Body"
+"{"
+" def sup ..."
+" def over ..."
+""
+" Slope @Font @Body"
+"}"
+}
+The @Code export clause lists the identifiers which are permitted to be
+visible outside their usual range, the body of {@Code "@Eq"}; and the
+@Code body declaration imports them into (makes them visible within)
+the actual right parameter of each invocation of {@Code "@Eq"}. This
+arrangement has proven very convenient for defining a variety of
+special-purpose packages.
+@PP
+Another problem arises when global symbols, such as the ones used for
+headings and paragraph separators, call on values that the non-expert
+user will need to modify, such as the initial font or paragraph
+indent. These values are like parameters of the document as a whole, so
+it is natural to try this:
+@ID @OneRow @Code {
+"export @Heading @PP ..."
+"def @BookLayout"
+" named @InitialFont { Times Base 12p }"
+" named @InitialBreak { adjust 14p }"
+" named @ColumnWidth { 6i }"
+" ..."
+"{"
+" def @Heading ..."
+" def @PP ..."
+"}"
+}
+Now @Code "@Heading" and @Code "@PP" may invoke @Code "@InitialFont"
+and the other parameters. To make @Code "@Heading" and @Code "@PP"
+visible throughout the document, we need only add a body parameter to
+@Code "@BookLayout" and present the entire document as
+@ID @OneRow @Code {
+"@BookLayout"
+" @InitialFont { Helvetica Base 10p }"
+" @InitialBreak { adjust 12p }"
+"{"
+" The document."
+"}"
+}
+but for practical reasons given below we prefer not to enclose the
+entire document in braces. Instead, we write
+@ID @OneRow @Code {
+"@Use { @BookLayout"
+" @InitialFont { Helvetica Base 10p }"
+" @InitialBreak { adjust 12p }"
+"}"
+"The document."
+}
+which has the same effect: @Code "@Use" makes the exported symbols of
+@Code "@BookLayout" visible for the remainder of the document, and is
+permitted only at the beginning.
+@PP
+The third feature that affects visibility, and which will prove useful
+for cross referencing (Section {@NumberOf cross}), is the @Code "@Open"
+symbol. It makes the exported symbols of its left parameter visible
+within its right parameter, and is therefore similar to the Pascal @Code
+with statement.
+@PP
+It could be argued that Lout is over-supplied with these visibility modifying
+features: the body parameter, @Code "@Use" and @Code "@Open" do not seem
+sufficiently different from each another. The @Code "@Open" symbol is
+the most general, being capable of replacing the other two. For
+example,
+@ID @OneRow @Code {
+"@Use { x }"
+"@Use { y }"
+"Body of document"
+}
+can be replaced by
+@ID @OneRow @Code {
+"x @Open {"
+"y @Open {"
+"Body of document"
+"}}"
+}
+and, taking the @Code "@Eq" symbol above as example, we could eliminate
+its body parameter, add
+@ID @Code "def @Body right x { Slope @Font x }"
+to the exported definitions of {@Code "@Eq"}, and replace
+@ID @Code "@Eq { object }"
+by
+@ID @Code "@Eq @Open { @Body { object } }"
+If @Code "@Eq" is a galley (Section {@NumberOf galleys}), @Code "@Body"
+must take over that function. But one would not want to write these
+clumsy expressions in practice, and the enclosure of large quantities
+of input in extra braces could cause Basser Lout to run out of memory
+(Section {@NumberOf lookahead}).
+@PP
+A quite separate kind of visibility problem arises when expert
+users wish to define an object or operator for repeated use within, say,
+equations:
+@ID @Code "def isum { sum from i=1 to n }"
+As it stands this can only be placed within the @Code "@Eq" package itself,
+where @Code "sum" and the other symbols are visible, but it is not desirable
+to modify the source code of a standard package. Lout provides an
+@Code "import" clause to solve this problem:
+@ID @OneRow @Code {
+"import @Eq"
+"def isum { sum from i=1 to n }"
+}
+may appear after @Code "@Eq" is defined, and it will make the exported symbols
+of @Code "@Eq" visible within the body of {@Code "isum"}. This feature
+complicates the treatment of environments (Section {@NumberOf defs.impl}),
+and even introduces an insecurity, when @Code isum is invoked outside an
+equation. A simpler approach would be to allow only one symbol in an
+@Code import clause, and treat the following definition exactly like a
+local definition of that symbol; but then it would not be possible
+to define symbols using the resources of more than one of the standard
+packages.
+@End @SubSection
diff --git a/doc/doc/design/s3_4 b/doc/doc/design/s3_4
new file mode 100644
index 0000000..7b0f5bc
--- /dev/null
+++ b/doc/doc/design/s3_4
@@ -0,0 +1,51 @@
+@SubSection
+ @Tag { defs.impl }
+ @Title { Implementation of definitions }
+@Begin
+@PP
+Input is processed by a hybrid parser which employs operator precedence
+for objects and simple recursive descent for the headers of
+definitions. A symbol table stores the body of each definition as a
+parse tree, except for macros which are lists of tokens, and manages the
+usual stack of static scopes, accepting @I PushScope and @I PopScope
+operations as the parser enters and leaves scope regions, including
+actual body parameters and the right parameter of the @Code "@Open"
+operator.
+@PP
+As the parse proceeds, a complete call graph is constructed, recording,
+for each symbol, which symbols are invoked within its body. Immediately
+after the last definition is read, the transitive closure of the call
+graph is computed, and used to determine whether each non-parameter
+symbol is recursive or receptive (Section {@NumberOf galleys}), and
+whether each parameter is invoked exactly once or not.
+@PP
+Purely functional systems may evaluate symbol invocations in applicative
+order (where parameters are evaluated before substitution into bodies),
+or in normal order (substitution before evaluation), and they may also
+share the value of a parameter among all uses of it. But in Basser
+Lout, the presence of context-sensitive style information (Section
+{@NumberOf style}) forces normal order evaluation and prevents sharing
+of parameter values.
+@PP
+To evaluate an unsized object (pure parse tree), its {@I environment},
+the equivalent of the stack frames in Algol-like languages, must be
+available, containing the actual values of all formal parameters
+that are visible within the unsized object. Environment handling is
+a well-known implementation technique, so it will be discussed
+only briefly here.
+@PP
+Environments are extra subtrees hung from the objects they refer
+to. This organization makes excellent use of the ordered dag to
+permit environments to be shared, and deleted when the last
+reference to them is removed. Several optimizations have been
+implemented. Actual parameters known to be invoked only once are moved
+in from the environment, not copied; copying could lead to quadratic time
+complexity. Actual parameters of the form @Code "@Next" @I object
+receive an applicative pre-evaluation which prevents long chains of
+@Code "@Next" symbols from forming during the generation of large page
+numbers. Some environments which provably contribute nothing are
+deleted, most notably when a symbol invocation has no symbols within its
+actual parameters and no import list, so that only the environment of its
+body need be kept; this saves a great deal of space when objects with
+environments are written to auxiliary files (Section {@NumberOf cross}).
+@End @SubSection
diff --git a/doc/doc/design/s3_9 b/doc/doc/design/s3_9
new file mode 100644
index 0000000..648a1b6
--- /dev/null
+++ b/doc/doc/design/s3_9
@@ -0,0 +1,2 @@
+@EndSubSections
+@End @Section
diff --git a/doc/doc/design/s4_0 b/doc/doc/design/s4_0
new file mode 100644
index 0000000..5f89426
--- /dev/null
+++ b/doc/doc/design/s4_0
@@ -0,0 +1,88 @@
+@Section
+ @Tag { functional }
+ @Title { Implementation of the functional subset }
+@Begin
+@PP
+The objects and definitions of Lout are very similar to those found in
+other functional languages, and they form a natural subset of the
+language. So we pause here and present an overview of the Basser Lout
+object evaluation algorithm.
+@PP
+The problem is to take an unsized object (pure parse tree), its
+environment (Section {@NumberOf defs.impl}), and its style
+(Section {@NumberOf style}), and to produce a PostScript file for
+rendering the object on an output device. This file is essentially a
+sequence of instructions to print a given string of characters in a
+given font at a given point.
+@PP
+Before the algorithm begins, the parse tree must be obtained, either by
+parsing input or by copying from the symbol table. Afterwards the data
+structure must be disposed. The algorithm proper consists of five
+passes, each a recursive traversal of the structure from the root down
+to the leaves and back.
+@DP
+@I {1. Evaluation of unsized objects.} On the way down, calculate
+environments and replace non-recursive, non-receptive symbols by their
+bodies (Section {@NumberOf defs.impl}); broadcast fonts to the leaves,
+and paragraph breaking and spacing styles to the paragraph nodes. On the
+way back up, delete @Eq { FONT }, @Eq { BREAK }, and @Eq { SPACE } nodes,
+and insert @Eq { SPLIT }, @Eq { COL }, and @Eq { ROW } nodes
+(Section {@NumberOf objects}).
+@DP
+@I {2. Width calculations and breaking.} Calculate the width of every
+subobject from the bottom up. As described in Section {@NumberOf objects},
+@Eq { WIDE } nodes may trigger object breaking sub-traversals during this pass.
+@DP
+@I {3. Height calculations.} Calculate the height of every subobject,
+from the bottom up.
+@DP
+@I {4. Horizontal coordinates.} Calculate the horizontal coordinate of
+each subobject from the top down, and store each leaf's coordinate in
+the leaf.
+@DP
+@I {5. Vertical coordinates and PostScript generation.} Calculate the
+vertical coordinate of every subobject from the top down, and at each
+leaf, retrieve the character string, font, and horizontal coordinate,
+and print the PostScript instruction for rendering that leaf.
+@DP
+Figure {@NumberOf components} gives the amount of code required for each
+
+@Figure
+ @Tag { components }
+ @Caption { Major components of the Basser Lout interpreter, showing
+the approximate number of lines of C code. }
+@Begin
+@Tab
+ vmargin { 0.5vx }
+ @Fmta { @Col @RR A ! @Col B ! @Col @RR C }
+ @Fmtb { @Col @RR A ! @Col B ! @Col C }
+{
+ @Rowa A { 1. } B { Initialization } C { 200 }
+ @Rowa A { 2. } B { Memory allocation, ordered dag operations } C { 400 }
+ @Rowa A { 3. } B { Lexical analysis, macros, file handling } C { 1,350 }
+ @Rowa A { 4. } B { Parsing of objects and definitions } C { 1,150 }
+ @Rowa A { 5. } B { Symbol table and call graph } C { 600 }
+ @Rowa A { 6. } B { Evaluation of pure parse trees } C { 1,650 }
+ @Rowa A { 7. } B { Reading, storing, and scaling of fonts } C { 600 }
+ @Rowa A { 8. } B { Cross references and databases } C { 1,000 }
+ @Rowa A { 9. } B { Width and height calculations, and breaking } C { 700 }
+ @Rowa A { 10. } B { @I Constrained and @I AdjustSize } C { 700 }
+ @Rowa A { 11. } B { Transfer of sized objects into galley tree } C { 450 }
+ @Rowa A { 12. } B { Galley flushing algorithm } C { 1,500 }
+ @Rowa A { 13. } B { Coordinate calculations and PostScript output } C { 700 }
+ @Rowa A { 14. } B { Debugging and error handling } C { 1,200 }
+ @Rowb vmargin { 0.1c } C { @Line }
+ @Rowa C { 12,200 }
+}
+@End @Figure
+
+pass. Symmetry between horizontal and vertical is exploited throughout
+Basser Lout, and passes 2 and 3, as well as 4 and 5, are executed on
+shared code.
+@PP
+The author can see no simple way to reduce the number of passes. The
+introduction of horizontal galleys (Section {@NumberOf horizontal})
+would remove the need for the object breaking transformations within this
+algorithm that are the principal obstacles in the way of the merging of
+passes 2 and 3.
+@End @Section
diff --git a/doc/doc/design/s5_0 b/doc/doc/design/s5_0
new file mode 100644
index 0000000..d176f77
--- /dev/null
+++ b/doc/doc/design/s5_0
@@ -0,0 +1,11 @@
+@Section
+ @Title { Galleys }
+@Begin
+@PP
+With objects and definitions under control, the author faced the problem
+of getting body text, footnotes, floating figures and tables,
+references, index entries, and entries in the table of contents into
+their places. The resulting investigation occupied three months of
+full-time design work, and proceeded approximately as described in
+Section {@NumberOf galleys}; the implementation occupied the years 1987-89.
+@BeginSubSections
diff --git a/doc/doc/design/s5_1 b/doc/doc/design/s5_1
new file mode 100644
index 0000000..ab65bb9
--- /dev/null
+++ b/doc/doc/design/s5_1
@@ -0,0 +1,123 @@
+@SubSection
+ @Tag { galleys }
+ @Title { The galley abstraction }
+@Begin
+@PP
+Let us take the footnote as a representative example. At some point in
+the document, we wish to write
+@ID @OneRow @Code {
+"preceding text"
+"@FootNote { footnote text }"
+"following text"
+}
+and we expect the formatter to remove the footnote from this context and
+place it at the bottom of the current page, possibly splitting some or
+all of it onto a following page if space is insufficient.
+@PP
+An object appears in the final document at the point it is invoked, but
+this basic property does not hold for footnotes: the point of
+invocation and the point of appearance are different. In some way, the
+footnote is attached to the document at both points, introducing a cross
+linking (Section {@NumberOf genesis}) that cannot be described in purely
+functional terms.
+@PP
+Since the interpretation of any object depends on an environment and
+style inherited from the context, the first question must be whether
+the footnote inherits them through the invocation point or through
+the point(s) of appearance.
+@PP
+If symbols are to be interpreted statically as heretofore, then environments
+must be inherited through the invocation point alone. Dynamic inheritance
+through the point of appearance is enticing in some ways: it might
+replace the body parameter, and it might help with automatic numbering,
+since the number of a footnote is known only at the point of appearance;
+but the implementation problems are severe, and static inheritance seems
+much simpler and more comprehensible to the user. Style, at least its
+available width and height part, must of necessity be inherited through
+the point of appearance. For consistency, the entire style should be
+inherited in this way. There is a suggestive analogy here with actual
+parameters, which have a point of invocation from which they inherit an
+environment, and a point of appearance within the body of the enclosing
+definition, from which they inherit a style. It may be possible to treat
+a footnote as the actual parameter of some symbol, therefore, although
+the details seem very obscure.
+@PP
+But the most profound consequence of having two types of attachment
+point is that it leads to two distinctive tree structures. Considering
+invocation points only leads to static trees like this one:
+@ID @I @Fig margin { 0.3c } { @Tree {
+@Node @Ellipse { body text }
+@LeftSub { @Node @Ellipse footnote }
+@RightSub {
+ @Node @Ellipse figure
+ @FirstSub { @Node @Ellipse footnote }
+}
+}}
+which shows that the body text contains a footnote and a figure, the
+latter itself containing a footnote. Considering points of appearance
+only gives a completely different, dynamic tree:
+@ID @I @Fig margin { 0.3c } { @Tree {
+@Node @Ellipse { sequence of pages }
+@FirstSub { @Node @Ellipse { body text } }
+@NextSub { @Node @Ellipse { footnote } }
+@NextSub { @Node @Ellipse { figure } }
+@NextSub { @Node @Ellipse { footnote } }
+}}
+The tree can be deeper, for example with sections appearing within
+chapters which appear within the body text, which appears within the
+final sequence of pages. Document formatting languages generally shirk
+the issues raised by this dual tree structure, by making the dynamic
+tree built-in, by limiting one or both trees to two levels, and so on,
+providing a classic example of the impoverishing effect of failing to
+permit language features to attain their natural level of generality.
+@PP
+We are thus led to propose a second abstraction for document formatting,
+which we name the @I galley in recognition of its similarity to the
+galleys used in manual typesetting. A galley consists of an object (such
+as a footnote) together with a sequence of places where that object may
+appear (such as the bottoms of the current and following pages). Splitting
+occurs quite naturally when space at any place is insufficient to hold
+the entire object.
+@PP
+In Lout, a footnote galley and its place of appearance are defined
+as follows:
+@ID @OneRow @Code {
+"def @FootPlace { @Galley }"
+""
+"def @FootNote into { @FootPlace&&following }"
+" right x"
+"{ x }"
+}
+The @Code "@FootPlace" symbol contains the special symbol {@Code "@Galley"},
+indicating that it is a point of appearance for a galley. By placing
+invocations of @Code "@FootPlace" at the bottoms of pages, as in Section
+{@NumberOf recursion}, we define the desired points of appearance for
+footnotes. Symbols whose body contains @Code "@Galley" either directly
+or indirectly are called receptive symbols, meaning receptive to
+galleys, and they are expanded only on demand. The effect of the
+@Code "into" clause is to make each invocation of @Code "@FootNote" a
+galley whose object is the result of the invocation in the usual way,
+and whose sequence of points of appearance is specified by the @Code "into"
+clause; in this example, the sequence of all @Code "@FootPlace" symbols
+following the invocation point.
+@PP
+Lout permits galleys to be invoked within other galleys to arbitrary
+depth, so that one may have footnotes within figures within the body
+text galley, for example, creating arbitrary static trees. Receptive
+symbols like @Code "@FootPlace" may appear within any galley, creating
+arbitrary dynamic trees as well. The root of the dynamic tree, which
+would normally consist of the sequence of pages of the complete assembled
+document, is considered to be a galley whose point of appearance is the
+output file. Points of appearance may be @Code preceding or @Code following
+the invocation point; entries in tables of contents are the main users
+of {@Code preceding}.
+@PP
+The galley abstraction is adequate for all of the applications listed at
+the beginning of this section, except that there is no provision for
+sorting index entries and references. Sorting of galleys has been added
+to Lout as a built-in feature, invoked by adding a special @Code "@Key"
+parameter to the galleys, and using its value as the sort key. The author
+was at a loss to find any other way, or any useful generalization of this
+feature. Its implementation will be discussed in Section
+{@NumberOf cross.impl}.
+@End @SubSection
diff --git a/doc/doc/design/s5_2 b/doc/doc/design/s5_2
new file mode 100644
index 0000000..a81630d
--- /dev/null
+++ b/doc/doc/design/s5_2
@@ -0,0 +1,372 @@
+@SubSection
+ @Tag { flushing }
+ @Title { The galley flushing algorithm }
+@Begin
+@PP
+Galley components are promoted one by one into the point of appearance in
+the dynamic parent galley, then carried along with it, ultimately to the
+root galley and the output file. This process is called @I galley
+{@I flushing}: the galleys are rivers running together to the sea, and
+each component is a drop of water.
+@PP
+Here is a snapshot of a small dynamic tree, based on the @Code "@PageList"
+definitions of Section {@NumberOf recursion}:
+@ID @Fig {
+
+@I 10p @Font { output file } A:: @Box linestyle { noline } margin { 0c }
+
+||2c
+
+{
+@I 10p @Font { root galley }
+//0.2c
+B:: @Box margin { 0c } linestyle { noline }
+//
+@LittlePage {
+|0.5rt - 1 -
+//1.2vx &2m A small
+//1.2vx @Code "@Galley" * C:: @Box margin { 0.01c } linestyle { noline }
+//1rt @Code "@FootSect"
+}
+//
+@Box margin { 0.3c } 2.8c @Wide 8p @Font @Code "@PageList 2"
+}
+
+||2c
+
+{
+//0.9c @I 10p @Font { body text }
+//0.2c D:: @Box margin { 0.3c } 2.8c @Wide 8p @Font paragraph
+// @Box margin { 0.3c } 2.8c @Wide 8p @Font { of text. }
+// @Box margin { 0.3c } 2.8c @Wide @Code 8p @Font "@Input"
+}
+
+// @Arrow from { B@W } to { A@E }
+// @Arrow from { D@W } to { C@E }
+
+}
+The components of the body text galley are lines, except for the special
+receptive symbol @Code "@Input" which is a placeholder for as yet unread
+input (Section {@NumberOf lookahead}). The components of the root galley are
+pages, except for the concluding unexpanded invocation of {@Code "@PageList"},
+which is an inexhaustible source of more pages, expanded on demand.
+@PP
+The concrete data structure used by Basser Lout permits the galley
+flushing algorithm to navigate the dynamic tree and find significant
+features quickly:
+@ID 10p @Font @Fig maxlabels { 100 } {
+
+A:: @Ellipse @I { HEAD }
+
+||1.5c
+
+@OneCol @OneRow {
+B:: @Ellipse @I { RECEIVING * }
+// @Arrow from { A@CTR ++ {A@CTR @Angle B@W A@CIRCUM} } to { B@W }
+//0.6c
+C:: @Ellipse @I { RECEPTIVE }
+// @Arrow from { A@CTR ++ {A@CTR @Angle C@W A@CIRCUM} } to { C@W }
+//0.6c
+D:: @Box margin { 0c } linestyle { noline }
+// @Arrow from { A@CTR ++ {A@CTR @Angle D@NW A@CIRCUM} } to { D@NW }
+//
+@LittlePage {
+|0.5rt - 1 -
+//1.2vx &2m A small
+//1.2vx E:: @Box margin { 0c } linestyle { noline } @Code "@Galley "
+//1rt F:: @Box margin { 0c } linestyle { noline } @Code "@FootSect "
+}
+// @FunnyArrow arrow { forward } from { B@E } to { E@E }
+// @FunnyArrow arrow { forward } from { C@E } to { F@E }
+//0.6c
+C:: @Ellipse @I { GAP }
+// @Arrow from { A@CTR ++ {A@CTR @Angle C@W A@CIRCUM} } to { C@W }
+//0.6c
+C:: @Ellipse @I { RECEPTIVE }
+// @Arrow from { A@CTR ++ {A@CTR @Angle C@W A@CIRCUM} } to { C@W }
+//0.6c
+D:: @Box margin { 0.3c } 2.8c @Wide 8p @Font @Code "@PageList 2"
+// @Arrow from { A@CTR ++ {A@CTR @Angle D@NW A@CIRCUM} } to { D@NW }
+// @FunnyArrow from { C@E } to { D@W ++ { 1.8 cm 0 } }
+}
+
+||1.0c
+
+A:: @Ellipse @I { HEAD }
+& @Arrow from { B@E } to { A@W }
+
+||1.5c
+
+@OneCol @OneRow {
+B:: @Box margin { 0.3c } 2.8c @Wide 8p @Font paragraph
+// @Arrow from { A@CTR ++ {A@CTR @Angle B@W A@CIRCUM} } to { B@W }
+//0.6c
+B:: @Ellipse @I { GAP }
+// @Arrow from { A@CTR ++ {A@CTR @Angle B@W A@CIRCUM} } to { B@W }
+//0.6c
+B:: @Box margin { 0.3c } 2.8c @Wide 8p @Font { of text. }
+// @Arrow from { A@CTR ++ {A@CTR @Angle B@NW A@CIRCUM} } to { B@NW }
+//0.6c
+B:: @Ellipse @I { GAP }
+// @Arrow from { A@CTR ++ {A@CTR @Angle B@W A@CIRCUM} } to { B@W }
+//0.6c
+B:: @Ellipse @I { RECEPTIVE }
+// @Arrow from { A@CTR ++ {A@CTR @Angle B@W A@CIRCUM} } to { B@W }
+//0.6c
+C:: @Box margin { 0.3c } 2.8c @Wide 8p @Font @Code "@Input"
+// @Arrow from { A@CTR ++ {A@CTR @Angle C@NW A@CIRCUM} } to { C@NW }
+// @FunnyArrow from { B@E } to { C@W ++ { 1.2 cm 0 } }
+}
+
+}
+Each galley has a @Eq { HEAD } node whose children are its component
+objects, separated by @Eq { GAP } nodes recording the inter-component
+gaps.
+@PP
+Each component is preceded by zero or more @I {galley index nodes} of
+various types. Every receptive symbol has a @Eq { RECEPTIVE } index pointing
+to it, so that it can be found without searching through its
+component. If the symbol is currently the target of a galley, it has a
+@Eq { RECEIVING } index instead which is also linked to the incoming
+galley. Galleys that are currently without a target are linked to the
+dynamic tree by @Eq { UNATTACHED } galley indexes, either just after their
+most recent target if there has been one, or else at their point of
+invocation.
+@PP
+Each galley should be thought of as a concurrent process, although the
+implementation in C uses coroutines implemented by procedures. A galley
+may promote its first component only if it has a target, sufficient space
+is available at the target to receive the component, and the component
+contains no receptive symbols. This last condition seems to be the key
+to galley synchronization: it forces a bottom-up promotion regime,
+preventing pages from flushing to output before text flushes into them,
+for example.
+@PP
+Each galley contains a number of binary semaphores, shown as asterisks
+in our snapshots when set. At any given moment, a galley process is
+either running or else is suspended on one of its own semaphores. The
+@Eq { HEAD } node contains a semaphore which is set when the galley has tried
+to find a target and failed. Each receptive symbol has a semaphore
+which is set when that symbol is preventing the first component from
+being promoted.
+@PP
+For example, in the snapshot at the beginning of this section, the root
+galley is suspended on the @Code "@Galley" symbol, but the text galley
+is running. It will suspend on the @Code "@Input" symbol after the
+first two components are promoted.
+@PP
+Every galley {@I G}, be it a list of pages, body text, a footnote, or
+whatever, executes the following algorithm in parallel with every other
+galley:
+@DP
+1. Initially @I G is unattached. Search forwards or backwards from its
+@Eq { UNATTACHED } index as required, to find a receptive symbol @I S which
+can expand to reveal a target for {@I G}.
+@DP
+2. If no @I S can be found, suspend on the attachment semaphore. Resume
+later from step 1.
+@DP
+3. Expand @I S to reveal the target of {@I G}. Preserve {@I S}'s
+semaphore by moving it to the first receptive symbol within the
+expansion of {@I S}.
+@DP
+4. Calculate the available width and height at the target, and if
+@I G is still a pure parse tree, use the environment attached to @I G
+and the style information from the target to evaluate @I G as in
+Section {@NumberOf functional}.
+@DP
+5. Examine the components of @I G one by one. For each component there
+are three possibilities:
+@PP
+@I ACCEPT. If the component fits into the available space, and has
+no other problems, then promote it into the target. If this is the
+first component promoted into this target, and @I G is a forcing
+galley (Section {@NumberOf lookahead}), delete every receptive symbol
+preceding the target in the parent galley. If @I G is the root galley,
+render the component on the output file and dispose it;
+@PP
+@I REJECT. If the component is too large for the available space, or a
+@Eq { FOLLOWS } index (described below) forbids its promotion into this
+target, then detach @I G from the target. If this was the first component
+at this target, @I S has been a complete failure, so undo step 3 (Basser
+Lout is not able to undo step 4); otherwise delete the target. Return to
+step 1 and continue immediately;
+@PP
+@I SUSPEND. If the component contains a receptive symbol, it cannot be
+promoted yet. If this symbol is the target of a galley that was written
+to an auxiliary file on a previous run, read in that galley and flush
+it. Otherwise suspend on the receptive symbol's semaphore; resume later
+from step 4.
+@DP
+6. Terminate when the galley is empty.
+@DP
+At various points in this algorithm, receptive symbols (and their
+semaphores) are deleted in the dynamic parent galley, possibly
+permitting it to resume flushing. When this happens, Basser Lout resumes
+the parent immediately after @I G suspends or terminates. Also,
+whenever a component is promoted, any child galleys connected to
+it by @Eq { UNATTACHED } indexes must be resumed, since these
+galleys may be able to find a target now. A good example of this
+situation occurs when a line of body text with one or more footnotes
+is promoted onto a page. Basser Lout gives priority to such children,
+suspending @I G while each is given a chance to flush.
+@PP
+Basser Lout searches for the first target of @I G only in regions of the
+dynamic tree that will clearly precede or follow {@I G}'s invocation
+point in the final printed document, whichever is specified in the
+@Code into clause; subsequent targets are sought later in the same
+galley as the first. An exception to this rule, whose necessity will
+be made clear later, is that a first @Code following target will be
+sought within a dynamic sibling galley preceding {@I G}'s invocation
+point:
+@ID 10p @Font @Fig {
+
+{
+@I { dynamic parent }
+//0.2c
+@Box 2.8c @Wide 4.5c @High
+{
+ //0.5c A:: @Box margin { 0c } linestyle { noline } @Code "@XTarget"
+ //1.0c C:: @Box margin { 0c } linestyle { noline } @Eq { UNATTACHED }
+ //1.3c @Code "@XTarget"
+}
+}
+
+||1.5c
+
+{
+//0.6c
+B:: @Box margin {0c} linestyle {noline} @Code "X into { @XTarget&&following }"
+//0.2c
+@Box 2.8c @Wide 1.5c @High { //0.8c @Code "@GTarget" }
+//1.0c
+D:: @Box margin {0c} linestyle {noline} @Code "G into { @GTarget&&following }"
+//0.2c
+@Box 2.8c @Wide 2.5c @High {}
+}
+
+// @Arrow from { A@E ++ {0.2 cm 0} } to { B@W -- {0.2 cm 0} }
+// @Arrow from { C@E ++ {0.2 cm 0} } to { D@W -- {0.2 cm 0} }
+
+}
+Here @I G will find the @Code "@GTarget" target within {@I X}. This is
+dangerous, since if the first component of @I G is then promoted via
+@I X into the first {@Code "@XTarget"} rather than into the second,
+{@I G}'s target will not appear later in the final printed document than
+its invocation point, as required by the @Code into clause.
+@PP
+Accordingly, when such a target is chosen, two special galley indexes
+are inserted and linked together: a @Eq { PRECEDES } index at {@I G}'s
+invocation point, and a @Eq { FOLLOWS } index at the first component of
+{@I G}. The algorithm checks before promoting any @Eq { FOLLOWS } index
+that its promotion would not place it earlier than the corresponding
+@Eq { PRECEDES } index in the same galley, and rejects the component if
+it would. Since @Eq { PRECEDES } and @Eq { FOLLOWS } indexes are rarely used,
+this check can be implemented by linear search.
+@PP
+When two components are separated by {@Code "/"}, as opposed to the more
+usual {@Code "//"}, each influences the horizontal position of the
+other. Because of this, the @I SUSPEND action is in fact taken if a
+receptive symbol occurs in any component separated from the first by
+{@Code "/"} operators only. Again, linear search forwards to the first
+{@Code "//"} suffices for this check.
+@PP
+A good illustration of these unusual cases is afforded by the
+@Code "@Align" symbols from the standard DocumentLayout package. These
+are used to produce displayed equations, aligned on their equals signs
+despite being separated by arbitrary body text.
+@PP
+The @Code "@Align" symbols are packaged neatly for the convenience of
+the non-expert user, but we will show just the essence of the
+implementation here. First, an @Code "@AlignList" galley is created
+which contains an infinite supply of @Code "@AlignPlace" receptive
+symbols separated by @Code "/" operators:
+@ID @Fig {
+
+{
+@I { body text galley }
+//0.2c
+@Box 2.8c @Wide 4.0c @High
+{ //1.5c
+ A:: @Box margin { 0c } linestyle { noline } @Code "@Galley"
+}
+}
+
+||1.5c
+
+{
+//2.4c
+B:: @Box margin { 0c } linestyle { noline } @Code "@AlignList"
+//0.2c
+@Box {
+ @Code "@AlignPlace"
+//1vx @Code "@AlignPlace"
+//1vx @Code "..."
+//1vx @Code "@EndAlignList"
+}
+
+}
+
+// @Arrow from { A@E ++ {0.2 cm 0} } to { B@W -- {0.2 cm 0} }
+}
+Then equations like
+@ID @ShowMarks @Eq { f(x) ^= g(x) + 2 }
+are created and sent to @Code "@AlignPlace&&following" targets. They
+collect in the @Code "@AlignList" galley and are aligned there:
+@ID @Fig {
+
+{
+@I { body text galley }
+//0.2c
+@Box 2.8c @Wide 4.0c @High
+{ //1.5c
+ A:: @Box margin { 0c } linestyle { noline } @Code "@Galley"
+}
+}
+
+||1.5c
+
+{
+//2.4c
+B:: @Box margin { 0c } linestyle { noline } @Code "@AlignList"
+//0.2c
+@Box {
+ @Line linestyle { dashed } from { xmark ysize } to { xmark 0 }
+ {
+ @Eq { f(x) ^= g(x) + 2 }
+ /1vx @Eq { f(x) - g(x) ^= 2 }
+ /1vx @Code "..."
+ /1vx @Code "@EndAlignList"
+ }
+}
+
+}
+
+// @Arrow from { A@E ++ {0.2 cm 0} } to { B@W -- {0.2 cm 0} }
+}
+The @Code "@AlignList" galley does not flush, because its first
+component is connected to a receptive symbol by @Code "/" operators.
+@PP
+After the last equation, an empty forcing galley is sent to
+{@Code "@EndAlignList"}, deleting the two remaining receptive symbols from
+the @Code "@AlignList" galley and permitting it to flush. @Eq { FOLLOWS }
+indexes ensure that each equation finds a target placed in the body text
+just after its point of invocation, so the equations return, aligned, to
+approximately the points where they were invoked. Notice that the flushing
+of body text is suspended until the list of equations is completed, as it
+must be, since the horizontal position of the first equation cannot
+be known until the last equation is added to the list.
+@PP
+Layout quality can occasionally be improved by rejecting a component
+that could be promoted -- for example, a component of body text that
+carries a footnote too large to fit on the current page. Since Lout
+does not specify how breaking decisions are made, beyond the basic
+constraints imposed by available space and @Code into clauses, in
+principle such high quality breaking could be added to the
+implementation with no change to the language. However, the
+generality of the galley flushing algorithm, and its already
+considerable complexity, make this a daunting problem in practice,
+although a fascinating one. @TeX [9], with its unnested
+set of `floating insertions' clearly identifiable as each page is begun,
+has the advantage in this respect.
+@End @SubSection
diff --git a/doc/doc/design/s5_3 b/doc/doc/design/s5_3
new file mode 100644
index 0000000..3ff9881
--- /dev/null
+++ b/doc/doc/design/s5_3
@@ -0,0 +1,125 @@
+@SubSection
+ @Tag { constraints }
+ @Title { Size constraints and size adjustments }
+@Begin
+@PP
+The galley flushing algorithm needs to know the available width and
+height at each receptive symbol. These symbols may lie within
+arbitrarily complex objects, and they may compete with each other for
+available space (as body text and footnote targets do), so this
+information must be extracted from the tree structure when required.
+@PP
+For example, consider the object
+@ID @Code "5i @Wide { a / b }"
+and suppose that the width of @Code { a } is @Eq { 1i, 2i } (@Eq {1i} to
+the left of the mark, @Eq { 2i } to the right). What then is the
+available width at {@Code { b }}? If we let the width of @Code b be
+@Eq {l,r}, we must have
+@ID @Eq { (1i up l) + (2i up r) <= 5i }
+with the @Eq {non up } (i.e. max) operations arising from mark
+alignment. Eliminating them gives
+@ID @OneRow @Eq {
+matrix {
+ { 1i + 2i ^<= 5i }
+mabove { l + 2i ^<= 5i }
+mabove { 1i + r ^<= 5i }
+mabove { l + r ^<= 5i }
+}
+}
+and since we assume that @Code a fits into the available space, the
+first inequality may be dropped, leaving
+@ID @OneRow @Eq {
+matrix {
+ { l ^<= 3i }
+mabove { l + r ^<= 5i }
+mabove { r ^<= 4i }
+}
+}
+Object @Code b may have width @Eq {l, r} for any @Eq { l } and
+@Eq { r } satisfying these inequalities, and no others.
+@PP
+Here is another example:
+@ID @Code "5i @High { a /2ix b }"
+Assuming that @Code a has height @Eq {1i,1i}, the height @Eq {l, r} of
+@Code b must satisfy
+@ID @Eq { 1i + ((1i + l) up 2i) + r <= 5i }
+This time the @Eq { non up } operation arises from the mark-to-mark gap
+mode, which will widen the @Eq { 2i } gap if necessary to prevent
+@Code a and @Code b from overlapping. This inequality can be rewritten as
+@ID @OneRow @Eq {
+matrix {
+ { l ^<= infinity }
+mabove { l + r ^<= 3i }
+mabove { r ^<= 2i }
+}
+}
+In general, Lout is designed so that the available width or height at
+any point can be expressed by three inequalities of the form
+@ID @OneRow @Eq {
+matrix {
+ { l ^<= x }
+mabove { l + r ^<= y }
+mabove { r ^<= z }
+}
+}
+where @Eq {x }, @Eq {y} and @Eq {z} may be @Eq { infinity }. We
+abbreviate these three inequalities to @Eq { l, r <= x, y, z }, and we
+call @Eq {x, y, z} a {@I{size constraint}}.
+@PP
+The two examples above showed how to propagate the size constraint
+@Eq { infinity, 5i, infinity } for
+@Code "a / b" down one level to the child {@Code b}. Basser Lout
+contains a complete set of general rules for all node types, too
+complicated to give here. Instead, we give just one example of how
+these rules are derived, using the object
+@ID @OneRow {
+@Eq {x sub 1} @Code "/" @Eq {x sub 2} @Code "/" @Eq {ldots} @Code
+"/" @Eq {x sub n}
+}
+where @Eq { x sub j } has width @Eq { l sub j , r sub j } for all @Eq {j}.
+@PP
+Suppose the whole object has width constraint @OneCol @Eq {X,Y,Z}, and we
+require the width constraint of {@Eq { x sub i }}. Let
+@Eq { L = max sub j ` l sub j } and @Eq { R = max sub j ` r sub j },
+so that @OneCol @Eq {L, R} is the width of the whole object. We assume
+@Eq {L, R <= X,Y,Z}. Then @Eq { x sub i } can be enlarged to any size
+@Eq { l sub i ` , r sub i } satisfying
+@ID @Eq { ( l sub i up L), ( r sub i up R) <= X, Y, Z }
+which expands to eight inequalities:
+@ID @OneRow @Eq {
+matrix {
+ { l sub i ^<= X }
+mabove { L ^<= X }
+mabove { l sub i + r sub i ^<= Y }
+mabove { l sub i + R ^<= Y }
+mabove { L + r sub i ^<= Y }
+mabove { L + R ^<= Y }
+mabove { r sub i ^<= Z }
+mabove { R ^<= Z }
+}
+}
+Three are already known, and slightly rearranging the others gives
+@ID @OneRow @Eq {
+matrix {
+ { l sub i ^<= X }
+mabove { l sub i ^<= Y - R }
+mabove { l sub i + r sub i ^<= Y }
+mabove { r sub i ^<= Z }
+mabove { r sub i ^<= Y - L }
+}
+}
+Therefore the width constraint of @Eq { x sub i } is
+@ID @Eq { min(X, Y-R), Y, min(Z, Y-L) }
+The size constraint of any node can be found by climbing the tree to a
+@I WIDE or @I HIGH node where the constraint is trivial, then propagating
+it back down to the node, and this is the function of procedure
+{@I Constrained} in Basser Lout.
+@PP
+After some components have been promoted into a target, the sizes stored
+in its parent and higher ancestors must be adjusted to reflect the
+increased size. This is done by yet another set of recursive rules,
+upward-moving this time, which cease as soon as some ancestor's size
+does not change. These rules are embodied in procedure @I AdjustSize
+of Basser Lout. The adjustment must be done before relinquishing
+control to any other galley, but not after every component.
+@End @SubSection
diff --git a/doc/doc/design/s5_4 b/doc/doc/design/s5_4
new file mode 100644
index 0000000..b91d7ce
--- /dev/null
+++ b/doc/doc/design/s5_4
@@ -0,0 +1,97 @@
+@SubSection
+ @Tag { lookahead }
+ @Title { The limited lookahead problem }
+@Begin
+@PP
+Basser Lout assumes that there will be enough internal memory to hold
+the symbol table plus a few pages, but not an entire document. This
+section describes the consequent problems and how they were solved.
+Other interpreters, notably interactive editors running on virtual
+memory systems, would not necessarily need this assumption.
+@PP
+Although Basser Lout can read and format any legal input, its memory
+consumption will be optimized when the bulk of the document resides in
+galleys whose targets can be identified at the moment they are
+encountered. Let us take the typical example of a root galley which
+is a list of pages, a @Code "@BodyText" galley targeted into the
+pages, @Code "@Chapter" galleys targeted into {@Code "@BodyText"},
+and @Code "@Section" galleys targeted into the @Code "@Chapter"
+galleys:
+@ID @OneRow @Code {
+"@PageList"
+"//"
+"@BodyText"
+"//"
+"@Chapter {"
+" @Section { ... }"
+" @Section { ... }"
+" ..."
+" @Section { ... }"
+"}"
+"@Chapter {"
+" ..."
+"}"
+}
+Basser Lout is able to read and process such galleys one paragraph at
+a time (strictly, from one @Code "//" at the outer level of a galley
+to the next), as we now describe.
+@PP
+When the parser encounters the beginning of a galley, like @Code "@Chapter"
+or {@Code "@Section"}, it initiates a new galley process. The special
+receptive symbol @Code "@Input" is substituted for the as yet
+unread right parameter of the galley. As each paragraph of the right
+parameter is read, it is deleted from the parse tree and injected into
+the galley's {@Code "@Input"}. The galley is then resumed. The parser
+thus acts as an extra
+concurrent process; it has low priority, so that input is read only when
+there is nothing else to do. Since galleys may be nested, a stack of
+@Code "@Input" symbols is needed, each with its own environment and
+style. If a galley is encountered for which a target is not immediately
+identifiable (a footnote, for example), it is read in its entirety and
+hung in pure parse tree form from an @I UNATTACHED index in the usual way,
+with an environment but without a style. It will be flushed later
+when its component is promoted.
+@PP
+In addition to producing a steady flow of components from input, we must
+also ensure that receptive symbols do not unduly block their
+promotion. The @Code "@FootSect" symbol at the foot of each page is a
+typical example: until it is deleted the page cannot be printed.
+@PP
+Receptive symbols are expanded only on demand, so @Code "@FootSect" can
+be deleted as soon as we can prove that it is not wanted. The symbol
+table can tell us that only @Code "@FootNote" galleys (with
+@Code "@FootPlace&&following" targets) want it, so it might be possible
+to deduce that @Code "@FootSect" may be deleted as soon as body text
+enters the following page.
+@PP
+The author was unable to make this work, so Basser Lout requires the
+user to identify those galleys which will carry the bulk of the document
+({@Code "@Chapter"}, {@Code "@Section"}, {@Code "@BodyText"}) as
+{@I {forcing galleys}}, by writing @Code "force into" instead of
+@Code "into" in their definitions. As described in the previous
+section, when a forcing galley attaches to a target, all receptive
+symbols preceding the target in its galley are deleted, removing all
+impediments to flushing. For example, when a forcing body text galley
+enters a new page, the @Code "@FootSect" symbol on the preceding page
+will be deleted. It seems likely that a system which could afford to
+wait until all input was read before deleting any receptive symbols
+would not need forcing galleys.
+@PP
+Galleys whose targets are a long way from their invocation points can be
+a problem. If the direction is {@Code "following"}, such galleys are
+held in internal memory for a long time, unless they are to be
+sorted. If the direction is
+{@Code "preceding"}, then either the entire intervening document must be
+held in memory (prevented by the target from flushing), or else some
+forcing galley prematurely deletes the target, leaving the galley bereft.
+@PP
+The typical example of the latter case occurs when the galley is an
+entry in the table of contents, launched backwards from the beginning of
+a chapter or section. Its target in the table of contents will have
+been deleted long before, to permit the rest of the document to print,
+so the galley ultimately emerges as an unattached galley promoted out of
+the root galley. All such galleys are written to an auxiliary file,
+indexed by the missing target. On the next run, just before that target
+is deleted, the auxiliary file is checked and any galleys for it are
+read in and flushed.
+@End @SubSection
diff --git a/doc/doc/design/s5_5 b/doc/doc/design/s5_5
new file mode 100644
index 0000000..af4d88b
--- /dev/null
+++ b/doc/doc/design/s5_5
@@ -0,0 +1,109 @@
+@SubSection
+ @Tag { horizontal }
+ @Title { Horizontal galleys }
+@Begin
+@PP
+There is a strong analogy between breaking a column of text into
+page-sized pieces, and breaking a paragraph into line-sized pieces. In
+fact, the two differ only in direction: vertical for body text,
+horizontal for paragraphs. In this section we define {@I{horizontal
+galleys}}, and show how they provide an unlimited number of paragraph
+breaking styles, as well as solve some other problems. Regrettably,
+lack of time has prevented their incorporation into the Basser Lout
+interpreter.
+@PP
+Imagine a galley whose components are separated by horizontal
+concatenation operators instead of vertical ones, perhaps indicated by a
+@Code { horizontally into } clause. Then all object breaking, including
+paragraph breaking, could be replaced by galley component promotion like
+this:
+@ID @OneRow @Code {
+"def @Paragraph right x"
+"{"
+" def @LinePlace { @Galley }"
+""
+" def @LineList"
+" {"
+" @HExpand @LinePlace"
+" //1vx @LineList"
+" }"
+""
+" def @Par horizontally into { @LinePlace&&preceding }"
+" right x"
+" { x }"
+""
+" @LineList // @Par { 0.2i @Wide {} &0i x &1rt }"
+"}"
+}
+The @Code "@HExpand" operator, which is a primitive of Basser Lout,
+horizontally expands the gaps in its right parameter until the result
+fills the available space, thus implementing line adjustment, except
+when the parameter contains tabulation gaps like {@Code "&1rt"}, which
+cause the parameter to be already expanded. The result of
+@ID @Code "@Paragraph { A short paragraph of text. }"
+would then be something like
+@ID 1.5i @Wide {
+0.2i @Wide {} & A short paragraph of text.
+}
+depending on the available horizontal space. An unlimited range of
+paragraph breaking styles could be defined, including ragged right, ragged
+left, break-and-center, and so on.
+@PP
+In Basser Lout, indented paragraphs are produced by preceding them with
+a horizontal concatenation operator, for example {@Code "|0.5i"}. This
+has the unfortunate effect of making an indented paragraph into a single
+component of the enclosing galley, so that it will always be kept
+together on one page. Horizontal galleys solve this problem with a
+simple change to {@Code "@LineList"}:
+@ID @OneRow @Code {
+"def @LineList"
+"{"
+" |0.5i @HExpand @LinePlace"
+" //1vx @LineList"
+"}"
+}
+showing the flexibility that comes from bringing the full power of the
+Lout language to bear on paragraph layout. It is easy to make provision
+for a tag on the first line.
+@PP
+Although Basser Lout permits receptive symbols within paragraphs, they
+are of little use, because their available width is calculated after
+paragraph breaking, and the incoming galley cannot spread over more than
+one line. With horizontal galleys, such symbols would have infinite
+available width, and we could easily produce a filled paragraph of
+footnotes like this:
+@ID 3.5i @Wide {
+@OneRow { -2p @Font 1 ^/0.3vo } & See Jones and Saunders (1982). &2m
+@OneRow { -2p @Font 2 ^/0.3vo } & Or so Jacobsen (1973) asserts. &2m
+@OneRow { -2p @Font 3 ^/0.3vo } & {@I ibid}, p. 327.
+}
+based on an infinite horizontal sequence of @Code "@FootPlace" symbols
+inside a horizontal galley.
+@PP
+When body text is placed on pages, the length of each column varies
+depending on the available vertical space. Horizontal galleys could
+analogously produce lines of varying length, and so could fill
+non-rectangular shapes.
+@PP
+An important theoretical benefit of horizontal galleys is that they
+would permit horizontal and vertical to be treated in a perfectly
+symmetrical way, whereas at present paragraph breaking is horizontal
+only, and galley breaking is vertical only. This must simplify the
+treatment of non-European languages which fill in unusual directions,
+although it is not itself sufficient to implement them.
+@PP
+There are a few minor problems with horizontal galleys. First, the
+syntactic overhead of enclosing each paragraph in @Code "@Paragraph { ... }"
+or whatever is unacceptable. Permitting user-defined operators to have lower
+precedence than the white space between two words might help here. Second,
+the built-in paragraph breaker includes hyphenation, and it permits line
+breaks in the input to determine line breaks in the output, if
+desired. These features must somehow be preserved. Finally, we have
+explained how the Basser Lout interpreter assigns equal width to the
+wider columns of tables (Section {@NumberOf style}). The equivalent
+situation in vertical galleys occurs when two receptive symbols compete
+for vertical space (e.g. @Code "@TextPlace" and {@Code "@FootSect"}),
+and there it is conventional to grant as much as required to the first
+arrival. It is not clear to the author how these different approaches
+can be reconciled.
+@End @SubSection
diff --git a/doc/doc/design/s5_9 b/doc/doc/design/s5_9
new file mode 100644
index 0000000..648a1b6
--- /dev/null
+++ b/doc/doc/design/s5_9
@@ -0,0 +1,2 @@
+@EndSubSections
+@End @Section
diff --git a/doc/doc/design/s6_0 b/doc/doc/design/s6_0
new file mode 100644
index 0000000..07fb62e
--- /dev/null
+++ b/doc/doc/design/s6_0
@@ -0,0 +1,18 @@
+@Section
+ @Title { Cross references }
+@Begin
+@PP
+Cross references, such as `see page 57' and `see Figure 5,' are a useful
+but highly error-prone feature of documents. Scribe [7]
+introduced a method of keeping them up to date automatically as the
+document changes: the user gives each referenced entity a tag, and
+operators are provided that return the page or sequence number of the
+entity with a given tag.
+@PP
+A cross reference takes an object (such as a page number) from one point
+in the document and copies it to another, and this generalization
+suggests other applications. For example, a running header is copied
+from the title of a nearby chapter, and a reference is copied from a
+bibliographic database. Making the unity of these applications manifest
+is an interesting language design problem.
+@BeginSubSections
diff --git a/doc/doc/design/s6_1 b/doc/doc/design/s6_1
new file mode 100644
index 0000000..0ffc70d
--- /dev/null
+++ b/doc/doc/design/s6_1
@@ -0,0 +1,85 @@
+@SubSection
+ @Tag { cross }
+ @Title { The cross reference abstraction }
+@Begin
+@PP
+In developing the cross reference abstraction, it seemed best to begin
+with the database application, since it is the simplest. Database
+relations are naturally mapped into Lout definitions:
+@ID @OneRow @Code {
+"def @Reference"
+" named @Tag {}"
+" named @Author {}"
+" named @Title {}"
+" named @Journal {}"
+"{}"
+}
+The set of all invocations of @Code "@Reference" is a relation whose
+attributes are the parameters, and whose tuples are the invocations. To
+complete the correspondence, we need only declare that the @Code "@Tag"
+parameter is special, serving as the key attribute.
+@PP
+Following the database model, we next need a notation for retrieving the
+invocation with a given tag:
+@ID @Code "@Reference&&kingston91"
+This @I {cross reference} is like an arrow pointing to the invocation. To
+access its attributes, we write
+@ID @Code "@Reference&&kingston91 @Open { @Author, @Title }"
+The @Code "@Open" operator evaluates its right parameter in an
+environment which includes the exported parameters of its left.
+@PP
+An invocation is chosen to be a running header because of its proximity
+to the place where it is used, rather than by its tag. Such proximity
+is naturally expressed by two special tags, {@Code preceding} and
+{@Code following}; for example, @Code "@Sym&&following" will point to
+the closest following invocation of @Code "@Sym" in the final printed
+document. This is much simpler conceptually than reference to the
+internal state of the document formatter at a critical moment, the usual
+approach to running headers.
+@PP
+It turns out that the above design solves all the cross referencing
+problems encountered in practice except one, which may be typified by
+the problem of finding the number of the page on which the chapter whose
+tag is @Code "intro" begins. Two cross referencing steps are needed,
+first to {@Code "@Chapter&&intro"}, then from there to
+{@Code "@Page&&preceding"}, where the page number is known.
+@PP
+Given our success so far, this last problem proves to be
+surprisingly difficult. We first try
+@ID @OneRow @Code {
+"@Chapter&&intro @Open {"
+" @Page&&preceding @Open { @PageNum }"
+"}"
+}
+but this fails because @Code "@Page&&preceding" is evaluated in the
+present context, not in the context of @Code "@Chapter&&intro" as
+required. So our next attempt is
+@ID @OneRow @Code {
+"def @Chapter"
+" named @PageNum { @Page&&preceding @Open { @PageNum } }"
+" ..."
+}
+with the @Code "@Page&&preceding" cross reference attached to the
+chapter; we write
+@ID @Code "@Chapter&&intro @Open { @PageNum }"
+This also fails, because parameters are evaluated after substitution, so
+once again @Code "@Page&&preceding" is evaluated in the wrong context. We
+could of course define a new operator specifically for this case:
+@ID @Code "@Page&&{ @Preceding @Chapter&&intro }"
+or some such. This is free of the annoying context-sensitivity, but it
+seems quite complex, and the expected cross reference @Code "@Page&&preceding"
+does not appear.
+@PP
+The author was lost in these obscurities for some time, and ultimately
+rescued himself by looking ahead to the implementation of the
+@Code preceding and @Code following tags, to see if a simple extension
+of it would solve the problem. This led to the @Code "@Tagged" operator:
+@ID @Code "@Page&&preceding @Tagged intro"
+placed at the beginning of the body of the chapter will attach @Code intro
+as an extra tag to the closest preceding invocation of {@Code "@Page"},
+so that
+@ID @Code "@Page&&intro @Open { @PageNum }"
+yields the desired page number. There is something low-level and ad hoc
+about the @Code "@Tagged" operator, but the two cross references do
+appear naturally, and it works.
+@End @SubSection
diff --git a/doc/doc/design/s6_2 b/doc/doc/design/s6_2
new file mode 100644
index 0000000..2df5478
--- /dev/null
+++ b/doc/doc/design/s6_2
@@ -0,0 +1,79 @@
+@SubSection
+ @Tag { cross.impl }
+ @Title { Implementation of cross references }
+@Begin
+@PP
+Before an object can be sized and printed, the values of any cross
+references within it must be known. If they refer to invocations that
+have not yet been read, there is a problem. Scribe [7]
+solves it by capitalizing on the fact that documents are formatted
+repeatedly during the drafting process. All tagged invocations are
+copied to an auxiliary file during the first run, and indexed for quick
+retrieval on the second. A new auxiliary file is written during the second
+run, for retrieval on the third, and so on. Cross references always lag
+one run behind the rest of the document; a perfect copy may be produced
+by formatting the same version twice, except in a few pathological cases
+that fail to converge.
+@PP
+Cross referencing in Lout is implemented on top of a simple database
+system. Each database is either writable or readable but not both at
+once, and holds a set of key-value entries: the keys are @S ASCII
+strings, and the values are Lout objects, possibly with environments,
+written in Lout source. Operations are provided for writing an entry,
+converting from writable to readable, retrieval by key, and sequential
+retrieval in key order.
+@PP
+The implementation, which is quite unsophisticated, employs one or more
+@S ASCII {@I{ database files}}, containing the values, and one @S ASCII
+{@I{ index file}} per database, containing the keys. To write an entry,
+the value is first appended to a database file, then a line like
+@ID @Code "@Chapter&&intro ch1.ld 57"
+is appended to the index file, giving the file and offset where the value
+is stored. To convert from writable to readable, the index file is
+sorted. Then retrieval by key requires a binary search of the index
+file and one seek into a database file, and sequential retrieval by key
+is trivial.
+@PP
+This database system is used in several ways. For an external database,
+say of bibliographic references, the user creates the database file of
+values (without environments), Lout creates the index file whenever it
+cannot find one, and retrievals by key proceed as usual. Cross
+references with tags other than @Code preceding and @Code following are
+treated as described above, by writing all tagged invocations (with
+environments) to a single database, which is converted to readable at
+the end of the run for retrievals on the next run. Sorted galleys, such
+as index entries, are written out indexed by target and key and retrieved
+sequentially on the next run. Unsorted galleys with preceding targets
+which pop off the top of the root galley without finding a target, such
+as entries in tables of contents, are treated similarly, except that they
+are indexed by target and a sequence number that preserves their relative
+order during the sort.
+@PP
+When Lout processes a multi-file document, one cross reference database
+file is written for each input file, but they share a common index
+file. At end of run, the new index file is sorted and merged with the
+old one in such a way as to preserve entries relating to files not read
+on the current run. This provides some support for piecemeal
+formatting, but eventually the files must all be formatted together.
+@PP
+When a @Code preceding or @Code following cross reference is found,
+it is attached to a galley index of type @Eq { CROSS_PREC } or
+{@Eq { CROSS_FOLL }}, together with an automatically generated tag composed
+of the current file name and a sequence number. When a tagged
+invocation is found, it is attached to a @Eq { CROSS_TARG } index. These
+galley indexes are carried along through the dynamic tree, and
+eventually pop off the top of the root galley, at which point it is easy
+to determine which cross references refer to which invocations, since
+the indexes are now in final printed document order. Each referenced
+invocation is then written to the cross reference database, multiply indexed
+by the generated tags of the associated cross references. On the next
+run, when the same @Code preceding and @Code following cross references
+are found, chances are good that the same tags will be generated, and
+the appropriate values can be retrieved from the database immediately.
+@PP
+This approach was the genesis of the @Code "@Tagged" operator, whose
+implementation is now immediate: for each @Code "@Tagged" operator we
+produce one @Eq { CROSS_PREC } or @Eq { CROSS_FOLL } galley index,
+replacing the generated tag with the right parameter of the @Code "@Tagged"
+operator. Nothing more is required.
+@End @SubSection
diff --git a/doc/doc/design/s6_9 b/doc/doc/design/s6_9
new file mode 100644
index 0000000..648a1b6
--- /dev/null
+++ b/doc/doc/design/s6_9
@@ -0,0 +1,2 @@
+@EndSubSections
+@End @Section
diff --git a/doc/doc/design/s7_0 b/doc/doc/design/s7_0
new file mode 100644
index 0000000..2cb4245
--- /dev/null
+++ b/doc/doc/design/s7_0
@@ -0,0 +1,84 @@
+@Section
+ @Title { Conclusion }
+@Begin
+@PP
+Since its public release in October 1991, the Basser Lout interpreter
+has been ported without incident to a wide variety of Unix systems and
+hardware. It was tested extensively before release on its own
+documentation, and the few minor bugs which have emerged since then have
+all been fixed in the second release, scheduled to appear in mid-1992.
+@PP
+Seven substantial packages of definitions are distributed with Basser
+Lout. The DocumentLayout package, and its variants ReportLayout and
+BookLayout, provide the standard features that all documents
+require: pages, columns, paragraphs, headings, footnotes, floating
+figures and tables, chapters and sections, displays and lists, access
+to bibliographic databases, cross references, and so on
+[11]. The BookLayout package has extra features
+needed by books, including an automatically generated table of contents,
+Roman page numbers for the prefatory material, running page headers,
+odd and even page layouts, and a sorted index. The Eq package formats
+equations, and Pas formats Pascal programs [10]; Tab
+formats tables [12]; and Fig draws figures
+[6].
+@PP
+The non-expert user who uses these packages perceives a system of a
+standard quite similar to other fully developed batch formatters,
+although the interface is considerably more coherent than, say, the troff
+family's [8]. The expert user perceives a system which
+is radically different from previous ones, in which a great deal can be
+achieved very quickly. To take an extreme example, Pas was designed,
+implemented, tested, and documented in one afternoon. Eq took about
+a week, but most of that time was spent in marshalling the vast
+repertoire of mathematical symbols, and fine-tuning the spacing. Most
+of the effort seems to go into designing a good interface; most symbols
+are implemented in just one or a few lines of Lout.
+@PP
+A group of about 20 satisfied non-expert users has grown up within
+the author's department, mainly Honours students with no investment
+in older systems to hold them back. Basser Lout has been advertised
+on the Internet news as available via anonymous {@I ftp}, so the
+extent of its outside user community is hard to gauge. About 50
+people have mailed comments or questions to the author; many
+of these people have ported the program, written small definitions,
+and modified the standard packages.
+@PP
+Future work could usefully begin with the improvements suggested in this
+paper: overlapping spanning columns, better semantics for available
+space, and especially horizontal galleys. Support for non-European
+languages is also needed. However, the main task is the development of
+an interactive document editor based on Lout. A structure editor similar
+to Lilac [13], which already has objects and user-defined
+symbols, is envisaged; since cross references are easy when the whole
+document is available, the only major new problem is the treatment of
+galleys, including the expansion and retraction of receptive symbols.
+@LP
+@LP
+@B { Note. } Since the above was written the author has completed a
+revised version of Basser Lout, in which the problem concerning
+available space mentioned in Section {@NumberOf style} has been resolved.
+@LP
+@LP
+@B { Acknowledgment. } The author gratefully acknowledges many
+valuable discussions with Douglas W. Jones, especially during the
+development of the galley abstraction; and also many helpful comments on
+presentation by the anonymous referee.
+@DP
+@DP
+@Heading { References }
+@NumberedList
+@LI @RefPrint kingston91
+@LI @RefPrint kingston91over
+@LI @RefPrint kingston91basser
+@LI @RefPrint furuta82
+@LI @RefPrint kernighan75
+@LI @RefPrint kingston91fig
+@LI @RefPrint reid80
+@LI @RefPrint ossanna76
+@LI @RefPrint knuth84
+@LI @RefPrint kingston91eq
+@LI @RefPrint kingston91begin
+@LI @RefPrint kingston91tab
+@LI @RefPrint brooks91
+@EndList
+@End @Section
diff --git a/doc/doc/expert/README b/doc/doc/expert/README
new file mode 100644
index 0000000..e28ae5a
--- /dev/null
+++ b/doc/doc/expert/README
@@ -0,0 +1,24 @@
+Directory lout/doc/expert
+
+This directory contains the Lout source files for the Expert's Guide
+to the Lout Document Formatting System. To produce the Guide, type
+the command
+
+ lout -r4 all > outfile.ps
+
+in this directory. The -r4 flag causes Lout to run over the document
+four times. This is necessary to completely resolve all cross
+references, although a readable PostScript file outfile.ps would
+be generated after a single run if -r4 was omitted. Auxiliary files
+with .li and .ld suffixes will be created in this directory. A copy
+of the final outfile.ps is included. There should be no warning
+messages on the fourth run, except this one:
+
+lout file "pre_conc" (from "pre" line 7, from "all" line 25):
+ 162,1: 13.2c object too high for 8.7c space; will try elsewhere
+
+which just warns about a figure that is not able to be placed on
+the first possible page, and so has to appear on the next page.
+
+Jeffrey H. Kingston
+26 June 2013
diff --git a/doc/doc/expert/all b/doc/doc/expert/all
new file mode 100644
index 0000000..96d3dca
--- /dev/null
+++ b/doc/doc/expert/all
@@ -0,0 +1,28 @@
+@SysInclude { eq }
+@SysInclude { tab }
+@SysInclude { tbl }
+@SysInclude { fig }
+@SysInclude { book }
+@SysDatabase @Reference { loutrefs }
+@Book
+ @Title { An Expert's Guide to the
+
+Lout
+
+Document Formatting System }
+ @Author { Jeffrey H. Kingston }
+ @Edition { Version 3.40
+June, 2013 }
+ @Publisher { @I { @CopyRight Copyright 1991, 2008, Jeffrey
+H. Kingston, School of Information Technologies, The University
+of Sydney 2006, Australia.} }
+ @InitialLanguage { English }
+ @OptimizePages { No }
+//
+
+@Include { preface }
+@Include { pri }
+@Include { det }
+@Include { pre }
+@Include { exa }
+@Include { tex }
diff --git a/doc/doc/expert/det b/doc/doc/expert/det
new file mode 100644
index 0000000..0018d91
--- /dev/null
+++ b/doc/doc/expert/det
@@ -0,0 +1,17 @@
+@Chapter
+ @Title { Details }
+ @Tag { details }
+@Begin
+@BeginSections
+@Include { det_lexi }
+@Include { det_name }
+@Include { det_visi }
+@Include { det_filt }
+@Include { det_prec }
+@Include { det_size }
+@Include { det_gall }
+@Include { det_sort }
+@Include { det_hori }
+@Include { det_opti }
+@EndSections
+@End @Chapter
diff --git a/doc/doc/expert/det_filt b/doc/doc/expert/det_filt
new file mode 100644
index 0000000..0d5405d
--- /dev/null
+++ b/doc/doc/expert/det_filt
@@ -0,0 +1,109 @@
+@Section
+ @Title { Filtered right and body parameters }
+ @Tag { filters }
+@Begin
+@PP
+A right or body parameter may be filtered by some other computer
+program before being included by Lout. As an example of such a program
+we will use the Unix @Code sort command:
+@ID @Code "sort -o outfile infile"
+This causes file @Code outfile to contain a sorted copy of file
+{@Code infile}. We incorporate this into a Lout definition as follows:
+@ID @OneRow @Code {
+"def @Sort"
+" named @Options {}"
+" right x"
+"{"
+" def @Filter { sort @Options -o @FilterOut @FilterIn }"
+""
+" lines @Break x"
+"}"
+}
+The presence within @Code "@Sort" of a definition of a symbol called
+@Code "@Filter" tells Lout that the right parameter of @Code "@Sort"
+is to be filtered before inclusion. When @Code "@Sort" is invoked,
+@Code "@Filter" is evaluated and its value executed as a system
+command. In addition to the symbols ordinarily available within the
+body of {@Code "@Filter"}, there are three others:
+@VeryWideTaggedList
+@TI { @Code "@FilterIn" } {
+the name of a file which will, at the time the system command is
+executed, contain the actual right or body parameter of the
+symbol, exactly as it appears in the input file;
+}
+@TI { @Code "@FilterOut" } {
+the name of a file of Lout text whose contents Lout will read after
+the system command has finished, as a replacement for what was put
+into file {@Code "@FilterIn"};
+}
+@TI { @Code "@FilterErr" } {
+the name of a file that Lout will attempt to read after the system
+command has finished, containing error messages produced by the
+command that Lout will pass on to the user as non-fatal errors. Use
+of this file is optional.
+}
+@EndList
+It is a fatal error for the system command to return a non-zero status.
+@PP
+Now the @Code sort command has options @Code -u for deleting duplicate
+lines, and @Code -r for reversing the sorting order. So the result of
+@ID @OneRow @Code {
+"@Sort"
+" @Options { -r -u }"
+"{"
+"Austen, Jane"
+"Dickens, Charles"
+"Eliot, George"
+"Hardy, Thomas"
+"Bront{@Char edieresis}, Charlotte"
+"}"
+}
+is
+@ID @OneRow lines @Break
+{
+Hardy, Thomas
+Eliot, George
+Dickens, Charles
+Bront{@Char edieresis}, Charlotte
+Austen, Jane
+}
+Unlike all the other examples in this manual, this output
+is simulated. This was done so that the ability to format this
+manual is not dependent on the existence of the Unix {@Code "sort"}
+command, and it highlights the fact that filtered actual parameters
+are by their nature of uncertain portability.
+@PP
+There is no need for an actual filtered parameter to obey the lexical
+rules of Lout, since it is passed directly to the other program. However,
+Lout must be able to work out where the parameter ends, which gives
+rise to the following rules. As with a body parameter, a symbol
+@Code "@Sym" with a filtered parameter must be invoked in either the
+form @Code "@Sym { ... }" or the form {@Code "@Sym @Begin ... @End @Sym"},
+plus options as usual. In the former case, braces within the
+actual parameter must match; in the latter case, the actual parameter
+may not contain {@Code "@End"}.
+@PP
+If an actual filtered parameter contains @@Include, this is taken to
+begin a Lout @@Include directive in the usual form (Section
+{@NumberOf include}):
+@ID @OneRow @Code {
+"@Sort {"
+"Austen, Jane"
+"@Include { authors }"
+"Hardy, Thomas"
+"}"
+}
+The included file becomes part of {@Code "@FilterIn"}, but any braces,
+@@Include, or @@End within it are not noticed by Lout.
+@PP
+The first character of file @Code "@FilterIn" will be the first
+non-white space character following the opening @Code "{" or @@Begin,
+or the first character of an included file if @@Include comes first. The
+second-last character of file @Code "@FilterIn" will be the last non-white
+space character preceding the closing @Code "}" or {@Code "@End @Sym"},
+or the last character of an included file if @@Include comes last. One
+newline character is always appended and is the last character of file
+{@Code "@FilterIn"}. This effects a compromise between the Lout convention,
+that spaces following @Code "{" or preceding @Code "}" are not significant,
+with the Unix convention that all text files end with a newline character.
+@End @Section
diff --git a/doc/doc/expert/det_gall b/doc/doc/expert/det_gall
new file mode 100644
index 0000000..371a6d8
--- /dev/null
+++ b/doc/doc/expert/det_gall
@@ -0,0 +1,388 @@
+@Section
+ @Title { Galleys and targets }
+ @Tag { targets }
+@Begin
+@PP
+The behaviour of galleys and their targets, as described in Section
+galley.feature.in.detail @SubIndex { in detail }
+targets.in.detail @SubIndex { in detail }
+{@NumberOf galleys}, can be summarized in three laws:
+@DP
+{@I {First Law}}: The first target is the closest invocation of the
+target symbol, either preceding or following the invocation point of the
+galley as required, which has sufficient space to receive the first
+component;
+@DP
+{@I {Second Law}}: Each subsequent target is the closest invocation of
+the target symbol, following the previous target and lying within the same
+galley, which has sufficient space to receive the first remaining component;
+@DP
+{@I {Third Law}}: A receptive symbol that does not receive at least one
+component of any galley is replaced by @@Null.
+@DP
+The terms `closest,' `preceding,' and `following' refer to position in
+the final printed document. This section explains the operation of
+these laws in Basser Lout.
+@PP
+When a galley cannot be fitted into just one target, Lout must find
+points in the galley where it can be split in two. The object lying
+between two neighbouring potential split points is called a @I component
+component @Index { Components of a galley }
+of the galley. By definition, a component cannot be split.
+@PP
+To determine the components of a galley, expand all symbols other than
+recursive and receptive ones, discard all @@Font, @@Break, @@Space,
+@@SetColor, @@SetColour, and @@Language symbols, perform paragraph
+breaking as required, and discard all redundant braces. Then view the
+galley as a sequence of one or more objects separated by vertical
+concatenation symbols; these are the components and split points,
+except that concatenation symbols whose gaps are unbreakable
+(Section {@NumberOf concatenation}) are not eligible to be split
+points. For example, given the definition
+@ID @OneRow @Code {
+"def @Section into { @SectionPlace&&preceding }"
+" named @Title {}"
+" right @Body"
+"{"
+" 15p @Font { @Title //0.7f }"
+" //"
+" @Body"
+"}"
+}
+the galley
+@ID @OneRow @Code {
+"@Section"
+" @Title { Introduction }"
+"{ This is a subject that really"
+"needs no introduction. }"
+}
+becomes
+@ID @OneRow @Code {
+"Introduction"
+"//0.7f"
+"{}"
+"//"
+"This is a subject that really needs"
+"//1vx"
+"no introduction."
+}
+with four components. If @Code "@Body" had been preceded by @Code "|1.0c" in
+the definition, the result would have been
+@ID @OneRow @Code {
+"Introduction"
+"//0.7f"
+"{}"
+"//"
+"|1.0c { This is a subject that really needs //1vx no introduction. }"
+}
+with @Code "//1vx" buried within one component and hence not a
+potential split point. If @Code "0.7f" had been {@Code "0.7fu"},
+the gap would have been unbreakable and @Code "//0.7fu" would not
+have been a potential split point.
+@PP
+Version 3.03 has liberalized this somewhat in the following way. When
+a component consists of a horizontal sequence of two or more objects
+@Eq { A sub 1 ,..., A sub n } separated by @Code "|" (not {@Code "||"},
+not {@Code "&"}), Lout will investigate the component to see whether
+it can be broken up. It looks at each @Eq { A sub i } to see whether it
+is a vertical concatenation of objects @Eq { A sub i1 ,..., A sub im }; if
+two or more of the @Eq { A sub i } satisfy this condition, the component
+will not be broken up. So now suppose we have just one @Eq { A sub i }
+which is a vertical concatenation. Lout will break the component into
+one component for each of the @Eq { A sub i1 ,..., A sub im }, provided
+that they are separated by @Code "//" symbols (not {@Code "/"}), and
+provided this can be done without introducing any apparent change into
+the appearance of the component (this second rule will be satisfied if
+the other @Eq { A sub j } are not very large). The example above
+satisfies all these rules and will be broken up into two components,
+so the @Code "//1vx" becomes a potential split point after all.
+@PP
+The lines of a paragraph become separate components if the paragraph
+occupies an entire component before breaking; otherwise they are
+enclosed in a @@OneRow symbol within one component. The same is true of
+incoming components of other galleys. If a @@Galley symbol occupies an
+entire component by the rules above, then the incoming components that
+replace it become components of their new home:
+@ID @Tab
+ @Fmta { @Col @Code A ! @Col lines @Break B ! @Col @Code C }
+{
+@Rowa
+ A {
+"An example"
+"//0.5c"
+"@Galley"
+"//0.5c"
+"@SomethingList"
+}
+ B {
+""
+@Eq { ==> }
+}
+ C {
+"An example"
+"//0.5c"
+"Incoming components"
+"//0.2c"
+"from some other galley"
+"//0.5c"
+"@SomethingList"
+}
+}
+Otherwise the incoming components are grouped within a @@OneRow symbol
+and lie within one component.
+@PP
+This distinction has a marked effect on the vertical concatenation
+b.unit.use @SubIndex { use in @Code "//1.1b" }
+symbol {@Code "//1.1b"}, which calls for more space than is available
+(Section {@NumberOf concatenation}). There is no room for this symbol
+within any component, so it will force a split and be discarded in that
+case. But it can be promoted to between two components.
+@PP
+Components may be separated by @Code "/" as well as by {@Code "//"},
+giving rise to column mark alignment between adjacent components:
+@ID @ShowVMark {
+@HContract @GreyBox { 1c @Wide ^| 1c @Wide 0.6c @High }
+/0.3c
+@HContract @GreyBox { 2c @Wide 0.6c @High }
+/0.3c
+@HContract @GreyBox { 0.5c @Wide ^| 0.8c @Wide 0.6c @High }
+}
+When aligned components are promoted into different targets, the meaning
+of alignment becomes very doubtful. For example, what if the targets
+mark.alignment.in.detail @SubIndex { in detail }
+are in different columns of one page, or what if one lies within
+{@Code "90d @Rotate"}?
+@PP
+The truth is that @Code "/" causes all the objects that share a mark to
+have equal width:
+@ID @ShowVMark {
+@TightBox @HContract @GreyBox { 1c @Wide ^| 1c @Wide 0.6c @High }
+/0.3c
+@TightBox @HContract @GreyBox { 2c @Wide 0.6c @High }
+/0.3c
+@TightBox @HContract @GreyBox { 0.5c @Wide ^| 0.8c @Wide 0.6c @High }
+}
+This is a consequence of the `as wide as possible' rule (Section
+{@NumberOf size}). Mark alignment occurs {@I incidentally}, whenever
+the fragments are placed into similar contexts.
+@PP
+In this connection we must also consider the special case of a @@Galley
+symbol which shares its column mark with some other object:
+@ID @OneRow @Code {
+"@Galley"
+"/0.2c"
+"@SomethingList"
+}
+(The @@Galley may or may not occupy an entire component; that doesn't
+matter here.) If incoming components are separated by @Code "//" rather
+than by {@Code "/"}, the meaning is so doubtful that this is forbidden. In
+fact, a galley whose components replace such a @@Galley must have a
+single column mark running its full length; that is, its components must
+all share a single column mark. This mark will be merged with the
+column mark passing through each @@Galley that these components replace;
+all the objects on the resulting merged mark will have equal width.
+@PP
+The root galley, where everything collects immediately prior to output,
+root.galley.in.detail @SubIndex { in detail }
+is created automatically, not by a definition. Its target is the output
+file, and its object is the entire input, which typically looks like this:
+@ID @OneRow @Code {
+"@PageList"
+"//"
+"@Text {"
+" Body text of the document ..."
+"}"
+}
+where @Code "@PageList" expands to a sequence of pages containing
+@Code "@TextPlace" symbols (see Section {@NumberOf definitions}), and
+@Code "@Text" is a galley:
+@ID @OneRow @Code {
+"def @TextPlace { @Galley }"
+""
+"def @Text into { @TextPlace&&preceding }"
+" right x"
+"{"
+" x"
+"}"
+}
+The spot vacated by a galley -- its invocation point -- becomes a @@Null
+object, so this root galley is effectively @Code "@PageList" alone, as
+required. The @Code "@Text" galley will find its first target preceding
+its invocation point, within {@Code "@PageList"}.
+@PP
+Printing {@PageMark rootg} the root galley on the output file is
+somewhat problematical,
+root.galley.printing @SubIndex { printing of }
+because Lout has no way of knowing how large the paper is. Basser Lout
+simply prints one root galley component per page (except it skips
+components of height zero), and the user is responsible for ensuring
+that each component is page-sized. Gaps between root galley
+components, even unbreakable ones, have no effect on the result.
+@PP
+Basser Lout will promote a component only after any receptive symbols
+components.promotion @SubIndex { promotion of }
+promotion @Index { Promotion of components }
+within it have been replaced, either by galleys or by @@Null, since
+until then the component is not complete. A component which shares a
+mark with following components is held up until they are all complete,
+since until then their width is uncertain.
+@PP
+Consider a page with @Code "@TextPlace" and @Code "@FootSect" receptive
+symbols. The rule just given will prevent the page from being printed
+until @Code "@TextPlace" is replaced by body text, quite rightly; but
+@Code "@FootSect" will also prevent its printing, even when there are no
+footnotes.
+@PP
+Basser Lout is keen to write out pages as soon as possible, to save memory,
+and it cannot afford to wait forever for non-existent footnotes. A variant
+of the galley concept, called a @I {forcing galley},
+forcing.galley @Index { Forcing galley } {@PageMark forcing}
+is introduced to solve this problem. A forcing galley is defined like this:
+@ID @OneRow @Code {
+"def @Text force into { @TextPlace&&preceding }"
+" ..."
+}
+and so on. When such a galley replaces a @@Galley symbol, Lout replaces
+every receptive symbol preceding the @@Galley by @@Null, thus ensuring that
+as soon as text enters a page, for example, everything up to and including
+the preceding page can be printed. This does not take care of the very last
+page, but Basser Lout replaces all receptive symbols by @@Null when it realizes
+that its input has all been read, thus allowing the last page to print.
+@PP
+A forcing galley causes the Third Law to be applied earlier than
+expected, and this creates two problems. First, the replacement by
+@@Null may be premature: a galley may turn up later wanting one of the
+defunct targets. Such galleys (entries in tables of contents are
+typical examples) are copied into the cross reference database and read
+in during the next run just before their targets are closed, and so they
+find their targets in the end. Care must be taken to ensure that
+large galleys such as chapters and sections do not have defunct targets,
+since the cost of copying them to and from the database is unacceptably high.
+@PP
+It is actually an over-simplification to say that these replacements
+occur when the forcing galley replaces its @@Galley. What really happens
+is that from this moment on Lout understands that it has the right to make
+these replacements, and it will do each one at the first moment when not
+doing it would hold things up. So there is a short period of grace when
+galleys, such as the entries in tables of contents just alluded to,
+can sneak into these receptive symbols.
+@PP
+The @Code "into" and @Code "force into" forms are actually just abbreviations
+for the true way that galleys are defined, which
+is by giving the symbol that is to be a galley a parameter or nested
+target.sym @Index { @Code "@Target" symbol }
+definition with the special name {@Code "@Target"}:
+@ID @Code {
+"def @Text"
+" right x"
+"{"
+" def @Target { @TextPlace&&preceding }"
+""
+" x"
+"}"
+}
+A forcing galley is obtained by using @Code "&&&" instead of
+{@Code "&&"}. @Code "@Target" may be an arbitrary object,
+provided that it yields such a cross reference when evaluated. In
+this way, different invocations may have different targets.
+@PP
+The forcing galley effect can be obtained in another way, by replacing
+the @Code "@Galley" symbol to which the galley is attached by
+{@Code "@ForceGalley"}. The advantage of this form is that the galley
+can then be forcing at some places and not at others, using the formula
+@ID @OneRow @Code {
+"def @SomePlace right x"
+"{"
+" x @Case {"
+" noforce @Yield @Galley"
+" force @Yield @ForceGalley"
+" }"
+"}"
+}
+Now a galley may have @Code "@SomePlace" for its target, and if it
+happens to attach to
+@ID @Code "@SomePlace force"
+it will have the effect of a forcing galley, while if it happens to
+attach to
+@ID @Code "@SomePlace noforce"
+it will not.
+@PP
+Although it doesn't matter whether a galley is declared as a forcing
+galley or merely arrives at a {@Code "@ForceGalley"} symbol from the
+point of view of the effect on nearby targets, there is one way in
+which Lout treats the two cases differently. If a forcing galley's
+first component does not fit into the available space, that component
+will be scaled vertically until it does. The rationale for this is
+that forcing galleys are meant to carry the bulk of the document and
+cannot afford to be held up because the user has inadvertently included
+an over-high component, which for all Lout knows to the contrary may
+not fit on any page. If this scaling is not wanted but forcing is,
+the galley may be declared not forcing but all its targets may be set
+to contain {@Code "@ForceGalley"}.
+@PP
+Within a galley, a symbol whose name is @@Enclose has a special
+enclose.sym @Index @@Enclose
+meaning: when components of the galley replace a @@Galley or @@ForceGalley
+symbol, that symbol is first replaced by @@Enclose @@Galley or
+@@Enclose @@ForceGalley. For example,
+@ID @Code @Verbatim {
+def @Figure into @FigurePlace&&following
+ right @Body
+{
+ def @Enclose
+ right x
+ {
+ @Box x
+ }
+
+ @Body
+}
+}
+causes each @@Galley or @@ForceGalley symbol that receives components of
+galley @Code "@Figure" to be replaced by {@Code "@Box @Galley"} or
+{@Code "@Box @ForceGalley"}, assuming an appropriate definition of
+@Code "@Box". This is useful, for example, when producing multi-page
+boxed displays, figures, and tables.
+@PP
+An @@Enclose symbol may have only one parameter, which must be a
+right parameter. It would not make sense to allow more parameters,
+since there is no suitable value to assign to them. However, the
+@@Enclose symbol may contain inner definitions, and it may make use
+of any symbol that is available at that point, in the usual way. The
+@@Enclose symbol may be a named parameter (itself with a right parameter)
+of the galley symbol, rather than an inner definition as shown above,
+if desired.
+@PP
+It makes sense for sorted galleys containing a @Code "@Merge" symbol
+(Section {@NumberOf sorted}) to also have an @Code "@Enclose" symbol. The
+meaning is that after all merging is done, each resulting galley has
+an @Code "@Enclose" symbol which is applied in the usual way. The value
+of this @Code "@Enclose" symbol will be the value of an @Code "@Enclose"
+symbol from one of the contributing galleys, but exactly which one
+is not defined. So it is safest if all such @Code "@Enclose" symbols
+produce the same result.
+@PP
+A @Code "following" galley may fail to find a first target lying in a
+following component of the same galley as its invocation point. This is
+a deficiency of Basser Lout, which occurs if the target has not been
+read from input at the time the galley tries to find it. A workaround
+is to use a @Code "preceding" galley instead, defined like this:
+@ID @OneRow @Code {
+"def @AGalley into { @AGalleyPlace&&preceding }"
+" right @Body"
+"{"
+" //1.1b"
+" @Body"
+"}"
+}
+and invoked like this:
+@ID @OneRow @Code {
+"@AGalleyPlace | @AGalley { content of galley }"
+"//"
+"..."
+"@AGalleyPlace"
+}
+The first @Code "@AGalleyPlace" receives only the initial empty object,
+since the @Code "//1.1b" forces a split; and the Second Law puts Basser
+Lout on the right track thereafter.
+@End @Section
diff --git a/doc/doc/expert/det_hori b/doc/doc/expert/det_hori
new file mode 100644
index 0000000..ad81dc4
--- /dev/null
+++ b/doc/doc/expert/det_hori
@@ -0,0 +1,91 @@
+@Section
+ @Title { Horizontal galleys }
+ @Tag { horizontal }
+@Begin
+@PP
+All the galleys so far have been @I { vertical galleys }: galleys
+whose components are separated by vertical concatenation symbols. There
+are also horizontal galleys, whose components are separated by the
+horizontal concatenation operator @Code "&" (or equivalently, by
+spaces). These work in the same way as vertical galleys, except for
+the change of direction. For example, the following defines the
+equivalent of an ordinary outdented paragraph, except that an option
+is provided for varying the size of the outdent:
+@ID @Code {
+"def @OutdentPar"
+" named outdent { 2f }"
+" right x"
+"{"
+" def @ParPlace { @Galley }"
+""
+" def @LineList"
+" {"
+" outdent @Wide {} | @PAdjust @ParPlace"
+" //1vx @LineList"
+" }"
+""
+" def @ParGalley force horizontally into { @ParPlace&&preceding }"
+" right x"
+" {"
+" x"
+" }"
+""
+" @PAdjust @ParPlace"
+" // @ParGalley { x &1rt }"
+" //1vx @LineList"
+"}"
+}
+Notice the use of @Code "&1rt" to cancel the effect of @Code "@PAdjust"
+on the last line of the paragraph. This definition has a problem in
+that there will be a concluding unexpanded @Code "@LineList" symbol
+which will hold up promotion of the enclosing galley; this problem
+may be fixed by the same method used to end a list.
+@PP
+In an ideal world, there would be nothing further to say about horizontal
+galleys. However there are a few differences which arise from various
+practical considerations and limitations. Perhaps some day a more
+perfect symmetry will be implemented.
+@PP
+Each vertical galley has a fixed finite width, and every component is
+broken to that width. This is needed basically to trigger paragraph
+breaking. However, there is no equivalent of paragraph breaking in
+the vertical direction, so horizontal galleys do not have any particular
+fixed height. Instead, each component has its own individual height.
+@PP
+When two objects are separated by {@Code "/"}, they
+are assigned the same width (Section {@NumberOf targets}), and
+this holds true even if the two objects are subsequently separated
+by being promoted into different targets. For example, two aligned
+equations will have the same width, and hence their alignment will be
+preserved, even if they appear in different columns or pages. However,
+even though @Code "&" aligns the marks of its two parameters, it does
+not assign them a common height. This means that the height of any
+component of a horizontal galley promoted into one target does not
+affect the height consumed by the components promoted into any other
+target. The other horizontal concatenation operator, {@Code "|"},
+does assign a common height to its two parameters; but sequences of
+objects separated by this operator cannot be the components of a
+horizontal galley.
+@PP
+Lout is able to read vertical galleys one paragraph at a time; in this
+way it processes the document in small chunks, never holding more than
+a few pages in memory at any time. However, horizontal galleys are
+always read in completely, so they should not be extremely long.
+@PP
+In principle Lout should be able to hyphenate the components of
+horizontal galleys when they are simple words, but this is not
+implemented at present.
+@PP
+In an ideal world, every paragraph would be treated as a horizontal
+galley. However, to do so in practice would be too slow and would
+lead to excessive clumsiness in notation, so at present Lout has
+two competing mechanisms in this area: the built-in paragraph
+breaker with its limited set of options as given under the @Code
+"@Break" operator, and horizontal galleys. As the example above
+shows, horizontal galleys are in principle capable of implementing
+many more paragraph styles than the built-in paragraph breaker
+could ever hope to do. The recommended practical strategy is to use
+the built-in paragraph breaker most of the time, and switch to
+horizontal galleys only for occasional tricks, such as paragraphs
+with drop capitals, circular outlines, etc.
+@End @Section
diff --git a/doc/doc/expert/det_lexi b/doc/doc/expert/det_lexi
new file mode 100644
index 0000000..bea7000
--- /dev/null
+++ b/doc/doc/expert/det_lexi
@@ -0,0 +1,273 @@
+@Section
+ @Tag { lexical }
+ @Title { Lexical structure (words, spaces, symbols) and macros }
+@Begin
+@PP
+The input to Lout consists of a sequence of @I {textual units},
+textual.unit @Index {Textual unit }
+which may be
+either {@I{white spaces}},
+@I identifiers,
+@I delimiters,
+or
+@I {literal words}. Each
+is a sequence of @I characters chosen from:
+letter @Index { Letter character }
+other @Index { Other character }
+quote @Index { Quote character }
+escape @Index { Escape character }
+comment.char @Index { Comment character }
+underscore.char @Index { Underscore character }
+@ID @Tab
+ vmargin { 0.5vx }
+ @Fmta { @Col A ! @Col B }
+{
+@Rowa A { letter } B { @Code "@ab-zAB-Z_" }
+@Rowa A { white space } B { @I { space formfeed tab newline } }
+@Rowa A { quote } B { @Code "\"" }
+@Rowa A { escape } B { @Code "\\" }
+@Rowa A { comment } B { @Code "#" }
+@Rowa A { other } B { @Code "!$%&'()*+,-./0123456789:;<=>?[]^`{|}~" }
+}
+Notice that @Code "@" and @Code "_" are classed as letters. Basser
+Lout accepts the accented letters of the ISO-LATIN-1 character set
+(depending on how it is installed), and these are also classed as
+letters. The ten digits are classed as `other' characters, and in
+fact the `other' class contains all 8-bit characters (except octal 0)
+not assigned to previous classes.
+@PP
+A @I {white space} is a sequence of one or more white space characters.
+white.space @Index { White space }
+formfeed @Index { Formfeed }
+space.f @Index { Space }
+ Lout treats the formfeed character exactly like the space character;
+it is useful for getting page breaks when printing Lout source code.
+@PP
+A @I delimiter is a sequence of one or more `other' characters which
+delimiter @Index { Delimiter }
+is the name of a symbol. For example, @Code "{" and @Code "//" are
+delimiters. When defining a delimiter, the name must be enclosed
+in quotes:
+@ID @Code {
+"def \"^\" { {} ^& {} }"
+}
+but quotes are not used when the delimiter is invoked. A delimiter may
+have delimiters and any other characters adjacent, whereas identifiers
+may not be adjacent to letters or other identifiers. The complete list
+of predefined delimiters is
+@ID @OneRow @Code {
+{
+ "/"
+ @JL "//"
+ @JL "^/"
+ @JL "^//"
+} |2.2cx {
+ "|"
+ @JL "||"
+ @JL "^|"
+ @JL "^||"
+} |2.2cx {
+ "&"
+ @JL "^&"
+} |2.2cx {
+ "&&"
+ @JL "{"
+ @JL "}"
+}
+}
+A longer delimiter like @Code "<=" will be recognised in
+preference to a shorter one like {@Code "<"}.
+@PP
+An @I identifier is a sequence of one or more letters which is the name of a
+identifier @Index { Identifier }
+symbol. It is conventional but not essential to begin identifiers with
+{@Code "@"}; Basser Lout will print a warning message if it finds an
+unquoted literal word (see below) beginning with {@Code "@"}, since such
+words are usually misspelt identifiers. The ten digits are not letters
+and may not appear in identifiers; and although the underscore character
+is a letter and may be used in identifiers, it is not conventional to
+do so. The complete list of predefined identifiers is
+@CD @OneRow @Code {
+{ "@BackEnd"
+ @JL "@Background"
+ @JL "@Begin"
+ @JL "@BeginHeaderComponent"
+ @JL "@Break"
+ @JL "@Case"
+ @JL "@ClearHeaderComponent"
+ @JL "@Common"
+ @JL "@Char"
+ @JL "@CurrFace"
+ @JL "@CurrFamily"
+ @JL "@CurrLang"
+ @JL "@CurrYUnit"
+ @JL "@CurrZUnit"
+ @JL "@Database"
+ @JL "@Enclose"
+ @JL "@End"
+ @JL "@EndHeaderComponent"
+ @JL "@Filter"
+ @JL "@FilterErr"
+ @JL "@FilterIn"
+ @JL "@FilterOut"
+ @JL "@Font"
+ @JL "@FontDef"
+ @JL "@ForceGalley"
+ @JL "@Galley"
+ @JL "@GetContext"
+ @JL "@Graphic"
+ @JL "@HAdjust"
+ @JL "@HContract"
+ @JL "@HCover"
+ @JL "@HExpand"
+ @JL "@High"
+ @JL "@HLimited"
+ @JL "@HMirror"
+ @JL "@HScale"
+ @JL "@HShift"
+} |4.4cx {
+ "@HSpan"
+ @JL "@Include"
+ @JL "@IncludeGraphic"
+ @JL "@IncludeGraphicRepeated"
+ @JL "@Insert"
+ @JL "@KernShrink"
+ @JL "@Key"
+ @JL "@Language"
+ @JL "@LClos"
+ @JL "@LEnv"
+ @JL "@LInput"
+ @JL "@LUse"
+ @JL "@LinkSource"
+ @JL "@LinkDest"
+ @JL "@Meld"
+ @JL "@Merge"
+ @JL "@Minus"
+ @JL "@Moment"
+ @JL "@Next"
+ @JL "@NotRevealed"
+ @JL "@Null"
+ @JL "@OneCol"
+ @JL "@OneOf"
+ @JL "@OneRow"
+ @JL "@Open"
+ @JL "@Optimize"
+ @JL "@Outline"
+ @JL "@PAdjust"
+ @JL "@PageLabel"
+ @JL "@PlainGraphic"
+ @JL "@Plus"
+ @JL "@PrependGraphic"
+ @JL "@RawVerbatim"
+ @JL "@Rotate"
+ @JL "@Rump"
+ @JL "@Scale"
+ @JL "@SetColor"
+} |4.4cx {
+ "@SetColour"
+ @JL "@SetContext"
+ @JL "@SetHeaderComponent"
+ @JL "@Space"
+ @JL "@StartHSpan"
+ @JL "@StartHVSpan"
+ @JL "@StartVSpan"
+ @JL "@SysDatabase"
+ @JL "@SysInclude"
+ @JL "@SysIncludeGraphic"
+ @JL "@SysIncludeGraphicRepeated"
+ @JL "@SysPrependGraphic"
+ @JL "@Tag"
+ @JL "@Tagged"
+ @JL "@Target"
+ @JL "@Texture"
+ @JL "@SetTexture"
+ @JL "@Underline"
+ @JL "@SetUnderlineColor"
+ @JL "@SetUnderlineColour"
+ @JL "@Use"
+ @JL "@URLLink"
+ @JL "@VAdjust"
+ @JL "@VContract"
+ @JL "@VCover"
+ @JL "@Verbatim"
+ @JL "@VExpand"
+ @JL "@VLimited"
+ @JL "@VMirror"
+ @JL "@VScale"
+ @JL "@VShift"
+ @JL "@VSpan"
+ @JL "@Wide"
+ @JL "@Yield"
+ @JL "@YUnit"
+ @JL "@ZUnit"
+}
+}
+plus the names of the parameters of @@Moment. The symbols @@LClos, @@LEnv,
+lclos @Index { @@LClos symbol }
+lenv @Index { @@LEnv symbol }
+linput @Index { @@LInput symbol }
+lvis @Index { @@LVis symbol }
+luse @Index { @@LUse symbol }
+@@LInput, @@LVis and @@LUse appear in cross reference databases generated
+by Lout and are not for use elsewhere.
+@PP
+A sequence of characters which is neither a white space, an identifier, nor a
+delimiter, is by default a @I {literal word}, which means that it will
+word @Index { Word }
+literal.word @Index { Literal word }
+quoted.word @Index { Quoted word }
+pass through Lout unchanged. An arbitrary sequence of characters
+enclosed in double quotes, for example @Code "\"{ }\"", is also a
+literal word. Space characters may be included, but not tabs or
+newlines. There are special character sequences, used only between
+quotes, for obtaining otherwise inaccessible characters:
+@ID @Tab
+ vmargin { 0.5vx }
+ @Fmta { @Col A ! @Col B }
+{
+@Rowa A { @Code "\\\"" } B { produces @Code "\"" }
+@Rowa A { @Code "\\\\" } B { "\\" }
+@Rowa A { @Code "\\ddd" } B { the character whose ASCII code is }
+@Rowa A { } B { the up to three digit octal number {@Code ddd} }
+}
+So, for example, @Code "\"\\\"@PP\\\"\"" produces {@Code "\"@PP\""}.
+@PP
+When the comment character
+comment @Index { Comment }
+@Code "#" is encountered, everything from
+that point to the end of the line is ignored. This is useful for
+including reminders to oneself, like this:
+@ID @OneRow @Code {
+"# Lout user manual"
+"# J. Kingston, June 1989"
+}
+for temporarily deleting parts of the document, and so on.
+@PP
+@I Macros
+macro @Index { Macro }
+provide a means of defining symbols which stand for a
+sequence of textual units rather than an object. For example, the macro
+definition
+@ID @Code {
+"macro @PP { //1.3vx 2.0f @Wide &0i }"
+}
+makes Lout replace the symbol @Code "@PP" by the given textual units
+before assembling its input into objects. A similar macro to this
+one is used to separate the paragraphs of the present document. The
+enclosing braces and any spaces adjacent to them are dropped, which can
+be a problem: @Code "@PP2i" has result {@Code "//1.3vx 2.0f @Wide &0i2i"}
+which is erroneous.
+@PP
+The meaning of symbols used within the body of a macro is determined by
+where the macro is defined, not by where it is used. Due to implementation
+problems, @@Open symbols will not work within macros. Named and body
+parameters will work if the symbol that they are parameters of is also
+present. There is no way to get a left or right brace into the body of
+a macro without the matching brace.
+@PP
+Macros may be nested within other definitions and exported, but they may
+not be parameters. They may not have parameters or nested definitions
+of their own, and consequently a preceding @Code export clause (Section
+{@NumberOf visibility}) would be pointless; however, an @Code import
+clause is permitted.
+@End @Section
diff --git a/doc/doc/expert/det_name b/doc/doc/expert/det_name
new file mode 100644
index 0000000..ae3dac2
--- /dev/null
+++ b/doc/doc/expert/det_name
@@ -0,0 +1,90 @@
+@Section
+ @Tag { named }
+ @Title { Named parameters }
+@Begin
+@PP
+In addition to left and right (or body) parameters, a symbol may have
+any number of {@I {named parameters}}:
+parameter.named @SubIndex { @Code named parameter }
+named.par @Index { @Code named parameter }
+@ID @OneRow @Code {
+"def @Chapter"
+" named @Tag {}"
+" named @Title {}"
+" right x"
+"{"
+" ..."
+"}"
+}
+Their definitions appear in between those of any left and right
+parameters, and each is followed by a @I {default value} between
+default @Index { Default value of parameter }
+braces. When @Code "@Chapter" is invoked, its named parameters are
+given values in the following way:
+@ID @OneRow @Code {
+"@Chapter"
+" @Tag { intro }"
+" @Title { Introduction }"
+"{"
+" ..."
+"}"
+}
+That is, a list of named parameters appears immediately following the
+symbol, each with its value enclosed in braces. Any right parameter
+follows after them. They do not have to appear in the order they were
+defined, and they can even be omitted altogether, in which case the
+default value from the definition is used instead.
+@PP
+If the keyword @Code "compulsory" appears after @Code "named" and
+before the parameter's name, Lout will print a warning message whenever
+this parameter is missing. However it will still use the default value
+as just described.
+@PP
+A named @Code "@Tag" parameter
+tag.par @Index { @Code "@Tag" parameter, default value of }
+does not take its default value from the definition; instead, if a default
+value is needed, Lout invents a simple word which differs from every other
+tag. This is important, for example, in the production of numbered
+chapters and sections (Section {@NumberOf chapters}). The same thing occurs
+if there is a @Code "@Tag" parameter but its value is the empty object: the
+value will be replaced by an invented one.
+@PP
+Named parameters may have parameters, {@PageMark strange} as in the
+following definition:
+@ID @OneRow @Code {
+"def @Strange"
+" named @Format right @Val { [@Val] }"
+" right x"
+"{"
+" @Format x"
+"}"
+}
+The named parameter @Code "@Format" has right parameter {@Code "@Val"},
+and the default value of @Code "@Format" is this parameter enclosed in
+brackets. When @Code "@Format" is invoked it must be supplied with
+a right parameter, which will replace {@Code "@Val"}. Thus,
+@ID @Code {
+"@Strange 27"
+}
+equals @Code "@Format 27" and so has result
+@ID {
+@Strange 27
+}
+The @Code "@Format" symbol is like a definition with parameters whose
+body can be changed:
+@ID @OneRow @Code {
+"@Strange"
+" @Format { Slope @Font @Val. }"
+"27"
+}
+still equals {@Code "@Format 27"}, but this time the result is
+@ID {
+@Strange
+ @Format { Slope @Font @Val. }
+27
+}
+In practice, examples of named parameters with parameters all have this
+flavour of format being separated from content; running headers (Section
+{@NumberOf pagelayout}) and printing styles for bibliographies
+(Section {@NumberOf biblio}) are two major ones.
+@End @Section
diff --git a/doc/doc/expert/det_opti b/doc/doc/expert/det_opti
new file mode 100644
index 0000000..981b468
--- /dev/null
+++ b/doc/doc/expert/det_opti
@@ -0,0 +1,39 @@
+@Section
+ @Title { Optimal galley breaking }
+ @Tag { optimal }
+@Begin
+@PP
+As explained in Section {@NumberOf targets}, the components of a galley
+optimal.gall @Index { Optimal galley breaking }
+are promoted one by one into a target. When space runs out there, the
+galley searches for a new target and promotion resumes.
+@PP
+This process is exactly analogous to placing words onto a line until
+space runs out, then moving to another line. But, as we know, that
+simple method is inferior to the optimal paragraph breaking used by
+Lout (copied from the @TeX system), which examines the entire paragraph
+and determines the most even assignment of words to lines.
+@PP
+Lout offers @I { optimal galley breaking }, the equivalent for galleys
+of optimal paragraph breaking. Optimal galley breaking can reduce the
+size of ugly blank spaces at the bottom of pages preceding large
+unbreakable displays, sometimes quite dramatically.
+@PP
+Optimal galley breaking is applied to each galley, horizontal or
+vertical, that possesses a parameter or nested symbol called
+@Code "@Optimize" whose value is {@Code Yes}. Like cross referencing,
+optimize.sym @Index { @Code "@Optimize" symbol }
+it takes two runs to have effect. On the first run, Lout records the
+sizes of the galley's components and gaps, and also the space available
+at each of its targets. At end of run this information is used to find
+an optimal break, which is written to the cross-reference database. On
+the second run, the optimal break is retrieved and used.
+@PP
+Considering that this process must cope with floating figures,
+new page and conditional new page symbols, breaks for new chapters, and
+evolving documents, it is surprisingly robust. If it does go badly
+wrong, removing file @Code "lout.li" then running Lout twice without
+changing the document may solve the problem. However, cases are known
+where the optimization never converges. These are usually related to
+figures and footnotes whose anchor points fall near page boundaries.
+@End @Section
diff --git a/doc/doc/expert/det_prec b/doc/doc/expert/det_prec
new file mode 100644
index 0000000..2065eb7
--- /dev/null
+++ b/doc/doc/expert/det_prec
@@ -0,0 +1,110 @@
+@Section
+ @Title { Precedence and associativity of symbols }
+ @Tag { precedence }
+@Begin
+@PP
+Every symbol in Lout has a {@I precedence},
+preceden @Index { Precedence }
+which is a positive whole number. When two symbols compete for an object,
+the one with the higher precedence wins it. For example,
+@ID @Code {
+"a | b / c"
+}
+is equivalent to @OneCol @Code { "{" a "|" b "}" "/" c } rather than
+{@OneCol @Code { a "|" "{" b "/" c "}"} }, because @Code "|" has higher
+precedence than @Code "/" and thus wins the {@Code b}.
+@PP
+When the two competing symbols have equal precedence, Lout applies a
+second rule. Each symbol is either @I left-associative or
+associativity @Index { Associativity }
+{@I right-associative}. The value of @OneCol @Code { a op1 b op2 c} is taken
+to be @OneCol @Code { "{" a op1 b "}" op2 c } if the symbols are both
+left-associative, and @OneCol @Code "a op1 { b op2 c }" if they are
+right-associative. In cases not covered by these two rules, use braces.
+@PP
+It sometimes happens that the result is the same regardless of how the
+expression is grouped. For example, @OneCol @Code { "{" a "|" b "}" "|" c }
+and @OneCol @Code { a "|" "{" b "|" c "}" } are always the same, for any
+combination of objects, gaps, and variants of {@Code "|"}. In such cases
+the symbols are said to be {@I associative}, and we can confidently omit
+the braces.
+@PP
+User-defined symbols may be given a precedence and associativity:
+@ID @OneRow @Code {
+"def @Super"
+" precedence 50"
+" associativity right"
+" left x"
+" right y"
+"{"
+" @OneRow { | -2p @Font y ^/0.5fk x }"
+"}"
+}
+They come just after any @Code into clause and before any parameter
+definitions. The precedence may be any whole number between 10 and
+100, and if omitted is assigned the value 100. The higher the number,
+the higher the precedence. The associativity may be @Code left or
+{@Code right}, and if omitted defaults to {@Code right}.
+@PP
+In the example above, the precedence and associativity are both
+literal words ({@Code 50} and {@Code right}). It is also possible
+to define a macro whose value is a suitable literal word, and
+invoke that macro as the value of a precedence or associativity.
+But arbitrary expressions, including invocations of symbols other
+than macros, are not permitted.
+@PP
+Lout's symbols have the following precedences and associativities:
+@ID @Tab
+ vmargin { 0.5vx }
+ @Fmta { @Col @CC A ! @Col @CC B ! @Col C }
+{
+@Rowa
+ A { Precedence }
+ B { Associativity }
+ C { Symbols }
+@Rowa
+@Rowa
+ A { 5 }
+ B { associative }
+ C { @Code "/ ^/ // ^//" }
+@Rowa
+ A { 6 }
+ B { associative }
+ C { @Code "| ^| || ^||" }
+@Rowa
+ A { 7 }
+ B { associative }
+ C { @Code "& ^&" }
+@Rowa
+ A { 7 }
+ B { associative }
+ C { @Code "&" in the form of one or more white space characters }
+@Rowa
+ A { 10-100 }
+ B { @Code left or @Code right }
+ C { user-defined symbols }
+@Rowa
+ A { 100 }
+ B { @Code right }
+ C { @@Wide, @@High, @@Graphic, etc. }
+@Rowa
+ A { 101 }
+ B { - }
+ C { @Code "&&" }
+@Rowa
+ A { 102 }
+ B { associative }
+ C { @Code "&" in the form of 0 spaces }
+@Rowa
+ A { 103 }
+ B { - }
+ C { Body parameters and right parameters of @@Open }
+}
+Actually the precedence of juxtaposition (two objects separated
+by zero spaces) is a little more complicated. If either of the
+two objects is enclosed in braces, the precedence is 7 as for
+one or more spaces. If neither object is enclosed in braces,
+the precedence is 102 as shown above. This complicated rule
+seems to accord better with what people expect and need in
+practice than a pure precedence rule can do.
+@End @Section
diff --git a/doc/doc/expert/det_size b/doc/doc/expert/det_size
new file mode 100644
index 0000000..84beccc
--- /dev/null
+++ b/doc/doc/expert/det_size
@@ -0,0 +1,157 @@
+@Section
+ @Title { The style and size of objects }
+ @Tag { size }
+@Begin
+@PP
+This section explains how Lout determines the style and size of each
+object. Together, these attributes determine the object's final
+appearance in the output.
+style @Index { Style of an object }
+@PP
+The style of an object comprises the following:
+@BulletList
+@LI { Which font family, face and size to use (also defining the
+@Code f unit); }
+@LI { Whether small capitals are in effect or not, and also what fraction
+of the height of full capitals the small capitals are to have; }
+@LI { What gap to replace a single space between two objects by (also
+defining the @Code s unit); }
+@LI { The interpretation to place on white space separating
+two objects ({@Code lout}, {@Code compress}, {@Code separate}, {@Code troff},
+or {@Code tex} as in Section {@NumberOf space}); }
+@LI { The current value of the @Code y and @Code z units of
+measurement (Section {@NumberOf yunit}); }
+@LI { The kind of paragraph breaking to employ ({@Code adjust},
+{@Code ragged}, etc.) }
+@LI { What gap to insert between the lines of paragraphs
+(also defining the @Code v unit); }
+@LI { The size of the outdent to use in the @Code outdent paragraph
+breaking style; }
+@LI { Whether the @Code "unbreakablefirst" and @Code "unbreakablelast"
+paragraph breaking options are in effect; }
+@LI { Whether the row marks of words are to pass along the baseline
+or half the height of an `x' above the baseline; }
+@LI { Whether to permit hyphenation or not; }
+@LI { What colour the object is to appear in; }
+@LI { What colour underlines within the object are to appear in; }
+@LI { Whether @@Outline is in effect; }
+@LI { The language of the object; }
+@LI { Whether @@VAdjust, @@HAdjust and @@PAdjust are in effect. }
+@EndList
+The style of an object depends on where it appears in the final
+document. For example, the style of a parameter depends on where it is
+used; the style of a galley is the style of the first target that it
+attempts to attach itself to. Of course, the style of any object can be
+changed by using the @@Font, @@Break, @@Space, @@SetColour or
+@@SetColor, @@SetUnderlineColour or @@SetUnderlineColor, @@Outline,
+and @@Language symbols.
+@PP
+There are no standard default values for style, except that row marks
+of words initially pass half the height of an `x' above the baseline,
+small capitals are initially off and will be 0.7 times the size of full
+capitals, outlining is initially off, the interpretation of white space is
+initially {@Code lout}, and the values of the @Code y and @Code z units
+are zero. Therefore one must ensure that the root galley or each of its
+components is enclosed in @@Font, @@Break, @@SetColour or @@SetColor, and
+@@Language symbols. From there the style is passed to incoming galleys
+and the objects within them. Enclosure in @@Space is not required because
+the @Code "s" unit is also set by @@Font (Section {@NumberOf space}).
+@PP
+width. @Index { Width of an object }
+height. @Index { Height of an object }
+size. @Index { Size of an object }
+The remainder of this section explains how the size of each object (its
+width and height on the printed page) is determined. We will treat width
+only, since height is determined in exactly the same way, except that the
+complications introduced by paragraph breaking are absent.
+@PP
+With three exceptions (see below), the width of an object is as large as
+it possibly could be without violating a @@Wide symbol or intruding into
+the space occupied by neighbouring gaps or objects. As an aid to
+investigating this rule, we will use the definition
+@ID @OneRow @Code {
+"def @TightBox right x"
+"{"
+" \"0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke\""
+" @Graphic x"
+"}"
+}
+which draws a box around the boundary of its right parameter (Section
+{@NumberOf graphic}) with no margin. The result of
+@ID @Code {
+"5c @Wide @TightBox metempsychosis"
+}
+is
+@ID {
+5c @Wide @TightBox metempsychosis
+}
+The widest that @Code "@TightBox metempsychosis" could possibly be is five
+centimetres, and accordingly that is its width. The same applies to
+{@Code metempsychosis}, which is five centimetres wide as well. Note
+carefully that there is no object in this example whose width is equal
+to the sum of the widths of the letters of {@Code metempsychosis}.
+@PP
+The first of the three exceptions to the `as wide as possible' rule is the
+@@HContract symbol, which causes the width of its right parameter to be
+reduced to a reasonable minimum (a formal definition will not be attempted):
+@ID @OneRow @Code {
+"5c @Wide @HContract @TightBox metempsychosis"
+}
+produces
+@ID {
+5c @Wide @HContract @TightBox metempsychosis
+}
+The object @Code "@HContract @TightBox metempsychosis" is still five centimetres
+wide, but the object @Code "@TightBox metempsychosis" has been reduced.
+@PP
+The second of the three exceptions is the horizontal concatenation symbol
+@Code "|" (and also {@Code "&"}). Consider this example:
+@ID @OneRow @Code {
+"5c @Wide @TightBox { A |1c B |1c C }"
+}
+As usual, the right parameter of @@Wide is five centimetres wide, and
+the result looks like this:
+@ID {
+5c @Wide @TightBox { A |1c B |1c C }
+}
+Lout has to apportion the size minus inter-column gaps among the three
+columns.
+@PP
+If the columns are wide enough to require paragraph breaking, Lout will
+assign sizes to the columns in such a way as to leave narrow columns
+unbroken and break wider columns to equal width, occupying the full
+size. Otherwise, paragraph breaking is not required, and each column
+will be assigned a reasonable minimum size in the manner of @@HContract,
+except that the last column receives all the leftover width. For example,
+@ID @OneRow @Code {
+"5c @Wide { @TightBox A |1c @TightBox B |1c @TightBox C }"
+}
+has result
+@ID {
+5c @Wide { @TightBox A |1c @TightBox B |1c @TightBox C }
+}
+If it is desired that the leftover width remain unused, rather than
+going into the last column, an empty column can be appended, or the last
+column can be enclosed in @@HContract. Two other ways to apportion the
+leftover width are provided by the @@HExpand and @@HAdjust symbols
+(Sections {@NumberOf hexpand} and {@NumberOf hadjust}).
+@PP
+The third and final exception to the `as wide as possible' rule concerns
+the components of the root galley. Each is considered to be enclosed
+root.galley.size @SubIndex { size of components of }
+in @@HContract and @@VContract symbols.
+@PP
+Up to this point we have treated width as a single quantity, but of
+course it has two parts: width to left and right of the mark. The
+`as wide as possible' rule applies to both directions:
+@ID @Code {
+"@HContract { @TightBox 953^.05 /0.5c @TightBox 2^.8286 }"
+}
+has result
+@ID {
+@HContract { @TightBox 953^.05 /0.5c @TightBox 2^.8286 }
+}
+Leftover width usually goes to the right, as we have seen, but here some
+width was available only to the left of {@Code "2.8286"} owing to the
+column mark alignment.
+@End @Section
diff --git a/doc/doc/expert/det_sort b/doc/doc/expert/det_sort
new file mode 100644
index 0000000..3b71918
--- /dev/null
+++ b/doc/doc/expert/det_sort
@@ -0,0 +1,90 @@
+@Section
+ @Title { Sorted galleys }
+ @Tag { sorted }
+@Begin
+@PP
+When footnotes are placed at the bottom of a page, they appear there in
+first come, first served order. To make galleys appear in sorted order, as
+sorted.galley @Index { Sorted galleys }
+is needed in bibliographies and indexes, a parameter or nested definition
+with the special name @@Key
+key. @Index { @@Key parameter }
+is added to the galley definition, like this:
+@ID @OneRow @Code {
+"def @IndexEntry into { @IndexPlace&&following }"
+" left @Key"
+" right x"
+"{ x }"
+}
+@@Key must be set to a simple word, or several words with nothing more
+complex than font changes within them, when the galley is invoked:
+@ID @Code {
+"{ cities compare } @IndexEntry { cities, comparison of, 27 }"
+}
+and this key is used to sort the galleys.
+@PP
+If several sorted galleys with the same key are sent to the same place,
+the default behaviour is to print only the first of them; the assumption
+is that the others are probably unwanted duplicates. This holds good
+for sorted reference lists, for example: we don't want two copies of
+a reference just because we happen to cite it twice.
+@PP
+The other common example of sorted galleys, index entries, requires
+something different from discarding duplicates: @I merged
+galleys. Suppose that at some point of the document we insert the index entry
+@ID @Code "aardvarks @IndexEntry { Aardvarks, 23 }"
+while at another point we insert
+@ID @Code "aardvarks @IndexEntry { Aardvarks, 359 }"
+How the page numbers are worked out is not relevant here. Clearly we
+would like to merge these two entries into one entry that comes out as
+@ID "Aardvarks, 23, 359"
+The following definition will merge two objects @Code x and
+@Code y in this way:
+@ID @OneRow @Code @Verbatim {
+def @Merge left x right y
+{
+ { x @Rump { x @Meld y } } @Case
+ {
+ "" @Yield x
+ else @Yield { { x{@OneCol ,} } @Meld y }
+ }
+
+}
+}
+The @@Rump and @@Meld symbols are the subject of Section {@NumberOf rump};
+and a detailed explanation of how this definition works is the subject
+of Section {@NumberOf exa_inde}. Our only problem is that this
+symbol has to be applied to two galleys from widely separated
+parts of the document.
+@PP
+Lout makes this possible by the following special rule: if a
+sorted galley contains a nested definition of a symbol whose name
+is @@Merge (@@Merge must have just two parameters, left and right),
+merge. @Index { @@Merge symbol }
+and if that sorted galley is preceded in the list of
+sorted galleys destined for some target by another sorted galley
+with the same key, then rather than being discarded, the second
+galley is merged into the first using the @@Merge symbol.
+@PP
+The natural thing to do when more than two galleys have the same
+key is to merge the first two, then merge the third with the
+result of that, then the fourth with the result of that, and
+so on. For efficiency reasons beyond our scope here, Lout does
+the merging in a different order: it merges @Eq { n } galleys
+by merging the first @Eq { lfloor n slash 2 rfloor } together,
+then the last @Eq { lceil n slash 2 rceil } together, then
+merging the result. Of course, if the @@Merge symbol is
+associative this has the same effect. The total time it takes
+to merge @Eq { n } galleys with equal keys is @Eq { O ( n sup 2 ) }
+or somewhat higher (but always polynomial in @Eq { n }) depending
+on how many times the parameters occur within the body of @@Merge;
+to do it in the natural linear order would take Lout exponential time.
+@PP
+For horrible reasons concerning making it possible to print reference
+lists sorted by point of first citation, the particular sort key
+{@Code "??"} is treated differently. If two galleys have this
+key, according to the rules above either the second would be
+discarded or else it would be merged with the first. However,
+for this particular key only, the two galleys will in fact be
+kept distinct, just as though their sort keys had been different.
+@End @Section
diff --git a/doc/doc/expert/det_visi b/doc/doc/expert/det_visi
new file mode 100644
index 0000000..870f781
--- /dev/null
+++ b/doc/doc/expert/det_visi
@@ -0,0 +1,181 @@
+@Section
+ @Tag { visibility }
+ @Title { Nested definitions, body parameters, extend, import, and export }
+@Begin
+@PP
+A definition may contain
+nested.def @Index { Nested definitions }
+other definitions at the beginning of its body:
+@ID @OneRow @Code {
+"def @NineSquare"
+" right x"
+"{"
+" def @Three { x |0.2i x |0.2i x }"
+""
+" @Three /0.2i @Three /0.2i @Three"
+"}"
+}
+A parameter like @Code x may be invoked anywhere within the body of the
+symbol it is a parameter of, including within nested definitions. A
+nested symbol like @Code "@Three" may be invoked anywhere from the
+beginning of its own body to the end of the body of the symbol it is
+defined within. So, assuming an appropriate definition of
+{@Code "@Box"},
+@ID @Code {
+"@NineSquare @Box"
+}
+has result
+@ID @Fig {
+@NineSquare @Box { 0.2i @Wide 0.2i @High }
+}
+Nested definitions may themselves contain nested definitions, to
+arbitrary depth.
+@PP
+There are three special features which permit a nested symbol or
+parameter to be invoked outside its normal range; that is, outside the
+body of the enclosing symbol. The first and simplest of these features
+is the {@I {body parameter}},
+parameter.body @SubIndex { @Code body parameter }
+body.par @Index { @Code body parameter }
+an alternative form of right parameter. The Eq equation formatting
+package @Cite { $kingston1995lout.user, Chapter 7 } is a classic example
+of the use of a body parameter. In outline, it looks like this:
+@ID @OneRow @Code {
+"export \"+\" sup over"
+""
+"def @Eq"
+" body x"
+"{"
+" def \"+\" ..."
+" def sup ..."
+" def over ..."
+" ..."
+""
+" Slope @Font x"
+"}"
+}
+First we list those nested symbols and parameters that we intend to
+refer to outside the body of @Code "@Eq" in an @Code export clause,
+export @Index { @Code export clause }
+preceding the definition as shown. Only exported symbols may be
+invoked outside the body of {@Code "@Eq"}. The body parameter is like a
+right parameter except that the exported symbols are visible within it:
+@ID @Code {
+"@Eq { {x sup 2 + y sup 2} over 2 }"
+}
+calls on the nested definitions of @Code "@Eq" to produce the result
+@ID {
+@Eq { {x sup 2 + y sup 2} over 2 }
+}
+The body parameter's value must be enclosed in braces. The term `body
+parameter' is a reminder that the value is interpreted as if it was
+within the body of the symbol.
+@PP
+A body parameter may not be exported, and in fact a body parameter may
+be invoked only within the body of the enclosing symbol, not within
+any nested definitions. For example, @Code "x" above may not be invoked
+within {@Code "sup"}. This restriction is needed to avoid the
+possibility of recursion, when the actual body parameter invokes an
+exported nested definition which invokes the body parameter, etc.
+@PP
+The second place where exported symbols may be used is in the right
+parameter of the @@Open symbol, and following its alternative form,
+@@Use (Section {@NumberOf open}).
+@PP
+Exported nested symbols and parameters may be made visible within
+a subsequent definition or macro by preceding it with an @Code import
+import @Index { @Code import clause }
+clause, like this:
+@ID @OneRow @Code {
+"import @Eq"
+"def pythag { sqrt { x sup 2 + y sup 2 } }"
+}
+Note however that @Code pythag can only be used with some invocation of
+{@Code "@Eq"}: within the body parameter of an invocation of {@Code "@Eq"},
+within the right parameter of an {@Code "@Eq&&tag @Open"}, or following
+a {@Code "@Use { @Eq ... }"}. There may be several symbols in the
+@Code import clause.
+@PP
+In a similar way to {@Code "import"}, a definition may be preceded
+by {@Code "extend"} followed by a symbol name:
+@ID @OneRow @Code {
+"extend @Eq"
+"def pythag { sqrt { x sup 2 + y sup 2 } }"
+}
+The effect of this is just as though the definition of @Code "pythag"
+had occurred directly after the existing definitions within
+{@Code "@Eq"}, with {@Code "pythag"} added to {@Code "@Eq"}'s
+export list. This is useful for extending the capabilities of a
+package of definitions like @Code "@Eq" without modifying its source
+file. The essential differences to @Code "import" are that all the
+symbols of @Code "@Eq" become visible within {@Code "pythag"}, not
+just the exported ones, and only one symbol may follow the
+@Code "extend" keyword.
+@PP
+Actually, more than one symbol may follow {@Code extend}, but this
+usage indicates a `path name' of the symbol. For example,
+@ID @OneRow @Code {
+"extend @DocumentLayout @ReportLayout"
+"def @Keywords ..."
+}
+causes the definition of @Code "@Keywords" to occur directly after
+the existing definitions of {@Code "@ReportLayout"}, which itself
+lies within {@Code "@DocumentLayout"}.
+@PP
+A named parameter may also be preceded by an @Code "import" clause.
+As usual, the meaning is that the visible local definitions of
+the import symbol(s) are visible within the body (the default
+value) of the named parameter. But furthermore, those symbols
+will be visible within all invocations of the parameter. For
+example, suppose we define
+@ID @OneRow @Code {
+"def @Diag"
+" import @Algebra named linewidth { 1p }"
+" import @Algebra named dashlength { 2p }"
+" ..."
+}
+Then, if @Code "@Algebra" exports symbols {@Code "+"},
+{@Code "-"}, and so on, we may write
+@ID @OneRow @Code {
+"@Diag"
+" linewidth { 1f - 2p }"
+" dashlength { 1f + 2p }"
+}
+using the symbols from {@Code "@Algebra"}. There may be several
+symbols after the @Code "import" keyword. All these symbols
+share an important restriction: they may not have parameters.
+This is necessary because Lout would be unable to determine
+suitable values for any such parameters, if they did exist.
+@PP
+As an exception to the rule just given, a named parameter may
+import the symbol it is a parameter of:
+@ID @OneRow @Code {
+"export @Cell"
+"def @Tbl"
+" import @Tbl named @Format { ... }"
+}
+In this example the exported definitions of @Code "@Tbl" (i.e.
+{@Code "@Cell"}) will be visible within {@Code "@Format"}. However,
+they may only be used in actual parameters, not in the default
+value of the named parameter. This is owing to implementation
+problems: at the time the default value of {@Code "@Format"} is
+read, the exported symbols have not been read and are consequently
+not known.
+@PP
+Since @Code "@Cell" is nested within {@Code "@Tbl"}, the
+value of an invocation of @Code "@Cell" may depend on the value
+of parameters of {@Code "@Tbl"}. If @Code "@Cell" is used within
+an actual {@Code "@Format"} parameter, its value depends on the
+value of parameters of the invocation of {@Code "@Tbl"} of which
+the {@Code "@Format"} parameter is a part.
+@PP
+A definition, macro, or named parameter may have several alternative
+names, like this:
+@ID @Code "macro @CD @CentredDisplay @CenteredDisplay { ... }"
+This is useful for abbreviated and alternative spellings, as shown. The
+names appear together, and they may subsequently be used interchangeably.
+@PP
+If one name of a symbol appears in an export or import list, its other
+names are automaticaly included as well, and should not also appear
+in the list.
+@End @Section
diff --git a/doc/doc/expert/exa b/doc/doc/expert/exa
new file mode 100644
index 0000000..8224698
--- /dev/null
+++ b/doc/doc/expert/exa
@@ -0,0 +1,22 @@
+@Chapter
+ @Title { Examples }
+ @Tag { examples }
+@Begin
+@LP
+This chapter presents some examples taken from the various
+packages available with Basser Lout. The reader who masters these
+examples will be well prepared to read the packages themselves. The
+examples have not been simplified in any way, since an important part of
+their purpose is to show Lout in actual practice.
+@PP
+Although all these examples have been taken from real code, they do
+not necessarily represent the current state of the Lout packages.
+@BeginSections
+@Include { exa_equa }
+@Include { exa_para }
+@Include { exa_page }
+@Include { exa_chap }
+@Include { exa_bibl }
+@Include { exa_inde }
+@EndSections
+@End @Chapter
diff --git a/doc/doc/expert/exa_bibl b/doc/doc/expert/exa_bibl
new file mode 100644
index 0000000..9de5f26
--- /dev/null
+++ b/doc/doc/expert/exa_bibl
@@ -0,0 +1,238 @@
+@Section
+ @Title { Bibliographies }
+ @Tag { biblio }
+@Begin
+@PP
+bibliographies @Index { Bibliographies }
+The first step in the production of a bibliography is to create a
+database of references based on the definition
+reference.example @Index { @Code "@Reference" example }
+@ID @Code {
+ "export @Type @Author @Title @Institution @Number @Publisher"
+//1vx " @Year @Proceedings @Journal @Volume @Pages @Comment"
+//1vx ""
+//1vx "def @Reference"
+//1vx " named @Tag" |2f "{ TAG? }"
+ /1vx " named @Type" | "{ TYPE? }"
+ /1vx " named @Author" | "{ AUTHOR? }"
+ /1vx " named @Title" | "{ TITLE? }"
+ /1vx " named @Institution" | "{ INSTITUTION? }"
+ /1vx " named @Number" | "{ NUMBER? }"
+ /1vx " named @Publisher" | "{ PUBLISHER? }"
+ /1vx " named @Year" | "{ YEAR? }"
+ /1vx " named @Proceedings" | "{ PROCEEDINGS? }"
+ /1vx " named @Journal" | "{ JOURNAL? }"
+ /1vx " named @Volume" | "{ VOLUME? }"
+ /1vx " named @Pages" | "{ PAGES? }"
+ /1vx " named @Comment" | "{ @Null }"
+//1vx "{ @Null }"
+}
+For example, the database might contain
+@IL
+@LI @Code {
+"{ @Reference"
+" @Tag { strunk1979style }"
+" @Type { Book }"
+" @Author { Strunk, William and White, E. B. }"
+" @Title { The Elements of Style }"
+" @Publisher { MacMillan, third edition }"
+" @Year { 1979 }"
+"}"
+}
+
+@LI @Code {
+"{ @Reference"
+" @Tag { kingston92 }"
+" @Type { TechReport }"
+" @Author { Kingston, Jeffrey H. }"
+" @Title { Document Formatting with Lout (Second Edition) }"
+" @Number { 449 }"
+" @Institution { Basser Department of Computer"
+"Science F09, University of Sydney 2006, Australia }"
+" @Year { 1992 }"
+"}"
+}
+@EL
+Since named parameters are optional, we have one for every conceivable
+type of attribute, and simply leave out those that do not apply in any
+particular reference. We can print a reference by using the @@Open
+symbol to get at its attributes:
+@ID @Code {
+"@Reference&&strunk1979style @Open"
+"{ @Author, {Slope @Font @Title}. @Publisher, @Year. }"
+}
+The right parameter of @@Open may use the exported parameters of the
+left, and so the result is
+@ID {
+@Reference&&strunk1979style @Open
+{ @Author, {Slope @Font @Title}. @Publisher, @Year. } |0io
+}
+Incidentally, we are not limited to just one database of references;
+several @@Database symbols can nominate the same symbol, and invocations of
+that symbol can appear in the document itself as well if we wish.
+@PP
+The second step is to create a database of print styles for the various
+types of reference (Book, TechReport, etc.), based on the following
+definition:
+@ID @Code {
+"export @Style"
+"def @RefStyle"
+" left @Tag"
+" named @Style right reftag {}"
+"{}"
+}
+Notice that the named parameter @Code "@Style" has a right parameter
+{@Code "reftag"}. The style database has one entry for each type of
+reference:
+@ID @Code {
+"{ Book @RefStyle @Style"
+" { @Reference&&reftag @Open"
+" { @Author, {Slope @Font @Title}. @Publisher, @Year. @Comment }"
+" }"
+"}"
+""
+"{ TechReport @RefStyle @Style"
+" { @Reference&&reftag @Open"
+" { @Author, {Slope @Font @Title}. Tech. Rep. @Number (@Year),"
+"@Institution. @Comment }"
+" }"
+"}"
+}
+and so on. The following prints the reference whose tag is
+@Code strunk1979style in the Book style:
+@ID @Code {
+"@RefStyle&&Book @Open { @Style strunk1979style }"
+}
+It has result
+@ID {
+@RefStyle&&Book @Open { @Style strunk1979style } |0io
+}
+Notice how the @Code "@Style" parameter of @Code "@RefStyle" is given the
+parameter {@Code strunk1979style}, which it uses to open the appropriate
+reference.
+@PP
+We can consult the @Code "@Type" attribute of a reference to find out
+its style, which brings us to the following definition for printing out
+a reference in the style appropriate to it:
+@ID @Code {
+"def @RefPrint"
+" right reftag"
+"{ @RefStyle&&{ @Reference&&reftag @Open { @Type } }"
+" @Open { @Style reftag }"
+"}"
+}
+For example, to evaluate {@Code "@RefPrint strunk1979style"}, Lout first
+evaluates
+@ID @Code {
+"@Reference&&strunk1979style @Open { @Type }"
+}
+whose result is {@Code { @Reference&&strunk1979style @Open { @Type } }},
+and then evaluates
+@ID @Code {
+"@RefStyle&&Book @Open { @Style strunk1979style }"
+}
+as before. Complicated as this is, with its two databases and clever
+passing about of tags, the advantages of separating references from
+printing styles are considerable: printing styles may be changed
+easily, and non-expert users need never see them.
+@PP
+Finally, we come to the problem of printing out a numbered list of
+references, and referring to them by number in the body of the
+document. The first step is to create a numbered list of places that
+galleys containing references may attach to:
+referencesection.example @Index { @Code "@ReferenceSection" example }
+@ID @Code {
+"def @ReferenceSection"
+" named @Tag {}"
+" named @Title { References }"
+" named @RunningTitle { dft }"
+" named style right tag { tag. }"
+" named headstyle right @Title { @Heading @Title }"
+" named indent { @DispIndent }"
+" named gap { @DispGap }"
+" named start { 1 }"
+"{"
+" def @RefList right num"
+" {"
+" @NumberMarker num & indent @Wide {style num} | @RefPlace"
+" //gap @RefList @Next num"
+" }"
+""
+" @Protect headstyle @Title"
+" // @PageMarker&&preceding @Tagged @Tag"
+" // @Title @MajorContentsEntry {@PageOf @Tag}"
+" // @Runner"
+" @FootEven { |0.5rt 0.8f @Font @B @PageNum }"
+" @FootOdd { |0.5rt 0.8f @Font @B @PageNum }"
+" //@DispGap @RefList start"
+" // @Runner"
+" @TopEven { @B @PageNum }"
+" @TopOdd { @I {@RunningTitle @OrElse @Title} |1rt @B @PageNum }"
+"}"
+}
+We place the expression @Code "@ReferenceSection" at the point where we
+want the list of references to appear; its value is something like
+@ID @Code {
+"1. @RefPlace"
+"2. @RefPlace"
+"3. @RefPlace"
+"..."
+}
+where @Code "@RefPlace" is @Code "@Galley" as usual. We can scatter
+multiple lists of references through the document if we wish (at the end
+of each chapter, for example), simply by placing @Code "@ReferenceSection"
+at each point.
+@PP
+Our task is completed by the following definition:
+ref.example @Index { @Code "@Ref" example }
+@ID @Code {
+"def @Ref right x"
+"{"
+" def sendref into { @RefPlace&&following }"
+" right @Key"
+" {"
+" @NumberMarker&&preceding @Tagged x &"
+" @PageMarker&&preceding @Tagged x &"
+" @RefPrint x"
+" }"
+""
+" @NumberMarker&&x @Open { @Tag } sendref x"
+"}"
+}
+Given this definition, the invocation {@Code "@Ref strunk1979style"} has result
+@ID @Code "@NumberMarker&&strunk1979style @Open { @Tag }"
+plus the galley {@Code "sendref strunk1979style"}. We first
+follow what happens to the galley.
+@PP
+According to its @Code into clause, the galley will replace a
+@Code "@RefPlace" in the nearest following {@Code "@ReferenceSection"}. If
+every such galley is a sorted galley whose key is the reference's tag, as
+this one is, they will appear sorted by tag. The galley's object is
+@ID @Code {
+"@NumberMarker&&preceding @Tagged strunk1979style &"
+"@PageMarker&&preceding @Tagged strunk1979style &"
+"@RefPrint strunk1979style"
+}
+The result of the @@Tagged symbol is always @@Null, so this prints the
+@Code strunk1979style reference in the appropriate style at the
+{@Code "@RefPlace"}, as desired.
+@PP
+Now @Code "@NumberMarker&&preceding" is the nearest preceding invocation of
+@Code "@NumberMarker" in the final document. This must be the invocation of
+@Code "@NumberMarker" just before the @Code "@RefPlace" that received
+the galley, and so this invocation of @Code "@NumberMarker" is given @Code
+strunk1979style as an additional tag by the @@Tagged symbol. Its original tag
+was the number of the reference place, which means that
+@ID @Code {
+"@NumberMarker&&strunk1979style @Open { @Tag }"
+}
+has for its result the number of the reference place that received the
+@Code strunk1979style galley, and this is the desired result of
+{@Code "@Ref strunk1979style"}.
+@PP
+It might seem that if we refer to the @Code strunk1979style reference twice,
+two copies will be sent to the reference list and it will appear
+twice. However, when more than one sorted galley with the same key is sent
+to the same place, only one of them is printed (Section {@NumberOf galleys});
+so provided that sorted galleys are used there is no problem.
+@End @Section
diff --git a/doc/doc/expert/exa_chap b/doc/doc/expert/exa_chap
new file mode 100644
index 0000000..51926c0
--- /dev/null
+++ b/doc/doc/expert/exa_chap
@@ -0,0 +1,273 @@
+@Section
+ @Title { Chapters and sections }
+ @Tag { chapters }
+@Begin
+@PP
+The definitions of chapters and sections from the DocumentSetup package
+chapters. @Index { Chapters and sections }
+of Version 2 (in Version 3, the BookSetup extension of DocumentSetup)
+form the subject of this section. They allow a chapter to be entered
+like this:
+document.layout.chapters @SubIndex { chapters and sections }
+@ID @Code {
+"@Chapter"
+" @Title { ... }"
+" @Tag { ... }"
+"@Begin"
+" ..."
+"@End @Chapter"
+}
+Within the chapter a sequence of sections may be included by writing
+@ID @Code {
+"@BeginSections"
+"@Section { ... }"
+"..."
+"@Section { ... }"
+"@EndSections"
+}
+These are numbered automatically, and an entry is made for each in a
+table of contents.
+@PP
+The user of the DocumentSetup package can find the number of the chapter or
+section with a given tag by writing @Code "@NumberOf tag" at any point
+in the document. This feature is based on the following definitions:
+numberof.example @Index { @Code "@NumberOf" example }
+@ID @Code {
+"export @Tag"
+"def @NumberMarker right @Tag { @Null }"
+""
+"def @NumberOf right x"
+"{ @NumberMarker&&x @Open { @Tag } }"
+}
+Each chapter and section will contain one invocation of
+{@Code "@NumberMarker"}; a full explanation will be given later.
+@PP
+A sequence of places for receiving chapters is easily defined:
+@ID @Code {
+"export @Tag"
+"def @ChapterList right @Tag"
+"{"
+" @Galley"
+" //@ChapterGap @ChapterList @Next @Tag"
+"}"
+}
+@Code "@ChapterGap" will usually be {@Code "1.1b"}, ensuring that each
+chapter begins on a new page. The @Code "@Chapter" galley itself is
+defined as follows:
+chapter.example @Index { @Code "@Chapter" example }
+@IndentedList
+@LI @Code {
+"export @FootNote @BeginSections @EndSections @Section"
+"def @Chapter force into { @ChapterList&&preceding }"
+" named @Tag {}"
+" named @Title {}"
+" named @RunningTitle { dft }"
+" body @Body"
+"{"
+" def @FootNote right x { @ColFootNote x }"
+""
+" def @BeginSections ..."
+" def @EndSections ..."
+" def @Section ..."
+}
+@LI @Code {
+" def @ChapterTitle"
+" {"
+" @ChapterNumbers @Case {"
+" {Yes yes} @Yield { Chapter {@NumberOf @Tag}. |2s @Title }"
+" else @Yield @Title"
+" }"
+" }"
+""
+" def @ChapterNum"
+" {"
+" @ChapterNumbers @Case {"
+" {Yes yes} @Yield { Chapter {@NumberOf @Tag} }"
+" else @Yield @Null"
+" }"
+" }"
+}
+@LI @Code {
+" ragged @Break @BookTitleFormat @ChapterTitle"
+" // @NumberMarker {"
+" @ChapterList&&@Tag @Open { @Tag }"
+" }"
+" // @ChapterList&&preceding @Tagged @Tag"
+" // @NumberMarker&&preceding @Tagged @Tag"
+" // @PageMarker&&preceding @Tagged @Tag"
+" // { @ChapterTitle } @MajorContentsEntry {@PageOf @Tag}"
+" // @Runner"
+" @FootEven { |0.5rt 0.8f @Font @B @PageNum }"
+" @FootOdd { |0.5rt 0.8f @Font @B @PageNum }"
+" // @Body"
+" //@SectionGap @ChapRefSection"
+" // @Runner"
+" @TopEven { @B @PageNum |1rt @I @ChapterNum }"
+" @TopOdd { @I {@RunningTitle @OrElse @Title} |1rt @B @PageNum }"
+"}"
+}
+@EndList
+We will see the symbols for sections shortly. Notice how their use has
+been restricted to within the right parameter of {@Code "@Chapter"}, by
+nesting them and using a body parameter.
+@PP
+The meaning of @Code "@FootNote" within @Code "@Chapter" has been set
+to {@Code "@ColFootNote"}, which produces a footnote targeted to
+{@Code "@ColFootList"} (see Section {@NumberOf pagelayout}). In other
+words, footnotes within chapters go at the foot of the column, not at
+the foot of the page. (Of course, in single-column books this
+distinction is insignificant.) @Code "@ChapterTitle" and
+@Code "@ChapterNum" are trivial definitions which vary depending on
+whether the user has requested numbered chapters or not.
+@PP
+Each invocation of @Code "@Chapter" has its own unique {@Code "@Tag"},
+either supplied by the user or else inserted automatically by Lout. We
+now trace the cross referencing of chapter numbers on a hypothetical
+third chapter whose tag is {@Code "euclid"}.
+@PP
+@Code "@ChapterList&&preceding @Tagged euclid" attaches @Code "euclid"
+as an extra tag to the first invocation of @Code "@ChapterList"
+preceding itself in the final printed document. But this
+@Code "@ChapterList" must be the target of the chapter, and so
+@ID @Code "@ChapterList&&euclid @Open { @Tag }"
+is 3, the number of the chapter ({@Code "@Tag"} refers to the parameter
+of {@Code "@ChapterList"}, not the parameter of {@Code "@Chapter"}).
+ Consequently the invocation of
+@Code "@NumberMarker" within the chapter is equal to
+{@Code "@NumberMarker 3"}.
+@PP
+@Code "@NumberMarker&&preceding @Tagged euclid" attaches @Code "euclid"
+to {@Code "@NumberMarker 3"} as an extra tag, and so
+{@Code "@NumberOf euclid"}, which expands to
+@ID @Code "@NumberMarker&&euclid @Open { @Tag }"
+must be equal to 3, as required. This scheme could be simplified by
+placing the invocation of @Code "@NumberMarker" within
+@Code "@ChapterList" rather than within {@Code "@Chapter"}, but it turns
+out that that scheme does not generalize well to sections and subsections.
+@PP
+There is a trap for the unwary in the use of @Code preceding and
+{@Code following}. Suppose that the invocation of @Code "@NumberMarker"
+within @Code "@Chapter" is replaced by the seemingly equivalent
+@ID @Code "@NumberMarker { @ChapterList&&preceding @Open { @Tag } }"
+Now suppose that @Code "@NumberOf euclid" appears somewhere within
+Chapter 7. It will expand to
+@ID @Code "@NumberMarker&&euclid @Open { @Tag }"
+which would now be equal to
+@ID @Code "@ChapterList&&preceding @Open { @Tag }"
+whose value, evaluated as it is within Chapter 7, is 7, not 3. Use of
+@Code preceding or @Code following within the parameter
+of a symbol, rather than within the body, is likely to be erroneous.
+@PP
+Much of the remainder of the definition of @Code "@Chapter" is fairly
+self-explanatory: there is a heading, a tag sent to mark the page on
+which the chapter begins, a @Code "@ContentsEntry" galley sent to the
+table of contents, galleys for the figures and tables of the chapter to
+collect in, @Code "@Body" where the body of the chapter goes, and
+@Code "@ChapRefSection" to hold a concluding list of references. This
+leaves only the two invocations of @Code "@Runner" to explain.
+@PP
+The first @Code "@Runner" is just below the heading. It will be the target
+of the @Code "@Runner&&following" cross reference at the beginning of the
+first page of the chapter (see Section {@NumberOf pagelayout}), which
+consequently will have null running headers and the given footers.
+@PP
+The second @Code "@Runner" appears at the very end of the chapter, hence
+on its last page. Since no invocations of @Code "@Runner" lie between
+it and the first {@Code "@Runner"}, it will be the target of
+@Code "@Runner&&following" on every page from the second page of the
+chapter to the last, inclusive, and will supply the format of their
+headers and footers.
+@PP
+The interested reader might care to predict the outcome in unusual
+cases, such as when the heading occupies two pages, or when a chapter
+occupies only one, or (assuming a change to the gap between chapters)
+when a chapter starts halfway down a page. Such predictions can be made
+with great confidence.
+@PP
+The expression @Code "@RunningTitle @OrElse @Title" appearing in the second
+@Code "@Runner" returns the value of the @Code "@RunningTitle" parameter
+of @Code "@Chapter" if this is not equal to the default value
+{@Code "dft"}, or @Code "@Title" otherwise:
+orelse.example @Index { @Code "@OrElse" example }
+@ID @Code {
+"def @OrElse"
+" left x"
+" right y"
+"{"
+" x @Case {"
+" dft @Yield y"
+" else @Yield x"
+" }"
+"}"
+}
+This produces the effect of
+@ID @Code {
+"named @RunningTitle { @Title }"
+}
+which unfortunately is not permissible as it stands, because @Code "@Title"
+is not visible within the default value of {@Code "@RunningTitle"}.
+@PP
+Finally, the definitions for sections omitted earlier are as follows:
+section.example @Index { @Code "@Section" example }
+@IndentedList
+@LI @Code {
+"def @EndSectionsPlace { @Galley }"
+"def @EndSections force into { @EndSectionsPlace&&preceding } {}"
+"macro @BeginSections { //@SectionGap @SectionList 1 // @EndSectionsPlace // }"
+}
+@LI @Code {
+"def @Section force into { @SectionList&&preceding }"
+" named @Tag {}"
+" named @Title {}"
+" named @RunningTitle { dft }"
+" body @Body"
+"{"
+" def @SectionTitle"
+" {"
+" @SectionNumbers @Case {"
+" {Yes yes} @Yield { {@NumberOf @Tag}. |2s @Title }"
+" else @Yield @Title"
+" }"
+" }"
+""
+" @Heading @Protect @SectionTitle"
+" // @NumberMarker {"
+" {@ChapterList&&@Tag @Open { @Tag }}.{"
+" @SectionList&&@Tag @Open { @Tag }}"
+" }"
+" // @ChapterList&&preceding @Tagged @Tag"
+" // @SectionList&&preceding @Tagged @Tag"
+" // @NumberMarker&&preceding @Tagged @Tag"
+" // @PageMarker&&preceding @Tagged @Tag"
+" // { &3f @SectionTitle } @ContentsEntry {@PageOf @Tag}"
+" //0io @Body"
+"}"
+}
+@EndList
+The @Code "@BeginSections" macro invokes {@Code "@SectionList"},
+preceded by the appropriate gap and followed by an @Code "@EndSectsPlace"
+for closing the list of sections when the @Code "@EndSections" symbol is
+found. @Code "@Section" itself is just a copy of @Code "@Chapter" with
+slight changes to the format. The parameter of @Code "@NumberMarker" is
+a simple generalization of the one within {@Code "@Chapter"}. Notice
+that we have taken care that the value of this parameter be
+a juxtaposition of simple words: although
+@ID @Code {
+"{@ChapterList&&@Tag @Open { @Tag }}. &"
+"{@SectionList&&@Tag @Open { @Tag }}"
+}
+is formally equivalent, @Code "&" was not permitted within a
+@Code "@Tag" parameter until recently.
+@PP
+The DocumentSetup package also contains definitions for subsections in the
+same style. They raise the question of whether Lout is capable of
+producing subsections should the user place {@Code "@BeginSections"},
+{@Code "@Section"}, and {@Code "@EndSections"} within a {@I section},
+and whether such nesting could proceed to arbitrary depth. Arbitrary
+nesting of sections within sections is available now, although the
+numbering would of course be wrong. The author has worked out
+definitions which provide correct numbering to arbitrary depth, with an
+arbitrary format for each level. These were not incorporated into
+DocumentSetup because the author considers sub-subsections to be poor
+style, and he prefers separate names for the symbols at each level.
+@End @Section
diff --git a/doc/doc/expert/exa_equa b/doc/doc/expert/exa_equa
new file mode 100644
index 0000000..67852b8
--- /dev/null
+++ b/doc/doc/expert/exa_equa
@@ -0,0 +1,149 @@
+@Section
+ @Title { An equation formatting package }
+ @Tag { eq }
+@Begin
+@PP
+In this section we describe the design and implementation of the Eq
+eq. @Index { Eq equation formatting package }
+equation formatting package. Equation formatting makes a natural first
+example, partly because its requirements have strongly influenced the
+design of Lout, and partly because no cross references or galleys are
+required.
+@PP
+To the author's knowledge, Eq is the first equation formatter to be
+implemented as a collection of high-level definitions. This approach
+has significant advantages: the basics of language and layout are
+trivial, so the implementor can concentrate on fine-tuning; and the
+definitions, being readily available, can be improved, extended, or even
+replaced.
+@PP
+As described in the User's Guide @Cite { $kingston1995lout.user }, an
+equation is entered in a format based on the one introduced by the eqn
+language of Kernighan and Cherry @Cite { $kernighan1975eqn }:
+kernighan.b @Index { Kernighan, B. }
+cherry.l @Index { Cherry, L. }
+@ID @Code {
+"@Eq { { x sup 2 + y sup 2 } over 2 }"
+}
+The result is
+@ID @Eq { { x sup 2 + y sup 2 } over 2 }
+In outline, the definition of the @Code "@Eq" symbol is
+eq.example @Index { @Code "@Eq" example }
+@ID @Code {
+"export sup over \"+\" \"2\" \"<=\""
+"def @Eq"
+" body @Body"
+"{"
+" def sup precedence 60 left x right y { ... }"
+" def over precedence 54 left x right y { ... }"
+" def \"2\" { Base @Font \"2\" }"
+" def \"+\" { {Symbol Base} @Font \"+\" }"
+" def \"<=\" { {Symbol Base} @Font \"\\243\" }"
+" ..."
+""
+" Slope @Font 1.2f @Break 0c @Space @Body"
+"}"
+}
+A body parameter is used to restrict the visibility of the equation
+formatting symbols (there are hundreds of them). The equation as a whole
+is set in Slope (i.e. Italic) font, and symbols such as @Code "\"2\"" and
+@Code "\"+\"" are defined when other fonts are needed. Precedences are
+used to resolve ambiguities such as {@Code "a sup b over c"}. Eq takes
+all spacing decisions on itself, so to prevent white space
+typed by the user from interfering, the equation is enclosed in
+{@Code "0c @Space"}. We will discuss the {@Code "1.2f @Break"} later.
+@PP
+Thus have we disposed of the language design part of the equation
+formatting problem; it remains now to define the twenty or so symbols
+with parameters, and get the layout right.
+@PP
+Every equation has an {@I axis}: an imaginary horizontal line through
+the centre of variables, through the bar of built-up fractions, and so
+on. We can satisfy this requirement by ensuring that the result of each
+symbol has a single row mark, on the axis. For example, the
+superscripting symbol is defined as follows:
+sup.example @Index { @Code "sup" example }
+@ID @Code {
+"def sup"
+" precedence 60"
+" associativity left"
+" left x"
+" named gap { @SupGap }"
+" right y"
+"{"
+" @HContract @VContract {"
+" | @Smaller y"
+" ^/gap x"
+" }"
+"}"
+}
+The @Code "@VContract" and @Code "^/" symbols together ensure that the axis
+of the result is the axis of the left parameter. A @Code "gap"
+parameter has been provided for varying the height of the superscript,
+with default value @Code "@SupGap" defined elsewhere as
+{@Code "0.40fk"}. It is important that such gaps be expressed in units
+that vary with the font size, so that they remain correct when the size
+changes. Collecting the default values into symbols like @Code
+"@SupGap" ensures consistency and assists when tuning the values. Here
+is another characteristic definition:
+over.example @Index { @Code "over" example }
+@ID @Code {
+"def over"
+" precedence 54"
+" associativity left"
+" left x"
+" named gap { 0.2f }"
+" right y"
+"{"
+" @HContract @VContract {"
+" |0.5rt @OneCol x"
+" ^//gap @HLine"
+" //gap |0.5rt @OneCol y"
+" }"
+"}"
+}
+Both parameters are centred, since we do not know which will be the
+wider; we use @@OneCol to make sure that the entire parameter is
+centred, not just its first column, and @@HContract ensures that the
+fraction will never expand to fill all the available space, as Lout objects
+have a natural tendency to do (Section {@NumberOf size}). @Code "@HLine"
+is a horizontal line of the width of the column:
+hline.example @Index { @Code "@Hline" example }
+@ID @Code {
+"def @HLine"
+" named line { \"0.05 ft setlinewidth\" }"
+"{ "
+" { \"0 0 moveto xsize 0 lineto\" line \"stroke\" } @Graphic {}"
+"}"
+}
+Here we are relying on the expanding tendency just mentioned.
+@PP
+The remaining symbols are quite similar to these ones. We conclude with
+a few fine points of mathematical typesetting mentioned by a leading
+authority, D. E. Knuth @Cite { $knuth1984tex }.
+knuth.d @Index { Knuth, D. }
+@PP
+Some symbols, such as @Eq {lessequal} and @Eq { notequal }, should have a
+thick space on each side; others, such as @Eq {plus} and @Eq {minus},
+have a medium space; others have a thin space on the right only. This
+would be easy to do except that these spaces are not wanted in
+superscripts and subscripts:
+@ID @Eq { r sup n+1 - 1 }
+In effect, the definition of such symbols changes depending on the
+context; but Lout does not permit such a change. Luckily, the so-called
+`style' information set by the @@Font, @@Break, and @@Space symbols can
+change in this way. Accordingly, Eq uses the @Code y unit, which is
+part of style, for these spaces:
+@ID @Code {
+"def @MedGap { 0.20y }"
+""
+"def \"+\" { &@MedGap plus &@MedGap }"
+""
+"def @HSqueeze right x { 0.2f @YUnit x }"
+}
+In the equation as a whole, the y unit is initially set to
+{@Code 1f}, and so @Code "@MedGap" ordinarily supplies 20% of this
+amount. But superscripts and subscripts are enclosed in the
+@Code "@HSqueeze" symbol, which, by changing the y unit, ensures that
+any @Code "@MedGap" within them is much smaller than usual.
+@End @Section
diff --git a/doc/doc/expert/exa_inde b/doc/doc/expert/exa_inde
new file mode 100644
index 0000000..c3ddb93
--- /dev/null
+++ b/doc/doc/expert/exa_inde
@@ -0,0 +1,178 @@
+@Section
+ @Title { Merged index entries }
+ @Tag { exa_inde }
+@Begin
+@PP
+Getting index entries to merge correctly has been quite a struggle.
+It is easy to specify what is wanted, but Lout lacks the lists and
+objects (in the object-oriented sense) that would make the
+implementation straightforward. The whole problem was reanalysed
+for Version 3.26, reimplemented, tested more carefully than is
+usually necessary in Lout, and proved correct as follows.
+@PP
+We ignore page number ranges in this proof. It is not hard to
+show that they will be handled correctly too, provided they
+do not overlap with other entries with the same key. The
+effect of such overlaps is undefined, leaving us nothing to
+prove. We also assume that every entry with a given
+key has the same label, including any format (that is, the same
+initial part before the page number). If labels differ the
+result is undefined and there is nothing to prove.
+@PP
+We will prove that raw entries always have the form
+@ID @Code "label &0.03fu {}"
+and that non-raw entries always have the form
+@ID @Code "label &0.03fu {}{@OneCol ,} pn1{@OneCol ,} pn2"
+where the pattern may repeat for any number of page numbers
+{@Code pn1}, {@Code pn2}, etc. In addition, the page numbers
+will be distinct, monotone increasing, and consist of exactly
+the numbers in the original unmerged entries.
+@PP
+These expressions are not the simplest that would give the
+correct appearance. Without @Code "&0.03fu {}" the code
+would not work correctly, as will be explained below. Without
+@@OneCol the commas would be subject to an optimization which
+can merge them into the previous word. It's too difficult to
+explain when this optimization will and will not be applied;
+suffice to say that it will sometimes not happen when melding,
+and this will cause @@Meld to get its equality testing wrong,
+so it must be prevented from happening at all.
+@PP
+Our proof is by induction on the number of entries merged
+together. First, we need to establish the base cases. If the
+index entry is raw, the following expression is used to define
+its value:
+@ID @Code "label &0.03fu {}"
+If the index entry is non-raw, the following expression is
+used to define its value:
+@ID @Code "label &"0.03fu" {}{@OneCol ,} pn"
+where @Code pn is the page number or page number range of
+the entry. In each case we clearly have an entry that
+satisfies all the requirements of the theorem.
+@PP
+Now consider what happens when we come to merge two
+entries. The code used to carry out this merge is
+@ID @OneRow @Code @Verbatim {
+def @Merge left x right y
+{
+ { x @Rump { x @Meld y } } @Case
+ {
+ "" @Yield x
+ else @Yield { { x{@OneCol ,} } @Meld y }
+ }
+
+}
+}
+where @Code x is the first entry and {@Code y} is
+the second.
+@PP
+We call the expression
+@ID @Code "x @Rump { x @Meld y }"
+the {@I discriminant}, since it determines which case
+to apply. We will track this in detail below, but
+approximately, its function is to determine whether @Code y
+contains something that is different from anything in
+{@Code x}. If so, then @Code "x @Meld y" differs from
+@Code "x" and the discriminant is non-empty; if not,
+@Code "x @Meld y" is equal to @Code "x" and the discriminant
+is empty.
+@PP
+The first entry, @Code { x }, may be raw or non-raw, and the
+second, @Code { y }, may also be raw or non-raw, together
+giving four cases, which we take in turn.
+@PP
+If both entries are raw, then by assumption they have the
+same labels and so are identical. Thus, @Code "x @Meld y"
+equals @Code { x }, the discriminant is empty,
+and the result is @Code { x }, which is correct.
+@PP
+If @Code { x } is raw and @Code { y } is non-raw, then
+the discriminant is non-empty and the result is the meld
+of two objects, the first having the form
+@ID @Code "label &0.03fu {}{@OneCol ,}"
+being @Code "x" with a comma appended, and
+the second being some non-raw entry such as
+@ID @Code "label &0.03fu {}{@OneCol ,} pn1{@OneCol ,} pn2"
+where the pattern may repeat. We are assuming by induction
+that @Code y has this form. Clearly, this meld gives a
+value equal to @Code { y }, which is the correct result.
+@PP
+If @Code { x } is non-raw and @Code { y } is raw, the
+@@Meld in the discriminant melds two values typified by
+@ID @Code "label &0.03fu {}{@OneCol ,} pn1{@OneCol ,} pn2"
+and
+@ID @Code "label &0.03fu {}"
+The result of this is @Code { x } with an empty object added
+at the end. This empty object is the second element of @Code { y },
+which is not equal to any element of @Code { x }: the second
+element of @Code x is not @Code "{}" but rather
+@Code { "{}{@OneCol ,}" }, because @@Meld treats immediately adjacent
+objects as single elements. The result of @@Rump is then this
+extra empty object, so the discriminant is the empty object and
+we return @Code { x }, correctly. It is this case that requires
+us to use {@Code "0.03fu"}; without it we would be melding
+@ID @Code "label{@OneCol ,} pn1{@OneCol ,} pn2"
+with
+@ID @Code "label"
+producing
+@ID @Code "label{@OneCol ,} pn1{@OneCol ,} pn2 label"
+leading to a non-empty discriminant and the wrong answer.
+@PP
+This leaves just the case where both @Code x and @Code y
+are non-raw. We will divide this last case into three
+sub-cases, but first we need some general observations.
+@PP
+Index entries are sorted for merging in the order in
+which their anchor points appear in the final printed
+document. This means that over the course of these
+entries the page numbers are non-decreasing. It is
+therefore clear that, although the order of merging
+is undefined (actually a balanced tree order is used),
+whenever two entries are presented for merging, all the
+page numbers in the first entry are no larger than all
+the page numbers in the second entry. We are also
+assuming inductively that the page numbers in each entry
+are distinct and monotone increasing. Thus, there can
+be at most one page number common to any two entries
+being merged, and if there is one in common it is the
+last page number of the first entry and the first of
+the second.
+@PP
+Our first sub-case is when the two entries have no
+page number in common. Since @Code { y } is non-raw,
+it has a page number not equal to any page number in
+@Code { x }. Therefore the discriminant is non-empty
+and the result is the meld of @Code "x{@OneCol ,}"
+with @Code { y }, which for example could be the
+meld of
+@ID @Code "label &0.03fu {}{@OneCol ,} pn1{@OneCol ,} pn2{@OneCol ,}"
+with
+@ID @Code "label &0.03fu {}{@OneCol ,} pn3{@OneCol ,} pn4"
+This will give the right answer, since @@Meld treats
+adjacent objects as single elements, and always incorporates
+elements from the first parameter first when it has a choice.
+@PP
+Our second sub-case is when the two entries have a
+page number in common and @Code { y } has two or more
+page numbers. The common page number must be the last
+of @Code x and the first of @Code { y }, so again
+@Code { y } has something (its last page number)
+distinct from @Code { x }, the discriminant is non-empty,
+and we end up for example melding
+@ID @Code "label &0.03fu {}{@OneCol ,} pn1{@OneCol ,} pn2{@OneCol ,}"
+with
+@ID @Code "label &0.03fu {}{@OneCol ,} pn2{@OneCol ,} pn3"
+Again it's clear that the meld will produce the right
+answer; in fact, this second sub-case could be unified
+with the first sub-case.
+@PP
+Our third sub-case is when the two entries have a page
+number in common and @Code { y } has only one page
+number. In this case, typified by @Code { x } with value
+@ID @Code "label &0.03fu {}{@OneCol ,} pn1{@OneCol ,} pn2"
+and @Code y with value
+@ID @Code "label &0.03fu {}{@OneCol ,} pn2"
+it is clear that @Code y offers nothing new, the
+discriminant is empty, and the result, quite correctly,
+is @Code { x }. This completes the proof.
+@End @Section
diff --git a/doc/doc/expert/exa_page b/doc/doc/expert/exa_page
new file mode 100644
index 0000000..31ab1d7
--- /dev/null
+++ b/doc/doc/expert/exa_page
@@ -0,0 +1,267 @@
+@Section
+ @Title { Page layout }
+ @Tag { pagelayout }
+@Begin
+@PP
+The page layout
+page.layout.inpractice @SubIndex { in practice }
+document.layout.page.layout. @SubIndex { page layout }
+definitions given in Section {@NumberOf definitions},
+although correct, are very basic. In this section we present the
+definitions used by the DocumentLayout package for laying out the pages
+of books, including running page headers and footers, different formats
+for odd and even pages, and so on. The present document is produced with
+these definitions.
+@PP
+We begin with a few definitions which permit the user to create cross
+references of the `see page 27' variety which will be kept up to date
+automatically. The user marks the target page by placing
+@Code {"@PageMark intro"}, for example, at the point of interest, and
+refers to the marked page as @Code "@PageOf intro" elsewhere:
+pageof.example @Index { @Code "@PageOf" example }
+@IndentedList
+@LI @Code {
+"export @Tag"
+"def @PageMarker right @Tag { @Null }"
+}
+@LI @Code {
+"def @PageMark right x"
+"{"
+" @PageMarker&&preceding @Tagged x"
+"}"
+}
+@LI @Code {
+"def @PageOf right x"
+"{"
+" @PageMarker&&x @Open { @Tag }"
+"}"
+}
+@EndList
+We will see below that an invocation of @Code "@PageMarker" appears before
+each page, with @Code "@Tag" parameter equal to the
+page number. Suppose that {@Code "@PageMark intro"}, which expands to
+@ID @Code "@PageMarker&&preceding @Tagged intro"
+happens to fall on page 27 of the final printed document (of course, its
+value is @@Null which makes it invisible). Then the effect of @@Tagged
+is to attach @Code "intro" as an extra tag to the first invocation of
+{@Code "@PageMarker"} preceding that final point, and this must be
+{@Code "@PageMarker 27"}. Therefore the expression
+@ID @Code "@PageMarker&&intro @Open { @Tag }"
+will open the invocation {@Code "@PageMarker 27"} and yield the value of
+its @Code "@Tag" parameter, 27. Thus, {@Code "@PageOf intro"} appearing
+anywhere in the document yields 27.
+@PP
+Next we have some little definitions for various parts of the
+page. {@Code "@FullPlace"} will be the target of full-width body text:
+@ID @Code {
+"def @FullPlace { @Galley }"
+}
+{@Code "@ColPlace"} will be the target of body text within one column:
+@ID @Code {
+"def @ColPlace { @Galley }"
+}
+{@Code "@TopList"} will be the target of figures and tables:
+@ID @Code {
+"export @Tag"
+"def @TopList right @Tag"
+"{"
+" @Galley"
+" //@TopGap @TopList @Next @Tag"
+"}"
+}
+We have taken a shortcut here, avoiding an unnecessary @Code "@TopPlace"
+symbol. @Code "@FootList" and {@Code "@FootSect"} define a sequence of
+full-width targets at the foot of the page for footnotes,
+preceded by a short horizontal line:
+footsect.example @Index { @Code "@FootSect" example }
+@IndentedList
+@LI @Code {
+"export @Tag"
+"def @FootList right @Tag"
+"{"
+" @Galley"
+" //@FootGap @FootList @Next @Tag"
+"}"
+}
+@LI @Code {
+"def @FootSect"
+"{"
+" @FootLen @Wide @HLine"
+" //@FootGap @FootList 1 ||@FootLen"
+"}"
+}
+@EndList
+Similarly, @Code "@ColFootList" and @Code "@ColFootSect" provide a
+sequence of targets for footnotes within one column:
+@ID @Code {
+"export @Tag"
+"def @ColFootList right @Tag"
+"{"
+" @Galley"
+" //@FootGap @ColFootList @Next @Tag"
+"}"
+""
+"def @ColFootSect"
+"{"
+" @ColFootLen @Wide @HLine"
+" //@FootGap @ColFootList 1 ||@ColFootLen"
+"}"
+}
+The next definition provides a horizontal sequence of one or more columns:
+collist.example @Index { @Code "@ColList" example }
+@ID @Code {
+"def @ColList right col"
+"{"
+" def @Column"
+" { @VExpand { @ColPlace //1rt @OneRow { //@MidGap @ColFootSect } } }"
+""
+" col @Case {"
+" Single @Yield @Column"
+" Double @Yield { @DoubleColWidth @Wide @Column ||@ColGap @ColList col }"
+" Multi @Yield { @MultiColWidth @Wide @Column ||@ColGap @ColList col }"
+" }"
+"}"
+}
+Each column consists of a @Code "@ColPlace" at the top and a
+@Code "@FootSect" at the foot. The @@VExpand symbol ensures that
+whenever a column comes into existence, it will expand vertically so
+that the bottom-justification @Code "//1rt" has as much space as
+possible to work within. The @Code "col" parameter determines whether
+the result has a single column, double columns, or multiple columns.
+@PP
+The {@Code "@Page"} symbol places its parameter in a page of fixed width,
+height, and margins:
+page.example @Index { @Code "@Page" example }
+@ID @Code {
+"def @Page right x"
+"{"
+" @PageWidth @Wide @PageHeight @High {"
+" //@PageMargin ||@PageMargin"
+" @HExpand @VExpand x"
+" ||@PageMargin //@PageMargin"
+" }"
+"}"
+}
+@@HExpand and @@VExpand ensure that the right parameter occupies all the
+available space; this is important when the right parameter is unusually
+small. The @@High symbol gives the page a single row mark, ensuring that
+it will be printed on a single sheet of paper (page {@PageOf rootg}).
+@PP
+Next we have {@Code "@OnePage"}, defining a typical page of a book or
+other document:
+onepage.example @Index { @Code "@OnePage" example }
+@ID @Code {
+"def @OnePage"
+" named @Columns {}"
+" named @PageTop {}"
+" named @PageFoot {}"
+"{"
+" @Page {"
+" @PageTop"
+" //@MidGap @TopList"
+" //@MidGap @FullPlace"
+" //@MidGap @ColList @Columns"
+" // //1rt @OneRow { //@MidGap @FootSect //@MidGap @PageFoot }"
+" }"
+"}"
+}
+The page top and page foot, and the number of columns, are parameters
+that will be given later when @Code "@OnePage" is invoked. The body of
+the page is a straightforward combination of previous definitions. The
+@Code "//" symbol protects the following @Code "//1rt" from deletion in
+the unlikely event that all the preceding symbols are replaced by
+@@Null. The following object is enclosed in @@OneRow to ensure that
+all of it is bottom-justified, not just its first component.
+@PP
+Before presenting the definition of a sequence of pages, we must detour
+to describe how running page headers and footers (like those in the
+present document) are produced. These are based on the
+@Code "@Runner" symbol:
+runner.example @Index { @Code "@Runner" example }
+@ID @Code {
+"export @TopOdd @TopEven @FootOdd @FootEven"
+"def @Runner"
+" named @TopOdd right @PageNum { @Null }"
+" named @TopEven right @PageNum { @Null }"
+" named @FootOdd right @PageNum { @Null }"
+" named @FootEven right @PageNum { @Null }"
+" named @Tag {}"
+"{ @Null }"
+}
+The four parameters control the format of running headers and footers on
+odd and even pages respectively. Invocations of {@Code "@Runner"}, for
+example
+@ID @Code {
+"@Runner"
+" @TopEven { @B @PageNum |1rt @I { Chapter 4 } }"
+" @TopOdd { @I { Examples } |1rt @B @PageNum }"
+}
+will be embedded in the body text of the document, and, as we will see
+in a moment, are accessed by @Code "@Runner&&following" cross references
+on the pages. Notice how the @Code "@PageNum" parameter of each
+parameter allows the format of the running header to be specified while
+leaving the page number to be substituted later.
+@PP
+We may now define {@Code "@OddPageList"}, whose result is a sequence of
+pages beginning with an odd-numbered page:
+oddpagelist.example @Index { @Code "@OddPageList" example }
+@ID @Code {
+"def @OddPageList"
+" named @Columns {}"
+" right @PageNum"
+"{"
+" def @EvenPageList ..."
+""
+" @PageMarker @PageNum"
+" // @Runner&&following @Open {"
+" @OnePage"
+" @Columns { @Columns }"
+" @PageTop { @TopOdd @PageNum }"
+" @PageFoot { @FootOdd @PageNum }"
+" }"
+" // @EvenPageList"
+" @Columns { @Columns }"
+" @Next @PageNum"
+"}"
+}
+Ignoring @Code "@EvenPageList" for the moment, notice first that the
+invocation of @Code "@OnePage" is enclosed in
+{@Code "@Runner&&following @Open"}. Since {@Code "@Runner&&following"}
+refers to the first invocation of @Code "@Runner" appearing after itself
+in the final printed document, the symbols @Code "@TopOdd" and
+@Code "@FootOdd" will take their value from the first invocation of
+@Code "@Runner" following the top of the page, even though @Code "@FootOdd"
+appears at the foot of the page. Their @Code "@PageNum" parameters are
+replaced by {@Code "@PageNum"}, the actual page number parameter of
+{@Code "@OddPageList"}.
+@PP
+After producing the odd-numbered page, @Code "@OddPageList" invokes
+{@Code "@EvenPageList"}:
+evenpagelist.example @Index { @Code "@EvenPageList" example }
+@ID @Code {
+"def @EvenPageList"
+" named @Columns {}"
+" right @PageNum"
+"{"
+" @PageMarker @PageNum"
+" // @Runner&&following @Open {"
+" @OnePage"
+" @Columns { @Columns }"
+" @PageTop { @TopEven @PageNum }"
+" @PageFoot { @FootEven @PageNum }"
+" }"
+" // @OddPageList"
+" @Columns { @Columns }"
+" @Next @PageNum"
+"}"
+}
+This produces an even-numbered page, then passes the ball back to
+@Code "@OddPageList" -- a delightful example of what computer
+scientists call mutual recursion. The two page types differ only in
+their running headers and footers, but other changes could easily be made.
+@PP
+It was foreshadowed earlier that an invocation of @Code "@PageMarker"
+would precede each page, and this has been done. Although this @Code
+"@PageMarker" is a component of the root galley, it will not cause a
+page to be printed, because Basser Lout skips components of height zero.
+@End @Section
diff --git a/doc/doc/expert/exa_para b/doc/doc/expert/exa_para
new file mode 100644
index 0000000..6b9f60f
--- /dev/null
+++ b/doc/doc/expert/exa_para
@@ -0,0 +1,236 @@
+@Section
+ @Title { Paragraphs, displays, and lists }
+ @Tag { paras }
+@Begin
+@PP
+The remaining sections of this chapter are all based on Version 2 of
+the DocumentLayout package. Version 3, which is similar but more elaborate,
+is described from the user's perspective in the
+document.layout @Index { DocumentLayout package }
+User's Guide @Cite { $kingston1995lout.user }. In 26 pages of Lout, the
+DocumentLaytout package defines many features required in the formatting
+of simple documents, technical reports, and books, including displays,
+lists, page layout, cross references, tables of contents, footnotes,
+figures, tables, references, chapters, sections, and sorted indexes.
+@PP
+The symbols used for separating paragraphs and producing displays and
+document.layout.paras @SubIndex { paragraphs }
+lists may lack the excitement of more exotic features, but they can
+teach some important lessons about robust design. The following macro
+for separating paragraphs produces a 0.3 cm vertical space and a 1 cm
+indent on the following line, and is clearly on the right track:
+@ID @Code "macro @PP { //0.3c &1c }"
+Nevertheless it has several major problems.
+@PP
+The @Code "&" symbol is subject to widening during line adjustment, so
+it should be replaced by {@Code "1c @Wide {}"}. But then white space
+following the symbol will affect the result, so an extra @Code "&0i" must
+be added. If the document is printed double spaced, this paragraph gap
+will fail to widen: it should be expressed in terms of the @Code "v" unit,
+with mark-to-mark spacing mode. Similarly, the paragraph indent should
+probably be made proportional to the font size.
+@PP
+`Magic numbers' like @Code "0.3c" should not be buried in definitions
+where they cannot be changed easily, or kept consistent with similar
+definitions during tuning. They are much better placed as symbols,
+possibly parameters of the enclosing package:
+@ID @Code {
+"def @DocumentLayout" pp.example @Index { @Code "@PP" example }
+" named @ParaGap { 1.3vx }"
+" named @ParaIndent { 2f }"
+" ..."
+"@Begin"
+""
+" macro @PP { //@ParaGap @ParaIndent @Wide &0i }"
+" macro @LP { //@ParaGap }"
+" ..."
+"@End @DocumentLayout"
+}
+and we have arrived at the definition of @Code "@PP" as it appears in
+the DocumentLayout package.
+@PP
+A display is a table in which the first column is blank:
+document.layout.displays @SubIndex { displays }
+@ID lines @Break {
+@I { preceding text }
+@Code "//@DispGap |@DispIndent" @I display
+@Code "//@DispGap"
+@I { following text }
+}
+Edge-to-edge is the appropriate spacing mode before and after displays,
+since the display could be a table or figure whose mark does not
+correspond to a baseline. Thus, @Code "1v" is a reasonable value for
+{@Code "@DispGap"}.
+@PP
+The ordinary user cannot be expected to type the Lout source shown
+above; a more appropriate syntax is
+indented.display.example @Index { @Code "@IndentedDisplay" example }
+@ID lines @Break {
+@I { preceding text }
+@Code "@IndentedDisplay {" @I display @Code "}"
+@I { following text }
+}
+This presents a problem: if @Code "@IndentedDisplay" is made a definition
+with a right parameter, its result will be an object separated from the
+surrounding text only by white space, hence part of the paragraph; while
+if it is a macro, the final @Code "//@DispGap" cannot be included in it.
+ The solution adopted in the DocumentLayout package uses a galley and a macro:
+@ID @Code {
+" def @DispPlace { @Galley }"
+" def @Disp into { @DispPlace&&preceding }"
+" right x"
+" {"
+" @OneRow x"
+" }"
+""
+" macro @IndentedDisplay"
+" {"
+" //@DispGap |@DispIndent @DispPlace |"
+" //@DispGap // @Disp"
+" }"
+}
+@Code "@DispPlace" and @Code "@Disp" are not exported, so there is
+no danger of a name clash with some other symbol. The ordinary user's
+syntax expands to
+@ID lines @Break {
+@I { preceding text }
+@Code "//@DispGap |@DispIndent @DispPlace |"
+@Code "//@DispGap // @Disp {" @I display @Code "}"
+@I { following text }
+}
+and the @Code "@Disp" galley appears at the preceding
+{@Code "@DispPlace"}, being itself replaced by @@Null. The @Code "//"
+symbol protects the preceding @Code "//@DispGap" from being deleted by
+this @@Null when there is no following text.
+@PP
+An automatically numbered list
+document.layout.lists @SubIndex { lists }
+numbered @Index { Numbered list }
+could have an arbitrarily large number of
+items, so, by analogy with sequences of pages, we see immmediately that
+recursion must be involved:
+@ID @Code {
+"def @List right num"
+"{"
+" @DispIndent @Wide num. | @ItemPlace"
+" //@DispGap @List @Next num"
+"}"
+}
+Notice how the @@Next symbol works in conjunction with the recursion to
+produce an ascending sequence of numbers; the result of @Code "@List 1"
+will be
+@ID @Code {
+"1. @ItemPlace"
+"2. @ItemPlace"
+"3. @ItemPlace"
+"..."
+}
+We can follow this with items which are galleys targeted to
+{@Code "@ItemPlace&&preceding"}, and @Code "@List" will expand just
+enough to accommodate them.
+@PP
+The usual problem with recursive-receptive symbols now arises: there is
+always one unexpanded {@Code "@List"}, and until it can be removed the
+galley containing it will appear to be incomplete and will be prevented at
+that point from flushing into its parent (see page {@PageOf forcing}). We
+adopt the usual solution: a forcing galley into a later target will
+replace the last @Code "@List" by @@Null. This brings us to the
+definitions as they appear in DocumentLayout:
+indented.list.example @Index { @Code "@IndentedList" example }
+@IndentedList
+@LI @Code {
+"def @ItemPlace { @Galley }"
+"def @ListItem into { @ItemPlace&&preceding }"
+" right x"
+"{ x }"
+}
+@LI @Code {
+"def @EndListPlace { @Galley }"
+"def @EndList force into { @EndListPlace&&preceding }"
+"{}"
+}
+@LI @Code {
+"def @RawIndentedList"
+" named style right tag {}"
+" named indent { @DispIndent }"
+" named gap { @DispGap }"
+" named start { 1 }"
+"{"
+" def @IList right num"
+" {"
+" indent @Wide {style num} | @ItemPlace"
+" //gap @IList @Next num"
+" }"
+""
+" @IList start // @EndListPlace"
+"}"
+}
+@EndList
+Now given the input
+@ID @Code {
+"@RawIndentedList"
+"@ListItem { first item }"
+"@ListItem { second item }"
+"..."
+"@ListItem { last item }"
+"@EndList"
+}
+@Code "@RawIndentedList" will expand to receive the items, and will be
+closed off by {@Code "@EndList"}.
+@PP
+The {@Code indent}, {@Code gap}, and {@Code start} parameters are
+straightforward (note that the burden of typing @Code 1 has been lifted
+from the ordinary user), but the @Code style parameter has a parameter
+of its own (see page {@PageOf strange}). It is used like this:
+@ID @Code {
+"def @RawNumberedList { @RawIndentedList style { tag. } }"
+"def @RawParenNumberedList { @RawIndentedList style { (tag) } }"
+}
+In {@Code "@RawNumberedList"}, @Code "style" is given the value
+{@Code "tag."}, where @Code tag is its own right parameter, so the value
+of @Code "{style num}" within @Code "@IList" is {@Code "num."}; while in
+{@Code "@RawParenNumberedList"}, @Code "{style num}" is {@Code "(num)"}. In
+this way we achieve an unlimited variety of numbering formats without
+having to rewrite @Code "@RawIndentedList" over and over.
+@PP
+These list symbols are objects without surrounding space, so macros
+similar to those used for displays are needed:
+@ID @Code {
+"macro @NumberedList { //@DispGap @RawNumberedList //@DispGap }"
+"macro @ParenNumberedList { //@DispGap @RawParenNumberedList //@DispGap }"
+}
+and so on.
+@PP
+Lists numbered by Roman numerals
+roman @Index { Roman numerals }
+present a problem, because @@Next will
+not increment Roman numerals. Instead, they must be stored in a
+database:
+@ID @Code {
+"def @Roman"
+" left @Tag"
+" right @Val"
+"{ @Val }"
+""
+"@SysDatabase @Roman { standard }"
+}
+@Code "@SysDatabase" is preferred over @Code "@Database" here because
+this database should be kept in a standard place and shared by
+everyone. The database itself, a file called @Code "standard.ld" in
+Basser Lout, contains invocations of {@Code "@Roman"}, each enclosed in
+braces:
+@ID @Code {
+"{ 1 @Roman i }"
+"{ 2 @Roman ii }"
+"..."
+"{ 100 @Roman c }"
+}
+Then @Code "@Roman&&12" for example has value {@Roman&&12}, and
+@ID @Code {
+"def @RawRomanList { @RawIndentedList style { {@Roman&&tag}. } }"
+}
+produces a list numbered by Roman numerals. The counting still
+proceeds in Arabic, but each Arabic numeral is converted to Roman by the
+cross reference. Since arbitrary objects may be stored in databases,
+arbitrary finite sequences of objects may be `counted' in this way.
+@End @Section
diff --git a/doc/doc/expert/mydefs b/doc/doc/expert/mydefs
new file mode 100644
index 0000000..2039832
--- /dev/null
+++ b/doc/doc/expert/mydefs
@@ -0,0 +1,461 @@
+
+ def "->" { {Symbol Base} @Font "\256" } #174 decimal
+ def "=>" { {Symbol Base} @Font "\336" } #222 decimal
+ macro @JP { /0.5v }
+
+ def @Code right x
+ { { Helvetica Base -1p } @Font lines @Break x }
+
+ macro @JL { //1vx }
+
+ ###################################################
+ # #
+ # Lout keywords. #
+ # #
+ ###################################################
+
+ def @@BackEnd { @Code "@BackEnd" }
+ def @@Background { @Code "@Background" }
+ def @@Begin { @Code "@Begin" }
+ def @@BeginHeaderComponent { @Code "@BeginHeaderComponent" }
+ def @@Break { @Code "@Break" }
+ def @@Case { @Code "@Case" }
+ def @@Char { @Code "@Char" }
+ def @@ClearHeaderComponent { @Code "@ClearHeaderComponent" }
+ def @@Common { @Code "@Common" }
+ def @@CurrLang { @Code "@CurrLang" }
+ def @@CurrFamily { @Code "@CurrFamily" }
+ def @@CurrFace { @Code "@CurrFace" }
+ def @@CurrYUnit { @Code "@CurrYUnit" }
+ def @@CurrZUnit { @Code "@CurrZUnit" }
+ def @@Database { @Code "@Database" }
+ def @@End { @Code "@End" }
+ def @@EndHeaderComponent { @Code "@EndHeaderComponent" }
+ def @@Enclose { @Code "@Enclose" }
+ def @@Font { @Code "@Font" }
+ def @@ForceGalley { @Code "@ForceGalley" }
+ def @@Galley { @Code "@Galley" }
+ def @@GetContext { @Code "@GetContext" }
+ def @@Graphic { @Code "@Graphic" }
+ def @@HAdjust { @Code "@HAdjust" }
+ def @@HCover { @Code "@HCover" }
+ def @@HContract { @Code "@HContract" }
+ def @@HExpand { @Code "@HExpand" }
+ def @@HLimited { @Code "@HLimited" }
+ def @@HMirror { @Code "@HMirror" }
+ def @@High { @Code "@High" }
+ def @@HScale { @Code "@HScale" }
+ def @@HShift { @Code "@HShift" }
+ def @@HSpan { @Code "@HSpan" }
+ def @@Include { @Code "@Include" }
+ def @@IncludeGraphic { @Code "@IncludeGraphic" }
+ def @@IncludeGraphicRepeated { @Code "@IncludeGraphicRepeated" }
+ def @@KernShrink { @Code "@KernShrink" }
+ def @@Key { @Code "@Key" }
+ def @@Language { @Code "@Language" }
+ def @@LClos { @Code "@LClos" }
+ def @@LEnv { @Code "@LEnv" }
+ def @@LInput { @Code "@LInput" }
+ def @@LUse { @Code "@LUse" }
+ def @@LVis { @Code "@LVis" }
+ def @@LinkSource { @Code "@LinkSource" }
+ def @@LinkDest { @Code "@LinkDest" }
+ def @@Meld { @Code "@Meld" }
+ def @@Merge { @Code "@Merge" }
+ def @@Moment { @Code "@Moment" }
+ def @@Next { @Code "@Next" }
+ def @@NotRevealed { @Code "@NotRevealed" }
+ def @@Null { @Code "@Null" }
+ def @@OneCol { @Code "@OneCol" }
+ def @@OneOf { @Code "@OneOf" }
+ def @@OneRow { @Code "@OneRow" }
+ def @@Open { @Code "@Open" }
+ def @@Outline { @Code "@Outline" }
+ def @@PAdjust { @Code "@PAdjust" }
+ def @@PageLabel { @Code "@PageLabel" }
+ def @@PlainGraphic { @Code "@PlainGraphic" }
+ def @@PrependGraphic { @Code "@PrependGraphic" }
+ def @@RawVerbatim { @Code "@RawVerbatim" }
+ def @@Rotate { @Code "@Rotate" }
+ def @@Rump { @Code "@Rump" }
+ def @@Insert { @Code "@Insert" }
+ def @@Scale { @Code "@Scale" }
+ def @@SetColor { @Code "@SetColor" }
+ def @@SetColour { @Code "@SetColour" }
+ def @@SetContext { @Code "@SetContext" }
+ def @@SetHeaderComponent { @Code "@SetHeaderComponent" }
+ def @@SetUnderlineColor { @Code "@SetUnderlineColor" }
+ def @@SetUnderlineColour { @Code "@SetUnderlineColour" }
+ def @@Space { @Code "@Space" }
+ def @@StartHSpan { @Code "@StartHSpan" }
+ def @@StartVSpan { @Code "@StartVSpan" }
+ def @@StartHVSpan { @Code "@StartHVSpan" }
+ def @@SysDatabase { @Code "@SysDatabase" }
+ def @@SysInclude { @Code "@SysInclude" }
+ def @@SysIncludeGraphic { @Code "@SysIncludeGraphic" }
+ def @@SysIncludeGraphicRepeated { @Code "@SysIncludeGraphicRepeated" }
+ def @@SysPrependGraphic { @Code "@SysPrependGraphic" }
+ def @@Tag { @Code "@Tag" }
+ def @@Tagged { @Code "@Tagged" }
+ def @@SetTexture { @Code "@SetTexture" }
+ def @@Underline { @Code "@Underline" }
+ def @@URLLink { @Code "@URLLink" }
+ def @@Use { @Code "@Use" }
+ def @@VAdjust { @Code "@VAdjust" }
+ def @@VContract { @Code "@VContract" }
+ def @@VCover { @Code "@VCover" }
+ def @@VExpand { @Code "@VExpand" }
+ def @@Verbatim { @Code "@Verbatim" }
+ def @@VLimited { @Code "@VLimited" }
+ def @@VMirror { @Code "@VMirror" }
+ def @@VScale { @Code "@VScale" }
+ def @@VShift { @Code "@VShift" }
+ def @@VSpan { @Code "@VSpan" }
+ def @@Wide { @Code "@Wide" }
+ def @@Yield { @Code "@Yield" }
+ def @@YUnit { @Code "@YUnit" }
+ def @@ZUnit { @Code "@ZUnit" }
+
+
+ ###################################################
+ # #
+ # Miscellaneous, mostly graphical definitions. #
+ # #
+ ###################################################
+
+
+ def @TeX
+ { @OneCol { T &0.4fo {-0.2f @VShift E} &0.45fo X }
+ }
+
+ export sp sb
+ def @Equation
+ body x
+ @Begin
+
+ def sp left x right y { @OneRow { | "-2p" @Font y ^/0.5fk x } }
+ def sb left x right y { @OneRow { x ^/0.5fk | "-2p" @Font y } }
+
+ Slope @Font x
+
+ @End @Equation
+
+ def @Super
+ left x
+ right y
+ { @OneRow { | -2p @Font y ^/0.5fk x }
+ }
+
+ def @NineSquare
+ right x
+ {
+ def @Three { x |0.2i x |0.2i x }
+
+ @Three /0.2i @Three /0.2i @Three
+ }
+
+ def @Leaders
+ { .. @Leaders
+ }
+
+ def @HLine
+ {
+ @BackEnd @Case {
+ PostScript @Yield { {0 0 moveto xsize 0 lineto stroke} @Graphic {} }
+ PDF @Yield { {0 0 m __xsize 0 l s} @Graphic {} }
+ }
+# { 0 0 moveto xsize 0 lineto stroke } @Graphic {}
+ }
+
+ def @VDashLine
+ right length
+ {
+ length @High {
+ @BackEnd @Case {
+ PostScript @Yield { { 0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke } @Graphic {} }
+
+# VT: double quotes required:
+ PDF @Yield { { "__pt 3 0 d 0 0 m 0 __ysize l s" } @Graphic {} }
+ }
+# { 0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke } @Graphic {}
+ }
+ }
+
+ def @LBox
+ right offset
+ { @HContract @VContract
+ {
+ { //0.2c
+ 0.6c @High 1.2c @Wide
+
+ @BackEnd @Case {
+ PostScript @Yield {
+ { 0 0 moveto xsize 0 lineto
+ xsize ysize lineto 0 ysize lineto closepath
+ gsave 0.9 setgray fill grestore stroke } @Graphic {}
+ }
+ PDF @Yield {
+ { 0 0 m __xsize 0 l
+ __xsize __ysize l 0 __ysize l h
+ q 0.9 g f Q s } @Graphic {}
+ }
+ }
+
+# { 0 0 moveto xsize 0 lineto
+# xsize ysize lineto 0 ysize lineto closepath
+# gsave 0.9 setgray fill grestore stroke }
+# @Graphic {}
+ }
+ ||offset @VDashLine 1c
+ }
+ }
+
+ def @Arrow
+ right length
+ { @OneCol @OneRow
+ {
+ 30d @Rotate {0.12c @Wide @HLine}
+ //
+ length @Wide @HLine
+ //
+ "-30d" @Rotate {0.12c @Wide @HLine}
+ }
+ }
+
+ def @DoubleArrow
+ right length
+ { @OneCol @OneRow
+ {
+ & 180d @Rotate @Arrow length
+ |0io @Arrow length
+ }
+ }
+
+ def @Put
+ left coord
+ right x
+ { @OneCol @OneRow
+ { coord / | @OneCol @OneRow x
+ }
+ }
+
+ macro @At { //0io }
+
+
+ ###################################################
+ # #
+ # Interpolated example documents. #
+ # #
+ ###################################################
+
+ def @LittleEndRunPlace { @Galley }
+ def @LittleEndRun
+ force into { @LittleEndRunPlace&&preceding }
+ {}
+
+ def @LittleTextPlace { @Galley }
+ def @LittleText into { @LittleTextPlace&&preceding }
+ right x
+ { x
+ }
+
+ def @LittleFootPlace { @Galley }
+ def @LittleFootNote into { @LittleFootPlace&&following }
+ right x
+ { x
+ }
+
+ def @LittlePageColumn
+ right x
+ {
+ 9px @Break 8p @Font
+ 2.8c @Wide x
+ }
+
+ def @LittlePage
+ right x
+ {
+ @HContract @VContract {
+ @BackEnd @Case {
+ PostScript @Yield {
+ { 0 0 moveto xsize 0 lineto xsize ysize lineto
+ 0 ysize lineto closepath stroke } @Graphic
+ { //0.3c ||0.3c
+ 9px @Break 8p @Font
+ 2.8c @Wide 3.8c @High x
+ ||0.3c //0.3c
+ }
+ }
+ PDF @Yield {
+ { 0 0 m __xsize 0 l __xsize __ysize l
+ 0 __ysize l h s } @Graphic
+ { //0.3c ||0.3c
+ 9px @Break 8p @Font
+ 2.8c @Wide 3.8c @High x
+ ||0.3c //0.3c
+ }
+ }
+ }
+# { 0 0 moveto xsize 0 lineto xsize ysize lineto
+# 0 ysize lineto closepath stroke } @Graphic
+# { //0.3c ||0.3c
+# 9px @Break 8p @Font
+# 2.8c @Wide 3.8c @High x
+# ||0.3c //0.3c
+# }
+ }
+ }
+
+ def @LittleFootSect
+ { 1c @Wide @HLine
+ //0.3v @LittleFootPlace ||0.5c
+ }
+
+ def @LittlePageList
+ right @PageNum
+ {
+ @LittlePage { # |0.5rt @PageNum //0.8v
+ //0.3v @LittleTextPlace
+ //1rt @LittleFootSect
+ }
+ //
+ @LittlePageList @Next @PageNum
+ }
+
+ def @LittleDocument
+ { @LittlePage
+ { @LittleTextPlace
+ //1rt @LittleFootSect
+ }
+ // @LittlePageList 2
+ // @LittleEndRunPlace
+ }
+
+ def @ShowMarks
+ named linewidth {
+ @BackEnd @Case {
+ PostScript @Yield { 0.015 cm }
+ PDF @Yield { __mul(0.015, __cm) }
+ }
+ }
+ named linestyle { dashed }
+ named dashlength {
+ @BackEnd @Case {
+ PostScript @Yield { 0.15 cm }
+ PDF @Yield { __mul(0.15, __cm) }
+ }
+ }
+ named paint { lightgrey}
+ right x
+ {
+ @HContract @VContract @Fig
+ { @Box margin { 0c } linewidth { linewidth } paint { paint }
+ { @Figure
+ shape {
+ @BackEnd @Case {
+ PostScript @Yield {
+ -0.3 cm ymark
+ {xsize ymark} ++ {0.3 cm 0} []
+ xmark -0.3 cm
+ {xmark ysize} ++ {0 0.3 cm}
+ }
+ PDF @Yield { "" # VT: PDF currently has no output
+ }
+ }
+ }
+ linewidth { linewidth }
+ linestyle { linestyle }
+ dashlength { dashlength }
+ x
+ }
+
+ }
+ }
+
+ def @ShowVMark
+ named linewidth { 0.015 cm }
+ named linestyle { dashed }
+ named dashlength { 0.15 cm }
+ named paint { light }
+ right x
+ {
+ @Fig
+ {
+ @Figure
+ shape {
+ @BackEnd @Case {
+ PostScript @Yield {
+ xmark -0.3 cm
+ {xmark ysize} ++ {0 0.3 cm}
+ }
+ PDF @Yield { "" # VT: PDF currently has no output
+ }
+ }
+ }
+ linewidth { linewidth }
+ linestyle { linestyle }
+ dashlength { dashlength }
+ x
+ }
+ }
+
+ def @ShowHMark
+ named linewidth { 0.015 cm }
+ named linestyle { dashed }
+ named dashlength { 0.15 cm }
+ named paint { light }
+ right x
+ {
+ @Fig
+ {
+ @Figure
+ shape {
+ @BackEnd @Case {
+ PostScript @Yield {
+ -0.3 cm ymark
+ {xsize ymark} ++ {0.3 cm 0}
+ }
+ PDF @Yield { "" # VT: PDF currently has no output
+ }
+ }
+ }
+ linewidth { linewidth }
+ linestyle { linestyle }
+ dashlength { dashlength }
+ x
+ }
+ }
+
+ def @Strange
+ named @Format right @Val { [@Val] }
+ right x
+ { @Format x
+ }
+
+ def @TightBox right x
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ "0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke"
+ @Graphic x
+ }
+ PDF @Yield {
+ "0 0 m __xsize 0 l __xsize __ysize l 0 __ysize l h s"
+ @Graphic x
+ }
+ }
+ }
+
+ def @GreyBox right x
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ "0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath 0.8 setgray fill"
+ @Graphic x
+ }
+ PDF @Yield {
+ "0 0 m __xsize 0 l __xsize __ysize l 0 __ysize l h 0.8 g f"
+ @Graphic x
+ }
+ }
+ }
diff --git a/doc/doc/expert/outfile.ps b/doc/doc/expert/outfile.ps
new file mode 100644
index 0000000..8383d84
--- /dev/null
+++ b/doc/doc/expert/outfile.ps
@@ -0,0 +1,23719 @@
+%!PS-Adobe-3.0
+%%Creator: Basser Lout Version 3.40 (June 2013)
+%%CreationDate: Wed Jun 26 09:48:57 2013
+%%DocumentData: Binary
+%%DocumentNeededResources: (atend)
+%%DocumentSuppliedResources: (atend)
+%%DocumentMedia: A4 595 842 0 white ()
+%%PageOrder: Ascend
+%%LanguageLevel: 2
+%%Pages: (atend)
+%%BoundingBox: 0 0 595 842
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset LoutStartUp
+/cp_x 0 def
+/cp_y 0 def
+/louts 0 def
+/loutv 0 def
+/loutf 0 def
+/ymark 0 def
+/xmark 0 def
+/ysize 0 def
+/xsize 0 def
+/save_cp { currentpoint /cp_y exch def /cp_x exch def } bind def
+/restore_cp { cp_x cp_y moveto } bind def
+/outline { gsave 1 1 1 setrgbcolor dup show save_cp
+ grestore true charpath stroke restore_cp } bind def
+/m { 3 1 roll moveto show } bind def
+/mo { 3 1 roll moveto outline } bind def
+/s { exch currentpoint exch pop moveto show } bind def
+/so { exch currentpoint exch pop moveto outline } bind def
+/k { exch neg 0 rmoveto show } bind def
+/ko { exch neg 0 rmoveto outline } bind def
+/r { exch 0 rmoveto show } bind def
+/ro { exch 0 rmoveto outline } bind def
+/c { gsave 3 1 roll rmoveto show grestore } bind def
+/co { gsave 3 1 roll rmoveto outline grestore } bind def
+/ul { gsave setlinewidth dup 3 1 roll
+ moveto lineto stroke grestore } bind def
+/in { 1440 mul } bind def
+/cm { 567 mul } bind def
+/pt { 20 mul } bind def
+/em { 120 mul } bind def
+/sp { louts mul } def
+/vs { loutv mul } def
+/ft { loutf mul } def
+/dg { } def
+
+/LoutGraphic {
+ /louts exch def
+ /loutv exch def
+ /loutf exch def
+ /ymark exch def
+ /xmark exch def
+ /ysize exch def
+ /xsize exch def
+} def
+
+/LoutGr2 { gsave translate LoutGraphic gsave } def
+
+/LoutFont
+{ findfont exch scalefont setfont
+} bind def
+
+/LoutRecode {
+ { findfont dup length dict begin
+ {1 index /FID ne {def} {pop pop} ifelse} forall
+ /Encoding exch def
+ currentdict end definefont pop
+ }
+ stopped pop
+} bind def
+
+/PreEPSF_state 0 def
+/dict_stack 0 def
+/ops_count 0 def
+/LoutStartEPSF { % prepare for EPSF inclusion
+ /PreEPSF_state save def
+ /dict_stack countdictstack def
+ /ops_count count 1 sub def
+ 20 dict begin
+ /showpage {} def
+ 0 setgray 0 setlinecap
+ 1 setlinewidth 0 setlinejoin
+ 10 setmiterlimit [] 0 setdash newpath
+ /languagelevel where
+ { pop languagelevel
+ 1 ne
+ { false setstrokeadjust false setoverprint
+ } if
+ } if
+} bind def
+
+/LoutEPSFCleanUp { % clean up after EPSF inclusion
+ count ops_count sub { pop } repeat
+ countdictstack dict_stack sub { end } repeat
+ PreEPSF_state restore
+} bind def
+
+% Find current texture (may be null)
+% - LoutCurrentP p
+/LoutCurrentP
+{
+ currentcolorspace
+ 0 get /Pattern eq
+ {
+ [ currentcolor ]
+ dup length 1 sub get
+ }
+ {
+ null
+ } ifelse
+} def
+
+% Find current color and color space
+% - LoutCurrentCCS c cs
+/LoutCurrentCCS
+{
+ LoutCurrentP dup null eq
+ {
+ pop [ currentcolor ]
+ currentcolorspace
+ }
+ {
+ dup
+ /UnderlyingColor get
+ exch /UnderlyingColorSpace get
+ } ifelse
+} def
+
+% Install c, cs, and (a copy of) p into graphics state
+% c cs p LoutSetCCSP -
+/LoutSetCCSP
+{
+ dup null eq
+ {
+ pop setcolorspace
+ aload pop setcolor
+ }
+ {
+ % copy pattern dictionary
+ 12 dict copy
+
+ % record cs and c in p
+ dup /UnderlyingColorSpace 3 index
+ put
+ dup /UnderlyingColor 4 index
+ put
+
+ % do setcolorspace and setcolor
+ dup /PaintType get 1 eq
+ {
+ [ /Pattern ] setcolorspace
+ setcolor
+ pop pop
+ }
+ {
+ [ /Pattern
+ 4 -1 roll
+ ] setcolorspace
+ exch aload length 1 add
+ -1 roll
+ setcolor
+ } ifelse
+ } ifelse
+} bind def
+
+% num LoutSetGray -
+/LoutSetGray
+{
+ [ 2 1 roll ]
+ [ /DeviceGray ]
+ LoutCurrentP
+ LoutSetCCSP
+} bind def
+
+% r g b LoutSetRGBColor -
+/LoutSetRGBColor
+{
+ [ 4 1 roll ]
+ [ /DeviceRGB ]
+ LoutCurrentP
+ LoutSetCCSP
+} bind def
+
+% h s b LoutSetHSBColor -
+/LoutSetHSBColor
+{
+ gsave sethsbcolor
+ currentrgbcolor grestore
+ LoutSetRGBColor
+} bind def
+
+% c m y k LoutSetRGBColor -
+/LoutSetCMYKColor
+{
+ [ 5 1 roll ]
+ [ /DeviceCMYK ]
+ LoutCurrentP
+ LoutSetCCSP
+} bind def
+
+% p LoutSetTexture -
+/LoutSetTexture
+{
+ LoutCurrentCCS
+ 3 -1 roll
+ LoutSetCCSP
+} bind def
+
+% <scale > <scalex> <scaley> <rotate> <hshift> <vshift>
+% <painttype> <bbox> <xstep> <ystep> <paintproc> LoutMakeTexture p
+/LoutMakeTexture
+{
+ 12 dict begin
+ /PaintProc exch def
+ /YStep exch def
+ /XStep exch def
+ /BBox exch def
+ /PaintType exch def
+ /PatternType 1 def
+ /TilingType 1 def
+ currentdict end
+ 7 1 roll
+ matrix translate
+ 5 1 roll
+ matrix rotate
+ 4 1 roll
+ matrix scale
+ exch dup matrix scale
+ matrix concatmatrix
+ matrix concatmatrix
+ matrix concatmatrix
+ /makepattern where
+ {
+ pop makepattern
+ }
+ {
+ pop pop null
+ } ifelse
+} bind def
+
+/LoutTextureSolid
+{
+ null
+ LoutSetTexture
+} bind def
+%%EndResource
+
+%%BeginResource: procset LoutTabPrependGraphic
+% @PrependGraphic file /home/jeff/lout.lib/include/tabf.lpg
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% PostScript @SysPrependGraphic file for @Tab %
+% %
+% This file has been placed in the public domain %
+% by its author, Jeffrey H. Kingston %
+% %
+% To assist in avoiding name clashes, the names %
+% of all these symbols begin with "ltab". %
+% %
+% Jeffrey H. Kingston %
+% 24 September 1991 %
+% 22 December 1992 %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% linewidth ltabhs -
+% horizontal single line
+/ltabhs
+{ 0 0 moveto xsize 0 lineto
+ setlinewidth 0 setlinecap stroke
+} def
+
+% linewidth ltabhsp -
+% horizontal single line with projecting ends
+/ltabhsp
+{ 0 0 moveto xsize 0 lineto
+ setlinewidth 2 setlinecap stroke
+} def
+
+% linewidth ltabhd -
+% horizontal double line
+/ltabhd
+{ dup dup
+ 0 0 moveto xsize 0 lineto
+ 0 exch 3 mul moveto xsize exch 3 mul lineto
+ setlinewidth 0 setlinecap stroke
+} def
+
+% linewidth ltabhdb -
+% horizontal double line below mark
+/ltabhdb
+{ dup dup
+ 0 0 moveto xsize 0 lineto
+ 0 exch -3 mul moveto xsize exch -3 mul lineto
+ setlinewidth 0 setlinecap stroke
+} def
+
+% linewidth ltabhdnw -
+% horizontal double line with northwest corner
+/ltabhdnw
+{ dup dup dup dup
+ 0 0 moveto xsize 0 lineto
+ xsize exch 3 mul moveto
+ -3 mul exch 3 mul lineto
+ -3 mul 0 lineto
+ setlinewidth 0 setlinejoin 2 setlinecap stroke
+} def
+
+% linewidth ltabhdne -
+% horizontal double line with northeast corner
+/ltabhdne
+{ dup dup dup dup
+ 0 0 moveto xsize 0 lineto
+ 0 exch 3 mul moveto
+ 3 mul xsize add exch 3 mul lineto
+ 3 mul xsize add 0 lineto
+ setlinewidth 0 setlinejoin 2 setlinecap stroke
+} def
+
+% linewidth ltabhdsw -
+% horizontal double line with southwest corner
+/ltabhdsw
+{ dup dup dup dup
+ 0 0 moveto xsize 0 lineto
+ xsize exch -3 mul moveto
+ -3 mul exch -3 mul lineto
+ -3 mul 0 lineto
+ setlinewidth 0 setlinejoin 2 setlinecap stroke
+} def
+
+% linewidth ltabhdse -
+% horizontal double line with southeast corner
+/ltabhdse
+{ dup dup dup dup
+ 0 0 moveto xsize 0 lineto
+ 0 exch -3 mul moveto
+ 3 mul xsize add exch -3 mul lineto
+ 3 mul xsize add 0 lineto
+ setlinewidth 0 setlinejoin 2 setlinecap stroke
+} def
+
+% linewidth ltabvs -
+% vertical single line
+/ltabvs
+{ 0 0 moveto 0 ysize lineto
+ setlinewidth 0 setlinecap stroke
+} def
+
+% linewidth ltabvd -
+% vertical double line
+/ltabvd
+{ dup dup
+ 0 0 moveto 0 ysize lineto
+ -3 mul 0 moveto -3 mul ysize lineto
+ setlinewidth 0 setlinecap stroke
+} def
+
+% linewidth ltabvdr -
+% vertical double line to right of mark
+/ltabvdr
+{ dup dup
+ 0 0 moveto 0 ysize lineto
+ 3 mul 0 moveto 3 mul ysize lineto
+ setlinewidth 0 setlinecap stroke
+} def
+%%EndResource
+
+%%BeginResource: procset LoutFigPrependGraphic
+% @PrependGraphic file /home/jeff/lout.lib/include/figf.lpg
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% PostScript @SysPrependGraphic file for @Fig Jeffrey H. Kingston %
+% Version 2.0 (includes CIRCUM label) January 1992 %
+% %
+% This file has been placed in the public domain by its author, %
+% Jeffrey H. Kingston %
+% %
+% Although Fig is now obsolete I have updated it 20 October 2002 %
+% to work with textures, i.e. replacing setrgbcolor with %
+% LoutSetRGBColor. %
+% %
+% To assist in avoiding name clashes, the names of all symbols %
+% defined here begin with "lfig". However, this is not feasible %
+% with user-defined labels and some labels used by users. %
+% %
+% <point> is two numbers, a point. %
+% <length> is one number, a length %
+% <angle> is one number, an angle in degrees %
+% <dashlength> is one number, the preferred length of a dash %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+errordict begin
+ /handleerror
+ {
+ { /Times-Roman findfont 8 pt scalefont setfont
+ 0 setgray 4 pt 4 pt moveto
+ $error /errorname get
+ dup lfigdict exch known
+ { lfigdict exch get }
+ { 30 string cvs } ifelse
+ show
+ ( Command: ) show
+ $error /command get 30 string cvs show
+ } stopped {} if
+ showpage stop
+ } def
+end
+
+% concat strings: <string> <string> lfigconcat <string>
+% must be defined outside lfigdict since used in lfigpromotelabels
+/lfigconcat
+{ 2 copy length exch length add string
+ dup 0 4 index putinterval
+ dup 3 index length 3 index putinterval
+ 3 1 roll pop pop
+} def
+
+% <string> lfigdebugprint -
+% must be defined outside lfigdict since used in arbitrary places
+% /lfigdebugprint
+% { print
+% (; operand stack:\n) print
+% count copy
+% count 2 idiv
+% { ==
+% (\n) print
+% } repeat
+% (\n) print
+% } def
+
+/lfigdict 120 dict def
+lfigdict begin
+
+% error messages
+/dictfull (dictfull error: too many labels?) def
+/dictstackoverflow (dictstackoverflow error: labels nested too deeply?) def
+/execstackoverflow (execstackoverflow error: figure nested too deeply?) def
+/limitcheck (limitcheck error: figure nested too deeply or too large?) def
+/syntaxerror (syntaxerror error: syntax error in text of figure?) def
+/typecheck (typecheck error: syntax error in text of figure?) def
+/undefined (undefined error: unknown or misspelt label?) def
+/VMError (VMError error: run out of memory?) def
+
+% push pi onto stack: - lfigpi <num>
+/lfigpi 3.14159 def
+
+% arc directions
+/clockwise false def
+/anticlockwise true def
+
+% maximum of two numbers: <num> <num> lfigmax <num>
+/lfigmax { 2 copy gt { pop } { exch pop } ifelse } def
+
+% minimum of two numbers: <num> <num> lfigmin <num>
+/lfigmin { 2 copy lt { pop } { exch pop } ifelse } def
+
+% add two points: <point> <point> lfigpadd <point>
+/lfigpadd { exch 3 1 roll add 3 1 roll add exch } def
+
+% subtract first point from second: <point> <point> lfigpsub <point>
+/lfigpsub { 3 2 roll sub 3 1 roll exch sub exch } def
+
+% max two points: <point> <point> lfigpmax <point>
+/lfigpmax { exch 3 1 roll lfigmax 3 1 roll lfigmax exch } def
+
+% min two points: <point> <point> lfigpmin <point>
+/lfigpmin { exch 3 1 roll lfigmin 3 1 roll lfigmin exch } def
+
+% scalar multiplication: <point> <num> lfigpmul <point>
+/lfigpmul { dup 3 1 roll mul 3 1 roll mul exch } def
+
+% point at angle and distance: <point> <length> <angle> lfigatangle <point>
+/lfigatangle { 2 copy cos mul 3 1 roll sin mul lfigpadd } def
+
+% angle from one point to another: <point> <point> lfigangle <angle>
+/lfigangle { lfigpsub 2 copy 0 eq exch 0 eq and {pop} {exch atan} ifelse } def
+
+% distance between two points: <point> <point> lfigdistance <length>
+/lfigdistance { lfigpsub dup mul exch dup mul add sqrt } def
+
+% difference in x coords: <point> <point> lfigxdistance <length>
+/lfigxdistance { pop 3 1 roll pop sub } def
+
+%difference in y coords: <point> <point> lfigydistance <length>
+/lfigydistance { 3 1 roll pop sub exch pop } def
+
+% stroke a solid line: <length> <dashlength> lfigsolid -
+/lfigsolid
+{ pop pop [] 0 setdash stroke
+} def
+
+% stroke a lfigdashed line: <length> <dashlength> lfigdashed -
+/lfigdashed
+{ 2 copy div 2 le 1 index 0 le or
+ { exch pop 1 pt lfigmax [ exch dup ] 0 setdash }
+ { dup [ exch 4 2 roll 2 copy div
+ 1 sub 2 div ceiling dup 4 1 roll
+ 1 add mul sub exch div ] 0 setdash
+ } ifelse stroke
+} def
+
+% stroke a lfigcdashed line: <length> <dashlength> lfigcdashed -
+/lfigcdashed
+{ 2 copy le 1 index 0 le or
+ { exch pop 1 pt lfigmax [ exch dup ] dup 0 get 2 div setdash }
+ { dup [ 4 2 roll exch 2 copy exch div
+ 2 div ceiling div 1 index sub
+ ] exch 2 div setdash
+ } ifelse stroke
+} def
+
+% stroke a dotted line: <length> <dashlength> lfigdotted -
+/lfigdotted
+{ 2 copy le 1 index 0 le or
+ { exch pop 1 pt lfigmax [ exch 0 exch ] 0 setdash }
+ { 1 index exch div ceiling div
+ [ 0 3 2 roll ] 0 setdash
+ } ifelse stroke
+} def
+
+% stroke a noline line: <length> <dashlength> lfignoline -
+/lfignoline
+{ pop pop
+} def
+
+% painting (i.e. filling): - lfigwhite - (etc.)
+/lfignopaint { } def
+/lfignochange { fill } def
+/lfigdarkblue { 0.0 0.0 0.5 LoutSetRGBColor fill } def
+/lfigblue { 0.0 0.0 1.0 LoutSetRGBColor fill } def
+/lfiglightblue { 0.5 0.5 1.0 LoutSetRGBColor fill } def
+/lfigdarkgreen { 0.0 0.5 0.0 LoutSetRGBColor fill } def
+/lfiggreen { 0.0 1.0 0.0 LoutSetRGBColor fill } def
+/lfiglightgreen { 0.5 1.0 0.5 LoutSetRGBColor fill } def
+/lfigdarkred { 0.5 0.0 0.0 LoutSetRGBColor fill } def
+/lfigred { 1.0 0.0 0.0 LoutSetRGBColor fill } def
+/lfiglightred { 1.0 0.5 0.5 LoutSetRGBColor fill } def
+/lfigdarkcyan { 0.0 0.5 0.5 LoutSetRGBColor fill } def
+/lfigcyan { 0.0 1.0 1.0 LoutSetRGBColor fill } def
+/lfiglightcyan { 0.5 1.0 1.0 LoutSetRGBColor fill } def
+/lfigdarkmagenta { 0.5 0.0 0.5 LoutSetRGBColor fill } def
+/lfigmagenta { 1.0 0.0 1.0 LoutSetRGBColor fill } def
+/lfiglightmagenta { 1.0 0.5 1.0 LoutSetRGBColor fill } def
+/lfigdarkyellow { 0.5 0.5 0.0 LoutSetRGBColor fill } def
+/lfigyellow { 1.0 1.0 0.0 LoutSetRGBColor fill } def
+/lfiglightyellow { 1.0 1.0 0.5 LoutSetRGBColor fill } def
+/lfigdarkgray { 0.2 0.2 0.2 LoutSetRGBColor fill } def
+/lfiggray { 0.5 0.5 0.5 LoutSetRGBColor fill } def
+/lfiglightgray { 0.8 0.8 0.8 LoutSetRGBColor fill } def
+/lfigdarkgrey { 0.2 0.2 0.2 LoutSetRGBColor fill } def
+/lfiggrey { 0.5 0.5 0.5 LoutSetRGBColor fill } def
+/lfiglightgrey { 0.8 0.8 0.8 LoutSetRGBColor fill } def
+/lfigblack { 0.0 0.0 0.0 LoutSetRGBColor fill } def
+/lfigwhite { 1.0 1.0 1.0 LoutSetRGBColor fill } def
+
+% line caps (and joins, not currently used)
+/lfigbutt 0 def
+/lfiground 1 def
+/lfigprojecting 2 def
+/lfigmiter 0 def
+/lfigbevel 2 def
+
+% shape and labels of the @Box symbol
+/lfigbox
+{
+ 0 0 /SW lfigpointdef
+ xsize 0 /SE lfigpointdef
+ xsize ysize /NE lfigpointdef
+ 0 ysize /NW lfigpointdef
+ SE 0.5 lfigpmul /S lfigpointdef
+ NW 0.5 lfigpmul /W lfigpointdef
+ W SE lfigpadd /E lfigpointdef
+ S NW lfigpadd /N lfigpointdef
+ NE 0.5 lfigpmul /CTR lfigpointdef
+ [ CTR NE lfigpsub /lfigboxcircum cvx ] lfigcircumdef
+ SW SE NE NW SW
+} def
+
+% shape and labels of the @CurveBox symbol
+/lfigcurvebox
+{
+
+ xsize 0.5 mul ysize 0.5 mul /CTR lfigpointdef
+ xsize 0.5 mul 0 /S lfigpointdef
+ xsize ysize 0.5 mul /E lfigpointdef
+ xsize 0.5 mul ysize /N lfigpointdef
+ 0 ysize 0.5 mul /W lfigpointdef
+
+ xmark 0.293 mul xmark 0.293 mul /SW lfigpointdef
+ xsize xmark 0.293 mul sub xmark 0.293 mul /SE lfigpointdef
+ xsize xmark 0.293 mul sub ysize xmark 0.293 mul sub /NE lfigpointdef
+ xmark 0.293 mul ysize xmark 0.293 mul sub /NW lfigpointdef
+
+ [ xsize ysize 0.5 lfigpmul xmark /lfigcurveboxcircum cvx ] lfigcircumdef
+
+ xmark 0
+ xsize xmark sub 0
+ [ xsize xmark sub xmark ]
+ xsize xmark
+ xsize ysize xmark sub
+ [ xsize xmark sub ysize xmark sub ]
+ xsize xmark sub ysize
+ xmark ysize
+ [ xmark ysize xmark sub ]
+ 0 ysize xmark sub
+ 0 xmark
+ [ xmark xmark ]
+ xmark 0
+} def
+
+% shadow of the @ShadowBox symbol
+% its shape and labels are done, somewhat inaccurately, with lfigbox
+/lfigshadow
+{ xmark 2 mul 0 moveto xsize 0 lineto
+ xsize ysize xmark 2 mul sub lineto
+ xsize xmark sub ysize xmark 2 mul sub lineto
+ xsize xmark sub xmark lineto
+ xmark 2 mul xmark lineto closepath fill
+} def
+
+% shape and labels of the @Square symbol
+/lfigsquare
+{
+ xsize ysize 0.5 lfigpmul /CTR lfigpointdef
+ CTR xsize xsize ysize ysize lfigpmax 0.5 lfigpmul lfigpadd /NE lfigpointdef
+ CTR 0 0 CTR NE lfigdistance 135 lfigatangle lfigpadd /NW lfigpointdef
+ CTR 0 0 CTR NE lfigdistance 225 lfigatangle lfigpadd /SW lfigpointdef
+ CTR 0 0 CTR NE lfigdistance 315 lfigatangle lfigpadd /SE lfigpointdef
+ SW 0.5 lfigpmul SE 0.5 lfigpmul lfigpadd /S lfigpointdef
+ NW 0.5 lfigpmul NE 0.5 lfigpmul lfigpadd /N lfigpointdef
+ SW 0.5 lfigpmul NW 0.5 lfigpmul lfigpadd /W lfigpointdef
+ SE 0.5 lfigpmul NE 0.5 lfigpmul lfigpadd /E lfigpointdef
+ [ CTR NE lfigpsub /lfigboxcircum cvx ] lfigcircumdef
+ SW SE NE NW SW
+} def
+
+% shape and labels of the @Diamond symbol
+/lfigdiamond
+{
+ xsize 0 0.5 lfigpmul /S lfigpointdef
+ 0 ysize 0.5 lfigpmul /W lfigpointdef
+ S W lfigpadd /CTR lfigpointdef
+ CTR W lfigpadd /N lfigpointdef
+ CTR S lfigpadd /E lfigpointdef
+ [ xsize ysize 0.5 lfigpmul /lfigdiamondcircum cvx ] lfigcircumdef
+ S E N W S
+} def
+
+% shape and labels of the @Ellipse symbol
+/lfigellipse
+{
+ xsize 0 0.5 lfigpmul /S lfigpointdef
+ 0 ysize 0.5 lfigpmul /W lfigpointdef
+ S W lfigpadd /CTR lfigpointdef
+ CTR W lfigpadd /N lfigpointdef
+ CTR S lfigpadd /E lfigpointdef
+ CTR xsize 0 0.3536 lfigpmul lfigpadd 0 ysize 0.3536 lfigpmul lfigpadd /NE lfigpointdef
+ 0 ysize 0.3536 lfigpmul CTR xsize 0 0.3536 lfigpmul lfigpadd lfigpsub /SE lfigpointdef
+ xsize 0 0.3536 lfigpmul CTR lfigpsub 0 ysize 0.3536 lfigpmul lfigpadd /NW lfigpointdef
+ 0 ysize 0.3536 lfigpmul xsize 0 0.3536 lfigpmul CTR lfigpsub lfigpsub /SW lfigpointdef
+ [ xsize ysize 0.5 lfigpmul /lfigellipsecircum cvx ] lfigcircumdef
+ S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S
+} def
+
+% shape and labels of the @Circle symbol
+/lfigcircle
+{
+ xsize ysize 0.5 lfigpmul /CTR lfigpointdef
+ CTR xsize 0 ysize 0 lfigpmax 0.5 lfigpmul lfigpadd /E lfigpointdef
+ CTR 0 0 CTR E lfigdistance 45 lfigatangle lfigpadd /NE lfigpointdef
+ CTR 0 0 CTR E lfigdistance 90 lfigatangle lfigpadd /N lfigpointdef
+ CTR 0 0 CTR E lfigdistance 135 lfigatangle lfigpadd /NW lfigpointdef
+ CTR 0 0 CTR E lfigdistance 180 lfigatangle lfigpadd /W lfigpointdef
+ CTR 0 0 CTR E lfigdistance 225 lfigatangle lfigpadd /SW lfigpointdef
+ CTR 0 0 CTR E lfigdistance 270 lfigatangle lfigpadd /S lfigpointdef
+ CTR 0 0 CTR E lfigdistance 315 lfigatangle lfigpadd /SE lfigpointdef
+ [ S E lfigpsub /lfigellipsecircum cvx ] lfigcircumdef
+ S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S
+} def
+
+% shape and labels of the @HLine and @HArrow symbols
+/lfighline
+{
+ 0 ymark lfigprevious /FROM lfigpointdef
+ xsize ymark lfigprevious /TO lfigpointdef
+} def
+
+% shape and labels of the @VLine and @VArrow symbols
+/lfigvline
+{
+ xmark ysize lfigprevious /FROM lfigpointdef
+ xmark 0 lfigprevious /TO lfigpointdef
+} def
+
+% points of a polygon around base with given no of sides, vert init angle:
+% <sides> <angle> figpolygon <point> ... <point>
+/lfigpolygon
+{ xsize ysize 0.5 lfigpmul /CTR lfigpointdef
+ 90 sub CTR 2 copy lfigmax 5 3 roll
+ [ 4 copy pop /lfigpolycircum cvx ] lfigcircumdef
+ exch dup 360 exch div exch
+ 1 1 3 2 roll
+ { 4 string cvs (P) exch lfigconcat cvn
+ 6 copy pop pop lfigatangle 2 copy 10 2 roll
+ 3 2 roll lfigpointdef
+ dup 3 1 roll add exch
+ } for
+ pop lfigatangle
+} def
+
+% next array element: <array> <index> lfiggetnext <array> <index> <any> true
+% or <array> <index> false
+/lfiggetnext
+{ 2 copy exch length ge
+ { false }
+ { 2 copy get exch 1 add exch true } ifelse
+} def
+
+% check whether thing is number: <any> lfigisnumbertype <any> <bool>
+/lfigisnumbertype
+{ dup type dup
+ /integertype eq exch /realtype eq or
+} def
+
+% check whether thing is an array: <any> lfigisarraytype <any> <bool>
+/lfigisarraytype { dup type /arraytype eq } def
+
+% get next item: <array> <index> lfiggetnextitem <array> <index> 0
+% or <array> <index> <array> 1
+% or <array> <index> <point> 2
+/lfiggetnextitem
+{ lfiggetnext
+ { lfigisarraytype
+ { 1
+ }
+ { lfigisnumbertype
+ { 3 1 roll
+ lfiggetnext
+ { lfigisnumbertype
+ { 4 3 roll exch 2
+ }
+ { pop 3 2 roll pop 0
+ } ifelse
+ }
+ { 3 2 roll pop 0
+ } ifelse
+ }
+ { pop 0
+ } ifelse
+ } ifelse
+ }
+ { 0
+ } ifelse
+} def
+
+% set arc path: bool x1 y1 x2 y2 x0 y0 lfigsetarc <angle> <angle> <dist>
+% the path goes from x1 y1 to x2 y2 about centre x0 y0,
+% anticlockwise if bool is true else clockwise.
+% The orientations of backwards pointing and forwards pointing
+% arrowheads are returned in the two angles, and
+% the length of the arc is returned in <dist>.
+/lfigsetarc
+{
+ 20 dict begin
+ matrix currentmatrix 8 1 roll
+ 2 copy translate 2 copy 8 2 roll
+ 4 2 roll lfigpsub 6 2 roll lfigpsub
+ dup /y1 exch def dup mul /y1s exch def
+ dup /x1 exch def dup mul /x1s exch def
+ dup /y2 exch def dup mul /y2s exch def
+ dup /x2 exch def dup mul /x2s exch def
+
+ y1s y2s eq
+ { -1
+ }
+ { y1s x2s mul y2s x1s mul sub y1s y2s sub div
+ } ifelse
+ /da exch def
+
+ x1s x2s eq
+ { -1
+ }
+ { x1s y2s mul x2s y1s mul sub x1s x2s sub div
+ } ifelse
+ /db exch def
+
+ da 0 gt db 0 gt and
+ { /LMax da sqrt db sqrt lfigmax def
+ /scalex da sqrt LMax div def
+ /scaley db sqrt LMax div def
+ scalex scaley scale
+ 0 0 LMax
+ 0 0 x1 scalex mul y1 scaley mul lfigangle
+ 0 0 x2 scalex mul y2 scaley mul lfigangle
+ 2 copy eq { 360 add } if
+ 2 copy 8 2 roll
+ 5 index { arc } { arcn } ifelse
+ 2 index 1 index
+ { 90 sub } { 90 add } ifelse
+ dup sin scaley mul exch cos scalex mul atan
+ 2 index 2 index
+ { 90 add } { 90 sub } ifelse
+ dup sin scaley mul exch cos scalex mul atan
+ 5 2 roll % res1 res2 ang1 ang2 anticlockwise
+ { exch sub } { sub } ifelse
+ dup 0 le { 360 add } if lfigpi mul LMax mul 180 div
+ }
+ { 0 0 x1 y1 lfigdistance 0 0 x2 y2 lfigdistance eq
+ 0 0 x1 y1 lfigdistance 0 gt and
+ { 0 0
+ 0 0 x1 y1 lfigdistance
+ 0 0 x1 y1 lfigangle
+ 0 0 x2 y2 lfigangle
+ 2 copy eq { 360 add } if
+ 2 copy 8 2 roll
+ 5 index { arc } { arcn } ifelse
+ 2 index 1 index
+ { 90 sub } { 90 add } ifelse
+ 2 index 2 index
+ { 90 add } { 90 sub } ifelse
+ 5 2 roll % res1 res2 ang1 ang2 clockwise
+ { exch sub } { sub } ifelse
+ dup 0 le { 360 add } if lfigpi mul 0 0 x1 y1 lfigdistance mul 180 div
+ }
+ { x2 y2 lineto pop
+ x2 y2 x1 y1 lfigangle
+ x1 y1 x2 y2 lfigangle
+ x1 y1 x2 y2 lfigdistance
+ } ifelse
+ } ifelse
+ 4 -1 roll setmatrix
+ end
+} def
+
+% lfigsetcurve: set up a Bezier curve from x0 y0 to x3 y3
+% and return arrowhead angles and length of curve (actually 0)
+% x0 y0 x1 y1 x2 y2 x3 y3 lfigsetcurve <angle> <angle> <length>
+/lfigsetcurve
+{ 8 copy curveto pop pop
+ lfigangle
+ 5 1 roll
+ 4 2 roll lfigangle
+ exch
+ 0
+} def
+
+% lfigpaintpath: paint a path of the given shape
+% /paint [ shape ] lfigpaintpath -
+/lfigpaintpath
+{
+ 10 dict begin
+ 0 newpath
+ /prevseen false def
+ /curveseen false def
+ { lfiggetnextitem
+ dup 0 eq { pop exit }
+ { 1 eq
+ { /curveseen true def
+ /curve exch def
+ curve length 0 eq { /curveseen false def } if
+ }
+ { /ycurr exch def
+ /xcurr exch def
+ prevseen
+ { curveseen
+ { curve length 4 eq
+ { xprev yprev
+ curve 0 get curve 1 get
+ curve 2 get curve 3 get
+ xcurr ycurr
+ lfigsetcurve pop pop pop
+ }
+ { xprev yprev xcurr ycurr
+ curve length 1 ge { curve 0 get } { 0 } ifelse
+ curve length 2 ge { curve 1 get } { 0 } ifelse
+ curve length 3 ge { curve 2 get } { true } ifelse
+ 7 1 roll
+ lfigsetarc pop pop pop
+ } ifelse
+ }
+ { xcurr ycurr lineto
+ } ifelse
+ }
+ { xcurr ycurr moveto
+ } ifelse
+ /xprev xcurr def
+ /yprev ycurr def
+ /prevseen true def
+ /curveseen false def
+ } ifelse
+ } ifelse
+ } loop pop pop cvx exec
+ end
+} def
+
+% stroke a path of the given shape in the given linestyle and dash length.
+% Return the origin and angle of the backward and forward arrow heads.
+% dashlength /linestyle [shape] lfigdopath [<point> <angle>] [<point> <angle>]
+/lfigdopath
+{
+ 10 dict begin
+ 0
+ /prevseen false def
+ /curveseen false def
+ /backarrow [] def
+ /fwdarrow [] def
+ {
+ lfiggetnextitem
+ dup 0 eq { pop exit }
+ {
+ 1 eq
+ { /curveseen true def
+ /curve exch def
+ curve length 0 eq { /prevseen false def } if
+ }
+ { /ycurr exch def
+ /xcurr exch def
+ prevseen
+ { newpath xprev yprev moveto
+ curveseen
+ { curve length 4 eq
+ { xprev yprev
+ curve 0 get curve 1 get
+ curve 2 get curve 3 get
+ xcurr ycurr lfigsetcurve
+ }
+ { xprev yprev xcurr ycurr
+ curve length 1 ge { curve 0 get } { 0 } ifelse
+ curve length 2 ge { curve 1 get } { 0 } ifelse
+ curve length 3 ge { curve 2 get } { true } ifelse
+ 7 1 roll
+ lfigsetarc
+ } ifelse
+ }
+ { xcurr ycurr lineto
+ xcurr ycurr xprev yprev lfigangle dup 180 sub
+ xprev yprev xcurr ycurr lfigdistance
+ } ifelse
+ 6 index 6 index cvx exec
+ [ xprev yprev 5 -1 roll ]
+ backarrow length 0 eq
+ { /backarrow exch def }
+ { pop } ifelse
+ [ xcurr ycurr 4 -1 roll ] /fwdarrow exch def
+ } if
+ /xprev xcurr def
+ /yprev ycurr def
+ /prevseen true def
+ /curveseen false def
+ } ifelse
+ } ifelse
+ } loop
+ pop pop pop pop
+ backarrow length 0 eq { [ 0 0 0 ] } { backarrow } ifelse
+ fwdarrow length 0 eq { [ 0 0 0 ] } { fwdarrow } ifelse
+ end
+} def
+
+% lfigdoarrow: draw an arrow head of given form
+% dashlength /lstyle /pstyle hfrac height width [ <point> <angle> ] lfigdoarrow -
+/lfigdoarrow
+{ matrix currentmatrix 8 1 roll
+ dup 0 get 1 index 1 get translate
+ 2 get rotate
+ [ 2 index neg 2 index 0 0
+ 3 index 3 index neg
+ 1 index 10 index mul 0
+ 7 index 7 index ]
+ 4 1 roll pop pop pop
+ dup 3 1 roll
+ gsave lfigpaintpath grestore lfigdopath pop pop
+ setmatrix
+} def
+
+% arrow head styles
+/lfigopen 0.0 def
+/lfighalfopen 0.5 def
+/lfigclosed 1.0 def
+
+% stroke no arrows, forward, back, and both
+/lfignoarrow { pop pop pop pop pop pop pop pop } def
+/lfigforward { 7 -1 roll lfigdoarrow pop } def
+/lfigback { 8 -2 roll pop lfigdoarrow } def
+/lfigboth { 8 -1 roll 7 copy lfigdoarrow pop 7 -1 roll lfigdoarrow } def
+
+% lfigprevious: return previous point on path
+/lfigprevious
+{ lfigisnumbertype
+ { 2 copy }
+ { lfigisarraytype
+ { 2 index 2 index }
+ { 0 0 }
+ ifelse
+ } ifelse
+} def
+
+% label a point in 2nd top dictionary: <point> /name lfigpointdef -
+/lfigpointdef
+{
+ % (Entering lfigpointdef) lfigdebugprint
+ [ 4 2 roll transform
+ /itransform cvx ] cvx
+ currentdict end
+ 3 1 roll
+ % currentdict length currentdict maxlength lt
+ % { def }
+ % { exec moveto (too many labels) show stop }
+ % ifelse
+ def
+ begin
+ % (Leaving lfigpointdef) lfigdebugprint
+} def
+
+% promote labels from second top to third top dictionary
+% <string> lfigpromotelabels -
+/lfigpromotelabels
+{
+ % (Entering lfigpromotelabels) lfigdebugprint
+ currentdict end exch currentdict end
+ { exch 20 string cvs 2 index
+ (@) lfigconcat exch lfigconcat cvn exch def
+ } forall pop begin
+ % (Leaving lfigpromotelabels) lfigdebugprint
+} def
+
+% show labels (except CIRCUM): - lfigshowlabels -
+/lfigshowlabels
+{
+ % (Entering lfigshowlabels) lfigdebugprint
+ currentdict end
+ currentdict
+ { 1 index 20 string cvs (CIRCUM) search % if CIRCUM in key
+ { pop pop pop pop pop }
+ { pop cvx exec 2 copy
+ newpath 1.5 pt 0 360 arc
+ 0 setgray fill
+ /Times-Roman findfont 8 pt scalefont setfont
+ moveto 0.2 cm 0.1 cm rmoveto 20 string cvs show
+ }
+ ifelse
+ } forall
+ begin
+ % (Leaving lfigshowlabels) lfigdebugprint
+} def
+
+% fix an angle to 0 <= res < 360: <angle> lfigfixangle <angle>
+/lfigfixangle
+{
+ % (Entering lfigfixangle) lfigdebugprint
+ { dup 0 ge { exit } if
+ 360 add
+ } loop
+ { dup 360 lt { exit } if
+ 360 sub
+ } loop
+ % (Leaving lfigfixangle) lfigdebugprint
+} def
+
+% find point on circumference of box: alpha a b lfigboxcircum x y
+/lfigboxcircum
+{
+ % (Entering lfigboxcircum) lfigdebugprint
+ 4 dict begin
+ /b exch def
+ /a exch def
+ lfigfixangle /alpha exch def
+ 0 0 a b lfigangle /theta exch def
+
+ % if alpha <= theta, return (a, a*tan(alpha))
+ alpha theta le
+ { a a alpha sin mul alpha cos div }
+ {
+ % else if alpha <= 180 - theta, return (b*cot(alpha), b)
+ alpha 180 theta sub le
+ { b alpha cos mul alpha sin div b }
+ {
+ % else if alpha <= 180 + theta, return (-a, -a*tan(alpha))
+ alpha 180 theta add le
+ { a neg a neg alpha sin mul alpha cos div }
+ {
+ % else if alpha <= 360 - theta, return (-b*cot(alpha), -b)
+ alpha 360 theta sub le
+ { b neg alpha cos mul alpha sin div b neg }
+ {
+ % else 360 - theta <= alpha, return (a, a*tan(alpha))
+ a a alpha sin mul alpha cos div
+ } ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+ end
+ % (Leaving lfigboxcircum) lfigdebugprint
+} def
+
+% find quadratic roots (assume a != 0): a b c lfigqroots x1 x2 2
+% or x2 1
+% or 0
+/lfigqroots
+{
+ 4 dict begin
+ /c exch def
+ /b exch def
+ /a exch def
+ /disc b b mul 4 a c mul mul sub def
+ disc 0 lt
+ { 0
+ }
+ { disc 0 eq
+ { b neg 2 a mul div
+ 1
+ }
+ { b neg disc sqrt add 2 a mul div
+ b neg disc sqrt sub 2 a mul div
+ 2
+ }
+ ifelse
+ }
+ ifelse
+ end
+} def
+
+% work our which quadrant: <angle> lfigquadrant <0-3>
+/lfigquadrant
+{ dup 90 lt
+ { pop 0
+ }
+ { dup 180 lt
+ { pop 1
+ }
+ { 270 lt
+ { 2
+ }
+ { 3
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+
+% find curvebox circum, assuming upper right quadrant: alpha a b xmk lfigcb x y
+/lfigcb
+{
+ 6 dict begin
+ /xmk exch def
+ /b exch def
+ /a exch def
+ /alpha exch def
+ /theta1 0 0 a b xmk sub lfigangle def
+ /theta2 0 0 a xmk sub b lfigangle def
+ alpha theta1 le
+ { % if alpha <= theta1, return (a, a*tan(alpha))
+ a a alpha sin mul alpha cos div
+ }
+ { alpha theta2 ge
+ { % else if alpha > theta2, return (b*cot(alpha), b)
+ b alpha cos mul alpha sin div b
+ }
+ {
+ % else, return the intersection of line and circle
+ a xmk sub b xmk sub xmk 0 0 alpha lfigcircleintersect
+ dup 0 eq
+ { % should never happen, just return any reasonable point
+ pop
+ a b 0.5 lfigpmul
+ }
+ { 1 eq
+ { % should never happen, just return the point on top of stack
+ }
+ { % the usual case, two points on stack, return the larger
+ lfigpmax
+ } ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+ end
+} def
+
+% find point on circumference of curvebox: alpha a b xmk lfigcurveboxcircum x y
+/lfigcurveboxcircum
+{
+ % (Entering lfigcurveboxcircum) lfigdebugprint
+ 5 dict begin
+ /xmk exch def
+ /b exch def
+ /a exch def
+ lfigfixangle /alpha exch def
+
+ % work out which quadrant we are in, and reflect accordingly
+ /quad alpha lfigquadrant def
+ quad 0 eq
+ { alpha a b xmk lfigcb
+ }
+ { quad 1 eq
+ { 180 alpha sub a b xmk lfigcb exch neg exch
+ }
+ { quad 2 eq
+ { alpha 180 sub a b xmk lfigcb neg exch neg exch
+ }
+ { 360 alpha sub a b xmk lfigcb neg
+ } ifelse
+ } ifelse
+ } ifelse
+ end
+ % (Leaving lfigcurveboxcircum) lfigdebugprint
+} def
+
+% find point on circumference of diamond: alpha a b lfigdiamondcircum x y
+/lfigdiamondcircum
+{
+ % (Entering lfigdiamondcircum) lfigdebugprint
+ 4 dict begin
+ /b exch def
+ /a exch def
+ lfigfixangle /alpha exch def
+ b alpha cos abs mul a alpha sin abs mul add /denom exch def
+ a b mul alpha cos mul denom div
+ a b mul alpha sin mul denom div
+ end
+ % (Leaving lfigdiamondcircum) lfigdebugprint
+} def
+
+% find point on circumference of ellipse: alpha a b lfigellipsecircum x y
+/lfigellipsecircum
+{
+ % (Entering lfigellipsecircum) lfigdebugprint
+ 4 dict begin
+ /b exch def
+ /a exch def
+ lfigfixangle /alpha exch def
+ b alpha cos mul dup mul a alpha sin mul dup mul add sqrt /denom exch def
+ a b mul alpha cos mul denom div
+ a b mul alpha sin mul denom div
+ end
+ % (Leaving lfigellipsecircum) lfigdebugprint
+} def
+
+% find point of intersection of two lines each defined by two points
+% x1 y1 x2 y2 x3 y3 x4 y4 lfiglineintersect x y
+/lfiglineintersect
+{
+ % (Entering lfiglineintersect) lfigdebugprint
+ 13 dict begin
+ /y4 exch def
+ /x4 exch def
+ /y3 exch def
+ /x3 exch def
+ /y2 exch def
+ /x2 exch def
+ /y1 exch def
+ /x1 exch def
+ x2 x1 sub /x21 exch def
+ x4 x3 sub /x43 exch def
+ y2 y1 sub /y21 exch def
+ y4 y3 sub /y43 exch def
+ y21 x43 mul y43 x21 mul sub /det exch def
+
+ % calculate x
+ y21 x43 mul x1 mul
+ y43 x21 mul x3 mul sub
+ y3 y1 sub x21 mul x43 mul add
+ det div
+
+ % calculate y
+ x21 y43 mul y1 mul
+ x43 y21 mul y3 mul sub
+ x3 x1 sub y21 mul y43 mul add
+ det neg div
+
+ end
+ % (Leaving lfiglineintersect) lfigdebugprint
+} def
+
+% find point on circumference of polygon
+% alpha radius num theta lfigpolycircum x y
+/lfigpolycircum
+{
+ % (Entering lfigpolycircum) lfigdebugprint
+ 13 dict begin
+ /theta exch def
+ /num exch def
+ /radius exch def
+ /alpha exch def
+
+ % calculate delta, the angle from theta to alpha
+ alpha theta sub lfigfixangle
+
+ % calculate the angle which is the multiple of 360/num closest to delta
+ 360 num div div truncate 360 num div mul theta add /anglea exch def
+
+ % calculate the next multiple of 360/num after anglea
+ anglea 360 num div add /angleb exch def
+
+ % intersect the line through these two points with the alpha line
+ anglea cos anglea sin angleb cos angleb sin
+ 0 0 alpha cos 2 mul alpha sin 2 mul
+ lfiglineintersect radius lfigpmul
+
+ end
+ % (Leaving lfigpolycircum) lfigdebugprint
+} def
+
+% find point of intersection of a point and a circle
+% x0 y0 r x1 y1 theta lfigcircleintersect xa ya xb yb 2
+% or xb yb 1
+% or 0
+/lfigcircleintersect
+{
+ % (Entering lfigcircleintersect) lfigdebugprint
+ 15 dict begin
+ /theta exch def
+ /y1 exch def
+ /x1 exch def
+ /r exch def
+ /y0 exch def
+ /x0 exch def
+
+ % if sin(theta) = 0 then line is horizontal and y must be y1
+ theta sin abs 0.00001 lt
+ {
+ /a 1 def
+ /b -2 x0 mul def
+ /c x0 dup mul y1 y0 sub dup mul add r dup mul sub def
+ a b c lfigqroots dup
+ 0 eq
+ { pop
+ 0
+ }
+ { 1 eq
+ { y1 1
+ }
+ { y1 exch y1 2
+ } ifelse
+ } ifelse
+ }
+ {
+ /ct theta cos theta sin div def
+ /a ct ct mul 1 add def
+ /b ct x1 x0 sub mul y1 add y0 sub 2 mul def
+ /c x1 x0 sub dup mul y1 y0 sub dup mul add r dup mul sub def
+ a b c lfigqroots dup
+ 0 eq
+ { pop
+ 0
+ }
+ { 1 eq
+ { y1 add /yb exch def
+ yb y1 sub ct mul x1 add /xb exch def
+ xb yb 1
+ }
+ { y1 add /ya exch def
+ ya y1 sub ct mul x1 add /xa exch def
+ y1 add /yb exch def
+ yb y1 sub ct mul x1 add /xb exch def
+ xa ya xb yb 2
+ } ifelse
+ } ifelse
+ } ifelse
+ end
+ % (Leaving lfigcircleintersect) lfigdebugprint
+} def
+
+% add CIRCUM operator with this body: <array> lfigcircumdef -
+/lfigcircumdef
+{ % (Entering lfigcircumdef) lfigdebugprint
+ /CIRCUM exch cvx
+ currentdict end
+ 3 1 roll
+ % currentdict length currentdict maxlength lt
+ % { def }
+ % { exec moveto (too many labels) show stop }
+ % ifelse
+ def
+ begin
+ % (Leaving lfigcircumdef) lfigdebugprint
+} def
+
+end
+%%EndResource
+
+%%BeginResource: procset LoutBasicSetup
+% @PrependGraphic file /home/jeff/lout.lib/include/bsf.lpg
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% PostScript @SysPrependGraphic file for @BasicSetup %
+% %
+% This file has been placed in the public domain by its author, %
+% Jeffrey H. Kingston %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% width height linethickness louteuro -
+% draw a Euro symbol of this width and height with this line thickness
+/louteuro {
+ 20 dict begin
+ /eurothick exch def
+ /euroheight exch def
+ /eurowidth exch def
+ /eurostrokewidth euroheight 0.8 mul def
+ /eurostep eurothick 60 cos mul 60 sin div def
+ /eurotheta 40 def
+
+ % llx lly width thickness louteurobox -
+ % draw angled box starting at (llx, lly) with given width and thickness
+ /louteurobox
+ {
+ /euroboxthick exch def
+ /euroboxwidth exch def
+ newpath moveto euroboxwidth 0 rlineto
+ eurostep euroboxthick rlineto
+ euroboxwidth neg 0 rlineto closepath fill
+ } def
+
+ % lower cross stroke
+ 0 euroheight 2 div eurothick 1.5 mul sub
+ eurostrokewidth eurothick louteurobox
+
+ % upper cross stroke
+ 0 euroheight 2 div eurothick 0.5 mul add
+ eurostrokewidth eurostep 2 mul add eurothick louteurobox
+
+ % circular part
+ /eurohctr eurowidth euroheight 2 div eurotheta cos mul sub def
+ /eurovctr euroheight 2 div def
+ newpath
+ eurohctr eurovctr eurovctr eurotheta 350 eurotheta sub arc
+ eurohctr eurovctr eurovctr eurothick sub 365 eurotheta sub eurotheta arcn
+ closepath fill
+ end
+} def
+
+% path for @FullWidthRule symbol
+/LoutRule
+{ 0 0 moveto xsize 0 lineto
+} def
+
+% path for @Box symbol
+/LoutBox
+{ 0 0 moveto xsize 0 lineto
+ xsize ysize lineto 0 ysize lineto
+ closepath
+} def
+
+% path for @CurveBox symbol
+/LoutCurveBox
+{ xmark 0 moveto
+ xsize xmark sub xmark xmark 270 360 arc
+ xsize xmark sub ysize xmark sub xmark 0 90 arc
+ xmark ysize xmark sub xmark 90 180 arc
+ xmark xmark xmark 180 270 arc
+ closepath
+} def
+
+% path for @ShadowBox symbol
+/LoutShadowBox
+{ xmark 2 mul 0 moveto xsize 0 lineto
+ xsize ysize xmark 2 mul sub lineto
+ xsize xmark sub ysize xmark 2 mul sub lineto
+ xsize xmark sub xmark lineto
+ xmark 2 mul xmark lineto
+ closepath
+} def
+
+% set up dictionary containing margin note data: parity LoutMargSet -
+/LoutMargSet
+{ /LoutMargDict 12 dict def
+ LoutMargDict begin
+ /parity exch def
+ /matr matrix currentmatrix def
+ /rightx xsize def
+ /lefty ysize def % highest allowable point for top of next left note
+ /righty ysize def % highest allowable point for top of next right note
+ /max { 2 copy gt { pop } { exch pop } ifelse } def
+ /min { 2 copy lt { pop } { exch pop } ifelse } def
+ end
+} def
+
+%translate coordinate system for marginal notes: type LoutMargShift -
+% where type 0 is left margin, 1 is right margin, 2 is outer, 3 is inner
+/LoutMargShift
+{ LoutMargDict begin
+
+ % y coordinate of top of note, in margin coords, before vertical adjust
+ 0 ysize transform matr itransform exch pop
+
+ % decide whether left or right margin based on type and parity
+ exch [ 0 1 parity 1 parity sub ] exch get 0 eq
+ {
+ % left margin: adjust top of note downwards if overlaps previous note
+ lefty min
+
+ % bottom of note is new lefty position and also translate position
+ ysize sub dup /lefty exch def
+
+ % want right edge of note at coordinate zero
+ xsize neg exch
+ }
+ {
+ % right margin: adjust top of note downwards if overlaps previous note
+ righty min
+
+ % bottom of note is new righty position and also translate position
+ ysize sub dup /righty exch def
+
+ % want left edge of note at coordinate rightx
+ rightx exch
+ } ifelse
+
+ % stack now contains coord of bottom left corner in margin coordinates
+ matr setmatrix translate
+ end
+} def
+
+% create LoutPageDict with left, right, foot, top for @Place symbol users
+/LoutPageSet
+{
+ /LoutPageDict 5 dict def
+ LoutPageDict begin
+ /matr matrix currentmatrix def
+ /left 0 def
+ /right xsize def
+ /foot 0 def
+ /top ysize def
+ end
+
+} def
+
+%%EndResource
+
+%%EndProlog
+
+%%BeginSetup
+%%BeginResource: encoding vec2
+/vec2 [
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright
+/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
+/zero /one /two /three /four /five /six /seven
+/eight /nine /colon /semicolon /less /equal /greater /question
+/at /A /B /C /D /E /F /G
+/H /I /J /K /L /M /N /O
+/P /Q /R /S /T /U /V /W
+/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
+/quoteleft /a /b /c /d /e /f /g
+/h /i /j /k /l /m /n /o
+/p /q /r /s /t /u /v /w
+/x /y /z /braceleft /bar /braceright /asciitilde /.notdef
+/quotesinglbase /quotedblbase /ellipsis /OE /oe /quotedblleft /quotedblright /fi
+/fl /endash /emdash /bullet /dagger /daggerdbl /florin /fraction
+/dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent
+/dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek /caron
+/space /exclamdown /cent /sterling /currency /yen /brokenbar /section
+/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron
+/degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered
+/cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown
+/Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
+/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis
+/Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply
+/Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls
+/agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla
+/egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
+/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide
+/oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis
+] def
+%%EndResource
+
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+%%EndSetup
+
+%%Page: i 1
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Helvetica
+%%+ font Symbol
+%%+ font Helvetica-Oblique
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+%%IncludeResource: font Symbol
+/fnt4 { /Symbol LoutFont } def
+%%IncludeResource: font Helvetica-Oblique
+/Helvetica-Obliquefnt3 vec2 /Helvetica-Oblique LoutRecode
+/fnt3 { /Helvetica-Obliquefnt3 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+gsave
+1417 -15423 translate
+0.0 0.0 0.0 LoutSetRGBColor
+9066 14006 0 14006 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+600 fnt2 1355 12125(An)m 2215(Exper)s -24(t')k 30(s)k
+4518(Guide)s 6258(to)s 6902(the)s 3956 10685(Lout)m 616 9245(Document)m
+3500(F)s 18(or)k -15(matting)k 6490(System)s 240 fnt2
+3544 6059(Jeffre)m 4(y)k 4321(H.)s 4606(Kingston)s 3883 4395(V)m 19(ersion)k
+4726(3.40)s 3959 4107(J)m 4(une)k 3(,)k 4583(2013)s
+240 fnt4 0 342(\343)m 240 fnt3 241 340(Cop)m 7(yr)k -3(ight)k
+1345(1991,)s 1991(2008,)s 2638(Jeffre)s 4(y)k 3438(H.)s
+3726(Kingston,)s 4771(School)s 5587(of)s 5882(Inf)s 7(or)k -6(mation)k
+7143(T)s 28(echnologies)k 3(,)k 8649(The)s 0 52(Univ)m 6(ersity)k
+1134(of)s 1432(Sydne)s 4(y)k 2317(2006,)s 2966(A)s 7(ustr)k 2(alia.)k
+
+grestore
+gsave
+1417 -15423 translate
+0.0 0.0 0.0 LoutSetRGBColor 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: ii 2
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+gsave
+1417 -15423 translate
+0.0 0.0 0.0 LoutSetRGBColor
+9066 14006 0 14006 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+480 fnt5 0 12955(Pr)m 8(eface)k
+[ /Dest /LOUTpreface /DEST pdfmark
+240 fnt1 540 12095(This)m
+1016(manual)s 1775(is)s 1984(addressed)s 2985(to)s 3224(those)s
+3784(who)s 4250(wish)s 4759(to)s 4997(become)s 5797(e)s 3(xpert)k
+6451(users)s 6992(of)s 7263(the)s 7611(Lout)s 8122(document)s
+0 11807(formatting)m 1092(system.)s 1952(An)s 2334(e)s 3(xpert)k
+3020(user)s 3510(is)s 3752(someone)s 4690(who)s 5188(understands)s
+6414(the)s 6794(principles)s 7819(of)s 8122(document)s 0 11519(formatting)m
+1083(that)s 1524(Lout)s 2059(embodies,)s 3105(and)s 3532(is)s
+3765(able)s 4242(to)s 4503(apply)s 5112(them,)s 5720(for)s
+6081(e)s 3(xample)k 6966(to)s 7228(design)s 7933(a)s
+8122(document)s 0 11231(format)m 690(or)s 943(a)s 1103(special-purpose)s
+2653(package.)s 3595(In)s 3845(contrast,)s 4701(a)s 4861(non-e)s 3(xpert)k
+5948(user)s 6400(is)s 6604(someone)s 7505(who)s 7965(simply)s
+8663(uses)s 0 10943(Lout)m 512(to)s 751(format)s 1447(documents.)s
+480 10569(Chapter)m 1295(1)s 1447(e)s 3(xplains)k 2290(these)s
+2834(principles,)s 3881(and)s 4282(it)s 4472(should)s 5166(be)s
+5446(read)s 5912(carefully)s 6812(and)s 7213(in)s 7454(sequence.)s
+8492(Chap-)s 0 10281(ters)m 412(2)s 604(and)s 1025(3)s
+1207(are)s 1571(for)s 1927(reference;)s 2943(respecti)s 6(v)k 3(ely)k 15(,)k
+4198(the)s 3(y)k 4678(contain)s 5457(descriptions)s 6680(of)s
+6969(the)s 7334(detailed)s 8166(operation)s 0 9993(of)m 277(Lout')s 13(s)k
+945(major)s 1568(components,)s 2838(and)s 3248(a)s 3420(complete)s
+4359(description)s 5484(of)s 5761(each)s 6262(prede\207ned)s 7336(symbol.)s
+8211(The)s 8646(\207nal)s 0 9705(chapter)m 763(presents)s 1597(a)s
+1763(collection)s 2762(of)s 3033(adv)s 6(anced)k 3989(e)s 3(xamples.)k
+480 9331(This)m 946(manual)s 1695(presents)s 2518(V)s 26(ersion)k
+3296(3)s 3449(of)s 3710(Basser)s 4396(Lout,)s 4945(publicly)s
+5773(released)s 6602(in)s 6835(September)s 7906(1994)s 8430([)s
+
+[ /Rect [8501 9331 8615 9493] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTkingston1995lout_program /ANN pdfmark
+8501(4)s 8615(])s 8722(and)s 0 9043(de)m 6(v)k 3(eloped)k
+1041(continuously)s 2341(since)s 2897(then.)s 3482(This)s 3966(manual)s
+4734(w)s 2(as)k 5164(rendered)s 6067(into)s 6500(PostScript)s
+
+[ /Dest /LOUT19_4637_preface_1 /DEST pdfmark
+7551(by)s 7854(V)s 26(ersion)k 8651(3.40)s 0 8755(of)m
+271(the)s 619(Basser)s 1316(Lout)s 1828(interpreter)s 9(,)k
+2919(using)s 3491(the)s 3839(symbols)s 4688(described)s 5662(in)s
+5905(the)s 6253(User')s 13(s)k 6914(Guide)s 7555([)s
+
+[ /Rect [7626 8752 7732 8920] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTkingston1995lout_user /ANN pdfmark
+7626(5)s 7732(].)s 240 fnt5 0 8250(Ackno)m 2(wledgment.)k
+240 fnt1 1986 8251(V)m 26(ersion)k 2811(3)s 3012(has)s
+3419(bene\207ted)s 4391(from)s 4953(hundreds)s 5919(of)s 6227(comments)s
+7298(recei)s 6(v)k 3(ed)k 8193(since)s 8778(the)s
+0 7963(release)m 726(of)s 1006(V)s 26(ersion)k 1803(1)s
+1967(in)s 2219(October)s 3057(1991.)s 3710(Not)s 4138(e)s 6(v)k 3(ery)k
+4723(suggestion)s 5813(could)s 6411(be)s 6702(follo)s 6(wed,)k
+7662(b)s 4(ut)k 8033(man)s 3(y)k 8625(ha)s 4(v)k 3(e)k
+0 7675(been,)m 559(and)s 963(the)s 1311(encouragement)s 2832(w)s 2(as)k
+3253(greatly)s 3970(appreciated.)s
+grestore
+gsave
+1417 -15423 translate
+0.0 0.0 0.0 LoutSetRGBColor 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: iii 3
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+gsave
+1417 -15423 translate
+0.0 0.0 0.0 LoutSetRGBColor
+9066 14006 0 14006 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+480 fnt5 0 12955(Contents)m
+[ /Dest /LOUT20_462_all_1 /DEST pdfmark
+
+[ /Rect [0 11893 8346 12147] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTpreface /ANN pdfmark
+240 fnt5 0 11982(Pr)m 4(eface)k
+240 fnt1 1018 11983(..)m 1362(..)s 1706(..)s 2050(..)s
+2394(..)s 2738(..)s 3082(..)s 3426(..)s 3770(..)s
+4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s
+5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s
+7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8940 11983 9066 12146] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTpreface /ANN pdfmark
+8940(ii)s
+[ /Rect [0 11265 8346 11519] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTprinciples /ANN pdfmark
+240 fnt5
+0 11354(Chapter)m 908(1)s 240 fnt1 1015 11355(.)m 240 fnt5
+1179 11354(Principles)m 240 fnt1 2738 11355(..)m 3082(..)s 3426(..)s
+3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s
+5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s
+7210(..)s 7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8971 11355 9066 11517] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTprinciples /ANN pdfmark
+8971(1)s
+
+[ /Rect [720 10920 8346 11173] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTobjects /ANN pdfmark
+720 11010(1.1.)m 1184(Objects)s 2394(..)s 2738(..)s 3082(..)s
+3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s
+5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
+6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
+
+[ /Rect [8971 11010 9066 11172] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTobjects /ANN pdfmark
+8971(1)s
+[ /Rect [720 10575 8346 10828] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTdefinitions /ANN pdfmark
+720 10665(1.2.)m 1184(De\207nitions)s 2738(..)s 3082(..)s
+3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s
+5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
+6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
+
+[ /Rect [8952 10665 9066 10827] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTdefinitions /ANN pdfmark
+8952(4)s
+[ /Rect [720 10230 8346 10483] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTcross /ANN pdfmark
+720 10320(1.3.)m 1184(Cross)s 1780(references)s 3082(..)s
+3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s
+5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
+6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
+
+[ /Rect [8959 10317 9066 10482] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTcross /ANN pdfmark
+8959(8)s
+[ /Rect [720 9885 8346 10138] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTgalleys /ANN pdfmark
+720 9975(1.4.)m 1184(Galle)s 3(ys)k 2394(..)s
+2738(..)s 3082(..)s 3426(..)s 3770(..)s 4114(..)s
+4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s
+6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s
+7898(..)s 8242(..)s
+[ /Rect [8955 9970 9066 10137] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTgalleys /ANN pdfmark
+8955(9)s
+[ /Rect [0 9257 8346 9511] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTdetails /ANN pdfmark
+240 fnt5 0 9346(Chapter)m
+908(2)s 240 fnt1 1023 9347(.)m 240 fnt5 1187 9346(Details)m
+240 fnt1 2394 9347(..)m 2738(..)s 3082(..)s 3426(..)s
+3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s
+5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s
+7210(..)s 7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8832 9347 9066 9509] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTdetails /ANN pdfmark
+8832(14)s
+
+[ /Rect [720 8912 8346 9165] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTlexical /ANN pdfmark
+720 9002(2.1.)m 1184(Le)s 3(xical)k 1952(structure)s 2843(\(w)s 2(ords,)k
+3612(spaces,)s 4343(symbols\))s 5269(and)s 5673(macros)s 6866(..)s
+7210(..)s 7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8832 9002 9066 9164] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTlexical /ANN pdfmark
+8832(14)s
+
+[ /Rect [720 8567 8346 8821] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTnamed /ANN pdfmark
+720 8657(2.2.)m 1184(Named)s 1933(parameters)s 3426(..)s 3770(..)s
+4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s
+5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s
+7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8833 8654 9066 8821] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTnamed /ANN pdfmark
+8833(16)s
+[ /Rect [720 8222 8346 8475] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTvisibility /ANN pdfmark
+720 8312(2.3.)m
+1184(Nested)s 1906(de\207nitions,)s 3023(body)s 3557(parameters,)s 4711(e)s 3(xtend,)k
+5453(import,)s 6197(and)s 6601(e)s 3(xport)k 7554(..)s
+7898(..)s 8242(..)s
+[ /Rect [8839 8309 9066 8474] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTvisibility /ANN pdfmark
+8839(18)s
+[ /Rect [720 7877 8346 8130] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTfilters /ANN pdfmark
+720 7967(2.4.)m 1184(Filtered)s
+1984(right)s 2495(and)s 2899(body)s 3433(parameters)s 4802(..)s
+5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
+6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
+
+[ /Rect [8851 7967 9066 8129] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTfilters /ANN pdfmark
+8851(21)s
+[ /Rect [720 7532 8346 7787] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTprecedence /ANN pdfmark
+720 7622(2.5.)m 1184(Precedence)s 2328(and)s 2732(associati)s 6(vity)k
+3974(of)s 4245(symbols)s 5490(..)s 5834(..)s 6178(..)s
+6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
+8242(..)s
+[ /Rect [8842 7619 9066 7784] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTprecedence /ANN pdfmark
+8842(23)s
+[ /Rect [720 7187 8346 7441] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTsize /ANN pdfmark
+720 7277(2.6.)m 1184(The)s 1612(style)s
+2119(and)s 2523(size)s 2950(of)s 3221(objects)s 4458(..)s
+4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s
+6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
+8242(..)s
+[ /Rect [8832 7277 9066 7439] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTsize /ANN pdfmark
+8832(24)s
+[ /Rect [720 6842 8346 7095] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTtargets /ANN pdfmark
+720 6932(2.7.)m 1184(Galle)s 3(ys)k
+1962(and)s 2366(tar)s 4(gets)k 3426(..)s 3770(..)s
+4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s
+5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s
+7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8838 6931 9066 7094] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTtargets /ANN pdfmark
+8838(27)s
+[ /Rect [720 6497 8346 6750] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTsorted /ANN pdfmark
+720 6587(2.8.)m
+1184(Sorted)s 1866(g)s 1(alle)k 3(ys)k 3082(..)s
+3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s
+5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
+6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
+
+[ /Rect [8842 6584 9066 6749] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTsorted /ANN pdfmark
+8842(33)s
+[ /Rect [720 6152 8346 6405] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThorizontal /ANN pdfmark
+720 6242(2.9.)m 1184(Horizontal)s 2261(g)s 1(alle)k 3(ys)k
+3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s
+5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
+6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
+
+[ /Rect [8832 6239 9066 6404] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThorizontal /ANN pdfmark
+8832(34)s
+[ /Rect [720 5807 8346 6061] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUToptimal /ANN pdfmark
+720 5897(2.10.)m 1304(Optimal)s 2142(g)s 1(alle)k 3(y)k
+2776(breaking)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s
+5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s
+7210(..)s 7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8833 5894 9066 6061] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUToptimal /ANN pdfmark
+8833(36)s
+
+[ /Rect [0 5179 8346 5433] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTsymbols /ANN pdfmark
+240 fnt5 0 5268(Chapter)m 908(3)s 240 fnt1 1021 5269(.)m
+240 fnt5 1185 5268(Pr)m 4(ede\207ned)k 2338(symbols)s 240 fnt1
+3426 5269(..)m 3770(..)s 4114(..)s 4458(..)s 4802(..)s
+5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
+6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
+
+[ /Rect [8838 5266 9066 5431] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTsymbols /ANN pdfmark
+8838(37)s
+[ /Rect [720 4834 8346 5087] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTbegin /ANN pdfmark
+720 4924(3.1.)m 1184(@Be)s 3(gin)k 2031(and)s
+2435(@End)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s
+4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s
+6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
+8242(..)s
+[ /Rect [8838 4921 9066 5086] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTbegin /ANN pdfmark
+8838(37)s
+[ /Rect [720 4489 8346 4742] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTconcatenation /ANN pdfmark
+720 4579(3.2.)m 1184(Concatenation)s 2623(symbols)s
+3472(and)s 3876(paragraphs)s 5490(..)s 5834(..)s 6178(..)s
+6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
+8242(..)s
+[ /Rect [8838 4576 9066 4741] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTconcatenation /ANN pdfmark
+8838(37)s
+[ /Rect [720 4144 8346 4397] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTfont /ANN pdfmark
+720 4234(3.3.)m 1184(@F)s 3(ont,)k
+1948(@Char)s 9(,)k 2732(and)s 3136(@F)s 3(ontDef)k
+4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s
+6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s
+7898(..)s 8242(..)s
+[ /Rect [8851 4234 9066 4396] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTfont /ANN pdfmark
+8851(41)s
+[ /Rect [720 3799 8346 4052] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTbreak /ANN pdfmark
+720 3889(3.4.)m 1184(@Break)s
+2394(..)s 2738(..)s 3082(..)s 3426(..)s 3770(..)s
+4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s
+5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s
+7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8832 3889 9066 4051] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTbreak /ANN pdfmark
+8832(44)s
+[ /Rect [720 3454 8346 3709] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTspace /ANN pdfmark
+720 3544(3.5.)m
+1184(@Space)s 2394(..)s 2738(..)s 3082(..)s 3426(..)s
+3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s
+5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s
+7210(..)s 7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8833 3541 9066 3708] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTspace /ANN pdfmark
+8833(46)s
+
+[ /Rect [720 3109 8346 3363] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTyunit /ANN pdfmark
+720 3199(3.6.)m 1184(@YUnit,)s 2110(@ZUnit,)s 3009(@CurrYUnit,)s 4373(and)s
+4777(@CurrZUnit)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s
+7898(..)s 8242(..)s
+[ /Rect [8838 3198 9066 3361] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTyunit /ANN pdfmark
+8838(47)s
+[ /Rect [720 2764 8346 3017] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTcont /ANN pdfmark
+720 2854(3.7.)m 1184(@SetConte)s 3(xt)k
+2525(and)s 2929(@GetConte)s 3(xt)k 4802(..)s 5146(..)s
+5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s
+7210(..)s 7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8838 2853 9066 3016] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTcont /ANN pdfmark
+8838(47)s
+
+[ /Rect [720 2419 8346 2672] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTcolour /ANN pdfmark
+720 2509(3.8.)m 1184(@SetColour)s 2435(and)s 2839(@SetColor)s 4458(..)s
+4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s
+6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
+8242(..)s
+[ /Rect [8839 2506 9066 2671] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTcolour /ANN pdfmark
+8839(48)s
+[ /Rect [720 2074 8346 2327] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTunderline_colour /ANN pdfmark
+720 2164(3.9.)m 1184(@SetUnderlineColour)s 3391(and)s
+3795(@SetUnderlineColor)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s
+7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8835 2159 9066 2326] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTunderline_colour /ANN pdfmark
+8835(49)s
+[ /Rect [720 1729 8346 1984] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTtexture /ANN pdfmark
+720 1819(3.10.)m
+1304(@SetT)s 16(e)k 3(xture)k 3082(..)s 3426(..)s
+3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s
+5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s
+7210(..)s 7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8831 1816 9066 1984] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTtexture /ANN pdfmark
+8831(50)s
+
+[ /Rect [720 1384 8346 1639] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUToutline /ANN pdfmark
+720 1474(3.11.)m 1304(@Outline)s 2738(..)s 3082(..)s 3426(..)s
+3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s
+5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s
+7210(..)s 7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8851 1471 9066 1639] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUToutline /ANN pdfmark
+8851(51)s
+
+[ /Rect [720 1039 8346 1294] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTlanguage /ANN pdfmark
+720 1129(3.12.)m 1304(@Language)s 2525(and)s 2929(@CurrLang)s 4458(..)s
+4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s
+6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
+8242(..)s
+[ /Rect [8851 1126 9066 1294] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTlanguage /ANN pdfmark
+8851(51)s
+[ /Rect [720 694 8346 949] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTonerow /ANN pdfmark
+720 784(3.13.)m 1304(@OneCol)s 2325(and)s
+2729(@OneRo)s 6(w)k 4114(..)s 4458(..)s 4802(..)s
+5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
+6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
+
+[ /Rect [8832 781 9066 949] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTonerow /ANN pdfmark
+8832(52)s
+[ /Rect [720 349 8346 604] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTwide /ANN pdfmark
+720 439(3.14.)m 1304(@W)s 9(ide)k 2090(and)s
+2494(@High)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s
+5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
+6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
+
+[ /Rect [8842 436 9066 604] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTwide /ANN pdfmark
+8842(53)s
+[ /Rect [720 4 8346 259] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThshift /ANN pdfmark
+720 94(3.15.)m 1304(@HShift)s 2222(and)s 2626(@VShift)s
+3770(..)s 4114(..)s 4458(..)s 4802(..)s 5146(..)s
+5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s
+7210(..)s 7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8842 91 9066 259] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThshift /ANN pdfmark
+8842(53)s
+
+grestore
+gsave
+1417 -15423 translate
+0.0 0.0 0.0 LoutSetRGBColor 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: iv 4
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+gsave
+1417 -14832 translate
+0.0 0.0 0.0 LoutSetRGBColor
+9066 13415 0 13415 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+[ /Rect [720 13127 8346 13382] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThexpand /ANN pdfmark
+720 13217(3.16.)m 1304(@HExpand)s 2488(and)s 2892(@VExpand)s 4458(..)s
+4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s
+6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
+8242(..)s
+[ /Rect [8832 13214 9066 13382] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThexpand /ANN pdfmark
+8832(54)s
+[ /Rect [720 12782 8346 13037] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThcontract /ANN pdfmark
+720 12872(3.17.)m 1304(@HContract)s 2581(and)s
+2985(@VContract)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s
+5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s
+7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8832 12869 9066 13037] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThcontract /ANN pdfmark
+8832(54)s
+[ /Rect [720 12437 8346 12692] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThlimited /ANN pdfmark
+720 12527(3.18.)m
+1304(@HLimited)s 2512(and)s 2916(@VLimited)s 4458(..)s 4802(..)s
+5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
+6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
+
+[ /Rect [8832 12524 9066 12692] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThlimited /ANN pdfmark
+8832(54)s
+[ /Rect [720 12092 8346 12347] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThadjust /ANN pdfmark
+720 12182(3.19.)m 1304(@HAdjust,)s 2443(@V)s 32(Adjust,)k
+3550(and)s 3954(@P)s 22(Adjust)k 5490(..)s 5834(..)s
+6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s
+7898(..)s 8242(..)s
+[ /Rect [8840 12179 9066 12347] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThadjust /ANN pdfmark
+8840(55)s
+[ /Rect [720 11747 8346 12002] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThscale /ANN pdfmark
+720 11837(3.20.)m 1304(@HScale)s
+2271(and)s 2675(@VScale)s 4114(..)s 4458(..)s 4802(..)s
+5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
+6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
+
+[ /Rect [8840 11834 9066 12002] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThscale /ANN pdfmark
+8840(55)s
+[ /Rect [720 11402 8346 11657] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThmirror /ANN pdfmark
+720 11492(3.21.)m 1304(@HMirror)s 2394(and)s 2798(@VMirror)s
+4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s
+5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s
+7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8840 11489 9066 11657] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThmirror /ANN pdfmark
+8840(55)s
+[ /Rect [720 11057 8346 11312] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThcover /ANN pdfmark
+720 11147(3.22.)m
+1304(@HCo)s 3(v)k 3(er)k 2337(and)s 2741(@VCo)s 3(v)k 3(er)k
+4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s
+5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s
+7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8833 11144 9066 11312] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThcover /ANN pdfmark
+8833(56)s
+[ /Rect [720 10712 8346 10967] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThspan /ANN pdfmark
+720 10802(3.23.)m
+1304(@StartHSpan,@StartVSpan,)s 4117(@StartHVSpan,)s 5720(@HSpan,)s 6700(and)s 7104(@VSpan)s
+8242(..)s
+[ /Rect [8838 10799 9066 10967] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUThspan /ANN pdfmark
+8838(57)s
+[ /Rect [720 10367 8346 10622] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTscale /ANN pdfmark
+720 10457(3.24.)m 1304(@Scale)s 2394(..)s
+2738(..)s 3082(..)s 3426(..)s 3770(..)s 4114(..)s
+4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s
+6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s
+7898(..)s 8242(..)s
+[ /Rect [8839 10454 9066 10622] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTscale /ANN pdfmark
+8839(58)s
+[ /Rect [720 10022 8346 10277] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTrotate /ANN pdfmark
+720 10112(3.25.)m 1304(@Rotate)s
+2394(..)s 2738(..)s 3082(..)s 3426(..)s 3770(..)s
+4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s
+5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s
+7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8839 10109 9066 10277] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTrotate /ANN pdfmark
+8839(58)s
+[ /Rect [720 9677 8346 9932] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTbackground /ANN pdfmark
+720 9767(3.26.)m
+1304(@Background)s 3082(..)s 3426(..)s 3770(..)s 4114(..)s
+4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s
+6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s
+7898(..)s 8242(..)s
+[ /Rect [8835 9762 9066 9932] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTbackground /ANN pdfmark
+8835(59)s
+[ /Rect [720 9332 8346 9587] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTkernshrink /ANN pdfmark
+720 9422(3.27.)m 1304(@K)s 6(ernShrink)k
+3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s
+4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s
+6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
+8242(..)s
+[ /Rect [8835 9417 9066 9587] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTkernshrink /ANN pdfmark
+8835(59)s
+[ /Rect [720 8987 8346 9241] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTrump /ANN pdfmark
+720 9077(3.28.)m 1304(@Common,)s 2524(@Rump,)s
+3438(and)s 3842(@Meld)s 5146(..)s 5490(..)s 5834(..)s
+6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s
+7898(..)s 8242(..)s
+[ /Rect [8831 9074 9066 9241] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTrump /ANN pdfmark
+8831(60)s
+[ /Rect [720 8642 8346 8896] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTinsert /ANN pdfmark
+720 8732(3.29.)m 1304(@Insert)s
+2394(..)s 2738(..)s 3082(..)s 3426(..)s 3770(..)s
+4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s
+5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s
+7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8851 8729 9066 8896] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTinsert /ANN pdfmark
+8851(61)s
+[ /Rect [720 8297 8346 8551] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUToneof /ANN pdfmark
+720 8387(3.30.)m
+1304(@OneOf)s 2738(..)s 3082(..)s 3426(..)s 3770(..)s
+4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s
+5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s
+7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8832 8384 9066 8551] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUToneof /ANN pdfmark
+8832(62)s
+[ /Rect [720 7952 8346 8206] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTnext /ANN pdfmark
+720 8042(3.31.)m
+1304(@Ne)s 3(xt)k 2394(..)s 2738(..)s 3082(..)s
+3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s
+5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
+6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
+
+[ /Rect [8842 8039 9066 8206] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTnext /ANN pdfmark
+8842(63)s
+[ /Rect [720 7607 8346 7861] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTcase /ANN pdfmark
+720 7697(3.32.)m 1304(@Case)s 2394(..)s 2738(..)s
+3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s
+4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s
+6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
+8242(..)s
+[ /Rect [8842 7694 9066 7861] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTcase /ANN pdfmark
+8842(63)s
+[ /Rect [720 7262 8346 7516] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTmoment /ANN pdfmark
+720 7352(3.33.)m 1304(@Moment)s 2738(..)s
+3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s
+4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s
+6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
+8242(..)s
+[ /Rect [8832 7349 9066 7516] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTmoment /ANN pdfmark
+8832(64)s
+[ /Rect [720 6917 8346 7172] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTnull /ANN pdfmark
+720 7007(3.34.)m 1304(@Null)s 2394(..)s
+2738(..)s 3082(..)s 3426(..)s 3770(..)s 4114(..)s
+4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s
+6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s
+7898(..)s 8242(..)s
+[ /Rect [8840 7004 9066 7172] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTnull /ANN pdfmark
+8840(65)s
+[ /Rect [720 6572 8346 6827] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTgalley /ANN pdfmark
+720 6662(3.35.)m 1304(@Galle)s 3(y)k
+2213(and)s 2617(@F)s 3(orceGalle)k 3(y)k 4458(..)s
+4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s
+6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
+8242(..)s
+[ /Rect [8840 6659 9066 6827] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTgalley /ANN pdfmark
+8840(65)s
+[ /Rect [720 5939 8346 6481] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTheader_comp /ANN pdfmark
+720 6317(3.36.)m 1304(@Be)s 3(ginHeaderComponent,)k
+4041(@EndHeaderComponent,)s 6596(@SetHeaderCom-)s 1304 6029(ponent,)m 2063(and)s 2467(@ClearHeaderComponent)s
+5490(..)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s
+7210(..)s 7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8840 6026 9066 6194] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTheader_comp /ANN pdfmark
+8840(65)s
+
+[ /Rect [720 5594 8346 5848] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTnotrevealed /ANN pdfmark
+720 5684(3.37.)m 1304(@NotRe)s 6(v)k 3(ealed)k 3082(..)s
+3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s
+5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
+6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
+
+[ /Rect [8838 5681 9066 5848] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTnotrevealed /ANN pdfmark
+8838(67)s
+[ /Rect [720 5249 8346 5503] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTcrossref /ANN pdfmark
+720 5339(3.38.)m 1304(The)s 1732(cross)s 2274(reference)s
+3217(symbols)s 4066(&&)s 4492(and)s 4896(&&&)s 5834(..)s
+6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s
+7898(..)s 8242(..)s
+[ /Rect [8839 5336 9066 5503] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTcrossref /ANN pdfmark
+8839(68)s
+[ /Rect [720 4904 8346 5158] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTtagged /ANN pdfmark
+720 4994(3.39.)m 1304(@T)s 19(agged)k
+2738(..)s 3082(..)s 3426(..)s 3770(..)s 4114(..)s
+4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s
+6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s
+7898(..)s 8242(..)s
+[ /Rect [8839 4991 9066 5158] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTtagged /ANN pdfmark
+8839(68)s
+[ /Rect [720 4559 8346 4813] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTopen /ANN pdfmark
+720 4649(3.40.)m 1304(@Open and @Use)s
+3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s
+5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
+6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
+
+[ /Rect [8835 4644 9066 4813] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTopen /ANN pdfmark
+8835(69)s
+[ /Rect [720 4214 8346 4468] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTlink_source /ANN pdfmark
+720 4304(3.41.)m 1304(@LinkSource,)s 2748(@LinkDest,)s 3966(and)s
+4370(@URLLink)s 5834(..)s 6178(..)s 6522(..)s 6866(..)s
+7210(..)s 7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8835 4299 9066 4468] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTlink_source /ANN pdfmark
+8835(69)s
+
+[ /Rect [720 3869 8346 4122] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTdatabase /ANN pdfmark
+720 3959(3.42.)m 1304(@Database and @SysDatabase)s 4802(..)s 5146(..)s 5490(..)s
+5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s
+7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8851 3958 9066 4121] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTdatabase /ANN pdfmark
+8851(71)s
+[ /Rect [720 3524 8346 3777] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTgraphic /ANN pdfmark
+720 3614(3.43.)m
+1304(@Graphic)s 2738(..)s 3082(..)s 3426(..)s 3770(..)s
+4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s
+5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s
+7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8851 3613 9066 3776] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTgraphic /ANN pdfmark
+8851(71)s
+[ /Rect [720 3179 8346 3434] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTplaingraphic /ANN pdfmark
+720 3269(3.44.)m
+1304(@PlainGraphic)s 3082(..)s 3426(..)s 3770(..)s 4114(..)s
+4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s
+6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s
+7898(..)s 8242(..)s
+[ /Rect [8840 3266 9066 3434] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTplaingraphic /ANN pdfmark
+8840(75)s
+[ /Rect [720 2834 8346 3089] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTincludegraphic /ANN pdfmark
+720 2924(3.45.)m 1304(@IncludeGraphic)s
+3065(and)s 3469(@SysIncludeGraphic)s 5834(..)s 6178(..)s 6522(..)s
+6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
+
+[ /Rect [8840 2921 9066 3089] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTincludegraphic /ANN pdfmark
+8840(75)s
+[ /Rect [720 2489 8346 2743] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTincludegraphicrepeated /ANN pdfmark
+720 2579(3.46.)m 1304(@IncludeGraphicRepeated)s 3960(and)s 4364(@SysIncludeGraphicRepeated)s
+7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8833 2576 9066 2743] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTincludegraphicrepeated /ANN pdfmark
+8833(76)s
+[ /Rect [720 2144 8346 2398] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTprependgraphic /ANN pdfmark
+720 2234(3.47.)m
+1304(@PrependGraphic and @SysPrependGraphic)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s
+7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8833 2231 9066 2398] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTprependgraphic /ANN pdfmark
+8833(76)s
+[ /Rect [720 1799 8346 2052] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTinclude /ANN pdfmark
+720 1889(3.48.)m
+1304(@Include and @SysInclude)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s
+5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s
+7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8838 1888 9066 2047] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTinclude /ANN pdfmark
+8838(77)s
+[ /Rect [720 1454 8346 1707] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTbackend /ANN pdfmark
+720 1544(3.49.)m
+1304(@BackEnd)s 2461(and)s 2865(the)s 3213(PlainT)s 16(e)k 3(xt)k
+4183(and)s 4587(PDF)s 5084(back)s 5597(ends)s 6522(..)s
+6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
+
+[ /Rect [8838 1543 9066 1702] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTbackend /ANN pdfmark
+8838(77)s
+[ /Rect [720 1109 8346 1364] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTverbatim /ANN pdfmark
+720 1199(3.50.)m 1304(@V)s 26(erbatim and @Ra)k 3(wV)k 26(erbatim)k
+4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s
+6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
+8242(..)s
+[ /Rect [8839 1196 9066 1361] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTverbatim /ANN pdfmark
+8839(78)s
+[ /Rect [720 764 8346 1019] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTunderline /ANN pdfmark
+720 854(3.51.)m 1304(@Underline)s 2738(..)s
+3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s
+4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s
+6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
+8242(..)s
+[ /Rect [8835 849 9066 1016] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTunderline /ANN pdfmark
+8835(79)s
+[ /Rect [720 419 8346 674] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTpagelabel /ANN pdfmark
+720 509(3.52.)m 1304(@P)s 3(ageLabel)k
+3082(..)s 3426(..)s 3770(..)s 4114(..)s 4458(..)s
+4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s
+6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
+8242(..)s
+[ /Rect [8835 504 9066 671] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTpagelabel /ANN pdfmark
+8835(79)s
+grestore
+gsave
+1417 -14832 translate
+0.0 0.0 0.0 LoutSetRGBColor 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+0.0 0.0 0.0 LoutSetRGBColor 1417 -15420(i)m 6(v)k
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: v 5
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+gsave
+1417 -14887 translate
+0.0 0.0 0.0 LoutSetRGBColor
+9066 13470 0 13470 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+[ /Rect [0 13216 8346 13470] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTexamples /ANN pdfmark
+240 fnt5 0 13305(Chapter)m 908(4)s 240 fnt1 1022 13306(.)m
+240 fnt5 1186 13305(Examples)m 240 fnt1 2738 13306(..)m 3082(..)s
+3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s
+5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
+6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
+
+[ /Rect [8851 13303 9066 13468] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTexamples /ANN pdfmark
+8851(81)s
+[ /Rect [720 12871 8346 13124] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTeq /ANN pdfmark
+720 12961(4.1.)m 1184(An)s 1534(equation)s 2415(formatting)s
+3476(package)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s
+6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s
+7898(..)s 8242(..)s
+[ /Rect [8851 12958 9066 13123] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTeq /ANN pdfmark
+8851(81)s
+[ /Rect [720 12526 8346 12779] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTparas /ANN pdfmark
+720 12616(4.2.)m 1184(P)s 3(aragraphs,)k
+2350(displays,)s 3241(and)s 3645(lists)s 4458(..)s 4802(..)s
+5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
+6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
+
+[ /Rect [8842 12613 9066 12778] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTparas /ANN pdfmark
+8842(83)s
+[ /Rect [720 12181 8346 12434] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTpagelayout /ANN pdfmark
+720 12271(4.3.)m 1184(P)s 3(age)k 1702(layout)s
+2738(..)s 3082(..)s 3426(..)s 3770(..)s 4114(..)s
+4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s
+6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s
+7898(..)s 8242(..)s
+[ /Rect [8838 12268 9066 12433] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTpagelayout /ANN pdfmark
+8838(87)s
+[ /Rect [720 11836 8346 12089] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTchapters /ANN pdfmark
+720 11926(4.4.)m 1184(Chapters)s
+2085(and)s 2489(sections)s 3770(..)s 4114(..)s 4458(..)s
+4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s
+6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
+8242(..)s
+[ /Rect [8832 11921 9066 12088] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTchapters /ANN pdfmark
+8832(92)s
+[ /Rect [720 11491 8346 11746] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTbiblio /ANN pdfmark
+720 11581(4.5.)m 1184(Bibliographies)s 3082(..)s
+3426(..)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s
+5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
+6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
+
+[ /Rect [8838 11576 9066 11743] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTbiblio /ANN pdfmark
+8838(97)s
+[ /Rect [720 11146 8346 11400] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTexa_inde /ANN pdfmark
+720 11236(4.6.)m 1184(Mer)s 4(ged)k 1982(inde)s 3(x)k
+2566(entries)s 3770(..)s 4114(..)s 4458(..)s 4802(..)s
+5146(..)s 5490(..)s 5834(..)s 6178(..)s 6522(..)s
+6866(..)s 7210(..)s 7554(..)s 7898(..)s 8242(..)s
+
+[ /Rect [8731 11233 9066 11398] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTexa_inde /ANN pdfmark
+8731(101)s
+[ /Rect [0 10517 8346 10772] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTtex /ANN pdfmark
+240 fnt5 0 10606(A)m 6(ppendix)k 1048(A)s
+240 fnt1 1214 10607(.)m 240 fnt5 1378 10606(Implementation)m 3066(of)s
+3338(T)s 22(extur)k 4(es)k 240 fnt1 4458 10607(..)m
+4802(..)s 5146(..)s 5490(..)s 5834(..)s 6178(..)s
+6522(..)s 6866(..)s 7210(..)s 7554(..)s 7898(..)s
+8242(..)s
+[ /Rect [8720 10604 9066 10772] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTtex /ANN pdfmark
+8720(105)s
+[ /Rect [0 9889 8346 10143] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT20_547_all_1 /ANN pdfmark
+240 fnt5 0 9978(Refer)m 4(ences)k
+240 fnt1 1362 9979(..)m 1706(..)s 2050(..)s 2394(..)s
+2738(..)s 3082(..)s 3426(..)s 3770(..)s 4114(..)s
+4458(..)s 4802(..)s 5146(..)s 5490(..)s 5834(..)s
+6178(..)s 6522(..)s 6866(..)s 7210(..)s 7554(..)s
+7898(..)s 8242(..)s
+[ /Rect [8711 9976 9066 10141] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT20_547_all_1 /ANN pdfmark
+8711(110)s
+[ /Rect [0 9263 8346 9515] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT20_604_all_1 /ANN pdfmark
+240 fnt5 0 9352(Index)m
+240 fnt1 1018 9353(..)m 1362(..)s 1706(..)s 2050(..)s
+2394(..)s 2738(..)s 3082(..)s 3426(..)s 3770(..)s
+4114(..)s 4458(..)s 4802(..)s 5146(..)s 5490(..)s
+5834(..)s 6178(..)s 6522(..)s 6866(..)s 7210(..)s
+7554(..)s 7898(..)s 8242(..)s
+[ /Rect [8731 9353 9066 9515] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT20_604_all_1 /ANN pdfmark
+8731(111)s
+grestore
+gsave
+1417 -14887 translate
+0.0 0.0 0.0 LoutSetRGBColor
+0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+0.0 0.0 0.0 LoutSetRGBColor 10368 -15420(v)m
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: vi 6
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+gsave
+1417 -15423 translate
+0.0 0.0 0.0 LoutSetRGBColor
+0 14006 0 14006 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+gsave
+1417 -15423 translate
+0.0 0.0 0.0 LoutSetRGBColor 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 1 7
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+gsave
+1417 -1417 translate
+0.0 0.0 0.0 LoutSetRGBColor
+9066 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+gsave
+1417 -14867 translate
+0.0 0.0 0.0 LoutSetRGBColor 9066 13450 0 13450 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+480 fnt5 0 12399(Chapter)m 1819(1.)s 2400(Principles)s
+
+[ /Dest /LOUTprinciples /DEST pdfmark
+240 fnt1 0 11448(The)m 414(Lout)s 911(document)s 1900(formatting)s
+2946(language)s 3852(is)s 4047(based)s 4635(on)s 4917(just)s
+5307(four)s 5751(k)s 2(e)k 3(y)k 6131(ideas:)s
+6713(objects,)s 7482(de\207nitions,)s 8584(cross)s 0 11160(references,)m 1087(and)s
+1491(g)s 1(alle)k 3(ys.)k 2328(This)s 2804(chapter)s
+3567(concentrates)s 4812(on)s 5109(them,)s 5694(postponing)s 6812(the)s
+7160(ine)s 6(vitable)k 8152(details.)s 240 fnt5 0 10367(1.1.)m
+471(Objects)s
+[ /Dest /LOUTobjects /DEST pdfmark
+240 fnt1 480 9891(Since)m 1075(our)s 1462(aim)s
+1888(is)s 2106(to)s 2354(produce)s 3189(neatly)s 3835(formatted)s
+4829(documents,)s 5981(we)s 6325(should)s 7030(be)s 3(gin)k
+7624(by)s 7926(looking)s 8719(at)s 8960(a)s 0 9603(typical)m
+705(e)s 3(xample)k 1568(of)s 1839(such)s 2335(a)s
+2501(document:)s 1927 2494 0 2494 240 288 60 480 6769 LoutGr2
+0 0 moveto xsize 0 lineto xsize ysize lineto
+0 ysize lineto closepath stroke
+grestore
+160 fnt5 560 1987(PURCELL)m 128 fnt1 1316 2059(1)m
+160 fnt1 170 1695(In)m 395(the)s 681(w)s 1(orld)k
+1145(of)s 1381(music)s 170 1515(England)m 882(is)s 1163(supposed)s
+170 1335(to)m 376(be)s 611(a)s 768(mere)s 1171(pro)s 2(vince.)k
+170 1155(If)m 465(she)s 856(produces)s 1608(an)s 170 975(indif)m 4(ferent)k
+1136(composer)s 567 0 0 0 160 180 40 170 763 LoutGr2
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+128 fnt1 170 624(1)m 160 fnt1 221 552(Blom,)m
+703(Eric.)s 160 fnt6 1133 553(Some)m 170 373(Gr)m 5(eat)k
+734(Composer)s 1(s.)k 160 fnt1 170 192(Oxford,)m 703(1944.)s
+
+grestore
+1927 2494 0 2494 240 288 60 480 4275 LoutGr2
+0 0 moveto xsize 0 lineto xsize ysize lineto
+0 ysize lineto closepath stroke
+grestore
+160 fnt1 170 2161(or)m 453(performer)s 6(,)k 1267(that)s
+1657(is)s 170 1981(re)m 2(garded)k 862(else)s 4(where)k
+1630(as)s 170 1801(perfectly)m 905(normal)s 1527(and)s 170 1621(natural;)m
+762(b)s 3(ut)k 1078(if)s 1298(foreign)s 170 1441(students)m
+905(of)s 1264(musical)s 170 1261(history)m 976(ha)s 3(v)k 2(e)k
+1637(to)s 170 1081(ackno)m 4(wledge)k 1130(a)s 1326(British)s
+170 901(musical)m 795(genius,)s 1376(he)s 1657(is)s 170 721(considered)m
+901(a)s 1012(freak.)s 490 488(Such)m 957(a)s 1178(freak)s
+1657(is)s 170 308(Henry)m 607(Purcell.)s 1170(Y)s 16(et)k
+1426(if)s 1574(we)s
+grestore
+1927 2494 0 2494 240 288 60 480 1781 LoutGr2
+0 0 moveto xsize 0 lineto xsize ysize lineto
+0 ysize lineto closepath stroke
+grestore
+160 fnt1 170 2161(mak)m 1(e)k
+565(a)s 690(choice)s 1157(of)s 1352(\207fteen)s 170 1981(of)m
+407(the)s 695(w)s 1(orld')k 8(s)k 1264(musical)s
+170 1801(classics,)m 740(as)s 918(here,)s 1276(we)s 1510(\207nd)s
+170 1621(that)m 464(we)s 703(cannot)s 1185(omit)s 1533(this)s
+170 1441(English)m 695(master)s 8(.)k
+grestore
+0 1330(It)m 229(is)s
+463(a)s 653(lar)s 4(ge)k 1206(rectangle)s 2161(made)s
+2759(from)s 3307(three)s 3864(smaller)s 4651(rectangles)s 5694(\211)s
+5898(its)s 6198(pages.)s 6931(Each)s 7490(page)s 8022(is)s
+8256(made)s 8855(of)s 0 1042(lines;)m 578(each)s 1088(line)s
+1517(is)s 1743(made)s 2332(of)s 2618(w)s 2(ords,)k
+3324(although)s 4234(it)s 4441(mak)s 2(es)k 5117(sense)s
+5706(for)s 6059(an)s 3(y)k 6472(rectangle)s 7418(\(e)s 6(v)k 3(en)k
+8012(a)s 8194(complete)s 0 754(document\))m 1072(to)s 1311(be)s
+1593(part)s 2024(of)s 2295(a)s 2461(line,)s 2926(pro)s 3(vided)k
+3832(it)s 4024(is)s 4234(not)s 4600(too)s 4959(lar)s 4(ge.)k
+480 380(Lout)m 995(deals)s 1541(with)s 2027(something)s 3081(a)s
+3251(little)s 3747(more)s 4298(complicated)s 5528(than)s 6001(rectangles:)s
+240 fnt6 7079 382(objects.)m 240 fnt1 7914 380(An)m 8268(object)s
+
+[ /Dest /LOUT19_4637_pri_obje_1 /DEST pdfmark
+8916(is)s 0 92(a)m 176(rectangle)s 1118(with)s 1611(at)s
+1854(least)s 2362(one)s 240 fnt6 2775 94(column)m 3545(mark)s
+
+[ /Dest /LOUT19_4637_pri_obje_2 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pri_obje_3 /DEST pdfmark
+240 fnt1 4112 92(protruding)m 5186(abo)s 3(v)k 3(e)k
+5819(and)s 6234(belo)s 6(w)k 6878(it,)s 7128(and)s
+7543(at)s 7786(least)s 8294(one)s 240 fnt6 8707 94(r)m 10(ow)k
+
+grestore
+gsave
+1417 -14867 translate
+0.0 0.0 0.0 LoutSetRGBColor 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+192 fnt5 0.0 0.0 0.0 LoutSetRGBColor 5907 -15423(1)m
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 2 8
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(2)m 240 fnt6 8382 -1580(Chapter)m 9232(1.)s
+9506(Principles)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13257 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+240 fnt6 0 13205(mark)m
+[ /Dest /LOUT19_4637_pri_obje_4 /DEST pdfmark
+240 fnt1
+557 13203(protruding)m 1621(to)s 1861(the)s 2211(left)s 2589(and)s
+2994(right.)s 3611(The)s 4040(simplest)s 4897(objects)s 5627(contain)s
+6389(w)s 2(ords)k 7024(lik)s 2(e)k 7438(metempsychosis,)s
+0 12915(and)m 404(ha)s 4(v)k 3(e)k 905(one)s
+1307(mark)s 1859(of)s 2130(each)s 2625(type:)s 1572 215 0 106 240 288 60 480 12360 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+1572 215 0 106 240 288 60 0 0 LoutGr2
+/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+1572 215 0 106 240 288 60 0 0 LoutGr2
+
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ -0.3 cm ymark
+xsize ymark 0.3 cm 0 lfigpadd []
+xmark -0.3 cm
+xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
+pop pop
+grestore
+0 52(metempsychosis)m
+
+grestore
+
+grestore
+end end restore
+grestore
+0 11909(The)m 441(rectangle)s 1386(e)s 3(xactly)k 2141(encloses)s
+3016(the)s 3377(w)s 2(ord;)k 3993(its)s 4283(column)s
+5072(mark)s 5637(is)s 5861(at)s 6107(the)s 6469(left)s
+6859(edge,)s 7432(and)s 7850(its)s 8140(ro)s 6(w)k
+8574(mark)s 0 11621(passes)m 668(through)s 1477(the)s 1831(middle)s
+2558(of)s 2835(the)s 3190(lo)s 6(wer)k 4(-case)k
+4276(letters.)s 5029(The)s 5463(rectangle)s 6401(and)s 6811(marks)s
+7453(do)s 7752(not)s 8125(appear)s 8829(on)s 0 11333(the)m
+348(printed)s 1083(page,)s 1642(b)s 4(ut)k 2004(to)s
+2243(understand)s 3351(what)s 3876(Lout)s 4388(is)s 4598(doing)s
+5197(you)s 5612(ha)s 4(v)k 3(e)k 6113(to)s
+6352(imagine)s 7178(them.)s 480 10959(T)m 19(o)k 782(place)s
+1344(tw)s 2(o)k 1756(objects)s 2487(side)s 2930(by)s
+3226(side,)s 3721(we)s 4058(separate)s 4898(them)s 5438(by)s
+5735(the)s 6085(symbol)s 220 fnt2 6847 10956(|,)m 240 fnt1
+7009 10959(which)m 7653(denotes)s 8437(the)s 8788(act)s 0 10671(of)m
+240 fnt6 271 10673(horizontal)m 1315(concatenation)s 240 fnt1 2665 10671(.)m
+2829(So,)s 3189(if)s 3406(we)s 3741(write)s 220 fnt2
+480 10189(USA | A)m 6(ustr)k 2(alia)k 240 fnt1 0 9734(the)m
+348(result)s 938(will)s 1364(be)s 1646(the)s 1994(object)s
+476 165 0 57 240 288 60 480 9228 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+476 165 0 57 240 288 60 0 0 LoutGr2
+/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+476 165 0 57 240 288 60 0 0 LoutGr2
+
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ -0.3 cm ymark
+xsize ymark 0.3 cm 0 lfigpadd []
+xmark -0.3 cm
+xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
+pop pop
+grestore
+0 3(USA)m
+grestore
+
+grestore
+end end restore
+grestore
+875 165 0 56 240 288 60 956 9229 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+875 165 0 56 240 288 60 0 0 LoutGr2
+/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+875 165 0 56 240 288 60 0 0 LoutGr2
+
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ -0.3 cm ymark
+xsize ymark 0.3 cm 0 lfigpadd []
+xmark -0.3 cm
+xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
+pop pop
+grestore
+0 2(Australia)m
+grestore
+
+grestore
+end end restore
+grestore
+0 8777(Notice)m 718(that)s 1162(this)s
+1583(object)s 2253(has)s 2648(tw)s 2(o)k 3084(column)s
+3884(marks,)s 4601(b)s 4(ut)k 4988(still)s 5426(only)s
+5931(one)s 6359(ro)s 6(w)k 6804(mark,)s 7428(because)s
+220 fnt2 8266 8774(|)m 240 fnt1 8389 8777(mer)m 4(ges)k
+0 8489(the)m 382(tw)s 2(o)k 827(ro)s 6(w)k
+1282(marks)s 1952(together)s 13(.)k 2921(This)s 3431(mer)s 4(ging)k
+4312(of)s 4618(ro)s 6(w)k 5073(marks)s 5743(\207x)s 3(es)k
+6277(the)s 6660(v)s 3(ertical)k 7462(position)s 8325(of)s
+8631(each)s 0 8201(object)m 647(with)s 1133(respect)s 1873(to)s
+2115(the)s 2467(other)s 9(,)k 3060(b)s 4(ut)k
+3425(it)s 3621(does)s 4115(not)s 4485(determine)s 5499(ho)s 6(w)k
+5964(f)s 2(ar)k 6290(apart)s 6830(the)s 3(y)k
+7297(are.)s 7756(This)s 8236(distance,)s 0 7913(or)m 240 fnt6
+276 7915(gap)m 240 fnt1 629 7913(,)m 753(may)s 1236(be)s
+1536(gi)s 6(v)k 3(en)k 2133(just)s 2555(after)s
+3069(the)s 3434(symbol,)s 4263(as)s 4531(in)s 220 fnt2
+4791 7910(|0.5i)m 240 fnt1 5264 7913(for)m 5620(e)s 3(xample,)k
+6551(which)s 7210(speci\207es)s 8102(horizontal)s 0 7625(concatenation)m 1385(with)s
+1867(a)s 2033(g)s 1(ap)k 2431(of)s 2702(half)s
+3145(an)s 3428(inch.)s 4004(If)s 4234(no)s 4527(g)s 1(ap)k
+4925(is)s 5135(gi)s 6(v)k 3(en,)k 5765(it)s
+5957(is)s 6167(assumed)s 7049(to)s 7288(be)s 220 fnt2
+7570 7622(0i)m 240 fnt1 7726 7625(.)m 240 fnt6 480 7253(V)m 26(ertical)k
+1283(concatenation)s 240 fnt1 2633 7251(,)m 2740(denoted)s 3556(by)s
+220 fnt2 3850 7248(/)m 240 fnt1 3914 7251(,)m 4021(is)s
+4231(the)s 4579(same)s 5126(apart)s 5663(from)s 6187(the)s
+6535(change)s 7269(of)s 7540(direction:)s 220 fnt2 480 6750(A)m 6(ustr)k 2(alia /0.1i USA)k
+240 fnt1 0 6295(has)m 370(result)s 875 165 0 56 240 288 60 480 5840 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+875 165 0 56 240 288 60 0 0 LoutGr2
+/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+875 165 0 56 240 288 60 0 0 LoutGr2
+
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ -0.3 cm ymark
+xsize ymark 0.3 cm 0 lfigpadd []
+xmark -0.3 cm
+xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
+pop pop
+grestore
+0 2(Australia)m
+grestore
+
+grestore
+end end restore
+grestore
+476 165 0 57 240 288 60 480 5531 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+476 165 0 57 240 288 60 0 0 LoutGr2
+/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+476 165 0 57 240 288 60 0 0 LoutGr2
+
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ -0.3 cm ymark
+xsize ymark 0.3 cm 0 lfigpadd []
+xmark -0.3 cm
+xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
+pop pop
+grestore
+0 3(USA)m
+
+grestore
+
+grestore
+end end restore
+grestore
+0 5080(The)m 485(usual)s 1102(mer)s 4(ging)k 2005(of)s
+2333(marks)s 3026(occurs,)s 3814(and)s 4275(no)s 6(w)k
+4793(the)s 5199(g)s 1(ap)k 5654(determines)s 6810(the)s
+7215(v)s 3(ertical)k 8040(separation.)s 0 4792(Horizontal)m 1077(and)s
+1481(v)s 3(ertical)k 2248(can)s 2637(be)s 2919(combined:)s
+220 fnt2 1000 4340(USA)m 2256(|0.2i)s 2772(A)s 6(ustr)k 2(alia)k
+480 4052(/0.1i)m 1000(W)s 8(ashington)k 2256(|)s 2772(Canberr)s 2(a)k
+240 fnt1 0 3553(has)m 370(result)s 476 165 0 57 240 288 60 480 3097 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+476 165 0 57 240 288 60 0 0 LoutGr2
+/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+476 165 0 57 240 288 60 0 0 LoutGr2
+
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ -0.3 cm ymark
+xsize ymark 0.3 cm 0 lfigpadd []
+xmark -0.3 cm
+xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
+pop pop
+grestore
+0 3(USA)m
+grestore
+
+grestore
+end end restore
+grestore
+659 166 0 57 240 288 60 956 3097 LoutGr2
+0 ymark moveto xsize 10 pt add ymark lineto [ 3 pt ] 0 setdash stroke
+grestore
+
+grestore
+875 165 0 56 240 288 60 1903 3098 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+875 165 0 56 240 288 60 0 0 LoutGr2
+/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+875 165 0 56 240 288 60 0 0 LoutGr2
+
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ -0.3 cm ymark
+xsize ymark 0.3 cm 0 lfigpadd []
+xmark -0.3 cm
+xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
+pop pop
+grestore
+0 2(Australia)m
+
+grestore
+
+grestore
+end end restore
+grestore
+1135 215 0 106 240 288 60 480 2738 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+1135 215 0 106 240 288 60 0 0 LoutGr2
+/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+1135 215 0 106 240 288 60 0 0 LoutGr2
+
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ -0.3 cm ymark
+xsize ymark 0.3 cm 0 lfigpadd []
+xmark -0.3 cm
+xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
+pop pop
+grestore
+0 52(W)m 19(ashington)k
+grestore
+
+grestore
+end end restore
+grestore
+876 166 0 57 240 288 60 1903 2787 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+876 166 0 57 240 288 60 0 0 LoutGr2
+/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+876 166 0 57 240 288 60 0 0 LoutGr2
+
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ -0.3 cm ymark
+xsize ymark 0.3 cm 0 lfigpadd []
+xmark -0.3 cm
+xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
+pop pop
+grestore
+0 3(Canberra)m
+grestore
+
+grestore
+end end restore
+grestore
+
+[ /Dest /LOUT19_4637_pri_obje_5 /DEST pdfmark
+0 2287(There)m 655(are)s
+1044(se)s 6(v)k 3(eral)k 1808(things)s 2486(to)s
+2768(note)s 3278(carefully)s 4222(here.)s 4839(White)s 5522(space)s
+6151(\(including)s 7229(tabs)s 7707(and)s 8154(ne)s 6(wlines\))k
+0 1999(adjacent)m 848(to)s 1078(a)s 1236(concatenation)s 2612(symbol)s
+3364(is)s 3565(ignored,)s 4395(so)s 4652(it)s 4836(may)s
+5293(be)s 5567(used)s 6055(to)s 6286(lay)s 6623(out)s
+6981(the)s 7320(e)s 3(xpression)k 8388(clearly)s 15(.)k
+0 1711(The)m 425(symbol)s 220 fnt2 1182 1708(|)m 240 fnt1
+1275 1711(tak)m 2(es)k 1812(precedence)s 2940(o)s 3(v)k 3(er)k
+220 fnt2 3415 1708(/)m 240 fnt1 3479 1711(,)m 3583(which)s
+4221(means)s 4880(that)s 5295(the)s 5639(ro)s 6(ws)k
+6146(are)s 6490(formed)s 7234(\207rst,)s 7709(then)s 8174(v)s 3(ertically)k
+0 1423(concatenated.)m 1420(The)s 1856(symbol)s 220 fnt2 2625 1420(/)m
+240 fnt1 2757 1423(will)m 3191(mer)s 4(ge)k 3849(tw)s 2(o)k
+4267(or)s 4535(more)s 5090(column)s 5873(marks,)s 6573(creating)s
+7403(multiple)s 8264(columns)s 0 1135(\(and)m 220 fnt2 484 1132(|)m
+240 fnt1 583 1135(will)m 1011(mer)s 4(ge)k 1662(tw)s 2(o)k
+2073(or)s 2334(more)s 2883(ro)s 6(w)k 3305(marks\).)s
+4134(This)s 4611(implies)s 5367(that)s 5787(the)s 6137(g)s 1(ap)k
+220 fnt2 6536 1132(0.2i)m 240 fnt1 6937 1135(used)m 7436(abo)s 3(v)k 3(e)k
+8060(is)s 8272(between)s 0 847(columns,)m 910(not)s 1268(indi)s 6(vidual)k
+2278(items)s 2838(in)s 3072(columns;)s 3987(a)s 4144(g)s 1(ap)k
+4534(in)s 4768(the)s 5108(second)s 5822(ro)s 6(w)k
+6234(w)s 2(ould)k 6880(therefore)s 7789(be)s 8062(redundant,)s
+0 559(and)m 404(so)s 670(is)s 880(omitted.)s 480 185(A)m
+710(v)s 6(ariant)k 1427(of)s 220 fnt2 1698 182(/)m
+240 fnt1 1822 185(called)m 220 fnt2 2450 182(//)m 240 fnt1
+2635 185(left-justi\207es)m 3825(tw)s 2(o)k 4235(objects)s 4963(instead)s
+5698(of)s 5969(mer)s 4(ging)k 6815(their)s 7312(marks.)s
+
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 3 9
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(1.1.)m 1871(Objects)s 240 fnt5 10370 -1583(3)m
+gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+480 13205(By)m 840(enclosing)s 1836(an)s 2145(object)s
+2815(in)s 3085(braces,)s 3828(it)s 4046(is)s 4282(possible)s
+5148(to)s 5414(o)s 3(v)k 3(erride)k 6286(the)s
+
+[ /Dest /LOUT19_4637_pri_obje_6 /DEST pdfmark
+6660(set)s 7011(precedences.)s 8369(Here)s 8916(is)s 0 12917(another)m
+777(e)s 3(xpression)k 1854(for)s 2192(the)s 2540(table)s
+3060(abo)s 3(v)k 3(e,)k 3733(in)s 3976(which)s
+4618(the)s 4966(columns)s 5828(are)s 6175(formed)s 6923(\207rst:)s
+220 fnt2 996 12416({ USA)m 2089(/0.1i)s 2609(W)s 8(ashington })k
+480 12128(|0.2i)m 996({ A)s 6(ustr)k 2(alia)k 2089(/)s
+2609(Canberr)s 2(a })k 240 fnt1 0 11634(Braces)m 701(ha)s 4(v)k 3(e)k
+1202(no)s 1495(ef)s 6(fect)k 2091(other)s 2642(than)s
+3111(to)s 3350(alter)s 3833(the)s 4181(grouping.)s 240 fnt6
+480 11262(P)m 19(ar)k 3(a)k 2(gr)k 3(aph)k
+1569(br)s 8(eaking)k 240 fnt1 2476 11260(occurs)m 3160(when)s
+3746(an)s 4038(object)s 4692(is)s 4911(too)s 5280(wide)s
+5810(to)s 6059(\207t)s
+[ /Dest /LOUT19_4637_pri_obje_7 /DEST pdfmark
+6327(into)s 6762(the)s 7119(space)s
+7716(a)s 4(v)k 6(ailable)k 8633(to)s 8882(it;)s
+0 10972(by)m 286(breaking)s 1168(its)s 1436(paragraphs)s 2527(into)s
+2944(lines,)s 3494(its)s 3762(width)s 4355(is)s 4557(reduced)s
+5364(to)s 5595(an)s 5869(acceptable)s 6925(amount.)s 7799(The)s
+8218(a)s 4(v)k 6(ailable)k 0 10684(space)m 587(is)s
+797(determined)s 1930(by)s 2224(the)s 220 fnt2 2572 10681(@Wide)m
+240 fnt1 3346 10684(symbol,)m 4158(whose)s 4826(form)s 5350(is)s
+240 fnt6 480 10181(length)m 220 fnt2 1193 10176(@Wide)m 240 fnt6
+2027 10181(object)m 240 fnt1 0 9680(and)m 404(whose)s 1072(result)s
+1662(is)s 1872(the)s 2220(gi)s 6(v)k 3(en)k
+2800(object)s 3444(modi\207ed)s 4353(to)s 4592(ha)s 4(v)k 3(e)k
+5093(e)s 3(xactly)k 5834(the)s 6182(gi)s 6(v)k 3(en)k
+6762(length.)s 7524(F)s 3(or)k 7913(e)s 3(xample,)k
+220 fnt2 480 9179(5i @Wide {)m 480 8891(Macbeth w)m 3(as v)k 5(er)k -6(y ambitious)k 3(.)k 13( )k 11(This led him to wish to become king of)k
+480 8603(Scotland.)m 13( )k 11(The witches told him that this wish of his w)k 2(ould come tr)k -3(ue)k 3(.)k 13( )k 11(The)k
+480 8315(king of Scotland at this time w)m 3(as Duncan.)k 13( Encour)k 2(aged b)k 4(y his wif)k 6(e)k 3(, Macbeth)k
+480 8027(m)m 2(urdered Duncan.)k 13( He w)k 3(as thus enab)k 4(led to succeed Duncan as king.)k 13( \(51 w)k 2(ords\))k
+480 7739(|0.5i)m 480 7451(Encour)m 2(aged b)k 4(y his wif)k 6(e)k 3(, Macbeth achie)k 6(v)k 5(ed his ambition and realiz)k 3(ed the)k
+480 7163(prediction of the witches b)m 4(y m)k 2(urder)k -3(ing Duncan and becoming king of Scotland)k 480 6875(in his place)m 3(.)k 13( \(26 w)k 2(ords\))k
+480 6587(})m 240 fnt1 0 6093(has)m 370(for)s 708(its)s
+984(result)s 1574(the)s 1922(follo)s 6(wing)k 2899(\207v)s 3(e)k
+3311(inch)s 3780(wide)s 4301(object)s 4945([)s
+[ /Rect [5016 6090 5123 6255] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTstrunk1979style /ANN pdfmark
+5016(8)s
+5123(]:)s 480 5590(Macbeth)m 1356(w)s 2(as)k 1758(v)s 3(ery)k
+2216(ambitious.)s 3304(This)s 480 5302(led)m 828(him)s 1257(to)s
+1493(wish)s 2000(to)s 2236(become)s 3033(king)s 3509(of)s
+480 5014(Scotland.)m 1538(The)s 2023(witches)s 2861(told)s 3348(him)s
+480 4726(that)m 922(this)s 1343(wish)s 1876(of)s 2172(his)s
+2526(w)s 2(ould)k 3206(come)s 480 4438(true.)m 1025(The)s
+1464(king)s 1954(of)s 2235(Scotland)s 3141(at)s 3384(this)s
+480 4150(time)m 959(w)s 2(as)k 1379(Duncan.)s 2287(Encouraged)s
+3486(by)s 480 3862(his)m 817(wife,)s 1356(Macbeth)s 2257(murdered)s
+3239(Dun-)s 480 3574(can.)m 994(He)s 1347(w)s 2(as)k
+1787(thus)s 2255(enabled)s 3075(to)s 3333(suc-)s 480 3286(ceed)m
+976(Duncan)s 1778(as)s 2028(king.)s 2618(\(51)s 2972(w)s 2(ords\))k
+4440 5590(Encouraged)m 5653(by)s 5960(his)s 6302(wife,)s 6846(Macbeth)s
+4440 5302(achie)m 6(v)k 3(ed)k 5407(his)s 5806(ambition)s
+6782(and)s 7255(real-)s 4440 5014(ized)m 4910(the)s 5272(prediction)s
+6312(of)s 6597(the)s 6959(witches)s 4440 4726(by)m 4731(murdering)s
+5776(Duncan)s 6574(and)s 6974(becom-)s 4440 4438(ing)m 4818(king)s
+5316(of)s 5606(Scotland)s 6520(in)s 6782(his)s 7132(place.)s
+4440 4150(\(26)m 4812(w)s 2(ords\))k 0 2783(A)m 232(paragraph)s
+1247(of)s 1520(te)s 3(xt)k 1937(can)s 2328(be)s
+2612(included)s 3496(an)s 3(ywhere,)k 4533(and)s 4939(it)s
+5133(will)s 5561(be)s 5845(brok)s 2(en)k 6567(automatically)s
+7923(if)s 8143(necessary)s 0 2495(to)m 239(\207t)s 498(the)s
+846(a)s 4(v)k 6(ailable)k 1754(space.)s 2449(The)s
+2877(spaces)s 3552(between)s 4406(w)s 2(ords)k 5040(are)s
+5387(con)s 9(v)k 3(erted)k 6376(into)s 6801(concatenation)s
+8186(symbols.)s 480 2121(These)m 1136(are)s 1512(the)s 1889(most)s
+2443(signi\207cant)s 3528(of)s 3828(Lout')s 13(s)k 4519(object-b)s 4(uilding)k
+6058(symbols.)s 7049(There)s 7691(are)s 8067(others,)s 8788(for)s
+0 1833(changing)m 924(fonts,)s 1501(controlling)s 2596(paragraph)s 3601(breaking,)s
+4538(printing)s 5340(graphical)s 6277(objects)s 6997(lik)s 2(e)k
+7402(box)s 3(es)k 8001(and)s 8397(circles,)s 0 1545(and)m
+404(so)s 670(on,)s 1017(b)s 4(ut)k 1379(the)s 3(y)k
+1842(do)s 2135(not)s 2501(add)s 2905(an)s 3(ything)k
+3793(ne)s 6(w)k 4240(in)s 4483(principle.)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1
+0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 4 10
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(4)m 240 fnt6 8382 -1580(Chapter)m 9232(1.)s
+9506(Principles)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+240 fnt5 0 13203(1.2.)m 471(De\207nitions)s
+
+[ /Dest /LOUTdefinitions /DEST pdfmark
+240 fnt1 480 12772(The)m 897(features)s 1691(of)s 1950(Lout)s
+2451(are)s 2786(v)s 3(ery)k 3250(general.)s 4105(The)s 3(y)k
+4637(do)s 4918(not)s 5272(assume)s 6020(that)s 6427(documents)s
+7503(are)s 7838(composed)s 8855(of)s 0 12484(pages,)m 637(nor)s
+1001(that)s 1403(there)s 1921(are)s 2252(such)s 2733(things)s
+3353(as)s 3588(mar)s 4(gins)k 4389(and)s 4778(footnotes,)s
+5759(for)s 6082(e)s 3(xample.)k 240 fnt6 7037 12486(De\207nitions)m
+
+[ /Dest /LOUT19_4637_pri_defi_1 /DEST pdfmark
+240 fnt1 8127 12484(bridge)m 8778(the)s 0 12196(g)m 1(ap)k
+397(between)s 1249(Lout')s 13(s)k 1910(general)s 2666(features)s
+3470(and)s 3873(the)s 4219(special)s 4935(features)s 5740(\211)s
+5918(footnotes,)s 6913(equations,)s 7936(pages)s 8530(\211)s 8708(that)s
+0 11908(particular)m 991(documents)s 2097(require.)s 2954(The)s 3(y)k
+3515(hold)s 4017(the)s 4382(instr)s 4806(uct)s 5098(ions)s
+5566(for)s 5922(producing)s 6963(these)s 7528(special)s 8264(features,)s
+0 11620(con)m 9(v)k 3(eniently)k 1278(packaged)s 2240(ready)s
+2825(for)s 3163(use.)s 480 11246(F)m 3(or)k 885(e)s 3(xample,)k
+1815(consider)s 2701(the)s 3065(challenge)s 4053(posed)s 4686(by)s
+4996(`)s 5057(T)s 5153 11198(E)m 5261 11246(X)m 5430(',)s
+5633(which)s 6291(is)s 6517(the)s 6881(name)s 7471(of)s
+7758(one)s 8176(of)s 8464(Lout')s 13(s)k 0 10958(most)m
+525(illustrious)s 1531(ri)s 6(v)k 6(als)k 2100([)s
+
+[ /Rect [2171 10955 2284 11122] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTknuth1984tex /ANN pdfmark
+2171(6)s 2284(].)s 2527(Lout)s 3039(solv)s 3(es)k
+3685(it)s 3877(easily)s 4488(enough,)s 5301(lik)s 2(e)k
+5713(this:)s 220 fnt2 480 10457(T{ /0.2f)m 6(o E }X)k 240 fnt1
+0 9963(b)m 4(ut)k 373(to)s 624(type)s 1103(this)s
+1511(e)s 6(v)k 3(ery)k 2098(time)s 2590(T)s
+2686 9915(E)m 2794 9963(X)m 3035(is)s 3256(mentioned)s 4336(w)s 2(ould)k
+5002(be)s 5296(tedious)s 6050(and)s 6465(error)s 4(-prone.)k
+7724(So)s 8041(we)s 8388(place)s 8960(a)s 0 9675(de\207nition)m
+974(at)s 1206(the)s 1554(be)s 3(ginning)k 2562(of)s
+2833(the)s 3181(document:)s 220 fnt2 480 9174(def @T)m 26(eX { )k 11(T{ /0.2f)k 6(o E }X })k
+240 fnt1 0 8680(No)m 6(w)k 220 fnt2 514 8677(@T)m 26(eX)k
+240 fnt1 1169 8680(stands)m 1818(for)s 2156(the)s 2504(object)s
+3148(follo)s 6(wing)k 4125(it)s 4317(between)s 5171(braces,)s
+5888(and)s 6292(we)s 6627(may)s 7093(write)s 220 fnt2
+480 8179(consider)m 1370(the)s 1728(challenge)s 2719(posed)s 3366(b)s 4(y)k
+3653(`@T)s 26(eX',)k 4451(\202)s 240 fnt1 0 7680(as)m
+250(the)s 598(author)s 1269(did)s 1633(earlier)s 2301(in)s
+2544(this)s 2940(paragraph.)s 480 7306(A)m 240 fnt6 706 7308(symbol)m
+
+[ /Dest /LOUT19_4637_pri_defi_2 /DEST pdfmark
+240 fnt1 1440 7306(is)m 1646(a)s 1808(name,)s 2429(lik)s 2(e)k
+220 fnt2 2837 7303(@T)m 26(eX)k 240 fnt1 3432 7306(,)m
+3535(which)s 4172(stands)s 4817(for)s 5151(something)s 6197(other)s
+6744(than)s 7209(itself.)s 7845(The)s 8269(initial)s 220 fnt2
+8875 7303(@)m 240 fnt1 0 7018(is)m 201(not)s 558(compulsory)s 15(,)k
+1771(b)s 4(ut)k 2124(it)s 2307(does)s 2788(mak)s 2(e)k
+3351(the)s 3690(name)s 4254(stand)s 4808(out)s 5165(clearly)s 15(.)k
+5954(A)s 240 fnt6 6175 7020(de\207nition)m 240 fnt1 7124 7018(of)m
+7386(a)s 7543(symbol)s 8293(declares)s 0 6730(a)m 164(name)s
+736(to)s 973(be)s 1253(a)s 1417(symbol,)s 2227(and)s
+2629(says)s 3090(what)s 3613(the)s 3959(symbol)s 4717(stands)s
+5364(for)s 13(.)k 5791(The)s 240 fnt6 6217 6732(body)m
+240 fnt1 6737 6730(of)m 7006(a)s 7170(de\207nition)s
+[ /Dest /LOUT19_4637_pri_defi_3 /DEST pdfmark
+8142(is)s
+8350(the)s 8695(part)s 0 6442(follo)m 6(wing)k 977(the)s
+1325(name,)s 1950(between)s 2804(the)s 3152(braces.)s 3926(T)s 19(o)k
+240 fnt6 4226 6444(in)m 9(vok)k 2(e)k
+[ /Dest /LOUT19_4637_pri_defi_4 /DEST pdfmark
+240 fnt1
+4892 6442(a)m 5058(symbol)s 5818(is)s 6028(to)s 6267(mak)s 2(e)k
+6839(use)s 7214(of)s 7485(it.)s 480 6068(Another)m 1324(e)s 3(xpression)k
+2401(ripe)s 2828(for)s 3166(packaging)s 4203(in)s 4446(a)s
+4612(de\207nition)s 5586(is)s 220 fnt2 480 5567(@OneRo)m 3(w { | -2p @F)k 6(ont n ^/0.5fk 2 })k
+240 fnt1 0 5025(which)m 642(produces)s 200 fnt1 1671 5142(n)m
+240 fnt1 1557 5025(2)m 1828(\(see)s 2268(Chapter)s 3085(2\).)s
+3448(But)s 3854(this)s 4250(time)s 4730(we)s 5065(w)s 2(ould)k
+5720(lik)s 2(e)k 6132(to)s 6371(be)s 6653(able)s
+7107(to)s 7346(write)s 240 fnt6 480 4522(object)m 220 fnt2
+1188 4517(@Super)m 240 fnt6 2116 4522(object)m 240 fnt1 0 3920(so)m
+296(that)s 220 fnt2 745 3917(a)m 953(@Super)s 1853(2)s
+240 fnt1 2055 3920(w)m 2(ould)k 2741(come)s 3345(out)s
+3742(as)s 200 fnt1 4128 4049(2)m 240 fnt1 4022 3920(a)m
+4223(,)s 4361(and)s 4796(so)s 5092(on,)s 5470(for)s
+5838(in)s 6112(this)s 6538(w)s 2(ay)k 7020(the)s
+7398(usefulness)s 8476(of)s 8778(the)s 0 3632(de\207nition)m 974(is)s
+1184(greatly)s 1901(increased.)s 2967(Here)s 3487(is)s 3697(ho)s 6(w)k
+4158(it)s 4350(is)s 4560(done:)s 220 fnt2 480 3131(def @Super)m
+480 2843( left x)m 480 2555( r)m -3(ight y)k 480 2267({ @OneRo)m 3(w { | -2p @F)k 6(ont y ^/0.5fk x })k
+480 1979(})m 240 fnt1 0 1485(This)m 492(de\207nition)s 1483(says)s
+1963(that)s 220 fnt2 2398 1482(@Super)m 240 fnt1 3283 1485(has)m
+3669(tw)s 2(o)k 240 fnt6 4096 1487(par)m 3(ameter)k 2(s)k
+240 fnt1 5176 1485(,)m
+[ /Dest /LOUT19_4637_pri_defi_5 /DEST pdfmark
+220 fnt2 5300 1482(x)m 240 fnt1
+5485 1485(and)m 220 fnt2 5906 1482(y)m 240 fnt1 6014 1485(.)m
+6194(When)s 220 fnt2 6840 1482(@Super)m 240 fnt1 7725 1485(is)m
+7952(in)s 9(v)k 4(ok)k 2(ed,)k 8833(all)s
+0 1197(occurrences)m 1205(of)s 220 fnt2 1490 1194(x)m 240 fnt1
+1671 1197(in)m 1928(the)s 2289(body)s 2837(will)s 3276(be)s
+3572(replaced)s 4452(by)s 4760(the)s 5121(object)s 5779(just)s
+6197(to)s 6450(the)s 6811(left)s 7202(of)s 220 fnt2
+7486 1194(@Super)m 240 fnt1 8294 1197(,)m 8415(and)s 8833(all)s
+0 909(occurrences)m 1192(of)s 220 fnt2 1462 906(y)m 240 fnt1
+1630 909(will)m 2055(be)s 2337(replaced)s 3203(by)s 3496(the)s
+3844(object)s 4487(just)s 4892(to)s 5130(the)s 5477(right.)s
+6092(So,)s 6451(for)s 6789(e)s 3(xample,)k 7702(the)s
+8049(e)s 3(xpression)k 220 fnt2 480 408(2 @Super { Slope @F)m 6(ont n })k
+
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 5 11
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1579(1.2.)m 1871(De\207nitions)s 240 fnt5 10370 -1582(5)m
+gsave
+1417 -15423 translate
+240 fnt1 9066 13369 0 13260 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+0 13206(is)m 210(equal)s 783(to)s 220 fnt2
+480 12705(@OneRo)m 3(w { | -2p @F)k 6(ont { Slope @F)k 6(ont n } ^/0.5fk 2 })k 240 fnt1
+0 12154(and)m 404(so)s 670(comes)s 1332(out)s 1698(as)s
+200 fnt6 2062 12284(n)m 240 fnt1 1948 12154(2)m 2157(.)s
+480 11780(Lout)m 994(permits)s 1764(de\207nitions)s 2828(to)s 3070(in)s 9(v)k 4(ok)k 2(e)k
+3765(themselv)s 3(es,)k 4934(a)s 5103(peculiarly)s 6115(circular)s
+6905(thing)s 7453(to)s 7695(do)s 7991(which)s 8636(goes)s
+0 11492(by)m 294(the)s 642(name)s 1216(of)s
+[ /Dest /LOUT19_4637_pri_defi_6 /DEST pdfmark
+240 fnt6
+1487 11494(r)m 8(ecur)k 2(sion.)k 240 fnt1 2548 11492(Here)m
+3068(is)s 3278(an)s 3561(e)s 3(xample)k 4424(of)s
+4695(a)s 4861(recursi)s 6(v)k 3(e)k 5783(de\207nition:)s
+220 fnt2 480 10991(def @Leaders { ..)m 13( @Leaders })k 240 fnt1 0 10497(The)m
+418(usual)s 968(rule)s 1384(is)s 1584(that)s 1991(the)s
+2329(v)s 6(alue)k 2886(of)s 3147(an)s 3420(in)s 9(v)k 4(ocation)k
+4463(of)s 4724(a)s 4879(symbol)s 5629(is)s 5828(a)s
+5984(cop)s 2(y)k 6492(of)s 6752(the)s 7090(body)s
+7613(of)s 7874(the)s 8211(symbol')s 13(s)k 0 10209(de\207nition,)m
+1024(so)s 1290(the)s 1638(v)s 6(alue)k 2206(of)s
+220 fnt2 2477 10206(@Leaders)m 240 fnt1 3546 10209(must)m 4071(be)s
+220 fnt2 480 9727(..)m 13( @Leaders)k 240 fnt1 0 9272(But)m
+406(no)s 6(w)k 867(this)s 1263(rule)s 1690(applies)s
+2418(to)s 2657(this)s 3053(ne)s 6(w)k 3500(in)s 9(v)k 4(ocation)k
+4554(of)s 220 fnt2 4825 9269(@Leaders)m 240 fnt1 5834 9272(;)m
+5946(substituting)s 7115(its)s 7391(body)s 7925(gi)s 6(v)k 3(es)k
+220 fnt2 480 8771(..)m 13( ..)k 13( @Leaders)k 240 fnt1
+0 8316(and)m 408(so)s 679(on)s 980(fore)s 6(v)k 3(er)k 13(.)k
+1816(In)s 2076(order)s 2645(to)s 2888(mak)s 2(e)k
+3465(this)s 3865(useful,)s 4561(an)s 4848(in)s 9(v)k 4(ocation)k
+5907(of)s 6182(a)s 6353(recursi)s 6(v)k 3(e)k
+7279(symbol)s 8044(is)s 8259(replaced)s 0 8028(by)m 294(its)s
+570(body)s 1104(only)s 1584(if)s 1801(suf\207cient)s 2750(space)s
+3337(is)s 3547(a)s 4(v)k 6(ailable.)k 4563(So,)s
+4923(for)s 5261(e)s 3(xample,)k 220 fnt2 480 7527(4i @Wide { Chapter 7 @Leaders 62 })m
+240 fnt1 0 7031(has)m 370(for)s 708(its)s 984(result)s
+1574(the)s 1922(object)s 480 6527(Chapter)m 1297(7)s 1525(..)s
+1809(..)s 2093(..)s 2377(..)s 2661(..)s 2945(..)s
+3229(..)s 3513(..)s 3797(..)s 4081(..)s 4365(..)s
+4649(..)s 4933(..)s 5217(..)s 5501(..)s 5785(62)s
+0 6024(with)m 478(Lout)s 985(checking)s 1897(before)s 2558(each)s
+3049(replacement)s 4271(of)s 220 fnt2 4537 6021(@Leaders)m 240 fnt1
+5601 6024(by)m 220 fnt2 5891 6021(..)m 6177(@Leaders)s 240 fnt1
+7241 6024(that)m 7654(the)s 7997(total)s 8471(length)s 0 5736(afterw)m 2(ards,)k
+1112(including)s 2069(the)s 2417(other)s 2968(w)s 2(ords,)k
+3658(w)s 2(ould)k 4313(not)s 4679(e)s 3(xceed)k
+5398(four)s 5856(inches.)s 480 5362(The)m 902(remaining)s 1918(issue)s
+2445(is)s 2649(what)s 3168(happens)s 3997(when)s 4567(Lout)s
+5072(decides)s 5834(that)s 6246(it)s 6431(is)s 6635(time)s
+7109(to)s 7341(stop.)s 7898(The)s 8319(ob)s 3(vious)k
+0 5074(thing)m 545(to)s 784(do)s 1077(is)s 1287(to)s
+1526(replace)s 2271(the)s 2619(last)s 3010(in)s 9(v)k 4(ocation)k
+4064(by)s 4358(an)s 4641(empty)s 5293(object:)s 220 fnt2
+480 4576(..)m 13( ..)k 13( ..)k 13( ..)k 13( ..)k 13( ..)k 13( ..)k 13( ..)k 13( {})k
+240 fnt1 0 4082(As)m 316(the)s 662(e)s 3(xample)k
+1524(sho)s 6(ws,)k 2222(this)s 2617(w)s 2(ould)k
+3270(lea)s 4(v)k 3(e)k 3822(a)s 3986(small)s
+4556(trailing)s 5297(space,)s 5933(which)s 6574(is)s 6782(a)s
+6947(major)s 7562(headache.)s 8614(Lout)s 0 3794(\207x)m 3(es)k
+517(this)s 930(by)s 1242(replacing)s 2201(the)s 2566(last)s
+2975(in)s 9(v)k 4(ocation)k 4046(with)s 4545(a)s
+4729(dif)s 6(ferent)k 5621(kind)s 6122(of)s 6411(empty)s
+7080(object,)s 7788(called)s 220 fnt2 8434 3791(@Null)m 240 fnt1
+9019 3794(,)m 0 3506(whose)m 677(ef)s 6(fect)k 1282(is)s
+1501(to)s 1749(mak)s 2(e)k 2330(an)s 2623(adjacent)s
+3488(concatenation)s 4882(symbol)s 5651(disappear)s 9(,)k 6674(preferably)s
+7718(one)s 8130(preceding)s 0 3218(the)m 220 fnt2 348 3215(@Null)m
+240 fnt1 933 3218(.)m 1097(Thus,)s 1683(when)s 2259(Lout)s
+2771(replaces)s 220 fnt2 3604 3215(@Leaders)m 240 fnt1 4673 3218(by)m
+220 fnt2 4967 3215(@Null)m 240 fnt1 5612 3218(in)m 5855(the)s
+6203(e)s 3(xpression)k 220 fnt2 480 2717(..)m 13( ..)k 13( ..)k 13( ..)k 13( ..)k 13( ..)k 13( ..)k 13( ..)k 13( @Leaders)k
+240 fnt1 0 2262(the)m 348(trailing)s 1089(space,)s 1727(which)s
+2368(is)s 2577(really)s 3174(a)s 3339(horizontal)s 4362(concatenation)s
+5747(symbol,)s 6558(disappears)s 7617(as)s 7867(well.)s 8441(This)s
+8916(is)s 0 1974(tak)m 2(en)k 573(into)s 998(account)s
+1802(when)s 2378(deciding)s 3255(whether)s 4085(there)s 4618(is)s
+4828(room)s 5393(to)s 5632(replace)s 220 fnt2 6377 1971(@Leaders)m
+240 fnt1 7446 1974(by)m 7740(its)s 8016(body)s 15(.)k
+480 1600(The)m 903(remainder)s 1926(of)s 2192(this)s 2583(section)s
+3312(is)s 3517(de)s 6(v)k 4(oted)k 4318(to)s
+4552(sho)s 6(wing)k 5406(ho)s 6(w)k 5862(de\207nitions)s
+6918(may)s 7379(be)s 7656(used)s 8148(to)s 8382(specify)s
+0 1312(the)m 240 fnt6 348 1314(pa)m 2(g)k 2(e)k
+863(layout)s
+[ /Dest /LOUT19_4637_pri_defi_7 /DEST pdfmark
+240 fnt1 1525 1312(of)m 1796(a)s 1962(document.)s
+3070(T)s 19(o)k 3370(be)s 3(gin)k 3956(with,)s
+4488(we)s 4823(can)s 5212(de\207ne)s 5853(a)s 6019(page)s
+6527(lik)s 2(e)k 6939(this:)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 6 12
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+%%+ font Symbol
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+%%IncludeResource: font Symbol
+/fnt4 { /Symbol LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(6)m 240 fnt6 8382 -1580(Chapter)m 9232(1.)s
+9506(Principles)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+220 fnt2 480 13207(def @P)m 8(age)k
+480 12919({)m 480 12631( //1i ||1i)m 480 12343( 6i @Wide 9.5i @High)m 480 12055( { @T)m 26(e)k 6(xtPlace //1r)k -8(t @F)k 6(ootSect })k
+480 11767( ||1i //1i)m 480 11479(})m 240 fnt1 0 10985(No)m 6(w)k
+220 fnt2 520 10982(@P)m 8(age)k 240 fnt1 1306 10985(is)m
+1523(an)s 1813(eight)s 2358(by)s 2659(ele)s 6(v)k 3(en)k
+3338(and)s 3749(a)s 3922(half)s 4371(inch)s 4847(object,)s
+5545(with)s 6034(one)s 6443(inch)s 6919(mar)s 4(gins,)k
+7799(a)s 7972(place)s 8539(at)s 8778(the)s 0 10697(top)m
+367(for)s 713(te)s 3(xt,)k 1183(and)s 1595(a)s
+1769(section)s 2511(at)s 2751(the)s 3108(bottom)s 3854(for)s
+4200(footnotes)s 5149(\(since)s 220 fnt2 5783 10694(//1r)m -8(t)k
+240 fnt1 6233 10697(bottom-justi\207es)m 7792(the)s 8149(follo)s 6(wing)k
+0 10409(object\).)m 827(It)s 1032(will)s 1458(be)s 1740(con)s 9(v)k 3(enient)k
+2838(for)s 3176(us)s 3440(to)s 3679(sho)s 6(w)k
+4233(the)s 4581(ef)s 6(fect)k 5177(of)s 5448(in)s 9(v)k 4(oking)k
+220 fnt2 6340 10406(@P)m 8(age)k 240 fnt1 7119 10409(lik)m 2(e)k
+7531(this:)s 160 fnt2 480 9308(@P)m 6(age)k 220 fnt4
+1240 9294(\336)m gsave
+1690 7575 translate
+220 fnt2 1927 2494 0 2494 220 288 61 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto xsize ysize lineto
+0 ysize lineto closepath stroke
+grestore
+160 fnt2 170 2207(@T)m 19(e)k 4(xtPlace)k
+170 173(@F)m 4(ootSect)k
+grestore
+240 fnt1 0 7124(with)m 482(the)s
+830(in)s 9(v)k 4(ok)k 2(ed)k 1645(symbol)s
+2405(appearing)s 3401(to)s 3640(the)s 3988(left)s 4365(of)s
+4636(the)s 4984(arro)s 6(w)k 15(,)k 5627(and)s
+6031(its)s 6307(body)s 6841(to)s 7080(the)s 7428(right.)s
+480 6750(The)m 908(de\207nition)s 1882(of)s 2153(a)s 2319(v)s 3(ertical)k
+3086(list)s 3437(of)s 3708(pages)s 4304(should)s 5001(come)s
+5575(as)s 5825(no)s 6118(surprise:)s 220 fnt2 480 6249(def @P)m 8(ageList)k
+480 5961({)m 480 5673( @P)m 8(age // @P)k 8(ageList)k 480 5385(})m
+240 fnt1 0 4891(This)m 476(allo)s 6(ws)k 1145(in)s 9(v)k 4(ocations)k
+2286(lik)s 2(e)k 2698(the)s 3046(follo)s 6(wing:)k
+
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 7 13
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+%%+ font Symbol
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+%%IncludeResource: font Symbol
+/fnt4 { /Symbol LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1579(1.2.)m 1871(De\207nitions)s 240 fnt5 10368 -1582(7)m
+gsave
+1417 -15423 translate
+240 fnt1 9066 13369 0 13369 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+gsave
+480 0 translate
+1.0867 1.0000 scale
+160 fnt2 0 12608(@P)m 6(ageList)k 220 fnt4
+890 12594(\336)m gsave
+1220 10875 translate
+220 fnt2 1927 2494 0 2494 220 288 61 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto xsize ysize lineto
+0 ysize lineto closepath stroke
+grestore
+160 fnt2 170 2207(@T)m 19(e)k 4(xtPlace)k
+170 173(@F)m 4(ootSect)k
+grestore
+160 fnt2 1220 10645(@P)m 6(ageList)k
+220 fnt4 3267 12594(\336)m gsave
+3597 10875 translate
+220 fnt2 1927 2494 0 2494 220 288 61 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto xsize ysize lineto
+0 ysize lineto closepath stroke
+grestore
+160 fnt2 170 2207(@T)m 19(e)k 4(xtPlace)k
+170 173(@F)m 4(ootSect)k
+grestore
+gsave
+3597 8381 translate
+220 fnt2 1927 2494 0 2494 220 288 61 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto xsize ysize lineto
+0 ysize lineto closepath stroke
+grestore
+160 fnt2 170 2207(@T)m 19(e)k 4(xtPlace)k
+170 173(@F)m 4(ootSect)k
+grestore
+160 fnt2 3597 8151(@P)m 6(ageList)k
+220 fnt4 5644 12594(\336)m gsave
+5974 10875 translate
+220 fnt2 1927 2494 0 2494 220 288 61 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto xsize ysize lineto
+0 ysize lineto closepath stroke
+grestore
+160 fnt2 170 2207(@T)m 19(e)k 4(xtPlace)k
+170 173(@F)m 4(ootSect)k
+grestore
+gsave
+5974 8381 translate
+220 fnt2 1927 2494 0 2494 220 288 61 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto xsize ysize lineto
+0 ysize lineto closepath stroke
+grestore
+160 fnt2 170 2207(@T)m 19(e)k 4(xtPlace)k
+170 173(@F)m 4(ootSect)k
+grestore
+
+grestore
+0 7665(setting)m 220 fnt2 750 7662(@P)m 8(ageList)k
+240 fnt1 1874 7665(to)m 200 fnt2 2113 7667(@Null)m 240 fnt1
+2706 7665(on)m 3003(the)s 3351(last)s 3742(step.)s 4291(An)s 3(y)k
+4755(number)s 5546(of)s 5817(pages)s 6413(can)s 6802(be)s
+7084(generated.)s 480 7291(A)m 703(de\207nition)s 1669(for)s 220 fnt2
+1999 7288(@T)m 26(e)k 6(xtPlace)k 240 fnt1 3209 7291(is)m
+3411(be)s 3(yond)k 4164(us)s 4420(at)s 4644(present,)s
+5433(since)s 220 fnt2 5972 7288(@T)m 26(e)k 6(xtPlace)k
+240 fnt1 7182 7291(must)m 7699(be)s 7973(replaced)s 8832(by)s
+0 7003(dif)m 6(ferent)k 877(parts)s 1394(of)s 1667(the)s
+2018(te)s 3(xt)k 2435(of)s 2708(the)s 3059(document)s
+4065(on)s 4364(dif)s 6(ferent)k 5242(pages.)s 5953(But)s
+6361(we)s 6699(can)s 7090(de\207ne)s 220 fnt2 7733 7000(@F)m 6(ootSect)k
+240 fnt1 8887 7003(to)m 0 6715(be)m 282(a)s 448(small)s
+1020(space)s 1607(follo)s 6(wed)k 2509(by)s 2803(a)s
+2969(horizontal)s 3993(line)s 4407(follo)s 6(wed)k 5309(by)s
+5603(a)s 5769(list)s 6120(of)s 6391(places)s 7039(where)s
+7679(footnotes)s 8620(go:)s 220 fnt2 480 6214(def @F)m 6(ootList )k
+480 5926({ )m 480 5638( @F)m 6(ootPlace //0.3v @F)k 6(ootList)k 480 5350(} )m
+480 5062( )m 480 4774(def @F)m 6(ootSect)k 480 4486({ )m 480 4198( //0.3v 1i @Wide @HLine)m
+480 3910( //0.3v @F)m 6(ootList )k 480 3622(} )m 240 fnt1 0 3128(assuming)m
+950(that)s 220 fnt2 1360 3125(@HLine)m 240 fnt1 2199 3128(will)m
+2617(produce)s 3436(a)s 3594(horizontal)s 4610(line)s 5016(of)s
+5279(the)s 5619(indicated)s 6545(width.)s 7246(W)s 9(ith)k
+7764(this)s 8152(de\207nition)s 0 2840(we)m 335(can)s 724(generate)s
+1589(pages)s 2185(lik)s 2(e)k 2597(this:)s gsave
+480 6 translate
+220 fnt2
+1927 2494 0 2494 220 288 61 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto xsize ysize lineto
+0 ysize lineto closepath stroke
+grestore
+160 fnt2 170 2207(@T)m 19(e)k 4(xtPlace)k 170 173(@F)m 4(ootSect)k
+
+grestore
+220 fnt4 2647 1725(\336)m gsave
+3097 6 translate
+220 fnt2 1927 2494 0 2494 220 288 61 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto xsize ysize lineto
+0 ysize lineto closepath stroke
+grestore
+160 fnt2 170 2207(@T)m 19(e)k 4(xtPlace)k
+567 0 0 0 160 180 44 170 346 LoutGr2
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+170 173(@F)m 4(ootList)k
+grestore
+5264(\336)s gsave
+5714 6 translate
+220 fnt2 1927 2494 0 2494 220 288 61 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto xsize ysize lineto
+0 ysize lineto closepath stroke
+grestore
+160 fnt2
+170 2207(@T)m 19(e)k 4(xtPlace)k 567 0 0 0 160 180 44 170 522 LoutGr2
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+170 349(@F)m 4(ootPlace)k
+170 173(@F)m 4(ootList)k
+grestore
+
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 8 14
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(8)m 240 fnt6 8382 -1580(Chapter)m 9232(1.)s
+9506(Principles)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+0 13205(and)m 404(so)s 670(on)s
+967(for)s 1305(arbitrarily)s 2312(man)s 3(y)k 2895(footnotes.)s
+480 12831(W)m 19(e)k 852(will)s 1281(see)s 1646(in)s
+1892(the)s 2244(ne)s 3(xt)k 2716(section)s 3454(ho)s 6(w)k
+3918(in)s 9(v)k 4(ocations)k 5063(of)s 220 fnt2
+5337 12828(@P)m 8(ageList,)k 6511(@F)s 6(ootSect)k 240 fnt1
+7665 12831(and)m 220 fnt2 8073 12828(@F)m 6(ootList)k 240 fnt1
+0 12543(are)m 356(replaced)s 1232(by)s 1535(their)s 2041(bodies)s
+2726(only)s 3216(when)s 3801(the)s 4158(need)s 4677(to)s
+4925(insert)s 5524(te)s 3(xt)k 5949(and)s 6362(footnotes)s
+7312(obliges)s 8063(Lout)s 8584(to)s 8833(do)s 0 12255(so;)m
+352(otherwise)s 1364(the)s 1740(in)s 9(v)k 4(ocations)k
+2908(are)s 3283(replaced)s 4177(by)s 220 fnt2 4499 12252(@Null)m
+240 fnt1 5084 12255(.)m 5275(In)s 5559(this)s 5982(w)s 2(ay)k 15(,)k
+6499(the)s 6874(right)s 7413(number)s 8231(of)s 8530(pages)s
+0 11967(is)m 223(made,)s 862(the)s 1224(small)s 1810(line)s
+2238(appears)s 3033(only)s 3527(on)s 3838(pages)s 4447(that)s
+4879(ha)s 4(v)k 3(e)k 5394(at)s 5640(least)s
+6151(one)s 6567(footnote,)s 7485(and)s 7903(unnecessary)s 0 11679(concatenation)m
+1385(symbols)s 2234(disappear)s 13(.)k 480 11305(This)m 958(approach)s
+1894(to)s 2135(page)s 2645(layout)s 3305(is)s 3517(the)s
+3867(most)s 4394(original)s 5194(contrib)s 4(ution)k 6418(Lout)s
+6932(has)s 7304(made)s 7880(to)s 8122(document)s 0 11017(formatting.)m
+1172(It)s 1377(is)s 1587(e)s 3(xtraordinarily)k 3057(\210e)s 3(xible.)k
+3935(T)s 19(w)k 2(o-column)k 5207(pages?)s 5971(Use)s
+220 fnt2 480 10516({2.8i @Wide @T)m 26(e)k 6(xtPlace} ||0.4i {2.8i @Wide @T)k 26(e)k 6(xtPlace})k
+240 fnt1 0 10022(instead)m 768(of)s 220 fnt2 1072 10019(@T)m 26(e)k 6(xtPlace)k
+240 fnt1 2230 10022(.)m 2427(F)s 3(ootnotes)k 3452(in)s
+3728(smaller)s 4523(type?)s 5187(Use)s 220 fnt2 5648 10019(-2p)m
+6051(@F)s 6(ont)k 6797(@F)s 6(ootPlace)k 240 fnt1
+8086 10022(instead)m 8855(of)s 220 fnt2 0 9731(@F)m 6(ootPlace)k
+240 fnt1 1196 9734(.)m 1360(And)s 1831(on)s 2128(and)s
+2532(on.)s 240 fnt5 0 8986(1.3.)m 471(Cr)s 4(oss)k
+1106(r)s 4(efer)k 4(ences)k
+[ /Dest /LOUTcross /DEST pdfmark
+240 fnt1 480 8554(A)m
+705(cross)s 1241(reference)s
+[ /Dest /LOUT19_4637_pri_cros_1 /DEST pdfmark
+2178(in)s 2415(common)s 3304(terminology)s
+4521(is)s 4725(something)s 5769(lik)s 2(e)k 6176(`see)s
+6610(T)s 19(able)k 7185(6')s 7411(or)s 7664(`see)s
+8098(page)s 8600(57')s 8946(\211)s 0 8266(a)m 168(reference)s
+1114(within)s 1785(a)s 1954(document)s 2961(to)s 3202(some)s
+3766(other)s 4320(part)s 4754(of)s 5028(it.)s 5327(Readers)s
+6150(\207nd)s 6584(them)s 7125(v)s 3(ery)k 7604(useful,)s
+8298(b)s 4(ut)k 8663(the)s 3(y)k 0 7978(are)m
+343(a)s 504(major)s 1116(problem)s 1969(for)s 2302(authors.)s
+3165(As)s 3478(the)s 3821(document)s 4820(is)s 5025(re)s 6(vised,)k
+5812(T)s 19(able)k 6388(6)s 6556(becomes)s 7440(T)s 19(able)k
+8016(7,)s 8238(the)s 8581(thing)s 0 7690(on)m 297(page)s
+805(57)s 1093(mo)s 3(v)k 3(es)k 1763(to)s
+2002(page)s 2510(63,)s 2857(and)s 3261(all)s 3554(the)s
+3902(cross)s 4444(references)s 5475(must)s 6000(be)s 6282(changed.)s
+480 7316(The)m 918(Scribe)s
+[ /Dest /LOUT19_4637_pri_cros_2 /DEST pdfmark
+1595(document)s 2609(formatter)s 9(,)k
+3605(de)s 6(v)k 3(eloped)k 4649(by)s 4953(Brian)s
+5552(K.)s 5839(Reid)s 6360([)s
+[ /Rect [6431 7315 6539 7474] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTreid1980scribe /ANN pdfmark
+6431(7)s 6539(],)s
+
+[ /Dest /LOUT19_4637_pri_cros_3 /DEST pdfmark
+6736(introduced)s 7827(a)s 8004(scheme)s 8788(for)s 0 7028(k)m 2(eeping)k
+804(track)s 1337(of)s 1603(cross)s 2140(references.)s 3279(It)s
+3479(allo)s 6(ws)k 4143(you)s 4553(to)s 4787(gi)s 6(v)k 3(e)k
+5241(names)s 5898(to)s 6132(tables,)s 6791(\207gures,)s 7544(etc.,)s
+7984(and)s 8383(to)s 8617(refer)s 0 6740(to)m 233(them)s
+764(by)s 1051(name.)s 1726(The)s 2147(formatter)s 3087(inserts)s
+3754(the)s 4095(appropriate)s 5233(numbers)s 6101(in)s 6337(place)s
+6890(of)s 7154(the)s 7495(names,)s 8206(so)s 8465(that)s
+8876(as)s 0 6452(the)m 342(document)s 1339(is)s 1543(re)s 6(vised,)k
+2327(the)s 2669(cross)s 3204(references)s 4229(are)s 4569(k)s 2(ept)k
+5033(up)s 5319(to)s 5552(date)s 5999(automatically)s 15(.)k
+7442(Lout)s 7947(has)s 8310(adopted)s 0 6164(and)m 404(e)s 3(xtended)k
+1323(this)s 1719(scheme.)s 480 5790(In)m 726(Lout,)s 1275(automatic)s
+2260(cross)s 2792(referencing)s 3922(w)s 2(orks)k 4546(in)s
+4779(the)s 5117(follo)s 6(wing)k 6084(w)s 2(ay)k 15(.)k
+6620(First)s 7107(de\207ne)s 7738(a)s 7894(symbol)s 8644(with)s
+0 5502(a)m 166(parameter)s 1180(with)s 1662(the)s 2010(special)s
+2728(name)s 220 fnt2 3302 5499(@T)m 26(ag:)k 480 5001(def @T)m 26(ab)k 4(le)k
+480 4713( left @T)m 26(ag)k 480 4425( r)m -3(ight @V)k 15(alue)k
+480 4137({)m 480 3849( ||1i @V)m 15(alue)k 480 3561(})m 240 fnt1
+0 3067(When)m 643(this)s 1054(symbol)s 1829(is)s 2054(in)s 9(v)k 4(ok)k 2(ed,)k
+2933(the)s 3296(v)s 6(alue)k 3879(gi)s 6(v)k 3(en)k
+4474(to)s 220 fnt2 4727 3064(@T)m 26(ag)k 240 fnt1
+5365 3067(should)m 6077(be)s 6374(a)s 6555(simple)s 7263(w)s 2(ord)k
+7826(lik)s 2(e)k 220 fnt2 8253 3064(cities)m 240 fnt1
+8745 3067(,)m 8867(or)s 0 2779(se)m 6(v)k 3(eral)k
+722(simple)s 1415(w)s 2(ords)k 2049(juxtaposed)s 3144(lik)s 2(e)k
+220 fnt2 3556 2776(cities compare)m 240 fnt1 4962 2779(;)m 5074(it)s
+5266(serv)s 3(es)k 5911(to)s 6150(name)s 6724(the)s
+7072(in)s 9(v)k 4(ocation:)k 220 fnt2 480 2278({ cities compare } @T)m 26(ab)k 4(le)k
+480 1990({)m 480 1702( )m 8(W)k 8(ashington |0.5i Canberr)k 2(a)k
+480 1414(})m 240 fnt1 0 920(W)m 19(e)k 410(may)s
+917(no)s 6(w)k 1419(refer)s 1969(to)s 2249(this)s
+2686(in)s 9(v)k 4(ocation)k 3782(else)s 6(where)k
+4828(in)s 5112(the)s 5501(document,)s 6593(using)s 7206(the)s
+240 fnt6 7595 922(cr)m 10(oss)k 8187(r)s 8(efer)k 8(ence)k
+220 fnt2 0 629(@T)m 26(ab)k 4(le&&{ cities compare }.)k 240 fnt1
+2918 632(Here)m 220 fnt2 3480 629(&&)m 240 fnt1 3870 632(is)m
+4122(the)s 240 fnt6 4511 634(cr)m 10(oss)k 5103(r)s 8(efer)k 8(ence)k
+6084(symbol)s 240 fnt1 6762 632(;)m 6916(its)s 7233(left)s
+7652(parameter)s 8708(is)s 8960(a)s 0 344(symbol)m 772(and)s
+1189(its)s 1478(right)s 2002(parameter)s 3028(is)s 3251(the)s
+3612(v)s 6(alue)k 4193(of)s 4476(the)s 220 fnt2
+4837 341(@T)m 26(ag)k 240 fnt1 5473 344(parameter)m 6500(of)s
+6783(some)s 7357(in)s 9(v)k 4(ocation)k 8424(of)s
+8708(that)s 0 56(symbol.)m 869(Of)s 1193(course)s 1873(it')s 13(s)k
+2215(simplest)s 3071(if)s 3288(you)s 3703(use)s 4078(just)s
+4483(a)s 4649(one-w)s 2(ord)k 5622(tag;)s 6026(then)s
+6495(no)s 6788(braces)s 7449(are)s 7796(needed.)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1
+0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 9 15
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1578(1.3.)m 1871(Cr)s 10(oss)k 2475(r)s 8(efer)k 8(ences)k
+240 fnt5 10369 -1581(9)m gsave
+1417 -15423 translate
+240 fnt1 9066 13370 0 13261 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+480 13207(A)m 695(cross)s
+1222(reference)s 2150(is)s 2345(not)s 2696(an)s 2964(object;)s
+3645(the)s 3978(reader)s 4619(should)s 5301(think)s 5839(of)s
+6095(it)s 6272(as)s 6507(an)s 6775(arro)s 6(w)k
+7365(in)s 7593(the)s 7926(\207nal)s 8391(printed)s 0 12919(document,)m
+1049(be)s 3(ginning)k 2054(at)s 2284(the)s 2629(cross)s
+3169(reference)s 4109(and)s 4511(ending)s 5213(at)s 5443(the)s
+5788(top)s 6145(of)s 6413(the)s 6759(tar)s 4(get)k
+
+[ /Dest /LOUT19_4637_pri_cros_4 /DEST pdfmark
+7355(in)s 9(v)k 4(ocation.)k 8513(Three)s 0 12631(special)m
+715(v)s 6(alues)k 1367(may)s 1830(be)s 2108(gi)s 6(v)k 3(en)k
+2685(to)s 2920(the)s 3264(right)s 3772(parameter)s 4782(of)s
+220 fnt2 5050 12628(&&)m 240 fnt1 5338 12631(:)m 220 fnt2
+5500 12628(preceding)m 240 fnt1 6451 12631(,)m 220 fnt2 6555 12628(f)m 6(ollo)k 3(wing)k
+240 fnt1 7385 12631(,)m 7488(and)s
+[ /Dest /LOUT19_4637_pri_cros_5 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pri_cros_6 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pri_cros_7 /DEST pdfmark
+220 fnt2 7888 12628(f)m 6(oll_or_prec)k
+240 fnt1 9022 12631(.)m 0 12343(The)m 467(cross)s 1049(reference)s
+220 fnt2 2032 12340(@T)m 26(ab)k 4(le&&preceding)k 240 fnt1
+4116 12343(points)m 4792(to)s 5071(some)s 5671(table)s 6231(appearing)s
+7267(earlier)s 7975(in)s 8258(the)s 8646(\207nal)s 0 12055(printed)m
+760(document)s 1790(than)s 2285(itself;)s 2899(that)s 3343(is,)s
+3635(the)s 4009(arro)s 6(w)k 4640(is)s 4876(guaranteed)s
+6009(to)s 6274(point)s 6852(backw)s 2(ards)k 7950(through)s
+8778(the)s 0 11767(document.)m 1108(Usually)s 1907(it)s 2100(points)s
+2737(to)s 2977(the)s 3326(nearest)s 4063(preceding)s 5060(in)s 9(v)k 4(ocation.)k
+6222(Similarly)s 15(,)k 220 fnt2 7203 11764(@T)m 26(ab)k 4(le&&f)k 6(ollo)k 3(wing)k
+240 fnt1 0 11479(points)m 636(forw)s 2(ards,)k 1590(usually)s
+2335(to)s 2574(the)s 2922(nearest)s 3657(follo)s 6(wing)k
+4634(in)s 9(v)k 4(ocation.)k 220 fnt2 5795 11476(@T)m 26(ab)k 4(le&&f)k 6(oll_or_prec)k
+240 fnt1 8022 11479(is)m 8232(the)s 8579(same)s 0 11191(as)m
+220 fnt2 250 11188(@T)m 26(ab)k 4(le&&f)k 6(ollo)k 3(wing)k
+240 fnt1 2173 11191(if)m 2390(it)s 2582(e)s 3(xists,)k
+3230(otherwise)s 4215(it)s 4407(is)s 4617(the)s 4965(same)s
+5512(as)s 220 fnt2 5762 11188(@T)m 26(ab)k 4(le&&preceding)k
+240 fnt1 7746 11191(.)m 480 10817(This)m 962(section)s 1702(has)s
+2079(been)s 2594(concerned)s 3641(with)s 4130(what)s 4661(a)s
+4834(cross)s 5382(reference)s 6331(is)s 6548(\211)s 6734(an)s
+7023(arro)s 6(w)k 7635(from)s 8165(one)s 8574(point)s
+0 10529(in)m 242(a)s 407(document)s 1410(to)s 1648(another)s
+2424(\211)s 2603(b)s 4(ut)k 2963(not)s 3328(with)s
+3809(ho)s 6(w)k 4269(it)s 4460(is)s 4669(used.)s
+5271(One)s 5724(simple)s 6416(w)s 2(ay)k 6866(to)s
+7104(use)s 7478(a)s 7643(cross)s 8183(reference)s 0 10241(is)m
+210(to)s 449(put)s 815(it)s 1007(where)s 1647(an)s
+1930(object)s 2574(is)s 2784(e)s 3(xpected,)k 3738(lik)s 2(e)k
+4150(this:)s 220 fnt2 480 9740(a | @T)m 26(ab)k 4(le&&cities | c)k
+240 fnt1 0 9285(In)m 265(this)s 670(case)s 1146(the)s
+1504(cross)s 2055(reference)s 3007(will)s 3443(be)s 3734(replaced)s
+4610(by)s 4914(a)s 5089(cop)s 2(y)k 5616(of)s
+5897(the)s 6254(in)s 9(v)k 4(ocation)k 7317(it)s
+7519(points)s 8164(to:)s 8525(in)s 8778(the)s 0 8997(e)m 3(xample)k
+866(just)s 1275(gi)s 6(v)k 3(en,)k 1909(a)s
+2079(table)s 2603(will)s 3033(appear)s 3734(between)s 220 fnt2
+4591 8994(a)m 240 fnt1 4772 8997(and)m 220 fnt2 5180 8994(c.)m
+240 fnt1 5456 8997(Other)m 6064(applications)s 7274(of)s 7549(cross)s
+8095(references)s 0 8709(may)m 466(be)s 747(found)s 1364(in)s
+1606(Chapter)s 2423(4,)s 2649(including)s 3606(\207nding)s 4337(the)s
+4685(number)s 5475(of)s 5746(the)s 6093(page)s 6601(where)s
+7240(something)s 8289(appears,)s 0 8421(producing)m 1018(running)s 1810(page)s
+2312(headers)s 3086(and)s 3484(footers,)s 4248(and)s 4646(accessing)s
+5608(databases)s 6569(of)s 6834(Roman)s 7577(numerals,)s 8553(refer)s 4(-)k
+0 8133(ences,)m 638(etc.)s 1080(Cross)s 1676(references)s 2707(are)s
+3054(also)s 3492(used)s 3989(by)s 4283(g)s 1(alle)k 3(ys,)k
+5063(as)s 5313(will)s 5739(be)s 6021(e)s 3(xplained)k
+7006(in)s 7249(the)s 7597(ne)s 3(xt)k 8066(section.)s
+480 7759(The)m 943(implementation)s 2535(of)s 2841(cross)s 3418(referencing)s
+4593(copies)s 5290(e)s 6(v)k 3(ery)k 5901(symbol)s
+6696(in)s 9(v)k 4(ocation)k 7785(with)s 8302(a)s
+220 fnt2 8503 7756(@T)m 26(ag)k 240 fnt1 0 7471(parameter)m
+1008(into)s 1427(the)s 240 fnt6 1768 7473(cr)m 10(oss-r)k 8(efer)k 8(ence)k
+3275(database)s 240 fnt1 4133 7471(,)m 4233(a)s 4393(collection)s
+5385(of)s 5650(\207les)s 6093(whose)s 6754(names)s 7410(end)s
+7807(in)s 220 fnt2 8044 7468(.ld)m 240 fnt1 8316 7471(inde)m 3(x)k 3(ed)k
+0 7183(by)m 286(one)s 679(\207le)s 1032(whose)s 1691(name)s
+2256(is)s 220 fnt2 2458 7180(lout.li)m 240 fnt1 2954 7183(.)m
+3109(It)s 3306(is)s 3507(generally)s 4441(the)s 4781(case)s
+5239(that)s 5649(the)s 5988(b)s 4(ulk)k 6462(content)s
+7218(of)s 7480(a)s 7638(symbol)s 8389(such)s 8876(as)s
+0 6895(the)m 337(table)s 845(abo)s 3(v)k 3(e)k
+1455(is)s 1653(contained)s 2629(in)s 2860(its)s 3124(right)s
+3623(or)s 3870(body)s 4393(parameter)s 9(,)k 5433(and)s
+5825(that)s 6231(this)s 6615(b)s 4(ulk)k 7086(content)s
+7838(is)s 8036(not)s 8390(needed)s 0 6607(by)m 297(cross)s
+843(references)s 1878(to)s 2121(the)s 2472(symbol.)s 3345(Hence,)s
+4067(to)s 4310(sa)s 4(v)k 3(e)k 4787(space)s
+5378(in)s 5625(the)s 5977(database,)s 6910(Lout)s 7426(replaces)s
+8263(the)s 8615(right)s 0 6319(parameter)m 1011(of)s 1279(each)s
+1771(symbol)s 2527(it)s 2716(writes)s 3347(into)s 3768(it)s
+3957(by)s 4248(the)s 4592(w)s 2(ord)k 5137(???)s
+5505(whene)s 6(v)k 3(er)k 6482(the)s 6827(right)s
+7335(parameter)s 8345(appears)s 0 6031(to)m 249(be)s 542(lar)s 4(ge.)k
+1190(The)s 1629(table)s 2160(abo)s 3(v)k 3(e)k
+2792(w)s 2(ould)k 3458(appear)s 4166(as)s 4427(???)s
+4809(because)s 5632(of)s 5914(this)s 6321(optimization,)s 7647(and)s
+8062(in)s 8316(general,)s 0 5743(the)m 367(user)s 845(must)s
+1390(ensure)s 2089(that)s 2527(an)s 3(y)k 2944(content)s
+3728(required)s 4601(by)s 4915(cross)s 5477(references)s 6527(is)s
+6757(contained)s 7765(in)s 8028(parameters)s 0 5455(other)m 545(than)s
+1007(the)s 1348(right)s 1852(or)s 2104(body)s 2631(parameter)s 13(.)k
+3729(This)s 4199(optimization)s 5457(does)s 5940(not)s 6299(apply)s
+6878(when)s 7447(the)s 7788(symbol)s 8541(being)s 0 5167(written)m
+733(into)s 1158(the)s 1506(cross-reference)s 3019(database)s 3898(is)s
+4108(a)s 4274(g)s 1(alle)k 3(y)k 15(.)k
+240 fnt5 0 4374(1.4.)m 471(Galleys)s
+[ /Dest /LOUTgalleys /DEST pdfmark
+240 fnt1 480 3897(It)m
+695(is)s 915(time)s 1406(to)s 1655(pause)s 2267(and)s
+2681(ask)s 3072(ourselv)s 3(es)k 4033(ho)s 6(w)k
+4505(close)s 5062(we)s 5408(are)s 5765(to)s 6015(achie)s 6(ving)k
+7002(our)s 7392(aim)s 7820(of)s 8102(producing)s 0 3609(neatly)m
+638(formatted)s 1624(documents.)s 2825(W)s 19(e)k 3194(can)s
+3583(certainly)s 4472(produce)s 5299(the)s 5647(pieces)s 6295(of)s
+6566(a)s 6732(document:)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 10 16
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(10)m 240 fnt6 8382 -1580(Chapter)m 9232(1.)s
+9506(Principles)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+160 fnt5 870 13031(PURCELL)m 128 fnt1
+1626 13103(1)m 160 fnt1 480 12739(In)m 705(the)s 991(w)s 1(orld)k
+1455(of)s 1691(music)s 480 12559(England)m 1192(is)s 1473(supposed)s
+480 12379(to)m 686(be)s 921(a)s 1078(mere)s 1481(pro)s 2(vince.)k
+480 12199(If)m 775(she)s 1166(produces)s 1918(an)s 480 12019(indif)m 4(ferent)k
+1446(composer)s 480 11839(or)m 763(performer)s 6(,)k 1577(that)s
+1967(is)s 480 11659(re)m 2(garded)k 1172(else)s 4(where)k
+1940(as)s 480 11479(perfectly)m 1215(normal)s 1837(and)s 480 11299(natural;)m
+1072(b)s 3(ut)k 1388(if)s 1608(foreign)s 480 11119(students)m
+1215(of)s 1574(musical)s 480 10939(history)m 1286(ha)s 3(v)k 2(e)k
+1947(to)s 480 10759(ackno)m 4(wledge)k 1440(a)s 1636(British)s
+480 10579(musical)m 1105(genius,)s 1686(he)s 1967(is)s 480 10399(considered)m
+1211(a)s 1322(freak.)s 800 10166(Such)m 1267(a)s 1488(freak)s
+1967(is)s 480 9986(Henry)m 917(Purcell.)s 1480(Y)s 16(et)k
+1736(if)s 1884(we)s 480 9806(mak)m 1(e)k 875(a)s
+1000(choice)s 1467(of)s 1662(\207fteen)s 480 9626(of)m 717(the)s
+1005(w)s 1(orld')k 8(s)k 1574(musical)s 480 9446(classics,)m
+1050(as)s 1228(here,)s 1586(we)s 1820(\207nd)s 480 9266(that)m
+774(we)s 1013(cannot)s 1495(omit)s 1843(this)s 480 9086(English)m
+1005(master)s 8(.)k 128 fnt1 2634 13283(1)m 160 fnt1
+2685 13211(Blom,)m 3107(Eric.)s 160 fnt6 3476 13212(Some)m 3852(Gr)s 5(eat)k
+2634 13032(Composer)m 1(s.)k 160 fnt1 3728 13031(Oxford,)m 2634 12851(1944.)m
+gsave
+4788 10874 translate
+220 fnt2 1927 2494 0 2494 220 288 61 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto xsize ysize lineto
+0 ysize lineto closepath stroke
+grestore
+160 fnt2 170 2207(@T)m 19(e)k 4(xtPlace)k
+170 173(@F)m 4(ootSect)k
+grestore
+gsave
+4788 8380 translate
+220 fnt2 1927 2494 0 2494 220 288 61 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto xsize ysize lineto
+0 ysize lineto closepath stroke
+grestore
+160 fnt2 170 2207(@T)m 19(e)k 4(xtPlace)k
+170 173(@F)m 4(ootSect)k
+grestore
+gsave
+4788 5886 translate
+220 fnt2 1927 2494 0 2494 220 288 61 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto xsize ysize lineto
+0 ysize lineto closepath stroke
+grestore
+160 fnt2 170 2207(@T)m 19(e)k 4(xtPlace)k
+170 173(@F)m 4(ootSect)k
+grestore
+160 fnt2 4788 5656(@P)m 6(ageList)k
+240 fnt1 0 5170(b)m 4(ut)k 362(when)s 938(we)s
+1273(try)s 1592(to)s 1831(mer)s 4(ge)k 2480(them)s
+3018(together)s 9(,)k 3899(we)s 4234(encounter)s 5237(tw)s 2(o)k
+5647(obstacles.)s 480 4796(First,)m 1029(when)s 1610(an)s 1899(object)s
+2548(is)s 2763(entered)s 3530(at)s 3767(a)s 3938(certain)s
+4650(place)s 5215(in)s 5463(the)s 5817(document,)s 6873(it)s
+7070(appears)s 7857(at)s 8094(that)s 8518(place.)s 0 4508(But)m
+393(a)s 546(footnote)s 1385(is)s 1582(naturally)s 2472(entered)s
+3219(immediately)s 4454(after)s 4936(the)s 5271(point)s 5810(it)s
+5988(refers)s 6568(to)s 6794(\(`)s 200 fnt1 6934 4517(PURCELL)m
+240 fnt1 7819 4508(')m 7917(in)s 8147(this)s 8529(case\),)s
+0 4220(yet)m 352(it)s 544(appears)s 1325(some)s 6(where)k
+2464(else:)s 2941(at)s 3173(the)s 3521(bottom)s 4259(of)s
+4530(a)s 4696(page.)s 480 3846(Second,)m 1285(all)s 1570(our)s
+1942(features)s 2740(b)s 4(uild)k 3278(up)s 3564(lar)s 4(ger)k
+4168(objects)s 4889(out)s 5247(of)s 5510(smaller)s 6265(ones,)s
+6803(b)s 4(ut)k 7158(the)s 200 fnt1 7498 3855(PURCELL)m
+240 fnt1 8435 3846(object,)m 0 3558(for)m 333(e)s 3(xample,)k
+1242(must)s 1762(be)s 2039(brok)s 2(en)k 2753(do)s 6(wn)k
+3332(into)s 3752(page-sized)s 4827(pieces.)s 5583(This)s 6053(occurs)s
+6723(when)s 7294(the)s 7637(a)s 4(v)k 6(ailable)k
+8539(space)s 0 3270(at)m 230(the)s 575(`some)s 6(where)k
+1790(else')s 2270(is)s 2477(insuf\207cient)s 3610(to)s 3846(hold)s
+4327(the)s 4672(entire)s 5268(object,)s 5957(so)s 6220(this)s
+6613(second)s 7333(obstacle)s 8169(arises)s 8760(out)s 0 2982(of)m
+271(the)s 619(\207rst.)s 480 2608(Lout')m 13(s)k 1135(last)s
+1518(major)s 2127(feature,)s 2888(which)s 3523(we)s 3850(introduce)s
+4801(to)s 5032(o)s 3(v)k 3(ercome)k 6017(these)s
+6557(obstacles,)s 7532(is)s 7734(the)s 240 fnt6 8074 2610(galle)m 7(y)k
+
+[ /Dest /LOUT19_4637_pri_gall_1 /DEST pdfmark
+240 fnt1 8699 2608(\(the)m 0 2320(name)m 564(is)s 764(borro)s 6(wed)k
+1723(from)s 2237(the)s 2575(g)s 1(alle)k 3(ys)k
+3288(used)s 3775(in)s 4008(manual)s 4757(typesetting\).)s 6039(A)s
+6259(g)s 1(alle)k 3(y)k 6882(is)s 7082(an)s
+7355(object)s 7989(plus)s 8429(a)s 8584(cross)s 0 2032(reference)m
+943(which)s 1585(points)s 2221(to)s 2460(where)s 3100(the)s
+3448(object)s 4092(is)s 4302(to)s 4541(appear)s 13(.)k
+5329(The)s 5757(e)s 3(xample)k 6620(abo)s 3(v)k 3(e)k
+7242(has)s 7612(three)s 8145(g)s 1(alle)k 3(ys:)k
+
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 11 17
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(1.4.)m 1871(Galle)s 7(ys)k 240 fnt5
+10256 -1583(11)m gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+160 fnt5 870 12975(PURCELL)m 128 fnt1
+1626 13047(1)m 160 fnt1 480 12683(In)m 705(the)s 991(w)s 1(orld)k
+1455(of)s 1691(music)s 480 12503(England)m 1192(is)s 1473(supposed)s
+480 12323(to)m 686(be)s 921(a)s 1078(mere)s 1481(pro)s 2(vince.)k
+480 12143(If)m 775(she)s 1166(produces)s 1918(an)s 480 11963(indif)m 4(ferent)k
+1446(composer)s 480 11783(or)m 763(performer)s 6(,)k 1577(that)s
+1967(is)s 480 11603(re)m 2(garded)k 1172(else)s 4(where)k
+1940(as)s 480 11423(perfectly)m 1215(normal)s 1837(and)s 480 11243(natural;)m
+1072(b)s 3(ut)k 1388(if)s 1608(foreign)s 480 11063(students)m
+1215(of)s 1574(musical)s 480 10883(history)m 1286(ha)s 3(v)k 2(e)k
+1947(to)s 480 10703(ackno)m 4(wledge)k 1440(a)s 1636(British)s
+480 10523(musical)m 1105(genius,)s 1686(he)s 1967(is)s 480 10343(considered)m
+1211(a)s 1322(freak.)s 800 10110(Such)m 1267(a)s 1488(freak)s
+1967(is)s 480 9930(Henry)m 917(Purcell.)s 1480(Y)s 16(et)k
+1736(if)s 1884(we)s 480 9750(mak)m 1(e)k 875(a)s
+1000(choice)s 1467(of)s 1662(\207fteen)s 480 9570(of)m 717(the)s
+1005(w)s 1(orld')k 8(s)k 1574(musical)s 480 9390(classics,)m
+1050(as)s 1228(here,)s 1586(we)s 1820(\207nd)s 480 9210(that)m
+774(we)s 1013(cannot)s 1495(omit)s 1843(this)s 480 9030(English)m
+1005(master)s 8(.)k gsave
+3321 13053 translate
+180.0000 rotate
+gsave
+0 0 translate
+30.0000 rotate
+gsave
+0 1 translate
+240 fnt1 68 -2 0 -1 240 288 60 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+0 0 translate
+240 fnt1 1134 0 0 0 240 288 60 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+0 0 translate
+-30.0000 rotate
+gsave
+0 1 translate
+240 fnt1
+68 -2 0 -1 240 288 60 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+
+grestore
+gsave
+3201 10788 translate
+220 fnt2 1927 2494 0 2494 220 288 61 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto xsize ysize lineto
+0 ysize lineto closepath stroke
+grestore
+160 fnt2 170 2207(@T)m 19(e)k 4(xtPlace)k
+170 173(@F)m 4(ootSect)k
+grestore
+gsave
+3201 8294 translate
+220 fnt2 1927 2494 0 2494 220 288 61 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto xsize ysize lineto
+0 ysize lineto closepath stroke
+grestore
+160 fnt2 170 2207(@T)m 19(e)k 4(xtPlace)k
+170 173(@F)m 4(ootSect)k
+grestore
+gsave
+3201 5800 translate
+220 fnt2 1927 2494 0 2494 220 288 61 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto xsize ysize lineto
+0 ysize lineto closepath stroke
+grestore
+160 fnt2 170 2207(@T)m 19(e)k 4(xtPlace)k
+170 173(@F)m 4(ootSect)k
+grestore
+160 fnt2 3201 5570(@P)m 6(ageList)k
+gsave
+6688 13282 translate
+180.0000 rotate
+gsave
+0 0 translate
+30.0000 rotate
+gsave
+0 1 translate
+240 fnt1 68 -2 0 -1 240 288 60 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+0 0 translate
+240 fnt1 1440 0 0 0 240 288 60 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+0 0 translate
+-30.0000 rotate
+gsave
+0 1 translate
+240 fnt1 68 -2 0 -1 240 288 60 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+
+grestore
+200 fnt6 6748 13238(to)m
+6947(printer)s gsave
+4335 11036 translate
+30.0000 rotate
+gsave
+0 1 translate
+240 fnt1 68 -2 0 -1 240 288 60 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+4335 11036 translate
+240 fnt1 963 0 0 0 240 288 60 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+4335 11036 translate
+-30.0000 rotate
+gsave
+0 1 translate
+240 fnt1 68 -2 0 -1 240 288 60 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+128 fnt1
+5418 11072(1)m 160 fnt1 5469 11000(Blom,)m 5891(Eric.)s 160 fnt6
+6260 11001(Some)m 6636(Gr)s 5(eat)k 5418 10821(Composer)m 1(s.)k
+160 fnt1 6512 10820(Oxford,)m 5418 10640(1944.)m 240 fnt1 0 5084(A)m
+229(g)s 1(alle)k 3(y)k 861(replaces)s 1693(the)s
+2039(in)s 9(v)k 4(ocation)k 3091(pointed)s 3866(to)s
+4103(by)s 4395(its)s 4670(cross)s 5210(reference.)s 6260(If)s
+6488(space)s 7073(is)s 7282(not)s 7646(suf\207cient)s 8593(there)s
+0 4796(to)m 232(hold)s 708(it)s 892(all,)s 1230(the)s
+1570(remainder)s 2590(of)s 2854(the)s 3194(g)s 1(alle)k 3(y)k
+3820(is)s 4023(split)s 4486(of)s 6(f)k 4822(\(the)s
+5242(v)s 3(ertical)k 6001(concatenation)s 7378(symbol)s 8130(preceding)s
+0 4508(it)m 199(being)s 791(discarded\))s 1842(and)s 2253(it)s
+2452(replaces)s 3293(later)s 3783(in)s 9(v)k 4(ocations)k
+4931(of)s 5209(the)s 5564(same)s 6119(symbol.)s 6935(This)s
+7418(is)s 7635(e)s 3(xactly)k 8383(what)s 8916(is)s
+0 4220(required)m 854(to)s 1093(get)s 1445(te)s 3(xt)k
+1860(and)s 2264(footnotes)s 3205(onto)s 3684(pages.)s 480 3846(T)m 19(o)k
+780(create)s 1405(a)s 1571(g)s 1(alle)k 3(y)k 15(,)k
+2243(\207rst)s 2674(de\207ne)s 3315(a)s 3481(symbol)s 4241(with)s
+4723(a)s 4889(special)s 220 fnt2 5607 3843(into)m
+[ /Dest /LOUT19_4637_pri_gall_2 /DEST pdfmark
+240 fnt1
+6013 3846(clause,)m 6717(lik)s 2(e)k 7129(this:)s 220 fnt2
+480 3345(def @F)m 6(ootNote into { @F)k 6(ootPlace&&f)k 6(ollo)k 3(wing })k
+480 3057( r)m -3(ight x)k 480 2769({)m 480 2481( 8p @F)m 6(ont x)k
+480 2193(})m 240 fnt1 0 1699(An)m 343(in)s 9(v)k 4(ocation)k
+1390(of)s 1654(such)s 2142(a)s 2301(symbol)s 3054(will)s
+3473(then)s 3934(be)s 4209(a)s 4368(g)s 1(alle)k 3(y)k
+4994(whose)s 5655(object)s 6292(is)s 6495(the)s 6835(result)s
+7418(of)s 7682(the)s 8022(in)s 9(v)k 4(ocation,)k
+0 1411(and)m 399(whose)s 1062(cross)s 1598(reference)s 2536(is)s
+2740(gi)s 6(v)k 3(en)k 3315(by)s 3603(the)s
+220 fnt2 3946 1408(into)m 240 fnt1 4347 1411(clause.)m 5102(The)s
+5525(right)s 6030(parameter)s 7039(of)s 7304(the)s 7647(cross)s
+8183(reference)s 0 1123(must)m 525(be)s 807(one)s 1209(of)s
+220 fnt2 1480 1120(preceding)m 240 fnt1 2431 1123(,)m 220 fnt2
+2538 1120(f)m 6(ollo)k 3(wing)k 240 fnt1 3368 1123(,)m
+3475(and)s 220 fnt2 3879 1120(f)m 6(oll_or_prec)k 240 fnt1
+5013 1123(.)m 480 749(A)m 700(symbol,)s 1502(lik)s 2(e)k
+220 fnt2 1903 746(@F)m 6(ootPlace)k 3(,)k 240 fnt1
+3196 749(which)m 3827(is)s 4027(the)s 240 fnt6 4364 751(tar)m 8(g)k 2(et)k
+240 fnt1 4979 749(of)m 5239(a)s 5395(g)s 1(alle)k 3(y)k 15(,)k
+
+[ /Dest /LOUT19_4637_pri_gall_3 /DEST pdfmark
+6056(must)s 6571(contain)s 7321(the)s 7659(special)s 8366(symbol)s
+220 fnt2 0 458(@Galle)m 4(y)k 240 fnt1 898 461(e)m 3(xactly)k
+1639(once)s 2147(in)s 2390(its)s 2666(body;)s 3258(often)s
+3806(this)s 4202(is)s 4412(all)s 4705(that)s 5123(the)s
+5471(body)s 6005(contains:)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 12 18
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(12)m 240 fnt6 8382 -1580(Chapter)m 9232(1.)s
+9506(Principles)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+220 fnt2 480 13207(def @F)m 6(ootPlace { @Galle)k 4(y })k
+240 fnt1 0 12709(It)m 229(is)s 464(this)s 885(special)s
+1628(symbol)s 2412(that)s 2855(is)s 3090(replaced)s 3982(by)s
+4300(the)s 4673(incoming)s 5655(g)s 1(alle)k 3(y)k 15(,)k
+6352(in)s 6619(f)s 2(act,)k 7106(not)s 7497(the)s
+220 fnt2 7870 12706(@F)m 6(ootPlace)k 240 fnt1 0 12421(symbol)m
+760(as)s 1010(a)s 1176(whole.)s 480 12047(A)m 718(symbol)s
+1487(which)s 2138(contains)s 220 fnt2 2994 12044(@Galle)m 4(y)k
+240 fnt1 3832 12047(,)m 3948(either)s 4560(directly)s 5351(within)s
+6028(its)s 6313(body)s 6855(or)s 7123(indirectly)s 8101(within)s
+8778(the)s 0 11759(body)m 533(of)s 802(a)s 966(symbol)s
+1725(it)s 1915(in)s 9(v)k 4(ok)k 2(es,)k
+2750(is)s 2959(called)s 3585(a)s 240 fnt6 3749 11761(r)m 8(eceptive)k
+
+[ /Dest /LOUT19_4637_pri_gall_4 /DEST pdfmark
+240 fnt1 4668 11759(symbol,)m 5478(meaning)s 6353(recepti)s 6(v)k 3(e)k
+7274(to)s 7511(g)s 1(alle)k 3(ys.)k 220 fnt2
+8346 11756(@F)m 6(oot-)k 0 11468(Place)m 240 fnt1 630 11471(is)m
+870(recepti)s 6(v)k 3(e,)k 1873(which)s 2545(mak)s 2(es)k
+220 fnt2 3235 11468(@F)m 6(ootList,)k 4364(@F)s 6(ootSect)k
+240 fnt1 5545 11471(and)m 220 fnt2 5979 11468(@P)m 8(ageList)k
+240 fnt1 7133 11471(recepti)m 6(v)k 3(e)k 8085(since)s
+8663(the)s 3(y)k 0 11183(in)m 9(v)k 4(ok)k 2(e)k
+220 fnt2 704 11180(@F)m 6(ootPlace)k 3(.)k 240 fnt1
+2078 11183(If)m 2319(no)s 2623(g)s 1(alle)k 3(y)k
+3268(replaces)s 4112(an)s 3(y)k 220 fnt2 4520 11180(@Galle)m 4(y)k
+240 fnt1 5429 11183(within)m 6108(some)s 6680(in)s 9(v)k 4(ocation)k
+7745(of)s 8027(a)s 8204(recepti)s 6(v)k 3(e)k
+0 10895(symbol,)m 816(that)s 1239(in)s 9(v)k 4(ocation)k
+2297(is)s 2512(replaced)s 3383(by)s 220 fnt2 3682 10892(@Null)m
+240 fnt1 4267 10895(.)m 4435(The)s 4868(adv)s 6(antages)k
+5980(of)s 6256(this)s 6656(rule)s 7088(for)s 7430(page)s
+7943(layout)s 8606(were)s 0 10607(e)m 3(xplained)k 985(at)s
+1217(the)s 1565(end)s 1969(of)s 2240(Section)s 3014(1.2.)s
+480 10233(Let)m 852(us)s 1109(no)s 6(w)k 1563(follo)s 6(w)k
+2228(through)s 3023(the)s 3364(construction)s 4596(of)s 4861(our)s
+5233(e)s 3(xample)k 6089(document.)s 7190(Initially)s 7992(there)s
+8518(is)s 8721(just)s 0 9945(the)m 348(one)s 240 fnt6
+750 9947(r)m 10(oot)k
+[ /Dest /LOUT19_4637_pri_gall_5 /DEST pdfmark
+240 fnt1 1203 9945(g)m 1(alle)k 3(y)k 15(,)k
+1875(containing)s 2938(an)s 3221(une)s 3(xpanded)k 4434(in)s 9(v)k 4(ocation)k
+5488(of)s 220 fnt2 5759 9942(@P)m 8(ageList:)k 180 fnt2
+3315 9473(@P)m 7(ageList)k gsave
+5746 9519 translate
+180.0000 rotate
+gsave
+0 0 translate
+30.0000 rotate
+gsave
+0 1 translate
+240 fnt1 68 -2 0 -1 240 288 60 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+0 0 translate
+240 fnt1 1440 0 0 0 240 288 60 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+0 0 translate
+-30.0000 rotate
+gsave
+0 1 translate
+240 fnt1
+68 -2 0 -1 240 288 60 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+
+grestore
+200 fnt6 5806 9475(to)m 6005(printer)s 240 fnt1 0 8982(Then)m
+602(the)s 200 fnt1 1004 8991(PURCELL)m 240 fnt1 2002 8982(g)m 1(alle)k 3(y)k
+2690(appears,)s 3580(tar)s 4(geted)k 4457(to)s 4750(a)s
+220 fnt2 4969 8979(@T)m 26(e)k 6(xtPlace)k 3(.)k
+240 fnt1 6348 8982(Lout)m 6913(kno)s 6(ws)k 7638(that)s
+8109(there)s 8696(is)s 8960(a)s 220 fnt2 0 8691(@T)m 26(e)k 6(xtPlace)k
+240 fnt1 1218 8694(hidden)m 1927(inside)s 220 fnt2 2554 8691(@P)m 8(ageList,)k
+240 fnt1 3724 8694(so)m 3990(it)s 4182(e)s 3(xpands)k
+220 fnt2 5015 8691(@P)m 8(ageList:)k 160 fnt5 870 7961(PURCELL)m
+128 fnt1 1626 8033(1)m 160 fnt1 480 7669(In)m 705(the)s
+991(w)s 1(orld)k 1455(of)s 1691(music)s 480 7489(England)m
+1192(is)s 1473(supposed)s 480 7309(to)m 686(be)s 921(a)s
+1078(mere)s 1481(pro)s 2(vince.)k 480 7129(If)m 775(she)s
+1166(produces)s 1918(an)s 480 6949(indif)m 4(ferent)k 1446(composer)s
+480 6769(or)m 763(performer)s 6(,)k 1577(that)s 1967(is)s
+480 6589(re)m 2(garded)k 1172(else)s 4(where)k 1940(as)s
+480 6409(perfectly)m 1215(normal)s 1837(and)s 480 6229(natural;)m 1072(b)s 3(ut)k
+1388(if)s 1608(foreign)s 480 6049(students)m 1215(of)s 1574(musical)s
+480 5869(history)m 1286(ha)s 3(v)k 2(e)k 1947(to)s
+480 5689(ackno)m 4(wledge)k 1440(a)s 1636(British)s 480 5509(musical)m
+1105(genius,)s 1686(he)s 1967(is)s 480 5329(considered)m 1211(a)s
+1322(freak.)s 800 5096(Such)m 1267(a)s 1488(freak)s 1967(is)s
+480 4916(Henry)m 917(Purcell.)s 1480(Y)s 16(et)k 1736(if)s
+1884(we)s 480 4736(mak)m 1(e)k 875(a)s 1000(choice)s
+1467(of)s 1662(\207fteen)s 480 4556(of)m 717(the)s 1005(w)s 1(orld')k 8(s)k
+1574(musical)s 480 4376(classics,)m 1050(as)s 1228(here,)s 1586(we)s
+1820(\207nd)s 480 4196(that)m 774(we)s 1013(cannot)s 1495(omit)s
+1843(this)s 480 4016(English)m 1005(master)s 8(.)k gsave
+3434 8039 translate
+180.0000 rotate
+gsave
+0 0 translate
+30.0000 rotate
+gsave
+0 1 translate
+240 fnt1
+68 -2 0 -1 240 288 60 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+0 0 translate
+240 fnt1 1247 0 0 0 240 288 60 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+0 0 translate
+-30.0000 rotate
+gsave
+0 1 translate
+240 fnt1 68 -2 0 -1 240 288 60 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+
+grestore
+gsave
+3315 5774 translate
+220 fnt2 1927 2494 0 2494 220 288 61 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto xsize ysize lineto
+0 ysize lineto closepath stroke
+grestore
+160 fnt2 170 2207(@T)m 19(e)k 4(xtPlace)k
+170 173(@F)m 4(ootSect)k
+grestore
+160 fnt2 3315 5544(@P)m 6(ageList)k
+gsave
+6802 8268 translate
+180.0000 rotate
+gsave
+0 0 translate
+30.0000 rotate
+gsave
+0 1 translate
+240 fnt1 68 -2 0 -1 240 288 60 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+0 0 translate
+240 fnt1 1440 0 0 0 240 288 60 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+0 0 translate
+-30.0000 rotate
+gsave
+0 1 translate
+240 fnt1 68 -2 0 -1 240 288 60 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+
+grestore
+200 fnt6 6862 8224(to)m
+7061(printer)s 240 fnt1 0 3531(After)m 586(promoting)s 1659(the)s
+2030(\207rst)s 2484(line)s 2922(into)s 220 fnt2 3370 3528(@T)m 26(e)k 6(xtPlace)k 3(,)k
+240 fnt1 4658 3531(the)m 5029(footnote)s 5905(g)s 1(alle)k 3(y)k
+6563(attached)s 7440(to)s 7702(it)s 7917(appears)s 8722(and)s
+0 3243(demands)m 938(an)s 1257(in)s 9(v)k 4(ocation)k
+2347(of)s 220 fnt2 2654 3240(@F)m 6(ootPlace)k 240 fnt1
+3946 3243(follo)m 6(wing)k 4960(its)s 5272(attachment)s 6416(point)s
+7004(\(`)s 200 fnt1 7144 3252(PURCELL)m 240 fnt1 8029 3243('\).)m
+8387(Such)s 8960(a)s 220 fnt2 0 2952(@F)m 6(ootPlace)k
+240 fnt1 1274 2955(is)m 1502(found)s 2138(at)s 2388(the)s
+2754(bottom)s 3511(of)s 3800(the)s 4166(\207rst)s 4616(page,)s
+5193(inside)s 220 fnt2 5838 2952(@F)m 6(ootSect,)k 240 fnt1
+7054 2955(which)m 7714(is)s 7943(accordingly)s 0 2667(e)m 3(xpanded,)k
+1022(and)s 1426(the)s 1774(footnote)s 2627(is)s 2837(promoted)s
+3812(onto)s 4291(the)s 4639(page:)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 13 19
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(1.4.)m 1871(Galle)s 7(ys)k 240 fnt5
+10250 -1583(13)m gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+160 fnt1 480 12579(In)m 705(the)s
+991(w)s 1(orld)k 1455(of)s 1691(music)s 480 12399(England)m
+1192(is)s 1473(supposed)s 480 12219(to)m 686(be)s 921(a)s
+1078(mere)s 1481(pro)s 2(vince.)k 480 12039(If)m 775(she)s
+1166(produces)s 1918(an)s 480 11859(indif)m 4(ferent)k 1446(composer)s
+480 11679(or)m 763(performer)s 6(,)k 1577(that)s 1967(is)s
+480 11499(re)m 2(garded)k 1172(else)s 4(where)k 1940(as)s
+480 11319(perfectly)m 1215(normal)s 1837(and)s 480 11139(natural;)m 1072(b)s 3(ut)k
+1388(if)s 1608(foreign)s 480 10959(students)m 1215(of)s 1574(musical)s
+480 10779(history)m 1286(ha)s 3(v)k 2(e)k 1947(to)s
+480 10599(ackno)m 4(wledge)k 1440(a)s 1636(British)s 480 10419(musical)m
+1105(genius,)s 1686(he)s 1967(is)s 480 10239(considered)m 1211(a)s
+1322(freak.)s 800 10006(Such)m 1267(a)s 1488(freak)s 1967(is)s
+480 9826(Henry)m 917(Purcell.)s 1480(Y)s 16(et)k 1736(if)s
+1884(we)s 480 9646(mak)m 1(e)k 875(a)s 1000(choice)s
+1467(of)s 1662(\207fteen)s 480 9466(of)m 717(the)s 1005(w)s 1(orld')k 8(s)k
+1574(musical)s 480 9286(classics,)m 1050(as)s 1228(here,)s 1586(we)s
+1820(\207nd)s 480 9106(that)m 774(we)s 1013(cannot)s 1495(omit)s
+1843(this)s 480 8926(English)m 1005(master)s 8(.)k gsave
+3434 12615 translate
+180.0000 rotate
+gsave
+0 0 translate
+30.0000 rotate
+gsave
+0 1 translate
+240 fnt1
+68 -2 0 -1 240 288 60 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+0 0 translate
+240 fnt1 1247 0 0 0 240 288 60 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+0 0 translate
+-30.0000 rotate
+gsave
+0 1 translate
+240 fnt1 68 -2 0 -1 240 288 60 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+
+grestore
+gsave
+3315 10788 translate
+240 fnt1 1927 2494 0 2494 240 288 60 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto xsize ysize lineto
+0 ysize lineto closepath stroke
+grestore
+160 fnt5 560 1987(PURCELL)m
+128 fnt1 1316 2059(1)m 140 fnt2 170 1807(@T)m 16(e)k 4(xtPlace)k
+gsave
+170 924 translate
+160 fnt1 567 0 0 0 160 180 40 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+128 fnt1 170 785(1)m 160 fnt1 221 713(Blom,)m
+703(Eric.)s 160 fnt6 1133 714(Some)m 170 534(Gr)m 5(eat)k
+734(Composer)s 1(s.)k 160 fnt1 170 353(Oxford,)m 703(1944.)s
+140 fnt2 170 173(@F)m 4(ootList)k
+grestore
+140 fnt2 3315 10573(@P)m 5(ageList)k
+gsave
+6802 13282 translate
+180.0000 rotate
+gsave
+0 0 translate
+30.0000 rotate
+gsave
+0 1 translate
+240 fnt1 68 -2 0 -1 240 288 60 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+0 0 translate
+240 fnt1 1440 0 0 0 240 288 60 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+0 0 translate
+-30.0000 rotate
+gsave
+0 1 translate
+240 fnt1 68 -2 0 -1 240 288 60 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+
+grestore
+200 fnt6 6862 13238(to)m
+7061(printer)s 240 fnt1 0 8441(No)m 6(w)k 512(the)s
+858(promotion)s 1910(of)s 2179(the)s 200 fnt1 2525 8450(PURCELL)m
+240 fnt1 3468 8441(g)m 1(alle)k 3(y)k 4100(resumes.)s
+5045(When)s 5672(the)s 6018(\207rst)s 6447(page)s 6953(is)s
+7161(\207lled,)s 7757(Lout)s 8266(searches)s 0 8153(forw)m 2(ards)k
+898(for)s 1236(another)s 220 fnt2 2013 8150(@T)m 26(e)k 6(xtPlace)k
+240 fnt1 3231 8153(to)m 3470(recei)s 6(v)k 3(e)k
+4206(the)s 4554(remainder)s 9(,)k 5620(once)s 6128(ag)s 1(ain)k
+6702(e)s 3(xpanding)k 7750(a)s 220 fnt2 7916 8150(@P)m 8(ageList:)k
+160 fnt1 480 4955(performer)m 6(,)k 1436(that)s 1967(is)s
+480 4775(re)m 2(garded)k 1172(else)s 4(where)k 1940(as)s
+480 4595(perfectly)m 1215(normal)s 1837(and)s 480 4415(natural;)m 1072(b)s 3(ut)k
+1388(if)s 1608(foreign)s 480 4235(students)m 1215(of)s 1574(musical)s
+480 4055(history)m 1286(ha)s 3(v)k 2(e)k 1947(to)s
+480 3875(ackno)m 4(wledge)k 1440(a)s 1636(British)s 480 3695(musical)m
+1105(genius,)s 1686(he)s 1967(is)s 480 3515(considered)m 1211(a)s
+1322(freak.)s 800 3282(Such)m 1267(a)s 1488(freak)s 1967(is)s
+480 3102(Henry)m 917(Purcell.)s 1480(Y)s 16(et)k 1736(if)s
+1884(we)s 480 2922(mak)m 1(e)k 875(a)s 1000(choice)s
+1467(of)s 1662(\207fteen)s 480 2742(of)m 717(the)s 1005(w)s 1(orld')k 8(s)k
+1574(musical)s 480 2562(classics,)m 1050(as)s 1228(here,)s 1586(we)s
+1820(\207nd)s 480 2382(that)m 774(we)s 1013(cannot)s 1495(omit)s
+1843(this)s 480 2202(English)m 1005(master)s 8(.)k gsave
+3434 4991 translate
+180.0000 rotate
+gsave
+0 0 translate
+30.0000 rotate
+gsave
+0 1 translate
+240 fnt1
+68 -2 0 -1 240 288 60 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+0 0 translate
+240 fnt1 1247 0 0 0 240 288 60 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+0 0 translate
+-30.0000 rotate
+gsave
+0 1 translate
+240 fnt1 68 -2 0 -1 240 288 60 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+
+grestore
+gsave
+3315 5233 translate
+240 fnt1 1927 2494 0 2494 240 288 60 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto xsize ysize lineto
+0 ysize lineto closepath stroke
+grestore
+160 fnt5 560 1987(PURCELL)m
+128 fnt1 1316 2059(1)m 160 fnt1 170 1695(In)m 341(the)s
+573(w)s 1(orld)k 983(of)s 1164(music)s 170 1515(England)m
+741(is)s 881(supposed)s 1515(to)s 170 1335(be)m 358(a)s
+469(mere)s 825(pro)s 2(vince.)k 1491(If)s 170 1155(she)m
+708(produces)s 1608(an)s 170 975(indif)m 4(ferent)k 879(composer)s
+1540(or)s 567 0 0 0 160 180 40 170 763 LoutGr2
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+128 fnt1 170 624(1)m 160 fnt1 221 552(Blom,)m
+703(Eric.)s 160 fnt6 1133 553(Some)m 170 373(Gr)m 5(eat)k
+734(Composer)s 1(s.)k 160 fnt1 170 192(Oxford,)m 703(1944.)s
+
+grestore
+gsave
+3315 2739 translate
+240 fnt1 1927 2494 0 2494 240 288 60 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto xsize ysize lineto
+0 ysize lineto closepath stroke
+grestore
+140 fnt2 170 2222(@T)m 16(e)k 4(xtPlace)k
+170 173(@F)m 4(ootSect)k
+grestore
+140 fnt2 3315 2524(@P)m 5(ageList)k
+gsave
+6802 7727 translate
+180.0000 rotate
+gsave
+0 0 translate
+30.0000 rotate
+gsave
+0 1 translate
+240 fnt1 68 -2 0 -1 240 288 60 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+0 0 translate
+240 fnt1 1440 0 0 0 240 288 60 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+0 0 translate
+-30.0000 rotate
+gsave
+0 1 translate
+240 fnt1 68 -2 0 -1 240 288 60 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+
+grestore
+200 fnt6 6862 7683(to)m
+7061(printer)s 240 fnt1 0 1717(and)m 404(so)s 671(on.)s
+1076(All)s 1437(these)s 1985(e)s 3(xpansions)k 3098(and)s
+3503(replacements)s 4814(are)s 5162(done)s 5685(with)s 6168(total)s
+6648(inte)s 3(grity)k 15(.)k 7604(F)s 3(or)k
+7994(e)s 3(xample,)k 8909(if)s 0 1429(Lout)m 510(\207nds)s
+1024(after)s 1517(e)s 3(xpanding)k 220 fnt2 2563 1426(@F)m 6(ootSect)k
+240 fnt1 3711 1429(that)m 4126(the)s 4472(page)s 4977(is)s
+5184(too)s 5541(full)s 5924(to)s 6160(accept)s 6828(e)s 6(v)k 3(en)k
+7325(the)s 7670(\207rst)s 8099(line)s 8510(of)s 8778(the)s
+0 1141(footnote,)m 220 fnt2 915 1138(@F)m 6(ootSect)k 240 fnt1
+2077 1141(is)m 2298(reset)s 2819(to)s 3070(une)s 3(xpanded)k
+4294(and)s 4709(the)s 5068(search)s 5746(for)s 6096(a)s
+6273(tar)s 4(get)k 6883(for)s 7232(the)s 7591(footnote)s
+8456(mo)s 3(v)k 3(es)k 0 853(on.)m 396(And)s
+858(the)s 1197(cross)s 1730(reference)s 2664(direction,)s 220 fnt2
+3611 850(preceding)m 240 fnt1 4613 853(or)m 220 fnt2 4864 850(f)m 6(ollo)k 3(wing,)k
+240 fnt1 5799 853(is)m 6000(al)s 2(w)k 2(ays)k
+6702(obe)s 3(yed)k 7440(\(although)s 8405(lack)s 8855(of)s
+0 565(space)m 586(sometimes)s 1658(pre)s 6(v)k 3(ents)k
+2509(Lout)s 3020(from)s 3543(choosing)s 4460(the)s 4807(nearest)s
+5542(tar)s 4(get\).)k 6323(Only)s 6855(the)s 7202(root)s
+7646(g)s 1(alle)k 3(y)k 8278(contains)s 0 277(recepti)m 6(v)k 3(e)k
+922(symbols)s 1771(in)s 2014(our)s 2393(running)s 3191(e)s 3(xample,)k
+4105(b)s 4(ut)k 4467(an)s 3(y)k 4864(g)s 1(alle)k 3(y)k
+5498(may)s 5964(contain)s 6725(them.)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 14 20
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+gsave
+1417 -14867 translate
+0.0 0.0 0.0 LoutSetRGBColor
+9066 13450 0 13450 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+480 fnt5 0 12399(Chapter)m 1819(2.)s 2400(Details)s
+[ /Dest /LOUTdetails /DEST pdfmark
+240 fnt5
+0 11134(2.1.)m 471(Lexical)s 1270(structur)s 4(e)k 2263(\(w)s 2(ords,)k
+3079(spaces,)s 3844(symbols\))s 4796(and)s 5237(macr)s 4(os)k
+
+[ /Dest /LOUTlexical /DEST pdfmark
+240 fnt1 480 10657(The)m 902(input)s 1447(to)s 1679(Lout)s
+2184(consists)s 2985(of)s 3249(a)s 3408(sequence)s 4334(of)s
+240 fnt6 4598 10659(te)m 4(xtual)k 5297(units)s 240 fnt1
+5757 10657(,)m
+[ /Dest /LOUT19_4637_det_lexi_1 /DEST pdfmark
+5857(which)s 6492(may)s 6951(be)s 7226(either)s
+240 fnt6 7822 10659(white)m 8386(spaces)s 240 fnt1 9019 10657(,)m
+240 fnt6 0 10371(identi\207er)m 2(s,)k 1047(delimiter)s 2(s,)k
+240 fnt1 2093 10369(or)m 240 fnt6 2352 10371(liter)m 3(al)k
+2992(wor)s 8(ds)k 240 fnt1 3565 10369(.)m 3729(Each)s
+4264(is)s 4474(a)s 4640(sequence)s 5573(of)s 240 fnt6
+5844 10371(c)m 3(har)k 3(acter)k 2(s)k 240 fnt1
+6914 10369(chosen)m 7636(from:)s
+[ /Dest /LOUT19_4637_det_lexi_2 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_det_lexi_3 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_det_lexi_4 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_det_lexi_5 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_det_lexi_6 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_det_lexi_7 /DEST pdfmark
+480 9831(letter)m 220 fnt2 1934 9828(@ab-zAB-Z_)m
+240 fnt1 480 9543(white)m 1067(space)s 240 fnt6 1934 9545(space)m
+2592(formfeed)s 3568(tab)s 3988(ne)s 3(wline)k 240 fnt1
+480 9255(quote)m 220 fnt2 1934 9252(")m 240 fnt1 480 8967(escape)m
+220 fnt2 1934 8964(\\)m 240 fnt1 480 8679(comment)m 220 fnt2
+1934 8676(#)m 240 fnt1 480 8391(other)m 220 fnt2 1934 8388(!$%&'\(\)*+,-./0123456789:;<=>?[]^`{|}~)m
+240 fnt1 0 7850(Notice)m 732(that)s 220 fnt2 1189 7847(@)m
+240 fnt1 1480 7850(and)m 220 fnt2 1923 7847(_)m 240 fnt1
+2144 7850(are)m 2531(classed)s 3318(as)s 3608(letters.)s 4393(Basser)s
+5129(Lout)s 5681(accepts)s 6474(the)s 6861(accented)s 7795(letters)s
+8467(of)s 8778(the)s 0 7562(ISO-LA)m 26(TIN-1)k 1421(character)s
+2388(set)s 2746(\(depending)s 3909(on)s 4238(ho)s 6(w)k
+4732(it)s 4957(is)s 5200(installed\),)s 6228(and)s 6664(these)s
+7244(are)s 7624(also)s 8095(classed)s 8876(as)s 0 7274(letters.)m
+756(The)s 1195(ten)s 1555(digits)s 2148(are)s 2505(classed)s
+3264(as)s 3525(`other')s 4218(characters,)s 5302(and)s 5717(in)s
+5971(f)s 2(act)k 6397(the)s 6755(`other')s 7448(class)s
+7974(contains)s 8833(all)s 0 6986(8-bit)m 511(characters)s 1529(\(e)s 3(xcept)k
+2289(octal)s 2808(0\))s 3056(not)s 3422(assigned)s 4304(to)s
+4543(pre)s 6(vious)k 5412(classes.)s 480 6612(A)m 240 fnt6
+698 6614(white)m 1256(space)s 240 fnt1 1841 6612(is)m 2038(a)s
+2191(sequence)s 3111(of)s 3369(one)s 3758(or)s 4005(more)s
+4539(white)s 5113(space)s 5687(characters.)s
+[ /Dest /LOUT19_4637_det_lexi_8 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_det_lexi_9 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_det_lexi_10 /DEST pdfmark
+6805(Lout)s 7304(treats)s
+7858(the)s 8193(formfeed)s 0 6324(character)m 931(e)s 3(xactly)k
+1668(lik)s 2(e)k 2076(the)s 2420(space)s 3003(character;)s
+3985(it)s 4173(is)s 4379(useful)s 5014(for)s 5348(getting)s
+6061(page)s 6565(breaks)s 7236(when)s 7808(printing)s 8614(Lout)s
+0 6036(source)m 680(code.)s 480 5662(A)m 240 fnt6 709 5664(delimiter)m
+240 fnt1 1635 5662(is)m 1844(a)s 2009(sequence)s 2941(of)s
+3211(one)s 3612(or)s 3870(more)s 4415(`other')s 5096(characters)s
+6113(which)s
+[ /Dest /LOUT19_4637_det_lexi_11 /DEST pdfmark
+6754(is)s 6963(the)s 7310(name)s 7883(of)s
+8153(a)s 8317(symbol.)s 0 5374(F)m 3(or)k 417(e)s 3(xample,)k
+220 fnt2 1360 5371({)m 240 fnt1 1512 5374(and)m 220 fnt2
+1945 5371(//)m 240 fnt1 2159 5374(are)m 2534(delimiters.)s 3681(When)s
+4338(de\207ning)s 5205(a)s 5400(delimiter)s 9(,)k 6387(the)s
+6764(name)s 7366(must)s 7920(be)s 8231(enclosed)s 0 5086(in)m
+243(quotes:)s 220 fnt2 480 4587(def "^" { {} ^& {} })m 240 fnt1 0 4093(b)m 4(ut)k
+361(quotes)s 1036(are)s 1381(not)s 1746(used)s 2242(when)s
+2816(the)s 3163(delimiter)s 4082(is)s 4291(in)s 9(v)k 4(ok)k 2(ed.)k
+5211(A)s 5439(delimiter)s 6359(may)s 6824(ha)s 4(v)k 3(e)k
+7323(delimiters)s 8327(and)s 8729(an)s 3(y)k 0 3805(other)m
+558(characters)s 1584(adjacent,)s 2495(whereas)s 3337(identi\207ers)s 4351(may)s
+4825(not)s 5199(be)s 5489(adjacent)s 6353(to)s 6600(letters)s
+7241(or)s 7508(other)s 8067(identi\207ers.)s 0 3517(The)m 428(complete)s
+1360(list)s 1711(of)s 1982(prede\207ned)s 3050(delimiters)s 4055(is)s
+220 fnt2 480 3016(/)m 480 2728(//)m 480 2440(^/)m 480 2152(^//)m
+1727 3016(|)m 1727 2728(||)m 1727 2440(^|)m 1727 2152(^||)m 2974 3016(&)m
+2974 2728(^&)m 4221 3016(&&)m 4221 2728({)m 4221 2440(})m 240 fnt1
+0 1697(A)m 230(longer)s 901(delimiter)s 1822(lik)s 2(e)k
+220 fnt2 2234 1694(<=)m 240 fnt1 2542 1697(will)m 2968(be)s
+3250(recognised)s 4344(in)s 4587(preference)s 5650(to)s 5889(a)s
+6055(shorter)s 6778(one)s 7180(lik)s 2(e)k 220 fnt2
+7592 1694(<)m 240 fnt1 7710 1697(.)m 480 1323(An)m 240 fnt6
+855 1325(identi\207er)m 240 fnt1 1808 1323(is)m 2043(a)s 2234(sequence)s
+3192(of)s 3488(one)s 3915(or)s 4199(more)s 4772(letters)s
+5430(which)s 6097(is)s 6332(the)s 6705(name)s 7304(of)s
+7600(a)s
+[ /Dest /LOUT19_4637_det_lexi_12 /DEST pdfmark
+7791(symbol.)s 8685(It)s 8916(is)s 0 1035(con)m 9(v)k 3(entional)k
+1308(b)s 4(ut)k 1700(not)s 2096(essential)s 3003(to)s
+3272(be)s 3(gin)k 3888(identi\207ers)s 4924(with)s 220 fnt2
+5436 1032(@)m 240 fnt1 5627 1035(;)m 5829(Basser)s 6556(Lout)s
+7098(will)s 7554(print)s 8095(a)s 8291(w)s 2(arning)k
+0 747(message)m 865(if)s 1081(it)s 1272(\207nds)s 1788(an)s
+2070(unquoted)s 3019(literal)s 3628(w)s 2(ord)k 4175(\(see)s
+4614(belo)s 6(w\))k 5320(be)s 3(ginning)k 6327(with)s
+220 fnt2 6808 744(@)m 240 fnt1 6999 747(,)m 7105(since)s
+7651(such)s 8146(w)s 2(ords)k 8779(are)s 0 459(usually)m
+748(misspelt)s 1608(identi\207ers.)s 2730(The)s 3162(ten)s 3515(digits)s
+4100(are)s 4451(not)s 4820(letters)s 5457(and)s 5865(may)s
+6334(not)s 6704(appear)s 7404(in)s 7651(identi\207ers;)s 8722(and)s
+0 171(although)m 890(the)s 1233(underscore)s 2333(character)s 3262(is)s
+3467(a)s 3628(letter)s 4172(and)s 4570(may)s 5031(be)s
+5308(used)s 5800(in)s 6038(identi\207ers,)s 7095(it)s 7282(is)s
+7487(not)s 7847(con)s 9(v)k 3(entional)k
+grestore
+gsave
+1417 -14867 translate
+0.0 0.0 0.0 LoutSetRGBColor
+0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+192 fnt5 0.0 0.0 0.0 LoutSetRGBColor 5856 -15423(14)m
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 15 21
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(2.1.)m 1871(Le)s 4(xical)k 2630(structur)s 8(e)k
+3538(\(wor)s 8(ds,)k 4288(spaces,)s 5019(symbols\))s 5919(and)s
+6345(macr)s 10(os)k 240 fnt5 10250 -1583(15)m gsave
+1417 -15423 translate
+240 fnt1
+9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+0 13205(to)m 239(do)s 532(so.)s 909(The)s 1337(complete)s
+2269(list)s 2620(of)s 2891(prede\207ned)s 3959(identi\207ers)s 4965(is)s
+220 fnt2 150 12704(@Bac)m 4(kEnd)k 150 12416(@Bac)m 4(kg)k 2(round)k
+150 12128(@Begin)m 150 11840(@BeginHeaderComponent)m 150 11552(@Break)m 150 11264(@Case)m 150 10976(@ClearHeaderComponent)m
+150 10688(@Common)m 150 10400(@Char)m 150 10112(@CurrF)m 11(ace)k 150 9824(@CurrF)m 11(amily)k
+150 9536(@CurrLang)m 150 9248(@CurrYUnit)m 150 8960(@CurrZUnit)m 150 8672(@Database)m 150 8384(@Enclose)m
+150 8096(@End)m 150 7808(@EndHeaderComponent)m 150 7520(@Filter)m 150 7232(@FilterErr)m 150 6944(@FilterIn)m
+150 6656(@FilterOut)m 150 6368(@F)m 6(ont)k 150 6080(@F)m 6(ontDef)k
+150 5792(@F)m 6(orceGalle)k 4(y)k 150 5504(@Galle)m 4(y)k
+150 5216(@GetConte)m 6(xt)k 150 4928(@Gr)m 2(aphic)k 150 4640(@HAdjust)m
+150 4352(@HContr)m 2(act)k 150 4064(@HCo)m 3(v)k 5(er)k
+150 3776(@HExpand)m 150 3488(@High)m 150 3200(@HLimited)m 150 2912(@HMirror)m 150 2624(@HScale)m
+150 2336(@HShift)m 3031 12704(@HSpan)m 3031 12416(@Include)m 3031 12128(@IncludeGr)m 2(aphic)k
+3031 11840(@IncludeGr)m 2(aphicRepeated)k 3031 11552(@Inser)m -8(t)k 3031 11264(@K)m 8(er)k -5(nShr)k -3(ink)k
+3031 10976(@K)m 8(e)k 4(y)k 3031 10688(@Language)m 3031 10400(@LClos)m
+3031 10112(@LEn)m 4(v)k 3031 9824(@LInput)m 3031 9536(@LUse)m 3031 9248(@LinkSource)m
+3031 8960(@LinkDest)m 3031 8672(@Meld)m 3031 8384(@Merge)m 3031 8096(@Min)m 2(us)k
+3031 7808(@Moment)m 3031 7520(@Ne)m 6(xt)k 3031 7232(@NotRe)m 6(v)k 5(ealed)k
+3031 6944(@Null)m 3031 6656(@OneCol)m 3031 6368(@OneOf)m 3031 6080(@OneRo)m 3(w)k
+3031 5792(@Open)m 3031 5504(@Optimiz)m 3(e)k 3031 5216(@Outline)m 3031 4928(@P)m 26(Adjust)k
+3031 4640(@P)m 8(ageLabel)k 3031 4352(@PlainGr)m 2(aphic)k 3031 4064(@Plus)m
+3031 3776(@PrependGr)m 2(aphic)k 3031 3488(@Ra)m 4(wV)k 17(erbatim)k
+3031 3200(@Rotate)m 3031 2912(@Rump)m 3031 2624(@Scale)m 3031 2336(@SetColor)m 5915 12704(@SetColour)m
+5915 12416(@SetConte)m 6(xt)k 5915 12128(@SetHeaderComponent)m 5915 11840(@Space)m 5915 11552(@Star)m -8(tHSpan)k
+5915 11264(@Star)m -8(tHVSpan)k 5915 10976(@Star)m -8(tVSpan)k 5915 10688(@SysDatabase)m
+5915 10400(@SysInclude)m 5915 10112(@SysIncludeGr)m 2(aphic)k 5915 9824(@SysIncludeGr)m 2(aphicRepeated)k
+5915 9536(@SysPrependGr)m 2(aphic)k 5915 9248(@T)m 26(ag)k 5915 8960(@T)m 26(agged)k
+5915 8672(@T)m 26(arget)k 5915 8384(@T)m 26(e)k 6(xture)k
+5915 8096(@SetT)m 26(e)k 6(xture)k 5915 7808(@Under)m -3(line)k
+5915 7520(@SetUnder)m -3(lineColor)k 5915 7232(@SetUnder)m -3(lineColour)k 5915 6944(@Use)m
+5915 6656(@URLLink)m 5915 6368(@V)m 17(Adjust)k 5915 6080(@VContr)m 2(act)k
+5915 5792(@VCo)m 3(v)k 5(er)k 5915 5504(@V)m 17(erbatim)k
+5915 5216(@VExpand)m 5915 4928(@VLimited)m 5915 4640(@VMirror)m 5915 4352(@VScale)m 5915 4064(@VShift)m
+5915 3776(@VSpan)m 5915 3488(@Wide)m 5915 3200(@Y)m 4(ield)k 5915 2912(@YUnit)m
+5915 2624(@ZUnit)m 240 fnt1 0 1881(plus)m 498(the)s 894(names)s
+1605(of)s 1924(the)s 2321(parameters)s 3467(of)s 220 fnt2
+3786 1878(@Moment)m 240 fnt1 4798 1881(.)m 5011(The)s 5487(symbols)s
+220 fnt2 6385 1878(@LClos)m 240 fnt1 7161 1881(,)m 220 fnt2
+7316 1878(@LEn)m 4(v)k 240 fnt1 8034 1881(,)m
+[ /Dest /LOUT19_4637_det_lexi_13 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_det_lexi_14 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_det_lexi_15 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_det_lexi_16 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_det_lexi_17 /DEST pdfmark
+220 fnt2
+8190 1878(@LInput)m 240 fnt1 9019 1881(,)m 220 fnt2 0 1590(@L)m 24(Vis)k
+240 fnt1 722 1593(and)m 220 fnt2 1170 1590(@LUse)m 240 fnt1
+2001 1593(appear)m 2742(in)s 3029(cross)s 3615(reference)s 4602(databases)s
+5613(generated)s 6644(by)s 6982(Lout)s 7538(and)s 7986(are)s
+8377(not)s 8788(for)s 0 1305(use)m 375(else)s 6(where.)k
+480 931(A)m 728(sequence)s 1679(of)s 1968(characters)s 3004(which)s
+3664(is)s 3892(neither)s 4633(a)s 4817(white)s 5422(space,)s
+6078(an)s 6379(identi\207er)s 9(,)k 7357(nor)s 7754(a)s
+7938(delimiter)s 9(,)k 8916(is)s 0 643(by)m 304(def)s 2(ault)k
+1036(a)s 240 fnt6 1213 645(liter)m 3(al)k 1864(wor)s 8(d)k
+240 fnt1 2355 643(,)m 2473(which)s 3126(means)s 3799(that)s
+4227(it)s 4430(will)s
+[ /Dest /LOUT19_4637_det_lexi_18 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_det_lexi_19 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_det_lexi_20 /DEST pdfmark
+4867(pass)s 5341(through)s 6154(Lout)s
+6677(unchanged.)s 7890(An)s 8251(arbitrary)s 0 355(sequence)m 926(of)s
+1190(characters)s 2201(enclosed)s 3089(in)s 3325(double)s 4026(quotes,)s
+4751(for)s 5082(e)s 3(xample)k 220 fnt2 5938 352("{ }",)m
+240 fnt1 6457 355(is)m 6660(also)s 7091(a)s 7250(literal)s
+7853(w)s 2(ord.)k 8499(Space)s 0 67(characters)m 1005(may)s
+1458(be)s 1726(included,)s 2644(b)s 4(ut)k 2992(not)s
+3345(tabs)s 3767(or)s 4013(ne)s 6(wlines.)k 5008(There)s
+5607(are)s 5941(special)s 6645(character)s 7566(sequences,)s 8629(used)s
+
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 16 22
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(16)m 240 fnt6 8674 -1580(Chapter)m 9524(2.)s
+9798(Details)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+0 13205(only)m 480(between)s 1334(quotes,)s
+2066(for)s 2404(obtaining)s 3361(otherwise)s 4346(inaccessible)s 5556(characters:)s
+220 fnt2 480 12664(\\")m 240 fnt1 1235 12667(produces)m 220 fnt2
+2150 12664(")m 480 12376(\\\\)m 240 fnt1 1235 12379(\\)m 220 fnt2
+480 12088(\\ddd)m 240 fnt1 1235 12091(the)m 1583(character)s 2517(whose)s
+3185(ASCII)s 3865(code)s 4373(is)s 1235 11803(the)m 1583(up)s
+1876(to)s 2115(three)s 2648(digit)s 3146(octal)s 3665(number)s
+220 fnt2 4456 11800(ddd)m 240 fnt1 0 11262(So,)m 360(for)s
+698(e)s 3(xample,)k 220 fnt2 1612 11259("\\"@PP\\"")m 240 fnt1
+2606 11262(produces)m 220 fnt2 3521 11259("@PP")m 240 fnt1 4177 11262(.)m
+480 10888(When)m 1106(the)s 1451(comment)s 2398(character)s
+[ /Dest /LOUT19_4637_det_lexi_21 /DEST pdfmark
+220 fnt2
+3328 10885(#)m 240 fnt1 3502 10888(is)m 3709(encountered,)s 4982(e)s 6(v)k 3(erything)k
+6045(from)s 6566(that)s 6981(point)s 7530(to)s 7765(the)s
+8110(end)s 8511(of)s 8778(the)s 0 10600(line)m 414(is)s
+624(ignored.)s 1519(This)s 1995(is)s 2205(useful)s 2844(for)s
+3182(including)s 4139(reminders)s 5145(to)s 5384(oneself,)s 6181(lik)s 2(e)k
+6593(this:)s 220 fnt2 480 10103(# Lout user man)m 2(ual)k 480 9815(# J)m 6(.)k 13( Kingston, J)k 4(une 1989)k
+240 fnt1 0 9316(for)m 338(temporarily)s 1506(deleting)s 2329(parts)s
+2844(of)s 3115(the)s 3463(document,)s 4514(and)s 4918(so)s
+5184(on.)s 240 fnt6 480 8944(Macr)m 10(os)k
+[ /Dest /LOUT19_4637_det_lexi_22 /DEST pdfmark
+240 fnt1
+1268 8942(pro)m 3(vide)k 2064(a)s 2242(means)s 2916(of)s
+3199(de\207ning)s 4049(symbols)s 4910(which)s 5564(stand)s 6139(for)s
+6489(a)s 6667(sequence)s 7612(of)s 7895(te)s 3(xtual)k
+8610(units)s 0 8654(rather)m 616(than)s 1085(an)s 1368(object.)s
+2116(F)s 3(or)k 2505(e)s 3(xample,)k 3419(the)s
+3767(macro)s 4417(de\207nition)s 220 fnt2 480 8153(macro @PP { //1.3vx 2.0f @Wide &0i })m 240 fnt1
+0 7659(mak)m 2(es)k 663(Lout)s 1178(replace)s 1926(the)s
+2277(symbol)s 220 fnt2 3040 7656(@PP)m 240 fnt1 3609 7659(by)m
+3906(the)s 4258(gi)s 6(v)k 3(en)k 4841(te)s 3(xtual)k
+5546(units)s 6065(before)s 6734(assembling)s 7866(its)s 8145(input)s
+8701(into)s 0 7371(objects.)m 841(A)s 1071(similar)s 1793(macro)s
+2443(to)s 2682(this)s 3077(one)s 3479(is)s 3689(used)s
+4186(to)s 4425(separate)s 5262(the)s 5610(paragraphs)s 6710(of)s
+6981(the)s 7329(present)s 8078(document.)s 0 7083(The)m 450(enclosing)s
+1442(braces)s 2126(and)s 2552(an)s 3(y)k 2972(spaces)s
+3669(adjacent)s 4548(to)s 4809(them)s 5370(are)s 5739(dropped,)s
+6654(which)s 7318(can)s 7730(be)s 8034(a)s 8223(problem:)s
+220 fnt2 0 6792(@PP2i)m 240 fnt1 731 6795(has)m 1101(result)s
+220 fnt2 1691 6792(//1.3vx 2.0f @Wide &0i2i)m 240 fnt1 4141 6795(which)m 4783(is)s
+4993(erroneous.)s 480 6421(The)m 938(meaning)s 1846(of)s 2148(symbols)s
+3028(used)s 3556(within)s 4254(the)s 4633(body)s 5198(of)s
+5500(a)s 5697(macro)s 6377(is)s 6618(determined)s 7782(by)s
+8107(where)s 8778(the)s 0 6133(macro)m 667(is)s 895(de\207ned,)s
+1724(not)s 2108(by)s 2419(where)s 3077(it)s 3287(is)s
+3514(used.)s 4135(Due)s 4607(to)s 4864(implementation)s 6438(problems,)s
+220 fnt2 7453 6130(@Open)m 240 fnt1 8277 6133(symbols)m 0 5845(will)m
+423(not)s 786(w)s 2(ork)k 1333(within)s 1998(macros.)s
+2849(Named)s 3594(and)s 3995(body)s 4525(parameters)s 5620(will)s
+6043(w)s 2(ork)k 6590(if)s 6804(the)s 7149(symbol)s
+7905(that)s 8320(the)s 3(y)k 8779(are)s 0 5557(parameters)m
+1090(of)s 1352(is)s 1553(also)s 1983(present.)s 2828(There)s
+3432(is)s 3633(no)s 3918(w)s 2(ay)k 4360(to)s
+4590(get)s 4934(a)s 5091(left)s 5459(or)s 5709(right)s
+6212(brace)s 6776(into)s 7192(the)s 7532(body)s 8057(of)s
+8319(a)s 8476(macro)s 0 5269(without)m 791(the)s 1139(matching)s
+2082(brace.)s 480 4895(Macros)m 1252(may)s 1723(be)s 2010(nested)s
+2683(within)s 3356(other)s 3912(de\207nitions)s 4978(and)s 5386(e)s 3(xported,)k
+6332(b)s 4(ut)k 6699(the)s 3(y)k 7166(may)s
+7637(not)s 8008(be)s 8295(parame-)s 0 4607(ters.)m 511(The)s 3(y)k
+1058(may)s 1527(not)s 1897(ha)s 4(v)k 3(e)k
+2401(parameters)s 3503(or)s 3765(nested)s 4438(de\207nitions)s 5502(of)s
+5777(their)s 6277(o)s 6(wn,)k 6795(and)s 7202(consequently)s
+8523(a)s 8693(pre-)s 0 4319(ceding)m 220 fnt2 691 4316(e)m 6(xpor)k -8(t)k
+240 fnt1 1359 4319(clause)m 2012(\(Section)s 2865(2.3\))s 3293(w)s 2(ould)k
+3948(be)s 4230(pointless;)s 5192(ho)s 6(we)k 6(v)k 3(er)k 9(,)k
+6099(an)s 220 fnt2 6382 4316(impor)m -8(t)k 240 fnt1
+7055 4319(clause)m 7708(is)s 7918(permitted.)s 240 fnt5 0 3527(2.2.)m
+471(Named)s 1257(parameters)s
+[ /Dest /LOUTnamed /DEST pdfmark
+240 fnt1 480 3050(In)m 728(addition)s
+1560(to)s 1790(left)s 2159(and)s 2554(right)s 3056(\(or)s
+3386(body\))s 3985(parameters,)s 5130(a)s 5288(symbol)s 6039(may)s
+6496(ha)s 4(v)k 3(e)k 6989(an)s 3(y)k
+7377(number)s 8159(of)s 240 fnt6 8421 3052(named)m 0 2764(par)m 3(ameter)k 2(s)k
+240 fnt1 1080 2762(:)m
+[ /Dest /LOUT19_4637_det_name_1 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_det_name_2 /DEST pdfmark
+220 fnt2 480 2265(def @Chapter)m 480 1977( named @T)m 26(ag {})k
+480 1689( named @Title {})m 480 1401( r)m -3(ight x)k 480 1113({)m 480 825( ...)m
+480 537(})m
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 17 23
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(2.2.)m 1871(Named)s 2616(par)s 3(ameter)k 2(s)k
+240 fnt5 10248 -1583(17)m gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+0 13205(Their)m 577(de\207nitions)s
+1639(appear)s 2336(in)s 2580(between)s 3434(those)s 3996(of)s
+4267(an)s 3(y)k 4665(left)s 5042(and)s 5447(right)s
+5958(parameters,)s 7113(and)s 7517(each)s 8013(is)s 8224(follo)s 6(wed)k
+0 12917(by)m 293(a)s 240 fnt6 457 12919(default)m 1183(value)s
+240 fnt1 1753 12917(between)m
+[ /Dest /LOUT19_4637_det_name_3 /DEST pdfmark
+2605(braces.)s 3377(When)s 220 fnt2
+4004 12914(@Chapter)m 240 fnt1 5066 12917(is)m 5274(in)s 9(v)k 4(ok)k 2(ed,)k
+6136(its)s 6411(named)s 7105(parameters)s 8201(are)s 8546(gi)s 6(v)k 3(en)k
+0 12629(v)m 6(alues)k 656(in)s 899(the)s 1247(follo)s 6(wing)k
+2224(w)s 2(ay:)k 220 fnt2 480 12128(@Chapter)m 480 11840( @T)m 26(ag { intro })k
+480 11552( @Title { Introduction })m 480 11264({)m 480 10976( ...)m 480 10688(})m 240 fnt1
+0 10194(That)m 485(is,)s 737(a)s 889(list)s 1226(of)s
+1483(named)s 2166(parameters)s 3250(appears)s 4017(immediately)s 5251(follo)s 6(wing)k
+6214(the)s 6549(symbol,)s 7347(each)s 7828(with)s 8296(its)s
+8558(v)s 6(alue)k 0 9906(enclosed)m 900(in)s 1149(braces.)s
+1929(An)s 3(y)k 2399(right)s 2916(parameter)s 3936(follo)s 6(ws)k
+4704(after)s 5206(them.)s 5854(The)s 3(y)k 6403(do)s
+6702(not)s 7074(ha)s 4(v)k 3(e)k 7581(to)s
+7826(appear)s 8529(in)s 8778(the)s 0 9618(order)m 558(the)s 3(y)k
+1015(were)s 1529(de\207ned,)s 2334(and)s 2732(the)s 3(y)k
+3189(can)s 3571(e)s 6(v)k 3(en)k 4065(be)s
+4341(omitted)s 5122(altogether)s 9(,)k 6169(in)s 6406(which)s
+7041(case)s 7502(the)s 7844(def)s 2(ault)k 8558(v)s 6(alue)k
+0 9330(from)m 524(the)s 872(de\207nition)s 1846(is)s 2056(used)s
+2553(instead.)s 480 8956(If)m 699(the)s 1036(k)s 2(e)k 3(yw)k 2(ord)k
+220 fnt2 1913 8953(compulsor)m -6(y)k 240 fnt1 3088 8956(appears)m
+3858(after)s 220 fnt2 4342 8953(named)m 240 fnt1 5050 8956(and)m
+5442(before)s 6097(the)s 6434(parameter')s 13(s)k 7586(name,)s
+8200(Lout)s 8700(will)s 0 8668(print)m 501(a)s 657(w)s 2(arning)k
+1481(message)s 2337(whene)s 6(v)k 3(er)k 3307(this)s
+3693(parameter)s 4696(is)s 4896(missing.)s 5793(Ho)s 6(we)k 6(v)k 3(er)k
+6705(it)s 6886(will)s 7302(still)s 7703(use)s 8068(the)s
+8405(def)s 2(ault)k 0 8380(v)m 6(alue)k 568(as)s
+818(just)s 1223(described.)s 480 8006(A)m 719(named)s 220 fnt2
+1424 8003(@T)m 26(ag)k 240 fnt1 2057 8006(parameter)m
+[ /Dest /LOUT19_4637_det_name_4 /DEST pdfmark
+3080(does)s
+3580(not)s 3955(tak)s 2(e)k 4417(its)s 4702(def)s 2(ault)k
+5433(v)s 6(alue)k 6010(from)s 6544(the)s 6901(de\207nition;)s
+7940(instead,)s 8733(if)s 8960(a)s 0 7718(def)m 2(ault)k
+726(v)s 6(alue)k 1300(is)s 1516(needed,)s 2306(Lout)s
+2824(in)s 9(v)k 3(ents)k 3560(a)s 3731(simple)s
+4430(w)s 2(ord)k 4984(which)s 5631(dif)s 6(fers)k
+6304(from)s 6834(e)s 6(v)k 3(ery)k 7415(other)s
+7972(tag.)s 8434(This)s 8916(is)s 0 7430(important,)m 1034(for)s
+1370(e)s 3(xample,)k 2282(in)s 2523(the)s 2868(production)s
+3960(of)s 4229(numbered)s 5242(chapters)s 6086(and)s 6488(sections)s
+7307(\(Section)s 8158(4.4\).)s 8698(The)s 0 7142(same)m 551(thing)s
+1101(occurs)s 1781(if)s 2003(there)s 2541(is)s 2756(a)s
+220 fnt2 2927 7139(@T)m 26(ag)k 240 fnt1 3555 7142(parameter)m
+4574(b)s 4(ut)k 4940(its)s 5221(v)s 6(alue)k
+5794(is)s 6009(the)s 6362(empty)s 7019(object:)s 7774(the)s
+8127(v)s 6(alue)k 8700(will)s 0 6854(be)m 282(replaced)s
+1149(by)s 1443(an)s 1726(in)s 9(v)k 3(ented)k
+2596(one.)s 480 6480(Named)m 1229(parameters)s 2327(may)s 2793(ha)s 4(v)k 3(e)k
+3294(parameters,)s
+[ /Dest /LOUTstrange /DEST pdfmark
+4448(as)s 4698(in)s 4941(the)s 5289(follo)s 6(wing)k
+6266(de\207nition:)s 220 fnt2 480 5979(def @Str)m 2(ange)k 480 5691( named @F)m 6(or)k -5(mat r)k -3(ight @V)k 15(al { [@V)k 15(al] })k
+480 5403( r)m -3(ight x)k 480 5115({)m 480 4827( @F)m 6(or)k -5(mat x)k
+480 4539(})m 240 fnt1 0 4045(The)m 428(named)s 1125(parameter)s
+220 fnt2 2139 4042(@F)m 6(or)k -5(mat)k 240 fnt1
+3113 4045(has)m 3483(right)s 3995(parameter)s 220 fnt2 5010 4042(@V)m 15(al)k
+240 fnt1 5520 4045(,)m 5627(and)s 6032(the)s 6380(def)s 2(ault)k
+7102(v)s 6(alue)k 7670(of)s 220 fnt2 7942 4042(@F)m 6(or)k -5(mat)k
+240 fnt1 8916 4045(is)m 0 3757(this)m 394(parameter)s 1406(enclosed)s
+2299(in)s 2539(brack)s 2(ets.)k 3495(When)s 220 fnt2
+4122 3754(@F)m 6(or)k -5(mat)k 240 fnt1 5093 3757(is)m
+5300(in)s 9(v)k 4(ok)k 2(ed)k 6113(it)s
+6303(must)s 6826(be)s 7105(supplied)s 7972(with)s 8452(a)s
+8615(right)s 0 3469(parameter)m 9(,)k 1052(which)s 1694(will)s
+2120(replace)s 220 fnt2 2865 3466(@V)m 15(al)k 240 fnt1
+3375 3469(.)m 3539(Thus,)s 220 fnt2 480 2968(@Str)m 2(ange 27)k
+240 fnt1 0 2469(equals)m 220 fnt2 662 2466(@F)m 6(or)k -5(mat 27)k
+240 fnt1 1937 2469(and)m 2341(so)s 2607(has)s 2977(result)s
+480 1967([27])m 0 1479(The)m 220 fnt2 428 1476(@F)m 6(or)k -5(mat)k
+240 fnt1 1401 1479(symbol)m 2161(is)s 2371(lik)s 2(e)k
+2783(a)s 2949(de\207nition)s 3923(with)s 4405(parameters)s 5503(whose)s
+6171(body)s 6705(can)s 7094(be)s 7376(changed:)s 220 fnt2
+480 978(@Str)m 2(ange)k 480 690( @F)m 6(or)k -5(mat { Slope @F)k 6(ont @V)k 15(al.)k 13( })k
+480 402(27)m
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 18 24
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(18)m 240 fnt6 8674 -1580(Chapter)m 9524(2.)s
+9798(Details)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+0 13205(still)m 412(equals)s 220 fnt2
+1074 13202(@F)m 6(or)k -5(mat 27)k 240 fnt1 2289 13205(,)m
+2396(b)s 4(ut)k 2758(this)s 3154(time)s 3634(the)s
+3982(result)s 4572(is)s 240 fnt6 480 12704(27.)m 240 fnt1
+0 12250(In)m 252(practice,)s 1110(e)s 3(xamples)k 2057(of)s
+2323(named)s 3015(parameters)s 4109(with)s 4586(parameters)s 5680(all)s
+5969(ha)s 4(v)k 3(e)k 6466(this)s 6857(\210a)s 4(v)k 4(our)k
+7583(of)s 7850(format)s 8541(being)s 0 11962(separated)m 996(from)s
+1556(content;)s 2409(running)s 3243(headers)s 4060(\(Section)s 4950(4.3\))s
+5414(and)s 5854(printing)s 6701(styles)s 7332(for)s 7707(bibliographies)s
+0 11674(\(Section)m 853(4.5\))s 1281(are)s 1628(tw)s 2(o)k
+2038(major)s 2655(ones.)s 240 fnt5 0 10881(2.3.)m 471(Nested)s
+1216(de\207nitions,)s 2392(body)s 2954(parameters,)s 4236(extend,)s 5027(import,)s
+5844(and)s 6285(export)s
+[ /Dest /LOUTvisibility /DEST pdfmark
+240 fnt1 480 10404(A)m 710(de\207nition)s
+1684(may)s 2150(contain)s
+[ /Dest /LOUT19_4637_det_visi_1 /DEST pdfmark
+2911(other)s 3462(de\207nitions)s 4523(at)s
+4755(the)s 5103(be)s 3(ginning)k 6111(of)s 6382(its)s
+6658(body:)s 220 fnt2 480 9903(def @NineSquare)m 480 9615( r)m -3(ight x)k
+480 9327({)m 480 9039( def @Three { x |0.2i x |0.2i x })m 480 8463( @Three /0.2i @Three /0.2i @Three)m 480 8175(})m 240 fnt1
+0 7681(A)m 227(parameter)s 1238(lik)s 2(e)k 220 fnt2
+1646 7678(x)m 240 fnt1 1811 7681(may)m 2274(be)s 2552(in)s 9(v)k 4(ok)k 2(ed)k
+3364(an)s 3(ywhere)k 4343(within)s 5008(the)s 5353(body)s
+5883(of)s 6151(the)s 6495(symbol)s 7252(it)s 7441(is)s
+7647(a)s 7810(parameter)s 8820(of,)s 0 7393(including)m 973(within)s
+1657(nested)s 2342(de\207nitions.)s 3532(A)s 3778(nested)s 4463(symbol)s
+5239(lik)s 2(e)k 220 fnt2 5667 7390(@Three)m 240 fnt1
+6531 7393(may)m 7013(be)s 7311(in)s 9(v)k 4(ok)k 2(ed)k
+8143(an)s 3(ywhere)k 0 7105(from)m 518(the)s 860(be)s 3(ginning)k
+1862(of)s 2127(its)s 2397(o)s 6(wn)k 2855(body)s
+3383(to)s 3616(the)s 3958(end)s 4355(of)s 4620(the)s
+4962(body)s 5490(of)s 5755(the)s 6097(symbol)s 6851(it)s
+7037(is)s 7241(de\207ned)s 7998(within.)s 8766(So,)s 0 6817(assuming)m
+957(an)s 1240(appropriate)s 2384(de\207nition)s 3358(of)s 220 fnt2
+3629 6814(@Bo)m 6(x)k 240 fnt1 4222 6817(,)m 220 fnt2
+480 6316(@NineSquare @Bo)m 6(x)k 240 fnt1 0 5820(has)m 370(result)s
+2796 2796 226 2570 240 288 60 480 2734 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+740 740 226 514 240 288 60 0 2056 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+
+grestore
+740 740 226 514 240 288 60 1028 2056 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+
+grestore
+740 740 226 514 240 288 60 2056 2056 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+
+grestore
+740 740 226 514 240 288 60 0 1028 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+
+grestore
+740 740 226 514 240 288 60 1028 1028 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+
+grestore
+740 740 226 514 240 288 60 2056 1028 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+
+grestore
+740 740 226 514 240 288 60 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+
+grestore
+740 740 226 514 240 288 60 1028 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+
+grestore
+740 740 226 514 240 288 60 2056 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+
+grestore
+end end restore
+grestore
+0 2283(Nested)m 722(de\207nitions)s 1783(may)s 2249(themselv)s 3(es)k
+3359(contain)s 4120(nested)s 4789(de\207nitions,)s 5906(to)s 6145(arbitrary)s
+7020(depth.)s 480 1909(There)m 1100(are)s 1454(three)s 1994(special)s
+2719(features)s 3532(which)s 4181(permit)s 4872(a)s 5045(nested)s
+5721(symbol)s 6488(or)s 6754(parameter)s 7775(to)s 8021(be)s
+8311(in)s 9(v)k 4(ok)k 2(ed)k 0 1621(outside)m
+737(its)s 1003(normal)s 1725(range;)s 2358(that)s 2766(is,)s
+3022(outside)s 3759(the)s 4096(body)s 4620(of)s 4881(the)s
+5219(enclosing)s 6179(symbol.)s 7038(The)s 7456(\207rst)s 7877(and)s
+8270(simplest)s 0 1333(of)m 267(these)s 810(features)s 1611(is)s
+1817(the)s 240 fnt6 2161 1335(body)m 2678(par)s 3(ameter)k
+240 fnt1 3677 1333(,)m
+[ /Dest /LOUT19_4637_det_visi_2 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_det_visi_3 /DEST pdfmark
+3780(an)s 4059(alternati)s 6(v)k 3(e)k
+5108(form)s 5628(of)s 5895(right)s 6401(parameter)s 13(.)k
+7502(The)s 7926(Eq)s 8245(equation)s 0 1045(formatting)m 1053(package)s
+1885([)s
+[ /Rect [1956 1042 2062 1210] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTkingston1995lout_user /ANN pdfmark
+1956(5)s 2062(,)s 2161(Chapter)s 2970(7])s
+3200(is)s 3401(a)s 3559(classic)s 4240(e)s 3(xample)k
+5095(of)s 5358(the)s 5698(use)s 6064(of)s 6327(a)s
+6485(body)s 7011(parameter)s 13(.)k 8108(In)s 8355(outline,)s
+0 757(it)m 192(looks)s 762(lik)s 2(e)k 1174(this:)s
+
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 19 25
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+%%+ font Symbol
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+%%IncludeResource: font Symbol
+/fnt4 { /Symbol LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(2.3.)m 1871(Nested)s 2588(de\207nitions,)s 3678(body)s
+4200(par)s 3(ameter)k 2(s,)k 5378(e)s 4(xtend,)k
+6091(import,)s 6822(and)s 7248(e)s 4(xport)k 240 fnt5
+10249 -1583(19)m gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13268 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+220 fnt2 480 13211(e)m 6(xpor)k -8(t "+" sup o)k 3(v)k 5(er)k
+480 12635(def @Eq)m 480 12347( body x)m 480 12059({)m 480 11771( def "+" ...)m 480 11483( def sup ...)m
+480 11195( def o)m 3(v)k 5(er ...)k 480 10907( ...)m 480 10331( Slope @F)m 6(ont x)k
+480 10043(})m 240 fnt1 0 9549(First)m 518(we)s 874(list)s
+1246(those)s 1828(nested)s 2518(symbols)s 3388(and)s 3813(parameters)s
+4932(that)s 5371(we)s 5727(intend)s 6404(to)s 6664(refer)s
+7194(to)s 7454(outside)s 8222(the)s 8592(body)s 0 9261(of)m
+220 fnt2 274 9258(@Eq)m 240 fnt1 815 9261(in)m 1061(an)s
+220 fnt2 1347 9258(e)m 6(xpor)k -8(t)k 240 fnt1
+2018 9261(clause,)m
+[ /Dest /LOUT19_4637_det_visi_4 /DEST pdfmark
+2725(preceding)s 3724(the)s 4075(de\207nition)s 5052(as)s
+5305(sho)s 6(wn.)k 6092(Only)s 6628(e)s 3(xported)k
+7523(symbols)s 8375(may)s 8844(be)s 0 8973(in)m 9(v)k 4(ok)k 2(ed)k
+817(outside)s 1566(the)s 1916(body)s 2452(of)s 220 fnt2
+2725 8970(@Eq)m 240 fnt1 3203 8973(.)m 3369(The)s 3799(body)s
+4335(parameter)s 5351(is)s 5563(lik)s 2(e)k 5977(a)s
+6145(right)s 6658(parameter)s 7674(e)s 3(xcept)k 8357(that)s
+8778(the)s 0 8685(e)m 3(xported)k 892(symbols)s 1741(are)s
+2088(visible)s 2781(within)s 3449(it:)s 220 fnt2 480 8184(@Eq { {x sup 2 + y sup 2} o)m 3(v)k 5(er 2 })k
+240 fnt1 0 7686(calls)m 488(on)s 785(the)s 1133(nested)s
+1802(de\207nitions)s 2863(of)s 220 fnt2 3134 7683(@Eq)m 240 fnt1
+3672 7686(to)m 3911(produce)s 4738(the)s 5086(result)s 168 fnt4
+586 7231(2)m 240 fnt6 480 7171(x)m 240 fnt4 738 7163(+)m
+168 fnt4 1041 7231(2)m 240 fnt6 939 7171(y)m 641 0 0 0 240 288 12 480 7073 LoutGr2
+0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke
+grestore
+
+grestore
+240 fnt4
+743 6845(2)m 240 fnt1 0 6334(The)m 416(body)s 937(parameter')s 13(s)k
+2089(v)s 6(alue)k 2644(must)s 3156(be)s 3426(enclosed)s
+4308(in)s 4539(braces.)s 5300(The)s 5715(term)s 6200(`body)s
+6800(parameter')s 7854(is)s 8051(a)s 8204(reminder)s 0 6046(that)m
+418(the)s 766(v)s 6(alue)k 1334(is)s 1544(interpreted)s
+2636(as)s 2886(if)s 3103(it)s 3295(w)s 2(as)k
+3716(within)s 4384(the)s 4732(body)s 5266(of)s 5537(the)s
+5885(symbol.)s 480 5672(A)m 710(body)s 1244(parameter)s 2257(may)s
+2723(not)s 3089(be)s 3370(e)s 3(xported,)k 4311(and)s
+4714(in)s 4957(f)s 2(act)k 5372(a)s 5537(body)s
+6071(parameter)s 7085(may)s 7550(be)s 7832(in)s 9(v)k 4(ok)k 2(ed)k
+8646(only)s 0 5384(within)m 656(the)s 991(body)s 1512(of)s
+1770(the)s 2105(enclosing)s 3063(symbol,)s 3862(not)s 4215(within)s
+4870(an)s 3(y)k 5254(nested)s 5911(de\207nitions.)s 7072(F)s 3(or)k
+7448(e)s 3(xample,)k 220 fnt2 8349 5381(x)m 240 fnt1
+8504 5384(abo)m 3(v)k 3(e)k 0 5096(may)m 471(not)s
+843(be)s 1131(in)s 9(v)k 4(ok)k 2(ed)k
+1952(within)s 220 fnt2 2626 5093(sup)m 240 fnt1 2972 5096(.)m
+3141(This)s 3623(restriction)s 4653(is)s 4869(needed)s 5611(to)s
+5855(a)s 4(v)k 4(oid)k 6443(the)s 6797(possibility)s
+7853(of)s 8130(recursion,)s 0 4808(when)m 585(the)s 943(actual)s
+1577(body)s 2121(parameter)s 3145(in)s 9(v)k 4(ok)k 2(es)k
+3935(an)s 4228(e)s 3(xported)k 5129(nested)s 5808(de\207nition)s
+6792(which)s 7443(in)s 9(v)k 4(ok)k 2(es)k
+8234(the)s 8592(body)s 0 4520(parameter)m 9(,)k 1052(etc.)s
+480 4146(The)m 932(second)s 1679(place)s 2263(where)s 2928(e)s 3(xported)k
+3844(symbols)s 4717(may)s 5207(be)s 5514(used)s 6035(is)s
+6269(in)s 6536(the)s 6909(right)s 7444(parameter)s 8482(of)s
+8778(the)s 220 fnt2 0 3855(@Open)m 240 fnt1 806 3858(symbol,)m
+1618(and)s 2022(follo)s 6(wing)k 2999(its)s 3275(alternati)s 6(v)k 3(e)k
+4329(form,)s 220 fnt2 4900 3855(@Use)m 240 fnt1 5565 3858(\(Section)m
+6418(3.40\).)s 480 3484(Exported)m 1480(nested)s 2214(symbols)s 3128(and)s
+3598(parameters)s 4761(may)s 5292(be)s 5639(made)s 6279(visible)s
+7037(within)s 7770(a)s 8002(subsequent)s 0 3196(de\207nition)m 974(or)s
+1233(macro)s 1883(by)s 2177(preceding)s 3173(it)s 3365(with)s
+3847(an)s 220 fnt2 4130 3193(impor)m -8(t)k
+[ /Dest /LOUT19_4637_det_visi_5 /DEST pdfmark
+240 fnt1
+4803 3196(clause,)m 5507(lik)s 2(e)k 5919(this:)s 220 fnt2
+480 2695(impor)m -8(t @Eq)k 480 2407(def p)m 6(ythag { sqr)k -8(t { x sup 2 + y sup 2 } })k
+240 fnt1 0 1908(Note)m 548(ho)s 6(we)k 6(v)k 3(er)k
+1444(that)s 220 fnt2 1889 1905(p)m 6(ythag)k 240 fnt1
+2617 1908(can)m 3033(only)s 3540(be)s 3849(used)s 4374(with)s
+4883(some)s 5471(in)s 9(v)k 4(ocation)k 6552(of)s
+220 fnt2 6850 1905(@Eq)m 240 fnt1 7328 1908(:)m 7521(within)s
+8216(the)s 8592(body)s 0 1620(parameter)m 1036(of)s 1329(an)s
+1635(in)s 9(v)k 4(ocation)k 2711(of)s 220 fnt2
+3005 1617(@Eq)m 240 fnt1 3483 1620(,)m 3612(within)s 4303(the)s
+4673(right)s 5207(parameter)s 6243(of)s 6537(an)s 220 fnt2
+6842 1617(@Eq&&tag @Open)m 240 fnt1 8737 1620(,)m 8867(or)s 0 1332(follo)m 6(wing)k
+977(a)s 220 fnt2 1143 1329(@Use { @Eq ...)m 13( })k 240 fnt1
+2798 1332(.)m 2962(There)s 3575(may)s 4041(be)s 4323(se)s 6(v)k 3(eral)k
+5045(symbols)s 5894(in)s 6137(the)s 220 fnt2 6485 1329(impor)m -8(t)k
+240 fnt1 7158 1332(clause.)m 480 958(In)m 760(a)s 951(similar)s
+1698(w)s 2(ay)k 2174(to)s 220 fnt2 2438 955(impor)m -8(t)k
+240 fnt1 3051 958(,)m 3183(a)s 3374(de\207nition)s 4373(may)s
+4864(be)s 5171(preceded)s 6117(by)s 220 fnt2 6436 955(e)m 6(xtend)k
+240 fnt1 7162 958(follo)m 6(wed)k 8089(by)s 8408(a)s
+8599(sym-)s 0 670(bol)m 361(name:)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 20 26
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(20)m 240 fnt6 8674 -1580(Chapter)m 9524(2.)s
+9798(Details)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+220 fnt2 480 13207(e)m 6(xtend @Eq)k
+480 12919(def p)m 6(ythag { sqr)k -8(t { x sup 2 + y sup 2 } })k 240 fnt1 0 12420(The)m
+418(ef)s 6(fect)k 1003(of)s 1264(this)s 1649(is)s
+1849(just)s 2243(as)s 2483(though)s 3195(the)s 3533(de\207nition)s
+4496(of)s 220 fnt2 4757 12417(p)m 6(ythag)k 240 fnt1
+5447 12420(had)m 5841(occurred)s 6724(directly)s 7497(after)s 7982(the)s
+8319(e)s 3(xisting)k 0 12132(de\207nitions)m 1058(within)s 220 fnt2
+1722 12129(@Eq)m 240 fnt1 2200 12132(,)m 2303(with)s 220 fnt2
+2782 12129(p)m 6(ythag)k 240 fnt1 3479 12132(added)m 4105(to)s
+220 fnt2 4340 12129(@Eq)m 240 fnt1 4818 12132(')m 13(s)k
+5025(e)s 3(xport)k 5689(list.)s 6140(This)s 6612(is)s
+6819(useful)s 7454(for)s 7788(e)s 3(xtending)k 8778(the)s
+0 11844(capabilities)m 1128(of)s 1389(a)s 1545(package)s 2375(of)s
+2636(de\207nitions)s 3687(lik)s 2(e)k 220 fnt2 4088 11841(@Eq)m
+240 fnt1 4616 11844(without)m 5397(modifying)s 6437(its)s 6703(source)s
+7373(\207le.)s 7832(The)s 8249(essential)s 0 11556(dif)m 6(ferences)k
+1106(to)s 220 fnt2 1346 11553(impor)m -8(t)k 240 fnt1
+2020 11556(are)m 2368(that)s 2787(all)s 3081(the)s 3430(symbols)s
+4280(of)s 220 fnt2 4552 11553(@Eq)m 240 fnt1 5091 11556(become)m
+5892(visible)s 6586(within)s 220 fnt2 7255 11553(p)m 6(ythag)k
+240 fnt1 7896 11556(,)m 8004(not)s 8371(just)s 8778(the)s
+0 11268(e)m 3(xported)k 892(ones,)s 1438(and)s 1842(only)s
+2322(one)s 2724(symbol)s 3484(may)s 3950(follo)s 6(w)k
+4622(the)s 220 fnt2 4970 11265(e)m 6(xtend)k 240 fnt1
+5671 11268(k)m 2(e)k 3(yw)k 2(ord.)k 480 10894(Actually)m 15(,)k
+1399(more)s 1951(than)s 2424(one)s 2831(symbol)s 3595(may)s
+4066(follo)s 6(w)k 220 fnt2 4743 10891(e)m 6(xtend)k
+240 fnt1 5384 10894(,)m 5495(b)s 4(ut)k 5862(this)s
+6262(usage)s 6868(indicates)s 7772(a)s 7943(`path)s 8496(name')s
+0 10606(of)m 271(the)s 619(symbol.)s 1488(F)s 3(or)k
+1877(e)s 3(xample,)k 220 fnt2 480 10105(e)m 6(xtend @DocumentLa)k 6(y)k 4(out @Repor)k -8(tLa)k 6(y)k 4(out)k
+480 9817(def @K)m 8(e)k 4(yw)k 2(ords ...)k 240 fnt1
+0 9319(causes)m 676(the)s 1026(de\207nition)s 2002(of)s 220 fnt2
+2275 9316(@K)m 8(e)k 4(yw)k 2(ords)k 240 fnt1
+3502 9319(to)m 3743(occur)s 4335(directly)s 5120(after)s 5618(the)s
+5968(e)s 3(xisting)k 6777(de\207nitions)s 7840(of)s 220 fnt2
+8113 9316(@Repor)m -8(t-)k 0 9028(La)m 6(y)k 4(out)k
+240 fnt1 645 9031(,)m 752(which)s 1394(itself)s 1942(lies)s
+2324(within)s 220 fnt2 2992 9028(@DocumentLa)m 6(y)k 4(out)k
+240 fnt1 4860 9031(.)m 480 8657(A)m 702(named)s 1390(parameter)s
+2395(may)s 2853(also)s 3283(be)s 3556(preceded)s 4469(by)s
+4754(an)s 220 fnt2 5029 8654(impor)m -8(t)k 240 fnt1
+5694 8657(clause.)m 6386(As)s 6695(usual,)s 7299(the)s 7638(meaning)s
+8507(is)s 8708(that)s 0 8369(the)m 336(visible)s 1016(local)s
+1522(de\207nitions)s 2570(of)s 2828(the)s 3163(import)s 3847(symbol\(s\))s
+4839(are)s 5173(visible)s 5853(within)s 6508(the)s 6843(body)s
+7364(\(the)s 7778(def)s 2(ault)k 8486(v)s 6(alue\))k
+0 8081(of)m 281(the)s 640(named)s 1347(parameter)s 13(.)k
+2463(But)s 2879(furthermore,)s 4137(those)s 4709(symbols)s 5569(will)s
+6005(be)s 6298(visible)s 7002(within)s 7681(all)s 7985(in)s 9(v)k 4(ocations)k
+0 7793(of)m 271(the)s 619(parameter)s 13(.)k 1724(F)s 3(or)k
+2113(e)s 3(xample,)k 3027(suppose)s 3855(we)s 4190(de\207ne)s
+220 fnt2 480 7292(def @Diag)m 480 7004( impor)m -8(t @Algebr)k 2(a named line)k 4(width { 1p })k
+480 6716( impor)m -8(t @Algebr)k 2(a named dashlength { 2p })k 480 6428( ...)m 240 fnt1
+0 5977(Then,)m 599(if)s 220 fnt2 816 5974(@Algebr)m 2(a)k
+240 fnt1 1847 5977(e)m 3(xports)k 2599(symbols)s 220 fnt2
+3448 5974(+)m 240 fnt1 3568 5977(,)m 220 fnt2 3675 5974(-)m
+240 fnt1 3739 5977(,)m 3846(and)s 4250(so)s 4516(on,)s
+4863(we)s 5198(may)s 5664(write)s 220 fnt2 480 5476(@Diag)m
+480 5188( line)m 4(width { 1f - 2p })k 480 4900( dashlength { 1f + 2p })m 240 fnt1 0 4401(using)m
+565(the)s 905(symbols)s 1747(from)s 220 fnt2 2263 4398(@Algebr)m 2(a)k
+240 fnt1 3234 4401(.)m 3391(There)s 3996(may)s 4454(be)s
+4729(se)s 6(v)k 3(eral)k 5443(symbols)s 6285(after)s
+6773(the)s 220 fnt2 7114 4398(impor)m -8(t)k 240 fnt1
+7779 4401(k)m 2(e)k 3(yw)k 2(ord.)k 8766(All)s
+0 4113(these)m 558(symbols)s 1418(share)s 1990(an)s 2284(important)s
+3285(restriction:)s 4429(the)s 3(y)k 4904(may)s 5381(not)s
+5759(ha)s 4(v)k 3(e)k 6271(parameters.)s 7434(This)s
+7921(is)s 8143(necessary)s 0 3825(because)m 841(Lout)s 1382(w)s 2(ould)k
+2065(be)s 2376(unable)s 3098(to)s 3366(determine)s 4406(suitable)s
+5233(v)s 6(alues)k 5918(for)s 6284(an)s 3(y)k
+6710(such)s 7234(parameters,)s 8417(if)s 8663(the)s 3(y)k
+0 3537(did)m 364(e)s 3(xist.)k 480 3163(As)m 814(an)s
+1115(e)s 3(xception)k 2116(to)s 2373(the)s 2738(rule)s
+3183(just)s 3605(gi)s 6(v)k 3(en,)k 4253(a)s
+4436(named)s 5150(parameter)s 6181(may)s 6665(import)s 7379(the)s
+7745(symbol)s 8522(it)s 8732(is)s 8960(a)s 0 2875(parameter)m
+1014(of:)s 220 fnt2 480 2374(e)m 6(xpor)k -8(t @Cell)k
+480 2086(def @Tb)m 4(l)k 480 1798( impor)m -8(t @Tb)k 4(l named @F)k 6(or)k -5(mat { ...)k 13( })k
+240 fnt1 0 1302(In)m 274(this)s 688(e)s 3(xample)k
+1569(the)s 1936(e)s 3(xported)k 2846(de\207nitions)s 3925(of)s
+220 fnt2 4215 1299(@Tb)m 4(l)k 240 fnt1 4802 1302(\(i.e.)m
+220 fnt2 5235 1299(@Cell)m 240 fnt1 5820 1302(\))m 5966(will)s
+6411(be)s 6711(visible)s 7422(within)s 220 fnt2 8109 1299(@F)m 6(or)k -5(mat)k
+240 fnt1 9022 1302(.)m 0 1014(Ho)m 6(we)k 6(v)k 3(er)k 9(,)k
+984(the)s 3(y)k 1472(may)s 1963(only)s 2467(be)s
+2774(used)s 3296(in)s 3563(actual)s 4213(parameters,)s 5392(not)s
+5782(in)s 6050(the)s 6423(def)s 2(ault)k 7168(v)s 6(alue)k
+7761(of)s 8057(the)s 8430(named)s 0 726(parameter)m 13(.)k
+1098(This)s 1567(is)s 1769(o)s 6(wing)k 2408(to)s
+2639(implementation)s 4189(problems:)s 5237(at)s 5462(the)s 5803(time)s
+6275(the)s 6616(def)s 2(ault)k 7329(v)s 6(alue)k
+7890(of)s 220 fnt2 8153 723(@F)m 6(or)k -5(mat)k
+240 fnt1 0 438(is)m 210(read,)s 728(the)s 1076(e)s 3(xported)k
+1968(symbols)s 2817(ha)s 4(v)k 3(e)k 3318(not)s
+3684(been)s 4193(read)s 4662(and)s 5066(are)s 5413(consequently)s
+6730(not)s 7096(kno)s 6(wn.)k 480 64(Since)m 220 fnt2
+1064 61(@Cell)m 240 fnt1 1706 64(is)m 1913(nested)s 2579(within)s
+220 fnt2 3244 61(@Tb)m 4(l)k 240 fnt1 3753 64(,)m
+3857(the)s 4202(v)s 6(alue)k 4766(of)s 5034(an)s
+5314(in)s 9(v)k 4(ocation)k 6365(of)s 220 fnt2
+6633 61(@Cell)m 240 fnt1 7275 64(may)m 7738(depend)s 8485(on)s
+8778(the)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 21 27
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(2.3.)m 1871(Nested)s 2588(de\207nitions,)s 3678(body)s
+4200(par)s 3(ameter)k 2(s,)k 5378(e)s 4(xtend,)k
+6091(import,)s 6822(and)s 7248(e)s 4(xport)k 240 fnt5
+10256 -1583(21)m gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+0 13205(v)m 6(alue)k 582(of)s
+868(parameters)s 1980(of)s 220 fnt2 2266 13202(@Tb)m 4(l)k
+240 fnt1 2775 13205(.)m 2953(If)s 220 fnt2 3198 13202(@Cell)m
+240 fnt1 3857 13205(is)m 4082(used)s 4593(within)s 5276(an)s
+5573(actual)s 220 fnt2 6213 13202(@F)m 6(or)k -5(mat)k
+240 fnt1 7200 13205(parameter)m 9(,)k 8267(its)s 8558(v)s 6(alue)k
+0 12917(depends)m 833(on)s 1126(the)s 1471(v)s 6(alue)k
+2035(of)s 2303(parameters)s 3397(of)s 3665(the)s 4009(in)s 9(v)k 4(ocation)k
+5060(of)s 220 fnt2 5327 12914(@Tb)m 4(l)k 240 fnt1
+5893 12917(of)m 6160(which)s 6799(the)s 220 fnt2 7143 12914(@F)m 6(or)k -5(mat)k
+240 fnt1 8112 12917(parameter)m 0 12629(is)m 210(a)s 376(part.)s
+480 12255(A)m 710(de\207nition,)s 1734(macro,)s 2438(or)s 2697(named)s
+3393(parameter)s 4407(may)s 4873(ha)s 4(v)k 3(e)k
+5374(se)s 6(v)k 3(eral)k 6096(alternati)s 6(v)k 3(e)k
+7150(names,)s 7868(lik)s 2(e)k 8280(this:)s 220 fnt2
+480 11754(macro @CD @CentredDispla)m 6(y @CenteredDispla)k 6(y { ...)k 13( })k 240 fnt1
+0 11256(This)m 489(is)s 713(useful)s 1366(for)s 1718(abbre)s 6(viated)k
+2898(and)s 3316(alternati)s 6(v)k 3(e)k 4384(spellings,)s
+5355(as)s 5618(sho)s 6(wn.)k 6416(The)s 6858(names)s
+7534(appear)s 8245(together)s 9(,)k 0 10968(and)m 404(the)s 3(y)k
+867(may)s 1333(subsequently)s 2637(be)s 2919(used)s 3416(interchangeably)s 15(.)k
+480 10594(If)m 698(one)s 1088(name)s 1649(of)s 1908(a)s
+2062(symbol)s 2809(appears)s 3578(in)s 3809(an)s 4079(e)s 3(xport)k
+4735(or)s 4982(import)s 5666(list,)s 6052(its)s 6316(other)s
+6854(names)s 7504(are)s 7838(automaticaly)s 0 10306(included)m 882(as)s
+1132(well,)s 1650(and)s 2054(should)s 2751(not)s 3117(also)s
+3555(appear)s 4252(in)s 4495(the)s 4843(list.)s 240 fnt5
+0 9513(2.4.)m 471(Filter)s 4(ed)k 1330(right)s 1894(and)s
+2335(body)s 2897(parameters)s
+[ /Dest /LOUTfilters /DEST pdfmark
+240 fnt1 480 9036(A)m 719(right)s
+1239(or)s 1507(body)s 2050(parameter)s 3073(may)s 3548(be)s
+3839(\207ltered)s 4582(by)s 4885(some)s 5455(other)s 6015(computer)s
+6987(program)s 7866(before)s 8541(being)s 0 8748(included)m 882(by)s
+1176(Lout.)s 1792(As)s 2109(an)s 2392(e)s 3(xample)k
+3255(of)s 3526(such)s 4022(a)s 4188(program)s 5058(we)s
+5393(will)s 5819(use)s 6194(the)s 6542(Unix)s 220 fnt2
+7076 8745(sor)m -8(t)k 240 fnt1 7506 8748(command:)m 220 fnt2
+480 8249(sor)m -8(t -o out\207le in\207le)k 240 fnt1 0 7795(This)m 499(causes)s
+1198(\207le)s 220 fnt2 1582 7792(out\207le)m 240 fnt1 2243 7795(to)m
+2505(contain)s 3290(a)s 3480(sorted)s 4145(cop)s 2(y)k
+4687(of)s 4981(\207le)s 220 fnt2 5366 7792(in\207le)m 240 fnt1
+5808 7795(.)m 5996(W)s 19(e)k 6388(incorporate)s 7556(this)s
+7975(into)s 8424(a)s 8614(Lout)s 0 7507(de\207nition)m 974(as)s
+1224(follo)s 6(ws:)k 220 fnt2 480 7055(def @Sor)m -8(t)k
+480 6767( named @Options {})m 480 6479( r)m -3(ight x)k 480 6191({)m 480 5903( def @Filter { sor)m -8(t @Options -o @FilterOut @FilterIn })k
+480 5327( lines @Break x)m 480 5039(})m 240 fnt1 0 4545(The)m 440(presence)s
+1345(within)s 220 fnt2 2026 4542(@Sor)m -8(t)k 240 fnt1
+2728 4545(of)m 3012(a)s 3191(de\207nition)s 4178(of)s 4462(a)s
+4641(symbol)s 5414(called)s 220 fnt2 6055 4542(@Filter)m 240 fnt1
+6837 4545(tells)m 7298(Lout)s 7823(that)s 8254(the)s 8615(right)s
+0 4257(parameter)m 1057(of)s 220 fnt2 1372 4254(@Sor)m -8(t)k
+240 fnt1 2104 4257(is)m 2358(to)s 2640(be)s 2966(\207ltered)s
+3743(before)s 4453(inclusion.)s 5537(When)s 220 fnt2 6210 4254(@Sor)m -8(t)k
+240 fnt1 6942 4257(is)m 7196(in)s 9(v)k 4(ok)k 2(ed,)k
+220 fnt2 8103 4254(@Filter)m 240 fnt1 8916 4257(is)m 0 3969(e)m 6(v)k 6(aluated)k
+978(and)s 1399(its)s 1692(v)s 6(alue)k 2277(e)s 3(x)k 3(ecuted)k
+3196(as)s 3463(a)s 3646(system)s 4387(command.)s 5512(In)s
+5785(addition)s 6643(to)s 6899(the)s 7264(symbols)s 8130(ordinarily)s
+0 3681(a)m 4(v)k 6(ailable)k 908(within)s 1576(the)s
+1924(body)s 2458(of)s 220 fnt2 2729 3678(@Filter)m 240 fnt1
+3438 3681(,)m 3545(there)s 4078(are)s 4425(three)s 4958(others:)s
+220 fnt2 0 3175(@FilterIn)m 240 fnt1 1920 3178(the)m 2273(name)s
+2852(of)s 3128(a)s 3299(\207le)s 3665(which)s 4312(will,)s
+4795(at)s 5032(the)s 5385(time)s 5870(the)s 6223(system)s
+6952(command)s 7959(is)s 8175(e)s 3(x)k 3(ecuted,)k
+1920 2890(contain)m 2726(the)s 3119(actual)s 3789(right)s 4345(or)s
+4649(body)s 5228(parameter)s 6287(of)s 6603(the)s 6996(symbol,)s
+7853(e)s 3(xactly)k 8639(as)s 8934(it)s 1920 2602(appears)m
+2701(in)s 2944(the)s 3292(input)s 3844(\207le;)s 220 fnt2
+0 2096(@FilterOut)m 240 fnt1 1920 2099(the)m 2305(name)s 2916(of)s
+3224(a)s 3427(\207le)s 3826(of)s 4134(Lout)s 4683(te)s 3(xt)k
+5135(whose)s 5840(contents)s 6726(Lout)s 7275(will)s 7738(read)s
+8244(after)s 8778(the)s 1920 1811(system)m 2657(command)s 3673(has)s
+4057(\207nished,)s 4936(as)s 5200(a)s 5380(replacement)s 6620(for)s
+6972(what)s 7511(w)s 2(as)k 7946(put)s 8326(into)s
+8765(\207le)s 220 fnt2 1920 1520(@FilterIn)m 240 fnt1 2798 1523(;)m
+220 fnt2 0 1036(@FilterErr)m 240 fnt1 1920 1039(the)m 2273(name)s
+2852(of)s 3129(a)s 3300(\207le)s 3667(that)s 4090(Lout)s
+4608(will)s 5039(attempt)s 5820(to)s 6065(read)s 6539(after)s
+7041(the)s 7394(system)s 8124(command)s 1920 751(has)m 2281(\207nished,)s
+3137(containing)s 4191(error)s 4705(messages)s 5649(produced)s 6589(by)s
+6874(the)s 7213(command)s 8206(that)s 8614(Lout)s 1920 463(will)m
+2346(pass)s 2809(on)s 3106(to)s 3345(the)s 3693(user)s
+4151(as)s 4401(non-f)s 2(atal)k 5316(errors.)s 6036(Use)s
+6464(of)s 6735(this)s 7131(\207le)s 7492(is)s 7702(optional.)s
+
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 22 28
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(22)m 240 fnt6 8674 -1580(Chapter)m 9524(2.)s
+9798(Details)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+0 13205(It)m 205(is)s 415(a)s
+581(f)s 2(atal)k 1057(error)s 1580(for)s 1918(the)s
+2266(system)s 2990(command)s 3992(to)s 4231(return)s 4858(a)s
+5024(non-zero)s 5927(status.)s 480 12831(No)m 6(w)k 1001(the)s
+220 fnt2 1356 12828(sor)m -8(t)k 240 fnt1 1793 12831(command)m
+2802(has)s 3179(options)s 220 fnt2 3942 12828(-u)m 240 fnt1
+4190 12831(for)m 4535(deleting)s 5365(duplicate)s 6304(lines,)s 6869(and)s
+220 fnt2 7280 12828(-r)m 240 fnt1 7493 12831(for)m 7838(re)s 6(v)k 3(ersing)k
+8778(the)s 0 12543(sorting)m 717(order)s 13(.)k 1372(So)s
+1678(the)s 2026(result)s 2616(of)s 220 fnt2 480 12042(@Sor)m -8(t)k
+480 11754( @Options { -r -u })m 480 11466({)m 480 11178(A)m 6(usten, J)k 4(ane)k
+480 10890(Dic)m 4(k)k 4(ens)k 3(, Char)k -3(les)k
+480 10602(Eliot, George)m 480 10314(Hardy)m 22(, )k 11(Thomas)k 480 10026(Bront{@Char edieresis}, Char)m -3(lotte)k
+480 9738(})m 240 fnt1 0 9244(is)m 480 8791(Hardy)m 15(,)k
+1170(Thomas)s 480 8503(Eliot,)m 1051(Geor)s 4(ge)k 480 8215(Dick)m 2(ens,)k
+1369(Charles)s 480 7927(Bront\353,)m 1238(Charlotte)s 480 7639(Austen,)m 1265(Jane)s
+0 7155(Unlik)m 2(e)k 705(all)s 998(the)s 1347(other)s
+1898(e)s 3(xamples)k 2849(in)s 3093(this)s 3489(manual,)s
+4300(this)s 4697(output)s 5369(is)s 5579(simulated.)s 6673(This)s
+7149(w)s 2(as)k 7570(done)s 8093(so)s 8359(that)s
+8778(the)s 0 6867(ability)m 661(to)s 896(format)s 1588(this)s
+1980(manual)s 2735(is)s 2942(not)s 3304(dependent)s 4344(on)s
+4637(the)s 4981(e)s 3(xistence)k 5919(of)s 6187(the)s
+6531(Unix)s 220 fnt2 7061 6864(sor)m -8(t)k 240 fnt1
+7487 6867(command,)m 8534(and)s 8934(it)s 0 6579(highlights)m 1008(the)s
+1356(f)s 2(act)k 1771(that)s 2189(\207ltered)s 2923(actual)s
+3548(parameters)s 4646(are)s 4993(by)s 5287(their)s 5784(nature)s
+6437(of)s 6708(uncertain)s 7654(portability)s 15(.)k 480 6205(There)m
+1114(is)s 1345(no)s 1660(need)s 2191(for)s 2550(an)s
+2855(actual)s 3501(\207ltered)s 4257(parameter)s 5292(to)s 5552(obe)s 3(y)k
+6091(the)s 6460(le)s 3(xical)k 7169(rules)s 7706(of)s
+7998(Lout,)s 8579(since)s 0 5917(it)m 207(is)s 432(passed)s
+1143(directly)s 1941(to)s 2195(the)s 2558(other)s 3124(program.)s
+4113(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
+5088(Lout)s 5615(must)s 6155(be)s 6452(able)s 6921(to)s
+7175(w)s 2(ork)k 7741(out)s 8122(where)s 8778(the)s
+0 5629(parameter)m 1034(ends,)s 1601(which)s 2263(gi)s 6(v)k 3(es)k
+2831(rise)s 3251(to)s 3511(the)s 3879(follo)s 6(wing)k
+4877(rules.)s 5525(As)s 5863(with)s 6365(a)s 6552(body)s
+7106(parameter)s 9(,)k 8179(a)s 8366(symbol)s 220 fnt2
+0 5338(@Sym)m 240 fnt1 730 5341(with)m 1235(a)s 1423(\207ltered)s
+2180(parameter)s 3217(must)s 3764(be)s 4069(in)s 9(v)k 4(ok)k 2(ed)k
+4906(in)s 5172(either)s 5798(the)s 6168(form)s 220 fnt2
+6715 5338(@Sym { ...)m 13( })k 240 fnt1 7949 5341(or)m 8231(the)s
+8602(form)s 220 fnt2 0 5050(@Sym @Begin ...)m 13( @End @Sym)k 240 fnt1
+3120 5053(,)m 3251(plus)s 3725(options)s 4505(as)s 4779(usual.)s
+5472(In)s 5753(the)s 6125(former)s 6858(case,)s 7400(braces)s
+8085(within)s 8778(the)s 0 4765(actual)m 625(parameter)s 1639(must)s
+2164(match;)s 2860(in)s 3103(the)s 3451(latter)s 4000(case,)s
+4518(the)s 4866(actual)s 5491(parameter)s 6505(may)s 6971(not)s
+7337(contain)s 220 fnt2 8098 4762(@End)m 240 fnt1 8699 4765(.)m
+480 4391(If)m 725(an)s 1024(actual)s 1664(\207ltered)s 2414(parameter)s
+3444(contains)s 220 fnt2 4307 4388(@Include)m 240 fnt1 5229 4391(,)m
+5352(this)s 5764(is)s 5989(tak)s 2(en)k 6578(to)s
+6833(be)s 3(gin)k 7434(a)s 7616(Lout)s 220 fnt2
+8144 4388(@Include)m 240 fnt1 0 4103(directi)m 6(v)k 3(e)k
+882(in)s 1125(the)s 1473(usual)s 2033(form)s 2557(\(Section)s
+3410(3.48\):)s 220 fnt2 480 3612(@Sor)m -8(t {)k 480 3324(A)m 6(usten, J)k 4(ane)k
+480 3036(@Include { authors })m 480 2748(Hardy)m 22(, )k 11(Thomas)k 480 2460(})m
+240 fnt1 0 1966(The)m 421(included)s 1296(\207le)s 1649(becomes)s
+2530(part)s 2954(of)s 220 fnt2 3217 1963(@FilterIn)m 240 fnt1
+4095 1966(,)m 4195(b)s 4(ut)k 4549(an)s 3(y)k
+4939(braces,)s 220 fnt2 5649 1963(@Include)m 240 fnt1 6571 1966(,)m
+6670(or)s 220 fnt2 6922 1963(@End)m 240 fnt1 7576 1966(within)m
+8236(it)s 8421(are)s 8760(not)s 0 1678(noticed)m 762(by)s
+1056(Lout.)s 480 1304(The)m 928(\207rst)s 1380(character)s 2335(of)s
+2627(\207le)s 220 fnt2 3009 1301(@FilterIn)m 240 fnt1 3968 1304(will)m
+4415(be)s 4718(the)s 5087(\207rst)s 5539(non-white)s 6586(space)s
+7194(character)s 8149(follo)s 6(wing)k 0 1016(the)m 353(opening)s
+220 fnt2 1184 1013({)m 240 fnt1 1314 1016(or)m 220 fnt2
+1579 1013(@Begin)m 240 fnt1 2348 1016(,)m 2461(or)s 2726(the)s
+3080(\207rst)s 3517(character)s 4457(of)s 4734(an)s 5023(included)s
+5911(\207le)s 6278(if)s 220 fnt2 6501 1013(@Include)m 240 fnt1
+7489 1016(comes)m 8157(\207rst.)s 8698(The)s 0 728(second-last)m 1146(character)s
+2091(of)s 2374(\207le)s 220 fnt2 2746 725(@FilterIn)m 240 fnt1
+3696 728(will)m 4133(be)s 4427(the)s 4786(last)s 5189(non-white)s
+6226(space)s 6825(character)s 7770(preceding)s 8778(the)s 0 440(closing)m
+220 fnt2 745 437(})m 240 fnt1 871 440(or)m 220 fnt2
+1132 437(@End @Sym)m 240 fnt1 2454 440(,)m 2563(or)s 2824(the)s
+3174(last)s 3567(character)s 4503(of)s 4775(an)s 5060(included)s
+5944(\207le)s 6307(if)s 220 fnt2 6526 437(@Include)m 240 fnt1
+7510 440(comes)m 8174(last.)s 8671(One)s 0 152(ne)m 6(wline)k
+833(character)s 1794(is)s 2030(al)s 2(w)k 2(ays)k
+2768(appended)s 3770(and)s 4201(is)s 4437(the)s 4812(last)s
+5229(character)s 6190(of)s 6487(\207le)s 220 fnt2 6875 149(@FilterIn)m
+240 fnt1 7753 152(.)m 7943(This)s 8446(ef)s 6(fects)k
+
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 23 29
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(2.4.)m 1871(F)s 10(ilter)k 8(ed)k
+2688(right)s 3217(and)s 3643(body)s 4165(par)s 3(ameter)k 2(s)k
+240 fnt5 10250 -1583(23)m gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+0 13205(a)m 206(compromise)s
+1484(between)s 2378(the)s 2766(Lout)s 3319(con)s 9(v)k 3(ention,)k
+4518(that)s 4976(spaces)s 5691(follo)s 6(wing)k 220 fnt2
+6708 13202({)m 240 fnt1 6873 13205(or)m 7172(preceding)s 220 fnt2
+8208 13202(})m 240 fnt1 8372 13205(are)m 8760(not)s 0 12917(signi\207cant,)m
+1103(with)s 1585(the)s 1933(Unix)s 2467(con)s 9(v)k 3(ention)k
+3576(that)s 3994(all)s 4287(te)s 3(xt)k 4702(\207les)s
+5151(end)s 5555(with)s 6037(a)s 6203(ne)s 6(wline)k
+7010(character)s 13(.)k 240 fnt5 0 12124(2.5.)m 471(Pr)s 4(ecedence)k
+1677(and)s 2118(associati)s 2(vity)k 3420(of)s 3692(symbols)s
+
+[ /Dest /LOUTprecedence /DEST pdfmark
+240 fnt1 480 11647(Ev)m 3(ery)k 1131(symbol)s 1920(in)s
+2192(Lout)s 2733(has)s 3132(a)s 240 fnt6 3327 11649(pr)m 8(ecedence)k
+240 fnt1 4401 11647(,)m
+[ /Dest /LOUT19_4637_det_prec_1 /DEST pdfmark
+4538(which)s 5209(is)s 5448(a)s
+5643(positi)s 6(v)k 3(e)k 6476(whole)s 7146(number)s 13(.)k
+8057(When)s 8716(tw)s 2(o)k 0 11359(symbols)m 849(compete)s
+1715(for)s 2053(an)s 2336(object,)s 3027(the)s 3375(one)s
+3777(with)s 4259(the)s 4607(higher)s 5278(precedence)s 6409(wins)s
+6912(it.)s 7208(F)s 3(or)k 7597(e)s 3(xample,)k
+220 fnt2 480 10858(a | b / c)m 240 fnt1 0 10403(is)m 210(equi)s 6(v)k 6(alent)k
+1253(to)s 220 fnt2 1491 10400({)m 1616(a)s 1794(|)s
+1892(b)s 2067(})s 2192(/)s 2317(c)s 240 fnt1
+2482 10403(rather)m 3097(than)s 220 fnt2 3565 10400(a)m 3743(|)s
+3841({)s 3966(b)s 4141(/)s 4266(c)s 4432(})s
+240 fnt1 4496 10403(,)m 4603(because)s 220 fnt2 5415 10400(|)m
+240 fnt1 5511 10403(has)m 5881(higher)s 6551(precedence)s 7681(than)s
+220 fnt2 8150 10400(/)m 240 fnt1 8273 10403(and)m 8676(thus)s
+0 10115(wins)m 503(the)s 220 fnt2 851 10112(b)m 240 fnt1
+965 10115(.)m 480 9741(When)m 1149(the)s 1538(tw)s 2(o)k
+1988(competing)s 3092(symbols)s 3981(ha)s 4(v)k 3(e)k
+4523(equal)s 5137(precedence,)s 6359(Lout)s 6912(applies)s 7680(a)s
+7887(second)s 8651(rule.)s 0 9453(Each)m 545(symbol)s 1316(is)s
+1537(either)s 240 fnt6 2151 9455(left-associative)m 240 fnt1 3659 9453(or)m
+
+[ /Dest /LOUT19_4637_det_prec_2 /DEST pdfmark
+240 fnt6 3929 9455(right-associative)m 240 fnt1 5528 9453(.)m 5703(The)s
+6142(v)s 6(alue)k 6720(of)s 220 fnt2 7002 9450(a)m
+7180(op1)s 7564(b)s 7739(op2)s 8156(c)s 240 fnt1
+8332 9453(is)m 8553(tak)s 2(en)k 0 9165(to)m 252(be)s
+220 fnt2 547 9162({)m 672(a)s 850(op1)s 1234(b)s
+1409(})s 1534(op2)s 1951(c)s 240 fnt1 2129 9165(if)m
+2359(the)s 2720(symbols)s 3582(are)s 3942(both)s 4438(left-associati)s 6(v)k 3(e,)k
+5993(and)s 220 fnt2 6410 9162(a op1 { b op2 c })m 240 fnt1 8072 9165(if)m
+8302(the)s 3(y)k 8779(are)s 0 8877(right-associati)m 6(v)k 3(e.)k
+1733(In)s 1989(cases)s 2544(not)s 2910(co)s 3(v)k 3(ered)k
+3719(by)s 4013(these)s 4560(tw)s 2(o)k 4970(rules,)s
+5541(use)s 5916(braces.)s 480 8503(It)m 672(sometimes)s 1732(happens)s
+2554(that)s 2959(the)s 3294(result)s 3870(is)s 4067(the)s
+4402(same)s 4935(re)s 3(g)k 1(ardless)k 5937(of)s
+6195(ho)s 6(w)k 6642(the)s 6977(e)s 3(xpression)k
+8041(is)s 8237(grouped.)s 0 8215(F)m 3(or)k 382(e)s 3(xample,)k
+220 fnt2 1289 8212({)m 1414(a)s 1592(|)s 1690(b)s
+1865(})s 1990(|)s 2088(c)s 240 fnt1 2246 8215(and)m
+220 fnt2 2643 8212(a)m 2821(|)s 2919({)s 3044(b)s
+3219(|)s 3317(c)s 3483(})s 240 fnt1 3599 8215(are)m
+3939(al)s 2(w)k 2(ays)k 4643(the)s 4984(same,)s
+5575(for)s 5905(an)s 3(y)k 6295(combination)s 7541(of)s
+7805(objects,)s 8581(g)s 1(aps,)k 0 7927(and)m 416(v)s 6(ariants)k
+1230(of)s 220 fnt2 1513 7924(|)m 240 fnt1 1550 7927(.)m
+1727(In)s 1995(such)s 2504(cases)s 3071(the)s 3432(symbols)s
+4293(are)s 4653(said)s 5108(to)s 5360(be)s 240 fnt6
+5654 7929(associative)m 240 fnt1 6709 7927(,)m 6829(and)s 7245(we)s
+7593(can)s 7995(con\207dently)s 0 7639(omit)m 498(the)s 846(braces.)s
+480 7265(User)m 4(-de\207ned)k 1769(symbols)s 2618(may)s 3084(be)s
+3366(gi)s 6(v)k 3(en)k 3946(a)s 4112(precedence)s
+5243(and)s 5647(associati)s 6(vity:)k 220 fnt2 480 6764(def @Super)m
+480 6476( precedence 50)m 480 6188( associativity r)m -3(ight)k 480 5900( left x)m 480 5612( r)m -3(ight y)k
+480 5324({)m 480 5036( @OneRo)m 3(w { | -2p @F)k 6(ont y ^/0.5fk x })k 480 4748(})m
+240 fnt1 0 4254(The)m 3(y)k 541(come)s 1113(just)s
+1516(after)s 2010(an)s 3(y)k 220 fnt2 2405 4251(into)m
+240 fnt1 2809 4254(clause)m 3460(and)s 3862(before)s 4526(an)s 3(y)k
+4921(parameter)s 5933(de\207nitions.)s 7105(The)s 7531(precedence)s 8660(may)s
+0 3966(be)m 280(an)s 3(y)k 674(whole)s 1313(number)s
+2101(between)s 2952(10)s 3245(and)s 3646(100,)s 4110(and)s
+4512(if)s 4726(omitted)s 5511(is)s 5719(assigned)s 6598(the)s
+6943(v)s 6(alue)k 7509(100.)s 8030(The)s 8455(higher)s
+0 3678(the)m 373(number)s 9(,)k 1227(the)s 1600(higher)s
+2296(the)s 2669(precedence.)s 3933(The)s 4386(associati)s 6(vity)k
+5654(may)s 6145(be)s 220 fnt2 6452 3675(left)m 240 fnt1
+6825 3678(or)m 220 fnt2 7109 3675(r)m -3(ight)k 240 fnt1
+7534 3678(,)m 7666(and)s 8095(if)s 8338(omitted)s 0 3390(def)m 2(aults)k
+805(to)s 220 fnt2 1044 3387(r)m -3(ight)k 240 fnt1
+1469 3390(.)m 480 3016(In)m 731(the)s 1074(e)s 3(xample)k
+1932(abo)s 3(v)k 3(e,)k 2599(the)s 2942(precedence)s
+4068(and)s 4466(associati)s 6(vity)k 5703(are)s 6045(both)s
+6523(literal)s 7127(w)s 2(ords)k 7756(\()s 220 fnt2
+7829 3013(50)m 240 fnt1 8120 3016(and)m 220 fnt2 8518 3013(r)m -3(ight)k
+240 fnt1 8943 3016(\).)m 0 2728(It)m 203(is)s 410(also)s
+846(possible)s 1683(to)s 1920(de\207ne)s 2558(a)s 2722(macro)s
+3369(whose)s 4034(v)s 6(alue)k 4600(is)s 4807(a)s
+4971(suitable)s 5767(literal)s 6375(w)s 2(ord,)k 6969(and)s
+7371(in)s 9(v)k 4(ok)k 2(e)k 8061(that)s
+8476(macro)s 0 2440(as)m 249(the)s 596(v)s 6(alue)k
+1163(of)s 1433(a)s 1598(precedence)s 2728(or)s 2986(associati)s 6(vity)k 15(.)k
+4262(But)s 4667(arbitrary)s 5541(e)s 3(xpressions,)k 6760(including)s
+7716(in)s 9(v)k 4(ocations)k 8855(of)s 0 2152(symbols)m
+849(other)s 1400(than)s 1869(macros,)s 2666(are)s 3013(not)s
+3379(permitted.)s 480 1778(Lout')m 13(s)k 1142(symbols)s 1991(ha)s 4(v)k 3(e)k
+2492(the)s 2840(follo)s 6(wing)k 3817(precedences)s 5036(and)s
+5440(associati)s 6(vities:)k
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 24 30
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(24)m 240 fnt6 8674 -1580(Chapter)m 9524(2.)s
+9798(Details)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+480 13170(Precedence)m 1904(Associati)s 6(vity)k
+3493(Symbols)s 969 12594(5)m 2011(associati)s 6(v)k 3(e)k
+220 fnt2 3493 12591(/ ^/ // ^//)m 240 fnt1 965 12306(6)m 2011(associati)s 6(v)k 3(e)k
+220 fnt2 3493 12303(| ^| || ^||)m 240 fnt1 968 12018(7)m 2011(associati)s 6(v)k 3(e)k
+220 fnt2 3493 12015(& ^&)m 240 fnt1 968 11730(7)m 2011(associati)s 6(v)k 3(e)k
+220 fnt2 3493 11727(&)m 240 fnt1 3695 11730(in)m 3938(the)s
+4286(form)s 4810(of)s 5081(one)s 5483(or)s 5742(more)s
+6289(white)s 6876(space)s 7463(characters)s 685 11442(10-100)m 220 fnt2
+2012 11439(left)m 240 fnt1 2360 11442(or)m 220 fnt2 2619 11439(r)m -3(ight)k
+240 fnt1 3493 11442(user)m 4(-de\207ned)k 4729(symbols)s 844 11154(100)m
+220 fnt2 2316 11151(r)m -3(ight)k 3493(@Wide)s 240 fnt1
+4207 11154(,)m 220 fnt2 4314 11151(@High)m 240 fnt1 4973 11154(,)m
+220 fnt2 5080 11151(@Gr)m 2(aphic)k 240 fnt1 6064 11154(,)m
+6171(etc.)s 854 10866(101)m 2494(-)s 220 fnt2 3493 10863(&&)m
+240 fnt1 845 10578(102)m 2011(associati)s 6(v)k 3(e)k
+220 fnt2 3493 10575(&)m 240 fnt1 3695 10578(in)m 3938(the)s
+4286(form)s 4810(of)s 5081(0)s 5256(spaces)s 850 10290(103)m
+2494(-)s 3493(Body)s 4067(parameters)s 5165(and)s 5569(right)s
+6080(parameters)s 7178(of)s 220 fnt2 7449 10287(@Open)m 240 fnt1
+0 9749(Actually)m 883(the)s 1238(precedence)s 2375(of)s 2653(juxtaposition)s
+3965(\(tw)s 2(o)k 4461(objects)s 5195(separated)s 6162(by)s
+6462(zero)s 6933(spaces\))s 7691(is)s 7908(a)s 8080(little)s
+8579(more)s 0 9461(complicated.)m 1333(If)s 1565(either)s 2170(of)s
+2443(the)s 2793(tw)s 2(o)k 3205(objects)s 3934(is)s
+4146(enclosed)s 5043(in)s 5288(braces,)s 6007(the)s 6357(precedence)s
+7489(is)s 7701(7)s 7871(as)s 8123(for)s 8463(one)s
+8867(or)s 0 9173(more)m 541(spaces.)s 1322(If)s 1545(neither)s
+2262(object)s 2899(is)s 3102(enclosed)s 3991(in)s 4227(braces,)s
+4937(the)s 5279(precedence)s 6403(is)s 6606(102)s 7014(as)s
+7257(sho)s 6(wn)k 7927(abo)s 3(v)k 3(e.)k
+8650(This)s 0 8885(complicated)m 1216(rule)s 1633(seems)s 2258(to)s
+2486(accord)s 3171(better)s 3764(with)s 4235(what)s 4750(people)s
+5434(e)s 3(xpect)k 6104(and)s 6498(need)s 6998(in)s
+7230(practice)s 8031(than)s 8490(a)s 8645(pure)s 0 8597(precedence)m
+1131(rule)s 1558(can)s 1947(do.)s 240 fnt5 0 7804(2.6.)m
+471(The)s 926(style)s 1446(and)s 1887(size)s 2314(of)s
+2586(objects)s
+[ /Dest /LOUTsize /DEST pdfmark
+240 fnt1 480 7327(This)m 944(section)s 1666(e)s 3(xplains)k
+2499(ho)s 6(w)k 2948(Lout)s 3448(determines)s 4535(the)s
+4870(style)s 5365(and)s 5757(size)s 6172(of)s 6431(each)s
+6914(object.)s 7650(T)s 19(ogether)k 9(,)k 8579(these)s
+0 7039(attrib)m 4(utes)k 935(determine)s 1946(the)s 2294(object')s 13(s)k
+3088(\207nal)s 3568(appearance)s 4699(in)s 4942(the)s 5290(output.)s
+
+[ /Dest /LOUT19_4637_det_size_1 /DEST pdfmark
+480 6665(The)m 908(style)s 1415(of)s 1686(an)s 1969(object)s
+2613(comprises)s 3633(the)s 3981(follo)s 6(wing:)k 0 6162(\213)m
+480(Which)s 1175(font)s 1620(f)s 2(amily)k 15(,)k
+2333(f)s 2(ace)k 2784(and)s 3188(size)s 3615(to)s
+3854(use)s 4229(\(also)s 4746(de\207ning)s 5584(the)s 220 fnt2
+5932 6159(f)m 240 fnt1 6050 6162(unit\);)m
+[ /Dest /LOUT16_1794_det_size_1 /DEST pdfmark
+0 5659(\213)m 480(Whether)s
+1391(small)s 1991(capitals)s 2799(are)s 3175(in)s 3446(ef)s 6(fect)k
+4070(or)s 4358(not,)s 4799(and)s 5231(also)s 5698(what)s
+6251(fraction)s 7078(of)s 7378(the)s 7754(height)s 8440(of)s
+8740(full)s 480 5371(capitals)m 1260(the)s 1608(small)s 2180(capitals)s
+2960(are)s 3307(to)s 3546(ha)s 4(v)k 3(e;)k
+
+[ /Dest /LOUT16_1794_det_size_2 /DEST pdfmark
+0 4868(\213)m 480(What)s 1058(g)s 1(ap)k 1456(to)s
+1695(replace)s 2440(a)s 2606(single)s 3233(space)s 3820(between)s
+4674(tw)s 2(o)k 5084(objects)s 5812(by)s 6106(\(also)s
+6623(de\207ning)s 7461(the)s 220 fnt2 7809 4865(s)m 240 fnt1
+7972 4868(unit\);)m
+[ /Dest /LOUT16_1794_det_size_3 /DEST pdfmark
+0 4365(\213)m 480(The)s 900(interpretation)s 2235(to)s
+2465(place)s 3017(on)s 3306(white)s 3884(space)s 4463(separating)s
+5490(tw)s 2(o)k 5891(objects)s 6611(\()s 220 fnt2
+6684 4362(lout)m 240 fnt1 7033 4365(,)m 220 fnt2 7132 4362(compress)m
+240 fnt1 8077 4365(,)m 220 fnt2 8175 4362(separ)m 2(ate)k
+240 fnt1 9019 4365(,)m 220 fnt2 480 4074(troff)m 240 fnt1
+855 4077(,)m 962(or)s 220 fnt2 1221 4074(te)m 6(x)k
+240 fnt1 1566 4077(as)m 1816(in)s 2059(Section)s 2833(3.5\);)s
+
+[ /Dest /LOUT16_1794_det_size_4 /DEST pdfmark
+0 3583(\213)m 480(The)s 908(current)s 1644(v)s 6(alue)k
+2212(of)s 2483(the)s 220 fnt2 2831 3580(y)m 240 fnt1
+2999 3583(and)m 220 fnt2 3403 3580(z)m 240 fnt1 3567 3583(units)m
+4083(of)s 4354(measurement)s 5688(\(Section)s 6541(3.6\);)s
+[ /Dest /LOUT16_1794_det_size_5 /DEST pdfmark
+0 3082(\213)m
+480(The)s 908(kind)s 1392(of)s 1663(paragraph)s 2676(breaking)s
+3566(to)s 3805(emplo)s 2(y)k 4575(\()s 220 fnt2
+4648 3079(adjust)m 240 fnt1 5229 3082(,)m 220 fnt2 5336 3079(r)m 2(agged)k
+240 fnt1 6005 3082(,)m 6112(etc.\))s
+[ /Dest /LOUT16_1794_det_size_6 /DEST pdfmark
+0 2579(\213)m 480(What)s
+1058(g)s 1(ap)k 1456(to)s 1695(insert)s 2285(between)s
+3139(the)s 3487(lines)s 3989(of)s 4260(paragraphs)s 5360(\(also)s
+5877(de\207ning)s 6715(the)s 220 fnt2 7063 2576(v)m 240 fnt1
+7232 2579(unit\);)m
+[ /Dest /LOUT16_1794_det_size_7 /DEST pdfmark
+0 2076(\213)m 480(The)s 908(size)s 1335(of)s
+1606(the)s 1954(outdent)s 2732(to)s 2971(use)s 3346(in)s
+3589(the)s 220 fnt2 3937 2073(outdent)m 240 fnt1 4725 2076(paragraph)m
+5738(breaking)s 6628(style;)s
+[ /Dest /LOUT16_1794_det_size_8 /DEST pdfmark
+0 1573(\213)m 480(Whether)s 1462(the)s
+220 fnt2 1909 1570(unbreakab)m 4(le\207rst)k 240 fnt1 3621 1573(and)m
+220 fnt2 4124 1570(unbreakab)m 4(lelast)k 240 fnt1 5823 1573(paragraph)m
+6935(breaking)s 7924(options)s 8779(are)s 480 1285(in)m 723(ef)s 6(fect;)k
+
+[ /Dest /LOUT16_1794_det_size_9 /DEST pdfmark
+0 801(\213)m 480(Whether)s 1366(the)s 1717(ro)s 6(w)k
+2141(marks)s 2779(of)s 3053(w)s 2(ords)k 3691(are)s
+4041(to)s 4284(pass)s 4750(along)s 5338(the)s 5690(baseline)s
+6532(or)s 6795(half)s 7241(the)s 7592(height)s 8254(of)s
+8528(an)s 8815(`x')s 480 513(abo)m 3(v)k 3(e)k
+1102(the)s 1450(baseline;)s
+[ /Dest /LOUT16_1794_det_size_10 /DEST pdfmark
+
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 25 31
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(2.6.)m 1871(The)s 2283(style)s 2773(and)s
+3199(size)s 3610(of)s 3891(objects)s 240 fnt5 10250 -1583(25)m
+gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+0 13205(\213)m 480(Whether)s 1363(to)s 1602(permit)s
+2285(h)s 1(yphenation)k 3525(or)s 3784(not;)s
+[ /Dest /LOUT16_1794_det_size_11 /DEST pdfmark
+0 12702(\213)m
+480(What)s 1058(colour)s 1729(the)s 2077(object)s 2721(is)s
+2931(to)s 3170(appear)s 3867(in;)s
+[ /Dest /LOUT16_1794_det_size_12 /DEST pdfmark
+0 12199(\213)m 480(What)s
+1058(colour)s 1729(underlines)s 2776(within)s 3444(the)s 3792(object)s
+4436(are)s 4783(to)s 5022(appear)s 5719(in;)s
+[ /Dest /LOUT16_1794_det_size_13 /DEST pdfmark
+0 11696(\213)m
+480(Whether)s 220 fnt2 1363 11693(@Outline)m 240 fnt1 2332 11696(is)m
+2542(in)s 2785(ef)s 6(fect;)k
+[ /Dest /LOUT16_1794_det_size_14 /DEST pdfmark
+0 11212(\213)m 480(The)s
+908(language)s 1828(of)s 2099(the)s 2447(object;)s
+[ /Dest /LOUT16_1794_det_size_15 /DEST pdfmark
+0 10709(\213)m
+480(Whether)s 220 fnt2 1363 10706(@V)m 17(Adjust)k 240 fnt1
+2320 10709(,)m 220 fnt2 2427 10706(@HAdjust)m 240 fnt1 3473 10709(and)m
+220 fnt2 3877 10706(@P)m 26(Adjust)k 240 fnt1 4885 10709(are)m
+5232(in)s 5475(ef)s 6(fect.)k
+[ /Dest /LOUT16_1794_det_size_16 /DEST pdfmark
+0 10209(The)m 423(style)s
+925(of)s 1191(an)s 1468(object)s 2107(depends)s 2938(on)s
+3229(where)s 3864(it)s 4051(appears)s 4827(in)s 5064(the)s
+5407(\207nal)s 5882(document.)s 6984(F)s 3(or)k 7368(e)s 3(xample,)k
+8277(the)s 8619(style)s 0 9921(of)m 258(a)s 410(parameter)s
+1410(depends)s 2233(on)s 2516(where)s 3142(it)s 3321(is)s
+3517(used;)s 4054(the)s 4389(style)s 4882(of)s 5139(a)s
+5292(g)s 1(alle)k 3(y)k 5912(is)s 6108(the)s
+6443(style)s 6936(of)s 7193(the)s 7528(\207rst)s 7945(tar)s 4(get)k
+8530(that)s 8934(it)s 0 9633(attempts)m 848(to)s 1075(attach)s
+1690(itself)s 2226(to.)s 2563(Of)s 2875(course,)s 3594(the)s
+3930(style)s 4424(of)s 4683(an)s 3(y)k 5068(object)s
+5700(can)s 6077(be)s 6346(changed)s 7190(by)s 7472(using)s
+8032(the)s 220 fnt2 8367 9630(@F)m 6(ont)k 240 fnt1
+9019 9633(,)m 220 fnt2 0 9342(@Break)m 240 fnt1 796 9345(,)m
+220 fnt2 903 9342(@Space)m 240 fnt1 1740 9345(,)m 220 fnt2
+1847 9342(@SetColour)m 240 fnt1 3105 9345(or)m 220 fnt2 3364 9342(@SetColor)m
+240 fnt1 4439 9345(,)m 220 fnt2 4547 9342(@SetUnder)m -3(lineColour)k
+240 fnt1 6744 9345(or)m 220 fnt2 7004 9342(@SetUnder)m -3(lineColor)k
+240 fnt1 9019 9345(,)m 220 fnt2 0 9054(@Outline)m 240 fnt1
+909 9057(,)m 1016(and)s 220 fnt2 1420 9054(@Language)m 240 fnt1
+2671 9057(symbols.)m 480 8683(There)m 1089(are)s 1432(no)s 1720(standard)s
+2584(def)s 2(ault)k 3300(v)s 6(alues)k 3952(for)s
+4286(style,)s 4839(e)s 3(xcept)k 5516(that)s 5929(ro)s 6(w)k
+6345(marks)s 6976(of)s 7242(w)s 2(ords)k 7872(initially)s
+8663(pass)s 0 8395(half)m 447(the)s 800(height)s 1463(of)s
+1738(an)s 2026(`x')s 2342(abo)s 3(v)k 3(e)k
+2969(the)s 3321(baseline,)s 4216(small)s 4793(capitals)s 5577(are)s
+5929(initially)s 6730(of)s 6(f)k 7079(and)s 7487(will)s
+7918(be)s 8205(0.7)s 8558(times)s 0 8107(the)m 346(size)s
+770(of)s 1039(full)s 1422(capitals,)s 2255(outlining)s 3170(is)s
+3377(initially)s 4170(of)s 6(f,)k 4547(the)s 4892(interpretation)s
+6233(of)s 6501(white)s 7085(space)s 7670(is)s 7877(initially)s
+220 fnt2 8670 8104(lout)m 240 fnt1 9019 8107(,)m 0 7819(and)m
+391(the)s 725(v)s 6(alues)k 1367(of)s 1624(the)s
+220 fnt2 1958 7816(y)m 240 fnt1 2112 7819(and)m 220 fnt2
+2502 7816(z)m 240 fnt1 2652 7819(units)m 3154(are)s 3487(zero.)s
+4049(Therefore)s 5032(one)s 5420(must)s 5931(ensure)s 6597(that)s
+7001(the)s 7335(root)s 7766(g)s 1(alle)k 3(y)k
+8386(or)s 8631(each)s 0 7531(of)m 271(its)s 548(components)s
+1757(is)s 1967(enclosed)s 2863(in)s 220 fnt2 3107 7528(@F)m 6(ont)k
+240 fnt1 3759 7531(,)m 220 fnt2 3866 7528(@Break)m 240 fnt1
+4662 7531(,)m 220 fnt2 4770 7528(@SetColour)m 240 fnt1 6028 7531(or)m
+220 fnt2 6287 7528(@SetColor)m 240 fnt1 7362 7531(,)m 7470(and)s
+220 fnt2 7875 7528(@Language)m 240 fnt1 0 7243(symbols.)m 1007(From)s
+1631(there)s 2210(the)s 2604(style)s 3157(is)s 3413(passed)s
+4155(to)s 4439(incoming)s 5442(g)s 1(alle)k 3(ys)k
+6212(and)s 6662(the)s 7056(objects)s 7830(within)s 8544(them.)s
+0 6955(Enclosure)m 1012(in)s 220 fnt2 1255 6952(@Space)m 240 fnt1
+2152 6955(is)m 2362(not)s 2728(required)s 3582(because)s 4395(the)s
+220 fnt2 4743 6952(s)m 240 fnt1 4906 6955(unit)m 5338(is)s
+5548(also)s 5986(set)s 6311(by)s 220 fnt2 6605 6952(@F)m 6(ont)k
+240 fnt1 7317 6955(\(Section)m 8170(3.5\).)s
+[ /Dest /LOUT19_4637_det_size_2 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_det_size_3 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_det_size_4 /DEST pdfmark
+536 6581(The)m 959(remainder)s
+1983(of)s 2249(this)s 2641(section)s 3370(e)s 3(xplains)k
+4210(ho)s 6(w)k 4667(the)s 5010(size)s 5433(of)s
+5699(each)s 6189(object)s 6829(\(its)s 7179(width)s 7777(and)s
+8176(height)s 8829(on)s 0 6293(the)m 353(printed)s 1094(page\))s
+1679(is)s 1895(determined.)s 3140(W)s 19(e)k 3514(will)s
+3946(treat)s 4434(width)s 5042(only)s 15(,)k 5566(since)s
+6118(height)s 6782(is)s 6997(determined)s 8136(in)s 8385(e)s 3(xactly)k
+0 6005(the)m 348(same)s 895(w)s 2(ay)k 15(,)k
+1384(e)s 3(xcept)k 2065(that)s 2483(the)s 2831(complications)s
+4223(introduced)s 5304(by)s 5598(paragraph)s 6611(breaking)s 7501(are)s
+7848(absent.)s 480 5631(W)m 9(ith)k 1006(three)s 1539(e)s 3(xceptions)k
+2611(\(see)s 3051(belo)s 6(w\),)k 3817(the)s 4165(width)s
+4768(of)s 5039(an)s 5323(object)s 5967(is)s 6178(as)s
+6428(lar)s 4(ge)k 6958(as)s 7208(it)s 7401(possibly)s
+8253(could)s 8844(be)s 0 5343(without)m 784(violating)s 1679(a)s
+220 fnt2 1837 5340(@Wide)m 240 fnt1 2603 5343(symbol)m 3355(or)s
+3606(intruding)s 4528(into)s 4945(the)s 5285(space)s 5864(occupied)s
+6778(by)s 7064(neighbouring)s 8386(g)s 1(aps)k 8867(or)s
+0 5055(objects.)m 841(As)s 1158(an)s 1441(aid)s 1791(to)s
+2030(in)s 9(v)k 3(estig)k 1(ating)k 3305(this)s
+3701(rule,)s 4179(we)s 4514(will)s 4940(use)s 5315(the)s
+5663(de\207nition)s 220 fnt2 480 4554(def @TightBo)m 6(x r)k -3(ight x)k
+480 4266({)m 480 3978( "0 0 mo)m 3(v)k 5(eto xsiz)k 3(e 0 lineto xsiz)k 3(e ysiz)k 3(e lineto 0 ysiz)k 3(e lineto closepath strok)k 4(e")k
+480 3690( @Gr)m 2(aphic x)k 480 3402(})m 240 fnt1 0 2908(which)m
+657(dra)s 3(ws)k 1291(a)s 1472(box)s 1903(around)s
+2641(the)s 3004(boundary)s 3978(of)s 4265(its)s 4556(right)s
+5082(parameter)s 6111(\(Section)s 6980(3.43\))s 7543(with)s 8040(no)s
+8349(mar)s 4(gin.)k 0 2620(The)m 428(result)s 1018(of)s
+220 fnt2 480 2169(5c @Wide @TightBo)m 6(x metempsychosis)k 240 fnt1 0 1670(is)m
+2835 215 0 106 240 288 60 480 1165 LoutGr2
+0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke
+grestore
+0 52(metempsychosis)m
+grestore
+0 714(The)m 431(widest)s 1119(that)s 220 fnt2
+1541 711(@TightBo)m 6(x metempsychosis)k 240 fnt1 4376 714(could)m 4970(possibly)s
+5826(be)s 6112(is)s 6326(\207v)s 3(e)k 6742(centimetres,)s
+7953(and)s 8361(accord-)s 0 426(ingly)m 552(that)s 977(is)s
+1194(its)s 1477(width.)s 2193(The)s 2628(same)s 3182(applies)s
+3917(to)s 220 fnt2 4163 423(metempsychosis)m 240 fnt1 5791 426(,)m
+5905(which)s 6554(is)s 6771(\207v)s 3(e)k 7190(centimetres)s
+8348(wide)s 8876(as)s 0 138(well.)m 583(Note)s 1113(carefully)s
+2024(that)s 2451(there)s 2992(is)s 3211(no)s 3513(object)s
+4166(in)s 4418(this)s 4822(e)s 3(xample)k 5694(whose)s
+6371(width)s 6982(is)s 7200(equal)s 7782(to)s 8030(the)s
+8387(sum)s 8855(of)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 26 32
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(26)m 240 fnt6 8674 -1580(Chapter)m 9524(2.)s
+9798(Details)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+0 13205(the)m 348(widths)s 1037(of)s
+1308(the)s 1656(letters)s 2289(of)s 220 fnt2 2560 13202(metempsychosis)m
+240 fnt1 4188 13205(.)m 480 12831(The)m 903(\207rst)s 1329(of)s
+1595(the)s 1938(three)s 2466(e)s 3(xceptions)k 3532(to)s
+3766(the)s 4109(`as)s 4433(wide)s 4949(as)s 5194(possible')s
+6085(rule)s 6507(is)s 6712(the)s 220 fnt2 7055 12828(@HContr)m 2(act)k
+240 fnt1 8314 12831(symbol,)m 0 12543(which)m 644(causes)s 1322(the)s
+1672(width)s 2277(of)s 2551(its)s 2829(right)s 3343(parameter)s
+4360(to)s 4601(be)s 4886(reduced)s 5703(to)s 5945(a)s
+6114(reasonable)s 7194(minimum)s 8187(\(a)s 8435(formal)s 0 12255(de\207nition)m
+974(will)s 1400(not)s 1766(be)s 2048(attempted\):)s 220 fnt2
+480 11754(5c @Wide @HContr)m 2(act @TightBo)k 6(x metempsychosis)k 240 fnt1 0 11255(produces)m
+1572 215 0 106 240 288 60 480 10700 LoutGr2
+0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke
+grestore
+0 52(metempsychosis)m
+grestore
+0 10249(The)m 482(object)s 220 fnt2 1180 10246(@HContr)m 2(act @TightBo)k 6(x metempsychosis)k
+240 fnt1 5334 10249(is)m 5598(still)s 6064(\207v)s 3(e)k
+6530(centimetres)s 7735(wide,)s 8361(b)s 4(ut)k 8778(the)s
+0 9961(object)m 220 fnt2 644 9958(@TightBo)m 6(x metempsychosis)k 240 fnt1
+3475 9961(has)m 3845(been)s 4354(reduced.)s 480 9587(The)m 922(second)s
+1659(of)s 1945(the)s 2307(three)s 2855(e)s 3(xceptions)k
+3940(is)s 4165(the)s 4527(horizontal)s 5565(concatenation)s 6965(symbol)s
+220 fnt2 7739 9584(|)m 240 fnt1 7851 9587(\(and)m 8348(also)s
+220 fnt2 8801 9584(&)m 240 fnt1 8943 9587(\).)m 0 9299(Consider)m
+924(this)s 1320(e)s 3(xample:)k 220 fnt2 480 8798(5c @Wide @TightBo)m 6(x { A |1c B |1c C })k
+240 fnt1 0 8299(As)m 317(usual,)s 929(the)s 1277(right)s
+1788(parameter)s 2802(of)s 220 fnt2 3073 8296(@Wide)m 240 fnt1
+3847 8299(is)m 4057(\207v)s 3(e)k 4469(centimetres)s 5620(wide,)s
+6192(and)s 6596(the)s 6944(result)s 7534(looks)s 8104(lik)s 2(e)k
+8516(this:)s 2835 165 0 57 240 288 60 480 7794 LoutGr2
+0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke
+grestore
+0 3(A)m 737(B)s 1447(C)s
+grestore
+0 7343(Lout)m
+512(has)s 882(to)s 1121(apportion)s 2095(the)s 2443(size)s
+2870(minus)s 3506(inter)s 4(-column)k 4793(g)s 1(aps)k
+5282(among)s 5987(the)s 6335(three)s 6868(columns.)s 480 6969(If)m
+707(the)s 1052(columns)s 1911(are)s 2255(wide)s 2772(enough)s
+3532(to)s 3768(require)s 4497(paragraph)s 5507(breaking,)s 6447(Lout)s
+6956(will)s 7379(assign)s 8031(sizes)s 8543(to)s 8778(the)s
+0 6681(columns)m 864(in)s 1110(such)s 1609(a)s 1778(w)s 2(ay)k
+2232(as)s 2484(to)s 2726(lea)s 4(v)k 3(e)k
+3282(narro)s 6(w)k 4010(columns)s 4875(unbrok)s 2(en)k
+5837(and)s 6244(break)s 6839(wider)s 7446(columns)s 8311(to)s
+8553(equal)s 0 6393(width,)m 652(occup)s 2(ying)k 1702(the)s
+2051(full)s 2438(size.)s 2974(Otherwise,)s 4064(paragraph)s 5077(breaking)s
+5968(is)s 6179(not)s 6546(required,)s 7450(and)s 7855(each)s
+8351(column)s 0 6105(will)m 431(be)s 719(assigned)s 1607(a)s
+1779(reasonable)s 2863(minimum)s 3858(size)s 4291(in)s 4540(the)s
+4894(manner)s 5677(of)s 220 fnt2 5953 6102(@HContr)m 2(act)k
+240 fnt1 7157 6105(,)m 7270(e)s 3(xcept)k 7957(that)s
+8381(the)s 8735(last)s 0 5817(column)m 775(recei)s 6(v)k 3(es)k
+1599(all)s 1892(the)s 2240(lefto)s 3(v)k 3(er)k
+3036(width.)s 3745(F)s 3(or)k 4134(e)s 3(xample,)k
+220 fnt2 480 5316(5c @Wide { @TightBo)m 6(x A |1c @TightBo)k 6(x B |1c @TightBo)k 6(x C })k
+240 fnt1 0 4817(has)m 370(result)s 170 165 0 57 240 288 60 480 4362 LoutGr2
+0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke
+grestore
+0 3(A)m
+grestore
+143 165 0 57 240 288 60 1217 4362 LoutGr2
+0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke
+grestore
+0 3(B)m
+
+grestore
+1388 165 0 57 240 288 60 1927 4362 LoutGr2
+0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke
+grestore
+0 3(C)m
+grestore
+0 3911(If)m 237(it)s 436(is)s 653(desired)s
+1408(that)s 1833(the)s 2188(lefto)s 3(v)k 3(er)k
+2991(width)s 3600(remain)s 4327(unused,)s 5120(rather)s 5743(than)s
+6219(going)s 6825(into)s 7257(the)s 7612(last)s 8010(column,)s
+8843(an)s 0 3623(empty)m 654(column)s 1431(can)s 1822(be)s
+2106(appended,)s 3133(or)s 3394(the)s 3744(last)s 4137(column)s
+4914(can)s 5305(be)s 5589(enclosed)s 6486(in)s 220 fnt2
+6731 3620(@HContr)m 2(act)k 240 fnt1 7935 3623(.)m 8101(T)s 19(w)k 2(o)k
+8575(other)s 0 3335(w)m 2(ays)k 560(to)s 819(apportion)s
+1813(the)s 2181(lefto)s 3(v)k 3(er)k 2997(width)s
+3619(are)s 3986(pro)s 3(vided)k 4912(by)s 5226(the)s
+220 fnt2 5594 3332(@HExpand)m 240 fnt1 6787 3335(and)m 220 fnt2
+7211 3332(@HAdjust)m 240 fnt1 8277 3335(symbols)m 0 3047(\(Sections)m 940(3.16)s
+1413(and)s 1817(3.19\).)s 480 2673(The)m 914(third)s 1430(and)s
+1841(\207nal)s 2328(e)s 3(xception)k 3319(to)s 3565(the)s
+3920(`as)s 4255(wide)s 4783(as)s 5040(possible')s 5943(rule)s
+6377(concerns)s 7285(the)s 7640(components)s 8855(of)s 0 2385(the)m
+348(root)s 793(g)s 1(alle)k 3(y)k 15(.)k
+1522(Each)s 2057(is)s 2267(considered)s 3361(to)s 3600(be)s
+3882(enclosed)s
+[ /Dest /LOUT19_4637_det_size_5 /DEST pdfmark
+4777(in)s 220 fnt2 5020 2382(@HContr)m 2(act)k
+240 fnt1 6284 2385(and)m 220 fnt2 6688 2382(@VContr)m 2(act)k
+240 fnt1 7940 2385(symbols.)m 480 2011(Up)m 836(to)s 1086(this)s
+1493(point)s 2056(we)s 2401(ha)s 4(v)k 3(e)k
+2913(treated)s 3631(width)s 4244(as)s 4505(a)s 4681(single)s
+5319(quantity)s 15(,)k 6206(b)s 4(ut)k 6579(of)s
+6860(course)s 7551(it)s 7754(has)s 8135(tw)s 2(o)k
+8556(parts:)s 0 1723(width)m 602(to)s 841(left)s 1218(and)s
+1622(right)s 2133(of)s 2404(the)s 2752(mark.)s 3407(The)s
+3835(`as)s 4164(wide)s 4685(as)s 4935(possible')s 5831(rule)s
+6258(applies)s 6986(to)s 7225(both)s 7708(directions:)s 220 fnt2
+480 1222(@HContr)m 2(act { @TightBo)k 6(x 953^.05 /0.5c @TightBo)k 6(x 2^.8286 })k 240 fnt1
+0 723(has)m 370(result)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 27 33
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(2.6.)m 1871(The)s 2283(style)s 2773(and)s
+3199(size)s 3610(of)s 3891(objects)s 240 fnt5 10248 -1583(27)m
+gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13257 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+877 170 344 59 240 288 60 480 13198 LoutGr2
+0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke
+grestore
+0 5(953)m 344(.05)s
+grestore
+877 167 344 57 240 288 60 480 12748 LoutGr2
+0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke
+grestore
+230 3(2)m 344(.8286)s
+
+grestore
+0 12297(Lefto)m 3(v)k 3(er)k 868(width)s 1461(usually)s
+2197(goes)s 2678(to)s 2908(the)s 3247(right,)s 3796(as)s
+4037(we)s 4364(ha)s 4(v)k 3(e)k 4856(seen,)s
+5379(b)s 4(ut)k 5732(here)s 6190(some)s 6742(width)s
+7335(w)s 2(as)k 7747(a)s 4(v)k 6(ailable)k
+8646(only)s 0 12009(to)m 239(the)s 587(left)s 964(of)s
+220 fnt2 1235 12006(2.8286)m 240 fnt1 1958 12009(o)m 6(wing)k
+2604(to)s 2843(the)s 3191(column)s 3966(mark)s 4518(alignment.)s
+240 fnt5 0 11216(2.7.)m 471(Galleys)s 1282(and)s 1723(tar)s 2(gets)k
+
+[ /Dest /LOUTtargets /DEST pdfmark
+240 fnt1 480 10739(The)m 909(beha)s 4(viour)k 1924(of)s
+2197(g)s 1(alle)k 3(ys)k 2923(and)s 3328(their)s
+3827(tar)s 4(gets,)k 4568(as)s 4820(described)s 5796(in)s
+6040(Section)s
+[ /Dest /LOUT19_4637_det_gall_1 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_det_gall_2 /DEST pdfmark
+6816(1.4,)s 7225(can)s 7616(be)s 7900(summarized)s
+0 10451(in)m 243(three)s 776(la)s 3(ws:)k 240 fnt6
+0 9999(F)m 10(ir)k 2(st)k 540(Law)s 240 fnt1
+949 9997(:)m 1139(The)s 1592(\207rst)s 2047(tar)s 4(get)k
+2671(is)s 2905(the)s 3278(closest)s 4012(in)s 9(v)k 4(ocation)k
+5091(of)s 5386(the)s 5759(tar)s 4(get)k 6382(symbol,)s
+7219(either)s 7846(preceding)s 8867(or)s 0 9709(follo)m 6(wing)k
+972(the)s 1315(in)s 9(v)k 4(ocation)k 2363(point)s
+2910(of)s 3175(the)s 3518(g)s 1(alle)k 3(y)k
+4146(as)s 4391(required,)s 5288(which)s 5925(has)s 6289(suf\207cient)s
+7233(space)s 7814(to)s 8048(recei)s 6(v)k 3(e)k
+8778(the)s 0 9421(\207rst)m 431(component;)s 240 fnt6 0 8918(Second)m
+773(Law)s 240 fnt1 1182 8916(:)m 1364(Each)s 1915(subsequent)s
+3055(tar)s 4(get)k 3670(is)s 3896(the)s 4259(closest)s
+4985(in)s 9(v)k 4(ocation)k 6055(of)s 6342(the)s
+6706(tar)s 4(get)k 7321(symbol,)s 8149(follo)s 6(wing)k
+0 8628(the)m 337(pre)s 6(vious)k 1195(tar)s 4(get)k
+1783(and)s 2176(lying)s 2710(within)s 3367(the)s 3704(same)s
+4240(g)s 1(alle)k 3(y)k 15(,)k 4901(which)s
+5532(has)s 5891(suf\207cient)s 6829(space)s 7405(to)s 7633(recei)s 6(v)k 3(e)k
+8358(the)s 8695(\207rst)s 0 8340(remaining)m 1022(component;)s 240 fnt6
+0 7837(Thir)m 8(d)k 607(Law)s 240 fnt1 1016 7835(:)m
+1199(A)s 1446(recepti)s 6(v)k 3(e)k 2385(symbol)s
+3162(that)s 3597(does)s 4104(not)s 4487(recei)s 6(v)k 3(e)k
+5240(at)s 5489(least)s 6003(one)s 6422(component)s 7563(of)s
+7851(an)s 3(y)k 8265(g)s 1(alle)k 3(y)k
+8916(is)s 0 7547(replaced)m 867(by)s 220 fnt2 1161 7544(@Null)m
+240 fnt1 1746 7547(.)m 0 7044(The)m 436(terms)s 1025(`closest,)s 16(')k
+1918(`preceding,)s 16(')k 3104(and)s 3516(`follo)s 6(wing')k
+4639(refer)s 5156(to)s 5403(position)s 6239(in)s 6490(the)s
+6846(\207nal)s 7334(printed)s 8078(document.)s 0 6756(This)m 476(section)s
+1210(e)s 3(xplains)k 2055(the)s 2403(operation)s 3363(of)s
+3634(these)s 4181(la)s 3(ws)k 4667(in)s 4910(Basser)s
+5607(Lout.)s 480 6382(When)m 1100(a)s 1257(g)s 1(alle)k 3(y)k
+1881(cannot)s 2570(be)s 2843(\207tted)s 3382(into)s 3798(just)s
+4194(one)s 4586(tar)s 4(get,)k 5223(Lout)s 5726(must)s
+6241(\207nd)s 6663(points)s 7290(in)s 7523(the)s 7862(g)s 1(alle)k 3(y)k
+8486(where)s 0 6094(it)m 191(can)s 579(be)s 860(split)s
+1330(in)s 1572(tw)s 2(o.)k 2091(The)s 2518(object)s
+3161(lying)s 3705(between)s 4558(tw)s 2(o)k 4966(neighbouring)s
+6295(potential)s 7185(split)s 7655(points)s 8290(is)s 8498(called)s
+0 5806(a)m 240 fnt6 166 5808(component)m
+[ /Dest /LOUT19_4637_det_gall_3 /DEST pdfmark
+240 fnt1 1281 5806(of)m
+1552(the)s 1900(g)s 1(alle)k 3(y)k 15(.)k
+2629(By)s 2963(de\207nition,)s 3987(a)s 4153(component)s 5277(cannot)s
+5975(be)s 6257(split.)s 480 5432(T)m 19(o)k 813(determine)s
+1857(the)s 2239(components)s 3480(of)s 3785(a)s 3984(g)s 1(alle)k 3(y)k 15(,)k
+4690(e)s 3(xpand)k 5470(all)s 5797(symbols)s 6679(other)s
+7264(than)s 7766(recursi)s 6(v)k 3(e)k 8722(and)s
+0 5144(recepti)m 6(v)k 3(e)k 909(ones,)s 1442(discard)s
+2177(all)s 220 fnt2 2457 5141(@F)m 6(ont)k 240 fnt1
+3109 5144(,)m 220 fnt2 3203 5141(@Break)m 240 fnt1 3999 5144(,)m
+220 fnt2 4093 5141(@Space)m 240 fnt1 4930 5144(,)m 220 fnt2
+5024 5141(@SetColor)m 240 fnt1 6099 5144(,)m 220 fnt2 6193 5141(@SetColour)m
+240 fnt1 7390 5144(,)m 7484(and)s 220 fnt2 7875 5141(@Language)m
+240 fnt1 0 4856(symbols,)m 908(perform)s 1740(paragraph)s 2756(breaking)s
+3649(as)s 3902(required,)s 4809(and)s 5216(discard)s 5967(all)s
+6263(redundant)s 7283(braces.)s 8060(Then)s 8613(vie)s 6(w)k
+0 4568(the)m 367(g)s 1(alle)k 3(y)k 1020(as)s
+1290(a)s 1475(sequence)s 2428(of)s 2718(one)s 3140(or)s
+3418(more)s 3984(objects)s 4732(separated)s 5711(by)s 6025(v)s 3(ertical)k
+6811(concatenation)s 8216(symbols;)s 0 4280(these)m 567(are)s 935(the)s
+1304(components)s 2533(and)s 2958(split)s 3450(points,)s 4163(e)s 3(xcept)k
+4865(that)s 5304(concatenation)s 6710(symbols)s 7580(whose)s 8269(g)s 1(aps)k
+8779(are)s 0 3992(unbreakable)m 1225(\(Section)s 2078(3.2\))s 2506(are)s
+2853(not)s 3219(eligible)s 3991(to)s 4230(be)s 4512(split)s
+4983(points.)s 5732(F)s 3(or)k 6121(e)s 3(xample,)k
+7035(gi)s 6(v)k 3(en)k 7615(the)s 7963(de\207nition)s
+220 fnt2 480 3491(def @Section into { @SectionPlace&&preceding })m 480 3203( named @Title {})m 480 2915( r)m -3(ight @Body)k
+480 2627({)m 480 2339( 15p @F)m 6(ont { @Title //0.7f })k 480 2051( //)m 480 1763( @Body)m
+480 1475(})m 240 fnt1 0 981(the)m 348(g)s 1(alle)k 3(y)k
+
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 28 34
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+%%+ font Symbol
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+%%IncludeResource: font Symbol
+/fnt4 { /Symbol LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(28)m 240 fnt6 8674 -1580(Chapter)m 9524(2.)s
+9798(Details)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+220 fnt2 480 13207(@Section)m 480 12919( @Title { Introduction })m
+480 12631({ )m 11(This is a subject that really)k 480 12343(needs no introduction.)m 13( })k 240 fnt1
+0 11849(becomes)m 220 fnt2 480 11402(Introduction)m 480 11114(//0.7f)m 480 10826({})m
+480 10538(//)m 480 10250(This is a subject that really needs)m 480 9962(//1vx)m 480 9674(no introduction.)m 240 fnt1
+0 9220(with)m 482(four)s 939(components.)s 2260(If)s 220 fnt2
+2489 9217(@Body)m 240 fnt1 3269 9220(had)m 3673(been)s 4181(preceded)s
+5102(by)s 220 fnt2 5395 9217(|1.0c)m 240 fnt1 5921 9220(in)m
+6164(the)s 6511(de\207nition,)s 7535(the)s 7882(result)s 8471(w)s 2(ould)k
+0 8932(ha)m 4(v)k 3(e)k 501(been)s 220 fnt2
+480 8484(Introduction)m 480 8196(//0.7f)m 480 7908({})m 480 7620(//)m 480 7332(|1.0c { )m 11(This is a subject that really needs //1vx no introduction.)k 13( })k
+240 fnt1 0 6834(with)m 220 fnt2 524 6831(//1vx)m 240 fnt1
+1089 6834(b)m 4(uried)k 1796(within)s 2507(one)s 2951(component)s
+4118(and)s 4564(hence)s 5221(not)s 5629(a)s 5838(potential)s
+6771(split)s 7285(point.)s 7983(If)s 220 fnt2 8256 6831(0.7f)m
+240 fnt1 8722 6834(had)m 0 6546(been)m 220 fnt2 525 6543(0.7fu)m
+240 fnt1 999 6546(,)m 1123(the)s 1488(g)s 1(ap)k
+1903(w)s 2(ould)k 2575(ha)s 4(v)k 3(e)k
+3092(been)s 3618(unbreakable)s 4860(and)s 220 fnt2 5281 6543(//0.7fu)m
+240 fnt1 5954 6546(w)m 2(ould)k 6625(not)s 7008(ha)s 4(v)k 3(e)k
+7526(been)s 8052(a)s 8235(potential)s 0 6258(split)m 471(point.)s
+480 5884(V)m 26(ersion)k 1310(3.03)s 1816(has)s 2228(liberalized)s
+3335(this)s 3773(some)s 6(what)k 4840(in)s 5125(the)s
+5515(follo)s 6(wing)k 6534(w)s 2(ay)k 15(.)k
+7122(When)s 7793(a)s 8002(component)s 0 5596(consists)m 808(of)s
+1080(a)s 1247(horizontal)s 2271(sequence)s 3205(of)s 3477(tw)s 2(o)k
+3887(or)s 4147(more)s 4695(objects)s 240 fnt6 5423 5598(A)m
+168 fnt4 5558 5505(1)m 240 fnt4 5637 5590(,)m 5746(\274)s
+6046(,)s 240 fnt6 6155 5598(A)m 168 fnt6 6290 5511(n)m
+240 fnt1 6431 5596(separated)m 7391(by)s 220 fnt2 7686 5593(|)m
+240 fnt1 7784 5596(\(not)m 220 fnt2 8229 5593(||)m 240 fnt1
+8323 5596(,)m 8431(not)s 220 fnt2 8798 5593(&)m 240 fnt1
+8940 5596(\),)m 0 5308(Lout)m 506(will)s 926(in)s 9(v)k 3(estig)k 1(ate)k
+1998(the)s 2339(component)s 3457(to)s 3690(see)s 4044(whether)s
+4868(it)s 5054(can)s 5436(be)s 5712(brok)s 2(en)k
+6426(up.)s 6823(It)s 7022(looks)s 7586(at)s 7811(each)s
+240 fnt6 8300 5310(A)m 168 fnt6 8435 5223(i)m 240 fnt1
+8533 5308(to)m 8765(see)s 0 5020(whether)m 830(it)s 1023(is)s
+1234(a)s 1401(v)s 3(ertical)k 2169(concatenation)s 3555(of)s
+3827(objects)s 240 fnt6 4556 5022(A)m 168 fnt6 4691 4935(i)m
+168 fnt4 4743 4929(1)m 240 fnt4 4822 5014(,)m 4932(\274)s
+5232(,)s 240 fnt6 5342 5022(A)m 168 fnt6 5477 4935(im)m
+240 fnt1 5641 5020(;)m 5754(if)s 5972(tw)s 2(o)k
+6383(or)s 6643(more)s 7191(of)s 7463(the)s 240 fnt6
+7812 5022(A)m 168 fnt6 7947 4935(i)m 240 fnt1 8052 5020(satisfy)m
+8730(this)s 0 4732(condition,)m 1009(the)s 1354(component)s 2475(will)s
+2898(not)s 3262(be)s 3541(brok)s 2(en)k 4258(up.)s
+4659(So)s 4962(no)s 6(w)k 5421(suppose)s 6246(we)s
+6578(ha)s 4(v)k 3(e)k 7076(just)s 7479(one)s
+240 fnt6 7878 4734(A)m 168 fnt6 8013 4647(i)m 240 fnt1
+8114 4732(which)m 8753(is)s 8960(a)s 0 4444(v)m 3(ertical)k
+757(concatenation.)s 2239(Lout)s 2741(will)s 3156(break)s 3738(the)s
+4076(component)s 5189(into)s 5604(one)s 5996(component)s 7109(for)s
+7437(each)s 7922(of)s 8182(the)s 240 fnt6 8520 4446(A)m
+168 fnt6 8655 4359(i)m 168 fnt4 8707 4353(1)m 240 fnt4
+8775 4438(,)m 8851(\274)s 3 4150(,)m 240 fnt6 80 4158(A)m
+168 fnt6 215 4071(im)m 240 fnt1 379 4156(,)m 476(pro)s 3(vided)k
+1373(that)s 1781(the)s 3(y)k 2234(are)s 2571(separated)s
+3521(by)s 220 fnt2 3806 4153(//)m 240 fnt1 3981 4156(symbols)m
+4820(\(not)s 220 fnt2 5255 4153(/)m 240 fnt1 5319 4156(\),)m
+5495(and)s 5890(pro)s 3(vided)k 6786(this)s 7172(can)s
+7551(be)s 7823(done)s 8335(without)s 0 3868(introducing)m 1155(an)s 3(y)k
+1550(apparent)s 2431(change)s 3164(into)s 3587(the)s 3933(appearance)s
+5062(of)s 5332(the)s 5678(component)s 6800(\(this)s 7274(second)s
+7995(rule)s 8420(will)s 8844(be)s 0 3580(satis\207ed)m 847(if)s
+1071(the)s 1426(other)s 240 fnt6 1984 3582(A)m 168 fnt6
+2119 3495(j)m 240 fnt1 2232 3580(are)m 2586(not)s 2959(v)s 3(ery)k
+3442(lar)s 4(ge\).)k 4165(The)s 4600(e)s 3(xample)k
+5470(abo)s 3(v)k 3(e)k 6099(satis\207es)s 6913(all)s
+7213(these)s 7767(rules)s 8289(and)s 8700(will)s 0 3269(be)m
+282(brok)s 2(en)k 1002(up)s 1295(into)s 1720(tw)s 2(o)k
+2130(components,)s 3394(so)s 3660(the)s 220 fnt2 4008 3266(//1vx)m
+240 fnt1 4530 3269(becomes)m 5418(a)s 5584(potential)s 6475(split)s
+6946(point)s 7498(after)s 7994(all.)s 480 2895(The)m 913(lines)s
+1421(of)s 1697(a)s 1869(paragraph)s 2887(become)s 3693(separate)s
+4536(components)s 5750(if)s 5972(the)s 6326(paragraph)s 7344(occupies)s
+8238(an)s 8527(entire)s 0 2607(component)m 1151(before)s 1844(breaking;)s
+2820(otherwise)s 3833(the)s 3(y)k 4323(are)s 4697(enclosed)s
+5619(in)s 5890(a)s 220 fnt2 6083 2604(@OneRo)m 3(w)k
+240 fnt1 7241 2607(symbol)m 8028(within)s 8724(one)s 0 2319(component.)m
+1237(The)s 1675(same)s 2232(is)s 2452(true)s 2888(of)s
+3169(incoming)s 4136(components)s 5354(of)s 5635(other)s 6195(g)s 1(alle)k 3(ys.)k
+7042(If)s 7282(a)s 220 fnt2 7458 2316(@Galle)m 4(y)k
+240 fnt1 8366 2319(symbol)m 0 2031(occupies)m 892(an)s 1180(entire)s
+1783(component)s 2912(by)s 3211(the)s 3563(rules)s 4083(abo)s 3(v)k 3(e,)k
+4761(then)s 5234(the)s 5587(incoming)s 6549(components)s 7761(that)s
+8184(replace)s 8934(it)s 0 1743(become)m 800(components)s 2008(of)s
+2279(their)s 2776(ne)s 6(w)k 3223(home:)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1
+0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 29 35
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+%%+ font Symbol
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+%%IncludeResource: font Symbol
+/fnt4 { /Symbol LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(2.7.)m 1871(Galle)s 7(ys)k 2649(and)s
+3075(tar)s 8(g)k 2(ets)k 240 fnt5 10249 -1583(29)m
+gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+220 fnt2 480 13154(An e)m 6(xample)k 480 12866(//0.5c)m
+480 12578(@Galle)m 4(y)k 480 12290(//0.5c)m 480 12002(@SomethingList)m 240 fnt4
+2500 12863(\336)m 220 fnt2 3141 13154(An e)m 6(xample)k 3141 12866(//0.5c)m
+3141 12578(Incoming components)m 3141 12290(//0.2c)m 3141 12002(from some other galle)m 4(y)k 3141 11714(//0.5c)m
+3141 11426(@SomethingList)m 240 fnt1 0 10870(Otherwise)m 1062(the)s 1435(incoming)s
+2416(components)s 3649(are)s 4020(grouped)s 4888(within)s 5580(a)s
+220 fnt2 5771 10867(@OneRo)m 3(w)k 240 fnt1 6926 10870(symbol)m
+7711(and)s 8139(lie)s 8458(within)s 0 10582(one)m 402(component.)s
+480 10208(This)m 985(distinction)s 2080(has)s 2480(a)s 2675(mark)s 2(ed)k
+3477(ef)s 6(fect)k 4103(on)s 4429(the)s 4806(v)s 3(ertical)k
+5603(concatenation)s
+[ /Dest /LOUT19_4637_det_gall_4 /DEST pdfmark
+7017(symbol)s 220 fnt2 7806 10205(//1.1b)m 240 fnt1
+8347 10208(,)m 8484(which)s 0 9920(calls)m 509(for)s 868(more)s
+1436(space)s 2045(than)s 2535(is)s 2766(a)s 4(v)k 6(ailable)k
+3695(\(Section)s 4570(3.2\).)s 5134(There)s 5768(is)s 5999(no)s
+6314(room)s 6900(for)s 7259(this)s 7676(symbol)s 8458(within)s
+0 9632(an)m 3(y)k 402(component,)s 1579(so)s 1851(it)s
+2049(will)s 2481(force)s 3033(a)s 3205(split)s 3682(and)s
+4092(be)s 4379(discarded)s 5359(in)s 5608(that)s 6032(case.)s
+6613(But)s 7025(it)s 7223(can)s 7618(be)s 7906(promoted)s
+8887(to)s 0 9344(between)m 854(tw)s 2(o)k 1264(components.)s
+480 8970(Components)m 1749(may)s 2223(be)s 2513(separated)s 3481(by)s
+220 fnt2 3783 8967(/)m 240 fnt1 3914 8970(as)m 4172(well)s
+4646(as)s 4904(by)s 220 fnt2 5206 8967(//)m 240 fnt1
+5331 8970(,)m 5445(gi)s 6(ving)k 6112(rise)s 6520(to)s
+6767(column)s 7550(mark)s 8110(alignment)s 0 8682(between)m 854(adjacent)s
+1710(components:)s 1701 1360 567 1360 240 288 60 480 6982 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+1701 1360 567 1360 240 288 60 0 0 LoutGr2
+
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ xmark -0.3 cm
+xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
+pop pop
+grestore
+1134 340 567 340 240 288 60 0 1020 LoutGr2
+0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath 0.8 setgray fill
+grestore
+
+grestore
+1134 340 0 340 240 288 60 567 510 LoutGr2
+0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath 0.8 setgray fill
+grestore
+
+grestore
+736 340 283 340 240 288 60 284 0 LoutGr2
+0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath 0.8 setgray fill
+grestore
+
+grestore
+
+grestore
+end end restore
+grestore
+0 6531(When)m 688(aligned)s 1509(components)s 2777(are)s
+3183(promoted)s 4218(into)s 4702(dif)s 6(ferent)k 5637(tar)s 4(gets,)k
+6435(the)s 6843(meaning)s 7779(of)s 8110(alignment)s 0 6243(becomes)m
+882(v)s 3(ery)k 1351(doubtful.)s 2319(F)s 3(or)k
+2702(e)s 3(xample,)k 3609(what)s 4127(if)s 4338(the)s
+4679(tar)s 4(gets)k
+[ /Dest /LOUT19_4637_det_gall_5 /DEST pdfmark
+5355(are)s 5696(in)s 5932(dif)s 6(ferent)k
+6800(columns)s 7656(of)s 7920(one)s 8315(page,)s 8867(or)s
+0 5955(what)m 525(if)s 742(one)s 1144(lies)s 1526(within)s
+220 fnt2 2194 5952(90d @Rotate)m 240 fnt1 3482 5955(?)m 480 5581(The)m
+908(truth)s 1416(is)s 1626(that)s 220 fnt2 2044 5578(/)m
+240 fnt1 2168 5581(causes)m 2843(all)s 3136(the)s 3484(objects)s
+4212(that)s 4630(share)s 5190(a)s 5356(mark)s 5908(to)s
+6147(ha)s 4(v)k 3(e)k 6648(equal)s 7221(width:)s
+1701 1360 567 1360 240 288 60 480 3881 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+1701 1360 567 1360 240 288 60 0 0 LoutGr2
+
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ xmark -0.3 cm
+xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
+pop pop
+grestore
+1701 340 567 340 240 288 60 0 1020 LoutGr2
+0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke
+grestore
+1134 340 567 340 240 288 60 0 0 LoutGr2
+0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath 0.8 setgray fill
+grestore
+
+grestore
+
+grestore
+1701 340 567 340 240 288 60 0 510 LoutGr2
+0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke
+grestore
+1134 340 0 340 240 288 60 567 0 LoutGr2
+0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath 0.8 setgray fill
+grestore
+
+grestore
+
+grestore
+1701 340 567 340 240 288 60 0 0 LoutGr2
+0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath stroke
+grestore
+736 340 283 340 240 288 60 284 0 LoutGr2
+0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto closepath 0.8 setgray fill
+grestore
+
+grestore
+
+grestore
+
+grestore
+end end restore
+grestore
+0 3429(This)m 495(is)s 724(a)s 909(consequence)s 2207(of)s
+2497(the)s 2864(`as)s 3212(wide)s 3753(as)s 4022(possible')s
+4937(rule)s 5383(\(Section)s 6255(2.6\).)s 6817(Mark)s 7415(alignment)s
+8451(occurs)s 240 fnt6 0 3143(incidentally)m 240 fnt1 1124 3141(,)m
+1231(whene)s 6(v)k 3(er)k 2212(the)s 2560(fragments)s
+3566(are)s 3913(placed)s 4595(into)s 5020(similar)s 5742(conte)s 3(xts.)k
+480 2767(In)m 723(this)s 1106(connection)s 2200(we)s 2521(must)s
+3033(also)s 3458(consider)s 4315(the)s 4649(special)s 5354(case)s
+5808(of)s 6066(a)s 220 fnt2 6218 2764(@Galle)m 4(y)k
+240 fnt1 7103 2767(symbol)m 7850(which)s 8478(shares)s 0 2479(its)m
+276(column)s 1051(mark)s 1603(with)s 2085(some)s 2646(other)s
+3197(object:)s 220 fnt2 480 1978(@Galle)m 4(y)k 480 1690(/0.2c)m
+480 1402(@SomethingList)m 240 fnt1 0 903(\(The)m 220 fnt2 501 900(@Galle)m 4(y)k
+240 fnt1 1392 903(may)m 1851(or)s 2104(may)s 2563(not)s
+2922(occup)s 2(y)k 3660(an)s 3936(entire)s 4528(component;)s
+5698(that)s 6109(doesn')s 4(t)k 6862(matter)s 7525(here.\))s
+8177(If)s 8400(incom-)s 0 615(ing)m 355(components)s 1559(are)s
+1901(separated)s 2857(by)s 220 fnt2 3146 612(//)m 240 fnt1
+3327 615(rather)m 3938(than)s 4403(by)s 220 fnt2 4692 612(/)m
+240 fnt1 4756 615(,)m 4859(the)s 5203(meaning)s 6075(is)s
+6281(so)s 6542(doubtful)s 7404(that)s 7817(this)s 8209(is)s
+8414(forbid-)s 0 327(den.)m 496(In)s 738(f)s 2(act,)k
+1186(a)s 1337(g)s 1(alle)k 3(y)k 1957(whose)s
+2611(components)s 3804(replace)s 4535(such)s 5017(a)s 220 fnt2
+5168 324(@Galle)m 4(y)k 240 fnt1 6052 327(must)m 6563(ha)s 4(v)k 3(e)k
+7049(a)s 7201(single)s 7814(column)s 8574(mark)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1
+0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 30 36
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(30)m 240 fnt6 8674 -1580(Chapter)m 9524(2.)s
+9798(Details)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+0 13205(running)m 783(its)s 1043(full)s
+1413(length;)s 2108(that)s 2510(is,)s 2760(its)s 3021(components)s
+4213(must)s 4722(all)s 4999(share)s 5544(a)s 5694(single)s
+6305(column)s 7065(mark.)s 7704(This)s 8164(mark)s 8700(will)s
+0 12917(be)m 281(mer)s 4(ged)k 1050(with)s 1530(the)s
+1876(column)s 2649(mark)s 3199(passing)s 3969(through)s 4769(each)s
+220 fnt2 5262 12914(@Galle)m 4(y)k 240 fnt1 6158 12917(that)m
+6574(these)s 7119(components)s 8325(replace;)s 0 12629(all)m 293(the)s
+641(objects)s 1369(on)s 1666(the)s 2014(resulting)s 2903(mer)s 4(ged)k
+3674(mark)s 4226(will)s 4652(ha)s 4(v)k 3(e)k
+5153(equal)s 5726(width.)s 480 12255(The)m 905(root)s 1347(g)s 1(alle)k 3(y)k 15(,)k
+2016(where)s 2653(e)s 6(v)k 3(erything)k 3717(collects)s
+4494(immediately)s 5739(prior)s 6260(to)s 6496(output,)s
+[ /Dest /LOUT19_4637_det_gall_6 /DEST pdfmark
+7212(is)s
+7419(created)s 8162(automati-)s 0 11967(cally)m 15(,)k 555(not)s
+920(by)s 1213(a)s 1378(de\207nition.)s 2457(Its)s 2745(tar)s 4(get)k
+3343(is)s 3552(the)s 3899(output)s 4569(\207le,)s 4980(and)s
+5383(its)s 5658(object)s 6301(is)s 6509(the)s 6856(entire)s
+7454(input,)s 8052(which)s 8692(typ-)s 0 11679(ically)m 584(looks)s
+1154(lik)s 2(e)k 1566(this:)s 220 fnt2 480 11178(@P)m 8(ageList)k
+480 10890(//)m 480 10602(@T)m 26(e)k 6(xt {)k 480 10314( Body te)m 6(xt of the document ...)k
+480 10026(})m 240 fnt1 0 9532(where)m 220 fnt2 639 9529(@P)m 8(ageList)k
+240 fnt1 1761 9532(e)m 3(xpands)k 2592(to)s 2830(a)s
+2994(sequence)s 3925(of)s 4195(pages)s 4789(containing)s 220 fnt2
+5850 9529(@T)m 26(e)k 6(xtPlace)k 240 fnt1 7067 9532(symbols)m
+7914(\(see)s 8352(Section)s 0 9244(1.2\),)m 486(and)s 220 fnt2
+890 9241(@T)m 26(e)k 6(xt)k 240 fnt1 1564 9244(is)m
+1774(a)s 1940(g)s 1(alle)k 3(y:)k 220 fnt2
+480 8743(def @T)m 26(e)k 6(xtPlace { @Galle)k 4(y })k 480 8167(def @T)m 26(e)k 6(xt into { @T)k 26(e)k 6(xtPlace&&preceding })k
+480 7879( r)m -3(ight x)k 480 7591({)m 480 7303( x)m 480 7015(})m
+240 fnt1 0 6521(The)m 428(spot)s 886(v)s 6(acated)k
+1668(by)s 1961(a)s 2127(g)s 1(alle)k 3(y)k
+2760(\211)s 2940(its)s 3215(in)s 9(v)k 4(ocation)k
+4268(point)s 4820(\211)s 4999(becomes)s 5887(a)s 220 fnt2
+6052 6518(@Null)m 240 fnt1 6697 6521(object,)m 7387(so)s 7653(this)s
+8048(root)s 8492(g)s 1(alle)k 3(y)k 0 6233(is)m
+210(ef)s 6(fecti)k 6(v)k 3(ely)k 220 fnt2
+1269 6230(@P)m 8(ageList)k 240 fnt1 2393 6233(alone,)m 3018(as)s
+3269(required.)s 4229(The)s 220 fnt2 4657 6230(@T)m 26(e)k 6(xt)k
+240 fnt1 5331 6233(g)m 1(alle)k 3(y)k 5965(will)s
+6392(\207nd)s 6823(its)s 7099(\207rst)s 7530(tar)s 4(get)k
+8130(preceding)s 0 5945(its)m 276(in)s 9(v)k 4(ocation)k
+1330(point,)s 1929(within)s 220 fnt2 2597 5942(@P)m 8(ageList)k
+240 fnt1 3661 5945(.)m 480 5571(Printing)m
+[ /Dest /LOUTrootg /DEST pdfmark
+1308(the)s 1661(root)s
+2112(g)s 1(alle)k 3(y)k 2751(on)s 3054(the)s
+3407(output)s 4085(\207le)s 4451(is)s 4666(some)s 6(what)k
+5696(problematical,)s
+[ /Dest /LOUT19_4637_det_gall_7 /DEST pdfmark
+7121(because)s 7940(Lout)s 8457(has)s 8833(no)s
+0 5283(w)m 2(ay)k 461(of)s 742(kno)s 6(wing)k
+1638(ho)s 6(w)k 2109(lar)s 4(ge)k 2648(the)s
+3006(paper)s 3607(is.)s 3941(Basser)s 4648(Lout)s 5170(simply)s
+5885(prints)s 6490(one)s 6902(root)s 7357(g)s 1(alle)k 3(y)k
+8002(component)s 0 4995(per)m 355(page)s 852(\(e)s 3(xcept)k
+1601(it)s 1782(skips)s 2314(components)s 3511(of)s 3771(height)s
+4418(zero\),)s 5005(and)s 5398(the)s 5735(user)s 6182(is)s
+6381(responsible)s 7515(for)s 7842(ensuring)s 8708(that)s 0 4707(each)m
+504(component)s 1637(is)s 1856(page-sized.)s 3051(Gaps)s 3603(between)s
+4466(root)s 4920(g)s 1(alle)k 3(y)k 5563(components,)s
+6836(e)s 6(v)k 3(en)k 7345(unbreakable)s 8580(ones,)s
+0 4419(ha)m 4(v)k 3(e)k 501(no)s 794(ef)s 6(fect)k
+1390(on)s 1687(the)s 2035(result.)s 480 4045(Basser)m 1204(Lout)s
+1744(will)s 2198(promote)s 3079(a)s 3273(component)s 4425(only)s
+4933(after)s 5457(an)s 3(y)k 5882(recepti)s 6(v)k 3(e)k
+6832(symbols)s
+[ /Dest /LOUT19_4637_det_gall_8 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_det_gall_9 /DEST pdfmark
+7709(within)s 8405(it)s 8625(ha)s 4(v)k 3(e)k
+0 3757(been)m 509(replaced,)s 1426(either)s 2029(by)s 2324(g)s 1(alle)k 3(ys)k
+3048(or)s 3308(by)s 220 fnt2 3602 3754(@Null)m 240 fnt1
+4187 3757(,)m 4295(since)s 4842(until)s 5336(then)s 5805(the)s
+6154(component)s 7278(is)s 7489(not)s 7855(complete.)s 8896(A)s
+0 3469(component)m 1109(which)s 1736(shares)s 2369(a)s 2520(mark)s
+3057(with)s 3524(follo)s 6(wing)k 4486(components)s 5679(is)s
+5874(held)s 6329(up)s 6607(until)s 7085(the)s 3(y)k
+7533(are)s 7865(all)s 8143(complete,)s 0 3181(since)m 547(until)s
+1040(then)s 1509(their)s 2006(width)s 2608(is)s 2818(uncertain.)s
+480 2807(Consider)m 1409(a)s 1581(page)s 2095(with)s 220 fnt2
+2583 2804(@T)m 26(e)k 6(xtPlace)k 240 fnt1 3806 2807(and)m
+220 fnt2 4216 2804(@F)m 6(ootSect)k 240 fnt1 5373 2807(recepti)m 6(v)k 3(e)k
+6301(symbols.)s 7268(The)s 7702(rule)s 8135(just)s 8546(gi)s 6(v)k 3(en)k
+0 2519(will)m 418(pre)s 6(v)k 3(ent)k 1177(the)s
+1517(page)s 2016(from)s 2531(being)s 3108(printed)s 3834(until)s
+220 fnt2 4319 2516(@T)m 26(e)k 6(xtPlace)k 240 fnt1
+5528 2519(is)m 5729(replaced)s 6588(by)s 6873(body)s 7399(te)s 3(xt,)k
+7852(quite)s 8377(rightly;)s 0 2231(b)m 4(ut)k 220 fnt2
+362 2228(@F)m 6(ootSect)k 240 fnt1 1513 2231(will)m 1939(also)s
+2377(pre)s 6(v)k 3(ent)k 3145(its)s 3421(printing,)s
+4285(e)s 6(v)k 3(en)k 4785(when)s 5361(there)s
+5894(are)s 6241(no)s 6534(footnotes.)s 480 1857(Basser)m 1187(Lout)s
+1709(is)s 1930(k)s 2(een)k 2447(to)s 2696(write)s
+3253(out)s 3629(pages)s 4235(as)s 4496(soon)s 5016(as)s
+5276(possible,)s 6178(to)s 6427(sa)s 4(v)k 3(e)k
+6911(memory)s 15(,)k 7811(and)s 8225(it)s 8428(cannot)s
+0 1569(af)m 6(ford)k 624(to)s 852(w)s 2(ait)k
+1309(fore)s 6(v)k 3(er)k 2038(for)s 2365(non-e)s 3(xistent)k
+3592(footnotes.)s 4635(A)s 4854(v)s 6(ariant)k 5559(of)s
+5819(the)s 6156(g)s 1(alle)k 3(y)k 6778(concept,)s
+7618(called)s 8235(a)s 240 fnt6 8389 1571(for)m 8(cing)k
+0 1283(galle)m 7(y)k 240 fnt1 573 1281(,)m
+[ /Dest /LOUT19_4637_det_gall_10 /DEST pdfmark
+
+[ /Dest /LOUTforcing /DEST pdfmark
+680(is)s
+890(introduced)s 1971(to)s 2210(solv)s 3(e)k 2768(this)s
+3164(problem.)s 4125(A)s 4355(forcing)s 5098(g)s 1(alle)k 3(y)k
+5732(is)s 5942(de\207ned)s 6705(lik)s 2(e)k 7117(this:)s
+220 fnt2 480 780(def @T)m 26(e)k 6(xt f)k 6(orce into { @T)k 26(e)k 6(xtPlace&&preceding })k
+480 492( ...)m
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 31 37
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(2.7.)m 1871(Galle)s 7(ys)k 2649(and)s
+3075(tar)s 8(g)k 2(ets)k 240 fnt5 10256 -1583(31)m
+gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+0 13205(and)m 392(so)s 646(on.)s 1037(When)s
+1654(such)s 2138(a)s 2291(g)s 1(alle)k 3(y)k
+2913(replaces)s 3734(a)s 220 fnt2 3887 13202(@Galle)m 4(y)k
+240 fnt1 4773 13205(symbol,)m 5573(Lout)s 6072(replaces)s 6893(e)s 6(v)k 3(ery)k
+7457(recepti)s 6(v)k 3(e)k 8366(symbol)s 0 12917(preceding)m
+1004(the)s 220 fnt2 1360 12914(@Galle)m 4(y)k 240 fnt1
+2266 12917(by)m 220 fnt2 2568 12914(@Null)m 240 fnt1 3153 12917(,)m
+3268(thus)s 3726(ensuring)s 4611(that)s 5038(as)s 5296(soon)s
+5814(as)s 6072(te)s 3(xt)k 6495(enters)s 7124(a)s
+7298(page,)s 7865(for)s 8212(e)s 3(xample,)k 0 12629(e)m 6(v)k 3(erything)k
+1064(up)s 1354(to)s 1590(and)s 1991(including)s 2945(the)s
+3289(preceding)s 4282(page)s 4787(can)s 5173(be)s 5452(printed.)s
+6290(This)s 6762(does)s 7249(not)s 7612(tak)s 2(e)k
+8061(care)s 8511(of)s 8778(the)s 0 12341(v)m 3(ery)k
+479(last)s 873(page,)s 1435(b)s 4(ut)k 1801(Basser)s
+2501(Lout)s 3016(replaces)s 3852(all)s 4149(recepti)s 6(v)k 3(e)k
+5074(symbols)s 5926(by)s 220 fnt2 6223 12338(@Null)m 240 fnt1
+6872 12341(when)m 7451(it)s 7646(realizes)s 8428(that)s 8850(its)s
+0 12053(input)m 552(has)s 922(all)s 1215(been)s 1724(read,)s
+2242(thus)s 2692(allo)s 6(wing)k 3576(the)s 3924(last)s
+4315(page)s 4823(to)s 5062(print.)s 480 11679(A)m 714(forcing)s
+1461(g)s 1(alle)k 3(y)k 2099(causes)s 2779(the)s
+3131(Third)s 3724(La)s 3(w)k 4204(to)s 4448(be)s
+4734(applied)s 5500(earlier)s 6172(than)s 6646(e)s 3(xpected,)k
+7604(and)s 8012(this)s 8413(creates)s 0 11391(tw)m 2(o)k
+425(problems.)s 1495(First,)s 2055(the)s 2419(replacement)s 3662(by)s
+220 fnt2 3972 11388(@Null)m 240 fnt1 4633 11391(may)m 5114(be)s
+5412(premature:)s 6562(a)s 6744(g)s 1(alle)k 3(y)k
+7394(may)s 7876(turn)s 8334(up)s 8643(later)s 0 11103(w)m 2(anting)k
+869(one)s 1318(of)s 1636(the)s 2032(defunct)s 2856(tar)s 4(gets.)k
+3699(Such)s 4283(g)s 1(alle)k 3(ys)k 5054(\(entries)s
+5867(in)s 6157(tables)s 6813(of)s 7131(contents)s 8026(are)s
+8421(typical)s 0 10815(e)m 3(xamples\))k 1020(are)s 1358(copied)s
+2045(into)s 2461(the)s 2801(cross)s 3334(reference)s 4268(database)s
+5138(and)s 5534(read)s 5994(in)s 6228(during)s 6897(the)s
+7237(ne)s 3(xt)k 7697(run)s 8064(just)s 8460(before)s
+0 10527(their)m 488(tar)s 4(gets)k 1161(are)s 1498(closed,)s
+2206(and)s 2600(so)s 2856(the)s 3(y)k 3309(\207nd)s
+3730(their)s 4217(tar)s 4(gets)k 4891(in)s 5124(the)s
+5462(end.)s 5962(Care)s 6459(must)s 6974(be)s 7246(tak)s 2(en)k
+7809(to)s 8038(ensure)s 8708(that)s 0 10239(lar)m 4(ge)k
+526(g)s 1(alle)k 3(ys)k 1247(such)s 1739(as)s
+1986(chapters)s 2829(and)s 3230(sections)s 4047(do)s 4337(not)s
+4700(ha)s 4(v)k 3(e)k 5197(defunct)s 5971(tar)s 4(gets,)k
+6706(since)s 7250(the)s 7594(cost)s 8036(of)s 8303(cop)s 2(ying)k
+0 9951(them)m 538(to)s 777(and)s 1181(from)s 1705(the)s
+2053(database)s 2932(is)s 3142(unacceptably)s 4458(high.)s 480 9577(It)m
+694(is)s 914(actually)s 1734(an)s 2027(o)s 3(v)k 3(er)k 4(-simpli\207cation)k
+3901(to)s 4150(say)s 4533(that)s 4961(these)s 5517(replacements)s
+6838(occur)s 7439(when)s 8025(the)s 8383(forcing)s 0 9289(g)m 1(alle)k 3(y)k
+633(replaces)s 1464(its)s 220 fnt2 1738 9286(@Galle)m 4(y)k
+240 fnt1 2576 9289(.)m 2738(What)s 3315(really)s 3910(happens)s
+4744(is)s 4952(that)s 5368(from)s 5891(this)s 6285(moment)s
+7127(on)s 7422(Lout)s 7932(understands)s 0 9001(that)m 414(it)s
+602(has)s 968(the)s 1311(right)s 1818(to)s 2053(mak)s 2(e)k
+2621(these)s 3163(replacements,)s 4526(and)s 4926(it)s 5114(will)s
+5535(do)s 5824(each)s 6315(one)s 6713(at)s 6940(the)s
+7284(\207rst)s 7711(moment)s 8550(when)s 0 8713(not)m 369(doing)s
+972(it)s 1168(w)s 2(ould)k 1827(hold)s 2315(things)s
+2955(up.)s 3363(So)s 3673(there)s 4210(is)s 4423(a)s
+4593(short)s 5135(period)s 5808(of)s 6083(grace)s 6660(when)s
+7240(g)s 1(alle)k 3(ys,)k 8024(such)s 8524(as)s
+8778(the)s 0 8425(entries)m 687(in)s 930(tables)s 1538(of)s
+1809(contents)s 2657(just)s 3062(alluded)s 3824(to,)s 4117(can)s
+4506(sneak)s 5112(into)s 5537(these)s 6084(recepti)s 6(v)k 3(e)k
+7006(symbols.)s 480 8051(The)m 220 fnt2 902 8048(into)m 240 fnt1
+1302 8051(and)m 220 fnt2 1699 8048(f)m 6(orce into)k 240 fnt1
+2642 8051(forms)m 3243(are)s 3584(actually)s 4387(just)s 4786(abbre)s 6(viations)k
+6112(for)s 6444(the)s 6785(true)s 7206(w)s 2(ay)k
+7650(that)s 8062(g)s 1(alle)k 3(ys)k 8779(are)s
+0 7763(de\207ned,)m 806(which)s 1442(is)s 1646(by)s 1934(gi)s 6(ving)k
+2586(the)s 2928(symbol)s 3682(that)s 4094(is)s 4297(to)s
+4530(be)s 4806(a)s 4966(g)s 1(alle)k 3(y)k
+5594(a)s 5753(parameter)s 6761(or)s 7014(nested)s
+[ /Dest /LOUT19_4637_det_gall_11 /DEST pdfmark
+7677(de\207nition)s
+8644(with)s 0 7475(the)m 348(special)s 1066(name)s 220 fnt2
+1640 7472(@T)m 26(arget)k 240 fnt1 2467 7475(:)m 220 fnt2
+480 6974(def @T)m 26(e)k 6(xt)k 480 6686( r)m -3(ight x)k
+480 6398({)m 480 6110( def @T)m 26(arget { @T)k 26(e)k 6(xtPlace&&preceding })k
+480 5534( x)m 480 5246(})m 240 fnt1 0 4752(A)m 237(forcing)s
+988(g)s 1(alle)k 3(y)k 1630(is)s 1848(obtained)s
+2738(by)s 3039(using)s 220 fnt2 3619 4749(&&&)m 240 fnt1
+4121 4752(instead)m 4864(of)s 220 fnt2 5143 4749(&&)m 240 fnt1
+5431 4752(.)m 220 fnt2 5602 4749(@T)m 26(arget)k 240 fnt1
+6497 4752(may)m 6971(be)s 7261(an)s 7552(arbitrary)s 8435(object,)s
+0 4464(pro)m 3(vided)k 908(that)s 1329(it)s 1524(yields)s
+2149(such)s 2648(a)s 2817(cross)s 3362(reference)s 4307(when)s
+4886(e)s 6(v)k 6(aluated.)k 5957(In)s 6216(this)s
+6615(w)s 2(ay)k 15(,)k 7107(dif)s 6(ferent)k
+7985(in)s 9(v)k 4(ocations)k 0 4176(may)m 466(ha)s 4(v)k 3(e)k
+967(dif)s 6(ferent)k 1842(tar)s 4(gets.)k 480 3802(The)m
+904(forcing)s 1643(g)s 1(alle)k 3(y)k 2273(ef)s 6(fect)k
+2865(can)s 3249(be)s 3527(obtained)s 4405(in)s 4644(another)s
+5417(w)s 2(ay)k 15(,)k 5901(by)s 6191(replacing)s
+7129(the)s 220 fnt2 7473 3799(@Galle)m 4(y)k 240 fnt1
+8366 3802(symbol)m 0 3514(to)m 245(which)s 893(the)s 1247(g)s 1(alle)k 3(y)k
+1887(is)s 2103(attached)s 2964(by)s 220 fnt2 3264 3511(@F)m 6(orceGalle)k 4(y)k
+240 fnt1 4657 3514(.)m 4827(The)s 5261(adv)s 6(antage)k
+6287(of)s 6565(this)s 6967(form)s 7497(is)s 7713(that)s
+8137(the)s 8492(g)s 1(alle)k 3(y)k 0 3226(can)m
+389(then)s 858(be)s 1140(forcing)s 1883(at)s 2115(some)s
+2676(places)s 3324(and)s 3728(not)s 4094(at)s 4326(others,)s
+5017(using)s 5589(the)s 5937(formula)s 220 fnt2 480 2725(def @SomePlace r)m -3(ight x)k
+480 2437({)m 480 2149( x @Case {)m 480 1861( nof)m 6(orce @Y)k 4(ield @Galle)k 4(y)k
+480 1573( f)m 6(orce @Y)k 4(ield @F)k 6(orceGalle)k 4(y)k
+480 1285( })m 480 997(})m 240 fnt1 0 503(No)m 6(w)k
+514(a)s 680(g)s 1(alle)k 3(y)k 1314(may)s
+1780(ha)s 4(v)k 3(e)k 220 fnt2 2281 500(@SomePlace)m
+240 fnt1 3677 503(for)m 4015(its)s 4291(tar)s 4(get,)k
+4937(and)s 5341(if)s 5558(it)s 5750(happens)s 6586(to)s
+6825(attach)s 7452(to)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 32 38
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(32)m 240 fnt6 8674 -1580(Chapter)m 9524(2.)s
+9798(Details)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+220 fnt2 480 13207(@SomePlace f)m 6(orce)k
+240 fnt1 0 12752(it)m 192(will)s 618(ha)s 4(v)k 3(e)k
+1119(the)s 1467(ef)s 6(fect)k 2063(of)s 2334(a)s
+2500(forcing)s 3243(g)s 1(alle)k 3(y)k 15(,)k
+3915(while)s 4502(if)s 4719(it)s 4911(happens)s 5747(to)s
+5986(attach)s 6613(to)s 220 fnt2 480 12251(@SomePlace nof)m 6(orce)k
+240 fnt1 0 11796(it)m 192(will)s 618(not.)s 480 11422(Although)m
+1436(it)s 1621(doesn')s 4(t)k 2374(matter)s 3036(whether)s
+3859(a)s 4018(g)s 1(alle)k 3(y)k 4645(is)s
+4848(declared)s 5708(as)s 5951(a)s 6110(forcing)s 6846(g)s 1(alle)k 3(y)k
+7473(or)s 7725(merely)s 8435(arri)s 6(v)k 3(es)k
+0 11134(at)m 244(a)s 220 fnt2 422 11131(@F)m 6(orceGalle)k 4(y)k
+240 fnt1 1887 11134(symbol)m 2659(from)s 3195(the)s 3555(point)s
+4119(of)s 4402(vie)s 6(w)k 4928(of)s 5211(the)s
+5571(ef)s 6(fect)k 6179(on)s 6488(nearby)s 7205(tar)s 4(gets,)k
+7956(there)s 8501(is)s 8724(one)s 0 10846(w)m 2(ay)k
+446(in)s 683(which)s 1319(Lout)s 1825(treats)s 2387(the)s
+2729(tw)s 2(o)k 3133(cases)s 3682(dif)s 6(ferently)k 15(.)k
+4827(If)s 5051(a)s 5211(forcing)s 5948(g)s 1(alle)k 3(y')k 13(s)k
+6733(\207rst)s 7158(component)s 8276(does)s 8760(not)s 0 10558(\207t)m
+264(into)s 695(the)s 1048(a)s 4(v)k 6(ailable)k
+1962(space,)s 2606(that)s 3029(component)s 4159(will)s 4590(be)s
+4878(scaled)s 5539(v)s 3(ertically)k 6496(until)s 6995(it)s
+7192(does.)s 7801(The)s 8235(rationale)s 0 10270(for)m 343(this)s
+744(is)s 959(that)s 1382(forcing)s 2130(g)s 1(alle)k 3(ys)k
+2860(are)s 3212(meant)s 3861(to)s 4105(carry)s 4654(the)s
+5007(b)s 4(ulk)k 5496(of)s 5772(the)s 6125(document)s
+7134(and)s 7543(cannot)s 8246(af)s 6(ford)k 8887(to)s
+0 9982(be)m 295(held)s 779(up)s 1086(because)s 1913(the)s
+2275(user)s 2747(has)s 3131(inadv)s 3(ertently)k 4456(included)s
+5352(an)s 5649(o)s 3(v)k 3(er)k 4(-high)k
+6640(component,)s 7825(which)s 8481(for)s 8833(all)s 0 9694(Lout)m
+514(kno)s 6(ws)k 1188(to)s 1430(the)s 1781(contrary)s
+2634(may)s 3103(not)s 3472(\207t)s 3734(on)s 4034(an)s 3(y)k
+4433(page.)s 5052(If)s 5285(this)s 5684(scaling)s 6417(is)s
+6630(not)s 6999(w)s 2(anted)k 7749(b)s 4(ut)k
+8114(forcing)s 8860(is,)s 0 9406(the)m 348(g)s 1(alle)k 3(y)k
+982(may)s 1448(be)s 1730(declared)s 2597(not)s 2963(forcing)s
+3706(b)s 4(ut)k 4068(all)s 4361(its)s 4637(tar)s 4(gets)k
+5320(may)s 5786(be)s 6068(set)s 6393(to)s 6632(contain)s
+220 fnt2 7393 9403(@F)m 6(orceGalle)k 4(y)k 240 fnt1
+8786 9406(.)m 480 9032(W)m 9(ithin)k 1196(a)s 1367(g)s 1(alle)k 3(y)k 15(,)k
+2043(a)s 2214(symbol)s 2978(whose)s 3651(name)s 4229(is)s
+220 fnt2 4444 9029(@Enclose)m 240 fnt1 5503 9032(has)m 5878(a)s
+6048(special)s
+[ /Dest /LOUT19_4637_det_gall_12 /DEST pdfmark
+6771(meaning:)s 7765(when)s 8346(compo-)s 0 8744(nents)m
+556(of)s 827(the)s 1175(g)s 1(alle)k 3(y)k
+1810(replace)s 2555(a)s 220 fnt2 2721 8741(@Galle)m 4(y)k
+240 fnt1 3619 8744(or)m 220 fnt2 3879 8741(@F)m 6(orceGalle)k 4(y)k
+240 fnt1 5332 8744(symbol,)m 6144(that)s 6562(symbol)s 7323(is)s
+7533(\207rst)s 7964(replaced)s 8832(by)s 220 fnt2 0 8453(@Enclose)m
+1055(@Galle)s 4(y)k 240 fnt1 1953 8456(or)m 220 fnt2
+2212 8453(@Enclose)m 3267(@F)s 6(orceGalle)k 4(y)k 240 fnt1
+4660 8456(.)m 4824(F)s 3(or)k 5213(e)s 3(xample,)k
+220 fnt2 480 7955(def @Figure into @FigurePlace&&f)m 6(ollo)k 3(wing)k 480 7667( r)m -3(ight @Body)k
+480 7379({)m 480 7091( def @Enclose)m 480 6803( r)m -3(ight x)k 480 6515( {)m
+480 6227( @Bo)m 6(x x)k 480 5939( })m 480 5363( @Body)m 480 5075(})m
+240 fnt1 0 4581(causes)m 705(each)s 220 fnt2 1230 4578(@Galle)m 4(y)k
+240 fnt1 2159 4581(or)m 220 fnt2 2448 4578(@F)m 6(orceGalle)k 4(y)k
+240 fnt1 3932 4581(symbol)m 4722(that)s 5171(recei)s 6(v)k 3(es)k
+6025(components)s 7264(of)s 7565(g)s 1(alle)k 3(y)k
+220 fnt2 8230 4578(@Figure)m 240 fnt1 0 4293(to)m 250(be)s
+544(replaced)s 1423(by)s 220 fnt2 1728 4290(@Bo)m 6(x @Galle)k 4(y)k
+240 fnt1 3294 4293(or)m 220 fnt2 3565 4290(@Bo)m 6(x @F)k 6(orceGalle)k 4(y)k
+240 fnt1 5614 4293(,)m 5732(assuming)s 6701(an)s 6996(appropriate)s
+8152(de\207nition)s 0 4005(of)m 220 fnt2 311 4002(@Bo)m 6(x.)k
+240 fnt1 1109 4005(This)m 1626(is)s 1876(useful,)s 2608(for)s
+2987(e)s 3(xample,)k 3941(when)s 4558(producing)s 5623(multi-page)s
+6754(box)s 3(ed)k 7436(displays,)s 8368(\207gures,)s 0 3717(and)m
+404(tables.)s 480 3343(An)m 220 fnt2 861 3340(@Enclose)m 240 fnt1
+1947 3343(symbol)m 2739(may)s 3236(ha)s 4(v)k 3(e)k
+3769(only)s 4280(one)s 4714(parameter)s 9(,)k 5797(which)s
+6471(must)s 7027(be)s 7341(a)s 7538(right)s 8081(parameter)s 13(.)k
+0 3055(It)m 213(w)s 2(ould)k 877(not)s 1252(mak)s 2(e)k
+1833(sense)s 2416(to)s 2664(allo)s 6(w)k 3252(more)s
+3808(parameters,)s 4971(since)s 5527(there)s 6069(is)s 6288(no)s
+6590(suitable)s 7398(v)s 6(alue)k 7975(to)s 8223(assign)s
+8887(to)s 0 2767(them.)m 628(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
+1574(the)s 220 fnt2 1908 2764(@Enclose)m 240 fnt1 2949 2767(symbol)m
+3695(may)s 4147(contain)s 4894(inner)s 5431(de\207nitions,)s 6534(and)s
+6924(it)s 7102(may)s 7554(mak)s 2(e)k 8112(use)s
+8473(of)s 8729(an)s 3(y)k 0 2479(symbol)m 761(that)s
+1181(is)s 1393(a)s 4(v)k 6(ailable)k 2303(at)s
+2537(that)s 2956(point,)s 3557(in)s 3802(the)s 4152(usual)s
+4714(w)s 2(ay)k 15(.)k 5262(The)s 220 fnt2
+5691 2476(@Enclose)m 240 fnt1 6748 2479(symbol)m 7510(may)s 7978(be)s
+8262(a)s 8430(named)s 0 2191(parameter)m 1016(\(itself)s 1645(with)s
+2130(a)s 2298(right)s 2812(parameter\))s 3896(of)s 4169(the)s
+4520(g)s 1(alle)k 3(y)k 5156(symbol,)s 5971(rather)s
+6589(than)s 7060(an)s 7346(inner)s 7899(de\207nition)s 8876(as)s
+0 1903(sho)m 6(wn)k 677(abo)s 3(v)k 3(e,)k
+1350(if)s 1567(desired.)s 480 1529(It)m 696(mak)s 2(es)k
+1367(sense)s 1952(for)s 2302(sorted)s 2955(g)s 1(alle)k 3(ys)k
+3690(containing)s 4765(a)s 220 fnt2 4942 1526(@Merge)m 240 fnt1
+5850 1529(symbol)m 6621(\(Section)s 7486(2.8\))s 7925(to)s 8175(also)s
+8625(ha)s 4(v)k 3(e)k 0 1241(an)m 220 fnt2
+277 1238(@Enclose)m 240 fnt1 1326 1241(symbol.)m 2188(The)s 2610(meaning)s
+3480(is)s 3684(that)s 4095(after)s 4585(all)s 4872(mer)s 4(ging)k
+5711(is)s 5915(done,)s 6481(each)s 6970(resulting)s 7852(g)s 1(alle)k 3(y)k
+8480(has)s 8843(an)s 220 fnt2 0 950(@Enclose)m 240 fnt1
+1061 953(symbol)m 1827(which)s 2476(is)s 2692(applied)s 3461(in)s
+3710(the)s 4064(usual)s 4631(w)s 2(ay)k 15(.)k
+5183(The)s 5618(v)s 6(alue)k 6192(of)s 6469(this)s
+220 fnt2 6872 950(@Enclose)m 240 fnt1 7933 953(symbol)m 8700(will)s
+0 665(be)m 274(the)s 614(v)s 6(alue)k 1174(of)s
+1437(an)s 220 fnt2 1712 662(@Enclose)m 240 fnt1 2758 665(symbol)m
+3510(from)s 4026(one)s 4420(of)s 4683(the)s 5022(contrib)s 4(uting)k
+6232(g)s 1(alle)k 3(ys,)k 7004(b)s 4(ut)k
+7358(e)s 3(xactly)k 8091(which)s 8724(one)s 0 377(is)m
+210(not)s 576(de\207ned.)s 1445(So)s 1751(it)s 1943(is)s
+2153(safest)s 2756(if)s 2973(all)s 3266(such)s 220 fnt2
+3762 374(@Enclose)m 240 fnt1 4817 377(symbols)m 5666(produce)s 6493(the)s
+6841(same)s 7388(result.)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 33 39
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(2.7.)m 1871(Galle)s 7(ys)k 2649(and)s
+3075(tar)s 8(g)k 2(ets)k 240 fnt5 10250 -1583(33)m
+gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+480 13205(A)m 220 fnt2 709 13202(f)m 6(ollo)k 3(wing)k
+240 fnt1 1597 13205(g)m 1(alle)k 3(y)k 2229(may)s
+2693(f)s 2(ail)k 3061(to)s 3299(\207nd)s 3728(a)s
+3892(\207rst)s 4321(tar)s 4(get)k 4918(lying)s 5461(in)s
+5703(a)s 5867(follo)s 6(wing)k 6842(component)s 7964(of)s
+8233(the)s 8579(same)s 0 12917(g)m 1(alle)k 3(y)k
+634(as)s 884(its)s 1159(in)s 9(v)k 4(ocation)k
+2213(point.)s 2868(This)s 3344(is)s 3553(a)s 3719(de\207cienc)s 3(y)k
+4752(of)s 5023(Basser)s 5719(Lout,)s 6278(which)s 6919(occurs)s
+7594(if)s 7810(the)s 8158(tar)s 4(get)k 8756(has)s
+0 12629(not)m 356(been)s 855(read)s 1313(from)s 1827(input)s
+2369(at)s 2590(the)s 2928(time)s 3398(the)s 3735(g)s 1(alle)k 3(y)k
+4359(tries)s 4810(to)s 5038(\207nd)s 5459(it.)s 5745(A)s
+5964(w)s 2(orkaround)k 7167(is)s 7367(to)s 7595(use)s
+7960(a)s 220 fnt2 8115 12626(preceding)m 240 fnt1 0 12341(g)m 1(alle)k 3(y)k
+634(instead,)s 1418(de\207ned)s 2181(lik)s 2(e)k 2593(this:)s
+220 fnt2 480 11840(def @A)m 6(Galle)k 4(y into { @A)k 6(Galle)k 4(yPlace&&preceding })k
+480 11552( r)m -3(ight @Body)k 480 11264({)m 480 10976( //1.1b)m 480 10688( @Body)m
+480 10400(})m 240 fnt1 0 9906(and)m 404(in)s 9(v)k 4(ok)k 2(ed)k
+1219(lik)s 2(e)k 1631(this:)s 220 fnt2 480 9454(@A)m 6(Galle)k 4(yPlace | @A)k 6(Galle)k 4(y { content of galle)k 4(y })k
+480 9166(//)m 480 8878(...)m 480 8590(@A)m 6(Galle)k 4(yPlace)k
+240 fnt1 0 8092(The)m 419(\207rst)s 220 fnt2 841 8089(@A)m 6(Galle)k 4(yPlace)k
+240 fnt1 2411 8092(recei)m 6(v)k 3(es)k 3226(only)s
+3696(the)s 4035(initial)s 4636(empty)s 5279(object,)s 5960(since)s
+6498(the)s 220 fnt2 6836 8089(//1.1b)m 240 fnt1 7428 8092(forces)m
+8052(a)s 8209(split;)s 8722(and)s 0 7804(the)m 348(Second)s
+1111(La)s 3(w)k 1587(puts)s 2037(Basser)s 2734(Lout)s
+3246(on)s 3543(the)s 3891(right)s 4402(track)s 4940(thereafter)s 13(.)k
+240 fnt5 0 7011(2.8.)m 471(Sorted)s 1203(galleys)s
+[ /Dest /LOUTsorted /DEST pdfmark
+240 fnt1
+480 6534(When)m 1128(footnotes)s 2088(are)s 2455(placed)s 3156(at)s
+3407(the)s 3775(bottom)s 4532(of)s 4823(a)s 5008(page,)s
+5586(the)s 3(y)k 6069(appear)s 6785(there)s 7337(in)s
+7600(\207rst)s 8050(come,)s 8695(\207rst)s 0 6246(serv)m 3(ed)k
+674(order)s 13(.)k 1324(T)s 19(o)k 1618(mak)s 2(e)k
+2185(g)s 1(alle)k 3(ys)k 2903(appear)s 3595(in)s
+3832(sorted)s 4469(order)s 9(,)k 5065(as)s
+[ /Dest /LOUT19_4637_det_sort_1 /DEST pdfmark
+5310(is)s
+5514(needed)s 6245(in)s 6482(bibliographies)s 7896(and)s 8294(inde)s 3(x)k 3(es,)k
+0 5958(a)m 178(parameter)s 1205(or)s 1477(nested)s 2158(de\207nition)s
+3145(with)s 3640(the)s 4000(special)s 4731(name)s 220 fnt2
+5318 5955(@K)m 8(e)k 4(y)k
+[ /Dest /LOUT19_4637_det_sort_2 /DEST pdfmark
+240 fnt1 5977 5958(is)m
+6200(added)s 6843(to)s 7094(the)s 7455(g)s 1(alle)k 3(y)k
+8102(de\207nition,)s 0 5670(lik)m 2(e)k 412(this:)s 220 fnt2
+480 5219(def @Inde)m 6(xEntr)k -6(y into { @Inde)k 6(xPlace&&f)k 6(ollo)k 3(wing })k
+480 4931( left @K)m 8(e)k 4(y)k 480 4643( r)m -3(ight x)k
+480 4355({ x })m 0 3858(@K)m 8(e)k 4(y)k 240 fnt1
+674 3861(must)m 1226(be)s 1535(set)s 1887(to)s 2153(a)s
+2346(simple)s 3066(w)s 2(ord,)k 3690(or)s 3976(se)s 6(v)k 3(eral)k
+4725(w)s 2(ords)k 5386(with)s 5895(nothing)s 6707(more)s
+7281(comple)s 3(x)k 8184(than)s 8681(font)s 0 3573(changes)m
+822(within)s 1490(them,)s 2075(when)s 2651(the)s 2999(g)s 1(alle)k 3(y)k
+3633(is)s 3843(in)s 9(v)k 4(ok)k 2(ed:)k
+220 fnt2 480 3072({ cities compare } @Inde)m 6(xEntr)k -6(y { cities)k 3(, compar)k -3(ison of)k 6(, 27 })k
+240 fnt1 0 2574(and)m 404(this)s 800(k)s 2(e)k 3(y)k
+1195(is)s 1405(used)s 1902(to)s 2141(sort)s 2559(the)s
+2907(g)s 1(alle)k 3(ys.)k 480 2200(If)m 707(se)s 6(v)k 3(eral)k
+1425(sorted)s 2063(g)s 1(alle)k 3(ys)k 2783(with)s
+3261(the)s 3605(same)s 4148(k)s 2(e)k 3(y)k
+4539(are)s 4882(sent)s 5323(to)s 5558(the)s 5902(same)s
+6445(place,)s 7052(the)s 7396(def)s 2(ault)k 8113(beha)s 4(viour)k
+0 1912(is)m 253(to)s 536(print)s 1091(only)s 1615(the)s
+2007(\207rst)s 2481(of)s 2796(them;)s 3430(the)s 3822(assumption)s
+5013(is)s 5266(that)s 5728(the)s 6120(others)s 6799(are)s
+7190(probably)s 8139(unw)s 2(anted)k 0 1624(duplicates.)m 1128(This)s
+1599(holds)s 2164(good)s 2697(for)s 3029(sorted)s 3666(reference)s
+4604(lists,)s 5090(for)s 5423(e)s 3(xample:)k 6390(we)s
+6720(don')s 4(t)k 7276(w)s 2(ant)k 7794(tw)s 2(o)k
+8199(copies)s 8855(of)s 0 1336(a)m 166(reference)s 1109(just)s
+1514(because)s 2327(we)s 2662(happen)s 3411(to)s 3650(cite)s
+4050(it)s 4242(twice.)s 480 962(The)m 921(other)s 1485(common)s
+2393(e)s 3(xample)k 3269(of)s 3553(sorted)s 4208(g)s 1(alle)k 3(ys,)k
+5001(inde)s 3(x)k 5598(entries,)s 6354(requires)s 7187(something)s
+8251(dif)s 6(ferent)k 0 674(from)m 540(discarding)s 1606(duplicates:)s
+240 fnt6 2758 676(mer)m 8(g)k 2(ed)k 240 fnt1
+3549 674(g)m 1(alle)k 3(ys.)k 4402(Suppose)s 5287(that)s
+5722(at)s 5971(some)s 6548(point)s 7117(of)s 7405(the)s
+7770(document)s 8791(we)s 0 386(insert)m 590(the)s 938(inde)s 3(x)k
+1522(entry)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 34 40
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+%%+ font Symbol
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+%%IncludeResource: font Symbol
+/fnt4 { /Symbol LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(34)m 240 fnt6 8674 -1580(Chapter)m 9524(2.)s
+9798(Details)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+220 fnt2 480 13207(aardv)m 5(ar)k -3(ks @Inde)k 6(xEntr)k -6(y { Aardv)k 5(ar)k -3(ks)k 3(, 23 })k
+240 fnt1 0 12709(while)m 587(at)s 819(another)s 1596(point)s
+2148(we)s 2483(insert)s 220 fnt2 480 12208(aardv)m 5(ar)k -3(ks @Inde)k 6(xEntr)k -6(y { Aardv)k 5(ar)k -3(ks)k 3(, 359 })k
+240 fnt1 0 11710(Ho)m 6(w)k 505(the)s 843(page)s
+1341(numbers)s 2206(are)s 2544(w)s 2(ork)k 2(ed)k
+3306(out)s 3662(is)s 3862(not)s 4219(rele)s 6(v)k 6(ant)k
+5026(here.)s 5591(Clearly)s 6338(we)s 6664(w)s 2(ould)k
+7309(lik)s 2(e)k 7711(to)s 7940(mer)s 4(ge)k
+8579(these)s 0 11422(tw)m 2(o)k 410(entries)s 1097(into)s
+1522(one)s 1924(entry)s 2469(that)s 2887(comes)s 3549(out)s
+3915(as)s 480 10917(Aardv)m 6(arks, 23, 359)k 0 10433(The)m 428(follo)s 6(wing)k
+1405(de\207nition)s 2379(will)s 2805(mer)s 4(ge)k 3454(tw)s 2(o)k
+3864(objects)s 220 fnt2 4592 10430(x)m 240 fnt1 4760 10433(and)m
+220 fnt2 5164 10430(y)m 240 fnt1 5332 10433(in)m 5575(this)s
+5971(w)s 2(ay:)k 220 fnt2 480 9932(def @Merge left x r)m -3(ight y)k
+480 9644({)m 480 9356( { x @Rump { x @Meld y } } @Case)m 480 9068( {)m 480 8780( "" @Y)m 4(ield x)k
+480 8492( else @Y)m 4(ield { { x{@OneCol ,} } @Meld y })k 480 8204( })m 480 7628(})m 240 fnt1
+0 7134(The)m 220 fnt2 428 7131(@Rump)m 240 fnt1 1288 7134(and)m
+220 fnt2 1693 7131(@Meld)m 240 fnt1 2439 7134(symbols)m 3288(are)s
+3636(the)s 3984(subject)s 4721(of)s 4993(Section)s 5767(3.28;)s
+6299(and)s 6704(a)s 6870(detailed)s 7684(e)s 3(xplanation)k
+8855(of)s 0 6846(ho)m 6(w)k 458(this)s 850(de\207nition)s
+1820(w)s 2(orks)k 2450(is)s 2656(the)s 3000(subject)s
+3733(of)s 4000(Section)s 4771(4.6.)s 5231(Our)s 5659(only)s
+6135(problem)s 6988(is)s 7194(that)s 7608(this)s 8000(symbol)s
+8756(has)s 0 6558(to)m 239(be)s 521(applied)s 1283(to)s
+1522(tw)s 2(o)k 1932(g)s 1(alle)k 3(ys)k
+2656(from)s 3180(widely)s 3885(separated)s 4845(parts)s 5360(of)s
+5631(the)s 5979(document.)s 480 6184(Lout)m 993(mak)s 2(es)k
+1654(this)s 2052(possible)s 2893(by)s 3189(the)s 3538(follo)s 6(wing)k
+4517(special)s 5236(rule:)s 5775(if)s 5993(a)s 6161(sorted)s
+6804(g)s 1(alle)k 3(y)k 7440(contains)s 8289(a)s
+8457(nested)s 0 5896(de\207nition)m 965(of)s 1227(a)s 1383(symbol)s
+2134(whose)s 2793(name)s 3357(is)s 220 fnt2 3558 5893(@Merge)m
+240 fnt1 4446 5896(\()m 220 fnt2 4519 5893(@Merge)m 240 fnt1
+5406 5896(must)m 5922(ha)s 4(v)k 3(e)k 6414(just)s
+6809(tw)s 2(o)k 7210(parameters,)s 8355(left)s 8722(and)s
+0 5608(right\),)m
+[ /Dest /LOUT19_4637_det_sort_3 /DEST pdfmark
+643(and)s 1054(if)s 1277(that)s 1702(sorted)s
+2350(g)s 1(alle)k 3(y)k 2991(is)s 3207(preceded)s
+4135(in)s 4384(the)s 4739(list)s 5096(of)s 5374(sorted)s
+6022(g)s 1(alle)k 3(ys)k 6753(destined)s 7614(for)s
+7959(some)s 8527(tar)s 4(get)k 0 5320(by)m 300(another)s
+1084(sorted)s 1733(g)s 1(alle)k 3(y)k 2374(with)s
+2863(the)s 3217(same)s 3771(k)s 2(e)k 3(y)k 15(,)k
+4211(then)s 4687(rather)s 5310(than)s 5785(being)s 6377(discarded,)s
+7407(the)s 7762(second)s 8492(g)s 1(alle)k 3(y)k
+0 5032(is)m 210(mer)s 4(ged)k 981(into)s 1406(the)s
+1754(\207rst)s 2185(using)s 2757(the)s 220 fnt2 3105 5029(@Merge)m
+240 fnt1 4002 5032(symbol.)m 480 4658(The)m 909(natural)s 1629(thing)s
+2175(to)s 2416(do)s 2711(when)s 3288(more)s 3837(than)s
+4307(tw)s 2(o)k 4719(g)s 1(alle)k 3(ys)k
+5445(ha)s 4(v)k 3(e)k 5947(the)s 6297(same)s
+6845(k)s 2(e)k 3(y)k 7242(is)s 7454(to)s
+7694(mer)s 4(ge)k 8345(the)s 8695(\207rst)s 0 4370(tw)m 2(o,)k
+477(then)s 959(mer)s 4(ge)k 1621(the)s 1982(third)s
+2504(with)s 2999(the)s 3360(result)s 3963(of)s 4247(that,)s
+4725(then)s 5207(the)s 5568(fourth)s 6222(with)s 6717(the)s
+7078(result)s 7681(of)s 7965(that,)s 8443(and)s 8860(so)s
+0 4082(on.)m 403(F)s 3(or)k 790(ef\207cienc)s 3(y)k
+1781(reasons)s 2547(be)s 3(yond)k 3306(our)s 3684(scope)s
+4283(here,)s 4799(Lout)s 5309(does)s 5797(the)s 6144(mer)s 4(ging)k
+6988(in)s 7229(a)s 7393(dif)s 6(ferent)k 8266(order:)s
+8934(it)s 0 3794(mer)m 4(ges)k 240 fnt6 736 3796(n)m
+240 fnt1 909 3794(g)m 1(alle)k 3(ys)k 1632(by)s
+1925(mer)s 4(ging)k 2770(the)s 3116(\207rst)s 240 fnt4
+3592 3752(\353)m 240 fnt6 3685 3796(n)m 240 fnt4 3809 3788(/)m
+3881(2)s 4006 3752(\373)m 240 fnt1 4197 3794(together)m 9(,)k
+5077(then)s 5545(the)s 5892(last)s 240 fnt4 6327 3764(\351)m
+240 fnt6 6420 3796(n)m 240 fnt4 6545 3788(/)m 6617(2)s
+6741 3764(\371)m 240 fnt1 6933 3794(together)m 9(,)k 7813(then)s
+8280(mer)s 4(ging)k 0 3506(the)m 334(result.)s 1014(Of)s
+1323(course,)s 2040(if)s 2242(the)s 220 fnt2 2576 3503(@Merge)m
+240 fnt1 3458 3506(symbol)m 4204(is)s 4399(associati)s 6(v)k 3(e)k
+5480(this)s 5861(has)s 6217(the)s 6550(same)s 7083(ef)s 6(fect.)k
+7768(The)s 8182(total)s 8646(time)s 0 3218(it)m 192(tak)s 2(es)k
+733(to)s 972(mer)s 4(ge)k 240 fnt6 1622 3220(n)m
+240 fnt1 1796 3218(g)m 1(alle)k 3(ys)k 2521(with)s
+3004(equal)s 3577(k)s 2(e)k 3(ys)k 4063(is)s
+240 fnt6 4273 3220(O)m 240 fnt4 4454 3212(\()m 168 fnt4
+4652 3311(2)m 240 fnt6 4538 3220(n)m 240 fnt4 4745 3212(\))m
+240 fnt1 4872 3218(or)m 5131(some)s 6(what)k 6156(higher)s
+6827(\(b)s 4(ut)k 7269(al)s 2(w)k 2(ays)k
+7981(polynomial)s 0 2930(in)m 240 fnt6 238 2932(n)m 240 fnt1
+352 2930(\))m 475(depending)s 1521(on)s 1813(ho)s 6(w)k
+2269(man)s 3(y)k 2846(times)s 3409(the)s 3752(parameters)s
+4845(occur)s 5431(within)s 6094(the)s 6436(body)s 6965(of)s
+220 fnt2 7231 2927(@Merge)m 240 fnt1 8068 2930(;)m 8175(to)s
+8409(do)s 8697(it)s 8883(in)s 0 2642(the)m 348(natural)s
+1066(linear)s 1669(order)s 2233(w)s 2(ould)k 2888(tak)s 2(e)k
+3340(Lout)s 3852(e)s 3(xponential)k 5020(time.)s 480 2268(F)m 3(or)k
+879(horrible)s 1702(reasons)s 2481(concerning)s 3608(making)s 4390(it)s
+4593(possible)s 5444(to)s 5694(print)s 6216(reference)s 7170(lists)s
+7616(sorted)s 8269(by)s 8574(point)s 0 1980(of)m 296(\207rst)s
+753(citation,)s 1602(the)s 1976(particular)s 2976(sort)s 3420(k)s 2(e)k 3(y)k
+220 fnt2 3841 1977(??)m 240 fnt1 4157 1980(is)m 4393(treated)s
+5126(dif)s 6(ferently)k 15(.)k 6302(If)s 6558(tw)s 2(o)k
+6994(g)s 1(alle)k 3(ys)k 7744(ha)s 4(v)k 3(e)k
+8271(this)s 8693(k)s 2(e)k 3(y)k 15(,)k
+0 1692(according)m 1010(to)s 1264(the)s 1627(rules)s 2156(abo)s 3(v)k 3(e)k
+2793(either)s 3411(the)s 3773(second)s 4511(w)s 2(ould)k
+5181(be)s 5477(discarded)s 6466(or)s 6740(else)s 7181(it)s
+7388(w)s 2(ould)k 8058(be)s 8355(mer)s 4(ged)k
+0 1404(with)m 485(the)s 836(\207rst.)s 1374(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
+2337(for)s 2678(this)s 3077(particular)s 4054(k)s 2(e)k 3(y)k
+4452(only)s 15(,)k 4973(the)s 5324(tw)s 2(o)k
+5737(g)s 1(alle)k 3(ys)k 6464(will)s 6893(in)s
+7139(f)s 2(act)k 7557(be)s 7842(k)s 2(ept)k
+8316(distinct,)s 0 1116(just)m 405(as)s 655(though)s 1378(their)s
+1875(sort)s 2293(k)s 2(e)k 3(ys)k 2778(had)s
+3182(been)s 3691(dif)s 6(ferent.)k
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 35 41
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(2.9.)m 1871(Horizontal)s 2968(galle)s 7(ys)k
+240 fnt5 10250 -1583(35)m gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+240 fnt5 0 13203(2.9.)m
+471(Horizontal)s 1628(galleys)s
+[ /Dest /LOUThorizontal /DEST pdfmark
+240 fnt1 480 12726(All)m 846(the)s
+1201(g)s 1(alle)k 3(ys)k 1932(so)s 2205(f)s 2(ar)k
+2534(ha)s 4(v)k 3(e)k 3042(been)s 240 fnt6
+3557 12728(vertical)m 4353(galle)s 7(ys)k 240 fnt1 5018 12726(:)m
+5191(g)s 1(alle)k 3(ys)k 5922(whose)s 6597(components)s
+7812(are)s 8166(separated)s 0 12438(by)m 320(v)s 3(ertical)k
+1114(concatenation)s 2525(symbols.)s 3514(There)s 4154(are)s 4527(also)s
+4992(horizontal)s 6043(g)s 1(alle)k 3(ys,)k 6849(whose)s
+7544(components)s 8779(are)s 0 12150(separated)m 951(by)s 1235(the)s
+1574(horizontal)s 2588(concatenation)s 3963(operator)s 220 fnt2 4810 12147(&)m
+240 fnt1 5002 12150(\(or)m 5331(equi)s 6(v)k 6(alently)k 15(,)k
+6583(by)s 6867(spaces\).)s 7725(These)s 8342(w)s 2(ork)k
+8883(in)s 0 11862(the)m 346(same)s 891(w)s 2(ay)k
+1340(as)s 1588(v)s 3(ertical)k 2353(g)s 1(alle)k 3(ys,)k
+3131(e)s 3(xcept)k 3810(for)s 4146(the)s 4492(change)s
+5224(of)s 5493(direction.)s 6504(F)s 3(or)k 6891(e)s 3(xample,)k
+7803(the)s 8149(follo)s 6(wing)k 0 11574(de\207nes)m 730(the)s
+1079(equi)s 6(v)k 6(alent)k 2124(of)s 2396(an)s
+2681(ordinary)s 3546(outdented)s 4549(paragraph,)s 5613(e)s 3(xcept)k
+6295(that)s 6715(an)s 6999(option)s 7669(is)s 7880(pro)s 3(vided)k
+8788(for)s 0 11286(v)m 6(arying)k 778(the)s 1126(size)s
+1553(of)s 1824(the)s 2172(outdent:)s 220 fnt2 480 10785(def @OutdentP)m 8(ar)k
+480 10497( named outdent { 2f })m 480 10209( r)m -3(ight x)k 480 9921({)m 480 9633( def @P)m 8(arPlace { @Galle)k 4(y })k
+480 9057( def @LineList)m 480 8769( {)m 480 8481( outdent @Wide {} | @P)m 26(Adjust @P)k 8(arPlace)k
+480 8193( //1vx @LineList)m 480 7905( })m 480 7329( def @P)m 8(arGalle)k 4(y f)k 6(orce hor)k -3(iz)k 3(ontally into { @P)k 8(arPlace&&preceding })k
+480 7041( r)m -3(ight x)k 480 6753( {)m 480 6465( x)m 480 6177( })m
+480 5601( @P)m 26(Adjust @P)k 8(arPlace)k 480 5313( // @P)m 8(arGalle)k 4(y { x &1r)k -8(t })k
+480 5025( //1vx @LineList)m 480 4737(})m 240 fnt1 0 4243(Notice)m 703(the)s
+1061(use)s 1446(of)s 220 fnt2 1727 4240(&1r)m -8(t)k
+240 fnt1 2203 4243(to)m 2452(cancel)s 3127(the)s 3485(ef)s 6(fect)k
+4091(of)s 220 fnt2 4372 4240(@P)m 26(Adjust)k 240 fnt1
+5390 4243(on)m 5697(the)s 6055(last)s 6456(line)s 6880(of)s
+7161(the)s 7519(paragraph.)s 8650(This)s 0 3955(de\207nition)m 969(has)s
+1334(a)s 1494(problem)s 2346(in)s 2584(that)s 2996(there)s
+3524(will)s 3945(be)s 4221(a)s 4382(concluding)s 5494(une)s 3(xpanded)k
+220 fnt2 6701 3952(@LineList)m 240 fnt1 7730 3955(symbol)m 8484(which)s
+0 3667(will)m 431(hold)s 921(up)s 1219(promotion)s 2279(of)s
+2555(the)s 2909(enclosing)s 3884(g)s 1(alle)k 3(y;)k
+4582(this)s 4983(problem)s 5846(may)s 6317(be)s 6605(\207x)s 3(ed)k
+7144(by)s 7444(the)s 7797(same)s 8350(method)s 0 3379(used)m
+497(to)s 736(end)s 1140(a)s 1306(list.)s 480 3005(In)m
+735(an)s 1016(ideal)s 1533(w)s 2(orld,)k 2194(there)s
+2725(w)s 2(ould)k 3378(be)s 3658(nothing)s 4442(further)s
+5149(to)s 5386(say)s 5757(about)s 6347(horizontal)s 7369(g)s 1(alle)k 3(ys.)k
+8204(Ho)s 6(we)k 6(v)k 3(er)k 0 2717(there)m
+558(are)s 931(a)s 1123(fe)s 6(w)k 1555(dif)s 6(ferences)k
+2686(which)s 3354(arise)s 3886(from)s 4436(v)s 6(arious)k
+5211(practical)s 6113(considerations)s 7571(and)s 8001(limitations.)s 0 2429(Perhaps)m
+808(some)s 1369(day)s 1769(a)s 1935(more)s 2482(perfect)s
+3204(symmetry)s 4214(will)s 4640(be)s 4922(implemented.)s 480 2055(Each)m
+1021(v)s 3(ertical)k 1795(g)s 1(alle)k 3(y)k
+2436(has)s 2812(a)s 2985(\207x)s 3(ed)k 3526(\207nite)s
+4080(width,)s 4738(and)s 5149(e)s 6(v)k 3(ery)k
+5732(component)s 6863(is)s 7079(brok)s 2(en)k 7806(to)s
+8052(that)s 8477(width.)s 0 1767(This)m 517(is)s 769(needed)s
+1546(basically)s 2491(to)s 2772(trigger)s 3509(paragraph)s 4564(breaking.)s
+5606(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
+6608(there)s 7183(is)s 7434(no)s 7769(equi)s 6(v)k 6(alent)k
+8855(of)s 0 1479(paragraph)m 1001(breaking)s 1879(in)s 2110(the)s
+2446(v)s 3(ertical)k 3201(direction,)s 4145(so)s 4398(horizontal)s
+5410(g)s 1(alle)k 3(ys)k 6122(do)s 6403(not)s
+6757(ha)s 4(v)k 3(e)k 7246(an)s 3(y)k
+7631(particular)s 8592(\207x)s 3(ed)k 0 1191(height.)m 762(Instead,)s
+1559(each)s 2054(component)s 3178(has)s 3548(its)s 3824(o)s 6(wn)k
+4288(indi)s 6(vidual)k 5307(height.)s 480 817(When)m 1096(tw)s 2(o)k
+1492(objects)s 2206(are)s 2539(separated)s 3485(by)s 220 fnt2
+3766 814(/)m 240 fnt1 3830 817(,)m 3923(the)s 3(y)k
+4372(are)s 4705(assigned)s 5573(the)s 5908(same)s 6441(width)s
+7029(\(Section)s 7868(2.7\),)s 8340(and)s 8730(this)s 0 529(holds)m
+581(true)s 1020(e)s 6(v)k 3(en)k 1531(if)s
+1760(the)s 2119(tw)s 2(o)k 2541(objects)s 3280(are)s
+3639(subsequently)s 4954(separated)s 5926(by)s 6231(being)s 6828(promoted)s
+7814(into)s 8251(dif)s 6(ferent)k 0 241(tar)m 4(gets.)k
+788(F)s 3(or)k 1169(e)s 3(xample,)k 2074(tw)s 2(o)k
+2476(aligned)s 3229(equations)s 4189(will)s 4606(ha)s 4(v)k 3(e)k
+5099(the)s 5439(same)s 5977(width,)s 6621(and)s 7016(hence)s
+7622(their)s 8110(alignment)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 36 42
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(36)m 240 fnt6 8674 -1580(Chapter)m 9524(2.)s
+9798(Details)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+0 13205(will)m 437(be)s 731(preserv)s 3(ed,)k
+1776(e)s 6(v)k 3(en)k 2287(if)s 2516(the)s 3(y)k
+2991(appear)s 3699(in)s 3954(dif)s 6(ferent)k 4841(columns)s
+5714(or)s 5985(pages.)s 6706(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
+7677(e)s 6(v)k 3(en)k 8189(though)s 220 fnt2
+8924 13202(&)m 240 fnt1 0 12917(aligns)m 635(the)s 996(marks)s
+1644(of)s 1928(its)s 2217(tw)s 2(o)k 2640(parameters,)s
+3807(it)s 4012(does)s 4515(not)s 4894(assign)s 5562(them)s
+6113(a)s 6292(common)s 7200(height.)s 7975(This)s 8464(means)s
+0 12629(that)m 416(the)s 762(height)s 1417(of)s 1686(an)s 3(y)k
+2081(component)s 3202(of)s 3471(a)s 3634(horizontal)s 4656(g)s 1(alle)k 3(y)k
+5288(promoted)s 6260(into)s 6683(one)s 7083(tar)s 4(get)k
+7679(does)s 8167(not)s 8530(af)s 6(fect)k 0 12341(the)m
+362(height)s 1034(consumed)s 2078(by)s 2386(the)s 2748(components)s
+3971(promoted)s 4960(into)s 5400(an)s 3(y)k 5811(other)s
+6376(tar)s 4(get.)k 7094(The)s 7536(other)s 8102(horizontal)s
+0 12053(concatenation)m 1392(operator)s 9(,)k 220 fnt2 2293 12050(|)m
+240 fnt1 2330 12053(,)m 2444(does)s 2941(assign)s 3604(a)s
+3777(common)s 4679(height)s 5344(to)s 5590(its)s 5874(tw)s 2(o)k
+6291(parameters;)s 7457(b)s 4(ut)k 7826(sequences)s 8855(of)s
+0 11765(objects)m 728(separated)s 1688(by)s 1982(this)s 2378(operator)s
+3234(cannot)s 3932(be)s 4214(the)s 4562(components)s 5770(of)s
+6041(a)s 6207(horizontal)s 7231(g)s 1(alle)k 3(y)k 15(.)k
+480 11391(Lout)m 984(is)s 1186(able)s 1632(to)s 1862(read)s
+2323(v)s 3(ertical)k 3082(g)s 1(alle)k 3(ys)k
+3798(one)s 4191(paragraph)s 5196(at)s 5420(a)s 5577(time;)s
+6105(in)s 6340(this)s 6728(w)s 2(ay)k 7170(it)s
+7354(processes)s 8313(the)s 8652(doc-)s 0 11103(ument)m 660(in)s
+906(small)s 1481(chunks,)s 2270(ne)s 6(v)k 3(er)k
+2855(holding)s 3642(more)s 4192(than)s 4664(a)s 4833(fe)s 6(w)k
+5242(pages)s 5840(in)s 6086(memory)s 6940(at)s 7175(an)s 3(y)k
+7575(time.)s 8166(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
+0 10815(horizontal)m 1024(g)s 1(alle)k 3(ys)k 1748(are)s
+2095(al)s 2(w)k 2(ays)k 2806(read)s 3275(in)s
+3518(completely)s 15(,)k 4672(so)s 4938(the)s 3(y)k
+5401(should)s 6098(not)s 6464(be)s 6746(e)s 3(xtremely)k
+7752(long.)s 480 10441(In)m 744(principle)s 1658(Lout)s 2178(should)s
+2884(be)s 3174(able)s 3637(to)s 3884(h)s 1(yphenate)k
+4932(the)s 5288(components)s 6505(of)s 6784(horizontal)s 7817(g)s 1(alle)k 3(ys)k
+8550(when)s 0 10153(the)m 3(y)k 463(are)s 810(simple)s
+1503(w)s 2(ords,)k 2193(b)s 4(ut)k 2555(this)s
+2951(is)s 3161(not)s 3527(implemented)s 4833(at)s 5065(present.)s
+480 9779(In)m 738(an)s 1023(ideal)s 1544(w)s 2(orld,)k
+2209(e)s 6(v)k 3(ery)k 2787(paragraph)s 3802(w)s 2(ould)k
+4459(be)s 4743(treated)s 5452(as)s 5704(a)s 5872(horizontal)s
+6898(g)s 1(alle)k 3(y)k 15(.)k 7629(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
+8591(to)s 8833(do)s 0 9491(so)m 256(in)s 488(practice)s
+1288(w)s 2(ould)k 1932(be)s 2203(too)s 2551(slo)s 6(w)k
+3040(and)s 3433(w)s 2(ould)k 4077(lead)s 4522(to)s
+4750(e)s 3(xcessi)k 6(v)k 3(e)k 5699(clumsiness)s
+6788(in)s 7020(notation,)s 7900(so)s 8155(at)s 8376(present)s
+0 9203(Lout)m 509(has)s 876(tw)s 2(o)k 1282(competing)s
+2342(mechanisms)s 3572(in)s 3811(this)s 4204(area:)s 4764(the)s
+5108(b)s 4(uilt-in)k 5861(paragraph)s 6871(break)s 2(er)k
+7641(with)s 8120(its)s 8392(limited)s 0 8915(set)m 314(of)s
+573(options)s 1318(as)s 1556(gi)s 6(v)k 3(en)k
+2124(under)s 2718(the)s 220 fnt2 3054 8912(@Break)m 240 fnt1
+3899 8915(operator)m 9(,)k 4781(and)s 5173(horizontal)s 6186(g)s 1(alle)k 3(ys.)k
+7011(As)s 7317(the)s 7653(e)s 3(xample)k 8504(abo)s 3(v)k 3(e)k
+0 8627(sho)m 6(ws,)k 700(horizontal)s 1725(g)s 1(alle)k 3(ys)k
+2449(are)s 2797(in)s 3040(principle)s 3946(capable)s 4733(of)s
+5004(implementing)s 6386(man)s 3(y)k 6969(more)s 7517(paragraph)s
+8531(styles)s 0 8339(than)m 470(the)s 820(b)s 4(uilt-in)k
+1578(paragraph)s 2593(break)s 2(er)k 3369(could)s 3961(e)s 6(v)k 3(er)k
+4425(hope)s 4949(to)s 5190(do.)s 5596(The)s 6026(recommended)s
+7441(practical)s 8319(strate)s 3(gy)k 0 8051(is)m 221(to)s
+472(use)s 858(the)s 1218(b)s 4(uilt-in)k 1985(paragraph)s
+3010(break)s 2(er)k 3795(most)s 4332(of)s 4614(the)s
+4974(time,)s 5516(and)s 5932(switch)s 6624(to)s 6875(horizontal)s
+7910(g)s 1(alle)k 3(ys)k 8646(only)s 0 7763(for)m
+338(occasional)s 1402(tricks,)s 2039(such)s 2535(as)s 2785(paragraphs)s
+3885(with)s 4367(drop)s 4859(capitals,)s 5695(circular)s 6483(outlines,)s
+7347(etc.)s 240 fnt5 0 6970(2.10.)m 591(Optimal)s 1495(galley)s
+2149(br)s 4(eaking)k
+[ /Dest /LOUToptimal /DEST pdfmark
+240 fnt1 480 6493(As)m 814(e)s 3(xplained)k
+1817(in)s 2077(Section)s 2869(2.7,)s 3294(the)s 3659(components)s
+4885(of)s 5174(a)s 5357(g)s 1(alle)k 3(y)k
+
+[ /Dest /LOUT19_4637_det_opti_1 /DEST pdfmark
+6009(are)s 6373(promoted)s 7366(one)s 7786(by)s 8097(one)s
+8517(into)s 8960(a)s 0 6205(tar)m 4(get.)k 703(When)s
+1332(space)s 1919(runs)s 2382(out)s 2748(there,)s 3332(the)s
+3680(g)s 1(alle)k 3(y)k 4314(searches)s 5174(for)s
+5512(a)s 5678(ne)s 6(w)k 6125(tar)s 4(get)k
+6724(and)s 7128(promotion)s 8182(resumes.)s 480 5831(This)m 977(process)s
+1766(is)s 1997(e)s 3(xactly)k 2759(analogous)s 3802(to)s
+4062(placing)s 4840(w)s 2(ords)k 5495(onto)s 5995(a)s
+6182(line)s 6617(until)s 7131(space)s 7739(runs)s 8223(out,)s
+8657(then)s 0 5543(mo)m 3(ving)k 776(to)s 1008(another)s
+1778(line.)s 2293(But,)s 2740(as)s 2983(we)s 3311(kno)s 6(w)k 15(,)k
+3923(that)s 4335(simple)s 5021(method)s 5790(is)s 5993(inferior)s
+6762(to)s 6994(the)s 7335(optimal)s 8113(paragraph)s 0 5255(breaking)m
+893(used)s 1393(by)s 1690(Lout)s 2206(\(copied)s 2984(from)s
+3511(the)s 3863(T)s 3959 5207(E)m 4067 5255(X)m 4299(system\),)s
+5152(which)s 5797(e)s 3(xamines)k 6752(the)s 7103(entire)s
+7705(paragraph)s 8722(and)s 0 4967(determines)m 1099(the)s 1447(most)s
+1972(e)s 6(v)k 3(en)k 2472(assignment)s 3608(of)s
+3879(w)s 2(ords)k 4513(to)s 4752(lines.)s 480 4593(Lout)m
+1050(of)s 6(fers)k 240 fnt6 1709 4595(optimal)m 2559(galle)s 7(y)k
+3250(br)s 8(eaking)k 240 fnt1 4087 4593(,)m 4252(the)s
+4659(equi)s 6(v)k 6(alent)k 5761(for)s 6157(g)s 1(alle)k 3(ys)k
+6940(of)s 7269(optimal)s 8113(paragraph)s 0 4305(breaking.)m 1020(Optimal)s
+1878(g)s 1(alle)k 3(y)k 2532(breaking)s 3442(can)s
+3851(reduce)s 4564(the)s 4932(size)s 5378(of)s 5669(ugly)s
+6169(blank)s 6782(spaces)s 7477(at)s 7729(the)s 8097(bottom)s
+8855(of)s 0 4017(pages)m 596(preceding)s 1592(lar)s 4(ge)k
+2121(unbreakable)s 3346(displays,)s 4237(sometimes)s 5310(quite)s 5844(dramatically)s 15(.)k
+480 3643(Optimal)m 1337(g)s 1(alle)k 3(y)k 1990(breaking)s
+2900(is)s 3129(applied)s 3910(to)s 4169(each)s 4683(g)s 1(alle)k 3(y)k 15(,)k
+5375(horizontal)s 6418(or)s 6696(v)s 3(ertical,)k 7535(that)s
+7972(possesses)s 8960(a)s 0 3355(parameter)m 1036(or)s 1317(nested)s
+2008(symbol)s 2790(called)s 220 fnt2 3440 3352(@Optimiz)m 3(e)k
+240 fnt1 4599 3355(whose)m 5290(v)s 6(alue)k 5880(is)s
+220 fnt2 6112 3352(Y)m 30(es)k 240 fnt1 6453 3355(.)m
+6639(Lik)s 2(e)k 7153(cross)s 7717(referencing,)s
+[ /Dest /LOUT19_4637_det_opti_2 /DEST pdfmark
+8934(it)s
+0 3067(tak)m 2(es)k 539(tw)s 2(o)k 947(runs)s
+1409(to)s 1646(ha)s 4(v)k 3(e)k 2145(ef)s 6(fect.)k
+2844(On)s 3192(the)s 3538(\207rst)s 3968(run,)s 4392(Lout)s
+4902(records)s 5655(the)s 6001(sizes)s 6514(of)s 6784(the)s
+7130(g)s 1(alle)k 3(y')k 13(s)k 7918(components)s
+0 2779(and)m 393(g)s 1(aps,)k 927(and)s 1319(also)s
+1746(the)s 2083(space)s 2658(a)s 4(v)k 6(ailable)k
+3555(at)s 3776(each)s 4259(of)s 4519(its)s 4783(tar)s 4(gets.)k
+5568(At)s 5856(end)s 6248(of)s 6508(run)s 6873(this)s
+7257(information)s 8431(is)s 8629(used)s 0 2491(to)m 232(\207nd)s
+656(an)s 932(optimal)s 1709(break,)s 2340(which)s 2975(is)s
+3177(written)s 3903(to)s 4135(the)s 4475(cross-reference)s 5981(database.)s
+6961(On)s 7303(the)s 7644(second)s 8360(run,)s 8778(the)s
+0 2203(optimal)m 785(break)s 1377(is)s 1587(retrie)s 6(v)k 3(ed)k
+2484(and)s 2888(used.)s 480 1829(Considering)m 1727(that)s 2170(this)s
+2590(process)s 3383(must)s 3932(cope)s 4465(with)s 4971(\210oating)s
+5780(\207gures,)s 6562(ne)s 6(w)k 7034(page)s 7566(and)s
+7995(conditional)s 0 1541(ne)m 6(w)k 460(page)s 982(symbols,)s
+1901(breaks)s 2589(for)s 2941(ne)s 6(w)k 3402(chapters,)s
+4318(and)s 4736(e)s 6(v)k 4(olving)k 5631(documents,)s
+6788(it)s 6994(is)s 7218(surprisingly)s 8428(rob)s 4(ust.)k
+0 1253(If)m 250(it)s 463(does)s 974(go)s 1287(badly)s
+1894(wrong,)s 2634(remo)s 3(ving)k 3621(\207le)s 220 fnt2
+4003 1250(lout.li)m 240 fnt1 4580 1253(then)m 5069(running)s 5888(Lout)s
+6421(twice)s 7014(without)s 7826(changing)s 8778(the)s 0 965(document)m
+1036(may)s 1534(solv)s 3(e)k 2125(the)s 2505(problem.)s
+3498(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
+4491(cases)s 5078(are)s 5457(kno)s 6(wn)k 6194(where)s
+6866(the)s 7246(optimization)s 8544(ne)s 6(v)k 3(er)k
+0 677(con)m 9(v)k 3(er)k 4(ges.)k 1151(These)s
+1812(are)s 2193(usually)s 2972(related)s 3713(to)s 3986(\207gures)s
+4721(and)s 5159(footnotes)s 6134(whose)s 6836(anchor)s 7581(points)s
+8251(f)s 2(all)k 8655(near)s 0 389(page)m 508(boundaries.)s
+
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 37 43
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+gsave
+1417 -14865 translate
+0.0 0.0 0.0 LoutSetRGBColor
+9066 13448 0 13448 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+480 fnt5 0 12397(Chapter)m 1819(3.)s 2400(Pr)s 8(ede\207ned)k
+4711(symbols)s
+[ /Dest /LOUTsymbols /DEST pdfmark
+240 fnt5 0 11133(3.1.)m 471(@Begin)s 1335(and)s
+1776(@End)s
+[ /Dest /LOUTbegin /DEST pdfmark
+240 fnt1 480 10656(The)m 905(body)s 1435(of)s
+1702(a)s 1864(symbol)s 220 fnt2 2620 10653(@Sym)m 240 fnt1
+3324 10656(may)m 3786(be)s 4064(enclosed)s 4955(in)s 220 fnt2
+5194 10653(@Begin)m 240 fnt1 6019 10656(and)m
+[ /Dest /LOUT19_4637_pre_begi_1 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_begi_2 /DEST pdfmark
+220 fnt2 6419 10653(@End)m
+7076(@Sym)s 240 fnt1 7780 10656(instead)m 8511(of)s 8778(the)s
+0 10368(more)m 547(usual)s 1107(braces:)s 220 fnt2 480 9917(def @Section)m
+480 9629( named @Title {})m 480 9341( r)m -3(ight @Body)k 480 9053(@Begin)m 480 8765( @Title //2v @Body)m
+480 8477(@End @Section)m 240 fnt1 0 8022(The)m 3(y)k 543(may)s
+1009(also)s 1447(enclose)s 2220(the)s 2568(right)s 3079(or)s
+3338(body)s 3872(parameter)s 4886(of)s 5157(a)s 5323(symbol)s
+6083(in)s 9(v)k 4(ocation:)k 220 fnt2 480 7521(@Chapter)m
+480 7233( @Title { Introduction })m 480 6945(@Begin)m 480 6657(This subject needs no introduction.)m 480 6369(@End @Chapter)m 240 fnt1
+0 5873(Apart)m 651(from)s 1222(their)s 1767(utility)s 2438(as)s
+2735(documentation)s 4262(aids,)s 4801(these)s 5396(forms)s 6051(allo)s 6(w)k
+6677(Basser)s 7422(Lout)s 7981(to)s 8268(pinpoint)s 0 5585(mismatched)m
+1206(braces,)s 1915(which)s 2549(can)s 2930(otherwise)s 3908(create)s
+4525(total)s 4996(ha)s 4(v)k 4(oc.)k 5716(F)s 3(or)k
+6098(this)s 6486(reason,)s 7209(the)s 3(y)k 7664(should)s
+8353(enclose)s 0 5297(the)m 339(major)s 946(parts)s 1451(of)s
+1712(documents,)s 2846(such)s 3333(as)s 3573(chapters)s 4410(and)s
+4804(sections.)s 5728(Note)s 6240(that)s 6648(braces)s 7299(cannot)s
+7987(be)s 8259(replaced)s 0 5009(by)m 220 fnt2 294 5006(@Begin)m
+240 fnt1 1123 5009(and)m 220 fnt2 1527 5006(@End)m 240 fnt1
+2188 5009(in)m 2431(general.)s 240 fnt5 0 4216(3.2.)m 471(Concatenation)s
+2015(symbols)s 2893(and)s 3334(paragraphs)s
+[ /Dest /LOUTconcatenation /DEST pdfmark
+240 fnt1 480 3739(There)m
+1093(are)s 1440(ten)s 1789(concatenation)s 3174(symbols,)s 4079(in)s
+4322(three)s 4855(f)s 2(amilies:)k
+[ /Dest /LOUT19_4637_pre_conc_1 /DEST pdfmark
+220 fnt2 480 3198(/)m
+962(^/)s 1547(//)s 2012(^//)s 240 fnt1 2580 3201(V)m 26(ertical)k
+3377(concatenation)s 220 fnt2 480 2910(|)m 962(^|)s 1547(||)s
+2012(^||)s 240 fnt1 2580 2913(Horizontal)m 3657(concatenation)s 220 fnt2
+480 2622(&)m 962(^&)s 240 fnt1 2580 2625(In-paragraph)m 3871(concatenation)s
+0 2084(Each)m 587(symbol)s 1399(produces)s 2367(an)s 2702(object)s
+3398(which)s 4093(combines)s 5113(together)s 6008(the)s 6409(tw)s 2(o)k
+6871(parameters.)s 8134(The)s 8615(right)s 0 1796(parameter)m 1014(must)s
+1539(be)s 1821(separated)s 2781(from)s 3305(the)s 3653(symbol)s
+4413(by)s 4707(at)s 4939(least)s 5436(one)s 5838(white)s
+6425(space)s 7012(character)s 13(.)k 480 1422(The)m 906(v)s 3(ertical)k
+1670(concatenation)s 3052(symbol)s 220 fnt2 3809 1419(/)m 240 fnt1
+3930 1422(places)m 4575(its)s 4848(left)s 5222(parameter)s
+[ /Dest /LOUT19_4637_pre_conc_2 /DEST pdfmark
+6233(abo)s 3(v)k 3(e)k
+6852(its)s 7125(right)s 7633(parameter)s 8644(with)s 0 1134(their)m
+519(column)s 1317(marks)s 1975(aligned.)s 2866(If)s 3119(one)s
+3544(parameter)s 4581(has)s 4973(more)s 5543(column)s 6341(marks)s
+6999(than)s 7491(the)s 7862(other)s 9(,)k 8474(empty)s
+0 846(columns)m 868(are)s 1221(inserted)s 2041(at)s 2279(the)s
+2633(right)s 3150(to)s 3395(equalize)s 4253(the)s 4607(numbers.)s
+5601(The)s 6035(v)s 6(ariant)k 220 fnt2 6758 843(//)m
+240 fnt1 6949 846(ignores)m 7710(column)s 8491(marks)s 0 558(and)m
+404(left-justi\207es)s 1594(the)s 1942(objects.)s 480 184(The)m 896(horizontal)s
+1908(concatenation)s 3280(symbols)s 220 fnt2 4117 181(|)m 240 fnt1
+4201 184(and)m 220 fnt2 4593 181(||)m 240 fnt1 4734 184(are)m
+5069(horizontal)s
+[ /Dest /LOUT19_4637_pre_conc_3 /DEST pdfmark
+6080(analogues)s 7076(of)s 220 fnt2 7334 181(/)m
+240 fnt1 7446 184(and)m 220 fnt2 7837 181(//)m 240 fnt1
+7962 184(:)m 8116(the)s 3(y)k 8566(place)s
+grestore
+gsave
+1417 -14865 translate
+0.0 0.0 0.0 LoutSetRGBColor
+0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+192 fnt5 0.0 0.0 0.0 LoutSetRGBColor 5856 -15421(37)m
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 38 44
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(38)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s
+8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+0 13205(their)m
+488(tw)s 2(o)k 888(parameters)s 1976(side)s 2407(by)s
+2692(side,)s 3174(with)s 3646(ro)s 6(w)k 4056(mark)s
+4599(alignment)s 5605(or)s 5854(top-justi\207cation)s 7414(respecti)s 6(v)k 3(ely)k 15(.)k
+8698(The)s
+[ /Dest /LOUT19_4637_pre_conc_4 /DEST pdfmark
+0 12917(in-paragraph)m 1278(concatenation)s 2663(symbol)s 220 fnt2
+3423 12914(&)m 240 fnt1 3625 12917(produces)m 4540(horizontal)s 5564(concatenation)s
+6949(within)s 7617(a)s 7783(paragraph;)s 8850(its)s 0 12629(special)m
+718(properties)s 1724(are)s 2071(treated)s 2778(in)s 3021(detail)s
+3606(at)s 3838(the)s 4186(end)s 4590(of)s 4861(this)s
+5257(section.)s 480 12255(The)m 908(concatenation)s 2293(symbols)s 3142(in)s
+3385(an)s 3(y)k 3782(one)s 4184(f)s 2(amily)k
+4859(are)s 240 fnt6 5206 12257(mutually)m 6099(associative)s 240 fnt1
+7154 12255(,)m 7261(which)s 7903(means)s 8565(that)s 220 fnt2
+480 11754({)m 240 fnt6 664 11759(x)m 220 fnt2 890 11754(|)m
+240 fnt6 927 11759(p)m 1160(y)s 220 fnt2 1382 11754(})m
+1566(|)s 240 fnt6 1603 11759(q)m 1839(z)s 240 fnt1
+0 11258(is)m 210(al)s 2(w)k 2(ays)k 921(the)s
+1269(same)s 1816(as)s 240 fnt6 480 10762(x)m 220 fnt2
+706 10757(|)m 240 fnt6 743 10762(p)m 220 fnt2 976 10757({)m
+240 fnt6 1160 10762(y)m 220 fnt2 1382 10757(|)m 240 fnt6
+1419 10762(q)m 1655(z)s 220 fnt2 1866 10757(})m 240 fnt1
+0 10261(for)m 339(an)s 3(y)k 737(objects)s 240 fnt6
+1466 10263(x)m 240 fnt1 1572 10261(,)m 240 fnt6 1680 10263(y)m
+240 fnt1 1782 10261(,)m 1891(and)s 240 fnt6 2296 10263(z)m
+240 fnt1 2387 10261(,)m 2495(an)s 3(y)k 2893(g)s 1(aps)k
+240 fnt6 3383 10263(p)m 240 fnt1 3558 10261(and)m 240 fnt6
+3963 10263(q)m 240 fnt1 4140 10261(\(de\207ned)m 4983(belo)s 6(w\),)k
+5750(and)s 6155(an)s 3(y)k 6553(choice)s 7234(of)s
+220 fnt2 7506 10258(|)m 240 fnt1 7543 10261(,)m 220 fnt2
+7652 10258(^|)m 240 fnt1 7792 10261(,)m 220 fnt2 7900 10258(||)m
+240 fnt1 7994 10261(,)m 8102(and)s 220 fnt2 8507 10258(^||)m
+240 fnt1 8704 10261(.)m 8870(In)s 0 9973(practice)m 803(we)s
+1130(al)s 2(w)k 2(ays)k 1833(omit)s 2323(such)s
+2811(braces,)s 3520(since)s 4059(the)s 3(y)k 4513(are)s
+4852(redundant)s 5861(and)s 6257(can)s 6638(be)s 6912(misleading.)s
+8117(The)s 8536(result)s 0 9685(of)m 277(the)s 631(complete)s
+1569(sequence)s 2508(of)s 2786(concatenations)s 4264(will)s 4696(be)s
+4984(called)s 5619(the)s 240 fnt6 5973 9687(whole)m 6604(concatenation)s
+8020(object)s 240 fnt1 8608 9685(,)m 8722(and)s 0 9397(the)m
+348(objects)s 1076(which)s 1718(mak)s 2(e)k 2290(it)s
+2482(up)s 2775(will)s 3201(be)s 3483(called)s 4111(the)s
+240 fnt6 4459 9399(components)m 240 fnt1 5598 9397(.)m 480 9023(One)m
+938(mark)s 1494(is)s 1708(designated)s 2793(as)s 3047(the)s
+240 fnt6 3398 9025(principal)m 4339(mark)s 240 fnt1 4835 9023(,)m
+4946(usually)s 5695(the)s 6047(mark)s 6602(of)s
+[ /Dest /LOUT19_4637_pre_conc_5 /DEST pdfmark
+6877(the)s
+7229(\207rst)s 7664(component.)s 8896(A)s 0 8735(later)m 486(mark)s
+1042(can)s 1435(be)s 1721(chosen)s 2447(for)s 2789(this)s
+3189(honour)s 3932(by)s 4230(attaching)s 220 fnt2 5163 8732(^)m
+240 fnt1 5333 8735(to)m 5576(the)s 5928(preceding)s 6928(concatenation)s
+8317(symbol.)s 0 8447(See)m 401(Section)s 1175(3.13)s 1639(for)s
+1977(e)s 3(xamples.)k 480 8073(A)m 240 fnt6 712 8075(gap)m
+240 fnt1 1065 8073(,)m
+[ /Dest /LOUT19_4637_pre_conc_6 /DEST pdfmark
+1175(specifying)s 2227(the)s 2578(distance)s
+3420(between)s 4277(the)s 4627(tw)s 2(o)k 5040(parameters,)s
+6197(may)s 6666(follo)s 6(w)k 7341(an)s 3(y)k
+7741(concatenation)s 0 7785(symbol.)m 866(There)s 1475(may)s 1937(be)s
+2215(no)s 2504(spaces)s 3176(between)s 4026(a)s 4188(concatenation)s
+5569(symbol)s 6325(and)s 6726(its)s 6998(g)s 1(ap.)k
+7503(A)s 7729(missing)s 8522(g)s 1(ap)k 8916(is)s
+0 7497(tak)m 2(en)k 569(to)s 803(be)s 220 fnt2
+1081 7494(0ie)m 240 fnt1 1365 7497(.)m 1524(The)s 1948(g)s 1(ap)k
+2341(is)s 2546(ef)s 6(fecti)k 6(v)k 3(ely)k
+3601(a)s 3762(third)s 4267(parameter)s 5276(of)s 5542(the)s
+5886(concatenation)s 7266(symbol,)s 8074(and)s 8473(it)s 8660(may)s
+0 7209(be)m 289(an)s 579(arbitrary)s 1462(object)s 2113(pro)s 3(vided)k
+3026(that)s 3452(it)s 3651(e)s 6(v)k 6(aluates)k
+4586(to)s 4833(a)s 5006(juxtaposition)s 6319(of)s 6598(simple)s
+7298(w)s 2(ords.)k 8052(In)s 8316(general,)s 0 6921(the)m
+348(g)s 1(ap)k 746(must)s 1271(be)s 1553(enclosed)s
+2448(in)s 2691(braces,)s 3408(lik)s 2(e)k 3820(this:)s
+220 fnt2 480 6420(//{ @Style&&m)m 3(ystyle @Open { @T)k 26(opMargin } })k 240 fnt1
+0 5921(b)m 4(ut)k 349(the)s 684(braces)s 1332(may)s
+1785(be)s 2053(omitted)s 2828(when)s 3391(the)s 3726(object)s
+4356(is)s 4553(a)s 4706(juxtaposition)s 5999(of)s 6256(simple)s
+6936(w)s 2(ords)k 7557(or)s 7803(an)s 8072(in)s 9(v)k 4(ocation)k
+0 5633(of)m 271(a)s 437(symbol)s 1197(without)s 1988(parameters,)s
+3142(as)s 3392(in)s 220 fnt2 3635 5630(//0.3vx)m 240 fnt1
+4340 5633(and)m 220 fnt2 4744 5630(||@Indent)m 240 fnt1 5687 5633(.)m
+480 5259(A)m 704(g)s 1(ap)k 1096(consists)s 1898(of)s
+2162(a)s 2322(length)s 2971(plus)s 3415(a)s 3574(g)s 1(ap)k
+3966(mode)s 4548(plus)s 4992(an)s 5268(optional)s 6101(indication)s
+7108(of)s 7373(unbreakability)s 15(.)k 8896(A)s 240 fnt6
+0 4973(length)m
+[ /Dest /LOUT19_4637_pre_conc_7 /DEST pdfmark
+240 fnt1 659 4971(is)m 875(represented)s 2040(by)s
+2341(an)s 2630(decimal)s 3447(number)s 4244(\(which)s 4972(may)s
+5444(not)s 5816(be)s 6104(ne)s 3(g)k 1(ati)k 6(v)k 3(e\))k
+7036(follo)s 6(wed)k 7944(by)s 8244(a)s 8416(unit)s
+8855(of)s 0 4683(measurement.)m 1437(F)s 3(or)k 1825(e)s 3(xample,)k
+220 fnt2 2738 4680(2.5c)m 240 fnt1 3207 4683(represents)m 4225(the)s
+4572(length)s 5226(2.5)s 5571(centimetres.)s 6834(Figure)s 7513(3.1)s
+7847(gi)s 6(v)k 3(es)k 8393(the)s 8740(full)s
+0 4395(selection)m 906(of)s 1177(units)s 1693(of)s 1964(measurement.)s
+
+[ /Dest /LOUT19_4637_pre_conc_8 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_conc_9 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_conc_10 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_conc_11 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_conc_12 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_conc_13 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_conc_14 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_conc_15 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_conc_16 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_conc_17 /DEST pdfmark
+480 4021(After)m 1045(the)s 1396(length)s 2054(comes)s 2718(an)s
+3004(optional)s 240 fnt6 3846 4023(gap)m 4261(mode)s 240 fnt1
+4773 4021(,)m
+[ /Dest /LOUT19_4637_pre_conc_18 /DEST pdfmark
+4883(which)s 5528(is)s 5740(a)s 5909(single)s
+6539(letter)s 7090(follo)s 6(wing)k 8070(the)s 8421(length,)s
+0 3733(indicating)m 1031(ho)s 6(w)k 1514(the)s 1884(length)s
+2562(is)s 2794(to)s 3055(be)s 3359(measured.)s 4462(As)s
+4801(sho)s 6(wn)k 5500(in)s 5765(Figure)s 6468(3.2,)s
+6897(with)s 7401(edge-to-edge)s 8728(g)s 1(ap)k 0 3445(mode)m
+
+[ /Dest /LOUT19_4637_pre_conc_19 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_conc_20 /DEST pdfmark
+603(the)s 967(length)s 240 fnt6 1638 3447(l)m 240 fnt1
+1780 3445(is)m 2006(measured)s 2996(from)s 3536(the)s 3900(trailing)s
+4658(edge)s 5181(of)s 5468(the)s 5832(\207rst)s 6279(object)s
+6939(to)s 7194(the)s 7558(leading)s 8331(edge)s 8855(of)s
+0 3157(the)m 347(second.)s 1174(Edge-to-edge)s 2516(is)s 2725(the)s
+3071(def)s 2(ault)k 3790(mode:)s 4486(the)s 220 fnt2
+4833 3154(e)m 240 fnt1 5005 3157(may)m 5469(be)s 5749(omitted.)s
+6642(Hyphenation)s 7934(g)s 1(ap)k 8330(mode)s 8916(is)s
+
+[ /Dest /LOUT19_4637_pre_conc_21 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_conc_22 /DEST pdfmark
+0 2869(similar)m 9(,)k 760(e)s 3(xcept)k 1441(as)s
+1691(e)s 3(xplained)k 2676(at)s 2908(the)s 3256(end)s
+3660(of)s 3931(this)s 4327(section.)s 480 2495(Mark-to-mark,)m
+[ /Dest /LOUT19_4637_pre_conc_23 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_conc_24 /DEST pdfmark
+1957(o)s 3(v)k 3(erstrik)k 2(e,)k
+
+[ /Dest /LOUT19_4637_pre_conc_25 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_conc_26 /DEST pdfmark
+3028(and)s 3450(k)s 2(erning)k
+[ /Dest /LOUT19_4637_pre_conc_27 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_conc_28 /DEST pdfmark
+4249(measure)s 5118(the)s
+5484(length)s 6156(from)s 6698(the)s 7063(last)s 7471(mark)s
+8041(of)s 8329(the)s 8695(\207rst)s 0 2207(object)m 648(to)s
+892(the)s 1245(\207rst)s 1680(mark)s 2237(of)s 2513(the)s
+2865(second.)s 3699(In)s 3960(the)s 4312(case)s 4784(of)s
+5060(mark-to-mark,)s 6497(if)s 6719(the)s 7072(length)s 7731(is)s
+7946(too)s 8310(small)s 8887(to)s 0 1919(pre)m 6(v)k 3(ent)k
+771(the)s 1123(objects)s 1855(almost)s 2556(o)s 3(v)k 3(erlapping,)k
+3804(it)s 4000(is)s 4214(widened)s 5087(until)s 5584(the)s 3(y)k
+6051(no)s 6348(longer)s 7023(do.)s 7431(\(The)s 7942(e)s 3(xtra)k
+240 fnt6 8480 1921(l/10)m 240 fnt1 8916 1919(is)m 0 1631(not)m
+362(applied)s 1119(when)s 1690(plain)s 2220(te)s 3(xt)k
+2630(output)s 3298(is)s 3503(in)s 3741(ef)s 6(fect.\))k
+4520(K)s 6(erning)k 5346(also)s 5780(widens,)s 6560(with)s
+7037(the)s 7380(aim)s 7793(of)s 8059(pre)s 6(v)k 3(enting)k
+0 1343(the)m 372(mark)s 948(of)s 1243(either)s 1870(object)s
+2539(from)s 3087(o)s 3(v)k 3(erlapping)k 4301(the)s
+4673(other)s 5248(object;)s 5969(this)s 6389(mode)s 7001(is)s
+7235(used)s 7756(for)s 8119(subscripts)s 0 1055(and)m 404(superscripts.)s
+
+[ /Dest /LOUT19_4637_pre_conc_29 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_conc_30 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_conc_31 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_conc_32 /DEST pdfmark
+558 681(T)m 19(ab)k 4(ulation)k 1646(ignores)s 2419(the)s
+2785(\207rst)s 3234(object)s 3896(and)s 4318(places)s 4984(the)s
+5350(leading)s 6125(edge)s 6651(of)s 6940(the)s 7306(second)s
+8047(object)s 8709(at)s 8960(a)s 0 393(distance)m 240 fnt6
+842 395(l)m 240 fnt1 971 393(from)m 1498(the)s 1849(left)s
+2229(edge)s 2740(of)s 3014(the)s 3365(whole)s 4009(concatenation)s
+5397(object.)s 6148(It)s 6356(is)s 6569(the)s 6920(main)s
+7458(user)s 7919(of)s 8193(the)s 220 fnt2 8544 390(b)m
+240 fnt1 8722 393(and)m 220 fnt2 0 102(r)m 240 fnt1
+141 105(units)m 666(of)s 945(measurement;)s 2340(for)s 2686(e)s 3(xample,)k
+220 fnt2 3609 102(|1r)m -8(t)k 240 fnt1 3994 105(will)m
+4429(right-justify)s 5631(the)s 5988(follo)s 6(wing)k 6973(component,)s
+8153(and)s 220 fnt2 8566 102(|0.5r)m -8(t)k
+grestore
+gsave
+1417 -15423 translate
+240 fnt1
+0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 39 45
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(3.2.)m 1871(Concatenation)s 3335(symbols)s 4161(and)s
+4587(par)s 3(a)k 2(gr)k 3(aphs)k 240 fnt5
+10249 -1583(39)m gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+0 86 0 86 240 288 60 0 13282 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+170 0 0 0 240 288 60 0 13368 LoutGr2
+0.5 pt ltabhsp
+grestore
+
+grestore
+0 169 0 60 240 288 60 0 13113 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 0 240 288 60 0 13027 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+169 0 0 0 240 288 60 170 13368 LoutGr2
+0.5 pt ltabhs
+grestore
+
+grestore
+220 fnt2 170 13116(c)m gsave
+339 13368 translate
+240 fnt1
+170 0 0 0 240 288 60 LoutGraphic
+gsave
+0.5 pt ltabhs
+grestore
+
+grestore
+gsave
+509 13368 translate
+240 fnt1 170 0 0 0 240 288 60 LoutGraphic
+gsave
+0.5 pt ltabhs
+grestore
+
+grestore
+gsave
+679 13368 translate
+240 fnt1 8217 0 0 0 240 288 60 LoutGraphic
+gsave
+0.5 pt ltabhs
+grestore
+
+grestore
+240 fnt1 679 13119(Centimetres.)m 170 0 0 0 240 288 60 8896 13368 LoutGr2
+0.5 pt ltabhsp
+grestore
+
+grestore
+0 86 0 86 240 288 60 9066 13282 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 169 0 60 240 288 60 9066 13113 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 0 240 288 60 9066 13027 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 86 240 288 60 0 12941 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 166 0 57 240 288 60 0 12775 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 0 240 288 60 0 12689 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+220 fnt2
+170 12775(i)m 240 fnt1 679 12778(Inches.)m 0 86 0 86 240 288 60 9066 12941 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 166 0 57 240 288 60 9066 12775 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 0 240 288 60 9066 12689 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 86 240 288 60 0 12603 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 211 0 102 240 288 60 0 12392 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 0 240 288 60 0 12306 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+220 fnt2 170 12437(p)m
+240 fnt1 679 12440(Points)m 1328(\()s 220 fnt2 1401 12437(72p)m
+240 fnt1 1819 12440(=)m 220 fnt2 2007 12437(1i)m 240 fnt1
+2163 12440(\).)m 0 86 0 86 240 288 60 9066 12603 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 211 0 102 240 288 60 9066 12392 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 0 240 288 60 9066 12306 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 86 240 288 60 0 12220 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 204 0 96 240 288 60 0 12016 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 0 240 288 60 0 11930 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+220 fnt2 170 12055(m)m 240 fnt1 679 12058(Ems)m
+1155(\()s 220 fnt2 1228 12055(12m)m 240 fnt1 1701 12058(=)m
+220 fnt2 1889 12055(1i)m 240 fnt1 2045 12058(\).)m 0 86 0 86 240 288 60 9066 12220 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 204 0 96 240 288 60 9066 12016 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 0 240 288 60 9066 11930 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 86 240 288 60 0 11844 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 503 0 394 240 288 60 0 11341 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 0 240 288 60 0 11255 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+220 fnt2
+170 11678(f)m 240 fnt1 679 11681(One)m 220 fnt2 1123 11678(f)m
+240 fnt1 1229 11681(equals)m 1879(the)s 2215(size)s 2631(of)s
+2890(the)s 3226(current)s 3950(font,)s 4431(as)s 4669(speci\207ed)s
+5565(by)s 5847(the)s 220 fnt2 6184 11678(@F)m 6(ont)k
+240 fnt1 6884 11681(symbol)m 7632(\(Section)s 8473(3.3\).)s 679 11393(This)m
+1155(unit)s 1587(is)s 1797(appropriate)s 2941(for)s 3279(lengths)s
+4021(that)s 4439(should)s 5136(change)s 5870(with)s 6352(the)s
+6700(font)s 7145(size.)s 0 86 0 86 240 288 60 9066 11844 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 503 0 394 240 288 60 9066 11341 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 0 240 288 60 9066 11255 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 86 240 288 60 0 11169 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 503 0 394 240 288 60 0 10666 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 0 240 288 60 0 10580 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+220 fnt2 170 11003(s)m 240 fnt1
+679 11006(One)m 220 fnt2 1125 11003(s)m 240 fnt1 1279 11006(equals)m
+1932(the)s 2271(preferred)s 3194(g)s 1(ap)k 3582(between)s
+4427(tw)s 2(o)k 4828(w)s 2(ords)k 5453(in)s
+5687(the)s 6025(current)s 6752(font,)s 7235(as)s 7476(speci\207ed)s
+8375(in)s 8608(the)s 679 10718(de\207nition)m 1653(of)s 1924(the)s
+2272(font,)s 2764(or)s 3023(by)s 3317(the)s 220 fnt2
+3665 10715(@Space)m 240 fnt1 4562 10718(symbol)m 5322(\(Section)s 6175(3.4\).)s
+0 86 0 86 240 288 60 9066 11169 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 503 0 394 240 288 60 9066 10666 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 0 240 288 60 9066 10580 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 86 240 288 60 0 10494 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 791 0 682 240 288 60 0 9703 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 0 240 288 60 0 9617 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+220 fnt2 170 10328(v)m 240 fnt1 679 10331(One)m 220 fnt2
+1149 10328(v)m 240 fnt1 1334 10331(equals)m 2011(the)s 2375(current)s
+3126(g)s 1(ap)k 3540(between)s 4410(lines)s 4927(introduced)s
+6024(during)s 6717(paragraph)s 7746(breaking,)s 8706(as)s 679 10043(speci\207ed)m
+1574(by)s 1854(the)s 220 fnt2 2188 10040(@Break)m 240 fnt1
+3030 10043(symbol)m 3777(\(Section)s 4616(3.4\).)s 5145(This)s 5607(unit)s
+6026(is)s 6222(appropriate)s 7352(for)s 7676(lengths,)s 8460(such)s
+679 9755(as)m 929(the)s 1277(spaces)s 1952(between)s 2806(paragraphs,)s
+3962(which)s 4604(should)s 5301(change)s 6035(with)s 6517(the)s
+6865(inter)s 4(-line)k 7791(g)s 1(ap.)k 0 86 0 86 240 288 60 9066 10494 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 791 0 682 240 288 60 9066 9703 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 0 240 288 60 9066 9617 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 86 240 288 60 0 9531 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 454 0 345 240 288 60 0 9077 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 0 240 288 60 0 8991 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+220 fnt2
+170 9365(w)m 240 fnt1 679 9368(One)m 220 fnt2 1167 9365(w)m
+240 fnt1 1416 9368(equals)m 2111(the)s 2493(width)s 3128(of)s
+3432(the)s 3813(follo)s 6(wing)k 4824(component,)s 6028(or)s
+6320(its)s 6629(height)s 7321(if)s 7571(the)s 7952(symbol)s
+8746(is)s 679 9080(v)m 3(ertical)k 1446(concatenation.)s 0 86 0 86 240 288 60 9066 9531 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 454 0 345 240 288 60 9066 9077 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 0 240 288 60 9066 8991 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 86 240 288 60 0 8905 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 454 0 345 240 288 60 0 8451 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 0 240 288 60 0 8365 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+220 fnt2
+170 8739(b)m 240 fnt1 679 8742(One)m 220 fnt2 1133 8739(b)m
+240 fnt1 1305 8742(equals)m 1965(the)s 2311(width)s 2912(of)s
+3181(the)s 3527(whole)s 4166(concatenation)s 5550(object,)s 6239(or)s
+6496(its)s 6770(height)s 7427(if)s 7642(the)s 7988(symbol)s
+8746(is)s 679 8454(v)m 3(ertical)k 1446(concatenation.)s 0 86 0 86 240 288 60 9066 8905 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 454 0 345 240 288 60 9066 8451 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 0 240 288 60 9066 8365 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 86 240 288 60 0 8279 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 503 0 394 240 288 60 0 7776 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 0 240 288 60 0 7690 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+220 fnt2
+170 8113(r)m 240 fnt1 679 8116(One)m 220 fnt2 1176 8113(r)m
+240 fnt1 1352 8116(equals)m 2057(one)s 220 fnt2 2502 8113(b)m
+240 fnt1 2718 8116(minus)m 3397(one)s 220 fnt2 3842 8113(w)m
+240 fnt1 3998 8116(.)m 4205(This)s 4723(unit)s 5198(is)s
+5451(used)s 5991(for)s 6371(centring,)s 7304(and)s 7751(for)s
+8132(left)s 8552(and)s 679 7828(right)m 1190(justi\207cation.)s 0 86 0 86 240 288 60 9066 8279 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 503 0 394 240 288 60 9066 7776 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 0 240 288 60 9066 7690 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 86 240 288 60 0 7604 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 215 0 106 240 288 60 0 7389 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 0 240 288 60 0 7303 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+220 fnt2
+170 7438(d)m 240 fnt1 679 7441(De)m 3(grees.)k 1623(This)s
+2099(unit)s 2531(may)s 2997(only)s 3477(be)s 3759(used)s
+4256(with)s 4738(the)s 220 fnt2 5086 7438(@Rotate)m 240 fnt1
+6007 7441(symbol.)m 0 86 0 86 240 288 60 9066 7604 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 215 0 106 240 288 60 9066 7389 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 0 240 288 60 9066 7303 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 86 240 288 60 0 7217 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 504 0 394 240 288 60 0 6713 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 0 240 288 60 0 6627 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+220 fnt2 170 7050(y)m 240 fnt1 679 7053(One)m
+220 fnt2 1129 7050(y)m 240 fnt1 1292 7053(equals)m 1949(the)s
+2292(current)s 3023(v)s 6(alue)k 3586(set)s 3906(by)s
+4195(the)s 220 fnt2 4538 7050(@YUnit)m 240 fnt1 5347 7053(symbol)m
+6102(\(Section)s 6950(3.6\).)s 7488(This)s 7959(unit)s 8386(is)s
+8590(not)s 679 6765(used)m 1176(internally)s 2145(by)s 2439(Lout;)s
+3003(it)s 3195(is)s 3405(included)s 4287(for)s 4625(the)s
+4973(con)s 9(v)k 3(enience)k 6213(of)s 6484(application)s
+7603(packages.)s 0 86 0 86 240 288 60 9066 7217 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 504 0 394 240 288 60 9066 6713 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 0 240 288 60 9066 6627 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 86 240 288 60 0 6541 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 504 0 394 240 288 60 0 6037 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 0 240 288 60 0 5951 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+170 0 0 0 240 288 60 0 5951 LoutGr2
+0.5 pt ltabhsp
+grestore
+
+grestore
+220 fnt2 170 6374(z)m gsave
+170 5951 translate
+240 fnt1 169 0 0 0 240 288 60 LoutGraphic
+gsave
+0.5 pt ltabhs
+grestore
+
+grestore
+gsave
+339 5951 translate
+240 fnt1
+170 0 0 0 240 288 60 LoutGraphic
+gsave
+0.5 pt ltabhs
+grestore
+
+grestore
+gsave
+509 5951 translate
+240 fnt1 170 0 0 0 240 288 60 LoutGraphic
+gsave
+0.5 pt ltabhs
+grestore
+
+grestore
+240 fnt1 679 6377(One)m 220 fnt2 1130 6374(z)m
+240 fnt1 1290 6377(equals)m 1948(the)s 2292(current)s 3024(v)s 6(alue)k
+3588(set)s 3909(by)s 4199(the)s 220 fnt2 4543 6374(@ZUnit)m
+240 fnt1 5341 6377(symbol)m 6097(\(Section)s 6946(3.6\).)s 7485(This)s
+7957(unit)s 8385(is)s 8590(not)s 679 6089(used)m 1176(internally)s
+2145(by)s 2439(Lout;)s 3003(it)s 3195(is)s 3405(included)s
+4287(for)s 4625(the)s 4973(con)s 9(v)k 3(enience)k
+6213(of)s 6484(application)s 7603(packages.)s 8217 0 0 0 240 288 60 679 5951 LoutGr2
+0.5 pt ltabhs
+grestore
+
+grestore
+170 0 0 0 240 288 60 8896 5951 LoutGr2
+0.5 pt ltabhsp
+grestore
+
+grestore
+0 86 0 86 240 288 60 9066 6541 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 504 0 394 240 288 60 9066 6037 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 86 0 0 240 288 60 9066 5951 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+
+[ /Dest /LOUTunits /DEST pdfmark
+200 fnt5 1938 5388(Figur)m 3(e)k
+2546(3.1.)s 200 fnt1 2938 5389(The)m 3294(thirteen)s 3948(units)s
+4377(of)s 4603(measurement)s 5713(pro)s 3(vided)k 6468(by)s
+6713(Lout.)s 240 fnt1 0 4758(will)m 426(centre)s 1065(it.)s
+480 4384(The)m 914(v)s 6(alue)k 220 fnt2 1488 4381(|0r)m -8(t)k
+240 fnt1 1871 4384(separating)m 2912(the)s 3266(\207rst)s 3703(and)s
+4113(second)s 4842(items)s 5416(in)s 5665(a)s 5837(sequence)s
+6776(of)s 7053(horizontally)s 8268(concate-)s 0 4096(nated)m 572(objects)s
+1296(is)s 1502(some)s 6(what)k 2522(special)s 3236(in)s
+3475(that)s 3889(it)s 4077(denotes)s 4855(left)s 5228(justi\207cation)s
+6409(of)s 6676(the)s 7020(object)s 7660(to)s 7895(its)s
+8167(left)s 8540(in)s 8778(the)s 0 3808(a)m 4(v)k 6(ailable)k
+902(space.)s 1590(This)s 2059(is)s 2262(identical)s 3132(with)s
+220 fnt2 3607 3805(|0ie)m 240 fnt1 4001 3808(when)m 4570(the)s
+4911(object)s 5548(to)s 5780(the)s 6121(left)s 6491(also)s
+6922(has)s 7285(the)s 7626(principal)s 8523(mark;)s 0 3520(b)m 4(ut)k
+354(when)s 922(it)s 1105(does)s 1587(not,)s 220 fnt2
+1991 3517(|0r)m -8(t)k 240 fnt1 2360 3520(will)m 2777(cause)s
+3356(the)s 3695(object)s 4331(to)s 4561(the)s 4901(left)s
+5269(to)s 5500(appear)s 6188(further)s 6889(to)s 7119(the)s
+7459(left)s 7827(than)s 8288(it)s 8471(w)s 2(ould)k
+0 3232(otherwise)m 985(ha)s 4(v)k 3(e)k 1486(done,)s
+2059(if)s 2276(space)s 2863(to)s 3102(do)s 3395(so)s
+3661(is)s 3871(a)s 4(v)k 6(ailable.)k 480 2858(A)m
+744(g)s 1(ap)k 1177(is)s 1421(optionally)s 2480(concluded)s
+3557(with)s 4073(an)s 4391(indication)s 5439(of)s 5744(unbreakability)s 15(,)k
+7252(which)s 7929(is)s 8173(a)s 8374(letter)s 220 fnt2
+8958 2855(u)m 240 fnt1 0 2570(appended)m 976(to)s 1215(the)s
+1563(g)s 1(ap.)k 2072(A)s 2303(paragraph)s 3316(will)s
+3742(ne)s 6(v)k 3(er)k 4324(be)s 4607(brok)s 2(en)k
+5327(at)s 5559(an)s 5842(unbreakable)s 7068(g)s 1(ap,)k
+7520(nor)s 7899(will)s 8325(a)s 8492(g)s 1(alle)k 3(y)k
+0 2282(be)m 293(brok)s 2(en)k 1025(across)s 1684(tw)s 2(o)k
+2106(tar)s 4(gets)k 2800(at)s 3044(such)s 3551(a)s
+3729(g)s 1(ap.)k 4249(Basser)s 4958(Lout')s 13(s)k
+5631(implementation)s 7200(is)s 7421(slightly)s 8204(defecti)s 6(v)k 3(e)k
+0 1994(in)m 242(that)s 659(it)s 849(ignores)s 1603(an)s 3(y)k
+1999(unbreakable)s 3222(indication)s 4234(in)s 4476(the)s 4822(g)s 1(ap)k
+5219(separating)s 6253(the)s 6599(\207rst)s 7029(component)s 8151(promoted)s
+0 1706(into)m 425(an)s 3(y)k 822(tar)s 4(get)k
+1421(from)s 1945(the)s 2293(second.)s 480 1332(When)m 1111(tw)s 2(o)k
+1523(objects)s 2254(are)s 2603(separated)s 3566(only)s 4048(by)s
+4345(zero)s 4811(or)s 5072(more)s 5622(white)s 6211(space)s
+
+[ /Dest /LOUT19_4637_pre_conc_33 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_conc_34 /DEST pdfmark
+6801(characters)s 7821(\(spaces,)s 8634(tabs,)s 0 1044(ne)m 6(wlines,)k
+983(and)s 1420(formfeeds\),)s 2607(Lout)s 3152(inserts)s 220 fnt2
+3859 1041(&)m 240 fnt6 4001 1046(k)m 220 fnt2 4111 1041(s)m
+240 fnt1 4307 1044(between)m 5194(the)s 5575(tw)s 2(o)k
+6018(objects,)s 6835(where)s 240 fnt6 7508 1046(k)m 240 fnt1
+7711 1044(is)m 7954(the)s 8335(number)s 0 756(of)m 291(spaces.)s
+1100(Precisely)s 15(,)k 240 fnt6 2087 758(k)m 240 fnt1
+2278 756(is)m 2509(determined)s 3662(by)s 3977(discarding)s 5047(all)s
+5360(space)s 5968(characters)s 7007(and)s 7431(tabs)s 7888(that)s
+8327(precede)s 0 468(ne)m 6(wlines)k 903(\(these)s 1537(are)s
+1892(in)s 9(visible)k 2771(so)s 3045(are)s 3400(better)s
+4012(ignored\),)s 4937(then)s 5414(counting)s 6313(1)s 6477(for)s
+6823(each)s 7326(ne)s 6(wline,)k 8193(formfeed)s 0 180(or)m
+259(space,)s 897(and)s 1301(8)s 1468(for)s 1806(each)s
+2301(tab)s 2646(character)s 13(.)k 3671(The)s 4099(g)s 1(ap)k
+4497(will)s 4923(be)s 5205(unbreakable)s 6430(if)s 240 fnt6
+6647 182(k)m 240 fnt1 6817 180(is)m 7027(zero.)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1
+0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 40 46
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(40)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s
+8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+6166 7484 0 7484 240 288 60 1450 5884 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+0 6710(Edge-to-edge)m
+220 fnt2 1786 6707(|)m 240 fnt6 1843 6712(l)m 220 fnt2
+1929 6707(e)m 240 fnt1 0 5558(Hyphenation)m 220 fnt2 1786 5555(|)m
+240 fnt6 1843 5560(l)m 220 fnt2 1929 5555(h)m 240 fnt1
+0 4406(Ov)m 3(erstrik)k 2(e)k 220 fnt2 1786 4403(|)m
+240 fnt6 1843 4408(l)m 220 fnt2 1929 4403(o)m 240 fnt1
+0 3254(Mark-to-mark)m 220 fnt2 1786 3251(|)m 240 fnt6 1843 3256(l)m
+220 fnt2 1929 3251(x)m 240 fnt1 0 2102(K)m 6(erning)k
+220 fnt2 1786 2099(|)m 240 fnt6 1843 2104(l)m 220 fnt2
+1929 2099(k)m 240 fnt1 0 950(T)m 19(ab)k 4(ulation)k
+220 fnt2 1786 947(|)m 240 fnt6 1843 952(l)m 220 fnt2
+1929 947(t)m gsave
+2764 0 translate
+240 fnt1 3402 7484 0 7484 240 288 60 LoutGraphic
+gsave
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+gsave
+567 6748 translate
+180 fnt1 680 340 0 340 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto
+xsize ysize lineto 0 ysize lineto closepath
+gsave 0.9 setgray fill grestore stroke
+grestore
+
+grestore
+gsave
+680 6634 translate
+180 fnt1 0 567 0 567 180 288 45 LoutGraphic
+gsave
+0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke
+grestore
+
+grestore
+gsave
+2268 6748 translate
+180 fnt1
+680 340 0 340 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto
+xsize ysize lineto 0 ysize lineto closepath
+gsave 0.9 setgray fill grestore stroke
+grestore
+
+grestore
+gsave
+2551 6634 translate
+180 fnt1 0 567 0 567 180 288 45 LoutGraphic
+gsave
+0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke
+grestore
+
+grestore
+gsave
+2267 6658 translate
+180.0000 rotate
+gsave
+0 0 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+0 0 translate
+180 fnt1 1020 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+0 0 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+
+grestore
+gsave
+1247 6658 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1
+68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+1247 6658 translate
+180 fnt1 1020 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+1247 6658 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+180 fnt6 1732 6455(l)m gsave
+567 5596 translate
+180 fnt1
+680 340 0 340 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto
+xsize ysize lineto 0 ysize lineto closepath
+gsave 0.9 setgray fill grestore stroke
+grestore
+
+grestore
+gsave
+680 5482 translate
+180 fnt1 0 567 0 567 180 288 45 LoutGraphic
+gsave
+0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke
+grestore
+
+grestore
+gsave
+2268 5596 translate
+180 fnt1 680 340 0 340 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto
+xsize ysize lineto 0 ysize lineto closepath
+gsave 0.9 setgray fill grestore stroke
+grestore
+
+grestore
+gsave
+2551 5482 translate
+180 fnt1 0 567 0 567 180 288 45 LoutGraphic
+gsave
+0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke
+grestore
+
+grestore
+gsave
+2267 5506 translate
+180.0000 rotate
+gsave
+0 0 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+0 0 translate
+180 fnt1
+1020 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+0 0 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+
+grestore
+gsave
+1247 5506 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+1247 5506 translate
+180 fnt1 1020 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+1247 5506 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+1732 5303(l)m
+gsave
+567 4444 translate
+180 fnt1 680 340 0 340 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto
+xsize ysize lineto 0 ysize lineto closepath
+gsave 0.9 setgray fill grestore stroke
+grestore
+
+grestore
+gsave
+680 4330 translate
+180 fnt1 0 567 0 567 180 288 45 LoutGraphic
+gsave
+0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke
+grestore
+
+grestore
+gsave
+2268 4444 translate
+180 fnt1 680 340 0 340 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto
+xsize ysize lineto 0 ysize lineto closepath
+gsave 0.9 setgray fill grestore stroke
+grestore
+
+grestore
+gsave
+2551 4330 translate
+180 fnt1 0 567 0 567 180 288 45 LoutGraphic
+gsave
+0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke
+grestore
+
+grestore
+gsave
+2551 4297 translate
+180.0000 rotate
+gsave
+0 0 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1
+68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+0 0 translate
+180 fnt1 1871 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+0 0 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+
+grestore
+gsave
+680 4297 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+680 4297 translate
+180 fnt1 1871 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+680 4297 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1
+68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+1590 4095(l)m gsave
+567 3242 translate
+180 fnt1 680 340 0 340 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto
+xsize ysize lineto 0 ysize lineto closepath
+gsave 0.9 setgray fill grestore stroke
+grestore
+
+grestore
+gsave
+680 3128 translate
+180 fnt1 0 567 0 567 180 288 45 LoutGraphic
+gsave
+0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke
+grestore
+
+grestore
+gsave
+2268 3242 translate
+180 fnt1 680 340 0 340 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto
+xsize ysize lineto 0 ysize lineto closepath
+gsave 0.9 setgray fill grestore stroke
+grestore
+
+grestore
+gsave
+2551 3128 translate
+180 fnt1
+0 567 0 567 180 288 45 LoutGraphic
+gsave
+0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke
+grestore
+
+grestore
+gsave
+2551 3095 translate
+180.0000 rotate
+gsave
+0 0 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+0 0 translate
+180 fnt1 1871 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+0 0 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+
+grestore
+gsave
+680 3095 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+680 3095 translate
+180 fnt1
+1871 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+680 3095 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+180 fnt1 975 2892(max\()m 180 fnt6 1383 2893(l,)m
+1503(a+b+l/10)s 180 fnt1 2205 2892(\))m gsave
+1247 3719 translate
+180.0000 rotate
+gsave
+0 0 translate
+30.0000 rotate
+68 -2 0 -1 180 288 45 0 1 LoutGr2
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+567 0 0 0 180 288 45 0 0 LoutGr2
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+0 0 translate
+-30.0000 rotate
+68 -2 0 -1 180 288 45 0 1 LoutGr2
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+
+grestore
+gsave
+680 3719 translate
+30.0000 rotate
+68 -2 0 -1 180 288 45 0 1 LoutGr2
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+567 0 0 0 180 288 45 680 3719 LoutGr2
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+680 3719 translate
+-30.0000 rotate
+68 -2 0 -1 180 288 45 0 1 LoutGr2
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+180 fnt6 920 3787(a)m
+gsave
+2551 3719 translate
+180.0000 rotate
+gsave
+0 0 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+0 0 translate
+180 fnt1 283 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+0 0 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+
+grestore
+gsave
+2268 3719 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+2268 3719 translate
+180 fnt1
+283 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+2268 3719 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+2366 3743(b)m gsave
+567 2090 translate
+180 fnt1 680 340 0 340 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto
+xsize ysize lineto 0 ysize lineto closepath
+gsave 0.9 setgray fill grestore stroke
+grestore
+
+grestore
+gsave
+680 1976 translate
+180 fnt1 0 567 0 567 180 288 45 LoutGraphic
+gsave
+0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke
+grestore
+
+grestore
+gsave
+2268 2090 translate
+180 fnt1
+680 340 0 340 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto
+xsize ysize lineto 0 ysize lineto closepath
+gsave 0.9 setgray fill grestore stroke
+grestore
+
+grestore
+gsave
+2551 1976 translate
+180 fnt1 0 567 0 567 180 288 45 LoutGraphic
+gsave
+0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke
+grestore
+
+grestore
+gsave
+2551 1943 translate
+180.0000 rotate
+gsave
+0 0 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+0 0 translate
+180 fnt1 1871 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+0 0 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+
+grestore
+gsave
+680 1943 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1
+68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+680 1943 translate
+180 fnt1 1871 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+680 1943 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+180 fnt1 1203 1740(max\()m 180 fnt6
+1611 1741(l,)m 1731(a,)s 1891(b)s 180 fnt1 1977 1740(\))m
+gsave
+1247 2567 translate
+180.0000 rotate
+gsave
+0 0 translate
+30.0000 rotate
+68 -2 0 -1 180 288 45 0 1 LoutGr2
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+567 0 0 0 180 288 45 0 0 LoutGr2
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+0 0 translate
+-30.0000 rotate
+68 -2 0 -1 180 288 45 0 1 LoutGr2
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+
+grestore
+gsave
+680 2567 translate
+30.0000 rotate
+68 -2 0 -1 180 288 45 0 1 LoutGr2
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+567 0 0 0 180 288 45 680 2567 LoutGr2
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+680 2567 translate
+-30.0000 rotate
+68 -2 0 -1 180 288 45 0 1 LoutGr2
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+180 fnt6 920 2635(a)m gsave
+2551 2567 translate
+180.0000 rotate
+gsave
+0 0 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+0 0 translate
+180 fnt1 283 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+0 0 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1
+68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+
+grestore
+gsave
+2268 2567 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+2268 2567 translate
+180 fnt1 283 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+2268 2567 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+2366 2591(b)m gsave
+567 938 translate
+180 fnt1
+680 340 0 340 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto
+xsize ysize lineto 0 ysize lineto closepath
+gsave 0.9 setgray fill grestore stroke
+grestore
+
+grestore
+gsave
+680 824 translate
+180 fnt1 0 567 0 567 180 288 45 LoutGraphic
+gsave
+0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke
+grestore
+
+grestore
+gsave
+2268 938 translate
+180 fnt1 680 340 0 340 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto
+xsize ysize lineto 0 ysize lineto closepath
+gsave 0.9 setgray fill grestore stroke
+grestore
+
+grestore
+gsave
+2551 824 translate
+180 fnt1 0 567 0 567 180 288 45 LoutGraphic
+gsave
+0 0 moveto 0 ysize lineto [ 3 pt ] 0 setdash stroke
+grestore
+
+grestore
+gsave
+2268 734 translate
+180.0000 rotate
+gsave
+0 0 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+0 0 translate
+180 fnt1
+2268 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+0 0 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+
+grestore
+gsave
+0 734 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+0 734 translate
+180 fnt1 2268 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+0 734 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+1587 532(l)m
+gsave
+3402 234 translate
+180.0000 rotate
+gsave
+0 0 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+0 0 translate
+180 fnt1 3402 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+0 0 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+
+grestore
+gsave
+0 234 translate
+30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+gsave
+0 234 translate
+180 fnt1
+3402 0 0 0 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+gsave
+0 234 translate
+-30.0000 rotate
+gsave
+0 1 translate
+180 fnt1 68 -2 0 -1 180 288 45 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+
+grestore
+1189 23(curr)m 6(ent)k 1759(bound)s
+grestore
+end end restore
+grestore
+
+[ /Dest /LOUTgapmodes /DEST pdfmark
+200 fnt5
+2562 5321(Figur)m 3(e)k 3170(3.2.)s 200 fnt1 3562 5322(The)m
+3918(six)s 4196(g)s 1(ap)k 4527(modes)s 5089(pro)s 3(vided)k
+5844(by)s 6089(Lout.)s 240 fnt1 480 4689(A)m 724(sequence)s
+1672(of)s 1958(tw)s 2(o)k 2383(or)s 2657(more)s
+3219(objects)s 3962(separated)s 4936(by)s 220 fnt2 5245 4686(&)m
+240 fnt1 5462 4689(symbols)m 6326(is)s 6551(a)s
+[ /Dest /LOUT19_4637_pre_conc_35 /DEST pdfmark
+240 fnt6
+6732 4691(par)m 3(a)k 2(gr)k 3(aph)k 240 fnt1
+7745 4689(.)m 7924(Lout)s 8451(breaks)s 0 4401(paragraphs)m 1100(into)s
+1526(lines)s 2029(automatically)s 3384(as)s 3635(required,)s 4539(by)s
+4834(con)s 9(v)k 3(erting)k 5898(some)s 6460(of)s
+6732(the)s 220 fnt2 7081 4398(&)m 240 fnt1 7284 4401(symbols)m
+8134(into)s 220 fnt2 8560 4398(//1vx)m 240 fnt1 9022 4401(.)m
+0 4113(Unbreakable)m 1279(g)s 1(aps)k 1769(are)s 2117(not)s
+2485(eligible)s 3258(for)s 3597(this)s 3995(con)s 9(v)k 3(ersion.)k
+5198(`Optimal')s 6173(line)s 6588(breaks)s 7265(are)s 7613(chosen,)s
+8386(using)s 8960(a)s 0 3825(method)m 776(adapted)s 1578(from)s
+2102(T)s 2198 3777(E)m 2306 3825(X)m 2535([)s
+[ /Rect [2606 3822 2719 3989] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTknuth1984tex /ANN pdfmark
+2606(6)s
+2719(].)s
+[ /Dest /LOUT19_4637_pre_conc_36 /DEST pdfmark
+480 3451(If)m 735(an)s 220 fnt2 1043 3448(&)m
+240 fnt1 1271 3451(symbol)m 2056(whose)s 2750(g)s 1(ap)k
+3173(has)s 3568(h)s 1(yphenation)k 4834(mode)s
+[ /Dest /LOUT19_4637_pre_conc_37 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_conc_38 /DEST pdfmark
+5447(is)s
+5683(chosen)s 6430(for)s 6793(replacement)s 8046(by)s 220 fnt2
+8365 3448(//1vx)m 240 fnt1 8827 3451(,)m 8960(a)s 0 3163(h)m 1(yphen)k
+755(will)s 1174(be)s 1448(appended)s 2417(to)s 2649(the)s
+2989(preceding)s 3978(object,)s 4661(unless)s 5303(that)s 5714(object)s
+6350(is)s 6553(a)s 6712(w)s 2(ord)k 7252(which)s
+7887(already)s 8636(ends)s 0 2875(with)m 482(a)s 648(h)s 1(yphen)k
+1410(or)s 1669(slash.)s 2311(F)s 3(or)k 2700(e)s 3(xample,)k
+220 fnt2 480 2378(Long)m 1017(w)s 2(ords)k 1654(ma)s 6(y)k
+2122(be)s 2419(h)s 6(yph &0ih enat &0ih ed.)k 240 fnt1 0 1879(could)m
+590(ha)s 4(v)k 3(e)k 1091(the)s 1439(follo)s 6(wing)k
+2416(result,)s 3053(depending)s 4104(where)s 4744(the)s 5092(line)s
+5506(breaks)s 6181(f)s 2(all:)k 480 1376(Long)m 1038(w)s 2(ords)k
+1670(may)s 2135(be)s 2415(h)s 1(yphenat-)k 480 1088(ed.)m
+0 635(Basser)m 727(Lout)s 1269(inserts)s 1973(h)s 1(yphenation)k
+3243(g)s 1(aps)k 3762(automatically)s 5147(as)s 5427(required,)s
+6360(ag)s 1(ain)k 6964(follo)s 6(wing)k 7971(the)s
+8350(method)s 0 347(of)m 304(T)s 400 299(E)m 508 347(X)m
+677(,)s 817(which)s 1493(approximates)s 2865(the)s 3247(h)s 1(yphenations)k
+4607(in)s 4883(W)s 19(ebster')k 13(s)k 5904(dictionary)s 15(.)k
+7055(Ho)s 6(we)k 6(v)k 3(er)k 8011(it)s
+8236(does)s 8760(not)s 0 59(insert)m 607(h)s 1(yphenation)k
+1864(g)s 1(aps)k 2370(in)s 2630(w)s 2(ords)k
+3281(on)s 3595(either)s 4215(side)s 4673(of)s 4961(a)s
+5144(concatenation)s 6546(symbol)s 7323(which)s 7982(already)s 8756(has)s
+
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 41 47
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+%%+ font Times-BoldItalic
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+%%IncludeResource: font Times-BoldItalic
+/Times-BoldItalicfnt7 vec2 /Times-BoldItalic LoutRecode
+/fnt7 { /Times-BoldItalicfnt7 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(3.2.)m 1871(Concatenation)s 3335(symbols)s 4161(and)s
+4587(par)s 3(a)k 2(gr)k 3(aphs)k 240 fnt5
+10256 -1583(41)m gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+0 13205(h)m 1(yphenation)k 1248(mode.)s
+1952(T)s 19(o)k 2260(pre)s 6(v)k 3(ent)k
+3036(the)s 3392(h)s 1(yphenation)k 4640(of)s 4919(a)s
+5093(single)s 5728(w)s 2(ord,)k 6333(enclose)s 7114(it)s
+7314(in)s 7565(quotes.)s 8363(Further)s 0 12917(control)m 769(o)s 3(v)k 3(er)k
+1286(paragraph)s 2337(breaking)s 3265(and)s 3706(h)s 1(yphenation)k
+4984(is)s 5232(pro)s 3(vided)k 6176(by)s 6507(the)s
+220 fnt2 6893 12914(@Break)m 240 fnt1 7787 12917(and)m 220 fnt2
+8229 12914(@Space)m 240 fnt1 0 12629(symbols)m 849(\(Sections)s 1789(3.4)s
+2143(and)s 2547(3.5\).)s 240 fnt5 0 11836(3.3.)m 471(@F)s 6(ont,)k
+1280(@Char)s 22(,)k 2127(and)s 2568(@F)s 6(ontDef)k
+
+[ /Dest /LOUTfont /DEST pdfmark
+240 fnt1 480 11365(A)m 240 fnt6 728 11367(font)m
+[ /Dest /LOUT19_4637_pre_font_1 /DEST pdfmark
+240 fnt1
+1182 11365(is)m 1410(a)s 1594(collection)s 2611(of)s 2900(characters)s
+3936(which)s 4596(may)s 5080(be)s 5380(printed.)s 6239(Man)s 3(y)k
+6867(fonts)s 7414(come)s 8006(in)s 240 fnt6 8268 11367(families)m
+240 fnt1 9019 11365(,)m
+[ /Dest /LOUT19_4637_pre_font_2 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_font_3 /DEST pdfmark
+0 11077(which)m 634(are)s 973(groups)s
+1667(of)s 1930(fonts)s 2450(that)s 2860(ha)s 4(v)k 3(e)k
+3352(been)s 3853(designed)s 4754(to)s 4984(go)s 5269(together)s 13(.)k
+6194(F)s 3(or)k 6575(e)s 3(xample,)k 7480(the)s
+7820(T)s 8(imes)k 8451(f)s 2(amily)k 0 10789(includes)m
+848(the)s 1196(follo)s 6(wing)k 2173(fonts:)s 480 10286(T)m 8(imes)k
+1120(Base)s 240 fnt6 480 10000(T)m 13(imes)k 1093(Slope)s
+240 fnt5 480 9709(T)m 4(imes)k 1154(Bold)s 240 fnt7
+480 9421(T)m 8(imes)k 1116(BoldSlope)s 240 fnt1 0 8919(Thus,)m
+586(each)s 1080(font)s 1524(has)s 1893(tw)s 2(o)k
+2303(names:)s 3019(its)s 240 fnt6 3294 8921(family)m 3946(name)s
+240 fnt1 4518 8919(\(T)m 8(imes,)k 5292(Helv)s 3(etica,)k
+6310(etc.\))s 6775(and)s 7179(its)s 240 fnt6 7454 8921(face)m
+7904(name)s 240 fnt1 8475 8919(\(Base,)m 0 8631(Slope,)m 682(etc.\).)s
+1294(T)s 8(imes)k 1964(Base)s 2516(is)s 2756(more)s
+3334(commonly)s 4443(called)s 5101(T)s 8(imes)k 5772(Roman,)s
+6601(and)s 7036(T)s 8(imes)k 7706(Slope)s 8338(is)s
+8579(more)s 0 8343(commonly)m 1085(called)s 1720(T)s 8(imes)k
+2367(Italic.)s 3027(Lout)s 3547(a)s 4(v)k 4(oids)k
+4222(these)s 4776(names)s 5445(in)s 5695(f)s 2(a)k 4(v)k 4(our)k
+6377(of)s 6655(generic)s 7418(names)s 8087(which)s 8737(can)s
+0 8055(be)m 282(applied)s 1044(to)s 1283(man)s 3(y)k
+1866(font)s 2311(f)s 2(amilies.)k 480 7681(Lig)m 1(atures,)k
+
+[ /Dest /LOUT19_4637_pre_font_4 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_font_5 /DEST pdfmark
+1488(such)s 1984(as)s 2234(\210)s 2420(for)s 2758(f)s
+2849(l)s 2970(and)s 3375(\207)s 3560(for)s 3898(f)s
+3989(i,)s 4163(are)s 4510(considered)s 5604(by)s 5899(Basser)s
+6596(Lout)s 7108(to)s 7348(be)s 7630(an)s 7913(inte)s 3(gral)k
+8695(part)s 0 7393(of)m 257(the)s 591(font:)s 1128(if)s
+1331(the)s 1665(font)s 2096(de\207nition)s 3056(\(see)s 3482(belo)s 6(w\))k
+4175(mentions)s 5089(them,)s 5660(the)s 3(y)k 6109(will)s
+6521(be)s 6789(used.)s 7378(Similarly)s 15(,)k 8344(k)s 2(erning)k
+0 7105(\(\207ne)m 510(adjustment)s 1636(of)s 1924(the)s 2289(space)s
+2893(between)s 3764(adjacent)s 4637(characters)s 5672(to)s 5928(impro)s 3(v)k 3(e)k
+6792(the)s 7157(appearance\))s 8377(is)s 8604(done)s 0 6817(whene)m 6(v)k 3(er)k
+988(indicated)s 1929(in)s 2179(the)s 2535(font)s 2987(de\207nition.)s
+4075(Enclosing)s 5092(one)s 5502(of)s 5780(the)s 6135(letters)s
+6775(in)s 220 fnt2 7026 6814(@OneCol)m 240 fnt1 8045 6817(is)m
+8262(one)s 8672(sure)s 0 6529(w)m 2(ay)k 451(to)s
+690(disable)s 1423(a)s 1589(lig)s 1(ature)k 2373(or)s
+2632(k)s 2(ern.)k 3159(Y)s 26(ou)k 3601(can)s
+3990(also)s 4428(turn)s 4870(of)s 6(f)k 5214(lig)s 1(atures)k
+6086(using)s 220 fnt2 480 6028(nolig @F)m 6(ont { ...)k 13( })k
+240 fnt1 0 5529(and)m 404(turn)s 846(them)s 1384(on)s
+1681(with)s 220 fnt2 480 5077(lig @F)m 6(ont { ...)k 13( })k
+240 fnt1 0 4578(Since)m 587(the)s 3(y)k 1050(are)s
+1397(on)s 1694(initially)s 2490(this)s 2886(second)s 3609(option)s
+4278(is)s 4488(rarely)s 5098(needed.)s 480 4204(More)m 1046(generally)s 15(,)k
+2018(the)s 220 fnt2 2357 4201(@F)m 6(ont)k 240 fnt1
+3061 4204(symbol)m
+[ /Dest /LOUT19_4637_pre_font_6 /DEST pdfmark
+3812(returns)s 4517(its)s 4784(right)s 5287(parameter)s
+6292(in)s 6526(a)s 6683(font)s 7120(and)s 7515(size)s
+7933(speci\207ed)s 8832(by)s 0 3916(its)m 276(left:)s 220 fnt2
+480 3458({ )m 11(Times Base 12p } @F)k 6(ont)k 240 fnt6 3155 3463(object)m
+240 fnt1 0 2962(The)m 431(f)s 2(amily)k 1110(and)s
+1517(f)s 2(ace)k 1972(names)s 2638(must)s 3166(ha)s 4(v)k 3(e)k
+3671(appeared)s 4596(together)s 5442(in)s 5689(a)s 220 fnt2
+5858 2959(@F)m 6(ontDef)k 240 fnt1 6916 2962(\(see)m 7360(belo)s 6(w\);)k
+8133(the)s 8485(size)s 8916(is)s 0 2674(arbitrary)m 879(and)s
+1287(may)s 1757(be)s 2043(gi)s 6(v)k 3(en)k
+2627(in)s 2874(an)s 3(y)k 3275(one)s 3681(of)s
+3956(the)s 220 fnt2 4308 2671(c)m 240 fnt1 4413 2674(,)m
+220 fnt2 4525 2671(i)m 240 fnt1 4559 2674(,)m 220 fnt2
+4670 2671(p)m 240 fnt1 4784 2674(,)m 220 fnt2 4895 2671(m)m
+240 fnt1 5064 2674(,)m 220 fnt2 5175 2671(f)m 240 fnt1
+5233 2674(,)m 220 fnt2 5344 2671(s)m 240 fnt1 5447 2674(,)m
+5558(and)s 220 fnt2 5966 2671(v)m 240 fnt1 6139 2674(units)m
+6659(of)s 6934(measurement)s 8273(\(Section)s 0 2386(3.2\),)m 479(although)s
+220 fnt2 1367 2383(10p)m 240 fnt1 1777 2386(and)m 220 fnt2
+2174 2383(12p)m 240 fnt1 2584 2386(are)m 2924(the)s 3264(most)s
+3782(common)s 4669(sizes)s 5177(for)s 5507(te)s 3(xt.)k
+6019(There)s 6624(may)s 7083(be)s 7357(empty)s 8002(objects)s
+8722(and)s 220 fnt2 0 2095(@Null)m 240 fnt1 645 2098(objects)m
+1373(in)s 1616(the)s 1964(left)s 2341(parameter)s 3355(of)s
+220 fnt2 3626 2095(@F)m 6(ont)k 240 fnt1 4278 2098(;)m
+4390(these)s 4937(are)s 5284(ignored.)s 480 1724(When)m 1114(a)s
+220 fnt2 1286 1721(@F)m 6(ont)k 240 fnt1 2004 1724(symbol)m
+2769(is)s 2985(nested)s 3660(inside)s 4293(the)s 4646(right)s
+5163(parameter)s 6183(of)s 6459(another)s 220 fnt2 7242 1721(@F)m 6(ont)k
+240 fnt1 7960 1724(symbol,)m 8778(the)s 0 1436(inner)m 555(one)s
+961(determines)s 2065(the)s 2417(font)s 2867(of)s 3142(its)s
+3423(o)s 6(wn)k 3891(right)s 4406(parameter)s 13(.)k
+5516(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
+6480(it)s 6677(may)s 7147(be)s 7434(abbre)s 6(viated)k
+8605(so)s 8876(as)s 0 1148(to)m 239(inherit)s 922(part)s
+1353(of)s 1624(the)s 1972(outer)s 2523(symbol:)s 220 fnt2
+480 647({ )m 11(Times Base 12p } @F)k 6(ont)k 480 359({ hello)m 8(, Slope @F)k 6(ont hello)k 8(, 15p @F)k 6(ont hello })k
+
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 42 48
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(42)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s
+8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+0 13205(has)m
+370(result)s 480 12724(hello,)m 240 fnt6 1065 12726(hello,)m 300 fnt1
+1636 12711(hello)m 240 fnt1 0 12240(The)m 457(\207rst)s 918(inner)s
+220 fnt2 1498 12237(@F)m 6(ont)k 240 fnt1 2240 12240(inherits)m
+3037(the)s 3414(outer)s 3995(f)s 2(amily)k 4699(and)s
+5133(size,)s 5641(changing)s 6601(only)s 7111(the)s 7488(f)s 2(ace;)k
+8025(the)s 8403(second)s 0 11952(inherits)m 754(the)s 1089(outer)s
+1627(f)s 2(amily)k 2289(and)s 2680(f)s 2(ace.)k
+3225(When)s 3841(a)s 3994(f)s 2(amily)k 4656(name)s
+5217(is)s 5413(gi)s 6(v)k 3(en,)k 6030(it)s
+6209(must)s 6721(be)s 6990(follo)s 6(wed)k 7878(immediately)s
+0 11664(by)m 294(a)s 460(f)s 2(ace)k 911(name.)s
+1593(A)s 1823(size)s 2250(change)s 2984(may)s 3450(appear)s
+4147(\207rst)s 4578(or)s 4837(last.)s 480 11290(Sizes)m 1035(of)s
+1307(the)s 1656(form)s 2180(+)s 240 fnt6 2308 11292(length)m
+240 fnt1 2962 11290(and)m 3367(\211)s 240 fnt6 3487 11292(length)m
+240 fnt1 4140 11290(may)m 4607(also)s 5046(be)s 5328(used,)s
+5875(meaning)s 6753(that)s 7171(the)s 7520(font)s 7966(size)s
+8393(is)s 8604(to)s 8844(be)s 240 fnt6 0 11004(length)m
+240 fnt1 649 11002(lar)m 4(ger)k 1257(or)s 1512(smaller)s
+2269(than)s 2734(the)s 3078(inherited)s 3981(v)s 6(alue.)k
+4652(F)s 3(or)k 5037(e)s 3(xample,)k 5947(\211)s
+220 fnt2 6067 10999(2p)m 240 fnt1 6359 11002(is)m 6564(often)s
+7108(used)s 7601(for)s 7934(superscripts)s 0 10714(and)m 407(subscripts.)s
+1530(These)s 2161(forms)s 2772(are)s 3123(highly)s 3792(recommended,)s
+5257(since)s 5808(the)s 3(y)k 6274(don')s 4(t)k
+6839(need)s 7352(to)s 7594(be)s 7880(changed)s 8739(if)s
+8960(a)s 0 10426(decision)m 854(is)s 1064(made)s 1638(to)s
+1877(alter)s 2360(the)s 2708(font)s 3153(size)s 3580(of)s
+3851(the)s 4199(document)s 5203(as)s 5453(a)s 5619(whole.)s
+480 10052(The)m 220 fnt2 908 10049(@F)m 6(ont)k 240 fnt1
+1620 10052(symbol)m 2380(also)s 2818(switches)s 3692(to)s 3931(and)s
+4335(from)s 4859(small)s 5431(capitals:)s
+[ /Dest /LOUT19_4637_pre_font_7 /DEST pdfmark
+220 fnt2 480 9551(smallcaps @F)m 6(ont ...)k
+480 9263(nosmallcaps @F)m 6(ont ...)k 240 fnt1 0 8767(These)m 639(may)s
+1118(be)s 1412(nested,)s 2143(and)s 2559(the)s 3(y)k
+3035(cooperate)s 4033(with)s 4527(other)s 5091(font)s 5548(changes.)s
+6496(The)s 6936(precise)s 7681(ef)s 6(fect)k 8290(depends)s
+0 8479(on)m 293(the)s 637(font)s 1078(\(see)s 1514(belo)s 6(w\).)k
+2331(There)s 2940(is)s 3146(a)s 3308(def)s 2(ault)k
+4024(v)s 6(alue)k 4588(\()s 220 fnt2 4661 8476(nosmallcaps)m
+240 fnt1 5873 8479(\),)m 6055(so)s 6317(it)s 6504(is)s
+6710(not)s 7072(necessary)s 8051(to)s 8285(mention)s 0 8191(this)m
+396(attrib)s 4(ute)k 1243(when)s 1819(gi)s 6(ving)k
+2478(an)s 2761(initial)s 3372(font.)s 480 7817(By)m 817(def)s 2(ault,)k
+1589(the)s 1941(size)s 2372(of)s 2647(the)s 2998(small)s
+3574(capitals)s 4358(is)s 4572(0.7)s 4924(times)s 5496(the)s
+5847(size)s 6278(of)s 6553(full-size)s 7394(capitals.)s 8291(Y)s 26(ou)k
+8737(can)s 0 7529(change)m 734(this)s 1130(ratio,)s 1674(for)s
+2012(e)s 3(xample)k 2875(to)s 3114(0.8,)s 3521(using)s
+220 fnt2 480 7028({ setsmallcaps 0.8 } @F)m 6(ont ...)k 240 fnt1 0 6532(This)m
+499(does)s 1013(not)s 1402(itself)s 1974(cause)s 2584(a)s
+2774(change)s 3532(to)s 3794(small)s 4390(capitals,)s 5249(b)s 4(ut)k
+5635(where)s 6(v)k 3(er)k 6599(the)s 3(y)k
+7085(are)s 7456(used)s 7976(in)s 8243(the)s 8615(right)s
+0 6244(parameter)m 1014(of)s 220 fnt2 1285 6241(@F)m 6(ont)k
+240 fnt1 1997 6244(the)m 3(y)k 2460(will)s 2886(ha)s 4(v)k 3(e)k
+3387(size)s 3814(0.8)s 4161(times)s 4729(the)s 5077(size)s
+5504(that)s 5922(ordinary)s 6786(capitals)s 7566(w)s 2(ould)k
+8221(ha)s 4(v)k 3(e)k 8722(had)s 0 5956(at)m
+232(that)s 649(point.)s 1304(Note)s 1824(that)s 2241(the)s
+2588(number)s 3379(follo)s 6(wing)k 220 fnt2 4355 5953(setsmallcaps)m
+240 fnt1 5675 5956(is)m 5884(a)s 6049(ratio,)s 6592(not)s
+6958(a)s 7123(length,)s 7827(so)s 8092(there)s 8624(is)s
+8833(no)s 0 5668(unit)m 432(of)s 703(measurement.)s 480 5294(The)m
+220 fnt2 915 5291(@F)m 6(ont)k 240 fnt1 1634 5294(symbol)m
+2401(also)s 2847(controls)s 3675(a)s 3848(feature)s 4574(added)s
+5211(in)s 5461(V)s 26(ersion)k 6257(3.25)s 6730(which)s
+7379(determines)s 8486(where)s 0 5006(the)m 335(ro)s 6(w)k
+742(mark)s 1281(is)s 1478(placed)s 2147(in)s 2376(a)s
+2529(w)s 2(ord.)k 3170(Usually)s 15(,)k 3993(as)s
+4230(described)s 5191(else)s 6(where)k 6182(in)s 6412(this)s
+6795(document,)s 7833(the)s 8168(ro)s 6(w)k 8574(mark)s
+0 4718(passes)m 666(through)s 1472(the)s 1825(w)s 2(ord)k
+2377(at)s 2613(a)s 2784(height)s 3446(of)s 3721(half)s
+4169(the)s 4521(height)s 5184(of)s 5459(the)s 5811(letter)s
+6365(`x')s 6680(abo)s 3(v)k 3(e)k 7306(the)s
+7659(baseline)s 8502(of)s 8778(the)s 0 4430(w)m 2(ord.)k
+654(Ho)s 6(we)k 6(v)k 3(er)k 1576(this)s
+1972(can)s 2361(be)s 2643(changed)s 3499(so)s 3765(that)s
+4183(it)s 4375(passes)s 5037(through)s 5839(the)s 6187(baseline,)s
+7077(or)s 7336(not,)s 7749(lik)s 2(e)k 8161(this:)s
+220 fnt2 480 3929(baselinemar)m -3(k @F)k 6(ont ...)k 480 3641(xheight2mar)m -3(k @F)k 6(ont ...)k
+240 fnt1 0 3142(The)m 415(def)s 2(ault)k 1122(v)s 6(alue)k
+1676(is)s 220 fnt2 1872 3139(xheight2mar)m -3(k)k 240 fnt1
+3192 3142(;)m 3290(this)s 3672(w)s 2(as)k 4079(ho)s 6(w)k
+4526(Lout)s 5024(did)s 5374(it)s 5552(before)s 6204(this)s
+6586(option)s 7241(w)s 2(as)k 7648(added,)s 8313(because)s
+0 2854(it)m 226(mak)s 2(es)k 920(equation)s 1835(formatting)s
+2930(easy)s 15(.)k 3538(The)s 4000(other)s 4586(v)s 6(alue,)k
+220 fnt2 5239 2851(baselinemar)m -3(k)k 240 fnt1 6546 2854(,)m
+6687(is)s 6931(useful)s 7604(when)s 8214(w)s 2(ords)k
+8883(in)s 0 2566(dif)m 6(ferent)k 875(font)s 1320(sizes)s
+1835(appear)s 2532(side)s 2973(by)s 3267(side)s 3708(on)s
+4005(a)s 4171(line.)s 480 2192(Finally)m 15(,)k 1304(a)s
+1525(feature)s 2298(added)s 2983(in)s 3281(V)s 26(ersion)k
+4124(3.33)s 4643(requests)s 5532(that)s 6005(the)s 6408(height)s
+7121(and)s 7580(depth)s 8224(of)s 8550(e)s 6(v)k 3(ery)k
+0 1904(character)m 936(be)s 1220(increased)s 2182(to)s 2423(the)s
+2773(`bounding)s 3813(box')s 4287(size)s 4716(of)s 4989(the)s
+5339(font)s 5786(\211)s 5968(that)s 6388(is,)s 6656(to)s
+6897(the)s 7247(height)s 7907(of)s 8180(the)s 8531(font')s 13(s)k
+0 1616(highest)m 756(character)s 1696(and)s 2105(the)s 2459(depth)s
+3053(of)s 3330(the)s 3683(font')s 13(s)k 4284(deepest)s
+5066(character)s 13(.)k 6097(Ensuring)s 7019(in)s 7268(this)s
+7669(w)s 2(ay)k 8126(that)s 8550(e)s 6(v)k 3(ery)k
+0 1328(character)m 946(has)s 1329(the)s 1690(same)s 2250(height)s
+2921(and)s 3338(depth)s 3940(can)s 4341(mak)s 2(e)k
+4926(documents)s 6027(more)s 6587(uniform)s 7430(in)s 7686(layout.)s
+8461(T)s 19(o)k 8774(get)s 0 1040(this)m 396(feature,)s
+1165(use)s 220 fnt2 480 558(str)m -3(ut @F)k 6(ont ...)k
+240 fnt1 0 103(either)m 592(alone)s 1154(or)s 1401(combined)s
+2391(with)s 2861(other)s 3401(options)s 4145(to)s 220 fnt2
+4372 100(@F)m 6(ont)k 240 fnt1 5024 103(.)m 5176(It)s
+5369(is)s 5567(called)s 220 fnt2 6184 100(str)m -3(ut)k
+240 fnt1 6658 103(because)m 7459(it)s 7639(is)s 7837(lik)s 2(e)k
+8237(inserting)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 43 49
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(3.3.)m 1871(@F)s 25(ont,)k 2611(@Char)s 26(,)k
+3391(and)s 3817(@F)s 25(ontDef)k 240 fnt5 10250 -1583(43)m
+gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+0 13205(an)m 299(in)s 9(visible)k 1186(v)s 3(ertical)k
+1969(strut)s 2470(into)s 2912(e)s 6(v)k 3(ery)k
+3504(non-empty)s 4612(w)s 2(ord.)k 5282(By)s 5633(def)s 2(ault)k
+6371(struts)s 6955(are)s 7319(of)s 6(f;)k 7719(b)s 4(ut)k
+8098(an)s 3(yw)k 2(ay)k 8909(if)s 0 12917(you)m
+425(need)s 945(to)s 1194(turn)s 1646(them)s 2194(of)s 6(f)k
+2548(for)s 2896(some)s 3467(reason,)s 4208(use)s 220 fnt2
+4593 12914(nostr)m -3(ut @F)k 6(ont)k 240 fnt1 5980 12917(.)m
+6154(Struts)s 6772(are)s 7129(al)s 2(w)k 2(ays)k
+7850(turned)s 8529(of)s 6(f)k 8883(in)s 0 12629(equations,)m
+1024(for)s 1362(e)s 3(xample,)k 2276(because)s 3089(the)s 3(y)k
+3552(are)s 3899(not)s 4265(appropriate)s 5409(for)s 5747(equation)s
+6628(formatting.)s 480 12255(There)m 1080(are)s 1413(tw)s 2(o)k
+1810(prede\207ned)s 2864(symbols,)s 220 fnt2 3756 12252(@CurrF)m 11(amily)k
+240 fnt1 5083 12255(and)m 220 fnt2 5474 12252(@CurrF)m 11(ace)k
+240 fnt1 6592 12255(,)m 6685(which)s 7314(respecti)s 6(v)k 3(ely)k
+8499(return)s 0 11967(the)m 337(f)s 2(amily)k 1000(and)s
+1392(f)s 2(ace)k 1831(names)s 2482(of)s 2741(the)s
+3077(current)s 3801(font.)s 4339(F)s 3(or)k 4716(e)s 3(xample,)k
+5618(right)s 6117(no)s 6(w)k 220 fnt2 6567 11964(@CurrF)m 11(amily)k
+240 fnt1 7896 11967(is)m 8094(T)s 8(imes)k 8722(and)s
+220 fnt2 0 11676(@CurrF)m 11(ace)k 240 fnt1 1178 11679(is)m
+1388(Base.)s 480 11305(T)m 19(o)k 799(inform)s 1529(Lout)s
+2061(that)s 2499(certain)s 3225(fonts)s 3773(e)s 3(xist,)k
+4348(it)s 4560(is)s 4790(necessary)s 5793(to)s 6051(create)s
+6696(a)s 6882(database)s 7781(of)s 220 fnt2 8072 11302(@F)m 6(ontDef)k
+240 fnt1 0 11017(symbols.)m 990(\(It)s 1303(is)s 1542(possible)s
+2411(to)s 2679(ha)s 4(v)k 3(e)k 3209(a)s
+220 fnt2 3404 11014(@F)m 6(ontDef)k 240 fnt1 4487 11017(symbol)m
+5275(in)s 5547(an)s 5859(ordinary)s 6752(source)s 7461(\207le;)s
+7907(it)s 8128(enters)s 8778(the)s 0 10729(cross-reference)m 1513(database)s
+2393(in)s 2637(the)s 2986(usual)s 3547(w)s 2(ay)k
+3999(and)s 4404(is)s 4615(retrie)s 6(v)k 3(ed)k
+5513(from)s 6038(there)s 6572(by)s 6867(the)s 7216(font)s
+7662(machinery)s 15(,)k 8764(b)s 4(ut)k 0 10441(only)m
+497(from)s 1039(the)s 1405(second)s 2146(run,)s 2590(which)s
+3250(is)s 3478(not)s 3862(con)s 9(v)k 3(enient.\))k
+5166(A)s 5414(typical)s 6137(entry)s 6700(in)s 6961(such)s
+7475(a)s 7659(database)s 8556(looks)s 0 10153(lik)m 2(e)k
+412(this:)s 220 fnt2 480 9702({ @F)m 6(ontDef)k 480 9414( @T)m 26(ag { )k 11(Times-Base })k
+480 9126( @F)m 11(amily { )k 11(Times })k 480 8838( @F)m 11(ace { Base })k
+480 8550( @Name { )m 11(Times-Roman })k 480 8262( @Metr)m -3(ics { )k 11(Ti-Rm })k
+480 7974( @Mapping { LtLatin1.LCM })m 480 7686(})m 240 fnt1 0 7192(This)m 483(entry)s
+1035(informs)s 1837(Lout)s 2356(of)s 2635(the)s 2990(e)s 3(xistence)k
+3940(of)s 4218(a)s 4392(font)s 4844(whose)s 5520(f)s 2(amily)k
+6202(name)s 6784(is)s 7001(the)s 7357(v)s 6(alue)k
+7932(of)s 220 fnt2 8211 7189(@F)m 11(amily)k 240 fnt1
+0 6904(and)m 398(whose)s 1059(f)s 2(ace)k 1503(name)s
+2070(is)s 2273(the)s 2614(v)s 6(alue)k 3175(of)s
+220 fnt2 3439 6901(@F)m 11(ace)k 240 fnt1 4131 6904(.)m
+4288(The)s 220 fnt2 4709 6901(@T)m 26(ag)k 240 fnt1
+5325 6904(v)m 6(alue)k 5886(must)s 6404(be)s 6679(e)s 3(xactly)k
+7413(equal)s 7979(to)s 220 fnt2 8211 6901(@F)m 11(amily)k
+240 fnt1 0 6616(follo)m 6(wed)k 895(by)s 1182(a)s
+1340(h)s 1(yphen)k 2095(follo)s 6(wed)k 2989(by)s
+220 fnt2 3276 6613(@F)m 11(ace)k 240 fnt1 3968 6616(.)m
+4125(There)s 4730(are)s 5070(a)s 5228(fe)s 6(w)k
+5627(fonts)s 6149(which)s 6783(are)s 7123(the)s 7463(only)s
+7936(members)s 8855(of)s 0 6328(their)m 488(f)s 2(amilies;)k
+1356(e)s 6(v)k 3(en)k 1846(though)s 2559(these)s
+3096(fonts)s 3616(do)s 3899(not)s 4255(need)s 4755(a)s
+4911(f)s 2(ace)k 5352(name,)s 5968(the)s 3(y)k
+6421(must)s 6936(be)s 7208(gi)s 6(v)k 3(en)k
+7778(one,)s 8221(probably)s 220 fnt2 0 6037(Base)m 240 fnt1
+492 6040(,)m 599(by)s 893(their)s 220 fnt2 1390 6037(@F)m 6(ontDef)k
+240 fnt1 2384 6040(.)m 480 5666(The)m 950(other)s 1543(\207elds)s
+2154(are)s 2543(implementation-dependent,)s 5255(b)s 4(ut)k 5659(in)s
+5944(Basser)s 6683(Lout)s 7237(V)s 26(ersion)k 8067(3)s
+8273(the)s 3(y)k 8779(are)s 220 fnt2 0 5375(@Name)m
+240 fnt1 800 5378(,)m 908(a)s 1076(PostScript)s 2120(font)s
+2567(name;)s 220 fnt2 3198 5375(@Metr)m -3(ics)k 240 fnt1
+4124 5378(,)m 4293(an)s
+[ /Dest /LOUT19_4637_pre_font_8 /DEST pdfmark
+4578(Adobe)s 5275(font)s 5721(metrics)s
+6476(\(formerly)s 7446(AFM\))s 8095(\207le)s 8458(whose)s 0 5090(F)m 3(ontName)k
+1070(entry)s 1622(must)s 2154(agree)s 2734(with)s 3223(the)s
+3578(PostScript)s 4627(font)s 5079(name)s 5660(just)s 6072(mentioned;)s
+7201(and)s 220 fnt2 7612 5087(@Mapping)m 240 fnt1 8664 5090(,)m
+8778(the)s 0 4802(name)m 589(of)s 876(a)s 1057(Lout)s
+1585(Character)s 2589(Mapping)s 3522(\(LCM\))s 4264(\207le.)s 4748(The)s
+5192(\207les)s 5657(are)s 6019(searched)s 6929(for)s 7282(in)s
+7541(standard)s 8425(places.)s 0 4514(Consult)m 813(the)s 1169(PostScript)s
+2220(Reference)s 3252(Manual)s 4046([)s
+[ /Rect [4117 4514 4212 4676] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTadobe1990ps /ANN pdfmark
+4117(1)s 4212(])s
+4339(for)s 4685(general)s 5451(information)s 6645(about)s 7245(fonts)s
+7782(and)s 8195(encoding)s 0 4226(v)m 3(ectors;)k 795(brie\210y)s 15(,)k
+1506(an)s 1785(8-bit)s
+[ /Dest /LOUT19_4637_pre_font_9 /DEST pdfmark
+2291(character)s 3221(code)s 240 fnt6
+3724 4228(c)m 240 fnt1 3882 4226(in)m 4120(Lout')s 13(s)k
+4778(input)s 5325(is)s 5531(mapped)s 6342(to)s 6577(the)s
+6920(character)s 7850(in)s 8088(the)s 8431(Adobe)s 0 3938(font)m
+449(metrics)s 1206(\207le)s 1571(whose)s 2243(name)s 2822(appears)s
+3607(on)s 3908(the)s 4260(line)s 4679(labelled)s 240 fnt6
+5497 3940(c)m 240 fnt1 5663 3938(in)m 5910(the)s 6262(LCM)s
+6840(\207le.)s 7313(The)s 7745(LCM)s 8322(\207le)s 8688(also)s
+0 3650(de\207nes)m 756(v)s 6(arious)k 1532(character)s 4(-to-character)k
+3707(mappings,)s 4772(such)s 5295(as)s 5572(upper)s 4(-case)k
+6686(to)s 6952(lo)s 6(wer)k 4(-case,)k 8110(which)s
+8779(are)s 0 3362(used)m 497(for)s 835(such)s 1331(purposes)s
+2233(as)s 2483(the)s 2831(production)s 3925(of)s 4196(small)s
+4768(capitals.)s 480 2988(The)m 933(options)s 1714(sho)s 6(wn)k
+2416(abo)s 3(v)k 3(e)k 3063(are)s 3436(all)s
+3754(compulsory)s 15(,)k 5001(b)s 4(ut)k 5388(there)s
+5946(are)s 6319(tw)s 2(o)k 6754(other)s 7330(options)s
+8111(which)s 8779(are)s 0 2700(optional.)m 942(The)s 220 fnt2
+1364 2697(@Recode)m 240 fnt1 2388 2700(option,)m 3101(if)s 3312(gi)s 6(v)k 3(en,)k
+3935(must)s 4454(ha)s 4(v)k 3(e)k 4948(v)s 6(alue)k
+220 fnt2 5510 2697(Y)m 30(es)k 240 fnt1 5905 2700(\(the)m
+6325(def)s 2(ault,)k 7087(so)s 7347(rarely)s 7950(seen\))s
+8497(or)s 220 fnt2 8749 2697(No)m 240 fnt1 9022 2700(.)m
+0 2412(If)m 220 fnt2 239 2409(@Recode { No })m 240 fnt1 1887 2412(is)m
+2106(gi)s 6(v)k 3(en,)k 2745(Lout)s 3266(assumes)s
+4123(that)s 4551(the)s 4908(gi)s 6(v)k 3(en)k
+5497(encoding)s 6437(v)s 3(ector)k 7100(is)s 7319(already)s
+8086(associated)s 0 2124(with)m 482(this)s 878(font)s 1323(in)s
+1566(the)s 1914(PostScript)s 2956(interpreter)s 9(,)k 4047(and)s
+4451(optimizes)s 5431(its)s 5707(output)s 6379(accordingly)s 15(.)k
+480 1750(The)m 928(other)s 1500(optional)s 2359(option,)s 220 fnt2
+3099 1747(@Extr)m 2(aMetr)k -3(ics)k 240 fnt1 4535 1750(,)m
+4663(has)s 5053(v)s 6(alue)k 5642(equal)s 6236(to)s
+6495(the)s 6864(name)s 7459(of)s 7750(a)s 7937(second)s
+8681(font)s 0 1462(metrics)m 765(\207le)s 1138(which,)s 1843(if)s
+2072(gi)s 6(v)k 3(en,)k 2715(is)s 2937(added)s
+3580(to)s 3831(the)s 4191(main)s 4739(one)s 5153(de\207ned)s
+5929(by)s 220 fnt2 6235 1459(@Metr)m -3(ics)k 240 fnt1
+7161 1462(.)m 7338(This)s 7826(e)s 3(xtra)k 8373(metrics)s
+0 1174(\207le)m 357(contains)s 220 fnt2 1200 1171(C)m 240 fnt1
+1404 1174(\(de\207ne)m 2119(character\))s 3117(and)s 220 fnt2 3516 1171(CC)m
+240 fnt1 3878 1174(\(de\207ne)m 4593(composite)s 5627(character\))s 6625(entries)s
+7307(in)s 7545(the)s 7888(same)s 8430(format)s 0 886(as)m
+259(in)s 512(AFM)s 1095(\207les;)s 1615(Lout)s 2136(will)s
+2572(b)s 4(uild)k 3128(composite)s 4177(characters)s 5204(declared)s
+6081(in)s 6334(this)s 6740(e)s 3(xtra)k 7283(\207le)s
+7654(from)s 8188(the)s 8546(gi)s 6(v)k 3(en)k
+0 598(pieces,)m 707(which)s 1352(it)s 1547(does)s 2041(not)s
+2410(do)s 2706(for)s 3048(composite)s 4090(characters)s 5111(in)s
+5358(the)s 5709(main)s 6247(AFM)s 6824(\207le.)s 7296(There)s
+7912(are)s 8263(e)s 3(xample)k 0 310(e)m 3(xtra)k
+534(metrics)s 1287(\207les)s 1736(in)s 1979(the)s 2327(current)s
+3063(Lout)s 3575(distrib)s 4(ution)k 4730(which)s 5372(sho)s 6(w)k
+5926(the)s 6274(precise)s 7006(format)s 7702(of)s 7973(these)s
+8520(\207les.)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 44 50
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(44)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s
+8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+480 13205(It)m
+708(is)s 941(not)s 1330(possible)s 2193(to)s 2456(ha)s 4(v)k 3(e)k
+2980(tw)s 2(o)k 220 fnt2 3413 13202(@F)m 6(ontDef)k
+240 fnt1 4490 13205(database)m 5392(entries)s 6103(with)s 6608(the)s
+6979(same)s 7549(f)s 2(amily)k 8247(and)s 8675(f)s 2(ace)k
+0 12917(names,)m 703(because)s 1501(then)s 1955(the)s 3(y)k
+2402(must)s 2912(ha)s 4(v)k 3(e)k 3398(the)s
+3731(same)s 220 fnt2 4262 12914(@T)m 26(ag)k 240 fnt1
+4825 12917(,)m 4917(which)s 5544(is)s 5739(not)s 6089(allo)s 6(wed.)k
+6989(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
+7934(a)s 8084(PostScript)s 0 12629(font)m 470(name)s 1070(and)s
+1500(\207le)s 1886(may)s 2378(appear)s 3101(in)s 3369(tw)s 2(o)k
+3805(or)s 4090(more)s 4662(font)s 5133(de\207nitions,)s 6276(allo)s 6(wing)k
+7185(one)s 7613(PostScript)s 8681(font)s 0 12341(to)m 264(ha)s 4(v)k 3(e)k
+791(tw)s 2(o)k 1227(or)s 1512(more)s 2085(equally)s
+2869(v)s 6(alid)k 3425(Lout)s 3963(names.)s 4763(The)s
+5217(LCM)s 5816(\207les)s 6291(may)s 6783(be)s 7091(equal)s
+7690(or)s 7975(dif)s 6(ferent)k 8876(as)s 0 12053(desired.)m
+480 11679(The)m 220 fnt2 917 11676(@Char)m 240 fnt1 1685 11679(symbol)m
+
+[ /Dest /LOUT19_4637_pre_font_10 /DEST pdfmark
+2454(allo)s 6(ws)k 3133(a)s 3309(character)s 4252(to)s
+4501(be)s 4792(speci\207ed)s 5710(by)s 6014(its)s 6299(name)s
+6883(\(its)s 7247(PostScript)s 8299(name)s 8883(in)s 0 11391(Basser)m
+697(Lout\))s 1277(rather)s 1893(than)s 2362(by)s 2656(its)s
+2932(code:)s 220 fnt2 480 10890(@Char nine)m 240 fnt1 0 10435(is)m
+215(equi)s 6(v)k 6(alent)k 1265(to)s 220 fnt2
+1510 10432(9)m 240 fnt1 1689 10435(in)m 1938(most)s 2469(fonts.)s
+3117(This)s 3599(is)s 3815(useful)s 4460(as)s 4716(a)s
+4888(documentation)s 6373(aid)s 6729(and)s 7139(to)s 7384(be)s
+7672(sure)s 8132(of)s 8409(getting)s 0 10147(the)m 347(right)s
+856(character)s 1788(e)s 6(v)k 3(en)k 2286(if)s
+2501(the)s 2848(encoding)s 3777(v)s 3(ector)k 4429(of)s
+4698(the)s 5044(font)s 5488(is)s 5696(changed.)s 6656(Ho)s 6(we)k 6(v)k 3(er)k
+220 fnt2 7576 10144(@Char)m 240 fnt1 8332 10147(will)m 8756(f)s 2(ail)k
+0 9859(if)m 217(the)s 565(character)s 1499(named)s 2195(is)s
+2405(not)s 2771(in)s 3014(the)s 3362(encoding)s 4293(v)s 3(ector)k
+4947(of)s 5218(the)s 5566(current)s 6302(font.)s 240 fnt5
+0 9066(3.4.)m 471(@Br)s 4(eak)k
+[ /Dest /LOUTbreak /DEST pdfmark
+240 fnt1 480 8634(The)m
+220 fnt2 898 8631(@Break)m 240 fnt1 1744 8634(symbol)m 2493(in\210uences)s
+3504(the)s 3842(appearance)s 4962(of)s 5223(paragraphs)s 6313(\(Section)s
+7155(3.2\),)s 7631(of)s 6(fering)k 8437(a)s 8592(\207x)s 3(ed)k
+0 8346(set)m 325(of)s 596(styles:)s 220 fnt2 1275 7838(adjust)m
+1916(@Break)s 240 fnt6 2772 7843(object)m
+[ /Dest /LOUT19_4637_pre_brea_1 /DEST pdfmark
+240 fnt1 3600 7841(Break)m
+4301(the)s 4718(paragraphs)s 5887(of)s 240 fnt6 6228 7843(object)m
+240 fnt1 6945 7841(into)m 7439(lines,)s 8066(and)s 8540(apply)s
+220 fnt2 3600 7550(@P)m 26(Adjust)k 240 fnt1 4633 7553(\(Section)m
+5511(3.19\))s 6084(to)s 6348(e)s 6(v)k 3(ery)k
+6949(line)s 7388(e)s 3(xcept)k 8094(the)s 8467(last)s
+8883(in)s 3600 7265(each)m 4095(paragraph;)s
+[ /Dest /LOUT16_1794_pre_brea_1 /DEST pdfmark
+220 fnt2 1128 6757(outdent)m
+1916(@Break)s 240 fnt6 2772 6762(object)m
+[ /Dest /LOUT19_4637_pre_brea_2 /DEST pdfmark
+240 fnt1 3600 6760(Lik)m 2(e)k
+220 fnt2 4122 6757(adjust)m 240 fnt1 4703 6760(,)m 4840(e)s 3(xcept)k
+5551(that)s 220 fnt2 6000 6757(2.0f @Wide {} &0i)m 240 fnt1 7809 6760(is)m
+8049(inserted)s 8894(at)s 3600 6472(the)m 3981(be)s 3(ginning)k
+5022(of)s 5326(e)s 6(v)k 3(ery)k 5935(line)s
+6382(e)s 3(xcept)k 7096(the)s 7477(\207rst,)s 7988(creating)s
+8843(an)s 3600 6184(outdented)m 4592(paragraph)s 5595(\(the)s 6012(outdent)s
+6780(width)s 7372(may)s 7828(be)s 8100(changed)s 8946(\211)s
+3600 5896(see)m 3961(belo)s 6(w\);)k
+[ /Dest /LOUT16_1794_pre_brea_2 /DEST pdfmark
+220 fnt2 1187 5398(r)m 2(agged)k
+1916(@Break)s 240 fnt6 2772 5403(object)m
+[ /Dest /LOUT19_4637_pre_brea_3 /DEST pdfmark
+240 fnt1 3600 5401(Break)m
+4222(the)s 4559(paragraphs)s 5648(of)s 240 fnt6 5908 5403(object)m
+240 fnt1 6545 5401(into)m 6960(lines,)s 7507(b)s 4(ut)k
+7858(do)s 8140(not)s 8495(adjust)s 3600 5113(the)m 3948(lines)s
+4450(\(`ragged)s 5317(right'\);)s
+[ /Dest /LOUT16_1794_pre_brea_3 /DEST pdfmark
+220 fnt2 1077 4605(cr)m 2(agged)k
+1916(@Break)s 240 fnt6 2772 4610(object)m
+[ /Dest /LOUT19_4637_pre_brea_4 /DEST pdfmark
+240 fnt1 3600 4608(Lik)m 2(e)k
+220 fnt2 4125 4605(r)m 2(agged)k 240 fnt1 4794 4608(,)m
+4934(e)s 3(xcept)k 5648(that)s 6099(each)s 6628(line)s
+7075(will)s 7534(be)s 7849(centred)s 8644(with)s 3600 4320(respect)m
+4336(to)s 4575(the)s 4923(others;)s
+[ /Dest /LOUT16_1794_pre_brea_4 /DEST pdfmark
+220 fnt2 1114 3812(rr)m 2(agged)k
+1916(@Break)s 240 fnt6 2772 3817(object)m
+[ /Dest /LOUT19_4637_pre_brea_5 /DEST pdfmark
+240 fnt1 3600 3815(Lik)m 2(e)k
+220 fnt2 4115 3812(r)m 2(agged)k 240 fnt1 4784 3815(,)m
+4914(e)s 3(xcept)k 5618(that)s 6059(each)s 6577(line)s
+7014(will)s 7463(be)s 7768(right-justi\207ed)s 3600 3527(with)m 4082(respect)s
+4818(to)s 5057(the)s 5405(others)s 6040(\(`ragged)s 6907(left'\);)s
+
+[ /Dest /LOUT16_1794_pre_brea_5 /DEST pdfmark
+220 fnt2 1065 3019(or)m 2(agged)k 1916(@Break)s 240 fnt6
+2772 3024(object)m
+[ /Dest /LOUT19_4637_pre_brea_6 /DEST pdfmark
+240 fnt1 3600 3022(The)m 4028(ob)s 3(vious)k
+4835(combination)s 6088(of)s 220 fnt2 6359 3019(r)m 2(agged)k
+240 fnt1 7088 3022(and)m 220 fnt2 7492 3019(outdent)m 240 fnt1
+8220 3022(;)m
+[ /Dest /LOUT16_1794_pre_brea_6 /DEST pdfmark
+220 fnt2 1413 2515(lines)m 1916(@Break)s 240 fnt6
+2772 2520(object)m
+[ /Dest /LOUT19_4637_pre_brea_7 /DEST pdfmark
+240 fnt1 3600 2518(Break)m 4284(the)s 4685(paragraphs)s
+5837(of)s 240 fnt6 6161 2520(object)m 240 fnt1 6861 2518(into)m
+7339(lines)s 7893(at)s 8178(the)s 8579(same)s 3600 2230(points)m
+4235(that)s 4651(the)s 3(y)k 5113(are)s 5458(brok)s 2(en)k
+6177(into)s 6600(lines)s 7101(in)s 7342(the)s 7689(input,)s
+8286(and)s 8688(also)s 3600 1942(at)m 3819(concatenation)s 5190(symbols)s
+6026(of)s 6283(the)s 6617(form)s 220 fnt2 7128 1939(&)m
+240 fnt6 7270 1944(k)m 220 fnt2 7380 1939(b)m 240 fnt1
+7540 1942(for)m 7865(an)s 3(y)k 240 fnt6 8248 1944(k)m
+240 fnt1 8404 1942(greater)m 3600 1654(than)m 4069(1.)s 4354(Do)s
+4700(not)s 5067(adjust)s 5698(the)s 6047(lines.)s 6663(An)s 3(y)k
+7127(spaces)s 7803(at)s 8035(the)s 8384(start)s 8855(of)s
+3600 1366(a)m 3766(line)s 4180(other)s 4731(than)s 5200(the)s
+5548(\207rst)s 5979(line)s 6393(will)s 6819(appear)s 7516(in)s
+7759(the)s 8107(output;)s
+[ /Dest /LOUT16_1794_pre_brea_7 /DEST pdfmark
+220 fnt2 1303 858(clines)m 1916(@Break)s
+240 fnt6 2772 863(object)m
+[ /Dest /LOUT19_4637_pre_brea_8 /DEST pdfmark
+240 fnt1 3600 861(Break)m 4288(the)s
+4693(paragraphs)s 5849(of)s 240 fnt6 6177 863(object)m 240 fnt1
+6881 861(into)m 7363(lines)s 7921(as)s 8228(for)s 220 fnt2
+8623 858(lines)m 3600 570(@Break)m 240 fnt1 4396 573(,)m 4503(then)s
+4972(centre)s 5611(each)s 6106(line)s 6520(with)s 7002(respect)s
+7738(to)s 7977(the)s 8325(others;)s
+[ /Dest /LOUT16_1794_pre_brea_8 /DEST pdfmark
+220 fnt2 1337 65(r)m -3(lines)k
+1916(@Break)s 240 fnt6 2772 70(object)m
+[ /Dest /LOUT19_4637_pre_brea_9 /DEST pdfmark
+240 fnt1 3600 68(Break)m
+4288(the)s 4693(paragraphs)s 5849(of)s 240 fnt6 6177 70(object)m
+240 fnt1 6881 68(into)m 7363(lines)s 7921(as)s 8228(for)s
+220 fnt2 8623 65(lines)m
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 45 51
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(3.4.)m 1871(@Br)s 8(eak)k 240 fnt5
+10250 -1583(45)m gsave
+1417 -15423 translate
+240 fnt1 9066 13413 0 13304 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+220 fnt2 3600 13247(@Break)m 240 fnt1
+4396 13250(,)m 4535(then)s 5036(right-)s 5555(justify)s 6251(each)s
+6778(line)s 7224(with)s 7738(respect)s 8506(to)s 8778(the)s
+3600 12962(others.)m
+[ /Dest /LOUT16_1794_pre_brea_9 /DEST pdfmark
+220 fnt2 1291 12504(olines)m 1916(@Break)s 240 fnt6
+2772 12509(object)m
+[ /Dest /LOUT19_4637_pre_brea_10 /DEST pdfmark
+240 fnt1 3600 12507(Break)m 4288(the)s 4693(paragraphs)s
+5849(of)s 240 fnt6 6177 12509(object)m 240 fnt1 6881 12507(into)m
+7363(lines)s 7921(as)s 8228(for)s 220 fnt2 8623 12504(lines)m
+3600 12216(@Break)m 240 fnt1 4396 12219(,)m 4503(then)s 4972(as)s
+5222(for)s 5560(outdenting.)s
+[ /Dest /LOUT16_1794_pre_brea_10 /DEST pdfmark
+0 11716(If)m 235(the)s 588(paragraph)s
+1606(w)s 2(as)k 2032(an)s 2320(entire)s 2924(component)s
+4053(of)s 4329(a)s 4501(g)s 1(alle)k 3(y)k 15(,)k
+5178(so)s 5449(will)s 5880(each)s 6380(of)s 6656(its)s
+6937(lines)s 7444(be;)s 7787(otherwise)s 8778(the)s 0 11428(lines)m
+502(are)s 849(enclosed)s 1744(in)s 1987(a)s 220 fnt2
+2153 11425(@OneRo)m 3(w)k 240 fnt1 3284 11428(symbol)m 4044(after)s
+4540(breaking.)s 480 11054(The)m 911(length)s 1570(of)s 1845(the)s
+2196(g)s 1(ap)k 2598(used)s 3099(to)s 3341(separate)s
+4183(the)s 4535(lines)s 5040(produced)s 5993(by)s 6291(paragraph)s
+7307(breaking)s 8201(is)s 8415(al)s 2(w)k 2(ays)k
+220 fnt2 0 10763(1v)m 240 fnt1 231 10766(,)m 346(e)s 3(xcept)k
+1036(when)s 220 fnt2 1621 10763(lines)m 240 fnt1 2064 10766(,)m
+220 fnt2 2179 10763(clines)m 240 fnt1 2732 10766(,)m 2848(or)s
+220 fnt2 3116 10763(r)m -3(lines)k 240 fnt1 3704 10766(encounter)m
+4715(a)s 4890(completely)s 6015(blank)s 6617(line,)s 7090(for)s
+7437(which)s 8088(see)s 8458(belo)s 6(w)k 15(.)k
+0 10478(Ho)m 6(we)k 6(v)k 3(er)k 9(,)k
+960(the)s 220 fnt2 1308 10475(v)m 240 fnt1 1477 10478(unit)m
+1909(itself)s 2457(and)s 2861(the)s
+[ /Dest /LOUT19_4637_pre_brea_11 /DEST pdfmark
+3209(g)s 1(ap)k
+3607(mode)s 4195(may)s 4661(be)s 4943(changed:)s 240 fnt6
+1503 9975(gap)m 220 fnt2 1916 9970(@Break)m 240 fnt6 2772 9975(object)m
+240 fnt1 3600 9973(W)m 9(ithin)k 240 fnt6 4312 9975(object)m
+240 fnt1 4900 9973(,)m 5008(tak)s 2(e)k 5460(the)s
+5809(v)s 6(alue)k 6377(of)s 6649(the)s 220 fnt2
+6998 9970(v)m 240 fnt1 7167 9973(unit)m 7600(to)s 7839(be)s
+8122(the)s 8471(length)s 3600 9685(of)m 240 fnt6 3871 9687(gap)m
+240 fnt1 4224 9685(;)m
+[ /Dest /LOUT16_1794_pre_brea_11 /DEST pdfmark
+1375 9184(+)m 240 fnt6 1503 9186(gap)m
+220 fnt2 1916 9181(@Break)m 240 fnt6 2772 9186(object)m 240 fnt1
+3600 9184(W)m 9(ithin)k 240 fnt6 4320 9186(object)m 240 fnt1
+4908 9184(,)m 5024(tak)s 2(e)k 5485(the)s 5841(v)s 6(alue)k
+6418(of)s 6698(the)s 220 fnt2 7054 9181(v)m 240 fnt1
+7232 9184(unit)m 7673(to)s 7920(be)s 8211(lar)s 4(ger)k
+8832(by)s 3600 8896(the)m 3948(length)s 4603(of)s 240 fnt6
+4874 8898(gap)m 240 fnt1 5287 8896(than)m 5756(it)s 5948(w)s 2(ould)k
+6603(otherwise)s 7588(ha)s 4(v)k 3(e)k 8089(been;)s
+
+[ /Dest /LOUT16_1794_pre_brea_12 /DEST pdfmark
+1383 8391(\211)m 240 fnt6 1503 8393(gap)m 220 fnt2 1916 8388(@Break)m
+240 fnt6 2772 8393(object)m 240 fnt1 3600 8391(W)m 9(ithin)k
+240 fnt6 4309 8393(object)m 240 fnt1 4897 8391(,)m 5000(tak)s 2(e)k
+5448(the)s 5792(v)s 6(alue)k 6356(of)s 6623(the)s
+220 fnt2 6968 8388(v)m 240 fnt1 7133 8391(unit)m 7561(to)s
+7796(be)s 8074(smaller)s 8832(by)s 3600 8103(the)m 3948(length)s
+4603(of)s 240 fnt6 4874 8105(gap)m 240 fnt1 5287 8103(than)m
+5756(it)s 5948(w)s 2(ould)k 6603(otherwise)s 7588(ha)s 4(v)k 3(e)k
+8089(been.)s
+[ /Dest /LOUT16_1794_pre_brea_13 /DEST pdfmark
+0 7598(In)m 256(each)s 751(case,)s 1269(the)s
+1617(mode)s 2205(of)s 240 fnt6 2476 7600(gap)m 240 fnt1
+2889 7598(is)m 3099(adopted)s 3915(within)s 240 fnt6 4583 7600(object)m
+240 fnt1 5171 7598(.)m 480 7224(When)m 220 fnt2 1105 7221(lines)m
+240 fnt1 1548 7224(,)m 220 fnt2 1650 7221(clines)m 240 fnt1
+2203 7224(,)m 2305(or)s 220 fnt2 2559 7221(r)m -3(lines)k
+240 fnt1 3133 7224(encounter)m 4131(one)s 4528(or)s 4782(more)s
+5324(completely)s 6435(blank)s 7023(lines,)s 7576(a)s 7737(single)s
+8359(v)s 3(ertical)k 0 6936(concatenation)m 1397(operator)s 2266(is)s
+2488(inserted)s 3315(to)s 3566(implement)s 4661(these,)s 5272(ensuring)s
+6161(that)s 6592(the)s 6952(entire)s 7564(set)s 7901(of)s
+8185(lines)s 8700(will)s 0 6648(disappear)m 975(if)s 1191(the)s 3(y)k
+1653(happen)s 2401(to)s 2639(f)s 2(all)k 3007(on)s
+3303(a)s 3468(page)s 3975(or)s 4233(column)s 5007(break.)s
+5700(The)s 6127(g)s 1(ap)k 6524(width)s 7125(of)s
+7395(the)s 7741(concatenation)s 0 6360(operator)m 875(is)s 220 fnt2
+1104 6357(1v)m 240 fnt1 1414 6360(for)m 1771(the)s 2138(\207rst)s
+2589(ne)s 6(wline)k 3415(as)s 3684(usual,)s 4315(plus)s
+220 fnt2 4784 6357(1v)m 240 fnt1 5094 6360(multiplied)m 6154(by)s
+6467(the)s 240 fnt6 6834 6362(blank)m 7449(line)s 7879(scale)s
+8443(factor)s 240 fnt1 9019 6360(,)m 0 6072(an)m 316(arbitrary)s
+1225(decimal)s 2069(number)s 2894(with)s 3409(no)s 3736(units,)s
+4342(for)s 4713(the)s 5095(remaining)s 6150(ne)s 6(wlines.)k
+7192(This)s 7701(scale)s 8268(f)s 2(actor)k 8916(is)s
+0 5784(settable)m 785(by)s 220 fnt2 480 5276({ b)m 4(lanklinescale)k
+240 fnt6 2038 5281(num)m 220 fnt2 2507 5276(} @Break)m 240 fnt6
+3497 5281(object)m 240 fnt1 0 4780(The)m 429(def)s 2(ault)k
+1152(v)s 6(alue)k 1722(is)s 220 fnt2 1934 4777(1.0)m
+240 fnt1 2231 4780(,)m 2340(which)s 2984(gi)s 6(v)k 3(es)k
+3533(blank)s 4128(lines)s 4632(their)s 5131(full)s 5519(height.)s
+6283(Ho)s 6(we)k 6(v)k 3(er)k 7207(it)s
+7401(often)s 7951(looks)s 8523(better)s 0 4492(if)m 215(the)s 3(y)k
+675(are)s 1020(reduced)s 1832(some)s 6(what.)k 2898(A)s
+3125(v)s 6(alue)k 3690(as)s 3938(small)s 4507(as)s
+220 fnt2 4755 4489(0.6)m 240 fnt1 5109 4492(looks)m 5677(good;)s
+6266(it)s 6455(gi)s 6(v)k 3(es)k 7000(width)s
+220 fnt2 7599 4489(1.6v)m 240 fnt1 8071 4492(to)m 8307(the)s
+8652(con-)s 0 4204(catenation)m 1039(symbol)s 1799(inserted)s 2613(at)s
+2845(a)s 3011(single)s 3638(blank)s 4231(line.)s 4753(The)s
+5181(usual)s 5741(g)s 1(ap)k 6139(mode)s 6727(is)s
+6937(of)s 7208(course)s 7888(appended.)s 480 3830(The)m 220 fnt2
+908 3827(@Break)m 240 fnt1 1764 3830(symbol)m 2524(also)s 2962(controls)s
+3783(h)s 1(yphenation:)k 220 fnt2 1141 3322(h)m 6(yphen @Break)k
+240 fnt6 2772 3327(object)m
+[ /Dest /LOUT19_4637_pre_brea_12 /DEST pdfmark
+240 fnt1 3600 3325(Permit)m 4296(h)s 1(yphenation)k
+5536(within)s 6204(the)s 6552(paragraphs)s 7652(of)s 240 fnt6
+7923 3327(object)m 240 fnt1 8511 3325(;)m
+[ /Dest /LOUT16_1794_pre_brea_14 /DEST pdfmark
+220 fnt2 897 2817(noh)m 6(yphen @Break)k
+240 fnt6 2772 2822(object)m
+[ /Dest /LOUT19_4637_pre_brea_13 /DEST pdfmark
+240 fnt1 3600 2820(Prohibit)m 4440(h)s 1(yphenation)k
+5691(within)s 6370(the)s 6729(paragraphs)s 7840(of)s 240 fnt6
+8122 2822(object)m 240 fnt1 8710 2820(;)m 8833(all)s 3600 2532(h)m 1(yphenation)k
+4897(g)s 1(aps)k 5443(without)s 6291(e)s 3(xception)k
+7332(re)s 6(v)k 3(ert)k 7996(to)s 8292(edge-)s
+8812(to-)s 3600 2244(edge)m 4108(mode.)s
+[ /Dest /LOUT16_1794_pre_brea_15 /DEST pdfmark
+0 1741(The)m 220 fnt2
+428 1738(@Break)m 240 fnt1 1284 1741(also)m 1722(has)s 2092(options)s
+2848(which)s 3490(control)s 4222(wido)s 6(w)k 4922(and)s
+5326(orphan)s 6048(lines:)s 220 fnt2 480 1233(unbreakab)m 4(le\207rst @Break)k
+240 fnt6 3053 1238(ob-)m 480 950(ject)m
+[ /Dest /LOUT19_4637_pre_brea_14 /DEST pdfmark
+240 fnt1 3600 1236(Pre)m 6(v)k 3(ent)k
+4431(column)s 5256(and)s 5710(page)s 6268(breaks)s 6993(\(i.e.)s
+7458(pre)s 6(v)k 3(ent)k 8276(a)s 8492(g)s 1(alle)k 3(y)k
+3600 948(from)m 4147(splitting\))s 5081(between)s 5959(the)s 6330(\207rst)s
+6784(and)s 7212(second)s 7958(lines)s 8483(of)s 8778(the)s
+3600 660(paragraphs)m 4700(of)s 240 fnt6 4971 662(object)m 240 fnt1
+5559 660(;)m
+[ /Dest /LOUT16_1794_pre_brea_16 /DEST pdfmark
+
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 46 52
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(46)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s
+8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13257 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+220 fnt2
+480 13200(unbreakab)m 4(lelast @Break)k 240 fnt6 3053 13205(ob-)m 480 12917(ject)m
+
+[ /Dest /LOUT19_4637_pre_brea_15 /DEST pdfmark
+240 fnt1 3600 13203(Pre)m 6(v)k 3(ent)k 4429(column)s
+5252(and)s 5704(page)s 6261(breaks)s 6984(between)s 7886(the)s
+8282(last)s 8722(and)s 3600 12915(second)m 4323(last)s 4714(lines)s
+5216(of)s 5487(the)s 5835(paragraphs)s 6935(of)s 240 fnt6
+7206 12917(object)m 240 fnt1 7794 12915(.)m
+[ /Dest /LOUT16_1794_pre_brea_17 /DEST pdfmark
+0 12412(These)m 688(options)s
+1506(w)s 2(ork)k 2119(by)s 2475(adding)s 3241(the)s
+220 fnt2 3651 12409(u)m 240 fnt1 3881 12412(\(unbreakable\))m 5319(suf\207x)s
+5980(to)s 6281(the)s 6691(appropriate)s 7897(g)s 1(aps)k
+8448(during)s 0 12124(paragraph)m 1017(breaking,)s 1966(so)s 2237(their)s
+2738(precise)s 3475(ef)s 6(fect)k 4076(is)s 4290(as)s
+4545(described)s 5524(for)s 5866(this)s 6267(suf\207x.)s 6981(These)s
+7612(options)s 8373(may)s 8844(be)s 0 11836(countermanded)m 1533(by)s
+220 fnt2 1827 11833(breakab)m 4(le\207rst @Break)k 240 fnt1 4057 11836(and)m
+220 fnt2 4461 11833(breakab)m 4(lelast @Break.)k 240 fnt1 480 11462(The)m
+908(width)s 1510(of)s 1781(the)s 2129(outdenting)s 3206(used)s
+3703(in)s 3946(the)s 220 fnt2 4294 11459(outdent)m 240 fnt1
+5082 11462(style)m 5589(may)s 6055(be)s 6337(changed)s 7193(lik)s 2(e)k
+7605(this:)s 220 fnt2 480 10954({ setoutdent)m 240 fnt6 1769 10959(width)m
+220 fnt2 2430 10954(} @Break)m 240 fnt6 480 10671(object)m 240 fnt1
+3600 10957(W)m 9(ithin)k 240 fnt6 4310 10959(object)m 240 fnt1
+4898 10957(,)m 5003(whene)s 6(v)k 3(er)k 5982(outdenting)s
+7057(is)s 7265(required,)s 8166(use)s 240 fnt6 8539 10959(width)m
+240 fnt1 3600 10669(for)m 3983(the)s 4377(amount)s 5201(of)s
+5518(outdenting.)s 6751(Note)s 7318(that)s 7782(this)s 8224(does)s
+8760(not)s 3600 10381(itself)m 4161(cause)s 4761(a)s 4940(switch)s
+5634(to)s 5886(outdenting)s 6976(style.)s 7604(The)s 8045(width)s
+8660(may)s 3600 10093(be)m 3887(preceded)s 4813(by)s 220 fnt2
+5112 10090(+)m 240 fnt1 5298 10093(or)m 220 fnt2 5562 10090(\211)m
+240 fnt1 5749 10093(to)m 5993(indicate)s 6811(a)s 6982(change)s
+7721(to)s 7965(the)s 8319(e)s 3(xisting)k 3600 9805(outdent)m
+4378(v)s 6(alue.)k
+[ /Dest /LOUT16_1794_pre_brea_18 /DEST pdfmark
+0 9351(Mar)m 4(gin)k 764(k)s 2(erning,)k
+1608(in)s 1858(which)s 2508(small)s 3087(\(usually)s 3919(punctuation\))s
+5185(characters)s 6210(protrude)s 7084(into)s 7516(the)s 7872(mar)s 4(gin,)k
+8660(may)s 0 9063(be)m 282(obtained)s 1164(by)s 220 fnt2
+1458 9060(margink)m 4(er)k -5(ning @Break)k 240 fnt1 3765 9063(and)m
+4169(turned)s 4838(of)s 6(f)k 5182(by)s 220 fnt2
+5476 9060(nomargink)m 4(er)k -5(ning @Break)k 240 fnt1 7967 9063(.)m
+480 8689(Se)m 6(v)k 3(eral)k 1310(options)s 2135(may)s
+2669(be)s 3020(gi)s 6(v)k 3(en)k 3668(to)s
+3976(the)s 220 fnt2 4392 8686(@Break)m 240 fnt1 5317 8689(symbol)m
+6145(simultaneously)s 15(,)k 7754(in)s 8065(an)s 3(y)k
+8531(order)s 13(.)k 0 8401(F)m 3(or)k 389(e)s 3(xample,)k
+220 fnt2 480 7900({ adjust 1.2fx h)m 6(yphen } @Break ...)k 240 fnt1 0 7402(is)m
+210(a)s 375(typical)s 1079(initial)s 1689(v)s 6(alue.)k
+2365(There)s 2977(may)s 3442(be)s 3723(empty)s 4375(objects)s
+5102(and)s 220 fnt2 5505 7399(@Null)m 240 fnt1 6149 7402(objects)m
+6877(in)s 7119(the)s 7466(left)s 7842(parameter)s 8855(of)s
+220 fnt2 0 7111(@Break)m 240 fnt1 796 7114(;)m 908(these)s
+1455(are)s 1802(ignored.)s 240 fnt5 0 6321(3.5.)m 471(@Space)s
+
+[ /Dest /LOUTspace /DEST pdfmark
+240 fnt1 480 5844(The)m 220 fnt2 911 5841(@Space)m 240 fnt1
+1812 5844(symbol)m
+[ /Dest /LOUT19_4637_pre_spac_1 /DEST pdfmark
+2576(changes)s 3402(the)s 3754(v)s 6(alue)k
+4326(of)s 4601(the)s 220 fnt2 4953 5841(s)m 240 fnt1
+5120 5844(unit)m 5556(of)s 5831(measurement)s 7169(\(Section)s
+[ /Dest /LOUT19_4637_pre_spac_2 /DEST pdfmark
+8026(3.2\))s
+8458(within)s 0 5556(its)m 276(right)s 787(parameter)s 1801(to)s
+2040(the)s 2388(v)s 6(alue)k 2956(gi)s 6(v)k 3(en)k
+3536(by)s 3830(the)s 4178(left)s 4555(parameter:)s 220 fnt2
+480 5055(1c @Space { a b c d })m 240 fnt1 0 4559(has)m 370(result)s 480 4106(a)m
+1153(b)s 1833(c)s 2499(d)s 0 3653(As)m 311(for)s
+643(the)s 220 fnt2 985 3650(@Break)m 240 fnt1 1835 3653(symbol,)m
+2641(the)s 2982(left)s 3353(parameter)s 4361(of)s 220 fnt2
+4626 3650(@Space)m 240 fnt1 5517 3653(may)m 5976(be)s 6252(gi)s 6(v)k 3(en)k
+6826(relati)s 6(v)k 3(e)k 7582(to)s 7815(the)s
+8156(enclosing)s 220 fnt2 0 3362(s)m 240 fnt1 163 3365(unit,)m
+642(and)s 1046(it)s 1238(may)s 1704(include)s 2464(a)s
+2630(g)s 1(ap)k 3028(mode.)s 3724(Note)s 4245(that)s
+4663(the)s 220 fnt2 5011 3362(@F)m 6(ont)k 240 fnt1
+5723 3365(symbol)m 6483(also)s 6921(sets)s 7330(the)s 220 fnt2
+7678 3362(s)m 240 fnt1 7841 3365(unit.)m 480 2991(The)m 906(left)s
+1280(parameter)s 2292(of)s 2560(the)s 220 fnt2 2906 2988(@Space)m
+240 fnt1 3800 2991(symbol)m 4558(may)s 5021(also)s 5456(hold)s
+5938(an)s 3(y)k 6332(one)s 6732(of)s 7000(the)s
+7346(\207v)s 3(e)k 7755(special)s 8470(v)s 6(alues)k
+220 fnt2 0 2700(lout)m 240 fnt1 349 2703(,)m 220 fnt2
+461 2700(compress)m 240 fnt1 1406 2703(,)m 220 fnt2 1518 2700(separ)m 2(ate)k
+240 fnt1 2362 2703(,)m 220 fnt2 2474 2700(troff)m 240 fnt1
+2849 2703(,)m 2961(and)s 220 fnt2 3371 2700(te)m 6(x)k
+240 fnt1 3656 2703(,)m 3768(which)s 4415(control)s 5152(the)s
+5505(w)s 2(ay)k 5962(in)s 6210(which)s 6857(Lout)s
+7374(treats)s 7946(white)s 8539(space)s 0 2415(separating)m 1047(tw)s 2(o)k
+1470(objects.)s 2324(The)s 2764(names)s 220 fnt2 3439 2412(troff)m
+240 fnt1 3887 2415(and)m 220 fnt2 4304 2412(te)m 6(x)k
+240 fnt1 4661 2415(indicate)m 5486(that)s 5917(the)s 6278(beha)s 4(viour)k
+7303(of)s 7587(these)s 8147(options)s 8916(is)s 0 2127(inspired)m
+828(by)s 1122(these)s 1669(other)s 2220(document)s 3224(formatting)s
+4285(systems.)s 480 1753(The)m 897(def)s 2(ault)k 1607(setting,)s
+220 fnt2 2339 1750(lout)m 240 fnt1 2688 1753(,)m 2784(produces)s
+3687(as)s 3926(man)s 3(y)k 4498(spaces)s 5161(in)s
+5393(the)s 5729(output)s 6390(as)s 6629(there)s 7150(are)s
+7486(in)s 7717(the)s 8054(input.)s 8698(The)s 220 fnt2
+0 1462(compress)m 240 fnt1 1017 1465(setting)m 1719(causes)s 2407(all)s
+2712(sequences)s 3746(of)s 4029(tw)s 2(o)k 4452(or)s
+4723(more)s 5283(white)s 5882(space)s 6482(characters)s 7512(to)s
+7764(be)s 8058(treated)s 8778(the)s 0 1177(same)m 556(as)s
+815(one)s 1227(white)s 1823(space)s 2419(character)s 13(.)k
+3454(The)s 220 fnt2 3891 1174(separ)m 2(ate)k 240 fnt1
+4804 1177(setting)m 5504(is)s 5723(lik)s 2(e)k 220 fnt2
+6144 1174(compress)m 240 fnt1 7159 1177(b)m 4(ut)k 7530(also)s
+7977(causes)s 8662(zero)s 0 889(white)m 587(spaces)s 1263(between)s
+2118(tw)s 2(o)k 2529(objects)s 3258(\(b)s 4(ut)k
+3700(not)s 4067(within)s 4736(one)s 5138(w)s 2(ord\))k
+5757(to)s 5997(be)s 6280(treated)s 6988(the)s 7337(same)s
+7885(as)s 8136(one)s 8539(white)s 0 601(space)m 587(character)s 13(.)k
+480 227(The)m 220 fnt2 902 224(troff)m 240 fnt1 1330 227(setting)m
+2013(is)s 2216(the)s 2557(same)s 3097(as)s 220 fnt2
+3340 224(lout)m 240 fnt1 3742 227(e)m 3(xcept)k 4416(that)s
+4828(where)s 6(v)k 3(er)k 5761(a)s 5920(sentence)s
+6792(ends)s 7275(at)s 7500(the)s 7841(end)s 8238(of)s
+8502(a)s 8661(line,)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 47 53
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1578(3.5.)m 1871(@Space)s 240 fnt5 10248 -1581(47)m
+gsave
+1417 -15423 translate
+240 fnt1 9066 13370 0 13261 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+0 13207(one)m 415(e)s 3(xtra)k 962(space)s
+1562(is)s 1785(added.)s 2535(F)s 3(ormally)k 15(,)k
+3513(when)s 4102(tw)s 2(o)k 4525(objects)s 5266(are)s
+5627(separated)s 6600(by)s 6907(white)s 7507(space)s 8108(characters)s
+0 12919(which)m 660(include)s 1439(at)s 1689(least)s 2205(one)s
+2625(ne)s 6(wline)k 3451(character)s 9(,)k 4442(and)s
+4864(the)s 5231(\207rst)s 5680(object)s 6343(is)s 6572(a)s
+6756(w)s 2(ord)k 7323(ending)s 8046(in)s 8308(an)s 3(y)k
+8724(one)s 0 12631(of)m 288(a)s 471(certain)s 1194(set)s
+1536(of)s 1824(sequences)s 2862(of)s 3150(characters,)s 4241(the)s
+4606(e)s 3(xtra)k 5157(space)s 5761(is)s 5988(added.)s
+6741(The)s 7186(set)s 7528(of)s 7816(sequences)s 8855(of)s
+0 12343(characters)m 1025(depends)s 1868(on)s 2173(the)s 2528(current)s
+3272(language)s 4199(and)s 4610(is)s 4828(de\207ned)s 5598(in)s
+5849(the)s 220 fnt2 6204 12340(langdef)m 240 fnt1 6987 12343(for)m
+7333(that)s 7758(language)s 8686(\(see)s 0 12055(Section)m 774(3.12\).)s
+480 11681(The)m 220 fnt2 930 11678(te)m 6(x)k 240 fnt1
+1297 11681(option)m 1989(is)s 2221(the)s 2592(most)s 3139(complicated.)s
+4494(First,)s 5060(the)s 220 fnt2 5430 11678(compress)m 240 fnt1
+6458 11681(option)m 7149(is)s 7382(applied.)s 8272(Then,)s 8894(at)s
+0 11393(e)m 6(v)k 3(ery)k 576(sentence)s 1455(ending,)s
+2213(whether)s 3043(or)s 3302(not)s 3667(at)s 3899(the)s
+4246(end)s 4650(of)s 4921(a)s 5086(line,)s 5551(one)s
+5952(e)s 3(xtra)k 6486(space)s 7073(is)s 7282(added.)s
+8018(A)s 8247(sentence)s 0 11105(ending)m 709(is)s 923(de\207ned)s
+1690(as)s 1944(for)s 220 fnt2 2286 11102(troff)m 240 fnt1
+2726 11105(e)m 3(xcept)k 3411(that,)s 3880(in)s 4127(addition)s
+4972(to)s 5215(the)s 5568(preceding)s 6568(w)s 2(ord)k
+7120(ha)s 4(ving)k 7825(to)s 8068(end)s 8476(in)s
+8724(one)s 0 10817(of)m 268(a)s 431(certain)s 1134(set)s
+1456(of)s 1724(sequences)s 2742(of)s 3010(characters,)s 4081(the)s
+4426(character)s 5357(preceding)s 6350(that)s 6765(sequence)s 7695(must)s
+8217(e)s 3(xist)k 8722(and)s 0 10529(must)m 525(be)s
+807(a)s 973(lo)s 6(wer)k 4(-case)k 2053(letter)s 13(.)k
+2693(A)s 2924(character)s 3858(is)s 4068(a)s 4234(lo)s 6(wer)k 4(-case)k
+5314(letter)s 5864(if,)s 6116(in)s 6359(the)s 6707(Lout)s
+7219(Character)s 8208(Mapping)s 0 10241(\207le)m 393(\(Section)s 1278(3.3\))s
+1738(associated)s 2810(with)s 3325(the)s 3705(current)s 4473(font,)s
+4997(an)s 5313(upper)s 4(-case)k 6432(equi)s 6(v)k 6(alent)k
+7508(of)s 7811(the)s 8192(character)s 0 9953(is)m 210(de\207ned.)s
+240 fnt5 0 9210(3.6.)m 471(@YUnit,)s 1432(@ZUnit,)s 2380(@CurrYUnit,)s
+3859(and)s 4300(@CurrZUnit)s
+[ /Dest /LOUTyunit /DEST pdfmark
+240 fnt1 480 8739(The)m 220 fnt2
+917 8736(@YUnit)m 240 fnt1 1741 8739(symbol)m
+[ /Dest /LOUT19_4637_pre_yuni_1 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_yuni_2 /DEST pdfmark
+2510(changes)s 3342(the)s
+3699(v)s 6(alue)k 4277(of)s 4557(the)s 220 fnt2
+4915 8736(y)m 240 fnt1 5092 8739(unit)m 5534(of)s 5814(measurement)s
+7158(\(Section)s 8020(3.2\))s 8458(within)s 0 8451(its)m 276(right)s
+787(parameter)s 1801(to)s 2040(the)s 2388(v)s 6(alue)k
+2956(gi)s 6(v)k 3(en)k 3536(by)s 3830(the)s
+4178(left)s 4555(parameter:)s 220 fnt2 480 7950(1c @YUnit { ...)m 13( })k
+240 fnt1 0 7456(ensures)m 760(that)s 1170(the)s 1510(v)s 6(alue)k
+2070(of)s 220 fnt2 2333 7453(1y)m 240 fnt1 2615 7456(within)m
+3275(the)s 3615(right)s 4118(parameter)s 5124(will)s 5542(be)s
+220 fnt2 5816 7453(1c)m 240 fnt1 6043 7456(.)m 6199(The)s
+220 fnt2 6619 7453(@ZUnit)m 240 fnt1 7413 7456(symbol)m 8165(is)s
+8366(similar)s 9(,)k 0 7168(setting)m 688(the)s 1034(v)s 6(alue)k
+1600(of)s 1869(the)s 220 fnt2 2215 7165(z)m 240 fnt1
+2376 7168(unit)m 2806(in)s 3047(its)s 3321(right)s 3830(parameter)s 13(.)k
+4933(Both)s 5453(units)s 5967(ha)s 4(v)k 3(e)k
+6466(def)s 2(ault)k 7185(v)s 6(alue)k 7751(zero.)s
+8324(The)s 8749(left)s 0 6880(parameter)m 1011(may)s 1473(not)s
+1836(include)s 2592(a)s 2755(g)s 1(ap)k 3149(mode,)s
+3784(nor)s 4160(may)s 4622(it)s 4811(use)s 5182(the)s
+220 fnt2 5526 6877(w)m 240 fnt1 5682 6880(,)m 220 fnt2
+5786 6877(b)m 240 fnt1 5900 6880(,)m 220 fnt2 6003 6877(r)m
+240 fnt1 6076 6880(,)m 6180(or)s 6435(of)s 6702(course)s
+220 fnt2 7379 6877(d)m 240 fnt1 7545 6880(units,)m 8114(b)s 4(ut)k
+8472(it)s 8660(may)s 0 6592(be)m 3(gin)k 577(with)s
+220 fnt2 1050 6589(+)m 240 fnt1 1220 6592(or)m 220 fnt2
+1470 6589(-)m 240 fnt1 1584 6592(to)m 1814(indicate)s 2616(that)s
+3025(v)s 6(alue)k 3583(is)s 3784(to)s 4014(be)s
+4286(added)s 4907(to)s 5136(or)s 5386(subtracted)s 6416(from)s
+6931(the)s 7269(current)s 7996(v)s 6(alue.)k 8662(An)s 3(y)k
+0 6304(ne)m 3(g)k 1(ati)k 6(v)k 3(e)k
+853(result)s 1443(of)s 1714(using)s 220 fnt2 2286 6301(-)m
+240 fnt1 2410 6304(will)m 2836(be)s 3118(silently)s 3875(replaced)s
+4742(by)s 5036(zero.)s 480 5930(The)m 220 fnt2 913 5927(@CurrYUnit)m
+240 fnt1 2159 5930(and)m 220 fnt2 2569 5927(@CurrZUnit)m 240 fnt1
+3803 5930(symbols)m 4658(report)s 5294(the)s 5648(v)s 6(alue)k
+6222(of)s 6499(the)s 220 fnt2 6853 5927(y)m 240 fnt1
+7027 5930(and)m 220 fnt2 7437 5927(z)m 240 fnt1 7607 5930(units,)m
+8185(in)s 8434(points,)s 0 5642(truncated)m 947(to)s 1186(the)s
+1534(nearest)s 2270(inte)s 3(ger)k 13(.)k 3081(F)s 3(or)k
+3470(e)s 3(xample,)k 220 fnt2 480 5141(1i @YUnit { )m 11(The current v)k 5(alue of the y unit is @CurrYUnit })k
+240 fnt1 0 4643(produces)m 480 4140(The)m 908(current)s 1644(v)s 6(alue)k
+2212(of)s 2483(the)s 2831(y)s 3005(unit)s 3437(is)s
+3647(72p)s 0 3637(since)m 547(there)s 1080(are)s 1427(72)s
+1721(points)s 2357(in)s 2600(one)s 3002(inch)s 3471(\(at)s
+3782(least,)s 4326(Lout)s 4838(thinks)s 5474(there)s 6007(are\).)s
+480 3263(These)m 1123(units)s 1655(are)s 2018(not)s 2401(used)s
+2914(internally)s 3899(by)s 4209(Lout.)s 4842(The)s 3(y)k
+5401(are)s 5764(supplied)s 6649(as)s 6916(part)s 7363(of)s
+7650(the)s 8014(style)s 8538(infor)s 4(-)k 0 2975(mation)m
+731(for)s 1080(the)s 1439(con)s 9(v)k 3(enience)k
+2690(of)s 2972(application)s 4102(packages.)s 5154(F)s 3(or)k
+5554(e)s 3(xample,)k 6479(the)s 6838(Eq)s 7173(equation)s
+8065(formatting)s 0 2687(package)m 840(uses)s 1303(them)s 1841(to)s
+2080(\207ne-)s 2507(tune)s 2975(the)s 3323(appearance)s 4454(of)s
+4725(equations.)s 240 fnt5 0 1894(3.7.)m 471(@SetContext)s 1882(and)s
+2323(@GetContext)s
+[ /Dest /LOUTcont /DEST pdfmark
+240 fnt1 480 1462(As)m 833(earlier)s 1538(sections)s
+2395(sho)s 6(wed,)k 3265(the)s 3649(style)s 4193(information)s
+5414(contains)s 6299(man)s 3(y)k 6918(attrib)s 4(utes:)k
+8005(the)s 8390(current)s 0 1174(font,)m 509(break)s 1119(style,)s
+1695(colour)s 2384(and)s 2806(te)s 3(xture,)k 3591(and)s
+4013(so)s 4297(on.)s 4718(It)s 4941(is)s 5169(also)s
+5625(possible)s 153 fnt1 6405 1263(1)m 240 fnt1 6543 1174(to)m
+6800(add)s 7222(arbitrary)s 8115(additional)s 0 886(information)m 1213(to)s
+1480(the)s 1856(style,)s 2442(using)s 3042(the)s 220 fnt2
+3418 883(@SetConte)m 6(xt)k 240 fnt1 4804 886(symbol,)m 5644(and)s
+6076(retrie)s 6(v)k 3(e)k 6879(it)s 7099(using)s
+220 fnt2 7699 883(@GetConte)m 6(xt)k 240 fnt1 9022 886(.)m
+1134 0 0 0 240 288 60 0 267 LoutGr2
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+122 fnt1 0 72(1)m 192 fnt1 58 2(From)m 520(V)s 21(ersion)k
+1150(3.34)s 1529(of)s 1745(Basser)s 2302(Lout.)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1
+0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 48 54
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(48)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s
+8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+0 13205(F)m 3(or)k
+389(e)s 3(xample,)k 220 fnt2 480 12704({dir)m -5(n @Y)k 4(ield up} @SetConte)k 6(xt {)k
+480 12416(The current direction is {@GetConte)m 6(xt dir)k -5(n}.)k 480 12128(})m 240 fnt1
+0 11634(produces)m 480 11131(The)m 908(current)s 1644(direction)s 2550(is)s
+2760(up.)s 0 10626(The)m 435(object)s 1086(to)s 1333(the)s
+1688(left)s 2072(of)s 220 fnt2 2351 10623(@SetConte)m 6(xt)k
+240 fnt1 3716 10626(must)m 4249(be)s 4538(a)s 220 fnt2
+4711 10623(@Y)m 4(ield)k 240 fnt1 5472 10626(symbol)m 6239(whose)s
+6914(left)s 7299(parameter)s 9(,)k 8358(the)s 240 fnt6
+8714 10628(k)m 2(e)k 7(y)k 240 fnt1 9019 10626(,)m
+0 10338(e)m 6(v)k 6(aluates)k 948(to)s 1208(a)s
+1394(simple)s 2108(w)s 2(ord,)k 2725(and)s 3150(whose)s
+3838(right)s 4370(parameter)s 9(,)k 5442(the)s 240 fnt6
+5811 10340(value)m 240 fnt1 6322 10338(,)m 6449(may)s 6936(be)s
+7238(an)s 7542(arbitrary)s 8438(object.)s 0 10050(Since)m 220 fnt2
+601 10047(@Y)m 4(ield)k 240 fnt1 1369 10050(has)m 1754(high)s
+2251(precedence)s 3397(it)s 3604(will)s 4045(usually)s 4804(be)s
+5101(necessary)s 6099(to)s 6352(enclose)s 7140(non-tri)s 6(vial)k
+8212(v)s 6(alues)k 8883(in)s 0 9762(braces.)m 783(The)s
+1220(ef)s 6(fect)k 1826(is)s 2045(to)s 2294(associate)s
+3221(the)s 3579(v)s 6(alue)k 4156(with)s 4648(the)s
+5005(k)s 2(e)k 3(y)k 5410(in)s 5662(a)s
+5838(symbol)s 6607(table)s 7137(throughout)s 8257(the)s 8615(right)s
+0 9474(parameter)m 1048(of)s 1353(the)s 220 fnt2 1735 9471(@SetConte)m 6(xt)k
+240 fnt1 3128 9474(symbol,)m 3974(as)s 4258(part)s 4724(of)s
+5029(the)s 5411(style)s 5952(information.)s 7279(The)s 7741(v)s 6(alue)k
+8343(may)s 8844(be)s 0 9186(retrie)m 6(v)k 3(ed)k
+897(an)s 3(ywhere)k 1880(in)s 2123(this)s 2519(re)s 3(gion)k
+3184(by)s 3478(in)s 9(v)k 4(oking)k 220 fnt2
+4370 9183(@GetConte)m 6(xt)k 240 fnt1 5753 9186(with)m 6235(the)s
+6583(k)s 2(e)k 3(y)k 6978(as)s 7228(its)s
+7504(right)s 8015(parameter)s 13(.)k 480 8812(The)m 901(v)s 6(alue)k
+1461(is)s 1663(e)s 6(v)k 6(aluated)k 2617(using)s
+3181(the)s 3521(style)s 4020(and)s 4416(en)s 9(vironment)k
+5668(where)s 6300(it)s 6484(occurs,)s 7207(not)s 7565(where)s
+8197(it)s 8381(is)s 8583(used.)s 0 8524(In)m 264(an)s 3(y)k
+669(case)s 1145(in)s 1396(most)s 1930(applications)s 3144(the)s
+3500(v)s 6(alue)k 4077(will)s 4511(be)s 4802(a)s
+4976(simple)s 5677(w)s 2(ord,)k 6283(independent)s 7521(of)s
+7801(an)s 3(y)k 8206(style)s 8722(and)s 0 8236(en)m 9(vironment,)k
+1307(used)s 1804(to)s 2043(select)s 2646(a)s 2812(branch)s
+3520(in)s 3763(a)s 3929(case)s 4396(e)s 3(xpression,)k
+5523(lik)s 2(e)k 5935(this:)s 220 fnt2 480 7735({@GetConte)m 6(xt dir)k -5(n} @Case {)k
+480 7447( up @Y)m 4(ield ...)k 480 7159( do)m 3(wn @Y)k 4(ield ...)k
+480 6871(})m 0 6374(@GetConte)m 6(xt)k 240 fnt1 1383 6377(reports)m
+2097(an)s 2380(error)s 2903(if)s 3120(there)s 3653(is)s
+3863(no)s 4156(v)s 6(alue)k 4724(associated)s 5764(with)s
+6246(its)s 6522(k)s 2(e)k 3(y)k 6917(in)s
+7160(the)s 7508(current)s 8244(style.)s 240 fnt5 0 5584(3.8.)m
+471(@SetColour)s 1788(and)s 2229(@SetColor)s
+[ /Dest /LOUTcolour /DEST pdfmark
+240 fnt1 480 5152(The)m
+220 fnt2 927 5149(@SetColour)m 240 fnt1 2204 5152(and)m 220 fnt2
+2628 5149(@SetColor)m 240 fnt1 3783 5152(symbols,)m
+[ /Dest /LOUT19_4637_pre_colo_1 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_colo_2 /DEST pdfmark
+4708(which)s 5370(ha)s 4(v)k 3(e)k
+5891(identical)s 6788(ef)s 6(fect,)k 7451(return)s 8098(their)s
+8615(right)s 0 4864(parameter)m 1047(in)s 1323(the)s 1704(colour)s
+2408(speci\207ed)s 3349(by)s 3676(their)s 4206(left)s 4617(parameter)s 13(.)k
+5755(The)s 6216(form)s 6773(of)s 7077(the)s 7458(left)s
+7868(parameter)s 8916(is)s 0 4576(implementation-dependent;)m 2693(in)s 2954(Basser)s
+3670(Lout)s 4200(it)s 4410(must)s 4954(be)s 5254(an)s
+5555(object)s 6218(whose)s 6904(v)s 6(alue)k 7490(is)s
+7719(a)s 7903(sequence)s 8855(of)s 0 4288(w)m 2(ords)k
+634(comprising)s 1763(a)s 1929(PostScript)s 2971(command)s 3973(for)s
+4311(setting)s 5001(colour)s 13(.)k 5763(F)s 3(or)k
+6152(e)s 3(xample,)k 220 fnt2 480 3787({ 1.0 0.0 0.0 setrgbcolor } @SetColour { hello)m 8(, w)k 2(or)k -3(ld })k
+240 fnt1 0 3288(produces)m 915(the)s 1263(red)s 1626(result)s
+1.0 0.0 0.0 setrgbcolor 480 2785(hello,)m 1065(w)s 2(orld)k 0.0 0.0 0.0 LoutSetRGBColor
+0 2301(Of)m 322(course,)s 1050(a)s 1213(colour)s 1881(output)s
+2550(de)s 6(vice)k 3222(is)s 3429(needed)s 4162(to)s
+4398(see)s 4756(the)s 5101(ef)s 6(fect;)k 5747(on)s
+6041(a)s 6204(monochrome)s 7520(de)s 6(vice)k 8191(the)s
+8536(result)s 0 2013(will)m 426(be)s 708(some)s 1269(shade)s
+1870(of)s 2141(gre)s 3(y)k 15(.)k 480 1639(The)m
+220 fnt2 901 1636(@SetColour)m 240 fnt1 2151 1639(command)m 3145(accepts)s
+3892(the)s 4232(special)s 4943(v)s 6(alue)k 220 fnt2
+5504 1636(nochange)m 240 fnt1 6512 1639(for)m 6843(the)s 7183(left)s
+7553(parameter)s 13(.)k 8650(This)s 0 1351(v)m 6(alue)k
+574(causes)s 1256(the)s 1611(right)s 2129(parameter)s 3150(to)s
+3396(ha)s 4(v)k 3(e)k 3904(the)s 4258(colour)s
+4936(it)s 5135(w)s 2(ould)k 5797(ha)s 4(v)k 3(e)k
+6305(had)s 6716(without)s 7514(the)s 220 fnt2 7869 1348(@SetColour)m
+240 fnt1 0 1063(command.)m 1108(An)s 1458(empty)s 2110(left)s
+2487(parameter)s 3501(also)s 3939(has)s 4309(this)s 4705(ef)s 6(fect.)k
+480 689(There)m 1132(is)s 1382(no)s 1715(def)s 2(ault)k
+2476(colour)s 9(,)k 3225(so)s 3530(the)s 3918(user)s
+4416(must)s 4981(ensure)s 5701(that)s 6159(the)s 6546(root)s
+7031(g)s 1(alle)k 3(y)k 7705(or)s 8004(each)s
+8539(of)s 8850(its)s 0 401(components)m 1208(is)s 1418(enclosed)s
+2313(in)s 2556(a)s 220 fnt2 2722 398(@SetColour)m 240 fnt1
+3979 401(symbol)m 4739(whose)s 5407(left)s 5784(parameter)s 6798(is)s
+7008(not)s 220 fnt2 7374 398(nochange)m 240 fnt1 8330 401(.)m
+
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 49 55
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt8 vec2 /Times-Italic LoutRecode
+/fnt8 { /Times-Italicfnt8 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(3.8.)m 1871(@SetColour)s 3127(and)s 3553(@SetColor)s
+240 fnt5 10249 -1583(49)m gsave
+1417 -15423 translate
+240 fnt1 9066 13412 0 13303 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+480 13249(In)m 754(addition)s
+1613(to)s 1870(setting)s 2579(the)s 2945(colour)s 3634(used)s
+4150(in)s 4411(the)s 4777(follo)s 6(wing)k 5773(object,)s
+6482(the)s 220 fnt2 6848 13246(@SetColour)m 240 fnt1 8124 13249(command)m
+0 12961(also)m 438(sets)s 847(the)s 1195(underline)s 2154(colour)s
+2825(in)s 3068(that)s 3485(object,)s 4176(lik)s 2(e)k
+220 fnt2 4588 12958(@SetUnder)m -3(lineColour)k 240 fnt1 6785 12961(from)m
+7309(Section)s 8083(3.9.)s 8486(While)s 0 12673(a)m 165(case)s
+630(could)s 1218(be)s 1498(made)s 2071(for)s 2407(k)s 2(eeping)k
+3214(these)s 3759(tw)s 2(o)k 4168(attrib)s 4(utes)k
+5101(of)s 5370(style)s 5875(independent,)s 7151(most)s 7674(people)s
+8366(w)s 2(ant)k 8887(to)s 0 12385(underline)m 966(in)s
+1216(the)s 1571(same)s 2125(colour)s 2804(as)s 3061(the)s
+3416(te)s 3(xt)k 3838(most)s 4371(of)s 4649(the)s
+5004(time,)s 5542(and)s 5954(this)s 6357(beha)s 4(viour)k
+7377(gi)s 6(v)k 3(es)k 7931(this)s 8335(without)s
+0 12097(an)m 3(y)k 397(need)s 907(to)s 1146(use)s
+220 fnt2 1521 12094(@SetUnder)m -3(lineColour)k 240 fnt1 3718 12097(e)m 3(xplicitly)k 15(.)k
+480 11723(Lout)m 1046(mak)s 2(es)k 1761(no)s 2109(attempt)s
+2939(to)s 3233(understand)s 4396(colour)s 9(,)k 5159(it)s
+5406(simply)s 6166(prints)s 6815(the)s 7218(PostScript)s 8315(or)s
+8629(PDF)s 0 11435(commands)m 1082(when)s 1652(appropriate.)s 2897(This)s
+3367(has)s 3731(the)s 4072(adv)s 6(antage)k 5086(of)s
+5350(permitting)s 6392(access)s 7047(to)s 7279(an)s 3(y)k
+7670(of)s 7934(PostScript')s 13(s)k 0 11147(colour)m 703(models)s
+1478(\(some)s 2150(require)s 2915(initialization)s 4210(which)s 4885(can)s
+5306(be)s 5621(supplied)s 6522(using)s 220 fnt2 7127 11144(@PrependGr)m 2(aphic)k
+240 fnt1 8940 11147(\),)m 0 10859(b)m 4(ut)k 373(the)s
+733(disadv)s 6(antage)k 2044(of)s 2326(of)s 6(fering)k
+3154(no)s 3459(w)s 2(ay)k 3922(to)s 4172(mak)s 2(e)k
+4756(relati)s 6(v)k 3(e)k 5530(changes)s 6364(\(`as)s
+6783(before)s 7461(only)s 7953(redder)s 9(,)k 16(')k
+8722(and)s 0 10571(so)m 266(on\).)s 480 10197(F)m 3(or)k
+870(those)s 1432(who)s 1899(wish)s 2409(to)s 2649(obtain)s
+3305(colour)s 3977(without)s 4769(w)s 2(orking)k 5619(v)s 3(ery)k
+6096(hard,)s 6629(the)s 220 fnt2 6978 10194(setrgbcolor)m 240 fnt1
+8124 10197(command)m 0 9909(used)m 496(abo)s 3(v)k 3(e)k
+1117(is)s 1325(a)s 4(v)k 6(ailable)k 2232(in)s
+2474(e)s 6(v)k 3(ery)k 3048(v)s 3(ersion)k
+3805(of)s 4075(PostScript,)s 5162(requires)s 5981(no)s 6273(initialization,)s
+7584(and)s 7987(is)s 8196(simple)s 8887(to)s 0 9621(use.)m
+485(The)s 915(three)s 1450(numbers,)s 2384(which)s 3028(range)s
+3617(from)s 4143(0.0)s 4501(to)s 4742(1.0,)s 5151(determine)s
+6164(the)s 6515(intensity)s 7394(of)s 7667(red,)s 8081(green,)s
+8722(and)s 0 9333(blue)m 468(respecti)s 6(v)k 3(ely)k 15(.)k
+1762(Some)s 2363(useful)s 3002(v)s 6(alues)k 3658(for)s
+3996(the)s 4344(left)s 4721(parameter)s 5735(are)s 220 fnt2
+480 8768(1.0)m 838(0.0)s 1196(0.0)s 1554(setrgbcolor)s 240 fnt6
+2979 8773(r)m 8(ed)k 220 fnt2 480 8449(0.0)m 838(1.0)s
+1196(0.0)s 1554(setrgbcolor)s 240 fnt6 2979 8454(gr)m 8(een)k
+220 fnt2 480 8119(0.0)m 838(0.0)s 1196(1.0)s 1554(setrgbcolor)s
+240 fnt6 2979 8124(blue)m 220 fnt2 480 7789(1.0)m 838(1.0)s
+1196(1.0)s 1554(setrgbcolor)s 240 fnt6 2979 7794(white)m 220 fnt2
+480 7470(0.5)m 837(0.5)s 1194(0.5)s 1551(setrgbcolor)s 240 fnt6
+2979 7475(gr)m 8(e)k 7(y)k 220 fnt2 480 7140(0.0)m
+838(0.0)s 1196(0.0)s 1554(setrgbcolor)s 240 fnt6 2979 7145(blac)m 4(k)k
+240 fnt1 0 6584(Colouring)m 1042(an)s 1344(object)s 2007(white)s
+2613(is)s 2841(useful)s 3499(for)s 3856(producing)s 4899(an)s
+5200(empty)s 5871(space)s 6477(whose)s 7164(size)s 7609(is)s
+7838(that)s 8275(of)s 8565(some)s 0 6296(object.)m 480 5922(Since)m
+1076(the)s 1434(introduction)s 2670(of)s 2951(te)s 3(xtures)k
+3765(to)s 4014(Lout)s 4536(in)s 4789(V)s 26(ersion)k
+5587(3.27,)s 6124(direct)s 6737(use)s 7122(of)s 7403(PostScript)s
+8455(colour)s 0 5634(setting)m 689(operations)s 1734(such)s 2228(as)s
+220 fnt2 2476 5631(setrgbcolor)m 240 fnt1 3620 5634(is)m 3828(deprecated.)s
+5025(Instead,)s 5820(Lout)s 6330(of)s 6(fers)k 6930(its)s
+7204(o)s 6(wn)k 7666(v)s 3(ersions)k 8509(of)s
+8778(the)s 0 5346(standard)m 868(PostScript)s 1910(colour)s 2581(setting)s
+3271(operations:)s 2982 12 0 12 240 288 60 480 4610 LoutGr2
+LoutBox 0.0 0.0 0.0 LoutSetRGBColor fill
+grestore
+
+grestore
+240 fnt8 624 4762(If)m 864(you)s 1264(want)s
+1794(this)s gsave
+3462 4610 translate
+240 fnt1 3616 12 0 12 240 288 60 LoutGraphic
+gsave
+LoutBox 0.0 0.0 0.0 LoutSetRGBColor fill
+grestore
+
+grestore
+3606(Y)s 22(ou)k 4011(should)s
+4716(r)s 3(ather)k 5376(write)s 5920(this)s 220 fnt2
+624 4373(n)m 2(um)k 1096(setg)s 2(r)k 2(a)k 6(y)k
+3606(n)s 2(um)k 4078(LoutSetGr)s 2(a)k 6(y)k
+624 3989(n)m 2(um)k 1096(n)s 2(um)k 1568(n)s 2(um)k
+2040(setrgbcolor)s 3606(n)s 2(um)k 4078(n)s 2(um)k
+4550(n)s 2(um)k 5022(LoutSetRGBColor)s 624 3605(n)m 2(um)k
+1096(n)s 2(um)k 1568(n)s 2(um)k 2040(sethsbcolor)s
+3606(n)s 2(um)k 4078(n)s 2(um)k 4550(n)s 2(um)k
+5022(LoutSetHSBColor)s gsave
+480 3074 translate
+240 fnt1 2982 12 0 12 240 288 60 LoutGraphic
+gsave
+LoutBox 0.0 0.0 0.0 LoutSetRGBColor fill
+grestore
+
+grestore
+624 3221(n)m 2(um)k 1096(n)s 2(um)k
+1568(n)s 2(um)k 2040(setcm)s 3(ykcolor)k gsave
+3462 3074 translate
+240 fnt1
+3616 12 0 12 240 288 60 LoutGraphic
+gsave
+LoutBox 0.0 0.0 0.0 LoutSetRGBColor fill
+grestore
+
+grestore
+3606(n)s 2(um)k 4078(n)s 2(um)k 4550(n)s 2(um)k
+5022(LoutSetCMYKColor)s 240 fnt1 0 2635(The)m 462(Lout)s 1008(v)s 3(ersions)k
+1887(are)s 2268(equi)s 6(v)k 6(alent)k 3346(to)s
+3619(the)s 4001(PostScript)s 5077(ones)s 5601(b)s 4(ut)k
+5997(without)s 6822(the)s 7204(unw)s 2(anted)k 8225(ef)s 6(fect)k
+8855(of)s 0 2347(causing)m 784(the)s 1132(current)s 1868(te)s 3(xture)k
+2584(to)s 2823(be)s 3105(for)s 4(gotten.)k 240 fnt5
+0 1554(3.9.)m 471(@SetUnderlineColour)s 2810(and)s 3251(@SetUnderlineColor)s
+[ /Dest /LOUTunderline_colour /DEST pdfmark
+240 fnt1
+480 1122(The)m 220 fnt2 905 1119(@SetUnder)m -3(lineColour)k 240 fnt1
+3099 1122(and)m 220 fnt2 3500 1119(@SetUnder)m -3(lineColor)k 240 fnt1
+5571 1122(symbols,)m
+[ /Dest /LOUT19_4637_pre_ucol_1 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_ucol_2 /DEST pdfmark
+6473(which)s 7112(ha)s 4(v)k 3(e)k
+7610(identical)s 8483(ef)s 6(fect,)k 0 834(ensure)m 698(that)s
+1134(an)s 3(y)k 1549(underlining)s 2723(in)s 2984(the)s
+3350(right)s 3879(parameter)s 4911(is)s 5139(done)s 5679(in)s
+5940(the)s 6306(colour)s 6995(speci\207ed)s 7921(by)s 8233(their)s
+8749(left)s 0 546(parameter)m 13(.)k 1105(The)s 1533(left)s
+1910(parameter)s 2924(is)s 3134(a)s 3300(colour)s 3971(as)s
+4221(for)s 220 fnt2 4559 543(@SetColour)m 240 fnt1 5816 546(in)m
+6059(Section)s 6833(3.8.)s 480 172(T)m 19(o)k 780(actually)s
+1590(get)s 1942(underlining,)s 3152(you)s 3567(ha)s 4(v)k 3(e)k
+4068(to)s 4307(use)s 4682(the)s 220 fnt2 5030 169(@Under)m -3(line)k
+240 fnt1 6245 172(symbol)m 7005(\(Section)s 7858(3.51\).)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1
+0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 50 56
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(50)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s
+8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+480 13205(Note)m
+1002(that)s 1422(the)s 220 fnt2 1771 13202(@SetColour)m 240 fnt1
+3030 13205(symbol)m 3791(from)s 4317(Section)s 5092(3.8)s 5441(includes)s
+6290(the)s 6640(ef)s 6(fect)k 7237(of)s 220 fnt2
+7510 13202(@SetUnder)m -3(line-)k 0 12914(Colour)m 240 fnt1 645 12917(,)m
+747(so)s 1007(in)s 1244(the)s 1586(usual)s 2140(case)s
+2601(where)s 3235(underlining)s 4385(is)s 4589(to)s 4822(be)s
+5098(in)s 5335(the)s 5677(same)s 6218(colour)s 6883(as)s
+7127(the)s 7469(te)s 3(xt)k 7878(being)s 8457(under)s 4(-)k
+0 12629(lined,)m 585(there)s 1118(is)s 1328(no)s 1621(need)s
+2131(to)s 2370(use)s 220 fnt2 2745 12626(@SetUnder)m -3(lineColour)k
+240 fnt1 4882 12629(.)m 240 fnt5 0 11855(3.10.)m 591(@SetT)s 22(extur)k 4(e)k
+
+[ /Dest /LOUTtexture /DEST pdfmark
+240 fnt1 480 11423(The)m 220 fnt2 943 11420(@SetT)m 26(e)k 6(xture)k
+240 fnt1 2295 11423(symbol)m
+[ /Dest /LOUT19_4637_pre_text_1 /DEST pdfmark
+3091(returns)s 3841(its)s 4152(right)s
+4699(parameter)s 5749(in)s 6028(the)s 6411(te)s 3(xture)k
+7163(speci\207ed)s 8107(by)s 8437(its)s 8749(left)s 0 11135(parameter)m 13(.)k
+1105(A)s 1335(te)s 3(xture)k 2051(is)s 2261(a)s
+2427(pattern)s 3147(used)s 3644(when)s 4220(\207lling)s 4844(areas)s
+5385(to)s 5624(get)s 5976(a)s 6142(te)s 3(xture)k
+6858(rather)s 7474(than)s 7943(solid)s 8466(color)s 13(.)k
+480 10761(In)m 736(the)s 1084(PostScript)s 2125(w)s 2(orld,)k
+2788(te)s 3(xtures)k 3592(are)s 3938(called)s 4566(patterns,)s
+5429(and)s 5832(the)s 6180(rele)s 6(v)k 6(ant)k
+6997(PostScript)s 8038(commands)s 0 10473(use)m 390(this)s 801(terminology)s 15(.)k
+2135(The)s 2578(author)s 3264(has)s 3650(preferred)s 4597(the)s
+4960(term)s 5473(`te)s 3(xture')k 6339(because)s 7167(it)s
+7375(is)s 7600(more)s 8162(precise:)s 8960(a)s 0 10185(pattern)m
+720(could)s 1310(be)s 1592(a)s 1758(pattern)s 2478(for)s
+2816(an)s 3(ything.)k 480 9811(The)m 220 fnt2 896 9808(@SetT)m 26(e)k 6(xture)k
+240 fnt1 2200 9811(command)m 3189(accepts)s 3931(the)s 4267(special)s
+4972(v)s 6(alue)k 220 fnt2 5528 9808(nochange)m 240 fnt1
+6532 9811(for)m 6857(the)s 7193(left)s 7558(parameter)s 13(.)k
+8650(This)s 0 9523(v)m 6(alue)k 568(causes)s 1243(the)s
+1591(right)s 2102(parameter)s 3116(to)s 3355(ha)s 4(v)k 3(e)k
+3856(the)s 4204(te)s 3(xture)k 4920(it)s 5112(w)s 2(ould)k
+5767(ha)s 4(v)k 3(e)k 6268(had)s 6672(without)s
+7463(the)s 220 fnt2 7810 9520(@SetT)m 26(e)k 6(xture)k
+240 fnt1 0 9235(command.)m 1108(An)s 1458(empty)s 2110(left)s
+2487(parameter)s 3501(also)s 3939(has)s 4309(this)s 4705(ef)s 6(fect.)k
+480 8861(Another)m 1329(special)s 2052(v)s 6(alue)k 2625(is)s
+220 fnt2 2840 8858(LoutT)m 26(e)k 6(xtureSolid)k 240 fnt1
+4453 8861(,)m 4565(which)s 5212(means)s 5879(no)s 6177(te)s 3(xture)k
+6898(at)s 7135(all,)s 7485(just)s 7895(solid)s 8424(colour)s 13(.)k
+0 8573(It)m 207(w)s 2(ould)k 864(be)s 1149(useful)s
+1790(to)s 2032(change)s 2768(back)s 3284(to)s 3525(solid)s
+4051(colour)s 4724(within)s 5395(an)s 5680(enclosing)s 6653(te)s 3(xtured)k
+7493(re)s 3(gion.)k 8268(It)s 8475(is)s 8688(also)s
+0 8285(the)m 355(initial)s 973(te)s 3(xture;)k 1752(thus)s
+2209(there)s 2749(is)s 2966(no)s 3266(need)s 3783(to)s
+4029(ensure)s 4716(that)s 5141(the)s 5496(root)s 5948(g)s 1(alle)k 3(y)k
+6589(or)s 6855(each)s 7357(of)s 7635(its)s 7918(components)s
+0 7997(is)m 210(enclosed)s 1105(in)s 1348(a)s 220 fnt2
+1514 7994(@SetT)m 26(e)k 6(xture)k 240 fnt1 2830 7997(symbol.)m
+480 7623(The)m 934(form)s 1485(of)s 1783(the)s 2158(left)s
+2561(parameter)s 3602(is)s 3839(implementation-dependent;)s 6541(in)s 6810(Basser)s
+7534(Lout)s 8073(it)s 8292(must)s 8844(be)s 0 7335(an)m
+288(object)s 937(whose)s 1610(v)s 6(alue)k 2184(is)s
+2399(a)s 2570(sequence)s 3509(of)s 3785(w)s 2(ords)k
+4424(comprising)s 5559(PostScript)s 6606(for)s 6949(setting)s 7645(a)s
+7816(te)s 3(xture,)k 8588(up)s 8887(to)s 0 7047(and)m
+407(including)s 1367(the)s 1718(PostScript)s 220 fnt2 2763 7044(setpatter)m -5(n)k
+240 fnt1 3793 7047(command)m 4799(\(or)s 5140(equi)s 6(v)k 6(alent\))k
+6255(which)s 6900(installs)s 7630(the)s 7981(te)s 3(xture)k
+8701(into)s 0 6759(the)m 347(graphics)s 1207(state.)s 1807(Lout)s
+2318(mak)s 2(es)k 2977(no)s 3269(attempt)s 4044(to)s
+4282(understand)s 5389(te)s 3(xtures,)k 6248(it)s 6439(simply)s
+7143(prints)s 7737(the)s 8084(PostScript)s 0 6471(commands)m 1083(when)s
+1654(appropriate.)s 2901(Consult)s 3701([)s
+[ /Rect [3772 6471 3867 6633] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTadobe1990ps /ANN pdfmark
+3772(1)s 3867(])s
+3980(for)s 4312(information)s 5492(about)s 6079(PostScript)s 7116(patterns.)s
+7971(Y)s 26(ou')k 2(ll)k 8616(need)s 0 6183(to)m
+239(do)s 532(that)s 950(in)s 1193(order)s 1757(to)s
+1996(mak)s 2(e)k 2568(sense)s 3142(of)s 3413(the)s
+3761(rest)s 4165(of)s 4436(this)s 4832(section.)s 480 5809(Since)m
+1065(b)s 4(uilding)k 1909(e)s 6(v)k 3(en)k
+2406(a)s 2569(simple)s 3259(te)s 3(xture)k 3972(tak)s 2(es)k
+4509(a)s 4672(lot)s 4981(of)s 5249(PostScript)s 6288(and)s
+6689(is)s 6896(quite)s 7427(error)s 4(-prone,)k 8614(Lout)s
+0 5521(de\207nes)m 721(tw)s 2(o)k 1122(symbols)s 1962(in)s
+2197(the)s 2536(PostScript)s 3569(prologue)s 4467(called)s 220 fnt2
+5087 5518(LoutMak)m 4(eT)k 26(e)k 6(xture)k 240 fnt1
+6802 5521(and)m 220 fnt2 7197 5518(LoutSetT)m 26(e)k 6(xture)k
+240 fnt1 8708 5521(that)m 0 5233(you)m 415(can)s 804(use)s
+1179(to)s 1418(mak)s 2(e)k 1990(and)s 2394(set)s
+2719(a)s 2885(te)s 3(xture,)k 3652(lik)s 2(e)k
+4064(this:)s 220 fnt2 480 4735({ "1 1 1 0 dg 0 pt 0 pt")m 480 4447( "2 [0 0 2 pt 3 pt] 2 pt 3 pt { ...)m 13( }")k
+480 4159( "LoutMak)m 4(eT)k 26(e)k 6(xture LoutSetT)k 26(e)k 6(xture")k
+480 3871(} @SetT)m 26(e)k 6(xture ...)k 240 fnt1 0 3377(W)m 19(e')k 2(ll)k
+598(e)s 3(xplain)k 1377(both)s 1881(symbols)s 2752(in)s
+3016(detail)s 3622(in)s 3887(a)s 4074(moment,)s 4986(b)s 4(ut)k
+5369(just)s 5796(brie\210y)s 15(,)k 220 fnt2 6533 3374(LoutMak)m 4(eT)k 26(e)k 6(xture)k
+240 fnt1 8278 3377(mak)m 2(es)k 8960(a)s 0 3089(te)m 3(xture,)k
+798(lea)s 4(ving)k 1582(a)s 1779(pattern)s 2530(dictionary)s
+3584(as)s 3865(returned)s 4750(by)s 220 fnt2 5075 3086(mak)m 4(epatter)k -5(n)k
+240 fnt1 6373 3089(on)m 6701(the)s 7080(e)s 3(x)k 3(ecution)k
+8092(stack,)s 8722(and)s 220 fnt2 0 2798(LoutSetT)m 26(e)k 6(xture)k
+240 fnt1 1510 2801(installs)m 2227(this)s 2612(te)s 3(xture)k
+3318(into)s 3732(the)s 4070(current)s 4795(graphics)s 5646(state,)s
+6179(lik)s 2(e)k 220 fnt2 6581 2798(setpatter)m -5(n)k
+240 fnt1 7597 2801(b)m 4(ut)k 7949(without)s 8729(an)s 3(y)k
+0 2513(mention)m 841(of)s 1112(colour)s 13(.)k 220 fnt2
+480 2136(LoutMak)m 4(eT)k 26(e)k 6(xture)k 240 fnt1
+2251 2139(is)m 2508(just)s 2961(a)s 3174(con)s 9(v)k 3(enience)k
+4461(de\207nition)s 5483(that)s 5948(constructs)s 7015(a)s 7229(pattern)s
+7996(matrix)s 8722(and)s 0 1851(dictionary)m 15(,)k 1054(populating)s
+2124(them)s 2655(with)s 3129(the)s 3470(stack)s 4015(elements)s
+4907(to)s 5139(its)s 5408(left,)s 5825(then)s 6286(calls)s
+220 fnt2 6767 1848(mak)m 4(epatter)k -5(n)k 240 fnt1
+7974 1851(.)m 8131(Y)s 26(ou)k 8565(don')s 4(t)k
+0 1563(ha)m 4(v)k 3(e)k 524(to)s 786(use)s
+1184(it)s 1399(if)s 1639(you)s 2077(don')s 4(t)k
+2661(w)s 2(ant)k 3207(to.)s 3580(The)s 4031(abo)s 3(v)k 3(e)k
+4676(e)s 3(xample)k 5562(of)s 220 fnt2 5856 1560(LoutMak)m 4(eT)k 26(e)k 6(xture)k
+240 fnt1 7603 1563(sets)m 8035(the)s 8406(pattern)s 0 1275(matrix)m
+678(and)s 1082(dictionary)s 2105(as)s 2355(follo)s 6(ws.)k
+480 901(The)m 907(\207rst)s 1336(number)s 2125(is)s 2333(a)s
+2498(scale)s 3029(f)s 2(actor)k 9(,)k 3679(and)s
+4081(the)s 4428(second)s 5149(and)s 5551(third)s 6058(are)s
+6404(horizontal)s 7426(and)s 7828(v)s 3(ertical)k 8593(scale)s
+0 613(f)m 2(actors.)k 813(The)s 1243(fourth)s 1886(\()s
+220 fnt2 1959 610(0 dg)m 240 fnt1 2374 613(\))m 2504(is)s
+2716(an)s 3001(angle)s 3577(of)s 3851(rotation.)s 4760(The)s
+5190(\207fth)s 5647(and)s 6053(sixth)s 6577(are)s 6926(horizontal)s
+7952(and)s 8359(v)s 3(ertical)k 0 325(shifts.)m 681(These)s
+1308(six)s 1642(numbers)s 2517(determine)s 3528(the)s 3876(pattern)s
+4596(transformation)s 6059(matrix)s 6737(passed)s 7433(to)s 220 fnt2
+7672 322(mak)m 4(epatter)k -5(n)k 240 fnt1 8879 325(.)m
+
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 51 57
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1578(3.10.)m 1991(@SetT)s 22(e)k 4(xtur)k 8(e)k
+240 fnt5 10256 -1581(51)m gsave
+1417 -15423 translate
+240 fnt1 9066 13415 0 13306 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+480 13252(The)m 907(remaining)s
+1928(elements)s 2826(go)s 3118(into)s 3541(the)s 3888(pattern)s
+4606(dictionary)s 15(.)k 220 fnt2 5723 13249(P)m 8(aintT)k 26(ype)k
+240 fnt1 6726 13252(is)m 6935(set)s 7258(to)s 7496(the)s
+7842(\207rst)s 8272(of)s 8541(them,)s 0 12964(or)m 250(the)s
+589(se)s 6(v)k 3(enth)k 1359(item)s 1834(o)s 3(v)k 3(erall)k
+2537(\(2)s 2781(in)s 3015(our)s 3384(e)s 3(xample,)k
+4289(denoting)s 5171(an)s 5445(uncoloured)s 6571(pattern,)s 7332(which)s
+7965(will)s 8381(usually)s 0 12676(be)m 298(the)s 663(best)s
+1125(choice;)s 1877(the)s 2242(pattern)s 2979(will)s 3421(be)s
+3720(painted)s 4499(in)s 4758(the)s 5123(current)s 5876(colour\),)s
+220 fnt2 6689 12673(BBo)m 6(x)k 240 fnt1 7282 12676(is)m
+7509(set)s 7850(to)s 8106(the)s 8471(eighth)s 0 12388(item,)m
+538(here)s 220 fnt2 1012 12385([0 0 2 pt 3 pt])m 240 fnt1 2280 12388(,)m
+220 fnt2 2394 12385(XStep)m 240 fnt1 3050 12388(is)m 3267(set)s
+3600(to)s 3846(the)s 4201(ninth)s 4757(item,)s 5295(here)s
+220 fnt2 5769 12385(2 pt)m 240 fnt1 6131 12388(,)m 220 fnt2
+6246 12385(YStep)m 240 fnt1 6902 12388(is)m 7119(set)s 7451(to)s
+7697(the)s 8052(tenth)s 8595(item,)s 0 12100(here)m 220 fnt2
+465 12097(3 pt)m 240 fnt1 827 12100(,)m 932(and)s 220 fnt2
+1334 12097(P)m 8(aintProc)k 240 fnt1 2329 12100(is)m 2537(set)s
+2859(to)s 3096(the)s 3442(ele)s 6(v)k 3(enth)k
+4298(and)s 4700(last)s 5089(item,)s 5617(which)s 6257(should)s
+6952(be)s 7232(an)s 7513(e)s 3(x)k 3(ecutable)k
+8582(array)s 0 11812(as)m 257(sho)s 6(wn.)k 1049(All)s
+1417(non-zero)s 2328(lengths)s 3077(must)s 3610(be)s 3900(in)s
+4151(absolute)s 5012(units,)s 5591(that)s 6017(is,)s 6291(follo)s 6(wed)k
+7201(by)s 220 fnt2 7502 11809(in)m 240 fnt1 7658 11812(,)m
+220 fnt2 7773 11809(cm)m 240 fnt1 8052 11812(,)m 220 fnt2
+8167 11809(pt)m 240 fnt1 8346 11812(,)m 8461(or)s 220 fnt2
+8728 11809(em)m 240 fnt1 9019 11812(,)m 0 11524(otherwise)m 985(the)s
+1333(results)s 2007(will)s 2433(be)s 2715(unpredictable.)s 220 fnt2
+480 11147(LoutSetT)m 26(e)k 6(xture)k 240 fnt1 2039 11150(installs)m
+2805(the)s 3192(gi)s 6(v)k 3(en)k 3811(te)s 3(xture)k
+4566(into)s 5031(the)s 5418(graphics)s 6318(state,)s 6901(preserving)s
+8002(the)s 8390(current)s 0 10862(colour)m 13(.)k 819(Y)s 26(ou)k
+1318(must)s 1900(use)s 220 fnt2 2332 10859(LoutSetT)m 26(e)k 6(xture)k
+240 fnt1 3909 10862(and)m 4370(you)s 4842(must)s 5424(not)s
+5847(use)s 220 fnt2 6279 10859(setcolorspace)m 240 fnt1 7625 10862(,)m
+220 fnt2 7789 10859(setcolor)m 240 fnt1 8557 10862(,)m 8722(and)s
+220 fnt2 0 10571(setpatter)m -5(n)k 240 fnt1 967 10574(,)m
+1069(because)s 1877(Lout)s 2383(considers)s 3332(colour)s 3998(and)s
+4396(te)s 3(xture)k 5107(to)s 5341(be)s 5617(independent)s
+6842(of)s 7108(each)s 7597(other)s 9(,)k 8181(and)s
+8579(these)s 0 10286(PostScript)m 1042(commands)s 2130(don')s 4(t.)k
+480 9912(Another)m 1316(adv)s 6(antage)k 2328(of)s 220 fnt2
+2591 9909(LoutMak)m 4(eT)k 26(e)k 6(xture)k 240 fnt1
+4307 9912(and)m 220 fnt2 4703 9909(LoutSetT)m 26(e)k 6(xture)k
+240 fnt1 6214 9912(is)m 6416(that)s 6826(the)s 3(y)k
+7281(beha)s 4(v)k 3(e)k 8000(sensibly)s 8829(on)s
+0 9624(Le)m 6(v)k 3(el)k 589(1)s 743(PostScript)s
+1784(interpreters,)s 2976(which)s 3616(do)s 3908(not)s 4273(ha)s 4(v)k 3(e)k
+4773(patterns.)s 5691(Rather)s 6387(than)s 6855(f)s 2(ailing)k
+7528(altogether)s 9(,)k 8579(these)s 0 9336(commands)m 1080(will)s
+1497(mak)s 2(e)k 2061(sure)s 2506(e)s 6(v)k 3(erything)k
+3564(appears)s 4337(in)s 4571(solid)s 5086(colour)s 13(.)k
+5839(Be)s 6152(a)s 3(w)k 2(are,)k 6816(though,)s
+7580(that)s 7989(interpreters)s 0 9048(e)m 3(xist)k 508(\(e.g)s
+220 fnt2 926 9045(gv)m 240 fnt1 1217 9048(ca.)m 1533(1997\))s
+2141(which)s 2783(appear)s 3480(to)s 3719(be)s 4001(Le)s 6(v)k 3(el)k
+4591(2)s 4765(b)s 4(ut)k 5127(actually)s 5937(lea)s 4(v)k 3(e)k
+6490(te)s 3(xtured)k 7328(areas)s 7869(blank.)s 480 8674(F)m 3(or)k
+869(information)s 2054(on)s 2351(ho)s 6(w)k 2812(these)s
+3359(symbols)s 4208(are)s 4555(implemented,)s 5910(consult)s 6661(Appendix)s
+7661(A.)s 240 fnt5 0 7881(3.11.)m 591(@Outline)s
+[ /Dest /LOUToutline /DEST pdfmark
+240 fnt1
+480 7449(The)m 220 fnt2 895 7446(@Outline)m 240 fnt1 1850 7449(symbol)m
+
+[ /Dest /LOUT19_4637_pre_outl_1 /DEST pdfmark
+2597(causes)s 3258(all)s 3537(the)s 3872(w)s 2(ords)k
+4492(in)s 4722(the)s 5056(right)s 5553(parameter)s 6554(\(which)s
+7261(may)s 7714(be)s 7982(an)s 8251(arbitrary)s 0 7161(object\))m
+712(to)s 951(be)s 1233(printed)s 1968(in)s 2211(outline,)s
+2982(rather)s 3598(than)s 4067(\207lled)s 4616(as)s 4866(is)s
+5076(usual.)s 5745(F)s 3(or)k 6134(e)s 3(xample,)k
+220 fnt2 480 6660(@Outline @Bo)m 6(x 24p @F)k 6(ont HELP)k 240 fnt1
+0 6164(produces)m 1336 461 72 180 240 288 60 480 5363 LoutGr2
+LoutBox stroke
+grestore
+480 fnt1 72 72(HELP)mo
+grestore
+0 4912(Outlining)m 984(is)s
+1209(part)s 1654(of)s 1940(the)s 2303(style)s 2824(information,)s
+4074(in)s 4332(the)s 4694(same)s 5256(w)s 2(ay)k
+5721(as)s 5986(colour)s 9(,)k 6710(font,)s 7216(underlining,)s
+8441(and)s 8860(so)s 0 4624(forth.)m 630(Outlining)s 1602(can)s
+1994(be)s 2278(applied)s 3042(to)s 3284(an)s 3(y)k
+3683(font)s 4131(lik)s 2(ely)k 4729(to)s 4970(be)s
+5255(used)s 5754(in)s 6000(practice.)s 6921(At)s 7222(the)s
+7573(time)s 8055(of)s 8329(writing,)s 0 4336(there)m 528(is)s
+732(no)s 1020(w)s 2(ay)k 1465(to)s 1699(control)s
+2425(the)s 2768(thickness)s 3703(of)s 3969(the)s 4311(outline,)s
+5077(and)s 220 fnt2 5475 4333(@Outline)m 240 fnt1 6439 4336(has)m
+6803(no)s 7091(ef)s 6(fect)k 7681(in)s 7919(PDF)s
+8410(output.)s 0 4048(The)m 424(size)s 847(of)s 1114(outlined)s
+1952(w)s 2(ords)k 2582(is)s 2788(tak)s 2(en)k
+3357(by)s 3647(Lout)s 4155(to)s 4390(be)s 4668(the)s
+5012(same)s 5555(as)s 5801(if)s 6014(the)s 3(y)k
+6473(had)s 6873(not)s 7235(been)s 7740(outlined,)s 8626(e)s 6(v)k 3(en)k
+0 3760(though)m 723(the)s 3(y)k 1186(are)s 1533(in)s
+1776(reality)s 2439(slightly)s 3210(lar)s 4(ger)k 13(.)k
+240 fnt5 0 2967(3.12.)m 591(@Language)s 1882(and)s 2323(@CurrLang)s
+
+[ /Dest /LOUTlanguage /DEST pdfmark
+240 fnt1 480 2490(The)m 220 fnt2 905 2487(@Language)m 240 fnt1
+2153 2490(symbol)m 2910(informs)s 3701(Lout)s 4210(that)s 4625(its)s
+4898(right)s 5406(parameter)s 6417(is)s 6624(written)s
+[ /Dest /LOUT19_4637_pre_lang_1 /DEST pdfmark
+7354(in)s
+7594(the)s 7939(language)s 8855(of)s 0 2202(its)m 276(left)s
+653(parameter:)s 220 fnt2 480 1701(Danish @Language { ...)m 13( })k 240 fnt1
+0 1202(Basser)m 706(Lout)s 1228(V)s 26(ersion)k 2025(3)s
+2199(uses)s 2671(this)s 3077(information)s 4271(in)s 4524(tw)s 2(o)k
+4943(w)s 2(ays:)k 5609(to)s 5857(h)s 1(yphenate)k
+6906(w)s 2(ords)k 7549(appropriately)s 8887(to)s 0 914(that)m
+418(language,)s 1389(and)s 1793(to)s 2032(change)s 2766(the)s
+3114(v)s 6(alue)k 3682(of)s 3953(the)s 220 fnt2
+4301 911(@CurrLang)m 240 fnt1 5486 914(symbol)m 6246(\(see)s 6686(belo)s 6(w\).)k
+7508(Other)s 8112(uses,)s 8630(such)s 0 626(as)m 250(right-to-left)s
+1422(formatting)s 2483(of)s 2754(certain)s 3460(languages,)s 4524(may)s
+4990(be)s 5272(added)s 5902(in)s 6145(the)s 6493(future.)s
+480 252(The)m 953(left)s 1375(parameter)s 2434(must)s 3004(either)s
+3652(be)s 3979(empty)s 4676(\(which)s 5442(means)s 6149(to)s
+6433(lea)s 4(v)k 3(e)k 7031(the)s 7424(current)s
+8206(language)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 52 58
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(52)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s
+8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+0 13205(unchanged\))m
+1167(or)s 1428(else)s 1857(it)s 2051(must)s 2578(ha)s 4(v)k 3(e)k
+3080(been)s 3591(gi)s 6(v)k 3(en)k 4173(in)s
+4418(a)s 220 fnt2 4586 13202(langdef)m
+[ /Dest /LOUT19_4637_pre_lang_2 /DEST pdfmark
+240 fnt1 5363 13205(language)m
+6285(de\207nition)s 7261(at)s 7495(the)s 7845(be)s 3(ginning)k
+8855(of)s 0 12917(the)m 348(input:)s 220 fnt2 480 12409(langdef Danish Dansk {)m
+240 fnt6 2993 12414(implementation-dependent)m 220 fnt2 5608 12409(})m 240 fnt1
+0 11910(After)m 220 fnt2 571 11907(langdef)m 240 fnt1 1355 11910(comes)m
+2025(a)s 2199(sequence)s 3140(of)s 3419(one)s 3829(or)s
+4096(more)s 4651(simple)s 5352(w)s 2(ords,)k 6050(which)s
+6700(are)s 7055(alternati)s 6(v)k 3(e)k 8117(names)s
+8788(for)s 0 11622(the)m 347(language)s 1265(being)s 1849(de\207ned.)s
+2716(F)s 3(ollo)k 6(wing)k 3743(them)s 4279(comes)s
+4940(an)s 5221(implementation-dependent)s 7843(part)s 8272(between)s 0 11334(braces.)m
+760(In)s 1001(Basser)s 1684(Lout)s 2181(V)s 26(ersion)k
+2955(3)s 3104(this)s 3486(part)s 3902(contains)s 4736(the)s
+5069(name)s 5629(of)s 5885(the)s 6219(Lout)s 6716(h)s 1(yphenation)k
+7941(information)s 0 11046(\207le)m 383(\(minus)s 1121(its)s 1419(.lh)s
+1745(suf\207x\))s 2441(to)s 2702(be)s 3007(used)s 3527(when)s
+4125(h)s 1(yphenating)k 5384(w)s 2(ords)k 6040(in)s
+6306(this)s 6725(language,)s 7718(follo)s 6(wed)k 8643(by)s
+8960(a)s 0 10758(sequence)m 933(of)s 1204(w)s 2(ords)k
+1838(which)s 2480(de\207ne)s 3121(the)s 3469(ends)s 3959(of)s
+4230(sentences.)s 5310(F)s 3(or)k 5699(e)s 3(xample:)k
+220 fnt2 480 10258(langdef English { english .)m 13( :)k 11( ? ! .\) ?\) !\) })k 240 fnt1
+0 9759(de\207nes)m 748(a)s 934(language)s 1874(called)s 2522(English)s
+3329(with)s 3831(h)s 1(yphenation)k 5091(patterns)s 5918(\207le)s
+220 fnt2 6298 9756(english.lh)m 240 fnt1 7289 9759(and)m 7713(se)s 6(v)k 3(en)k
+8326(w)s 2(ays)k 8887(to)s 0 9471(end)m 424(a)s
+610(sentence.)s 1617(The)s 2065(use)s 2460(of)s 2751(these)s
+3318(sentence)s 4217(endings)s 5034(is)s 5264(described)s 6258(in)s
+6521(Section)s 7315(3.5.)s 7799(If)s 8049(there)s 8602(is)s
+8833(no)s 0 9183(h)m 1(yphenation)k 1236(\207le)s 1592(a)s 4(v)k 6(ailable,)k
+2546(this)s 2937(is)s 3143(indicated)s 4072(by)s 4361(writing)s
+220 fnt2 5099 9180(-)m 240 fnt1 5219 9183(for)m 5552(the)s
+5895(\207le)s 6251(name;)s 6877(if)s 7089(there)s 7617(are)s
+7959(no)s 8247(sentence)s 0 8895(ends,)m 546(the)s 3(y)k
+1009(are)s 1356(simply)s 2061(omitted.)s 480 8521(The)m 220 fnt2
+913 8518(@CurrLang)m 240 fnt1 2103 8521(symbol,)m 2920(which)s 3567(has)s
+3942(no)s 4240(parameters,)s 5399(e)s 6(v)k 6(aluates)k
+6332(to)s 6576(the)s 6929(\207rst)s
+[ /Dest /LOUT19_4637_pre_lang_3 /DEST pdfmark
+7365(name)s 7944(gi)s 6(v)k 3(en)k
+8529(in)s 8778(the)s 220 fnt2 0 8230(langdef)m 240 fnt1
+776 8233(of)m 1047(the)s 1395(language)s 2315(in)s 2558(force)s
+3104(at)s 3336(the)s 3684(point)s 4236(where)s 4876(it)s
+5068(is)s 5278(in)s 9(v)k 4(ok)k 2(ed:)k
+220 fnt2 480 7732(Dansk @Language { )m 11(This is @CurrLang.)k 13( })k 240 fnt1
+0 7233(has)m 370(result)s 480 6780(This)m 956(is)s 1166(Danish.)s
+0 6327(It)m 205(is)s 415(typically)s 1305(used)s 1802(with)s
+2284(the)s 220 fnt2 2632 6324(@Case)m 240 fnt1 3419 6327(symbol)m
+4179(lik)s 2(e)k 4591(this:)s 220 fnt2 480 5826(@CurrLang @Case {)m
+480 5538( Danish @Y)m 4(ield tirsdag)k 480 5250( English @Y)m 4(ield )k 11(T)k 26(uesda)k 6(y)k
+480 4962( F)m 9(rench @Y)k 4(ield Mardi)k 480 4674(})m 240 fnt1
+0 4180(This)m 476(e)s 3(xample)k 1339(e)s 6(v)k 6(aluates)k
+2267(to)s 2506(the)s 2854(name)s 3428(of)s 3699(the)s
+4047(third)s 4556(day)s 4956(of)s 5227(the)s 5575(week)s
+6141(in)s 6384(the)s 6732(current)s 7468(language.)s 480 3806(The)m
+908(current)s 1644(language)s 2563(is)s 2773(part)s 3204(of)s
+3474(the)s 3822(style)s 4329(of)s 4599(an)s 4882(object,)s
+5573(lik)s 2(e)k 5984(its)s 6260(font.)s 6809(As)s
+7125(e)s 3(xplained)k 8110(in)s 8352(Section)s 0 3518(2.6,)m
+419(style)s 939(is)s 1162(inherited)s 2081(through)s 2896(the)s
+3257(point)s 3822(of)s 4105(appearance,)s 5300(which)s 5955(for)s
+6305(language)s 7238(can)s 7640(be)s 7935(une)s 3(xpected.)k
+0 3230(F)m 3(or)k 380(e)s 3(xample,)k 1284(an)s
+1557(inde)s 3(x)k 2131(entry)s 2666(which)s 3298(originates)s
+4281(in)s 4514(a)s 4671(French)s 5382(chapter)s 6135(b)s 4(ut)k
+6487(appears)s 7258(in)s 7491(an)s 7764(English)s 8542(inde)s 3(x)k
+0 2942(will)m 426(ha)s 4(v)k 3(e)k 927(English)s
+1715(for)s 2053(its)s 2329(language,)s 3300(so)s 3566(must)s
+4091(be)s 4373(e)s 3(xplicitly)k 5326(set)s 5651(to)s
+5890(French)s 6611(using)s 220 fnt2 7183 2939(@Language)m 240 fnt1
+8374 2942(.)m 240 fnt5 0 2149(3.13.)m 591(@OneCol)s 1653(and)s
+2094(@OneRo)s 2(w)k
+[ /Dest /LOUTonerow /DEST pdfmark
+240 fnt1 480 1717(The)m 220 fnt2
+913 1714(@OneRo)m 3(w)k 240 fnt1 2049 1717(symbol)m
+[ /Dest /LOUT19_4637_pre_oner_1 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_oner_2 /DEST pdfmark
+2814(returns)s
+3533(its)s 3814(right)s 4330(parameter)s 5350(modi\207ed)s 6264(so)s
+6535(that)s 6958(only)s 7443(the)s 7796(principal)s 8706(ro)s 6(w)k
+0 1429(mark)m 540(protrudes.)s 1595(This)s 2059(is)s 2257(normally)s
+3162(the)s 3498(\207rst)s 3917(ro)s 6(w)k 4324(mark,)s
+4910(b)s 4(ut)k 5260(another)s 6025(one)s 6415(may)s
+6869(be)s 7139(chosen)s 7849(by)s 8130(preceding)s 0 1141(it)m
+192(with)s 220 fnt2 674 1138(^/)m 240 fnt1 901 1141(or)m
+220 fnt2 1160 1138(^//)m 240 fnt1 1388 1141(.)m 1552(F)s 3(or)k
+1941(e)s 3(xample,)k 220 fnt2 480 640(@OneRo)m 3(w { |0.5r)k -8(t Slope @F)k 6(ont x + 2 ^//1p @HLine //1p |0.5r)k -8(t 5 })k
+240 fnt1 0 144(has)m 370(result)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 53 59
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(3.13.)m 1991(@OneCol)s 3016(and)s 3442(@OneRow)s
+240 fnt5 10250 -1583(53)m gsave
+1417 -15423 translate
+240 fnt1 9066 13412 0 13412 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+468 371 0 188 240 288 60 480 12753 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+468 371 0 188 240 288 60 0 0 LoutGr2
+/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+468 371 0 188 240 288 60 0 0 LoutGr2
+
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ -0.3 cm ymark
+xsize ymark 0.3 cm 0 lfigpadd []
+xmark -0.3 cm
+xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
+pop pop
+grestore
+240 fnt6 0 211(x)m
+240 fnt1 166 209(+)m 354(2)s 468 0 0 0 240 288 60 0 188 LoutGr2
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+181 3(5)m
+grestore
+
+grestore
+end end restore
+grestore
+0 12037(with)m
+482(one)s 884(ro)s 6(w)k 1304(mark)s 1856(protruding)s
+2919(from)s 3443(the)s 3791(bar)s 4156(as)s 4406(sho)s 6(wn.)k
+5190(Compare)s 6123(this)s 6519(with)s 220 fnt2 480 11536(@OneRo)m 3(w { |0.5r)k -8(t Slope @F)k 6(ont x + 2 //1p @HLine //1p |0.5r)k -8(t 5 })k
+240 fnt1 0 11040(where)m 640(the)s 988(mark)s 1540(protrudes)s
+2494(from)s 3018(the)s 3366(numerator:)s 468 371 0 263 240 288 60 480 10061 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+468 371 0 263 240 288 60 0 0 LoutGr2
+/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+468 371 0 263 240 288 60 0 0 LoutGr2
+
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ -0.3 cm ymark
+xsize ymark 0.3 cm 0 lfigpadd []
+xmark -0.3 cm
+xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
+pop pop
+grestore
+240 fnt6 0 211(x)m
+240 fnt1 166 209(+)m 354(2)s 468 0 0 0 240 288 60 0 188 LoutGr2
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+181 3(5)m
+grestore
+
+grestore
+end end restore
+grestore
+
+[ /Dest /LOUT19_4637_pre_oner_3 /DEST pdfmark
+220 fnt2
+0 9607(@OneCol)m 240 fnt1 1016 9610(has)m 1391(the)s 1744(same)s
+2296(ef)s 6(fect)k 2897(on)s 3198(columns)s 4065(as)s
+220 fnt2 4320 9607(@OneRo)m 3(w)k 240 fnt1 5456 9610(does)m
+5951(on)s 6252(ro)s 6(ws,)k 6823(with)s 7310(the)s
+7663(symbols)s 220 fnt2 8517 9607(^|)m 240 fnt1 8722 9610(and)m
+220 fnt2 0 9319(^||)m 240 fnt1 257 9322(\(or)m 220 fnt2
+595 9319(^&)m 240 fnt1 840 9322(\))m 968(determining)s 2176(which)s
+2818(mark)s 3370(is)s 3580(chosen.)s 240 fnt5 0 8529(3.14.)m
+591(@W)s 4(ide)k 1411(and)s 1852(@High)s
+[ /Dest /LOUTwide /DEST pdfmark
+240 fnt1
+480 8052(The)m 220 fnt2 910 8049(@Wide)m 240 fnt1 1687 8052(symbol)m
+
+[ /Dest /LOUT19_4637_pre_wide_1 /DEST pdfmark
+2450(returns)s 3167(its)s 3446(right)s 3960(parameter)s 4977(modi\207ed)s
+5888(to)s 6130(ha)s 4(v)k 3(e)k 6634(the)s
+6985(width)s 7590(gi)s 6(v)k 3(en)k 8173(by)s
+8470(its)s 8749(left)s 0 7764(parameter)m 9(,)k 1058(which)s
+1707(must)s 2238(be)s 2527(a)s 2699(length)s 3361(\(Section)s
+4220(3.2\))s 4655(whose)s 5329(unit)s 5768(of)s 6045(measurement)s
+7386(is)s 220 fnt2 7602 7761(c)m 240 fnt1 7707 7764(,)m
+220 fnt2 7821 7761(i)m 240 fnt1 7855 7764(,)m 220 fnt2
+7968 7761(p)m 240 fnt1 8082 7764(,)m 220 fnt2 8196 7761(m)m
+240 fnt1 8365 7764(,)m 220 fnt2 8478 7761(f)m 240 fnt1
+8536 7764(,)m 220 fnt2 8650 7761(s)m 240 fnt1 8753 7764(,)m
+8867(or)s 220 fnt2 0 7473(v)m 240 fnt1 109 7476(.)m
+278(If)s 513(the)s 867(right)s 1383(parameter)s 2403(is)s
+2618(not)s 2990(as)s 3245(wide)s 3772(as)s 4027(required,)s
+4936(white)s 5528(space)s 6121(is)s 6336(added)s 6972(at)s
+7209(the)s 7563(right;)s 8131(if)s 8354(it)s 8551(is)s
+8767(too)s 0 7188(wide,)m 585(its)s 875(paragraphs)s 1988(are)s
+2349(brok)s 2(en)k 3083(\(Section)s 3949(3.4\))s 4391(so)s
+4670(that)s 5102(it)s 5308(\207ts.)s 5777(A)s 220 fnt2
+6021 7185(@OneCol)m 240 fnt1 7046 7188(operation)m 8020(is)s 8244(included)s
+0 6900(in)m 257(the)s 620(ef)s 6(fect)k 1231(of)s
+220 fnt2 1517 6897(@Wide)m 240 fnt1 2231 6900(,)m 2353(since)s
+2915(it)s 3122(does)s 3627(not)s 4008(mak)s 2(e)k
+4595(sense)s 5184(for)s 5537(an)s 5835(object)s 6494(of)s
+6780(\207x)s 3(ed)k 7329(width)s 7946(to)s 8200(ha)s 4(v)k 3(e)k
+8716(tw)s 2(o)k 0 6612(column)m 775(marks.)s
+[ /Dest /LOUT19_4637_pre_wide_2 /DEST pdfmark
+552 6238(The)m
+220 fnt2 993 6235(@High)m 240 fnt1 1725 6238(symbol)m 2498(similarly)s
+3413(ensures)s 4194(that)s 4625(its)s 4914(result)s 5517(is)s
+5740(of)s 6024(a)s 6203(gi)s 6(v)k 3(en)k
+6796(height,)s 7514(by)s 7821(adding)s 8539(white)s 0 5950(space)m
+573(at)s 790(the)s 1123(bottom.)s 1950(In)s 2191(this)s
+2572(case)s 3024(it)s 3201(is)s 3396(an)s 3664(error)s
+4172(for)s 4495(the)s 4828(right)s 5324(parameter)s 6323(to)s
+6547(be)s 6814(too)s 7158(lar)s 4(ge.)k 7780(A)s
+220 fnt2 7995 5947(@OneRo)m 3(w)k 240 fnt1 0 5662(operation)m
+960(is)s 1170(included.)s 240 fnt5 0 4869(3.15.)m 591(@HShift)s
+1550(and)s 1991(@VShift)s
+[ /Dest /LOUThshift /DEST pdfmark
+240 fnt1 480 4437(The)m 220 fnt2
+917 4434(@HShift)m 240 fnt1 1802 4437(symbol)m
+[ /Dest /LOUT19_4637_pre_hshi_1 /DEST pdfmark
+2572(returns)s 3296(its)s
+3582(right)s 4103(parameter)s 5127(with)s 5619(principal)s 6533(mark)s
+7095(shifted)s 7813(as)s 8073(prescribed)s 0 4149(by)m 294(its)s
+570(left)s 947(parameter:)s 220 fnt2 1124 3641(+)m 240 fnt6
+1244 3646(length)m 220 fnt2 1897 3641(@HShift)m 240 fnt6 2772 3646(object)m
+240 fnt1 3600 3644(Principal)m 4517(mark)s 5069(shifted)s 5777(to)s
+6016(the)s 6364(right)s 6875(by)s 240 fnt6 7169 3646(length)m
+240 fnt1 7762 3644(;)m
+[ /Dest /LOUT16_1794_pre_hshi_1 /DEST pdfmark
+220 fnt2 1180 3136(-)m 240 fnt6
+1244 3141(length)m 220 fnt2 1897 3136(@HShift)m 240 fnt6 2772 3141(object)m
+240 fnt1 3600 3139(Principal)m 4517(mark)s 5069(shifted)s 5777(to)s
+6016(the)s 6364(left)s 6741(by)s 240 fnt6 7035 3141(length)m
+240 fnt1 7628 3139(;)m
+[ /Dest /LOUT16_1794_pre_hshi_2 /DEST pdfmark
+240 fnt6 1244 2636(length)m 220 fnt2
+1897 2631(@HShift)m 240 fnt6 2772 2636(object)m 240 fnt1 3600 2634(Principal)m
+4512(mark)s 5058(shifted)s 5760(so)s 6020(as)s 6264(to)s
+6497(lie)s 240 fnt6 6786 2636(length)m 240 fnt1 7433 2634(to)m
+7666(the)s 8008(right)s 8513(of)s 8778(the)s 3600 2346(left)m
+3977(edge)s 4485(of)s 240 fnt6 4756 2348(object)m 240 fnt1
+5344 2346(;)m
+[ /Dest /LOUT16_1794_pre_hshi_3 /DEST pdfmark
+0 1843(In)m 256(each)s 751(chase)s 220 fnt2
+1338 1840(@HShift)m 240 fnt1 2213 1843(includes)m 3061(a)s 220 fnt2
+3227 1840(@OneCol)m 240 fnt1 4239 1843(ef)m 6(fect.)k 480 1469(The)m
+916(units)s 1440(of)s 1720(measurement)s 3062(of)s 240 fnt6
+3342 1471(length)m 240 fnt1 4003 1469(may)m 4478(be)s 220 fnt2
+4768 1466(c)m 240 fnt1 4873 1469(,)m 220 fnt2 4989 1466(i)m
+240 fnt1 5023 1469(,)m 220 fnt2 5138 1466(p)m 240 fnt1
+5252 1469(,)m 220 fnt2 5368 1466(m)m 240 fnt1 5537 1469(,)m
+220 fnt2 5652 1466(f)m 240 fnt1 5710 1469(,)m 220 fnt2
+5825 1466(s)m 240 fnt1 5928 1469(,)m 220 fnt2 6044 1466(v)m
+240 fnt1 6153 1469(,)m 6268(or)s 220 fnt2 6536 1466(w)m
+240 fnt1 6692 1469(.)m 6864(In)s 7129(the)s 7485(latter)s
+8043(case,)s 220 fnt2 8569 1466(1w)m 240 fnt1 8916 1469(is)m
+0 1181(tak)m 2(en)k 579(to)s 825(be)s 1113(the)s
+1468(width)s 2076(of)s 2354(the)s 2708(right)s 3226(parameter)s 9(,)k
+4285(so)s 4557(that,)s 5029(for)s 5373(e)s 3(xample,)k
+220 fnt2 6294 1178(0.5w @HShift)m 240 fnt1 7699 1181(will)m 8132(centre)s
+8778(the)s 0 893(principal)m 904(column)s 1679(mark)s 2231(within)s
+2899(the)s 3247(right)s 3758(parameter)s 13(.)k
+[ /Dest /LOUT19_4637_pre_hshi_2 /DEST pdfmark
+548 519(The)m
+220 fnt2 984 516(@VShift)m 240 fnt1 1855 519(symbol)m 2624(is)s
+2842(similar)s 3572(e)s 3(xcept)k 4261(that)s 4688(it)s
+4888(applies)s 5624(v)s 3(ertically)k 6584(to)s 6832(the)s
+7188(principal)s 8100(ro)s 6(w)k 8529(mark:)s 220 fnt2
+0 228(+)m 240 fnt6 120 233(length)m 240 fnt1 771 231(shifts)m
+1337(it)s 1527(do)s 6(wn,)k 220 fnt2 2159 228(-)m
+240 fnt6 2223 233(length)m 240 fnt1 2874 231(shifts)m 3440(it)s
+3629(up,)s 3974(and)s 240 fnt6 4376 233(length)m 240 fnt1
+5027 231(shifts)m 5593(it)s 5783(to)s 240 fnt6 6019 233(length)m
+240 fnt1 6670 231(belo)m 6(w)k 7301(the)s 7647(top)s
+8004(edge)s 8510(of)s 8778(the)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 54 60
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(54)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s
+8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+0 13205(object.)m
+748(W)s 9(ith)k 220 fnt2 1274 13202(@VShift)m 240 fnt1
+2077 13205(,)m 220 fnt2 2184 13202(1w)m 240 fnt1 2522 13205(is)m
+2732(tak)s 2(en)k 3305(to)s 3544(be)s 3826(the)s
+4174(height)s 4832(of)s 5103(the)s 5451(right)s 5962(parameter)s 13(.)k
+240 fnt5 0 12412(3.16.)m 591(@HExpand)s 1854(and)s 2295(@VExpand)s
+
+[ /Dest /LOUThexpand /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_hexp_1 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_hexp_2 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_hexp_3 /DEST pdfmark
+240 fnt1 558 11935(The)m 220 fnt2 1004 11932(@HExpand)m 240 fnt1
+2195 11935(symbol)m 2973(causes)s 3666(its)s 3961(right)s 4490(parameter)s
+5522(to)s 5779(be)s 6079(as)s 6348(wide)s 6887(as)s
+7155(it)s 7365(possibly)s 8235(could)s 8844(be)s 0 11647(without)m
+784(violating)s 1679(a)s 220 fnt2 1837 11644(@Wide)m 240 fnt1
+2603 11647(symbol)m 3355(or)s 3606(intruding)s 4528(into)s 4945(the)s
+5285(space)s 5864(occupied)s 6778(by)s 7064(neighbouring)s 8386(g)s 1(aps)k
+8867(or)s 0 11359(objects.)m 841(The)s 220 fnt2 1269 11356(@VExpand)m
+240 fnt1 2430 11359(symbol)m 3190(is)s 3400(similar)s 9(,)k
+4160(b)s 4(ut)k 4522(it)s 4714(af)s 6(fects)k
+5394(height.)s 6156(F)s 3(or)k 6545(e)s 3(xample,)k
+7459(in)s 7702(the)s 8050(object)s 220 fnt2 480 10858(8i @Wide 11i @High {)m
+480 10570( //1i ||1i @HExpand @VExpand x ||1i)m 480 10282( //1i)m 480 9994(})m 240 fnt1 0 9500(object)m
+220 fnt2 655 9497(x)m 240 fnt1 834 9500(could)m 1435(ha)s 4(v)k 3(e)k
+1947(an)s 3(y)k 2356(size)s 2794(up)s 3098(to)s
+3348(six)s 3694(inches)s 4367(wide)s 4899(by)s 5204(nine)s
+5683(inches)s 6357(high,)s 6901(so)s 7178(the)s 220 fnt2
+7537 9497(@HExpand)m 240 fnt1 8722 9500(and)m 220 fnt2 0 9209(@VExpand)m
+240 fnt1 1166 9212(symbols)m 2021(cause)s 2614(it)s 2812(to)s
+3056(ha)s 4(v)k 3(e)k 3563(e)s 3(xactly)k
+4310(this)s 4712(size.)s 5252(This)s 5734(is)s 5950(important,)s
+6992(for)s 7335(e)s 3(xample,)k 8255(if)s 220 fnt2
+8478 9209(x)m 240 fnt1 8652 9212(con-)m 0 8924(tains)m 220 fnt2
+502 8921(|1r)m -8(t)k 240 fnt1 879 8924(or)m 220 fnt2
+1138 8921(/1r)m -8(t)k 240 fnt1 1459 8924(;)m 1571(without)s
+2362(the)s 2710(e)s 3(xpansion)k 3735(these)s 4282(might)s
+4900(not)s 5266(mo)s 3(v)k 3(e)k 5848(as)s
+6098(f)s 2(ar)k 6420(across)s 7068(or)s 7327(do)s 6(wn)k
+7911(as)s 8161(e)s 3(xpected.)k 480 8550(As)m 809(Section)s
+1595(2.6)s 1961(e)s 3(xplains)k 2818(in)s 3074(detail,)s
+3723(most)s 4260(objects)s 5001(are)s 5360(already)s 6130(as)s
+6392(lar)s 4(ge)k 6933(as)s 7196(the)s 3(y)k
+7671(possibly)s 8536(could)s 0 8262(be.)m 379(Consequently)s 1738(these)s
+2273(symbols)s 3110(are)s 3446(needed)s 4170(only)s 4638(rarely)s 15(.)k
+220 fnt2 5331 8259(@HExpand)m 240 fnt1 6493 8262(includes)m 7329(a)s
+220 fnt2 7483 8259(@OneCol)m 240 fnt1 8483 8262(ef)m 6(fect,)k
+0 7974(and)m 220 fnt2 404 7971(@VExpand)m 240 fnt1 1565 7974(includes)m
+2413(a)s 220 fnt2 2579 7971(@OneRo)m 3(w)k 240 fnt1
+3710 7974(ef)m 6(fect.)k 240 fnt5 0 7185(3.17.)m 591(@HContract)s
+1976(and)s 2417(@VContract)s
+[ /Dest /LOUThcontract /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_hcon_1 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_hcon_2 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_hcon_3 /DEST pdfmark
+240 fnt1 542 6753(The)m 220 fnt2
+972 6750(@HContr)m 2(act)k 240 fnt1 2239 6753(symbol)m 3001(reduces)s
+3784(the)s 4135(size)s 4564(of)s 4837(its)s 5116(right)s
+5629(parameter)s 6645(to)s 6887(a)s 7055(reasonable)s 8136(minimum)s
+0 6465(\(after)m 575(paragraph)s 1588(breaking\).)s 2668(F)s 3(or)k
+3057(e)s 3(xample,)k 220 fnt2 480 5964(5i @Wide @HContr)m 2(act { A |1r)k -8(t B })k
+240 fnt1 0 5470(has)m 370(result)s 480 5019(A)m 650(B)s
+0 4568(in)m 233(which)s 864(the)s 1201(B)s 1393(is)s
+1592(much)s 2170(closer)s 2789(to)s 3017(the)s 3354(A)s
+3574(than)s 4032(it)s 4213(w)s 2(ould)k 4857(otherwise)s
+5831(ha)s 4(v)k 3(e)k 6321(been.)s 220 fnt2
+6926 4565(@VContr)m 2(act)k 240 fnt1 8167 4568(is)m 8366(similar)s 9(,)k
+0 4280(b)m 4(ut)k 362(in)s 605(a)s 771(v)s 3(ertical)k
+1538(direction.)s 2551(See)s 2952(Section)s 3726(2.6)s 4079(for)s
+4417(a)s 4583(more)s 5130(e)s 3(xtensi)k 6(v)k 3(e)k
+6077(discussion.)s 240 fnt5 0 3536(3.18.)m 591(@HLimited)s 1864(and)s
+2305(@VLimited)s
+[ /Dest /LOUThlimited /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_hlim_1 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_hlim_2 /DEST pdfmark
+240 fnt1 579 3104(The)m 220 fnt2 1047 3101(@HLimited)m
+240 fnt1 2221 3104(symbol)m 3021(limits)s 3654(the)s 4042(width)s
+4684(a)s 4(v)k 6(ailable)k 5631(to)s 5910(recursi)s 6(v)k 3(e)k
+6871(and)s 7315(recepti)s 6(v)k 3(e)k 8277(symbols)s
+0 2816(within)m 692(its)s 993(right)s 1529(parameter)s 2567(to)s
+2831(whate)s 6(v)k 3(er)k 3783(is)s 4018(a)s 4(v)k 6(ailable)k
+4950(without)s 5766(increasing)s 6826(the)s 7198(e)s 3(xisting)k
+8030(size)s 8482(of)s 8778(the)s 220 fnt2 0 2525(@HLimited)m
+240 fnt1 1138 2528(object.)m 1890(So)s 2199(this)s 2599(symbol)s
+3362(acts)s 3788(lik)s 2(e)k 220 fnt2 4204 2525(@Wide)m
+240 fnt1 4981 2528(with)m 5467(respect)s 6206(to)s 6449(limiting)s
+7261(the)s 7613(space)s 8204(occupied)s 0 2240(by)m 315(recursi)s 6(v)k 3(e)k
+1258(and)s 1684(recepti)s 6(v)k 3(e)k 2627(symbols,)s
+3553(e)s 3(xcept)k 4256(that)s 4695(instead)s 5451(of)s
+5744(enforcing)s 6734(a)s 6921(\207x)s 3(ed)k 7477(constant)s
+8355(limit,)s 8934(it)s 0 1952(enforces)m 860(whate)s 6(v)k 3(er)k
+1787(size)s 2214(is)s 2424(already)s 3181(in)s 3424(place.)s
+480 1578(The)m 220 fnt2 904 1575(@VLimited)m 240 fnt1 2023 1578(symbol)m
+2778(is)s 2984(e)s 3(xactly)k 3721(the)s 4064(same,)s
+4658(e)s 3(xcept)k 5335(that)s 5748(it)s 5936(applies)s
+6660(v)s 3(ertically)k 7607(rather)s 8219(than)s 8683(hor)s 4(-)k
+0 1290(izontally)m 15(.)k
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 55 61
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(3.19.)m 1991(@HAdjust,)s 3088(@V)s 14(Adjust,)k
+4144(and)s 4570(@P)s 21(Adjust)k 240 fnt5 10250 -1583(55)m
+gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+240 fnt5 0 13203(3.19.)m 591(@HAdjust,)s 1804(@V)s 32(Adjust,)k
+2972(and)s 3413(@P)s 17(Adjust)k
+[ /Dest /LOUThadjust /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_hadj_1 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_hadj_2 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_hadj_3 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_hadj_4 /DEST pdfmark
+240 fnt1 551 12727(These)m
+1189(symbols)s 2050(spread)s 2743(their)s 3252(right)s 3774(parameter)s
+4800(apart)s 5348(until)s 5852(it)s 6056(occupies)s 6955(all)s
+7260(the)s 7619(space)s 8218(a)s 4(v)k 6(ailable)k
+0 12439(to)m 268(it;)s 220 fnt2 602 12436(@HAdjust)m 240 fnt1
+1678 12439(adjusts)m 220 fnt2 2422 12436(|)m 240 fnt1 2549 12439(sequences,)m
+220 fnt2 3656 12436(@V)m 17(Adjust)k 240 fnt1 4702 12439(adjusts)m
+220 fnt2 5447 12436(/)m 240 fnt1 5601 12439(sequences,)m 6707(and)s
+220 fnt2 7141 12436(@P)m 26(Adjust)k 240 fnt1 8179 12439(adjusts)m
+220 fnt2 8924 12436(&)m 240 fnt1 0 12151(sequences.)m 1134(F)s 3(or)k
+1523(e)s 3(xample,)k 220 fnt2 480 11650(4i @Wide @P)m 26(Adjust { 1 2 3 4 5 6 7 8 })k
+240 fnt1 0 11153(has)m 370(result)s 480 10698(1)m 1274(2)s
+2088(3)s 2892(4)s 3706(5)s 4512(6)s 5325(7)s
+6133(8)s 0 10244(More)m 571(precisely)s 15(,)k 1521(the)s
+1865(widening)s 2806(is)s 3012(ef)s 6(fected)k 3828(by)s
+4119(enlar)s 4(ging)k 5067(the)s 5411(size)s 5835(of)s
+6102(each)s 6593(component)s 7714(e)s 3(xcept)k 8391(the)s
+8735(last)s 0 9956(by)m 284(an)s 556(equal)s 1118(fraction)s
+1907(of)s 2167(the)s 2504(space)s 3080(that)s 3488(w)s 2(ould)k
+4132(otherwise)s 5106(be)s 5377(left)s 5744(o)s 3(v)k 3(er)k
+6212(\211)s 6381(just)s 6775(the)s 7113(opposite)s 7969(of)s
+8229(the)s 8566(usual)s 0 9668(procedure,)m 1063(which)s 1705(assigns)s
+2447(all)s 2740(the)s 3088(lefto)s 3(v)k 3(er)k
+3884(space)s 4471(to)s 4710(the)s 5058(last)s 5449(component)s
+6573(\(Section)s 7426(2.6\).)s 220 fnt2 480 9291(@P)m 26(Adjust)k
+240 fnt1 1497 9294(is)m 1716(used)s 2222(by)s 2525(the)s
+220 fnt2 2883 9291(adjust)m 240 fnt1 3533 9294(and)m 220 fnt2
+3946 9291(outdent)m 240 fnt1 4743 9294(options)m 5508(of)s 5789(the)s
+220 fnt2 6146 9291(@Break)m 240 fnt1 7011 9294(symbol)m 7780(\(Section)s
+8643(3.4\).)s 0 9006(It)m 213(has)s 591(a)s 765(slight)s
+1364(peculiarity:)s 2559(it)s 2759(will)s 3193(not)s 3567(enlar)s 4(ge)k
+4330(components)s 5546(when)s 6130(the)s 6486(immediately)s 7742(follo)s 6(wing)k
+8728(g)s 1(ap)k 0 8718(has)m 398(width)s 1029(0.)s
+1342(This)s 1847(is)s 2086(to)s 2354(pre)s 6(v)k 3(ent)k
+3151(space)s 3767(from)s 4320(appearing)s 5345(\(for)s 5791(e)s 3(xample\))k
+6755(between)s 7638(a)s 7833(w)s 2(ord)k 8410(and)s
+8843(an)s 0 8430(immediately)m 1248(follo)s 6(wing)k 2225(comma.)s
+3093(The)s 3521(other)s 4072(tw)s 2(o)k 4482(symbols)s
+5331(will)s 5757(enlar)s 4(ge)k 6512(such)s 7008(components.)s
+240 fnt5 0 7637(3.20.)m 591(@HScale)s 1587(and)s 2028(@VScale)s
+
+[ /Dest /LOUThscale /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_hsca_1 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_hsca_2 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_hsca_3 /DEST pdfmark
+220 fnt2 538 7202(@HScale)m 240 fnt1 1516 7205(causes)m 2189(its)s
+2462(right)s 2970(parameter)s 3982(to)s 4218(e)s 3(xpand)k
+4962(to)s 5199(\207ll)s 5516(the)s 5861(space)s 6446(a)s 4(v)k 6(ailable,)k
+7402(by)s 7693(geometricallly)s 0 6917(scaling)m 730(it:)s 220 fnt2
+480 6416(4i @Wide @HScale { 1 2 3 4 5 6 7 8 })m 240 fnt1 0 5922(has)m 370(result)s gsave
+480 0 translate
+4.4965 1.0000 scale
+0 5467(1)m
+155(2)s 329(3)s 493(4)s 667(5)s 833(6)s
+1006(7)s 1174(8)s
+grestore
+0 5013(and)m 220 fnt2 480 4562(0.5i @Wide @HScale { 1 2 3 4 5 6 7 8 })m
+240 fnt1 0 4068(has)m 370(result)s gsave
+480 0 translate
+0.5621 1.0000 scale
+0 3613(1)m 155(2)s
+329(3)s 493(4)s 667(5)s 833(6)s 1006(7)s
+1174(8)s
+grestore
+220 fnt2 0 3156(@HScale)m 240 fnt1 980 3159(\207rst)m
+1409(applies)s 220 fnt2 2136 3156(@HContr)m 2(act)k 240 fnt1
+3398 3159(to)m 3635(its)s 3910(parameter)s 9(,)k 4960(then)s
+5427(horizontally)s 6635(scales)s 7254(it)s 7444(to)s 7682(the)s
+8028(actual)s 8651(size.)s 0 2871(The)m 433(principal)s 1342(mark)s
+1899(of)s 2175(the)s 2528(right)s 3044(parameter)s 4063(has)s
+4438(no)s 4736(ef)s 6(fect)k 5337(on)s 5639(the)s
+5992(result;)s 6639(the)s 6992(parameter)s 8011(is)s 8226(scaled)s
+8887(to)s 0 2583(the)m 365(actual)s 1007(size)s 1451(and)s
+1872(positioned)s 2944(to)s 3200(\207ll)s 3537(the)s 3902(space)s
+4506(a)s 4(v)k 6(ailable.)k 5539(\(T)s 19(aking)k
+6347(account)s 7168(of)s 7456(alignment)s 8489(of)s 8778(the)s
+0 2295(principal)m 904(mark)s 1456(only)s 1936(causes)s 2611(trouble)s
+3344(in)s 3587(practice.\))s 220 fnt2 480 1918(@VScale)m 240 fnt1
+1460 1921(is)m 1681(similar)s 9(,)k 2452(b)s 4(ut)k
+2825(in)s 3080(a)s 3257(v)s 3(ertical)k 4035(direction.)s
+220 fnt2 5059 1918(@HScale)m 240 fnt1 6051 1921(and)m 220 fnt2
+6467 1918(@VScale)m 240 fnt1 7447 1921(each)m 7953(ha)s 4(v)k 3(e)k
+8465(both)s 8960(a)s 220 fnt2 0 1630(@OneCol)m 240 fnt1
+1012 1633(and)m 1416(a)s 220 fnt2 1582 1630(@OneRo)m 3(w)k
+240 fnt1 2713 1633(ef)m 6(fect.)k 240 fnt5 0 885(3.21.)m
+591(@HMirr)s 4(or)k 1784(and)s 2225(@VMirr)s 4(or)k
+
+[ /Dest /LOUThmirror /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_hmir_1 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_hmir_2 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_hmir_3 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_hmir_4 /DEST pdfmark
+220 fnt2 542 450(@HMirror)m 240 fnt1 1558 453(and)m 220 fnt2
+1965 450(@VMirror)m 240 fnt1 2969 453(cause)m 3559(their)s 4059(right)s
+4573(parameter)s 5590(to)s 5832(be)s 6117(re\210ected,)s 7049(either)s
+7655(horizontally)s 8867(or)s 0 165(v)m 3(ertically)k 15(.)k
+1047(F)s 3(or)k 1436(e)s 3(xample,)k
+grestore
+gsave
+1417 -15423 translate
+240 fnt1
+0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 56 62
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(56)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s
+8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+220 fnt2
+480 13207(@HMirror AMB)m 2(ULANCE)k 240 fnt1 0 12752(has)m 370(result)s
+gsave
+1992 12354 translate
+[-1 0 0 1 0 0] concat
+0 -54(AMB)m 2(ULANCE)k
+grestore
+0 11846(and)m 220 fnt2 480 11395(@VMirror AMB)m 2(ULANCE)k
+240 fnt1 0 10940(has)m 370(result)s gsave
+0 10593 translate
+[1 0 0 -1 0 0] concat
+480 -54(AMB)m 2(ULANCE)k
+
+grestore
+0 10034(The)m 419(parameters)s 1507(of)s 1768(these)s 2306(symbols)s
+3145(may)s 3601(be)s 3874(arbitrary)s 4739(Lout)s 5241(objects)s
+5960(as)s 6200(usual.)s 6799(Both)s 7313(symbols)s 8152(ha)s 4(v)k 3(e)k
+8643(both)s 0 9746(a)m 220 fnt2 166 9743(@OneCol)m 240 fnt1
+1178 9746(and)m 1582(a)s 220 fnt2 1748 9743(@OneRo)m 3(w)k
+240 fnt1 2879 9746(ef)m 6(fect.)k 480 9372(In)m 733(each)s
+1224(case)s 1687(the)s 2031(re\210ection)s 2987(is)s 3193(about)s
+3781(the)s 4125(mark)s 4674(of)s 4941(the)s 5285(object)s
+5925(\(that)s 6419(is,)s 6681(the)s 7025(re\210ected)s 7901(objects)s
+8625(ha)s 4(v)k 3(e)k 0 9084(the)m 346(same)s
+891(marks)s 1524(as)s 1772(the)s 2118(originals\),)s 3138(so)s
+3402(that,)s 3865(for)s 4201(e)s 3(xample,)k 5113(when)s
+5687(used)s 6182(within)s 6848(a)s 7012(line)s 7424(of)s
+7693(te)s 3(xt)k 8106(the)s 8452(results)s 0 8796(are)m
+gsave
+1859 8850 translate
+[-1 0 0 1 0 0] concat
+0 -54(AMB)m 2(ULANCE)k
+grestore
+1919(and)s gsave
+0 8850 translate
+[1 0 0 -1 0 0] concat
+2323 -54(AMB)m 2(ULANCE)k
+
+grestore
+3895(respecti)s 6(v)k 3(ely)k 15(.)k 240 fnt5
+0 8001(3.22.)m 591(@HCo)s 2(v)k 2(er)k 1679(and)s
+2120(@VCo)s 2(v)k 2(er)k
+[ /Dest /LOUThcover /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_cove_1 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_cove_2 /DEST pdfmark
+240 fnt1 529 7569(The)m
+220 fnt2 946 7566(@VCo)m 3(v)k 5(er)k 240 fnt1
+1941 7569(symbol)m 2690(v)s 3(ertically)k 3631(scales)s 4241(its)s
+4506(right)s 5006(parameter)s 6009(so)s 6264(that)s 6671(it)s
+6852(co)s 3(v)k 3(ers)k 7510(e)s 6(v)k 3(ery)k
+8075(object)s 8708(that)s 0 7281(shares)m 648(its)s 924(ro)s 6(w)k
+1344(mark.)s 1999(F)s 3(or)k 2388(e)s 3(xample,)k
+220 fnt2 480 6780(@VCo)m 3(v)k 5(er \( 45d @Rotate Hello @VCo)k 3(v)k 5(er \))k
+240 fnt1 0 6284(produces)m 748 844 0 397 240 288 60 480 5100 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+748 844 0 397 240 288 60 0 0 LoutGr2
+
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ -0.3 cm ymark
+xsize ymark 0.3 cm 0 lfigpadd ] lfigdopath
+pop pop
+grestore
+gsave
+0 397 translate
+1.0000 4.1367 scale
+0 -54(\()m
+grestore
+gsave
+210 397 translate
+45.0000 rotate
+gsave
+0 0 translate
+0.9961 1.0000 scale
+0 -54(Hello)m
+grestore
+
+grestore
+gsave
+680 397 translate
+1.0000 4.1367 scale
+0 -54(\))m
+
+grestore
+
+grestore
+end end restore
+grestore
+0 4649(The)m 428(ro)s 6(w)k 848(mark)s 1400(has)s
+1770(been)s 2279(added)s 2909(to)s 3148(sho)s 6(w)k
+3702(clearly)s 4405(where)s 5045(it)s 5237(lies.)s 5732(This)s
+6208(should)s 6905(be)s 7187(compared)s 8188(with)s 220 fnt2
+480 4148(@VScale \( 45d @Rotate Hello @VScale \))m 240 fnt1 0 3652(which)m 642(produces)s 748 486 0 39 240 288 60 480 2826 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+748 486 0 39 240 288 60 0 0 LoutGr2
+
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ -0.3 cm ymark
+xsize ymark 0.3 cm 0 lfigpadd ] lfigdopath
+pop pop
+grestore
+gsave
+0 229 translate
+1.0000 2.3824 scale
+0 -54(\()m
+
+grestore
+gsave
+210 39 translate
+45.0000 rotate
+gsave
+0 0 translate
+0.9961 1.0000 scale
+0 -54(Hello)m
+grestore
+
+grestore
+gsave
+0 229 translate
+1.0000 2.3824 scale
+680 -54(\))m
+grestore
+
+grestore
+end end restore
+grestore
+0 2375(Scaling)m 786(abandons)s 1759(mark)s
+2328(alignment)s 3361(and)s 3782(so)s 4065(is)s 4292(able)s
+4763(to)s 5018(e)s 3(xactly)k 5776(co)s 3(v)k 3(er)k
+6378(the)s 6743(rest)s 7164(of)s 7452(the)s 7817(ro)s 6(w)k 15(,)k
+8292(whereas)s 0 2087(co)m 3(v)k 3(ering)k 896(preserv)s 3(es)k
+1859(mark)s 2424(alignment)s 3453(and)s 3869(so)s 4148(is)s
+4371(obliged)s 5160(in)s 5415(general)s 6186(to)s 6438(more)s
+6998(than)s 7479(co)s 3(v)k 3(er)k 8077(the)s
+8438(rest)s 8855(of)s 0 1799(the)m 348(ro)s 6(w)k 15(.)k
+480 1425(If)m 700(the)s 1038(parameter)s 2042(of)s 220 fnt2
+2303 1422(@VCo)m 3(v)k 5(er)k 240 fnt1 3299 1425(has)m
+3658(zero)s 4112(v)s 3(ertical)k 4869(size,)s 5337(this)s
+5723(is)s 5923(tak)s 2(en)k 6485(to)s 6714(mean)s
+7279(that)s 7687(co)s 3(v)k 3(ering)k 8561(is)s
+8760(not)s 0 1137(required)m 863(after)s 1368(all)s 1670(and)s
+2083(the)s 220 fnt2 2441 1134(@VCo)m 3(v)k 5(er)k
+240 fnt1 3456 1137(is)m 3675(silently)s 4441(ignored.)s 5345(If)s
+5585(ho)s 6(we)k 6(v)k 3(er)k 6463(the)s
+6820(parameter)s 7843(has)s 8223(non-zero)s 0 849(size)m 434(abo)s 3(v)k 3(e)k
+1064(the)s 1420(mark)s 1980(b)s 4(ut)k 2350(zero)s
+2822(size)s 3256(belo)s 6(w)k 15(,)k 3935(or)s
+4202(vice)s 4664(v)s 3(ersa,)k 5280(this)s 5684(is)s
+5901(tak)s 2(en)k 6482(to)s 6729(be)s 7019(an)s
+7310(error)s 7841(since)s 8396(scaling)s 0 561(cannot)m 698(mak)s 2(e)k
+1270(the)s 1618(parameter)s 2632(co)s 3(v)k 3(er)k
+3217(the)s 3565(rest)s 3969(of)s 4240(the)s 4588(ro)s 6(w)k 15(.)k
+220 fnt2 480 184(@HCo)m 3(v)k 5(er)k 240 fnt1
+1505 187(is)m 1722(similar)s 9(,)k 2489(horizontally)s 3705(co)s 3(v)k 3(ering)k
+4596(all)s 4896(objects)s 5631(that)s 6056(share)s 6623(its)s
+6906(column)s 7688(mark.)s 8350(Neither)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 57 63
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(3.22.)m 1991(@HCo)s 2(ver)k 3032(and)s
+3458(@VCo)s 2(ver)k 240 fnt5 10248 -1583(57)m gsave
+1417 -15423 translate
+240 fnt1
+9066 13413 0 13304 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+0 13250(symbol)m 753(w)s 2(orks)k 1379(well)s 1837(near)s
+2300(g)s 1(alle)k 3(y)k 2926(tar)s 4(gets,)k
+3658(because)s 4463(the)s 4803(scale)s 5328(f)s 2(actor)k
+5934(to)s 6166(apply)s 6744(is)s 6946(determined)s 8071(before)s
+8729(an)s 3(y)k 0 12962(g)m 1(alle)k 3(y)k
+634(\210ushing)s 1459(tak)s 2(es)k 1999(place.)s 240 fnt5
+0 12169(3.23.)m 591(@StartHSpan,@StartVSpan,)s 3642(@StartHVSpan,)s 5374(@HSpan,)s 6416(and)s
+6857(@VSpan)s
+[ /Dest /LOUThspan /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_span_1 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_span_2 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_span_3 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_span_4 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_span_5 /DEST pdfmark
+240 fnt1 556 11692(These)m 1199(symbols)s 2065(w)s 2(ork)k
+2632(together)s 3492(to)s 3747(produce)s 4591(spanning)s 5525(columns)s
+6403(and)s 6824(ro)s 6(ws)k 7350(in)s 7610(a)s
+7792(more)s 8356(\210e)s 3(xible)k 0 11404(w)m 2(ay)k
+451(than)s 920(is)s 1130(possible)s 1970(in)s 2213(practice)s
+3024(with)s 220 fnt2 3506 11401(//)m 240 fnt1 3691 11404(and)m
+220 fnt2 4095 11401(||)m 240 fnt1 4189 11404(.)m 4353(An)s
+4703(object)s 220 fnt2 480 10903(@Star)m -8(tHSpan object)k 240 fnt1
+0 10406(causes)m 220 fnt2 682 10403(object)m 240 fnt1 1330 10406(to)m
+1577(be)s 1866(printed,)s 2658(b)s 4(ut)k 3027(occup)s 2(ying)k
+4084(all)s 4384(the)s 4740(horizontal)s 5771(space)s 6366(to)s
+6612(the)s 6968(right)s 7486(on)s 7791(the)s 8146(ro)s 6(w)k
+8574(mark)s 0 10118(on)m 289(which)s 922(it)s 1105(lies)s
+1478(up)s 1762(to)s 1992(and)s 2387(including)s 3335(the)s
+3675(rightmost)s 220 fnt2 4642 10115(@HSpan)m 240 fnt1 5572 10118(symbol)m
+6323(on)s 6611(that)s 7020(mark)s 7563(not)s 7920(preceded)s
+8832(by)s 220 fnt2 0 9827(@Star)m -8(tHVSpan)k 240 fnt1
+1496 9830(,)m 220 fnt2 1603 9827(@Star)m -8(tHSpan)k 240 fnt1
+2953 9830(,)m 220 fnt2 3059 9827(@Star)m -8(tVSpan)k 240 fnt1
+4397 9830(,)m 4503(or)s 220 fnt2 4761 9827(@VSpan)m 240 fnt1
+5628 9830(.)m 5791(The)s 6218(column)s 6992(mark)s 7543(of)s
+7813(this)s 8208(spanning)s 0 9542(object)m 644(is)s 854(not)s
+1220(constrained)s 2380(to)s 2619(align)s 3154(with)s 3636(an)s 3(y)k
+4033(of)s 4304(the)s 4652(column)s 5427(marks)s 6062(of)s
+6333(the)s 6681(columns)s 7543(it)s 7735(spans.)s 480 9168(If)m
+739(there)s 1301(is)s 1541(no)s 220 fnt2 1863 9165(@HSpan)m
+240 fnt1 2831 9168(symbol)m 3621(an)s 3(ywhere)k 4633(to)s
+4901(the)s 5279(right)s 5819(of)s 220 fnt2 6119 9165(@Star)m -8(tHSpan)k
+240 fnt1 7469 9168(,)m 7606(then)s 8104(the)s 8482(object)s
+0 8880(spans)m 585(only)s 1067(its)s 1345(o)s 6(wn)k
+1811(column.)s 2695(This)s 3173(means)s 3837(that)s 4257(it)s
+4451(occupies)s 5341(that)s 5761(column)s 6538(as)s 6790(usual)s
+7352(b)s 4(ut)k 7716(its)s 7994(mark)s 8548(is)s
+8760(not)s 0 8592(constrained)m 1160(to)s 1399(align)s 1934(with)s
+2416(those)s 2977(of)s 3248(the)s 3596(other)s 4147(objects)s
+4875(in)s 5118(the)s 5466(column.)s 480 8218(Similarly)m 15(,)k
+1457(the)s 220 fnt2 1801 8215(@Star)m -8(tVSpan)k 240 fnt1
+3196 8218(symbol)m 3952(causes)s 4624(its)s 4896(object)s 5537(to)s
+5772(occup)s 2(y)k 6513(all)s 6802(the)s 7147(v)s 3(ertical)k
+7910(space)s 8493(belo)s 6(w)k 0 7930(it)m 191(on)s
+486(the)s 832(column)s 1605(mark)s 2155(on)s 2451(which)s
+3091(it)s 3281(lies,)s 3717(do)s 6(wn)k 4299(to)s
+4537(and)s 4939(including)s 5894(the)s 6240(bottommost)s 220 fnt2
+7441 7927(@VSpan)m 240 fnt1 8366 7930(symbol)m 0 7642(on)m 294(that)s
+708(mark)s 1256(not)s 1618(preceded)s 2535(by)s 2825(a)s
+220 fnt2 2987 7639(@Star)m -8(tHVSpan)k 240 fnt1 4483 7642(,)m
+220 fnt2 4586 7639(@Star)m -8(tHSpan)k 240 fnt1 5936 7642(,)m
+220 fnt2 6039 7639(@Star)m -8(tVSpan)k 240 fnt1 7377 7642(,)m
+7480(or)s 220 fnt2 7735 7639(@HSpan)m 240 fnt1 8614 7642(;)m
+8722(and)s 0 7354(if)m 206(there)s 728(is)s 927(no)s
+220 fnt2 1209 7351(@VSpan)m 240 fnt1 2125 7354(symbol)m 2874(an)s 3(ywhere)k
+3846(belo)s 6(w)k 4468(it)s 4649(on)s 4935(that)s
+5342(mark,)s 5929(then)s 6387(the)s 6724(object)s 7357(spans)s
+7929(only)s 8398(its)s 8662(o)s 6(wn)k 0 7066(ro)m 6(w)k 15(,)k
+458(occup)s 2(ying)k 1507(its)s 1783(ro)s 6(w)k
+2203(b)s 4(ut)k 2565(with)s 3047(its)s 3323(mark)s
+3875(not)s 4241(constrained)s 5401(to)s 5640(align)s 6175(with)s
+6657(the)s 7005(ro)s 6(w)k 7425(mark.)s 480 6692(The)m
+220 fnt2 949 6689(@Star)m -8(tHVSpan)k 240 fnt1 2547 6692(symbol)m
+3349(combines)s 4359(the)s 4748(ef)s 6(fects)k 5470(of)s
+220 fnt2 5783 6689(@Star)m -8(tHSpan)k 240 fnt1 7235 6692(and)m
+220 fnt2 7681 6689(@Star)m -8(tVSpan)k 240 fnt1 9019 6692(,)m
+0 6404(allo)m 6(wing)k 884(an)s 1167(object)s 1811(to)s
+2050(span)s 2546(both)s 3029(columns)s 3891(and)s 4295(ro)s 6(ws)k
+4805(simultaneously)s 15(.)k 6402(F)s 3(or)k 6791(e)s 3(xample,)k
+7705(in)s 220 fnt2 480 5903(@Star)m -8(tHVSpan x | | @HSpan)k 480 5615(/)m
+480 5327(@VSpan | |)m 240 fnt1 0 4831(the)m 378(object)s 220 fnt2
+1052 4828(x)m 240 fnt1 1250 4831(will)m 1706(occup)s 2(y)k
+2481(a)s 2677(rectangular)s 3841(area)s 4328(spanning)s 5276(three)s
+5840(columns,)s 6788(tw)s 2(o)k 7228(ro)s 6(ws,)k
+7824(and)s 8258(the)s 8637(g)s 1(aps)k 0 4543(between)m
+854(them.)s 480 4169(The)m 908(objects)s 1636(lying)s 2182(in)s
+2425(the)s 2774(re)s 3(gion)k 3439(spanned)s 4283(should)s
+4980(all)s 5274(be)s 5556(empty)s 15(,)k 6247(or)s
+6506(the)s 220 fnt2 6855 4166(@HSpan)m 240 fnt1 7794 4169(and)m
+220 fnt2 8199 4166(@VSpan)m 240 fnt1 0 3881(symbols)m 865(can)s
+1271(be)s 1570(used)s 2084(to)s 2340(document)s 3360(the)s
+3725(spanning)s 4660(that)s 5095(is)s 5322(occurring.)s 6418(At)s
+6734(present)s 7501(there)s 8051(may)s 8534(be)s 8833(no)s
+0 3593(g)m 1(alle)k 3(y)k 639(tar)s 4(gets)k
+1328(or)s 1593(recursi)s 6(v)k 3(e)k 2521(symbols)s
+3376(within)s 4050(the)s 4404(right)s 4921(parameter)s 5941(of)s
+220 fnt2 6218 3590(@Star)m -8(tHSpan)k 240 fnt1 7568 3593(,)m
+220 fnt2 7681 3590(@Star)m -8(tVSpan)k 240 fnt1 9019 3593(,)m
+0 3305(or)m 220 fnt2 246 3302(@Star)m -8(tHVSpan)k 240 fnt1
+1742 3305(.)m 1892(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
+2838(the)s 3172(right)s 3670(parameter)s 4670(may)s 5122(otherwise)s
+6093(be)s 6362(an)s 6631(arbitrary)s 7492(object,)s 8169(including)s
+0 3017(paragraphs)m 1100(of)s 1371(te)s 3(xt)k 1786(that)s
+2204(require)s 2936(breaking.)s 480 2643(If)m 722(the)s 1082(right)s
+1605(parameter)s 2631(of)s 220 fnt2 2914 2640(@Star)m -8(tHSpan)k
+240 fnt1 4264 2643(,)m 220 fnt2 4383 2640(@Star)m -8(tVSpan)k
+240 fnt1 5721 2643(,)m 5840(or)s 220 fnt2 6111 2640(@Star)m -8(tHVSpan)k
+240 fnt1 7679 2643(occupies)m 8579(more)s 0 2355(horizontal)m 1022(or)s
+1279(v)s 3(ertical)k 2044(space)s 2629(than)s 3095(all)s
+3386(of)s 3655(the)s 4001(spanned)s 4842(columns)s 5701(or)s
+5958(ro)s 6(ws)k 6466(combined)s 7466(require,)s 8247(the)s
+8592(e)s 3(xtra)k 0 2067(space)m 601(goes)s 1106(into)s
+1546(the)s 1908(last)s 2314(spanned)s 3172(column)s 3962(or)s
+4235(ro)s 6(w)k 15(.)k 4765(Ov)s 3(erlapping)k
+6026(spanning)s 6958(ro)s 6(ws)k 7483(and)s 7902(columns)s
+8779(are)s 0 1779(permitted.)m 1081(Gaps)s 1626(spanned)s 2471(by)s
+2767(span)s 3266(objects)s 3996(are)s 4345(unbreakable)s 5572(\(their)s
+220 fnt2 6151 1776(u)m 240 fnt1 6321 1779(indicator)m 7232(is)s
+7444(set)s 7772(automatically)s 0 1491(and)m 404(cannot)s 1102(be)s
+1384(re)s 6(v)k 4(ok)k 2(ed\).)k
+grestore
+gsave
+1417 -15423 translate
+240 fnt1
+0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 58 64
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(58)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s
+8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+240 fnt5
+0 13203(3.24.)m 591(@Scale)s
+[ /Dest /LOUTscale /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_scal_1 /DEST pdfmark
+240 fnt1 588 12771(This)m 1112(symbol)s
+1920(geometrically)s 3335(scales)s 4004(its)s 4328(right)s 4887(parameter)s
+5949(by)s 6291(the)s 6687(scale)s 7268(f)s 2(actor)k
+7930(gi)s 6(v)k 3(en)k 8558(in)s 8850(its)s
+0 12483(left)m 377(parameter:)s 220 fnt2 480 11982(1.0 @Scale Hello 2.0 @Scale Hello 0.5 @Scale Hello)m 240 fnt1
+0 11527(has)m 370(result)s gsave
+480 11019 translate
+1.0000 1.0000 scale
+0 -54(Hello)m
+grestore
+gsave
+1124 11019 translate
+2.0000 2.0000 scale
+0 -54(Hello)m
+grestore
+gsave
+2292 11019 translate
+0.5000 0.5000 scale
+0 -54(Hello)m
+
+grestore
+0 10456(The)m 433(left)s 815(parameter)s 1834(can)s 2228(be)s
+2515(tw)s 2(o)k 2930(scale)s 3468(f)s 2(actors,)k
+4227(in)s 4475(which)s 5122(case)s 5594(the)s 5947(\207rst)s
+6383(applies)s 7116(horizontally)s 15(,)k 8368(and)s 8778(the)s
+0 10168(second)m 723(v)s 3(ertically:)k 220 fnt2 480 9667({0.5 2.0} @Scale Hello)m
+240 fnt1 0 9173(has)m 370(result)s gsave
+480 8665 translate
+0.5000 2.0000 scale
+0 -54(Hello)m
+grestore
+0 8102(The)m
+433(left)s 815(parameter)s 1834(may)s 2305(be)s 2592(empty)s 15(,)k
+3287(in)s 3535(which)s 4182(case)s 4654(Lout)s 5171(will)s
+5602(scale)s 6140(the)s 6493(object)s 7142(by)s 7441(a)s
+7612(common)s 8512(f)s 2(actor)k 0 7814(horizontally)m 1209(and)s
+1613(v)s 3(ertically)k 2565(so)s 2831(as)s 3081(to)s
+3320(occup)s 2(y)k 4064(all)s 4357(a)s 4(v)k 6(ailable)k
+5265(horizontal)s 6289(space:)s 220 fnt2 480 7313({} @Scale { Hello w)m 2(or)k -3(ld })k
+240 fnt1 0 6819(has)m 370(result)s gsave
+0 5661 translate
+7.9648 7.9648 scale
+0 -54(Hello)m 583(w)s 2(orld)k
+
+grestore
+0 4757(The)m 433(right)s 949(parameter)s 1969(may)s 2440(be)s
+2728(an)s 3(y)k 3130(object.)s 220 fnt2 3884 4754(@Scale)m
+240 fnt1 4712 4757(has)m 5088(both)s 5576(a)s 220 fnt2
+5748 4754(@OneCol)m 240 fnt1 6765 4757(and)m 7175(a)s 220 fnt2
+7346 4754(@OneRo)m 3(w)k 240 fnt1 8483 4757(ef)m 6(fect,)k
+0 4469(and)m 404(the)s 752(marks)s 1387(of)s 1658(the)s
+2006(result)s 2596(coincide)s 3462(with)s 3944(the)s 4292(principal)s
+5196(marks)s 5831(of)s 6102(the)s 6450(right)s 6961(parameter)s 13(.)k
+240 fnt5 0 3676(3.25.)m 591(@Rotate)s
+[ /Dest /LOUTrotate /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_rota_1 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_rota_2 /DEST pdfmark
+240 fnt1 542 3244(The)m
+220 fnt2 973 3241(@Rotate)m 240 fnt1 1897 3244(symbol)m 2660(will)s
+3089(rotate)s 3691(its)s 3970(right)s 4484(parameter)s 5501(counterclockwise)s
+7233(an)s 7519(amount)s 8300(gi)s 6(v)k 3(en)k
+8883(in)s 0 2956(de)m 3(grees)k 778(\(positi)s 6(v)k 3(e)k
+1661(or)s 1920(ne)s 3(g)k 1(ati)k 6(v)k 3(e\))k
+2845(by)s 3139(its)s 3415(left)s 3792(parameter)s 13(.)k
+4897(F)s 3(or)k 5286(e)s 3(xample,)k 220 fnt2
+480 2455(30d @Rotate { hello)m 8(, w)k 2(or)k -3(ld })k 240 fnt1
+0 1961(has)m 370(result)s gsave
+534 1008 translate
+30.0000 rotate
+0 -54(hello,)m 583(w)s 2(orld)k
+
+grestore
+0 482(Before)m 710(rotating)s 1511(the)s 1863(object,)s 220 fnt2
+2559 479(@OneCol)m 240 fnt1 3576 482(and)m 220 fnt2 3984 479(@OneRo)m 3(w)k
+240 fnt1 5120 482(are)m 5471(applied)s 6238(to)s 6482(it.)s
+6782(The)s 7215(result)s 7809(is)s 8024(a)s 8195(rectangle)s
+0 194(whose)m 668(marks)s 1303(pass)s 1766(through)s 2568(the)s
+2916(point)s 3468(where)s 4108(the)s 4456(original)s 5254(marks)s
+5889(crossed:)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 59 65
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Symbol
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Symbol
+/fnt4 { /Symbol LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1578(3.25.)m 1991(@Rotate)s 240 fnt5 10249 -1581(59)m
+gsave
+1417 -15423 translate
+240 fnt1 9066 13414 0 12644 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+1587 283 340 113 240 288 60 480 12531 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+1587 283 340 113 240 288 60 0 0 LoutGr2
+/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+1587 283 340 113 240 288 60 0 0 LoutGr2
+
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ -0.3 cm ymark
+xsize ymark 0.3 cm 0 lfigpadd []
+xmark -0.3 cm
+xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
+pop pop
+grestore
+
+grestore
+
+grestore
+end end restore
+grestore
+240 fnt4 2547 12584(\336)m gsave
+3256 12377 translate
+240 fnt1 1515 1037 379 267 240 288 60 LoutGraphic
+gsave
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+1515 1037 379 267 240 288 60 0 0 LoutGr2
+/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+1515 1037 379 267 240 288 60 0 0 LoutGr2
+
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ -0.3 cm ymark
+xsize ymark 0.3 cm 0 lfigpadd []
+xmark -0.3 cm
+xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
+pop pop
+grestore
+gsave
+379 267 translate
+30.0000 rotate
+1587 283 340 113 240 288 60 -340 -113 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+1587 283 340 113 240 288 60 0 0 LoutGr2
+/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+1587 283 340 113 240 288 60 0 0 LoutGr2
+
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ -0.3 cm ymark
+xsize ymark 0.3 cm 0 lfigpadd []
+xmark -0.3 cm
+xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
+pop pop
+grestore
+
+grestore
+
+grestore
+end end restore
+grestore
+
+grestore
+
+grestore
+
+grestore
+end end restore
+grestore
+240 fnt1
+0 11926(As)m 324(this)s 728(e)s 3(xample)k 1598(sho)s 6(ws,)k
+2306(rotation)s 3113(by)s 3415(an)s 3705(angle)s 4287(other)s
+4845(than)s 5322(a)s 5495(multiple)s 6355(of)s 6633(ninety)s
+7293(de)s 3(grees)k 8079(introduces)s 0 11638(quite)m 534(a)s
+700(lot)s 1012(of)s 1283(white)s 1870(space.)s 2565(So,)s
+2925(for)s 3263(e)s 3(xample,)k 4177(the)s 4525(result)s
+5115(of)s 220 fnt2 480 11130(-30d)m 968(@Rotate)s 1890(30d)s
+2305(@Rotate)s 240 fnt6 3286 11135(object)m 240 fnt1 0 10632(is)m
+210(a)s 376(much)s 965(lar)s 4(ger)k 1577(object)s
+2221(than)s 240 fnt6 2690 10634(object)m 240 fnt1 3278 10632(,)m
+3385(despite)s 4118(the)s 4466(f)s 2(act)k 4881(that)s
+5299(one)s 5701(rotation)s 6501(cancels)s 7255(the)s 7603(other)s 13(.)k
+480 10258(Rotation)m 1362(of)s 1634(objects)s 2363(containing)s 3427(recepti)s 6(v)k 3(e)k
+4350(and)s 4755(recursi)s 6(v)k 3(e)k 5678(symbols)s
+6528(is)s 6739(permitted,)s 7762(b)s 4(ut)k 8125(for)s
+8464(angles)s 0 9970(other)m 553(than)s 1024(multiples)s 1967(of)s
+2240(ninety)s 2894(de)s 3(grees)k 3675(it)s 3869(is)s
+4082(best)s 4529(to)s 4770(mak)s 2(e)k 5345(the)s
+5695(size)s 6125(of)s 6398(the)s 6748(rotated)s 7472(object)s
+8118(clear)s 8644(with)s 220 fnt2 0 9679(@Wide)m 240 fnt1
+774 9682(and)m 220 fnt2 1178 9679(@High)m 240 fnt1 1897 9682(symbols:)m
+220 fnt2 480 9181(30d @Rotate 5i @Wide 4i @High)m 480 8893({ //1i @T)m 26(e)k 6(xtPlace)k
+480 8605( //1i)m 480 8317(})m 240 fnt1 0 7823(This)m 532(is)s
+798(because)s 1667(for)s 2061(angles)s 2779(other)s 3386(than)s
+3911(multiples)s 4907(of)s 5234(ninety)s 5942(de)s 3(grees)k
+6776(the)s 7180(space)s 7823(a)s 4(v)k 6(ailable)k
+8788(for)s 220 fnt2 0 7532(@T)m 26(e)k 6(xtPlace)k
+240 fnt1 1218 7535(to)m 1457(occup)s 2(y)k 2201(is)s
+2411(indeterminate,)s 3831(and)s 4235(the)s 4583(result)s 5173(is)s
+5383(poor)s 13(.)k 240 fnt5 0 6742(3.26.)m 591(@Backgr)s 4(ound)k
+
+[ /Dest /LOUTbackground /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_back_1 /DEST pdfmark
+240 fnt1 577 6265(The)m 220 fnt2 1042 6262(@Bac)m 4(kg)k 2(round)k
+240 fnt1 2515 6265(symbol)m 3312(will)s 3775(print)s 4323(its)s
+4637(left)s 5051(parameter)s 6102(in)s 6382(the)s 6767(background)s
+7993(of)s 8301(its)s 8615(right)s 0 5977(parameter)m 13(.)k
+1115(That)s 1624(is,)s 1901(the)s 2260(result)s 2860(has)s
+3241(the)s 3600(size)s 4038(of)s 4319(the)s 4678(right)s
+5200(parameter)s 9(,)k 6263(b)s 4(ut)k 6635(the)s
+6994(left)s 7382(parameter)s 8407(will)s 8844(be)s 0 5689(printed)m
+735(\207rst)s 1166(in)s 1409(the)s 1757(same)s 2304(space,)s
+2942(with)s 3424(its)s 3700(marks)s 4335(aligned)s 5097(with)s
+5579(the)s 5927(marks)s 6562(of)s 6833(the)s 7181(right)s
+7692(parameter)s 13(.)k 240 fnt5 0 4896(3.27.)m 591(@K)s 6(er)k 3(nShrink)k
+
+[ /Dest /LOUTkernshrink /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_kshr_1 /DEST pdfmark
+240 fnt1 541 4464(This)m 1018(symbol)s 1779(returns)s 2495(its)s
+2772(right)s 3284(parameter)s 4300(unchanged)s 5397(in)s 5641(appearance)s
+6774(b)s 4(ut)k 7137(occup)s 2(ying)k 8187(a)s
+8355(slightly)s 0 4176(smaller)m 770(bounding)s 1737(box.)s 2269(The)s
+2705(reduction)s 3673(is)s 3891(by)s 4193(the)s 4549(amount)s
+5335(of)s 5614(k)s 2(erning)k 6404(that)s 6830(w)s 2(ould)k
+7493(be)s 7783(applied)s 8553(if)s 8778(the)s 0 3888(right)m
+511(parameter)s 1525(w)s 2(as)k 1946(immediately)s 240 fnt6
+3194 3890(followed)m 240 fnt1 4084 3888(by)m 4378(the)s 4726(left)s
+5103(parameter)s 13(.)k 6208(F)s 3(or)k 6597(e)s 3(xample,)k
+220 fnt2 480 3387(.)m 13( @K)k 8(er)k -5(nShr)k -3(ink P)k
+240 fnt1 0 2932(has)m 370(result)s 104 158 0 54 240 288 60 480 2484 LoutGr2
+LoutBox stroke
+grestore
+0 0(P)m
+grestore
+0 2033(where)m
+649(a)s 824(box)s 1249(of)s 1529(size)s 1965(0)s
+2150(has)s 2529(been)s 3048(dra)s 3(wn)k 3709(around)s
+4441(the)s 4799(result)s 5398(to)s 5647(mak)s 2(e)k
+6228(its)s 6513(e)s 3(xtent)k 7164(clear)s 13(.)k
+7787(Compare)s 8730(this)s 0 1745(with)m 482(`P')s 806(alone:)s
+130 158 0 54 240 288 60 480 1296 LoutGr2
+LoutBox stroke
+grestore
+0 0(P)m
+grestore
+0 845(in)m 243(which)s 885(the)s 1232(bounding)s
+2191(box)s 2605(e)s 3(xactly)k 3346(encloses)s 4206(the)s
+4554(object,)s 5245(or)s 5503(at)s 5735(least)s 6231(is)s
+6441(supposed)s 7390(to.)s 7740(The)s 8167(bounding)s 0 557(box)m
+415(is)s 625(smaller)s 1387(on)s 1684(the)s 2032(right)s
+2543(by)s 2837(the)s 3185(amount)s 3963(of)s 4234(k)s 2(erning)k
+5016(that)s 5434(w)s 2(ould)k 6089(be)s 6371(applied)s
+7133(between)s 7987(`P')s 8311(and)s 8715(`.)s 16('.)k
+480 183(The)m 916(only)s 1405(kno)s 6(wn)k 2117(use)s
+2501(for)s 2847(this)s 3252(symbol)s 4020(is)s 4239(to)s
+4486(produce)s 5322(tuck)s 2(ed-in)k 6288(subscripts)s 7304(in)s
+7555(the)s 7912(Eq)s 8245(equation)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 60 66
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(60)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s
+8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+0 13205(formatting)m
+1061(package.)s 240 fnt5 0 12412(3.28.)m 591(@Common,)s 1872(@Rump,)s
+2847(and)s 3288(@Meld)s
+[ /Dest /LOUTrump /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_rump_1 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_rump_2 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_rump_3 /DEST pdfmark
+240 fnt1 540 11935(The)m 220 fnt2
+968 11932(@Common)m 240 fnt1 2127 11935(and)m 220 fnt2 2531 11932(@Rump)m
+240 fnt1 3391 11935(symbols)m 4240(compare)s 5119(tw)s 2(o)k
+5529(paragraph)s 6542(objects:)s 220 fnt2 480 11434({ Aardv)m 5(ar)k -3(k, 29 } @Common { Aardv)k 5(ar)k -3(k, 359 })k
+240 fnt1 0 10940(If)m 234(either)s 842(parameter)s 1860(is)s
+2075(not)s 2446(a)s 2616(paragraph)s 3634(object,)s 4329(it)s
+4526(is)s 4741(con)s 9(v)k 3(erted)k 5734(into)s
+6164(a)s 6334(single-object)s 7633(paragraph)s 8651(\207rst.)s 0 10652(The)m
+418(result)s 998(of)s 220 fnt2 1259 10649(@Common)m 240 fnt1
+2408 10652(is)m 2608(the)s 2946(common)s 3831(pre\207x)s 4433(of)s
+4694(the)s 5032(tw)s 2(o)k 5432(paragraphs;)s 6583(that)s
+6991(is,)s 7247(those)s 7798(initial)s 8398(objects)s 0 10364(which)m
+640(are)s 985(equal)s 1555(in)s 1796(the)s 2142(tw)s 2(o)k
+2549(paragraphs.)s 3760(In)s 4013(the)s 4359(e)s 3(xample)k
+5220(abo)s 3(v)k 3(e,)k 5890(the)s 6236(result)s
+6824(is)s 220 fnt2 7031 10361(Aardv)m 5(ar)k -3(k,)k
+240 fnt1 7949 10364(.)m 8111(The)s 8536(result)s 0 10076(of)m
+220 fnt2 271 10073(@Rump)m 240 fnt1 1131 10076(is)m 1341(that)s
+1759(part)s 2190(of)s 2461(the)s 2809(second)s 3532(object)s
+4176(which)s 4818(is)s 5028(not)s 5394(included)s 6276(in)s
+220 fnt2 6519 10073(@Common)m 240 fnt1 7618 10076(;)m 7730(the)s
+8078(result)s 8668(of)s 220 fnt2 480 9575({ Aardv)m 5(ar)k -3(k, 29 } @Rump { Aardv)k 5(ar)k -3(k, 359 })k
+240 fnt1 0 9079(is)m 220 fnt2 210 9076(359)m 240 fnt1
+567 9079(.)m 480 8705(If)m 698(the)s 1034(tw)s 2(o)k
+1431(objects)s 2147(ha)s 4(v)k 3(e)k 2635(nothing)s
+3408(in)s 3638(common,)s 4571(the)s 4907(result)s 5484(of)s
+220 fnt2 5743 8702(@Common)m 240 fnt1 6889 8705(will)m 7303(be)s
+7572(an)s 7843(empty)s 8482(object)s 0 8417(and)m 400(the)s
+744(result)s 1330(of)s 220 fnt2 1597 8414(@Rump)m 240 fnt1
+2453 8417(will)m 2874(be)s 3152(the)s 3496(second)s 4215(object.)s
+4959(If)s 5185(the)s 5528(tw)s 2(o)k 5934(objects)s
+6658(are)s 7001(identical,)s 7926(the)s 8270(result)s 8855(of)s
+220 fnt2 0 8126(@Common)m 240 fnt1 1159 8129(will)m 1585(be)s
+1867(the)s 2215(\207rst)s 2646(object,)s 3337(and)s 3741(the)s
+4089(result)s 4679(of)s 220 fnt2 4950 8126(@Rump)m 240 fnt1
+5810 8129(will)m 6236(be)s 6518(an)s 6801(empty)s 7453(object.)s
+480 7755(The)m 933(only)s 1438(kno)s 6(wn)k 2167(use)s
+2567(for)s 220 fnt2 2930 7752(@Rump)m 240 fnt1 3815 7755(and)m
+220 fnt2 4244 7752(@Common)m 240 fnt1 5428 7755(is)m 5663(to)s
+5927(implement)s 7034(mer)s 4(ged)k 7830(inde)s 3(x)k
+8439(entries)s 0 7467(\(Section)m 853(2.8\).)s 480 7093(The)m 220 fnt2
+942 7090(@Meld)m 240 fnt1 1723 7093(symbol)m 2518(returns)s 3267(the)s
+3649(minimum)s 4674(meld)s 5245(of)s 5551(tw)s 2(o)k
+5995(paragraphs,)s 7186(that)s 7639(is,)s 7940(the)s 8323(shortest)s
+0 6805(paragraph)m 1013(that)s 1431(contains)s 2279(the)s 2627(tw)s 2(o)k
+3037(original)s 3835(paragraphs)s 4935(as)s 5185(subsequences.)s 6652(F)s 3(or)k
+7041(e)s 3(xample,)k 220 fnt2 480 6304({ Aardv)m 5(ar)k -3(k , 1 , 2 } @Meld { Aardv)k 5(ar)k -3(k , 2 , 3 })k
+240 fnt1 0 5810(produces)m 480 5307(Aardv)m 6(ark)k 1438(,)s
+1545(1)s 1700(,)s 1807(2)s 1981(,)s 2088(3)s
+0 4823(The)m 455(result)s 1073(is)s 1310(related)s 2045(to)s
+2312(the)s 2687(well-kno)s 6(wn)k 3909(longest)s 4688(common)s
+5610(substring,)s 6622(in)s 6893(that)s 7338(the)s 7714(meld)s
+8278(contains)s 0 4535(e)m 6(v)k 3(erything)k 1054(not)s
+1407(in)s 1636(the)s 1971(lcs)s 2274(plus)s 2710(one)s
+3099(cop)s 2(y)k 3604(of)s 3861(e)s 6(v)k 3(erything)k
+4915(in)s 5145(the)s 5479(lcs.)s 5895(Where)s 6575(there)s
+7094(are)s 7428(se)s 6(v)k 3(eral)k 8136(minimum)s
+0 4247(melds,)m 220 fnt2 705 4244(@Meld)m 240 fnt1 1478 4247(returns)m
+2219(the)s 2595(one)s 3024(in)s 3294(which)s 3964(the)s
+4339(components)s 5574(of)s 5873(the)s 6248(\207rst)s 6706(parameter)s
+7748(are)s 8122(as)s 8399(f)s 2(ar)k 8749(left)s
+0 3959(as)m 250(possible.)s 480 3585(Determining)m 1764(the)s 2136(v)s 6(alues)k
+2816(of)s 3110(all)s 3427(these)s 3998(symbols)s 4870(requires)s
+5714(testing)s 6428(whether)s 7281(one)s 7707(component)s 8855(of)s
+0 3297(the)m 372(\207rst)s 827(paragraph)s 1864(is)s 2098(equal)s
+2695(to)s 2958(one)s 3384(component)s 4532(of)s 4827(the)s
+5199(second.)s 6052(Since)s 6663(V)s 26(ersion)k 7475(3.25,)s
+8026(the)s 8398(objects)s 0 3009(in)m 9(v)k 4(olv)k 3(ed)k
+893(may)s 1372(be)s 1667(arbitrary)s 2555(and)s 2972(Lout)s
+3497(will)s 3936(perform)s 4778(the)s 5139(necessary)s 6135(detailed)s
+6962(checking)s 7892(for)s 8244(equality;)s 0 2721(pre)m 6(viously)k 15(,)k
+1084(only)s 1552(simple)s 2233(w)s 2(ords)k 2855(were)s
+3363(guaranteed)s 4458(to)s 4685(be)s 4954(tested)s 5557(correctly)s 15(.)k
+6482(T)s 19(w)k 2(o)k 6941(w)s 2(ords)k
+7563(are)s 7898(equal)s 8459(if)s 8663(the)s 3(y)k
+0 2433(contain)m 761(the)s 1108(same)s 1655(sequence)s 2587(of)s
+2858(characters,)s 3931(re)s 3(g)k 1(ardless)k 4945(of)s
+5216(whether)s 6045(the)s 3(y)k 6508(are)s 6854(enclosed)s
+7749(in)s 7991(quotes,)s 8722(and)s 0 2145(re)m 3(g)k 1(ardless)k
+1008(of)s 1272(the)s 1612(current)s 2341(font)s 2778(or)s
+3030(an)s 3(y)k 3419(other)s 3963(style)s 4462(information.)s
+5747(Otherwise,)s 6828(objects)s 7549(are)s 7888(equal)s 8454(if)s
+8663(the)s 3(y)k 0 1857(are)m 337(of)s 598(the)s
+936(same)s 1473(type)s 1931(and)s 2325(ha)s 4(v)k 3(e)k
+2816(the)s 3153(same)s 3690(parameters,)s 4834(including)s 5781(g)s 1(aps)k
+6260(in)s 6493(concatenation)s 7868(objects.)s 8698(The)s 0 1569(sole)m
+459(e)s 3(xception)k 1461(is)s 220 fnt2 1690 1566(@LinkSource)m
+240 fnt1 3002 1569(,)m 3127(whose)s 3814(left)s 4209(parameter)s
+5241(is)s 5470(ignored)s 6277(during)s 6974(equality)s 7816(testing,)s
+8579(since)s 0 1281(otherwise)m 985(there)s 1518(w)s 2(ould)k
+2173(be)s 2455(problems)s 3396(in)s 3639(the)s 3987(appearance)s
+5118(of)s 5389(melded)s 6151(clickable)s 7069(inde)s 3(x)k
+7653(entries.)s 480 907(Style)m 1023(changing)s 1949(operations)s 2991(\()s
+220 fnt2 3064 904(@F)m 6(ont)k 240 fnt1 3716 907(,)m
+220 fnt2 3819 904(@SetColour)m 240 fnt1 5071 907(etc.\))m 5532(are)s
+5874(not)s 6236(considered)s 7325(in)s 7563(equality)s 8382(testing,)s
+0 619(since)m 547(these)s 1094(ha)s 4(v)k 3(e)k
+1595(been)s 2104(processed)s 3105(and)s 3508(deleted)s 4256(by)s
+4550(the)s 4898(time)s 5378(that)s 5796(the)s 6143(tests)s
+6618(are)s 6965(done.)s 7595(Also,)s 8154(Lout)s 8665(tries)s
+0 331(hard)m 483(to)s 722(get)s 1074(rid)s 1397(of)s
+1668(redundant)s 2685(braces)s 3346(around)s 4069(concatenation)s 5454(objects,)s
+6238(which)s 6880(is)s 7090(wh)s 1(y)k
+grestore
+gsave
+1417 -15423 translate
+240 fnt1
+0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 61 67
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(3.28.)m 1991(@Common,)s 3170(@Rump,)s 4042(and)s
+4468(@Meld)s 240 fnt5 10256 -1583(61)m gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+220 fnt2
+480 13207({ a { b c } } @Meld { { a b } c })m 240 fnt1 0 12713(produces)m 480 12210(a)m 646(b)s
+819(c)s 0 11757(The)m 428(tw)s 2(o)k 838(parameters)s
+1936(are)s 2283(equal)s 2856(by)s 3150(the)s 3498(time)s
+3978(the)s 3(y)k 4441(are)s 4788(compared)s 5789(by)s
+220 fnt2 6083 11754(@Meld)m 240 fnt1 6769 11757(.)m 480 11383(One)m
+928(problematic)s 2114(area)s 2563(in)s 2799(the)s 3139(use)s
+3506(of)s 3770(these)s 4309(operators)s 5241(is)s 5444(the)s
+5784(de\207nition)s 6750(of)s 7014(equality)s 7830(when)s 8398(objects)s
+0 11095(are)m 365(immediately)s 1631(adjacent.)s 2609(Lout)s 3139(contains)s
+4005(an)s 4306(optimization)s 5589(which)s 6249(mer)s 4(ges)k
+7004(immediately)s 8270(adjacent)s 0 10807(w)m 2(ords)k 634(whene)s 6(v)k 3(er)k
+1615(the)s 3(y)k 2078(ha)s 4(v)k 3(e)k
+2579(the)s 2927(same)s 3474(style.)s 4089(F)s 3(or)k
+4478(e)s 3(xample,)k 220 fnt2 480 10309({Hello}{w)m 2(or)k -3(ld})k
+240 fnt1 0 9815(w)m 2(ould)k 655(be)s 937(treated)s
+1644(internally)s 2613(as)s 2863(one)s 3265(w)s 2(ord,)k
+3862(whereas)s 220 fnt2 480 9314({Hello}{y)m 4(ello)k 3(w @Colour w)k 2(or)k -3(ld})k
+240 fnt1 0 8816(w)m 2(ould)k 683(be)s 994(treated)s
+1729(as)s 2008(tw)s 2(o)k 2447(adjacent)s 3331(w)s 2(ords.)k
+4107(Thus,)s 4721(although)s 220 fnt2 5645 8813(@F)m 6(ont)k
+240 fnt1 6297 8816(,)m 220 fnt2 6433 8813(@SetColour)m 240 fnt1
+7630 8816(,)m 7765(and)s 8198(the)s 8575(other)s 0 8528(style)m
+517(operators)s 1468(are)s 1825(ignored)s 2625(in)s 2878(equality)s
+3713(testing,)s 4467(the)s 3(y)k 4941(may)s 5417(af)s 6(fect)k
+6024(the)s 6382(structure)s 7284(of)s 7565(the)s 7924(objects)s
+8663(the)s 3(y)k 0 8240(lie)m 294(within.)s 480 7866(At)m
+810(present,)s 220 fnt2 1639 7863(@Common)m 240 fnt1 2830 7866(and)m
+220 fnt2 3266 7863(@Rump)m 240 fnt1 4158 7866(treat)m 4673(all)s
+4998(unmer)s 4(ged)k 6041(components)s 7281(of)s 7584(their)s
+8113(paragraph)s 0 7578(as)m 278(separate,)s 1195(e)s 6(v)k 3(en)k
+1724(if)s 1969(one)s 2399(is)s 2638(immediately)s 3914(adjacent)s
+4799(to)s 5066(another)s 13(.)k 220 fnt2 5962 7575(@Common)m
+240 fnt1 7150 7578(and)m 220 fnt2 7582 7575(@Rump)m 240 fnt1
+8471 7578(w)m 2(ould)k 0 7290(thus)m 449(see)s 809(one)s
+1210(component)s 2333(in)s 2574(the)s 2921(\207rst)s 3351(e)s 3(xample)k
+4213(and)s 4615(tw)s 2(o)k 5024(in)s 5266(the)s
+5613(second.)s 220 fnt2 6440 7287(@Meld)m 240 fnt1 7185 7290(treats)m
+7751(each)s 8245(group)s 8855(of)s 0 7002(immediately)m 1239(adjacent)s
+2086(components)s 3285(as)s 3526(a)s 3683(single)s 4301(component,)s
+5463(so)s 5720(it)s 5903(w)s 2(ould)k 6549(see)s
+6901(one)s 7294(component)s 8409(in)s 8643(both)s 0 6714(e)m 3(xamples;)k
+1015(b)s 4(ut)k 1381(it)s 1577(w)s 2(ould)k
+2235(still)s 2651(not)s 3021(report)s 3655(them)s 4196(as)s
+4450(equal,)s 5079(since)s 5630(one)s 6035(is)s 6249(a)s
+6419(single)s 7050(w)s 2(ord)k 7601(and)s 8009(the)s
+8361(other)s 8916(is)s 0 6426(a)m 179(pair)s 623(of)s
+907(adjacent)s 1777(w)s 2(ords.)k 2537(These)s 3177(confusing)s
+4188(and)s 4605(inconsistent)s 5820(properties)s 6839(might)s 7471(be)s
+7766(re)s 6(vised)k 8521(in)s 8778(the)s 0 6138(future.)m
+754(See)s 1176(Section)s 1971(4.6)s 2345(for)s 2704(an)s
+3008(e)s 3(xample)k 3892(of)s 4184(the)s 4553(practical)s
+5450(use)s 5846(of)s 6138(these)s 6706(operators,)s 7723(in)s
+7987(which)s 8650(v)s 3(ery)k 0 5850(small)m 564(unbreakable)s
+1781(g)s 1(aps)k 2262(are)s 2600(used)s 3089(to)s
+3320(ensure)s 3991(that)s 4401(apparently)s 5456(adjacent)s 6303(components)s
+7503(are)s 7842(separate,)s 8722(and)s 220 fnt2 0 5559(@OneCol)m
+240 fnt1 1026 5562(is)m 1250(used)s 1761(to)s 2014(pre)s 6(v)k 3(ent)k
+2797(the)s 3159(w)s 2(ord)k 3721(mer)s 4(ging)k
+4581(optimization)s 5860(from)s 6399(taking)s 7064(ef)s 6(fect)k
+7674(when)s 8264(it)s 8471(w)s 2(ould)k 0 5274(otherwise)m
+985(cause)s 1572(trouble.)s 240 fnt5 0 4530(3.29.)m 591(@Insert)s
+
+[ /Dest /LOUTinsert /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_inse_1 /DEST pdfmark
+240 fnt1 541 4098(The)m 220 fnt2 970 4095(@Inser)m -8(t)k
+240 fnt1 1808 4098(symbol)m 2569(inserts)s 3245(its)s 3522(left)s
+3901(parameter)s 4916(at)s 5149(the)s 5499(be)s 3(ginning)k
+6508(of)s 6781(the)s 7130(\207rst)s 7563(paragraph)s 8577(of)s
+8850(its)s 0 3810(right)m 511(parameter:)s 220 fnt2 480 3309(X @Inser)m -8(t { A B // C // D })k
+240 fnt1 0 2815(is)m 210(equi)s 6(v)k 6(alent)k
+1254(to)s 220 fnt2 480 2314({ XA B // C // D })m 240 fnt1 0 1820(Notice)m
+707(that)s 1139(a)s 1320(zero-width)s 2426(space)s 3028(separates)s
+220 fnt2 3968 1817(X)m 240 fnt1 4185 1820(from)m 4723(the)s
+5085(\207rst)s 5531(paragraph,)s 6608(so)s 6889(if)s 7120(some)s
+7696(wider)s 8314(space)s 8916(is)s 0 1532(required)m 857(it)s
+1052(must)s 1580(be)s 1865(placed)s 2550(at)s 2785(the)s
+3137(end)s 3544(of)s 220 fnt2 3818 1529(X)m 240 fnt1
+3960 1532(.)m 4127(The)s 220 fnt2 4558 1529(@Inser)m -8(t)k
+240 fnt1 5397 1532(operation)m 6361(is)s 6574(applied)s 7339(to)s
+7581(the)s 7932(v)s 6(alue)k 8503(of)s 8778(the)s
+0 1244(right)m 511(parameter)s 1525(after)s 2021(e)s 6(v)k 6(aluation.)k
+480 870(The)m 917(only)s 1407(kno)s 6(wn)k 2121(use)s
+2506(for)s 2853(this)s 3259(symbol)s 4029(is)s 4249(to)s
+4498(attach)s 5134(something)s 6194(lik)s 2(e)k 240 fnt5
+6616 869(Figur)m 4(e)k 7355(6)s 240 fnt1 7538 870(to)m
+7787(the)s 8145(front)s 8679(of)s 8960(a)s 0 582(multi-paragraph)m
+1596(caption.)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 62 68
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(62)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s
+8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+240 fnt5
+0 13203(3.30.)m 591(@OneOf)s
+[ /Dest /LOUToneof /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_oneo_1 /DEST pdfmark
+240 fnt1 534 12771(The)m 220 fnt2
+956 12768(@OneOf)m 240 fnt1 1877 12771(symbol)m 2631(returns)s 3339(one)s
+3734(of)s 3999(the)s 4341(sequence)s 5268(of)s 5533(objects)s
+6254(which)s 6890(is)s 7094(its)s 7364(right)s 7869(parameter)s
+8876(as)s 0 12483(its)m 276(result:)s 220 fnt2 480 12032(@OneOf {)m
+480 11744( @ResultA)m 480 11456( @ResultB)m 480 11168( @ResultC)m 480 10880(})m 240 fnt1
+0 10386(The)m 451(choice)s 1155(is)s 1388(made)s 1986(to)s
+2248(ensure)s 2952(that)s 3393(whate)s 6(v)k 3(er)k
+4344(g)s 1(alle)k 3(y)k 5001(tar)s 4(get)k
+5624(is)s 5857(required)s 6735(at)s 6990(the)s 7362(moment)s
+8229(is)s 8463(found.)s 0 10098(F)m 3(or)k 389(e)s 3(xample,)k
+1304(if)s 1522(we)s 1858(are)s 2206(e)s 6(v)k 6(aluating)k
+220 fnt2 3244 10095(@OneOf)m 240 fnt1 4172 10098(as)m 4423(part)s
+4855(of)s 5127(an)s 5411(attempt)s 6188(to)s 6428(attach)s
+7056(a)s 7223(g)s 1(alle)k 3(y)k 7858(whose)s
+8527(tar)s 4(get)k 0 9810(is)m 220 fnt2 222 9807(@SomeT)m 26(arget)k
+240 fnt1 1622 9810(,)m 1741(then)s 2223(the)s 2583(result)s
+3186(abo)s 3(v)k 3(e)k 3820(will)s 4259(be)s
+220 fnt2 4553 9807(@ResultA)m 240 fnt1 5613 9810(if)m 5843(it)s
+6047(contains)s 220 fnt2 6908 9807(@SomeT)m 26(arget)k 240 fnt1
+8308 9810(,)m 8427(or)s 8699(else)s 220 fnt2 0 9519(@ResultB)m
+240 fnt1 1042 9522(if)m 1260(it)s 1453(contains)s 220 fnt2
+2302 9519(@SomeT)m 26(arget)k 240 fnt1 3702 9522(,)m 3810(or)s
+4070(else)s 220 fnt2 4498 9519(@ResultC)m 240 fnt1 5552 9522(\(whether)m
+6462(or)s 6722(not)s 7089(it)s 7282(contains)s 8131(the)s
+8480(tar)s 4(get,)k 0 9234(or)m 259(if)s 476(there)s
+1009(is)s 1219(no)s 1512(tar)s 4(get\).)k 480 8860(Use)m
+930(of)s 220 fnt2 1224 8857(@OneOf)m 240 fnt1 2174 8860(in)m
+2440(conjunction)s 3650(with)s 4155(recursi)s 6(v)k 3(e)k
+5100(symbols)s 5972(can)s 6384(lead)s 6863(to)s 7125(problems.)s
+8202(Consider)s 0 8572(this)m 396(e)s 3(xample:)k 220 fnt2
+480 8071(def @Recursiv)m 5(e {)k 480 7495( def @ChoiceA { @APlace // @Recursiv)m 5(e })k 480 6919( def @ChoiceB { @BPlace // @Recursiv)m 5(e })k
+480 6343( @OneOf {)m 480 6055( @ChoiceA)m 480 5767( @ChoiceB)m 480 5479( })m 480 5191(})m
+240 fnt1 0 4697(Lout)m 523(belie)s 6(v)k 3(es)k
+1360(that)s 1790(e)s 3(xpanding)k 220 fnt2 2849 4694(@Recursiv)m 5(e)k
+240 fnt1 4106 4697(is)m 4328(the)s 4687(right)s 5210(thing)s
+5767(to)s 6017(do)s 6322(when)s 6910(searching)s 7890(for)s
+8240(either)s 8855(of)s 0 4409(the)m 380(g)s 1(alle)k 3(y)k
+1046(tar)s 4(gets)k 220 fnt2 1762 4406(@APlace)m 240 fnt1
+2763 4409(and)m 220 fnt2 3199 4406(@BPlace)m 240 fnt1 4108 4409(.)m
+4305(When)s 4966(searching)s 5968(for)s 220 fnt2 6338 4406(@BPlace)m
+240 fnt1 7339 4409(this)m 7768(leads)s 8342(Lout)s 8887(to)s
+0 4121(e)m 3(xpand)k 220 fnt2 760 4118(@Recursiv)m 5(e)k
+240 fnt1 1945 4121(,)m 2065(then)s 220 fnt2 2547 4118(@ChoiceA)m
+240 fnt1 3596 4121(,)m 3717(then)s 4199(the)s 220 fnt2
+4560 4118(@Recursiv)m 5(e)k 240 fnt1 5818 4121(symbol)m 6592(within)s
+220 fnt2 7273 4118(@ChoiceA)m 240 fnt1 8322 4121(,)m 8442(and)s
+8860(so)s 0 3833(on)m 320(in\207nitely)s 15(.)k 1355(This)s
+1854(problem)s 2734(can)s 3146(be)s 3451(a)s 4(v)k 4(oided)k
+4283(by)s 4600(attaching)s 5552(a)s 220 fnt2 5741 3830(@NotRe)m 6(v)k 5(ealed)k
+240 fnt1 7291 3833(symbol)m 8074(to)s 8336(each)s 8855(of)s
+0 3545(the)m 357(inner)s 220 fnt2 918 3542(@Recursiv)m 5(e)k
+240 fnt1 2172 3545(symbols:)m 3146(these)s 3703(are)s 4059(then)s
+4538(not)s 4914(a)s 4(v)k 6(ailable)k 5831(for)s
+6179(e)s 3(xpansion)k 7214(until)s 7716(a)s 7892(decision)s
+8756(has)s 0 3257(been)m 510(made)s 1085(to)s 1326(e)s 3(xpand)k
+2074(the)s 2424(symbol)s 3185(the)s 3(y)k 3650(lie)s
+3945(within.)s 4721(In)s 4979(this)s 5376(particular)s 6352(e)s 3(xample)k
+7216(it)s 7410(w)s 2(ould)k 8066(be)s 8350(simpler)s
+0 2969(to)m 239(write)s 220 fnt2 480 2517(def @Recursiv)m 5(e {)k
+480 1941( @OneOf {)m 480 1653( @APlace)m 480 1365( @BPlace)m 480 1077( })m 480 789( // @Recursiv)m 5(e)k
+480 501(})m
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 63 69
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1578(3.30.)m 1991(@OneOf)s 240 fnt5 10250 -1581(63)m
+gsave
+1417 -15423 translate
+240 fnt1 9066 13370 0 13261 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+0 13207(b)m 4(ut)k 378(this)s 791(f)s 2(actoring)k
+1720(is)s 1947(not)s 2329(possible)s 3186(when)s 3778(the)s
+4143(recursi)s 6(v)k 3(e)k 5081(calls)s 5586(ha)s 4(v)k 3(e)k
+6103(parameters)s 7218(that)s 7652(are)s 8016(required)s 8887(to)s
+0 12919(dif)m 6(fer)k 583(in)s 826(the)s 1174(tw)s 2(o)k
+1584(cases.)s 240 fnt5 0 12175(3.31.)m 591(@Next)s
+[ /Dest /LOUTnext /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_next_1 /DEST pdfmark
+240 fnt1
+535 11743(The)m 220 fnt2 957 11740(@Ne)m 6(xt)k 240 fnt1
+1676 11743(symbol)m 2430(returns)s 3138(its)s 3409(parameter)s 4417(plus)s
+4861(one.)s 5366(It)s 5565(is)s 5769(rather)s 6380(cle)s 6(v)k 3(er)k
+7008(at)s 7234(w)s 2(orking)k 8078(this)s 8468(out:)s
+8934(it)s 0 11455(hunts)m 570(through)s 1372(the)s 1720(parameter)s
+2734(from)s 3258(right)s 3769(to)s 4008(left,)s 4432(looking)s
+5217(for)s 5555(a)s 5721(number)s 6512(to)s 6751(increment:)s
+220 fnt2 480 10954(@Ne)m 6(xt \(3.99\))k 240 fnt1 0 10458(has)m
+404(result)s 1029(\(3.100\).)s 1925(If)s 220 fnt2 2190 10455(@Ne)m 6(xt)k
+240 fnt1 2949 10458(cannot)m 3681(\207nd)s 4147(a)s 4348(digit)s
+4880(inside)s 5542(its)s 5852(parameter)s 9(,)k 6939(it)s
+7166(is)s 7410(an)s 7728(error)s 13(.)k 8377(Roman)s
+0 10170(numerals)m 925(are)s 1270(handled)s 2084(by)s 2376(storing)s
+3091(them)s 3627(in)s 3868(a)s 4032(database,)s 4960(as)s
+5208(e)s 3(xplained)k 6191(in)s 6432(Section)s 7204(4.2;)s
+220 fnt2 7614 10167(@Ne)m 6(xt)k 240 fnt1 8336 10170(will)m
+8760(not)s 0 9882(increment)m 1015(a)s 1181(Roman)s 1930(numeral.)s
+240 fnt5 0 9139(3.32.)m 591(@Case)s
+[ /Dest /LOUTcase /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_case_1 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_case_2 /DEST pdfmark
+240 fnt1 540 8707(The)m
+220 fnt2 968 8704(@Case)m 240 fnt1 1755 8707(symbol)m 2515(selects)s
+3202(its)s 3478(result)s 4068(from)s 4592(a)s 4758(list)s
+5109(of)s 5380(alternati)s 6(v)k 3(es,)k 6578(depending)s
+7629(on)s 7926(a)s 8092(tag:)s 220 fnt2 480 8206(@Da)m 6(y @Case {)k
+480 7918( { 1 21 31 } @Y)m 4(ield st)k 480 7630( { 2 22 } @Y)m 4(ield nd)k 480 7342( { 3 23 } @Y)m 4(ield rd)k
+480 7054( else @Y)m 4(ield th)k 480 6766(})m 240 fnt1 0 6272(In)m
+257(this)s 654(e)s 3(xample)k 1518(the)s 1868(result)s
+2459(will)s 2886(be)s 3169(st)s 3390(if)s 220 fnt2
+3608 6269(@Da)m 6(y)k 240 fnt1 4274 6272(is)m 4485(1,)s
+4714(21,)s 5062(or)s 5322(31,)s 5670(and)s 6076(nd)s
+6375(if)s 220 fnt2 6593 6269(@Da)m 6(y)k 240 fnt1
+7259 6272(is)m 7471(2)s 7646(or)s 7906(22,)s 8254(etc.)s
+8698(The)s 0 5984(ef)m 6(fect)k 594(is)s 801(similar)s
+1520(to)s 1756(accessing)s 2722(a)s 2885(database,)s 3812(though)s
+4532(in)s 4773(a)s 4936(more)s 5480(compact)s 6347(form.)s
+6972(The)s 7397(right)s 7905(parameter)s 8916(is)s 0 5696(a)m
+171(sequence)s 1109(of)s 220 fnt2 1385 5693(@Y)m 4(ield)k
+240 fnt1 2143 5696(symbols,)m 3053(each)s 3553(with)s 4040(a)s
+4211(left)s 4594(parameter)s 5613(whose)s 6286(v)s 6(alue)k
+6859(is)s 7074(a)s 7245(sequence)s 8183(of)s 8459(one)s
+8867(or)s 0 5408(more)m 547(juxtapositions)s 1940(of)s 2211(simple)s
+2904(w)s 2(ords,)k 3594(and)s 3998(a)s 4164(right)s
+4675(parameter)s 5689(which)s 6331(may)s 6797(be)s 7079(an)s 3(y)k
+7476(object.)s 480 5034(W)m 19(e)k 895(\207rst)s 1372(describe)s
+2271(the)s 2665(beha)s 4(viour)k 3725(when)s 4347(the)s
+4742(v)s 6(alue)k 5356(of)s 5674(the)s 6068(left)s
+6492(parameter)s 7552(of)s 220 fnt2 7870 5031(@Case)m 240 fnt1
+8703 5034(is)m 8960(a)s 0 4746(juxtaposition)m 1302(of)s 1568(one)s
+1965(or)s 2220(more)s 2762(simple)s 3450(w)s 2(ords.)k
+4193(Then)s 4737(the)s 5080(result)s 5666(of)s 5932(the)s
+220 fnt2 6275 4743(@Case)m 240 fnt1 7058 4746(is)m 7263(the)s
+7606(right)s 8112(parameter)s 0 4458(of)m 287(the)s 652(\207rst)s
+220 fnt2 1100 4455(@Y)m 4(ield)k 240 fnt1 1870 4458(whose)m
+2554(left)s 2948(parameter)s 3979(contains)s 4844(either)s 5463(the)s
+5828(v)s 6(alue)k 6413(of)s 6701(the)s 7065(left)s
+7459(parameter)s 8490(of)s 8778(the)s 220 fnt2 0 4167(@Case)m
+240 fnt1 727 4170(,)m 834(or)s 1093(the)s 1441(special)s
+2159(v)s 6(alue)k 220 fnt2 2727 4167(else)m 240 fnt1
+3121 4170(.)m 3285(If)s 3515(there)s 4048(is)s 4258(no)s
+4551(such)s 220 fnt2 5047 4167(@Y)m 4(ield)k 240 fnt1
+5800 4170(it)m 5992(is)s 6202(an)s 6485(error)s 13(.)k
+480 3796(When)m 1133(the)s 1506(left)s 1908(parameter)s 2946(of)s
+220 fnt2 3242 3793(@Case)m 240 fnt1 4054 3796(is)m 4288(not)s
+4679(a)s 4870(juxtaposition)s 6200(of)s 6496(simple)s 7214(w)s 2(ords,)k
+7928(the)s 8301(result)s 8916(is)s 0 3508(the)m 350(right)s
+864(parameter)s 1881(of)s 2155(the)s 2506(\207rst)s 220 fnt2
+2940 3505(@Y)m 4(ield)k 240 fnt1 3696 3508(whose)m 4367(left)s
+4746(parameter)s 5763(is)s 220 fnt2 5976 3505(else)m 240 fnt1
+6370 3508(,)m 6480(or)s 6742(an)s 7028(error)s 7554(otherwise.)s
+8650(This)s 0 3220(permits)m 767(e)s 3(xamples)k 1718(lik)s 2(e)k
+220 fnt2 480 2719(@RunningTitle @Case {)m 480 2431( dft @Y)m 4(ield @Title)k 480 2143( else @Y)m 4(ield @RunningTitle)k
+480 1855(})m 240 fnt1 0 1361(where)m 661(a)s 848(running)s
+1667(title)s 2115(is)s 2346(returned)s 3221(unless)s 3892(it)s
+4105(has)s 4496(the)s 4866(v)s 6(alue)k 220 fnt2
+5455 1358(dft)m 240 fnt1 5776 1361(\(which)m 6519(presumably)s 7710(means)s
+8393(that)s 8833(no)s 0 1073(running)m 798(title)s 1224(w)s 2(as)k
+1645(supplied\),)s 2642(in)s 2885(which)s 3527(case)s 3994(an)s
+4277(ordinary)s 5141(title)s 5567(is)s 5777(returned)s 6631(instead.)s
+480 699(When)m 1127(a)s 1311(recepti)s 6(v)k 3(e)k
+2251(symbol)s 3029(is)s 3257(placed)s 3957(within)s 4643(a)s
+220 fnt2 4827 696(@Case)m 240 fnt1 5554 699(,)m 5679(it)s
+5889(should)s 6604(be)s 6904(included)s 7804(in)s 8065(each)s
+8579(alter)s 4(-)k 0 411(nati)m 6(v)k 3(e,)k
+695(since)s 1255(otherwise)s 2254(Basser)s 2964(Lout)s 3490(may)s
+3969(become)s 4783(confused)s 5718(when)s 6308(trying)s 6945(to)s
+7198(predict)s 7934(whether)s 8778(the)s 0 123(symbol)m 755(will)s
+1176(be)s 1453(a)s 1613(part)s 2039(of)s 2305(the)s
+2648(result)s 3232(or)s 3486(not.)s 3951(Alternati)s 6(v)k 3(ely)k 15(,)k
+5288(if)s 5500(it)s 5687(can)s 6071(be)s 6347(guaranteed)s
+7449(that)s 7862(the)s 8204(recepti)s 6(v)k 3(e)k
+
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 64 70
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(64)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s
+8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+0 13205(symbol)m
+764(will)s 1195(ne)s 6(v)k 3(er)k 1782(be)s
+2069(searched)s 2967(for)s 3310(when)s 3891(the)s 4244(cases)s
+4804(that)s 5226(it)s 5423(does)s 5918(not)s 6289(lie)s
+6587(within)s 7260(are)s 7612(selected,)s 8493(that)s 8916(is)s
+0 12917(all)m 293(right)s 804(too.)s 240 fnt5 0 12124(3.33.)m
+591(@Moment)s
+[ /Dest /LOUTmoment /DEST pdfmark
+240 fnt1 480 11692(The)m 908(prede\207ned)s 1976(symbol)s
+220 fnt2 2736 11689(@Moment)m
+[ /Dest /LOUT19_4637_pre_mome_1 /DEST pdfmark
+240 fnt1 3808 11692(has)m 4178(the)s
+4526(follo)s 6(wing)k 5503(de\207nition:)s 220 fnt2 480 11191(def @Moment)m
+480 10903( named @T)m 26(ag {})k 480 10615( named @Second {})m 480 10327( named @Min)m 2(ute {})k
+480 10039( named @Hour {})m 480 9751( named @Da)m 6(y {})k 480 9463( named @Month {})m 480 9175( named @Y)m 30(ear {})k
+480 8887( named @Centur)m -6(y {})k 480 8599( named @W)m 6(eekDa)k 6(y {})k
+480 8311( named @Y)m 30(earDa)k 6(y {})k 480 8023( named @Da)m 6(ylightSa)k 4(ving {})k
+480 7735({})m 240 fnt1 0 7241(It)m 208(may)s 677(be)s
+962(used)s 1463(lik)s 2(e)k 1878(an)s 3(y)k
+2278(other)s 2832(symbol.)s 3705(Lout)s 4220(pro)s 3(vides)k
+5095(an)s 5381(in)s 9(v)k 4(ocation)k 6439(of)s
+220 fnt2 6713 7238(@Moment)m 240 fnt1 7788 7241(with)m 8273(tag)s
+220 fnt2 8622 7238(no)m 3(w)k 240 fnt1 9019 7241(,)m
+0 6953(whose)m 668(other)s 1219(parameters)s 2317(are)s 2664(numbers)s
+3539(encoding)s 4470(the)s 4818(current)s 5554(date)s 6008(and)s
+6412(time:)s 220 fnt2 480 6388(@Second)m 240 fnt1 2482 6391(the)m
+2830(current)s 3566(second,)s 4338(usually)s 5083(between)s 5937(00)s
+6232(and)s 6636(59)s 220 fnt2 480 6057(@Min)m 2(ute)k
+240 fnt1 2482 6060(the)m 2830(current)s 3566(minute,)s 4337(between)s
+5191(00)s 5486(and)s 5890(59)s 220 fnt2 480 5747(@Hour)m
+240 fnt1 2482 5750(the)m 2830(current)s 3566(hour)s 9(,)k
+4103(between)s 4957(00)s 5252(and)s 5656(23)s 220 fnt2
+480 5437(@Da)m 6(y)k 240 fnt1 2482 5440(the)m 2830(current)s
+3566(day)s 3966(of)s 4237(the)s 4585(month,)s 5304(between)s
+6158(1)s 6313(and)s 6717(31)s 220 fnt2 480 5108(@Month)m
+240 fnt1 2482 5111(the)m 2830(current)s 3566(month,)s 4285(between)s
+5139(1)s 5294(\(January\))s 6245(and)s 6649(12)s 6943(\(December\))s
+220 fnt2 480 4779(@Y)m 30(ear)k 240 fnt1 2482 4782(the)m
+2830(current)s 3566(year)s 4037(of)s 4308(the)s 4656(century)s 15(,)k
+5465(between)s 6319(00)s 6614(and)s 7018(99)s 220 fnt2
+480 4450(@Centur)m -6(y)k 240 fnt1 2482 4453(the)m 2830(current)s
+3566(century)s 15(,)k 4375(e.g.)s 4765(19)s 5056(or)s
+5315(20)s 220 fnt2 480 4121(@W)m 6(eekDa)k 6(y)k
+240 fnt1 2482 4124(the)m 2830(current)s 3566(day)s 3966(of)s
+4237(the)s 4585(week,)s 5197(between)s 6051(1)s 6206(\(Sunday\))s
+7132(and)s 7536(7)s 7704(\(Saturday\))s 220 fnt2 480 3790(@Y)m 30(earDa)k 6(y)k
+240 fnt1 2482 3793(the)m 2830(current)s 3566(day)s 3966(of)s
+4237(the)s 4585(year)s 9(,)k 5094(between)s 5948(0)s
+6123(and)s 6527(365)s 220 fnt2 480 3461(@Da)m 6(ylightSa)k 4(ving)k
+240 fnt1 2482 3464(an)m 2784(implementation-dependent)s 5427(number)s 6237(that)s
+6675(may)s 7160(encode)s 7914(the)s 8282(daylight)s 2482 3176(sa)m 4(ving)k
+3156(currently)s 4072(in)s 4315(ef)s 6(fect)k
+[ /Dest /LOUT19_4637_pre_mome_2 /DEST pdfmark
+0 2615(Unix)m
+519(manual)s 1262(entries)s 1934(state)s 2411(that)s 220 fnt2
+2814 2612(@Second)m 240 fnt1 3813 2615(can)m 4186(be)s 4453(as)s
+4687(high)s 5155(as)s 5389(61,)s 5720(to)s 5944(allo)s 6(w)k
+6507(for)s 6830(leap)s 7265(seconds.)s 8171(Judicious)s 0 2327(use)m
+375(of)s 646(databases)s 1613(can)s 2002(con)s 9(v)k 3(ert)k
+2767(these)s 3314(numbers)s 4189(into)s 4614(useful)s 5253(dates.)s
+5908(F)s 3(or)k 6297(e)s 3(xample,)k 220 fnt2
+480 1826(@Moment&&no)m 3(w @Open { @Da)k 6(y {@Months&&@Month}, @Centur)k -6(y{@Y)k 30(ear} })k
+240 fnt1 0 1327(produces)m 915(something)s 1965(lik)s 2(e)k
+2377(26)s 2670(June,)s 3216(2013)s 3740(gi)s 6(v)k 3(en)k
+4320(a)s 4486(suitable)s 5285(database)s 6164(of)s 6435(months.)s
+
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 65 71
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(3.34.)m 1991(@Null)s 240 fnt5 10250 -1583(65)m
+gsave
+1417 -15423 translate
+240 fnt1 9066 13412 0 13412 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+240 fnt5 0 13247(3.34.)m 591(@Null)s
+[ /Dest /LOUTnull /DEST pdfmark
+240 fnt1
+480 12815(This)m 979(symbol)s
+[ /Dest /LOUT19_4637_pre_null_1 /DEST pdfmark
+1762(pro)s 3(vides)k 2657(a)s
+2846(con)s 9(v)k 3(enient)k 3967(w)s 2(ay)k
+4441(to)s 4703(remo)s 3(v)k 3(e)k 5493(unw)s 2(anted)k
+6503(concatenation)s 7911(symbols.)s 8896(If)s 0 12527(there)m 544(is)s
+765(a)s 942(concatenation)s 2339(symbol)s 3110(preceding)s 220 fnt2
+4117 12524(@Null)m 240 fnt1 4702 12527(,)m 4821(the)s 220 fnt2
+5180 12524(@Null)m 240 fnt1 5836 12527(and)m 6252(the)s 6611(concatenation)s
+8007(symbol)s 8779(are)s 0 12239(both)m 482(deleted.)s 1335(Otherwise,)s
+2423(if)s 2638(there)s 3170(is)s 3379(a)s 3544(follo)s 6(wing)k
+4519(concatenation)s 5903(symbol,)s 6714(it)s 6905(and)s 7307(the)s
+220 fnt2 7654 12236(@Null)m 240 fnt1 8298 12239(are)m 8643(both)s
+0 11951(deleted.)m 794(Otherwise,)s 220 fnt2 1883 11948(@Null)m 240 fnt1
+2528 11951(becomes)m 3416(an)s 3699(empty)s 4351(object.)s 480 11577(These)m
+1107(rules)s 1622(apply)s 2208(to)s 2447(a)s 2613(fully)s
+3118(parenthesized)s 4490(v)s 3(ersion)k 5248(of)s 5519(the)s
+5867(e)s 3(xpression.)k 7051(F)s 3(or)k 7440(e)s 3(xample,)k
+8354(in)s 220 fnt2 480 11076(...)m 13( //1vx @Null |0.5i ...)k 240 fnt1
+0 10621(it)m 202(is)s 423(the)s 782(horizontal)s 1817(concatenation)s
+3213(symbol)s 3984(follo)s 6(wing)k 220 fnt2 4972 10618(@Null)m
+240 fnt1 5628 10621(that)m 6057(disappears,)s 7184(because)s 8008(in)s
+8262(the)s 8621(fully)s 0 10333(parenthesized)m 1372(v)s 3(ersion)k
+220 fnt2 480 9832(...)m 13( //1vx { @Null |0.5i ...)k 13( })k 240 fnt1
+0 9338(there)m 533(is)s 743(no)s 1036(concatenation)s 2421(symbol)s
+3181(preceding)s 4177(the)s 220 fnt2 4525 9335(@Null)m 240 fnt1
+5110 9338(.)m 240 fnt5 0 8545(3.35.)m 591(@Galley)s 1534(and)s
+1975(@F)s 6(or)k 4(ceGalley)k
+[ /Dest /LOUTgalley /DEST pdfmark
+240 fnt1 480 8068(These)m
+1131(symbols)s
+[ /Dest /LOUT19_4637_pre_gall_1 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_gall_2 /DEST pdfmark
+2004(both)s 2511(act)s 2874(as)s 3148(a)s
+3338(placeholder)s 4538(for)s 4900(a)s 5090(g)s 1(alle)k 3(y)k 15(.)k
+5844(That)s 6366(is,)s 6656(the)s 3(y)k 7144(may)s
+7634(be)s 7940(replaced)s 8832(by)s 0 7780(components)m 1210(of)s
+1483(a)s 1651(g)s 1(alle)k 3(y)k 15(.)k
+2383(In)s 2641(the)s 2991(case)s 3460(of)s 220 fnt2
+3734 7777(@F)m 6(orceGalle)k 4(y)k 240 fnt1 5189 7780(the)m
+5539(g)s 1(alle)k 3(y)k 6175(will)s 6604(then)s
+7075(ha)s 4(v)k 3(e)k 7578(a)s 7746(forcing)s
+8492(g)s 1(alle)k 3(y)k 0 7492(ef)m 6(fect)k
+583(at)s 802(this)s 1184(point)s 1723(although)s 2604(it)s
+2783(need)s 3280(not)s 3632(be)s 3901(declared)s 4754(using)s
+220 fnt2 5313 7489(f)m 6(orce into)k 240 fnt1 6202 7492(.)m
+6353(See)s 6740(Section)s 7501(2.7)s 7835(for)s 8160(a)s
+8312(detailed)s 0 7204(discussion)m 1054(of)s 1325(g)s 1(alle)k 3(ys,)k
+2105(forcing)s 2848(g)s 1(alle)k 3(ys,)k 3628(and)s
+4032(tar)s 4(gets.)k 240 fnt5 0 6411(3.36.)m 591(@BeginHeaderComponent,)s
+3466(@EndHeaderComponent,)s 6182(@SetHeaderComponent,)s 591 6123(and)m 1032(@ClearHeaderComponent)s
+[ /Dest /LOUTheader_comp /DEST pdfmark
+240 fnt1
+480 5646(Informally)m 15(,)k 1597(header)s 2298(components)s 3510(are)s
+3861(running)s 4663(headers)s 5448(that)s 5871(appear)s 6572(at)s
+6808(the)s
+[ /Dest /LOUT19_4637_pre_head_1 /DEST pdfmark
+7160(top)s 7523(of)s 7798(the)s 8151(displayed)s
+0 5358(se)m 3(gments)k 936(of)s 1204(g)s 1(alle)k 3(ys.)k
+2039(The)s 3(y)k 2579(are)s 2923(used,)s 3467(for)s
+3802(e)s 3(xample,)k 4714(by)s 5005(the)s 220 fnt2
+5350 5355(@Tb)m 4(l)k 240 fnt1 5917 5358(table)m 6434(formatting)s
+7493(package)s 8330(to)s 8566(place)s 0 5070(running)m 798(headers)s
+1579(at)s 1811(the)s 2159(top)s 2518(of)s 2789(each)s
+3284(page)s 3792(of)s 4063(a)s 4229(multi-page)s 5320(table,)s
+5891(after)s 6387(the)s 6735(\207rst)s 7166(page.)s 480 4696(F)m 3(ormally)k 15(,)k
+1431(a)s 1583(header)s 2266(component)s 3376(of)s 3633(a)s
+3785(g)s 1(alle)k 3(y)k 4405(is)s 4601(an)s
+4870(ordinary)s 5720(component)s 6830(of)s 7087(a)s 7239(g)s 1(alle)k 3(y)k
+7859(\(Section)s 8698(2.7\))s 0 4408(together)m 845(with)s 1330(an)s
+1616(indication)s 2631(that)s 3052(the)s 3403(component)s 4530(is)s
+4742(a)s 4911(header)s 5611(component.)s 6841(When)s 7473(printed,)s
+8260(a)s 8429(header)s 0 4120(component)m 1125(looks)s 1696(e)s 3(xactly)k
+2438(lik)s 2(e)k 2851(it)s 3045(w)s 2(ould)k
+3701(ha)s 4(v)k 3(e)k 4203(done)s 4726(as)s
+4977(an)s 5262(ordinary)s 6127(component;)s 7304(the)s 7653(dif)s 6(ference)k
+8671(is)s 8883(in)s 0 3832(whether)m 830(the)s 1178(component)s
+2302(is)s 2512(printed)s 3247(at)s 3479(all,)s 3824(and)s
+4228(if)s 4445(so)s 4711(where.)s 480 3458(Ev)m 3(ery)k
+1109(non-header)s 2253(component)s 3384(of)s 3663(e)s 6(v)k 3(ery)k
+4246(g)s 1(alle)k 3(y)k 4888(has)s 5266(associated)s
+6313(with)s 6803(it)s 7002(a)s 7176(sequence)s 8116(of)s
+8395(zero)s 8867(or)s 0 3170(more)m 553(header)s 1257(components.)s
+2585(Whene)s 6(v)k 3(er)k 3625(a)s 3798(g)s 1(alle)k 3(y)k
+4439(attaches)s 5266(to)s 5511(a)s 5684(tar)s 4(get,)k
+6337(and)s 6748(the)s 7102(tar)s 4(get)k 7708(does)s
+8205(not)s 8578(itself)s 0 2882(occup)m 2(y)k 736(an)s
+1010(entire)s 1601(component)s 2716(of)s 2979(the)s 3318(enclosing)s
+4280(g)s 1(alle)k 3(y)k 15(,)k 4943(copies)s
+5597(of)s 5859(the)s 6199(header)s 6887(components)s 8086(associated)s
+0 2594(with)m 482(the)s 830(\207rst)s 1261(ordinary)s 2125(component)s
+3249(to)s 3488(be)s 3770(promoted)s 4745(into)s 5170(that)s
+5588(tar)s 4(get)k 6187(are)s 6534(promoted)s 7509(into)s
+7934(it)s 8126(\207rst.)s 480 2220(The)m 914(condition)s 1881(`and)s
+2370(the)s 2724(tar)s 4(get)k 3329(does)s 3825(not)s
+4197(itself)s 4751(occup)s 2(y)k 5501(an)s 5790(entire)s
+6395(component)s 7525(of)s 7802(the)s 8156(enclosing)s 0 1932(g)m 1(alle)k 3(y')k
+704(ensures)s 1484(that,)s 1961(for)s 2311(e)s 3(xample,)k
+3237(when)s 3825(part)s 4268(of)s 4551(a)s 4729(section)s
+5475(has)s 5857(header)s 6566(components,)s 7842(these)s 8401(are)s
+8760(not)s 0 1644(printed)m 739(where)s 1384(the)s 1736(section)s
+2475(is)s 2689(promoted)s 3669(into)s 4098(its)s 4379(chapter)s 9(,)k
+5184(b)s 4(ut)k 5551(rather)s 6171(where)s 6816(the)s
+7168(chapter)s 7936(is)s 8151(promoted)s 0 1356(onto)m 481(pages.)s
+1193(If)s 1426(the)s 1777(tar)s 4(get)k 2379(occupies)s
+3269(the)s 3620(whole)s 4264(component,)s 5438(then)s 5910(the)s
+6260(incoming)s 7220(g)s 1(alle)k 3(y)k 7857(will)s
+8286(not)s 8655(split)s 0 1068(at)m 232(all,)s 577(so)s
+843(headers)s 1624(w)s 2(ould)k 2279(be)s 2561(of)s
+2832(no)s 3125(interest)s 3887(there.)s 480 694(The)m 896(one)s
+1286(remaining)s 2295(question)s 3151(is)s 3348(`Ho)s 6(w)k
+3929(is)s 4126(the)s 4462(sequence)s 5383(of)s 5641(header)s
+6326(components)s 7521(of)s 7780(each)s 8262(ordinary)s 0 406(component)m
+1124(determined?')s 2477(By)s 2812(def)s 2(ault,)k 3580(the)s
+3928(header)s 4626(components)s 5834(of)s 6106(one)s 6508(component)s
+7632(are)s 7980(the)s 8328(same)s 8876(as)s 0 118(those)m
+561(of)s 832(the)s 1180(pre)s 6(vious)k 2049(component.)s
+3277(W)s 19(e)k 3646(can)s 4035(sho)s 6(w)k
+4589(this)s 4985(graphically)s 6114(as)s 6364(follo)s 6(ws:)k
+
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 66 72
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Symbol
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Symbol
+/fnt4 { /Symbol LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(66)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s
+8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13261 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+240 fnt6
+480 13209(C)m 168 fnt6 645 13122(i)m 240 fnt4 773 13201(:)m
+240 fnt6 903 13209(H)m 168 fnt4 1086 13116(1)m 240 fnt4
+1164 13201(,)m 240 fnt6 1271 13209(H)m 168 fnt4 1454 13116(2)m
+240 fnt4 1546 13201(,)m 1653(\274)s 1951(,)s 240 fnt6
+2058 13209(H)m 168 fnt6 2241 13122(n)m 240 fnt6 480 12921(/)m
+480 12633(C)m 168 fnt6 645 12546(i)m 168 fnt4 711 12540(+)m
+824(1)s 240 fnt4 974 12625(:)m 240 fnt6 1104 12633(H)m
+168 fnt4 1287 12540(1)m 240 fnt4 1365 12625(,)m 240 fnt6
+1472 12633(H)m 168 fnt4 1655 12540(2)m 240 fnt4 1747 12625(,)m
+1854(\274)s 2152(,)s 240 fnt6 2259 12633(H)m 168 fnt6
+2442 12546(n)m 240 fnt1 0 12089(which)m 642(may)s 1108(be)s
+1391(read:)s 1908(`If)s 2217(ordinary)s 3082(component)s 240 fnt6
+4206 12091(C)m 168 fnt6 4371 12035(i)m 240 fnt1 4475 12089(has)m
+4846(header)s 5543(component)s 6667(sequence)s 240 fnt6 7601 12091(H)m
+168 fnt4 7784 12029(1)m 240 fnt4 7862 12083(,)m 240 fnt6
+7969 12091(H)m 168 fnt4 8152 12028(2)m 240 fnt4 8244 12083(,)m
+8351(\274)s 8649(,)s 240 fnt6 8756 12091(H)m 168 fnt6
+8939 12035(n)m 240 fnt1 9019 12089(,)m 0 11801(then)m 468(its)s
+742(successor)s 1717(component)s 240 fnt6 2839 11803(C)m 168 fnt6
+3004 11747(i)m 168 fnt4 3070 11741(+)m 3183(1)s 240 fnt1
+3308 11801(has)m 3676(header)s 4372(component)s 5494(sequence)s 240 fnt6
+6426 11803(H)m 168 fnt4 6609 11741(1)m 240 fnt4 6687 11795(,)m
+240 fnt6 6794 11803(H)m 168 fnt4 6977 11740(2)m 240 fnt4
+7069 11795(,)m 7176(\274)s 7474(,)s 240 fnt6 7581 11803(H)m
+168 fnt6 7764 11747(n)m 240 fnt1 7902 11801(also.)m 16(')k
+8501(Using)s 0 11513(this)m 396(notation,)s 1287(we)s 1622(may)s
+2088(no)s 6(w)k 2549(de\207ne)s 3190(the)s 3538(four)s
+3996(symbols)s 4845(that)s 5263(af)s 6(fect)k 5859(header)s
+6556(component)s 7680(sequences:)s 240 fnt6 480 11014(C)m 168 fnt6
+645 10927(i)m 240 fnt4 773 11006(:)m 240 fnt6 903 11014(H)m
+168 fnt4 1086 10921(1)m 240 fnt4 1164 11006(,)m 240 fnt6
+1271 11014(H)m 168 fnt4 1454 10921(2)m 240 fnt4 1546 11006(,)m
+1653(\274)s 1951(,)s 240 fnt6 2058 11014(H)m 168 fnt6
+2241 10927(n)m 240 fnt6 480 10726(/)m 480 10438(gap)m 220 fnt2
+905 10433(@BeginHeaderComponent)m 240 fnt6 3609 10438(H)m 168 fnt6 3792 10351(n)m
+168 fnt4 3894 10345(+)m 4007(1)s 240 fnt6 480 10150(/)m
+480 9862(C)m 168 fnt6 645 9775(i)m 168 fnt4 711 9769(+)m
+824(1)s 240 fnt4 974 9854(:)m 240 fnt6 1104 9862(H)m
+168 fnt4 1287 9769(1)m 240 fnt4 1365 9854(,)m 240 fnt6
+1472 9862(H)m 168 fnt4 1655 9769(2)m 240 fnt4 1747 9854(,)m
+1854(\274)s 2152(,)s 240 fnt6 2259 9862(H)m 168 fnt6
+2442 9775(n)m 240 fnt4 2534 9854(,)m 240 fnt6 2641 9862(H)m
+168 fnt6 2824 9775(n)m 168 fnt4 2926 9769(+)m 3039(1)s
+240 fnt1 0 9318(That)m 478(is,)s 220 fnt2 723 9315(@BeginHeaderComponent)m
+240 fnt1 3394 9318(occup)m 2(ying)k 4422(an)s 4684(entire)s
+
+[ /Dest /LOUT19_4637_pre_head_2 /DEST pdfmark
+5263(component)s 6366(appends)s 7181(a)s 7326(header)s 8002(component)s
+0 9030(to)m 255(the)s 619(sequence)s 1568(of)s 1856(the)s
+2220(follo)s 6(wing)k 3213(ordinary)s 4093(components.)s 5431(When)s
+6076(printed,)s 6876(this)s 7288(header)s 8002(component)s 0 8742(is)m
+217(separated)s 1184(by)s 240 fnt6 1485 8744(gap)m 240 fnt1
+1905 8742(from)m 2436(the)s 2792(follo)s 6(wing)k 3776(component;)s
+4959(if)s 240 fnt6 5183 8744(gap)m 240 fnt1 5603 8742(is)m
+5820(empty)s 6480(it)s 6679(denotes)s 220 fnt2 7468 8739(0ie)m
+240 fnt1 7819 8742(as)m 8076(usual)s 8644(with)s 0 8454(concatenation)m
+1391(g)s 1(aps.)k 2000(The)s 2434(appearance)s 3572(of)s
+3850(the)s 4204(header)s 4908(component)s 6039(will)s 6471(be)s
+6760(e)s 3(xactly)k 7508(as)s 7764(it)s 7963(w)s 2(ould)k
+8625(ha)s 4(v)k 3(e)k 0 8166(been)m 509(had)s
+913(it)s 1105(occurred)s 1999(alone)s 2573(at)s 2805(that)s
+3223(point,)s 3822(rather)s 4438(than)s 4907(after)s 220 fnt2
+5403 8163(@BeginHeaderComponent)m 240 fnt1 8035 8166(.)m 480 7792(Ne)m 3(xt)k
+1002(comes)s 220 fnt2 1664 7789(@EndHeaderComponent)m 240 fnt1 4126 7792(:)m
+240 fnt6 480 7297(C)m 168 fnt6 645 7210(i)m 240 fnt4
+773 7289(:)m 240 fnt6 903 7297(H)m 168 fnt4 1086 7204(1)m
+240 fnt4 1164 7289(,)m 240 fnt6 1271 7297(H)m 168 fnt4
+1454 7204(2)m 240 fnt4 1546 7289(,)m 1653(\274)s 1951(,)s
+240 fnt6 2058 7297(H)m 168 fnt6 2241 7210(n)m 240 fnt4
+2333 7289(,)m 240 fnt6 2440 7297(H)m 168 fnt6 2623 7210(n)m
+168 fnt4 2725 7204(+)m 2838(1)s 240 fnt6 480 7009(/)m
+220 fnt2 480 6716(@EndHeaderComponent)m 240 fnt6 480 6433(/)m 480 6145(C)m
+168 fnt6 645 6058(i)m 168 fnt4 711 6052(+)m 824(1)s
+240 fnt4 974 6137(:)m 240 fnt6 1104 6145(H)m 168 fnt4
+1287 6052(1)m 240 fnt4 1365 6137(,)m 240 fnt6 1472 6145(H)m
+168 fnt4 1655 6052(2)m 240 fnt4 1747 6137(,)m 1854(\274)s
+2152(,)s 240 fnt6 2259 6145(H)m 168 fnt6 2442 6058(n)m
+240 fnt1 0 5601(That)m 520(is,)s 220 fnt2 809 5598(@EndHeaderComponent)m
+240 fnt1 3353 5601(\(which)m 4097(has)s 4490(no)s 4805(parameters\))s
+6003(occup)s 2(ying)k 7074(an)s
+[ /Dest /LOUT19_4637_pre_head_3 /DEST pdfmark
+7380(entire)s 8002(component)s
+0 5313(deletes)m 722(the)s 1078(last)s 1477(header)s 2182(component.)s
+3418(If)s 3656(the)s 4012(sequence)s 4953(is)s 5171(empty)s 15(,)k
+5869(a)s 6043(w)s 2(arning)k 6886(message)s 7760(is)s
+7978(printed)s 8722(and)s 0 5025(it)m 193(remains)s 1002(empty)s 15(.)k
+220 fnt2 1751 5022(@BeginHeaderComponent)m 240 fnt1 4445 5025(and)m 220 fnt2
+4851 5022(@EndHeaderComponent)m 240 fnt1 7375 5025(are)m 7724(naturally)s 8629(used)s
+0 4737(in)m 243(matching)s 1186(\(possibly)s 2117(nested\))s 2856(pairs,)s
+3427(to)s 3666(introduce)s 4625(and)s 5029(subsequently)s 6333(retract)s
+7001(a)s 7167(header)s 7864(component.)s 480 4363(Ne)m 3(xt)k
+1002(comes)s 220 fnt2 1664 4360(@SetHeaderComponent)m 240 fnt1 4065 4363(:)m
+240 fnt6 480 3868(C)m 168 fnt6 645 3781(i)m 240 fnt4
+773 3860(:)m 240 fnt6 903 3868(H)m 168 fnt4 1086 3775(1)m
+240 fnt4 1164 3860(,)m 240 fnt6 1271 3868(H)m 168 fnt4
+1454 3775(2)m 240 fnt4 1546 3860(,)m 1653(\274)s 1951(,)s
+240 fnt6 2058 3868(H)m 168 fnt6 2241 3781(n)m 240 fnt6
+480 3580(/)m 480 3292(gap)m 220 fnt2 905 3287(@SetHeaderComponent)m 240 fnt6
+3378 3292(H)m 168 fnt6 3561 3205(n)m 168 fnt4 3663 3199(+)m
+3776(1)s 240 fnt6 480 3004(/)m 480 2716(C)m 168 fnt6
+645 2629(i)m 168 fnt4 711 2623(+)m 824(1)s 240 fnt4
+974 2708(:)m 240 fnt6 1104 2716(H)m 168 fnt6 1287 2629(n)m
+168 fnt4 1389 2623(+)m 1502(1)s 220 fnt2 0 2169(@SetHeaderComponent)m
+240 fnt1 2461 2172(clears)m 3068(an)s 3(y)k 3465(current)s
+4201(header)s 4898(components)s
+[ /Dest /LOUT19_4637_pre_head_4 /DEST pdfmark
+6107(and)s 6511(replaces)s 7344(them)s
+7882(by)s 8176(one)s 8578(of)s 8850(its)s 0 1884(o)m 6(wn.)k
+571(Finally)s 1302(we)s 1637(ha)s 4(v)k 3(e)k
+220 fnt2 2138 1881(@ClearHeaderComponent)m 240 fnt1 4733 1884(:)m 240 fnt6
+480 1385(C)m 168 fnt6 645 1298(i)m 240 fnt4 773 1377(:)m
+240 fnt6 903 1385(H)m 168 fnt4 1086 1292(1)m 240 fnt4
+1164 1377(,)m 240 fnt6 1271 1385(H)m 168 fnt4 1454 1292(2)m
+240 fnt4 1546 1377(,)m 1653(\274)s 1951(,)s 240 fnt6
+2058 1385(H)m 168 fnt6 2241 1298(n)m 240 fnt6 480 1097(/)m
+220 fnt2 480 804(@ClearHeaderComponent)m 240 fnt6 480 521(/)m 480 233(C)m
+168 fnt6 645 146(i)m 168 fnt4 711 140(+)m 824(1)s
+240 fnt4 974 225(:)m
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 67 73
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+%%+ font Courier
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+%%IncludeResource: font Courier
+/Courierfnt9 vec2 /Courier LoutRecode
+/fnt9 { /Courierfnt9 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(3.36.)m 1991(@Be)s 9(ginHeaderComponent,)k 4777(@EndHeaderComponent,)s
+7400(@SetHeaderComponent,)s 1991 -1868(and)m 2417(@ClearHeaderComponent)s 240 fnt5 10248 -1583(67)m
+gsave
+1417 -15423 translate
+240 fnt1 9066 13080 0 13080 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+0 12917(This)m 466(symbol)s 1216(clears)s 1813(an)s 3(y)k
+2200(header)s 2886(components,)s 4140(lea)s 4(ving)k 4883(the)s
+5221(sequence)s 6143(empty)s 15(.)k 6880(These)s
+[ /Dest /LOUT19_4637_pre_head_5 /DEST pdfmark
+7497(last)s
+7878(tw)s 2(o)k 8277(symbols)s 0 12629(combine)m 879(less)s
+1286(cleanly)s 2029(than)s 2496(the)s 2843(\207rst)s 3272(tw)s 2(o)k
+3681(\(either)s 4361(will)s 4786(wreck)s 5429(an)s 3(y)k
+5825(enclosing)s 220 fnt2 6793 12626(@BeginHeaderCompo-)m 0 12338(nent)m 240 fnt1
+491 12341(\211)m 220 fnt2 679 12338(@EndHeaderComponent)m 240 fnt1 3209 12341(pair\),)m
+3774(b)s 4(ut)k 4145(the)s 3(y)k 4616(are)s
+4971(useful)s 5618(in)s 5869(situations)s 6845(where)s 7493(the)s
+7849(range)s 8444(of)s 8724(one)s 0 12053(header)m 697(is)s
+907(terminated)s 1986(by)s 2280(the)s 2628(start)s 3098(of)s
+3369(the)s 3717(range)s 4304(of)s 4575(the)s 4923(ne)s 3(xt.)k
+480 11679(All)m 859(four)s 1337(symbols)s 2206(yield)s 2761(the)s
+3129(v)s 6(alue)k 220 fnt2 3717 11676(@Null)m 240 fnt1
+4382 11679(where)m 5041(the)s 3(y)k 5524(appear)s 13(.)k
+6332(If)s 6582(the)s 3(y)k 7064(do)s 7377(not)s
+7763(occup)s 2(y)k 8527(entire)s 0 11391(components)m 1208(of)s
+1479(their)s 1976(g)s 1(alle)k 3(y)k 15(,)k
+2648(the)s 3(y)k 3111(are)s 3458(silently)s 4215(ignored.)s
+480 11017(Owing)m 1186(to)s 1426(limitations)s 2499(in)s 2743(the)s
+3092(w)s 2(ay)k 3544(header)s 4242(components)s 5451(are)s
+5799(implemented,)s 7155(the)s 7504(follo)s 6(wing)k 8482(object)s
+0 10729(types)m 547(are)s 885(not)s 1242(allo)s 6(wed)k
+2042(inside)s 2660(them,)s 3236(and)s 3631(Basser)s 4319(Lout)s
+4821(will)s 5238(complain)s 6176(and)s 6571(quit)s 6994(if)s
+7202(it)s 7385(\207nds)s 7893(an)s 3(y)k 8281(of)s
+8542(them:)s 0 10441(g)m 1(alle)k 3(ys,)k 772(recepti)s 6(v)k 3(e)k
+1686(or)s 1936(recursi)s 6(v)k 3(e)k 2850(symbols,)s
+3747(cross)s 4280(references,)s 220 fnt2 5359 10438(@P)m 8(ageLabel)k
+240 fnt1 6608 10441(,)m 220 fnt2 6707 10438(@HExpand)m 240 fnt1
+7820 10441(,)m 220 fnt2 7918 10438(@VExpand)m 240 fnt1 9019 10441(,)m
+220 fnt2 0 10150(@HCo)m 3(v)k 5(er)k 240 fnt1
+958 10153(,)m 220 fnt2 1091 10150(@VCo)m 3(v)k 5(er)k
+240 fnt1 2037 10153(,)m 2171(and)s 220 fnt2 2602 10150(@Scale)m
+240 fnt1 3452 10153(when)m 4054(it)s 4273(has)s 4670(an)s
+4980(empty)s 5659(left)s 6062(parameter)s 13(.)k 7134(In)s
+7417(addition,)s 8335(if)s 8579(more)s 0 9865(than)m 498(three)s
+1061(copies)s 1753(of)s 2054(the)s 2432(same)s 3008(running)s
+3836(header)s 4563(are)s 4940(printed)s 5705(on)s 6031(the)s
+6409(same)s 6986(page,)s 7575(their)s 8102(horizontal)s 0 9577(positions)m
+919(will)s 1350(become)s 2155(confused,)s 3131(probably)s 4040(resulting)s
+4934(in)s 5182(the)s 5535(apparent)s 6422(disappearance)s 7837(of)s
+8113(all)s 8411(b)s 4(ut)k 8778(the)s 0 9289(last)m
+402(three)s 947(copies.)s 1733(\(The)s 2252(magic)s 2900(number)s
+3703(3)s 3878(can)s 4279(be)s 4572(increased)s 5544(by)s
+5849(recompiling)s 7069(the)s 7428(Lout)s 7952(source)s 8644(with)s
+0 9001(the)m 220 fnt9 348 9009(MAX_HCOPIES)m 240 fnt1 1860 9001(constant)m
+2717(increased.\))s 240 fnt5 0 8218(3.37.)m 591(@NotRe)s 3(v)k 2(ealed)k
+
+[ /Dest /LOUTnotrevealed /DEST pdfmark
+240 fnt1 480 7786(The)m 220 fnt2 938 7783(@NotRe)m 6(v)k 5(ealed)k
+240 fnt1 2495 7786(symbol)m
+[ /Dest /LOUT19_4637_pre_notr_1 /DEST pdfmark
+3285(e)s 3(x)k 3(erts)k
+3931(\207ne)s 4376(control)s 5138(o)s 3(v)k 3(er)k
+5647(the)s 6026(process)s 6824(of)s 7125(e)s 3(xpanding)k
+8204(recepti)s 6(v)k 3(e)k 0 7498(symbols.)m 955(It)s
+1152(may)s 1611(appear)s 2300(only)s 2773(within)s 3433(the)s
+3774(body)s 4300(of)s 4564(a)s 4722(de\207nition,)s 5739(immediately)s
+6979(follo)s 6(wing)k 7949(the)s 8289(name)s 8855(of)s
+0 7210(a)m 166(recepti)s 6(v)k 3(e)k 1088(symbol.)s
+1957(F)s 3(or)k 2346(e)s 3(xample:)k 220 fnt2
+480 6709(def A { @Galle)m 4(y })k 480 6133(def B { @Galle)m 4(y })k 480 5557(def ABList)m
+480 5269({)m 480 4981( A)m 480 4693( // B @NotRe)m 6(v)k 5(ealed)k
+480 4405( // ABList)m 480 4117(})m 240 fnt1 0 3623(The)m 424(meaning)s
+1297(is)s 1503(that)s 1916(the)s 2260(symbol)s 3016(immediately)s
+4259(preceding)s 220 fnt2 5251 3620(@NotRe)m 6(v)k 5(ealed)k
+240 fnt1 6718 3623(,)m 220 fnt2 6821 3620(B)m 240 fnt1
+7015 3623(in)m 7253(this)s 7645(e)s 3(xample,)k 8555(is)s
+8760(not)s 0 3335(re)m 6(v)k 3(ealed)k 851(to)s
+1083(g)s 1(alle)k 3(ys)k 1800(which)s 2435(encounter)s
+220 fnt2 3431 3332(ABList)m 240 fnt1 4113 3335(while)m 4693(searching)s
+5655(for)s 5986(tar)s 4(gets;)k 6723(to)s 6955(such)s
+7444(g)s 1(alle)k 3(ys)k 8161(it)s 8345(appears)s
+0 3047(that)m 220 fnt2 408 3044(ABList)m 240 fnt1 1086 3047(contains)m
+220 fnt2 1923 3044(A)m 240 fnt1 2116 3047(only)m 15(,)k
+2624(not)s 220 fnt2 2979 3044(B)m 240 fnt1 3117 3047(,)m
+3213(hence)s 3816(only)s 4286(g)s 1(alle)k 3(ys)k
+4999(tar)s 4(geted)k 5811(to)s 220 fnt2 6039 3044(A)m
+240 fnt1 6233 3047(will)m 6648(e)s 3(xpand)k 220 fnt2
+7384 3044(ABList)m 240 fnt1 8013 3047(.)m 8166(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
+0 2759(after)m 220 fnt2 496 2756(ABList)m 240 fnt1 1185 2759(is)m
+1395(e)s 3(xpanded)k 2368(by)s 2662(such)s 3158(a)s
+3324(g)s 1(alle)k 3(y)k 15(,)k 220 fnt2
+3996 2756(B)m 240 fnt1 4194 2759(will)m 4620(be)s 4902(a)s 4(v)k 6(ailable)k
+5810(as)s 6060(a)s 6226(tar)s 4(get)k 6825(in)s
+7068(the)s 7416(usual)s 7976(w)s 2(ay)k 15(.)k
+480 2385(Apart)m 1081(from)s 1602(this)s 1994(meaning,)s 220 fnt2
+2922 2382(@NotRe)m 6(v)k 5(ealed)k 240 fnt1 4445 2385(has)m
+4812(no)s 5102(ef)s 6(fect)k 5694(at)s 5923(all,)s
+6264(and)s 6665(the)s 7010(body)s 7540(of)s 7808(the)s
+8152(de\207nition)s 0 2097(may)m 501(be)s 819(understood)s 1976(by)s
+2306(deleting)s 220 fnt2 3164 2094(@NotRe)m 6(v)k 5(ealed)k
+240 fnt1 4727 2097(and)m 5166(an)s 3(y)k 5599(preceding)s
+6630(space.)s 7361(Thus,)s 7982(the)s 8366(symbol)s 0 1809(preceding)m
+220 fnt2 1001 1806(@NotRe)m 6(v)k 5(ealed)k 240 fnt1
+2533 1809(may)m 3004(ha)s 4(v)k 3(e)k 3510(named)s
+4211(and)s 4620(right)s 5136(parameters)s 6239(in)s 6487(the)s
+6840(usual)s 7405(w)s 2(ay;)k 7919(these)s 8471(w)s 2(ould)k
+0 1521(follo)m 6(w)k 672(after)s 1168(the)s 220 fnt2
+1516 1518(@NotRe)m 6(v)k 5(ealed)k 240 fnt1 3043 1521(symbol.)m
+480 1147(This)m 944(symbol)s 1692(w)s 2(as)k 2101(introduced)s
+3169(to)s 3396(o)s 3(v)k 3(ercome)k 4377(a)s
+4530(problem)s 5375(with)s 5845(\210oating)s 6616(\207gures)s 7306(treated)s
+8001(as)s 8238(displays.)s 0 859(It)m 205(turned)s 874(out)s
+1240(to)s 1479(be)s 1761(essential)s 2638(to)s 2877(specify)s
+3621(the)s 3969(layout)s 4627(of)s 4898(a)s 5064(column)s
+5839(\(in)s 6161(part\))s 6660(as)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 68 74
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(68)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s
+8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+220 fnt2
+480 13207(@BodyT)m 26(e)k 6(xtPlace)k 480 12919(// @FigurePlace)m 480 12631(// @BodyT)m 26(e)k 6(xtPlace)k
+480 12343(// @FigurePlace)m 480 12055(// @BodyT)m 26(e)k 6(xtPlace)k 480 11767(...)m
+240 fnt1 0 11316(so)m 256(that)s 664(\207gures)s 1355(could)s
+1935(alternate)s 2801(with)s 3273(body)s 3797(te)s 3(xt)k
+4201(do)s 6(wn)k 4775(the)s 5112(column.)s 5984(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
+6934(some)s 7484(means)s 8136(w)s 2(as)k 8546(need-)s
+0 11028(ed)m 291(to)s 538(ensure)s 1226(that)s 1652(in)s
+1903(the)s 2259(absence)s 3080(of)s 3359(an)s 3(y)k
+3764(\207gures)s 4474(there)s 5015(could)s 5613(only)s 6101(be)s
+6391(one)s 220 fnt2 6801 11025(@BodyT)m 26(e)k 6(xtPlace)k
+240 fnt1 8527 11028(in)m 8778(the)s 0 10740(column,)m 831(since)s
+1385(otherwise)s 2377(v)s 6(arious)k 3132(problems)s 4080(arose,)s
+4698(for)s 5042(e)s 3(xample)k 5912(the)s 220 fnt2
+6267 10737(@NP)m 240 fnt1 6851 10740(symbol)m 7618(merely)s 8342(causing)s
+0 10452(a)m 174(skip)s 634(from)s 1167(one)s 220 fnt2
+1577 10449(@BodyT)m 26(e)k 6(xtPlace)k 240 fnt1 3303 10452(to)m
+3551(the)s 3907(ne)s 3(xt)k 4385(in)s 4636(the)s
+4992(same)s 5548(column,)s 6381(rather)s 7006(than)s 7483(to)s
+7730(the)s 8087(\207rst)s 8526(in)s 8778(the)s 0 10164(ne)m 3(xt)k
+490(column.)s 1394(Also,)s 1974(without)s 2787(this)s 3204(feature)s
+3944(the)s 4314(optimal)s 5120(page)s 5650(break)s 2(er')k 13(s)k
+6595(attempts)s 7477(to)s 7737(end)s 8163(a)s 8351(column)s
+0 9876(early)m 545(w)s 2(ould)k 1214(be)s 1510(frustrated)s
+2496(by)s 2805(Lout)s 3331(then)s 3814(disco)s 3(v)k 3(ering)k
+4991(that)s 5423(plenty)s 6090(of)s 6375(space)s 6976(e)s 3(xisted)k
+7722(at)s 7968(a)s 8149(follo)s 6(wing)k 220 fnt2
+0 9585(@BodyT)m 26(e)k 6(xtPlace)k 240 fnt1 1703 9588(in)m
+1931(the)s 2263(same)s 2795(column.)s 3662(The)s 4074(solution)s
+4887(is)s 5082(based)s 5669(on)s 220 fnt2 5951 9585(ABList)m
+240 fnt1 6625 9588(abo)m 3(v)k 3(e;)k 7287(each)s
+7767(occurrence)s 8855(of)s 220 fnt2 0 9297(@BodyT)m 26(e)k 6(xtPlace)k
+240 fnt1 1712 9300(after)m 2201(a)s 220 fnt2 2361 9297(@FigurePlace)m
+240 fnt1 3798 9300(is)m 4002(not)s 4361(re)s 6(v)k 3(ealed)k
+5213(in)s 5449(the)s 5791(enclosing)s 6754(de\207nition,)s 7772(and)s
+8169(so)s 8428(cannot)s 0 9012(be)m 282(found)s 899(by)s
+1193(body)s 1727(te)s 3(xt)k 2142(g)s 1(alle)k 3(ys)k
+2866(unless)s 3515(a)s 3680(\207gure)s 4294(has)s 4664(pre)s 6(viously)k
+5722(attached)s 6576(to)s 6815(the)s 7163(preceding)s 220 fnt2
+8158 9009(@Figure-)m 0 8721(Place)m 240 fnt1 540 8724(.)m 240 fnt5
+0 7977(3.38.)m 591(The)s 1046(cr)s 4(oss)k 1614(r)s 4(efer)k 4(ence)k
+2616(symbols)s 3494(&&)s 3941(and)s 4382(&&&)s
+[ /Dest /LOUTcrossref /DEST pdfmark
+240 fnt1
+480 7500(The)m 941(cross)s 1516(reference)s 2493(symbol)s 220 fnt2
+3286 7497(&&)m 240 fnt1 3668 7500(tak)m 2(es)k 4241(the)s
+4623(name)s 5230(of)s 5534(a)s 5734(symbol)s 6527(\(not)s
+7006(an)s 7322(object\))s 8068(for)s 8439(its)s 8749(left)s
+0 7212(parameter)m 9(,)k 1068(and)s 1489(an)s 1788(object)s
+2449(whose)s 3134(v)s 6(alue)k 3718(must)s 4260(be)s
+4559(a)s 4741(simple)s 5451(w)s 2(ord,)k 6064(or)s
+6340(se)s 6(v)k 3(eral)k 7079(simple)s 7788(w)s 2(ords,)k
+8495(for)s 8850(its)s 0 6924(right)m 519(parameter)s 13(.)k
+1633(The)s 2069(result)s 2668(is)s 2887(a)s 3061(cross)s
+3612(reference,)s 4615(which)s 5265(may)s 5740(be)s 6030(thought)s
+6831(of)s 7111(as)s 7369(an)s 7661(arro)s 6(w)k
+8275(pointing)s 0 6636(from)m 524(the)s 872(cross)s 1414(reference)s
+2357(symbol)s 3117(to)s 3356(the)s 3704(be)s 3(ginning)k
+4712(of)s 4983(an)s 5266(in)s 9(v)k 4(ocation)k
+6320(of)s 6591(the)s 6939(named)s 7635(symbol.)s 480 6262(The)m
+894(in)s 9(v)k 4(ocation)k 1934(pointed)s 2696(to,)s
+2975(kno)s 6(wn)k 3665(as)s 3901(the)s 240 fnt6
+4235 6264(tar)m 8(g)k 2(et)k 240 fnt1 4846 6262(of)m
+5103(the)s 5437(cross)s 5965(reference,)s 6945(is)s 7141(generally)s
+8070(one)s 8458(whose)s 220 fnt2 0 5971(@T)m 26(ag)k
+240 fnt1 643 5974(parameter)m 1677(has)s 2067(v)s 6(alue)k
+2655(equal)s 3248(to)s 3507(the)s 3875(right)s 4406(parameter)s
+5440(of)s 5731(the)s 6099(cross)s 6661(reference)s 7624(symbol.)s
+8513(Three)s 0 5686(special)m 759(tags,)s 220 fnt2 1292 5683(preceding)m
+240 fnt1 2243 5686(,)m 220 fnt2 2391 5683(f)m 6(ollo)k 3(wing)k
+240 fnt1 3221 5686(,)m 3369(and)s 220 fnt2 3814 5683(f)m 6(oll_or_prec)k
+240 fnt1 4948 5686(,)m 5097(point)s 5690(respecti)s 6(v)k 3(ely)k
+6930(to)s 7210(the)s 7599(\207rst)s 8072(in)s 9(v)k 4(ocation)k
+0 5398(preceding)m 1006(the)s 1365(cross)s 1918(reference)s 2872(in)s
+3126(the)s 3485(\207nal)s 3976(printed)s 4721(document,)s 5783(to)s
+6033(the)s 6392(\207rst)s 6834(in)s 9(v)k 4(ocation)k
+7899(follo)s 6(wing)k 8887(it,)s 0 5110(and)m 404(to)s
+643(the)s 991(\207rst)s 1422(follo)s 6(wing)k 2399(it)s
+2591(if)s 2808(such)s 3304(e)s 3(xists)k 3896(else)s
+4323(to)s 4562(the)s 4910(\207rst)s 5341(preceding)s 6337(it.)s
+480 4736(A)m 709(cross)s 1249(reference)s 2190(may)s 2654(be)s
+2935(used)s 3430(in)s 3671(four)s 4127(w)s 2(ays:)k
+4782(where)s 5420(an)s 5701(object)s 6343(is)s 6552(e)s 3(xpected,)k
+7504(in)s 7745(which)s 8385(case)s 8850(its)s 0 4448(v)m 6(alue)k
+576(is)s 795(a)s 970(cop)s 2(y)k 1497(of)s
+1777(the)s 2134(tar)s 4(get;)k 2794(with)s 3285(the)s
+220 fnt2 3642 4445(@Open)m 240 fnt1 4457 4448(and)m 220 fnt2
+4870 4445(@Use)m 240 fnt1 5544 4448(symbols;)m 6463(with)s 6954(the)s
+220 fnt2 7311 4445(@T)m 26(agged)k 240 fnt1 8309 4448(symbol;)m
+0 4160(and)m 414(in)s 667(the)s 220 fnt2 1025 4157(into)m
+240 fnt1 1441 4160(clause)m 2105(or)s 220 fnt2 2374 4157(@T)m 26(arget)k
+240 fnt1 3271 4160(symbol)m 4041(of)s 4323(a)s 4499(g)s 1(alle)k 3(y)k
+5143(de\207nition,)s 6177(in)s 6430(which)s 7083(case)s 7560(the)s
+7918(v)s 6(alue)k 8496(of)s 8778(the)s 0 3872(tag)m
+345(must)s 870(be)s 220 fnt2 1152 3869(preceding)m 240 fnt1
+2103 3872(,)m 220 fnt2 2210 3869(f)m 6(ollo)k 3(wing)k
+240 fnt1 3040 3872(,)m 3147(or)s 220 fnt2 3406 3869(f)m 6(oll_or_prec)k
+240 fnt1 4540 3872(.)m 480 3498(W)m 9(ithin)k 1233(an)s
+220 fnt2 1557 3495(into)m 240 fnt1 2004 3498(clause)m 2698(or)s
+220 fnt2 2999 3495(@T)m 26(arget)k 240 fnt1 3927 3498(symbol,)m
+4780(the)s 5169(alternati)s 6(v)k 3(e)k 6265(form)s
+220 fnt2 6830 3495(&&&)m 240 fnt1 7365 3498(is)m 7616(acceptable)s
+8722(and)s 0 3210(indicates)m 900(a)s 1066(forcing)s 1809(g)s 1(alle)k 3(y)k
+2443(\(Section)s 3296(2.7\).)s 480 2836(Except)m 1203(within)s 1870(an)s
+220 fnt2 2151 2833(into)m 240 fnt1 2556 2836(clause)m 3208(or)s
+220 fnt2 3465 2833(@T)m 26(arget)k 240 fnt1 4351 2836(symbol,)m
+5162(the)s 5508(symbol)s 6267(referred)s 7078(to)s 7315(must)s
+7839(ha)s 4(v)k 3(e)k 8339(a)s 220 fnt2
+8503 2833(@T)m 26(ag)k 240 fnt1 0 2548(parameter)m 13(.)k
+1100(This)s 1570(is)s 1775(so)s 2035(e)s 6(v)k 3(en)k
+2530(if)s 2741(the)s 3084(right)s 3589(parameter)s 4597(of)s
+4863(the)s 5205(cross)s 5742(reference)s 6679(is)s 220 fnt2
+6884 2545(preceding)m 240 fnt1 7835 2548(,)m 220 fnt2 7936 2545(f)m 6(ollo)k 3(wing)k
+240 fnt1 8766 2548(,)m 8867(or)s 220 fnt2 0 2257(f)m 6(oll_or_prec)k
+240 fnt1 1134 2260(.)m 240 fnt5 0 1471(3.39.)m 591(@T)s 22(agged)k
+
+[ /Dest /LOUTtagged /DEST pdfmark
+240 fnt1 480 994(The)m 220 fnt2 924 991(@T)m 26(agged)k
+
+[ /Dest /LOUT19_4637_pre_tagg_1 /DEST pdfmark
+240 fnt1 1929 994(symbol)m 2705(tak)s 2(es)k 3261(a)s
+3444(cross)s 4002(reference)s 4961(for)s 5315(its)s 5607(left)s
+6001(parameter)s 7031(and)s 7451(an)s 7750(object,)s 8458(whose)s
+0 706(v)m 6(alue)k 565(must)s 1087(be)s 1366(a)s
+1528(juxtaposition)s 2831(of)s 3099(simple)s 3788(w)s 2(ords,)k
+4475(or)s 4731(se)s 6(v)k 3(eral)k 5450(w)s 2(ords,)k
+6136(or)s 6392(an)s 6672(empty)s 7320(object,)s 8008(for)s
+8343(its)s 8615(right)s 0 418(parameter)m 13(.)k 1104(It)s
+1307(has)s 1675(the)s 2021(ef)s 6(fect)k 2615(of)s
+2885(attaching)s 3812(its)s 4086(right)s 4595(parameter)s 5607(as)s
+5856(an)s 6137(additional)s 7146(tag)s 7489(to)s 7726(the)s
+8072(in)s 9(v)k 4(ocation)k 0 130(denoted)m 819(by)s
+1117(its)s 1397(left)s 1778(parameter)s 9(,)k 2834(unless)s
+3487(the)s 3839(right)s 4353(parameter)s 5371(is)s 5585(empty)s 15(,)k
+6279(in)s 6526(which)s 7172(case)s 220 fnt2 7643 127(@T)m 26(agged)k
+240 fnt1 8636 130(does)m
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 69 75
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(3.39.)m 1991(@T)s 22(a)k 2(g)k 2(g)k 2(ed)k
+240 fnt5 10249 -1583(69)m gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+0 13205(nothing.)m 896(The)s
+1324(result)s 1914(of)s 220 fnt2 2185 13202(@T)m 26(agged)k
+240 fnt1 3174 13205(is)m 3384(al)s 2(w)k 2(ays)k
+220 fnt2 4095 13202(@Null)m 240 fnt1 4680 13205(,)m 4787(which)s
+5429(mak)s 2(es)k 6089(it)s 6281(ef)s 6(fecti)k 6(v)k 3(ely)k
+7340(in)s 9(visible.)k 240 fnt5 0 12412(3.40.)m 591(@Open and @Use)s
+
+[ /Dest /LOUTopen /DEST pdfmark
+240 fnt1 480 11935(The)m 220 fnt2 904 11932(@Open)m 240 fnt1
+1706 11935(symbol)m
+[ /Dest /LOUT19_4637_pre_open_1 /DEST pdfmark
+2462(tak)s 2(es)k 2998(a)s 3159(cross)s
+3697(reference)s 4636(or)s 4891(symbol)s 5647(in)s 9(v)k 4(ocation)k
+6696(for)s 7030(its)s 7302(left)s 7675(parameter)s 9(,)k
+8722(and)s 0 11647(an)m 269(arbitrary)s 1130(object,)s 1807(which)s
+2435(must)s 2946(be)s 3214(enclosed)s 4095(in)s 4324(braces,)s
+5027(for)s 5351(its)s 5613(right)s 6110(parameter)s 13(.)k
+7201(The)s 7615(right)s 8112(parameter)s 0 11359(may)m 462(refer)s
+966(to)s 1201(the)s 1544(e)s 3(xported)k 2432(parameters)s
+3525(and)s 3925(nested)s 4589(de\207nitions)s 5646(of)s 5912(the)s
+6256(in)s 9(v)k 4(ocation)k 7305(denoted)s 8117(by)s
+8406(the)s 8749(left)s 0 11071(parameter)m 9(,)k 1050(and)s
+1452(its)s 1725(v)s 6(alue)k 2291(is)s 2499(the)s
+220 fnt2 2844 11068(@Open)m 240 fnt1 3648 11071(symbol')m 13(s)k
+4560(result.)s 5252(The)s 5678(tar)s 4(get)k 6274(of)s
+6543(the)s 6889(cross)s 7428(reference)s 8369(may)s 8832(lie)s
+0 10783(in)m 234(an)s 507(e)s 3(xternal)k 1318(database)s
+2187(\(Section)s 3031(3.42\).)s 3684(An)s 3(y)k 4138(symbol)s
+4888(a)s 4(v)k 6(ailable)k 5787(outside)s 6524(the)s
+220 fnt2 6862 10780(@Open)m 240 fnt1 7658 10783(which)m 8290(happens)s
+0 10495(to)m 239(ha)s 4(v)k 3(e)k 741(the)s
+1089(same)s 1637(name)s 2212(as)s 2462(one)s 2865(of)s
+3137(the)s 3485(symbols)s 4335(made)s 4910(a)s 4(v)k 6(ailable)k
+5818(by)s 6113(the)s 220 fnt2 6462 10492(@Open)m 240 fnt1
+7268 10495(will)m 7695(be)s 7978(una)s 4(v)k 6(ailable)k
+0 10207(within)m 668(the)s 220 fnt2 1016 10204(@Open)m 240 fnt1
+1762 10207(.)m
+[ /Dest /LOUT19_4637_pre_open_2 /DEST pdfmark
+538 9833(The)m 220 fnt2 963 9830(@Use)m 240 fnt1
+1625 9833(symbol)m 2382(is)s 2589(an)s 220 fnt2 2869 9830(@Open)m
+240 fnt1 3672 9833(symbol)m 4429(in)s 4669(a)s 4832(dif)s 6(ferent)k
+5704(form.)s 6329(It)s 6531(may)s 6994(only)s 7471(appear)s
+8165(among)s 8867(or)s 0 9545(after)m 502(the)s 857(de\207nitions)s
+1925(in)s 2175(Lout')s 13(s)k 2844(input,)s 3450(and)s
+3861(it)s 4060(is)s 4277(equi)s 6(v)k 6(alent)k
+5328(to)s 5574(enclosing)s 6551(the)s 6906(remainder)s 7941(of)s
+8219(the)s 8574(input)s 0 9257(in)m 243(an)s 220 fnt2
+526 9254(@Open)m 240 fnt1 1332 9257(symbol.)m 2201(F)s 3(or)k
+2590(e)s 3(xample,)k 240 fnt6 480 8754(de\207nitions)m 220 fnt2
+480 8461(@Use)m 1145({)s 240 fnt6 1269 8466(x)m 220 fnt2
+1435 8461(})m 480 8173(@Use)m 1145({)s 240 fnt6 1269 8178(y)m
+220 fnt2 1431 8173(})m 240 fnt6 480 7890(r)m 8(est)k
+894(of)s 1175(input)s 240 fnt1 0 7389(is)m 210(equi)s 6(v)k 6(alent)k
+1254(to)s 240 fnt6 480 6886(de\207nitions)m 480 6598(x)m 220 fnt2
+646 6593(@Open)m 480 6305({)m 240 fnt6 960 6310(y)m 220 fnt2
+1122 6305(@Open)m 960 6017({)m 240 fnt6 1084 6022(r)m 8(est)k
+1498(of)s 1779(input)s 220 fnt2 960 5729(})m 480 5441(})m
+240 fnt1 0 4947(The)m 220 fnt2 424 4944(@Use)m 240 fnt1
+1085 4947(symbol)m 1841(allo)s 6(ws)k 2506(a)s 2668(set)s
+2989(of)s 3256(standard)s 4120(packages)s 5044(to)s 5279(be)s
+5557(opened)s 6303(without)s 7090(the)s 7434(incon)s 9(v)k 3(enience)k
+8855(of)s 0 4659(enclosing)m 974(the)s 1327(entire)s 1931(document)s
+2939(in)s 220 fnt2 3187 4656(@Open)m 240 fnt1 3998 4659(symbols.)m
+4964(Such)s 5505(enclosure)s 6482(could)s 7076(cause)s 7668(Basser)s
+8370(Lout)s 8887(to)s 0 4371(run)m 376(out)s 742(of)s
+1013(memory)s 15(.)k 240 fnt5 0 3578(3.41.)m 591(@LinkSour)s 4(ce,)k
+2120(@LinkDest,)s 3400(and)s 3841(@URLLink)s
+[ /Dest /LOUTlink_source /DEST pdfmark
+240 fnt1 480 3107(The)m
+949(tw)s 2(o)k 1400(symbols)s 220 fnt2 2290 3104(@LinkSource)m
+240 fnt1 3703 3107(and)m 220 fnt2 4148 3104(@LinkDest)m
+[ /Dest /LOUT19_4637_pre_link_1 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_link_2 /DEST pdfmark
+240 fnt1
+5322 3107(w)m 2(ork)k 5914(together)s 6798(to)s 7078(create)s
+240 fnt6 7744 3109(cr)m 10(oss)k 8335(links)s 240 fnt1
+8883 3107(in)m 0 2819(a)m 202(document,)s 1290(that)s 1745(is,)s
+2048(points)s 2721(where)s 3398(a)s 3601(user)s 4096(vie)s 6(wing)k
+4951(the)s 5336(document)s 6377(on)s 6711(screen)s 7415(can)s
+7841(click)s 8403(and)s 8844(be)s 0 2531(transported)m 1132(to)s
+1369(another)s 2144(point)s 2695(in)s 2936(the)s 3282(document.)s
+4389(W)s 19(e)k 4756(call)s 5153(the)s 5500(point)s
+6050(where)s 6688(the)s 7035(user)s 7491(clicks)s 8097(the)s
+240 fnt6 8443 2533(sour)m 8(ce)k 240 fnt1 0 2243(of)m
+271(the)s 619(link,)s 1098(and)s 1502(the)s 1850(point)s
+2402(where)s 3042(the)s 3390(user)s 3848(arri)s 6(v)k 3(es)k
+4539(the)s 240 fnt6 4887 2245(destination)m 240 fnt1 6004 2243(of)m
+6275(the)s 6623(link.)s 480 1869(T)m 19(o)k 780(create)s
+1405(a)s 1571(source)s 2251(point,)s 2850(place)s 240 fnt6
+480 1366(ta)m 2(g)k 220 fnt2 838 1361(@LinkSource)m 240 fnt6
+2210 1366(object)m 240 fnt1 0 863(at)m 228(some)s 785(point)s
+1332(in)s 1571(the)s 1915(document,)s 2961(where)s 3597(the)s
+3941(v)s 6(alue)k 4504(of)s 240 fnt6 4771 865(ta)m 2(g)k
+240 fnt1 5124 863(is)m 5330(a)s 5492(le)s 3(g)k 1(al)k
+6002(cross)s 6540(reference)s 7479(tag,)s 7873(and)s 240 fnt6
+8273 865(object)m 240 fnt1 8916 863(is)m 0 575(an)m 279(arbitrary)s
+1149(Lout)s 1657(object.)s 2400(The)s 2823(result)s 3409(of)s
+3675(this)s 4066(is)s 4272(just)s 240 fnt6 4672 577(object)m
+240 fnt1 5260 575(,)m 5363(b)s 4(ut)k 5720(if)s
+5932(the)s 6276(user)s 6729(of)s 6995(a)s 7157(screen)s
+7819(vie)s 6(wer)k 8518(clicks)s 0 287(on)m 297(an)s 3(y)k
+694(point)s 1246(within)s 1914(the)s 2262(rectangular)s 3396(bounding)s
+4355(box)s 4770(of)s 5041(that)s 5459(object,)s 6150(a)s
+6316(link)s 6749(will)s 7175(be)s 7457(entered.)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1
+0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 70 76
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(70)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s
+8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13257 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+480 13203(At)m
+799(present,)s 240 fnt6 1616 13205(object)m 240 fnt1 2285 13203(abo)m 3(v)k 3(e)k
+2927(is)s 3158(treated)s 3885(as)s 4156(though)s 4899(it)s
+5111(were)s 5652(enclosed)s 6567(in)s 220 fnt2 6831 13200(@OneCol)m
+240 fnt1 7783 13203(.)m 7967(This)s 8464(means)s 0 12915(that)m
+420(a)s 589(long)s 1071(link)s 1507(source)s 2190(or)s
+2452(destination)s 3561(point)s 4116(will)s 4545(not)s 4914(break)s
+5509(o)s 3(v)k 3(er)k 5991(tw)s 2(o)k
+6404(lines)s 6909(as)s 7162(part)s 7596(of)s 7870(an)s
+8156(enclosing)s 0 12627(paragraph.)m 480 12253(T)m 19(o)k 780(create)s
+1405(a)s 1571(destination)s 2677(point,)s 3276(place)s 240 fnt6
+480 11750(ta)m 2(g)k 220 fnt2 838 11745(@LinkDest)m 240 fnt6
+1970 11750(object)m 240 fnt1 0 11247(at)m 221(some)s 771(point)s
+1312(in)s 1544(the)s 1881(document.)s 2978(Ag)s 1(ain,)k
+240 fnt6 3658 11249(ta)m 2(g)k 240 fnt1 4005 11247(must)m
+4519(e)s 6(v)k 6(aluate)k 5348(to)s 5576(a)s
+5731(le)s 3(g)k 1(al)k 6235(cross)s 6766(reference)s
+7698(tag,)s 8086(and)s 240 fnt6 8478 11249(object)m 240 fnt1
+0 10959(may)m 469(be)s 755(an)s 3(y)k 1156(Lout)s
+1672(object.)s 2424(All)s 220 fnt2 2788 10956(@LinkSource)m 240 fnt1
+4164 10959(symbols)m 5017(whose)s 5689(tag)s 6038(is)s 6252(equal)s
+6829(to)s 7072(this)s 7472(one)s 7878(are)s 8229(link)s 2(ed)k
+8887(to)s 0 10671(this)m 396(destination)s 1502(point.)s 480 10297(F)m 3(or)k
+907(e)s 6(v)k 3(ery)k 1521(source)s 2239(point)s
+2829(there)s 3400(must)s 3963(be)s 4283(e)s 3(xactly)k
+5062(one)s 5502(destination)s 6646(point)s 7236(with)s 7756(the)s
+8142(same)s 8727(tag,)s 0 10009(otherwise)m 1016(it)s 1240(will)s
+1697(not)s 2095(be)s 2408(clear)s 2963(where)s 3634(the)s
+4014(link)s 4479(is)s 4720(supposed)s 5702(to)s 5972(tak)s 2(e)k
+6456(the)s 6835(user)s 13(.)k 7416(Lout)s 7959(will)s
+8417(print)s 8960(a)s 0 9721(w)m 2(arning)k 829(if)s
+1040(this)s 1430(condition)s 2384(is)s 2588(violated)s 3410(an)s 3(ywhere;)k
+4443(it)s 4628(will)s 5048(refuse)s 5681(to)s 5914(insert)s
+6497(a)s 6657(destination)s 7757(point)s 8303(with)s 8778(the)s
+0 9433(same)m 555(name)s 1138(as)s 1397(a)s 1571(pre)s 6(vious)k
+2449(one,)s 2911(b)s 4(ut)k 3282(it)s 3482(is)s
+3701(not)s 4076(able)s 4539(to)s 4786(refrain)s 5487(from)s
+6020(inserting)s 6918(a)s 7092(source)s 7781(point)s 8342(with)s
+8833(no)s 0 9145(corresponding)m 1430(destination)s 2544(point,)s 3152(and)s
+3564(such)s 4068(points)s 4713(must)s 5246(cause)s 5842(errors)s
+6457(of)s 6736(some)s 7306(kind)s 7798(when)s 8383(vie)s 6(wed)k
+0 8857(\(e)m 3(xactly)k 820(what)s 1345(error)s 1868(will)s
+2294(depend)s 3044(on)s 3341(the)s 3689(vie)s 6(wer\).)k
+480 8483(The)m 220 fnt2 915 8480(@URLLink)m 240 fnt1 2045 8483(symbol)m
+2812(is)s 3029(similar)s 3758(to)s 220 fnt2 4004 8480(@LinkSource)m
+240 fnt1 5383 8483(in)m 5633(being)s 6225(the)s 6580(source)s
+7267(point)s 7826(of)s 8104(a)s 8277(link,)s 8764(b)s 4(ut)k
+0 8195(instead)m 735(of)s 1006(a)s 1172(tag)s 1517(you)s
+1932(supply)s 2625(a)s 2791(URL)s 3327(to)s 3566(some)s
+4127(other)s 4678(document)s 5682(altogether:)s 220 fnt2 480 7694("http://snar)m -3(k.ptc.spb)k 4(u.r)k -3(u/~uw)k 2(e/lout/lout.html" @URLLink { Lout Home P)k 8(age })k
+240 fnt1 0 7195(The)m 445(URL)s 999(will)s 1443(need)s
+1970(to)s 2227(be)s 2527(enclosed)s 3439(in)s 3700(quotes,)s
+4450(because)s 5280(of)s 5569(the)s 5935(/)s 6080(characters)s
+7116(which)s 7776(are)s 8141(otherwise)s 0 6907(tak)m 2(en)k
+591(to)s 849(be)s 1150(concatenation)s 2553(operations.)s 3732(As)s
+4068(for)s 220 fnt2 4425 6904(@LinkSource)m 240 fnt1 5737 6907(,)m
+5862(the)s 6229(result)s 6838(is)s 7067(just)s 7490(the)s
+7857(object)s 8520(to)s 8778(the)s 0 6619(right,)m 558(lik)s 2(e)k
+970(this:)s
+[ /Rect [480 6069 2091 6279] /Border [0 0 0] /Action << /Subtype /URI /URI (http://snark.ptc.spbu.ru/~uwe/lout/lout.html) >> /Subtype /Link /ANN pdfmark
+480 6121(Lout)m 992(Home)s 1633(P)s 3(age)k
+0 5618(b)m 4(ut)k 373(if)s 601(the)s 960(user)s
+1429(clicks)s 2048(on)s 2356(this)s 2763(object)s 3418(on)s
+3726(the)s 4086(screen)s 4764(the)s 3(y)k 5238(enter)s
+5786(a)s 5963(link)s 6407(that)s 6836(tak)s 2(es)k
+7387(them)s 7936(to)s 8186(the)s 8546(gi)s 6(v)k 3(en)k
+0 5330(URL)m 530(location,)s 1401(assuming)s 2352(that)s 2764(the)s
+3106(softw)s 2(are)k 3976(which)s 4612(the)s 3(y)k
+5069(are)s 5410(using)s 5976(to)s 6209(display)s 6948(the)s
+7290(document)s 8288(is)s 8492(cle)s 6(v)k 3(er)k
+0 5042(enough)m 763(to)s 1002(do)s 1295(this.)s 480 4668(F)m 3(or)k
+920(the)s 1320(purposes)s 2274(of)s 220 fnt2 2596 4665(@Common)m
+240 fnt1 3695 4668(,)m 220 fnt2 3854 4665(@Rump)m 240 fnt1
+4654 4668(,)m 4813(and)s 220 fnt2 5269 4665(@Meld)m 240 fnt1
+5955 4668(,)m 6113(tw)s 2(o)k 220 fnt2 6575 4665(@LinkSource)m
+240 fnt1 7999 4668(objects)m 8779(are)s 0 4380(considered)m 1092(to)s
+1328(be)s 1608(equal)s 2178(if)s 2393(their)s 2887(right)s
+3396(parameters)s 4491(are)s 4836(equal;)s 5463(the)s 5809(left)s
+6183(parameters)s 7279(are)s 7623(not)s 7986(considered.)s 0 4092(This)m
+480(beha)s 4(viour)k 1498(is)s 1713(needed,)s 2503(for)s
+2846(e)s 3(xample,)k 3765(to)s 4009(mak)s 2(e)k
+4586(inde)s 3(x)k 5175(entries)s 5867(look)s 6359(reasonable)s
+7442(when)s 8023(melded.)s 8896(If)s 0 3804(tw)m 2(o)k
+220 fnt2 420 3801(@LinkSource)m 240 fnt1 1803 3804(objects)m 2542(with)s
+3035(equal)s 3619(right)s 4141(parameters)s 5250(b)s 4(ut)k
+5623(dif)s 6(ferent)k 6509(left)s 6897(parameters)s 8006(are)s
+8364(melded)s 0 3516(into)m 412(one,)s 851(one)s 1239(of)s
+1497(the)s 1831(tw)s 2(o)k 2227(will)s 2639(be)s
+2908(the)s 3242(result,)s 3865(b)s 4(ut)k 4214(which)s
+4842(one)s 5230(is)s 5426(unde\207ned.)s 6522(Notice)s 7201(that)s
+7605(melding)s 8428(cannot)s 0 3228(produce)m 827(an)s 1110(unde\207ned)s
+2113(link,)s 2592(since)s 3139(the)s 3487(w)s 2(orst)k
+4076(it)s 4268(can)s 4657(do)s 4950(is)s 5160(delete)s
+5786(a)s 220 fnt2 5952 3225(@LinkSource)m 240 fnt1 7264 3228(.)m
+480 2854(Practically)m 1595(speaking,)s 2594(the)s 2984(right)s 3536(parameters)s
+4676(of)s 220 fnt2 4988 2851(@LinkSource)m 240 fnt1 6402 2854(and)m
+220 fnt2 6847 2851(@URLLink)m 240 fnt1 8012 2854(need)m 8563(to)s
+8844(be)s 0 2566(non-null,)m 941(non-empty)s 2055(objects,)s 2863(since)s
+3433(otherwise)s 4442(there)s 4998(is)s 5232(nothing)s 6040(visible)s
+6756(for)s 7118(the)s 7489(user)s 7971(to)s 8233(click)s
+8782(on.)s 0 2278(\(This)m 542(condition)s 1489(is)s 1686(not)s
+2038(check)s 2(ed)k 2865(or)s 3110(enforced)s 3991(by)s
+4271(Lout.\))s 4958(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
+5904(the)s 6239(right)s 6736(parameter)s 7737(of)s 220 fnt2
+7994 2275(@LinkDest)m 240 fnt1 0 1990(could)m 588(reasonably)s 1676(be)s
+1956(empty)s 2605(or)s 2862(null.)s 3396(Usually)s 15(,)k
+4229(when)s 220 fnt2 4803 1987(@Null)m 240 fnt1 5446 1990(lies)m
+5825(inside)s 6450(a)s 6614(non-concatenation)s 8435(object,)s 0 1702(for)m
+338(e)s 3(xample)k 480 1199(@OneCol @Null)m 0 745(the)m 379(ef)s 6(fect)k
+1007(of)s 1309(the)s 220 fnt2 1689 742(@Null)m 240 fnt1
+2365 745(is)m 2607(lost)s 3043(\211)s 3255(the)s 3634(result)s
+4256(in)s 4530(this)s 4958(e)s 3(xample)k 5852(is)s
+6094(equi)s 6(v)k 6(alent)k 7169(to)s 7440(an)s
+7754(empty)s 8438(object.)s 0 457(Ho)m 6(we)k 6(v)k 3(er)k 9(,)k
+960(when)s 1536(the)s 1884(right)s 2395(parameter)s 3409(of)s
+220 fnt2 3680 454(@LinkDest)m 240 fnt1 4812 457(is)m 220 fnt2
+5022 454(@Null)m 240 fnt1 5607 457(:)m
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 71 77
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(3.41.)m 1991(@LinkSour)s 8(ce)k 2(,)k
+3384(@LinkDest,)s 4560(and)s 4986(@URLLink)s 240 fnt5 10256 -1583(71)m
+gsave
+1417 -15423 translate
+240 fnt1 9066 13387 0 13278 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+480 13224(@LinkDest @Null)m 0 12770(or)m 307(when)s 932(it)s
+1173(is)s 1432(some)s 2042(object)s 2735(treated)s 3491(lik)s 2(e)k
+220 fnt2 3952 12767(@Null)m 240 fnt1 4645 12770(by)m 4988(Lout)s
+5549(\(e.g.)s 6067(a)s 220 fnt2 6282 12767(@T)m 26(agged)k
+240 fnt1 7320 12770(symbol\),)m 8260(then)s 8778(the)s 220 fnt2
+0 12479(@LinkDest)m 240 fnt1 1121 12482(itself)m 1657(has)s 2016(the)s
+2352(ef)s 6(fect)k 2937(on)s 3222(surrounding)s 4420(concatentation)s
+5860(operators)s 6788(that)s 220 fnt2 7195 12479(@Null)m 240 fnt1
+7828 12482(has,)m 8242(allo)s 6(wing)k 0 12194(it)m 192(to)s
+431(be)s 713(made)s 1287(ef)s 6(fecti)k 6(v)k 3(ely)k
+2346(in)s 9(visible)k 3216(in)s 3459(the)s 3807(printed)s
+4542(document,)s 5593(though)s 6316(still)s 6728(really)s 7325(there.)s
+240 fnt5 0 11401(3.42.)m 591(@Database and @SysDatabase)s
+[ /Dest /LOUTdatabase /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_data_1 /DEST pdfmark
+240 fnt1 529 10924(The)m
+220 fnt2 945 10921(@Database)m 240 fnt1 2148 10924(symbol)m 2896(is)s
+3095(used)s 3580(to)s 3808(declare)s 4541(the)s 4877(e)s 3(xistence)k
+5808(of)s 6067(a)s 6222(\207le)s 6571(of)s 6831(symbol)s
+7579(in)s 9(v)k 4(ocations)k 8708(that)s 0 10636(Lout)m
+512(may)s 978(refer)s 1487(to)s 1726(when)s 2302(e)s 6(v)k 6(aluating)k
+3339(cross)s 3881(references.)s 5025(In)s 5281(Basser)s 5978(Lout,)s
+6537(for)s 6875(e)s 3(xample,)k 220 fnt2 480 10135(@Database @Months @W)m 6(eekDa)k 6(ys { standard })k
+240 fnt1 0 9637(means)m 690(that)s 1137(there)s 1698(is)s
+1937(a)s 2131(\207le)s 2521(called)s 220 fnt2 3177 9634(standard.ld)m
+240 fnt1 4339 9637(containing)m 5430(in)s 9(v)k 4(ocations)k
+6600(of)s 6899(the)s 7276(pre)s 6(viously)k 8363(de\207ned)s
+0 9349(symbols)m 220 fnt2 846 9346(@Months)m 240 fnt1 1838 9349(and)m
+220 fnt2 2238 9346(@W)m 6(eekDa)k 6(ys)k 240 fnt1
+3503 9349(.)m 3663(A)s 220 fnt2 3889 9346(@Database)m 240 fnt1
+5100 9349(symbol)m 5856(may)s 6318(appear)s 7011(an)s 3(ywhere)k
+7990(a)s 8152(de\207nition)s 0 9061(or)m 252(a)s 220 fnt2
+411 9058(@Use)m 240 fnt1 1069 9061(symbol)m 1822(may)s 2281(appear)s 13(.)k
+3062(Dif)s 6(ferent)k 3982(de\207nitions)s 5036(packages)s 5957(may)s
+6416(refer)s 6918(to)s 7150(a)s 7309(common)s 8196(database,)s
+0 8773(pro)m 3(vided)k 935(the)s 1312(de\207nitions)s 2402(the)s 3(y)k
+2894(gi)s 6(v)k 3(e)k 3382(for)s 3749(its)s
+4054(symbols)s 4932(are)s 5308(compatible.)s 6563(An)s 6942(entry)s
+7516(is)s 7755(interpreted)s 8876(as)s 0 8485(though)m 756(it)s
+981(appears)s 1795(at)s 2060(the)s 2441(point)s 3026(where)s
+3699(the)s 4080(cross)s 4655(reference)s 5631(that)s 6082(retrie)s 6(v)k 3(es)k
+6978(it)s 7203(does,)s 7782(which)s 8457(allo)s 6(ws)k
+0 8197(symbols)m 866(lik)s 2(e)k 220 fnt2 1296 8194(@I)m
+240 fnt1 1639 8197(for)m 220 fnt2 1995 8194(Slope @F)m 6(ont)k
+240 fnt1 3346 8197(to)m 3602(be)s 3902(used)s 4417(in)s
+4678(databases.)s 5776(The)s 6221(database)s 7118(\207le)s 7497(may)s
+7981(not)s 8365(contain)s 220 fnt2 0 7906(@Database)m 240 fnt1
+1214 7909(or)m 220 fnt2 1473 7906(@Include)m 240 fnt1 2455 7909(symbols,)m
+3360(and)s 3764(each)s 4259(in)s 9(v)k 4(ocation)k
+5313(within)s 5981(it)s 6173(must)s 6698(be)s 6980(enclosed)s
+7875(in)s 8118(braces.)s 480 7535(Basser)m 1198(Lout)s 1732(constructs)s
+2773(an)s 240 fnt6 3078 7537(inde)m 4(x)k 3674(\207le)s
+240 fnt1 3959 7535(,)m
+[ /Dest /LOUT19_4637_pre_data_2 /DEST pdfmark
+4087(which)s 4751(in)s 5016(this)s
+5433(e)s 3(xample)k 6318(is)s 6550(called)s 220 fnt2
+7199 7532(standard.li)m 240 fnt1 8196 7535(,)m 8325(the)s 8695(\207rst)s
+0 7247(time)m 481(it)s 675(e)s 6(v)k 3(er)k
+1139(encounters)s 2227(the)s 2577(database,)s 3509(as)s 3761(an)s
+4045(aid)s 4397(to)s 4638(searching)s 5608(it.)s 5906(If)s
+6138(the)s 6488(database)s 7368(\207le)s 7731(is)s 7943(changed,)s
+8850(its)s 0 6959(inde)m 3(x)k 586(\207le)s 950(must)s
+1477(be)s 1762(deleted)s 2512(by)s 2809(the)s 3159(user)s
+3620(so)s 3888(that)s 4309(Basser)s 5008(Lout)s 5523(kno)s 6(ws)k
+6196(to)s 6438(reconstruct)s 7561(it.)s 7860(There)s 8475(is)s
+8688(also)s 0 6671(an)m 300(installation)s 1435(option)s 2121(which)s
+2780(allo)s 6(ws)k 3466(this)s 3879(deletion)s 4723(to)s
+4979(be)s 5278(done)s 5817(automatically)s 7188(on)s 7502(suitable)s
+8318(systems)s 0 6383(\(including)m 1036(Unix\).)s 480 6009(Basser)m 1210(Lout)s
+1756(searches)s 2649(for)s 3021(databases)s 4021(in)s 4298(the)s
+4679(current)s 5449(directory)s 6398(\207rst,)s 6910(then)s 7412(in)s
+7689(a)s 7888(sequence)s 8855(of)s 0 5721(standard)m 868(places.)s
+1629(T)s 19(o)k 1929(search)s 2596(the)s 2944(standard)s
+3812(places)s 4460(only)s 15(,)k 4978(use)s
+[ /Dest /LOUT19_4637_pre_data_3 /DEST pdfmark
+220 fnt2
+5353 5718(@SysDatabase)m 240 fnt1 6873 5721(.)m 240 fnt5 0 4928(3.43.)m
+591(@Graphic)s
+[ /Dest /LOUTgraphic /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_grap_1 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_grap_2 /DEST pdfmark
+240 fnt1 556 4451(Lout)m 1084(does)s 1590(not)s
+1972(pro)s 3(vide)k 2772(the)s 3136(v)s 6(ast)k
+3592(repertoire)s 4591(of)s 4878(graphical)s 5838(objects)s 6582(\(lines,)s
+7235(circles,)s 7980(box)s 3(es,)k 8660(etc.\))s 0 4163(required)m
+846(by)s 1132(diagrams.)s 2163(Instead,)s 2952(it)s 3135(pro)s 3(vides)k
+3999(an)s 4274(escape)s 4958(route)s 5497(to)s 5727(some)s
+6280(other)s 6823(language)s 7734(that)s 8144(does)s 8625(ha)s 4(v)k 3(e)k
+0 3875(these)m 547(features,)s 1409(via)s 1761(its)s 220 fnt2
+2037 3872(@Gr)m 2(aphic)k 240 fnt1 3081 3875(symbol:)m
+[ /Dest /LOUT19_4637_pre_grap_3 /DEST pdfmark
+220 fnt2
+480 3377({ 0 0 mo)m 3(v)k 5(eto)k 480 3089( 0 ysiz)m 3(e lineto)k
+480 2801( xsiz)m 3(e ysiz)k 3(e lineto)k 480 2513( xsiz)m 3(e 0 lineto)k
+480 2225( closepath)m 480 1937( strok)m 4(e)k 480 1649(})m 480 1361(@Gr)m 2(aphic)k
+480 1073({ //0.2c)m 480 785( ||0.2c hello)m 8(, w)k 2(or)k -3(ld ||0.2c)k
+480 497( //0.2c)m 480 209(})m
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 72 78
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(72)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s
+8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+0 13205(The)m
+428(result)s 1018(of)s 1289(the)s 1637(abo)s 3(v)k 3(e)k
+2259(in)s 9(v)k 4(ocation)k 3313(of)s 3584(the)s
+3932(symbol)s 220 fnt2 4692 13202(@Gr)m 2(aphic)k 240 fnt1
+5736 13205(is)m 1365 422 0 422 240 288 60 480 12443 LoutGr2
+0 0 moveto
+0 ysize lineto
+xsize ysize lineto
+xsize 0 lineto
+closepath
+stroke
+grestore
+113 146(hello,)m 698(w)s 2(orld)k
+grestore
+480 11727(The)m
+909(right)s 1421(parameter)s 2437(al)s 2(w)k 2(ays)k
+3149(appears)s 3931(as)s 4183(part)s 4615(of)s 4888(the)s
+5237(result,)s 5875(and)s 6281(indeed)s 6978(the)s 7327(result)s
+7919(is)s 8130(al)s 2(w)k 2(ays)k 8843(an)s
+0 11439(object)m 651(whose)s 1327(size)s 1761(is)s 1979(identical)s
+2863(to)s 3110(the)s 3465(size)s 3900(of)s 4178(the)s
+4534(right)s 5052(parameter)s 6074(with)s 220 fnt2 6563 11436(@OneCol)m
+240 fnt1 7583 11439(and)m 220 fnt2 7995 11436(@OneRo)m 3(w)k
+240 fnt1 0 11151(applied)m 762(to)s 1001(it.)s 1297(From)s
+1875(no)s 6(w)k 2336(on)s 2633(we)s 2968(refer)s
+3477(to)s 3716(this)s 4112(part)s 4543(of)s 4814(the)s
+5162(result)s 5752(as)s 6002(the)s 240 fnt6 6350 11153(base)m
+240 fnt1 6782 11151(.)m 480 10777(The)m 898(left)s 1264(parameter)s
+2267(is)s 2466(implementation-dependent:)s 5184(that)s 5591(is,)s 5847(its)s
+6112(meaning)s 6978(is)s 7177(not)s 7532(de\207ned)s 8284(by)s
+8567(Lout,)s 0 10489(and)m 421(dif)s 6(ferent)k 1313(implementations)s
+2975(could)s 3582(require)s 4332(dif)s 6(ferent)k 5224(v)s 6(alues)k
+5898(for)s 6253(it.)s 6567(The)s 7012(follo)s 6(wing)k
+8007(description)s 0 10201(applies)m 713(to)s 936(Basser)s 1618(Lout,)s
+2161(which)s 2787(uses)s 3235(the)s 3567(PostScript)s 4593(page)s
+5086(description)s 6189(language)s 7093([)s
+[ /Rect [7164 10201 7259 10363] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTadobe1990ps /ANN pdfmark
+7164(1)s 7259(].)s
+7487(Similar)s 8233(b)s 4(ut)k 8579(more)s 0 9913(restricted)m
+962(possibilities)s 2172(e)s 3(xist)k 2698(with)s 3198(the)s
+3563(PDF)s 4078(back)s 4609(end)s 5031(\(see)s 5488(a)s
+5672(separate)s 6528(document)s 7550(distrib)s 4(uted)k 8644(with)s
+0 9625(Lout\);)m 643(to)s 882(include)s 1642(both,)s 2175(use)s
+2550(the)s 220 fnt2 2898 9622(@Bac)m 4(kEnd)k 240 fnt1
+4043 9625(symbol)m 4803(lik)s 2(e)k 5215(this:)s 220 fnt2
+480 9124({ @Bac)m 4(kEnd @Case {)k 480 8836( P)m 11(ostScr)k -3(ipt @Y)k 4(ield)k
+480 8548( {)m 480 8260( ...)m 480 7972( })m 480 7684( PDF @Y)m 4(ield)k
+480 7396( {)m 480 7108( ...)m 480 6820( })m 480 6532( })m 480 6244( @Gr)m 2(aphic)k
+480 5956( {)m 480 5668( ...)m 480 5380( })m 480 5092(})m 240 fnt1
+0 4598(Returning)m 1039(to)s 1307(PostScript,)s 2425(the)s 2802(left)s
+3208(parameter)s 4251(refers)s 4874(to)s 5142(a)s 5337(coordinate)s
+6431(system)s 7184(whose)s 7881(origin)s 8538(is)s 8778(the)s
+0 4310(bottom)m 773(left-hand)s 1728(corner)s 2433(of)s 2740(the)s
+3123(base.)s 3747(It)s 3987(may)s 4489(use)s 4899(the)s
+5282(symbols)s 220 fnt2 6166 4307(xsiz)m 3(e)k 240 fnt1
+6751 4310(and)m 220 fnt2 7190 4307(ysiz)m 3(e)k 240 fnt1
+7774 4310(to)m 8048(denote)s 8778(the)s 0 4022(horizontal)m 1031(and)s
+1442(v)s 3(ertical)k 2216(size)s 2650(of)s 2928(the)s
+3283(base;)s 3827(similarly)s 15(,)k 220 fnt2 4774 4019(xmar)m -3(k)k
+240 fnt1 5442 4022(and)m 220 fnt2 5853 4019(ymar)m -3(k)k
+240 fnt1 6521 4022(denote)m 7222(the)s 7577(positions)s 8499(of)s
+8778(the)s 0 3734(base')m 13(s)k 635(column)s 1410(and)s
+1814(ro)s 6(w)k 2234(marks:)s gsave
+480 1371 translate
+180 fnt1 3570 2072 0 1994 180 288 45 LoutGraphic
+gsave
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+180 fnt6
+107 1955(ysize)m 0 1388(ymark)m 180 fnt1 364 253(0)m 2551 1701 850 1134 180 288 45 676 293 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+2551 1701 850 1134 180 288 45 0 0 LoutGr2
+/lfiglightgrey [ lfigbox ] gsave lfigpaintpath grestore
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+2551 1701 850 1134 180 288 45 0 0 LoutGr2
+
+0.015 cm setlinewidth lfiground setlinecap
+0.15 cm /lfigdashed [ -0.3 cm ymark
+xsize ymark 0.3 cm 0 lfigpadd []
+xmark -0.3 cm
+xmark ysize 0 0.3 cm lfigpadd ] lfigdopath
+pop pop
+grestore
+
+grestore
+
+grestore
+end end restore
+grestore
+676 14(0)m
+180 fnt6 1526 15(xmark)m 3227(xsize)s end end restore
+grestore
+0 920(In)m 265(addition)s
+1115(to)s 1363(these)s 1920(four)s 2387(symbols)s 3245(and)s
+3658(0,)s 3895(lengths)s 4646(may)s 5121(be)s 5412(denoted)s
+6238(in)s 6490(centimetres,)s 7706(inches,)s 8434(points,)s 0 632(ems,)m
+492(f)s -13(')k 13(s,)k 850(v')s 13(s)k
+1180(and)s 1584(s')s 13(s)k 1887(using)s 2459(the)s
+2807(notation)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 73 79
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(3.43.)m 1991(@Gr)s 3(aphic)k 240 fnt5
+10250 -1583(73)m gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+240 fnt6 480 13172(l)m 220 fnt2
+666 13167(cm)m 240 fnt1 1197 13170(instead)m 1932(of)s 2203(Lout')s 13(s)k
+240 fnt6 3045 13172(l)m 240 fnt1 3111 13170(c)m 240 fnt6
+480 12884(l)m 220 fnt2 666 12879(in)m 240 fnt1 1197 12882(instead)m
+1932(of)s 2203(Lout')s 13(s)k 240 fnt6 3045 12884(l)m
+240 fnt1 3111 12882(i)m 240 fnt6 480 12596(l)m 220 fnt2
+666 12591(pt)m 240 fnt1 1197 12594(instead)m 1932(of)s 2203(Lout')s 13(s)k
+240 fnt6 3045 12596(l)m 240 fnt1 3111 12594(p)m 240 fnt6
+480 12308(l)m 220 fnt2 666 12303(em)m 240 fnt1 1197 12306(instead)m
+1932(of)s 2203(Lout')s 13(s)k 240 fnt6 3045 12308(l)m
+240 fnt1 3111 12306(m)m 240 fnt6 480 12020(l)m 220 fnt2
+666 12015(ft)m 240 fnt1 1197 12018(instead)m 1932(of)s 2203(Lout')s 13(s)k
+240 fnt6 3045 12020(l)m 240 fnt1 3111 12018(f)m 240 fnt6
+480 11732(l)m 220 fnt2 666 11727(vs)m 240 fnt1 1197 11730(instead)m
+1932(of)s 2203(Lout')s 13(s)k 240 fnt6 3045 11732(l)m
+240 fnt1 3111 11730(v)m 240 fnt6 480 11444(l)m 220 fnt2
+666 11439(sp)m 240 fnt1 1197 11442(instead)m 1932(of)s 2203(Lout')s 13(s)k
+240 fnt6 3045 11444(l)m 240 fnt1 3111 11442(s)m 0 10901(Note)m
+521(that)s 939(there)s 1472(must)s 1997(be)s 2279(a)s
+2445(space)s 3032(between)s 3886(the)s 4234(number)s 5025(and)s
+5429(its)s 5705(unit,)s 6184(unlik)s 2(e)k 6836(Lout)s
+7348(proper)s 13(.)k 480 10527(A)m 732(point)s 1306(within)s
+1996(the)s 2366(base)s 2869(\(and,)s 3423(with)s 3927(care,)s
+4453(a)s 4642(point)s 5216(outside)s 5985(it\))s 6267(may)s
+6755(be)s 7059(denoted)s 7897(by)s 8213(a)s 8401(pair)s
+8855(of)s 0 10239(lengths.)m 855(F)s 3(or)k 1244(e)s 3(xample,)k
+220 fnt2 480 9742(xmar)m -3(k ymar)k -3(k)k 240 fnt1
+0 9244(is)m 210(the)s 558(point)s 1110(where)s 1750(the)s
+2098(marks)s 2733(cross,)s 3331(and)s 220 fnt2 480 8750(0 2 cm)m
+240 fnt1 0 8295(is)m 195(a)s 346(point)s 883(on)s
+1164(the)s 1497(left)s 1859(edge,)s 2402(tw)s 2(o)k
+2797(centimetres)s 3933(abo)s 3(v)k 3(e)k 4539(the)s
+4872(bottom)s 5595(left-hand)s 6499(corner)s 13(.)k 7245(These)s
+7857(tw)s 2(o)k 8251(numbers)s 0 8007(are)m 347(called)s
+975(the)s 240 fnt6 1323 8009(x)m 1489(coor)s 8(dinate)k
+240 fnt1 2571 8007(and)m 2975(the)s 240 fnt6 3323 8009(y)m
+3485(coor)s 8(dinate)k 240 fnt1 4567 8007(of)m 4838(the)s
+5186(point.)s 480 7633(The)m 906(\207rst)s 1335(step)s 1770(in)s
+2011(specifying)s 3057(a)s 3221(graphic)s 3988(object)s 4630(is)s
+4837(to)s 5074(de\207ne)s 5712(a)s 240 fnt6 5876 7635(path)m
+240 fnt1 6297 7633(.)m 6458(A)s 6686(path)s 7152(can)s
+7539(be)s 7818(thought)s 8608(of)s 8876(as)s 0 7345(the)m
+349(track)s 888(of)s 1161(a)s 1328(pen)s 1733(mo)s 3(ving)k
+2516(o)s 3(v)k 3(er)k 2996(the)s 3346(page.)s
+3963(The)s 4393(pen)s 4797(may)s 5265(be)s 5548(up)s
+5842(\(not)s 6289(dra)s 3(wing\))k 7199(or)s 7460(do)s 6(wn)k
+8045(\(dra)s 3(wing)k 8960(a)s 0 7057(line)m 414(or)s
+673(curv)s 3(e\))k 1329(as)s 1579(it)s 1771(mo)s 3(v)k 3(es.)k
+2554(The)s 2982(entire)s 3581(path)s 4050(is)s 4260(a)s
+4426(sequence)s 5359(of)s 5630(the)s 5978(follo)s 6(wing)k
+6955(items:)s 240 fnt6 1847 6685(x)m 2013(y)s 220 fnt2
+2175 6680(mo)m 3(v)k 5(eto)k 240 fnt1 3120 6683(Lift)m
+3537(the)s 3885(pen)s 4288(and)s 4692(mo)s 3(v)k 3(e)k
+5274(it)s 5466(to)s 5705(the)s 6053(indicated)s 6987(point.)s
+240 fnt6 2036 6326(x)m 2202(y)s 220 fnt2 2364 6321(lineto)m
+240 fnt1 3120 6324(Put)m 3557(the)s 3963(pen)s 4424(do)s 6(wn)k
+5066(and)s 5528(dra)s 3(w)k 6115(a)s 6339(straight)s
+7173(line)s 7645(to)s 7942(the)s 8348(indicat-)s 3120 6036(ed)m
+3404(point.)s 240 fnt6 702 5677(x)m 868(y)s 1030(r)s
+1188(angle1)s 1879(angle2)s 220 fnt2 2580 5672(arc)m 240 fnt1
+3120 5675(Put)m 3501(the)s 3852(pen)s 4257(do)s 6(wn)k
+4844(and)s 5250(dra)s 3(w)k 5782(a)s 5950(circular)s
+6741(arc)s 7087(whose)s 7758(centre)s 8399(has)s 8772(co-)s
+3120 5387(ordinates)m 240 fnt6 4058 5389(x)m 240 fnt1 4235 5387(and)m
+240 fnt6 4650 5389(y)m 240 fnt1 4823 5387(and)m 5238(whose)s
+5917(radius)s 6563(is)s 240 fnt6 6784 5389(r)m 240 fnt1
+6882 5387(.)m 7057(The)s 7496(arc)s 7851(be)s 3(gins)k
+8535(at)s 8778(the)s 3120 5099(angle)m 240 fnt6 3726 5101(angle1)m
+240 fnt1 4449 5099(measuring)m 5530(counterclockwise)s 7291(from)s 7847(the)s
+8227(point)s 8812(di-)s 3120 4811(rectly)m 3714(to)s 3949(the)s
+4294(right)s 4801(of)s 5069(the)s 5413(centre,)s 6100(and)s
+6500(proceeds)s 7397(counterclockwise)s 3120 4523(to)m 240 fnt6 3361 4525(angle2)m
+240 fnt1 4002 4523(.)m 4168(If)s 4401(the)s 4751(arc)s
+5098(is)s 5310(not)s 5679(the)s 6029(\207rst)s 6462(thing)s
+7010(on)s 7309(the)s 7660(path,)s 8181(a)s 8350(straight)s
+3120 4235(line)m 3549(will)s 3990(be)s 4287(dra)s 3(wn)k
+4954(connecting)s 6072(the)s 6435(current)s 7186(point)s 7753(to)s
+8007(the)s 8370(start)s 8855(of)s 3120 3947(the)m 3468(arc.)s
+240 fnt6 589 3638(x)m 755(y)s 917(r)s 1075(angle1)s
+1766(angle2)s 220 fnt2 2467 3633(arcn)m 240 fnt1 3120 3636(As)m
+3437(for)s 3775(arc,)s 4173(b)s 4(ut)k 4535(the)s
+4883(arc)s 5227(goes)s 5717(clockwise)s 6729(from)s 240 fnt6
+7253 3638(angle1)m 240 fnt1 7944 3636(to)m 240 fnt6 8183 3638(angle2)m
+240 fnt1 8824 3636(.)m 220 fnt2 1955 3274(closepath)m 240 fnt1
+3120 3277(Dra)m 3(w)k 3702(a)s 3868(straight)s 4644(line)s
+5058(back)s 5571(to)s 5810(the)s 6158(point)s 6710(most)s
+7235(recently)s 8058(mo)s 3(v)k 3(ed)k 8762(to.)s
+0 2903(The)m 428(\207rst)s 860(item)s 1344(should)s 2042(al)s 2(w)k 2(ays)k
+2753(be)s 3036(a)s 220 fnt2 3202 2900(mo)m 3(v)k 5(eto)k
+240 fnt1 3907 2903(,)m 220 fnt2 4015 2900(arc)m 240 fnt1
+4315 2903(,)m 4422(or)s 220 fnt2 4682 2900(arcn)m 240 fnt1
+5095 2903(.)m 5259(It)s 5465(should)s 6162(be)s 6445(clear)s
+6968(from)s 7493(this)s 7889(that)s 8308(the)s 8657(path)s
+0 2615(gi)m 6(v)k 3(en)k 580(earlier:)s 220 fnt2
+480 2121(0 0 mo)m 3(v)k 5(eto)k 480 1833(0 ysiz)m 3(e lineto)k
+480 1545(xsiz)m 3(e ysiz)k 3(e lineto)k 480 1257(xsiz)m 3(e 0 lineto)k
+480 969(closepath)m 240 fnt1 0 473(traces)m 607(around)s 1330(the)s
+1678(boundary)s 2637(of)s 2908(the)s 3256(base)s 3737(with)s
+4219(the)s 4567(pen)s 4970(do)s 6(wn.)k 480 99(Once)m
+1039(a)s 1203(path)s 1670(is)s 1877(set)s 2200(up,)s
+2545(we)s 2877(are)s 3222(ready)s 3805(to)s 240 fnt6
+4041 101(paint)m 240 fnt1 4595 99(it)m 4785(onto)s 5262(the)s
+5607(page.)s 6221(There)s 6832(are)s 7176(tw)s 2(o)k
+7584(choices:)s 8405(we)s 8737(can)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 74 80
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(74)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s
+8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13257 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+0 13203(either)m
+240 fnt6 618 13205(str)m 10(ok)k 2(e)k 240 fnt1
+1259 13203(it,)m 1514(which)s 2172(means)s 2850(to)s 3105(display)s
+3866(it)s 4074(as)s 4340(described;)s 5383(or)s 5658(we)s
+6009(can)s 240 fnt6 6414 13205(\207ll)m 240 fnt1 6742 13203(it,)m
+6997(which)s 7655(means)s 8333(to)s 8588(paint)s 0 12915(e)m 6(v)k 3(erything)k
+1067(inside)s 1694(it)s 1886(gre)s 3(y)k 2362(or)s
+2621(black.)s 3303(F)s 3(or)k 3692(stroking)s 4529(the)s
+4877(tw)s 2(o)k 5287(main)s 5822(options)s 6578(are)s
+240 fnt6 1581 12412(length)m 220 fnt2 2234 12407(setline)m 4(width)k
+240 fnt1 3600 12410(The)m 4028(pen)s 4431(will)s 4857(dra)s 3(w)k
+5386(lines)s 5888(of)s 6159(the)s 6507(gi)s 6(v)k 3(en)k
+7087(width.)s
+[ /Dest /LOUT16_1794_pre_grap_1 /DEST pdfmark
+220 fnt2 1553 11902([)m 240 fnt6 1668 11907(length)m
+220 fnt2 2321 11902(])m 2430(0)s 2605(setdash)s 240 fnt1
+3600 11905(The)m 4034(pen)s 4444(will)s 4876(dra)s 3(w)k
+5412(dashed)s 6142(lines)s 6650(when)s 7233(it)s 7432(is)s
+7648(do)s 6(wn,)k 8289(with)s 8778(the)s 3600 11617(dashes)m
+4289(each)s 4784(of)s 5055(the)s 5403(gi)s 6(v)k 3(en)k
+5983(length.)s
+[ /Dest /LOUT16_1794_pre_grap_2 /DEST pdfmark
+0 11114(These)m 627(options)s 1383(are)s 1730(follo)s 6(wed)k
+2632(by)s 2926(the)s 3274(w)s 2(ord)k 220 fnt2
+3822 11111(strok)m 4(e)k 240 fnt1 4408 11114(.)m 4572(So,)s
+4932(for)s 5270(e)s 3(xample,)k 220 fnt2 480 10616({ 0 0 mo)m 3(v)k 5(eto xsiz)k 3(e 0 lineto)k
+480 10328( 2 pt setline)m 4(width [ 5 pt ] 0 setdash strok)k 4(e)k 480 10040(})m 480 9752(@Gr)m 2(aphic { 3i @Wide })k
+240 fnt1 0 9256(has)m 370(result)s 4320 0 0 0 240 288 60 480 8966 LoutGr2
+0 0 moveto xsize 0 lineto
+2 pt setlinewidth [ 5 pt ] 0 setdash stroke
+grestore
+
+grestore
+480 8250(When)m 1106(\207lling)s
+1726(in)s 1965(the)s 2310(re)s 3(gion)k 2971(enclosed)s
+3862(by)s 4153(a)s 4315(path,)s 4830(the)s 5175(main)s
+5706(option)s 6371(is)s 220 fnt2 6578 8247(setg)m 2(r)k 2(a)k 6(y)k
+240 fnt1 7286 8250(,)m 7389(which)s 8027(determines)s 0 7962(the)m
+348(shade)s 949(of)s 1220(gre)s 3(y)k 1696(to)s
+1935(use,)s 2361(on)s 2658(a)s 2824(scale)s 3357(from)s
+3881(0)s 4056(\(black\))s 4781(to)s 5020(1)s 5175(\(white\).)s
+6028(So,)s 6388(for)s 6726(e)s 3(xample,)k 220 fnt2
+480 7464({ 0 0 mo)m 3(v)k 5(eto xsiz)k 3(e 0 lineto 0 ysiz)k 3(e lineto closepath)k
+480 7176( 0.8 setg)m 2(r)k 2(a)k 6(y \207ll)k 480 6888(})m
+480 6600(@Gr)m 2(aphic)k 480 6312({ 2c @Wide 2c @High })m 240 fnt1 0 5813(has)m
+370(result)s 1134 1134 0 1134 240 288 60 480 4389 LoutGr2
+0 0 moveto xsize 0 lineto 0 ysize lineto closepath
+0.8 setgray fill
+grestore
+
+grestore
+480 3673(There)m 1107(are)s 1468(man)s 3(y)k
+2066(other)s 2631(options.)s 3515(The)s 3957(v)s 6(alue)k
+4540(of)s 4825(the)s 5188(left)s 5579(parameter)s 6608(of)s
+220 fnt2 6893 3670(@Gr)m 2(aphic)k 240 fnt1 7952 3673(may)m
+8432(be)s 8729(an)s 3(y)k 0 3385(fragment)m 922(of)s
+1193(the)s 1541(PostScript)s 2583(page)s 3091(description)s 4210(language)s
+5130([)s
+[ /Rect [5201 3385 5296 3547] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTadobe1990ps /ANN pdfmark
+5201(1)s 5296(].)s 5539(Here)s 6059(are)s
+6406(tw)s 2(o)k 6816(other)s 7367(e)s 3(xamples:)k
+220 fnt2 480 2888(xsiz)m 3(e)k 1030(2)s 1203(div)s
+240 fnt1 0 2434(denoting)m 891(a)s 1057(length)s 1712(equal)s
+2285(to)s 2524(half)s 2967(the)s 3315(horizontal)s 4339(size)s
+4766(of)s 5037(the)s 5385(base,)s 5917(and)s 220 fnt2
+480 1935(gsa)m 4(v)k 5(e)k 1110(\207ll)s 1363(g)s 2(restore)k
+2219(strok)s 4(e)k 240 fnt1 0 1436(which)m 648(both)s
+1138(\207lls)s 1554(and)s 1965(strok)s 2(es)k 2698(the)s
+3053(path.)s 3636(Since)s 4230(Basser)s 4933(Lout)s 5452(does)s
+5949(not)s 6322(check)s 6948(that)s 7373(the)s 7728(left)s
+8112(parameter)s 0 1148(is)m 209(v)s 6(alid)k 737(PostScript,)s
+1824(it)s 2014(is)s 2222(possible)s 3061(to)s 3298(cause)s
+3883(mysterious)s 4981(errors)s 5586(in)s 5828(the)s 6174(printing)s
+6982(de)s 6(vice,)k 7705(resulting)s 8592(in)s 8833(no)s
+0 860(output,)m 708(if)s 914(an)s 1186(incorrect)s 2083(v)s 6(alue)k
+2640(is)s 2839(gi)s 6(v)k 3(en.)k 3515(It)s
+3709(is)s 3908(a)s 4063(good)s 4590(idea)s 5037(to)s
+5265(encapsulate)s 6425(graphics)s 7275(objects)s 7992(in)s 8224(carefully)s
+0 572(tested)m 636(de\207nitions,)s 1774(lik)s 2(e)k 2208(those)s
+2790(of)s 3083(the)s 3452(Diag)s 3992(\207gure)s 4627(dra)s 3(wing)k
+5482(package)s 6344([)s
+[ /Rect [6415 569 6521 737] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTkingston1995lout_user /ANN pdfmark
+6415(5)s 6521(,)s 6649(Chapter)s
+7488(9],)s
+[ /Dest /LOUT19_4637_pre_grap_4 /DEST pdfmark
+7815(to)s 8076(be)s 8379(sure)s 8855(of)s
+0 284(a)m 4(v)k 4(oiding)k 883(these)s 1430(errors.)s
+
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 75 81
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+%%+ font Symbol
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+%%IncludeResource: font Symbol
+/fnt4 { /Symbol LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(3.43.)m 1991(@Gr)s 3(aphic)k 240 fnt5
+10250 -1583(75)m gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+480 13205(PostScript)m 1543(e)s 3(xperts)k
+2302(may)s 2789(\207nd)s 3241(the)s 3610(follo)s 6(wing)k
+4608(information)s 5814(helpful)s 6567(when)s 7164(designing)s 8170(adv)s 6(anced)k
+0 12917(graphics)m 861(features.)s 1780(The)s 2208(left)s 2585(parameter)s
+3599(of)s 220 fnt2 3870 12914(@Gr)m 2(aphic)k 240 fnt1
+4914 12917(may)m 5380(ha)s 4(v)k 3(e)k 5881(tw)s 2(o)k
+6291(parts,)s 6862(separated)s 7822(by)s 220 fnt2 8116 12914(//)m
+240 fnt1 8241 12917(:)m 220 fnt2 480 12409({)m 240 fnt6
+604 12414(\207r)m 2(st)k 1038(part)s 220 fnt2 1501 12409(//)m
+240 fnt6 1686 12414(second)m 2417(part)s 220 fnt2 2880 12409(} @Gr)m 2(aphic)k
+240 fnt6 4058 12414(object)m 240 fnt1 0 11913(If)m 230(there)s
+763(is)s 973(no)s 220 fnt2 1266 11910(//)m 240 fnt1
+1391 11913(,)m 1498(the)s 1846(second)s 2569(part)s 3000(is)s
+3210(tak)s 2(en)k 3783(to)s 4022(be)s 4304(empty)s 15(.)k
+5051(The)s 5479(PostScript)s 6521(output)s 7193(has)s 7563(the)s
+7911(form)s 220 fnt2 480 11456(gsa)m 4(v)k 5(e)k
+240 fnt6 480 11173(x)m 646(y)s 220 fnt2 808 11168(tr)m 2(anslate)k
+240 fnt6 480 10885(Code)m 1039(whic)s 3(h)k 1663(de\207nes)s
+220 fnt2 2383 10880(xsiz)m 3(e)k 240 fnt6 2872 10885(,)m
+220 fnt2 2965 10880(ysiz)m 3(e)k 240 fnt6 3454 10885(,)m
+220 fnt2 3547 10880(xmar)m -3(k)k 240 fnt6 4148 10885(,)m
+220 fnt2 4241 10880(ymar)m -3(k)k 240 fnt6 4842 10885(,)m
+220 fnt2 4935 10880(ft)m 240 fnt6 5053 10885(,)m 220 fnt2
+5146 10880(vs)m 240 fnt6 5359 10885(,)m 5452(and)s 220 fnt2
+5878 10880(sp)m 480 10592(gsa)m 4(v)k 5(e)k 240 fnt6
+480 10309(\207r)m 2(st)k 914(part)s 220 fnt2 480 10016(g)m 2(restore)k
+240 fnt6 480 9733(Code)m 1039(whic)s 3(h)k 1663(r)s 8(ender)k 2(s)k
+2439(the)s 2784(right)s 3313(par)s 3(ameter)k 4372(in)s
+4612(tr)s 3(anslated)k 5645(coor)s 8(dinates)k 480 9445(second)m
+1211(part)s 220 fnt2 480 9152(g)m 2(restore)k 240 fnt1
+0 8653(where)m 240 fnt6 628 8655(x)m 240 fnt4 733 8647(,)m
+240 fnt6 802 8655(y)m 240 fnt1 952 8653(is)m 1149(the)s
+1485(position)s 2300(of)s 2558(the)s 2894(lo)s 6(wer)k
+3479(left)s 3843(corner)s 4501(of)s 4759(the)s 5095(base.)s
+5671(Ha)s 4(ving)k 6412(tw)s 2(o)k 6810(parts)s
+7312(permits)s 8066(brack)s 2(eting)k 0 8365(operations,)m 1112(lik)s 2(e)k
+220 fnt2 1533 8362(sa)m 4(v)k 5(e)k 240 fnt1
+2049 8365(and)m 220 fnt2 2462 8362(restore)m 240 fnt1 3206 8365(or)m
+220 fnt2 3474 8362(begin)m 240 fnt1 4065 8365(and)m 220 fnt2
+4478 8362(end)m 240 fnt1 4832 8365(,)m 4949(to)s 5197(enclose)s
+5979(an)s 6271(object.)s 7028(See)s 7438(the)s 7795(source)s
+8484(\207le)s 8855(of)s 0 8077(the)m 348(Diag)s 866(package)s
+1706(for)s 2044(e)s 3(xamples.)k 240 fnt5 0 7284(3.44.)m
+591(@PlainGraphic)s
+[ /Dest /LOUTplaingraphic /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_plai_1 /DEST pdfmark
+240 fnt1 567 6807(The)m 220 fnt2 1023 6804(@PlainGr)m 2(aphic)k
+240 fnt1 2580 6807(symbol)m 3368(is)s 3606(a)s 4(v)k 3(ery)k
+4211(rudimentary)s 5461(analogue)s 6408(for)s 6774(plain)s 7337(te)s 3(xt)k
+7779(output)s 8479(of)s 8778(the)s 220 fnt2 0 6516(@Gr)m 2(aphic)k
+240 fnt1 1037 6519(symbol)m 1789(for)s 2119(PostScript)s 3153(output.)s
+3921(Its)s 4202(result)s 4784(is)s 4986(its)s 5254(right)s
+5757(parameter)s 6763(printed)s 7490(on)s 7779(a)s 7937(background)s
+0 6231(created)m 747(by)s 1041(repeated)s 1908(printings)s 2809(of)s
+3080(its)s 3356(left)s 3733(parameter)s 9(,)k 4785(which)s
+5427(must)s 5952(be)s 6234(a)s 6400(simple)s 7093(w)s 2(ord.)k
+7747(F)s 3(or)k 8136(e)s 3(xample,)k 480 5726("." @PlainGraphic 5s @W)m 9(ide)k
+0 5223(w)m 2(ould)k 676(produce)s 1525(\207v)s 3(e)k
+1959(dots.)s 220 fnt2 2544 5220(@PlainGr)m 2(aphic)k 240 fnt1
+4096 5223(is)m 4328(used)s 4847(in)s 5112(the)s 220 fnt2
+5482 5220(tb)m 4(l)k 240 fnt1 5777 5223(table-dra)m 3(wing)k
+7176(package)s 8038(to)s 8299(produce)s 0 4935(plain-te)m 3(xt)k
+972(rules.)s 240 fnt5 0 4142(3.45.)m 591(@IncludeGraphic)s 2491(and)s
+2932(@SysIncludeGraphic)s
+[ /Dest /LOUTincludegraphic /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_incg_1 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_incg_2 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_incg_3 /DEST pdfmark
+240 fnt1 540 3665(These)m 1167(symbols)s 2016(instruct)s
+2792(Lout)s 3304(to)s 3543(incorporate)s 4687(a)s 4853(separately)s
+5875(created)s 6622(illustration:)s 220 fnt2 480 3164(@IncludeGr)m 2(aphic "m)k 3(ypor)k -8(tr)k 2(ait.eps")k
+240 fnt1 0 2666(The)m 457(parameter)s 1500(is)s 1739(implementation-dependent;)s
+4443(in)s 4715(Basser)s 5441(Lout)s 5982(it)s 6203(is)s
+6442(an)s 6754(object)s 7427(whose)s 8124(v)s 6(alue)k
+8721(is)s 8960(a)s 0 2378(simple)m 705(w)s 2(ord)k
+1265(denoting)s 2168(the)s 2528(name)s 3114(of)s 3397(a)s
+3575(\207le.)s 4056(This)s 4544(\207le)s 4917(should)s 5626(ideally)s
+6342(be)s 6636(a)s 6814(PostScript)s 7868(EPS)s 8338(V)s 26(ersion)k
+0 2090(3.0)m 345(\207le)s 696([)s
+[ /Rect [767 2090 862 2252] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTadobe1990ps /ANN pdfmark
+767(1)s 862(],)s
+1038(since)s 1575(then)s 2034(Lout)s 2536(will)s 2952(k)s 2(eep)k
+3445(careful)s 4152(track)s 4680(of)s 4941(what)s 5456(resources)s
+6399(are)s 6736(required)s 7580(for)s 7908(printing)s 8708(that)s
+0 1802(\207le.)m 473(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
+1437(an)s 3(y)k 1838(PostScript)s 2885(\207le)s 3250(containing)s
+4317(the)s 220 fnt2 4669 1799(%%BoundingBo)m 6(x:)k 240 fnt1
+6464 1802(comment)m 7418(and)s 7826(not)s 8197(requiring)s 0 1514(unusual)m
+800(resources)s 1753(is)s 1963(lik)s 2(ely)k 2559(to)s
+2798(w)s 2(ork.)k 480 1140(The)m 924(result)s 1530(of)s
+220 fnt2 1817 1137(@IncludeGr)m 2(aphic)k 240 fnt1 3584 1140(is)m
+3811(an)s 4110(ordinary)s 4990(Lout)s 5518(object)s 6179(with)s
+6677(marks)s 7328(through)s 8146(its)s 8439(centre.)s 0 852(It)m
+202(may)s 665(be)s 944(rotated,)s 1711(scaled,)s 2412(and)s
+2813(generally)s 3753(treated)s 4456(lik)s 2(e)k 4865(an)s 3(y)k
+5259(other)s 5807(object.)s 6552(Basser)s 7246(Lout)s 7755(determines)s
+8850(its)s 0 564(size)m 434(by)s 735(consulting)s 1792(the)s
+2147(bounding)s 3113(box)s 3536(information)s 4728(in)s 4978(the)s
+5333(\207le.)s 5809(If)s 6047(this)s 6450(cannot)s 7155(be)s
+7444(found,)s 8117(a)s 8291(w)s 2(arning)k 0 276(message)m
+866(is)s 1076(printed)s 1811(and)s 2215(the)s 2563(result)s
+3153(object)s 3797(has)s 4167(zero)s 4631(size.)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1
+0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 76 82
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(76)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s
+8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+220 fnt2
+480 13202(@IncludeGr)m 2(aphic)k 240 fnt1 2228 13205(searches)m 3084(the)s
+3428(same)s 3972(directories)s 5026(that)s 220 fnt2 5440 13202(@Include)m
+240 fnt1 6419 13205(does)m 6905(\(Section)s 7754(3.48\).)s 220 fnt2
+8413 13202(@Sys-)m 0 12914(IncludeGr)m 2(aphic)k 240 fnt1 1562 12917(is)m
+1806(the)s 2188(same)s 2769(as)s 220 fnt2 3053 12914(@IncludeGr)m 2(aphic)k
+240 fnt1 4744 12917(,)m 4885(e)s 3(xcept)k 5600(that)s
+6052(it)s 6278(searches)s 7172(only)s 7686(the)s 8068(directories)s
+0 12629(searched)m 894(by)s 220 fnt2 1188 12626(@SysInclude)m 240 fnt1
+2476 12629(.)m 480 12255(If)m 720(the)s 1079(\207le)s 1450(name)s
+2035(ends)s 2536(in)s 2789(an)s 3(y)k 3197(of)s
+220 fnt2 3478 12252(.gz)m 240 fnt1 3765 12255(,)m 220 fnt2
+3883 12252(-gz)m 240 fnt1 4182 12255(,)m 220 fnt2 4300 12252(.z)m
+240 fnt1 4465 12255(,)m 220 fnt2 4582 12252(-z)m 240 fnt1
+4759 12255(,)m 220 fnt2 4877 12252(_z)m 240 fnt1 5103 12255(,)m
+5220(or)s 220 fnt2 5490 12252(.Z)m 240 fnt1 5680 12255(,)m
+5798(the)s 6156(\207le)s 6528(will)s 6964(\207rst)s 7406(be)s
+7699(uncompressed)s 0 11967(using)m 565(the)s 220 fnt2 906 11964(gunzip)m
+240 fnt1 1597 11967(command)m 2592(into)s 3010(a)s 3169(temporary)s
+4198(\207le)s 4552(called)s 220 fnt2 5173 11964(lout.eps)m 240 fnt1
+5987 11967(in)m 6223(the)s 6564(current)s 7293(directory)s 15(.)k
+8297(This)s 8765(\207le)s 0 11679(is)m 210(remo)s 3(v)k 3(ed)k
+1099(immediately)s 2347(after)s 2843(it)s 3035(is)s 3245(copied)s
+3941(into)s 4366(the)s 4714(output)s 5386(\207le.)s 240 fnt5
+0 10886(3.46.)m 591(@IncludeGraphicRepeated)s 3445(and)s 3886(@SysIncludeGraphicRepeated)s
+[ /Dest /LOUTincludegraphicrepeated /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_incr_1 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_incr_2 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_incr_3 /DEST pdfmark
+240 fnt1
+548 10409(These)m 1183(symbols,)s 2097(which)s 2747(are)s 3103(allo)s 6(wed)k
+3920(only)s 4409(at)s 4649(the)s 5006(start)s 5484(of)s
+5764(a)s 5938(document,)s 6998(tell)s 7365(Lout)s 7886(that)s
+8312(the)s 8669(EPS)s 0 10121(\207le)m 361(named)s 1057(is)s
+1267(lik)s 2(ely)k 1863(to)s 2102(be)s 2384(included)s
+3266(repeatedly:)s 220 fnt2 480 9620(@IncludeGr)m 2(aphicRepeated { m)k 3(ypor)k -8(tr)k 2(ait.eps })k
+240 fnt1 0 9122(T)m 19(o)k 289(actually)s 1088(see)s
+1438(the)s 1775(graphic)s 2533(you)s 2937(use)s 220 fnt2
+3301 9119(@IncludeGr)m 2(aphic)k 240 fnt1 5041 9122(as)m 5279(usual.)s
+5937(The)s 6354(purpose)s 7157(of)s 220 fnt2 7416 9119(@IncludeGr)m 2(aphi-)k
+0 8831(cRepeated)m 240 fnt1 1117 8834(is)m 1335(not)s 1710(to)s
+1957(display)s 2710(the)s 3067(graphic)s 3845(b)s 4(ut)k
+4215(rather)s 4840(to)s 5087(instruct)s 5871(Lout)s 6392(to)s
+6639(include)s 7407(its)s 7692(EPS)s 8157(\207le)s 8526(in)s
+8778(the)s 0 8546(output)m 678(\207le)s 1045(just)s 1456(once,)s
+2021(at)s 2260(the)s 2614(start,)s 3137(rather)s 3759(than)s
+4234(o)s 3(v)k 3(er)k 4720(and)s 5130(o)s 3(v)k 3(er)k
+5615(ag)s 1(ain)k 6195(for)s 6539(e)s 6(v)k 3(ery)k
+7122(time)s 7608(it)s 7806(appears)s 8593(in)s 8843(an)s
+220 fnt2 0 8255(@IncludeGr)m 2(aphic)k 240 fnt1 1691 8258(,)m
+1798(as)s 2048(w)s 2(ould)k 2703(otherwise)s 3688(occur)s 13(.)k
+480 7884(An)m 3(y)k 943(number)s 1732(of)s 220 fnt2
+2001 7881(@IncludeGr)m 2(aphicRepeated)k 240 fnt1 4695 7884(and)m 220 fnt2
+5097 7881(@SysIncludeGr)m 2(aphicRepeated)k 240 fnt1 8156 7884(directi)m 6(v)k 3(es)k
+0 7596(may)m 457(appear)s 1145(at)s 1368(the)s 1706(start)s
+2167(of)s 2429(the)s 2768(document.)s 3866(The)s 4285(\207les)s
+4725(in)s 9(v)k 4(olv)k 3(ed)k 5596(may)s
+6052(be)s 6325(compressed)s 7503(as)s 7744(for)s 220 fnt2
+8072 7593(@Include-)m 0 7305(Gr)m 2(aphic)k 240 fnt1 761 7308(.)m
+922(The)s 1347(\207le)s 1705(names)s 2364(gi)s 6(v)k 3(en)k
+2941(within)s 220 fnt2 3605 7305(@IncludeGr)m 2(aphicRepeated)k 240 fnt1
+6297 7308(must)m 6819(be)s 7098(identical)s 7972(to)s 8208(the)s
+8552(name)s 0 7020(used)m 476(within)s 1122(the)s 1449(corresponding)s
+220 fnt2 2849 7017(@IncludeGr)m 2(aphic)k 240 fnt1 4579 7020(symbols,)m
+5462(or)s 5700(else)s 6105(the)s 220 fnt2 6431 7017(@IncludeGr)m 2(aphicRepeated)k
+240 fnt1 0 6732(will)m 437(be)s 731(inef)s 6(fecti)k 6(v)k 3(e.)k
+1911(If)s 220 fnt2 2153 6729(@SysIncludeGr)m 2(aphicRepeated)k 240 fnt1
+5226 6732(is)m 5447(used)s 5956(\(as)s 6296(opposed)s 7165(to)s
+220 fnt2 7416 6729(@IncludeGr)m 2(aphi-)k 0 6441(cRepeated)m 240 fnt1
+1049 6444(\))m 1205(then)s 1703(all)s 2024(corresponding)s 3475(includes)s
+4351(must)s 4905(use)s 220 fnt2 5308 6441(@SysIncludeGr)m 2(aphic)k
+240 fnt1 7454 6444(rather)m 8098(than)s 220 fnt2 8596 6441(@In-)m
+0 6153(cludeGr)m 2(aphic)k 240 fnt1 1285 6156(.)m 480 5782(Use)m
+901(of)s 220 fnt2 1165 5779(@IncludeGr)m 2(aphicRepeated)k 240 fnt1
+3853 5782(does)m 4336(not)s 4694(change)s 5421(the)s 5762(appearance)s
+6886(of)s 7149(the)s 7490(output)s 8155(at)s 8380(all,)s
+8717(b)s 4(ut,)k 0 5494(if)m 225(the)s 582(EPS)s
+1047(\207le)s 1417(w)s 2(ould)k 2081(otherwise)s 3074(be)s
+3365(included)s 4256(man)s 3(y)k 4847(times)s 5424(o)s 3(v)k 3(er)k 9(,)k
+5950(the)s 6306(result)s 6905(will)s 7340(be)s 7630(a)s
+7805(much)s 8403(shorter)s 0 5206(PostScript)m 1059(\207le)s 1437(which)s
+2097(will)s 2540(usually)s 3302(print)s 3831(signi\207cantly)s 5084(f)s 2(aster)k
+5689(as)s 5956(well.)s 6548(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
+7526(Lout)s 8055(uses)s 8536(Le)s 6(v)k 3(el)k
+0 4918(2)m 186(PostScript)s 1240(features)s 2058(to)s 2309(implement)s
+220 fnt2 3403 4915(@IncludeGr)m 2(aphicRepeated)k 240 fnt1 6038 4918(,)m
+6158(which)s 6812(may)s 7290(not)s 7668(be)s 7962(a)s 4(v)k 6(ailable)k
+8883(in)s 0 4630(some)m 565(old)s 934(printers,)s 1775(and)s
+2184(the)s 2537(contents)s 3390(of)s 3665(the)s 4018(EPS)s
+4480(\207le)s 4846(ha)s 4(v)k 3(e)k 5352(to)s
+5596(be)s 5882(stored)s 6529(in)s 6777(the)s 7130(printer)s
+7831(for)s 8174(the)s 8527(entire)s 0 4342(duration)m 841(of)s
+1099(the)s 1433(print)s 1931(job,)s 2331(so)s 2583(there)s
+3103(is)s 3299(a)s 3452(risk)s 3858(that)s 4262(memory)s
+5100(will)s 5513(run)s 5875(out)s 6228(if)s 220 fnt2
+6431 4339(@IncludeGr)m 2(aphicRepeated)k 240 fnt1 0 4054(is)m 210(used.)s
+480 3680(The)m 955(implementation)s 2560(of)s 220 fnt2 2878 3677(@IncludeGr)m 2(aphicRepeated)k
+240 fnt1 5621 3680(uses)m 6132(code)s 6687(gi)s 6(v)k 3(en)k
+7315(by)s 7656(the)s 8052(authors)s 8855(of)s 0 3392(PostScript)m
+1039(which)s 1677(emplo)s 2(ys)k 2533(PostScript)s 3571(forms)s
+4175(to)s 4410(sa)s 4(v)k 3(e)k 4880(the)s
+5225(EPS)s 5678(\207les)s 6123([)s
+[ /Rect [6194 3392 6308 3554] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTadobe1996epsforms /ANN pdfmark
+6194(2)s 6308(].)s
+6547(Lout')s 13(s)k 7205(v)s 3(ersion)k 7959(of)s
+8226(this)s 8618(code)s 0 3104(is)m 215(some)s 6(what)k
+1245(modi\207ed,)s 2209(partly)s 2825(for)s 3169(simplicity)s 4184(and)s
+4593(partly)s 5210(to)s 5455(correct)s 6182(a)s 6354(possible)s
+7200(b)s 4(ug)k 7614(caused)s 8329(by)s 8629(their)s
+0 2816(use)m 375(of)s 646(a)s 812(single)s 1439(\207lter)s
+1949(to)s 2188(read)s 2657(all)s 2950(the)s 3298(EPS)s
+3755(\207les,)s 4260(rather)s 4876(than)s 5345(a)s 5511(separate)s
+6349(\207lter)s 6859(for)s 7197(each)s 7692(one.)s 240 fnt5
+0 2023(3.47.)m 591(@Pr)s 4(ependGraphic and @SysPr)k 4(ependGraphic)k
+[ /Dest /LOUTprependgraphic /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_prep_1 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_prep_2 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_prep_3 /DEST pdfmark
+240 fnt1
+582 1546(These)m 1252(symbols,)s 2200(which)s 2885(may)s 3394(appear)s
+4134(an)s 3(ywhere)k 5160(that)s 5621(a)s 5830(de\207nition)s
+6847(or)s 220 fnt2 7149 1543(@Use)m 240 fnt1 7857 1546(symbol)m
+8660(may)s 0 1258(appear)m 9(,)k 738(tell)s 1101(Lout)s
+1617(to)s 1860(include)s 2624(the)s 2976(contents)s 3828(of)s
+4103(a)s 4273(\207le)s 4637(in)s 4884(the)s 5236(preamble)s
+6185(of)s 6460(its)s 6740(output.)s 7520(F)s 3(or)k
+7913(Basser)s 8614(Lout)s 0 970(this)m 418(means)s 1102(that)s
+1542(the)s 1912(\207le)s 2295(must)s 2843(contain)s 3626(PostScript)s
+4690(\(and)s 5195(ideally)s 5921(it)s 6136(w)s 2(ould)k
+6813(be)s 3(gin)k 7421(and)s 7847(end)s 8273(with)s
+8778(the)s 220 fnt2 0 679(%%BeginResource)m 240 fnt1 1941 682(and)m
+220 fnt2 2345 679(%%EndResource)m 240 fnt1 4116 682(comments)m 5150(of)s
+5421(DSC)s 5939(3.0\).)s 6482(F)s 3(or)k 6871(e)s 3(xample,)k
+220 fnt2 480 181(@SysPrependGr)m 2(aphic { diagf)k 6(.lpg })k
+grestore
+gsave
+1417 -15423 translate
+240 fnt1
+0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 77 83
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(3.47.)m 1991(@Pr)s 8(ependGr)k 3(aphic and @SysPr)k 8(ependGr)k 3(aphic)k
+240 fnt5 10248 -1583(77)m gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+0 13205(appears)m 818(at)s
+1088(the)s 1474(start)s 1981(of)s 2290(the)s 2676(Diag)s
+3231(package;)s 4165(the)s 4551(\207le)s 220 fnt2 4949 13202(diagf)m 6(.lpg)k
+240 fnt1 5857 13205(contains)m 6743(a)s 6946(number)s 7775(of)s
+8084(PostScript)s 0 12917(de\207nitions)m 1048(used)s 1532(by)s 1812(Diag)s
+2317(for)s 2642(dra)s 3(wing)k 3462(diagrams.)s 4489(It)s
+4680(sa)s 4(v)k 3(es)k 5229(a)s 5382(lot)s
+5680(of)s 5938(space)s 6511(to)s 6737(include)s 7484(them)s
+8008(just)s 8400(once)s 8894(at)s 0 12629(the)m 334(start)s
+789(lik)s 2(e)k 1186(this,)s 1624(rather)s 2225(than)s
+2679(with)s 3146(e)s 6(v)k 3(ery)k 3708(diagram.)s
+220 fnt2 4640 12626(@PrependGr)m 2(aphic)k 240 fnt1 6498 12629(and)m
+220 fnt2 6887 12626(@SysPrependGr)m 2(aphic)k 240 fnt1 0 12341(search)m
+667(for)s 1005(the)s 1353(\207le)s 1714(in)s 1957(the)s
+2305(same)s 2852(places)s 3500(as)s 220 fnt2 3750 12338(@Include)m
+240 fnt1 4732 12341(and)m 220 fnt2 5136 12338(@SysInclude)m 240 fnt1
+6484 12341(respecti)m 6(v)k 3(ely)k 15(.)k 480 11967(If)m
+699(the)s 1036(same)s 1572(\207le)s 1921(name)s 2484(appears)s
+3254(in)s 3486(tw)s 2(o)k 220 fnt2 3884 11964(@PrependGr)m 2(aphic)k
+240 fnt1 5746 11967(or)m 220 fnt2 5994 11964(@SysPrependGr)m 2(aphic)k
+240 fnt1 8221 11967(symbols,)m 0 11679(the)m 385(second)s 1146(occurrence)s
+2288(is)s 2536(silently)s 3330(ignored.)s 4263(This)s 4777(allo)s 6(ws)k
+5484(se)s 6(v)k 3(eral)k 6243(packages)s 7209(to)s
+7486(share)s 8084(PostScript)s 0 11391(resources:)m 1059(each)s 1545(includes)s
+2384(the)s 2722(appropriate)s 3857(prepend)s 4677(\207le,)s 5079(b)s 4(ut)k
+5432(in)s 5666(the)s 6005(end)s 6399(only)s 6870(one)s
+7263(cop)s 2(y)k 7771(ot)s 8008(it)s 8191(is)s
+8391(printed)s 0 11103(to)m 239(Lout')s 13(s)k 901(output.)s
+240 fnt5 0 10310(3.48.)m 591(@Include and @SysInclude)s
+[ /Dest /LOUTinclude /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_incl_1 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_incl_2 /DEST pdfmark
+240 fnt1 562 9833(These)m
+1212(symbols)s 2083(instruct)s 2882(Lout)s 3417(to)s 3678(temporarily)s
+4869(switch)s 5572(to)s 5834(reading)s 6627(another)s 7426(\207le,)s
+7861(whose)s 8552(name)s 0 9545(appears)m 781(in)s 1024(braces)s
+1685(follo)s 6(wing)k 2662(the)s 3010(symbol.)s 3879(F)s 3(or)k
+4268(e)s 3(xample,)k 220 fnt2 480 9044(@Include { "/usr/lout/langdefs" })m 240 fnt1
+0 8545(will)m 455(cause)s 1072(the)s 1450(contents)s 2328(of)s
+2629(\207le)s 3020(/usr/lout/langdefs)s 4773(to)s 5042(be)s 5354(read)s
+5853(at)s 6115(the)s 6493(point)s 7075(it)s 7297(occurs.)s
+8115(After)s 8708(that)s 0 8257(\207le)m 405(is)s 659(read,)s
+1221(the)s 1613(current)s 2393(\207le)s 2798(is)s 3052(resumed.)s
+4070(The)s 4542(included)s 5468(\207le)s 5873(may)s 6383(contain)s
+7188(arbitrary)s 8107(Lout)s 8664(te)s 3(xt,)k 0 7969(including)m
+958(other)s 220 fnt2 1511 7966(@Include)m 240 fnt1 2494 7969(commands.)m
+3697(The)s 4127(\207le)s 4489(is)s 4701(searched)s 5597(for)s
+5936(\207rst)s 6369(in)s 6614(the)s 6963(current)s 7701(directory)s 15(,)k
+8657(then)s 0 7681(in)m 259(a)s 442(sequence)s 1392(of)s
+1680(standard)s 2565(places)s 3229(which)s 3888(are)s 4252(not)s
+4635(necessarily)s 5767(the)s 6131(same)s 6695(places)s 7360(that)s
+7795(databases)s 8779(are)s 0 7393(searched)m 894(for)s 13(.)k
+220 fnt2 1323 7390(@SysInclude)m 240 fnt1 2671 7393(searches)m 3531(the)s
+3879(standard)s 4747(places)s 5395(only)s 15(.)k 480 7019(From)m
+1084(V)s 26(ersion)k 1899(3.27,)s 2452(a)s 2645(special)s
+3389(beha)s 4(viour)k 4429(has)s 4826(been)s 5361(instituted)s
+6335(when)s 6937(an)s 7247(attempt)s 8049(is)s 8286(made)s
+8887(to)s 220 fnt2 0 6728(@Include)m 240 fnt1 973 6731(or)m
+220 fnt2 1223 6728(@SysInclude)m 240 fnt1 2562 6731(the)m 2901(same)s
+3439(\207le)s 3791(twice.)s 4403(If)s 4623(a)s 4780(second)s
+5494(or)s 5744(subsequent)s 6859(attempt)s 7626(occurs)s 8292(after)s
+8778(the)s 0 6443(end)m 402(of)s 671(de\207nitions,)s 220 fnt2
+1785 6440(@Use)m 240 fnt1 2448 6443(clauses,)m 3242(and)s 220 fnt2
+3644 6440(@Database)m 240 fnt1 4855 6443(clauses)m 5594(\(i.e.)s 6006(if)s
+6221(it)s 6410(occurs)s 7083(within)s 7748(the)s 8094(content)s
+8855(of)s 0 6155(the)m 342(document\),)s 1465(it)s 1650(will)s
+2069(go)s 2355(ahead,)s 3014(thus)s 3457(allo)s 6(wing)k
+4334(the)s 4675(repeated)s 5535(inclusion)s 6463(of)s 6727(\207les)s
+7169(containing)s 8225(objects)s 8946(\211)s 0 5867(not)m 370(necessarily)s
+1490(recommended,)s 2957(b)s 4(ut)k 3324(certainly)s 4217(one)s
+4624(w)s 2(ay)k 5080(of)s 5356(repeating)s 6302(information.)s
+7599(But)s 8010(if)s 8232(a)s 8403(second)s 0 5579(or)m
+270(subsequent)s 1406(attempt)s 2194(occurs)s 2881(within)s 3561(the)s
+3921(re)s 3(gion)k 4598(of)s 4881(de\207nitions,)s 220 fnt2
+6010 5576(@Use)m 240 fnt1 6687 5579(clauses,)m 7496(and)s 220 fnt2
+7912 5576(@Database)m 240 fnt1 0 5291(clauses,)m 797(then)s 1266(that)s
+1684(attempt)s 2460(will)s 2886(be)s 3168(silently)s 3925(ignored.)s
+480 4917(This)m 955(beha)s 4(viour)k 1967(is)s 2175(useful)s
+2813(for)s 3149(situations)s 4115(where)s 4754(tw)s 2(o)k
+5162(packages)s 6089(depend)s 6837(on)s 7133(a)s 7298(third,)s
+7854(caled,)s 8464(say)s 15(,)k 220 fnt2 8873 4914(C)m
+240 fnt1 9022 4917(.)m 0 4629(W)m 19(e)k 369(can)s
+758(then)s 1227(place)s 220 fnt2 480 4128(@SysInclude { C })m 240 fnt1
+0 3630(at)m 222(the)s 559(start)s 1018(of)s 1279(both)s
+1751(packages.)s 2781(If)s 3001(neither)s 3713(package)s 4542(is)s
+4742(included,)s 5662(then)s 220 fnt2 6120 3627(C)m 240 fnt1
+6319 3630(w)m 2(on')k 4(t)k 6920(be)s 7191(either)s 13(.)k
+7875(But)s 8270(if)s 8476(one)s 8867(or)s 0 3342(both)m
+483(is)s 693(included,)s 1624(then)s 220 fnt2 2093 3339(C)m
+240 fnt1 2301 3342(will)m 2727(be)s 3009(included)s 3891(just)s
+4296(once)s 4803(at)s 5035(the)s 5383(start)s 5853(of)s
+6124(the)s 6471(\207rst.)s 6946(An)s 3(y)k 7410(pattern)s
+8130(of)s 8400(ac)s 3(yclic)k 0 3054(dependencies)m 1342(between)s
+2198(packages)s 3129(can)s 3520(be)s 3805(e)s 3(xpressed)k
+4805(with)s 5289(this)s 5688(mechanism,)s 6886(just)s 7294(by)s
+7590(including)s 8550(e)s 6(v)k 3(ery)k 0 2766(package)m
+840(that)s 1259(a)s 1426(gi)s 6(v)k 3(en)k
+2007(package)s 2848(depends)s 3684(on)s 3982(at)s 4215(the)s
+4564(start)s 5035(of)s 5306(the)s 5655(\207le)s 6017(containing)s
+7081(that)s 7500(package.)s 8449(Cyclic)s 0 2478(dependencies)m 1340(are)s
+1687(be)s 3(yond)k 2448(Lout')s 13(s)k 3110(one-pass)s
+3998(comprehension)s 5517(an)s 3(yw)k 2(ay)k 15(.)k
+240 fnt5 0 1685(3.49.)m 591(@BackEnd)s 1814(and)s 2255(the)s
+2629(PlainT)s 22(ext)k 3663(and)s 4104(PDF)s 4623(back)s
+5172(ends)s
+[ /Dest /LOUTbackend /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_bend_1 /DEST pdfmark
+240 fnt1 547 1253(The)m 220 fnt2 983 1250(@Bac)m 4(kEnd)k
+240 fnt1 2136 1253(symbol,)m 2955(which)s 3605(tak)s 2(es)k
+4153(no)s 4454(parameters,)s 5615(has)s 5993(for)s 6339(its)s
+6623(result)s 7220(a)s 7394(string)s 7999(naming)s 8778(the)s
+0 965(back)m 523(end)s 938(currently)s 1865(in)s 2119(use.)s
+2613(Three)s 3237(back)s 3761(ends)s 4262(are)s 4620(a)s 4(v)k 6(ailable,)k
+5590(PostScript,)s 6690(PDF)s 7198(and)s 7613(PlainT)s 16(e)k 3(xt.)k
+8698(The)s 0 677(symbol)m 760(is)s 970(generally)s 1913(used)s
+2410(lik)s 2(e)k 2822(this:)s 220 fnt2 480 176(@Bac)m 4(kEnd @Case {)k
+
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 78 84
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(78)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s
+8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+220 fnt2
+480 13207( PlainT)m 26(e)k 6(xt @Y)k 4(ield { ...)k 13( })k
+480 12919( P)m 11(ostScr)k -3(ipt @Y)k 4(ield { ...)k 13( })k
+480 12631( PDF @Y)m 4(ield { ...)k 13( })k 480 12343(})m 240 fnt1
+0 11849(to)m 255(obtain)s 926(dif)s 6(ferent)k 1817(objects)s
+2561(depending)s 3628(on)s 3941(the)s 4305(back)s 4834(end.)s
+5360(No)s 220 fnt2 5722 11846(else)m 240 fnt1 6192 11849(is)m
+6418(required)s 7288(since)s 7851(these)s 8414(are)s 8778(the)s
+0 11561(only)m 480(possible)s 1320(v)s 6(alues.)k 480 11187(When)m
+1101(a)s 220 fnt2 1259 11184(@Case)m 240 fnt1 2037 11187(symbol)m
+2789(has)s 220 fnt2 3151 11184(@Bac)m 4(kEnd)k 240 fnt1
+4287 11187(for)m 4617(its)s 4885(left)s 5253(parameter)s 6259(and)s
+6655(the)s 6994(left)s 7363(parameter)s 8369(of)s 8631(each)s
+220 fnt2 0 10896(@Y)m 4(ield)k 240 fnt1 768 10899(symbol)m
+1544(within)s 2228(it)s 2435(consists)s 3259(of)s 3546(a)s
+3728(sequence)s 4676(of)s 4963(one)s 5381(or)s 5656(more)s
+6218(literal)s 6844(w)s 2(ords)k 7494(\(including)s 220 fnt2
+8546 10896(else)m 240 fnt1 8940 10899(\),)m 0 10611(Lout)m 531(will)s
+976(optimize)s 1888(by)s 2201(e)s 6(v)k 6(aluating)k
+3258(the)s 220 fnt2 3625 10608(@Case)m 240 fnt1 4432 10611(symbol)m
+5211(at)s 5463(the)s 5830(time)s 6330(it)s 6541(is)s
+6771(read.)s 7365(This)s 7861(optimization)s 0 10323(ensures)m 789(that)s
+1228(there)s 1782(is)s 2013(only)s 2514(a)s 2701(small)s
+3294(once-only)s 4326(performance)s 5610(penalty)s 6389(for)s 6748(multiple)s
+7621(back)s 8155(ends,)s 8722(and)s 0 10035(it)m 206(permits)s
+987(these)s 220 fnt2 1548 10032(@Case)m 240 fnt1 2350 10035(symbols)m
+3213(\(b)s 4(ut)k 3668(no)s 3976(other)s 4541(symbols\))s
+5481(to)s 5734(appear)s 6446(within)s 7128(the)s 7490(object)s
+8149(follo)s 6(wing)k 220 fnt2 0 9744(@Include)m 240 fnt1
+982 9747(and)m 220 fnt2 1386 9744(@PrependGr)m 2(aphic)k 240 fnt1
+3259 9747(symbols.)m 480 9373(The)m 918(PlainT)s 16(e)k 3(xt)k
+1899(back)s 2423(end)s 2837(dif)s 6(fers)k 3515(from)s
+4050(the)s 4409(PostScript)s 5461(one)s 5874(in)s 6128(tw)s 2(o)k
+6548(main)s 7094(respects.)s 8038(First,)s 8593(there)s 0 9085(is)m
+226(ef)s 6(fecti)k 6(v)k 3(ely)k 1302(just)s
+1724(one)s 2143(font:)s 2711(although)s 3622(all)s 3932(the)s
+4297(font)s 4759(commands)s 5864(w)s 2(ork)k 6431(e)s 3(xactly)k
+7189(as)s 7456(usual,)s 8085(the)s 3(y)k 8565(don')s 4(t)k
+0 8797(actually)m 817(change)s 1558(an)s 3(ything.)k 2565(Each)s
+3107(character)s 4049(in)s 4299(this)s 4702(font)s 5155(is)s
+5372(tak)s 2(en)k 5953(to)s 6199(be)s 6488(one)s
+6898(tenth)s 7440(of)s 7719(one)s 8128(inch)s 8605(wide)s
+0 8509(and)m 404(20)s 699(points)s 1335(high.)s 1925(Second,)s
+2737(the)s 3085(output)s 3757(is)s 3967(an)s 4250(ordinary)s
+5114(te)s 3(xt)k 5529(\207le,)s 5941(not)s 6307(a)s
+6473(PostScript)s 7515(\207le.)s 480 8135(Clearly)m 15(,)k 1306(with)s
+1820(ordinary)s 2716(te)s 3(xt)k 3162(output)s 3866(the)s
+4246(possibility)s 5327(of)s 5630(adv)s 6(anced)k 6618(graphics)s
+7510(features)s 8348(such)s 8876(as)s 0 7847(rotation)m 829(and)s
+1262(scaling)s 2022(is)s 2261(curtailed.)s 3290(Ne)s 6(v)k 3(ertheless,)k
+4651(all)s 4974(symbols)s 5852(ha)s 4(v)k 3(e)k
+6383(well-de\207ned)s 7665(\(possibly)s 8626(null\))s 0 7559(ef)m 6(fects)k
+706(in)s 976(the)s 1351(PlainT)s 16(e)k 3(xt)k
+2348(back)s 2888(end,)s 3368(so)s 3661(there)s 4221(is)s
+4457(no)s 4777(additional)s 5815(danger)s 6553(of)s 6851(crashing)s
+7741(the)s 8116(system)s 8867(or)s 0 7271(obtaining)m 957(grossly)s
+1702(unreasonable)s 3020(output)s 3692(by)s 3986(a)s 4152(change)s
+4886(to)s 5125(PlainT)s 16(e)k 3(xt.)k 480 6897(The)m
+905(PlainT)s 16(e)k 3(xt)k 1872(back)s 2382(end)s
+2783(is)s 2990(obtained)s 3869(by)s 4160(the)s 220 fnt2
+4505 6894(-p)m 240 fnt1 4749 6897(option)m 5415(to)s 5651(Basser)s
+6345(Lout.)s 6958(The)s 7383(character)s 8314(size)s 8737(can)s
+0 6609(be)m 282(changed)s 1138(by)s 1432(adding)s 2137(tw)s 2(o)k
+2547(lengths)s 3289(to)s 3528(the)s 220 fnt2 3876 6606(-p)m
+240 fnt1 4123 6609(option,)m 4842(lik)s 2(e)k 5254(this:)s
+220 fnt2 480 6112(lout -p0.1i12p ...)m 240 fnt1 0 5616(which)m 650(in)s 9(v)k 4(ok)k 2(es)k
+1439(the)s 1795(PlainT)s 16(e)k 3(xt)k 2773(back)s
+3294(end)s 3706(with)s 4196(each)s 4699(character)s 5641(being)s
+6234(0.1)s 6577(inches)s 7247(wide)s 7776(and)s 8188(12)s
+8490(points)s 0 5328(high.)m 595(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
+1561(e)s 3(xperience)k 2655(suggests)s 3523(that)s 3947(the)s
+4301(best)s 4752(approach)s 5691(is)s 5907(to)s 6152(de\207ne)s
+6799(all)s 7098(horizontal)s 8128(lengths)s 8876(as)s 0 5040(multiples)m
+943(of)s 1218(the)s 220 fnt2 1569 5037(s)m 240 fnt1
+1736 5040(unit)m 2171(\(the)s 2602(width)s 3208(of)s 3482(a)s
+3652(space,)s 4293(hence)s 4911(the)s 5262(width)s 5868(of)s
+6143(all)s 6439(characters\))s 7538(and)s 7945(to)s 8188(de\207ne)s
+8833(all)s 0 4752(v)m 3(ertical)k 777(lengths)s 1530(as)s
+1791(multiples)s 2742(of)s 3023(the)s 220 fnt2 3382 4749(f)m
+240 fnt1 3511 4752(unit)m 3954(\(the)s 4391(font)s 4847(size,)s
+5336(equal)s 5920(to)s 6169(the)s 6528(height)s 7197(of)s
+7479(e)s 6(v)k 3(ery)k 8066(character\),)s 0 4464(and)m
+404(not)s 770(to)s 1009(change)s 1743(the)s 2091(character)s
+3025(size)s 3452(in)s 3695(the)s 4043(command)s 5045(line.)s
+480 4090(There)m 1098(is)s 1314(a)s 220 fnt2 1486 4087(-P)m
+240 fnt1 1762 4090(option)m 2437(which)s 3085(is)s 3301(identical)s
+4184(with)s 4671(the)s 220 fnt2 5025 4087(-p)m 240 fnt1
+5278 4090(option)m 5953(e)s 3(xcept)k 6640(that)s 7064(it)s
+7262(inserts)s 7942(a)s 8114(form-feed)s 0 3802(character)m 934(between)s
+1788(each)s 2283(tw)s 2(o)k 2693(components)s 3901(of)s
+4172(the)s 4520(output,)s 5239(b)s 4(ut)k 5601(not)s
+5967(before)s 6633(the)s 6981(\207rst)s 7412(or)s 7671(after)s
+8167(the)s 8515(last.)s 480 3428(The)m 911(PDF)s 1412(back)s
+1928(end)s 2336(is)s 2549(obtained)s 3435(by)s 3732(typing)s
+220 fnt2 4401 3425(lout -Z)m 240 fnt1 5017 3428(.)m 5185(It)s
+5393(is)s 5607(similar)s 6332(to)s 6575(PostScript)s 7620(b)s 4(ut)k
+7986(much)s 8579(more)s 0 3140(limited)m 755(in)s 1020(functionality)s 15(.)k
+2412(Consult)s 3239(a)s 3426(separate)s 4286(document)s 5312(distrib)s 4(uted)k
+6410(with)s 6913(Lout)s 7447(for)s 7807(further)s 8538(infor)s 4(-)k
+0 2852(mation.)m 240 fnt5 0 2109(3.50.)m 591(@V)s 24(erbatim and @RawV)k 24(erbatim)k
+
+[ /Dest /LOUTverbatim /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_verb_1 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_verb_2 /DEST pdfmark
+240 fnt1 543 1677(These)m 1173(symbols)s 2026(instruct)s 2805(Lout)s
+3321(to)s 3563(read)s 4036(the)s 4387(follo)s 6(wing)k
+5367(te)s 3(xt)k 5786(\(enclosed)s 6763(in)s 7010(braces\))s
+7751(v)s 3(erbatim,)k 8708(that)s 0 1389(is,)m 266(turning)s
+1010(of)s 6(f)k 1354(all)s 1647(special)s 2365(character)s
+3299(meanings.)s 4380(F)s 3(or)k 4769(e)s 3(xample,)k
+220 fnt2 480 888(@V)m 17(erbatim { "hello" })k 240 fnt1 0 394(produces)m
+
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 79 85
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(3.50.)m 1991(@V)s 26(erbatim and @RawV)k 26(erbatim)k
+240 fnt5 10249 -1583(79)m gsave
+1417 -15423 translate
+240 fnt1 9066 13412 0 13303 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+480 13249("hello")m 220 fnt2
+0 12793(@V)m 17(erbatim)k 240 fnt1 1178 12796(ignores)m 1983(all)s
+2325(characters)s 3393(after)s 3938(the)s 4336(opening)s 5210(brace)s
+5833(up)s 6175(to)s 6464(b)s 4(ut)k 6875(not)s
+7291(including)s 8297(the)s 8695(\207rst)s 0 12508(non-white-space)m 1654(character)s 13(.)k
+220 fnt2 2697 12505(@Ra)m 4(wV)k 17(erbatim)k 240 fnt1
+4278 12508(dif)m 6(fers)k 4964(from)s 220 fnt2 5506 12505(@V)m 17(erbatim)k
+240 fnt1 6653 12508(only)m 7151(in)s 7413(that)s 7849(it)s
+8059(ignores)s 8833(all)s 0 12220(characters)m 1018(after)s 1514(the)s
+1862(opening)s 2687(brace)s 3261(up)s 3554(to)s 3793(b)s 4(ut)k
+4155(not)s 4521(including)s 5479(the)s 5827(\207rst)s 6258(non-white-space)s
+7894(character)s 9(,)k 8867(or)s 0 11932(up)m 302(to)s
+551(and)s 965(including)s 1931(the)s 2289(\207rst)s 2730(ne)s 6(wline)k
+3547(character)s 9(,)k 4528(whiche)s 6(v)k 3(er)k
+5585(comes)s 6257(\207rst.)s 6802(This)s 7287(v)s 6(ariant)k
+8014(is)s 8234(useful)s 8883(in)s 0 11644(cases)m 555(such)s
+1051(as)s 220 fnt2 480 11193(@Ra)m 4(wV)k 17(erbatim {)k
+480 10905( v)m 5(ar x:)k 11( Real)k 480 10617(begin)m 480 10329(})m
+240 fnt1 0 9835(where)m 662(the)s 1033(\207rst)s 1486(line)s
+1923(of)s 2217(the)s 2587(v)s 3(erbatim)k 3516(te)s 3(xt)k
+3954(be)s 3(gins)k 4649(with)s 5154(white)s 5763(space)s
+6373(which)s 7038(w)s 2(ould)k 7715(be)s 8020(ignored)s
+8832(by)s 220 fnt2 0 9544(@V)m 17(erbatim)k 240 fnt1
+1069 9547(.)m 1232(Both)s 1754(symbols)s 2602(ignore)s 3268(all)s
+3560(white)s 4146(spaces)s 4820(at)s 5051(the)s 5398(end)s
+5801(of)s 6071(the)s 6418(v)s 3(erbatim)k 7323(te)s 3(xt,)k
+7784(preceding)s 8778(the)s 0 9259(closing)m 744(brace.)s 240 fnt5
+0 8466(3.51.)m 591(@Underline)s
+[ /Dest /LOUTunderline /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_unde_1 /DEST pdfmark
+240 fnt1 533 8034(The)m 220 fnt2
+953 8031(@Under)m -3(line)k 240 fnt1 2160 8034(symbol)m 2912(underlines)s
+3951(its)s 4219(right)s 4722(parameter)s 9(,)k 5767(b)s 4(ut)k
+6121(only)s 6593(if)s 6802(that)s 7212(parameter)s 8218(is)s
+8420(a)s 8578(w)s 2(ord)k 0 7746(or)m 259(a)s
+425(paragraph:)s 220 fnt2 480 7245(W)m 6(e @Under)k -3(line { really do } mean this)k 3(.)k
+240 fnt1 0 6747(produces)m 480 6244(W)m 19(e)k 849(really)s
+1446(do)s 849 1679 6220 12 ul
+1739(mean)s 2314(this.)s 0 5741(It)m 204(is)s
+412(not)s 776(possible)s 1614(to)s 1851(underline)s 2808(an)s
+3089(arbitrary)s 3962(object)s 4604(using)s 5174(this)s 5568(symbol;)s
+6383(the)s 220 fnt2 6729 5738(@Under)m -3(line)k 240 fnt1
+7942 5741(symbol)m 8700(will)s 0 5453(be)m 282(ignored)s 1071(if)s
+1288(this)s 1684(is)s 1894(attempted.)s 480 5079(It)m 731(is)s
+987(v)s 3(ery)k 1509(easy)s 2034(to)s 240 fnt6
+2319 5081(de\207ne)m 240 fnt1 2990 5079(a)m 3202(symbol)s 4008(which)s
+4696(will)s 5168(underline)s 6173(an)s 6502(arbitrary)s 7423(object,)s
+8160(using)s 8778(the)s 220 fnt2 0 4788(@Gr)m 2(aphic)k
+240 fnt1 1045 4791(symbol.)m 1915(This)s 2393(raises)s 2988(the)s
+3337(question)s 4207(of)s 4479(wh)s 1(y)k 220 fnt2
+4946 4788(@Under)m -3(line)k 240 fnt1 6163 4791(is)m 6374(needed)s
+7111(at)s 7345(all.)s 7748(The)s 8177(answer)s 8916(is)s
+0 4503(that)m 220 fnt2 418 4500(@Under)m -3(line)k 240 fnt1
+1633 4503(has)m 2003(tw)s 2(o)k 2413(properties)s 3419(that)s
+3837(distinguish)s 4944(it)s 5136(from)s 5660(symbols)s 6509(based)s
+7112(on)s 220 fnt2 7409 4500(@Gr)m 2(aphic)k 240 fnt1
+8393 4503(.)m 480 4129(First,)m 1021(when)s 220 fnt2 1594 4126(@Under)m -3(line)k
+240 fnt1 2806 4129(both)m 3286(contains)s 4130(a)s 4293(paragraph)s
+5303(and)s 5704(is)s 5911(used)s 6404(within)s 7069(a)s
+7232(paragraph,)s 8292(as)s 8539(in)s 8778(the)s 0 3841(e)m 3(xample)k
+875(abo)s 3(v)k 3(e,)k 1561(the)s 1921(inner)s
+2485(and)s 2901(outer)s 3465(paragraphs)s 4577(are)s 4937(mer)s 4(ged)k
+5720(into)s 6158(one,)s 6623(permitting)s 7684(the)s 8045(underlined)s
+0 3553(te)m 3(xt)k 412(to)s 647(break)s 1236(o)s 3(v)k 3(er)k
+1711(se)s 6(v)k 3(eral)k 2430(lines.)s 3041(This)s
+3513(is)s 3720(ho)s 6(w)k 4177(the)s 220 fnt2
+4522 3550(@F)m 6(ont)k 240 fnt1 5230 3553(symbol)m 5986(w)s 2(orks)k
+6617(too,)s 7026(b)s 4(ut)k 7385(symbols)s 8230(based)s
+8829(on)s 220 fnt2 0 3262(@Gr)m 2(aphic)k 240 fnt1
+1044 3265(do)m 1337(not)s 1703(permit)s 2386(this)s 2782(mer)s 4(ging.)k
+480 2891(Second,)m 1292(Adobe)s 1987(font)s 2432(\207les)s 2881(specify)s
+3625(the)s 3973(correct)s 4694(position)s 5522(and)s 5926(thickness)s
+6867(of)s 7138(underlining)s 8294(for)s 8631(each)s 0 2603(font,)m
+501(and)s 914(the)s 220 fnt2 1272 2600(@Under)m -3(line)k
+240 fnt1 2496 2603(symbol)m 3266(follo)s 6(ws)k 4037(these)s
+4593(speci\207cations.)s 6068(The)s 6505(font)s 6960(used)s 7466(is)s
+7685(the)s 8043(font)s 8497(of)s 8778(the)s 0 2315(\207rst)m
+431(object)s 1075(underlined,)s 2205(if)s 2422(it)s 2614(is)s
+2824(a)s 2990(simple)s 3683(w)s 2(ord,)k 4280(or)s
+4539(else)s 4966(the)s 5314(font)s 5759(of)s 6030(the)s
+6378(enclosing)s 7348(paragraph.)s 480 1941(The)m 914(colour)s 1591(of)s
+1868(the)s 2223(underline)s 3188(is)s 3404(usually)s 4156(the)s
+4510(same)s 5063(as)s 5320(the)s 5674(colour)s 6351(of)s
+6629(the)s 6983(te)s 3(xt)k 7404(being)s 7996(underlined,)s
+0 1653(b)m 4(ut)k 362(this)s 758(can)s 1147(be)s
+1429(changed)s 2285(using)s 2857(the)s 220 fnt2 3205 1650(@SetUnder)m -3(lineColour)k
+240 fnt1 5402 1653(symbol)m 6162(\(Section)s 7015(3.9\).)s 240 fnt5
+0 860(3.52.)m 591(@P)s 2(ageLabel)k
+[ /Dest /LOUTpagelabel /DEST pdfmark
+
+[ /Dest /LOUT19_4637_pre_page_1 /DEST pdfmark
+240 fnt1 533 383(The)m
+220 fnt2 953 380(@P)m 8(ageLabel)k 240 fnt1 2255 383(symbol)m
+3007(associates)s 4005(a)s 4164(page)s 4664(label)s 5176(in)s
+5411(the)s 5751(PostScript)s 6786(output)s 7450(\207le)s 7804(with)s
+8278(the)s 8618(page)s 0 95(within)m 688(which)s 1350(\(or)s
+1708(just)s 2133(before)s 2819(which\))s 3552(the)s 3920(symbol)s
+4700(occurs,)s 5451(so)s 5737(that)s 6175(PostScript)s 7237(vie)s 6(wers)k
+8045(are)s 8412(able)s 8887(to)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 80 86
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(80)m 240 fnt6 7498 -1580(Chapter)m 8348(3.)s
+8622(Pr)s 8(ede\207ned)k 9717(symbols)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+0 13205(inde)m 3(x)k
+587(the)s 939(page)s 1450(by)s 1748(this)s 2148(label.)s
+2779(\(The)s 3290(label)s 3813(is)s 4026(printed)s 4765(in)s
+5011(the)s 220 fnt2 5363 13202(%%P)m 8(age)k 240 fnt1
+6313 13205(comment)m 7266(preceding)s 8266(the)s 8618(page)s 0 12917(in)m
+243(the)s 591(PostScript)s 1633(output)s 2305(\207le.\))s 2858(F)s 3(or)k
+3247(e)s 3(xample,)k 220 fnt2 480 12416(@P)m 8(ageLabel iv)k
+240 fnt1 0 11917(associates)m 1018(the)s 1379(label)s 220 fnt2
+1910 11914(iv)m 240 fnt1 2140 11917(with)m 2634(the)s 2995(page.)s
+3623(The)s 4064(label)s 4595(may)s 5074(be)s 5368(an)s
+5664(arbitrary)s 6551(object;)s 7260(if)s 7489(its)s 7778(v)s 6(alue)k
+8358(is)s 8581(not)s 8960(a)s 0 11629(simple)m 693(w)s 2(ord,)k
+1290(it)s 1482(will)s 1908(be)s 2190(replaced)s 3057(by)s
+220 fnt2 3351 11626(?)m 240 fnt1 3459 11629(.)m 220 fnt2
+480 11252(@P)m 8(ageLabel)k 240 fnt1 1799 11255(is)m 2019(unrelated)s
+2977(to)s 3226(Lout')s 13(s)k 3899(cross)s 4451(referencing)s
+5602(mechanism;)s 6813(it)s 7016(is)s 7236(for)s 7585(communicating)s
+0 10967(a)m 176(label)s 706(to)s 956(the)s 1315(PostScript)s
+2368(output)s 3051(\207le,)s 3474(not)s 3851(to)s 4101(other)s
+4662(parts)s 5188(of)s 5470(Lout.)s 6097(The)s 6536(result)s
+7137(of)s 220 fnt2 7419 10964(@P)m 8(ageLabel)k 240 fnt1
+8739 10967(is)m 8960(a)s 0 10679(null)m 427(object.)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1
+0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 81 87
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Helvetica
+%%+ font Symbol
+%%+ font Times-Italic
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+%%IncludeResource: font Symbol
+/fnt4 { /Symbol LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+gsave
+1417 -14865 translate
+0.0 0.0 0.0 LoutSetRGBColor
+9066 13448 0 13448 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+480 fnt5 0 12397(Chapter)m 1819(4.)s 2400(Examples)s
+[ /Dest /LOUTexamples /DEST pdfmark
+240 fnt1
+0 11446(This)m 503(chapter)s 1294(presents)s 2156(some)s 2744(e)s 3(xamples)k
+3723(tak)s 2(en)k 4324(from)s 4875(the)s 5251(v)s 6(arious)k
+6028(packages)s 6983(a)s 4(v)k 6(ailable)k 7919(with)s
+8429(Basser)s 0 11158(Lout.)m 661(The)s 1134(reader)s 1835(who)s
+2346(masters)s 3171(these)s 3763(e)s 3(xamples)k 4759(will)s
+5230(be)s 5557(well)s 6068(prepared)s 7007(to)s 7291(read)s
+7805(the)s 8198(packages)s 0 10870(themselv)m 3(es.)k 1223(The)s
+1650(e)s 3(xamples)k 2600(ha)s 4(v)k 3(e)k
+3100(not)s 3465(been)s 3973(simpli\207ed)s 4986(in)s 5229(an)s 3(y)k
+5625(w)s 2(ay)k 15(,)k 6113(since)s 6659(an)s
+6941(important)s 7929(part)s 8359(of)s 8629(their)s 0 10582(purpose)m
+814(is)s 1024(to)s 1263(sho)s 6(w)k 1817(Lout)s
+2329(in)s 2572(actual)s 3197(practice.)s 480 10208(Although)m 1486(all)s
+1823(these)s 2415(e)s 3(xamples)k 3410(ha)s 4(v)k 3(e)k
+3956(been)s 4509(tak)s 2(en)k 5127(from)s 5695(real)s
+6152(code,)s 6755(the)s 3(y)k 7263(do)s 7600(not)s
+8011(necessarily)s 0 9920(represent)m 935(the)s 1283(current)s 2019(state)s
+2512(of)s 2783(the)s 3131(Lout)s 3643(packages.)s 240 fnt5
+0 9127(4.1.)m 471(An)s 833(equation)s 1779(f)s 6(ormatting)k
+2930(package)s
+[ /Dest /LOUTeq /DEST pdfmark
+240 fnt1 480 8650(In)m 751(this)s 1162(section)s
+1911(we)s 2261(describe)s 3128(the)s 3491(design)s 4189(and)s
+4608(implementation)s 6180(of)s 6466(the)s 6829(Eq)s
+[ /Dest /LOUT19_4637_exa_equa_1 /DEST pdfmark
+7168(equation)s
+8065(formatting)s 0 8362(package.)m 976(Equation)s 1925(formatting)s 3014(mak)s 2(es)k
+3702(a)s 3896(natural)s 4642(\207rst)s 5101(e)s 3(xample,)k
+6043(partly)s 6682(because)s 7523(its)s 7828(requirements)s 0 8074(ha)m 4(v)k 3(e)k
+514(strongly)s 1366(in\210uenced)s 2435(the)s 2797(design)s 3493(of)s
+3778(Lout,)s 4351(and)s 4769(partly)s 5394(because)s 6221(no)s
+6528(cross)s 7084(references)s 8129(or)s 8402(g)s 1(alle)k 3(ys)k
+0 7786(are)m 347(required.)s 480 7412(T)m 19(o)k 777(the)s
+1121(author')s 13(s)k 1938(kno)s 6(wledge,)k 3086(Eq)s
+3406(is)s 3613(the)s 3957(\207rst)s 4384(equation)s 5261(formatter)s
+6204(to)s 6440(be)s 6718(implemented)s 8020(as)s 8266(a)s
+8428(collec-)s 0 7124(tion)m 430(of)s 702(high-)s 1196(le)s 6(v)k 3(el)k
+1707(de\207nitions.)s 2883(This)s 3360(approach)s 4295(has)s 4666(signi\207cant)s
+5724(adv)s 6(antages:)k 6948(the)s 7297(basics)s 7933(of)s
+8206(language)s 0 6836(and)m 426(layout)s 1106(are)s 1475(tri)s 6(vial,)k
+2167(so)s 2456(the)s 2826(implementor)s 4129(can)s 4540(concentrate)s
+5720(on)s 6039(\207ne-)s 6466(tuning;)s 7212(and)s 7638(the)s
+8009(de\207nitions,)s 0 6548(being)m 585(readily)s 1302(a)s 4(v)k 6(ailable,)k
+2261(can)s 2650(be)s 2932(impro)s 3(v)k 3(ed,)k
+3950(e)s 3(xtended,)k 4918(or)s 5177(e)s 6(v)k 3(en)k
+5677(replaced.)s 480 6174(As)m 809(described)s 1795(in)s 2050(the)s
+2411(User')s 13(s)k 3084(Guide)s 3737([)s
+[ /Rect [3808 6171 3914 6339] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTkingston1995lout_user /ANN pdfmark
+3808(5)s
+3914(],)s 4113(an)s 4408(equation)s 5301(is)s 5523(entered)s
+6297(in)s 6552(a)s 6730(format)s 7439(based)s 8054(on)s
+8363(the)s 8724(one)s 0 5886(introduced)m 1081(by)s 1375(the)s
+1723(eqn)s 2126(language)s 3046(of)s 3317(K)s 6(ernighan)k
+4378(and)s 4782(Cherry)s 5500([)s
+[ /Rect [5571 5883 5675 6048] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTkernighan1975eqn /ANN pdfmark
+5571(3)s 5675(]:)s
+
+[ /Dest /LOUT19_4637_exa_equa_2 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_exa_equa_3 /DEST pdfmark
+220 fnt2 480 5385(@Eq { { x sup 2 + y sup 2 } o)m 3(v)k 5(er 2 })k 240 fnt1
+0 4887(The)m 428(result)s 1018(is)s 168 fnt4 586 4482(2)m
+240 fnt6 480 4422(x)m 240 fnt4 738 4414(+)m 168 fnt4
+1041 4482(2)m 240 fnt6 939 4422(y)m 641 0 0 0 240 288 12 480 4324 LoutGr2
+0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke
+grestore
+
+grestore
+240 fnt4 743 4096(2)m
+240 fnt1 0 3585(In)m 256(outline,)s 1027(the)s 1375(de\207nition)s
+2349(of)s 2620(the)s 220 fnt2 2968 3582(@Eq)m 240 fnt1
+3506 3585(symbol)m 4266(is)s
+[ /Dest /LOUT19_4637_exa_equa_4 /DEST pdfmark
+220 fnt2 480 3088(e)m 6(xpor)k -8(t sup o)k 3(v)k 5(er "+" "2" "<=")k
+480 2800(def @Eq)m 480 2512( body @Body)m 480 2224({)m 480 1936( def sup precedence 60 left x r)m -3(ight y { ...)k 13( })k
+480 1648( def o)m 3(v)k 5(er precedence 54 left x r)k -3(ight y { ...)k 13( })k
+480 1360( def "2" { Base @F)m 6(ont "2" })k 480 1072( def "+" { {Symbol Base} @F)m 6(ont "+" })k 480 784( def "<=" { {Symbol Base} @F)m 6(ont "\\243" })k
+480 496( ...)m
+grestore
+gsave
+1417 -14865 translate
+0.0 0.0 0.0 LoutSetRGBColor 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+192 fnt5 0.0 0.0 0.0 LoutSetRGBColor 5859 -15421(81)m
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 82 88
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(82)m 240 fnt6 8434 -1580(Chapter)m 9284(4.)s
+9558(Examples)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+220 fnt2 480 13207( Slope @F)m 6(ont 1.2f @Break 0c @Space @Body)k
+480 12919(})m 240 fnt1 0 12425(A)m 259(body)s 822(parameter)s
+1865(is)s 2104(used)s 2630(to)s 2898(restrict)s 3649(the)s
+4026(visibility)s 4958(of)s 5258(the)s 5635(equation)s 6545(formatting)s
+7635(symbols)s 8514(\(there)s 0 12137(are)m 366(hundreds)s 1315(of)s
+1606(them\).)s 2347(The)s 2794(equation)s 3695(as)s 3965(a)s
+4151(whole)s 4811(is)s 5041(set)s 5386(in)s 5649(Slope)s
+6269(\(i.e.)s 6704(Italic\))s 7341(font,)s 7853(and)s 8277(symbols)s
+0 11849(such)m 515(as)s 220 fnt2 784 11846("2")m 240 fnt1
+1127 11849(and)m 220 fnt2 1550 11846("+")m 240 fnt1 1899 11849(are)m
+2265(de\207ned)s 3048(when)s 3643(other)s 4213(fonts)s 4762(are)s
+5128(needed.)s 5990(Precedences)s 7241(are)s 7608(used)s 8124(to)s
+8383(resolv)s 3(e)k 0 11561(ambiguities)m 1170(such)s 1670(as)s
+220 fnt2 1925 11558(a sup b o)m 3(v)k 5(er c)k 240 fnt1
+3291 11561(.)m 3459(Eq)s 3788(tak)s 2(es)k 4332(all)s
+4630(spacing)s 5418(decisions)s 6363(on)s 6665(itself,)s 7252(so)s
+7523(to)s 7766(pre)s 6(v)k 3(ent)k 8539(white)s
+0 11273(space)m 574(typed)s 1151(by)s 1432(the)s 1767(user)s
+2212(from)s 2723(interfering,)s 3824(the)s 4158(equation)s 5026(is)s
+5223(enclosed)s 6105(in)s 220 fnt2 6335 11270(0c @Space)m 240 fnt1
+7465 11273(.)m 7616(W)s 19(e)k 7972(will)s 8384(discuss)s
+0 10985(the)m 220 fnt2 348 10982(1.2f @Break)m 240 fnt1 1631 10985(later)m 13(.)k
+480 10611(Thus)m 1015(ha)s 4(v)k 3(e)k 1521(we)s
+1861(disposed)s 2762(of)s 3038(the)s 3391(language)s 4316(design)s
+5003(part)s 5439(of)s 5715(the)s 6068(equation)s 6954(formatting)s
+8020(problem;)s 8934(it)s 0 10323(remains)m 807(no)s 6(w)k
+1268(to)s 1507(de\207ne)s 2148(the)s 2496(twenty)s 3201(or)s
+3460(so)s 3726(symbols)s 4575(with)s 5057(parameters,)s 6211(and)s
+6615(get)s 6967(the)s 7315(layout)s 7973(right.)s 480 9949(Ev)m 3(ery)k
+1115(equation)s 2010(has)s 2393(an)s 240 fnt6 2690 9951(axis)m
+240 fnt1 3070 9949(:)m 3250(an)s 3546(imaginary)s 4583(horizontal)s
+5620(line)s 6048(through)s 6864(the)s 7225(centre)s 7878(of)s
+8163(v)s 6(ariables,)k 0 9661(through)m 795(the)s 1136(bar)s
+1494(of)s 1757(b)s 4(uilt-up)k 2556(fractions,)s 3491(and)s
+3888(so)s 4146(on.)s 4543(W)s 19(e)k 4905(can)s
+5287(satisfy)s 5956(this)s 6345(requirement)s 7552(by)s 7839(ensuring)s
+8708(that)s 0 9373(the)m 362(result)s 966(of)s 1251(each)s
+1761(symbol)s 2535(has)s 2919(a)s 3100(single)s 3741(ro)s 6(w)k
+4175(mark,)s 4788(on)s 5099(the)s 5461(axis.)s 6025(F)s 3(or)k
+6428(e)s 3(xample,)k 7356(the)s 7719(superscripting)s 0 9085(symbol)m
+760(is)s 970(de\207ned)s 1733(as)s 1983(follo)s 6(ws:)k
+
+[ /Dest /LOUT19_4637_exa_equa_5 /DEST pdfmark
+220 fnt2 480 8586(def sup)m 480 8298( precedence 60)m 480 8010( associativity left)m 480 7722( left x)m
+480 7434( named gap { @SupGap })m 480 7146( r)m -3(ight y)k 480 6858({)m 480 6570( @HContr)m 2(act @VContr)k 2(act {)k
+480 6282( | @Smaller y)m 480 5994( ^/gap x)m 480 5706( })m 480 5418(})m 240 fnt1
+0 4924(The)m 220 fnt2 430 4921(@VContr)m 2(act)k 240 fnt1
+1684 4924(and)m 220 fnt2 2091 4921(^/)m 240 fnt1 2320 4924(symbols)m
+3171(together)s 4017(ensure)s 4699(that)s 5119(the)s 5470(axis)s
+5908(of)s 6181(the)s 6532(result)s 7124(is)s 7336(the)s
+7687(axis)s 8125(of)s 8398(the)s 8749(left)s 0 4636(parameter)m 13(.)k
+1119(A)s 220 fnt2 1363 4633(gap)m 240 fnt1 1795 4636(parameter)m
+2823(has)s 3207(been)s 3730(pro)s 3(vided)k 4650(for)s
+5002(v)s 6(arying)k 5794(the)s 6156(height)s 6828(of)s
+7113(the)s 7475(superscript,)s 8644(with)s 0 4348(def)m 2(ault)k
+709(v)s 6(alue)k 220 fnt2 1265 4345(@SupGap)m 240 fnt1
+2393 4348(de\207ned)m 3144(else)s 6(where)k 4137(as)s 220 fnt2
+4375 4345(0.40fk)m 240 fnt1 4973 4348(.)m 5124(It)s 5317(is)s
+5515(important)s 6492(that)s 6898(such)s 7382(g)s 1(aps)k
+7859(be)s 8128(e)s 3(xpressed)k 0 4060(in)m 232(units)s
+736(that)s 1142(v)s 6(ary)k 1603(with)s 2073(the)s
+2410(font)s 2843(size,)s 3309(so)s 3563(that)s 3969(the)s 3(y)k
+4420(remain)s 5129(correct)s 5839(when)s 6403(the)s 6739(size)s
+7154(changes.)s 8077(Collecting)s 0 3772(the)m 351(def)s 2(ault)k
+1076(v)s 6(alues)k 1735(into)s 2164(symbols)s 3016(lik)s 2(e)k
+220 fnt2 3432 3769(@SupGap)m 240 fnt1 4515 3772(ensures)m 5287(consistenc)s 3(y)k
+6457(and)s 6865(assists)s 7529(when)s 8109(tuning)s 8778(the)s
+0 3484(v)m 6(alues.)k 769(Here)s 1289(is)s 1499(another)s
+2276(characteristic)s 3600(de\207nition:)s
+[ /Dest /LOUT19_4637_exa_equa_6 /DEST pdfmark
+220 fnt2 480 3034(def o)m 3(v)k 5(er)k
+480 2746( precedence 54)m 480 2458( associativity left)m 480 2170( left x)m 480 1882( named gap { 0.2f })m 480 1594( r)m -3(ight y)k
+480 1306({)m 480 1018( @HContr)m 2(act @VContr)k 2(act {)k 480 730( |0.5r)m -8(t @OneCol x)k
+480 442( ^//gap @HLine)m 480 154( //gap |0.5r)m -8(t @OneCol y)k
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 83 89
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+%%+ font Symbol
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+%%IncludeResource: font Symbol
+/fnt4 { /Symbol LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(4.1.)m 1871(An)s 2191(equation)s 3083(formatting)s
+4147(pac)s 4(ka)k 2(g)k 2(e)k 240 fnt5
+10250 -1583(83)m gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13267 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+220 fnt2 480 13210( })m 480 12922(})m
+240 fnt1 0 12428(Both)m 518(parameters)s 1611(are)s 1953(centred,)s
+2758(since)s 3299(we)s 3629(do)s 3917(not)s 4278(kno)s 6(w)k
+4853(which)s 5490(will)s 5911(be)s 6188(the)s 6530(wider;)s
+7181(we)s 7511(use)s 220 fnt2 7881 12425(@OneCol)m 240 fnt1
+8887 12428(to)m 0 12140(mak)m 2(e)k 570(sure)s 1021(that)s
+1437(the)s 1782(entire)s 2379(parameter)s 3390(is)s 3598(centred,)s
+4405(not)s 4769(just)s 5171(its)s 5445(\207rst)s 5873(column,)s
+6696(and)s 220 fnt2 7097 12137(@HContr)m 2(act)k 240 fnt1
+8358 12140(ensures)m 0 11852(that)m 428(the)s 787(fraction)s 1597(will)s
+2034(ne)s 6(v)k 3(er)k 2627(e)s 3(xpand)k
+3385(to)s 3635(\207ll)s 3966(all)s 4269(the)s 4628(a)s 4(v)k 6(ailable)k
+5547(space,)s 6196(as)s 6457(Lout)s 6980(objects)s 7719(ha)s 4(v)k 3(e)k
+8231(a)s 8408(natural)s 0 11564(tendenc)m 3(y)k 915(to)s
+1154(do)s 1447(\(Section)s 2300(2.6\).)s 220 fnt2 2843 11561(@HLine)m
+240 fnt1 3690 11564(is)m 3900(a)s 4066(horizontal)s 5090(line)s
+5504(of)s 5775(the)s 6123(width)s 6725(of)s 6996(the)s
+7344(column:)s
+[ /Dest /LOUT19_4637_exa_equa_7 /DEST pdfmark
+220 fnt2 480 11063(def @HLine)m 480 10775( named line { "0.05 ft setline)m 4(width" })k
+480 10487({ )m 480 10199( { "0 0 mo)m 3(v)k 5(eto xsiz)k 3(e 0 lineto" line "strok)k 4(e" } @Gr)k 2(aphic {})k
+480 9911(})m 240 fnt1 0 9417(Here)m 520(we)s 855(are)s
+1202(relying)s 1932(on)s 2229(the)s 2577(e)s 3(xpanding)k
+3625(tendenc)s 3(y)k 4540(just)s 4945(mentioned.)s 480 9043(The)m
+906(remaining)s 1925(symbols)s 2772(are)s 3116(quite)s 3647(similar)s
+4367(to)s 4603(these)s 5148(ones.)s 5748(W)s 19(e)k
+6114(conclude)s 7032(with)s 7511(a)s 7675(fe)s 6(w)k
+8078(\207ne)s 8490(points)s 0 8755(of)m 271(mathematical)s 1612(typesetting)s
+2714(mentioned)s 3782(by)s 4076(a)s 4242(leading)s 4999(authority)s 15(,)k
+5954(D.)s 6231(E.)s 6481(Knuth)s 7137([)s
+[ /Rect [7208 8752 7321 8919] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTknuth1984tex /ANN pdfmark
+7208(6)s
+7321(].)s
+[ /Dest /LOUT19_4637_exa_equa_8 /DEST pdfmark
+480 8381(Some)m 1090(symbols,)s 2004(such)s 2509(as)s
+240 fnt4 2768 8375(\243)m 240 fnt1 2963 8381(and)m 240 fnt4
+3376 8375(\271)m 240 fnt1 3505 8381(,)m 3621(should)s 4327(ha)s 4(v)k 3(e)k
+4837(a)s 5012(thick)s 5560(space)s 6156(on)s 6462(each)s
+6966(side;)s 7472(others,)s 8172(such)s 8677(as)s 240 fnt4
+8937 8375(+)m 240 fnt1 0 8093(and)m 240 fnt4 397 8087(-)m
+240 fnt1 525 8093(,)m 625(ha)s 4(v)k 3(e)k
+1119(a)s 1278(medium)s 2115(space;)s 2751(others)s 3379(ha)s 4(v)k 3(e)k
+3873(a)s 4032(thin)s 4454(space)s 5034(on)s 5324(the)s
+5665(right)s 6169(only)s 15(.)k 6737(This)s 7206(w)s 2(ould)k
+7854(be)s 8129(easy)s 8601(to)s 8833(do)s 0 7805(e)m 3(xcept)k
+681(that)s 1099(these)s 1646(spaces)s 2321(are)s 2668(not)s
+3034(w)s 2(anted)k 3781(in)s 4024(superscripts)s 5216(and)s
+5620(subscripts:)s 168 fnt6 578 7358(n)m 168 fnt4 680 7352(+)m
+793(1)s 240 fnt6 480 7260(r)m 240 fnt4 931 7252(-)m
+1131(1)s 240 fnt1 0 6801(In)m 271(ef)s 6(fect,)k
+929(the)s 1292(de\207nition)s 2281(of)s 2568(such)s 3079(symbols)s
+3943(changes)s 4780(depending)s 5846(on)s 6159(the)s 6522(conte)s 3(xt;)k
+7350(b)s 4(ut)k 7727(Lout)s 8254(does)s 8760(not)s
+0 6513(permit)m 682(such)s 1176(a)s 1340(change.)s 2180(Luckily)s 15(,)k
+3015(the)s 3361(so-called)s 4279(`style')s 4919(information)s 6102(set)s
+6426(by)s 6718(the)s 220 fnt2 7064 6510(@F)m 6(ont)k
+240 fnt1 7716 6513(,)m 220 fnt2 7821 6510(@Break)m 240 fnt1
+8617 6513(,)m 8722(and)s 220 fnt2 0 6222(@Space)m 240 fnt1
+891 6225(symbols)m 1734(can)s 2116(change)s 2844(in)s 3080(this)s
+3470(w)s 2(ay)k 15(.)k 4009(Accordingly)s 15(,)k
+5291(Eq)s 5608(uses)s 6065(the)s 220 fnt2 6406 6222(y)m
+240 fnt1 6568 6225(unit,)m 7040(which)s 7676(is)s 7879(part)s
+8304(of)s 8568(style,)s 0 5937(for)m 338(these)s 885(spaces:)s
+220 fnt2 480 5436(def @MedGap { 0.20y })m 480 4860(def "+" { &@MedGap plus &@MedGap })m 480 4284(def @HSqueez)m 3(e r)k -3(ight x { 0.2f @YUnit x })k
+240 fnt1 0 3785(In)m 261(the)s 615(equation)s 1502(as)s
+1758(a)s 1929(whole,)s 2627(the)s 2981(y)s 3161(unit)s
+3599(is)s 3814(initially)s 4616(set)s 4947(to)s 220 fnt2
+5192 3782(1f)m 240 fnt1 5372 3785(,)m 5484(and)s 5894(so)s
+220 fnt2 6166 3782(@MedGap)m 240 fnt1 7289 3785(ordinarily)m 8291(supplies)s
+0 3497(20%)m 495(of)s 777(this)s 1184(amount.)s 2077(But)s
+2494(superscripts)s 3697(and)s 4112(subscripts)s 5130(are)s 5488(enclosed)s
+6394(in)s 6648(the)s 220 fnt2 7007 3494(@HSqueez)m 3(e)k
+240 fnt1 8314 3497(symbol,)m 0 3209(which,)m 744(by)s 1091(changing)s
+2075(the)s 2476(y)s 2703(unit,)s 3235(ensures)s 4056(that)s
+4527(an)s 3(y)k 220 fnt2 4977 3206(@MedGap)m 240 fnt1
+6147 3209(within)m 6868(them)s 7459(is)s 7722(much)s 8364(smaller)s
+0 2921(than)m 469(usual.)s 240 fnt5 0 2178(4.2.)m 471(P)s 2(aragraphs,)k
+1780(displays,)s 2718(and)s 3159(lists)s
+[ /Dest /LOUTparas /DEST pdfmark
+240 fnt1 480 1701(The)m
+914(remaining)s 1942(sections)s 2770(of)s 3047(this)s 3449(chapter)s
+4219(are)s 4572(all)s 4871(based)s 5481(on)s 5784(V)s 26(ersion)k
+6578(2)s 6759(of)s 7036(the)s 7391(DocumentLayout)s 0 1413(package.)m
+941(V)s 26(ersion)k 1722(3,)s 1942(which)s 2577(is)s
+2779(similar)s 3494(b)s 4(ut)k 3849(more)s 4389(elaborate,)s
+5364(is)s 5566(described)s 6533(from)s 7050(the)s 7391(user')s 13(s)k
+7991(perspecti)s 6(v)k 3(e)k 0 1125(in)m 250(the)s
+
+[ /Dest /LOUT19_4637_exa_para_1 /DEST pdfmark
+606(User')s 13(s)k 1275(Guide)s 1924([)s
+[ /Rect [1995 1122 2101 1290] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUTkingston1995lout_user /ANN pdfmark
+1995(5)s
+2101(].)s 2352(In)s 2616(26)s 2917(pages)s 3520(of)s
+3799(Lout,)s 4366(the)s 4722(DocumentLaytout)s 6531(package)s 7379(de\207nes)s
+8116(man)s 3(y)k 8707(fea-)s 0 837(tures)m 505(required)s
+1348(in)s 1581(the)s 1918(formatting)s 2968(of)s 3229(simple)s
+3911(documents,)s 5045(technical)s 5951(reports,)s 6710(and)s 7104(books,)s
+7773(including)s 8719(dis-)s 0 549(plays,)m 603(lists,)s 1085(page)s
+1584(layout,)s 2280(cross)s 2813(references,)s 3891(tables)s 4490(of)s
+4752(contents,)s 5647(footnotes,)s 6635(\207gures,)s 7384(tables,)s 8039(references,)s
+0 261(chapters,)m 903(sections,)s 1780(and)s 2184(sorted)s 2826(inde)s 3(x)k 3(es.)k
+
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 84 90
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(84)m 240 fnt6 8434 -1580(Chapter)m 9284(4.)s
+9558(Examples)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+480 13205(The)m 939(symbols)s 1819(used)s
+2347(for)s 2716(separating)s 3782(paragraphs)s 4913(and)s 5348(producing)s
+6403(displays)s 7269(and)s
+[ /Dest /LOUT19_4637_exa_para_2 /DEST pdfmark
+7704(lists)s 8170(may)s 8667(lack)s
+0 12917(the)m 351(e)s 3(xcitement)k 1459(of)s 1733(more)s
+2284(e)s 3(xotic)k 2921(features,)s 3786(b)s 4(ut)k
+4152(the)s 3(y)k 4618(can)s 5010(teach)s 5574(some)s
+6139(important)s 7131(lessons)s 7876(about)s 8472(rob)s 4(ust)k
+0 12629(design.)m 786(The)s 1211(follo)s 6(wing)k 2185(macro)s
+2832(for)s 3167(separating)s 4199(paragraphs)s 5296(produces)s 6207(a)s
+6370(0.3)s 6711(cm)s 7060(v)s 3(ertical)k 7824(space)s
+8408(and)s 8809(a)s 8971(1)s 0 12341(cm)m 352(indent)s
+1010(on)s 1307(the)s 1655(follo)s 6(wing)k 2632(line,)s
+3097(and)s 3501(is)s 3711(clearly)s 4414(on)s 4711(the)s
+5059(right)s 5570(track:)s 220 fnt2 480 11840(macro @PP { //0.3c &1c })m 240 fnt1
+0 11346(Ne)m 6(v)k 3(ertheless)k 1276(it)s 1468(has)s
+1838(se)s 6(v)k 3(eral)k 2560(major)s 3177(problems.)s
+480 10972(The)m 220 fnt2 926 10969(&)m 240 fnt1 1147 10972(symbol)m
+1926(is)s 2154(subject)s 2910(to)s 3168(widening)s 4130(during)s
+4827(line)s 5260(adjustment,)s 6434(so)s 6719(it)s 6930(should)s
+7645(be)s 7946(replaced)s 8832(by)s 220 fnt2 0 10681(1c @Wide {})m
+240 fnt1 1213 10684(.)m 1387(But)s 1804(then)s 2284(white)s
+2882(space)s 3480(follo)s 6(wing)k 4468(the)s 4827(symbol)s
+5597(will)s 6034(af)s 6(fect)k 6641(the)s 7000(result,)s
+7648(so)s 7925(an)s 8219(e)s 3(xtra)k 220 fnt2
+8764 10681(&0i)m 240 fnt1 0 10396(must)m 528(be)s 814(added.)s
+1553(If)s 1787(the)s 2138(document)s 3146(is)s 3359(printed)s
+4098(double)s 4810(spaced,)s 5571(this)s 5971(paragraph)s 6987(g)s 1(ap)k
+7389(will)s 7818(f)s 2(ail)k 8192(to)s 8435(widen:)s
+0 10108(it)m 204(should)s 914(be)s 1208(e)s 3(xpressed)k
+2219(in)s 2475(terms)s 3068(of)s 3352(the)s 220 fnt2
+3712 10105(v)m 240 fnt1 3894 10108(unit,)m 4386(with)s 4880(mark-to-mark)s
+6280(spacing)s 7076(mode.)s 7785(Similarly)s 15(,)k 8778(the)s
+0 9820(paragraph)m 1013(indent)s 1671(should)s 2368(probably)s 3273(be)s
+3555(made)s 4129(proportional)s 5366(to)s 5605(the)s 5953(font)s
+6398(size.)s 480 9446(`Magic)m 1211(numbers')s 2135(lik)s 2(e)k
+220 fnt2 2535 9443(0.3c)m 240 fnt1 2993 9446(should)m 3678(not)s
+4032(be)s 4302(b)s 4(uried)k 4955(in)s 5186(de\207nitions)s
+6235(where)s 6863(the)s 3(y)k 7314(cannot)s 8000(be)s
+8270(changed)s 0 9158(easily)m 15(,)k 649(or)s 908(k)s 2(ept)k
+1378(consistent)s 2394(with)s 2876(similar)s 3598(de\207nitions)s 4659(during)s
+5337(tuning.)s 6113(The)s 3(y)k 6656(are)s 7003(much)s
+7592(better)s 8195(placed)s 8876(as)s 0 8870(symbols,)m 905(possibly)s
+1757(parameters)s 2855(of)s 3126(the)s 3474(enclosing)s 4444(package:)s
+220 fnt2 480 8369(def @DocumentLa)m 6(y)k 4(out)k
+[ /Dest /LOUT19_4637_exa_para_3 /DEST pdfmark
+480 8081( named @P)m 8(ar)k 2(aGap { 1.3vx })k
+480 7793( named @P)m 8(ar)k 2(aIndent { 2f })k 480 7505( ...)m 480 7217(@Begin)m
+480 6641( macro @PP { //@P)m 8(ar)k 2(aGap @P)k 8(ar)k 2(aIndent @Wide &0i })k
+480 6353( macro @LP { //@P)m 8(ar)k 2(aGap })k 480 6065( ...)m 480 5777(@End @DocumentLa)m 6(y)k 4(out)k
+240 fnt1 0 5279(and)m 404(we)s 739(ha)s 4(v)k 3(e)k
+1240(arri)s 6(v)k 3(ed)k 1965(at)s 2197(the)s
+2545(de\207nition)s 3519(of)s 220 fnt2 3790 5276(@PP)m 240 fnt1
+4356 5279(as)m 4606(it)s 4798(appears)s 5579(in)s 5822(the)s
+6170(DocumentLayout)s 7905(package.)s 480 4905(A)m 710(display)s 1455(is)s
+1665(a)s 1831(table)s 2351(in)s 2594(which)s 3236(the)s
+3584(\207rst)s 4015(column)s 4790(is)s 5000(blank:)s
+[ /Dest /LOUT19_4637_exa_para_4 /DEST pdfmark
+240 fnt6
+480 4402(pr)m 8(eceding)k 1483(te)s 4(xt)k 220 fnt2
+480 4109(//@DispGap |@DispIndent)m 240 fnt6 3183 4114(display)m 220 fnt2 480 3821(//@DispGap)m
+240 fnt6 480 3538(following)m 1438(te)s 4(xt)k 240 fnt1
+0 3037(Edge-to-edge)m 1345(is)s 1557(the)s 1906(appropriate)s 3052(spacing)s
+3838(mode)s 4427(before)s 5095(and)s 5500(after)s 5998(displays,)s
+6891(since)s 7439(the)s 7789(display)s 8536(could)s 0 2749(be)m
+273(a)s 430(table)s 941(or)s 1191(\207gure)s 1796(whose)s
+2455(mark)s 2998(does)s 3479(not)s 3836(correspond)s 4948(to)s
+5178(a)s 5335(baseline.)s 6273(Thus,)s 220 fnt2 6850 2746(1v)m
+240 fnt1 7132 2749(is)m 7333(a)s 7490(reasonable)s 8558(v)s 6(alue)k
+0 2461(for)m 220 fnt2 338 2458(@DispGap)m 240 fnt1 1406 2461(.)m
+480 2087(The)m 957(ordinary)s 1871(user)s 2379(cannot)s 3126(be)s
+3458(e)s 3(xpected)k 4413(to)s 4702(type)s 5219(the)s
+5617(Lout)s 6179(source)s 6908(sho)s 6(wn)k 7635(abo)s 3(v)k 3(e;)k
+8363(a)s 8579(more)s 0 1799(appropriate)m 1144(syntax)s 1824(is)s
+
+[ /Dest /LOUT19_4637_exa_para_5 /DEST pdfmark
+240 fnt6 480 1296(pr)m 8(eceding)k 1483(te)s 4(xt)k
+220 fnt2 480 1003(@IndentedDispla)m 6(y {)k 240 fnt6 2514 1008(display)m
+220 fnt2 3321 1003(})m 240 fnt6 480 720(following)m 1438(te)s 4(xt)k
+240 fnt1 0 219(This)m 491(presents)s 1340(a)s 1521(problem:)s
+2499(if)s 220 fnt2 2731 216(@IndentedDispla)m 6(y)k 240 fnt1
+4593 219(is)m 4819(made)s 5408(a)s 5589(de\207nition)s 6578(with)s
+7075(a)s 7256(right)s 7782(parameter)s 9(,)k 8850(its)s
+
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 85 91
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(4.2.)m 1871(P)s 19(ar)k 3(a)k 2(gr)k 3(aphs,)k
+3082(displays,)s 3959(and)s 4385(lists)s 240 fnt5 10250 -1583(85)m
+gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+0 13205(result)m 598(will)s 1032(be)s 1322(an)s
+1613(object)s 2265(separated)s 3233(from)s 3765(the)s 4121(surrounding)s
+5339(te)s 3(xt)k 5762(only)s 6250(by)s 6552(white)s
+7147(space,)s 7793(hence)s 8415(part)s 8855(of)s 0 12917(the)m
+343(paragraph;)s 1405(while)s 1986(if)s 2197(it)s 2383(is)s
+2587(a)s 2747(macro,)s 3445(the)s 3787(\207nal)s 220 fnt2
+4261 12914(//@DispGap)m 240 fnt1 5505 12917(cannot)m 6197(be)s 6473(included)s
+7349(in)s 7586(it.)s 7876(The)s 8298(solution)s 0 12629(adopted)m
+816(in)s 1059(the)s 1407(DocumentLayout)s 3142(package)s 3982(uses)s
+4445(a)s 4611(g)s 1(alle)k 3(y)k 5245(and)s
+5649(a)s 5815(macro:)s 220 fnt2 480 12128( def @DispPlace { @Galle)m 4(y })k
+480 11840( def @Disp into { @DispPlace&&preceding })m 480 11552( r)m -3(ight x)k 480 11264( {)m 480 10976( @OneRo)m 3(w x)k
+480 10688( })m 480 10112( macro @IndentedDispla)m 6(y)k 480 9824( {)m 480 9536( //@DispGap |@DispIndent @DispPlace |)m
+480 9248( //@DispGap // @Disp)m 480 8960( })m 0 8463(@DispPlace)m 240 fnt1 1257 8466(and)m
+220 fnt2 1657 8463(@Disp)m 240 fnt1 2366 8466(are)m 2709(not)s
+3070(e)s 3(xported,)k 4007(so)s 4269(there)s 4798(is)s
+5003(no)s 5292(danger)s 5999(of)s 6266(a)s 6427(name)s
+6997(clash)s 7541(with)s 8019(some)s 8575(other)s 0 8178(symbol.)m
+869(The)s 1297(ordinary)s 2161(user')s 13(s)k 2769(syntax)s
+3449(e)s 3(xpands)k 4282(to)s 240 fnt6 480 7675(pr)m 8(eceding)k
+1483(te)s 4(xt)k 220 fnt2 480 7382(//@DispGap |@DispIndent @DispPlace |)m 480 7094(//@DispGap // @Disp {)m
+240 fnt6 2890 7099(display)m 220 fnt2 3637 7094(})m 240 fnt6
+480 6811(following)m 1438(te)s 4(xt)k 240 fnt1 0 6310(and)m
+397(the)s 220 fnt2 737 6307(@Disp)m 240 fnt1 1442 6310(g)m 1(alle)k 3(y)k
+2068(appears)s 2842(at)s 3066(the)s 3406(preceding)s 220 fnt2
+4394 6307(@DispPlace)m 240 fnt1 5595 6310(,)m 5694(being)s 6272(itself)s
+6812(replaced)s 7671(by)s 220 fnt2 7957 6307(@Null)m 240 fnt1
+8542 6310(.)m 8698(The)s 220 fnt2 0 6019(//)m 240 fnt1
+184 6022(symbol)m 942(protects)s 1748(the)s 2094(preceding)s 220 fnt2
+3088 6019(//@DispGap)m 240 fnt1 4337 6022(from)m 4859(being)s 5443(deleted)s
+6189(by)s 6481(this)s 220 fnt2 6876 6019(@Null)m 240 fnt1
+7519 6022(when)m 8094(there)s 8625(is)s 8833(no)s 0 5734(follo)m 6(wing)k
+977(te)s 3(xt.)k 480 5360(An)m 858(automatically)s 2240(numbered)s
+3283(list)s
+[ /Dest /LOUT19_4637_exa_para_6 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_exa_para_7 /DEST pdfmark
+3662(could)s 4280(ha)s 4(v)k 3(e)k
+4809(an)s 5121(arbitrarily)s 6156(lar)s 4(ge)k 6713(number)s
+7532(of)s 7831(items,)s 8483(so,)s 8832(by)s 0 5072(analogy)m
+812(with)s 1294(sequences)s 2315(of)s 2586(pages,)s 3238(we)s
+3573(see)s 3934(immmediately)s 5368(that)s 5786(recursion)s 6732(must)s
+7257(be)s 7539(in)s 9(v)k 4(olv)k 3(ed:)k
+220 fnt2 480 4571(def @List r)m -3(ight n)k 2(um)k 480 4283({)m
+480 3995( @DispIndent @Wide n)m 2(um.)k 13( | @ItemPlace)k 480 3707( //@DispGap @List @Ne)m 6(xt n)k 2(um)k
+480 3419(})m 240 fnt1 0 2925(Notice)m 689(ho)s 6(w)k
+1146(the)s 220 fnt2 1490 2922(@Ne)m 6(xt)k 240 fnt1
+2210 2925(symbol)m 2965(w)s 2(orks)k 3595(in)s 3834(conjunction)s
+5017(with)s 5495(the)s 5838(recursion)s 6780(to)s 7015(produce)s
+7838(an)s 8116(ascending)s 0 2637(sequence)m 933(of)s 1204(numbers;)s
+2140(the)s 2488(result)s 3078(of)s 220 fnt2 3349 2634(@List 1)m
+240 fnt1 4113 2637(will)m 4539(be)s 220 fnt2 480 2136(1.)m 13( @ItemPlace)k
+480 1848(2.)m 13( @ItemPlace)k 480 1560(3.)m 13( @ItemPlace)k 480 1272(...)m
+240 fnt1 0 821(W)m 19(e)k 362(can)s 744(follo)s 6(w)k
+1408(this)s 1797(with)s 2271(items)s 2832(which)s 3466(are)s
+3806(g)s 1(alle)k 3(ys)k 4522(tar)s 4(geted)k
+5338(to)s 220 fnt2 5569 818(@ItemPlace&&preceding)m 240 fnt1 8010 821(,)m
+8110(and)s 220 fnt2 8506 818(@List)m 240 fnt1 0 533(will)m
+426(e)s 3(xpand)k 1173(just)s 1578(enough)s 2341(to)s
+2580(accommodate)s 3964(them.)s 480 159(The)m 908(usual)s 1468(problem)s
+2325(with)s 2806(recursi)s 6(v)k 3(e-)k 3740(recepti)s 6(v)k 3(e)k
+4662(symbols)s 5511(no)s 6(w)k 5972(arises:)s 6680(there)s
+7213(is)s 7423(al)s 2(w)k 2(ays)k 8134(one)s
+8535(une)s 3(x-)k
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 86 92
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(86)m 240 fnt6 8434 -1580(Chapter)m 9284(4.)s
+9558(Examples)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+0 13205(panded)m 220 fnt2 753 13202(@List)m
+240 fnt1 1313 13205(,)m 1424(and)s 1832(until)s 2329(it)s
+2525(can)s 2917(be)s 3203(remo)s 3(v)k 3(ed)k
+4096(the)s 4448(g)s 1(alle)k 3(y)k 5086(containing)s
+6152(it)s 6348(will)s 6778(appear)s 7479(to)s 7722(be)s
+8008(incomplete)s 0 12917(and)m 394(will)s 810(be)s 1081(pre)s 6(v)k 3(ented)k
+2063(at)s 2285(that)s 2692(point)s 3234(from)s 3747(\210ushing)s
+4562(into)s 4977(its)s 5242(parent)s 5889(\(see)s 6318(page)s
+6816(30\).)s 7289(W)s 19(e)k 7647(adopt)s 8229(the)s
+8566(usual)s 0 12629(solution:)m 937(a)s 1104(forcing)s 1847(g)s 1(alle)k 3(y)k
+2482(into)s 2908(a)s 3074(later)s 3558(tar)s 4(get)k
+4158(will)s 4584(replace)s 5330(the)s 5679(last)s 220 fnt2
+6070 12626(@List)m 240 fnt1 6691 12629(by)m 220 fnt2 6986 12626(@Null)m
+240 fnt1 7571 12629(.)m 7735(This)s 8212(brings)s 8862(us)s
+0 12341(to)m 239(the)s 587(de\207nitions)s 1648(as)s 1898(the)s 3(y)k
+2361(appear)s 3058(in)s 3301(DocumentLayout:)s
+[ /Dest /LOUT19_4637_exa_para_8 /DEST pdfmark
+220 fnt2 480 11840(def @ItemPlace { @Galle)m 4(y })k
+480 11552(def @ListItem into { @ItemPlace&&preceding })m 480 11264( r)m -3(ight x)k 480 10976({ x })m
+[ /Dest /LOUT16_1794_exa_para_1 /DEST pdfmark
+480 10484(def @EndListPlace { @Galle)m 4(y })k
+480 10196(def @EndList f)m 6(orce into { @EndListPlace&&preceding })k 480 9908({})m
+[ /Dest /LOUT16_1794_exa_para_2 /DEST pdfmark
+480 9416(def @Ra)m 4(wIndentedList)k
+480 9128( named style r)m -3(ight tag {})k 480 8840( named indent { @DispIndent })m 480 8552( named gap { @DispGap })m 480 8264( named star)m -8(t { 1 })k
+480 7976({)m 480 7688( def @IList r)m -3(ight n)k 2(um)k 480 7400( {)m
+480 7112( indent @Wide {style n)m 2(um} | @ItemPlace)k 480 6824( //gap @IList @Ne)m 6(xt n)k 2(um)k
+480 6536( })m 480 5960( @IList star)m -8(t // @EndListPlace)k 480 5672(})m
+[ /Dest /LOUT16_1794_exa_para_3 /DEST pdfmark
+240 fnt1
+0 5178(No)m 6(w)k 514(gi)s 6(v)k 3(en)k
+1094(the)s 1442(input)s 220 fnt2 480 4677(@Ra)m 4(wIndentedList)k
+480 4389(@ListItem { \207rst item })m 480 4101(@ListItem { second item })m 480 3813(...)m 480 3525(@ListItem { last item })m 480 3237(@EndList)m
+0 2779(@Ra)m 4(wIndentedList)k 240 fnt1 1908 2782(will)m 2334(e)s 3(xpand)k
+3081(to)s 3320(recei)s 6(v)k 3(e)k 4056(the)s
+4404(items,)s 5028(and)s 5432(will)s 5858(be)s 6140(closed)s
+6809(of)s 6(f)k 7153(by)s 220 fnt2 7447 2779(@EndList)m
+240 fnt1 8397 2782(.)m 480 2408(The)m 220 fnt2 913 2405(indent)m
+240 fnt1 1506 2408(,)m 220 fnt2 1619 2405(gap)m 240 fnt1
+1977 2408(,)m 2089(and)s 220 fnt2 2499 2405(star)m -8(t)k
+240 fnt1 2996 2408(parameters)m 4099(are)s 4452(straightforw)s 2(ard)k
+5986(\(note)s 6538(that)s 6962(the)s 7316(b)s 4(urden)k
+8039(of)s 8316(typing)s 220 fnt2 8987 2405(1)m 240 fnt1
+0 2120(has)m 378(been)s 895(lifted)s 1464(from)s 1996(the)s
+2352(ordinary)s 3224(user\),)s 3816(b)s 4(ut)k 4186(the)s
+220 fnt2 4543 2117(style)m 240 fnt1 5054 2120(parameter)m 6076(has)s
+6454(a)s 6628(parameter)s 7650(of)s 7929(its)s 8213(o)s 6(wn)k
+8686(\(see)s 0 1832(page)m 508(17\).)s 991(It)s 1196(is)s
+1406(used)s 1903(lik)s 2(e)k 2315(this:)s 220 fnt2
+480 1331(def @Ra)m 4(wNumberedList { @Ra)k 4(wIndentedList style { tag.)k 13( } })k 480 1043(def @Ra)m 4(wP)k 8(arenNumberedList { @Ra)k 4(wIndentedList style { \(tag\) } })k
+240 fnt1 0 544(In)m 220 fnt2 276 541(@Ra)m 4(wNumberedList)k
+240 fnt1 2294 544(,)m 220 fnt2 2422 541(style)m 240 fnt1
+2946 544(is)m 3176(gi)s 6(v)k 3(en)k 3777(the)s
+4146(v)s 6(alue)k 220 fnt2 4734 541(tag.)m 240 fnt1
+5081 544(,)m 5209(where)s 220 fnt2 5870 541(tag)m 240 fnt1
+6243 544(is)m 6474(its)s 6771(o)s 6(wn)k 7255(right)s
+7787(parameter)s 9(,)k 8860(so)s 0 256(the)m 348(v)s 6(alue)k
+916(of)s 220 fnt2 1187 253({style n)m 2(um})k 240 fnt1
+2321 256(within)m 220 fnt2 2989 253(@IList)m 240 fnt1 3670 256(is)m
+220 fnt2 3880 253(n)m 2(um.)k 240 fnt1 4347 256(;)m
+4459(while)s 5046(in)s 220 fnt2 5289 253(@Ra)m 4(wP)k 8(arenNumberedList)k
+240 fnt1 7884 256(,)m 220 fnt2 7992 253({style n)m 2(um})k
+
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 87 93
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(4.2.)m 1871(P)s 19(ar)k 3(a)k 2(gr)k 3(aphs,)k
+3082(displays,)s 3959(and)s 4385(lists)s 240 fnt5 10248 -1583(87)m
+gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+0 13205(is)m 220 fnt2 219 13202(\(n)m 2(um\))k
+240 fnt1 776 13205(.)m 949(In)s 1215(this)s 1620(w)s 2(ay)k
+2080(we)s 2425(achie)s 6(v)k 3(e)k 3211(an)s
+3503(unlimited)s 4487(v)s 6(ariety)k 5207(of)s 5487(numbering)s
+6587(formats)s 7376(without)s 8176(ha)s 4(ving)k 8887(to)s
+0 12917(re)m 6(write)k 220 fnt2 725 12914(@Ra)m 4(wIndentedList)k
+240 fnt1 2633 12917(o)m 3(v)k 3(er)k 3112(and)s
+3516(o)s 3(v)k 3(er)k 13(.)k 480 12543(These)m
+1113(list)s 1470(symbols)s 2325(are)s 2678(objects)s 3412(without)s
+4209(surrounding)s 5425(space,)s 6069(so)s 6341(macros)s 7088(similar)s
+7816(to)s 8061(those)s 8629(used)s 0 12255(for)m 338(displays)s
+1173(are)s 1520(needed:)s 220 fnt2 480 11754(macro @NumberedList { //@DispGap @Ra)m 4(wNumberedList //@DispGap })k
+480 11466(macro @P)m 8(arenNumberedList { //@DispGap @Ra)k 4(wP)k 8(arenNumberedList //@DispGap })k 240 fnt1
+0 10970(and)m 404(so)s 670(on.)s 480 10596(Lists)m 994(numbered)s
+2007(by)s 2300(Roman)s 3047(numerals)s
+[ /Dest /LOUT19_4637_exa_para_9 /DEST pdfmark
+3973(present)s 4721(a)s
+4886(problem,)s 5788(because)s 220 fnt2 6600 10593(@Ne)m 6(xt)k
+240 fnt1 7322 10596(will)m 7747(not)s 8111(increment)s 0 10308(Roman)m
+749(numerals.)s 1789(Instead,)s 2586(the)s 3(y)k 3049(must)s
+3574(be)s 3856(stored)s 4498(in)s 4741(a)s 4907(database:)s
+220 fnt2 480 9807(def @Roman)m 480 9519( left @T)m 26(ag)k 480 9231( r)m -3(ight @V)k 15(al)k
+480 8943({ @V)m 15(al })k 480 8367(@SysDatabase @Roman { standard })m 0 7866(@SysDatabase)m 240 fnt1
+1602 7869(is)m 1835(preferred)s 2790(o)s 3(v)k 3(er)k
+220 fnt2 3292 7866(@Database)m 240 fnt1 4529 7869(here)m 5019(because)s
+5855(this)s 6274(database)s 7176(should)s 7896(be)s 8201(k)s 2(ept)k
+8694(in)s 8960(a)s 0 7581(standard)m 880(place)s 1452(and)s
+1868(shared)s 2562(by)s 2868(e)s 6(v)k 3(eryone.)k
+3912(The)s 4352(database)s 5243(itself,)s 5838(a)s 6016(\207le)s
+6389(called)s 220 fnt2 7029 7578(standard.ld)m 240 fnt1 8174 7581(in)m
+8429(Basser)s 0 7293(Lout,)m 559(contains)s 1407(in)s 9(v)k 4(ocations)k
+2548(of)s 220 fnt2 2819 7290(@Roman)m 240 fnt1 3735 7293(,)m
+3842(each)s 4337(enclosed)s 5232(in)s 5475(braces:)s 220 fnt2
+480 6811({ 1 @Roman i })m 480 6523({ 2 @Roman ii })m 480 6235(...)m 480 5947({ 100 @Roman c })m 240 fnt1
+0 5453(Then)m 220 fnt2 549 5450(@Roman&&12)m 240 fnt1 2065 5453(for)m
+2403(e)s 3(xample)k 3266(has)s 3636(v)s 6(alue)k
+4204(xii,)s 4563(and)s 220 fnt2 480 4952(def @Ra)m 4(wRomanList { @Ra)k 4(wIndentedList style { {@Roman&&tag}.)k 13( } })k
+240 fnt1 0 4453(produces)m 922(a)s 1096(list)s 1454(numbered)s
+2477(by)s 2779(Roman)s 3535(numerals.)s 4583(The)s 5019(counting)s
+5917(still)s 6337(proceeds)s 7246(in)s 7496(Arabic,)s 8261(b)s 4(ut)k
+8631(each)s 0 4165(Arabic)m 719(numeral)s 1573(is)s 1799(con)s 9(v)k 3(erted)k
+2804(to)s 3059(Roman)s 3824(by)s 4134(the)s 4498(cross)s
+5056(reference.)s 6123(Since)s 6726(arbitrary)s 7617(objects)s 8361(may)s
+8844(be)s 0 3877(stored)m 642(in)s 885(databases,)s 1908(arbitrary)s
+2783(\207nite)s 3330(sequences)s 4351(of)s 4622(objects)s 5350(may)s
+5816(be)s 6098(`counted')s 7047(in)s 7290(this)s 7686(w)s 2(ay)k 15(.)k
+240 fnt5 0 3085(4.3.)m 471(P)s 2(age)k 1017(lay)s 6(out)k
+
+[ /Dest /LOUTpagelayout /DEST pdfmark
+240 fnt1 480 2608(The)m 921(page)s 1443(layout)s
+[ /Dest /LOUT19_4637_exa_page_1 /DEST pdfmark
+
+[ /Dest /LOUT19_4637_exa_page_2 /DEST pdfmark
+2115(de\207nitions)s
+3190(gi)s 6(v)k 3(en)k 3783(in)s 4040(Section)s
+4828(1.2,)s 5249(although)s 6158(correct,)s 6940(are)s 7301(v)s 3(ery)k
+7791(basic.)s 8460(In)s 8730(this)s 0 2320(section)m 726(we)s
+1053(present)s 1795(the)s 2135(de\207nitions)s 3187(used)s 3676(by)s
+3962(the)s 4302(DocumentLayout)s 6029(package)s 6860(for)s 7190(laying)s
+7833(out)s 8191(the)s 8530(pages)s 0 2032(of)m 271(books,)s
+950(including)s 1906(running)s 2704(page)s 3211(headers)s 3991(and)s
+4394(footers,)s 5164(dif)s 6(ferent)k 6038(formats)s 6817(for)s
+7155(odd)s 7572(and)s 7975(e)s 6(v)k 3(en)k
+8474(pages,)s 0 1744(and)m 404(so)s 670(on.)s 1074(The)s
+1502(present)s 2252(document)s 3256(is)s 3466(produced)s 4415(with)s
+4897(these)s 5444(de\207nitions.)s 480 1370(W)m 19(e)k 846(be)s 3(gin)k
+1429(with)s 1908(a)s 2071(fe)s 6(w)k 2474(de\207nitions)s
+3531(which)s 4170(permit)s 4850(the)s 5195(user)s 5650(to)s
+5885(create)s 6507(cross)s 7046(references)s 8074(of)s 8342(the)s
+8686(`see)s 0 1082(page)m 509(27')s 863(v)s 6(ariety)k
+1576(which)s 2220(will)s 2647(be)s 2931(k)s 2(ept)k
+3403(up)s 3698(to)s 3938(date)s 4394(automatically)s 15(.)k
+5845(The)s 6275(user)s 6734(marks)s 7371(the)s 7721(tar)s 4(get)k
+8322(page)s 8832(by)s 0 794(placing)m 220 fnt2 756 791(@P)m 8(ageMar)k -3(k intro)k
+240 fnt1 2454 794(,)m 2560(for)s 2897(e)s 3(xample,)k
+3810(at)s 4041(the)s 4388(point)s 4939(of)s 5209(interest,)s
+6017(and)s 6420(refers)s 7012(to)s 7250(the)s 7597(mark)s 2(ed)k
+8369(page)s 8876(as)s 220 fnt2 0 503(@P)m 8(ageOf intro)k
+240 fnt1 1499 506(else)m 6(where:)k
+[ /Dest /LOUT19_4637_exa_page_3 /DEST pdfmark
+
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 88 94
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(88)m 240 fnt6 8434 -1580(Chapter)m 9284(4.)s
+9558(Examples)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+220 fnt2 480 13207(e)m 6(xpor)k -8(t @T)k 26(ag)k
+480 12919(def @P)m 8(ageMar)k -3(k)k 4(er r)k -3(ight @T)k 26(ag { @Null })k
+
+[ /Dest /LOUT16_1794_exa_page_1 /DEST pdfmark
+480 12422(def @P)m 8(ageMar)k -3(k r)k -3(ight x)k 480 12134({)m
+480 11846( @P)m 8(ageMar)k -3(k)k 4(er&&preceding @T)k 26(agged x)k
+480 11558(})m
+[ /Dest /LOUT16_1794_exa_page_2 /DEST pdfmark
+480 11066(def @P)m 8(ageOf r)k -3(ight x)k 480 10778({)m
+480 10490( @P)m 8(ageMar)k -3(k)k 4(er&&x @Open { @T)k 26(ag })k
+480 10202(})m
+[ /Dest /LOUT16_1794_exa_page_3 /DEST pdfmark
+240 fnt1 0 9708(W)m 19(e)k 385(will)s
+828(see)s 1206(belo)s 6(w)k 1856(that)s 2291(an)s
+2591(in)s 9(v)k 4(ocation)k 3662(of)s 220 fnt2
+3949 9705(@P)m 8(ageMar)k -3(k)k 4(er)k 240 fnt1
+5435 9708(appears)m 6233(before)s 6916(each)s 7428(page,)s 8004(with)s
+220 fnt2 8503 9705(@T)m 26(ag)k 240 fnt1 0 9420(parameter)m
+1014(equal)s 1587(to)s 1826(the)s 2174(page)s 2682(number)s 13(.)k
+3564(Suppose)s 4432(that)s 220 fnt2 4850 9417(@P)m 8(ageMar)k -3(k intro)k
+240 fnt1 6548 9420(,)m 6655(which)s 7297(e)s 3(xpands)k
+8130(to)s 220 fnt2 480 8919(@P)m 8(ageMar)k -3(k)k 4(er&&preceding @T)k 26(agged intro)k
+240 fnt1 0 8420(happens)m 855(to)s 1113(f)s 2(all)k
+1502(on)s 1819(page)s 2346(27)s 2653(of)s 2944(the)s
+3311(\207nal)s 3810(printed)s 4564(document)s 5588(\(of)s 5957(course,)s
+6707(its)s 7003(v)s 6(alue)k 7590(is)s 220 fnt2
+7819 8417(@Null)m 240 fnt1 8484 8420(which)m 0 8132(mak)m 2(es)k
+686(it)s 905(in)s 9(visible\).)k 1988(Then)s 2564(the)s
+2939(ef)s 6(fect)k 3561(of)s 220 fnt2 3859 8129(@T)m 26(agged)k
+240 fnt1 4874 8132(is)m 5111(to)s 5377(attach)s 220 fnt2
+6030 8129(intro)m 240 fnt1 6536 8132(as)m 6812(an)s 7122(e)s 3(xtra)k
+7683(tag)s 8054(to)s 8320(the)s 8695(\207rst)s 0 7844(in)m 9(v)k 4(ocation)k
+1092(of)s 220 fnt2 1401 7841(@P)m 8(ageMar)k -3(k)k 4(er)k
+240 fnt1 2908 7844(preceding)m 3943(that)s 4399(\207nal)s 4917(point,)s
+5554(and)s 5997(this)s 6431(must)s 6994(be)s 220 fnt2
+7315 7841(@P)m 8(ageMar)k -3(k)k 4(er 27)k 240 fnt1
+9022 7844(.)m 0 7556(Therefore)m 997(the)s 1345(e)s 3(xpression)k
+220 fnt2 480 7055(@P)m 8(ageMar)k -3(k)k 4(er&&intro @Open { @T)k 26(ag })k
+240 fnt1 0 6556(will)m 422(open)s 941(the)s 1285(in)s 9(v)k 4(ocation)k
+220 fnt2 2334 6553(@P)m 8(ageMar)k -3(k)k 4(er 27)k
+240 fnt1 4097 6556(and)m 4497(yield)s 5028(the)s 5372(v)s 6(alue)k
+5936(of)s 6203(its)s 220 fnt2 6474 6553(@T)m 26(ag)k
+240 fnt1 7093 6556(parameter)m 9(,)k 8141(27.)s 8540(Thus,)s
+220 fnt2 0 6265(@P)m 8(ageOf intro)k 240 fnt1 1499 6268(appearing)m
+2495(an)s 3(ywhere)k 3478(in)s 3721(the)s 4069(document)s
+5073(yields)s 5695(27.)s 480 5894(Ne)m 3(xt)k 1009(we)s
+1351(ha)s 4(v)k 3(e)k 1859(some)s 2427(little)s
+2926(de\207nitions)s 3994(for)s 4339(v)s 6(arious)k 5095(parts)s
+5617(of)s 5895(the)s 6250(page.)s 220 fnt2 6873 5891(@FullPlace)m
+240 fnt1 8055 5894(will)m 8488(be)s 8778(the)s 0 5606(tar)m 4(get)k
+599(of)s 870(full-width)s 1882(body)s 2416(te)s 3(xt:)k
+220 fnt2 480 5105(def @FullPlace { @Galle)m 4(y })k 0 4604(@ColPlace)m 240 fnt1
+1151 4607(will)m 1577(be)s 1859(the)s 2207(tar)s 4(get)k
+2806(of)s 3077(body)s 3611(te)s 3(xt)k 4026(within)s
+4694(one)s 5096(column:)s 220 fnt2 480 4106(def @ColPlace { @Galle)m 4(y })k
+0 3605(@T)m 26(opList)k 240 fnt1 972 3608(will)m 1398(be)s
+1680(the)s 2028(tar)s 4(get)k 2627(of)s 2898(\207gures)s
+3600(and)s 4004(tables:)s 220 fnt2 480 3107(e)m 6(xpor)k -8(t @T)k 26(ag)k
+480 2819(def @T)m 26(opList r)k -3(ight @T)k 26(ag)k 480 2531({)m
+480 2243( @Galle)m 4(y)k 480 1955( //@T)m 26(opGap @T)k 26(opList @Ne)k 6(xt @T)k 26(ag)k
+480 1667(})m 240 fnt1 0 1173(W)m 19(e)k 392(ha)s 4(v)k 3(e)k
+916(tak)s 2(en)k 1512(a)s 1702(shortcut)s 2555(here,)s
+3096(a)s 4(v)k 4(oiding)k 4002(an)s 4309(unnecessary)s
+220 fnt2 5555 1170(@T)m 26(opPlace)k 240 fnt1 6753 1173(symbol.)m
+220 fnt2 7645 1170(@F)m 6(ootList)k 240 fnt1 8722 1173(and)m
+220 fnt2 0 882(@F)m 6(ootSect)k 240 fnt1 1142 885(de\207ne)m
+1774(a)s 1931(sequence)s 2854(of)s 3116(full-width)s 4119(tar)s 4(gets)k
+4793(at)s 5015(the)s 5354(foot)s 5790(of)s 6052(the)s
+6390(page)s 6889(for)s 7218(footnotes,)s 8205(preceded)s 0 597(by)m
+294(a)s 460(short)s 998(horizontal)s 2022(line:)s
+[ /Dest /LOUT19_4637_exa_page_4 /DEST pdfmark
+220 fnt2
+480 96(e)m 6(xpor)k -8(t @T)k 26(ag)k
+grestore
+gsave
+1417 -15423 translate
+240 fnt1
+0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 89 95
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(4.3.)m 1871(P)s 19(a)k 2(g)k 2(e)k
+2393(layout)s 240 fnt5 10249 -1583(89)m gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+220 fnt2
+480 13207(def @F)m 6(ootList r)k -3(ight @T)k 26(ag)k 480 12919({)m
+480 12631( @Galle)m 4(y)k 480 12343( //@F)m 6(ootGap @F)k 6(ootList @Ne)k 6(xt @T)k 26(ag)k
+480 12055(})m
+[ /Dest /LOUT16_1794_exa_page_4 /DEST pdfmark
+480 11563(def @F)m 6(ootSect)k 480 11275({)m 480 10987( @F)m 6(ootLen @Wide @HLine)k
+480 10699( //@F)m 6(ootGap @F)k 6(ootList 1 ||@F)k 6(ootLen)k 480 10411(})m
+
+[ /Dest /LOUT16_1794_exa_page_5 /DEST pdfmark
+240 fnt1 0 9917(Similarly)m 15(,)k 220 fnt2 988 9914(@ColF)m 6(ootList)k
+240 fnt1 2378 9917(and)m 220 fnt2 2791 9914(@ColF)m 6(ootSect)k
+240 fnt1 4279 9917(pro)m 3(vide)k 5072(a)s 5247(sequence)s
+6189(of)s 6469(tar)s 4(gets)k 7161(for)s 7508(footnotes)s
+8458(within)s 0 9629(one)m 402(column:)s 220 fnt2 480 9178(e)m 6(xpor)k -8(t @T)k 26(ag)k
+480 8890(def @ColF)m 6(ootList r)k -3(ight @T)k 26(ag)k 480 8602({)m
+480 8314( @Galle)m 4(y)k 480 8026( //@F)m 6(ootGap @ColF)k 6(ootList @Ne)k 6(xt @T)k 26(ag)k
+480 7738(})m 480 7162(def @ColF)m 6(ootSect)k 480 6874({)m 480 6586( @ColF)m 6(ootLen @Wide @HLine)k
+480 6298( //@F)m 6(ootGap @ColF)k 6(ootList 1 ||@ColF)k 6(ootLen)k 480 6010(})m
+240 fnt1 0 5516(The)m 428(ne)s 3(xt)k 897(de\207nition)s
+1871(pro)s 3(vides)k 2743(a)s 2909(horizontal)s 3933(sequence)s
+4866(of)s 5137(one)s 5539(or)s 5798(more)s 6345(columns:)s
+
+[ /Dest /LOUT19_4637_exa_page_5 /DEST pdfmark
+220 fnt2 480 5015(def @ColList r)m -3(ight col)k 480 4727({)m 480 4439( def @Column)m
+480 4151( { @VExpand { @ColPlace //1r)m -8(t @OneRo)k 3(w { //@MidGap @ColF)k 6(ootSect } } })k 480 3575( col @Case {)m
+480 3287( Single @Y)m 4(ield @Column)k 480 2999( Doub)m 4(le @Y)k 4(ield { @Doub)k 4(leColWidth @Wide @Column ||@ColGap @ColList col })k
+480 2711( Multi @Y)m 4(ield { @MultiColWidth @Wide @Column ||@ColGap @ColList col })k 480 2423( })m 480 2135(})m 240 fnt1
+0 1641(Each)m 537(column)s 1315(consists)s 2125(of)s 2399(a)s
+220 fnt2 2568 1638(@ColPlace)m 240 fnt1 3721 1641(at)m 3956(the)s
+4307(top)s 4668(and)s 5075(a)s 220 fnt2 5243 1638(@F)m 6(ootSect)k
+240 fnt1 6397 1641(at)m 6632(the)s 6982(foot.)s 7534(The)s
+220 fnt2 7965 1638(@VExpand)m 240 fnt1 0 1353(symbol)m 772(ensures)s
+1553(that)s 1983(whene)s 6(v)k 3(er)k 2977(a)s
+3156(column)s 3943(comes)s 4618(into)s 5056(e)s 3(xistence,)k
+6061(it)s 6266(will)s 6705(e)s 3(xpand)k 7464(v)s 3(ertically)k
+8429(so)s 8708(that)s 0 1065(the)m 360(bottom-justi\207cation)s 220 fnt2
+2315 1062(//1r)m -8(t)k 240 fnt1 2769 1065(has)m 3152(as)s
+3414(much)s 4016(space)s 4615(as)s 4878(possible)s 5730(to)s
+5982(w)s 2(ork)k 6545(within.)s 7333(The)s 220 fnt2
+7773 1062(col)m 240 fnt1 8112 1065(parameter)m 0 777(determines)m 1099(whether)s
+1929(the)s 2277(result)s 2867(has)s 3237(a)s 3403(single)s
+4030(column,)s 4855(double)s 5563(columns,)s 6481(or)s 6740(multiple)s
+7592(columns.)s 480 403(The)m 220 fnt2 908 400(@P)m 8(age)k
+240 fnt1 1687 403(symbol)m 2447(places)s 3095(its)s 3371(parameter)s
+4385(in)s 4628(a)s 4794(page)s 5302(of)s 5573(\207x)s 3(ed)k
+6107(width,)s 6759(height,)s 7464(and)s 7868(mar)s 4(gins:)k
+
+[ /Dest /LOUT19_4637_exa_page_6 /DEST pdfmark
+
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 90 96
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(90)m 240 fnt6 8434 -1580(Chapter)m 9284(4.)s
+9558(Examples)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+220 fnt2 480 13207(def @P)m 8(age r)k -3(ight x)k
+480 12919({)m 480 12631( @P)m 8(ageWidth @Wide @P)k 8(ageHeight @High {)k 480 12343( //@P)m 8(ageMargin ||@P)k 8(ageMargin)k
+480 12055( @HExpand @VExpand x)m 480 11767( ||@P)m 8(ageMargin //@P)k 8(ageMargin)k 480 11479( })m
+480 11191(})m 0 10694(@HExpand)m 240 fnt1 1169 10697(and)m 220 fnt2
+1568 10694(@VExpand)m 240 fnt1 2725 10697(ensure)m 3400(that)s 3814(the)s
+4157(right)s 4664(parameter)s 5673(occupies)s 6557(all)s 6845(the)s
+7189(a)s 4(v)k 6(ailable)k 8092(space;)s 8730(this)s
+0 10409(is)m 218(important)s 1215(when)s 1800(the)s 2156(right)s
+2676(parameter)s 3698(is)s 3916(unusually)s 4910(small.)s 5599(The)s
+220 fnt2 6036 10406(@High)m 240 fnt1 6763 10409(symbol)m 7531(gi)s 6(v)k 3(es)k
+8087(the)s 8443(page)s 8960(a)s 0 10121(single)m 627(ro)s 6(w)k
+1047(mark,)s 1645(ensuring)s 2522(that)s 2940(it)s 3132(will)s
+3558(be)s 3840(printed)s 4575(on)s 4872(a)s 5038(single)s
+5665(sheet)s 6216(of)s 6487(paper)s 7078(\(page)s 7665(30\).)s
+480 9747(Ne)m 3(xt)k 1002(we)s 1337(ha)s 4(v)k 3(e)k
+220 fnt2 1838 9744(@OneP)m 8(age)k 240 fnt1 2972 9747(,)m
+3079(de\207ning)s 3917(a)s 4083(typical)s 4788(page)s 5296(of)s
+5567(a)s 5733(book)s 6274(or)s 6533(other)s 7084(document:)s
+
+[ /Dest /LOUT19_4637_exa_page_7 /DEST pdfmark
+220 fnt2 480 9246(def @OneP)m 8(age)k 480 8958( named @Columns {})m 480 8670( named @P)m 8(ageT)k 26(op {})k
+480 8382( named @P)m 8(ageF)k 6(oot {})k 480 8094({)m 480 7806( @P)m 8(age {)k
+480 7518( @P)m 8(ageT)k 26(op)k 480 7230( //@MidGap @T)m 26(opList)k
+480 6942( //@MidGap @FullPlace)m 480 6654( //@MidGap @ColList @Columns)m 480 6366( // //1r)m -8(t @OneRo)k 3(w { //@MidGap @F)k 6(ootSect //@MidGap @P)k 8(ageF)k 6(oot })k
+480 6078( })m 480 5790(})m 240 fnt1 0 5296(The)m 431(page)s
+943(top)s 1305(and)s 1713(page)s 2224(foot,)s 2720(and)s
+3128(the)s 3479(number)s 4274(of)s 4548(columns,)s 5470(are)s
+5821(parameters)s 6922(that)s 7344(will)s 7773(be)s 8059(gi)s 6(v)k 3(en)k
+8643(later)s 0 5008(when)m 220 fnt2 565 5005(@OneP)m 8(age)k
+240 fnt1 1747 5008(is)m 1946(in)s 9(v)k 4(ok)k 2(ed.)k
+2855(The)s 3272(body)s 3794(of)s 4054(the)s 4390(page)s
+4887(is)s 5085(a)s 5240(straightforw)s 2(ard)k 6756(combination)s
+7998(of)s 8257(pre)s 6(vious)k 0 4720(de\207nitions.)m 1171(The)s
+220 fnt2 1595 4717(//)m 240 fnt1 1777 4720(symbol)m 2533(protects)s
+3337(the)s 3681(follo)s 6(wing)k 220 fnt2 4655 4717(//1r)m -8(t)k
+240 fnt1 5093 4720(from)m 5614(deletion)s 6437(in)s 6677(the)s
+7021(unlik)s 2(ely)k 7854(e)s 6(v)k 3(ent)k
+8419(that)s 8833(all)s 0 4432(the)m 342(preceding)s 1331(symbols)s
+2174(are)s 2514(replaced)s 3375(by)s 220 fnt2 3662 4429(@Null)m
+240 fnt1 4247 4432(.)m 4405(The)s 4826(follo)s 6(wing)k
+5797(object)s 6434(is)s 6638(enclosed)s 7526(in)s 220 fnt2
+7763 4429(@OneRo)m 3(w)k 240 fnt1 8887 4432(to)m 0 4144(ensure)m
+680(that)s 1098(all)s 1391(of)s 1662(it)s 1854(is)s
+2064(bottom-justi\207ed,)s 3698(not)s 4064(just)s 4469(its)s 4745(\207rst)s
+5176(component.)s 480 3770(Before)m 1199(presenting)s 2262(the)s 2624(de\207nition)s
+3612(of)s 3896(a)s 4076(sequence)s 5023(of)s 5308(pages,)s
+5974(we)s 6322(must)s 6861(detour)s 7546(to)s 7799(describe)s
+8665(ho)s 6(w)k 0 3482(running)m 803(page)s 1317(headers)s
+2104(and)s 2513(footers)s 3233(\(lik)s 2(e)k 3730(those)s
+4297(in)s 4545(the)s 4899(present)s 5655(document\))s 6732(are)s
+7085(produced.)s 8146(These)s 8779(are)s 0 3194(based)m 603(on)s
+900(the)s 220 fnt2 1248 3191(@Runner)m 240 fnt1 2250 3194(symbol:)m
+
+[ /Dest /LOUT19_4637_exa_page_8 /DEST pdfmark
+220 fnt2 480 2693(e)m 6(xpor)k -8(t @T)k 26(opOdd @T)k 26(opEv)k 5(en @F)k 6(ootOdd @F)k 6(ootEv)k 5(en)k
+480 2405(def @Runner)m 480 2117( named @T)m 26(opOdd r)k -3(ight @P)k 8(ageNum { @Null })k
+480 1829( named @T)m 26(opEv)k 5(en r)k -3(ight @P)k 8(ageNum { @Null })k
+480 1541( named @F)m 6(ootOdd r)k -3(ight @P)k 8(ageNum { @Null })k 480 1253( named @F)m 6(ootEv)k 5(en r)k -3(ight @P)k 8(ageNum { @Null })k
+480 965( named @T)m 26(ag {})k 480 677({ @Null })m 240 fnt1 0 183(The)m
+440(four)s 910(parameters)s 2020(control)s 2764(the)s 3125(format)s
+3833(of)s 4116(running)s 4926(headers)s 5719(and)s 6136(footers)s
+6862(on)s 7171(odd)s 7601(and)s 8017(e)s 6(v)k 3(en)k
+8530(pages)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 91 97
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(4.3.)m 1871(P)s 19(a)k 2(g)k 2(e)k
+2393(layout)s 240 fnt5 10256 -1583(91)m gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+0 13205(respecti)m 6(v)k 3(ely)k 15(.)k
+1294(In)s 9(v)k 4(ocations)k 2448(of)s 220 fnt2
+2719 13202(@Runner)m 240 fnt1 3661 13205(,)m 3768(for)s 4106(e)s 3(xample)k
+220 fnt2 480 12704(@Runner)m 480 12416( @T)m 26(opEv)k 5(en { @B @P)k 8(ageNum |1r)k -8(t @I { Chapter 4 } })k
+480 12128( @T)m 26(opOdd { @I { Examples } |1r)k -8(t @B @P)k 8(ageNum })k 240 fnt1
+0 11629(will)m 416(be)s 687(embedded)s 1719(in)s 1951(the)s
+2289(body)s 2812(te)s 3(xt)k 3217(of)s 3477(the)s
+3815(document,)s 4855(and,)s 5298(as)s 5537(we)s 5862(will)s
+6277(see)s 6628(in)s 6860(a)s 7016(moment,)s 7896(are)s
+8232(accessed)s 0 11341(by)m 220 fnt2 296 11338(@Runner&&f)m 6(ollo)k 3(wing)k
+240 fnt1 2423 11341(cross)m 2967(references)s 4001(on)s 4301(the)s
+4651(pages.)s 5363(Notice)s 6059(ho)s 6(w)k 6522(the)s
+220 fnt2 6873 11338(@P)m 8(ageNum)k 240 fnt1 8112 11341(parameter)m
+0 11053(of)m 265(each)s 753(parameter)s 1761(allo)s 6(ws)k
+2423(the)s 2764(format)s 3454(of)s 3718(the)s 4059(running)s
+4851(header)s 5541(to)s 5774(be)s 6049(speci\207ed)s 6950(while)s
+7531(lea)s 4(ving)k 8277(the)s 8618(page)s 0 10765(number)m
+791(to)s 1030(be)s 1312(substituted)s 2406(later)s 13(.)k
+480 10391(W)m 19(e)k 843(may)s 1303(no)s 6(w)k
+1758(de\207ne)s 220 fnt2 2393 10388(@OddP)m 8(ageList)k 240 fnt1
+3872 10391(,)m 3973(whose)s 4635(result)s 5219(is)s 5423(a)s
+5583(sequence)s 6510(of)s 6775(pages)s 7365(be)s 3(ginning)k
+8367(with)s 8843(an)s 0 10103(odd-numbered)m 1454(page:)s
+[ /Dest /LOUT19_4637_exa_page_9 /DEST pdfmark
+220 fnt2
+480 9602(def @OddP)m 8(ageList)k 480 9314( named @Columns {})m 480 9026( r)m -3(ight @P)k 8(ageNum)k
+480 8738({)m 480 8450( def @Ev)m 5(enP)k 8(ageList ...)k 480 7874( @P)m 8(ageMar)k -3(k)k 4(er @P)k 8(ageNum)k
+480 7586( // @Runner&&f)m 6(ollo)k 3(wing @Open {)k 480 7298( @OneP)m 8(age)k
+480 7010( @Columns { @Columns })m 480 6722( @P)m 8(ageT)k 26(op { @T)k 26(opOdd @P)k 8(ageNum })k
+480 6434( @P)m 8(ageF)k 6(oot { @F)k 6(ootOdd @P)k 8(ageNum })k
+480 6146( })m 480 5858( // @Ev)m 5(enP)k 8(ageList)k 480 5570( @Columns { @Columns })m
+480 5282( @Ne)m 6(xt @P)k 8(ageNum)k 480 4994(})m 240 fnt1
+0 4500(Ignoring)m 220 fnt2 887 4497(@Ev)m 5(enP)k 8(ageList)k
+240 fnt1 2516 4500(for)m 2864(the)s 3222(moment,)s 4124(notice)s
+4774(\207rst)s 5215(that)s 5643(the)s 6002(in)s 9(v)k 4(ocation)k
+7066(of)s 220 fnt2 7347 4497(@OneP)m 8(age)k 240 fnt1
+8551 4500(is)m 8772(en-)s 0 4212(closed)m 679(in)s 220 fnt2
+932 4209(@Runner&&f)m 6(ollo)k 3(wing @Open)k 240 fnt1 3815 4212(.)m
+3989(Since)s 220 fnt2 4586 4209(@Runner&&f)m 6(ollo)k 3(wing)k
+240 fnt1 6721 4212(refers)m 7324(to)s 7573(the)s 7931(\207rst)s
+8373(in)s 9(v)k 4(oca-)k 0 3924(tion)m 421(of)s
+220 fnt2 684 3921(@Runner)m 240 fnt1 1678 3924(appearing)m 2666(after)s
+3154(itself)s 3694(in)s 3929(the)s 4269(\207nal)s 4741(printed)s
+5468(document,)s 6511(the)s 6851(symbols)s 220 fnt2 7692 3921(@T)m 26(opOdd)k
+240 fnt1 8722 3924(and)m 220 fnt2 0 3633(@F)m 6(ootOdd)k
+240 fnt1 1127 3636(will)m 1562(tak)s 2(e)k 2023(their)s
+2528(v)s 6(alue)k 3105(from)s 3638(the)s 3995(\207rst)s
+4434(in)s 9(v)k 4(ocation)k 5497(of)s 220 fnt2
+5777 3633(@Runner)m 240 fnt1 6788 3636(follo)m 6(wing)k 7773(the)s
+8130(top)s 8498(of)s 8778(the)s 0 3348(page,)m 554(e)s 6(v)k 3(en)k
+1049(though)s 220 fnt2 1767 3345(@F)m 6(ootOdd)k 240 fnt1
+2880 3348(appears)m 3656(at)s 3883(the)s 4225(foot)s 4665(of)s
+4931(the)s 5274(page.)s 5884(Their)s 220 fnt2 6456 3345(@P)m 8(ageNum)k
+240 fnt1 7687 3348(parameters)m 8779(are)s 0 3060(replaced)m 867(by)s
+220 fnt2 1161 3057(@P)m 8(ageNum)k 240 fnt1 2337 3060(,)m
+2444(the)s 2792(actual)s 3417(page)s 3925(number)s 4716(parameter)s
+5730(of)s 220 fnt2 6001 3057(@OddP)m 8(ageList)k 240 fnt1
+7480 3060(.)m 480 2686(After)m 1043(producing)s 2067(the)s 2415(odd-numbered)s
+3869(page,)s 220 fnt2 4428 2683(@OddP)m 8(ageList)k 240 fnt1
+5967 2686(in)m 9(v)k 4(ok)k 2(es)k 220 fnt2
+6748 2683(@Ev)m 5(enP)k 8(ageList)k 240 fnt1 8307 2686(:)m
+
+[ /Dest /LOUT19_4637_exa_page_10 /DEST pdfmark
+220 fnt2 480 2185(def @Ev)m 5(enP)k 8(ageList)k 480 1897( named @Columns {})m
+480 1609( r)m -3(ight @P)k 8(ageNum)k 480 1321({)m 480 1033( @P)m 8(ageMar)k -3(k)k 4(er @P)k 8(ageNum)k
+480 745( // @Runner&&f)m 6(ollo)k 3(wing @Open {)k 480 457( @OneP)m 8(age)k
+480 169( @Columns { @Columns })m
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 92 98
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(92)m 240 fnt6 8434 -1580(Chapter)m 9284(4.)s
+9558(Examples)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+220 fnt2 480 13207( @P)m 8(ageT)k 26(op { @T)k 26(opEv)k 5(en @P)k 8(ageNum })k
+480 12919( @P)m 8(ageF)k 6(oot { @F)k 6(ootEv)k 5(en @P)k 8(ageNum })k
+480 12631( })m 480 12343( // @OddP)m 8(ageList)k 480 12055( @Columns { @Columns })m 480 11767( @Ne)m 6(xt @P)k 8(ageNum)k
+480 11479(})m 240 fnt1 0 10985(This)m 465(produces)s 1369(an)s
+1641(e)s 6(v)k 3(en-numbered)k 3167(page,)s 3714(then)s
+4172(passes)s 4823(the)s 5160(ball)s 5562(back)s 6063(to)s
+220 fnt2 6291 10982(@OddP)m 8(ageList)k 240 fnt1 7819 10985(\211)m
+7988(a)s 8142(delightful)s 0 10697(e)m 3(xample)k 877(of)s
+1162(what)s 1701(computer)s 2678(scientists)s 3619(call)s 4032(mutual)s
+4765(recursion.)s 5832(The)s 6274(tw)s 2(o)k 6699(page)s
+7221(types)s 7791(dif)s 6(fer)k 8388(only)s 8883(in)s
+0 10409(their)m 497(running)s 1295(headers)s 2076(and)s 2480(footers,)s
+3250(b)s 4(ut)k 3612(other)s 4163(changes)s 4985(could)s
+5575(easily)s 6186(be)s 6468(made.)s 480 10035(It)m 682(w)s 2(as)k
+1099(foreshado)s 6(wed)k 2489(earlier)s 3153(that)s 3568(an)s
+3847(in)s 9(v)k 4(ocation)k 4897(of)s 220 fnt2
+5164 10032(@P)m 8(ageMar)k -3(k)k 4(er)k 240 fnt1
+6630 10035(w)m 2(ould)k 7281(precede)s 8076(each)s 8567(page,)s
+0 9747(and)m 412(this)s 817(has)s 1195(been)s 1713(done.)s
+2351(Although)s 3322(this)s 220 fnt2 3726 9744(@P)m 8(ageMar)k -3(k)k 4(er)k
+240 fnt1 5204 9747(is)m 5422(a)s 5597(component)s 6729(of)s
+7009(the)s 7365(root)s 7819(g)s 1(alle)k 3(y)k 15(,)k
+8499(it)s 8700(will)s 0 9459(not)m 366(cause)s 953(a)s
+1119(page)s 1627(to)s 1866(be)s 2148(printed,)s 2932(because)s
+3745(Basser)s 4442(Lout)s 4954(skips)s 5497(components)s 6705(of)s
+6976(height)s 7634(zero.)s 240 fnt5 0 8666(4.4.)m 471(Chapters)s
+1468(and)s 1909(sections)s
+[ /Dest /LOUTchapters /DEST pdfmark
+240 fnt1 480 8189(The)m 905(de\207nitions)s
+1962(of)s 2229(chapters)s 3073(and)s 3473(sections)s 4290(from)s
+4811(the)s 5155(DocumentSetup)s 6746(package)s
+[ /Dest /LOUT19_4637_exa_chap_1 /DEST pdfmark
+7583(of)s 7850(V)s 26(ersion)k
+8634(2)s 8804(\(in)s 0 7901(V)m 26(ersion)k 793(3,)s
+1026(the)s 1379(BookSetup)s 2503(e)s 3(xtension)k 3480(of)s
+3756(DocumentSetup\))s 5432(form)s 5961(the)s 6315(subject)s 7058(of)s
+7334(this)s 7736(section.)s 8583(The)s 3(y)k 0 7613(allo)m 6(w)k
+579(a)s 745(chapter)s 1508(to)s 1747(be)s 2029(entered)s
+2790(lik)s 2(e)k 3202(this:)s
+[ /Dest /LOUT19_4637_exa_chap_2 /DEST pdfmark
+220 fnt2 480 7112(@Chapter)m
+480 6824( @Title { ...)m 13( })k 480 6536( @T)m 26(ag { ...)k 13( })k
+480 6248(@Begin)m 480 5960( ...)m 480 5672(@End @Chapter)m 240 fnt1 0 5176(W)m 9(ithin)k
+712(the)s 1060(chapter)s 1823(a)s 1989(sequence)s 2922(of)s
+3193(sections)s 4014(may)s 4480(be)s 4762(included)s 5644(by)s
+5938(writing)s 220 fnt2 480 4675(@BeginSections)m 480 4387(@Section { ...)m 13( })k
+480 4099(...)m 480 3811(@Section { ...)m 13( })k 480 3523(@EndSections)m 240 fnt1
+0 3068(These)m 627(are)s 974(numbered)s 1989(automatically)s 15(,)k
+3381(and)s 3785(an)s 4068(entry)s 4613(is)s 4823(made)s
+5397(for)s 5735(each)s 6230(in)s 6473(a)s 6639(table)s
+7159(of)s 7430(contents.)s 480 2694(The)m 901(user)s 1352(of)s
+1615(the)s 1956(DocumentSetup)s 3544(package)s 4376(can)s 4758(\207nd)s
+5182(the)s 5522(number)s 6306(of)s 6570(the)s 6910(chapter)s
+7666(or)s 7918(section)s 8644(with)s 0 2406(a)m 176(gi)s 6(v)k 3(en)k
+766(tag)s 1121(by)s 1426(writing)s 220 fnt2 2179 2403(@NumberOf tag)m
+240 fnt1 3838 2406(at)m 4081(an)s 3(y)k 4488(point)s
+5050(in)s 5304(the)s 5662(document.)s 6780(This)s 7267(feature)s
+7995(is)s 8215(based)s 8829(on)s 0 2118(the)m 348(follo)s 6(wing)k
+1325(de\207nitions:)s
+[ /Dest /LOUT19_4637_exa_chap_3 /DEST pdfmark
+220 fnt2 480 1617(e)m 6(xpor)k -8(t @T)k 26(ag)k
+480 1329(def @NumberMar)m -3(k)k 4(er r)k -3(ight @T)k 26(ag { @Null })k
+480 753(def @NumberOf r)m -3(ight x)k 480 465({ @NumberMar)m -3(k)k 4(er&&x @Open { @T)k 26(ag } })k
+
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 93 99
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(4.4.)m 1871(Chapter)s 2(s)k 2802(and)s
+3228(sections)s 240 fnt5 10250 -1583(93)m gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+0 13205(Each)m
+522(chapter)s 1272(and)s 1663(section)s 2384(will)s 2797(contain)s
+3545(one)s 3934(in)s 9(v)k 4(ocation)k 4975(of)s
+220 fnt2 5233 13202(@NumberMar)m -3(k)k 4(er)k 240 fnt1
+6918 13205(;)m 7017(a)s 7170(full)s 7543(e)s 3(xplanation)k
+8700(will)s 0 12917(be)m 282(gi)s 6(v)k 3(en)k
+862(later)s 13(.)k 480 12543(A)m 710(sequence)s 1643(of)s
+1914(places)s 2562(for)s 2900(recei)s 6(ving)k 3836(chapters)s
+4683(is)s 4893(easily)s 5504(de\207ned:)s 220 fnt2 480 12042(e)m 6(xpor)k -8(t @T)k 26(ag)k
+480 11754(def @ChapterList r)m -3(ight @T)k 26(ag)k 480 11466({)m 480 11178( @Galle)m 4(y)k
+480 10890( //@ChapterGap @ChapterList @Ne)m 6(xt @T)k 26(ag)k 480 10602(})m 0 10105(@ChapterGap)m
+240 fnt1 1505 10108(will)m 1967(usually)s 2747(be)s 220 fnt2
+3065 10105(1.1b)m 240 fnt1 3484 10108(,)m 3626(ensuring)s 4539(that)s
+4992(each)s 5523(chapter)s 6321(be)s 3(gins)k 7030(on)s
+7362(a)s 7564(ne)s 6(w)k 8046(page.)s 8698(The)s
+220 fnt2 0 9817(@Chapter)m 240 fnt1 1063 9820(g)m 1(alle)k 3(y)k
+1697(itself)s 2245(is)s 2455(de\207ned)s 3218(as)s 3468(follo)s 6(ws:)k
+
+[ /Dest /LOUT19_4637_exa_chap_4 /DEST pdfmark
+220 fnt2 480 9319(e)m 6(xpor)k -8(t @F)k 6(ootNote @BeginSections @EndSections @Section)k
+480 9031(def @Chapter f)m 6(orce into { @ChapterList&&preceding })k 480 8743( named @T)m 26(ag {})k 480 8455( named @Title {})m
+480 8167( named @RunningTitle { dft })m 480 7879( body @Body)m 480 7591({)m 480 7303( def @F)m 6(ootNote r)k -3(ight x { @ColF)k 6(ootNote x })k
+480 6727( def @BeginSections ...)m 480 6439( def @EndSections ...)m 480 6151( def @Section ...)m
+[ /Dest /LOUT16_1794_exa_chap_1 /DEST pdfmark
+480 5698( def @ChapterTitle)m 480 5410( {)m
+480 5122( @ChapterNumbers @Case {)m 480 4834( {Y)m 30(es y)k 4(es} @Y)k 4(ield { Chapter {@NumberOf @T)k 26(ag}.)k 13( |2s @Title })k
+480 4546( else @Y)m 4(ield @Title)k 480 4258( })m 480 3970( })m 480 3394( def @ChapterNum)m
+480 3106( {)m 480 2818( @ChapterNumbers @Case {)m 480 2530( {Y)m 30(es y)k 4(es} @Y)k 4(ield { Chapter {@NumberOf @T)k 26(ag} })k
+480 2242( else @Y)m 4(ield @Null)k 480 1954( })m 480 1666( })m
+[ /Dest /LOUT16_1794_exa_chap_2 /DEST pdfmark
+480 1174( r)m 2(agged @Break @BookTitleF)k 6(or)k -5(mat @ChapterTitle)k
+480 886( // @NumberMar)m -3(k)k 4(er {)k 480 598( @ChapterList&&@T)m 26(ag @Open { @T)k 26(ag })k
+480 310( })m
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 94 100
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(94)m 240 fnt6 8434 -1580(Chapter)m 9284(4.)s
+9558(Examples)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+220 fnt2 480 13207( // @ChapterList&&preceding @T)m 26(agged @T)k 26(ag)k
+480 12919( // @NumberMar)m -3(k)k 4(er&&preceding @T)k 26(agged @T)k 26(ag)k
+480 12631( // @P)m 8(ageMar)k -3(k)k 4(er&&preceding @T)k 26(agged @T)k 26(ag)k
+480 12343( // { @ChapterTitle } @MajorContentsEntr)m -6(y {@P)k 8(ageOf @T)k 26(ag})k 480 12055( // @Runner)m
+480 11767( @F)m 6(ootEv)k 5(en { |0.5r)k -8(t 0.8f @F)k 6(ont @B @P)k 8(ageNum })k
+480 11479( @F)m 6(ootOdd { |0.5r)k -8(t 0.8f @F)k 6(ont @B @P)k 8(ageNum })k
+480 11191( // @Body)m 480 10903( //@SectionGap @ChapRefSection)m 480 10615( // @Runner)m 480 10327( @T)m 26(opEv)k 5(en { @B @P)k 8(ageNum |1r)k -8(t @I @ChapterNum })k
+480 10039( @T)m 26(opOdd { @I {@RunningTitle @OrElse @Title} |1r)k -8(t @B @P)k 8(ageNum })k 480 9751(})m
+
+[ /Dest /LOUT16_1794_exa_chap_3 /DEST pdfmark
+240 fnt1 0 9257(W)m 19(e)k 371(will)s 800(see)s
+1164(the)s 1515(symbols)s 2366(for)s 2707(sections)s 3531(shortly)s 15(.)k
+4347(Notice)s 5042(ho)s 6(w)k 5506(their)s 6006(use)s
+6384(has)s 6756(been)s 7268(restricted)s 8216(to)s 8458(within)s
+0 8969(the)m 348(right)s 859(parameter)s 1873(of)s 220 fnt2
+2144 8966(@Chapter)m 240 fnt1 3147 8969(,)m 3254(by)s 3548(nesting)s
+4292(them)s 4830(and)s 5234(using)s 5806(a)s 5972(body)s
+6506(parameter)s 13(.)k 480 8595(The)m 956(meaning)s 1882(of)s
+220 fnt2 2202 8592(@F)m 6(ootNote)k 240 fnt1 3422 8595(within)m
+220 fnt2 4139 8592(@Chapter)m 240 fnt1 5250 8595(has)m 5669(been)s
+6227(set)s 6601(to)s 220 fnt2 6889 8592(@ColF)m 6(ootNote)k
+240 fnt1 8328 8595(,)m 8484(which)s 0 8307(produces)m 907(a)s
+1064(footnote)s 1908(tar)s 4(geted)k 2722(to)s 220 fnt2
+2953 8304(@ColF)m 6(ootList)k 240 fnt1 4325 8307(\(see)m 4756(Section)s
+5521(4.3\).)s 6056(In)s 6303(other)s 6845(w)s 2(ords,)k
+7526(footnotes)s 8458(within)s 0 8019(chapters)m 851(go)s 1149(at)s
+1386(the)s 1739(foot)s 2189(of)s 2465(the)s 2818(column,)s
+3648(not)s 4019(at)s 4256(the)s 4609(foot)s 5059(of)s
+5335(the)s 5688(page.)s 6309(\(Of)s 6717(course,)s 7453(in)s
+7701(single-column)s 0 7731(books)m 623(this)s 1018(distinction)s 2083(is)s
+2292(insigni\207cant.\))s 220 fnt2 3721 7728(@ChapterTitle)m 240 fnt1 5188 7731(and)m
+220 fnt2 5591 7728(@ChapterNum)m 240 fnt1 7102 7731(are)m 7448(tri)s 6(vial)k
+8065(de\207nitions)s 0 7443(which)m 642(v)s 6(ary)k 1115(depending)s
+2166(on)s 2463(whether)s 3293(the)s 3641(user)s 4099(has)s
+4469(requested)s 5443(numbered)s 6458(chapters)s 7305(or)s 7564(not.)s
+480 7069(Each)m 1014(in)s 9(v)k 4(ocation)k 2066(of)s
+220 fnt2 2336 7066(@Chapter)m 240 fnt1 3397 7069(has)m 3766(its)s
+4040(o)s 6(wn)k 4503(unique)s 220 fnt2 5209 7066(@T)m 26(ag)k
+240 fnt1 5772 7069(,)m 5878(either)s 6479(supplied)s 7347(by)s
+7639(the)s 7986(user)s 8442(or)s 8699(else)s 0 6781(inserted)m
+835(automatically)s 2210(by)s 2525(Lout.)s 3162(W)s 19(e)k
+3553(no)s 6(w)k 4035(trace)s 4575(the)s 4944(cross)s
+5507(referencing)s 6669(of)s 6961(chapter)s 7745(numbers)s 8641(on)s
+8960(a)s 0 6493(h)m 1(ypothetical)k 1236(third)s 1745(chapter)s
+2508(whose)s 3176(tag)s 3521(is)s 220 fnt2 3731 6490(euclid)m
+240 fnt1 4291 6493(.)m 220 fnt2 480 6116(@ChapterList&&preceding @T)m 26(agged euclid)k
+240 fnt1 4758 6119(attaches)m 220 fnt2 5573 6116(euclid)m 240 fnt1
+6188 6119(as)m 6434(an)s 6712(e)s 3(xtra)k 7241(tag)s
+7582(to)s 7816(the)s 8159(\207rst)s 8585(in)s 9(v)k 4(o-)k
+0 5831(cation)m 653(of)s 220 fnt2 937 5828(@ChapterList)m 240 fnt1
+2350 5831(preceding)m 3359(itself)s 3920(in)s 4176(the)s 4536(\207nal)s
+5029(printed)s 5777(document.)s 6898(But)s 7317(this)s 220 fnt2
+7726 5828(@ChapterList)m 240 fnt1 0 5543(must)m 525(be)s 807(the)s
+1155(tar)s 4(get)k 1754(of)s 2025(the)s 2373(chapter)s 9(,)k
+3174(and)s 3578(so)s 220 fnt2 480 5042(@ChapterList&&euclid @Open { @T)m 26(ag })k
+240 fnt1 0 4543(is)m 200(3,)s 416(the)s 754(number)s
+1534(of)s 1795(the)s 2132(chapter)s 2885(\()s 220 fnt2
+2958 4540(@T)m 26(ag)k 240 fnt1 3570 4543(refers)m 4153(to)s
+4381(the)s 4719(parameter)s 5722(of)s 220 fnt2 5983 4540(@ChapterList)m
+240 fnt1 7323 4543(,)m 7419(not)s 7775(the)s 8112(parameter)s
+0 4255(of)m 220 fnt2 272 4252(@Chapter)m 240 fnt1 1275 4255(\).)m
+1520(Consequently)s 2892(the)s 3242(in)s 9(v)k 4(ocation)k
+4297(of)s 220 fnt2 4570 4252(@NumberMar)m -3(k)k 4(er)k
+240 fnt1 6317 4255(within)m 6986(the)s 7336(chapter)s 8100(is)s
+8312(equal)s 8887(to)s 220 fnt2 0 3964(@NumberMar)m -3(k)k 4(er 3)k
+240 fnt1 1861 3967(.)m 220 fnt2 480 3590(@NumberMar)m -3(k)k 4(er&&preceding @T)k 26(agged euclid)k
+240 fnt1 5137 3593(attaches)m 220 fnt2 5992 3590(euclid)m 240 fnt1
+6646 3593(to)m 220 fnt2 6920 3590(@NumberMar)m -3(k)k 4(er 3)k
+240 fnt1 8876 3593(as)m 0 3305(an)m 283(e)s 3(xtra)k
+817(tag,)s 1216(and)s 1620(so)s 220 fnt2 1886 3302(@NumberOf euclid)m
+240 fnt1 3742 3305(,)m 3849(which)s 4491(e)s 3(xpands)k
+5324(to)s 220 fnt2 480 2804(@NumberMar)m -3(k)k 4(er&&euclid @Open { @T)k 26(ag })k
+240 fnt1 0 2305(must)m 538(be)s 833(equal)s 1419(to)s
+1671(3,)s 1911(as)s 2175(required.)s 3148(This)s 3637(scheme)s
+4423(could)s 5026(be)s 5322(simpli\207ed)s 6349(by)s 6656(placing)s
+7426(the)s 7787(in)s 9(v)k 4(ocation)k 8855(of)s
+220 fnt2 0 2014(@NumberMar)m -3(k)k 4(er)k 240 fnt1
+1758 2017(within)m 220 fnt2 2440 2014(@ChapterList)m 240 fnt1 3854 2017(rather)m
+4484(than)s 4966(within)s 220 fnt2 5648 2014(@Chapter)m 240 fnt1
+6651 2017(,)m 6772(b)s 4(ut)k 7148(it)s 7353(turns)s
+7896(out)s 8276(that)s 8708(that)s 0 1729(scheme)m 773(does)s
+1263(not)s 1629(generalize)s 2666(well)s 3132(to)s 3371(sections)s
+4192(and)s 4596(subsections.)s 480 1355(There)m 1124(is)s 1365(a)s
+1562(trap)s 2017(for)s 2386(the)s 2765(unw)s 2(ary)k
+3566(in)s 3840(the)s 4219(use)s 4625(of)s 220 fnt2
+4927 1352(preceding)m 240 fnt1 5969 1355(and)m 220 fnt2 6404 1352(f)m 6(ollo)k 3(wing)k
+240 fnt1 7234 1355(.)m 7429(Suppose)s 8328(that)s 8778(the)s
+0 1067(in)m 9(v)k 4(ocation)k 1054(of)s 220 fnt2
+1325 1064(@NumberMar)m -3(k)k 4(er)k 240 fnt1 3070 1067(within)m
+220 fnt2 3738 1064(@Chapter)m 240 fnt1 4801 1067(is)m 5011(replaced)s
+5878(by)s 6172(the)s 6520(seemingly)s 7557(equi)s 6(v)k 6(alent)k
+220 fnt2 480 566(@NumberMar)m -3(k)k 4(er { @ChapterList&&preceding @Open { @T)k 26(ag } })k
+240 fnt1 0 67(No)m 6(w)k 514(suppose)s 1342(that)s
+220 fnt2 1760 64(@NumberOf euclid)m 240 fnt1 3676 67(appears)m 4457(some)s 6(where)k
+5596(within)s 6264(Chapter)s 7081(7.)s 7365(It)s 7570(will)s
+7996(e)s 3(xpand)k 8743(to)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 95 101
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(4.4.)m 1871(Chapter)s 2(s)k 2802(and)s
+3228(sections)s 240 fnt5 10250 -1583(95)m gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+220 fnt2
+480 13207(@NumberMar)m -3(k)k 4(er&&euclid @Open { @T)k 26(ag })k 240 fnt1
+0 12708(which)m 642(w)s 2(ould)k 1297(no)s 6(w)k
+1758(be)s 2040(equal)s 2613(to)s 220 fnt2 480 12207(@ChapterList&&preceding @Open { @T)m 26(ag })k
+240 fnt1 0 11708(whose)m 663(v)s 6(alue,)k 1276(e)s 6(v)k 6(aluated)k
+2233(as)s 2477(it)s 2663(is)s 2868(within)s 3530(Chapter)s
+4342(7,)s 4563(is)s 4767(7,)s 4989(not)s 5349(3.)s
+5628(Use)s 6050(of)s 220 fnt2 6315 11705(preceding)m 240 fnt1
+7321 11708(or)m 220 fnt2 7574 11705(f)m 6(ollo)k 3(wing)k
+240 fnt1 8458 11708(within)m 0 11420(the)m 348(parameter)s 1362(of)s
+1633(a)s 1799(symbol,)s 2611(rather)s 3227(than)s 3696(within)s
+4364(the)s 4712(body)s 15(,)k 5284(is)s 5494(lik)s 2(ely)k
+6090(to)s 6329(be)s 6611(erroneous.)s 480 11046(Much)m 1112(of)s
+1400(the)s 1765(remainder)s 2810(of)s 3098(the)s 3463(de\207nition)s
+4454(of)s 220 fnt2 4742 11043(@Chapter)m 240 fnt1 5822 11046(is)m
+6049(f)s 2(airly)k 6634(self-e)s 3(xplanatory:)k 8366(there)s
+8916(is)s 0 10758(a)m 180(heading,)s 1060(a)s 1241(tag)s
+1601(sent)s 2060(to)s 2314(mark)s 2881(the)s 3244(page)s
+3766(on)s 4078(which)s 4735(the)s 5098(chapter)s 5875(be)s 3(gins,)k
+6619(a)s 220 fnt2 6800 10755(@ContentsEntr)m -6(y)k 240 fnt1
+8492 10758(g)m 1(alle)k 3(y)k 0 10470(sent)m 484(to)s
+762(the)s 1149(table)s 1708(of)s 2018(contents,)s 2961(g)s 1(alle)k 3(ys)k
+3724(for)s 4101(the)s 4489(\207gures)s 5230(and)s 5673(tables)s
+6320(of)s 6630(the)s 7017(chapter)s 7819(to)s 8097(collect)s
+8833(in,)s 220 fnt2 0 10179(@Body)m 240 fnt1 781 10182(where)m
+1421(the)s 1769(body)s 2303(of)s 2574(the)s 2922(chapter)s
+3685(goes,)s 4230(and)s 220 fnt2 4634 10179(@ChapRefSection)m 240 fnt1
+6499 10182(to)m 6738(hold)s 7222(a)s 7388(concluding)s 8505(list)s
+8855(of)s 0 9894(references.)m 1144(This)s 1620(lea)s 4(v)k 3(es)k
+2261(only)s 2741(the)s 3089(tw)s 2(o)k 3499(in)s 9(v)k 4(ocations)k
+4640(of)s 220 fnt2 4911 9891(@Runner)m 240 fnt1 5913 9894(to)m
+6152(e)s 3(xplain.)k 480 9520(The)m 977(\207rst)s 220 fnt2
+1477 9517(@Runner)m 240 fnt1 2548 9520(is)m 2828(just)s 3302(belo)s 6(w)k
+4004(the)s 4421(heading.)s 5413(It)s 5687(will)s 6182(be)s
+6533(the)s 6951(tar)s 4(get)k 7619(of)s 7959(the)s
+220 fnt2 8377 9517(@Run-)m 0 9229(ner&&f)m 6(ollo)k 3(wing)k
+240 fnt1 1494 9232(cross)m 2030(reference)s 2967(at)s 3194(the)s
+3536(be)s 3(ginning)k 4538(of)s 4803(the)s 5146(\207rst)s
+5571(page)s 6073(of)s 6338(the)s 6681(chapter)s 7438(\(see)s
+7872(Section)s 8640(4.3\),)s 0 8944(which)m 642(consequently)s 1959(will)s
+2385(ha)s 4(v)k 3(e)k 2886(null)s 3313(running)s
+4111(headers)s 4892(and)s 5296(the)s 5644(gi)s 6(v)k 3(en)k
+6224(footers.)s 480 8570(The)m 954(second)s 220 fnt2 1724 8567(@Runner)m
+240 fnt1 2772 8570(appears)m 3600(at)s 3878(the)s 4273(v)s 3(ery)k
+4795(end)s 5246(of)s 5563(the)s 5958(chapter)s 9(,)k
+6805(hence)s 7466(on)s 7809(its)s 8132(last)s 8570(page.)s
+0 8282(Since)m 595(no)s 896(in)s 9(v)k 4(ocations)k
+2046(of)s 220 fnt2 2325 8279(@Runner)m 240 fnt1 3335 8282(lie)m
+3638(between)s 4500(it)s 4700(and)s 5113(the)s 5469(\207rst)s
+220 fnt2 5908 8279(@Runner)m 240 fnt1 6850 8282(,)m 6966(it)s
+7166(will)s 7600(be)s 7891(the)s 8247(tar)s 4(get)k
+8855(of)s 220 fnt2 0 7991(@Runner&&f)m 6(ollo)k 3(wing)k
+240 fnt1 2134 7994(on)m 2442(e)s 6(v)k 3(ery)k
+3029(page)s 3547(from)s 4082(the)s 4441(second)s 5175(page)s
+5693(of)s 5975(the)s 6334(chapter)s 7107(to)s 7357(the)s
+7716(last,)s 8165(inclusi)s 6(v)k 3(e,)k 0 7706(and)m
+404(will)s 830(supply)s 1523(the)s 1871(format)s 2567(of)s
+2838(their)s 3335(headers)s 4116(and)s 4520(footers.)s 480 7332(The)m
+908(interested)s 1893(reader)s 2549(might)s 3166(care)s 3618(to)s
+3857(predict)s 4579(the)s 4927(outcome)s 5806(in)s 6048(unusual)s
+6848(cases,)s 7458(such)s 7954(as)s 8203(when)s 8778(the)s
+0 7044(heading)m 811(occupies)s 1699(tw)s 2(o)k 2109(pages,)s
+2761(or)s 3020(when)s 3596(a)s 3762(chapter)s 4524(occupies)s
+5412(only)s 5892(one,)s 6345(or)s 6604(\(assuming)s 7640(a)s
+7806(change)s 8540(to)s 8778(the)s 0 6756(g)m 1(ap)k
+386(between)s 1227(chapters\))s 2138(when)s 2702(a)s 2855(chapter)s
+3605(starts)s 4146(halfw)s 2(ay)k 4956(do)s 6(wn)k
+5527(a)s 5680(page.)s 6283(Such)s 6807(predictions)s 7907(can)s
+8283(be)s 8552(made)s 0 6468(with)m 482(great)s 1019(con\207dence.)s
+480 6094(The)m 903(e)s 3(xpression)k 220 fnt2 1975 6091(@RunningTitle @OrElse @Title)m
+240 fnt1 5125 6094(appearing)m 6116(in)s 6354(the)s 6697(second)s
+220 fnt2 7415 6091(@Runner)m 240 fnt1 8412 6094(returns)m 0 5806(the)m
+354(v)s 6(alue)k 928(of)s 1205(the)s 220 fnt2
+1560 5803(@RunningTitle)m 240 fnt1 3070 5806(parameter)m 4090(of)s 220 fnt2
+4368 5803(@Chapter)m 240 fnt1 5437 5806(if)m 5660(this)s 6063(is)s
+6279(not)s 6651(equal)s 7231(to)s 7476(the)s 7830(def)s 2(ault)k
+8558(v)s 6(alue)k 220 fnt2 0 5515(dft)m 240 fnt1
+240 5518(,)m 347(or)s 220 fnt2 606 5515(@Title)m 240 fnt1
+1294 5518(otherwise:)m
+[ /Dest /LOUT19_4637_exa_chap_5 /DEST pdfmark
+220 fnt2 480 5036(def @OrElse)m 480 4748( left x)m 480 4460( r)m -3(ight y)k
+480 4172({)m 480 3884( x @Case {)m 480 3596( dft @Y)m 4(ield y)k 480 3308( else @Y)m 4(ield x)k
+480 3020( })m 480 2732(})m 240 fnt1 0 2238(This)m 476(produces)s
+1391(the)s 1739(ef)s 6(fect)k 2335(of)s 220 fnt2
+480 1737(named @RunningTitle { @Title })m 240 fnt1 0 1238(which)m 676(unfortunately)s 2052(is)s
+2296(not)s 2696(permissible)s 3887(as)s 4171(it)s 4397(stands,)s
+5136(because)s 220 fnt2 5983 1235(@Title)m 240 fnt1 6705 1238(is)m
+6949(not)s 7349(visible)s 8076(within)s 8778(the)s 0 950(def)m 2(ault)k
+721(v)s 6(alue)k 1289(of)s 220 fnt2 1560 947(@RunningTitle)m
+240 fnt1 3004 950(.)m 480 576(Finally)m 15(,)k 1249(the)s
+1597(de\207nitions)s 2658(for)s 2996(sections)s 3817(omitted)s 4605(earlier)s
+5273(are)s 5620(as)s 5870(follo)s 6(ws:)k
+[ /Dest /LOUT19_4637_exa_chap_6 /DEST pdfmark
+220 fnt2
+480 75(def @EndSectionsPlace { @Galle)m 4(y })k
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 96 102
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(96)m 240 fnt6 8434 -1580(Chapter)m 9284(4.)s
+9558(Examples)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+220 fnt2 480 13207(def @EndSections f)m 6(orce into { @EndSectionsPlace&&preceding } {})k
+480 12919(macro @BeginSections { //@SectionGap @SectionList 1 // @EndSectionsPlace // })m
+[ /Dest /LOUT16_1794_exa_chap_4 /DEST pdfmark
+480 12422(def @Section f)m 6(orce into { @SectionList&&preceding })k 480 12134( named @T)m 26(ag {})k
+480 11846( named @Title {})m 480 11558( named @RunningTitle { dft })m 480 11270( body @Body)m 480 10982({)m 480 10694( def @SectionTitle)m
+480 10406( {)m 480 10118( @SectionNumbers @Case {)m 480 9830( {Y)m 30(es y)k 4(es} @Y)k 4(ield { {@NumberOf @T)k 26(ag}.)k 13( |2s @Title })k
+480 9542( else @Y)m 4(ield @Title)k 480 9254( })m 480 8966( })m 480 8390( @Heading @Protect @SectionTitle)m
+480 8102( // @NumberMar)m -3(k)k 4(er {)k 480 7814( {@ChapterList&&@T)m 26(ag @Open { @T)k 26(ag }}.{)k
+480 7526( @SectionList&&@T)m 26(ag @Open { @T)k 26(ag }})k 480 7238( })m 480 6950( // @ChapterList&&preceding @T)m 26(agged @T)k 26(ag)k
+480 6662( // @SectionList&&preceding @T)m 26(agged @T)k 26(ag)k 480 6374( // @NumberMar)m -3(k)k 4(er&&preceding @T)k 26(agged @T)k 26(ag)k
+480 6086( // @P)m 8(ageMar)k -3(k)k 4(er&&preceding @T)k 26(agged @T)k 26(ag)k
+480 5798( // { &3f @SectionTitle } @ContentsEntr)m -6(y {@P)k 8(ageOf @T)k 26(ag})k 480 5510( //0io @Body)m
+480 5222(})m
+[ /Dest /LOUT16_1794_exa_chap_5 /DEST pdfmark
+240 fnt1 0 4728(The)m 220 fnt2 409 4725(@BeginSections)m
+240 fnt1 2066 4728(macro)m 2696(in)s 9(v)k 4(ok)k 2(es)k
+220 fnt2 3457 4725(@SectionList)m 240 fnt1 4748 4728(,)m 4835(preceded)s
+5736(by)s 6010(the)s 6338(appropriate)s 7462(g)s 1(ap)k
+7840(and)s 8224(follo)s 6(wed)k 0 4440(by)m 284(an)s
+220 fnt2 556 4437(@EndSectsPlace)m 240 fnt1 2307 4440(for)m 2635(closing)s
+3368(the)s 3705(list)s 4045(of)s 4306(sections)s 5116(when)s
+5681(the)s 220 fnt2 6019 4437(@EndSections)m 240 fnt1 7515 4440(symbol)m
+8264(is)s 8463(found.)s 220 fnt2 0 4149(@Section)m 240 fnt1
+997 4152(itself)m 1542(is)s 1749(just)s 2151(a)s 2314(cop)s 2(y)k
+2829(of)s 220 fnt2 3097 4149(@Chapter)m 240 fnt1 4156 4152(with)m
+4635(slight)s 5223(changes)s 6042(to)s 6278(the)s 6623(format.)s
+7420(The)s 7845(parameter)s 8855(of)s 220 fnt2 0 3861(@NumberMar)m -3(k)k 4(er)k
+240 fnt1 1752 3864(is)m 1970(a)s 2143(simple)s 2844(generalization)s
+4262(of)s 4540(the)s 4896(one)s 5305(within)s 220 fnt2
+5981 3861(@Chapter)m 240 fnt1 6984 3864(.)m 7156(Notice)s 7856(that)s
+8282(we)s 8625(ha)s 4(v)k 3(e)k 0 3576(tak)m 2(en)k
+573(care)s 1026(that)s 1444(the)s 1792(v)s 6(alue)k
+2360(of)s 2631(this)s 3027(parameter)s 4041(be)s 4323(a)s
+4489(juxtaposition)s 5795(of)s 6066(simple)s 6759(w)s 2(ords:)k
+7508(although)s 220 fnt2 480 3075({@ChapterList&&@T)m 26(ag @Open { @T)k 26(ag }}.)k 13( &)k
+480 2787({@SectionList&&@T)m 26(ag @Open { @T)k 26(ag }})k 240 fnt1 0 2288(is)m
+210(formally)s 1086(equi)s 6(v)k 6(alent,)k 220 fnt2
+2177 2285(&)m 240 fnt1 2379 2288(w)m 2(as)k 2800(not)s
+3166(permitted)s 4139(within)s 4807(a)s 220 fnt2 4973 2285(@T)m 26(ag)k
+240 fnt1 5596 2288(parameter)m 6610(until)s 7103(recently)s 15(.)k
+480 1914(The)m 930(DocumentSetup)s 2548(package)s 3411(also)s 3872(contains)s
+4743(de\207nitions)s 5826(for)s 6187(subsections)s 7364(in)s 7630(the)s
+8001(same)s 8571(style.)s 0 1626(The)m 3(y)k 564(raise)s
+1091(the)s 1461(question)s 2350(of)s 2643(whether)s 3494(Lout)s
+4028(is)s 4259(capable)s 5066(of)s 5359(producing)s 6404(subsections)s
+7580(should)s 8298(the)s 8668(user)s 0 1338(place)m 220 fnt2
+542 1335(@BeginSections)m 240 fnt1 2159 1338(,)m 220 fnt2 2248 1335(@Section)m
+240 fnt1 3188 1338(,)m 3276(and)s 220 fnt2 3662 1335(@EndSections)m
+240 fnt1 5151 1338(within)m 5800(a)s 240 fnt6 5948 1340(section)m
+240 fnt1 6619 1338(,)m 6708(and)s 7093(whether)s 7905(such)s
+8382(nesting)s 0 1050(could)m 592(proceed)s 1409(to)s 1650(arbitrary)s
+2527(depth.)s 3225(Arbitrary)s 4169(nesting)s 4915(of)s 5188(sections)s
+6011(within)s 6681(sections)s 7504(is)s 7716(a)s 4(v)k 6(ailable)k
+8627(no)s 6(w)k 15(,)k 0 762(although)m 883(the)s
+1218(numbering)s 2295(w)s 2(ould)k 2937(of)s 3195(course)s
+3862(be)s 4131(wrong.)s 4894(The)s 5309(author)s 5967(has)s
+6324(w)s 2(ork)k 2(ed)k 7083(out)s 7436(de\207nitions)s
+8484(which)s 0 474(pro)m 3(vide)k 773(correct)s 1484(numbering)s
+2563(to)s 2790(arbitrary)s 3654(depth,)s 4282(with)s 4752(an)s
+5024(arbitrary)s 5888(format)s 6573(for)s 6899(each)s 7383(le)s 6(v)k 3(el.)k
+7991(These)s 8606(were)s 0 186(not)m 376(incorporated)s 1652(into)s
+2087(DocumentSetup)s 3693(because)s 4516(the)s 4874(author)s 5555(considers)s
+6520(sub-)s 6921(subsections)s 8085(to)s 8334(be)s 8627(poor)s
+
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 97 103
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(4.4.)m 1871(Chapter)s 2(s)k 2802(and)s
+3228(sections)s 240 fnt5 10248 -1583(97)m gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+0 13205(style,)m
+558(and)s 962(he)s 1244(prefers)s 1957(separate)s 2795(names)s
+3457(for)s 3795(the)s 4143(symbols)s 4992(at)s 5224(each)s
+5719(le)s 6(v)k 3(el.)k 240 fnt5 0 12412(4.5.)m
+471(Bibliographies)s
+[ /Dest /LOUTbiblio /DEST pdfmark
+
+[ /Dest /LOUT19_4637_exa_bibl_1 /DEST pdfmark
+240 fnt1 533 11935(The)m 953(\207rst)s 1376(step)s
+1806(in)s 2041(the)s 2382(production)s 3468(of)s 3731(a)s
+3889(bibliograph)s 1(y)k 5157(is)s 5359(to)s 5591(create)s
+6208(a)s 6366(database)s 7237(of)s 7500(references)s 8523(based)s
+0 11647(on)m 297(the)s 645(de\207nition)s
+[ /Dest /LOUT19_4637_exa_bibl_2 /DEST pdfmark
+220 fnt2 480 11196(e)m 6(xpor)k -8(t @T)k 26(ype @A)k 6(uthor @Title @Institution @Number @Pub)k 4(lisher)k
+480 10908( @Y)m 30(ear @Proceedings @Jour)k -5(nal @V)k 17(olume @P)k 8(ages @Comment)k
+480 10332(def @Ref)m 6(erence)k 480 10044( named @T)m 26(ag)k 3270({ )s 11(T)k 26(A)k 6(G? })k
+480 9756( named @T)m 26(ype)k 3270({ )s 11(TYPE? })k 480 9468( named @A)m 6(uthor)k
+3270({ A)s 11(UTHOR? })k 480 9180( named @Title)m 3270({ )s 11(TITLE? })k
+480 8892( named @Institution)m 3270({ INSTITUTION? })s 480 8604( named @Number)m 3270({ NUMBER? })s 480 8316( named @Pub)m 4(lisher)k
+3270({ PUBLISHER? })s 480 8028( named @Y)m 30(ear)k 3270({ )s 19(YEAR? })k
+480 7740( named @Proceedings)m 3270({ PR)s 4(OCEEDINGS? })k 480 7452( named @Jour)m -5(nal)k
+3270({ JOURNAL? })s 480 7164( named @V)m 17(olume)k 3270({ )s 11(V)k 8(OLUME? })k
+480 6876( named @P)m 8(ages)k 3270({ P)s 26(A)k 6(GES? })k
+480 6588( named @Comment)m 3270({ @Null })s 480 6300({ @Null })m 240 fnt1 0 5806(F)m 3(or)k
+389(e)s 3(xample,)k 1303(the)s 1651(database)s 2530(might)s
+3148(contain)s 220 fnt2 480 5305({ @Ref)m 6(erence)k 480 5017( @T)m 26(ag { str)k -3(unk1979style })k
+480 4729( @T)m 26(ype { Book })k 480 4441( @A)m 6(uthor { Str)k -3(unk, )k 8(William and )k 8(White)k 3(, E.)k 13( B)k 4(.)k 13( })k
+480 4153( @Title { )m 11(The Elements of Style })k 480 3865( @Pub)m 4(lisher { MacMillan, third edition })k 480 3577( @Y)m 30(ear { 1979 })k
+480 3289(})m
+[ /Dest /LOUT16_1794_exa_bibl_1 /DEST pdfmark
+480 2797({ @Ref)m 6(erence)k 480 2509( @T)m 26(ag { kingston92 })k
+480 2221( @T)m 26(ype { )k 11(T)k 26(echRepor)k -8(t })k
+480 1933( @A)m 6(uthor { Kingston, Jeffre)k 4(y H.)k 13( })k 480 1645( @Title { Document F)m 6(or)k -5(matting with Lout \(Second Edition\) })k
+480 1357( @Number { 449 })m 480 1069( @Institution { Basser Depar)m -8(tment of Computer)k 480 781(Science F09, Univ)m 5(ersity of Sydne)k 4(y 2006, A)k 6(ustr)k 2(alia })k
+480 493( @Y)m 30(ear { 1992 })k 480 205(})m
+[ /Dest /LOUT16_1794_exa_bibl_2 /DEST pdfmark
+
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 98 104
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(98)m 240 fnt6 8434 -1580(Chapter)m 9284(4.)s
+9558(Examples)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+0 13205(Since)m 596(named)s 1301(parameters)s
+2408(are)s 2764(optional,)s 3664(we)s 4008(ha)s 4(v)k 3(e)k
+4519(one)s 4930(for)s 5277(e)s 6(v)k 3(ery)k
+5862(concei)s 6(v)k 6(able)k 7057(type)s 7534(of)s
+7814(attrib)s 4(ute,)k 8722(and)s 0 12917(simply)m 702(lea)s 4(v)k 3(e)k
+1252(out)s 1614(those)s 2172(that)s 2586(do)s 2876(not)s
+3238(apply)s 3821(in)s 4060(an)s 3(y)k 4454(particular)s
+5424(reference.)s 6472(W)s 19(e)k 6837(can)s 7223(print)s
+7730(a)s 7893(reference)s 8832(by)s 0 12629(using)m 572(the)s
+220 fnt2 920 12626(@Open)m 240 fnt1 1726 12629(symbol)m 2486(to)s
+2725(get)s 3077(at)s 3309(its)s 3585(attrib)s 4(utes:)k
+220 fnt2 480 12128(@Ref)m 6(erence&&str)k -3(unk1979style @Open)k 480 11840({ @A)m 6(uthor)k 11(, {Slope @F)k 6(ont @Title}.)k 13( @Pub)k 4(lisher)k 11(, @Y)k 30(ear)k 11(.)k 13( })k
+240 fnt1 0 11344(The)m 428(right)s 939(parameter)s 1953(of)s
+220 fnt2 2224 11341(@Open)m 240 fnt1 3030 11344(may)m 3496(use)s
+3871(the)s 4219(e)s 3(xported)k 5111(parameters)s 6209(of)s
+6480(the)s 6828(left,)s 7252(and)s 7656(so)s 7922(the)s
+8270(result)s 8860(is)s 480 10839(W)m 9(illiam)k 1313(Strunk)s
+2012(and)s 2416(E.)s 2666(B.)s 2930(White,)s 240 fnt6
+3681 10841(The)m 4093(Elements)s 5024(of)s 5305(Style)s 240 fnt1
+5762 10839(.)m 5926(Macmillan,)s 7068(1979.)s 0 10340(Incidentally)m 15(,)k
+1235(we)s 1573(are)s 1923(not)s 2292(limited)s 3029(to)s
+3271(just)s 3679(one)s 4084(database)s 4966(of)s 5240(references;)s
+6335(se)s 6(v)k 3(eral)k 220 fnt2 7060 10337(@Database)m
+240 fnt1 8277 10340(symbols)m 0 10052(can)m 380(nominate)s 1317(the)s
+1656(same)s 2193(symbol,)s 2996(and)s 3391(in)s 9(v)k 4(ocations)k
+4523(of)s 4784(that)s 5193(symbol)s 5944(can)s 6324(appear)s
+7011(in)s 7245(the)s 7584(document)s 8578(itself)s 0 9764(as)m
+250(well)s 716(if)s 933(we)s 1268(wish.)s 480 9390(The)m
+930(second)s 1675(step)s 2135(is)s 2368(to)s 2629(create)s
+3276(a)s 3464(database)s 4366(of)s 4659(print)s 5192(styles)s
+5809(for)s 6170(the)s 6540(v)s 6(arious)k 7311(types)s
+7889(of)s 8183(reference)s 0 9102(\(Book,)m 706(T)s 16(echReport,)k
+1926(etc.\),)s 2450(based)s 3053(on)s 3350(the)s 3698(follo)s 6(wing)k
+4675(de\207nition:)s 220 fnt2 480 8601(e)m 6(xpor)k -8(t @Style)k
+480 8313(def @RefStyle)m 480 8025( left @T)m 26(ag)k 480 7737( named @Style r)m -3(ight reftag {})k
+480 7449({})m 240 fnt1 0 6955(Notice)m 682(that)s 1089(the)s
+1426(named)s 2111(parameter)s 220 fnt2 3114 6952(@Style)m 240 fnt1
+3865 6955(has)m 4224(a)s 4379(right)s 4879(parameter)s 220 fnt2
+5882 6952(reftag)m 240 fnt1 6431 6955(.)m 6584(The)s 7001(style)s
+7497(database)s 8365(has)s 8724(one)s 0 6667(entry)m 545(for)s
+883(each)s 1378(type)s 1846(of)s 2117(reference:)s 220 fnt2
+480 6166({ Book @RefStyle @Style)m 480 5878( { @Ref)m 6(erence&&reftag @Open)k 480 5590( { @A)m 6(uthor)k 11(, {Slope @F)k 6(ont @Title}.)k 13( @Pub)k 4(lisher)k 11(, @Y)k 30(ear)k 11(.)k 13( @Comment })k
+480 5302( })m 480 5014(})m 480 4438({ )m 11(T)k 26(echRepor)k -8(t @RefStyle @Style)k
+480 4150( { @Ref)m 6(erence&&reftag @Open)k 480 3862( { @A)m 6(uthor)k 11(, {Slope @F)k 6(ont @Title}.)k 13( )k 11(T)k 26(ech.)k 13( Rep)k 7(.)k 13( @Number \(@Y)k 30(ear\),)k
+480 3574(@Institution.)m 13( @Comment })k 480 3286( })m 480 2998(})m 240 fnt1
+0 2504(and)m 404(so)s 670(on.)s 1074(The)s 1502(follo)s 6(wing)k
+2479(prints)s 3074(the)s 3422(reference)s 4365(whose)s 5033(tag)s
+5378(is)s 220 fnt2 5588 2501(str)m -3(unk1979style)k 240 fnt1
+7180 2504(in)m 7423(the)s 7771(Book)s 8352(style:)s 220 fnt2
+480 2003(@RefStyle&&Book @Open { @Style str)m -3(unk1979style })k 240 fnt1 0 1505(It)m 205(has)s
+575(result)s 480 1050(W)m 9(illiam)k 1313(Strunk)s 2012(and)s
+2416(E.)s 2666(B.)s 2930(White.)s 240 fnt6 3678 1052(The)m
+4090(Elements)s 5021(of)s 5302(Style)s 240 fnt1 5759 1050(.)m
+5923(Macmillan)s 6955(.)s 7119(Third)s 7708(Edition)s 8409(,)s
+8516(1979)s 8987(.)s 0 551(Notice)m 696(ho)s 6(w)k
+1160(the)s 220 fnt2 1512 548(@Style)m 240 fnt1 2277 551(parameter)m
+3295(of)s 220 fnt2 3569 548(@RefStyle)m 240 fnt1 4675 551(is)m
+4889(gi)s 6(v)k 3(en)k 5472(the)s 5824(parameter)s
+220 fnt2 6841 548(str)m -3(unk1979style)k 240 fnt1 8373 551(,)m
+8484(which)s 0 263(it)m 192(uses)s 655(to)s 894(open)s
+1417(the)s 1765(appropriate)s 2909(reference.)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 99 105
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(4.5.)m 1871(Biblio)s 2(gr)k 3(aphies)k
+240 fnt5 10249 -1583(99)m gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+480 13205(W)m 19(e)k
+858(can)s 1256(consult)s 2017(the)s 220 fnt2 2374 13202(@T)m 26(ype)k
+240 fnt1 3121 13205(attrib)m 4(ute)k 3977(of)s 4258(a)s
+4433(reference)s 5386(to)s 5634(\207nd)s 6075(out)s 6450(its)s
+6736(style,)s 7303(which)s 7955(brings)s 8613(us)s 8887(to)s
+0 12917(the)m 348(follo)s 6(wing)k 1325(de\207nition)s 2299(for)s
+2637(printing)s 3447(out)s 3813(a)s 3979(reference)s 4922(in)s
+5165(the)s 5513(style)s 6020(appropriate)s 7164(to)s 7403(it:)s
+220 fnt2 480 12416(def @RefPr)m -3(int)k 480 12128( r)m -3(ight reftag)k
+480 11840({ @RefStyle&&{ @Ref)m 6(erence&&reftag @Open { @T)k 26(ype } })k 480 11552( @Open { @Style reftag })m 480 11264(})m
+240 fnt1 0 10770(F)m 3(or)k 389(e)s 3(xample,)k
+1303(to)s 1542(e)s 6(v)k 6(aluate)k 220 fnt2
+2382 10767(@RefPr)m -3(int str)k -3(unk1979style)k 240 fnt1 4992 10770(,)m
+5099(Lout)s 5611(\207rst)s 6042(e)s 6(v)k 6(aluates)k
+220 fnt2 480 10269(@Ref)m 6(erence&&str)k -3(unk1979style @Open { @T)k 26(ype })k
+240 fnt1 0 9771(whose)m 668(result)s 1258(is)s 220 fnt2
+1468 9768(Book)m 240 fnt1 1968 9771(,)m 2075(and)s 2479(then)s
+2948(e)s 6(v)k 6(aluates)k 220 fnt2 480 9289(@RefStyle&&Book @Open { @Style str)m -3(unk1979style })k
+240 fnt1 0 8791(as)m 266(before.)s 1056(Complicated)s 2353(as)s
+2619(this)s 3032(is,)s 3314(with)s 3813(its)s 4105(tw)s 2(o)k
+4531(databases)s 5515(and)s 5935(cle)s 6(v)k 3(er)k
+6586(passing)s 7373(about)s 7982(of)s 8269(tags,)s 8778(the)s
+0 8503(adv)m 6(antages)k 1098(of)s 1359(separating)s 2384(references)s
+3405(from)s 3919(printing)s 4718(styles)s 5303(are)s 5640(considerable:)s
+7004(printing)s 7804(styles)s 8389(may)s 8844(be)s 0 8215(changed)m
+856(easily)s 15(,)k 1505(and)s 1909(non-e)s 3(xpert)k
+3002(users)s 3544(need)s 4054(ne)s 6(v)k 3(er)k
+4636(see)s 4997(them.)s 480 7841(Finally)m 15(,)k 1243(we)s
+1571(come)s 2138(to)s 2370(the)s 2711(problem)s 3561(of)s
+3825(printing)s 4628(out)s 4987(a)s 5146(numbered)s 6154(list)s
+6498(of)s 6762(references,)s 7842(and)s 8239(referring)s 0 7553(to)m
+251(them)s 802(by)s 1108(number)s 1912(in)s 2167(the)s
+2528(body)s 3074(of)s 3358(the)s 3718(document.)s 4839(The)s
+5279(\207rst)s 5723(step)s 6173(is)s 6396(to)s 6647(create)s
+7285(a)s 7463(numbered)s 8491(list)s 8855(of)s 0 7265(places)m
+648(that)s 1066(g)s 1(alle)k 3(ys)k 1790(containing)s
+2853(references)s 3884(may)s 4350(attach)s 4977(to:)s
+[ /Dest /LOUT19_4637_exa_bibl_3 /DEST pdfmark
+220 fnt2
+480 6764(def @Ref)m 6(erenceSection)k 480 6476( named @T)m 26(ag {})k 480 6188( named @Title { Ref)m 6(erences })k
+480 5900( named @RunningTitle { dft })m 480 5612( named style r)m -3(ight tag { tag.)k 13( })k 480 5324( named headstyle r)m -3(ight @Title { @Heading @Title })k
+480 5036( named indent { @DispIndent })m 480 4748( named gap { @DispGap })m 480 4460( named star)m -8(t { 1 })k 480 4172({)m
+480 3884( def @RefList r)m -3(ight n)k 2(um)k 480 3596( {)m 480 3308( @NumberMar)m -3(k)k 4(er n)k 2(um & indent @Wide {style n)k 2(um} | @RefPlace)k
+480 3020( //gap @RefList @Ne)m 6(xt n)k 2(um)k 480 2732( })m 480 2156( @Protect headstyle @Title)m
+480 1868( // @P)m 8(ageMar)k -3(k)k 4(er&&preceding @T)k 26(agged @T)k 26(ag)k
+480 1580( // @Title @MajorContentsEntr)m -6(y {@P)k 8(ageOf @T)k 26(ag})k 480 1292( // @Runner)m
+480 1004( @F)m 6(ootEv)k 5(en { |0.5r)k -8(t 0.8f @F)k 6(ont @B @P)k 8(ageNum })k
+480 716( @F)m 6(ootOdd { |0.5r)k -8(t 0.8f @F)k 6(ont @B @P)k 8(ageNum })k
+480 428( //@DispGap @RefList star)m -8(t)k 480 140( // @Runner)m
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 100 106
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(100)m 240 fnt6 8434 -1580(Chapter)m 9284(4.)s
+9558(Examples)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13264 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+220 fnt2 480 13207( @T)m 26(opEv)k 5(en { @B @P)k 8(ageNum })k
+480 12919( @T)m 26(opOdd { @I {@RunningTitle @OrElse @Title} |1r)k -8(t @B @P)k 8(ageNum })k 480 12631(})m
+240 fnt1 0 12137(W)m 19(e)k 378(place)s 948(the)s
+1305(e)s 3(xpression)k 220 fnt2 2392 12134(@Ref)m 6(erenceSection)k
+240 fnt1 4408 12137(at)m 4649(the)s 5007(point)s 5569(where)s
+6218(we)s 6563(w)s 2(ant)k 7096(the)s 7453(list)s
+7814(of)s 8095(references)s 0 11849(to)m 239(appear;)s 988(its)s
+1264(v)s 6(alue)k 1832(is)s 2042(something)s 3092(lik)s 2(e)k
+220 fnt2 480 11348(1.)m 13( @RefPlace)k 480 11060(2.)m 13( @RefPlace)k
+480 10772(3.)m 13( @RefPlace)k 480 10484(...)m 240 fnt1 0 10033(where)m
+220 fnt2 648 10030(@RefPlace)m 240 fnt1 1820 10033(is)m 220 fnt2
+2038 10030(@Galle)m 4(y)k 240 fnt1 2945 10033(as)m 3203(usual.)s
+3880(W)s 19(e)k 4258(can)s 4655(scatter)s 5345(multiple)s
+6205(lists)s 6649(of)s 6928(references)s 7967(through)s 8778(the)s
+0 9745(document)m 1004(if)s 1220(we)s 1555(wish)s 2063(\(at)s
+2373(the)s 2721(end)s 3124(of)s 3395(each)s 3889(chapter)s 9(,)k
+4689(for)s 5027(e)s 3(xample\),)k 6019(simply)s 6724(by)s
+7017(placing)s 220 fnt2 7773 9742(@Ref)m 6(erence-)k 0 9454(Section)m
+240 fnt1 777 9457(at)m 1009(each)s 1504(point.)s 480 9083(Our)m
+912(task)s 1358(is)s 1568(completed)s 2622(by)s 2916(the)s
+3264(follo)s 6(wing)k 4241(de\207nition:)s
+[ /Dest /LOUT19_4637_exa_bibl_4 /DEST pdfmark
+220 fnt2 480 8582(def @Ref r)m -3(ight x)k
+480 8294({)m 480 8006( def sendref into { @RefPlace&&f)m 6(ollo)k 3(wing })k 480 7718( r)m -3(ight @K)k 8(e)k 4(y)k
+480 7430( {)m 480 7142( @NumberMar)m -3(k)k 4(er&&preceding @T)k 26(agged x &)k
+480 6854( @P)m 8(ageMar)k -3(k)k 4(er&&preceding @T)k 26(agged x &)k
+480 6566( @RefPr)m -3(int x)k 480 6278( })m 480 5702( @NumberMar)m -3(k)k 4(er&&x @Open { @T)k 26(ag } sendref x)k
+480 5414(})m 240 fnt1 0 4920(Gi)m 6(v)k 3(en)k
+633(this)s 1029(de\207nition,)s 2053(the)s 2401(in)s 9(v)k 4(ocation)k
+220 fnt2 3455 4917(@Ref str)m -3(unk1979style)k 240 fnt1 5672 4920(has)m
+6042(result)s 220 fnt2 480 4421(@NumberMar)m -3(k)k 4(er&&str)k -3(unk1979style @Open { @T)k 26(ag })k
+240 fnt1 0 3922(plus)m 450(the)s 798(g)s 1(alle)k 3(y)k
+220 fnt2 1432 3919(sendref str)m -3(unk1979style)k 240 fnt1 3757 3922(.)m
+3921(W)s 19(e)k 4290(\207rst)s 4721(follo)s 6(w)k
+5393(what)s 5918(happens)s 6754(to)s 6993(the)s 7341(g)s 1(alle)k 3(y)k 15(.)k
+480 3548(According)m 1555(to)s 1806(its)s 220 fnt2 2094 3545(into)m
+240 fnt1 2512 3548(clause,)m 3229(the)s 3589(g)s 1(alle)k 3(y)k
+4235(will)s 4673(replace)s 5430(a)s 220 fnt2 5609 3545(@RefPlace)m
+240 fnt1 6785 3548(in)m 7040(the)s 7400(nearest)s 8149(follo)s 6(wing)k
+220 fnt2 0 3257(@Ref)m 6(erenceSection)k 240 fnt1 1946 3260(.)m
+2114(If)s 2348(e)s 6(v)k 3(ery)k 2928(such)s
+3428(g)s 1(alle)k 3(y)k 4066(is)s 4280(a)s
+4450(sorted)s 5096(g)s 1(alle)k 3(y)k 5734(whose)s
+6406(k)s 2(e)k 3(y)k 6805(is)s 7019(the)s
+7371(reference')s 13(s)k 8472(tag,)s 8876(as)s 0 2972(this)m
+396(one)s 798(is,)s 1064(the)s 3(y)k 1527(will)s
+1953(appear)s 2650(sorted)s 3292(by)s 3586(tag.)s 4042(The)s
+4470(g)s 1(alle)k 3(y')k 13(s)k 5260(object)s
+5904(is)s 220 fnt2 480 2471(@NumberMar)m -3(k)k 4(er&&preceding @T)k 26(agged str)k -3(unk1979style &)k
+480 2183(@P)m 8(ageMar)k -3(k)k 4(er&&preceding @T)k 26(agged str)k -3(unk1979style &)k
+480 1895(@RefPr)m -3(int str)k -3(unk1979style)k 240 fnt1 0 1397(The)m
+428(result)s 1017(of)s 1287(the)s 220 fnt2 1634 1394(@T)m 26(agged)k
+240 fnt1 2622 1397(symbol)m 3381(is)s 3590(al)s 2(w)k 2(ays)k
+220 fnt2 4300 1394(@Null)m 240 fnt1 4885 1397(,)m 4991(so)s
+5256(this)s 5651(prints)s 6245(the)s 220 fnt2 6592 1394(str)m -3(unk1979style)k
+240 fnt1 8183 1397(reference)m 0 1109(in)m 243(the)s 591(appropriate)s
+1735(style)s 2242(at)s 2474(the)s 220 fnt2 2822 1106(@RefPlace)m
+240 fnt1 3926 1109(,)m 4033(as)s 4283(desired.)s 480 735(No)m 6(w)k
+220 fnt2 1044 732(@NumberMar)m -3(k)k 4(er&&preceding)k 240 fnt1
+4082 735(is)m 4342(the)s 4741(nearest)s 5527(preceding)s 6573(in)s 9(v)k 4(ocation)k
+7677(of)s 220 fnt2 7999 732(@Number-)m 0 444(Mar)m -3(k)k 4(er)k
+240 fnt1 775 447(in)m 1051(the)s 1432(\207nal)s 1946(document.)s
+3087(This)s 3596(must)s 4155(be)s 4470(the)s 4851(in)s 9(v)k 4(ocation)k
+5939(of)s 220 fnt2 6243 444(@NumberMar)m -3(k)k 4(er)k
+240 fnt1 8021 447(just)m 8460(before)s 0 159(the)m 220 fnt2
+378 156(@RefPlace)m 240 fnt1 1572 159(that)m 2020(recei)s 6(v)k 3(ed)k
+2908(the)s 3286(g)s 1(alle)k 3(y)k 15(,)k
+3988(and)s 4423(so)s 4719(this)s 5145(in)s 9(v)k 4(ocation)k
+6229(of)s 220 fnt2 6530 156(@NumberMar)m -3(k)k 4(er)k
+240 fnt1 8305 159(is)m 8546(gi)s 6(v)k 3(en)k
+
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 101 107
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(4.5.)m 1871(Biblio)s 2(gr)k 3(aphies)k
+240 fnt5 10136 -1583(101)m gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+220 fnt2 0 13202(str)m -3(unk1979style)k
+240 fnt1 1585 13205(as)m 1827(an)s 2102(additional)s 3105(tag)s
+3442(by)s 3728(the)s 220 fnt2 4068 13202(@T)m 26(agged)k
+240 fnt1 5050 13205(symbol.)m 5911(Its)s 6192(original)s 6982(tag)s
+7319(w)s 2(as)k 7732(the)s 8072(number)s 8855(of)s
+0 12917(the)m 348(reference)s 1291(place,)s 1902(which)s 2544(means)s
+3206(that)s 220 fnt2 480 12416(@NumberMar)m -3(k)k 4(er&&str)k -3(unk1979style @Open { @T)k 26(ag })k
+240 fnt1 0 11917(has)m 370(for)s 708(its)s 984(result)s
+1574(the)s 1922(number)s 2713(of)s 2984(the)s 3332(reference)s
+4275(place)s 4835(that)s 5253(recei)s 6(v)k 3(ed)k
+6111(the)s 220 fnt2 6459 11914(str)m -3(unk1979style)k 240 fnt1
+8051 11917(g)m 1(alle)k 3(y)k 15(,)k 8722(and)s
+0 11629(this)m 396(is)s 606(the)s 954(desired)s 1702(result)s
+2292(of)s 220 fnt2 2563 11626(@Ref str)m -3(unk1979style)k 240 fnt1
+4720 11629(.)m 480 11255(It)m 674(might)s 1281(seem)s 1821(that)s
+2228(if)s 2434(we)s 2758(refer)s 3256(to)s 3483(the)s
+220 fnt2 3820 11252(str)m -3(unk1979style)k 240 fnt1 5401 11255(reference)m
+6333(twice,)s 6946(tw)s 2(o)k 7345(copies)s 7996(will)s
+8411(be)s 8681(sent)s 0 10967(to)m 247(the)s 603(reference)s
+1554(list)s 1914(and)s 2326(it)s 2526(will)s 2961(appear)s
+3666(twice.)s 4355(Ho)s 6(we)k 6(v)k 3(er)k 9(,)k
+5324(when)s 5908(more)s 6463(than)s 6941(one)s 7351(sorted)s
+8001(g)s 1(alle)k 3(y)k 8644(with)s 0 10679(the)m
+341(same)s 881(k)s 2(e)k 3(y)k 1269(is)s
+1472(sent)s 1910(to)s 2142(the)s 2483(same)s 3023(place,)s
+3627(only)s 4100(one)s 4495(of)s 4759(them)s 5290(is)s
+5493(printed)s 6221(\(Section)s 7067(1.4\);)s 7551(so)s 7810(pro)s 3(vided)k
+8708(that)s 0 10391(sorted)m 642(g)s 1(alle)k 3(ys)k
+1366(are)s 1713(used)s 2210(there)s 2743(is)s 2953(no)s
+3246(problem.)s 240 fnt5 0 9598(4.6.)m 471(Mer)s 2(ged)k
+1321(index)s 1936(entries)s
+[ /Dest /LOUTexa_inde /DEST pdfmark
+240 fnt1 480 9121(Getting)m 1282(inde)s 3(x)k
+1898(entries)s 2618(to)s 2889(mer)s 4(ge)k 3570(correctly)s
+4505(has)s 4907(been)s 5448(quite)s 6015(a)s 6213(struggle.)s
+7119(It)s 7357(is)s 7599(easy)s 8110(to)s 8382(specify)s
+0 8833(what)m 549(is)s 784(w)s 2(anted,)k 1605(b)s 4(ut)k
+1991(Lout)s 2528(lacks)s 3095(the)s 3468(lists)s 3927(and)s
+4356(objects)s 5109(\(in)s 5456(the)s 5828(object-oriented)s 7357(sense\))s
+8028(that)s 8471(w)s 2(ould)k 0 8545(mak)m 2(e)k
+618(the)s 1012(implementation)s 2615(straightforw)s 2(ard.)k 4295(The)s
+4770(whole)s 5457(problem)s 6360(w)s 2(as)k 6827(reanalysed)s
+7953(for)s 8338(V)s 26(ersion)k 0 8257(3.26,)m 523(reimplemented,)s
+2059(tested)s 2669(more)s 3212(carefully)s 4110(than)s 4574(is)s
+4780(usually)s 5520(necessary)s 6499(in)s 6738(Lout,)s 7292(and)s
+7692(pro)s 3(v)k 3(ed)k 8404(correct)s 0 7969(as)m
+250(follo)s 6(ws.)k 480 7595(W)m 19(e)k 841(ignore)s
+1500(page)s 2000(number)s 2783(ranges)s 3450(in)s 3684(this)s
+4072(proof.)s 4746(It)s 4943(is)s 5145(not)s 5503(hard)s
+5977(to)s 6208(sho)s 6(w)k 6754(that)s 7164(the)s 3(y)k
+7619(will)s 8037(be)s 8310(handled)s 0 7307(correctly)m 910(too,)s
+1332(pro)s 3(vided)k 2246(the)s 3(y)k 2718(do)s
+3019(not)s 3394(o)s 3(v)k 3(erlap)k 4166(with)s
+4657(other)s 5217(entries)s 5912(with)s 6403(the)s 6759(same)s
+7315(k)s 2(e)k 3(y)k 15(.)k 7813(The)s
+8250(ef)s 6(fect)k 8855(of)s 0 7019(such)m 496(o)s 3(v)k 3(erlaps)k
+1352(is)s 1563(unde\207ned,)s 2616(lea)s 4(ving)k 3370(us)s
+3635(nothing)s 4421(to)s 4661(pro)s 3(v)k 3(e.)k
+5365(W)s 19(e)k 5735(also)s 6174(assume)s 6935(that)s
+7354(e)s 6(v)k 3(ery)k 7931(entry)s 8477(with)s
+8960(a)s 0 6731(gi)m 6(v)k 3(en)k 582(k)s 2(e)k 3(y)k
+980(has)s 1352(the)s 1703(same)s 2252(label,)s 2826(including)s
+3785(an)s 3(y)k 4185(format)s 4883(\(that)s 5383(is,)s
+5651(the)s 6002(same)s 6551(initial)s 7165(part)s 7598(before)s
+8267(the)s 8618(page)s 0 6443(number\).)m 974(If)s 1204(labels)s
+1812(dif)s 6(fer)k 2395(the)s 2743(result)s 3333(is)s
+3543(unde\207ned)s 4546(and)s 4950(there)s 5483(is)s 5693(nothing)s
+6478(to)s 6717(pro)s 3(v)k 3(e.)k 480 6069(W)m 19(e)k
+849(will)s 1275(pro)s 3(v)k 3(e)k 1870(that)s
+2288(ra)s 3(w)k 2697(entries)s 3384(al)s 2(w)k 2(ays)k
+4095(ha)s 4(v)k 3(e)k 4596(the)s 4944(form)s
+220 fnt2 480 5570(label &0.03fu {})m 240 fnt1 0 5076(and)m 404(that)s
+822(non-ra)s 3(w)k 1670(entries)s 2357(al)s 2(w)k 2(ays)k
+3068(ha)s 4(v)k 3(e)k 3569(the)s 3917(form)s
+220 fnt2 480 4575(label &0.03fu {}{@OneCol ,} pn1{@OneCol ,} pn2)m 240 fnt1 0 4079(where)m 628(the)s
+964(pattern)s 1672(may)s 2125(repeat)s 2756(for)s 3082(an)s 3(y)k
+3466(number)s 4245(of)s 4504(page)s 5000(numbers)s 220 fnt2
+5862 4076(pn1)m 240 fnt1 6185 4079(,)m 220 fnt2 6280 4076(pn2)m
+240 fnt1 6636 4079(,)m 6731(etc.)s 7160(In)s 7404(addition,)s
+8283(the)s 8618(page)s 0 3791(numbers)m 867(will)s 1284(be)s
+1557(distinct,)s 2359(monotone)s 3364(increasing,)s 4444(and)s 4839(consist)s
+5555(of)s 5817(e)s 3(xactly)k 6549(the)s 6889(numbers)s
+7755(in)s 7989(the)s 8328(original)s 0 3503(unmer)m 4(ged)k
+1011(entries.)s 480 3129(These)m 1128(e)s 3(xpressions)k 2314(are)s
+2683(not)s 3071(the)s 3441(simplest)s 4319(that)s 4758(w)s 2(ould)k
+5435(gi)s 6(v)k 3(e)k 5916(the)s 6286(correct)s
+7030(appearance.)s 8291(W)s 9(ithout)k 220 fnt2 0 2838(&0.03fu {})m
+240 fnt1 1006 2841(the)m 1345(code)s 1844(w)s 2(ould)k
+2491(not)s 2848(w)s 2(ork)k 3390(correctly)s 15(,)k
+4321(as)s 4563(will)s 4980(be)s 5253(e)s 3(xplained)k
+6230(belo)s 6(w)k 15(.)k 6949(W)s 9(ithout)k
+220 fnt2 7775 2838(@OneCol)m 240 fnt1 8778 2841(the)m 0 2553(commas)m
+845(w)s 2(ould)k 1497(be)s 1775(subject)s 2509(to)s
+2744(an)s 3024(optimization)s 4285(which)s 4924(can)s 5309(mer)s 4(ge)k
+5955(them)s 6489(into)s 6911(the)s 7255(pre)s 6(vious)k
+8121(w)s 2(ord.)k 8771(It')s 13(s)k 0 2265(too)m
+363(dif\207cult)s 1184(to)s 1428(e)s 3(xplain)k 2191(when)s
+2772(this)s 3172(optimization)s 4442(will)s 4873(and)s 5282(will)s
+5713(not)s 6084(be)s 6370(applied;)s 7191(suf\207ce)s 7889(to)s
+8133(say)s 8511(that)s 8934(it)s 0 1977(will)m 433(sometimes)s
+1513(not)s 1886(happen)s 2642(when)s 3225(melding,)s 4123(and)s
+4534(this)s 4937(will)s 5370(cause)s 220 fnt2 5964 1974(@Meld)m
+240 fnt1 6717 1977(to)m 6963(get)s 7322(its)s 7605(equality)s
+8436(testing)s 0 1689(wrong,)m 719(so)s 985(it)s 1177(must)s
+1702(be)s 1984(pre)s 6(v)k 3(ented)k 2976(from)s
+3500(happening)s 4551(at)s 4783(all.)s 480 1315(Our)m 940(proof)s
+1559(is)s 1798(by)s 2121(induction)s 3111(on)s 3436(the)s
+3813(number)s 4633(of)s 4933(entries)s 5649(mer)s 4(ged)k
+6448(together)s 13(.)k 7411(First,)s 7984(we)s 8348(need)s
+8887(to)s 0 1027(establish)m 916(the)s 1288(base)s 1793(cases.)s
+2485(If)s 2739(the)s 3111(inde)s 3(x)k 3719(entry)s
+4288(is)s 4522(ra)s 3(w)k 15(,)k 4993(the)s
+5365(follo)s 6(wing)k 6366(e)s 3(xpression)k 7467(is)s
+7701(used)s 8222(to)s 8485(de\207ne)s 0 739(its)m 276(v)s 6(alue:)k
+220 fnt2 480 289(label &0.03fu {})m
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 102 108
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(102)m 240 fnt6 8434 -1580(Chapter)m 9284(4.)s
+9558(Examples)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13368 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+0 13205(If)m 230(the)s 578(inde)s 3(x)k
+1162(entry)s 1707(is)s 1917(non-ra)s 3(w)k 15(,)k
+2803(the)s 3151(follo)s 6(wing)k 4128(e)s 3(xpression)k
+5205(is)s 5415(used)s 5912(to)s 6151(de\207ne)s 6792(its)s
+7068(v)s 6(alue:)k 220 fnt2 480 12704(label &0.03fu {}{@OneCol ,} pn)m 240 fnt1
+0 12208(where)m 220 fnt2 635 12205(pn)m 240 fnt1 919 12208(is)m
+1124(the)s 1466(page)s 1969(number)s 2754(or)s 3008(page)s
+3510(number)s 4296(range)s 4877(of)s 5143(the)s 5485(entry)s 15(.)k
+6120(In)s 6370(each)s 6860(case)s 7321(we)s 7651(clearly)s
+8348(ha)s 4(v)k 3(e)k 8843(an)s 0 11920(entry)m
+545(that)s 963(satis\207es)s 1770(all)s 2063(the)s 2411(requirements)s
+3709(of)s 3980(the)s 4328(theorem.)s 480 11546(No)m 6(w)k
+1000(consider)s 1877(what)s 2409(happens)s 3252(when)s 3835(we)s
+4176(come)s 4757(to)s 5003(mer)s 4(ge)k 5659(tw)s 2(o)k
+6076(entries.)s 6882(The)s 7317(code)s 7832(used)s 8336(to)s
+8582(carry)s 0 11258(out)m 366(this)s 762(mer)s 4(ge)k
+1411(is)s 220 fnt2 480 10757(def @Merge left x r)m -3(ight y)k 480 10469({)m
+480 10181( { x @Rump { x @Meld y } } @Case)m 480 9893( {)m 480 9605( "" @Y)m 4(ield x)k 480 9317( else @Y)m 4(ield { { x{@OneCol ,} } @Meld y })k
+480 9029( })m 480 8453(})m 240 fnt1 0 7959(where)m 220 fnt2
+640 7956(x)m 240 fnt1 808 7959(is)m 1018(the)s 1366(\207rst)s
+1797(entry)s 2342(and)s 220 fnt2 2746 7956(y)m 240 fnt1
+2914 7959(is)m 3124(the)s 3472(second.)s 480 7585(W)m 19(e)k
+849(call)s 1248(the)s 1596(e)s 3(xpression)k 220 fnt2
+480 7084(x @Rump { x @Meld y })m 240 fnt1 0 6584(the)m 240 fnt6 348 6586(discriminant)m
+240 fnt1 1561 6584(,)m 1668(since)s 2215(it)s 2407(determines)s
+3506(which)s 4148(case)s 4615(to)s 4854(apply)s 15(.)k
+5535(W)s 19(e)k 5904(will)s 6330(track)s 6868(this)s
+7264(in)s 7507(detail)s 8092(belo)s 6(w)k 15(,)k
+8764(b)s 4(ut)k 0 6296(approximately)m 15(,)k 1483(its)s
+1770(function)s 2635(is)s 2856(to)s 3105(determine)s 4127(whether)s
+220 fnt2 4968 6293(y)m 240 fnt1 5147 6296(contains)m 6005(something)s
+7066(that)s 7495(is)s 7716(dif)s 6(ferent)k 8602(from)s
+0 6008(an)m 3(ything)k 903(in)s 220 fnt2 1162 6005(x)m
+240 fnt1 1270 6008(.)m 1450(If)s 1696(so,)s 2031(then)s
+220 fnt2 2516 6005(x @Meld y)m 240 fnt1 3630 6008(dif)m 6(fers)k
+4313(from)s 220 fnt2 4852 6005(x)m 240 fnt1 5036 6008(and)m
+5456(the)s 5820(discriminant)s 7089(is)s 7315(non-empty;)s 8480(if)s
+8713(not,)s 220 fnt2 0 5717(x @Meld y)m 240 fnt1 1098 5720(is)m
+1308(equal)s 1881(to)s 220 fnt2 2120 5717(x)m 240 fnt1
+2288 5720(and)m 2692(the)s 3040(discriminant)s 4294(is)s 4504(empty)s 15(.)k
+480 5346(The)m 919(\207rst)s 1362(entry)s 15(,)k 220 fnt2
+1956 5343(x)m 240 fnt1 2064 5346(,)m 2183(may)s 2660(be)s
+2954(ra)s 3(w)k 3374(or)s 3645(non-ra)s 3(w)k 15(,)k
+4543(and)s 4958(the)s 5318(second,)s 220 fnt2 6101 5343(y)m
+240 fnt1 6209 5346(,)m 6328(may)s 6805(also)s 7255(be)s
+7548(ra)s 3(w)k 7969(or)s 8240(non-ra)s 3(w)k 15(,)k
+0 5058(together)m 843(gi)s 6(ving)k 1502(four)s 1960(cases,)s
+2571(which)s 3213(we)s 3548(tak)s 2(e)k 4000(in)s
+4243(turn.)s 480 4684(If)m 718(both)s 1209(entries)s 1904(are)s
+2260(ra)s 3(w)k 15(,)k 2715(then)s 3192(by)s
+3494(assumption)s 4650(the)s 3(y)k 5121(ha)s 4(v)k 3(e)k
+5630(the)s 5986(same)s 6542(labels)s 7158(and)s 7570(so)s
+7844(are)s 8200(identical.)s 0 4396(Thus,)m 220 fnt2 586 4393(x @Meld y)m
+240 fnt1 1684 4396(equals)m 220 fnt2 2346 4393(x)m 240 fnt1
+2454 4396(,)m 2561(the)s 2909(discriminant)s 4163(is)s 4373(empty)s 15(,)k
+5063(and)s 5467(the)s 5815(result)s 6405(is)s 220 fnt2
+6615 4393(x)m 240 fnt1 6723 4396(,)m 6830(which)s 7472(is)s
+7682(correct.)s 480 4022(If)m 220 fnt2 704 4019(x)m 240 fnt1
+866 4022(is)m 1070(ra)s 3(w)k 1473(and)s 220 fnt2
+1870 4019(y)m 240 fnt1 2032 4022(is)m 2236(non-ra)s 3(w)k 15(,)k
+3116(then)s 3579(the)s 3920(discriminant)s 5168(is)s 5372(non-empty)s
+6457(and)s 6855(the)s 7196(result)s 7780(is)s 7984(the)s
+8326(meld)s 8855(of)s 0 3734(tw)m 2(o)k 410(objects,)s
+1194(the)s 1542(\207rst)s 1973(ha)s 4(ving)k 2674(the)s
+3022(form)s 220 fnt2 480 3233(label &0.03fu {}{@OneCol ,})m 240 fnt1 0 2739(being)m
+220 fnt2 585 2736(x)m 240 fnt1 753 2739(with)m 1235(a)s
+1401(comma)s 2165(appended,)s 3190(and)s 3594(the)s 3942(second)s
+4665(being)s 5250(some)s 5811(non-ra)s 3(w)k 6659(entry)s
+7204(such)s 7700(as)s 220 fnt2 480 2238(label &0.03fu {}{@OneCol ,} pn1{@OneCol ,} pn2)m 240 fnt1
+0 1742(where)m 646(the)s 1001(pattern)s 1727(may)s 2200(repeat.)s
+2954(W)s 19(e)k 3329(are)s 3683(assuming)s 4647(by)s
+4947(induction)s 5915(that)s 220 fnt2 6339 1739(y)m 240 fnt1
+6514 1742(has)m 6891(this)s 7293(form.)s 7928(Clearly)s 15(,)k
+8730(this)s 0 1454(meld)m 536(gi)s 6(v)k 3(es)k
+1083(a)s 1249(v)s 6(alue)k 1817(equal)s 2390(to)s
+220 fnt2 2629 1451(y)m 240 fnt1 2737 1454(,)m 2844(which)s
+3486(is)s 3696(the)s 4044(correct)s 4766(result.)s 480 1080(If)m
+220 fnt2 710 1077(x)m 240 fnt1 878 1080(is)m 1088(non-ra)s 3(w)k
+1936(and)s 220 fnt2 2340 1077(y)m 240 fnt1 2508 1080(is)m
+2718(ra)s 3(w)k 15(,)k 3165(the)s 220 fnt2
+3513 1077(@Meld)m 240 fnt1 4259 1080(in)m 4502(the)s 4850(discriminant)s
+6104(melds)s 6726(tw)s 2(o)k 7136(v)s 6(alues)k
+7792(typi\207ed)s 8581(by)s 220 fnt2 480 579(label &0.03fu {}{@OneCol ,} pn1{@OneCol ,} pn2)m 240 fnt1
+0 83(and)m
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 103 109
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(4.6.)m 1871(Mer)s 8(g)k 2(ed)k
+2671(inde)s 4(x)k 3245(entries)s 240 fnt5 10130 -1583(103)m
+gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13266 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+220 fnt2 480 13209(label &0.03fu {})m 240 fnt1 0 12715(The)m
+440(result)s 1042(of)s 1325(this)s 1733(is)s 220 fnt2
+1955 12712(x)m 240 fnt1 2135 12715(with)m 2629(an)s 2924(empty)s
+3588(object)s 4244(added)s 4886(at)s 5130(the)s 5490(end.)s
+6012(This)s 6500(empty)s 7164(object)s 7820(is)s 8042(the)s
+8403(second)s 0 12427(element)m 815(of)s 220 fnt2 1084 12424(y)m
+240 fnt1 1192 12427(,)m 1297(which)s 1937(is)s 2145(not)s
+2509(equal)s 3080(to)s 3317(an)s 3(y)k 3712(element)s
+4526(of)s 220 fnt2 4795 12424(x)m 240 fnt1 4903 12427(:)m
+5067(the)s 5413(second)s 6134(element)s 6948(of)s 220 fnt2
+7217 12424(x)m 240 fnt1 7383 12427(is)m 7591(not)s 220 fnt2
+7955 12424({})m 240 fnt1 8150 12427(b)m 4(ut)k 8510(rather)s
+220 fnt2 0 12136({}{@OneCol ,})m 240 fnt1 1371 12139(,)m 1515(because)s
+220 fnt2 2365 12136(@Meld)m 240 fnt1 3148 12139(treats)m 3752(immediately)s
+5038(adjacent)s 5931(objects)s 6696(as)s 6983(single)s 7647(elements.)s
+8698(The)s 0 11851(result)m 590(of)s 220 fnt2 861 11848(@Rump)m
+240 fnt1 1720 11851(is)m 1930(then)s 2398(this)s 2794(e)s 3(xtra)k
+3327(empty)s 3979(object,)s 4669(so)s 4935(the)s 5282(discriminant)s
+6536(is)s 6745(the)s 7093(empty)s 7744(object)s 8388(and)s
+8791(we)s 0 11563(return)m 220 fnt2 627 11560(x)m 240 fnt1
+735 11563(,)m 842(correctly)s 15(.)k 1839(It)s 2044(is)s
+2254(this)s 2650(case)s 3117(that)s 3535(requires)s 4355(us)s
+4619(to)s 4858(use)s 220 fnt2 5233 11560(0.03fu)m 240 fnt1
+5829 11563(;)m 5941(without)s 6732(it)s 6924(we)s 7259(w)s 2(ould)k
+7914(be)s 8196(melding)s 220 fnt2 480 11062(label{@OneCol ,} pn1{@OneCol ,} pn2)m 240 fnt1
+0 10566(with)m 220 fnt2 480 10118(label)m 240 fnt1 0 9664(producing)m
+220 fnt2 480 9163(label{@OneCol ,} pn1{@OneCol ,} pn2 label)m 240 fnt1 0 8667(leading)m 757(to)s
+996(a)s 1162(non-empty)s 2253(discriminant)s 3507(and)s 3911(the)s
+4259(wrong)s 4924(answer)s 13(.)k 480 8293(This)m 957(lea)s 4(v)k 3(es)k
+1600(just)s 2007(the)s 2357(case)s 2826(where)s 3468(both)s
+220 fnt2 3953 8290(x)m 240 fnt1 4123 8293(and)m 220 fnt2
+4529 8290(y)m 240 fnt1 4698 8293(are)m 5047(non-ra)s 3(w)k 15(.)k
+5992(W)s 19(e)k 6363(will)s 6791(di)s 6(vide)k
+7441(this)s 7839(last)s 8232(case)s 8701(into)s 0 8005(three)m
+533(sub-cases,)s 1556(b)s 4(ut)k 1918(\207rst)s 2349(we)s
+2684(need)s 3194(some)s 3755(general)s 4513(observ)s 6(ations.)k
+480 7631(Inde)m 3(x)k 1078(entries)s 1766(are)s 2114(sorted)s
+2757(for)s 3096(mer)s 4(ging)k 3943(in)s 4187(the)s
+4536(order)s 5101(in)s 5345(which)s 5988(their)s 6486(anchor)s
+7198(points)s 7835(appear)s 8533(in)s 8778(the)s 0 7343(\207nal)m
+490(printed)s 1235(document.)s 2354(This)s 2840(means)s 3513(that)s
+3941(o)s 3(v)k 3(er)k 4431(the)s 4789(course)s
+5480(of)s 5761(these)s 6319(entries)s 7016(the)s 7375(page)s
+7893(numbers)s 8779(are)s 0 7055(non-decreasing.)m 1636(It)s 1853(is)s
+2075(therefore)s 3004(clear)s 3539(that,)s 4016(although)s 4923(the)s
+5283(order)s 5859(of)s 6142(mer)s 4(ging)k 7000(is)s
+7222(unde\207ned)s 8237(\(actually)s 0 6767(a)m 196(balanced)s 1134(tree)s
+1577(order)s 2172(is)s 2412(used\),)s 3067(whene)s 6(v)k 3(er)k
+4078(tw)s 2(o)k 4519(entries)s 5236(are)s 5613(presented)s
+6617(for)s 6986(mer)s 4(ging,)k 7916(all)s 8239(the)s
+8618(page)s 0 6479(numbers)m 867(in)s 1101(the)s 1440(\207rst)s
+1862(entry)s 2398(are)s 2736(no)s 3020(lar)s 4(ger)k
+3623(than)s 4083(all)s 4368(the)s 4707(page)s 5206(numbers)s
+6072(in)s 6306(the)s 6645(second)s 7359(entry)s 15(.)k
+7990(W)s 19(e)k 8350(are)s 8688(also)s 0 6191(assuming)m
+957(inducti)s 6(v)k 3(ely)k 2078(that)s 2496(the)s
+2844(page)s 3352(numbers)s 4227(in)s 4471(each)s 4966(entry)s
+5511(are)s 5858(distinct)s 6621(and)s 7025(monotone)s 8040(increasing.)s
+0 5903(Thus,)m 599(there)s 1145(can)s 1547(be)s 1842(at)s
+2087(most)s 2626(one)s 3041(page)s 3562(number)s 4366(common)s
+5274(to)s 5526(an)s 3(y)k 5937(tw)s 2(o)k
+6360(entries)s 7060(being)s 7658(mer)s 4(ged,)k 8491(and)s
+8909(if)s 0 5615(there)m 533(is)s 743(one)s 1145(in)s
+1388(common)s 2283(it)s 2475(is)s 2685(the)s 3033(last)s
+3424(page)s 3932(number)s 4723(of)s 4994(the)s 5342(\207rst)s
+5773(entry)s 6318(and)s 6722(the)s 7070(\207rst)s 7501(of)s
+7772(the)s 8120(second.)s 480 5241(Our)m 935(\207rst)s 1389(sub-case)s
+2291(is)s 2524(when)s 3123(the)s 3494(tw)s 2(o)k
+3927(entries)s 4638(ha)s 4(v)k 3(e)k 5162(no)s
+5478(page)s 6009(number)s 6823(in)s 7089(common.)s 8114(Since)s
+220 fnt2 8724 5238(y)m 240 fnt1 8916 5241(is)m 0 4953(non-ra)m 3(w)k 15(,)k
+886(it)s 1079(has)s 1450(a)s 1617(page)s 2126(number)s
+2918(not)s 3285(equal)s 3859(to)s 4098(an)s 3(y)k
+4496(page)s 5005(number)s 5797(in)s 220 fnt2 6041 4950(x)m
+240 fnt1 6149 4953(.)m 6314(Therefore)s 7312(the)s 7661(discriminant)s
+8916(is)s 0 4665(non-empty)m 1101(and)s 1516(the)s 1875(result)s
+2476(is)s 2697(the)s 3055(meld)s 3602(of)s 220 fnt2
+3884 4662(x{@OneCol ,})m 240 fnt1 5290 4665(with)m 220 fnt2 5783 4662(y)m
+240 fnt1 5891 4665(,)m 6008(which)s 6661(for)s 7010(e)s 3(xample)k
+7884(could)s 8485(be)s 8778(the)s 0 4377(meld)m 536(of)s
+220 fnt2 480 3926(label &0.03fu {}{@OneCol ,} pn1{@OneCol ,} pn2{@OneCol ,})m 240 fnt1 0 3430(with)m 220 fnt2
+480 2978(label &0.03fu {}{@OneCol ,} pn3{@OneCol ,} pn4)m 240 fnt1 0 2482(This)m 508(will)s 966(gi)s 6(v)k 3(e)k
+1457(the)s 1837(right)s 2380(answer)s 9(,)k 3187(since)s
+220 fnt2 3767 2479(@Meld)m 240 fnt1 4545 2482(treats)m 5144(adjacent)s
+6032(objects)s 6792(as)s 7074(single)s 7733(elements,)s 8722(and)s
+0 2194(al)m 2(w)k 2(ays)k 711(incorporates)s 1943(elements)s
+2843(from)s 3367(the)s 3715(\207rst)s 4146(parameter)s 5160(\207rst)s
+5591(when)s 6167(it)s 6359(has)s 6729(a)s 6895(choice.)s
+480 1820(Our)m 908(second)s 1627(sub-case)s 2501(is)s 2707(when)s
+3278(the)s 3622(tw)s 2(o)k 4028(entries)s 4710(ha)s 4(v)k 3(e)k
+5207(a)s 5368(page)s 5872(number)s 6659(in)s 6897(common)s
+7788(and)s 220 fnt2 8187 1817(y)m 240 fnt1 8351 1820(has)m
+8716(tw)s 2(o)k 0 1532(or)m 273(more)s 835(page)s
+1358(numbers.)s 2361(The)s 2804(common)s 3714(page)s 4236(number)s
+5042(must)s 5582(be)s 5879(the)s 6242(last)s 6648(of)s
+220 fnt2 6933 1529(x)m 240 fnt1 7116 1532(and)m 7535(the)s
+7898(\207rst)s 8344(of)s 220 fnt2 8630 1529(y)m 240 fnt1
+8738 1532(,)m 8860(so)s 0 1244(ag)m 1(ain)k 220 fnt2
+574 1241(y)m 240 fnt1 742 1244(has)m 1112(something)s 2163(\(its)s
+2518(last)s 2909(page)s 3417(number\))s 4277(distinct)s 5040(from)s
+220 fnt2 5564 1241(x)m 240 fnt1 5672 1244(,)m 5779(the)s
+6128(discriminant)s 7382(is)s 7592(non-empty)s 15(,)k 8722(and)s
+0 956(we)m 335(end)s 739(up)s 1032(for)s 1370(e)s 3(xample)k
+2233(melding)s 220 fnt2 480 455(label &0.03fu {}{@OneCol ,} pn1{@OneCol ,} pn2{@OneCol ,})m
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 104 110
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(104)m 240 fnt6 8434 -1580(Chapter)m 9284(4.)s
+9558(Examples)s gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+0 13205(with)m 220 fnt2 480 12753(label &0.03fu {}{@OneCol ,} pn2{@OneCol ,} pn3)m
+240 fnt1 0 12257(Ag)m 1(ain)k 648(it')s 13(s)k
+998(clear)s 1529(that)s 1955(the)s 2310(meld)s 2854(will)s
+3288(produce)s 4123(the)s 4478(right)s 4997(answer;)s 5794(in)s
+6045(f)s 2(act,)k 6514(this)s 6918(second)s 7649(sub-case)s
+8536(could)s 0 11969(be)m 282(uni\207ed)s 1005(with)s 1487(the)s
+1835(\207rst)s 2266(sub-case.)s 480 11595(Our)m 916(third)s 1429(sub-case)s
+2312(is)s 2526(when)s 3106(the)s 3458(tw)s 2(o)k
+3872(entries)s 4563(ha)s 4(v)k 3(e)k 5068(a)s
+5238(page)s 5750(number)s 6545(in)s 6792(common)s 7691(and)s
+220 fnt2 8099 11592(y)m 240 fnt1 8271 11595(has)m 8646(only)s
+0 11307(one)m 402(page)s 910(number)s 13(.)k 1792(In)s
+2048(this)s 2444(case,)s 2962(typi\207ed)s 3751(by)s 220 fnt2
+4045 11304(x)m 240 fnt1 4213 11307(with)m 4695(v)s 6(alue)k
+220 fnt2 480 10806(label &0.03fu {}{@OneCol ,} pn1{@OneCol ,} pn2)m 240 fnt1 0 10310(and)m 220 fnt2
+404 10307(y)m 240 fnt1 572 10310(with)m 1054(v)s 6(alue)k
+220 fnt2 480 9811(label &0.03fu {}{@OneCol ,} pn2)m 240 fnt1 0 9315(it)m 190(is)s
+398(clear)s 918(that)s 220 fnt2 1334 9312(y)m 240 fnt1
+1500 9315(of)m 6(fers)k 2098(nothing)s 2881(ne)s 6(w)k 15(,)k
+3363(the)s 3709(discriminant)s 4961(is)s 5168(empty)s 15(,)k
+5856(and)s 6257(the)s 6603(result,)s 7238(quite)s 7769(correctly)s 15(,)k
+8707(is)s 220 fnt2 8914 9312(x)m 240 fnt1 9022 9315(.)m
+0 9027(This)m 476(completes)s 1496(the)s 1844(proof.)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1
+0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 105 111
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Helvetica
+%%+ font Times-Italic
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt8 vec2 /Times-Italic LoutRecode
+/fnt8 { /Times-Italicfnt8 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+gsave
+1417 -14865 translate
+0.0 0.0 0.0 LoutSetRGBColor
+9066 13448 0 13448 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+480 fnt5 0 12397(A)m 12(ppendix)k 2097(A.)s 2784(Implementation)s
+6168(of)s 6713(T)s 44(extur)k 8(es)k
+[ /Dest /LOUTtex /DEST pdfmark
+240 fnt1
+0 11711(The)m 430(follo)s 6(wing)k 1409(notes)s 1967(detail)s
+2554(ho)s 6(w)k 3018(PostScript)s 4062(patterns)s 4871(ha)s 4(v)k 3(e)k
+5374(been)s 5885(used)s 6385(to)s 6626(produce)s 7455(te)s 3(xtures.)k
+8374(See)s 8778(the)s 0 11423(PostScript)m 1042(Language)s 2042(Reference)s
+3066(Manual,)s 3904(second)s 4627(edition)s 5348(\(PLRM\),)s 6265(especially)s
+7274(Section)s 8048(4.9.)s 480 11049(PostScript)m 1525(patterns)s 2336(are)s
+2686(implemented)s 3996(as)s 4250(color)s 4804(spaces,)s 5539(whereas)s
+6376(from)s 6904(a)s 7074(logical)s 7782(point)s 8338(of)s
+8613(vie)s 6(w)k 0 10761(the)m 3(y)k 462(are)s
+807(really)s 1402(separate)s 2239(entities)s 2977(in)s 3218(the)s
+3564(graphics)s 4424(state,)s 4966(independent)s 6194(of)s 6463(color)s
+7013(\(e)s 3(xcept)k 7771(that)s 8187(a)s 8351(colored)s
+0 10473(te)m 3(xture)k 716(o)s 3(v)k 3(errides)k
+1650(an)s 3(y)k 2047(current)s 2783(color)s 3334(while)s
+3921(it)s 4113(is)s 4323(in)s 4566(ef)s 6(fect\).)k
+5345(T)s 19(o)k 5645(ensure)s 6325(that)s 6743(Lout')s 13(s)k
+220 fnt2 7405 10470(@SetT)m 26(e)k 6(xture)k 240 fnt1
+8722 10473(and)m 220 fnt2 0 10182(@SetColour)m 240 fnt1 1260 10185(symbols)m
+2112(ha)s 4(v)k 3(e)k 2616(this)s 3015(desired)s
+3766(independence)s 5141(of)s 5415(each)s 5913(other)s 9(,)k
+6505(the)s 6856(follo)s 6(wing)k 7836(operators)s 8779(are)s
+0 9897(de\207ned)m 763(in)s 1006(the)s 1354(Lout)s 1866(prologue:)s
+5090 12 0 12 240 288 60 1063 9281 LoutGr2
+LoutBox 0.0 0.0 0.0 LoutSetRGBColor fill
+grestore
+
+grestore
+240 fnt8 2550 9385(Lout-de\207ned)m 3826(oper)s 3(ator)k gsave
+6153 9281 translate
+240 fnt1
+1850 12 0 12 240 288 60 LoutGraphic
+gsave
+LoutBox 0.0 0.0 0.0 LoutSetRGBColor fill
+grestore
+
+grestore
+6297(What)s 6866(it)s 7062(r)s 8(eplaces)k 220 fnt2
+2623 9092(n)m 2(um)k 3322(LoutSetGr)s 2(a)k 6(y)k
+5522(-)s 240 fnt1 6297 9095(setgray)m 220 fnt2 1679 8804(n)m 2(um)k
+2151(n)s 2(um)k 2623(n)s 2(um)k 3322(LoutSetRGBColor)s
+5522(-)s 240 fnt1 6297 8807(setr)m 4(gbcolor)k 220 fnt2
+1679 8516(n)m 2(um)k 2151(n)s 2(um)k 2623(n)s 2(um)k
+3322(LoutSetHSBColor)s 5522(-)s 240 fnt1 6297 8519(sethsbcolor)m 220 fnt2
+1207 8228(n)m 2(um)k 1679(n)s 2(um)k 2151(n)s 2(um)k
+2623(n)s 2(um)k 3322(LoutSetCMYKColor)s 5522(-)s 240 fnt1
+6297 8231(setcmykcolor)m 2115 12 0 12 240 288 60 1063 7865 LoutGr2
+LoutBox 0.0 0.0 0.0 LoutSetRGBColor fill
+grestore
+
+grestore
+220 fnt2 2920 7940(p)m gsave
+3178 7865 translate
+240 fnt1 2200 12 0 12 240 288 60 LoutGraphic
+gsave
+LoutBox 0.0 0.0 0.0 LoutSetRGBColor fill
+grestore
+
+grestore
+3322(LoutSetT)s 26(e)k 6(xture)k
+gsave
+5378 7865 translate
+240 fnt1 775 12 0 12 240 288 60 LoutGraphic
+gsave
+LoutBox 0.0 0.0 0.0 LoutSetRGBColor fill
+grestore
+
+grestore
+5522(-)s gsave
+6153 7865 translate
+240 fnt1 1850 12 0 12 240 288 60 LoutGraphic
+gsave
+LoutBox 0.0 0.0 0.0 LoutSetRGBColor fill
+grestore
+
+grestore
+240 fnt1 6297 7943(setpattern)m
+0 7426(These)m 619(ha)s 4(v)k 3(e)k 1111(similar)s
+1825(signatures)s 2836(to)s 3066(the)s 3406(corresponding)s 4819(PostScript)s
+5852(operators)s 6784(sho)s 6(wn,)k 7502(and)s 7897(the)s
+8237(idea)s 8686(is)s 8887(to)s 0 7138(use)m 375(the)s
+724(Lout-de\207ned)s 2019(v)s 3(ersions)k 2865(where)s 3506(you)s
+3922(w)s 2(ould)k 4578(normally)s 5495(use)s 5871(the)s
+6220(PostScript)s 7263(ones.)s 7807(The)s 8236(\207rst)s 8668(four)s
+0 6850(set)m 336(the)s 695(color)s 1257(without)s 2059(disturbing)s
+3094(an)s 3(y)k 3502(current)s 4249(te)s 3(xture;)k
+5032(the)s 5391(last)s 5794(sets)s 6214(the)s 6573(te)s 3(xture)k
+7300(without)s 8103(disturbing)s 0 6562(an)m 3(y)k 386(current)s
+1110(color)s 13(.)k 1740(Here)s 220 fnt2 2248 6559(p)m
+240 fnt1 2411 6562(may)m 2865(be)s 3135(the)s 3471(PostScript)s
+220 fnt2 4502 6559(n)m 2(ull)k 240 fnt1 4874 6562(object,)m
+5553(meaning)s 6418(no)s 6700(te)s 3(xture)k 7404(i.e.)s
+7728(normal)s 8448(\207lling,)s 0 6274(or)m 259(else)s 686(it)s
+878(must)s 1403(be)s 1685(an)s 1968(instantiated)s 3127(pattern)s
+3847(dictionary)s 15(,)k 4908(as)s 5158(returned)s 6012(by)s
+220 fnt2 6306 6271(mak)m 4(epatter)k -5(n)k 240 fnt1
+7513 6274(.)m 480 5900(There)m 1093(are)s 1440(three)s 1973(k)s 2(e)k 3(y)k
+2368(data)s 2826(types)s 3382(used)s 3879(by)s 4173(this)s
+4569(code:)s 0 5397(\213)m 480(A)s 761(colorspace,)s 1941(denoted)s
+220 fnt2 2809 5394(cs)m 240 fnt1 3022 5397(,)m 3180(is)s
+3441(a)s 3659(PostScript)s 4752(colorspace)s 5881(array)s 6477(and)s
+6932(may)s 7449(ha)s 4(v)k 3(e)k 8002(one)s
+8455(of)s 8778(the)s 480 5109(follo)m 6(wing)k 1457(v)s 6(alues:)k
+220 fnt2 1104 4592([ /De)m 6(viceGr)k 2(a)k 6(y ])k
+240 fnt1 3059 4595(The)m 3487(gre)s 3(yscale)k 4442(colorspace)s
+220 fnt2 1104 4248([ /De)m 6(viceRGB ])k 240 fnt1 3059 4251(The)m
+3487(RGB)s 4023(colorspace)s 220 fnt2 1104 3904([ /De)m 6(viceCMYK ])k
+240 fnt1 3059 3907(The)m 3487(CMYK)s 4266(colorspace)s 220 fnt2
+1104 3560([ /P)m 8(atter)k -5(n ])k 240 fnt1 3059 3563(A)m
+3289(colored)s 4064(pattern)s 220 fnt2 1104 3216([ /P)m 8(atter)k -5(n /name ])k
+240 fnt1 3059 3219(An)m 3496(uncolored)s 4598(pattern;)s 220 fnt2
+5460 3216(/name)m 240 fnt1 6209 3219(may)m 6762(be)s 220 fnt2
+7131 3216(/De)m 6(viceGr)k 2(a)k 6(y)k 240 fnt1
+8322 3219(,)m 220 fnt2 8517 3216(/De-)m 3059 2928(viceRGB)m 240 fnt1
+3916 2931(,)m 4023(or)s 220 fnt2 4282 2928(/De)m 6(viceCMYK)k
+
+[ /Dest /LOUT16_1794_tex_1 /DEST pdfmark
+240 fnt1 0 2447(\213)m 480(A)s 708(color)s 9(,)k
+1294(denoted)s 2107(c,)s 2318(is)s 2525(an)s 2805(array)s
+3346(containing)s 4407(a)s 4570(PostScript)s 5609(non-pattern)s 6765(color)s
+7314(and)s 7715(thus)s 8162(may)s 8625(ha)s 4(v)k 3(e)k
+480 2159(one)m 882(of)s 1153(the)s 1501(follo)s 6(wing)k
+2478(v)s 6(alues:)k 220 fnt2 1104 1642([ g)m 2(re)k 4(y ])k
+240 fnt1 3031 1645(A)m 220 fnt2 3261 1642(/De)m 6(viceGr)k 2(a)k 6(y)k
+240 fnt1 4512 1645(color)m 220 fnt2 1104 1298([ red g)m 2(reen b)k 4(lue ])k
+240 fnt1 3031 1301(A)m 220 fnt2 3261 1298(/De)m 6(viceRGB)k
+240 fnt1 4513 1301(color)m 220 fnt2 1104 954([ c m y k ])m 240 fnt1
+3031 957(A)m 220 fnt2 3261 954(/De)m 6(viceCMYK)k 240 fnt1
+4679 957(color)m 480 440(W)m 19(e)k 853(enclose)s 1630(colors)s
+2269(in)s 2516(an)s 2804(array)s 3352(to)s 3595(mak)s 2(e)k
+4171(it)s 4368(easy)s 4851(for)s 5193(us)s 5461(to)s
+5704(deal)s 6162(with)s 6648(their)s 7149(v)s 6(arying)k
+7931(length.)s 8698(The)s 480 152(array)m 1024(has)s 1394(to)s
+1633(be)s 1915(unpack)s 2(ed)k 2889(with)s 220 fnt2
+3371 149(aload)m 240 fnt1 3955 152(before)m 4621(calling)s 220 fnt2
+5324 149(setcolor)m 240 fnt1 6092 152(.)m
+[ /Dest /LOUT16_1794_tex_2 /DEST pdfmark
+
+grestore
+gsave
+1417 -14865 translate
+0.0 0.0 0.0 LoutSetRGBColor 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+192 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 5808 -15421(105)m
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 106 112
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+%%+ font Courier
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+%%IncludeResource: font Courier
+/Courierfnt9 vec2 /Courier LoutRecode
+/fnt9 { /Courierfnt9 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(106)m 240 fnt6 6599 -1580(Appendix)m 7563(A.)s
+7863(Implementation)s 9418(of)s 9699(T)s 22(e)k 4(xtur)k 8(es)k
+gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+0 13205(\213)m 480(A)s 744(pattern,)s 1549(denoted)s
+220 fnt2 2400 13202(p)m 240 fnt1 2514 13205(.)m 2712(F)s 3(or)k
+3136(us,)s 3491(a)s 3691(pattern)s 4446(is)s 4691(either)s
+5328(the)s 5711(PostScript)s 6788(null)s 7249(object,)s 7975(meaning)s
+8887(to)s 480 12917(\207ll)m 824(with)s 1331(solid)s 1879(color)s 9(,)k
+2492(or)s 2776(else)s 3228(it)s 3444(is)s 3679(a)s
+3870(dictionary)s 4917(as)s 5192(returned)s 6071(by)s 220 fnt2
+6389 12914(mak)m 4(epatter)k -5(n)k 240 fnt1 7596 12917(.)m
+7785(When)s 8439(such)s 8960(a)s 480 12629(dictionary)m 1505(is)s
+1718(installed)s 2588(in)s 2834(the)s 3185(current)s 3924(graphics)s
+4788(state,)s 5334(this)s 5733(code)s 6244(guarantees)s 7320(that)s
+7741(it)s 7936(will)s 8365(contain)s 480 12341(tw)m 2(o)k
+890(e)s 3(xtra)k 1424(entries:)s 220 fnt2 1104 11873(/Under)m -3(lyingColorSpace)k
+240 fnt1 3640 11876(A)m 220 fnt2 3870 11873(cs)m 240 fnt1
+4143 11876(as)m 4393(de\207ned)s 5156(abo)s 3(v)k 3(e)k
+220 fnt2 1104 11529(/Under)m -3(lyingColor)k 240 fnt1 3640 11532(A)m
+220 fnt2 3870 11529(c)m 240 fnt1 4035 11532(as)m 4285(de\207ned)s
+5048(abo)s 3(v)k 3(e)k 480 11015(W)m 19(e)k
+849(need)s 1358(these)s 1905(e)s 3(xtra)k 2438(entries)s
+3124(to)s 3363(mak)s 2(e)k 3934(color)s 4484(independent)s
+5714(of)s 5984(te)s 3(xture:)k 6809(without)s 7600(them)s
+8137(we)s 8471(w)s 2(ould)k 480 10727(lose)m 943(the)s
+1314(current)s 2072(color)s 2646(when)s 3244(we)s 3602(set)s
+3949(a)s 4138(te)s 3(xture.)k 4984(Because)s 5860(of)s
+6153(these)s 6723(v)s 6(ariables)k 7652(we)s 8010(can')s 4(t)k
+8566(share)s 480 10439(pattern)m 1200(dictionaries)s 2365(among)s 3070(graphics)s
+3931(states.)s 4625(W)s 19(e)k 4994(must)s 5519(cop)s 2(y)k
+6037(them.)s
+[ /Dest /LOUT16_1794_tex_3 /DEST pdfmark
+0 9936(This)m 476(representation)s 1886(obe)s 3(ys)k
+2493(the)s 2841(follo)s 6(wing)k 3818(in)s 9(v)k 6(ariant:)k
+0 9433(\213)m 480(All)s 853(components)s 2075(of)s 2360(the)s
+2721(PostScript)s 3777(graphics)s 4652(state)s 5158(related)s 5879(to)s
+6132(pattern)s 6865(and)s 7283(color)s 7848(ha)s 4(v)k 3(e)k
+8363(de\207ned)s 480 9145(v)m 6(alues)k 1136(\(e.g.)s 1605(there)s
+2138(is)s 2348(ne)s 6(v)k 3(er)k 2930(a)s
+3096(situation)s 3976(where)s 4616(we)s 4951(set)s 5276(color)s
+5827(space)s 6414(b)s 4(ut)k 6776(not)s 7142(color\).)s
+
+[ /Dest /LOUT16_1794_tex_4 /DEST pdfmark
+0 8642(\213)m 480(If)s 709(the)s 1056(PostScript)s 2097(graphics)s
+2956(state)s 3448(contains)s 4295(a)s 220 fnt2 4460 8639(/P)m 8(atter)k -5(n)k
+240 fnt1 5269 8642(colorspace,)m 6397(the)s 6744(pattern)s 7463(dictionary)s
+8484(stored)s 480 8354(in)m 723(the)s 1071(state)s 1564(has)s
+220 fnt2 1934 8351(/Under)m -3(lyingColorSpace)k 240 fnt1 4242 8354(and)m
+220 fnt2 4646 8351(/Under)m -3(lyingColor)k 240 fnt1 6340 8354(entries)m
+7027(of)s 7298(types)s 220 fnt2 7854 8351(cs)m 240 fnt1
+8127 8354(and)m 220 fnt2 8531 8351(c)m 240 fnt1 8636 8354(.)m
+
+[ /Dest /LOUT16_1794_tex_5 /DEST pdfmark
+0 7851(\213)m 480(If)s 732(the)s 1103(graphics)s 1986(state)s
+2502(contains)s 3372(an)s 3678(uncolored)s 220 fnt2 4715 7848(/P)m 8(atter)k -5(n)k
+240 fnt1 5549 7851(colorspace,)m 6700(then)s 7192(the)s 220 fnt2
+7563 7848(/Under)m -3(lyingCol-)k 480 7560(orSpace)m 240 fnt1 1338 7563(and)m
+220 fnt2 1730 7560(/Under)m -3(lyingColor)k 240 fnt1 3413 7563(entries)m
+4088(of)s 4347(the)s 4684(pattern)s 5392(dictionary)s 6404(stored)s
+7034(in)s 7265(the)s 7602(state)s 8083(agree)s 8644(with)s
+480 7275(the)m 828(underlying)s 1918(color)s 2469(space)s 3056(and)s
+3460(color)s 4011(stored)s 4653(in)s 4896(the)s 5244(graphics)s
+6105(state.)s
+[ /Dest /LOUT16_1794_tex_6 /DEST pdfmark
+0 6772(And)m 471(it)s 663(has)s 1033(the)s
+1381(follo)s 6(wing)k 2358(abstraction)s 3463(function:)s 0 6269(\213)m
+480(If)s 725(the)s 1089(graphics)s 1965(state)s 2474(colorspace)s
+3568(is)s 220 fnt2 3793 6266(/P)m 8(atter)k -5(n)k
+240 fnt1 4544 6269(,)m 4667(then)s 5152(the)s 5515(abstract)s
+6333(current)s 7085(te)s 3(xture)k 7816(is)s 8042(the)s
+8406(pattern)s 480 5981(dictionary)m 1500(stored)s 2138(in)s 2378(the)s
+2722(graphics)s 3580(state)s 4069(color)s 13(.)k 4707(If)s
+4934(the)s 5278(graphics)s 6136(state)s 6625(colorspace)s 7700(is)s
+7906(not)s 220 fnt2 8268 5978(/P)m 8(atter)k -5(n)k
+240 fnt1 9019 5981(,)m 480 5693(then)m 949(the)s 1297(abstract)s
+2099(current)s 2835(te)s 3(xture)k 3551(is)s 220 fnt2
+3761 5690(n)m 2(ull)k 240 fnt1 4085 5693(.)m
+[ /Dest /LOUT16_1794_tex_7 /DEST pdfmark
+0 5236(\213)m
+480(If)s 725(the)s 1089(graphics)s 1966(state)s 2475(colorspace)s
+3568(is)s 220 fnt2 3794 5233(/P)m 8(atter)k -5(n)k
+240 fnt1 4545 5236(,)m 4668(then)s 5153(the)s 5517(abstract)s
+6334(colorspace)s 7428(and)s 7848(color)s 8415(are)s 8778(the)s
+480 4948(v)m 6(alues)k 1145(of)s 220 fnt2 1425 4945(/Under)m -3(lyingColorSpace)k
+240 fnt1 3743 4948(and)m 220 fnt2 4156 4945(/Under)m -3(lyingColor)k
+240 fnt1 5860 4948(in)m 6112(the)s 6469(pattern)s 7199(dictionary)s
+8231(stored)s 8883(in)s 480 4660(the)m 849(graphics)s 1731(state)s
+2246(color)s 13(.)k 2849(If)s 3100(the)s 3470(graphics)s
+4352(state)s 4866(colorspace)s 5966(is)s 6197(not)s 220 fnt2
+6584 4657(/P)m 8(atter)k -5(n)k 240 fnt1 7335 4660(,)m
+7464(then)s 7954(the)s 8324(abstract)s 480 4372(current)m 1216(colorspace)s
+2294(and)s 2698(color)s 3249(are)s 3596(as)s 3846(returned)s
+4700(by)s 220 fnt2 4994 4369(currentcolorspace)m 240 fnt1 6790 4372(and)m
+220 fnt2 7194 4369([ currentcolor ])m 240 fnt1 8583 4372(.)m
+[ /Dest /LOUT16_1794_tex_8 /DEST pdfmark
+0 3869(The)m
+428(follo)s 6(wing)k 1405(functions)s 2346(are)s 2693(pri)s 6(v)k 6(ate)k
+3400(helpers)s 4141(for)s 4479(the)s 4827(public)s 5478(functions:)s
+220 fnt9 480 3392(% Current pattern \(may be null\): - LoutCurrentP p)m 480 3144(/LoutCurrentP)m 480 2896({ %% -)m 480 2648( currentcolorspace %% [ /name etc ])m
+480 2400( 0 get /Pattern eq %% bool)m 480 2152( { %% - \(have pattern\))m 480 1904( [ currentcolor ] %% [ comp0 ... compn p ])m 480 1656( dup length 1 sub get %% p)m 480 1408( })m
+480 1160( { %% - \(no pattern\))m 480 912( null %% null)m 480 664( } ifelse %% p)m 480 416(} def)m
+[ /Dest /LOUT16_1794_tex_9 /DEST pdfmark
+
+grestore
+gsave
+1417 -15423 translate
+240 fnt1
+0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 107 113
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Courier
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Courier
+/Courierfnt9 vec2 /Courier LoutRecode
+/fnt9 { /Courierfnt9 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 10128 -1581(107)m gsave
+1417 -15423 translate
+240 fnt1 9066 13414 0 13323 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+220 fnt9 480 13277(% Current color and color space: - LoutCurrentCCS c cs)m
+480 13029(/LoutCurrentCCS)m 480 12781({)m 480 12533( LoutCurrentP dup null eq %% p bool)m 480 12285( { %% null)m 480 12037( pop [ currentcolor ] %% c)m
+480 11789( currentcolorspace %% c cs)m 480 11541( })m 480 11293( { %% p)m 480 11045( dup %% p p)m 480 10797( /UnderlyingColor get exch %% c p)m
+480 10549( /UnderlyingColorSpace get %% c cs)m 480 10301( } ifelse %% c cs)m 480 10053(} def)m
+[ /Dest /LOUT16_1794_tex_10 /DEST pdfmark
+480 9604(% Make c, cs, and p current: c cs p LoutSetCCSP -)m 480 9356(/LoutSetCCSP)m
+480 9108({ %% c cs p)m 480 8860( dup null eq %% c cs p bool)m 480 8612( { %% c cs p \(null pattern\))m 480 8364( pop setcolorspace %% c)m 480 8116( aload pop setcolor %% -)m
+480 7868( })m 480 7620( { %% c cs p \(non-null pattern\))m 480 7372( % copy pattern dictionary)m 480 7124( 12 dict copy %% c cs p)m 480 6628( % record cs and c in p)m
+480 6380( dup /UnderlyingColorSpace %% c cs p p /UCS)m 480 6132( 3 index put %% c cs p)m 480 5884( dup /UnderlyingColor %% c cs p p /UC)m 480 5636( 4 index put %% c cs p)m 480 5140( % do setcolorspace and setcolor)m
+480 4892( dup /PaintType get 1 eq %% c cs p bool)m 480 4644( { %% c cs p \(colored pattern\))m 480 4396( [/Pattern] setcolorspace %% c cs p)m 480 4148( setcolor %% c cs)m 480 3900( pop pop %% -)m
+480 3652( })m 480 3404( { %% c cs p \(uncolored pattern\))m 480 3156( [ /Pattern %% c cs p [ /Pattern)m 480 2908( 4 -1 roll %% c p [ /Pattern cs)m 480 2660( ] setcolorspace %% c p)m
+480 2412( exch aload length 1 add %% p comp1 ... compm m+1)m 480 2164( -1 roll %% comp1 ... compm p)m 480 1916( setcolor %% -)m 480 1668( } ifelse %% -)m 480 1420( } ifelse %% -)m
+480 1172(} def)m
+[ /Dest /LOUT16_1794_tex_11 /DEST pdfmark
+240 fnt1 0 697(W)m 9(ith)k 536(the)s
+894(helper)s 1561(functions)s 2513(it')s 13(s)k 2865(no)s 6(w)k
+3336(easy)s 3825(to)s 4075(deri)s 6(v)k 3(e)k
+4729(the)s 5087(colour)s 5768(and)s 6183(te)s 3(xture)k
+6909(setting)s 7609(commands)s 8708(that)s 0 409(we)m 346(are)s
+705(of)s 6(fering)k 1533(to)s 1784(our)s 2175(end)s
+2591(users.)s 3197(When)s 3838(setting)s 4540(the)s 4900(color)s
+5463(we)s 5810(pass)s 6284(it,)s 6535(plus)s 6997(the)s
+7357(current)s 8105(pattern,)s 8887(to)s 220 fnt2 0 118(LoutSetCCSP)m
+240 fnt1 1355 121(;)m 1459(when)s 2027(setting)s 2709(the)s
+3049(pattern)s 3761(we)s 4088(pass)s 4542(it,)s 4773(plus)s
+5215(the)s 5555(current)s 6283(color)s 9(,)k 6864(to)s
+220 fnt2 7095 118(LoutSetCCSP)m 240 fnt1 8450 121(.)m 8605(Note)s
+
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 108 114
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+%%+ font Courier
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+%%IncludeResource: font Courier
+/Courierfnt9 vec2 /Courier LoutRecode
+/fnt9 { /Courierfnt9 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(108)m 240 fnt6 6599 -1580(Appendix)m 7563(A.)s
+7863(Implementation)s 9418(of)s 9699(T)s 22(e)k 4(xtur)k 8(es)k
+gsave
+1417 -15423 translate
+240 fnt1 9066 13368 0 13259 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+0 13205(that)m 418(there)s 951(is)s 1161(no)s
+220 fnt2 1454 13202(/De)m 6(viceHSB)k 240 fnt1 2621 13205(:)m
+220 fnt2 2727 13202(hsb)m 240 fnt1 3133 13205(is)m 3343(a)s
+3509(v)s 6(ariant)k 4226(of)s 220 fnt2 4497 13202(rgb)m
+240 fnt1 4806 13205(.)m 220 fnt9 480 12731(% num LoutSetGray -)m 480 12483(/LoutSetGray)m
+480 12235({)m 480 11987( [ 2 1 roll ] %% c)m 480 11739( [ /DeviceGray ] %% c cs)m 480 11491( LoutCurrentP %% c cs p)m 480 11243( LoutSetCCSP %% -)m
+480 10995(} def)m
+[ /Dest /LOUT16_1794_tex_12 /DEST pdfmark
+480 10546(% r g b LoutSetRGBColor -)m 480 10298(/LoutSetRGBColor)m 480 10050({ %% r g b)m 480 9802( [ 4 1 roll ] %% c)m
+480 9554( [ /DeviceRGB ] %% c cs)m 480 9306( LoutCurrentP %% c cs p)m 480 9058( LoutSetCCSP %% -)m 480 8810(} def)m
+[ /Dest /LOUT16_1794_tex_13 /DEST pdfmark
+480 8361(% h s b LoutSetHSBColor -)m
+480 8113(/LoutSetHSBColor)m 480 7865({ %% h s b)m 480 7617( gsave sethsbcolor %% -)m 480 7369( currentrgbcolor grestore %% r g b)m 480 7121( LoutSetRGBColor %% -)m
+480 6873(} def)m
+[ /Dest /LOUT16_1794_tex_14 /DEST pdfmark
+480 6424(% c m y k LoutSetRGBColor -)m 480 6176(/LoutSetCMYKColor)m 480 5928({)m 480 5680( [ 5 1 roll ] %% c)m
+480 5432( [ /DeviceCMYK ] %% c cs)m 480 5184( LoutCurrentP %% c cs p)m 480 4936( LoutSetCCSP %% -)m 480 4688(} def)m
+[ /Dest /LOUT16_1794_tex_15 /DEST pdfmark
+480 4241(% p LoutSetTexture -)m
+480 3993(/LoutSetTexture)m 480 3745({)m 480 3497( LoutCurrentCCS %% p c cs)m 480 3249( 3 -1 roll %% c cs p)m 480 3001( LoutSetCCSP %% -)m
+480 2753(} def)m
+[ /Dest /LOUT16_1794_tex_16 /DEST pdfmark
+240 fnt1 0 2278(All)m 369(we)s 713(need)s
+1232(no)s 6(w)k 1702(is)s 1921(some)s 2491(sample)s
+3233(te)s 3(xtures.)k 4159(T)s 16(e)k 3(xtures)k
+5036(are)s 5392(just)s 5806(pattern)s 6535(dictionaries)s 7709(as)s
+7968(returned)s 8832(by)s 220 fnt2 0 1987(mak)m 4(epatter)k -5(n)k
+240 fnt1 1207 1990(.)m 1374(Here)s 1898(is)s 2111(a)s
+2281(PostScript)s 3327(function)s 4184(that)s 4606(appears)s 5390(in)s
+5637(the)s 5989(Lout)s 6504(prologue.)s 7523(Its)s 7815(function)s
+8673(is)s 8887(to)s 0 1702(simplify)m 861(the)s 1220(production)s
+2325(of)s 2607(te)s 3(xtures.)k 3535(It)s 3751(\207rst)s
+4193(tak)s 2(es)k 4744(six)s 5089(parameters)s 6198(to)s
+6448(specify)s 7203(a)s 7380(transformation)s 8855(of)s 0 1414(the)m
+354(te)s 3(xture)k 1077(used)s 1581(to)s 1827(b)s 4(uild)k
+2380(the)s 2735(matrix)s 3420(tak)s 2(en)k 4000(by)s
+220 fnt2 4300 1411(mak)m 4(epatter)k -5(n)k 240 fnt1
+5507 1414(,)m 5621(then)s 6097(\207v)s 3(e)k 6516(parameters)s
+7621(that)s 8046(go)s 8346(into)s 8778(the)s 0 1126(pattern)m
+720(dictionary)s 15(.)k
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 109 115
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Courier
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Courier
+/Courierfnt9 vec2 /Courier LoutRecode
+/fnt9 { /Courierfnt9 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 10129 -1581(109)m gsave
+1417 -15423 translate
+240 fnt1 9066 13414 0 13317 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+220 fnt9 480 13271(% <scale> <scalex> <scaley> <rotate> <hshift> <vshift>)m
+480 13023(% <pt> <bb> <xs> <ys> <pc> LoutMakeTexture p)m 480 12775(/LoutMakeTexture)m 480 12527({ %% s sx sy r h v pt bb xs ys pp)m 480 12279( 12 dict begin %% s sx sy r h v pt bb xs ys pp)m 480 12031( /PaintProc exch def %% s sx sy r h v pt bb xs ys)m
+480 11783( /YStep exch def %% s sx sy r h v pt bb xs)m 480 11535( /XStep exch def %% s sx sy r h v pt bb)m 480 11287( /BBox exch def %% s sx sy r h v pt)m 480 11039( /PaintType exch def %% s sx sy r h v)m 480 10791( /PatternType 1 def %% s sx sy r h v)m
+480 10543( /TilingType 1 def %% s sx sy r h v)m 480 10295( currentdict end %% s sx sy r h v p)m 480 10047( 7 1 roll %% p s sx sy r h v)m 480 9799( matrix translate %% p s sx sy r mat1)m 480 9551( 5 1 roll %% p mat1 s sx sy r)m
+480 9303( matrix rotate %% p mat1 s sx sy mat2)m 480 9055( 4 1 roll %% p mat1 mat2 s sx sy)m 480 8807( matrix scale %% p mat1 mat2 s mat3)m 480 8559( exch dup matrix scale %% p mat1 mat2 mat3 mat4)m 480 8311( matrix concatmatrix %% p mat1 mat2 mat34)m
+480 8063( matrix concatmatrix %% p mat1 mat234)m 480 7815( matrix concatmatrix %% p mat1234)m 480 7567( /makepattern where)m 480 7319( { %% p mat123 dict)m 480 7071( pop makepattern %% p)m
+480 6823( })m 480 6575( { %% p mat123)m 480 6327( pop pop null %% null)m 480 6079( } ifelse %% p \(may be null\))m 480 5831(} def)m
+
+[ /Dest /LOUT16_1794_tex_17 /DEST pdfmark
+240 fnt1 0 5356(F)m 3(or)k 384(e)s 3(xamples)k
+1330(of)s 1596(te)s 3(xtures)k 2395(using)s 220 fnt2
+2962 5353(LoutMak)m 4(eT)k 26(e)k 6(xture)k 240 fnt1
+4626 5356(,)m 4727(consult)s 5473(the)s 5816(standard)s 6679(include)s
+7434(\207le)s 220 fnt2 7790 5353(colte)m 6(x)k 240 fnt1
+8355 5356(.)m 8513(There)s 0 5068(is)m 210(only)s 690(one)s
+1092(b)s 4(uilt-in)k 1848(te)s 3(xture,)k 220 fnt2
+2615 5065(LoutT)m 26(e)k 6(xtureSolid)k 240 fnt1 4228 5068(:)m
+220 fnt9 480 4585(/LoutTextureSolid)m 480 4337({)m 480 4089( null)m 480 3841( LoutSetTexture)m
+480 3593(} def)m
+[ /Dest /LOUT16_1794_tex_18 /DEST pdfmark
+
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 110 116
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+gsave
+1417 -14865 translate
+0.0 0.0 0.0 LoutSetRGBColor
+9066 13448 0 13448 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+480 fnt5 0 12397(Refer)m 8(ences)k
+[ /Dest /LOUT20_547_all_1 /DEST pdfmark
+
+[ /Dest /LOUTadobe1990ps /DEST pdfmark
+240 fnt1 0 11800([1])m
+480(Adobe)s 1182(Systems,)s 2094(Inc..)s 240 fnt6 2631 11802(P)m 19(ostScript)k
+3680(Langua)s 2(g)k 2(e)k 4696(Refer)s 8(ence)k
+5704(Manual,)s 6550(Second)s 7316(Edition)s 240 fnt1 8014 11800(.)m
+8186(Addison-)s 480 11512(W)m 19(esle)k 3(y)k 1169(,)s
+1276(1990)s 1751(.)s
+[ /Dest /LOUTadobe1996epsforms /DEST pdfmark
+0 11007([2])m 480(Adobe)s 1167(Systems,)s
+2063(Inc..)s 2584(Using)s 3201(EPS)s 3650(\207les)s 4091(in)s
+4326(PostScript)s 5360(Language)s 6352(F)s 3(orms)k 6951(.)s
+7107(T)s 16(echnical)k 8080(Note)s 8592(5144)s 480 10719(\(1996\))m
+1107(.)s
+[ /Dest /LOUTkernighan1975eqn /DEST pdfmark
+0 10226([3])m 480(Brian)s 1132(W)s 22(.)k
+1504(K)s 6(ernighan)k 2630(and)s 3098(Lorinda)s 3980(L.)s
+4294(Cherry)s 15(.)k 5172(A)s 5466(system)s 6255(for)s
+6657(typesetting)s 7824(mathematics)s 9022(.)s 240 fnt6 480 9940(Communications)m
+2158(of)s 2439(the)s 2784(A)s 7(CM)k 240 fnt5
+3351 9937(18)m 240 fnt1 3585 9938(,)m 3692(182\211193)s 4576(\(1975\))s
+5203(.)s
+[ /Dest /LOUTkingston1995lout_program /DEST pdfmark
+0 9437([4])m 480(Jef)s 6(fre)k 3(y)k
+1177(H.)s 1443(Kingston.)s 240 fnt6 2475 9439(The)m 2876(Basser)s
+3581(Lout)s 4074(Document)s 5111(F)s 25(ormatting)k 6219(System)s
+6929(\(V)s 26(er)k 2(sion)k 7767(3\))s 240 fnt1
+7956 9437(.)m 8109(Computer)s 480 9149(program)m 1290(,)s 1408(1995)s
+1874(.)s 2050(Publicly)s 2913(a)s 4(v)k 6(ailable)k
+3833(in)s 4088(the)s 240 fnt6 4448 9151(jef)m 4(f)k
+240 fnt1 4855 9149(subdirectory)m 6116(of)s 6399(the)s 6759(home)s
+7359(directory)s 8287(of)s 240 fnt6 8570 9151(ftp)m 240 fnt1
+8887 9149(to)m 480 8861(host)m 240 fnt6 950 8863(ftp.cs.su.oz.au)m 240 fnt1
+2373 8861(with)m 2866(login)s 3427(name)s 240 fnt6 4012 8863(anonymous)m
+240 fnt1 5171 8861(or)m 240 fnt6 5442 8863(ftp)m 240 fnt1
+5758 8861(and)m 6174(an)s 3(y)k 6582(non-empty)s 7685(passw)s 2(ord)k
+8657(\(e.g.)s 240 fnt6 480 8575(none)m 240 fnt1 939 8573(\).)m
+1175(Lout)s 1680(distrib)s 4(utions)k 2914(are)s 3254(also)s
+3685(a)s 4(v)k 6(ailable)k 4585(from)s 5102(the)s
+240 fnt6 5443 8575(comp.sour)m 8(ces.misc)k 240 fnt1 7291 8573(ne)m 6(wsgroup,)k
+8436(and)s 8832(by)s 480 8285(electronic)m 1474(mail)s 1953(from)s
+2477(the)s 2825(author)s 13(.)k 3587(All)s 3947(enquiries)s
+4874(to)s 240 fnt6 5113 8287(jef)m 4(f@cs.su.oz.au)k 240 fnt1
+6672 8285(.)m
+[ /Dest /LOUTkingston1995lout_user /DEST pdfmark
+0 7780([5])m 480(Jef)s 6(fre)k 3(y)k
+1187(H.)s 1463(Kingston.)s 240 fnt6 2504 7782(A)m 2698(User')s 9(s)k
+3380(Guide)s 4017(to)s 4255(the)s 4599(Lout)s 5101(Document)s
+6148(F)s 25(ormatting)k 7266(System)s 7985(\(V)s 26(er)k 2(sion)k
+8833(3\))s 240 fnt1 9022 7780(.)m 480 7492(Basser)m 1177(Department)s
+2365(of)s 2636(Computer)s 3653(Science)s 4392(,)s 4499(Uni)s 6(v)k 3(ersity)k
+5553(of)s 5824(Sydne)s 3(y)k 6534(,)s 6641(1995)s
+7107(.)s
+[ /Dest /LOUTknuth1984tex /DEST pdfmark
+0 6987([6])m 480(Donald)s 1243(E.)s 1493(Knuth.)s
+240 fnt6 2256 6989(The)m 2668(T)s 2764 6941(E)m 2872 6989(X)m
+3028(Book)s 240 fnt1 3524 6987(.)m 3688(Addison-W)s 19(esle)k 3(y)k
+5268(,)s 5375(1984)s 5849(.)s
+[ /Dest /LOUTreid1980scribe /DEST pdfmark
+0 6482([7])m 480(Brian)s
+1048(K.)s 1305(Reid.)s 1900(A)s 2110(High-)s 2657(Le)s 6(v)k 3(el)k
+3227(Approach)s 4207(to)s 4426(Computer)s 5423(Document)s 6459(Production)s
+7506(.)s 7650(In)s 240 fnt6 7885 6484(Pr)m 10(oceedings)k
+480 6196(of)m 745(the)s 1073(7th)s 1417(Symposium)s 2548(on)s
+2825(the)s 3153(Principles)s 4174(of)s 4438(Pr)s 10(o)k 2(gr)k 3(amming)k
+5804(Langua)s 2(g)k 2(es)k 6891(\(POPL\),)s 7723(Las)s
+8107(V)s 26(e)k 9(gas)k 8695(NV)s 240 fnt1
+9019 6194(,)m 480 5906(pages)m 1076(24\21131)s 1651(,)s 1758(1980)s
+2233(.)s
+[ /Dest /LOUTstrunk1979style /DEST pdfmark
+0 5401([8])m 480(W)s 9(illiam)k 1313(Strunk)s
+2012(and)s 2416(E.)s 2666(B.)s 2930(White.)s 240 fnt6
+3678 5403(The)m 4090(Elements)s 5021(of)s 5302(Style)s 240 fnt1
+5759 5401(.)m 5923(Macmillan)s 6955(.)s 7119(Third)s 7708(Edition)s
+8409(,)s 8516(1979)s 8987(.)s
+grestore
+gsave
+1417 -14865 translate
+0.0 0.0 0.0 LoutSetRGBColor 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+192 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 5808 -15421(110)m
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 111 117
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Helvetica
+%%+ font Times-Italic
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+gsave
+1417 -14867 translate
+0.0 0.0 0.0 LoutSetRGBColor
+9066 13450 0 13450 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+480 fnt5 0 12406(Index)m
+[ /Dest /LOUT20_604_all_1 /DEST pdfmark
+220 fnt2 0 11809(adjust)m 641(@Break)s
+240 fnt1 1444 11812(,)m
+[ /Rect [1551 11812 1785 11974] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_brea_1 /ANN pdfmark
+1551(44)s 0 11524(Adjustment)m 1176(of)s
+1447(object)s 2038(,)s
+[ /Rect [2145 11521 2371 11689] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_hadj_4 /ANN pdfmark
+2145(55)s 0 11236(Adobe)m 695(Systems,)s
+1599(Inc.)s 1955(,)s
+[ /Rect [2062 11233 2286 11398] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_font_8 /ANN pdfmark
+2062(43)s 0 10948(Alignment)m 240 fnt6
+1083 10950(see)m 240 fnt1 1441 10948(mark)m 1993(alignment)s 0 10660(Associati)m 6(vity)k
+1256(,)s
+[ /Rect [1363 10657 1587 10822] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_prec_2 /ANN pdfmark
+1363(23)s 220 fnt2 0 10081(@Bac)m 4(kEnd)k
+240 fnt1 1145 10084(symbol)m 1852(,)s
+[ /Rect [1959 10083 2187 10242] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_bend_1 /ANN pdfmark
+1959(77)s 220 fnt2
+0 9793(@Bac)m 4(kg)k 2(round)k 240 fnt1 1436 9796(symbol)m
+2143(,)s
+[ /Rect [2250 9791 2481 9961] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_back_1 /ANN pdfmark
+2250(59)s 220 fnt2 0 9505(@Begin)m 240 fnt1
+829 9508(symbol)m 1536(,)s
+[ /Rect [1643 9505 1871 9670] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_begi_1 /ANN pdfmark
+1643(37)s 220 fnt2 0 9217(@BeginHeaderComponent)m
+240 fnt1 2692 9220(symbol)m 3399(,)s
+[ /Rect [3506 9217 3739 9384] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_head_2 /ANN pdfmark
+3506(66)s 0 8932(Bibliographies)m
+1406(,)s
+[ /Rect [1513 8927 1741 9094] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_exa_bibl_1 /ANN pdfmark
+1513(97)s 0 8644(Body)m 574(of)s 845(a)s
+1011(de\207nition)s 1932(,)s
+[ /Rect [2039 8644 2153 8806] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pri_defi_3 /ANN pdfmark
+2039(4)s 220 fnt2 0 8353(body)m
+240 fnt1 534 8356(parameter)m 1495(,)s
+[ /Rect [1602 8353 1829 8518] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_visi_3 /ANN pdfmark
+1602(18)s 0 8068(Braces)m
+648(,)s
+[ /Rect [755 8065 859 8230] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pri_obje_6 /ANN pdfmark
+755(3)s 220 fnt2 0 7777(b)m 240 fnt1
+174 7780(unit)m 553(,)s
+[ /Rect [660 7777 887 7942] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_15 /ANN pdfmark
+660(38)s 240 7492(use)m 615(in)s
+220 fnt2 858 7489(//1.1b)m 240 fnt1 1406 7492(,)m
+[ /Rect [1513 7487 1744 7654] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_gall_4 /ANN pdfmark
+1513(29)s
+220 fnt2 0 6913(@Case)m 240 fnt1 787 6916(symbol)m 1494(,)s
+
+[ /Rect [1601 6913 1825 7080] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_case_1 /ANN pdfmark
+1601(63)s 0 6628(Centring)m 837(,)s
+[ /Rect [944 6625 1171 6790] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_31 /ANN pdfmark
+944(38)s 220 fnt2
+0 6337(@Chapter)m 240 fnt1 1063 6340(e)m 3(xample)k 1873(,)s
+
+[ /Rect [1980 6335 2204 6502] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_exa_chap_4 /ANN pdfmark
+1980(93)s 0 6052(Chapters)m 901(and)s 1305(sections)s 2073(,)s
+
+[ /Rect [2180 6047 2414 6214] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_exa_chap_1 /ANN pdfmark
+2180(92)s 220 fnt2 0 5761(@Char)m 240 fnt1 758 5764(symbol)m
+1465(,)s
+[ /Rect [1572 5764 1806 5926] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_font_10 /ANN pdfmark
+1572(44)s 0 5476(Cherry)m 15(,)k 756(L.)s
+953(,)s
+[ /Rect [1060 5473 1275 5638] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_exa_equa_3 /ANN pdfmark
+1060(81)s 220 fnt2 0 5185(@ClearHeaderComponent)m 240 fnt1
+2655 5188(symbol)m 3362(,)s
+[ /Rect [3469 5185 3697 5352] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_head_5 /ANN pdfmark
+3469(67)s 220 fnt2 0 4897(clines)m
+613(@Break)s 240 fnt1 1416 4900(,)m
+[ /Rect [1523 4900 1757 5062] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_brea_8 /ANN pdfmark
+1523(44)s 220 fnt2
+0 4609(@ColList)m 240 fnt1 948 4612(e)m 3(xample)k 1758(,)s
+
+[ /Rect [1865 4607 2096 4774] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_exa_page_5 /ANN pdfmark
+1865(89)s 0 4324(Column)m 829(mark)s 1328(,)s
+[ /Rect [1435 4324 1530 4486] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pri_obje_2 /ANN pdfmark
+1435(1)s
+0 4036(Comment)m 951(,)s
+[ /Rect [1058 4033 1291 4200] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_lexi_21 /ANN pdfmark
+1058(16)s 0 3748(Comment)m 1004(character)s
+1885(,)s
+[ /Rect [1992 3748 2226 3910] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_lexi_6 /ANN pdfmark
+1992(14)s 220 fnt2 0 3457(@Common)m 240 fnt1
+1159 3460(symbol)m 1866(,)s
+[ /Rect [1973 3457 2208 3624] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_rump_1 /ANN pdfmark
+1973(60)s 0 3172(Components)m 1262(of)s
+1533(a)s 1699(g)s 1(alle)k 3(y)k 2280(,)s
+
+[ /Rect [2387 3171 2615 3334] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_gall_3 /ANN pdfmark
+2387(27)s 240 2884(promotion)m 1294(of)s 1512(,)s
+[ /Rect [1619 2881 1854 3046] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_gall_8 /ANN pdfmark
+1619(30)s
+0 2596(Concatenation)m 1439(symbols)s 2235(,)s
+[ /Rect [2342 2593 2570 2758] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_1 /ANN pdfmark
+2342(37)s 0 2308(Contraction)m
+1186(of)s 1457(object)s 2048(,)s
+[ /Rect [2155 2305 2389 2473] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_hcon_3 /ANN pdfmark
+2155(54)s 220 fnt2
+0 2017(cr)m 2(agged)k 839(@Break)s 240 fnt1 1642 2020(,)m
+
+[ /Rect [1749 2020 1983 2182] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_brea_4 /ANN pdfmark
+1749(44)s 0 1732(Cross)m 596(reference)s 1486(,)s
+[ /Rect [1593 1729 1700 1894] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pri_cros_1 /ANN pdfmark
+1593(8)s
+220 fnt2 0 1441(c)m 240 fnt1 165 1444(unit)m 544(,)s
+
+[ /Rect [651 1441 878 1606] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_8 /ANN pdfmark
+651(38)s 220 fnt2 0 1153(@CurrLang)m 240 fnt1 1185 1156(symbol)m
+1892(,)s
+[ /Rect [1999 1153 2233 1321] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_lang_3 /ANN pdfmark
+1999(52)s 220 fnt2 0 577(@Database)m 240 fnt1
+1214 580(symbol)m 1921(,)s
+[ /Rect [2028 579 2243 742] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_data_1 /ANN pdfmark
+2028(71)s 0 292(Date,)m 558(printing)s
+1368(of)s 1639(current)s 2322(,)s
+[ /Rect [2429 289 2663 456] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_mome_2 /ANN pdfmark
+2429(64)s 4816 11811(Def)m 2(ault)k
+5590(v)s 6(alue)k 6158(of)s 6429(parameter)s 7390(,)s
+
+[ /Rect [7497 11810 7725 11973] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_name_3 /ANN pdfmark
+7497(17)s 4816 11523(De\207nitions)m 5877(,)s
+[ /Rect [5984 11523 6098 11685] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pri_defi_1 /ANN pdfmark
+5984(4)s 4816 11235(Delimiter)m
+5737(,)s
+[ /Rect [5844 11235 6078 11397] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_lexi_11 /ANN pdfmark
+5844(14)s 4816 10947(Diag)m 5334(diagram-dra)s 3(wing)k
+7030(package)s 7817(,)s
+[ /Rect [7924 10946 8158 11109] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_grap_4 /ANN pdfmark
+7924(74)s 4816 10659(Diagrams)m 5743(,)s
+
+[ /Rect [5850 10658 6065 10821] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_grap_2 /ANN pdfmark
+5850(71)s 4816 10371(DocumentLayout)m 6551(package)s 7338(,)s
+[ /Rect [7445 10368 7669 10533] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_exa_para_1 /ANN pdfmark
+7445(83)s
+5056 10083(chapters)m 5903(and)s 6307(sections)s 7075(,)s
+[ /Rect [7182 10078 7416 10245] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_exa_chap_2 /ANN pdfmark
+7182(92)s
+5056 9795(displays)m 5838(,)s
+[ /Rect [5945 9792 6179 9957] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_exa_para_4 /ANN pdfmark
+5945(84)s 5056 9507(lists)m 5438(,)s
+
+[ /Rect [5545 9504 5771 9672] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_exa_para_6 /ANN pdfmark
+5545(85)s 5056 9219(page)m 5564(layout)s 6169(,)s
+[ /Rect [6276 9216 6504 9381] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_exa_page_2 /ANN pdfmark
+6276(87)s
+5056 8931(paragraphs)m 6103(,)s
+[ /Rect [6210 8928 6444 9093] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_exa_para_2 /ANN pdfmark
+6210(84)s 220 fnt2 4816 8640(d)m
+240 fnt1 4986 8643(unit)m 5365(,)s
+[ /Rect [5472 8640 5699 8805] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_17 /ANN pdfmark
+5472(38)s 4816 8067(Edge-to-edge)m
+6160(g)s 1(ap)k 6558(mode)s 7093(,)s
+[ /Rect [7200 8064 7427 8229] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_19 /ANN pdfmark
+7200(38)s
+220 fnt2 4816 7776(e)m 240 fnt1 4990 7779(g)m 1(ap)k
+5388(mode)s 5923(,)s
+[ /Rect [6030 7776 6257 7941] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_20 /ANN pdfmark
+6030(38)s 220 fnt2 4816 7488(@Enclose)m
+240 fnt1 5818 7491(,)m
+[ /Rect [5925 7488 6159 7653] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_gall_12 /ANN pdfmark
+5925(32)s 220 fnt2 4816 7200(@End)m
+240 fnt1 5477 7203(symbol)m 6184(,)s
+[ /Rect [6291 7200 6519 7365] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_begi_2 /ANN pdfmark
+6291(37)s 220 fnt2
+4816 6912(@EndHeaderComponent)m 240 fnt1 7338 6915(symbol)m 8045(,)s
+[ /Rect [8152 6912 8385 7079] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_head_3 /ANN pdfmark
+8152(66)s
+4816 6627(Eq)m 5140(equation)s 6021(formatting)s 7082(package)s 7869(,)s
+
+[ /Rect [7976 6624 8191 6789] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_exa_equa_1 /ANN pdfmark
+7976(81)s 220 fnt2 4816 6336(@Eq)m 240 fnt1 5354 6339(e)m 3(xample)k
+6164(,)s
+[ /Rect [6271 6336 6486 6501] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_exa_equa_4 /ANN pdfmark
+6271(81)s 4816 6051(Escape)m 5549(character)s 6430(,)s
+
+[ /Rect [6537 6051 6771 6213] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_lexi_5 /ANN pdfmark
+6537(14)s 220 fnt2 4816 5760(@Ev)m 5(enP)k 8(ageList)k
+240 fnt1 6435 5763(e)m 3(xample)k 7245(,)s
+[ /Rect [7352 5758 7567 5925] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_exa_page_10 /ANN pdfmark
+7352(91)s
+4816 5475(Expansion)m 5884(of)s 6155(object)s 6746(,)s
+[ /Rect [6853 5472 7087 5640] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_hexp_3 /ANN pdfmark
+6853(54)s
+220 fnt2 4816 5184(e)m 6(xpor)k -8(t)k 240 fnt1
+5484 5187(clause)m 6084(,)s
+[ /Rect [6191 5182 6422 5349] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_visi_4 /ANN pdfmark
+6191(19)s 4816 4611(F)m 3(ace)k
+5320(of)s 5591(a)s 5757(font)s 6149(,)s
+[ /Rect [6256 4611 6471 4773] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_font_3 /ANN pdfmark
+6256(41)s
+4816 4323(F)m 3(amily)k 5544(of)s 5815(a)s 5981(font)s
+6373(,)s
+[ /Rect [6480 4323 6695 4485] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_font_2 /ANN pdfmark
+6480(41)s 220 fnt2 4816 4032(f)m 6(ollo)k 3(wing)k
+240 fnt1 5653 4035(,)m
+[ /Rect [5760 4030 5871 4197] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pri_cros_7 /ANN pdfmark
+5760(9)s 220 fnt2 4816 3744(f)m 6(ollo)k 3(wing)k
+240 fnt1 5653 3747(,)m
+[ /Rect [5760 3742 5871 3909] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pri_cros_6 /ANN pdfmark
+5760(9)s 4816 3459(F)m 3(onts)k
+5343(,)s
+[ /Rect [5450 3459 5665 3621] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_font_1 /ANN pdfmark
+5450(41)s 220 fnt2 4816 3168(@F)m 6(ont)k
+240 fnt1 5528 3171(symbol)m 6235(,)s
+[ /Rect [6342 3171 6557 3333] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_font_6 /ANN pdfmark
+6342(41)s 220 fnt2
+4816 2880(@F)m 6(ootSect)k 240 fnt1 5967 2883(e)m 3(xample)k
+6777(,)s
+[ /Rect [6884 2880 7111 3045] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_exa_page_4 /ANN pdfmark
+6884(88)s 220 fnt2 4816 2592(@F)m 6(orceGalle)k 4(y)k
+240 fnt1 6269 2595(symbol)m 6976(,)s
+[ /Rect [7083 2592 7309 2760] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_gall_2 /ANN pdfmark
+7083(65)s 4816 2307(F)m 3(orcing)k
+5610(g)s 1(alle)k 3(y)k 6191(,)s
+[ /Rect [6298 2304 6533 2469] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_gall_10 /ANN pdfmark
+6298(30)s
+4816 2019(F)m 3(ormfeed)k 5747(,)s
+[ /Rect [5854 2019 6088 2181] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_lexi_9 /ANN pdfmark
+5854(14)s 220 fnt2
+4816 1728(f)m 240 fnt1 4934 1731(unit)m 5313(,)s
+[ /Rect [5420 1728 5647 1893] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_11 /ANN pdfmark
+5420(38)s
+4816 1155(Galle)m 3(ys)k 5541(,)s
+[ /Rect [5648 1152 5883 1317] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pri_gall_1 /ANN pdfmark
+5648(10)s 5056 867(in)m
+5299(detail)s 5831(,)s
+[ /Rect [5938 866 6166 1029] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_gall_1 /ANN pdfmark
+5938(27)s 220 fnt2 4816 576(@Galle)m 4(y)k
+240 fnt1 5714 579(symbol)m 6421(,)s
+[ /Rect [6528 576 6754 744] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_gall_1 /ANN pdfmark
+6528(65)s 4816 291(Gap)m
+5215(,)s
+[ /Rect [5322 288 5549 453] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_6 /ANN pdfmark
+5322(38)s
+grestore
+gsave
+1417 -14867 translate
+0.0 0.0 0.0 LoutSetRGBColor 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+192 fnt5 0.0 0.0 0.0 LoutSetRGBColor
+5811 -15423(111)m
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 112 118
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(112)m 240 fnt6 9956 -1580(Inde)m 4(x)k
+gsave
+1417 -15423 translate
+240 fnt1 9066 13415 0 13415 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+0 13252(Gap)m 452(mode)s 987(,)s
+[ /Rect [1094 13249 1321 13414] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_18 /ANN pdfmark
+1094(38)s
+220 fnt2 0 12961(@Gr)m 2(aphic)k 240 fnt1 1044 12964(symbol)m
+1751(,)s
+[ /Rect [1858 12963 2073 13126] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_grap_1 /ANN pdfmark
+1858(71)s 220 fnt2 0 12385(@HAdjust)m 240 fnt1
+1046 12388(symbol)m 1753(,)s
+[ /Rect [1860 12385 2086 12553] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_hadj_2 /ANN pdfmark
+1860(55)s 220 fnt2 0 12097(@HContr)m 2(act)k
+240 fnt1 1264 12100(symbol)m 1971(,)s
+[ /Rect [2078 12097 2312 12265] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_hcon_1 /ANN pdfmark
+2078(54)s 220 fnt2
+0 11809(@HCo)m 3(v)k 5(er)k 240 fnt1 1018 11812(symbol)m
+1725(,)s
+[ /Rect [1832 11809 2065 11977] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_cove_1 /ANN pdfmark
+1832(56)s 0 11524(Header)m 750(component)s 1874(of)s
+2145(g)s 1(alle)k 3(y)k 2726(,)s
+[ /Rect [2833 11521 3059 11689] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_head_1 /ANN pdfmark
+2833(65)s
+0 11236(Height)m 711(of)s 982(an)s 1265(object)s 1856(,)s
+
+[ /Rect [1963 11233 2189 11401] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_size_3 /ANN pdfmark
+1963(25)s 220 fnt2 0 10945(@HExpand)m 240 fnt1 1173 10948(symbol)m
+1880(,)s
+[ /Rect [1987 10945 2221 11113] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_hexp_1 /ANN pdfmark
+1987(54)s 220 fnt2 0 10657(h)m 240 fnt1
+168 10660(g)m 1(ap)k 566(mode)s 1101(,)s
+[ /Rect [1208 10657 1435 10822] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_22 /ANN pdfmark
+1208(38)s
+220 fnt2 0 10369(@High)m 240 fnt1 719 10372(symbol)m 1426(,)s
+
+[ /Rect [1533 10369 1757 10537] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_wide_2 /ANN pdfmark
+1533(53)s 220 fnt2 0 10081(@HLimited)m 240 fnt1 1135 10084(symbol)m
+1842(,)s
+[ /Rect [1949 10081 2183 10249] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_hlim_1 /ANN pdfmark
+1949(54)s 220 fnt2 0 9793(@Hline)m 240 fnt1
+773 9796(e)m 3(xample)k 1583(,)s
+[ /Rect [1690 9793 1914 9958] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_exa_equa_7 /ANN pdfmark
+1690(83)s 220 fnt2
+0 9505(@HMirror)m 240 fnt1 1013 9508(symbol)m 1720(,)s
+[ /Rect [1827 9505 2053 9673] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_hmir_1 /ANN pdfmark
+1827(55)s
+0 9220(Horizontal)m 1077(concatenation)s 2409(,)s
+[ /Rect [2516 9217 2744 9382] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_3 /ANN pdfmark
+2516(37)s 220 fnt2
+0 8929(@HScale)m 240 fnt1 981 8932(symbol)m 1688(,)s
+[ /Rect [1795 8929 2021 9097] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_hsca_1 /ANN pdfmark
+1795(55)s
+220 fnt2 0 8641(@HShift)m 240 fnt1 875 8644(symbol)m 1582(,)s
+
+[ /Rect [1689 8641 1913 8809] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_hshi_1 /ANN pdfmark
+1689(53)s 220 fnt2 0 8353(@HSpan)m 240 fnt1 939 8356(symbol)m
+1646(,)s
+[ /Rect [1753 8353 1981 8521] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_span_4 /ANN pdfmark
+1753(57)s 0 8068(Hyphenation)m 1294(g)s 1(ap)k
+1692(mode)s 2227(,)s
+[ /Rect [2334 8065 2569 8230] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_37 /ANN pdfmark
+2334(40)s 0 7780(Hyphenation)m 1294(g)s 1(ap)k
+1692(mode)s 2227(,)s
+[ /Rect [2334 7777 2561 7942] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_21 /ANN pdfmark
+2334(38)s 220 fnt2 0 7489(h)m 6(yphen)k
+760(@Break)s 240 fnt1 1563 7492(,)m
+[ /Rect [1670 7489 1896 7657] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_brea_12 /ANN pdfmark
+1670(45)s 0 6916(Identi\207er)m
+882(,)s
+[ /Rect [989 6916 1223 7078] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_lexi_12 /ANN pdfmark
+989(14)s 220 fnt2 0 6625(impor)m -8(t)k
+240 fnt1 673 6628(clause)m 1273(,)s
+[ /Rect [1380 6623 1611 6790] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_visi_5 /ANN pdfmark
+1380(19)s 220 fnt2
+0 6337(@IncludeGr)m 2(aphicRepeated)k 240 fnt1 2695 6340(symbol)m 3402(,)s
+
+[ /Rect [3509 6337 3742 6504] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_incr_1 /ANN pdfmark
+3509(76)s 220 fnt2 0 6049(@IncludeGr)m 2(aphic)k 240 fnt1
+1751 6052(symbol)m 2458(,)s
+[ /Rect [2565 6049 2791 6217] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_incg_1 /ANN pdfmark
+2565(75)s 220 fnt2 0 5761(@Include)m
+240 fnt1 982 5764(symbol)m 1689(,)s
+[ /Rect [1796 5763 2024 5922] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_incl_1 /ANN pdfmark
+1796(77)s 220 fnt2
+0 5473(@IndentedDispla)m 6(y)k 240 fnt1 1847 5476(e)m 3(xample)k
+2657(,)s
+[ /Rect [2764 5473 2998 5638] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_exa_para_5 /ANN pdfmark
+2764(84)s 220 fnt2 0 5185(@IndentedList)m 240 fnt1
+1474 5188(e)m 3(xample)k 2284(,)s
+[ /Rect [2391 5185 2624 5352] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_exa_para_8 /ANN pdfmark
+2391(86)s 0 4900(Inde)m 3(x)k
+597(\207le)s 958(\(for)s 1375(databases\))s 2366(,)s
+[ /Rect [2473 4899 2688 5062] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_data_2 /ANN pdfmark
+2473(71)s
+0 4612(In-paragraph)m 1291(concatenation)s 2623(,)s
+[ /Rect [2730 4609 2957 4774] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_4 /ANN pdfmark
+2730(38)s 220 fnt2
+0 4321(@Inser)m -8(t)k 240 fnt1 836 4324(symbol)m 1543(,)s
+
+[ /Rect [1650 4321 1865 4488] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_inse_1 /ANN pdfmark
+1650(61)s 220 fnt2 0 4033(into)m 240 fnt1 406 4036(clause)m
+1006(,)s
+[ /Rect [1113 4036 1328 4198] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pri_gall_2 /ANN pdfmark
+1113(11)s 0 3748(In)m 9(v)k 4(ocation)k
+1067(of)s 1338(a)s 1504(symbol)s 2211(,)s
+[ /Rect [2318 3748 2432 3910] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pri_defi_4 /ANN pdfmark
+2318(4)s
+0 2884(K)m 6(ernighan,)k 1111(B.)s 1322(,)s
+[ /Rect [1429 2881 1644 3046] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_exa_equa_2 /ANN pdfmark
+1429(81)s
+0 2596(K)m 6(erning)k 778(,)s
+[ /Rect [885 2596 1100 2758] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_font_5 /ANN pdfmark
+885(41)s 0 2308(K)m 6(erning)k
+831(g)s 1(ap)k 1229(mode)s 1764(,)s
+[ /Rect [1871 2305 2098 2470] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_27 /ANN pdfmark
+1871(38)s
+220 fnt2 0 2017(@K)m 8(er)k -5(nShr)k -3(ink)k
+240 fnt1 1367 2020(symbol)m 2074(,)s
+[ /Rect [2181 2015 2412 2185] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_kshr_1 /ANN pdfmark
+2181(59)s 220 fnt2
+0 1729(@K)m 8(e)k 4(y)k 240 fnt1 647 1732(parameter)m
+1608(,)s
+[ /Rect [1715 1729 1939 1894] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_sort_2 /ANN pdfmark
+1715(33)s 220 fnt2 0 1441(k)m 240 fnt1
+170 1444(g)m 1(ap)k 568(mode)s 1103(,)s
+[ /Rect [1210 1441 1437 1606] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_28 /ANN pdfmark
+1210(38)s
+0 1156(Knuth,)m 706(D.)s 930(,)s
+[ /Rect [1037 1153 1261 1318] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_exa_equa_8 /ANN pdfmark
+1037(83)s 220 fnt2
+0 577(langdef)m 240 fnt1 776 580(language)m 1696(de\207nition)s 2617(,)s
+
+[ /Rect [2724 577 2958 745] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_lang_2 /ANN pdfmark
+2724(52)s 220 fnt2 0 289(@Language)m 240 fnt1 1251 292(symbol)m
+1958(,)s
+[ /Rect [2065 289 2280 457] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_lang_1 /ANN pdfmark
+2065(51)s 220 fnt2 4816 13247(@LClos)m 240 fnt1
+5652 13250(symbol)m 6359(,)s
+[ /Rect [6466 13247 6692 13415] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_lexi_13 /ANN pdfmark
+6466(15)s 4816 12962(LCM)m 5389(\207le)s
+5697(,)s
+[ /Rect [5804 12959 6028 13124] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_font_9 /ANN pdfmark
+5804(43)s 4816 12674(Length)m 5498(,)s
+[ /Rect [5605 12671 5832 12836] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_7 /ANN pdfmark
+5605(38)s
+220 fnt2 4816 12383(@LEn)m 4(v)k 240 fnt1 5594 12386(symbol)m
+6301(,)s
+[ /Rect [6408 12383 6634 12551] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_lexi_14 /ANN pdfmark
+6408(15)s 4816 12098(Letter)m 5445(character)s 6326(,)s
+
+[ /Rect [6433 12098 6667 12260] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_lexi_2 /ANN pdfmark
+6433(14)s 4816 11810(Lig)m 1(atures)k 5715(,)s
+[ /Rect [5822 11810 6037 11972] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_font_4 /ANN pdfmark
+5822(41)s
+220 fnt2 4816 11519(lines)m 5319(@Break)s 240 fnt1 6122 11522(,)m
+
+[ /Rect [6229 11522 6463 11684] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_brea_7 /ANN pdfmark
+6229(44)s 220 fnt2 4816 11231(@LinkDest)m 240 fnt1 5948 11234(symbol)m
+6655(,)s
+[ /Rect [6762 11229 6993 11398] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_link_2 /ANN pdfmark
+6762(69)s 220 fnt2 4816 10943(@LinkSource)m 240 fnt1
+6188 10946(symbol)m 6895(,)s
+[ /Rect [7002 10941 7233 11110] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_link_1 /ANN pdfmark
+7002(69)s 220 fnt2 4816 10655(@LInput)m
+240 fnt1 5705 10658(symbol)m 6412(,)s
+[ /Rect [6519 10655 6745 10823] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_lexi_15 /ANN pdfmark
+6519(15)s 4816 10370(Literal)m
+5506(w)s 2(ord)k 6001(,)s
+[ /Rect [6108 10367 6334 10535] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_lexi_19 /ANN pdfmark
+6108(15)s 220 fnt2
+4816 10079(@LUse)m 240 fnt1 5603 10082(symbol)m 6310(,)s
+[ /Rect [6417 10079 6643 10247] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_lexi_17 /ANN pdfmark
+6417(15)s
+220 fnt2 4816 9791(@L)m 24(Vis)k 240 fnt1 5494 9794(symbol)m
+6201(,)s
+[ /Rect [6308 9791 6534 9959] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_lexi_16 /ANN pdfmark
+6308(15)s 4816 9218(Macro)m 5440(,)s
+[ /Rect [5547 9215 5780 9382] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_lexi_22 /ANN pdfmark
+5547(16)s
+4816 8930(Mark)m 5395(alignment)s 6358(,)s
+[ /Rect [6465 8930 6560 9092] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pri_obje_3 /ANN pdfmark
+6465(1)s 5056 8642(in)m
+5299(detail)s 5831(,)s
+[ /Rect [5938 8637 6169 8804] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_gall_5 /ANN pdfmark
+5938(29)s 4816 8354(Mark-to-mark)m 6230(g)s 1(ap)k
+6628(mode)s 7163(,)s
+[ /Rect [7270 8351 7497 8516] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_23 /ANN pdfmark
+7270(38)s 220 fnt2 4816 8063(@Meld)m
+240 fnt1 5562 8066(symbol)m 6269(,)s
+[ /Rect [6376 8063 6611 8230] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_rump_3 /ANN pdfmark
+6376(60)s 220 fnt2
+4816 7775(@Merge)m 240 fnt1 5713 7778(symbol)m 6420(,)s
+[ /Rect [6527 7775 6761 7940] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_sort_3 /ANN pdfmark
+6527(34)s
+4816 7490(Mirroring)m 5811(an)s 6094(object)s 6685(,)s
+[ /Rect [6792 7487 7018 7655] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_hmir_3 /ANN pdfmark
+6792(55)s
+220 fnt2 4816 7199(@Moment)m 240 fnt1 5888 7202(symbol)m 6595(,)s
+
+[ /Rect [6702 7199 6936 7366] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_mome_1 /ANN pdfmark
+6702(64)s 220 fnt2 4816 6911(m)m 240 fnt1 5045 6914(unit)m
+5424(,)s
+[ /Rect [5531 6911 5758 7076] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_10 /ANN pdfmark
+5531(38)s 220 fnt2 4816 6335(named)m 240 fnt1
+5535 6338(parameter)m 6496(,)s
+[ /Rect [6603 6335 6836 6502] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_name_2 /ANN pdfmark
+6603(16)s 4816 6050(Nested)m 5538(de\207nitions)s
+6546(,)s
+[ /Rect [6653 6047 6880 6212] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_visi_1 /ANN pdfmark
+6653(18)s 220 fnt2 4816 5759(@Ne)m 6(xt)k
+240 fnt1 5540 5762(symbol)m 6247(,)s
+[ /Rect [6354 5759 6578 5926] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_next_1 /ANN pdfmark
+6354(63)s 220 fnt2
+4816 5471(noh)m 6(yphen)k 5820(@Break)s 240 fnt1 6623 5474(,)m
+
+[ /Rect [6730 5471 6956 5639] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_brea_13 /ANN pdfmark
+6730(45)s 6956(,)s
+[ /Rect [7063 5471 7296 5638] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_brea_15 /ANN pdfmark
+7063(46)s 220 fnt2 4816 5183(@NotRe)m 6(v)k 5(ealed)k
+240 fnt1 6343 5186(symbol)m 7050(,)s
+[ /Rect [7157 5183 7385 5350] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_notr_1 /ANN pdfmark
+7157(67)s 220 fnt2
+4816 4895(@Null)m 240 fnt1 5461 4898(symbol)m 6168(,)s
+[ /Rect [6275 4895 6501 5063] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_null_1 /ANN pdfmark
+6275(65)s
+4816 4610(Numbered)m 5884(list)s 6182(,)s
+[ /Rect [6289 4607 6515 4775] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_exa_para_7 /ANN pdfmark
+6289(85)s 220 fnt2
+4816 4319(@NumberOf)m 240 fnt1 6108 4322(e)m 3(xample)k 6918(,)s
+
+[ /Rect [7025 4317 7259 4484] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_exa_chap_3 /ANN pdfmark
+7025(92)s 4816 3746(Object)m 5460(,)s
+[ /Rect [5567 3746 5662 3908] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pri_obje_1 /ANN pdfmark
+5567(1)s 220 fnt2
+4816 3455(@OddP)m 8(ageList)k 240 fnt1 6355 3458(e)m 3(xample)k
+7165(,)s
+[ /Rect [7272 3453 7487 3620] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_exa_page_9 /ANN pdfmark
+7272(91)s 220 fnt2 4816 3167(o)m 240 fnt1
+4991 3170(g)m 1(ap)k 5389(mode)s 5924(,)s
+[ /Rect [6031 3167 6258 3332] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_26 /ANN pdfmark
+6031(38)s
+220 fnt2 4816 2879(olines)m 5441(@Break)s 240 fnt1 6244 2882(,)m
+
+[ /Rect [6351 2879 6577 3047] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_brea_10 /ANN pdfmark
+6351(45)s 220 fnt2 4816 2591(@OneCol)m 240 fnt1 5828 2594(symbol)m
+6535(,)s
+[ /Rect [6642 2591 6866 2759] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_oner_3 /ANN pdfmark
+6642(53)s 220 fnt2 4816 2303(@OneOf)m 240 fnt1
+5743 2306(symbol)m 6450(,)s
+[ /Rect [6557 2303 6791 2470] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_oneo_1 /ANN pdfmark
+6557(62)s 220 fnt2 4816 2015(@OneP)m 8(age)k
+240 fnt1 6010 2018(e)m 3(xample)k 6820(,)s
+[ /Rect [6927 2013 7162 2180] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_exa_page_7 /ANN pdfmark
+6927(90)s
+220 fnt2 4816 1727(@OneRo)m 3(w)k 240 fnt1 5947 1730(symbol)m
+6654(,)s
+[ /Rect [6761 1727 6995 1895] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_oner_1 /ANN pdfmark
+6761(52)s 220 fnt2 4816 1439(@Open)m 240 fnt1
+5622 1442(symbol)m 6329(,)s
+[ /Rect [6436 1437 6667 1606] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_open_1 /ANN pdfmark
+6436(69)s 4816 1154(Optimal)m 5654(g)s 1(alle)k 3(y)k
+6288(breaking)s 7125(,)s
+[ /Rect [7232 1151 7465 1318] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_opti_1 /ANN pdfmark
+7232(36)s 220 fnt2 4816 863(@Optimiz)m 3(e)k
+240 fnt1 5953 866(symbol)m 6660(,)s
+[ /Rect [6767 863 7000 1030] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_opti_2 /ANN pdfmark
+6767(36)s 220 fnt2
+4816 575(or)m 2(agged)k 5667(@Break)s 240 fnt1 6470 578(,)m
+
+[ /Rect [6577 578 6811 740] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_brea_6 /ANN pdfmark
+6577(44)s 220 fnt2 4816 287(@OrElse)m 240 fnt1 5761 290(e)m 3(xample)k
+6571(,)s
+[ /Rect [6678 285 6904 455] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_exa_chap_5 /ANN pdfmark
+6678(95)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 113 119
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt6
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1580(Inde)m 4(x)k 240 fnt5 10130 -1583(113)m
+gsave
+1417 -15423 translate
+240 fnt1 9066 13412 0 13412 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+0 13249(Other)m 604(character)s 1485(,)s
+[ /Rect [1592 13249 1826 13411] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_lexi_3 /ANN pdfmark
+1592(14)s
+220 fnt2 0 12958(outdent)m 788(@Break)s 240 fnt1 1591 12961(,)m
+
+[ /Rect [1698 12961 1932 13123] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_brea_2 /ANN pdfmark
+1698(44)s 220 fnt2 0 12670(@Outline)m 240 fnt1 969 12673(symbol)m
+1676(,)s
+[ /Rect [1783 12670 1998 12838] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_outl_1 /ANN pdfmark
+1783(51)s 220 fnt2 0 12382(o)m 3(v)k 5(er)k
+240 fnt1 479 12385(e)m 3(xample)k 1289(,)s
+[ /Rect [1396 12382 1630 12547] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_exa_equa_6 /ANN pdfmark
+1396(82)s
+0 12097(Ov)m 3(erstrik)k 2(e)k 1059(g)s 1(ap)k
+1457(mode)s 1992(,)s
+[ /Rect [2099 12094 2326 12259] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_25 /ANN pdfmark
+2099(38)s 220 fnt2 0 11518(@P)m 26(Adjust)k
+240 fnt1 1008 11521(symbol)m 1715(,)s
+[ /Rect [1822 11518 2048 11686] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_hadj_1 /ANN pdfmark
+1822(55)s 220 fnt2
+0 11230(@P)m 8(age)k 240 fnt1 779 11233(e)m 3(xample)k
+1589(,)s
+[ /Rect [1696 11228 1927 11395] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_exa_page_6 /ANN pdfmark
+1696(89)s 220 fnt2 0 10942(@P)m 8(ageLabel)k
+240 fnt1 1309 10945(symbol)m 2016(,)s
+[ /Rect [2123 10940 2354 11107] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_page_1 /ANN pdfmark
+2123(79)s 0 10657(P)m 3(age)k
+518(layout)s 240 10369(principles)m 1233(of)s 1451(,)s
+[ /Rect [1558 10366 1664 10534] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pri_defi_7 /ANN pdfmark
+1558(5)s
+240 10081(in)m 483(practice)s 1241(,)s
+[ /Rect [1348 10078 1576 10243] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_exa_page_1 /ANN pdfmark
+1348(87)s 220 fnt2
+0 9790(@P)m 8(ageOf)k 240 fnt1 1016 9793(e)m 3(xample)k
+1826(,)s
+[ /Rect [1933 9790 2161 9955] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_exa_page_3 /ANN pdfmark
+1933(87)s 0 9505(P)m 3(aragraph)k 1023(breaking)s
+1860(,)s
+[ /Rect [1967 9502 2071 9667] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pri_obje_7 /ANN pdfmark
+1967(3)s 240 9217(in)m 483(detail)s 1015(,)s
+
+[ /Rect [1122 9214 1357 9379] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_35 /ANN pdfmark
+1122(40)s 0 8929(P)m 3(arameter)k 971(,)s
+[ /Rect [1078 8929 1192 9091] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pri_defi_5 /ANN pdfmark
+1078(4)s
+220 fnt2 240 8638(body)m 240 fnt1 774 8641(parameter)m 1735(,)s
+
+[ /Rect [1842 8638 2069 8803] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_visi_2 /ANN pdfmark
+1842(18)s 220 fnt2 240 8350(named)m 240 fnt1 959 8353(parameter)m
+1920(,)s
+[ /Rect [2027 8350 2260 8517] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_name_1 /ANN pdfmark
+2027(16)s 220 fnt2 0 8062(@PlainGr)m 2(aphic)k
+240 fnt1 1530 8065(symbol)m 2237(,)s
+[ /Rect [2344 8062 2570 8230] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_plai_1 /ANN pdfmark
+2344(75)s 0 7777(PostScript)m
+989(,)s
+[ /Rect [1096 7777 1222 7940] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_preface_1 /ANN pdfmark
+1096(ii)s 240 7489(used)m 737(by)s 220 fnt2
+1031 7486(@Gr)m 2(aphic)k 240 fnt1 2022 7489(,)m
+[ /Rect [2129 7488 2344 7651] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_grap_3 /ANN pdfmark
+2129(71)s
+240 7201(used)m 737(by)s 220 fnt2 1031 7198(@IncludeGr)m 2(aphic)k
+240 fnt1 2729 7201(,)m
+[ /Rect [2836 7198 3062 7366] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_incg_3 /ANN pdfmark
+2836(75)s 240 6913(used)m 737(by)s
+220 fnt2 1031 6910(@IncludeGr)m 2(aphicRepeated)k 240 fnt1 3673 6913(,)m
+
+[ /Rect [3780 6910 4013 7077] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_incr_3 /ANN pdfmark
+3780(76)s 240 6625(used)m 737(by)s 220 fnt2 1031 6622(@PrependGr)m 2(aphic)k
+240 fnt1 2851 6625(,)m
+[ /Rect [2958 6622 3191 6789] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_prep_3 /ANN pdfmark
+2958(76)s 220 fnt2 0 6334(@PP)m
+240 fnt1 566 6337(e)m 3(xample)k 1376(,)s
+[ /Rect [1483 6334 1717 6499] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_exa_para_3 /ANN pdfmark
+1483(84)s
+0 6049(Precedence)m 1091(,)s
+[ /Rect [1198 6046 1422 6211] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_prec_1 /ANN pdfmark
+1198(23)s 220 fnt2 0 5758(preceding)m
+240 fnt1 958 5761(,)m
+[ /Rect [1065 5756 1176 5923] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pri_cros_5 /ANN pdfmark
+1065(9)s 220 fnt2 0 5470(@PrependGr)m 2(aphic)k
+240 fnt1 1873 5473(symbol)m 2580(,)s
+[ /Rect [2687 5470 2920 5637] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_prep_1 /ANN pdfmark
+2687(76)s 0 5185(Principal)m
+917(mark)s 1416(,)s
+[ /Rect [1523 5182 1750 5347] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_5 /ANN pdfmark
+1523(38)s 240 4897(ef)m 6(fect)k
+836(on)s 220 fnt2 1133 4894(@OneCol)m 240 fnt1 2145 4897(and)m
+220 fnt2 2549 4894(@OneRo)m 3(w)k 240 fnt1 3627 4897(,)m
+
+[ /Rect [3734 4894 3968 5062] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_oner_2 /ANN pdfmark
+3734(52)s 0 4609(Promotion)m 1067(of)s 1338(components)s 2493(,)s
+
+[ /Rect [2600 4606 2835 4771] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_gall_9 /ANN pdfmark
+2600(30)s 220 fnt2 0 4318(p)m 240 fnt1 174 4321(unit)m
+553(,)s
+[ /Rect [660 4318 887 4483] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_9 /ANN pdfmark
+660(38)s 0 3745(Quote)m 641(character)s 1522(,)s
+
+[ /Rect [1629 3745 1863 3907] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_lexi_4 /ANN pdfmark
+1629(14)s 0 3457(Quoted)m 763(w)s 2(ord)k 1258(,)s
+
+[ /Rect [1365 3454 1591 3622] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_lexi_20 /ANN pdfmark
+1365(15)s 220 fnt2 0 2878(r)m 2(agged)k 729(@Break)s
+240 fnt1 1532 2881(,)m
+[ /Rect [1639 2881 1873 3043] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_brea_3 /ANN pdfmark
+1639(44)s 220 fnt2 0 2590(@Ra)m 4(wV)k 17(erbatim)k
+240 fnt1 1563 2593(symbol)m 2270(,)s
+[ /Rect [2377 2590 2604 2755] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_verb_2 /ANN pdfmark
+2377(78)s 0 2305(Recepti)m 6(v)k 3(e)k
+1003(symbol)s 1710(,)s
+[ /Rect [1817 2305 2051 2467] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pri_gall_4 /ANN pdfmark
+1817(12)s 0 2017(Recursion)m 974(,)s
+
+[ /Rect [1081 2014 1187 2182] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pri_defi_6 /ANN pdfmark
+1081(5)s 220 fnt2 0 1726(@Ref)m 6(erence)k 240 fnt1
+1281 1729(e)m 3(xample)k 2091(,)s
+[ /Rect [2198 1724 2426 1891] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_exa_bibl_2 /ANN pdfmark
+2198(97)s 220 fnt2
+0 1438(@Ref)m 6(erenceSection)k 240 fnt1 2006 1441(e)m 3(xample)k
+2816(,)s
+[ /Rect [2923 1436 3154 1603] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_exa_bibl_3 /ANN pdfmark
+2923(99)s 220 fnt2 0 1150(@Ref)m 240 fnt1
+621 1153(e)m 3(xample)k 1431(,)s
+[ /Rect [1538 1150 1893 1315] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_exa_bibl_4 /ANN pdfmark
+1538(100)s 0 865(Re\210ecting)m
+1036(an)s 1319(object)s 1910(,)s
+[ /Rect [2017 862 2243 1030] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_hmir_4 /ANN pdfmark
+2017(55)s 0 577(Reid,)m
+559(Brian)s 1147(K.)s 1371(,)s
+[ /Rect [1478 574 1585 739] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pri_cros_3 /ANN pdfmark
+1478(8)s 0 289(Right)m
+592(justi\207cation)s 1724(,)s
+[ /Rect [1831 286 2058 451] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_32 /ANN pdfmark
+1831(38)s 220 fnt2 4816 13247(r)m -3(lines)k
+5395(@Break)s 240 fnt1 6198 13250(,)m
+[ /Rect [6305 13250 6539 13412] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_brea_9 /ANN pdfmark
+6305(44)s 4816 12962(Roman)m
+5565(numerals)s 6439(,)s
+[ /Rect [6546 12959 6774 13124] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_exa_para_9 /ANN pdfmark
+6546(87)s 4816 12674(Root)m 5342(g)s 1(alle)k 3(y)k
+5923(,)s
+[ /Rect [6030 12674 6264 12836] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pri_gall_5 /ANN pdfmark
+6030(12)s 5056 12386(in)m 5299(detail)s 5831(,)s
+
+[ /Rect [5938 12383 6173 12548] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_gall_6 /ANN pdfmark
+5938(30)s 5056 12098(printing)m 5866(of)s 6084(,)s
+[ /Rect [6191 12095 6426 12260] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_gall_7 /ANN pdfmark
+6191(30)s
+5056 11810(size)m 5483(of)s 5754(components)s 6962(of)s 7180(,)s
+
+[ /Rect [7287 11807 7520 11974] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_size_5 /ANN pdfmark
+7287(26)s 220 fnt2 4816 11519(@Rotate)m 240 fnt1 5737 11522(symbol)m
+6444(,)s
+[ /Rect [6551 11519 6778 11687] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_rota_1 /ANN pdfmark
+6551(58)s 4816 11234(Rotation)m 5697(of)s 5968(object)s
+6559(,)s
+[ /Rect [6666 11231 6893 11399] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_rota_2 /ANN pdfmark
+6666(58)s 4816 10946(Ro)m 6(w)k 5317(mark)s
+5816(,)s
+[ /Rect [5923 10946 6037 11108] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pri_obje_4 /ANN pdfmark
+5923(2)s 220 fnt2 4816 10655(rr)m 2(agged)k
+5618(@Break)s 240 fnt1 6421 10658(,)m
+[ /Rect [6528 10658 6762 10820] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_brea_5 /ANN pdfmark
+6528(44)s 220 fnt2
+4816 10367(@Rump)m 240 fnt1 5676 10370(symbol)m 6383(,)s
+[ /Rect [6490 10367 6725 10534] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_rump_2 /ANN pdfmark
+6490(60)s
+220 fnt2 4816 10079(r)m 240 fnt1 4949 10082(unit)m 5328(,)s
+
+[ /Rect [5435 10079 5662 10244] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_16 /ANN pdfmark
+5435(38)s 220 fnt2 4816 9791(@Runner)m 240 fnt1 5818 9794(e)m 3(xample)k
+6628(,)s
+[ /Rect [6735 9789 6970 9956] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_exa_page_8 /ANN pdfmark
+6735(90)s 220 fnt2 4816 9215(@Scale)m 240 fnt1
+5639 9218(symbol)m 6346(,)s
+[ /Rect [6453 9215 6680 9383] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_scal_1 /ANN pdfmark
+6453(58)s 4816 8930(Scaling)m 5586(of)s
+5857(object)s 6448(,)s
+[ /Rect [6555 8927 6781 9095] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_hsca_3 /ANN pdfmark
+6555(55)s 4816 8642(Scribe)m 5429(,)s
+
+[ /Rect [5536 8639 5643 8804] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pri_cros_2 /ANN pdfmark
+5536(8)s 220 fnt2 4816 8351(@Section)m 240 fnt1 5816 8354(e)m 3(xample)k
+6626(,)s
+[ /Rect [6733 8349 6959 8519] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_exa_chap_6 /ANN pdfmark
+6733(95)s 220 fnt2 4816 8063(@SetColor)m 240 fnt1
+5951 8066(symbol)m 6658(,)s
+[ /Rect [6765 8063 6992 8228] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_colo_2 /ANN pdfmark
+6765(48)s 220 fnt2 4816 7775(@SetColour)m
+240 fnt1 6073 7778(symbol)m 6780(,)s
+[ /Rect [6887 7775 7114 7940] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_colo_1 /ANN pdfmark
+6887(48)s 220 fnt2
+4816 7487(@SetHeaderComponent)m 240 fnt1 7277 7490(symbol)m 7984(,)s
+[ /Rect [8091 7487 8324 7654] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_head_4 /ANN pdfmark
+8091(66)s
+220 fnt2 4816 7199(@SetT)m 26(e)k 6(xture)k 240 fnt1
+6132 7202(symbol)m 6839(,)s
+[ /Rect [6946 7199 7181 7367] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_text_1 /ANN pdfmark
+6946(50)s 220 fnt2 4816 6911(@SetUnder)m -3(lineColor)k
+240 fnt1 6891 6914(symbol)m 7598(,)s
+[ /Rect [7705 6909 7936 7076] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_ucol_2 /ANN pdfmark
+7705(49)s 220 fnt2
+4816 6623(@SetUnder)m -3(lineColour)k 240 fnt1 7013 6626(symbol)m 7720(,)s
+
+[ /Rect [7827 6621 8058 6788] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_ucol_1 /ANN pdfmark
+7827(49)s 4816 6338(Size)m 5283(of)s 5554(an)s 5837(object)s
+6428(,)s
+[ /Rect [6535 6335 6761 6503] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_size_4 /ANN pdfmark
+6535(25)s 4816 6050(small)m 5388(capitals)s 6115(,)s
+
+[ /Rect [6222 6050 6456 6212] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_font_7 /ANN pdfmark
+6222(42)s 4816 5762(Sorted)m 5498(g)s 1(alle)k 3(ys)k
+6169(,)s
+[ /Rect [6276 5759 6500 5924] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_sort_1 /ANN pdfmark
+6276(33)s 4816 5474(Space)m 5390(,)s
+[ /Rect [5497 5474 5731 5636] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_lexi_10 /ANN pdfmark
+5497(14)s
+5056 5186(when)m 5632(signi\207cant)s 6635(,)s
+[ /Rect [6742 5181 6973 5348] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_34 /ANN pdfmark
+6742(39)s 220 fnt2
+4816 4895(@Space)m 240 fnt1 5713 4898(symbol)m 6420(,)s
+[ /Rect [6527 4895 6760 5062] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_spac_1 /ANN pdfmark
+6527(46)s
+220 fnt2 4816 4607(@Star)m -8(tHSpan)k 240 fnt1 6226 4610(symbol)m
+6933(,)s
+[ /Rect [7040 4607 7268 4775] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_span_1 /ANN pdfmark
+7040(57)s 220 fnt2 4816 4319(@Star)m -8(tHVSpan)k
+240 fnt1 6372 4322(symbol)m 7079(,)s
+[ /Rect [7186 4319 7414 4487] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_span_3 /ANN pdfmark
+7186(57)s 220 fnt2
+4816 4031(@Star)m -8(tVSpan)k 240 fnt1 6214 4034(symbol)m 6921(,)s
+
+[ /Rect [7028 4031 7256 4199] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_span_2 /ANN pdfmark
+7028(57)s 4816 3746(Style)m 5363(of)s 5634(an)s 5917(object)s
+6508(,)s
+[ /Rect [6615 3746 6849 3908] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_size_1 /ANN pdfmark
+6615(24)s 220 fnt2 4816 3455(s)m 240 fnt1
+4979 3458(unit)m 5358(,)s
+[ /Rect [5465 3455 5692 3620] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_12 /ANN pdfmark
+5465(38)s 5056 3170(and)m 220 fnt2
+5460 3167(@Space)m 240 fnt1 6357 3170(symbol)m 7064(,)s
+[ /Rect [7171 3167 7404 3334] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_spac_2 /ANN pdfmark
+7171(46)s
+220 fnt2 4816 2879(sup)m 240 fnt1 5222 2882(e)m 3(xample)k
+6032(,)s
+[ /Rect [6139 2879 6373 3044] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_exa_equa_5 /ANN pdfmark
+6139(82)s 4816 2594(Symbol)m 5563(,)s
+[ /Rect [5670 2594 5784 2756] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pri_defi_2 /ANN pdfmark
+5670(4)s
+220 fnt2 4816 2303(@SysDatabase)m 240 fnt1 6396 2306(symbol)m 7103(,)s
+
+[ /Rect [7210 2305 7425 2468] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_data_3 /ANN pdfmark
+7210(71)s 220 fnt2 4816 2015(@SysIncludeGr)m 2(aphicRepeated)k 240 fnt1
+7877 2018(symbol)m 8584(,)s
+[ /Rect [8691 2015 8924 2182] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_incr_2 /ANN pdfmark
+8691(76)s 220 fnt2 4816 1727(@SysIncludeGr)m 2(aphic)k
+240 fnt1 6933 1730(symbol)m 7640(,)s
+[ /Rect [7747 1727 7973 1895] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_incg_2 /ANN pdfmark
+7747(75)s 220 fnt2
+4816 1439(@SysInclude)m 240 fnt1 6164 1442(symbol)m 6871(,)s
+[ /Rect [6978 1441 7206 1600] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_incl_2 /ANN pdfmark
+6978(77)s
+220 fnt2 4816 1151(@SysPrependGr)m 2(aphic)k 240 fnt1 7055 1154(symbol)m
+7762(,)s
+[ /Rect [7869 1151 8102 1318] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_prep_2 /ANN pdfmark
+7869(76)s 4816 578(T)m 19(ables)k 5432(,)s
+
+[ /Rect [5539 578 5653 740] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pri_obje_5 /ANN pdfmark
+5539(2)s 4816 290(T)m 19(ab)k 4(ulation)k 5886(g)s 1(ap)k
+6284(mode)s 6819(,)s
+[ /Rect [6926 287 7153 452] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_29 /ANN pdfmark
+6926(38)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 114 120
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt5 vec2 /Times-Bold LoutRecode
+/fnt5 { /Times-Boldfnt5 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt6 vec2 /Times-Italic LoutRecode
+/fnt6 { /Times-Italicfnt6 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+240 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 240 288 60 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt5
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1583(114)m 240 fnt6 9956 -1580(Inde)m 4(x)k
+gsave
+1417 -15423 translate
+240 fnt1 9066 13415 0 13415 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+220 fnt2 0 13248(@T)m 26(agged)k 240 fnt1
+989 13251(symbol)m 1696(,)s
+[ /Rect [1803 13248 2030 13415] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_tagg_1 /ANN pdfmark
+1803(68)s 220 fnt2 0 12960(@T)m 26(ag)k
+240 fnt1 623 12963(parameter)m 9(,)k 1675(def)s 2(ault)k
+2396(v)s 6(alue)k 2964(of)s 3182(,)s
+[ /Rect [3289 12962 3517 13125] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_name_4 /ANN pdfmark
+3289(17)s
+0 12675(T)m 19(ar)k 4(get)k 660(of)s 931(cross)s
+1473(reference)s 2363(,)s
+[ /Rect [2470 12670 2581 12837] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pri_cros_4 /ANN pdfmark
+2470(9)s 0 12387(T)m 19(ar)k 4(get)k
+660(of)s 931(a)s 1097(g)s 1(alle)k 3(y)k
+1678(,)s
+[ /Rect [1785 12387 2000 12549] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pri_gall_3 /ANN pdfmark
+1785(11)s 240 12099(in)m 483(detail)s 1015(,)s
+
+[ /Rect [1122 12098 1350 12261] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_gall_2 /ANN pdfmark
+1122(27)s 220 fnt2 0 11808(@T)m 26(arget)k 240 fnt1
+887 11811(symbol)m 1594(,)s
+[ /Rect [1701 11808 1916 11973] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_gall_11 /ANN pdfmark
+1701(31)s 0 11523(T)m 96 11475(E)m
+204 11523(X)m 240 11235(h)m 1(yphenation)k 1427(,)s
+[ /Rect [1534 11232 1769 11397] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_38 /ANN pdfmark
+1534(40)s
+240 10947(optimal)m 1025(paragraph)s 2038(breaking)s 2875(,)s
+[ /Rect [2982 10944 3217 11109] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_36 /ANN pdfmark
+2982(40)s
+0 10659(T)m 16(e)k 3(xtual)k 766(unit)s 1145(,)s
+
+[ /Rect [1252 10659 1486 10821] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_lexi_1 /ANN pdfmark
+1252(14)s 220 fnt2 0 10368(t)m 240 fnt1 117 10371(g)m 1(ap)k
+515(mode)s 1050(,)s
+[ /Rect [1157 10368 1384 10533] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_30 /ANN pdfmark
+1157(38)s 220 fnt2 0 9792(@Under)m -3(line)k
+240 fnt1 1215 9795(symbol)m 1922(,)s
+[ /Rect [2029 9790 2260 9957] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_unde_1 /ANN pdfmark
+2029(79)s 0 9507(Underscore)m
+1158(character)s 2039(,)s
+[ /Rect [2146 9507 2380 9669] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_lexi_7 /ANN pdfmark
+2146(14)s 220 fnt2 0 9216(@Use)m
+240 fnt1 665 9219(symbol)m 1372(,)s
+[ /Rect [1479 9214 1710 9383] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_open_2 /ANN pdfmark
+1479(69)s 220 fnt2
+0 8640(@V)m 17(Adjust)k 240 fnt1 1017 8643(symbol)m 1724(,)s
+
+[ /Rect [1831 8640 2057 8808] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_hadj_3 /ANN pdfmark
+1831(55)s 220 fnt2 0 8352(@VContr)m 2(act)k 240 fnt1
+1252 8355(symbol)m 1959(,)s
+[ /Rect [2066 8352 2300 8520] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_hcon_2 /ANN pdfmark
+2066(54)s 220 fnt2 0 8064(@VCo)m 3(v)k 5(er)k
+240 fnt1 1006 8067(symbol)m 1713(,)s
+[ /Rect [1820 8064 2053 8232] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_cove_2 /ANN pdfmark
+1820(56)s 220 fnt2
+0 7776(@V)m 17(erbatim)k 240 fnt1 1129 7779(symbol)m 1836(,)s
+
+[ /Rect [1943 7776 2170 7941] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_verb_1 /ANN pdfmark
+1943(78)s 0 7491(V)m 26(ertical)k 797(concatenation)s 2129(,)s
+
+[ /Rect [2236 7488 2464 7653] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_2 /ANN pdfmark
+2236(37)s 220 fnt2 0 7200(@VExpand)m 240 fnt1 1161 7203(symbol)m
+1868(,)s
+[ /Rect [1975 7200 2209 7368] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_hexp_2 /ANN pdfmark
+1975(54)s 220 fnt2 0 6912(@VLimited)m 240 fnt1
+1123 6915(symbol)m 1830(,)s
+[ /Rect [1937 6912 2171 7080] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_hlim_2 /ANN pdfmark
+1937(54)s 220 fnt2 0 6624(@VMirror)m
+240 fnt1 1001 6627(symbol)m 1708(,)s
+[ /Rect [1815 6624 2041 6792] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_hmir_2 /ANN pdfmark
+1815(55)s 220 fnt2
+0 6336(@VScale)m 240 fnt1 969 6339(symbol)m 1676(,)s
+[ /Rect [1783 6336 2009 6504] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_hsca_2 /ANN pdfmark
+1783(55)s
+220 fnt2 0 6048(@VShift)m 240 fnt1 863 6051(symbol)m 1570(,)s
+
+[ /Rect [1677 6048 1901 6216] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_hshi_2 /ANN pdfmark
+1677(53)s 220 fnt2 0 5760(@VSpan)m 240 fnt1 927 5763(symbol)m
+1634(,)s
+[ /Rect [1741 5760 1969 5928] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_span_5 /ANN pdfmark
+1741(57)s 220 fnt2 0 5472(v)m 240 fnt1
+169 5475(unit)m 548(,)s
+[ /Rect [655 5472 882 5637] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_13 /ANN pdfmark
+655(38)s 240 5187(ef)m 6(fect)k
+836(on)s 1133(paragraph)s 2146(breaking)s 2983(,)s
+[ /Rect [3090 5184 3316 5352] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_brea_11 /ANN pdfmark
+3090(45)s
+0 4611(White)m 640(space)s 1174(,)s
+[ /Rect [1281 4611 1515 4773] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_lexi_8 /ANN pdfmark
+1281(14)s 240 4323(when)m
+816(signi\207cant)s 1819(,)s
+[ /Rect [1926 4318 2157 4485] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_33 /ANN pdfmark
+1926(39)s 220 fnt2 0 4032(@Wide)m
+240 fnt1 774 4035(symbol)m 1481(,)s
+[ /Rect [1588 4032 1812 4200] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_wide_1 /ANN pdfmark
+1588(53)s 0 3747(W)m 9(idth)k
+646(of)s 917(an)s 1200(object)s 1791(,)s
+[ /Rect [1898 3744 2124 3912] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_size_2 /ANN pdfmark
+1898(25)s
+0 3459(W)m 19(ord)k 531(,)s
+[ /Rect [638 3456 864 3624] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_det_lexi_18 /ANN pdfmark
+638(15)s 220 fnt2
+0 3168(w)m 240 fnt1 216 3171(unit)m 595(,)s
+[ /Rect [702 3168 929 3333] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_14 /ANN pdfmark
+702(38)s
+220 fnt2 0 2592(x)m 240 fnt1 168 2595(g)m 1(ap)k
+566(mode)s 1101(,)s
+[ /Rect [1208 2592 1435 2757] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_conc_24 /ANN pdfmark
+1208(38)s 220 fnt2 0 2016(@Y)m 4(ield)k
+240 fnt1 753 2019(symbol)m 1460(,)s
+[ /Rect [1567 2016 1791 2183] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_case_2 /ANN pdfmark
+1567(63)s 220 fnt2
+0 1728(@YUnit)m 240 fnt1 814 1731(symbol)m 1521(,)s
+[ /Rect [1628 1730 1856 1893] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_yuni_1 /ANN pdfmark
+1628(47)s
+220 fnt2 0 1152(@ZUnit)m 240 fnt1 802 1155(symbol)m 1509(,)s
+
+[ /Rect [1616 1154 1844 1317] /Border [0 0 0] /View [ /XYZ null null null ] /Subtype /Link /Dest /LOUT19_4637_pre_yuni_2 /ANN pdfmark
+1616(47)s
+grestore
+gsave
+1417 -15423 translate
+240 fnt1 0 0 0 0 240 288 60 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Trailer
+%%DocumentNeededResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Times-BoldItalic
+%%+ font Times-Italic
+%%+ font Helvetica
+%%+ font Helvetica-Oblique
+%%+ font Symbol
+%%+ font Courier
+%%DocumentSuppliedResources: procset LoutStartUp
+%%+ procset LoutTabPrependGraphic
+%%+ procset LoutFigPrependGraphic
+%%+ procset LoutBasicSetup
+%%+ encoding vec2
+%%Pages: 120
+%%EOF
diff --git a/doc/doc/expert/pre b/doc/doc/expert/pre
new file mode 100644
index 0000000..f87dbea
--- /dev/null
+++ b/doc/doc/expert/pre
@@ -0,0 +1,59 @@
+@Chapter
+ @Title { Predefined symbols }
+ @Tag { symbols }
+@Begin
+@BeginSections
+@Include { pre_begi }
+@Include { pre_conc }
+@Include { pre_font }
+@Include { pre_brea }
+@Include { pre_spac }
+@Include { pre_yuni }
+@Include { pre_cont }
+@Include { pre_colo }
+@Include { pre_ucol }
+@Include { pre_text }
+@Include { pre_outl }
+@Include { pre_lang }
+@Include { pre_oner }
+@Include { pre_wide }
+@Include { pre_hshi }
+@Include { pre_hexp }
+@Include { pre_hcon }
+@Include { pre_hlim }
+@Include { pre_hadj }
+@Include { pre_hsca }
+@Include { pre_hmir }
+@Include { pre_cove }
+@Include { pre_span }
+@Include { pre_scal }
+@Include { pre_rota }
+@Include { pre_back }
+@Include { pre_kshr }
+@Include { pre_rump }
+@Include { pre_inse }
+@Include { pre_oneo }
+@Include { pre_next }
+@Include { pre_case }
+@Include { pre_mome }
+@Include { pre_null }
+@Include { pre_gall }
+@Include { pre_head }
+@Include { pre_notr }
+@Include { pre_cros }
+@Include { pre_tagg }
+@Include { pre_open }
+@Include { pre_link }
+@Include { pre_data }
+@Include { pre_grap }
+@Include { pre_plai }
+@Include { pre_incg }
+@Include { pre_incr }
+@Include { pre_prep }
+@Include { pre_incl }
+@Include { pre_bend }
+@Include { pre_verb }
+@Include { pre_unde }
+@Include { pre_page }
+@EndSections
+@End @Chapter
diff --git a/doc/doc/expert/pre_back b/doc/doc/expert/pre_back
new file mode 100644
index 0000000..37de5c5
--- /dev/null
+++ b/doc/doc/expert/pre_back
@@ -0,0 +1,12 @@
+@Section
+ @Title { "@Background" }
+ @Tag { background }
+@Begin
+@PP
+background.sym @Index { @@Background symbol }
+The @@Background symbol will print its left parameter in the
+background of its right parameter. That is, the result has
+the size of the right parameter, but the left parameter will
+be printed first in the same space, with its marks aligned with
+the marks of the right parameter.
+@End @Section
diff --git a/doc/doc/expert/pre_begi b/doc/doc/expert/pre_begi
new file mode 100644
index 0000000..e9adbb1
--- /dev/null
+++ b/doc/doc/expert/pre_begi
@@ -0,0 +1,31 @@
+@Section
+ @Title { "@Begin" and "@End" }
+ @Tag { begin }
+@Begin
+@PP
+The body of a symbol @Code "@Sym" may be enclosed in @@Begin and
+begin. @Index { @@Begin symbol }
+end. @Index { @@End symbol }
+@@End @Code "@Sym" instead of the more usual braces:
+@ID @Code {
+"def @Section"
+" named @Title {}"
+" right @Body"
+"@Begin"
+" @Title //2v @Body"
+"@End @Section"
+}
+They may also enclose the right or body parameter of a symbol invocation:
+@ID @Code {
+"@Chapter"
+" @Title { Introduction }"
+"@Begin"
+"This subject needs no introduction."
+"@End @Chapter"
+}
+Apart from their utility as documentation aids, these forms allow Basser
+Lout to pinpoint mismatched braces, which can otherwise create total
+havoc. For this reason, they should enclose the major parts of documents,
+such as chapters and sections. Note that braces cannot be
+replaced by @@Begin and @@End in general.
+@End @Section
diff --git a/doc/doc/expert/pre_bend b/doc/doc/expert/pre_bend
new file mode 100644
index 0000000..8f742a9
--- /dev/null
+++ b/doc/doc/expert/pre_bend
@@ -0,0 +1,61 @@
+@Section
+ @Tag { backend }
+ @Title { "@BackEnd" and the PlainText and PDF back ends }
+@Begin
+@PP
+backend.sym @Index { @@BackEnd symbol }
+The @@BackEnd symbol, which takes no parameters, has for its result a
+string naming the back end currently in use. Three back ends are available,
+PostScript, PDF and PlainText. The symbol is generally used like this:
+@ID @Code {
+"@BackEnd @Case {"
+" PlainText @Yield { ... }"
+" PostScript @Yield { ... }"
+" PDF @Yield { ... }"
+"}"
+}
+to obtain different objects depending on the back end. No @Code else
+is required since these are the only possible values.
+@PP
+When a @Code "@Case" symbol has @Code "@BackEnd" for its left parameter
+and the left parameter of each @Code "@Yield" symbol within it consists
+of a sequence of one or more literal words (including {@Code else}), Lout
+will optimize by evaluating the @Code "@Case" symbol at the time it is
+read. This optimization ensures that there is only a small once-only
+performance penalty for multiple back ends, and it permits these
+@Code "@Case" symbols (but no other symbols) to appear within the object
+following @Code "@Include" and @Code "@PrependGraphic" symbols.
+@PP
+The PlainText back end differs from the PostScript one in two main
+respects. First, there is effectively just one font: although all
+the font commands work exactly as usual, they don't actually change
+anything. Each character in this font is taken to be one tenth
+of one inch wide and 20 points high. Second, the output is an
+ordinary text file, not a PostScript file.
+@PP
+Clearly, with ordinary text output the possibility of advanced graphics
+features such as rotation and scaling is curtailed. Nevertheless, all
+symbols have well-defined (possibly null) effects in the PlainText
+back end, so there is no additional danger of crashing the system or
+obtaining grossly unreasonable output by a change to PlainText.
+@PP
+The PlainText back end is obtained by the @Code "-p" option to Basser
+Lout. The character size can be changed by adding two lengths to
+the @Code "-p" option, like this:
+@ID @Code "lout -p0.1i12p ..."
+which invokes the PlainText back end with each character being 0.1
+inches wide and 12 points high. However, experience suggests that
+the best approach is to define all horizontal lengths as multiples of
+the @Code "s" unit (the width of a space, hence the width of all
+characters) and to define all vertical lengths as multiples of the
+@Code "f" unit (the font size, equal to the height of every character),
+and not to change the character size in the command line.
+@PP
+There is a @Code "-P" option which is identical with the @Code "-p"
+option except that it inserts a form-feed character between each two
+components of the output, but not before the first or after the last.
+@PP
+The PDF back end is obtained by typing {@Code "lout -Z"}. It is similar
+to PostScript but much more limited in functionality. Consult a separate
+document distributed with Lout for further information.
+@End @Section
diff --git a/doc/doc/expert/pre_brea b/doc/doc/expert/pre_brea
new file mode 100644
index 0000000..5e17b9c
--- /dev/null
+++ b/doc/doc/expert/pre_brea
@@ -0,0 +1,197 @@
+@Section
+ @Title { "@Break" }
+ @Tag { break }
+@Begin
+@PP
+The @@Break symbol influences the appearance of paragraphs (Section
+{@NumberOf concatenation}), offering a fixed set of styles:
+@IL
+
+@LI {
+2i @Wide { |1rt @Code adjust @@Break @I object }
+adjust.break @Index { @Code adjust @@Break }
+|2m Break the paragraphs of {@I object} into lines, and apply @@PAdjust
+(Section {@NumberOf hadjust}) to every line except the last in
+each paragraph;
+}
+
+@LI {
+2i @Wide { |1rt @Code outdent @@Break @I object }
+outdent.break @Index { @Code outdent @@Break }
+|2m Like {@Code adjust}, except that @Code "2.0f @Wide {} &0i" is
+inserted at the beginning of every line except the first, creating
+an outdented paragraph (the outdent width may be changed -- see below);
+}
+
+@LI {
+2i @Wide { |1rt @Code ragged @@Break @I object }
+ragged.break @Index { @Code ragged @@Break }
+|2m Break the paragraphs of {@I object} into lines, but do not adjust
+the lines (`ragged right');
+}
+
+@LI {
+2i @Wide { |1rt @Code cragged @@Break @I object }
+cragged.break @Index { @Code cragged @@Break }
+|2m Like {@Code ragged}, except that each line will be centred with
+respect to the others;
+}
+
+@LI {
+2i @Wide { |1rt @Code rragged @@Break @I object }
+rragged.break @Index { @Code rragged @@Break }
+|2m Like {@Code ragged}, except that each line will be right-justified with
+respect to the others (`ragged left');
+}
+
+@LI {
+2i @Wide { |1rt @Code oragged @@Break @I object }
+oragged.break @Index { @Code oragged @@Break }
+|2m The obvious combination of {@Code ragged} and {@Code outdent};
+}
+
+@LI {
+2i @Wide { |1rt @Code lines @@Break @I object }
+lines.break @Index { @Code lines @@Break }
+|2m Break the paragraphs of {@I object} into lines at the same points
+that they are broken into lines in the input, and also at concatenation
+symbols of the form {@Code "&"}{@I k}{@Code "b"} for any {@I k} greater
+than 1. Do not adjust the lines. Any spaces at the start of a line
+other than the first line will appear in the output;
+}
+
+@LI {
+2i @Wide { |1rt @Code clines @@Break @I object }
+clines.break @Index { @Code clines @@Break }
+|2m Break the paragraphs of {@I object} into lines as for @Code "lines"
+@@Break, then centre each line with respect to the others;
+}
+
+@LI {
+2i @Wide { |1rt @Code rlines @@Break @I object }
+rlines.break @Index { @Code rlines @@Break }
+|2m Break the paragraphs of {@I object} into lines as for @Code "lines"
+@@Break, then right-justify each line with respect to the others.
+}
+
+@LI {
+2i @Wide { |1rt @Code olines @@Break @I object }
+olines.break @Index { @Code olines @@Break }
+|2m Break the paragraphs of {@I object} into lines as for @Code "lines"
+@@Break, then as for outdenting.
+}
+
+@EL
+If the paragraph was an entire component of a galley, so will each of
+its lines be; otherwise the lines are enclosed in a {@Code "@OneRow"}
+symbol after breaking.
+@PP
+The length of the gap used to separate the lines produced by paragraph
+breaking is always {@Code 1v}, except when {@Code lines}, {@Code clines},
+or {@Code rlines} encounter a completely blank line, for which see below.
+However, the @Code v unit itself and the
+v.unit.effect @SubIndex { effect on paragraph breaking }
+gap mode may be changed:
+@IL
+
+@LI {
+2i @Wide { |1rt @I gap @Code "@Break" @I object }
+|2m Within {@I object}, take the value of the @Code "v" unit to be the
+length of {@I gap};
+}
+
+@LI {
+2i @Wide { |1rt + & @I gap @Code "@Break" @I object }
+|2m Within {@I object}, take the value of the @Code "v" unit to be
+larger by the length of @I gap than it would otherwise have been;
+}
+
+@LI {
+2i @Wide { |1rt -- & @I gap @Code "@Break" @I object }
+|2m Within {@I object}, take the value of the @Code "v" unit to be
+smaller by the length of @I gap than it would otherwise have been.
+}
+
+@EL
+In each case, the mode of @I gap is adopted within {@I object}.
+@PP
+When {@Code lines}, {@Code clines}, or {@Code rlines} encounter one or more
+completely blank lines, a single vertical concatenation operator is inserted
+to implement these, ensuring that the entire set of lines will disappear if
+they happen to fall on a page or column break. The gap width of the
+concatenation operator is {@Code 1v} for the first newline as usual, plus
+{@Code 1v} multiplied by the @I { blank line scale factor }, an arbitrary
+decimal number with no units, for the remaining newlines. This scale factor
+is settable by
+@ID {
+@Code "{ blanklinescale" @I num @Code "} @Break" @I object
+}
+The default value is {@Code 1.0}, which gives blank lines their full
+height. However it often looks better if they are reduced somewhat.
+A value as small as {@Code 0.6} looks good; it gives width {@Code 1.6v}
+to the concatenation symbol inserted at a single blank line. The
+usual gap mode is of course appended.
+@PP
+The @@Break symbol also controls hyphenation:
+@IL
+
+@LI {
+2i @Wide { |1rt @Code "hyphen @Break" @I object }
+hyphen.break @Index { @Code hyphen @@Break }
+|2m Permit hyphenation within the paragraphs of {@I object};
+}
+
+@LI {
+2i @Wide { |1rt @Code "nohyphen @Break" @I object }
+nohyphen.break @Index { @Code nohyphen @@Break }
+|2m Prohibit hyphenation within the paragraphs of {@I object}; all
+hyphenation gaps without exception revert to edge-to-edge mode.
+}
+
+@EL
+The @@Break also has options which control widow and orphan lines:
+@IL
+
+@LI {
+2i @Wide { |1rt @Code "unbreakablefirst @Break" @I object }
+hyphen.break @Index { @Code hyphen @@Break }
+|2m Prevent column and page breaks (i.e. prevent a galley from splitting)
+between the first and second lines of the paragraphs of {@I object};
+}
+
+@LI {
+2i @Wide { |1rt @Code "unbreakablelast @Break" @I object }
+nohyphen.break @Index { @Code nohyphen @@Break }
+|2m Prevent column and page breaks between the last and second
+last lines of the paragraphs of {@I object}.
+}
+
+@EL
+These options work by adding the @Code "u" (unbreakable) suffix to the
+appropriate gaps during paragraph breaking, so their precise effect is
+as described for this suffix. These options may be countermanded by
+@Code "breakablefirst @Break" and @Code "breakablelast @Break".
+@PP
+The width of the outdenting used in the @Code "outdent" style may be
+changed like this:
+@IL
+
+@LI {
+2i @Wide { |1rt @Code "{ setoutdent" @I width @Code "} @Break" @I object }
+|2m Within {@I object}, whenever outdenting is required, use @I width
+for the amount of outdenting. Note that this does not itself cause a
+switch to outdenting style. The width may be preceded by @Code "+" or
+@Code -- to indicate a change to the existing outdent value.
+}
+
+@EL
+Margin kerning, in which small (usually punctuation) characters protrude
+into the margin, may be obtained by @Code "marginkerning @Break" and turned
+off by @Code { "nomarginkerning @Break" }.
+@PP
+Several options may be given to the @@Break symbol simultaneously, in
+any order. For example,
+@ID @Code "{ adjust 1.2fx hyphen } @Break ..."
+is a typical initial value. There may be empty objects and @@Null objects
+in the left parameter of @@Break; these are ignored.
+@End @Section
diff --git a/doc/doc/expert/pre_case b/doc/doc/expert/pre_case
new file mode 100644
index 0000000..f0f22e1
--- /dev/null
+++ b/doc/doc/expert/pre_case
@@ -0,0 +1,51 @@
+@Section
+ @Title { "@Case" }
+ @Tag { case }
+@Begin
+@PP
+case.sym @Index { @@Case symbol }
+yield.sym @Index { @@Yield symbol }
+The @@Case symbol selects its result from a list of alternatives,
+depending on a tag:
+@ID @Code {
+"@Day @Case {"
+" { 1 21 31 } @Yield st"
+" { 2 22 } @Yield nd"
+" { 3 23 } @Yield rd"
+" else @Yield th"
+"}"
+}
+In this example the result will be st if @Code "@Day" is 1, 21, or 31,
+and nd if @Code "@Day" is 2 or 22, etc. The effect is similar to
+accessing a database, though in a more compact form. The right parameter
+is a sequence of @@Yield symbols, each with a left parameter whose value is
+a sequence of one or more juxtapositions of simple words, and a right
+parameter which may be any object.
+@PP
+We first describe the behaviour when the value of the left parameter of
+@@Case is a juxtaposition of one or more simple words. Then the result of
+the @@Case is the right parameter of the first @@Yield whose left parameter
+contains either the value of the left parameter of the @@Case, or the special
+value {@Code else}. If there is no such @@Yield it is an error.
+@PP
+When the left parameter of @@Case is not a juxtaposition of simple
+words, the result is the right parameter of the first @@Yield whose
+left parameter is {@Code else}, or an error otherwise. This permits
+examples like
+@ID @Code {
+"@RunningTitle @Case {"
+" dft @Yield @Title"
+" else @Yield @RunningTitle"
+"}"
+}
+where a running title is returned unless it has the value {@Code dft}
+(which presumably means that no running title was supplied), in which
+case an ordinary title is returned instead.
+@PP
+When a receptive symbol is placed within a @@Case, it should be included
+in each alternative, since otherwise Basser Lout may become confused when
+trying to predict whether the symbol will be a part of the result or
+not. Alternatively, if it can be guaranteed that the receptive symbol
+will never be searched for when the cases that it does not lie within
+are selected, that is all right too.
+@End @Section
diff --git a/doc/doc/expert/pre_colo b/doc/doc/expert/pre_colo
new file mode 100644
index 0000000..df4459b
--- /dev/null
+++ b/doc/doc/expert/pre_colo
@@ -0,0 +1,101 @@
+@Section
+ @Title { "@SetColour" and "@SetColor" }
+ @Tag { colour }
+@Begin
+@PP
+The @@SetColour and @@SetColor symbols,
+setcolour.sym @Index { @@SetColour symbol }
+setcolor.sym @Index { @@SetColor symbol }
+which have identical effect, return their right parameter in
+the colour specified by their left parameter. The form of
+the left parameter is implementation-dependent; in Basser Lout
+it must be an object whose value is a sequence of words comprising
+a PostScript command for setting colour. For example,
+@ID @Code "{ 1.0 0.0 0.0 setrgbcolor } @SetColour { hello, world }"
+produces the red result
+@ID {
+ @BackEnd @Case {
+ PostScript @Yield {
+ { 1.0 0.0 0.0 setrgbcolor } @SetColour { hello, world }
+ }
+ PDF @Yield {
+ { 1.0 0.0 0.0 rg 1.0 0.0 0.0 RG } @SetColour { hello, world }
+ }
+ }
+}
+Of course, a colour output device is needed to see the effect; on
+a monochrome device the result will be some shade of grey.
+@PP
+The @@SetColour command accepts the special value {@Code "nochange"}
+for the left parameter. This value causes the right parameter to have
+the colour it would have had without the @@SetColour command. An
+empty left parameter also has this effect.
+@PP
+There is no default colour, so the user must ensure that the root galley
+or each of its components is enclosed in a @@SetColour symbol whose
+left parameter is not {@Code "nochange"}.
+@PP
+In addition to setting the colour used in the following object, the
+@@SetColour command also sets the underline colour in that object,
+like @@SetUnderlineColour from Section {@NumberOf underline_colour}.
+While a case could be made for keeping these two attributes of
+style independent, most people want to underline in the same colour
+as the text most of the time, and this behaviour gives this without
+any need to use @@SetUnderlineColour explicitly.
+@PP
+Lout makes no attempt to understand colour, it simply prints
+the PostScript or PDF commands when appropriate. This has the advantage
+of permitting access to any of PostScript's colour models (some
+require initialization which can be supplied using @@PrependGraphic),
+but the disadvantage of offering no way to make relative changes
+(`as before only redder,' and so on).
+@PP
+For those who wish to obtain colour without working very hard,
+the @Code setrgbcolor command used above is available in every
+version of PostScript, requires no initialization, and is simple
+to use. The three numbers, which range from 0.0 to 1.0, determine
+the intensity of red, green, and blue respectively. Some useful
+values for the left parameter are
+@ID @Tab
+ @Fmta { @Col @Code A ! @Col @I B }
+{
+@Rowa A { 1.0 0.0 0.0 setrgbcolor } B { red }
+@Rowa A { 0.0 1.0 0.0 setrgbcolor } B { green }
+@Rowa A { 0.0 0.0 1.0 setrgbcolor } B { blue }
+@Rowa A { 1.0 1.0 1.0 setrgbcolor } B { white }
+@Rowa A { 0.5 0.5 0.5 setrgbcolor } B { grey }
+@Rowa A { 0.0 0.0 0.0 setrgbcolor } B { black }
+}
+Colouring an object white is useful for producing an empty space
+whose size is that of some object.
+@PP
+Since the introduction of textures to Lout in Version 3.27, direct
+use of PostScript colour setting operations such as {@Code setrgbcolor}
+is deprecated. Instead, Lout offers its own versions of the
+standard PostScript colour setting operations:
+@ID @OneRow @Tbl
+ aformat { @Cell A | @Cell B }
+ bformat { @Cell @Code A | @Cell @Code B }
+{
+@Rowa
+ A { If you want this }
+ B { You should rather write this }
+ f { Italic }
+ rb { yes }
+@Rowb
+ A { num setgray }
+ B { num LoutSetGray }
+@Rowb
+ A { num num num setrgbcolor }
+ B { num num num LoutSetRGBColor }
+@Rowb
+ A { num num num sethsbcolor }
+ B { num num num LoutSetHSBColor }
+@Rowb
+ A { num num num setcmykcolor }
+ B { num num num LoutSetCMYKColor }
+ rb { yes }
+}
+The Lout versions are equivalent to the PostScript ones but without
+the unwanted effect of causing the current texture to be forgotten.
+@End @Section
diff --git a/doc/doc/expert/pre_conc b/doc/doc/expert/pre_conc
new file mode 100644
index 0000000..0434b95
--- /dev/null
+++ b/doc/doc/expert/pre_conc
@@ -0,0 +1,327 @@
+@Section
+ @Title { Concatenation symbols and paragraphs }
+ @Tag { concatenation }
+@Begin
+@PP
+There are ten concatenation symbols, in three families:
+concatenation. @Index { Concatenation symbols }
+@ID @Tab
+ vmargin { 0.5vx }
+ @Fmta { @Col @Code A ! @Col @Code B ! @Col @Code C ! @Col @Code D ! @Col E }
+{
+@Rowa A { "/" } B { "^/" } C { "//" } D { "^//" } E { Vertical concatenation }
+@Rowa A { "|" } B { "^|" } C { "||" } D { "^||" } E { Horizontal concatenation }
+@Rowa A { "&" } B { "^&" } C { } D { } E {In-paragraph concatenation}
+}
+Each symbol produces an object which combines together the two
+parameters. The right parameter must be separated from the symbol by at
+least one white space character.
+@PP
+The vertical concatenation symbol @Code "/" places its left parameter
+vertical.concatenation @Index { Vertical concatenation }
+above its right parameter with their column marks aligned. If one
+parameter has more column marks than the other, empty columns are
+inserted at the right to equalize the numbers. The variant @Code "//"
+ignores column marks and left-justifies the objects.
+@PP
+The horizontal concatenation symbols @Code "|" and @Code "||" are horizontal
+horizontal.concatenation @Index { Horizontal concatenation }
+analogues of @Code "/" and {@Code "//"}: they place their two parameters side
+by side, with row mark alignment or top-justification respectively. The
+in.paragraph.concatenation @Index { In-paragraph concatenation }
+in-paragraph concatenation symbol @Code "&" produces horizontal concatenation
+within a paragraph; its special properties are treated in detail at the
+end of this section.
+@PP
+The concatenation symbols in any one family are @I { mutually associative },
+which means that
+@ID {
+@Code "{" @I x {@Code "|"}{@I p} @I y @Code "}" {@Code "|"}{@I q} @I z
+}
+is always the same as
+@ID {
+@I x {@Code "|"}{@I p} @Code "{" @I y {@Code "|"}{@I q} @I z @Code "}"
+}
+for any objects {@I x}, {@I y}, and {@I z}, any gaps @I p and @I q (defined
+below), and any choice of {@Code "|"}, {@Code "^|"}, {@Code "||"}, and
+{@Code "^||"}. In practice we always omit such braces, since they are
+redundant and can be misleading. The result of the complete sequence of
+concatenations will be called the {@I{whole concatenation object}}, and
+the objects which make it up will be called the {@I components}.
+@PP
+One mark is designated as the @I { principal mark }, usually the mark of
+principal.mark @Index { Principal mark }
+the first component. A later mark can be chosen for this honour by
+attaching {@Code "^"} to the preceding concatenation symbol. See Section
+{@NumberOf onerow} for examples.
+@PP
+A {@I gap},
+gap @Index Gap
+specifying the distance between the two
+parameters, may follow any concatenation symbol. There may be no spaces
+between a concatenation symbol and its gap. A missing gap is taken
+to be {@Code 0ie}. The gap is effectively a third parameter of the
+concatenation symbol, and it may be an arbitrary object provided that it
+evaluates to a juxtaposition of simple words. In general, the gap must
+be enclosed in braces, like this:
+@ID @Code {
+"//{ @Style&&mystyle @Open { @TopMargin } }"
+}
+but the braces may be omitted when the object is a juxtaposition of
+simple words or an invocation of a symbol without parameters, as in
+@Code "//0.3vx" and {@Code "||@Indent"}.
+@PP
+A gap consists of a length plus a gap mode plus an optional indication
+of unbreakability. A @I length
+length @Index { Length }
+is represented by an decimal number (which may not be negative) followed
+by a unit of measurement. For example, @Code "2.5c" represents the
+length 2.5 centimetres. Figure {@NumberOf units} gives the full selection
+of units of measurement.
+c.unit @Index { @Code c unit }
+p.unit @Index { @Code p unit }
+m.unit @Index { @Code m unit }
+f.unit @Index { @Code f unit }
+s.unit @Index { @Code s unit }
+v.unit @Index { @Code v unit }
+w.unit @Index { @Code w unit }
+b.unit @Index { @Code b unit }
+r.unit @Index { @Code r unit }
+d.unit @Index { @Code d unit }
+
+@Figure
+ @Caption { The thirteen units of measurement provided by Lout. }
+ @Tag { units }
+@Begin
+ @Tab
+ vmargin { 0.3v }
+ side { yes }
+ @Fmta { @Col @Code A ! @Col B }
+ {
+ @Rowa above { yes } A { c } B { Centimetres. }
+ @Rowa A { i } B { Inches.
+}
+ @Rowa A { p } B { Points ({@Code 72p} = {@Code 1i}).
+}
+ @Rowa A { m } B { Ems ({@Code 12m} = {@Code 1i}).
+}
+ @Rowa A { f } B {
+One @Code f equals the size of the current font, as specified by
+the @@Font symbol (Section {@NumberOf font}). This unit is
+appropriate for lengths that should change with the font size.
+}
+ @Rowa A { s } B {
+One @Code s equals the preferred gap between two words in the
+current font, as specified in the definition of the font, or by the
+@@Space symbol (Section {@NumberOf break}).
+}
+ @Rowa A { v } B {
+One @Code v equals the current gap between lines introduced during
+paragraph breaking, as specified by the @@Break symbol (Section
+{@NumberOf break}). This unit is appropriate for lengths, such as the
+spaces between paragraphs, which should change with the inter-line gap.
+}
+ @Rowa A { w } B {
+One @Code w equals the width of the following component, or its height if the
+symbol is vertical concatenation.
+}
+ @Rowa A { b } B {
+One @Code b equals the width of the whole concatenation object,
+or its height if the symbol is vertical concatenation.
+}
+ @Rowa A { r } B {
+One @Code r equals one @Code b minus one {@Code w}. This unit is used
+for centring, and for left and right justification.
+}
+ @Rowa A { d } B {
+Degrees. This unit may only be used with the @Code "@Rotate" symbol.
+}
+ @Rowa A { y } B {
+One @Code y equals the current value set by the @Code "@YUnit"
+symbol (Section {@NumberOf yunit}). This unit is not used internally
+by Lout; it is included for the convenience of application packages.
+}
+ @Rowa below { yes } A { z } B {
+One @Code z equals the current value set by the @Code "@ZUnit"
+symbol (Section {@NumberOf yunit}). This unit is not used internally
+by Lout; it is included for the convenience of application packages.
+}
+ }
+@End @Figure
+
+@PP
+After the length comes an optional @I {gap mode},
+gap.mode @Index { Gap mode }
+which is a single letter following the length, indicating how the length
+is to be measured. As shown in Figure {@NumberOf gapmodes},
+
+@Figure
+ @Tag { gapmodes }
+ @Caption { The six gap modes provided by Lout. }
+@Begin
+@Fig {
+{ /2.5vx Edge-to-edge |0.3i {@Code "|"} &1p {@I l} &1p {@Code e}
+ /4vx Hyphenation |0.3i {@Code "|"} &1p {@I l} &1p {@Code h}
+ /4vx Overstrike |0.3i {@Code "|"} &1p {@I l} &1p {@Code o}
+ /4vx Mark-to-mark |0.3i {@Code "|"} &1p {@I l} &1p {@Code x}
+ /4vx Kerning |0.3i {@Code "|"} &1p {@I l} &1p {@Code k}
+ /4vx Tabulation |0.3i {@Code "|"} &1p {@I l} &1p {@Code t}
+}
+||0.5i
+@Box margin { 0c } 6c @Wide 13.2c @High 9p @Font
+{
+ @OneRow {
+ @At { 1c @Wide 0.5c @High } @Put { @LBox 0.2co }
+ @At { 4c @Wide 0.5c @High } @Put { @LBox 0.5co }
+ @At { 2.2c @Wide 1.4c @High } @Put { @DoubleArrow 1.8c }
+ @At { 2.2c @Wide 1.6c @High } @Put { 1.8c @Wide { &0.5rt @I l } }
+ }
+ //4vx
+ @OneRow {
+ @At { 1c @Wide 0.5c @High } @Put { @LBox 0.2co }
+ @At { 4c @Wide 0.5c @High } @Put { @LBox 0.5co }
+ @At { 2.2c @Wide 1.4c @High } @Put { @DoubleArrow 1.8c }
+ @At { 2.2c @Wide 1.6c @High } @Put { 1.8c @Wide { &0.5rt @I l } }
+ }
+ //4vx
+ @OneRow {
+ @At { 1c @Wide 0.5c @High } @Put { @LBox 0.2co }
+ @At { 4c @Wide 0.5c @High } @Put { @LBox 0.5co }
+ @At { 1.2c @Wide 1.5c @High } @Put { @DoubleArrow 3.3c }
+ @At { 1.2c @Wide 1.7c @High } @Put { 3.3c @Wide { &0.5rt @I l } }
+ }
+ //4vx
+ @OneRow {
+ @At { 1c @Wide 0.5c @High } @Put { @LBox 0.2co }
+ @At { 4c @Wide 0.5c @High } @Put { @LBox 0.5co }
+ @At { 1.2c @Wide 1.5c @High } @Put { @DoubleArrow 3.3c }
+ @At { 1.2c @Wide 1.7c @High }
+ @Put 3.3c @Wide { |0.5rt { max( {@I {l, a+b+l"/10"}}) } }
+ @At { 1.2c @Wide 0.4c @High } @Put { @DoubleArrow 1.0c }
+ @At { 1.2c @Wide 0.2c @High } @Put { 1.0c @Wide { &0.5rt @I a } }
+ @At { 4c @Wide 0.4c @High } @Put { @DoubleArrow 0.5c }
+ @At { 4c @Wide 0.2c @High } @Put { 0.5c @Wide { &0.5rt @I b } }
+ }
+ //4vx
+ @OneRow {
+ @At { 1c @Wide 0.5c @High } @Put { @LBox 0.2co }
+ @At { 4c @Wide 0.5c @High } @Put { @LBox 0.5co }
+ @At { 1.2c @Wide 1.5c @High } @Put { @DoubleArrow 3.3c }
+ @At { 1.2c @Wide 1.7c @High }
+ @Put { 3.3c @Wide { |0.5rt max( {@I {l, a, b}})}}
+ @At { 1.2c @Wide 0.4c @High } @Put { @DoubleArrow 1.0c }
+ @At { 1.2c @Wide 0.2c @High } @Put { 1.0c @Wide { &0.5rt @I a } }
+ @At { 4c @Wide 0.4c @High } @Put { @DoubleArrow 0.5c }
+ @At { 4c @Wide 0.2c @High } @Put { 0.5c @Wide { &0.5rt @I b } }
+ }
+ //4vx
+ @OneRow {
+ @At { 1c @Wide 0.5c @High } @Put { @LBox 0.2co }
+ @At { 4c @Wide 0.5c @High } @Put { @LBox 0.5co }
+ @At { 0.0c @Wide 1.6c @High } @Put { @DoubleArrow 4.0c }
+ @At { 2.8c @Wide 1.8c @High } @Put { @I l }
+ }
+ //5vx
+ @DoubleArrow 6c
+ //0.1c |0.5rt @I { current bound }
+}
+
+}
+@End @Figure
+with edge-to-edge gap mode
+edge.to.edge @Index { Edge-to-edge gap mode }
+e.gap.mode @Index { @Code e gap mode }
+the length @I l is measured from the trailing edge
+of the first object to the leading edge of the second. Edge-to-edge is the
+default mode: the @Code e may be omitted. Hyphenation gap mode is
+hyphenation.gap @Index { Hyphenation gap mode }
+h.gap.mode @Index { @Code h gap mode }
+similar, except as explained at the end of this section.
+@PP
+Mark-to-mark,
+mark.to.mark @Index { Mark-to-mark gap mode }
+x.gap.mode @Index { @Code x gap mode }
+overstrike,
+overstrike @Index { Overstrike gap mode }
+o.gap.mode @Index { @Code o gap mode }
+and kerning
+kerning.mode @Index { Kerning gap mode }
+k.gap.mode @Index { @Code k gap mode }
+measure the length from the last mark
+of the first object to the first mark of the second. In the case of
+mark-to-mark, if the length is too small to prevent the objects
+almost overlapping, it is widened until they no longer do. (The extra
+@I { "l/10" } is not applied when plain text output is in effect.) Kerning
+also widens, with the aim of preventing the mark of either object from
+overlapping the other object; this mode is used for subscripts and
+superscripts.
+@PP
+tabulation @Index { Tabulation gap mode }
+t.gap.mode @Index { @Code t gap mode }
+centring @Index { Centring }
+right.justif @Index { Right justification }
+Tabulation ignores the first object and places the leading edge of the
+second object at a distance @I l from the left edge of the whole
+concatenation object. It is the main user of the @Code b and @Code r
+units of measurement; for example, @Code "|1rt" will right-justify the
+following component, and @Code "|0.5rt" will centre it.
+@PP
+The value @Code "|0rt" separating the first and second items in a
+sequence of horizontally concatenated objects is somewhat special in
+that it denotes left justification of the object to its left in the
+available space. This is identical with @Code "|0ie" when the object to
+the left also has the principal mark; but when it does not, @Code "|0rt"
+will cause the object to the left to appear further to the left than it
+would otherwise have done, if space to do so is available.
+@PP
+A gap is optionally concluded with an indication of unbreakability,
+which is a letter @Code "u" appended to the gap. A paragraph will
+never be broken at an unbreakable gap, nor will a galley be broken
+across two targets at such a gap. Basser Lout's implementation is
+slightly defective in that it ignores any unbreakable indication
+in the gap separating the first component promoted into any target
+from the second.
+@PP
+When two objects are separated only by zero or more white space
+white.space.when @SubIndex { when significant }
+space.f.when @SubIndex { when significant }
+characters (spaces, tabs, newlines, and formfeeds), Lout inserts
+{@Code "&"}{@I k}{@Code "s"} between the two objects, where @I k is the
+number of spaces. Precisely, @I k is determined by discarding all space
+characters and tabs that precede newlines (these are invisible so are
+better ignored), then counting 1 for each newline, formfeed or space,
+and 8 for each tab character. The gap will be unbreakable if @I k
+is zero.
+@PP
+A sequence of two or more objects separated by @Code "&" symbols is a
+paragraph.breaking.in.detail @SubIndex { in detail }
+{@I paragraph}. Lout breaks paragraphs into lines automatically as
+required, by converting some of the @Code "&" symbols into
+{@Code "//1vx"}. Unbreakable gaps are not eligible for this
+conversion. `Optimal' line breaks are chosen, using a
+method adapted from @TeX @Cite { $knuth1984tex }.
+tex @RawIndex { @TeX }
+tex.optimal @SubIndex { optimal paragraph breaking }
+@PP
+If an @Code "&" symbol whose gap has hyphenation mode
+hyphenation @Index { Hyphenation gap mode }
+tex.hyphenation @SubIndex { hyphenation }
+is chosen for replacement by {@Code "//1vx"}, a hyphen will be appended to
+the preceding object, unless that object is a word which already ends with
+a hyphen or slash. For example,
+@ID @Code {
+Long words may be "hyph &0ih enat &0ih ed."
+}
+could have the following result, depending where the line breaks fall:
+@ID 2i @Wide {
+Long words may be hyph &0ih enat &0ih ed.
+}
+Basser Lout inserts hyphenation gaps automatically as required, again
+following the method of @TeX, which approximates the hyphenations in
+Webster's dictionary. However it does not insert hyphenation gaps
+in words on either side of a concatenation symbol which already has
+hyphenation mode. To prevent the hyphenation of a single word,
+enclose it in quotes. Further control over paragraph breaking and
+hyphenation is provided by the @@Break and @@Space symbols (Sections
+{@NumberOf break} and {@NumberOf space}).
+@End @Section
diff --git a/doc/doc/expert/pre_cont b/doc/doc/expert/pre_cont
new file mode 100644
index 0000000..90bf9e7
--- /dev/null
+++ b/doc/doc/expert/pre_cont
@@ -0,0 +1,45 @@
+@Section
+ @Title { "@SetContext" and "@GetContext" }
+ @Tag { cont }
+@Begin
+@PP
+As earlier sections showed, the style information contains many
+attributes: the current font, break style, colour and texture,
+and so on. It is also possible
+@FootNote { From Version 3.34 of Basser Lout. }
+to add arbitrary additional information to the style, using the
+@@SetContext symbol, and retrieve it using @@GetContext. For example,
+@ID @OneRow @Code @Verbatim {
+{dirn @Yield up} @SetContext {
+The current direction is {@GetContext dirn}.
+}
+}
+produces
+@ID @OneRow {
+{dirn @Yield up} @SetContext {
+The current direction is {@GetContext dirn}.
+}
+}
+The object to the left of @@SetContext must be a @@Yield symbol whose
+left parameter, the {@I key}, evaluates to a simple word, and whose
+right parameter, the {@I value}, may be an arbitrary object. Since
+@@Yield has high precedence it will usually be necessary to enclose
+non-trivial values in braces. The effect is to associate the value
+with the key in a symbol table throughout the right parameter of the
+@@SetContext symbol, as part of the style information. The value may
+be retrieved anywhere in this region by invoking @@GetContext with the
+key as its right parameter.
+@PP
+The value is evaluated using the style and environment where it occurs,
+not where it is used. In any case in most applications the value will
+be a simple word, independent of any style and environment, used to
+select a branch in a case expression, like this:
+@ID @OneRow @Code @Verbatim {
+{@GetContext dirn} @Case {
+ up @Yield ...
+ down @Yield ...
+}
+}
+@@GetContext reports an error if there is no value associated with
+its key in the current style.
+@End @Section
diff --git a/doc/doc/expert/pre_cove b/doc/doc/expert/pre_cove
new file mode 100644
index 0000000..c5cf45e
--- /dev/null
+++ b/doc/doc/expert/pre_cove
@@ -0,0 +1,32 @@
+@Section
+ @Title { "@HCover" and "@VCover" }
+ @Tag { hcover }
+@Begin
+@PP
+hcover. @Index { @@HCover symbol }
+vcover. @Index { @@VCover symbol }
+The @@VCover symbol vertically scales its right parameter so that it
+covers every object that shares its row mark. For example,
+@ID @Code "@VCover ( 45d @Rotate Hello @VCover )"
+produces
+@ID @ShowHMark { @VCover ( 45d @Rotate Hello @VCover ) }
+The row mark has been added to show clearly where it lies. This should be
+compared with
+@ID @Code "@VScale ( 45d @Rotate Hello @VScale )"
+which produces
+@ID @ShowHMark { @VScale ( 45d @Rotate Hello @VScale ) }
+Scaling abandons mark alignment and so is able to exactly cover the
+rest of the row, whereas covering preserves mark alignment and so
+is obliged in general to more than cover the rest of the row.
+@PP
+If the parameter of @@VCover has zero vertical size, this is taken
+to mean that covering is not required after all and the @@VCover is
+silently ignored. If however the parameter has non-zero size above
+the mark but zero size below, or vice versa, this is taken to be an error
+since scaling cannot make the parameter cover the rest of the row.
+@PP
+@@HCover is similar, horizontally covering all objects that share
+its column mark. Neither symbol works well near galley targets,
+because the scale factor to apply is determined before any galley
+flushing takes place.
+@End @Section
diff --git a/doc/doc/expert/pre_cros b/doc/doc/expert/pre_cros
new file mode 100644
index 0000000..d300e86
--- /dev/null
+++ b/doc/doc/expert/pre_cros
@@ -0,0 +1,36 @@
+@Section
+ @Title { The cross reference symbols "&&" and "&&&" }
+ @Tag { crossref }
+@Begin
+@PP
+The cross reference symbol @Code "&&" takes the name of a symbol (not an
+object) for its left parameter, and an object whose value must be a
+simple word, or several simple words, for its right parameter. The
+result is a cross reference, which may be thought of as an arrow pointing
+from the cross reference symbol to the beginning of an invocation of the
+named symbol.
+@PP
+The invocation pointed to, known as the @I target of the cross
+reference, is generally one whose @@Tag parameter has value equal
+to the right parameter of the cross reference symbol. Three special tags,
+{@Code preceding}, {@Code following}, and {@Code foll_or_prec}, point
+respectively to the first invocation preceding the cross reference in
+the final printed document, to the first invocation following it, and
+to the first following it if such exists else to the first preceding it.
+@PP
+A cross reference may be used in four ways: where an object is
+expected, in which case its value is a copy of the target; with the
+@@Open and @@Use symbols; with the @@Tagged symbol; and in the
+@Code into clause or @Code "@Target" symbol of a galley definition, in
+which case the value of the tag must be {@Code preceding},
+{@Code following}, or {@Code foll_or_prec}.
+@PP
+Within an @Code "into" clause or @Code "@Target" symbol, the alternative
+form @Code "&&&" is acceptable and indicates a forcing galley (Section
+{@NumberOf targets}).
+@PP
+Except within an @Code into clause or @Code "@Target" symbol, the symbol
+referred to must have a @@Tag parameter. This is so even if the right
+parameter of the cross reference is {@Code preceding}, {@Code following},
+or {@Code foll_or_prec}.
+@End @Section
diff --git a/doc/doc/expert/pre_data b/doc/doc/expert/pre_data
new file mode 100644
index 0000000..e7bb643
--- /dev/null
+++ b/doc/doc/expert/pre_data
@@ -0,0 +1,37 @@
+@Section
+ @Title { "@Database and @SysDatabase" }
+ @Tag { database }
+@Begin
+@PP
+database.sym @Index { @@Database symbol }
+The @@Database symbol is used to declare the existence of a file
+of symbol invocations that Lout may refer to when evaluating cross
+references. In Basser Lout, for example,
+@ID @Code {
+"@Database @Months @WeekDays { standard }"
+}
+means that there is a file called @Code "standard.ld" containing
+invocations of the previously defined symbols @Code "@Months" and
+{@Code "@WeekDays"}. A @@Database symbol may appear anywhere a definition
+or a @@Use symbol may appear. Different definitions packages may refer to a
+common database, provided the definitions they give for its symbols are
+compatible. An entry is interpreted as though it appears at the point
+where the cross reference that retrieves it does, which allows symbols
+like @Code "@I" for @Code "Slope @Font" to be used in databases. The
+database file may not contain @@Database or @@Include symbols, and each
+invocation within it must be enclosed in braces.
+@PP
+Basser Lout constructs an {@I {index file}},
+index.file @Index { Index file (for databases) }
+which in this example is called {@Code "standard.li"}, the first time it
+ever encounters the database, as an aid to searching it. If the database
+file is changed, its index file must be deleted by the user so that
+Basser Lout knows to reconstruct it. There is also an installation
+option which allows this deletion to be done automatically on suitable
+systems (including Unix).
+@PP
+Basser Lout searches for databases in the current directory first, then
+in a sequence of standard places. To search the standard places only, use
+sysdatabase.sym @Index { @@SysDatabase symbol }
+@@SysDatabase.
+@End @Section
diff --git a/doc/doc/expert/pre_font b/doc/doc/expert/pre_font
new file mode 100644
index 0000000..704e497
--- /dev/null
+++ b/doc/doc/expert/pre_font
@@ -0,0 +1,211 @@
+@Section
+ @Title { {"@Font"}, {"@Char"}, and "@FontDef" }
+ @Tag { font }
+@Begin
+@PP
+A @I font
+font. @Index { Fonts }
+is a collection of characters which may be
+printed. Many fonts come in {@I families},
+family @Index { Family of a font }
+face @Index { Face of a font }
+which are groups of fonts that
+have been designed to go together. For example, the Times family
+includes the following fonts:
+@ID { Times Base } @Font {
+ Base @Font { Times Base }
+//1vx Slope @Font { Times Slope }
+//1vx Bold @Font { Times Bold }
+//1vx BoldSlope @Font { Times BoldSlope }
+}
+Thus, each font has two names: its @I { family name } (Times,
+Helvetica, etc.) and its @I { face name } (Base, Slope, etc.). Times
+Base is more commonly called Times Roman, and Times Slope is more
+commonly called Times Italic. Lout avoids these names in favour of
+generic names which can be applied to many font families.
+@PP
+Ligatures,
+ligatures @Index Ligatures
+kerning @Index Kerning
+such as fl for {@OneCol f}l and fi for {@OneCol f}i, are considered by
+Basser Lout to be an integral part of the font: if the font definition
+(see below) mentions them, they will be used. Similarly, kerning (fine
+adjustment of the space between adjacent characters to improve the
+appearance) is done whenever indicated in the font definition. Enclosing
+one of the letters in @@OneCol is one sure way to disable a ligature or kern.
+You can also turn off ligatures using
+@ID @Code "nolig @Font { ... }"
+and turn them on with
+@ID @Code "lig @Font { ... }"
+Since they are on initially this second option is rarely needed.
+@PP
+More generally, the @@Font symbol
+font.sym @Index { @@Font symbol }
+returns its right parameter in a font and size specified by its left:
+@ID {
+@Code "{ Times Base 12p } @Font" @I object
+}
+The family and face names must have appeared together in a {@Code "@FontDef"}
+(see below); the size is arbitrary and may be given in any one of the
+{@Code "c"}, {@Code "i"}, {@Code "p"}, {@Code "m"}, {@Code "f"}, {@Code "s"},
+and {@Code "v"} units of measurement (Section {@NumberOf concatenation}),
+although @Code 10p and @Code 12p are the most common sizes for text. There
+may be empty objects and @@Null objects in the left parameter of @@Font;
+these are ignored.
+@PP
+When a @@Font symbol is nested inside the right parameter of
+another @@Font symbol, the inner one determines the font of its
+own right parameter. However, it may be abbreviated so as to inherit
+part of the outer symbol:
+@ID @Code {
+"{ Times Base 12p } @Font"
+"{ hello, Slope @Font hello, 15p @Font hello }"
+}
+has result
+@ID {
+{ Times Base 12p } @Font
+{ hello, Slope @Font hello, 15p @Font hello }
+}
+The first inner @@Font inherits the outer family and size, changing only
+the face; the second inherits the outer family and face. When a family
+name is given, it must be followed immediately by a face name. A size
+change may appear first or last.
+@PP
+Sizes of the form +{@I length} and --{@I length} may also be used,
+meaning that the font size is to be @I length larger or smaller than
+the inherited value. For example, --{@Code "2p"} is often used for
+superscripts and subscripts. These forms are highly recommended, since
+they don't need to be changed if a decision is made to alter the font
+size of the document as a whole.
+@PP
+The @@Font symbol also switches to and from small capitals:
+"smallcaps" @Index { small capitals }
+@ID @Code {
+"smallcaps @Font ..."
+"nosmallcaps @Font ..."
+}
+These may be nested, and they cooperate with other font changes. The
+precise effect depends on the font (see below). There is a default
+value (@Code {"nosmallcaps"}), so it is not necessary to mention this
+attribute when giving an initial font.
+@PP
+By default, the size of the small capitals is 0.7 times the size
+of full-size capitals. You can change this ratio, for example to
+0.8, using
+@ID @Code "{ setsmallcaps 0.8 } @Font ..."
+This does not itself cause a change to small capitals, but wherever
+they are used in the right parameter of @Code "@Font" they will have
+size 0.8 times the size that ordinary capitals would have had at
+that point. Note that the number following @Code "setsmallcaps" is
+a ratio, not a length, so there is no unit of measurement.
+@PP
+The @@Font symbol also controls a feature added in Version 3.25
+which determines where the row mark is placed in a word. Usually,
+as described elsewhere in this document, the row mark passes through
+the word at a height of half the height of the letter `x' above the
+baseline of the word. However this can be changed so that it passes
+through the baseline, or not, like this:
+@ID @Code {
+"baselinemark @Font ..."
+"xheight2mark @Font ..."
+}
+The default value is {@Code xheight2mark}; this was how Lout did it
+before this option was added, because it makes equation formatting
+easy. The other value, {@Code baselinemark}, is useful when words
+in different font sizes appear side by side on a line.
+@PP
+Finally, a feature added in Version 3.33 requests that the height
+and depth of every character be increased to the `bounding box'
+size of the font -- that is, to the height of the font's highest
+character and the depth of the font's deepest character. Ensuring
+in this way that every character has the same height and depth can
+make documents more uniform in layout. To get this feature, use
+@ID @Code { "strut @Font ..." }
+either alone or combined with other options to {@Code "@Font"}. It
+is called @Code strut because it is like inserting an invisible
+vertical strut into every non-empty word. By default struts are off;
+but anyway if you need to turn them off for some reason, use
+{@Code "nostrut @Font"}. Struts are always turned off in equations, for
+example, because they are not appropriate for equation formatting.
+@PP
+There are two predefined symbols, @@CurrFamily and @@CurrFace, which
+respectively return the family and face names of the current font. For
+example, right now @@CurrFamily is @CurrFamily and @@CurrFace is
+@CurrFace.
+@PP
+To inform Lout that certain fonts exist, it is necessary to create a
+database of @Code "@FontDef" symbols. (It is possible to have a
+@Code "@FontDef" symbol in an ordinary source file; it enters the
+cross-reference database in the usual way and is retrieved from there
+by the font machinery, but only from the second run, which is not
+convenient.) A typical entry in such a database looks like this:
+@ID @OneRow @Code @Verbatim {
+{ @FontDef
+ @Tag { Times-Base }
+ @Family { Times }
+ @Face { Base }
+ @Name { Times-Roman }
+ @Metrics { Ti-Rm }
+ @Mapping { LtLatin1.LCM }
+}
+}
+This entry informs Lout of the existence of a font whose family name
+is the value of {@Code "@Family"} and whose face name is the value
+of {@Code "@Face"}. The @Code "@Tag" value must be exactly equal
+to {@Code "@Family"} followed by a hyphen followed by
+{@Code "@Face"}. There are a few fonts which are the only members
+of their families; even though these fonts do not need a face name, they
+must be given one, probably {@Code Base}, by their {@Code "@FontDef"}.
+@PP
+The other fields are implementation-dependent, but in Basser Lout
+Version 3 they are {@Code "@Name"}, a PostScript font name;
+{@Code "@Metrics"}, an
+adobe @Index { Adobe Systems, Inc. }
+Adobe font metrics (formerly AFM) file whose FontName entry must agree
+with the PostScript font name just mentioned; and {@Code "@Mapping"},
+the name of a Lout Character Mapping (LCM) file. The files are
+searched for in standard places. Consult the PostScript Reference Manual
+@Cite { $adobe1990ps } for general information about fonts and encoding
+vectors; briefly, an 8-bit
+lcm. @Index { LCM file }
+character code @I c in Lout's input is mapped to the character in the
+Adobe font metrics file whose name appears on the line labelled @I c in the
+LCM file. The LCM file also defines various character-to-character
+mappings, such as upper-case to lower-case, which are used for such
+purposes as the production of small capitals.
+@PP
+The options shown above are all compulsory, but there are two other
+options which are optional. The @Code "@Recode" option, if given,
+must have value @Code "Yes" (the default, so rarely seen) or
+{@Code "No"}. If @Code "@Recode { No }" is given, Lout assumes that
+the given encoding vector is already associated with this font in
+the PostScript interpreter, and optimizes its output accordingly.
+@PP
+The other optional option, {@Code "@ExtraMetrics"}, has value
+equal to the name of a second font metrics file which, if given,
+is added to the main one defined by {@Code "@Metrics"}. This
+extra metrics file contains @Code "C" (define character) and
+@Code "CC" (define composite character) entries in the same format
+as in AFM files; Lout will build composite characters declared in
+this extra file from the given pieces, which it does not do for
+composite characters in the main AFM file. There are example
+extra metrics files in the current Lout distribution which show
+the precise format of these files.
+@PP
+It is not possible to have two @Code "@FontDef" database entries
+with the same family and face names, because then they must have
+the same {@Code "@Tag"}, which is not allowed. However, a PostScript
+font name and file may appear in two or more font definitions,
+allowing one PostScript font to have two or more equally valid
+Lout names. The LCM files may be equal or different as desired.
+@PP
+The @@Char symbol
+char @Index { @@Char symbol }
+allows a character to be specified by its name (its PostScript name in
+Basser Lout) rather than by its code:
+@ID @Code "@Char nine"
+is equivalent to @Code "9" in most fonts. This is useful as a
+documentation aid and to be sure of getting the right character even if the
+encoding vector of the font is changed. However @@Char will fail if the
+character named is not in the encoding vector of the current font.
+@End @Section
diff --git a/doc/doc/expert/pre_gall b/doc/doc/expert/pre_gall
new file mode 100644
index 0000000..e5443f4
--- /dev/null
+++ b/doc/doc/expert/pre_gall
@@ -0,0 +1,14 @@
+@Section
+ @Title { "@Galley" and "@ForceGalley" }
+ @Tag { galley }
+@Begin
+@PP
+These symbols
+galley.sym @Index { @@Galley symbol }
+forcegalley.sym @Index { @@ForceGalley symbol }
+both act as a placeholder for a galley. That is, they may be replaced
+by components of a galley. In the case of @@ForceGalley the galley will
+then have a forcing galley effect at this point although it need not be
+declared using {@Code "force into"}. See Section {@NumberOf targets}
+for a detailed discussion of galleys, forcing galleys, and targets.
+@End @Section
diff --git a/doc/doc/expert/pre_grap b/doc/doc/expert/pre_grap
new file mode 100644
index 0000000..e75dd21
--- /dev/null
+++ b/doc/doc/expert/pre_grap
@@ -0,0 +1,284 @@
+@Section
+ @Title { "@Graphic" }
+ @Tag { graphic }
+@Begin
+@PP
+graphic.sym @Index { @@Graphic symbol }
+diagrams @Index { Diagrams }
+Lout does not provide the vast repertoire of graphical objects (lines,
+circles, boxes, etc.) required by diagrams. Instead, it provides an
+escape route to some other language that does have these features, via
+its @@Graphic symbol:
+postscript.graphic @SubIndex { used by @@Graphic }
+@ID @OneRow @OneRow @Code {
+"{ 0 0 moveto"
+" 0 ysize lineto"
+" xsize ysize lineto"
+" xsize 0 lineto"
+" closepath"
+" stroke"
+"}"
+"@Graphic"
+"{ //0.2c"
+" ||0.2c hello, world ||0.2c"
+" //0.2c"
+"}"
+}
+The result of the above invocation of the symbol @@Graphic is
+@ID @OneRow @OneRow {
+ @BackEnd @Case {
+ PostScript @Yield {
+ { 0 0 moveto
+ 0 ysize lineto
+ xsize ysize lineto
+ xsize 0 lineto
+ closepath
+ stroke
+ }
+ @Graphic
+ { //0.2c
+ ||0.2c hello, world ||0.2c
+ //0.2c
+ }
+ }
+ PDF @Yield {
+ { 0 0 m
+ 0 __ysize l
+ __xsize __ysize l
+ __xsize 0 l
+ s
+ }
+ @Graphic
+ { //0.2c
+ ||0.2c hello, world ||0.2c
+ //0.2c
+ }
+ }
+ }
+}
+@PP
+The right parameter always appears as part of the result, and indeed the
+result is always an object whose size is identical to the size of the
+right parameter with @@OneCol and @@OneRow applied to
+it. From now on we refer to this part of the result as the {@I base}.
+@PP
+The left parameter is implementation-dependent: that is, its
+meaning is not defined by Lout, and different implementations could
+require different values for it. The following description applies to
+Basser Lout, which uses the PostScript page description language
+@Cite { $adobe1990ps }. Similar but more restricted possibilities exist
+with the PDF back end (see a separate document distributed with Lout);
+to include both, use the @@BackEnd symbol like this:
+@ID @OneRow @Code {
+"{ @BackEnd @Case {"
+" PostScript @Yield"
+" {"
+" ..."
+" }"
+" PDF @Yield"
+" {"
+" ..."
+" }"
+" }"
+" @Graphic"
+" {"
+" ..."
+" }"
+"}"
+}
+Returning to PostScript, the left parameter refers to a coordinate system
+whose origin is the bottom left-hand corner of the base. It may use the symbols
+@Code xsize and @Code ysize to denote the horizontal and vertical size
+of the base; similarly, @Code xmark and @Code ymark denote the positions
+of the base's column and row marks:
+@ID @OneRow 9p @Font @Fig {
+ { &1rt @I ysize /0ik &1rt @I ymark /0ik &1rt 0 } |0.4c
+ { /
+ |0ik @ShowMarks { 1c @High 1.5c @Wide ^| 3c @Wide ^/ 2c @High }
+ |0ik /
+ }
+ /0.2c
+ | 0 | @I xmark | @I xsize
+}
+In addition to these four symbols and 0, lengths may be denoted in
+centimetres, inches, points, ems, f's, v's and s's using the notation
+@ID @OneRow @Tab
+ vmargin { 0.5vx }
+ hmargin { 1m }
+ @Fmta { @Col {@I l @Code A} ! @Col {instead of Lout's} ! @Col {{@I l}B} }
+{
+@Rowa A { cm } B { c }
+@Rowa A { in } B { i }
+@Rowa A { pt } B { p }
+@Rowa A { em } B { m }
+@Rowa A { ft } B { f }
+@Rowa A { vs } B { v }
+@Rowa A { sp } B { s }
+}
+Note that there must be a space between the number and its unit,
+unlike Lout proper.
+@PP
+A point within the base (and, with care, a point outside it) may
+be denoted by a pair of lengths. For example,
+@ID @OneRow @Code {
+"xmark ymark"
+}
+is the point where the marks cross, and
+@ID @OneRow @Code {
+"0 2 cm"
+}
+is a point on the left edge, two centimetres above the bottom left-hand
+corner. These two numbers are called the @I {x coordinate} and the
+@I {y coordinate} of the point.
+@PP
+The first step in specifying a graphic object is to define a
+{@I path}. A path can be thought of as the track of a pen moving over
+the page. The pen may be up (not drawing) or down (drawing a line or
+curve) as it moves. The entire path is a sequence of the following
+items:
+@LP
+2i @Wide { |1rt @I {x y} @Code moveto }
+|2m Lift the pen and move it to the indicated point.
+@JP
+2i @Wide { |1rt @I {x y} @Code lineto }
+|2m Put the pen down and draw a straight line to the indicated point.
+@JP
+2i @Wide { |1rt @I {x y r angle1 angle2} @Code arc }
+|2m Put the pen down and draw a circular arc whose centre has
+coordinates @I x and @I y and whose radius is {@I r}. The arc begins
+at the angle @I angle1 measuring counterclockwise from the point
+directly to the right of the centre, and proceeds counterclockwise to
+{@I angle2}. If the arc is not the first thing on the path, a straight
+line will be drawn connecting the current point to the start of the arc.
+@JP
+2i @Wide { |1rt @I {x y r angle1 angle2} @Code arcn }
+|2m As for arc, but the arc goes clockwise from @I angle1 to
+{@I angle2 }.
+@JP
+2i @Wide @Code { |1rt closepath }
+|2m Draw a straight line back to the point most recently moved to.
+@LP
+The first item should always be a {@Code moveto}, {@Code arc}, or
+{@Code arcn}. It should be clear from this that the path given earlier:
+@ID @OneRow @Code {
+"0 0 moveto"
+"0 ysize lineto"
+"xsize ysize lineto"
+"xsize 0 lineto"
+"closepath"
+}
+traces around the boundary of the base with the pen down.
+@PP
+Once a path is set up, we are ready to @I paint it onto the page. There
+are two choices: we can either @I stroke it, which means to display it
+as described; or we can @I fill it, which means to paint everything
+inside it grey or black. For stroking the two main options are
+@IL
+@LI {
+2i @Wide { |1rt @I length @Code setlinewidth }
+|2m The pen will draw lines of the given width.
+}
+@LI {
+2i @Wide { |1rt @Code "[" @I length @Code {"]" 0 setdash} }
+|2m The pen will draw dashed lines when it is down, with the dashes each
+of the given length.
+}
+@EL
+These options are followed by the word {@Code "stroke"}. So, for example,
+@ID @OneRow @Code {
+"{ 0 0 moveto xsize 0 lineto"
+" 2 pt setlinewidth [ 5 pt ] 0 setdash stroke"
+"}"
+"@Graphic { 3i @Wide }"
+}
+has result
+@ID @OneRow {
+ @BackEnd @Case {
+ PostScript @Yield {
+ { 0 0 moveto xsize 0 lineto
+ 2 pt setlinewidth [ 5 pt ] 0 setdash stroke
+ }
+ @Graphic { 3i @Wide }
+ }
+ PDF @Yield {
+ { [ __mul(5, __pt) ] 0 d __mul(2, __pt) w 0 0 m __xsize 0 l S
+ }
+ @Graphic { 3i @Wide }
+ }
+ }
+}
+@PP
+When filling in the region enclosed by a path, the main option is
+{@Code setgray}, which determines the shade of grey to use, on a scale
+from 0 (black) to 1 (white). So, for example,
+@ID @OneRow @Code {
+"{ 0 0 moveto xsize 0 lineto 0 ysize lineto closepath"
+" 0.8 setgray fill"
+"}"
+"@Graphic"
+"{ 2c @Wide 2c @High }"
+}
+has result
+@ID @OneRow {
+ @BackEnd @Case {
+ PostScript @Yield {
+ { 0 0 moveto xsize 0 lineto 0 ysize lineto closepath
+ 0.8 setgray fill
+ }
+ @Graphic
+ { 2c @Wide 2c @High }
+ }
+ PDF @Yield {
+ { 0 0 m __xsize 0 l 0 __ysize l h
+ 0.8 g f
+ }
+ @Graphic
+ { 2c @Wide 2c @High }
+ }
+ }
+}
+@PP
+There are many other options. The value of the left parameter of
+@@Graphic may be any fragment of the PostScript page description language
+@Cite { $adobe1990ps }. Here are two other examples:
+@ID @OneRow @Code {
+xsize 2 div
+}
+denoting a length equal to half the horizontal size of the base, and
+@ID @OneRow @Code {
+gsave fill grestore stroke
+}
+which both fills and strokes the path. Since Basser Lout does not check
+that the left parameter is valid PostScript, it is possible to cause
+mysterious errors in the printing device, resulting in no output, if an
+incorrect value is given. It is a good idea to encapsulate graphics
+objects in carefully tested definitions, like those of the Diag figure
+drawing package @Cite { $kingston1995lout.user, Chapter 9 },
+diag @Index { Diag diagram-drawing package }
+to be sure of avoiding these errors.
+@PP
+PostScript experts may find the following information helpful when
+designing advanced graphics features. The left parameter of @@Graphic
+may have two parts, separated by {@Code "//"}:
+@ID @OneRow {
+@Code "{" @I {first part} @Code "//" @I {second part} @Code "} @Graphic"
+@I object
+}
+If there is no {@Code "//"}, the second part is taken to be empty. The
+PostScript output has the form
+@ID @OneRow lines @Break {
+@Code gsave
+@I x @I y @Code translate
+@I {Code which defines {@Code xsize}, {@Code ysize}, {@Code xmark}, {@Code ymark}, {@Code ft}, {@Code vs}, and {@Code sp} }
+@Code gsave
+@I {first part}
+@Code grestore
+@I {Code which renders the right parameter in translated coordinates}
+@I {second part}
+@Code grestore
+}
+where @Eq {x, y} is the position of the lower left corner of the
+base. Having two parts permits bracketing operations, like @Code save
+and @Code restore or @Code begin and {@Code end}, to enclose an
+object. See the source file of the Diag package for examples.
+@End @Section
diff --git a/doc/doc/expert/pre_hadj b/doc/doc/expert/pre_hadj
new file mode 100644
index 0000000..4ca9fe0
--- /dev/null
+++ b/doc/doc/expert/pre_hadj
@@ -0,0 +1,33 @@
+@Section
+ @Title { "@HAdjust", "@VAdjust", and "@PAdjust" }
+ @Tag { hadjust }
+@Begin
+@PP
+padjust. @Index { @@PAdjust symbol }
+hadjust. @Index { @@HAdjust symbol }
+vadjust. @Index { @@VAdjust symbol }
+adjustment @Index { Adjustment of object }
+These symbols spread their right parameter apart until it occupies
+all the space available to it; @@HAdjust adjusts @Code "|" sequences,
+@@VAdjust adjusts @Code "/" sequences, and @@PAdjust adjusts @Code "&"
+sequences. For example,
+@ID @Code {
+"4i @Wide @PAdjust { 1 2 3 4 5 6 7 8 }"
+}
+has result
+@ID {
+4i @Wide @PAdjust { 1 2 3 4 5 6 7 8 }
+}
+More precisely, the widening is effected by enlarging the size of each
+component except the last by an equal fraction of the space that would
+otherwise be left over -- just the opposite of the usual procedure,
+which assigns all the leftover space to the last component (Section
+{@NumberOf size}).
+@PP
+@@PAdjust is used by the @Code adjust and @Code outdent options of
+the @@Break symbol (Section {@NumberOf break}). It has a slight
+peculiarity: it will not enlarge components when the immediately
+following gap has width 0. This is to prevent space from appearing
+(for example) between a word and an immediately following comma. The
+other two symbols will enlarge such components.
+@End @Section
diff --git a/doc/doc/expert/pre_hcon b/doc/doc/expert/pre_hcon
new file mode 100644
index 0000000..0d409c0
--- /dev/null
+++ b/doc/doc/expert/pre_hcon
@@ -0,0 +1,17 @@
+@Section
+ @Title { "@HContract" and "@VContract" }
+ @Tag { hcontract }
+@Begin
+@PP
+hcontract. @Index { @@HContract symbol }
+vcontract. @Index { @@VContract symbol }
+contraction @Index { Contraction of object }
+The @@HContract symbol reduces the size of its right parameter to a
+reasonable minimum (after paragraph breaking). For example,
+@ID @Code "5i @Wide @HContract { A |1rt B }"
+has result
+@ID { 5i @Wide @HContract { A |1rt B } }
+in which the B is much closer to the A than it would otherwise have
+been. @@VContract is similar, but in a vertical direction. See
+Section {@NumberOf size} for a more extensive discussion.
+@End @Section
diff --git a/doc/doc/expert/pre_head b/doc/doc/expert/pre_head
new file mode 100644
index 0000000..e8779aa
--- /dev/null
+++ b/doc/doc/expert/pre_head
@@ -0,0 +1,124 @@
+@Section
+ @Title { "@BeginHeaderComponent", "@EndHeaderComponent",
+"@SetHeaderComponent", and "@ClearHeaderComponent" }
+ @Tag { header_comp }
+@Begin
+@PP
+Informally, header components are running headers that appear at the
+header.component @Index { Header component of galley }
+top of the displayed segments of galleys. They are used, for example,
+by the @Code "@Tbl" table formatting package to place running headers
+at the top of each page of a multi-page table, after the first page.
+@PP
+Formally, a header component of a galley is an ordinary component of
+a galley (Section {@NumberOf targets}) together with an indication
+that the component is a header component. When printed, a header
+component looks exactly like it would have done as an ordinary
+component; the difference is in whether the component is printed at all,
+and if so where.
+@PP
+Every non-header component of every galley has associated with it a
+sequence of zero or more header components. Whenever a galley attaches
+to a target, and the target does not itself occupy an entire component
+of the enclosing galley, copies of the header components associated with the
+first ordinary component to be promoted into that target are
+promoted into it first.
+@PP
+The condition `and the target does not itself occupy an entire component
+of the enclosing galley' ensures that, for example, when part of a section
+has header components, these are not printed where the section is
+promoted into its chapter, but rather where the chapter is promoted
+onto pages. If the target occupies the whole component, then the
+incoming galley will not split at all, so headers would be of no
+interest there.
+@PP
+The one remaining question is `How is the sequence of header
+components of each ordinary component determined?' By default,
+the header components of one component are the same as those
+of the previous component. We can show this graphically as
+follows:
+@ID @OneRow lines @Break @Eq {
+C sub i : H sub 1 , H sub 2 ,..., H sub n
+"/"
+C sub i+1 : H sub 1 , H sub 2 ,..., H sub n
+}
+which may be read: `If ordinary component @E { C sub i } has
+header component sequence @E { H sub 1 , H sub 2 ,..., H sub n },
+then its successor component @E { C sub i+1 } has header component
+sequence @E { H sub 1 , H sub 2 ,..., H sub n } also.' Using this
+notation, we may now define the four symbols that affect header
+component sequences:
+@ID @OneRow lines @Break @Eq {
+C sub i : H sub 1 , H sub 2 ,..., H sub n
+"/"
+gap `` @@BeginHeaderComponent `` H sub n+1
+"/"
+C sub i+1 : H sub 1 , H sub 2 ,..., H sub n , H sub n+1
+}
+That is, @@BeginHeaderComponent occupying an entire
+begin.header.component.sym @Index { @@BeginHeaderComponent symbol }
+component appends a header component to the sequence of the
+following ordinary components. When printed, this header
+component is separated by @E { gap } from the following component;
+if @E { gap } is empty it denotes @Code { 0ie } as usual with
+concatenation gaps. The appearance of the header component will be
+exactly as it would have been had it occurred alone at that point,
+rather than after @@BeginHeaderComponent.
+@PP
+Next comes @@EndHeaderComponent:
+@ID @OneRow lines @Break @Eq {
+C sub i : H sub 1 , H sub 2 ,..., H sub n , H sub n+1
+"/"
+@@EndHeaderComponent
+"/"
+C sub i+1 : H sub 1 , H sub 2 ,..., H sub n
+}
+That is, @@EndHeaderComponent (which has no parameters) occupying an
+end.header.component.sym @Index { @@EndHeaderComponent symbol }
+entire component deletes the last header component. If the sequence is
+empty, a warning message is printed and it remains
+empty. @@BeginHeaderComponent and @@EndHeaderComponent are naturally
+used in matching (possibly nested) pairs, to introduce and subsequently
+retract a header component.
+@PP
+Next comes @@SetHeaderComponent:
+@ID @OneRow lines @Break @Eq {
+C sub i : H sub 1 , H sub 2 ,..., H sub n
+"/"
+gap `` @@SetHeaderComponent `` H sub n+1
+"/"
+C sub i+1 : H sub n+1
+}
+@@SetHeaderComponent clears any current header components
+set.header.component.sym @Index { @@SetHeaderComponent symbol }
+and replaces them by one of its own. Finally we have
+@@ClearHeaderComponent:
+@ID @OneRow lines @Break @Eq {
+C sub i : H sub 1 , H sub 2 ,..., H sub n
+"/"
+@@ClearHeaderComponent
+"/"
+C sub i+1 :
+}
+This symbol clears any header components, leaving the sequence empty. These
+clear.header.component.sym @Index { @@ClearHeaderComponent symbol }
+last two symbols combine less cleanly than the first two (either will
+wreck any enclosing @@BeginHeaderComponent -- @@EndHeaderComponent pair),
+but they are useful in situations where the range of one header is
+terminated by the start of the range of the next.
+@PP
+All four symbols yield the value @@Null where they appear. If they
+do not occupy entire components of their galley, they are silently
+ignored.
+@PP
+Owing to limitations in the way header components are implemented, the
+following object types are not allowed inside them, and Basser Lout will
+complain and quit if it finds any of them: galleys, receptive or
+recursive symbols, cross references, @@PageLabel, @@HExpand, @@VExpand,
+@@HCover, @@VCover, and @@Scale when it has an empty left parameter.
+In addition, if more than three copies of the same running header are
+printed on the same page, their horizontal positions will become
+confused, probably resulting in the apparent disappearance of all but the
+last three copies. (The magic number 3 can be increased by recompiling
+the Lout source with the @F MAX_HCOPIES constant increased.)
+@End @Section
diff --git a/doc/doc/expert/pre_hexp b/doc/doc/expert/pre_hexp
new file mode 100644
index 0000000..937e746
--- /dev/null
+++ b/doc/doc/expert/pre_hexp
@@ -0,0 +1,29 @@
+@Section
+ @Title { "@HExpand" and "@VExpand" }
+ @Tag { hexpand }
+@Begin
+@PP
+hexpand. @Index { @@HExpand symbol }
+vexpand. @Index { @@VExpand symbol }
+expansion @Index { Expansion of object }
+The @@HExpand symbol causes its right parameter to be as wide as it
+possibly could be without violating a @@Wide symbol or intruding into
+the space occupied by neighbouring gaps or objects. The @@VExpand
+symbol is similar, but it affects height. For example, in the object
+@ID @Code {
+"8i @Wide 11i @High {"
+" //1i ||1i @HExpand @VExpand x ||1i"
+" //1i"
+"}"
+}
+object @Code x could have any size up to six inches wide by nine inches
+high, so the @@HExpand and @@VExpand symbols cause it to have exactly
+this size. This is important, for example, if @Code x contains
+@Code "|1rt" or {@Code "/1rt"}; without the expansion these might not
+move as far across or down as expected.
+@PP
+As Section {@NumberOf size} explains in detail, most objects are
+already as large as they possibly could be. Consequently these symbols
+are needed only rarely. @@HExpand includes a @@OneCol effect, and
+@@VExpand includes a @@OneRow effect.
+@End @Section
diff --git a/doc/doc/expert/pre_hlim b/doc/doc/expert/pre_hlim
new file mode 100644
index 0000000..ccf9548
--- /dev/null
+++ b/doc/doc/expert/pre_hlim
@@ -0,0 +1,18 @@
+@Section
+ @Title { "@HLimited" and "@VLimited" }
+ @Tag { hlimited }
+@Begin
+@PP
+hlimited. @Index { @@HLimited symbol }
+vlimited. @Index { @@VLimited symbol }
+The @@HLimited symbol limits the width available to recursive
+and receptive symbols within its right parameter to whatever
+is available without increasing the existing size of the
+@@HLimited object. So this symbol acts like @@Wide with
+respect to limiting the space occupied by recursive and receptive
+symbols, except that instead of enforcing a fixed constant limit,
+it enforces whatever size is already in place.
+@PP
+The @@VLimited symbol is exactly the same, except that it
+applies vertically rather than horizontally.
+@End @Section
diff --git a/doc/doc/expert/pre_hmir b/doc/doc/expert/pre_hmir
new file mode 100644
index 0000000..147589f
--- /dev/null
+++ b/doc/doc/expert/pre_hmir
@@ -0,0 +1,30 @@
+@Section
+ @Title { "@HMirror" and "@VMirror" }
+ @Tag { hmirror }
+@Begin
+@PP
+hmirro. @Index { @@HMirror symbol }
+vmirro. @Index { @@VMirror symbol }
+mirroring @Index { Mirroring an object }
+reflecting @Index { Reflecting an object }
+@@HMirror and @@VMirror cause their right parameter to be reflected,
+either horizontally or vertically. For example,
+@ID @Code {
+"@HMirror AMBULANCE"
+}
+has result
+@ID @HMirror AMBULANCE
+and
+@ID @Code {
+"@VMirror AMBULANCE"
+}
+has result
+@ID @VMirror AMBULANCE
+The parameters of these symbols may be arbitrary Lout objects as usual.
+Both symbols have both a @@OneCol and a @@OneRow effect.
+@PP
+In each case the reflection is about the mark of the object (that is,
+the reflected objects have the same marks as the originals), so that,
+for example, when used within a line of text the results are
+@HMirror AMBULANCE and @VMirror AMBULANCE respectively.
+@End @Section
diff --git a/doc/doc/expert/pre_hsca b/doc/doc/expert/pre_hsca
new file mode 100644
index 0000000..e224685
--- /dev/null
+++ b/doc/doc/expert/pre_hsca
@@ -0,0 +1,34 @@
+@Section
+ @Title { "@HScale" and "@VScale" }
+ @Tag { hscale }
+@Begin
+@PP
+hscale. @Index { @@HScale symbol }
+vscale. @Index { @@VScale symbol }
+scaling @Index { Scaling of object }
+@@HScale causes its right parameter to expand to fill the space available,
+by geometricallly scaling it:
+@ID @Code {
+"4i @Wide @HScale { 1 2 3 4 5 6 7 8 }"
+}
+has result
+@ID {
+4i @Wide @HScale { 1 2 3 4 5 6 7 8 }
+}
+and
+@ID @Code {
+"0.5i @Wide @HScale { 1 2 3 4 5 6 7 8 }"
+}
+has result
+@ID {
+0.5i @Wide @HScale { 1 2 3 4 5 6 7 8 }
+}
+@@HScale first applies @@HContract to its parameter, then horizontally
+scales it to the actual size. The principal mark of the right parameter
+has no effect on the result; the parameter is scaled to the actual size
+and positioned to fill the space available. (Taking account of alignment
+of the principal mark only causes trouble in practice.)
+@PP
+@@VScale is similar, but in a vertical direction. @@HScale and @@VScale
+each have both a @@OneCol and a @@OneRow effect.
+@End @Section
diff --git a/doc/doc/expert/pre_hshi b/doc/doc/expert/pre_hshi
new file mode 100644
index 0000000..6d28222
--- /dev/null
+++ b/doc/doc/expert/pre_hshi
@@ -0,0 +1,43 @@
+@Section
+ @Title { "@HShift" and "@VShift" }
+ @Tag { hshift }
+@Begin
+@PP
+The @@HShift symbol
+hshift.sym @Index { @@HShift symbol }
+returns its right parameter with principal mark shifted as prescribed
+by its left parameter:
+@IL
+
+@LI {
+2i @Wide { |1rt @Code + & @I length @@HShift @I object }
+|2m Principal mark shifted to the right by {@I length};
+}
+
+@LI {
+2i @Wide { |1rt @Code - & @I length @@HShift @I object }
+|2m Principal mark shifted to the left by {@I length};
+}
+
+@LI {
+2i @Wide { |1rt @I length @@HShift @I object }
+|2m Principal mark shifted so as to lie @I length to the right
+of the left edge of {@I object};
+}
+
+@EL
+In each chase @@HShift includes a @@OneCol effect.
+@PP
+The units of measurement of @I length may be {@Code "c"}, {@Code "i"},
+{@Code "p"}, {@Code "m"}, {@Code "f"}, {@Code "s"}, {@Code "v"}, or
+{@Code "w"}. In the latter case, @Code "1w" is taken to be the width
+of the right parameter, so that, for example, @Code "0.5w @HShift" will
+centre the principal column mark within the right parameter.
+@PP
+vshift.sym @Index { @@VShift symbol }
+The @@VShift symbol is similar except that it applies vertically to the
+principal row mark: @Code + & @I length shifts it down, @Code - & @I
+length shifts it up, and @I length shifts it to @I length below the top
+edge of the object. With @@VShift, @Code "1w" is taken to be the height
+of the right parameter.
+@End @Section
diff --git a/doc/doc/expert/pre_incg b/doc/doc/expert/pre_incg
new file mode 100644
index 0000000..a370c5c
--- /dev/null
+++ b/doc/doc/expert/pre_incg
@@ -0,0 +1,36 @@
+@Section
+ @Title { "@IncludeGraphic" and "@SysIncludeGraphic" }
+ @Tag { includegraphic }
+@Begin
+@PP
+includegraphic.sym @Index { @@IncludeGraphic symbol }
+sysincludegraphic.sym @Index { @@SysIncludeGraphic symbol }
+postscript.includegraphic @SubIndex { used by @@IncludeGraphic }
+These symbols instruct Lout to incorporate a separately created
+illustration:
+@ID @Code "@IncludeGraphic \"myportrait.eps\""
+The parameter is implementation-dependent; in Basser Lout it is an
+object whose value is a simple word denoting the name of a file. This
+file should ideally be a PostScript EPS Version 3.0 file
+@Cite { $adobe1990ps }, since then Lout will keep careful track of what
+resources are required for printing that file. However, any PostScript
+file containing the @Code "%%BoundingBox:" comment and not requiring
+unusual resources is likely to work.
+@PP
+The result of @@IncludeGraphic is an ordinary Lout object with marks
+through its centre. It may be rotated, scaled, and generally
+treated like any other object. Basser Lout determines its size by
+consulting the bounding box information in the file. If this cannot be
+found, a warning message is printed and the result object has zero size.
+@PP
+@@IncludeGraphic searches the same directories that @@Include does
+(Section {@NumberOf include}). @@SysIncludeGraphic is the same as
+@@IncludeGraphic, except that it searches only the directories searched
+by @@SysInclude.
+@PP
+If the file name ends in any of {@Code ".gz"}, {@Code "-gz"}, {@Code ".z"},
+{@Code "-z"}, {@Code "_z"}, or {@Code ".Z"}, the file will first be
+uncompressed using the @Code "gunzip" command into a temporary file
+called @Code "lout.eps" in the current directory. This file is removed
+immediately after it is copied into the output file.
+@End @Section
diff --git a/doc/doc/expert/pre_incl b/doc/doc/expert/pre_incl
new file mode 100644
index 0000000..8a73a49
--- /dev/null
+++ b/doc/doc/expert/pre_incl
@@ -0,0 +1,43 @@
+@Section
+ @Tag { include }
+ @Title { "@Include and @SysInclude" }
+@Begin
+@PP
+include.sym @Index { @@Include symbol }
+sysinclude.sym @Index { @@SysInclude symbol }
+These symbols instruct Lout to temporarily switch to reading another
+file, whose name appears in braces following the symbol. For example,
+@ID @Code {
+"@Include { \"/usr/lout/langdefs\" }"
+}
+will cause the contents of file "/usr/lout/langdefs" to be read at the
+point it occurs. After that file is read, the current file is resumed. The
+included file may contain arbitrary Lout text, including other
+@@Include commands. The file is searched for first in the current
+directory, then in a sequence of standard places which are not necessarily the
+same places that databases are searched for. @@SysInclude searches the
+standard places only.
+@PP
+From Version 3.27, a special behaviour has been instituted when an
+attempt is made to @@Include or @@SysInclude the same file twice.
+If a second or subsequent attempt occurs after the end of definitions,
+@@Use clauses, and @@Database clauses (i.e. if it occurs within the
+content of the document), it will go ahead, thus allowing the
+repeated inclusion of files containing objects -- not necessarily
+recommended, but certainly one way of repeating information. But
+if a second or subsequent attempt occurs within the region of
+definitions, @@Use clauses, and @@Database clauses, then that attempt
+will be silently ignored.
+@PP
+This behaviour is useful for situations where two packages
+depend on a third, caled, say, {@Code C }. We can then place
+@ID @Code "@SysInclude { C }"
+at the start of both packages. If neither package is included, then
+{@Code C} won't be either. But if one or both is included, then
+{@Code C} will be included just once at the start of the first.
+Any pattern of acyclic dependencies between packages can be
+expressed with this mechanism, just by including every package
+that a given package depends on at the start of the file containing
+that package. Cyclic dependencies are beyond Lout's one-pass
+comprehension anyway.
+@End @Section
diff --git a/doc/doc/expert/pre_incr b/doc/doc/expert/pre_incr
new file mode 100644
index 0000000..9145bec
--- /dev/null
+++ b/doc/doc/expert/pre_incr
@@ -0,0 +1,43 @@
+@Section
+ @Title { "@IncludeGraphicRepeated" and "@SysIncludeGraphicRepeated" }
+ @Tag { includegraphicrepeated }
+@Begin
+@PP
+includegraphicrepeated.sym @Index { @@IncludeGraphicRepeated symbol }
+sysincludegraphicrepeated.sym @Index { @@SysIncludeGraphicRepeated symbol }
+postscript.includegraphicrepeated @SubIndex { used by @@IncludeGraphicRepeated }
+These symbols, which are allowed only at the start of a document, tell
+Lout that the EPS file named is likely to be included repeatedly:
+@ID @Code "@IncludeGraphicRepeated { myportrait.eps }"
+To actually see the graphic you use @@IncludeGraphic as usual. The
+purpose of @@IncludeGraphicRepeated is not to display the graphic but
+rather to instruct Lout to include its EPS file in the output file just
+once, at the start, rather than over and over again for every time it
+appears in an @@IncludeGraphic, as would otherwise occur.
+@PP
+Any number of @@IncludeGraphicRepeated and @@SysIncludeGraphicRepeated
+directives may appear at the start of the document. The files involved
+may be compressed as for @@IncludeGraphic. The file names given within
+@@IncludeGraphicRepeated must be identical to the name used within the
+corresponding @@IncludeGraphic symbols, or else the @@IncludeGraphicRepeated
+will be ineffective. If @@SysIncludeGraphicRepeated is used (as opposed
+to @@IncludeGraphicRepeated) then all corresponding includes must use
+@@SysIncludeGraphic rather than @@IncludeGraphic.
+@PP
+Use of @@IncludeGraphicRepeated does not change the appearance of
+the output at all, but, if the EPS file would otherwise be included
+many times over, the result will be a much shorter PostScript file
+which will usually print significantly faster as well. However, Lout
+uses Level 2 PostScript features to implement @@IncludeGraphicRepeated,
+which may not be available in some old printers, and the contents of the
+EPS file have to be stored in the printer for the entire duration of the
+print job, so there is a risk that memory will run out if
+@@IncludeGraphicRepeated is used.
+@PP
+The implementation of @@IncludeGraphicRepeated uses code given by
+the authors of PostScript which employs PostScript forms to save
+the EPS files @Cite { $adobe1996epsforms }. Lout's version of this code
+is somewhat modified, partly for simplicity and partly to correct a
+possible bug caused by their use of a single filter to read all the
+EPS files, rather than a separate filter for each one.
+@End @Section
diff --git a/doc/doc/expert/pre_inse b/doc/doc/expert/pre_inse
new file mode 100644
index 0000000..e981359
--- /dev/null
+++ b/doc/doc/expert/pre_inse
@@ -0,0 +1,19 @@
+@Section
+ @Title { "@Insert" }
+ @Tag { insert }
+@Begin
+@PP
+insert.sym @Index { @@Insert symbol }
+The @@Insert symbol inserts its left parameter at the beginning of the
+first paragraph of its right parameter:
+@ID @Code "X @Insert { A B // C // D }"
+is equivalent to
+@ID @Code "{ XA B // C // D }"
+Notice that a zero-width space separates @Code { X } from the first
+paragraph, so if some wider space is required it must be placed at the
+end of @Code { X }. The @Code "@Insert" operation is applied to the
+value of the right parameter after evaluation.
+@PP
+The only known use for this symbol is to attach something like
+@B { Figure 6 } to the front of a multi-paragraph caption.
+@End @Section
diff --git a/doc/doc/expert/pre_kshr b/doc/doc/expert/pre_kshr
new file mode 100644
index 0000000..517cb89
--- /dev/null
+++ b/doc/doc/expert/pre_kshr
@@ -0,0 +1,23 @@
+@Section
+ @Title { "@KernShrink" }
+ @Tag { kernshrink }
+@Begin
+@PP
+kernshrink. @Index { @@KernShrink symbol }
+This symbol returns its right parameter unchanged in appearance but
+occupying a slightly smaller bounding box. The reduction is by the
+amount of kerning that would be applied if the right parameter was
+immediately @I followed by the left parameter. For example,
+@ID @Code ". @KernShrink P"
+has result
+@ID @Box margin { 0c } { . @KernShrink P }
+where a box of size 0 has been drawn around the result to make its
+extent clear. Compare this with `P' alone:
+@ID @Box margin { 0c } { P }
+in which the bounding box exactly encloses the object, or at least
+is supposed to. The bounding box is smaller on the right by the
+amount of kerning that would be applied between `P' and `.'.
+@PP
+The only known use for this symbol is to produce tucked-in subscripts
+in the Eq equation formatting package.
+@End @Section
diff --git a/doc/doc/expert/pre_lang b/doc/doc/expert/pre_lang
new file mode 100644
index 0000000..50d3539
--- /dev/null
+++ b/doc/doc/expert/pre_lang
@@ -0,0 +1,61 @@
+@Section
+ @Title { "@Language" and "@CurrLang" }
+ @Tag { language }
+@Begin
+@PP
+The @@Language symbol informs Lout that its right parameter is written
+language.sym @Index { @@Language symbol }
+in the language of its left parameter:
+@ID @Code "Danish @Language { ... }"
+Basser Lout Version 3 uses this information in two ways: to hyphenate
+words appropriately to that language, and to change the value of the
+@@CurrLang symbol (see below). Other uses, such as right-to-left
+formatting of certain languages, may be added in the future.
+@PP
+The left parameter must either be empty (which means to leave the current
+language unchanged) or else it must have been given in a @Code "langdef"
+langdef.sym @Index { @Code langdef language definition }
+language definition at the beginning of the input:
+@ID {
+@Code "langdef Danish Dansk {" @I implementation-dependent @Code "}"
+}
+After @Code "langdef" comes a sequence of one or more simple words,
+which are alternative names for the language being defined. Following
+them comes an implementation-dependent part between braces. In Basser
+Lout Version 3 this part contains the name of the Lout hyphenation
+information file (minus its .lh suffix) to be used when hyphenating
+words in this language, followed by a sequence of words which define
+the ends of sentences. For example:
+@ID @Code "langdef English { english . : ? ! .) ?) !) }"
+defines a language called English with hyphenation patterns file
+{@Code english.lh} and seven ways to end a sentence. The use of
+these sentence endings is described in Section {@NumberOf space}. If
+there is no hyphenation file available, this is indicated by writing
+@Code "-" for the file name; if there are no sentence ends, they are
+simply omitted.
+@PP
+The @@CurrLang symbol, which has no parameters, evaluates to the first
+currlang.sym @Index { @@CurrLang symbol }
+name given in the @Code "langdef" of the language in force at the point
+where it is invoked:
+@ID @Code "Dansk @Language { This is @CurrLang. }"
+has result
+@ID { Dansk @Language { This is @CurrLang. } }
+It is typically used with the @@Case symbol like this:
+@ID @Code {
+"@CurrLang @Case {"
+" Danish @Yield tirsdag"
+" English @Yield Tuesday"
+" French @Yield Mardi"
+"}"
+}
+This example evaluates to the name of the third day of the week in the
+current language.
+@PP
+The current language is part of the style of an object, like its
+font. As explained in Section {@NumberOf size}, style is inherited
+through the point of appearance, which for language can be
+unexpected. For example, an index entry which originates in a French
+chapter but appears in an English index will have English for its
+language, so must be explicitly set to French using @@Language.
+@End @Section
diff --git a/doc/doc/expert/pre_link b/doc/doc/expert/pre_link
new file mode 100644
index 0000000..d11d44f
--- /dev/null
+++ b/doc/doc/expert/pre_link
@@ -0,0 +1,85 @@
+@Section
+ @Title { "@LinkSource", "@LinkDest", and "@URLLink" }
+ @Tag { link_source }
+@Begin
+@PP
+The two symbols @@LinkSource and @@LinkDest
+link.source.sym @Index { @@LinkSource symbol }
+link.dest.sym @Index { @@LinkDest symbol }
+work together to create @I { cross links } in a document, that is, points
+where a user viewing the document on screen can click and be transported to
+another point in the document. We call the point where the user
+clicks the @I source of the link, and the point where the user
+arrives the @I destination of the link.
+@PP
+To create a source point, place
+@ID { @I tag @Code "@LinkSource" @I object }
+at some point in the document, where the value of @I tag is a legal
+cross reference tag, and @I object is an arbitrary Lout object. The
+result of this is just {@I object}, but if the user of a screen
+viewer clicks on any point within the rectangular bounding box
+of that object, a link will be entered.
+@PP
+At present, @I object above is treated as though it were enclosed
+in @@OneCol. This means that a long link source or destination point
+will not break over two lines as part of an enclosing paragraph.
+@PP
+To create a destination point, place
+@ID { @I tag @Code "@LinkDest" @I object }
+at some point in the document. Again, @I tag must evaluate to a
+legal cross reference tag, and @I object may be any Lout
+object. All @Code "@LinkSource" symbols whose
+tag is equal to this one are linked to this destination point.
+@PP
+For every source point there must be exactly one destination point with
+the same tag, otherwise it will not be clear where the link is
+supposed to take the user. Lout will print a warning if this
+condition is violated anywhere; it will refuse to insert a
+destination point with the same name as a previous one, but it is not
+able to refrain from inserting a source point with no corresponding
+destination point, and such points must cause errors of some kind when
+viewed (exactly what error will depend on the viewer).
+@PP
+The @@URLLink symbol is similar to @@LinkSource in being the
+source point of a link, but instead of a tag you supply a URL
+to some other document altogether:
+@ID @Code {
+"\"http://snark.ptc.spbu.ru/~uwe/lout/lout.html\" @URLLink { Lout Home Page }"
+}
+The URL will need to be enclosed in quotes, because of the "/"
+characters which are otherwise taken to be concatenation operations. As
+for @@LinkSource, the result is just the object to the right, like this:
+@ID { "http://snark.ptc.spbu.ru/~uwe/lout/lout.html" @URLLink { Lout Home Page } }
+but if the user clicks on this object on the screen they enter a
+link that takes them to the given URL location, assuming that
+the software which they are using to display the document is
+clever enough to do this.
+@PP
+For the purposes of @@Common, @@Rump, and @@Meld, two @@LinkSource
+objects are considered to be equal if their right parameters are
+equal; the left parameters are not considered. This behaviour is
+needed, for example, to make index entries look reasonable when
+melded. If two @@LinkSource objects with equal right parameters but
+different left parameters are melded into one, one of the two will
+be the result, but which one is undefined. Notice that melding
+cannot produce an undefined link, since the worst it can do is
+delete a @@LinkSource.
+@PP
+Practically speaking, the right parameters of @@LinkSource
+and @@URLLink need to be non-null, non-empty objects, since
+otherwise there is nothing visible for the user to click on.
+(This condition is not checked or enforced by Lout.) However,
+the right parameter of @@LinkDest could reasonably be empty
+or null. Usually, when @@Null lies inside a non-concatenation
+object, for example
+@ID "@OneCol @Null"
+the effect of the @@Null is lost -- the result in this example
+is equivalent to an empty object. However, when the right
+parameter of @@LinkDest is @@Null:
+@ID "@LinkDest @Null"
+or when it is some object treated like @@Null by Lout (e.g.
+a @@Tagged symbol), then the @@LinkDest itself has the effect
+on surrounding concatentation operators that @@Null has,
+allowing it to be made effectively invisible in the printed
+document, though still really there.
+@End @Section
diff --git a/doc/doc/expert/pre_mome b/doc/doc/expert/pre_mome
new file mode 100644
index 0000000..d4d377c
--- /dev/null
+++ b/doc/doc/expert/pre_mome
@@ -0,0 +1,72 @@
+@Section
+ @Title { "@Moment" }
+ @Tag { moment }
+@Begin
+@PP
+The predefined symbol @@Moment
+moment.sym @Index { @@Moment symbol }
+has the following definition:
+@ID @OneRow @Code {
+"def @Moment"
+" named @Tag {}"
+" named @Second {}"
+" named @Minute {}"
+" named @Hour {}"
+" named @Day {}"
+" named @Month {}"
+" named @Year {}"
+" named @Century {}"
+" named @WeekDay {}"
+" named @YearDay {}"
+" named @DaylightSaving {}"
+"{}"
+}
+It may be used like any other symbol. Lout provides an invocation of
+@@Moment with tag {@Code now}, whose other parameters are numbers
+encoding the current date and time:
+@ID @OneRow @Tab
+ @Fmta { @Col @Code A ! @Col B }
+{
+@Rowa
+ A { "@Second" }
+ B { the current second, usually between 00 and 59 }
+@Rowa
+ A { "@Minute" }
+ B { the current minute, between 00 and 59 }
+@Rowa
+ A { "@Hour" }
+ B { the current hour, between 00 and 23 }
+@Rowa
+ A { "@Day" }
+ B { the current day of the month, between 1 and 31 }
+@Rowa
+ A { "@Month" }
+ B { the current month, between 1 (January) and 12 (December) }
+@Rowa
+ A { "@Year" }
+ B { the current year of the century, between 00 and 99 }
+@Rowa
+ A { "@Century" }
+ B { the current century, e.g. 19 or 20 }
+@Rowa
+ A { "@WeekDay" }
+ B { the current day of the week, between 1 (Sunday) and 7 (Saturday) }
+@Rowa
+ A { "@YearDay" }
+ B { the current day of the year, between 0 and 365 }
+@Rowa
+ A { "@DaylightSaving" }
+ B { an implementation-dependent number that may encode the
+daylight saving currently in effect }
+}
+date @Index { Date, printing of current }
+Unix manual entries state that @Code "@Second" can be as high as 61, to
+allow for leap seconds. Judicious use of databases can convert these
+numbers into useful dates. For example,
+@ID @Code {
+"@Moment&&now @Open { @Day {@Months&&@Month}, @Century{@Year} }"
+}
+produces something like
+@Moment&&now @Open { @Day {@Months&&@Month}, @Century{@Year} }
+given a suitable database of months.
+@End @Section
diff --git a/doc/doc/expert/pre_next b/doc/doc/expert/pre_next
new file mode 100644
index 0000000..c65d7db
--- /dev/null
+++ b/doc/doc/expert/pre_next
@@ -0,0 +1,17 @@
+@Section
+ @Title { "@Next" }
+ @Tag { next }
+@Begin
+@PP
+next.sym @Index { @@Next symbol }
+The @@Next symbol returns its parameter
+plus one. It is rather clever at working this out: it hunts through
+the parameter from right to left, looking for a number to increment:
+@ID @Code {
+"@Next (3.99)"
+}
+has result {@Next (3.99)}. If @@Next cannot find a digit inside
+its parameter, it is an error. Roman numerals are handled by storing
+them in a database, as explained in Section {@NumberOf paras};
+@@Next will not increment a Roman numeral.
+@End @Section
diff --git a/doc/doc/expert/pre_notr b/doc/doc/expert/pre_notr
new file mode 100644
index 0000000..169faeb
--- /dev/null
+++ b/doc/doc/expert/pre_notr
@@ -0,0 +1,61 @@
+@Section
+ @Title { "@NotRevealed" }
+ @Tag { notrevealed }
+@Begin
+@PP
+The @@NotRevealed symbol
+notrevealed.sym @Index { @@NotRevealed symbol }
+exerts fine control over the process of expanding receptive symbols. It
+may appear only within the body of a definition, immediately following
+the name of a receptive symbol. For example:
+@ID @OneRow @Code {
+"def A { @Galley }"
+""
+"def B { @Galley }"
+""
+"def ABList"
+"{"
+" A"
+" // B @NotRevealed"
+" // ABList"
+"}"
+}
+The meaning is that the symbol immediately preceding @@NotRevealed, @Code B
+in this example, is not revealed to galleys which encounter @Code "ABList"
+while searching for targets; to such galleys it appears that @Code "ABList"
+contains @Code A only, not {@Code B}, hence only galleys targeted to
+@Code A will expand {@Code "ABList"}. However, after @Code "ABList"
+is expanded by such a galley, @Code B will be available as a target in
+the usual way.
+@PP
+Apart from this meaning, @@NotRevealed has no effect at all, and the
+body of the definition may be understood by deleting @@NotRevealed and
+any preceding space. Thus, the symbol preceding @@NotRevealed may have
+named and right parameters in the usual way; these would follow after
+the @@NotRevealed symbol.
+@PP
+This symbol was introduced to overcome a problem with floating figures
+treated as displays. It turned out to be essential to specify the
+layout of a column (in part) as
+@ID @OneRow @Code {
+"@BodyTextPlace"
+"// @FigurePlace"
+"// @BodyTextPlace"
+"// @FigurePlace"
+"// @BodyTextPlace"
+"..."
+}
+so that figures could alternate with body text down the column. However,
+some means was needed to ensure that in the absence of any figures there
+could only be one @Code "@BodyTextPlace" in the column, since otherwise
+various problems arose, for example the @Code "@NP" symbol merely causing
+a skip from one @Code "@BodyTextPlace" to the next in the same column,
+rather than to the first in the next column. Also, without this feature
+the optimal page breaker's attempts to end a column early would be
+frustrated by Lout then discovering that plenty of space existed at a
+following @Code "@BodyTextPlace" in the same column. The solution is
+based on @Code "ABList" above; each occurrence of @Code "@BodyTextPlace"
+after a @Code "@FigurePlace" is not revealed in the enclosing definition,
+and so cannot be found by body text galleys unless a figure has
+previously attached to the preceding {@Code "@FigurePlace"}.
+@End @Section
diff --git a/doc/doc/expert/pre_null b/doc/doc/expert/pre_null
new file mode 100644
index 0000000..7b97081
--- /dev/null
+++ b/doc/doc/expert/pre_null
@@ -0,0 +1,26 @@
+@Section
+ @Title { "@Null" }
+ @Tag { null }
+@Begin
+@PP
+This symbol
+null.sym @Index { @@Null symbol }
+provides a convenient way to remove unwanted
+concatenation symbols. If there is a concatenation symbol
+preceding @@Null, the @@Null and the
+concatenation symbol are both deleted. Otherwise, if there is a
+following concatenation symbol, it and the @@Null are both deleted.
+Otherwise, @@Null becomes an empty object.
+@PP
+These rules apply to a fully parenthesized version of the expression. For
+example, in
+@ID @Code {
+"... //1vx @Null |0.5i ..."
+}
+it is the horizontal concatenation symbol following @@Null that
+disappears, because in the fully parenthesized version
+@ID @Code {
+"... //1vx { @Null |0.5i ... }"
+}
+there is no concatenation symbol preceding the @@Null.
+@End @Section
diff --git a/doc/doc/expert/pre_oneo b/doc/doc/expert/pre_oneo
new file mode 100644
index 0000000..bc662cb
--- /dev/null
+++ b/doc/doc/expert/pre_oneo
@@ -0,0 +1,62 @@
+@Section
+ @Title { "@OneOf" }
+ @Tag { oneof }
+@Begin
+@PP
+oneof.sym @Index { @@OneOf symbol }
+The @@OneOf symbol returns one of the sequence of objects which is
+its right parameter as its result:
+@ID @Code @Verbatim {
+@OneOf {
+ @ResultA
+ @ResultB
+ @ResultC
+}
+}
+The choice is made to ensure that whatever galley target is required
+at the moment is found. For example, if we are evaluating @@OneOf
+as part of an attempt to attach a galley whose target is
+{@Code "@SomeTarget"}, then the result above will be
+{@Code "@ResultA"} if it contains {@Code "@SomeTarget"}, or else
+{@Code "@ResultB"} if it contains {@Code "@SomeTarget"}, or else
+{@Code "@ResultC"} (whether or not it contains the target, or
+if there is no target).
+@PP
+Use of @@OneOf in conjunction with recursive symbols can lead
+to problems. Consider this example:
+@ID @Code {
+"def @Recursive {"
+""
+" def @ChoiceA { @APlace // @Recursive }"
+""
+" def @ChoiceB { @BPlace // @Recursive }"
+""
+" @OneOf {"
+" @ChoiceA"
+" @ChoiceB"
+" }"
+"}"
+}
+Lout believes that expanding @Code "@Recursive" is the right thing
+to do when searching for either of the galley targets {@Code "@APlace"}
+and {@Code "@BPlace"}. When searching for @Code "@BPlace" this leads
+Lout to expand {@Code "@Recursive"}, then {@Code "@ChoiceA"}, then
+the {@Code "@Recursive"} symbol within {@Code "@ChoiceA"}, and so on
+infinitely. This problem can be avoided by attaching a
+@Code "@NotRevealed" symbol to each of the inner @Code "@Recursive"
+symbols: these are then not available for expansion until a
+decision has been made to expand the symbol they lie within. In
+this particular example it would be simpler to write
+@ID @Code {
+"def @Recursive {"
+""
+" @OneOf {"
+" @APlace"
+" @BPlace"
+" }"
+" // @Recursive"
+"}"
+}
+but this factoring is not possible when the recursive calls have
+parameters that are required to differ in the two cases.
+@End @Section
diff --git a/doc/doc/expert/pre_oner b/doc/doc/expert/pre_oner
new file mode 100644
index 0000000..7e0dbce
--- /dev/null
+++ b/doc/doc/expert/pre_oner
@@ -0,0 +1,36 @@
+@Section
+ @Title { "@OneCol" and "@OneRow" }
+ @Tag { onerow }
+@Begin
+@PP
+The @@OneRow symbol
+onerow.sym @Index { @@OneRow symbol }
+principal.mark.effect @SubIndex { effect on @@OneCol and @@OneRow }
+returns its right parameter modified so that only the principal row mark
+protrudes. This is normally the first row mark, but another one may be
+chosen by preceding it with @Code "^/" or {@Code "^//"}. For example,
+@ID @Code {
+"@OneRow { |0.5rt Slope @Font x + 2 ^//1p @HLine //1p |0.5rt 5 }"
+}
+has result
+@LP
+@ID {
+@ShowMarks
+@OneRow { |0.5rt Slope @Font x + 2 ^//1p @HLine //1p |0.5rt 5 }
+}
+@LP
+with one row mark protruding from the bar as shown. Compare this with
+@ID @Code {
+"@OneRow { |0.5rt Slope @Font x + 2 //1p @HLine //1p |0.5rt 5 }"
+}
+where the mark protrudes from the numerator:
+@LP
+@ID {
+@ShowMarks
+@OneRow { |0.5rt Slope @Font x + 2 //1p @HLine //1p |0.5rt 5 }
+}
+onecol.sym @Index { @@OneCol symbol }
+@@OneCol has the same effect on columns as @@OneRow does on rows, with
+the symbols @Code "^|" and @Code "^||" (or {@Code "^&"}) determining
+which mark is chosen.
+@End @Section
diff --git a/doc/doc/expert/pre_open b/doc/doc/expert/pre_open
new file mode 100644
index 0000000..d332570
--- /dev/null
+++ b/doc/doc/expert/pre_open
@@ -0,0 +1,41 @@
+@Section
+ @Title { "@Open and @Use" }
+ @Tag { open }
+@Begin
+@PP
+The @@Open symbol
+open.sym @Index { @@Open symbol }
+takes a cross reference or symbol
+invocation for its left parameter, and an arbitrary object, which must
+be enclosed in braces, for its right parameter. The right parameter
+may refer to the exported parameters and nested definitions of the invocation
+denoted by the left parameter, and its value is the @@Open
+symbol's result. The target of the cross reference may lie in an
+external database (Section {@NumberOf database}). Any symbol available
+outside the @@Open which happens to have the same name as one of the
+symbols made available by the @@Open will be unavailable within the @@Open.
+@PP
+use.sym @Index { @@Use symbol }
+The @@Use symbol is an @@Open symbol in a
+different form. It may only appear among or after the definitions
+in Lout's input, and it is equivalent to enclosing the remainder of the
+input in an @@Open symbol. For example,
+@ID @OneRow {
+ @I definitions
+//1vx @Code "@Use" @Code "{" @I x @Code "}"
+//1vx @Code "@Use" @Code "{" @I y @Code "}"
+//1vx @I { rest of input }
+}
+is equivalent to
+@ID @OneRow {
+ @I definitions
+//1vx @I x @Code "@Open"
+//1vx @Code "{" &4mt @I y @Code "@Open"
+//1vx &4mt @Code "{" @I { rest of input }
+//1vx &4mt @Code "}"
+//1vx @Code "}"
+}
+The @@Use symbol allows a set of standard packages to be opened without
+the inconvenience of enclosing the entire document in @@Open symbols. Such
+enclosure could cause Basser Lout to run out of memory.
+@End @Section
diff --git a/doc/doc/expert/pre_outl b/doc/doc/expert/pre_outl
new file mode 100644
index 0000000..f62ec9f
--- /dev/null
+++ b/doc/doc/expert/pre_outl
@@ -0,0 +1,21 @@
+@Section
+ @Title { "@Outline" }
+ @Tag { outline }
+@Begin
+@PP
+The @@Outline symbol
+outline.sym @Index { @@Outline symbol }
+causes all the words in the right parameter (which may be an
+arbitrary object) to be printed in outline, rather than filled as
+is usual. For example,
+@ID @Code @Verbatim { @Outline @Box 24p @Font HELP }
+produces
+@ID @Outline @Box 24p @Font HELP
+Outlining is part of the style information, in the same way as
+colour, font, underlining, and so forth. Outlining can be applied
+to any font likely to be used in practice. At the time of writing,
+there is no way to control the thickness of the outline, and
+@@Outline has no effect in PDF output. The size of outlined
+words is taken by Lout to be the same as if they had not been
+outlined, even though they are in reality slightly larger.
+@End @Section
diff --git a/doc/doc/expert/pre_page b/doc/doc/expert/pre_page
new file mode 100644
index 0000000..cccff13
--- /dev/null
+++ b/doc/doc/expert/pre_page
@@ -0,0 +1,20 @@
+@Section
+ @Tag { pagelabel }
+ @Title { "@PageLabel" }
+@Begin
+@PP
+pagelabel.sym @Index { @@PageLabel symbol }
+The @@PageLabel symbol associates a page label in the PostScript
+output file with the page within which (or just before which) the symbol
+occurs, so that PostScript viewers are able to index the page
+by this label. (The label is printed in the @Code "%%Page" comment
+preceding the page in the PostScript output file.) For example,
+@ID @Code "@PageLabel iv"
+associates the label @Code "iv" with the page. The label may be
+an arbitrary object; if its value is not a simple word, it will
+be replaced by {@Code "?"}.
+@PP
+@@PageLabel is unrelated to Lout's cross referencing mechanism;
+it is for communicating a label to the PostScript output file, not to
+other parts of Lout. The result of @@PageLabel is a null object.
+@End @Section
diff --git a/doc/doc/expert/pre_plai b/doc/doc/expert/pre_plai
new file mode 100644
index 0000000..1f0319e
--- /dev/null
+++ b/doc/doc/expert/pre_plai
@@ -0,0 +1,15 @@
+@Section
+ @Title { "@PlainGraphic" }
+ @Tag { plaingraphic }
+@Begin
+@PP
+plaingraphic.sym @Index { @@PlainGraphic symbol }
+The @@PlainGraphic symbol is avery rudimentary analogue for plain text
+output of the @@Graphic symbol for PostScript output. Its result is
+its right parameter printed on a background created by repeated
+printings of its left parameter, which must be a simple word. For
+example,
+@ID @Verbatim { "." @PlainGraphic 5s @Wide }
+would produce five dots. @@PlainGraphic is used in the @Code tbl
+table-drawing package to produce plain-text rules.
+@End @Section
diff --git a/doc/doc/expert/pre_prep b/doc/doc/expert/pre_prep
new file mode 100644
index 0000000..600a1c5
--- /dev/null
+++ b/doc/doc/expert/pre_prep
@@ -0,0 +1,30 @@
+@Section
+ @Tag { prependgraphic }
+ @Title { "@PrependGraphic and @SysPrependGraphic" }
+@Begin
+@PP
+prependgraphic.sym @Index { @@PrependGraphic symbol }
+sysprependgraphic.sym @Index { @@SysPrependGraphic symbol }
+postscript.prependgraphic @SubIndex { used by @@PrependGraphic }
+These symbols, which may appear anywhere that a definition or @@Use
+symbol may appear, tell Lout to include the contents of a file in the
+preamble of its output. For Basser Lout this means that the file must
+contain PostScript (and ideally it would begin and end with the
+@Code "%%BeginResource" and @Code "%%EndResource" comments of
+DSC 3.0). For example,
+@ID @Code {
+"@SysPrependGraphic { diagf.lpg }"
+}
+appears at the start of the Diag package; the file @Code diagf.lpg
+contains a number of PostScript definitions used by Diag for drawing
+diagrams. It saves a lot of space to include them just once at the
+start like this, rather than with every diagram. @@PrependGraphic and
+@@SysPrependGraphic search for the file in the same places as @@Include and
+@@SysInclude respectively.
+@PP
+If the same file name appears in two @@PrependGraphic or
+@@SysPrependGraphic symbols, the second occurrence is
+silently ignored. This allows several packages to share
+PostScript resources: each includes the appropriate prepend file,
+but in the end only one copy ot it is printed to Lout's output.
+@End @Section
diff --git a/doc/doc/expert/pre_rota b/doc/doc/expert/pre_rota
new file mode 100644
index 0000000..00e28ff
--- /dev/null
+++ b/doc/doc/expert/pre_rota
@@ -0,0 +1,57 @@
+@Section
+ @Title { "@Rotate" }
+ @Tag { rotate }
+@Begin
+@PP
+rotate.sym @Index { @@Rotate symbol }
+rotation @Index { Rotation of object }
+The @@Rotate symbol will rotate its
+right parameter counterclockwise an amount given in degrees (positive or
+negative) by its left parameter. For example,
+@ID @Code {
+"30d @Rotate { hello, world }"
+}
+has result
+@ID {
+30d @Rotate { hello, world }
+}
+Before rotating the object, @@OneCol and @@OneRow are applied to it. The
+result is a rectangle whose marks pass through the point where the
+original marks crossed:
+@ID {
+ @ShowMarks
+ { 0.6c @Wide 0.3c @High ^| 2.2c @Wide ^/ 0.2c @High }
+
+&4m => &4m
+
+ @ShowMarks
+ {
+ 30d @Rotate
+ { @ShowMarks
+ { 0.6c @Wide 0.3c @High ^| 2.2c @Wide ^/ 0.2c @High }
+ }
+ }
+}
+As this example shows, rotation by an angle other than a multiple of
+ninety degrees introduces quite a lot of white space. So, for example, the
+result of
+@ID {
+@Code { "-30d" "@Rotate" 30d "@Rotate" } @I object
+}
+is a much larger object than {@I object}, despite the fact that one
+rotation cancels the other.
+@PP
+Rotation of objects containing receptive and recursive symbols is
+permitted, but for angles other than multiples of ninety degrees it is
+best to make the size of the rotated object clear with @@Wide and
+@@High symbols:
+@ID @Code {
+"30d @Rotate 5i @Wide 4i @High"
+"{ //1i @TextPlace"
+" //1i"
+"}"
+}
+This is because for angles other than multiples of ninety degrees the
+space available for @Code "@TextPlace" to occupy is indeterminate, and
+the result is poor.
+@End @Section
diff --git a/doc/doc/expert/pre_rump b/doc/doc/expert/pre_rump
new file mode 100644
index 0000000..89aeee6
--- /dev/null
+++ b/doc/doc/expert/pre_rump
@@ -0,0 +1,89 @@
+@Section
+ @Title { {"@Common"}, {"@Rump"}, and "@Meld" }
+ @Tag { rump }
+@Begin
+@PP
+common.sym @Index { @@Common symbol }
+rump.sym @Index { @@Rump symbol }
+meld.sym @Index { @@Meld symbol }
+The @@Common and @@Rump symbols compare two paragraph objects:
+@ID @Code "{ Aardvark, 29 } @Common { Aardvark, 359 }"
+If either parameter is not a paragraph object, it is converted into
+a single-object paragraph first. The result of @@Common is the
+common prefix of the two paragraphs; that is, those initial objects
+which are equal in the two paragraphs. In the example above, the
+result is {@Code "Aardvark,"}. The result of @@Rump is that part of
+the second object which is not included in @@Common; the result of
+@ID @Code "{ Aardvark, 29 } @Rump { Aardvark, 359 }"
+is {@Code "359"}.
+@PP
+If the two objects have nothing in common, the result of @@Common will
+be an empty object and the result of @@Rump will be the second
+object. If the two objects are identical, the result of @@Common will
+be the first object, and the result of @@Rump will be an empty object.
+@PP
+The only known use for @@Rump and @@Common is to implement merged index
+entries (Section {@NumberOf sorted}).
+@PP
+The @@Meld symbol returns the minimum meld of two paragraphs, that
+is, the shortest paragraph that contains the two original paragraphs
+as subsequences. For example,
+@ID @Code "{ Aardvark , 1 , 2 } @Meld { Aardvark , 2 , 3 }"
+produces
+@ID { Aardvark , 1 , 2 } @Meld { Aardvark , 2 , 3 }
+The result is related to the well-known longest common substring, in
+that the meld contains everything not in the lcs plus one copy of
+everything in the lcs. Where there are several minimum melds, @@Meld
+returns the one in which the components of the first parameter are as
+far left as possible.
+@PP
+Determining the values of all these symbols requires testing whether
+one component of the first paragraph is equal to one component of the
+second. Since Version 3.25, the objects involved may be arbitrary
+and Lout will perform the necessary detailed checking for equality;
+previously, only simple words were guaranteed to be tested correctly.
+Two words are equal if they contain the same sequence of characters,
+regardless of whether they are enclosed in quotes, and regardless
+of the current font or any other style information. Otherwise,
+objects are equal if they are of the same type and have the same
+parameters, including gaps in concatenation objects. The sole
+exception is @@LinkSource, whose left parameter is ignored during
+equality testing, since otherwise there would be problems in the
+appearance of melded clickable index entries.
+@PP
+Style changing operations (@@Font, @@SetColour etc.) are not considered
+in equality testing, since these have been processed and deleted by the
+time that the tests are done. Also, Lout tries hard to get rid of
+redundant braces around concatenation objects, which is why
+@ID @Code "{ a { b c } } @Meld { { a b } c }"
+produces
+@ID { { a { b c } } @Meld { { a b } c } }
+The two parameters are equal by the time they are compared by @@Meld.
+@PP
+One problematic area in the use of these operators is the definition
+of equality when objects are immediately adjacent. Lout contains an
+optimization which merges immediately adjacent words whenever they
+have the same style. For example,
+@ID @Code "{Hello}{world}"
+would be treated internally as one word, whereas
+@ID @Code "{Hello}{yellow @Colour world}"
+would be treated as two adjacent words. Thus, although @@Font,
+@@SetColour, and the other style operators are ignored in equality
+testing, they may affect the structure of the objects they lie
+within.
+@PP
+At present, @@Common and @@Rump treat all unmerged components of
+their paragraph as separate, even if one is immediately adjacent
+to another. @@Common and @@Rump would thus see one component in
+the first example and two in the second. @@Meld treats each group
+of immediately adjacent components as a single component, so it
+would see one component in both examples; but it would still not
+report them as equal, since one is a single word and the other is a
+pair of adjacent words. These confusing and inconsistent properties
+might be revised in the future. See Section {@NumberOf exa_inde}
+for an example of the practical use of these operators, in which
+very small unbreakable gaps are used to ensure that apparently
+adjacent components are separate, and @@OneCol is used to prevent
+the word merging optimization from taking effect when it would
+otherwise cause trouble.
+@End @Section
diff --git a/doc/doc/expert/pre_scal b/doc/doc/expert/pre_scal
new file mode 100644
index 0000000..1e1b1a3
--- /dev/null
+++ b/doc/doc/expert/pre_scal
@@ -0,0 +1,26 @@
+@Section
+ @Title { "@Scale" }
+ @Tag { scale }
+@Begin
+@PP
+scale. @Index { @@Scale symbol }
+This symbol geometrically scales its right parameter by the scale factor
+given in its left parameter:
+@ID @Code "1.0 @Scale Hello 2.0 @Scale Hello 0.5 @Scale Hello"
+has result
+@ID { 1.0 @Scale Hello 2.0 @Scale Hello 0.5 @Scale Hello }
+The left parameter can be two scale factors, in which case the first
+applies horizontally, and the second vertically:
+@ID @Code "{0.5 2.0} @Scale Hello"
+has result
+@ID { {0.5 2.0} @Scale Hello }
+The left parameter may be empty, in which case Lout will scale the
+object by a common factor horizontally and vertically so as to occupy
+all available horizontal space:
+@ID @Code "{} @Scale { Hello world }"
+has result
+@LD {} @Scale { Hello world }
+The right parameter may be any object. @@Scale has both a @@OneCol and
+a @@OneRow effect, and the marks of the result coincide with the principal
+marks of the right parameter.
+@End @Section
diff --git a/doc/doc/expert/pre_spac b/doc/doc/expert/pre_spac
new file mode 100644
index 0000000..f44d840
--- /dev/null
+++ b/doc/doc/expert/pre_spac
@@ -0,0 +1,55 @@
+@Section
+ @Title { "@Space" }
+ @Tag { space }
+@Begin
+@PP
+The @@Space symbol
+space.sym @Index { @@Space symbol }
+changes the value of the @Code s unit of measurement (Section
+s.unit.space @SubIndex { and @@Space symbol }
+{@NumberOf concatenation}) within its right parameter to the value
+given by the left parameter:
+@ID {
+@Code "1c @Space { a b c d }"
+}
+has result
+@ID {
+1c @Space { a b c d }
+}
+As for the @@Break symbol, the left parameter of @@Space may be given
+relative to the enclosing @Code s unit, and it may include a gap
+mode. Note that the @@Font symbol also sets the @Code s unit.
+@PP
+The left parameter of the @@Space symbol may also hold any one of the
+five special values {@Code lout}, {@Code compress}, {@Code separate},
+{@Code troff}, and {@Code tex}, which control the way in which Lout
+treats white space separating two objects. The names {@Code troff}
+and {@Code tex} indicate that the behaviour of these options is
+inspired by these other document formatting systems.
+@PP
+The default setting, {@Code lout}, produces as many spaces in the output as
+there are in the input. The {@Code compress} setting causes all sequences
+of two or more white space characters to be treated the same as one white
+space character. The {@Code separate} setting is like {@Code compress}
+but also causes zero white spaces between two objects (but not within
+one word) to be treated the same as one white space character.
+@PP
+The {@Code troff} setting is the same as {@Code lout} except that
+wherever a sentence ends at the end of a line, one extra space is
+added. Formally, when two objects are separated by white space
+characters which include at least one newline character, and the
+first object is a word ending in any one of a certain set of
+sequences of characters, the extra space is added. The set of
+sequences of characters depends on the current language and is defined
+in the @Code langdef for that language (see Section {@NumberOf language}).
+@PP
+The {@Code tex} option is the most complicated. First, the
+{@Code compress} option is applied. Then, at every sentence ending,
+whether or not at the end of a line, one extra space is added. A
+sentence ending is defined as for {@Code troff} except that, in addition
+to the preceding word having to end in one of a certain set of sequences of
+characters, the character preceding that sequence must exist and must
+be a lower-case letter. A character is a lower-case letter if, in the
+Lout Character Mapping file (Section {@NumberOf font}) associated with
+the current font, an upper-case equivalent of the character is defined.
+@End @Section
diff --git a/doc/doc/expert/pre_span b/doc/doc/expert/pre_span
new file mode 100644
index 0000000..e527652
--- /dev/null
+++ b/doc/doc/expert/pre_span
@@ -0,0 +1,58 @@
+@Section
+ @Title { "@StartHSpan","@StartVSpan", "@StartHVSpan", "@HSpan", and "@VSpan" }
+ @Tag { hspan }
+@Begin
+@PP
+starthspan. @Index { @@StartHSpan symbol }
+startvspan. @Index { @@StartVSpan symbol }
+starthvspan. @Index { @@StartHVSpan symbol }
+hspan. @Index { @@HSpan symbol }
+vspan. @Index { @@VSpan symbol }
+These symbols work together to produce spanning columns and rows in
+a more flexible way than is possible in practice with @Code "//" and
+{@Code "||"}. An object
+@ID @Code "@StartHSpan object"
+causes @Code object to be printed, but occupying all the horizontal space
+to the right on the row mark on which it lies up to and including the rightmost
+@@HSpan symbol on that mark not preceded by @@StartHVSpan, @@StartHSpan,
+@@StartVSpan, or @@VSpan. The column mark of this spanning object is not
+constrained to align with any of the column marks of the columns it spans.
+@PP
+If there is no @@HSpan symbol anywhere to the right of @@StartHSpan, then
+the object spans only its own column. This means that it occupies that
+column as usual but its mark is not constrained to align with those of the
+other objects in the column.
+@PP
+Similarly, the @@StartVSpan symbol causes its object to occupy all
+the vertical space below it on the column mark on which it lies, down to and
+including the bottommost @@VSpan symbol on that mark not preceded by a
+@@StartHVSpan, @@StartHSpan, @@StartVSpan, or @@HSpan; and if there
+is no @@VSpan symbol anywhere below it on that mark, then the object
+spans only its own row, occupying its row but with its mark not constrained
+to align with the row mark.
+@PP
+The @@StartHVSpan symbol combines the effects of @@StartHSpan and
+@@StartVSpan, allowing an object to span both columns and rows
+simultaneously. For example, in
+@ID @Code {
+"@StartHVSpan x | | @HSpan"
+"/"
+"@VSpan | |"
+}
+the object @Code x will occupy a rectangular area spanning three columns,
+two rows, and the gaps between them.
+@PP
+The objects lying in the region spanned should all be empty, or the
+@@HSpan and @@VSpan symbols can be used to document the spanning that
+is occurring. At present there may be no galley targets or recursive symbols
+within the right parameter of @@StartHSpan, @@StartVSpan, or
+@@StartHVSpan. However, the right parameter may otherwise be an
+arbitrary object, including paragraphs of text that require breaking.
+@PP
+If the right parameter of @@StartHSpan, @@StartVSpan, or @@StartHVSpan
+occupies more horizontal or vertical space than all of the spanned columns
+or rows combined require, the extra space goes into the last spanned column
+or row. Overlapping spanning rows and columns are permitted. Gaps spanned
+by span objects are unbreakable (their @Code "u" indicator is set
+automatically and cannot be revoked).
+@End @Section
diff --git a/doc/doc/expert/pre_tagg b/doc/doc/expert/pre_tagg
new file mode 100644
index 0000000..df6cdc3
--- /dev/null
+++ b/doc/doc/expert/pre_tagg
@@ -0,0 +1,15 @@
+@Section
+ @Title { "@Tagged" }
+ @Tag { tagged }
+@Begin
+@PP
+The @@Tagged
+tagged.sym @Index { @@Tagged symbol }
+symbol takes a cross reference for its left parameter and an object, whose
+value must be a juxtaposition of simple words, or several words, or an empty
+object, for its right parameter. It has the effect of attaching its
+right parameter as an additional tag to the invocation denoted by its
+left parameter, unless the right parameter is empty, in which case @@Tagged
+does nothing. The result of @@Tagged is always @@Null, which makes it
+effectively invisible.
+@End @Section
diff --git a/doc/doc/expert/pre_text b/doc/doc/expert/pre_text
new file mode 100644
index 0000000..b3e9156
--- /dev/null
+++ b/doc/doc/expert/pre_text
@@ -0,0 +1,92 @@
+@Section
+ @Title { "@SetTexture" }
+ @Tag { texture }
+@Begin
+@PP
+The @@SetTexture symbol
+settexture.sym @Index { @@SetTexture symbol }
+returns its right parameter in the texture specified by its left
+parameter. A texture is a pattern used when filling areas to
+get a texture rather than solid color.
+@PP
+In the PostScript world, textures are called patterns, and the
+relevant PostScript commands use this terminology. The author
+has preferred the term `texture' because it is more precise:
+a pattern could be a pattern for anything.
+@PP
+The @@SetTexture command accepts the special value {@Code "nochange"}
+for the left parameter. This value causes the right parameter to have
+the texture it would have had without the @@SetTexture command. An
+empty left parameter also has this effect.
+@PP
+Another special value is {@Code "LoutTextureSolid"}, which means no
+texture at all, just solid colour. It would be useful to change
+back to solid colour within an enclosing textured region. It is also
+the initial texture; thus there is no need to ensure that the root
+galley or each of its components is enclosed in a @@SetTexture symbol.
+@PP
+The form of the left parameter is implementation-dependent; in Basser
+Lout it must be an object whose value is a sequence of words comprising
+PostScript for setting a texture, up to and including the PostScript
+@Code "setpattern" command (or equivalent) which installs the texture
+into the graphics state. Lout makes no attempt to understand textures,
+it simply prints the PostScript commands when appropriate. Consult
+@Cite { $adobe1990ps } for information about PostScript patterns.
+You'll need to do that in order to make sense of the rest of this section.
+@PP
+Since building even a simple texture takes a lot of PostScript
+and is quite error-prone, Lout defines two symbols in the PostScript
+prologue called @Code "LoutMakeTexture" and @Code "LoutSetTexture"
+that you can use to make and set a texture, like this:
+@ID @Code @Verbatim {
+{ "1 1 1 0 dg 0 pt 0 pt"
+ "2 [0 0 2 pt 3 pt] 2 pt 3 pt { ... }"
+ "LoutMakeTexture LoutSetTexture"
+} @SetTexture ...
+}
+We'll explain both symbols in detail in a moment, but just briefly,
+@Code "LoutMakeTexture" makes a texture, leaving a pattern dictionary
+as returned by @Code "makepattern" on the execution stack, and
+@Code "LoutSetTexture" installs this texture into the current graphics
+state, like @Code "setpattern" but without any mention of colour.
+@PP
+@Code "LoutMakeTexture" is just a convenience definition that
+constructs a pattern matrix and dictionary, populating them with the
+stack elements to its left, then calls {@Code makepattern}. You don't
+have to use it if you don't want to. The above example of
+@Code "LoutMakeTexture" sets the pattern matrix and dictionary as follows.
+@PP
+The first number is a scale factor, and the second and third are horizontal
+and vertical scale factors. The fourth ({@Code "0 dg"}) is an angle of
+rotation. The fifth and sixth are horizontal and vertical shifts. These
+six numbers determine the pattern transformation matrix passed to
+{@Code makepattern}.
+@PP
+The remaining elements go into the pattern dictionary. @Code "PaintType"
+is set to the first of them, or the seventh item overall (2 in our example,
+denoting an uncoloured pattern, which will usually be the best choice;
+the pattern will be painted in the current colour), @Code "BBox" is set
+to the eighth item, here {@Code "[0 0 2 pt 3 pt]"}, @Code "XStep" is set
+to the ninth item, here {@Code "2 pt"}, @Code "YStep" is set to the tenth
+item, here {@Code "3 pt"}, and @Code "PaintProc" is set to the eleventh
+and last item, which should be an executable array as shown. All non-zero
+lengths must be in absolute units, that is, followed by {@Code in}, {@Code cm},
+{@Code pt}, or {@Code em}, otherwise the results will be unpredictable.
+@PP
+@Code "LoutSetTexture" installs the given texture into the
+graphics state, preserving the current colour. You must use
+@Code "LoutSetTexture" and you must not use {@Code setcolorspace},
+@Code {setcolor}, and {@Code setpattern}, because Lout considers
+colour and texture to be independent of each other, and these PostScript
+commands don't.
+@PP
+Another advantage of @Code "LoutMakeTexture" and @Code "LoutSetTexture"
+is that they behave sensibly on Level 1 PostScript interpreters,
+which do not have patterns. Rather than failing altogether, these
+commands will make sure everything appears in solid colour. Be
+aware, though, that interpreters exist (e.g @Code gv ca. 1997) which
+appear to be Level 2 but actually leave textured areas blank.
+@PP
+For information on how these symbols are implemented, consult
+Appendix {@NumberOf tex}.
+@End @Section
diff --git a/doc/doc/expert/pre_ucol b/doc/doc/expert/pre_ucol
new file mode 100644
index 0000000..c5829a5
--- /dev/null
+++ b/doc/doc/expert/pre_ucol
@@ -0,0 +1,21 @@
+@Section
+ @Title { "@SetUnderlineColour" and "@SetUnderlineColor" }
+ @Tag { underline_colour }
+@Begin
+@PP
+The @@SetUnderlineColour and @@SetUnderlineColor symbols,
+setunderlinecolour.sym @Index { @@SetUnderlineColour symbol }
+setunderlinecolor.sym @Index { @@SetUnderlineColor symbol }
+which have identical effect, ensure that any underlining in
+the right parameter is done in the colour specified by their
+left parameter. The left parameter is a colour as for
+@@SetColour in Section {@NumberOf colour}.
+@PP
+To actually get underlining, you have to use the @@Underline
+symbol (Section {@NumberOf underline}).
+@PP
+Note that the @@SetColour symbol from Section {@NumberOf colour}
+includes the effect of @@SetUnderlineColour, so in the usual
+case where underlining is to be in the same colour as the text
+being underlined, there is no need to use @@SetUnderlineColour.
+@End @Section
diff --git a/doc/doc/expert/pre_unde b/doc/doc/expert/pre_unde
new file mode 100644
index 0000000..19f01ed
--- /dev/null
+++ b/doc/doc/expert/pre_unde
@@ -0,0 +1,34 @@
+@Section
+ @Tag { underline }
+ @Title { "@Underline" }
+@Begin
+@PP
+underline.sym @Index { @@Underline symbol }
+The @@Underline symbol underlines its right parameter, but only if that
+parameter is a word or a paragraph:
+@ID @Code "We @Underline { really do } mean this."
+produces
+@ID { We @Underline { really do } mean this. }
+It is not possible to underline an arbitrary object using this symbol;
+the @@Underline symbol will be ignored if this is attempted.
+@PP
+It is very easy to @I define a symbol which will underline an arbitrary
+object, using the @@Graphic symbol. This raises the question of why
+@@Underline is needed at all. The answer is that @@Underline has two
+properties that distinguish it from symbols based on @@Graphic.
+@PP
+First, when @@Underline both contains a paragraph and is used within a
+paragraph, as in the example above, the inner and outer paragraphs are
+merged into one, permitting the underlined text to break over several
+lines. This is how the @@Font symbol works too, but symbols based on
+@@Graphic do not permit this merging.
+@PP
+Second, Adobe font files specify the correct position and thickness of
+underlining for each font, and the @@Underline symbol follows these
+specifications. The font used is the font of the first object underlined,
+if it is a simple word, or else the font of the enclosing paragraph.
+@PP
+The colour of the underline is usually the same as the colour of the
+text being underlined, but this can be changed using the
+@@SetUnderlineColour symbol (Section {@NumberOf underline_colour}).
+@End @Section
diff --git a/doc/doc/expert/pre_verb b/doc/doc/expert/pre_verb
new file mode 100644
index 0000000..725df85
--- /dev/null
+++ b/doc/doc/expert/pre_verb
@@ -0,0 +1,30 @@
+@Section
+ @Tag { verbatim }
+ @Title { "@Verbatim and @RawVerbatim" }
+@Begin
+@PP
+verbatim.sym @Index { @@Verbatim symbol }
+rawverbatim.sym @Index { @@RawVerbatim symbol }
+These symbols instruct Lout to read the following text (enclosed in braces)
+verbatim, that is, turning off all special character meanings. For example,
+@ID @Code @Verbatim {
+@Verbatim { "hello" }
+}
+produces
+@ID @Verbatim { "hello" }
+@@Verbatim ignores all characters after the opening brace up to but not
+including the first non-white-space character. @@RawVerbatim differs from
+@@Verbatim only in that it ignores all characters after the opening brace
+up to but not including the first non-white-space character, or up to and
+including the first newline character, whichever comes first. This
+variant is useful in cases such as
+@ID @Code @Verbatim {
+@RawVerbatim {
+ var x: Real
+begin
+}
+}
+where the first line of the verbatim text begins with white space which
+would be ignored by @@Verbatim. Both symbols ignore all white spaces
+at the end of the verbatim text, preceding the closing brace.
+@End @Section
diff --git a/doc/doc/expert/pre_wide b/doc/doc/expert/pre_wide
new file mode 100644
index 0000000..6526957
--- /dev/null
+++ b/doc/doc/expert/pre_wide
@@ -0,0 +1,22 @@
+@Section
+ @Title { "@Wide" and "@High" }
+ @Tag { wide }
+@Begin
+@PP
+The @@Wide symbol
+wide.sym @Index { @@Wide symbol }
+returns its right parameter modified to have the width given by its left
+parameter, which must be a length (Section {@NumberOf concatenation})
+whose unit of measurement is {@Code "c"}, {@Code "i"}, {@Code "p"},
+{@Code "m"}, {@Code "f"}, {@Code "s"}, or {@Code "v"}. If the right
+parameter is not as wide as required, white space is added at the right;
+if it is too wide, its paragraphs are broken (Section {@NumberOf break})
+so that it fits. A @@OneCol operation is included in the effect of @@Wide,
+since it does not make sense for an object of fixed width to have two column
+marks.
+@PP
+high.sym @Index { @@High symbol }
+The @@High symbol similarly ensures that its result is of a given height,
+by adding white space at the bottom. In this case it is an error for the
+right parameter to be too large. A @@OneRow operation is included.
+@End @Section
diff --git a/doc/doc/expert/pre_yuni b/doc/doc/expert/pre_yuni
new file mode 100644
index 0000000..40e6660
--- /dev/null
+++ b/doc/doc/expert/pre_yuni
@@ -0,0 +1,35 @@
+@Section
+ @Title { "@YUnit", "@ZUnit", "@CurrYUnit", and "@CurrZUnit" }
+ @Tag { yunit }
+@Begin
+@PP
+The @@YUnit symbol
+yunit.sym @Index { @@YUnit symbol }
+zunit.sym @Index { @@ZUnit symbol }
+changes the value of the @Code y unit of measurement (Section
+{@NumberOf concatenation}) within its right parameter to the value
+given by the left parameter:
+@ID {
+@Code "1c @YUnit { ... }"
+}
+ensures that the value of @Code "1y" within the right parameter will
+be {@Code "1c"}. The @@ZUnit symbol is similar, setting the value
+of the @Code z unit in its right parameter. Both units have default
+value zero. The left parameter may not include a gap mode, nor may it
+use the {@Code w}, {@Code b}, {@Code r}, or of course {@Code d} units,
+but it may begin with @Code "+" or @Code "-" to indicate that value is
+to be added to or subtracted from the current value. Any negative result
+of using @Code "-" will be silently replaced by zero.
+@PP
+The @@CurrYUnit and @@CurrZUnit symbols report the value of the @Code y
+and @Code z units, in points, truncated to the nearest integer. For example,
+@ID @Code "1i @YUnit { The current value of the y unit is @CurrYUnit }"
+produces
+@ID 1i @YUnit { The current value of the y unit is @CurrYUnit }
+since there are 72 points in one inch (at least, Lout thinks there are).
+@PP
+These units are not used internally by Lout. They are supplied as
+part of the style information for the convenience of application
+packages. For example, the Eq equation formatting package uses them
+to fine-tune the appearance of equations.
+@End @Section
diff --git a/doc/doc/expert/preface b/doc/doc/expert/preface
new file mode 100644
index 0000000..6407880
--- /dev/null
+++ b/doc/doc/expert/preface
@@ -0,0 +1,31 @@
+@Preface
+ @Tag { preface }
+@Begin
+@PP
+@IndexBlanks
+This manual is addressed to those who wish to become
+expert users of the Lout document formatting system. An expert user
+is someone who understands the principles of document formatting
+that Lout embodies, and is able to apply them, for example to design
+a document format or a special-purpose package. In contrast, a non-expert
+user is someone who simply uses Lout to format documents.
+@PP
+Chapter {@NumberOf principles} explains these principles, and it
+should be read carefully and in sequence. Chapters {@NumberOf details}
+and {@NumberOf symbols} are for reference; respectively, they
+contain descriptions of the detailed operation of Lout's major
+components, and a complete description of each predefined symbol. The
+final chapter presents a collection of advanced examples.
+@PP
+This manual presents Version 3 of Basser Lout, publicly released in
+September 1994 @Cite { $kingston1995lout.program } and developed
+continuously since then. This manual was rendered into PostScript
+postscript @Index { PostScript }
+by Version 3.40 of the Basser Lout interpreter, using the symbols
+described in the User's Guide @Cite { $kingston1995lout.user }.
+@DP
+@Heading { Acknowledgment. } Version 3 has benefited from hundreds of
+comments received since the release of Version 1 in October 1991. Not
+every suggestion could be followed, but many have been, and the
+encouragement was greatly appreciated.
+@End @Preface
diff --git a/doc/doc/expert/pri b/doc/doc/expert/pri
new file mode 100644
index 0000000..f24cb02
--- /dev/null
+++ b/doc/doc/expert/pri
@@ -0,0 +1,15 @@
+@Chapter
+ @Title { Principles }
+ @Tag { principles }
+@Begin
+@LP
+The Lout document formatting language is based on just four key ideas:
+objects, definitions, cross references, and galleys. This chapter
+concentrates on them, postponing the inevitable details.
+@BeginSections
+@Include { pri_obje }
+@Include { pri_defi }
+@Include { pri_cros }
+@Include { pri_gall }
+@EndSections
+@End @Chapter
diff --git a/doc/doc/expert/pri_cros b/doc/doc/expert/pri_cros
new file mode 100644
index 0000000..677794e
--- /dev/null
+++ b/doc/doc/expert/pri_cros
@@ -0,0 +1,112 @@
+@Section
+ @Tag { cross }
+ @Title { Cross references }
+@Begin
+@PP
+A cross reference
+cross.ref @Index { Cross reference }
+in common terminology is something like `see Table 6'
+or `see page 57' -- a reference within a document to some other part of
+it. Readers find them very useful, but they are a major
+problem for authors. As the document is revised, Table 6
+becomes Table 7, the thing on page 57 moves to page 63, and all the
+cross references must be changed.
+@PP
+The Scribe
+scribe @Index { Scribe }
+document formatter, developed by Brian K. Reid @Cite { $reid1980scribe },
+reid.brian @Index { Reid, Brian K. }
+introduced a scheme for keeping track of cross
+references. It allows you to give names to tables, figures, etc., and to
+refer to them by name. The formatter inserts the appropriate numbers in
+place of the names, so that as the document is revised, the
+cross references are kept up to date automatically. Lout has adopted
+and extended this scheme.
+@PP
+In Lout, automatic cross referencing works in the following way. First
+define a symbol with a parameter with the special name @Code "@Tag":
+@ID @OneRow @Code {
+"def @Table"
+" left @Tag"
+" right @Value"
+"{"
+" ||1i @Value"
+"}"
+}
+When this symbol is invoked, the value given to @Code "@Tag" should be a
+simple word like {@Code "cities"}, or several simple words juxtaposed
+like {@Code "cities compare"}; it serves to name the invocation:
+@ID @OneRow @Code {
+"{ cities compare } @Table"
+"{"
+" Washington |0.5i Canberra"
+"}"
+}
+We may now refer to this invocation elsewhere in the document, using the
+@I {cross reference} @Code "@Table&&{ cities compare }". Here @Code "&&"
+is the {@I {cross reference symbol}}; its left parameter is a symbol and
+its right parameter is the value of the @Code "@Tag" parameter of some
+invocation of that symbol. Of course it's simplest if you use just a
+one-word tag; then no braces are needed.
+@PP
+A cross reference is not an object; the reader should think of it as
+an arrow in the final printed document, beginning at the cross reference
+and ending at the top of the target
+target.cr @Index { Target of cross reference }
+#@ID 8p @Font {
+# { @LittlePage // @LittlePage }
+# ||0io ||0.7c
+# { //2c
+# { @Code "@Table&&cities" }
+# //0.1c
+# ||0.5c 90d @Rotate @Arrow 2.5c
+# //0.05c
+# @HContract @VContract
+# @Fig { @Box margin { 0c } paint { grey } { 1.5c @Wide 1c @High } }
+# }
+#}
+#@PP
+invocation. Three special values may be given to the right parameter of
+{@Code "&&"}: {@Code preceding}, {@Code following}, and
+preceding. @Index { @Code preceding }
+following. @Index { @Code following }
+foll_or_prec. @Index { @Code following }
+{@Code foll_or_prec}. The cross
+reference @Code "@Table&&preceding" points to some table
+appearing earlier in the final printed document than itself; that is, the
+arrow is guaranteed to point backwards through the document. Usually it
+points to the nearest preceding invocation. Similarly,
+@Code "@Table&&following" points forwards, usually to the
+nearest following invocation. @Code "@Table&&foll_or_prec" is the same as
+@Code "@Table&&following" if it exists, otherwise it is the same as
+{@Code "@Table&&preceding"}.
+@PP
+This section has been concerned with what a cross reference is -- an
+arrow from one point in a document to another -- but not with how it is
+used. One simple way to use a cross reference is to put it where an
+object is expected, like this:
+@ID @Code {
+"a | @Table&&cities | c"
+}
+In this case the cross reference will be replaced by a copy of the
+invocation it points to: in the example just given, a table will appear
+between @Code a and @Code c. Other applications of cross references may be
+found in Chapter {@NumberOf examples}, including finding the number of
+the page where something appears, producing running page headers and footers,
+and accessing databases of Roman numerals, references, etc. Cross
+references are also used by galleys, as will be explained in the next section.
+@PP
+The implementation of cross referencing copies every symbol invocation with
+a @Code "@Tag" parameter into the @I { cross-reference database },
+a collection of files whose names end in {@Code ".ld"} indexed by one file
+whose name is {@Code "lout.li"}. It is generally the case that the bulk
+content of a symbol such as the table above is contained in its right or
+body parameter, and that this bulk content is not needed by cross references
+to the symbol. Hence, to save space in the database, Lout replaces the
+right parameter of each symbol it writes into it by the word "???" whenever
+the right parameter appears to be large. The table above would appear as
+"???" because of this optimization, and in general, the user must ensure
+that any content required by cross references is contained in parameters
+other than the right or body parameter. This optimization does not apply
+when the symbol being written into the cross-reference database is a galley.
+@End @Section
diff --git a/doc/doc/expert/pri_defi b/doc/doc/expert/pri_defi
new file mode 100644
index 0000000..002db15
--- /dev/null
+++ b/doc/doc/expert/pri_defi
@@ -0,0 +1,246 @@
+@Section
+ @Title { Definitions }
+ @Tag { definitions }
+@Begin
+@PP
+The features of Lout are very general. They do not assume that documents
+are composed of pages, nor that there are such things as margins and
+footnotes, for example. @I Definitions
+definitions. @Index { Definitions }
+bridge the gap between Lout's general features and the
+special features -- footnotes, equations, pages -- that particular
+documents require. They hold the instr&-uct&-ions for producing these
+special features, conveniently packaged ready for use.
+@PP
+For example, consider the challenge posed by `@TeX', which is the name of
+one of Lout's most illustrious rivals @Cite { $knuth1984tex }. Lout solves it
+easily enough, like this:
+@ID @Code {
+"T{ /0.2fo E }X"
+}
+but to type this every time @TeX is mentioned would be tedious and
+error-prone. So we place a definition at the beginning of the document:
+@ID @Code {
+"def @TeX { T{ /0.2fo E }X }"
+}
+Now @Code "@TeX" stands for the object following it between
+braces, and we may write
+@ID @Code {
+consider the challenge posed by "`@TeX'", ...
+}
+as the author did earlier in this paragraph.
+@PP
+A @I symbol
+symbol. @Index Symbol
+is a name, like {@Code "@TeX"}, which stands for
+something other than itself. The initial @Code "@" is not compulsory,
+but it does make the name stand out clearly. A @I definition of a symbol
+declares a name to be a symbol, and says what the symbol stands for. The
+@I body of a definition
+body.of @Index { Body of a definition }
+is the part following the name, between the braces. To @I invoke
+invocation @Index { Invocation of a symbol }
+a symbol is to make use of it.
+@PP
+Another expression ripe for packaging in a definition is
+@ID @Code {
+"@OneRow { | -2p @Font n ^/0.5fk 2 }"
+}
+which produces @OneRow { | -2p @Font n ^/0.5sk 2 } (see
+Chapter {@NumberOf details}). But this time we would like to be able to write
+@ID {
+@I object @Code "@Super" @I object
+}
+so that @Code { a "@Super" 2 } would come out as {a @Super 2}, and so
+on, for in this way the usefulness of the definition is greatly
+increased. Here is how it is done:
+@ID @OneRow @Code {
+"def @Super"
+" left x"
+" right y"
+"{ @OneRow { | -2p @Font y ^/0.5fk x }"
+"}"
+}
+This definition says that @Code "@Super" has two {@I parameters},
+parameter @Index Parameter
+@Code x and {@Code y}. When @Code "@Super" is invoked, all occurrences
+of @Code x in the body will be replaced by the object just to the left
+of {@Code "@Super"}, and all occurrences of @Code y will be replaced by
+the object just to the right. So, for example, the expression
+@ID @Code {
+"2 @Super { Slope @Font n }"
+}
+is equal to
+@ID @Code {
+"@OneRow { | -2p @Font { Slope @Font n } ^/0.5fk 2 }"
+}
+and so comes out as {2 @Super {Slope @Font n}}.
+@PP
+Lout permits definitions to invoke themselves, a peculiarly circular
+thing to do which goes by the name of
+recursion @Index Recursion
+@I recursion. Here is an example
+of a recursive definition:
+@ID @Code {
+"def @Leaders { .. @Leaders }"
+}
+The usual rule is that the value of an invocation of a symbol is a copy of
+the body of the symbol's definition, so the value of @Code "@Leaders" must be
+@ID @Code {
+".. @Leaders"
+}
+But now this rule applies to this new invocation of {@Code "@Leaders"};
+substituting its body gives
+@ID @Code {
+".. .. @Leaders"
+}
+and so on forever. In order to make this useful,
+an invocation of a recursive symbol is replaced by its body only if
+sufficient space is available. So, for example,
+@ID @Code {
+"4i @Wide { Chapter 7 @Leaders 62 }"
+}
+has for its result the object
+@ID {
+4i @Wide { Chapter 7 @Leaders 62 }
+}
+with Lout checking before each replacement of @Code "@Leaders" by
+@OneCol @Code { ".." "@Leaders" } that the total length afterwards,
+including the other words, would not exceed four inches.
+@PP
+The remaining issue is what happens when Lout decides that it is time to
+stop. The obvious thing to do is to replace the last invocation by an
+empty object:
+@ID @Code {
+".. .. .. .. .. .. .. .. {}"
+}
+As the example shows, this would leave a small trailing space, which
+is a major headache. Lout fixes this
+by replacing the last invocation with a different kind of empty object,
+called @@Null, whose effect is to make an adjacent concatenation symbol
+disappear, preferably one preceding the @@Null. Thus, when Lout
+replaces @Code "@Leaders" by @@Null in the expression
+@ID @Code {
+".. .. .. .. .. .. .. .. @Leaders"
+}
+the trailing space, which is really a horizontal concatenation symbol,
+disappears as well. This is taken into account when deciding
+whether there is room to replace @Code "@Leaders" by its body.
+@PP
+The remainder of this section is devoted to showing how definitions may
+be used to specify the @I {page layout}
+page.layout @RawIndex { Page layout }
+page.layout.basic @SubIndex { principles of }
+of a document. To begin with,
+we can define a page like this:
+@ID @OneRow @Code {
+"def @Page"
+"{"
+" //1i ||1i"
+" 6i @Wide 9.5i @High"
+" { @TextPlace //1rt @FootSect }"
+" ||1i //1i"
+"}"
+}
+Now @Code "@Page" is an eight by
+eleven and a half inch object, with one inch margins, a place at the top for
+text, and a section at the bottom for footnotes (since @Code "//1rt"
+bottom-justifies the following object). It will be
+convenient for us to show the effect of invoking @Code "@Page" like this:
+@ID @Code
+{ { //0.5ix 8p @Font "@Page" &2m => } &2m
+@LittlePage { "@TextPlace" //1rt "@FootSect" }
+}
+with the invoked symbol appearing to the left of the arrow, and its body to
+the right.
+@PP
+The definition of a vertical list of pages should come as no surprise:
+@ID @OneRow @Code {
+"def @PageList"
+"{"
+" @Page // @PageList"
+"}"
+}
+This allows invocations like the following:
+@ID @Code @HExpand @HScale {
+{ //0.5ix 8p @Font "@PageList" }
+||1m { //0.5ix => } ||1m
+{ @LittlePage { "@TextPlace" //1rt "@FootSect" }
+ //0.2c 8p @Font "@PageList"
+}
+||1m { //0.5ix => } ||1m
+{ @LittlePage { "@TextPlace" //1rt "@FootSect" }
+ // @LittlePage { "@TextPlace" //1rt "@FootSect" }
+ //0.2c 8p @Font "@PageList"
+}
+||1m { //0.5ix => } ||1m
+{ @LittlePage { "@TextPlace" //1rt "@FootSect" }
+ // @LittlePage { "@TextPlace" //1rt "@FootSect" }
+}
+}
+setting @Code "@PageList" to @Code @@Null on the last step. Any
+number of pages can be generated.
+@PP
+A definition for @Code "@TextPlace" is beyond us at present, since
+@Code "@TextPlace" must be replaced by different parts of the text
+of the document on different pages. But we can
+define @Code "@FootSect" to be a small space followed by a
+horizontal line followed by a list of places where footnotes go:
+@ID @OneRow @Code {
+"def @FootList "
+"{ "
+" @FootPlace //0.3v @FootList"
+"} "
+" "
+"def @FootSect"
+"{ "
+" //0.3v 1i @Wide @HLine"
+" //0.3v @FootList "
+"} "
+}
+assuming that @Code "@HLine" will produce a horizontal line of the
+indicated width. With this definition we can generate pages like this:
+@ID @Code {
+@LittlePage { "@TextPlace"
+ //1rt
+ "@FootSect"
+ }
+||2m { //0.5ix => } ||2m
+@LittlePage { "@TextPlace"
+ //1rt
+ @OneRow { 1c @Wide @HLine
+ //0.1c
+ "@FootList"
+ }
+ }
+||2m { //0.5ix => } ||2m
+@LittlePage { "@TextPlace"
+ //1rt
+ @OneRow { 1c @Wide @HLine
+ //0.1c
+ "@FootPlace"
+ //0.1c
+ "@FootList"
+ }
+ }
+}
+and so on for arbitrarily many footnotes.
+@PP
+We will see in the next section how invocations of @Code "@PageList",
+@Code "@FootSect" and @Code "@FootList" are replaced by their bodies only
+when the need to insert text and footnotes obliges Lout to do so;
+otherwise the invocations are replaced by @@Null. In this way, the
+right number of pages is made, the small line appears only on pages that
+have at least one footnote, and unnecessary concatenation symbols
+disappear.
+@PP
+This approach to page layout is the most original contribution Lout has
+made to document formatting. It is extraordinarily flexible. Two-column
+pages? Use
+@ID @Code {
+"{2.8i @Wide @TextPlace} ||0.4i {2.8i @Wide @TextPlace}"
+}
+instead of {@Code "@TextPlace"}. Footnotes in smaller type? Use
+@Code { -2p "@Font" "@FootPlace" } instead of {@Code "@FootPlace"}. And
+on and on.
+@End @Section
diff --git a/doc/doc/expert/pri_gall b/doc/doc/expert/pri_gall
new file mode 100644
index 0000000..9efb3c1
--- /dev/null
+++ b/doc/doc/expert/pri_gall
@@ -0,0 +1,279 @@
+@Section
+ @Title { Galleys }
+ @Tag { galleys }
+@Begin
+@PP
+It is time to pause and ask ourselves how close we are to achieving our
+aim of producing neatly formatted documents. We can certainly produce
+the pieces of a document:
+@ID {
+
+nohyphen @Break @LittlePageColumn {
+@DP
+|0.5rt {@B PURCELL}{ 0.8f @Font 1 ^//0.2v}
+@DP
+In the world of music England is supposed to be a mere province. If she
+produces an indifferent composer or performer, that is regarded
+elsewhere as perfectly normal and natural; but if foreign students of
+musical history have to acknowledge a British musical genius, he is
+considered a freak.
+@PP
+Such a freak is Henry Purcell. Yet if we make a choice of fifteen of
+the world's musical classics, as here, we find that we cannot omit this
+English master.
+}
+
+||1c
+
+@LittlePageColumn
+{ { 0.8f @Font 1 ^//0.2v}Blom, Eric. @I {Some Great Composers.} Oxford, 1944.
+}
+
+||1c
+
+@Code {
+ @LittlePage { "@TextPlace" //1rt "@FootSect" }
+// @LittlePage { "@TextPlace" //1rt "@FootSect" }
+// @LittlePage { "@TextPlace" //1rt "@FootSect" }
+//0.2c 8p @Font "@PageList"
+}
+
+}
+but when we try to merge them together, we encounter two obstacles.
+@PP
+First, when an object is entered at a certain place in the document, it
+appears at that place. But a footnote is naturally entered immediately
+after the point it refers to (`{-2p @Font PURCELL}' in this case), yet it
+appears somewhere else: at the bottom of a page.
+@PP
+Second, all our features build up larger objects out of smaller ones,
+but the -2p @Font PURCELL object, for example, must be broken down into
+page-sized pieces. This occurs when the available space at the
+`somewhere else' is insufficient to hold the entire object, so this
+second obstacle arises out of the first.
+@PP
+Lout's last major feature, which we introduce to overcome these
+obstacles, is the @I galley
+galley.feature @Index { Galleys }
+(the name is borrowed from the galleys
+used in manual typesetting). A galley is an object plus a cross
+reference which points to where the object is to appear. The example
+above has three galleys:
+@ID {
+
+{
+//0.1c
+
+nohyphen @Break @LittlePageColumn {
+@DP
+|0.5rt {@B PURCELL}{ 0.8f @Font 1 ^//0.2v}
+@DP
+In the world of music England is supposed to be a mere province. If she
+produces an indifferent composer or performer, that is regarded
+elsewhere as perfectly normal and natural; but if foreign students of
+musical history have to acknowledge a British musical genius, he is
+considered a freak.
+@PP
+Such a freak is Henry Purcell. Yet if we make a choice of fifteen of
+the world's musical classics, as here, we find that we cannot omit this
+English master.
+} { //0.4c 180d @Rotate @Arrow 2.0c }
+
+}
+
+||0io ||4.8c
+
+@Code {
+ @LittlePage { "@TextPlace" //1rt "@FootSect" }
+// @LittlePage { "@TextPlace" //1rt "@FootSect" }
+// @LittlePage { "@TextPlace" //1rt "@FootSect" }
+//0.2c 8p @Font "@PageList"
+} 180d @Rotate @Arrow 1i @I -2p @Font {to printer}
+
+||0io ||2.0c
+{
+//3.9c
+
+{ @Arrow 1.7c } nohyphen @Break @LittlePageColumn
+{ { 0.8f @Font 1 ^//0.2v}Blom, Eric. @I {Some Great Composers.} Oxford, 1944.
+}
+}
+}
+A galley replaces the invocation pointed to by its cross reference. If
+space is not sufficient there to hold it all, the remainder of the
+galley is split off (the vertical concatenation symbol preceding it
+being discarded) and it replaces later invocations of the same symbol.
+This is exactly what is required to get text and footnotes onto pages.
+@PP
+To create a galley, first define a symbol with a
+special @Code into
+into @Index { @Code into clause }
+clause, like this:
+@ID @OneRow @Code {
+"def @FootNote into { @FootPlace&&following }"
+" right x"
+"{"
+" 8p @Font x"
+"}"
+}
+An invocation of such a symbol will then be a galley whose object is the
+result of the invocation, and whose cross reference is given by the
+@Code into clause. The right parameter of the cross reference must be
+one of {@Code preceding}, {@Code following}, and {@Code foll_or_prec}.
+@PP
+A symbol, like @Code "@FootPlace", which is the @I target of a galley,
+target.g @Index { Target of a galley }
+must contain the special symbol @@Galley exactly once in its body; often
+this is all that the body contains:
+@ID @Code {
+"def @FootPlace { @Galley }"
+}
+It is this special symbol that is replaced by the incoming galley, in
+fact, not the @Code "@FootPlace" symbol as a whole.
+@PP
+A symbol which contains @@Galley, either directly within its body or
+indirectly within the body of a symbol it invokes, is called a @I receptive
+receptive @Index { Receptive symbol }
+symbol, meaning receptive to galleys. @Code "@FootPlace" is receptive, which
+makes @Code "@FootList", @Code "@FootSect" and @Code "@PageList"
+receptive since they invoke @Code "@FootPlace". If no galley replaces
+any @@Galley within some invocation of a receptive symbol, that
+invocation is replaced by @@Null. The advantages of this rule for page
+layout were explained at the end of Section {@NumberOf definitions}.
+@PP
+Let us now follow through the construction of our example
+document. Initially there is just the one @I root
+root.galley @Index { Root galley }
+galley, containing an unexpanded invocation of @Code "@PageList":
+@ID { ||5c
+10p @Font @Code "@PageList" 180d @Rotate @Arrow 1i @I -2p @Font {to printer}
+}
+Then the -2p @Font PURCELL galley appears, targeted to a @Code
+"@TextPlace". Lout knows that there is a @Code "@TextPlace" hidden
+inside @Code "@PageList", so it expands @Code "@PageList":
+@ID {
+
+{
+//0.1c
+
+nohyphen @Break @LittlePageColumn {
+@DP
+|0.5rt {@B PURCELL}{ 0.8f @Font 1 ^//0.2v}
+@DP
+In the world of music England is supposed to be a mere province. If she
+produces an indifferent composer or performer, that is regarded
+elsewhere as perfectly normal and natural; but if foreign students of
+musical history have to acknowledge a British musical genius, he is
+considered a freak.
+@PP
+Such a freak is Henry Purcell. Yet if we make a choice of fifteen of
+the world's musical classics, as here, we find that we cannot omit this
+English master.
+} { //0.4c 180d @Rotate @Arrow 2.2c }
+}
+
+||0io ||5c
+
+@Code {
+ @LittlePage { "@TextPlace" //1rt "@FootSect" }
+//0.2c 8p @Font "@PageList"
+} 180d @Rotate @Arrow 1i @I -2p @Font {to printer}
+
+}
+After promoting the first line into @Code "@TextPlace", the footnote
+galley attached to it appears and demands an invocation of
+@Code "@FootPlace" following its attachment point
+(`{-2p @Font PURCELL}'). Such a @Code "@FootPlace" is found at
+the bottom of the first page, inside @Code "@FootSect", which is
+accordingly expanded, and the footnote is promoted onto the page:
+@ID {
+
+{
+//1.2c
+
+nohyphen @Break @LittlePageColumn {
+In the world of music England is supposed to be a mere province. If she
+produces an indifferent composer or performer, that is regarded
+elsewhere as perfectly normal and natural; but if foreign
+students of musical history have to acknowledge a British musical genius,
+he is considered a freak.
+@PP
+Such a freak is Henry Purcell. Yet if we make a choice of fifteen of
+the world's musical classics, as here, we find that we cannot omit this
+English master.
+} 180d @Rotate @Arrow 2.2c
+}
+
+||0io ||5c
+
+{
+nohyphen @Break @LittleDocument
+//
+@LittleText {
+@DP
+|0.5rt {@B PURCELL}{ 0.8f @Font 1 ^//0.2v}
+@LittleFootNote
+{ { 0.8f @Font 1 ^//0.2v}Blom, Eric. @I {Some Great Composers.} Oxford, 1944.
+//1vx @Code "@FootList"
+}
+//1vx @Code "@TextPlace" }
+//
+@LittleEndRun
+//0.2c 8p @Font @Code "@PageList"
+} 180d @Rotate @Arrow 1i -2p @Font @I {to printer}
+
+}
+Now the promotion of the -2p @Font PURCELL galley resumes. When the
+first page is filled, Lout searches forwards for another @Code "@TextPlace"
+to receive the remainder, once again expanding a @Code "@PageList":
+@ID {
+
+{
+//4.85c
+
+nohyphen @Break @LittlePageColumn {
+performer, that is regarded
+elsewhere as perfectly normal and natural; but if foreign
+students of musical history have to acknowledge a British musical genius,
+he is considered a freak.
+@PP
+Such a freak is Henry Purcell. Yet if we make a choice of fifteen of
+the world's musical classics, as here, we find that we cannot omit this
+English master.
+} 180d @Rotate @Arrow 2.2c
+}
+
+||0io ||5c
+
+{
+nohyphen @Break @LittleDocument
+//
+@LittleText {
+@DP
+|0.5rt {@B PURCELL}{ 0.8f @Font 1 ^//0.2v}
+@LittleFootNote
+{ { 0.8f @Font 1 ^//0.2v}Blom, Eric. @I {Some Great Composers.} Oxford, 1944.
+}
+@DP
+ @HExpand {In the world of music}
+//1vx @HExpand {England is supposed to}
+//1vx @HExpand {be a mere province. If}
+//1vx @HExpand {she produces an indifferent composer or}
+}
+//
+@LittleEndRun
+// @LittlePage { @Code "@TextPlace" //1rt @Code "@FootSect" }
+//0.2c 8p @Font @Code "@PageList"
+} 180d @Rotate @Arrow 1i -2p @Font @I {to printer}
+
+}
+and so on. All these expansions and replacements are done with total
+integrity. For example, if Lout finds after expanding @Code "@FootSect"
+that the page is too full to accept even the first line of the footnote,
+@Code "@FootSect" is reset to unexpanded and the search for a target for
+the footnote moves on. And the cross reference direction, @Code
+preceding or @Code following, is always obeyed (although lack of space
+sometimes prevents Lout from choosing the nearest target). Only the
+root galley contains receptive symbols in our running example, but
+any galley may contain them.
+@End @Section
diff --git a/doc/doc/expert/pri_obje b/doc/doc/expert/pri_obje
new file mode 100644
index 0000000..fcb9177
--- /dev/null
+++ b/doc/doc/expert/pri_obje
@@ -0,0 +1,178 @@
+@Section
+ @Title { Objects }
+ @Tag { objects }
+@Begin
+@PP
+Since our aim is to produce neatly formatted documents, we should begin by
+looking at a typical example of such a document:
+@ID {
+nohyphen @Break @LittleDocument
+//
+@LittleText {
+@DP
+|0.5rt {@B PURCELL}{ 0.8f @Font 1 ^//0.2v}
+@LittleFootNote
+{ { 0.8f @Font 1 ^//0.2v}Blom, Eric. @I {Some Great Composers.} Oxford, 1944.
+}
+@DP
+In the world of music England is supposed to be a mere province. If she
+produces an indifferent composer or performer, that is regarded
+elsewhere as perfectly normal and natural; but if foreign students of
+musical history have to acknowledge a British musical genius, he is
+considered a freak.
+@PP
+Such a freak is Henry Purcell. Yet if we make a choice of fifteen of
+the world's musical classics, as here, we find that we cannot omit this
+English master.
+}
+//
+@LittleEndRun
+}
+It is a large rectangle made from three smaller rectangles -- its
+pages. Each page is made of lines; each line is made of words,
+although it makes sense for any rectangle (even a complete document) to
+be part of a line, provided it is not too large.
+@PP
+Lout deals with something a little more complicated than rectangles:
+@I objects. An object
+objec @Index { Object }
+is a rectangle with at least one @I {column mark}
+column.mark @Index { Column mark }
+mark.alignment @Index { Mark alignment }
+alignment @RawIndex { Alignment @I see mark alignment }
+protruding above and below it, and at least one @I {row mark}
+row.mark @Index { Row mark }
+protruding to the left and right. The simplest objects contain words like
+metempsychosis, and have one mark of each type:
+@ID {
+@ShowMarks metempsychosis
+}
+The rectangle exactly encloses the word; its column mark is at the left
+edge, and its row mark passes through the middle of the lower-case
+letters. The rectangle and marks do not appear on the printed page, but
+to understand what Lout is doing you have to imagine them.
+@PP
+To place two objects side by side, we separate them by the
+symbol @Code "|", which denotes the act of @I {horizontal
+concatenation}. So, if we write
+@ID {
+@Code "USA | Australia"
+}
+the result will be the object
+@ID {
+@ShowMarks USA | @ShowMarks Australia
+}
+Notice that this object has two column marks, but still only one row mark,
+because @Code "|" merges the two row marks
+together. This merging of row marks fixes the vertical
+position of each object with respect to the other, but it does not
+determine how far apart they are. This distance, or {@I gap},
+may be given just after the symbol, as in @Code "|0.5i" for example,
+which specifies horizontal concatenation with a gap of half an inch. If
+no gap is given, it is assumed to be {@Code "0i"}.
+@PP
+@I {Vertical concatenation} & , denoted by {@Code "/"},
+is the same apart from the change of direction:
+@ID {
+@Code "Australia /0.1i USA"
+}
+has result
+@ID {
+@ShowMarks Australia /0.1i
+@ShowMarks USA
+}
+The usual merging of marks occurs, and now the gap determines the
+vertical separation. Horizontal and vertical can be combined:
+@ID @Code {
+ |1m USA |1m "|0.2i" |1m Australia
+/1vx "/0.1i" | Washington | "|" | Canberra
+}
+has result
+@ID {
+ @BackEnd @Case {
+ PostScript @Yield {
+ @ShowMarks USA &
+ { 0 ymark moveto xsize 10 pt add ymark lineto [ 3 pt ] 0 setdash stroke }
+ @Graphic {1c @Wide }
+ |0.2i @ShowMarks Australia
+/0.1i @ShowMarks Washington | @ShowMarks Canberra
+ }
+ PDF @Yield {
+ @ShowMarks USA &
+ { [ __mul(3, __pt) ] 0 d 0 __ymark m __add(__xsize, __mul(10, __pt)) __ymark l S }
+ @Graphic {1c @Wide }
+ |0.2i @ShowMarks Australia
+/0.1i @ShowMarks Washington | @ShowMarks Canberra
+ }
+ }
+}
+tables @Index { Tables }
+There are several things to note carefully here. White space (including
+tabs and newlines) adjacent to a concatenation symbol is ignored, so
+it may be used to lay out the expression clearly. The symbol
+@Code "|" takes precedence over {@Code "/"}, which means that the rows
+are formed first, then vertically concatenated. The symbol @Code "/" will
+merge two or more column marks, creating multiple
+columns (and @Code "|" will merge two or more row marks). This
+implies that the gap @Code "0.2i" used above is between
+columns, not individual items in columns; a gap in the second row
+would therefore be redundant, and so is omitted.
+@PP
+A variant of @Code "/" called @Code "//" left-justifies
+two objects instead of merging their marks.
+@PP
+By enclosing an object in braces, it is possible to override the
+braces @Index { Braces }
+set precedences. Here is another expression for the table
+above, in which the columns are formed first:
+@ID @Code {
+ |1m "{ USA" |1m "/0.1i" |1m "Washington }"
+/1vx "|0.2i" | "{ Australia" | "/" | "Canberra }"
+}
+Braces have no effect other than to alter the grouping.
+@PP
+@I {Paragraph breaking} occurs when an object is too wide to fit
+paragraph.breaking @Index { Paragraph breaking }
+into the space available to it; by breaking its paragraphs into lines,
+its width is reduced to an acceptable amount. The available
+space is determined by the @@Wide symbol, whose form is
+@ID {
+@I length @@Wide @I object
+}
+and whose result is the given object modified to have exactly the given
+length. For example,
+@ID @OneRow @Code {
+"5i @Wide {"
+"Macbeth was very ambitious. This led him to wish to become king of"
+"Scotland. The witches told him that this wish of his would come true. The"
+"king of Scotland at this time was Duncan. Encouraged by his wife, Macbeth"
+"murdered Duncan. He was thus enabled to succeed Duncan as king. (51 words)"
+"|0.5i"
+"Encouraged by his wife, Macbeth achieved his ambition and realized the"
+"prediction of the witches by murdering Duncan and becoming king of Scotland"
+"in his place. (26 words)"
+"}"
+}
+has for its result the following five inch wide object
+@Cite { $strunk1979style }:
+@ID {
+5i @Wide {
+Macbeth was very ambitious. This led him to wish to become king of
+Scotland. The witches told him that this wish of his would come true. The
+king of Scotland at this time was Duncan. Encouraged by his wife, Macbeth
+murdered Duncan. He was thus enabled to succeed Duncan as king. (51 words)
+|0.5i
+Encouraged by his wife, Macbeth achieved his ambition and realized the
+prediction of the witches by murdering Duncan and becoming king of Scotland
+in his place. (26 words)
+}
+}
+A paragraph of text can be included anywhere, and it will be broken
+automatically if necessary to fit the available space. The spaces
+between words are converted into concatenation symbols.
+@PP
+These are the most significant of Lout's object-building symbols. There
+are others, for changing fonts, controlling paragraph breaking, printing
+graphical objects like boxes and circles, and so on, but
+they do not add anything new in principle.
+@End @Section
diff --git a/doc/doc/expert/tex b/doc/doc/expert/tex
new file mode 100644
index 0000000..5d4d357
--- /dev/null
+++ b/doc/doc/expert/tex
@@ -0,0 +1,383 @@
+@Appendix
+ @Title { Implementation of Textures }
+ @Tag { tex }
+@Begin
+The following notes detail how PostScript patterns have been
+used to produce textures. See the PostScript Language
+Reference Manual, second edition (PLRM), especially Section 4.9.
+@PP
+PostScript patterns are implemented as color spaces, whereas
+from a logical point of view they are really separate entities
+in the graphics state, independent of color (except that a
+colored texture overrides any current color while it is in
+effect). To ensure that Lout's @@SetTexture and @@SetColour
+symbols have this desired independence of each other, the
+following operators are defined in the Lout prologue:
+@CD @Tbl
+ mv { 0.5vx }
+ bfont { Italic }
+ bformat { @StartHSpan @Cell i { ctr } A | @HSpan | @HSpan | @Cell D }
+ aformat { @Cell i { right } @Code A | @Cell @Code B |
+ @Cell mr { 1c } @Code "-" | @Cell D }
+{
+@Rowb
+ ma { 0i }
+ A { Lout-defined operator }
+ D { What it replaces }
+ rb { yes }
+@Rowa
+ A { num }
+ B { LoutSetGray }
+ D { setgray }
+@Rowa
+ A { num num num }
+ B { LoutSetRGBColor }
+ D { setrgbcolor }
+@Rowa
+ A { num num num }
+ B { LoutSetHSBColor }
+ D { sethsbcolor }
+@Rowa
+ A { num num num num }
+ B { LoutSetCMYKColor }
+ D { setcmykcolor }
+@Rowa
+ A { p }
+ B { LoutSetTexture }
+ D { setpattern }
+ rb { yes }
+ mb { 0i }
+}
+These have similar signatures to the corresponding PostScript
+operators shown, and the idea is to use the Lout-defined
+versions where you would normally use the PostScript ones.
+The first four set the color without disturbing any current
+texture; the last sets the texture without disturbing
+any current color. Here @Code { p } may be the PostScript
+{@Code null} object, meaning no texture i.e. normal filling,
+or else it must be an instantiated pattern dictionary, as
+returned by @Code { makepattern }.
+@PP
+There are three key data types used by this code:
+@BulletList
+
+@LI { A colorspace, denoted @Code { cs }, is a PostScript
+colorspace array and may have one of the following values:
+@DP @RID @Tbl
+ mv { 0.6vx }
+ aformat { @Cell @Code A | @Cell B }
+{
+@Rowa
+ ma { 0i }
+ A { "[ /DeviceGray ]" }
+ B { The greyscale colorspace }
+@Rowa
+ A { "[ /DeviceRGB ]" }
+ B { The RGB colorspace }
+@Rowa
+ A { "[ /DeviceCMYK ]" }
+ B { The CMYK colorspace }
+@Rowa
+ A { "[ /Pattern ]" }
+ B { A colored pattern }
+@Rowa
+ mb { 0i }
+ A { "[ /Pattern /name ]" }
+ B { An uncolored pattern; @Code "/name" may be
+{@Code "/DeviceGray"}, {@Code "/DeviceRGB"}, or
+{@Code "/DeviceCMYK"} }
+}
+}
+
+@LI { A color, denoted c, is an array containing a PostScript
+non-pattern color and thus may have one of the following values:
+@ID @Tbl
+ mv { 0.6vx }
+ aformat { @Cell @Code A | @Cell B }
+{
+@Rowa
+ ma { 0i }
+ A { "[ grey ]" }
+ B { A @Code "/DeviceGray" color }
+@Rowa
+ A { "[ red green blue ]" }
+ B { A @Code "/DeviceRGB" color }
+@Rowa
+ A { "[ c m y k ]" }
+ B { A @Code "/DeviceCMYK" color }
+ mb { 0i }
+}
+We enclose colors in an array to make it easy for us to
+deal with their varying length. The array has to be unpacked
+with @Code "aload" before calling {@Code setcolor}.
+}
+
+@LI { A pattern, denoted {@Code "p"}. For us, a pattern is
+either the PostScript null object, meaning to fill with solid
+color, or else it is a dictionary as returned by
+{@Code makepattern}. When such a dictionary is installed in
+the current graphics state, this code guarantees that it will
+contain two extra entries:
+@ID @Tbl
+ mv { 0.6vx }
+ aformat { @Cell @Code A | @Cell B }
+{
+@Rowa
+ ma { 0i }
+ A { "/UnderlyingColorSpace" }
+ B { A @Code cs as defined above }
+@Rowa
+ A { "/UnderlyingColor" }
+ B { A @Code c as defined above }
+ mb { 0i }
+}
+We need these extra entries to make color independent of
+texture: without them we would lose the current color when
+we set a texture. Because of these variables we can't share
+pattern dictionaries among graphics states. We must copy them.
+}
+
+@EndList
+This representation obeys the following invariant:
+@BulletList
+
+@LI {
+All components of the PostScript graphics state related to
+pattern and color have defined values (e.g. there is never a
+situation where we set color space but not color).
+}
+
+@LI {
+If the PostScript graphics state contains a @Code "/Pattern"
+colorspace, the pattern dictionary stored in the state has
+@Code "/UnderlyingColorSpace" and @Code "/UnderlyingColor"
+entries of types @Code cs and {@Code c}.
+}
+
+@LI {
+If the graphics state contains an uncolored @Code "/Pattern"
+colorspace, then the @Code "/UnderlyingColorSpace" and
+@Code "/UnderlyingColor" entries of the pattern dictionary
+stored in the state agree with the underlying color space
+and color stored in the graphics state.
+}
+
+@EndList
+And it has the following abstraction function:
+@BulletList
+
+@LI {
+If the graphics state colorspace is {@Code "/Pattern"}, then
+the abstract current texture is the pattern dictionary stored
+in the graphics state color. If the graphics state colorspace
+is not {@Code "/Pattern"}, then the abstract current texture
+is {@Code null}.
+}
+
+@LI {
+If the graphics state colorspace is {@Code "/Pattern"}, then the
+abstract colorspace and color are the values of
+@Code "/UnderlyingColorSpace" and @Code "/UnderlyingColor"
+in the pattern dictionary stored in the graphics state color.
+If the graphics state colorspace is not {@Code "/Pattern"},
+then the abstract current colorspace and color are as returned
+by @Code "currentcolorspace" and {@Code "[ currentcolor ]"}.
+}
+
+@EndList
+The following functions are private helpers for the public functions:
+@IndentedList
+
+@LI @OneRow -2px @Break @F @Verbatim @Begin
+% Current pattern (may be null): - LoutCurrentP p
+/LoutCurrentP
+{ %% -
+ currentcolorspace %% [ /name etc ]
+ 0 get /Pattern eq %% bool
+ { %% - (have pattern)
+ [ currentcolor ] %% [ comp0 ... compn p ]
+ dup length 1 sub get %% p
+ }
+ { %% - (no pattern)
+ null %% null
+ } ifelse %% p
+} def
+@End @Verbatim
+
+@LI @OneRow -2px @Break @F @Verbatim @Begin
+% Current color and color space: - LoutCurrentCCS c cs
+/LoutCurrentCCS
+{
+ LoutCurrentP dup null eq %% p bool
+ { %% null
+ pop [ currentcolor ] %% c
+ currentcolorspace %% c cs
+ }
+ { %% p
+ dup %% p p
+ /UnderlyingColor get exch %% c p
+ /UnderlyingColorSpace get %% c cs
+ } ifelse %% c cs
+} def
+@End @Verbatim
+
+@LI @OneRow -2px @Break @F @Verbatim @Begin
+% Make c, cs, and p current: c cs p LoutSetCCSP -
+/LoutSetCCSP
+{ %% c cs p
+ dup null eq %% c cs p bool
+ { %% c cs p (null pattern)
+ pop setcolorspace %% c
+ aload pop setcolor %% -
+ }
+ { %% c cs p (non-null pattern)
+ % copy pattern dictionary
+ 12 dict copy %% c cs p
+
+ % record cs and c in p
+ dup /UnderlyingColorSpace %% c cs p p /UCS
+ 3 index put %% c cs p
+ dup /UnderlyingColor %% c cs p p /UC
+ 4 index put %% c cs p
+
+ % do setcolorspace and setcolor
+ dup /PaintType get 1 eq %% c cs p bool
+ { %% c cs p (colored pattern)
+ [/Pattern] setcolorspace %% c cs p
+ setcolor %% c cs
+ pop pop %% -
+ }
+ { %% c cs p (uncolored pattern)
+ [ /Pattern %% c cs p [ /Pattern
+ 4 -1 roll %% c p [ /Pattern cs
+ ] setcolorspace %% c p
+ exch aload length 1 add %% p comp1 ... compm m+1
+ -1 roll %% comp1 ... compm p
+ setcolor %% -
+ } ifelse %% -
+ } ifelse %% -
+} def
+@End @Verbatim
+
+@EndList
+With the helper functions it's now easy to derive the colour and
+texture setting commands that we are offering to our end users.
+When setting the color we pass it, plus the current pattern, to
+{@Code "LoutSetCCSP"}; when setting the pattern we pass it, plus
+the current color, to {@Code "LoutSetCCSP"}. Note that there is
+no {@Code "/DeviceHSB"}: @Code "hsb" is a variant of {@Code "rgb"}.
+@IndentedList
+
+@LI @OneRow -2px @Break @F @Verbatim @Begin
+% num LoutSetGray -
+/LoutSetGray
+{
+ [ 2 1 roll ] %% c
+ [ /DeviceGray ] %% c cs
+ LoutCurrentP %% c cs p
+ LoutSetCCSP %% -
+} def
+@End @Verbatim
+
+@LI @OneRow -2px @Break @F @Verbatim @Begin
+% r g b LoutSetRGBColor -
+/LoutSetRGBColor
+{ %% r g b
+ [ 4 1 roll ] %% c
+ [ /DeviceRGB ] %% c cs
+ LoutCurrentP %% c cs p
+ LoutSetCCSP %% -
+} def
+@End @Verbatim
+
+@LI @OneRow -2px @Break @F @Verbatim @Begin
+% h s b LoutSetHSBColor -
+/LoutSetHSBColor
+{ %% h s b
+ gsave sethsbcolor %% -
+ currentrgbcolor grestore %% r g b
+ LoutSetRGBColor %% -
+} def
+@End @Verbatim
+
+@LI @OneRow -2px @Break @F @Verbatim @Begin
+% c m y k LoutSetRGBColor -
+/LoutSetCMYKColor
+{
+ [ 5 1 roll ] %% c
+ [ /DeviceCMYK ] %% c cs
+ LoutCurrentP %% c cs p
+ LoutSetCCSP %% -
+} def
+@End @Verbatim
+
+@LI @OneRow -2px @Break @F @Verbatim @Begin
+% p LoutSetTexture -
+/LoutSetTexture
+{
+ LoutCurrentCCS %% p c cs
+ 3 -1 roll %% c cs p
+ LoutSetCCSP %% -
+} def
+@End @Verbatim
+
+@EndList
+All we need now is some sample textures. Textures are just pattern
+dictionaries as returned by {@Code "makepattern"}. Here is
+a PostScript function that appears in the Lout prologue. Its
+function is to simplify the production of textures. It first
+takes six parameters to specify a transformation of the texture
+used to build the matrix taken by {@Code makepattern}, then
+five parameters that go into the pattern dictionary.
+@IndentedList
+
+@LI @OneRow -2px @Break @F @Verbatim @Begin
+% <scale> <scalex> <scaley> <rotate> <hshift> <vshift>
+% <pt> <bb> <xs> <ys> <pc> LoutMakeTexture p
+/LoutMakeTexture
+{ %% s sx sy r h v pt bb xs ys pp
+ 12 dict begin %% s sx sy r h v pt bb xs ys pp
+ /PaintProc exch def %% s sx sy r h v pt bb xs ys
+ /YStep exch def %% s sx sy r h v pt bb xs
+ /XStep exch def %% s sx sy r h v pt bb
+ /BBox exch def %% s sx sy r h v pt
+ /PaintType exch def %% s sx sy r h v
+ /PatternType 1 def %% s sx sy r h v
+ /TilingType 1 def %% s sx sy r h v
+ currentdict end %% s sx sy r h v p
+ 7 1 roll %% p s sx sy r h v
+ matrix translate %% p s sx sy r mat1
+ 5 1 roll %% p mat1 s sx sy r
+ matrix rotate %% p mat1 s sx sy mat2
+ 4 1 roll %% p mat1 mat2 s sx sy
+ matrix scale %% p mat1 mat2 s mat3
+ exch dup matrix scale %% p mat1 mat2 mat3 mat4
+ matrix concatmatrix %% p mat1 mat2 mat34
+ matrix concatmatrix %% p mat1 mat234
+ matrix concatmatrix %% p mat1234
+ /makepattern where
+ { %% p mat123 dict
+ pop makepattern %% p
+ }
+ { %% p mat123
+ pop pop null %% null
+ } ifelse %% p (may be null)
+} def
+@End @Verbatim
+
+@EndList
+For examples of textures using {@Code LoutMakeTexture}, consult
+the standard include file {@Code coltex}. There is only one
+built-in texture, {@Code LoutTextureSolid}:
+@IndentedList
+
+@LI @OneRow -2px @Break @F @Verbatim @Begin
+/LoutTextureSolid
+{
+ null
+ LoutSetTexture
+} def
+@End @Verbatim
+
+@RawEndList
+@End @Appendix
diff --git a/doc/doc/slides/README b/doc/doc/slides/README
new file mode 100644
index 0000000..f0b409f
--- /dev/null
+++ b/doc/doc/slides/README
@@ -0,0 +1,18 @@
+Directory lout/doc/slides
+
+This directory contains the Lout source of
+a set of overhead transparencies entitled
+`A Practical Introduction to the Lout
+Document Formatting System.' To format
+the transparencies, type
+
+ lout -r2 all > outfile.ps
+
+in this directory. The -r2 flag causes Lout
+to run twice over the document, which is needed
+to resolve all cross references. There should
+be no error messages at all after the second run.
+A copy of the final outfile.ps is included.
+
+Jeff Kingston
+26 June 2013
diff --git a/doc/doc/slides/all b/doc/doc/slides/all
new file mode 100644
index 0000000..6e5f02e
--- /dev/null
+++ b/doc/doc/slides/all
@@ -0,0 +1,680 @@
+@SysInclude { eq }
+@SysInclude { tab }
+@SysInclude { fig }
+@SysInclude { pas }
+@SysInclude { graph }
+@SysInclude { cprint }
+@SysInclude { slides }
+@SysDatabase @Reference { loutrefs }
+@OverheadTransparencies
+ @Title { A Practical Introduction to the
+
+Lout
+
+Document Formatting System
+}
+ @RunningTitle { lout }
+ @Author { Jeffrey H. Kingston }
+ @Institution {
+Basser Dept. of Computer Science
+The University of Sydney
+}
+ @InitialLanguage { English }
+//
+
+@Overhead
+ @Title { A simple input file }
+@Begin
+@ID @Code {
+"@SysInclude { doc }"
+"@Doc @Text @Begin"
+"Hello, world"
+"@End @Text"
+}
+@LP
+@LP
+@Heading { How to format it }
+@ID @Code {
+"lout filename > out.ps"
+"ghostview out.ps"
+"mpr out.ps"
+}
+@End @Overhead
+
+@Overhead @Begin
+@ShowPage {
+Hello, world
+}
+@End @Overhead
+
+@Overhead
+ @Title { Headings and paragraphs }
+@Begin
+@ID @Code {
+"@SysInclude { doc }"
+"@Doc @Text @Begin"
+"@Heading { Introduction }"
+"@PP"
+"The design of the Lout formatting"
+"system was undertaken with the"
+"needs of the @I { ordinary user }"
+"very much in mind."
+"@End @Text"
+}
+@End @Overhead
+
+@Overhead @Begin
+@ShowPage {
+@Heading { Introduction }
+@PP
+The design of the Lout formatting
+system was undertaken with the
+needs of the @I { ordinary user }
+very much in mind.
+}
+@End @Overhead
+
+@Overhead
+ @Title { Displays }
+@Begin
+@ID @Code {
+"You certainly don't want to return to"
+"his office and report:"
+"@IndentedDisplay @I {"
+"`I can't find an efficient algorithm, I"
+"guess I'm just too dumb.'"
+"}"
+"To avoid serious damage to your"
+"position in the company, it would"
+"be better if ..."
+}
+@End @Overhead
+
+@Overhead @Begin
+@ShowPage {
+You certainly don't want to return to
+his office and report:
+@IndentedDisplay @I {
+`I can't find an efficient algorithm, I
+guess I'm just too dumb.'
+}
+To avoid serious damage to your
+position in the company, it would
+be better if ...
+}
+@End @Overhead
+
+@Overhead
+ @Title { Paragraph breaking styles }
+@Begin
+@ID @Code {
+"You certainly don't want to return to"
+"his office and report:"
+"@ID { ragged nohyphen } @Break @I {"
+"`I can't find an efficient algorithm, I"
+"guess I'm just too dumb.'"
+"}"
+"To avoid serious damage to your"
+"position in the company, it would"
+"be better if ..."
+}
+@End @Overhead
+
+@Overhead @Begin
+@ShowPage {
+You certainly don't want to return to
+his office and report:
+@ID { ragged nohyphen } @Break @I {
+`I can't find an efficient algorithm, I
+guess I'm just too dumb.'
+}
+To avoid serious damage to your
+position in the company, it would
+be better if ...
+}
+@End @Overhead
+
+@Overhead
+ @Title { Lists }
+@Begin
+@ID @Code {
+"@Heading { Operating Instructions }"
+"@NumberedList"
+"@ListItem { Press small green lever. }"
+"@ListItem { Wait approximately 10 seconds"
+"until red light flashes. }"
+"@ListItem { If smoke emerges from rear of unit,"
+"call Service Department. }"
+"@EndList"
+}
+@End @Overhead
+
+@Overhead @Begin
+@ShowPage {
+@Heading { Operating Instructions }
+@NumberedList
+@ListItem { Press small green lever. }
+@ListItem { Wait approximately 10 seconds
+until red light flashes. }
+@ListItem { If smoke emerges from rear of unit,
+call Service Department. }
+@EndList
+}
+@End @Overhead
+
+@Overhead
+ @Title { Technical reports }
+@Begin
+@ID @Code {
+"@SysInclude { report }"
+"@Report"
+" @Title { ... }"
+" @Author { ... }"
+" @Institution { ... }"
+" @DateLine { ... }"
+"//"
+"@Abstract { ... }"
+"@Section { ... }"
+"@Section { ... }"
+"@Section { ... }"
+"@Appendix { ... }"
+"@Appendix { ... }"
+}
+@End @Overhead
+
+@Overhead
+ @Title { Sections }
+@Begin
+@ID @Code {
+"@Section"
+" @Tag { dfs }"
+" @Title { Depth-first search }"
+"@Begin"
+"@PP"
+"We turn now to our first algorithm"
+"on general graphs ..."
+"@End @Section"
+}
+@End @Overhead
+
+@Overhead @Begin
+@ShowPage {
+@Heading { 10.6. Depth-first search }
+@PP
+We turn now to our first algorithm
+on general graphs ...
+}
+@End @Overhead
+
+@Overhead
+ @Title { Cross references }
+@Begin
+@ID @Code {
+"For further information, consult"
+"Section @NumberOf dfs on page"
+"@PageOf { dfs }."
+}
+@End @Overhead
+
+@Overhead @Begin
+@ShowPage {
+For further information, consult
+Section 10.6 on page 245.
+}
+@End @Overhead
+
+@Overhead
+ @Title { References }
+@Begin
+@ID @Code {
+"@Database @Reference { myrefs }"
+"..."
+"For the details, consult the User's"
+"Guide @Cite { $kingston1995lout.user }."
+}
+@End @Overhead
+
+@Overhead @Begin
+@ShowPage {
+For the details, consult the User's
+Guide [1].
+@LP
+...
+@LP
+@Heading { References }
+@NumberedList
+@LI @RefPrint kingston1995lout.user
+@LI ...
+@EndList
+}
+@End @Overhead
+
+@Overhead
+ @Title { Database file myrefs.ld }
+@Begin
+@ID @Code {
+"{ @Reference"
+" @Tag { kingston1995lout.user }"
+" @Type { Book }"
+" @Author { Jeffrey H. Kingston }"
+" @Title { A User's Guide to the Lout"
+"Document Formatting System (Version 3) }"
+" @Institution { Basser Department of"
+"Computer Science }"
+" @Address { University of Sydney"
+"2006, Australia }"
+" @Year { 1994 }"
+"}"
+}
+@End @Overhead
+
+@Overhead
+ @Title { Books (and theses) }
+@Begin
+@BulletList
+@LI { Title page, preface, introduction }
+@LI { Automatic table of contents }
+@LI { Prefatory pages numbered in Roman numerals }
+@LI { Chapters, sections, subsections, appendices }
+@LI { References at end of chapters or book }
+@LI { Running page headers }
+@LI { Odd-even page formats }
+@LI { Sorted index }
+@EndList
+@End @Overhead
+
+@Overhead
+ @Title { Making a sorted index }
+@Begin
+@ID @Code {
+"@PP"
+"There are several possible ways to implement the"
+"@I Partition procedure,"
+"partition @Index { @I Partition (in {@I Quicksort}) }"
+"but the following seems to be the best. Starting ..."
+}
+@End @Overhead
+
+@Overhead @Begin
+@ShowPage {
+@Heading { Index }
+@LD lines @Break {
+...
+partial order, 227
+@I Partition (in {@I Quicksort}), 189
+postorder traversal
+ of binary tree, 19
+ topological ordering, 229
+...
+}
+}
+@End @Overhead
+
+@Overhead
+ @Title { Equation formatting }
+@Begin
+@ID @Code {
+"@SysInclude { eq }"
+"..."
+"Since @Eq { T(n-i) = T(0) = 0 } we have"
+"@IndentedDisplay @Eq {"
+"T(n) = big sum from i=0 to n-1 2 sup i = 2 sup n - 1"
+"}"
+"for the number of disk moves made by the Towers"
+"of Hanoi algorithm, given @Eq { n } disks."
+}
+@End @Overhead
+
+@Overhead @Begin
+@ShowPage {
+Since @Eq { T(n-i) = T(0) = 0 } we have
+@IndentedDisplay @Eq {
+T(n) = big sum from i=0 to n-1 2 sup i = 2 sup n - 1
+}
+for the number of disk moves made by the Towers of Hanoi
+algorithm, given @Eq { n } disks.
+}
+@End @Overhead
+
+@Overhead
+ @Title { Another equation }
+@Begin
+@ID @Code {
+"@CenteredDisplay @Eq {"
+"big int supp 1 on 0 `"
+"dx over sqrt { 1 - x sup 2 }"
+"= pi over 2"
+"}"
+}
+@End @Overhead
+
+@Overhead @Begin
+@ShowPage {
+@CenteredDisplay @Eq {
+big int supp 1 on 0 `
+dx over sqrt { 1 - x sup 2 }
+= pi over 2
+}
+}
+@End @Overhead
+
+@Overhead
+ @Title { Tables }
+@Begin
+@ID @Code {
+"@SysInclude { tab }"
+"..."
+"@Tab"
+" @Fmta { @Col @I A ! @Col B }"
+"{"
+"@Rowa"
+" A { Fortran }"
+" B { The first ... language }"
+"@Rowa"
+" A { Algol-60 }"
+" B { Said to be ... successors }"
+"@Rowa"
+" A { Pascal }"
+" B { The famous ... successors }"
+"}"
+}
+@End @Overhead
+
+@Overhead @Begin
+@ShowPage {
+@Tab
+ vmargin { 0.4v }
+ @Fmta { @Col @I A ! @Col B }
+{
+@Rowa
+ A { Fortran }
+ B { The first high-level
+programming language }
+@Rowa
+ A { Algol-60 }
+ B { Said to be a better
+language than most of its successors }
+@Rowa
+ A { Pascal }
+ B { The most famous of
+Algol-60's successors }
+}
+}
+@End @Overhead
+
+@Overhead
+ @Title { Another table }
+@Begin
+@RID @Code {
+"@Tab"
+" hmargin { 0.4c }"
+" vmargin { 0.3v }"
+" side { single }"
+" @Fmta { @Col @B @CC X @Over A,B,C }"
+" @Fmtb { @Col @I A ! @Col B !! @Col C }"
+"{"
+""
+"@Rowa above { single }"
+" X { Value of mathematical ... dollars) }"
+""
+"@Rowb above { double }"
+" A { Quadratic formula }"
+" B { @Eq { x ^= { ... } over 2a } }"
+" C { 3^.5 }"
+""
+"@Rowb below { single }"
+" A { Binomial theorem }"
+" B { @Eq { ( a + b ) sup n ^= ... b sup n-k } }"
+" C { 12^ }"
+"}"
+}
+@End @Overhead
+
+@Overhead @Begin
+@ShowPage {
+0.6 @Scale @Tab
+ hmargin { 0.4c }
+ vmargin { 0.3v }
+ side { single }
+ @Fmta { @Col @B @CC X @Over A,B,C }
+ @Fmtb { @Col @I A ! @Col B !! @Col C }
+{
+@Rowa
+ above { single }
+ X { Value of mathematical formulae (millions of dollars) }
+@Rowb
+ above { double }
+ A { Quadratic formula }
+ B { @Eq { x ^= { minus b +- sqrt { b sup 2 - 4ac } } over 2a } }
+ C { 3^.5 }
+@Rowb
+ below { single }
+ A { Binomial theorem }
+ B { @Eq { ( a + b ) sup n ^= big sum from k=0 to infty
+matrix atleft { ( } atright { ) } { n above k } a sup k b sup n-k
+} }
+ C { 12^ }
+}
+}
+@End @Overhead
+
+@Overhead
+ @Title { Pascal programs }
+@Begin
+@ID @Code {
+"@SysInclude { pas }"
+"..."
+"@ID @Pas {"
+"procedure DoPriAbstract(root: PriEntry);"
+"begin"
+" if root^.leftchild <> nil then begin"
+" DoPriAbstract(root^.leftchild);"
+" write(', ');"
+" end;"
+" PriKeyAbstract(root^.key);"
+" write(':');"
+" PriValueAbstract(root^.value);"
+" if root^.rightchild <> nil then begin"
+" write(', ');"
+" DoPriAbstract(root^.rightchild);"
+" end;"
+"end;"
+"}"
+}
+@End @Overhead
+
+@Overhead @Begin
+@ShowPage {
+@Pas {
+procedure DoPriAbstract(root: PriEntry);
+begin
+ if root^.leftchild <> nil then begin
+ DoPriAbstract(root^.leftchild);
+ write(', ');
+ end;
+ PriKeyAbstract(root^.key);
+ write(':');
+ PriValueAbstract(root^.value);
+ if root^.rightchild <> nil then begin
+ write(', ');
+ DoPriAbstract(root^.rightchild);
+ end;
+end;
+} |0io
+}
+@End @Overhead
+
+@Overhead
+ @Title { Basic graphics }
+@Begin
+@ID @Code {
+"45d @Rotate 1.5 @Scale @Box {"
+" Hello, world"
+"}"
+}
+@End @Overhead
+
+@Overhead @Begin
+@ShowPage {
+@ID @Code {
+45d @Rotate 1.5 @Scale @Box {
+ Hello, world
+}
+}
+}
+@End @Overhead
+
+@Overhead
+ @Title { Advanced graphics }
+@Begin
+@ID @Code {
+"@SysInclude { fig }"
+"..."
+"@Fig {"
+"@Box"
+" margin { 0c }"
+" paint { black }"
+"@Ellipse"
+" linestyle { noline }"
+" paint { white }"
+"{ Hello, world }"
+"}"
+}
+@End @Overhead
+
+@Overhead @Begin
+@ShowPage {
+@Fig {
+@Box
+ margin { 0c }
+ paint { black }
+@Ellipse
+ linestyle { noline }
+ paint { white }
+{ Hello, world }
+}
+}
+@End @Overhead
+
+@Overhead
+ @Title { Point labelling }
+@Begin
+@ID @Code {
+"@Fig {"
+"A::"
+"{"
+" 1:: @Ellipse { 3c @Wide 2c @High }"
+" //3c"
+" 2:: @Box { 3c @Wide 2c @High }"
+"}"
+"@ShowLabels"
+"}"
+}
+@End @Overhead
+
+@Overhead @Begin
+@ShowPage {
+@Fig {
+A::
+{
+ 1:: @Ellipse { 3c @Wide 2c @High }
+ //3c
+ 2:: @Box { 3c @Wide 2c @High }
+}
+@ShowLabels
+}
+}
+@End @Overhead
+
+@Overhead
+ @Title { Graphs }
+@Begin
+@LP
+@ID -1p @Font @Code {
+"@Graph"
+" abovecaption { New South Wales road deaths"
+"(per 100 million vehicle km) }"
+"{"
+" @Data points { plus } pairs { dashed }"
+" { 1963 5.6 1971 4.3 1976 3.7 1979 3.4"
+" 1982 2.9 1985 2.3 1988 2.0 }"
+"}"
+}
+@End @Overhead
+
+@Overhead @Begin
+@ShowPage @Graph
+ width { 9 cm }
+ height { 6 cm }
+ abovecaption { New South Wales road deaths
+(per 100 million vehicle km) }
+{
+ @Data
+ points { plus }
+ pairs { dashed }
+ {
+ 1963 5.6 1971 4.3 1976 3.7 1979 3.4 1982 2.9 1985 2.3 1988 2.0
+ }
+}
+@End @Overhead
+
+@Overhead @Begin
+@RID @Code {
+"-2p @Font @Graph"
+" style { axes }"
+" xorigin { 0 } yorigin { 0 }"
+" xticks { 10@ 50@ 100@ 200@ 500@ }"
+" objects { @NE at { 300 2 } @I { Exponential }"
+" @SE at { ... } @I { Uniform } }"
+" belowcaption { @I n }"
+"{"
+" @Data points { filledcircle } { ... }"
+" @Data points { filledcircle } { ... }"
+""
+" @Data pairs { dashed }"
+" { 10 2 500 2 }"
+""
+" @Data pairs { dashed }"
+" {"
+" xloop from { 10 } to { 500 } by { 20 } do"
+" {"
+" x sqrt { pi*x / 4 } + 1"
+" }"
+" }"
+"}"
+}
+@End @Overhead
+
+@Overhead @Begin
+@ShowPage -2p @Font @Graph
+ style { axes }
+ xorigin { 0 }
+ yorigin { 0 }
+ width { 10 cm }
+ height { 7 cm }
+ xticks { 10@ 50@ 100@ 200@ 500@ }
+ objects {
+ @NE at { 300 2 } @I { Exponential }
+ @SE at { 300 sqrt { pi*300/4 } + 1 } @I { Uniform }
+ }
+ belowcaption { @I n }
+ belowgap { 0 cm }
+{
+ @Data points { filledcircle }
+ { 10 1.97 50 2.01 100 2.00 200 2.0 500 2.00 }
+
+ @Data points { filledcircle }
+ { 10 3.53 50 7.45 100 9.32 200 13.41 500 21.63 }
+
+ @Data pairs { dashed }
+ { 10 2 500 2 }
+
+ @Data pairs { dashed }
+ {
+ xloop from { 10 } to { 500 } by { 20 } do
+ {
+ x sqrt { pi*x / 4 } + 1
+ }
+ }
+}
+@End @Overhead
diff --git a/doc/doc/slides/mydefs b/doc/doc/slides/mydefs
new file mode 100644
index 0000000..69417f5
--- /dev/null
+++ b/doc/doc/slides/mydefs
@@ -0,0 +1,8 @@
+
+def @Code right x { { Helvetica Base -2p } @Font lines @Break x }
+
+import @BasicSetup
+def @ShowPage right x
+{
+ @Box margin { 1i } 4i @Wide 5i @High { x // }
+}
diff --git a/doc/doc/slides/outfile.ps b/doc/doc/slides/outfile.ps
new file mode 100644
index 0000000..a33f831
--- /dev/null
+++ b/doc/doc/slides/outfile.ps
@@ -0,0 +1,6106 @@
+%!PS-Adobe-3.0
+%%Creator: Basser Lout Version 3.40 (June 2013)
+%%CreationDate: Wed Jun 26 09:46:10 2013
+%%DocumentData: Binary
+%%DocumentNeededResources: (atend)
+%%DocumentSuppliedResources: (atend)
+%%DocumentMedia: A4 595 842 0 white ()
+%%PageOrder: Ascend
+%%LanguageLevel: 2
+%%Pages: (atend)
+%%BoundingBox: 0 0 595 842
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset LoutStartUp
+/cp_x 0 def
+/cp_y 0 def
+/louts 0 def
+/loutv 0 def
+/loutf 0 def
+/ymark 0 def
+/xmark 0 def
+/ysize 0 def
+/xsize 0 def
+/save_cp { currentpoint /cp_y exch def /cp_x exch def } bind def
+/restore_cp { cp_x cp_y moveto } bind def
+/outline { gsave 1 1 1 setrgbcolor dup show save_cp
+ grestore true charpath stroke restore_cp } bind def
+/m { 3 1 roll moveto show } bind def
+/mo { 3 1 roll moveto outline } bind def
+/s { exch currentpoint exch pop moveto show } bind def
+/so { exch currentpoint exch pop moveto outline } bind def
+/k { exch neg 0 rmoveto show } bind def
+/ko { exch neg 0 rmoveto outline } bind def
+/r { exch 0 rmoveto show } bind def
+/ro { exch 0 rmoveto outline } bind def
+/c { gsave 3 1 roll rmoveto show grestore } bind def
+/co { gsave 3 1 roll rmoveto outline grestore } bind def
+/ul { gsave setlinewidth dup 3 1 roll
+ moveto lineto stroke grestore } bind def
+/in { 1440 mul } bind def
+/cm { 567 mul } bind def
+/pt { 20 mul } bind def
+/em { 120 mul } bind def
+/sp { louts mul } def
+/vs { loutv mul } def
+/ft { loutf mul } def
+/dg { } def
+
+/LoutGraphic {
+ /louts exch def
+ /loutv exch def
+ /loutf exch def
+ /ymark exch def
+ /xmark exch def
+ /ysize exch def
+ /xsize exch def
+} def
+
+/LoutGr2 { gsave translate LoutGraphic gsave } def
+
+/LoutFont
+{ findfont exch scalefont setfont
+} bind def
+
+/LoutRecode {
+ { findfont dup length dict begin
+ {1 index /FID ne {def} {pop pop} ifelse} forall
+ /Encoding exch def
+ currentdict end definefont pop
+ }
+ stopped pop
+} bind def
+
+/PreEPSF_state 0 def
+/dict_stack 0 def
+/ops_count 0 def
+/LoutStartEPSF { % prepare for EPSF inclusion
+ /PreEPSF_state save def
+ /dict_stack countdictstack def
+ /ops_count count 1 sub def
+ 20 dict begin
+ /showpage {} def
+ 0 setgray 0 setlinecap
+ 1 setlinewidth 0 setlinejoin
+ 10 setmiterlimit [] 0 setdash newpath
+ /languagelevel where
+ { pop languagelevel
+ 1 ne
+ { false setstrokeadjust false setoverprint
+ } if
+ } if
+} bind def
+
+/LoutEPSFCleanUp { % clean up after EPSF inclusion
+ count ops_count sub { pop } repeat
+ countdictstack dict_stack sub { end } repeat
+ PreEPSF_state restore
+} bind def
+
+% Find current texture (may be null)
+% - LoutCurrentP p
+/LoutCurrentP
+{
+ currentcolorspace
+ 0 get /Pattern eq
+ {
+ [ currentcolor ]
+ dup length 1 sub get
+ }
+ {
+ null
+ } ifelse
+} def
+
+% Find current color and color space
+% - LoutCurrentCCS c cs
+/LoutCurrentCCS
+{
+ LoutCurrentP dup null eq
+ {
+ pop [ currentcolor ]
+ currentcolorspace
+ }
+ {
+ dup
+ /UnderlyingColor get
+ exch /UnderlyingColorSpace get
+ } ifelse
+} def
+
+% Install c, cs, and (a copy of) p into graphics state
+% c cs p LoutSetCCSP -
+/LoutSetCCSP
+{
+ dup null eq
+ {
+ pop setcolorspace
+ aload pop setcolor
+ }
+ {
+ % copy pattern dictionary
+ 12 dict copy
+
+ % record cs and c in p
+ dup /UnderlyingColorSpace 3 index
+ put
+ dup /UnderlyingColor 4 index
+ put
+
+ % do setcolorspace and setcolor
+ dup /PaintType get 1 eq
+ {
+ [ /Pattern ] setcolorspace
+ setcolor
+ pop pop
+ }
+ {
+ [ /Pattern
+ 4 -1 roll
+ ] setcolorspace
+ exch aload length 1 add
+ -1 roll
+ setcolor
+ } ifelse
+ } ifelse
+} bind def
+
+% num LoutSetGray -
+/LoutSetGray
+{
+ [ 2 1 roll ]
+ [ /DeviceGray ]
+ LoutCurrentP
+ LoutSetCCSP
+} bind def
+
+% r g b LoutSetRGBColor -
+/LoutSetRGBColor
+{
+ [ 4 1 roll ]
+ [ /DeviceRGB ]
+ LoutCurrentP
+ LoutSetCCSP
+} bind def
+
+% h s b LoutSetHSBColor -
+/LoutSetHSBColor
+{
+ gsave sethsbcolor
+ currentrgbcolor grestore
+ LoutSetRGBColor
+} bind def
+
+% c m y k LoutSetRGBColor -
+/LoutSetCMYKColor
+{
+ [ 5 1 roll ]
+ [ /DeviceCMYK ]
+ LoutCurrentP
+ LoutSetCCSP
+} bind def
+
+% p LoutSetTexture -
+/LoutSetTexture
+{
+ LoutCurrentCCS
+ 3 -1 roll
+ LoutSetCCSP
+} bind def
+
+% <scale > <scalex> <scaley> <rotate> <hshift> <vshift>
+% <painttype> <bbox> <xstep> <ystep> <paintproc> LoutMakeTexture p
+/LoutMakeTexture
+{
+ 12 dict begin
+ /PaintProc exch def
+ /YStep exch def
+ /XStep exch def
+ /BBox exch def
+ /PaintType exch def
+ /PatternType 1 def
+ /TilingType 1 def
+ currentdict end
+ 7 1 roll
+ matrix translate
+ 5 1 roll
+ matrix rotate
+ 4 1 roll
+ matrix scale
+ exch dup matrix scale
+ matrix concatmatrix
+ matrix concatmatrix
+ matrix concatmatrix
+ /makepattern where
+ {
+ pop makepattern
+ }
+ {
+ pop pop null
+ } ifelse
+} bind def
+
+/LoutTextureSolid
+{
+ null
+ LoutSetTexture
+} bind def
+%%EndResource
+
+%%BeginResource: procset LoutTabPrependGraphic
+% @PrependGraphic file /home/jeff/lout.lib/include/tabf.lpg
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% PostScript @SysPrependGraphic file for @Tab %
+% %
+% This file has been placed in the public domain %
+% by its author, Jeffrey H. Kingston %
+% %
+% To assist in avoiding name clashes, the names %
+% of all these symbols begin with "ltab". %
+% %
+% Jeffrey H. Kingston %
+% 24 September 1991 %
+% 22 December 1992 %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% linewidth ltabhs -
+% horizontal single line
+/ltabhs
+{ 0 0 moveto xsize 0 lineto
+ setlinewidth 0 setlinecap stroke
+} def
+
+% linewidth ltabhsp -
+% horizontal single line with projecting ends
+/ltabhsp
+{ 0 0 moveto xsize 0 lineto
+ setlinewidth 2 setlinecap stroke
+} def
+
+% linewidth ltabhd -
+% horizontal double line
+/ltabhd
+{ dup dup
+ 0 0 moveto xsize 0 lineto
+ 0 exch 3 mul moveto xsize exch 3 mul lineto
+ setlinewidth 0 setlinecap stroke
+} def
+
+% linewidth ltabhdb -
+% horizontal double line below mark
+/ltabhdb
+{ dup dup
+ 0 0 moveto xsize 0 lineto
+ 0 exch -3 mul moveto xsize exch -3 mul lineto
+ setlinewidth 0 setlinecap stroke
+} def
+
+% linewidth ltabhdnw -
+% horizontal double line with northwest corner
+/ltabhdnw
+{ dup dup dup dup
+ 0 0 moveto xsize 0 lineto
+ xsize exch 3 mul moveto
+ -3 mul exch 3 mul lineto
+ -3 mul 0 lineto
+ setlinewidth 0 setlinejoin 2 setlinecap stroke
+} def
+
+% linewidth ltabhdne -
+% horizontal double line with northeast corner
+/ltabhdne
+{ dup dup dup dup
+ 0 0 moveto xsize 0 lineto
+ 0 exch 3 mul moveto
+ 3 mul xsize add exch 3 mul lineto
+ 3 mul xsize add 0 lineto
+ setlinewidth 0 setlinejoin 2 setlinecap stroke
+} def
+
+% linewidth ltabhdsw -
+% horizontal double line with southwest corner
+/ltabhdsw
+{ dup dup dup dup
+ 0 0 moveto xsize 0 lineto
+ xsize exch -3 mul moveto
+ -3 mul exch -3 mul lineto
+ -3 mul 0 lineto
+ setlinewidth 0 setlinejoin 2 setlinecap stroke
+} def
+
+% linewidth ltabhdse -
+% horizontal double line with southeast corner
+/ltabhdse
+{ dup dup dup dup
+ 0 0 moveto xsize 0 lineto
+ 0 exch -3 mul moveto
+ 3 mul xsize add exch -3 mul lineto
+ 3 mul xsize add 0 lineto
+ setlinewidth 0 setlinejoin 2 setlinecap stroke
+} def
+
+% linewidth ltabvs -
+% vertical single line
+/ltabvs
+{ 0 0 moveto 0 ysize lineto
+ setlinewidth 0 setlinecap stroke
+} def
+
+% linewidth ltabvd -
+% vertical double line
+/ltabvd
+{ dup dup
+ 0 0 moveto 0 ysize lineto
+ -3 mul 0 moveto -3 mul ysize lineto
+ setlinewidth 0 setlinecap stroke
+} def
+
+% linewidth ltabvdr -
+% vertical double line to right of mark
+/ltabvdr
+{ dup dup
+ 0 0 moveto 0 ysize lineto
+ 3 mul 0 moveto 3 mul ysize lineto
+ setlinewidth 0 setlinecap stroke
+} def
+%%EndResource
+
+%%BeginResource: procset LoutFigPrependGraphic
+% @PrependGraphic file /home/jeff/lout.lib/include/figf.lpg
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% PostScript @SysPrependGraphic file for @Fig Jeffrey H. Kingston %
+% Version 2.0 (includes CIRCUM label) January 1992 %
+% %
+% This file has been placed in the public domain by its author, %
+% Jeffrey H. Kingston %
+% %
+% Although Fig is now obsolete I have updated it 20 October 2002 %
+% to work with textures, i.e. replacing setrgbcolor with %
+% LoutSetRGBColor. %
+% %
+% To assist in avoiding name clashes, the names of all symbols %
+% defined here begin with "lfig". However, this is not feasible %
+% with user-defined labels and some labels used by users. %
+% %
+% <point> is two numbers, a point. %
+% <length> is one number, a length %
+% <angle> is one number, an angle in degrees %
+% <dashlength> is one number, the preferred length of a dash %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+errordict begin
+ /handleerror
+ {
+ { /Times-Roman findfont 8 pt scalefont setfont
+ 0 setgray 4 pt 4 pt moveto
+ $error /errorname get
+ dup lfigdict exch known
+ { lfigdict exch get }
+ { 30 string cvs } ifelse
+ show
+ ( Command: ) show
+ $error /command get 30 string cvs show
+ } stopped {} if
+ showpage stop
+ } def
+end
+
+% concat strings: <string> <string> lfigconcat <string>
+% must be defined outside lfigdict since used in lfigpromotelabels
+/lfigconcat
+{ 2 copy length exch length add string
+ dup 0 4 index putinterval
+ dup 3 index length 3 index putinterval
+ 3 1 roll pop pop
+} def
+
+% <string> lfigdebugprint -
+% must be defined outside lfigdict since used in arbitrary places
+% /lfigdebugprint
+% { print
+% (; operand stack:\n) print
+% count copy
+% count 2 idiv
+% { ==
+% (\n) print
+% } repeat
+% (\n) print
+% } def
+
+/lfigdict 120 dict def
+lfigdict begin
+
+% error messages
+/dictfull (dictfull error: too many labels?) def
+/dictstackoverflow (dictstackoverflow error: labels nested too deeply?) def
+/execstackoverflow (execstackoverflow error: figure nested too deeply?) def
+/limitcheck (limitcheck error: figure nested too deeply or too large?) def
+/syntaxerror (syntaxerror error: syntax error in text of figure?) def
+/typecheck (typecheck error: syntax error in text of figure?) def
+/undefined (undefined error: unknown or misspelt label?) def
+/VMError (VMError error: run out of memory?) def
+
+% push pi onto stack: - lfigpi <num>
+/lfigpi 3.14159 def
+
+% arc directions
+/clockwise false def
+/anticlockwise true def
+
+% maximum of two numbers: <num> <num> lfigmax <num>
+/lfigmax { 2 copy gt { pop } { exch pop } ifelse } def
+
+% minimum of two numbers: <num> <num> lfigmin <num>
+/lfigmin { 2 copy lt { pop } { exch pop } ifelse } def
+
+% add two points: <point> <point> lfigpadd <point>
+/lfigpadd { exch 3 1 roll add 3 1 roll add exch } def
+
+% subtract first point from second: <point> <point> lfigpsub <point>
+/lfigpsub { 3 2 roll sub 3 1 roll exch sub exch } def
+
+% max two points: <point> <point> lfigpmax <point>
+/lfigpmax { exch 3 1 roll lfigmax 3 1 roll lfigmax exch } def
+
+% min two points: <point> <point> lfigpmin <point>
+/lfigpmin { exch 3 1 roll lfigmin 3 1 roll lfigmin exch } def
+
+% scalar multiplication: <point> <num> lfigpmul <point>
+/lfigpmul { dup 3 1 roll mul 3 1 roll mul exch } def
+
+% point at angle and distance: <point> <length> <angle> lfigatangle <point>
+/lfigatangle { 2 copy cos mul 3 1 roll sin mul lfigpadd } def
+
+% angle from one point to another: <point> <point> lfigangle <angle>
+/lfigangle { lfigpsub 2 copy 0 eq exch 0 eq and {pop} {exch atan} ifelse } def
+
+% distance between two points: <point> <point> lfigdistance <length>
+/lfigdistance { lfigpsub dup mul exch dup mul add sqrt } def
+
+% difference in x coords: <point> <point> lfigxdistance <length>
+/lfigxdistance { pop 3 1 roll pop sub } def
+
+%difference in y coords: <point> <point> lfigydistance <length>
+/lfigydistance { 3 1 roll pop sub exch pop } def
+
+% stroke a solid line: <length> <dashlength> lfigsolid -
+/lfigsolid
+{ pop pop [] 0 setdash stroke
+} def
+
+% stroke a lfigdashed line: <length> <dashlength> lfigdashed -
+/lfigdashed
+{ 2 copy div 2 le 1 index 0 le or
+ { exch pop 1 pt lfigmax [ exch dup ] 0 setdash }
+ { dup [ exch 4 2 roll 2 copy div
+ 1 sub 2 div ceiling dup 4 1 roll
+ 1 add mul sub exch div ] 0 setdash
+ } ifelse stroke
+} def
+
+% stroke a lfigcdashed line: <length> <dashlength> lfigcdashed -
+/lfigcdashed
+{ 2 copy le 1 index 0 le or
+ { exch pop 1 pt lfigmax [ exch dup ] dup 0 get 2 div setdash }
+ { dup [ 4 2 roll exch 2 copy exch div
+ 2 div ceiling div 1 index sub
+ ] exch 2 div setdash
+ } ifelse stroke
+} def
+
+% stroke a dotted line: <length> <dashlength> lfigdotted -
+/lfigdotted
+{ 2 copy le 1 index 0 le or
+ { exch pop 1 pt lfigmax [ exch 0 exch ] 0 setdash }
+ { 1 index exch div ceiling div
+ [ 0 3 2 roll ] 0 setdash
+ } ifelse stroke
+} def
+
+% stroke a noline line: <length> <dashlength> lfignoline -
+/lfignoline
+{ pop pop
+} def
+
+% painting (i.e. filling): - lfigwhite - (etc.)
+/lfignopaint { } def
+/lfignochange { fill } def
+/lfigdarkblue { 0.0 0.0 0.5 LoutSetRGBColor fill } def
+/lfigblue { 0.0 0.0 1.0 LoutSetRGBColor fill } def
+/lfiglightblue { 0.5 0.5 1.0 LoutSetRGBColor fill } def
+/lfigdarkgreen { 0.0 0.5 0.0 LoutSetRGBColor fill } def
+/lfiggreen { 0.0 1.0 0.0 LoutSetRGBColor fill } def
+/lfiglightgreen { 0.5 1.0 0.5 LoutSetRGBColor fill } def
+/lfigdarkred { 0.5 0.0 0.0 LoutSetRGBColor fill } def
+/lfigred { 1.0 0.0 0.0 LoutSetRGBColor fill } def
+/lfiglightred { 1.0 0.5 0.5 LoutSetRGBColor fill } def
+/lfigdarkcyan { 0.0 0.5 0.5 LoutSetRGBColor fill } def
+/lfigcyan { 0.0 1.0 1.0 LoutSetRGBColor fill } def
+/lfiglightcyan { 0.5 1.0 1.0 LoutSetRGBColor fill } def
+/lfigdarkmagenta { 0.5 0.0 0.5 LoutSetRGBColor fill } def
+/lfigmagenta { 1.0 0.0 1.0 LoutSetRGBColor fill } def
+/lfiglightmagenta { 1.0 0.5 1.0 LoutSetRGBColor fill } def
+/lfigdarkyellow { 0.5 0.5 0.0 LoutSetRGBColor fill } def
+/lfigyellow { 1.0 1.0 0.0 LoutSetRGBColor fill } def
+/lfiglightyellow { 1.0 1.0 0.5 LoutSetRGBColor fill } def
+/lfigdarkgray { 0.2 0.2 0.2 LoutSetRGBColor fill } def
+/lfiggray { 0.5 0.5 0.5 LoutSetRGBColor fill } def
+/lfiglightgray { 0.8 0.8 0.8 LoutSetRGBColor fill } def
+/lfigdarkgrey { 0.2 0.2 0.2 LoutSetRGBColor fill } def
+/lfiggrey { 0.5 0.5 0.5 LoutSetRGBColor fill } def
+/lfiglightgrey { 0.8 0.8 0.8 LoutSetRGBColor fill } def
+/lfigblack { 0.0 0.0 0.0 LoutSetRGBColor fill } def
+/lfigwhite { 1.0 1.0 1.0 LoutSetRGBColor fill } def
+
+% line caps (and joins, not currently used)
+/lfigbutt 0 def
+/lfiground 1 def
+/lfigprojecting 2 def
+/lfigmiter 0 def
+/lfigbevel 2 def
+
+% shape and labels of the @Box symbol
+/lfigbox
+{
+ 0 0 /SW lfigpointdef
+ xsize 0 /SE lfigpointdef
+ xsize ysize /NE lfigpointdef
+ 0 ysize /NW lfigpointdef
+ SE 0.5 lfigpmul /S lfigpointdef
+ NW 0.5 lfigpmul /W lfigpointdef
+ W SE lfigpadd /E lfigpointdef
+ S NW lfigpadd /N lfigpointdef
+ NE 0.5 lfigpmul /CTR lfigpointdef
+ [ CTR NE lfigpsub /lfigboxcircum cvx ] lfigcircumdef
+ SW SE NE NW SW
+} def
+
+% shape and labels of the @CurveBox symbol
+/lfigcurvebox
+{
+
+ xsize 0.5 mul ysize 0.5 mul /CTR lfigpointdef
+ xsize 0.5 mul 0 /S lfigpointdef
+ xsize ysize 0.5 mul /E lfigpointdef
+ xsize 0.5 mul ysize /N lfigpointdef
+ 0 ysize 0.5 mul /W lfigpointdef
+
+ xmark 0.293 mul xmark 0.293 mul /SW lfigpointdef
+ xsize xmark 0.293 mul sub xmark 0.293 mul /SE lfigpointdef
+ xsize xmark 0.293 mul sub ysize xmark 0.293 mul sub /NE lfigpointdef
+ xmark 0.293 mul ysize xmark 0.293 mul sub /NW lfigpointdef
+
+ [ xsize ysize 0.5 lfigpmul xmark /lfigcurveboxcircum cvx ] lfigcircumdef
+
+ xmark 0
+ xsize xmark sub 0
+ [ xsize xmark sub xmark ]
+ xsize xmark
+ xsize ysize xmark sub
+ [ xsize xmark sub ysize xmark sub ]
+ xsize xmark sub ysize
+ xmark ysize
+ [ xmark ysize xmark sub ]
+ 0 ysize xmark sub
+ 0 xmark
+ [ xmark xmark ]
+ xmark 0
+} def
+
+% shadow of the @ShadowBox symbol
+% its shape and labels are done, somewhat inaccurately, with lfigbox
+/lfigshadow
+{ xmark 2 mul 0 moveto xsize 0 lineto
+ xsize ysize xmark 2 mul sub lineto
+ xsize xmark sub ysize xmark 2 mul sub lineto
+ xsize xmark sub xmark lineto
+ xmark 2 mul xmark lineto closepath fill
+} def
+
+% shape and labels of the @Square symbol
+/lfigsquare
+{
+ xsize ysize 0.5 lfigpmul /CTR lfigpointdef
+ CTR xsize xsize ysize ysize lfigpmax 0.5 lfigpmul lfigpadd /NE lfigpointdef
+ CTR 0 0 CTR NE lfigdistance 135 lfigatangle lfigpadd /NW lfigpointdef
+ CTR 0 0 CTR NE lfigdistance 225 lfigatangle lfigpadd /SW lfigpointdef
+ CTR 0 0 CTR NE lfigdistance 315 lfigatangle lfigpadd /SE lfigpointdef
+ SW 0.5 lfigpmul SE 0.5 lfigpmul lfigpadd /S lfigpointdef
+ NW 0.5 lfigpmul NE 0.5 lfigpmul lfigpadd /N lfigpointdef
+ SW 0.5 lfigpmul NW 0.5 lfigpmul lfigpadd /W lfigpointdef
+ SE 0.5 lfigpmul NE 0.5 lfigpmul lfigpadd /E lfigpointdef
+ [ CTR NE lfigpsub /lfigboxcircum cvx ] lfigcircumdef
+ SW SE NE NW SW
+} def
+
+% shape and labels of the @Diamond symbol
+/lfigdiamond
+{
+ xsize 0 0.5 lfigpmul /S lfigpointdef
+ 0 ysize 0.5 lfigpmul /W lfigpointdef
+ S W lfigpadd /CTR lfigpointdef
+ CTR W lfigpadd /N lfigpointdef
+ CTR S lfigpadd /E lfigpointdef
+ [ xsize ysize 0.5 lfigpmul /lfigdiamondcircum cvx ] lfigcircumdef
+ S E N W S
+} def
+
+% shape and labels of the @Ellipse symbol
+/lfigellipse
+{
+ xsize 0 0.5 lfigpmul /S lfigpointdef
+ 0 ysize 0.5 lfigpmul /W lfigpointdef
+ S W lfigpadd /CTR lfigpointdef
+ CTR W lfigpadd /N lfigpointdef
+ CTR S lfigpadd /E lfigpointdef
+ CTR xsize 0 0.3536 lfigpmul lfigpadd 0 ysize 0.3536 lfigpmul lfigpadd /NE lfigpointdef
+ 0 ysize 0.3536 lfigpmul CTR xsize 0 0.3536 lfigpmul lfigpadd lfigpsub /SE lfigpointdef
+ xsize 0 0.3536 lfigpmul CTR lfigpsub 0 ysize 0.3536 lfigpmul lfigpadd /NW lfigpointdef
+ 0 ysize 0.3536 lfigpmul xsize 0 0.3536 lfigpmul CTR lfigpsub lfigpsub /SW lfigpointdef
+ [ xsize ysize 0.5 lfigpmul /lfigellipsecircum cvx ] lfigcircumdef
+ S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S
+} def
+
+% shape and labels of the @Circle symbol
+/lfigcircle
+{
+ xsize ysize 0.5 lfigpmul /CTR lfigpointdef
+ CTR xsize 0 ysize 0 lfigpmax 0.5 lfigpmul lfigpadd /E lfigpointdef
+ CTR 0 0 CTR E lfigdistance 45 lfigatangle lfigpadd /NE lfigpointdef
+ CTR 0 0 CTR E lfigdistance 90 lfigatangle lfigpadd /N lfigpointdef
+ CTR 0 0 CTR E lfigdistance 135 lfigatangle lfigpadd /NW lfigpointdef
+ CTR 0 0 CTR E lfigdistance 180 lfigatangle lfigpadd /W lfigpointdef
+ CTR 0 0 CTR E lfigdistance 225 lfigatangle lfigpadd /SW lfigpointdef
+ CTR 0 0 CTR E lfigdistance 270 lfigatangle lfigpadd /S lfigpointdef
+ CTR 0 0 CTR E lfigdistance 315 lfigatangle lfigpadd /SE lfigpointdef
+ [ S E lfigpsub /lfigellipsecircum cvx ] lfigcircumdef
+ S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S
+} def
+
+% shape and labels of the @HLine and @HArrow symbols
+/lfighline
+{
+ 0 ymark lfigprevious /FROM lfigpointdef
+ xsize ymark lfigprevious /TO lfigpointdef
+} def
+
+% shape and labels of the @VLine and @VArrow symbols
+/lfigvline
+{
+ xmark ysize lfigprevious /FROM lfigpointdef
+ xmark 0 lfigprevious /TO lfigpointdef
+} def
+
+% points of a polygon around base with given no of sides, vert init angle:
+% <sides> <angle> figpolygon <point> ... <point>
+/lfigpolygon
+{ xsize ysize 0.5 lfigpmul /CTR lfigpointdef
+ 90 sub CTR 2 copy lfigmax 5 3 roll
+ [ 4 copy pop /lfigpolycircum cvx ] lfigcircumdef
+ exch dup 360 exch div exch
+ 1 1 3 2 roll
+ { 4 string cvs (P) exch lfigconcat cvn
+ 6 copy pop pop lfigatangle 2 copy 10 2 roll
+ 3 2 roll lfigpointdef
+ dup 3 1 roll add exch
+ } for
+ pop lfigatangle
+} def
+
+% next array element: <array> <index> lfiggetnext <array> <index> <any> true
+% or <array> <index> false
+/lfiggetnext
+{ 2 copy exch length ge
+ { false }
+ { 2 copy get exch 1 add exch true } ifelse
+} def
+
+% check whether thing is number: <any> lfigisnumbertype <any> <bool>
+/lfigisnumbertype
+{ dup type dup
+ /integertype eq exch /realtype eq or
+} def
+
+% check whether thing is an array: <any> lfigisarraytype <any> <bool>
+/lfigisarraytype { dup type /arraytype eq } def
+
+% get next item: <array> <index> lfiggetnextitem <array> <index> 0
+% or <array> <index> <array> 1
+% or <array> <index> <point> 2
+/lfiggetnextitem
+{ lfiggetnext
+ { lfigisarraytype
+ { 1
+ }
+ { lfigisnumbertype
+ { 3 1 roll
+ lfiggetnext
+ { lfigisnumbertype
+ { 4 3 roll exch 2
+ }
+ { pop 3 2 roll pop 0
+ } ifelse
+ }
+ { 3 2 roll pop 0
+ } ifelse
+ }
+ { pop 0
+ } ifelse
+ } ifelse
+ }
+ { 0
+ } ifelse
+} def
+
+% set arc path: bool x1 y1 x2 y2 x0 y0 lfigsetarc <angle> <angle> <dist>
+% the path goes from x1 y1 to x2 y2 about centre x0 y0,
+% anticlockwise if bool is true else clockwise.
+% The orientations of backwards pointing and forwards pointing
+% arrowheads are returned in the two angles, and
+% the length of the arc is returned in <dist>.
+/lfigsetarc
+{
+ 20 dict begin
+ matrix currentmatrix 8 1 roll
+ 2 copy translate 2 copy 8 2 roll
+ 4 2 roll lfigpsub 6 2 roll lfigpsub
+ dup /y1 exch def dup mul /y1s exch def
+ dup /x1 exch def dup mul /x1s exch def
+ dup /y2 exch def dup mul /y2s exch def
+ dup /x2 exch def dup mul /x2s exch def
+
+ y1s y2s eq
+ { -1
+ }
+ { y1s x2s mul y2s x1s mul sub y1s y2s sub div
+ } ifelse
+ /da exch def
+
+ x1s x2s eq
+ { -1
+ }
+ { x1s y2s mul x2s y1s mul sub x1s x2s sub div
+ } ifelse
+ /db exch def
+
+ da 0 gt db 0 gt and
+ { /LMax da sqrt db sqrt lfigmax def
+ /scalex da sqrt LMax div def
+ /scaley db sqrt LMax div def
+ scalex scaley scale
+ 0 0 LMax
+ 0 0 x1 scalex mul y1 scaley mul lfigangle
+ 0 0 x2 scalex mul y2 scaley mul lfigangle
+ 2 copy eq { 360 add } if
+ 2 copy 8 2 roll
+ 5 index { arc } { arcn } ifelse
+ 2 index 1 index
+ { 90 sub } { 90 add } ifelse
+ dup sin scaley mul exch cos scalex mul atan
+ 2 index 2 index
+ { 90 add } { 90 sub } ifelse
+ dup sin scaley mul exch cos scalex mul atan
+ 5 2 roll % res1 res2 ang1 ang2 anticlockwise
+ { exch sub } { sub } ifelse
+ dup 0 le { 360 add } if lfigpi mul LMax mul 180 div
+ }
+ { 0 0 x1 y1 lfigdistance 0 0 x2 y2 lfigdistance eq
+ 0 0 x1 y1 lfigdistance 0 gt and
+ { 0 0
+ 0 0 x1 y1 lfigdistance
+ 0 0 x1 y1 lfigangle
+ 0 0 x2 y2 lfigangle
+ 2 copy eq { 360 add } if
+ 2 copy 8 2 roll
+ 5 index { arc } { arcn } ifelse
+ 2 index 1 index
+ { 90 sub } { 90 add } ifelse
+ 2 index 2 index
+ { 90 add } { 90 sub } ifelse
+ 5 2 roll % res1 res2 ang1 ang2 clockwise
+ { exch sub } { sub } ifelse
+ dup 0 le { 360 add } if lfigpi mul 0 0 x1 y1 lfigdistance mul 180 div
+ }
+ { x2 y2 lineto pop
+ x2 y2 x1 y1 lfigangle
+ x1 y1 x2 y2 lfigangle
+ x1 y1 x2 y2 lfigdistance
+ } ifelse
+ } ifelse
+ 4 -1 roll setmatrix
+ end
+} def
+
+% lfigsetcurve: set up a Bezier curve from x0 y0 to x3 y3
+% and return arrowhead angles and length of curve (actually 0)
+% x0 y0 x1 y1 x2 y2 x3 y3 lfigsetcurve <angle> <angle> <length>
+/lfigsetcurve
+{ 8 copy curveto pop pop
+ lfigangle
+ 5 1 roll
+ 4 2 roll lfigangle
+ exch
+ 0
+} def
+
+% lfigpaintpath: paint a path of the given shape
+% /paint [ shape ] lfigpaintpath -
+/lfigpaintpath
+{
+ 10 dict begin
+ 0 newpath
+ /prevseen false def
+ /curveseen false def
+ { lfiggetnextitem
+ dup 0 eq { pop exit }
+ { 1 eq
+ { /curveseen true def
+ /curve exch def
+ curve length 0 eq { /curveseen false def } if
+ }
+ { /ycurr exch def
+ /xcurr exch def
+ prevseen
+ { curveseen
+ { curve length 4 eq
+ { xprev yprev
+ curve 0 get curve 1 get
+ curve 2 get curve 3 get
+ xcurr ycurr
+ lfigsetcurve pop pop pop
+ }
+ { xprev yprev xcurr ycurr
+ curve length 1 ge { curve 0 get } { 0 } ifelse
+ curve length 2 ge { curve 1 get } { 0 } ifelse
+ curve length 3 ge { curve 2 get } { true } ifelse
+ 7 1 roll
+ lfigsetarc pop pop pop
+ } ifelse
+ }
+ { xcurr ycurr lineto
+ } ifelse
+ }
+ { xcurr ycurr moveto
+ } ifelse
+ /xprev xcurr def
+ /yprev ycurr def
+ /prevseen true def
+ /curveseen false def
+ } ifelse
+ } ifelse
+ } loop pop pop cvx exec
+ end
+} def
+
+% stroke a path of the given shape in the given linestyle and dash length.
+% Return the origin and angle of the backward and forward arrow heads.
+% dashlength /linestyle [shape] lfigdopath [<point> <angle>] [<point> <angle>]
+/lfigdopath
+{
+ 10 dict begin
+ 0
+ /prevseen false def
+ /curveseen false def
+ /backarrow [] def
+ /fwdarrow [] def
+ {
+ lfiggetnextitem
+ dup 0 eq { pop exit }
+ {
+ 1 eq
+ { /curveseen true def
+ /curve exch def
+ curve length 0 eq { /prevseen false def } if
+ }
+ { /ycurr exch def
+ /xcurr exch def
+ prevseen
+ { newpath xprev yprev moveto
+ curveseen
+ { curve length 4 eq
+ { xprev yprev
+ curve 0 get curve 1 get
+ curve 2 get curve 3 get
+ xcurr ycurr lfigsetcurve
+ }
+ { xprev yprev xcurr ycurr
+ curve length 1 ge { curve 0 get } { 0 } ifelse
+ curve length 2 ge { curve 1 get } { 0 } ifelse
+ curve length 3 ge { curve 2 get } { true } ifelse
+ 7 1 roll
+ lfigsetarc
+ } ifelse
+ }
+ { xcurr ycurr lineto
+ xcurr ycurr xprev yprev lfigangle dup 180 sub
+ xprev yprev xcurr ycurr lfigdistance
+ } ifelse
+ 6 index 6 index cvx exec
+ [ xprev yprev 5 -1 roll ]
+ backarrow length 0 eq
+ { /backarrow exch def }
+ { pop } ifelse
+ [ xcurr ycurr 4 -1 roll ] /fwdarrow exch def
+ } if
+ /xprev xcurr def
+ /yprev ycurr def
+ /prevseen true def
+ /curveseen false def
+ } ifelse
+ } ifelse
+ } loop
+ pop pop pop pop
+ backarrow length 0 eq { [ 0 0 0 ] } { backarrow } ifelse
+ fwdarrow length 0 eq { [ 0 0 0 ] } { fwdarrow } ifelse
+ end
+} def
+
+% lfigdoarrow: draw an arrow head of given form
+% dashlength /lstyle /pstyle hfrac height width [ <point> <angle> ] lfigdoarrow -
+/lfigdoarrow
+{ matrix currentmatrix 8 1 roll
+ dup 0 get 1 index 1 get translate
+ 2 get rotate
+ [ 2 index neg 2 index 0 0
+ 3 index 3 index neg
+ 1 index 10 index mul 0
+ 7 index 7 index ]
+ 4 1 roll pop pop pop
+ dup 3 1 roll
+ gsave lfigpaintpath grestore lfigdopath pop pop
+ setmatrix
+} def
+
+% arrow head styles
+/lfigopen 0.0 def
+/lfighalfopen 0.5 def
+/lfigclosed 1.0 def
+
+% stroke no arrows, forward, back, and both
+/lfignoarrow { pop pop pop pop pop pop pop pop } def
+/lfigforward { 7 -1 roll lfigdoarrow pop } def
+/lfigback { 8 -2 roll pop lfigdoarrow } def
+/lfigboth { 8 -1 roll 7 copy lfigdoarrow pop 7 -1 roll lfigdoarrow } def
+
+% lfigprevious: return previous point on path
+/lfigprevious
+{ lfigisnumbertype
+ { 2 copy }
+ { lfigisarraytype
+ { 2 index 2 index }
+ { 0 0 }
+ ifelse
+ } ifelse
+} def
+
+% label a point in 2nd top dictionary: <point> /name lfigpointdef -
+/lfigpointdef
+{
+ % (Entering lfigpointdef) lfigdebugprint
+ [ 4 2 roll transform
+ /itransform cvx ] cvx
+ currentdict end
+ 3 1 roll
+ % currentdict length currentdict maxlength lt
+ % { def }
+ % { exec moveto (too many labels) show stop }
+ % ifelse
+ def
+ begin
+ % (Leaving lfigpointdef) lfigdebugprint
+} def
+
+% promote labels from second top to third top dictionary
+% <string> lfigpromotelabels -
+/lfigpromotelabels
+{
+ % (Entering lfigpromotelabels) lfigdebugprint
+ currentdict end exch currentdict end
+ { exch 20 string cvs 2 index
+ (@) lfigconcat exch lfigconcat cvn exch def
+ } forall pop begin
+ % (Leaving lfigpromotelabels) lfigdebugprint
+} def
+
+% show labels (except CIRCUM): - lfigshowlabels -
+/lfigshowlabels
+{
+ % (Entering lfigshowlabels) lfigdebugprint
+ currentdict end
+ currentdict
+ { 1 index 20 string cvs (CIRCUM) search % if CIRCUM in key
+ { pop pop pop pop pop }
+ { pop cvx exec 2 copy
+ newpath 1.5 pt 0 360 arc
+ 0 setgray fill
+ /Times-Roman findfont 8 pt scalefont setfont
+ moveto 0.2 cm 0.1 cm rmoveto 20 string cvs show
+ }
+ ifelse
+ } forall
+ begin
+ % (Leaving lfigshowlabels) lfigdebugprint
+} def
+
+% fix an angle to 0 <= res < 360: <angle> lfigfixangle <angle>
+/lfigfixangle
+{
+ % (Entering lfigfixangle) lfigdebugprint
+ { dup 0 ge { exit } if
+ 360 add
+ } loop
+ { dup 360 lt { exit } if
+ 360 sub
+ } loop
+ % (Leaving lfigfixangle) lfigdebugprint
+} def
+
+% find point on circumference of box: alpha a b lfigboxcircum x y
+/lfigboxcircum
+{
+ % (Entering lfigboxcircum) lfigdebugprint
+ 4 dict begin
+ /b exch def
+ /a exch def
+ lfigfixangle /alpha exch def
+ 0 0 a b lfigangle /theta exch def
+
+ % if alpha <= theta, return (a, a*tan(alpha))
+ alpha theta le
+ { a a alpha sin mul alpha cos div }
+ {
+ % else if alpha <= 180 - theta, return (b*cot(alpha), b)
+ alpha 180 theta sub le
+ { b alpha cos mul alpha sin div b }
+ {
+ % else if alpha <= 180 + theta, return (-a, -a*tan(alpha))
+ alpha 180 theta add le
+ { a neg a neg alpha sin mul alpha cos div }
+ {
+ % else if alpha <= 360 - theta, return (-b*cot(alpha), -b)
+ alpha 360 theta sub le
+ { b neg alpha cos mul alpha sin div b neg }
+ {
+ % else 360 - theta <= alpha, return (a, a*tan(alpha))
+ a a alpha sin mul alpha cos div
+ } ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+ end
+ % (Leaving lfigboxcircum) lfigdebugprint
+} def
+
+% find quadratic roots (assume a != 0): a b c lfigqroots x1 x2 2
+% or x2 1
+% or 0
+/lfigqroots
+{
+ 4 dict begin
+ /c exch def
+ /b exch def
+ /a exch def
+ /disc b b mul 4 a c mul mul sub def
+ disc 0 lt
+ { 0
+ }
+ { disc 0 eq
+ { b neg 2 a mul div
+ 1
+ }
+ { b neg disc sqrt add 2 a mul div
+ b neg disc sqrt sub 2 a mul div
+ 2
+ }
+ ifelse
+ }
+ ifelse
+ end
+} def
+
+% work our which quadrant: <angle> lfigquadrant <0-3>
+/lfigquadrant
+{ dup 90 lt
+ { pop 0
+ }
+ { dup 180 lt
+ { pop 1
+ }
+ { 270 lt
+ { 2
+ }
+ { 3
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+
+% find curvebox circum, assuming upper right quadrant: alpha a b xmk lfigcb x y
+/lfigcb
+{
+ 6 dict begin
+ /xmk exch def
+ /b exch def
+ /a exch def
+ /alpha exch def
+ /theta1 0 0 a b xmk sub lfigangle def
+ /theta2 0 0 a xmk sub b lfigangle def
+ alpha theta1 le
+ { % if alpha <= theta1, return (a, a*tan(alpha))
+ a a alpha sin mul alpha cos div
+ }
+ { alpha theta2 ge
+ { % else if alpha > theta2, return (b*cot(alpha), b)
+ b alpha cos mul alpha sin div b
+ }
+ {
+ % else, return the intersection of line and circle
+ a xmk sub b xmk sub xmk 0 0 alpha lfigcircleintersect
+ dup 0 eq
+ { % should never happen, just return any reasonable point
+ pop
+ a b 0.5 lfigpmul
+ }
+ { 1 eq
+ { % should never happen, just return the point on top of stack
+ }
+ { % the usual case, two points on stack, return the larger
+ lfigpmax
+ } ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+ end
+} def
+
+% find point on circumference of curvebox: alpha a b xmk lfigcurveboxcircum x y
+/lfigcurveboxcircum
+{
+ % (Entering lfigcurveboxcircum) lfigdebugprint
+ 5 dict begin
+ /xmk exch def
+ /b exch def
+ /a exch def
+ lfigfixangle /alpha exch def
+
+ % work out which quadrant we are in, and reflect accordingly
+ /quad alpha lfigquadrant def
+ quad 0 eq
+ { alpha a b xmk lfigcb
+ }
+ { quad 1 eq
+ { 180 alpha sub a b xmk lfigcb exch neg exch
+ }
+ { quad 2 eq
+ { alpha 180 sub a b xmk lfigcb neg exch neg exch
+ }
+ { 360 alpha sub a b xmk lfigcb neg
+ } ifelse
+ } ifelse
+ } ifelse
+ end
+ % (Leaving lfigcurveboxcircum) lfigdebugprint
+} def
+
+% find point on circumference of diamond: alpha a b lfigdiamondcircum x y
+/lfigdiamondcircum
+{
+ % (Entering lfigdiamondcircum) lfigdebugprint
+ 4 dict begin
+ /b exch def
+ /a exch def
+ lfigfixangle /alpha exch def
+ b alpha cos abs mul a alpha sin abs mul add /denom exch def
+ a b mul alpha cos mul denom div
+ a b mul alpha sin mul denom div
+ end
+ % (Leaving lfigdiamondcircum) lfigdebugprint
+} def
+
+% find point on circumference of ellipse: alpha a b lfigellipsecircum x y
+/lfigellipsecircum
+{
+ % (Entering lfigellipsecircum) lfigdebugprint
+ 4 dict begin
+ /b exch def
+ /a exch def
+ lfigfixangle /alpha exch def
+ b alpha cos mul dup mul a alpha sin mul dup mul add sqrt /denom exch def
+ a b mul alpha cos mul denom div
+ a b mul alpha sin mul denom div
+ end
+ % (Leaving lfigellipsecircum) lfigdebugprint
+} def
+
+% find point of intersection of two lines each defined by two points
+% x1 y1 x2 y2 x3 y3 x4 y4 lfiglineintersect x y
+/lfiglineintersect
+{
+ % (Entering lfiglineintersect) lfigdebugprint
+ 13 dict begin
+ /y4 exch def
+ /x4 exch def
+ /y3 exch def
+ /x3 exch def
+ /y2 exch def
+ /x2 exch def
+ /y1 exch def
+ /x1 exch def
+ x2 x1 sub /x21 exch def
+ x4 x3 sub /x43 exch def
+ y2 y1 sub /y21 exch def
+ y4 y3 sub /y43 exch def
+ y21 x43 mul y43 x21 mul sub /det exch def
+
+ % calculate x
+ y21 x43 mul x1 mul
+ y43 x21 mul x3 mul sub
+ y3 y1 sub x21 mul x43 mul add
+ det div
+
+ % calculate y
+ x21 y43 mul y1 mul
+ x43 y21 mul y3 mul sub
+ x3 x1 sub y21 mul y43 mul add
+ det neg div
+
+ end
+ % (Leaving lfiglineintersect) lfigdebugprint
+} def
+
+% find point on circumference of polygon
+% alpha radius num theta lfigpolycircum x y
+/lfigpolycircum
+{
+ % (Entering lfigpolycircum) lfigdebugprint
+ 13 dict begin
+ /theta exch def
+ /num exch def
+ /radius exch def
+ /alpha exch def
+
+ % calculate delta, the angle from theta to alpha
+ alpha theta sub lfigfixangle
+
+ % calculate the angle which is the multiple of 360/num closest to delta
+ 360 num div div truncate 360 num div mul theta add /anglea exch def
+
+ % calculate the next multiple of 360/num after anglea
+ anglea 360 num div add /angleb exch def
+
+ % intersect the line through these two points with the alpha line
+ anglea cos anglea sin angleb cos angleb sin
+ 0 0 alpha cos 2 mul alpha sin 2 mul
+ lfiglineintersect radius lfigpmul
+
+ end
+ % (Leaving lfigpolycircum) lfigdebugprint
+} def
+
+% find point of intersection of a point and a circle
+% x0 y0 r x1 y1 theta lfigcircleintersect xa ya xb yb 2
+% or xb yb 1
+% or 0
+/lfigcircleintersect
+{
+ % (Entering lfigcircleintersect) lfigdebugprint
+ 15 dict begin
+ /theta exch def
+ /y1 exch def
+ /x1 exch def
+ /r exch def
+ /y0 exch def
+ /x0 exch def
+
+ % if sin(theta) = 0 then line is horizontal and y must be y1
+ theta sin abs 0.00001 lt
+ {
+ /a 1 def
+ /b -2 x0 mul def
+ /c x0 dup mul y1 y0 sub dup mul add r dup mul sub def
+ a b c lfigqroots dup
+ 0 eq
+ { pop
+ 0
+ }
+ { 1 eq
+ { y1 1
+ }
+ { y1 exch y1 2
+ } ifelse
+ } ifelse
+ }
+ {
+ /ct theta cos theta sin div def
+ /a ct ct mul 1 add def
+ /b ct x1 x0 sub mul y1 add y0 sub 2 mul def
+ /c x1 x0 sub dup mul y1 y0 sub dup mul add r dup mul sub def
+ a b c lfigqroots dup
+ 0 eq
+ { pop
+ 0
+ }
+ { 1 eq
+ { y1 add /yb exch def
+ yb y1 sub ct mul x1 add /xb exch def
+ xb yb 1
+ }
+ { y1 add /ya exch def
+ ya y1 sub ct mul x1 add /xa exch def
+ y1 add /yb exch def
+ yb y1 sub ct mul x1 add /xb exch def
+ xa ya xb yb 2
+ } ifelse
+ } ifelse
+ } ifelse
+ end
+ % (Leaving lfigcircleintersect) lfigdebugprint
+} def
+
+% add CIRCUM operator with this body: <array> lfigcircumdef -
+/lfigcircumdef
+{ % (Entering lfigcircumdef) lfigdebugprint
+ /CIRCUM exch cvx
+ currentdict end
+ 3 1 roll
+ % currentdict length currentdict maxlength lt
+ % { def }
+ % { exec moveto (too many labels) show stop }
+ % ifelse
+ def
+ begin
+ % (Leaving lfigcircumdef) lfigdebugprint
+} def
+
+end
+%%EndResource
+
+%%BeginResource: procset LoutGraphPrependGraphic
+% @PrependGraphic file /home/jeff/lout.lib/include/graphf.lpg
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% PostScript @SysPrependGraphic file for @Graph (Version 1.0) %
+% %
+% Version 1.0 by Jeffrey H. Kingston, December 1993. %
+% swapxandy added September 2001 by JHK. %
+% %
+% This file has been placed in the public domain by its author, %
+% Jeffrey H. Kingston %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+errordict begin
+ /handleerror
+ {
+ { /Times-Roman findfont 8 pt scalefont setfont
+ 0 setgray 4 pt 4 pt moveto
+ $error /errorname get
+ dup lgraphdict exch known
+ { lgraphdict exch get }
+ { 30 string cvs } ifelse
+ show
+ ( Command: ) show
+ $error /command get 30 string cvs show
+ } stopped {} if
+ showpage stop
+ } def
+end
+
+/lgraphdebugposy 432 def
+/lgraphdebugposx 72 def
+
+% - lgraphdebugnextline -
+/lgraphdebugnextline
+{
+ lgraphdebugposy 72 lt
+ { /lgraphdebugposx lgraphdebugposx 144 add store
+ /lgraphdebugposy 432 store
+ }
+ {
+ /lgraphdebugposy lgraphdebugposy 12 sub store
+ } ifelse
+ lgraphdebugposx lgraphdebugposy moveto
+} def
+
+% - lgraphdebugbeginindent -
+/lgraphdebugbeginindent
+{
+ /lgraphdebugposx lgraphdebugposx 12 add store
+} def
+
+% - lgraphdebugendindent -
+/lgraphdebugendindent
+{
+ /lgraphdebugposx lgraphdebugposx 12 sub store
+} def
+
+% <string> <int> lgraphdebugprint -
+% must be defined outside lgraphdict since used in arbitrary places
+% print <string> plus count or <int> stack entries, whichever is the smaller
+/lgraphdebugprint
+{
+ exch
+ gsave
+ initgraphics
+ lgraphdebugnextline
+ /Times-Roman findfont 10 scalefont setfont
+ 0 setgray show
+ lgraphdebugbeginindent
+ count 1 sub 2 copy lt { pop } { exch pop } ifelse 1 sub
+ 0 exch 1 exch
+ {
+ lgraphdebugnextline
+ index
+ dup type (dicttype) eq
+ {
+ (begin dict) show
+ lgraphdebugbeginindent
+ {
+ lgraphdebugnextline
+ pop 100 string cvs show
+ } forall
+ lgraphdebugendindent
+ lgraphdebugnextline
+ (end dict) show
+ }
+ {
+ dup type (arraytype) eq
+ {
+ (begin array) show
+ lgraphdebugbeginindent
+ {
+ lgraphdebugnextline
+ 100 string cvs show
+ } forall
+ lgraphdebugendindent
+ lgraphdebugnextline
+ (end array) show
+ }
+ {
+ 100 string cvs show
+ } ifelse
+ } ifelse
+ } for
+ lgraphdebugendindent
+ grestore
+} def
+
+
+/lgraphdict 200 dict def
+lgraphdict begin
+
+% error messages
+/dictfull (dictfull error) def
+/dictstackoverflow (dictstackoverflow error) def
+/execstackoverflow (execstackoverflow error: expression too complex?) def
+/limitcheck (limitcheck error: graph too complex or too large?) def
+/syntaxerror (syntaxerror error: syntax error in text of graph?) def
+/typecheck (typecheck error: syntax error in text of graph?) def
+/undefined (undefined error: unknown or misspelt symbol?) def
+/rangecheck (rangecheck error: undefined expression (e.g. divide by zero)?) def
+/VMError (VMError error: run out of memory?) def
+
+% random number between x and y inclusive: x y dorand num
+/dorand { 1 index sub 1 add rand exch mod add } def
+
+% log to given base: base num dolog num
+/dolog { ln exch ln div } def
+
+% maximum of two numbers: <num> <num> max <num>
+/max { 2 copy gt { pop } { exch pop } ifelse } def
+
+% add two points: <point> <point> padd <point>
+/padd { exch 3 1 roll add 3 1 roll add exch } def
+
+% subtract first point from second: <point> <point> psub <point>
+/psub { 3 2 roll sub 3 1 roll exch sub exch } def
+
+% distance between two points: <point> <point> distance <length>
+/distance { psub dup mul exch dup mul add sqrt } def
+
+% point at angle and distance: <point> <length> <angle> atangle <point>
+/atangle { 2 copy cos mul 3 1 roll sin mul padd } def
+
+% angle from one point to another: <point> <point> angle <angle>
+/angle { psub 2 copy 0 eq exch 0 eq and {pop} {exch atan} ifelse } def
+
+
+% set up for line
+% - linesetup <length> <dashlength>
+/linesetup
+{ newpath
+ xcurr ycurr trpoint xprev yprev trpoint
+ 4 copy moveto lineto distance dashlength
+} def
+
+% set up for icon-avoiding line
+% - ilinesetup <length> <dashlength>
+/ilinesetup
+{ newpath
+ xprev yprev trpoint xcurr ycurr trpoint 4 copy
+ 4 copy angle symbolsize 1.5 mul exch 4 2 roll pop pop atangle
+ 6 2 roll 4 2 roll
+ 4 copy angle symbolsize 1.5 mul exch 4 2 roll pop pop atangle
+ 4 copy moveto lineto distance dashlength
+} def
+
+
+% stroke a solid line: <length> <dashlength> solid -
+/solid
+{ pop pop [] 0 setdash linewidth setlinewidth stroke
+} def
+
+% stroke a dashed line: <length> <dashlength> dashed -
+/dashed
+{ 2 copy 2 mul le 1 index 0 le or
+ { exch pop 1 pt max [ exch dup ] 0 setdash }
+ { dup [ exch 4 2 roll 2 copy div
+ 1 sub 2 div ceiling dup 4 1 roll
+ 1 add mul sub exch div ] 0 setdash
+ } ifelse linewidth setlinewidth stroke
+} def
+
+% stroke a cdashed line: <length> <dashlength> cdashed -
+/cdashed
+{ 2 copy le 1 index 0 le or
+ { exch pop 1 pt max [ exch dup ] dup 0 get 2 div setdash }
+ { dup [ 4 2 roll exch 2 copy exch div
+ 2 div ceiling div 1 index sub
+ ] exch 2 div setdash
+ } ifelse linewidth setlinewidth stroke
+} def
+
+% stroke a dotted line: <length> <dashlength> dotted -
+/dotted
+{ 2 copy le 1 index 0 le or
+ { exch pop 1 pt max [ exch 0 exch ] 0 setdash }
+ { 1 index exch div ceiling div 0.99999 mul
+ [ 0 3 2 roll ] 0 setdash
+ } ifelse gsave 1 setlinecap linewidth setlinewidth stroke grestore newpath
+} def
+
+% stroke a noline line: <length> <dashlength> noline -
+/noline
+{ pop pop
+} def
+
+% scale array elements by factor: <array> <factor> scalearray <array>
+/scalearray
+{
+ [ exch 3 2 roll
+ { exch dup 3 1 roll mul exch } forall
+ pop ]
+} def
+
+% sum array elements: <array> sumarray <number>
+/sumarray
+{
+ 0 exch { add } forall
+} def
+
+% begin a more complex line: <length> <dashlength> linebegin -
+/linebegin
+{
+ % (Entering linebegin) 2 debugprint
+ 20 dict begin
+ /dashlen exch 1 pt max def
+ /len exch def
+ /gap dashlen def
+ /halfgap dashlen 2 div def
+ /dash dashlen def
+ /halfdash dashlen 2 div def
+ /dot 0 def
+ % (Leaving linebegin) 0 debugprint
+} def
+% end a more complex line: <linecap> <cycle> <startpos> <stoppos> lineend -
+/lineend
+{
+ % (Entering lineend) 3 debugprint
+ /stoppos exch def
+ /startpos exch def
+ /cycle exch def
+ /linecap exch def
+ /stopposlen stoppos sumarray def
+ /startposlen startpos sumarray def
+ /cyclelen cycle sumarray def
+ /effectivelen len startposlen add stopposlen sub def
+ effectivelen 0 gt cyclelen 0 gt and
+ {
+ /repeats effectivelen cyclelen div ceiling def
+ /factor len repeats cyclelen mul startposlen sub stopposlen add div def
+ cycle factor scalearray startposlen factor mul setdash
+ linecap setlinecap stroke
+ } if
+ end
+ % (Leaving lineend) 0 debugprint
+} def
+
+% stroke a dotdashed line: <length> <dashlength> dotdashed -
+/dotdashed
+{
+ linebegin
+ 1 [dash gap dot gap] [] [dash]
+ lineend
+} def
+
+% stroke a dotcdashed line: <length> <dashlength> dotcdashed -
+/dotcdashed
+{
+ linebegin
+ 1 [dash gap dot gap] [halfdash] [halfdash]
+ lineend
+} def
+
+% stroke a dotdotdashed line: <length> <dashlength> dotdotdashed -
+/dotdotdashed
+{
+ linebegin
+ 1 [dash gap dot gap dot gap] [] [dash]
+ lineend
+} def
+
+% stroke a dotdotcdashed line: <length> <dashlength> dotdotcdashed -
+/dotdotcdashed
+{
+ linebegin
+ 1 [dash gap dot gap dot gap] [halfdash] [halfdash]
+ lineend
+} def
+
+% stroke a dotdotdotdashed line: <length> <dashlength> dotdotdotdashed -
+/dotdotdotdashed
+{
+ linebegin
+ 1 [dash gap dot gap dot gap dot gap] [] [dash]
+ lineend
+} def
+
+% stroke a dotdotdotcdashed line: <length> <dashlength> dotdotdotcdashed -
+/dotdotdotcdashed
+{
+ linebegin
+ 1 [dash gap dot gap dot gap dot gap] [halfdash] [halfdash]
+ lineend
+} def
+
+
+% stroke a y histogram: - yhisto -
+/yhisto
+{ xprev yleft trpoint yextra sub moveto
+ xprev yprev trpoint lineto
+ xcurr yprev trpoint lineto
+ xcurr yleft trpoint yextra sub lineto
+ linewidth setlinewidth stroke
+} def
+
+% stroke an x histogram: - xhisto -
+/xhisto
+{ xleft yprev trpoint exch xextra sub exch moveto
+ xcurr yprev trpoint lineto
+ xcurr ycurr trpoint lineto
+ xleft ycurr trpoint exch xextra sub exch lineto
+ linewidth setlinewidth stroke
+} def
+
+% stroke a surface y histogram: - surfaceyhisto -
+/surfaceyhisto
+{ firstpair
+ { xprev yleft trpoint yextra sub moveto
+ xprev yprev trpoint lineto
+ }
+ { xprev yprev trpoint moveto
+ } ifelse
+ xcurr yprev trpoint lineto
+ lastpair
+ { xcurr yleft trpoint yextra sub lineto
+ }
+ { xcurr ycurr trpoint lineto
+ } ifelse
+ linewidth setlinewidth stroke
+} def
+
+% stroke a surface x histogram: - surfacexhisto -
+/surfacexhisto
+{ firstpair
+ { xleft yprev trpoint exch xextra sub exch moveto
+ }
+ { xprev yprev trpoint moveto
+ } ifelse
+ xcurr yprev trpoint lineto
+ xcurr ycurr trpoint lineto
+ lastpair
+ { xleft ycurr trpoint exch xextra sub exch lineto
+ } if
+ linewidth setlinewidth stroke
+} def
+
+% % pre-texture versions
+% % stroke a filled y histogram: - filledyhisto -
+% /filledyhisto
+% {
+% linewidth setlinewidth
+% xprev yleft trpoint exch currentlinewidth 2 div add exch yextra sub moveto
+% xprev yprev trpoint exch currentlinewidth 2 div add exch lineto
+% xcurr yprev trpoint exch currentlinewidth 2 div sub exch lineto
+% xcurr yleft trpoint exch currentlinewidth 2 div sub exch yextra sub lineto
+% closepath fill
+% } def
+
+% % stroke a filled x histogram: - filledxhisto -
+% /filledxhisto
+% {
+% linewidth setlinewidth
+% xleft yprev trpoint currentlinewidth 2 div add exch xextra sub exch moveto
+% xcurr yprev trpoint currentlinewidth 2 div add lineto
+% xcurr ycurr trpoint currentlinewidth 2 div sub lineto
+% xleft ycurr trpoint currentlinewidth 2 div sub exch xextra sub exch lineto
+% closepath fill
+% } def
+
+% stroke a filled y histogram: - filledyhisto -
+/filledyhisto
+{
+ linewidth setlinewidth
+ xprev yleft trpoint exch currentlinewidth 1.3 mul add exch yextra sub moveto
+ xprev yprev trpoint exch currentlinewidth 1.3 mul add exch lineto
+ xcurr yprev trpoint exch currentlinewidth 1.3 mul sub exch lineto
+ xcurr yleft trpoint exch currentlinewidth 1.3 mul sub exch yextra sub lineto
+ gsave texture fill grestore stroke
+} def
+
+% stroke a filled x histogram: - filledxhisto -
+/filledxhisto
+{
+ linewidth setlinewidth
+ xleft yprev trpoint currentlinewidth 1.3 mul add exch xextra sub exch moveto
+ xcurr yprev trpoint currentlinewidth 1.3 mul add lineto
+ xcurr ycurr trpoint currentlinewidth 1.3 mul sub lineto
+ xleft ycurr trpoint currentlinewidth 1.3 mul sub exch xextra sub exch lineto
+ gsave texture fill grestore stroke
+} def
+
+
+% docross: show a cross with a given symbolsize and symbollinewidth
+% <x> <y> <symbolsize> <symbollinewidth> docross -
+/docross
+{
+ setlinewidth
+ /ss exch def
+ newpath
+ moveto
+ ss neg ss neg rmoveto
+ ss 2 mul ss 2 mul rlineto
+ 0 ss -2 mul rmoveto
+ ss -2 mul ss 2 mul rlineto
+ [] 0 setdash 0 setlinecap stroke
+} def
+
+% cross: show a cross
+% - cross -
+/cross { xcurr ycurr trpoint symbolsize symbollinewidth docross } def
+
+% doplus: show a plus with a given symbolsize and symbollinewidth
+% <x> <y> <symbolsize> <symbollinewidth> doplus -
+/doplus
+{
+ setlinewidth
+ /ss exch def
+ newpath
+ moveto
+ ss neg 0 rmoveto
+ ss 2 mul 0 rlineto
+ ss neg ss neg rmoveto
+ 0 ss 2 mul rlineto
+ [] 0 setdash 0 setlinecap stroke
+} def
+
+% plus: show a plus
+% - plus -
+/plus { xcurr ycurr trpoint symbolsize symbollinewidth doplus } def
+
+% dosquare: show an open square with a given symbolsize and symbollinewidth
+% NB symbolsize is reduced by half the line width to get size exactly right
+% <x> <y> <symbolsize> <symbollinewidth> dosquare -
+/dosquare
+{
+ dup setlinewidth
+ 0.5 mul sub 0 max /ss exch def
+ newpath
+ moveto
+ ss neg ss neg rmoveto
+ ss 2 mul 0 rlineto
+ 0 ss 2 mul rlineto
+ ss -2 mul 0 rlineto
+ closepath [] 0 setdash stroke
+} def
+
+% square: show an open square
+% - square -
+/square { xcurr ycurr trpoint symbolsize symbollinewidth dosquare } def
+
+% dofilledsquare: show filled square with given symbolsize and symbollinewidth
+% NB symbollinewidth is not used
+% <x> <y> <symbolsize> <symbollinewidth> dofilledsquare -
+/dofilledsquare
+{
+ pop /ss exch def
+ newpath
+ moveto
+ ss neg ss neg rmoveto
+ ss 2 mul 0 rlineto
+ 0 ss 2 mul rlineto
+ ss -2 mul 0 rlineto
+ closepath fill
+} def
+
+% filledsquare: show a filled square
+% - filledsquare -
+/filledsquare { xcurr ycurr trpoint symbolsize symbollinewidth dofilledsquare } def
+
+% dodiamond: show an open diamond with a given symbolsize and symbollinewidth
+% NB symbolsize is reduced by half the line width to get size exactly right
+% <x> <y> <symbolsize> <symbollinewidth> dodiamond -
+/dodiamond
+{
+ dup setlinewidth
+ 0.5 mul sub 0 max /ss exch def
+ newpath
+ moveto
+ ss neg 0 rmoveto
+ ss ss neg rlineto
+ ss ss rlineto
+ ss neg ss rlineto
+ closepath [] 0 setdash stroke
+} def
+
+% diamond: show an open diamond
+% - diamond -
+/diamond { xcurr ycurr trpoint symbolsize symbollinewidth dodiamond } def
+
+% dofilleddiamond: show filled diamond with given symbolsize and symbollinewidth
+% NB symbollinewidth is not used
+% <x> <y> <symbolsize> <symbollinewidth> dofilleddiamond -
+/dofilleddiamond
+{
+ pop /ss exch def
+ newpath
+ moveto
+ ss neg 0 rmoveto
+ ss ss neg rlineto
+ ss ss rlineto
+ ss neg ss rlineto
+ closepath fill
+} def
+
+% filleddiamond: show a filled diamond
+% - filleddiamond -
+/filleddiamond { xcurr ycurr trpoint symbolsize symbollinewidth dofilleddiamond } def
+
+% docircle: show an open circle with a given symbolsize and symbollinewidth
+% NB symbolsize is reduced by half the line width to get size exactly right
+% <x> <y> <symbolsize> <symbollinewidth> docircle -
+/docircle
+{
+ dup setlinewidth
+ 0.5 mul sub 0 max /ss exch def
+ newpath
+ ss 0 360 arc [] 0 setdash stroke
+} def
+
+% circle: show an open circle
+% - circle -
+/circle { xcurr ycurr trpoint symbolsize symbollinewidth docircle } def
+
+% dofilledcircle: show filled circle with given symbolsize and symbollinewidth
+% NB symbollinewidth is not used
+% <x> <y> <symbolsize> <symbollinewidth> dofilledcircle -
+/dofilledcircle
+{
+ pop /ss exch def
+ newpath
+ ss 0 360 arc fill
+} def
+
+% filledcircle: show a filled circle
+% - filledcircle -
+/filledcircle { xcurr ycurr trpoint symbolsize symbollinewidth dofilledcircle } def
+
+% dotriangle: show an open triangle with a given symbolsize and symbollinewidth
+% NB symbolsize is reduced by half the line width to get size exactly right
+% <x> <y> <symbolsize> <symbollinewidth> dotriangle -
+/dotriangle
+{
+ dup setlinewidth
+ 0.5 mul sub 0 max /ss exch def
+ newpath
+ moveto
+ 0 ss 1.5 mul rmoveto
+ ss neg ss -2.5 mul rlineto
+ ss 2 mul 0 rlineto
+ closepath [] 0 setdash stroke
+} def
+
+% triangle: show an open triangle
+% - triangle -
+/triangle { xcurr ycurr trpoint symbolsize symbollinewidth dotriangle } def
+
+% dofilledtriangle: show filled triangle with symbolsize and symbollinewidth
+% NB symbollinewidth is not used
+% <x> <y> <symbolsize> <symbollinewidth> dofilledtriangle -
+/dofilledtriangle
+{
+ pop /ss exch def
+ newpath
+ moveto
+ 0 ss 1.5 mul rmoveto
+ ss neg ss -2.5 mul rlineto
+ ss 2 mul 0 rlineto
+ closepath fill
+} def
+
+% filledtriangle: show a filled triangle
+% - filledtriangle -
+/filledtriangle { symbolsize symbollinewidth dofilledtriangle } def
+
+
+%plog: like log only with a base, and protected from failing if <= 0
+% base x plog res
+/plog { dup 0 le { pop pop 0 } { ln exch ln div } ifelse } def
+
+% xtr: transform one x value logarithmically if xlog > 1
+% <num> xtr <num>
+/xtr
+{ xlog 1 gt
+ { xlog exch plog
+ } if
+} def
+
+% ytr: transform one y value logarithmically if ylog > 1
+% <num> ytr <num>
+/ytr
+{ ylog 1 gt
+ { ylog exch plog
+ } if
+} def
+
+
+% trpoint: transform (x, y) in graph space into (x', y') in print space
+% x y trpoint x' y'
+/trpoint
+{ exch xtr xdecr { trxmax exch sub } { trxmin sub } ifelse
+ trxmax trxmin sub div xwidth mul xextra add
+
+ exch ytr ydecr { trymax exch sub } { trymin sub } ifelse
+ trymax trymin sub div ywidth mul yextra add
+} def
+
+
+% yonly: interpolate x values 1, 2, ... into data
+% [ data ] yonly [ newdata ]
+/yonly
+{ dup /tmp exch def
+ length [ exch 1 exch 1 exch
+ { dup tmp exch 1 sub get
+ } for
+ ]
+} def
+
+% xonly: interpolate y values 1, 2, ... into data
+% [ data ] yonly [ newdata ]
+/xonly
+{ dup /tmp exch def
+ length [ exch 1 exch 1 exch
+ { dup tmp exch 1 sub get exch
+ } for
+ ]
+} def
+
+% xandy: no interpolation of x or y values
+% [ data ] xandy [ data ]
+/xandy {} def
+
+% swapxandy: swap x and y values
+% [ data ] swapxandy [ data ]
+/swapxandy
+{ dup /tmp exch def
+ length [ exch 2 exch 2 exch
+ { dup tmp exch 1 sub get exch 2 sub tmp exch get
+ } for
+ ]
+} def
+
+
+% expstringwidth: calculate width of string containing optional exponent
+% <string> expstringwidth <width>
+/expstringwidth
+{ (^) search
+ { exch pop stringwidth pop exch stringwidth pop 0.7 mul add }
+ { stringwidth pop }
+ ifelse
+} def
+
+% expstringshow: show string containing optional exponent
+% <string> expstringshow -
+/expstringshow
+{ (^) search
+ { exch pop show 0 0.5 ft rmoveto
+ gsave currentfont 0.7 scalefont setfont show grestore
+ }
+ { show
+ }
+ ifelse
+} def
+
+% concatenate two strings: <string> <string> strconcat <string>
+/strconcat
+{ 2 copy length exch length add string
+ dup 0 4 index putinterval
+ dup 3 index length 3 index putinterval
+ 3 1 roll pop pop
+} def
+
+% lgen: generate one label automatically
+% num lgen num string
+/lgen { dup 20 string cvs } def
+
+% loglgen: generate one logarithmic label (with exponent)
+% <base> <exponent> loglgen <string>
+/loglgen
+{ 20 string cvs exch 20 string cvs
+ (^) strconcat exch strconcat
+} def
+
+
+% printxtick: print one x tick
+% xpos printxtick -
+/printxtick
+{ newpath
+ yleft trpoint moveto 0 yextra neg rmoveto
+ 0 xticklength neg rlineto [] 0 setdash stroke
+} def
+
+% printxgrid: print one x grid line
+% xpos printxgrid -
+/printxgrid
+{ dup newpath
+ yleft trpoint moveto 0 yextra neg rmoveto
+ yright trpoint lineto 0 yextra rlineto [] 0 setdash stroke
+} def
+
+% printxlabel: print one x label
+% (xlabel) xpos printxlabel -
+/printxlabel
+{ yleft trpoint moveto 0 yextra neg rmoveto
+ 0 xticklength neg rmoveto 0 0.9 ft neg rmoveto
+ xlog 1 gt { 0 0.3 ft neg rmoveto } if
+ dup expstringwidth -2 div 0 rmoveto expstringshow
+} def
+
+% printytick: print one y tick
+% ypos printytick -
+/printytick
+{ newpath
+ xleft exch trpoint moveto xextra neg 0 rmoveto
+ yticklength neg 0 rlineto [] 0 setdash stroke
+} def
+
+% printygrid: print one y grid line
+% ypos printygrid -
+/printygrid
+{ dup newpath
+ xleft exch trpoint moveto xextra neg 0 rmoveto
+ xright exch trpoint lineto xextra 0 rlineto [] 0 setdash stroke
+} def
+
+% printylabel: print one y label
+% (ylabel) ypos printylabel -
+/printylabel
+{ xleft exch trpoint moveto xextra neg 0 rmoveto
+ yticklength neg 0 rmoveto -0.3 ft -0.3 ft rmoveto
+ dup expstringwidth neg 0 rmoveto expstringshow
+} def
+
+% printrtick: print one r tick
+% ypos printrtick -
+/printrtick
+{ newpath
+ xright exch trpoint moveto xextra 0 rmoveto
+ rticklength 0 rlineto [] 0 setdash stroke
+} def
+
+% printrlabel: print one r label
+% (rlabel) ypos printrlabel -
+/printrlabel
+{ xright exch trpoint moveto xextra 0 rmoveto
+ rticklength 0 rmoveto 0.3 ft -0.3 ft rmoveto
+ expstringshow
+} def
+
+% printticks: print ticks and labels
+% /tickproc /labelproc [ tickandlabeldata ] min printticks -
+/printticks
+{ /prev exch def
+ { dup type dup dup /integertype eq exch /realtype eq or
+ { pop dup /prev exch def 2 index cvx exec
+ }
+ { /stringtype eq
+ { prev 2 index cvx exec
+ }
+ { pop
+ } ifelse
+ } ifelse
+ } forall
+ pop pop
+} def
+
+
+% printxaxistick: print one x axis tick
+% xpos printxaxistick -
+/printxaxistick
+{ newpath
+ yaxis trpoint moveto 0 xticklength -2 div rmoveto
+ 0 xticklength rlineto [] 0 setdash stroke
+} def
+
+% printxaxislabel: print one x axis label
+% (xlabel) xpos printxaxislabel -
+/printxaxislabel
+{ yaxis trpoint moveto
+ 0 xticklength -2 div rmoveto 0 0.9 ft neg rmoveto
+ xlog 1 gt { 0 0.3 ft neg rmoveto } if
+ dup expstringwidth -2 div 0 rmoveto expstringshow
+} def
+
+% printyaxistick: print one y axis tick
+% ypos printyaxistick -
+/printyaxistick
+{ newpath
+ xaxis exch trpoint moveto
+ yticklength -2 div 0 rmoveto
+ yticklength 0 rlineto [] 0 setdash stroke
+} def
+
+% printyaxislabel: print one y axis label
+% (ylabel) ypos printyaxislabel -
+/printyaxislabel
+{ xaxis exch trpoint moveto
+ yticklength -2 div 0 rmoveto -0.3 ft -0.3 ft rmoveto
+ dup expstringwidth neg 0 rmoveto expstringshow
+} def
+
+
+% <val> minmax -
+% perform minv := min(minv, val); maxv := max(maxv, val)
+% allowing for the possibility of minv, maxv, val being false (undefined)
+/minmax
+{ dup false eq
+ { pop }
+ { minv false eq
+ { dup /minv exch def /maxv exch def }
+ { dup minv lt
+ { /minv exch def }
+ { dup maxv gt
+ { /maxv exch def }
+ { pop }
+ ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+
+% <ticks> ticksundef <ticks> <bool>
+% returns true iff the ticks array is undefined (one false entry)
+/ticksundef
+{ dup length 1 eq
+ { dup 0 get false eq
+ }
+ { false }
+ ifelse
+} def
+
+% <number> integral <boolean>
+% true if the number has an integral value
+/integral { dup round eq } def
+
+% ticksep ticks xory alldata minval maxval axis base ticksandlimits ticks min max base
+% ticksandlimits: sort out value of x or y ticks and limits and log base
+/ticksandlimits
+{ /base exch def
+ /minv false def
+ /maxv false def
+
+ % min and max of user-supplied minval, maxval, and axis
+ minmax minmax minmax
+
+ % min and max of data points
+ { 0 get dup dup length 1 sub 3 index exch 2 exch
+ { get minmax dup
+ } for pop pop
+ } forall
+ pop dup
+
+ % min and max of tick values
+ { dup type /stringtype eq
+ { pop } { minmax } ifelse
+ } forall
+
+ % fix minv and maxv if undefined (false) or equal
+ minv false eq
+ { /minv -1 def /maxv 1 def }
+ { minv maxv eq
+ { minv 0 lt
+ { /minv 2 minv mul def /maxv 0 def
+ }
+ { minv 0 eq
+ { /minv -1 def /maxv 1 def
+ }
+ { /minv 0 def /maxv 2 maxv mul def
+ } ifelse
+ } ifelse
+ } if
+ } ifelse
+
+ % invent ticks if undefined
+ ticksundef
+ { pop /ticksep exch def
+
+ % if base is reasonable and minv is positive, logarithmic ticks
+ base 1 gt minv 0 gt and
+ {
+ % get integral log of minv and maxv
+ /logminv base minv plog floor cvi def
+ /logmaxv base maxv plog ceiling cvi def
+
+ % if minv close to base, make it 1; reset minv and maxv
+ logminv 1 eq logmaxv 4 ge and { /logminv 0 def } if
+ /minv base logminv exp def
+ /maxv base logmaxv exp def
+
+ % ticks := [ base**logminv, ... , base**logmaxv ]
+ [ logminv 1 logmaxv
+ { dup base exch exp
+ exch base exch loglgen
+ } for
+ ]
+ }
+ { % non-logarithmic ticks
+ {
+ % fix tick separation if undefined (0) or too small
+ /base 0 def
+ /delta maxv minv sub def
+ ticksep delta 30 div le
+ { /ticksep 10 delta log 1 sub ceiling exp def
+ ticksep delta 2 div ge
+ { /ticksep ticksep 2 div def }
+ { ticksep delta 5 div lt
+ { /ticksep 2 ticksep mul def
+ } if
+ } ifelse
+ } if
+
+ % adjust minv and maxv to be multiples of ticksep
+ /minv minv ticksep div floor ticksep mul def
+ /maxv maxv ticksep div ceiling ticksep mul def
+ /delta maxv minv sub def
+
+ % if minv or maxv near zero, move to zero and redo
+ minv ticksep eq
+ { /minv 0 def }
+ { maxv ticksep neg eq { /maxv 0 def } { exit } ifelse
+ } ifelse
+ } loop
+
+ % if minv, maxv, and ticksep are all integral, set "makeint" to true
+ /makeint minv integral maxv integral ticksep integral and and def
+
+ % ticks := [ minv, minv+ticksep, ... , maxv ]
+ [ 0 1 delta ticksep div round
+ { ticksep mul minv add makeint { cvi } if lgen }
+ for
+ ]
+ } ifelse
+ }
+ { exch pop
+ } ifelse
+ minv maxv base
+} def
+
+% xset: set up all data for x axis, including limits and ticks
+% xticksep xticks 0 alldata xmin xmax xlog xextra xdecr xaxis xticklength xset -
+/xset
+{ /xticklength exch def
+ /xaxis exch def
+ /xdecr exch def
+ /xextra exch def
+ xaxis exch ticksandlimits
+ /xlog exch def /xmax exch def /xmin exch def /xticks exch def
+ /xleft xdecr { xmax } { xmin } ifelse def
+ /xright xdecr { xmin } { xmax } ifelse def
+ /xwidth xsize xextra 2 mul sub def
+ /trxmin xmin xtr def /trxmax xmax xtr def
+} def
+
+% yset: set up all data for y axis, including limits and yticks
+% yticksep yticks 0 alldata ymin ymax ylog yextra ydecr yaxis yticklength yset -
+/yset
+{ /yticklength exch def
+ /yaxis exch def
+ /ydecr exch def
+ /yextra exch def
+ yaxis exch ticksandlimits
+ /ylog exch def /ymax exch def /ymin exch def /yticks exch def
+ /yleft ydecr { ymax } { ymin } ifelse def
+ /yright ydecr { ymin } { ymax } ifelse def
+ /ywidth ysize yextra 2 mul sub def
+ /trymin ymin ytr def /trymax ymax ytr def
+} def
+
+% rset: set up all data for y axis (again), but including limits and rticks
+% rticksep rticks 0 alldata ymin ymax ylog yextra ydecr yaxis rticklength rset -
+/rset
+{ /rticklength exch def
+ /yaxis exch def
+ /ydecr exch def
+ /yextra exch def
+ yaxis exch ticksandlimits
+ /ylog exch def /ymax exch def /ymin exch def /rticks exch def
+ /yleft ydecr { ymax } { ymin } ifelse def
+ /yright ydecr { ymin } { ymax } ifelse def
+ /ywidth ysize yextra 2 mul sub def
+ /trymin ymin ytr def /trymax ymax ytr def
+} def
+
+% norset: set up data for no rticks
+% - norset -
+/norset
+{ /rticklength 0 def
+ /rticks [] def
+} def
+
+% framestyle: print a frame around the graph
+/framestyle
+{ 0 0 moveto xsize 0 lineto xsize ysize lineto
+ 0 ysize lineto closepath stroke
+ /printxtick /printxlabel xticks xleft printticks
+ /printytick /printylabel yticks ymin printticks
+ /printrtick /printrlabel rticks ymin printticks
+} def
+
+% gridstyle: print a frame around the graph, plus a grid
+/gridstyle
+{ 0 0 moveto xsize 0 lineto xsize ysize lineto
+ 0 ysize lineto closepath stroke
+ /printxgrid /printxlabel xticks xleft printticks
+ /printygrid /printylabel yticks ymin printticks
+ /printrtick /printrlabel rticks ymin printticks
+} def
+
+% nonestyle: print nothing around the graph
+/nonestyle
+{
+} def
+
+% axesstyle: print axes for the graph (unless axis values missing)
+/axesstyle
+{
+ xaxis false eq yaxis false eq or
+ { framestyle }
+ { xaxis yaxis trpoint dup 0 exch moveto xsize exch lineto
+ dup 0 moveto ysize lineto stroke
+ /printxaxistick /printxaxislabel xticks xleft printticks
+ /printyaxistick /printyaxislabel yticks ymin printticks
+ } ifelse
+} def
+
+% rundata: run all data sets
+/rundata
+{ alldata
+ { gsave
+ dup dup dup dup dup
+ 5 get /texture exch def
+ 4 get /dopaint exch def
+ 3 get /initrun exch def
+ 2 get /pairs exch def
+ 1 get /points exch def
+ 0 get /data exch def
+ dopaint
+ { data length 4 ge
+ {
+ gsave
+ initrun
+ newpath
+ data 0 get ymin trpoint yextra sub moveto
+ 0 2 data length 2 sub
+ { dup 1 add
+ data exch get /ycurr exch def
+ data exch get /xcurr exch def
+ xcurr ycurr trpoint lineto
+ } for
+ data dup length 2 sub get ymin trpoint yextra sub lineto
+ closepath texture fill
+ grestore
+ } if
+ } if
+ initrun
+ data length 2 ge
+ {
+ /xcurr data 0 get def
+ /ycurr data 1 get def
+ points
+ data length 4 ge
+ { 2 2 data length 2 sub
+ { /xprev xcurr def
+ /yprev ycurr def
+ dup dup 2 eq /firstpair exch def
+ data length 2 sub eq /lastpair exch def
+ dup 1 add
+ data exch get /ycurr exch def
+ data exch get /xcurr exch def
+ pairs
+ points
+ } for
+ } if
+ } if
+ grestore
+ } forall
+} def
+
+end
+%%EndResource
+
+%%BeginResource: procset LoutBasicSetup
+% @PrependGraphic file /home/jeff/lout.lib/include/bsf.lpg
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% PostScript @SysPrependGraphic file for @BasicSetup %
+% %
+% This file has been placed in the public domain by its author, %
+% Jeffrey H. Kingston %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% width height linethickness louteuro -
+% draw a Euro symbol of this width and height with this line thickness
+/louteuro {
+ 20 dict begin
+ /eurothick exch def
+ /euroheight exch def
+ /eurowidth exch def
+ /eurostrokewidth euroheight 0.8 mul def
+ /eurostep eurothick 60 cos mul 60 sin div def
+ /eurotheta 40 def
+
+ % llx lly width thickness louteurobox -
+ % draw angled box starting at (llx, lly) with given width and thickness
+ /louteurobox
+ {
+ /euroboxthick exch def
+ /euroboxwidth exch def
+ newpath moveto euroboxwidth 0 rlineto
+ eurostep euroboxthick rlineto
+ euroboxwidth neg 0 rlineto closepath fill
+ } def
+
+ % lower cross stroke
+ 0 euroheight 2 div eurothick 1.5 mul sub
+ eurostrokewidth eurothick louteurobox
+
+ % upper cross stroke
+ 0 euroheight 2 div eurothick 0.5 mul add
+ eurostrokewidth eurostep 2 mul add eurothick louteurobox
+
+ % circular part
+ /eurohctr eurowidth euroheight 2 div eurotheta cos mul sub def
+ /eurovctr euroheight 2 div def
+ newpath
+ eurohctr eurovctr eurovctr eurotheta 350 eurotheta sub arc
+ eurohctr eurovctr eurovctr eurothick sub 365 eurotheta sub eurotheta arcn
+ closepath fill
+ end
+} def
+
+% path for @FullWidthRule symbol
+/LoutRule
+{ 0 0 moveto xsize 0 lineto
+} def
+
+% path for @Box symbol
+/LoutBox
+{ 0 0 moveto xsize 0 lineto
+ xsize ysize lineto 0 ysize lineto
+ closepath
+} def
+
+% path for @CurveBox symbol
+/LoutCurveBox
+{ xmark 0 moveto
+ xsize xmark sub xmark xmark 270 360 arc
+ xsize xmark sub ysize xmark sub xmark 0 90 arc
+ xmark ysize xmark sub xmark 90 180 arc
+ xmark xmark xmark 180 270 arc
+ closepath
+} def
+
+% path for @ShadowBox symbol
+/LoutShadowBox
+{ xmark 2 mul 0 moveto xsize 0 lineto
+ xsize ysize xmark 2 mul sub lineto
+ xsize xmark sub ysize xmark 2 mul sub lineto
+ xsize xmark sub xmark lineto
+ xmark 2 mul xmark lineto
+ closepath
+} def
+
+% set up dictionary containing margin note data: parity LoutMargSet -
+/LoutMargSet
+{ /LoutMargDict 12 dict def
+ LoutMargDict begin
+ /parity exch def
+ /matr matrix currentmatrix def
+ /rightx xsize def
+ /lefty ysize def % highest allowable point for top of next left note
+ /righty ysize def % highest allowable point for top of next right note
+ /max { 2 copy gt { pop } { exch pop } ifelse } def
+ /min { 2 copy lt { pop } { exch pop } ifelse } def
+ end
+} def
+
+%translate coordinate system for marginal notes: type LoutMargShift -
+% where type 0 is left margin, 1 is right margin, 2 is outer, 3 is inner
+/LoutMargShift
+{ LoutMargDict begin
+
+ % y coordinate of top of note, in margin coords, before vertical adjust
+ 0 ysize transform matr itransform exch pop
+
+ % decide whether left or right margin based on type and parity
+ exch [ 0 1 parity 1 parity sub ] exch get 0 eq
+ {
+ % left margin: adjust top of note downwards if overlaps previous note
+ lefty min
+
+ % bottom of note is new lefty position and also translate position
+ ysize sub dup /lefty exch def
+
+ % want right edge of note at coordinate zero
+ xsize neg exch
+ }
+ {
+ % right margin: adjust top of note downwards if overlaps previous note
+ righty min
+
+ % bottom of note is new righty position and also translate position
+ ysize sub dup /righty exch def
+
+ % want left edge of note at coordinate rightx
+ rightx exch
+ } ifelse
+
+ % stack now contains coord of bottom left corner in margin coordinates
+ matr setmatrix translate
+ end
+} def
+
+% create LoutPageDict with left, right, foot, top for @Place symbol users
+/LoutPageSet
+{
+ /LoutPageDict 5 dict def
+ LoutPageDict begin
+ /matr matrix currentmatrix def
+ /left 0 def
+ /right xsize def
+ /foot 0 def
+ /top ysize def
+ end
+
+} def
+
+%%EndResource
+
+%%EndProlog
+
+%%BeginSetup
+%%BeginResource: encoding vec2
+/vec2 [
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright
+/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
+/zero /one /two /three /four /five /six /seven
+/eight /nine /colon /semicolon /less /equal /greater /question
+/at /A /B /C /D /E /F /G
+/H /I /J /K /L /M /N /O
+/P /Q /R /S /T /U /V /W
+/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
+/quoteleft /a /b /c /d /e /f /g
+/h /i /j /k /l /m /n /o
+/p /q /r /s /t /u /v /w
+/x /y /z /braceleft /bar /braceright /asciitilde /.notdef
+/quotesinglbase /quotedblbase /ellipsis /OE /oe /quotedblleft /quotedblright /fi
+/fl /endash /emdash /bullet /dagger /daggerdbl /florin /fraction
+/dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent
+/dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek /caron
+/space /exclamdown /cent /sterling /currency /yen /brokenbar /section
+/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron
+/degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered
+/cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown
+/Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
+/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis
+/Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply
+/Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls
+/agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla
+/egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
+/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide
+/oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis
+] def
+%%EndResource
+
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+%%EndSetup
+
+%%Page: 1 1
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Helvetica
+%%+ font Helvetica-Oblique
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+%%IncludeResource: font Helvetica-Oblique
+/Helvetica-Obliquefnt3 vec2 /Helvetica-Oblique LoutRecode
+/fnt3 { /Helvetica-Obliquefnt3 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+gsave
+1417 -1417 translate
+0.0 0.0 0.0 LoutSetRGBColor
+9066 0 0 0 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+160 fnt1 0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10419(1)s gsave
+1417 -14005 translate
+400 fnt1
+9066 12053 0 12053 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+600 fnt2 691 10903(A)m 1250(Pr)s 6(actical)k 3667(Introduction)s
+6922(to)s 7566(the)s 3956 9463(Lout)m 616 8023(Document)m 3500(F)s 18(or)k -15(matting)k
+6490(System)s 400 fnt2 2882 6161(Jeffre)m 8(y)k 4180(H.)s
+4656(Kingston)s 400 fnt3 1395 5059(Basser)m 2794(Dept.)s 3834(of)s
+4333(Computer)s 6242(Science)s 2251 4579(The)m 3058(Univ)s 10(ersity)k
+4951(of)s 5450(Sydne)s 8(y)k
+grestore
+gsave
+1417 -14005 translate
+400 fnt1 0 0 0 0 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 2 2
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt4 vec2 /Times-Bold LoutRecode
+/fnt4 { /Times-Boldfnt4 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10407(2)s gsave
+1417 -14005 translate
+400 fnt1 9066 12053 0 12053 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+400 fnt4
+2988 11377(A)m 3363(simple)s 4565(input)s 5575(\207le)s
+[ /Dest /LOUT26_260_all_1 /DEST pdfmark
+360 fnt2
+800 9646(@SysInclude { doc })m 800 9166(@Doc @T)m 43(e)k 10(xt @Begin)k 800 8686(Hello)m 14(, w)k 3(or)k -5(ld)k
+800 8206(@End @T)m 43(e)k 10(xt)k 400 fnt4 0 6379(Ho)m 4(w)k
+889(to)s 1313(f)s 10(ormat)k 2579(it)s 360 fnt2
+800 5633(lout \207lename > out.ps)m 800 5153(ghostvie)m 7(w out.ps)k 800 4673(mpr out.ps)m
+grestore
+gsave
+1417 -14005 translate
+400 fnt1
+0 0 0 0 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 3 3
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10414(3)s gsave
+1417 -14005 translate
+400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+[ /Dest /LOUT26_260_all_2 /DEST pdfmark
+8640 10080 1440 8457 400 480 100 0 667 LoutGr2
+LoutBox stroke
+grestore
+1440 8367(Hello,)m
+2505(w)s 4(orld)k
+grestore
+
+grestore
+gsave
+1417 -14005 translate
+400 fnt1 0 0 0 0 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 4 4
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt4 vec2 /Times-Bold LoutRecode
+/fnt4 { /Times-Boldfnt4 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10407(4)s gsave
+1417 -14005 translate
+400 fnt1 9066 12053 0 12053 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+400 fnt4
+2339 11377(Headings)m 4026(and)s 4762(paragraphs)s
+[ /Dest /LOUT26_260_all_3 /DEST pdfmark
+360 fnt2 800 9646(@SysInclude { doc })m
+800 9166(@Doc @T)m 43(e)k 10(xt @Begin)k 800 8686(@Heading { Introduction })m 800 8206(@PP)m
+800 7726(The design of the Lout f)m 10(or)k -9(matting)k 800 7246(system w)m 5(as under)k -14(tak)k 7(en with the)k
+800 6766(needs of the @I { ordinar)m -10(y user })k 800 6286(v)m 9(er)k -10(y m)k 3(uch in mind.)k
+800 5806(@End @T)m 43(e)k 10(xt)k
+grestore
+gsave
+1417 -14005 translate
+400 fnt1 0 0 0 0 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 5 5
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt4 vec2 /Times-Bold LoutRecode
+/fnt4 { /Times-Boldfnt4 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt5 vec2 /Times-Italic LoutRecode
+/fnt5 { /Times-Italicfnt5 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1527(lout)m 10412(5)s gsave
+1417 -14005 translate
+400 fnt1 9066 12051 0 12051 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+[ /Dest /LOUT26_260_all_4 /DEST pdfmark
+8640 10080 1440 8456 400 480 100 0 666 LoutGr2
+LoutBox stroke
+grestore
+400 fnt4
+1440 8364(Intr)m 7(oduction)k 400 fnt1 2240 7742(The)m 2953(design)s
+4090(of)s 4543(the)s 5123(Lout)s 1440 7262(formatting)m 3215(system)s
+4423(w)s 4(as)k 5123(undertak)s 4(en)k 1440 6782(with)m
+2245(the)s 2825(needs)s 3818(of)s 4271(the)s 400 fnt5
+4851 6784(or)m 14(dinary)k 6328(user)s 400 fnt1 1440 6302(v)m 6(ery)k
+2234(much)s 3217(in)s 3622(mind.)s
+grestore
+
+grestore
+gsave
+1417 -14005 translate
+400 fnt1 0 0 0 0 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 6 6
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt4 vec2 /Times-Bold LoutRecode
+/fnt4 { /Times-Boldfnt4 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10408(6)s gsave
+1417 -14005 translate
+400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+400 fnt4
+3817 11376(Displays)m
+[ /Dest /LOUT26_260_all_5 /DEST pdfmark
+360 fnt2 800 9652(Y)m 50(ou cer)k -14(tainly don't w)k 5(ant to retur)k -9(n to)k
+800 9172(his of\207ce and repor)m -14(t:)k 800 8692(@IndentedDispla)m 10(y @I {)k 800 8212(`I can't \207nd an ef\207cient algor)m -5(ithm, I)k
+800 7732(guess I'm just too dumb)m 14(.)k 36(')k 800 7252(})m 800 6772(T)m 43(o a)k 7(v)k 9(oid ser)k -5(ious damage to y)k 7(our)k
+800 6292(position in the compan)m 5(y)k 36(, it w)k 3(ould)k 800 5812(be better if ...)m
+
+grestore
+gsave
+1417 -14005 translate
+400 fnt1 0 0 0 0 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 7 7
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt5 vec2 /Times-Italic LoutRecode
+/fnt5 { /Times-Italicfnt5 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10411(7)s gsave
+1417 -14005 translate
+400 fnt1 9066 12053 0 12053 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+[ /Dest /LOUT26_260_all_6 /DEST pdfmark
+8640 10080 1440 8457 400 480 100 0 668 LoutGr2
+LoutBox stroke
+grestore
+1440 8367(Y)m 44(ou)k
+2173(certainly)s 3657(don')s 7(t)k 4591(w)s 4(ant)k
+5460(to)s 5856(return)s 6901(to)s 1440 7887(his)m 1990(of\207ce)s
+2991(and)s 3665(report:)s 400 fnt5 2240 7048(`I)m 2626(can')s 12(t)k
+3542(\207nd)s 4252(an)s 4742(ef\207cient)s 2240 6568(algorithm,)m 3970(I)s
+4223(guess)s 5201(I'm)s 5848(just)s 6532(too)s 2240 6088(dumb)m 16(.)k 56(')k
+400 fnt1 1440 5330(T)m 32(o)k 1940(a)s 8(v)k 8(oid)k
+2909(serious)s 4124(damage)s 5458(to)s 5857(your)s 1440 4850(position)m
+2822(in)s 3227(the)s 3807(compan)s 6(y)k 26(,)k
+5418(it)s 5740(w)s 4(ould)k 6831(be)s 1440 4370(better)m
+2449(if)s 2813(\202)s
+grestore
+
+grestore
+gsave
+1417 -14005 translate
+400 fnt1 0 0 0 0 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 8 8
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt4 vec2 /Times-Bold LoutRecode
+/fnt4 { /Times-Boldfnt4 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10411(8)s gsave
+1417 -14005 translate
+400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+400 fnt4
+2299 11376(P)m 4(aragraph)k 4229(br)s 7(eaking)k 5847(styles)s
+
+[ /Dest /LOUT26_260_all_7 /DEST pdfmark
+360 fnt2 800 9652(Y)m 50(ou cer)k -14(tainly don't w)k 5(ant to retur)k -9(n to)k
+800 9172(his of\207ce and repor)m -14(t:)k 800 8692(@ID { r)m 3(agged noh)k 10(yphen } @Break @I {)k
+800 8212(`I can't \207nd an ef\207cient algor)m -5(ithm, I)k 800 7732(guess I'm just too dumb)m 14(.)k 36(')k
+800 7252(})m 800 6772(T)m 43(o a)k 7(v)k 9(oid ser)k -5(ious damage to y)k 7(our)k
+800 6292(position in the compan)m 5(y)k 36(, it w)k 3(ould)k 800 5812(be better if ...)m
+
+grestore
+gsave
+1417 -14005 translate
+400 fnt1 0 0 0 0 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 9 9
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt5 vec2 /Times-Italic LoutRecode
+/fnt5 { /Times-Italicfnt5 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10409(9)s gsave
+1417 -14005 translate
+400 fnt1 9066 12051 0 12051 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+[ /Dest /LOUT26_260_all_8 /DEST pdfmark
+8640 10080 1440 8457 400 480 100 0 666 LoutGr2
+LoutBox stroke
+grestore
+1440 8367(Y)m 44(ou)k
+2173(certainly)s 3657(don')s 7(t)k 4591(w)s 4(ant)k
+5460(to)s 5856(return)s 6901(to)s 1440 7887(his)m 1990(of\207ce)s
+2991(and)s 3665(report:)s 400 fnt5 2240 7048(`I)m 2626(can')s 12(t)k
+3542(\207nd)s 4252(an)s 4742(ef\207cient)s 2240 6568(algorithm,)m 3970(I)s
+4223(guess)s 5201(I'm)s 5848(just)s 6532(too)s 2240 6088(dumb)m 16(.)k 56(')k
+400 fnt1 1440 5330(T)m 32(o)k 1940(a)s 8(v)k 8(oid)k
+2909(serious)s 4124(damage)s 5458(to)s 5857(your)s 1440 4850(position)m
+2822(in)s 3227(the)s 3807(compan)s 6(y)k 26(,)k
+5418(it)s 5740(w)s 4(ould)k 6831(be)s 1440 4370(better)m
+2449(if)s 2813(\202)s
+grestore
+
+grestore
+gsave
+1417 -14005 translate
+400 fnt1 0 0 0 0 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 10 10
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt4 vec2 /Times-Bold LoutRecode
+/fnt4 { /Times-Boldfnt4 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10326(10)s gsave
+1417 -14005 translate
+400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+400 fnt4
+4128 11376(Lists)m
+[ /Dest /LOUT26_260_all_9 /DEST pdfmark
+360 fnt2 800 9722(@Heading { Oper)m 3(ating Instr)k -5(uctions })k
+800 9242(@NumberedList)m 800 8762(@ListItem { Press small g)m 3(reen le)k 10(v)k 9(er)k 18(.)k 21( })k
+800 8282(@ListItem { )m 14(W)k 14(ait appro)k 10(ximately 10 seconds)k 800 7802(until red light \210ashes)m 5(.)k 21( })k
+800 7322(@ListItem { If smok)m 7(e emerges from rear of unit,)k 800 6842(call Ser)m -10(vice Depar)k -14(tment.)k 21( })k
+800 6362(@EndList)m
+grestore
+gsave
+1417 -14005 translate
+400 fnt1 0 0 0 0 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 11 11
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt4 vec2 /Times-Bold LoutRecode
+/fnt4 { /Times-Boldfnt4 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10339(11)s gsave
+1417 -14005 translate
+400 fnt1 9066 12053 0 12053 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+[ /Dest /LOUT26_260_all_10 /DEST pdfmark
+8640 10080 1440 8456 400 480 100 0 668 LoutGr2
+LoutBox stroke
+grestore
+400 fnt4
+1440 8364(Operating)m 3287(Instructions)s 400 fnt1 1440 7529(1.)m 2240(Press)s
+3166(small)s 4123(green)s 5104(le)s 10(v)k 6(er)k 22(.)k
+
+[ /Dest /LOUT22_1794_all_1 /DEST pdfmark
+1440 6689(2.)m 2240(W)s 32(ait)k 3077(approximately)s 5468(10)s
+5952(seconds)s 2240 6209(until)m 3065(red)s 3672(light)s 4505(\210ashes.)s
+
+[ /Dest /LOUT22_1794_all_2 /DEST pdfmark
+1440 5369(3.)m 2240(If)s 2626(smok)s 4(e)k 3757(emer)s 7(ges)k
+5164(from)s 6040(rear)s 6760(of)s 2240 4889(unit,)m 3040(call)s
+3708(Service)s 4997(Department.)s
+[ /Dest /LOUT22_1794_all_3 /DEST pdfmark
+
+grestore
+
+grestore
+gsave
+1417 -14005 translate
+400 fnt1 0 0 0 0 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 12 12
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt4 vec2 /Times-Bold LoutRecode
+/fnt4 { /Times-Boldfnt4 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10327(12)s gsave
+1417 -14005 translate
+400 fnt1 9066 12053 0 12053 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+400 fnt4
+3062 11377(T)m 36(echnical)k 4780(r)s 7(eports)k
+[ /Dest /LOUT26_260_all_11 /DEST pdfmark
+360 fnt2
+800 9646(@SysInclude { repor)m -14(t })k 800 9166(@Repor)m -14(t)k 800 8686( @Title { ...)m 21( })k
+800 8206( @A)m 10(uthor { ...)k 21( })k 800 7726( @Institution { ...)m 21( })k
+800 7246( @DateLine { ...)m 21( })k 800 6766(//)m 800 6286(@Abstr)m 3(act { ...)k 21( })k
+800 5806(@Section { ...)m 21( })k 800 5326(@Section { ...)m 21( })k 800 4846(@Section { ...)m 21( })k
+800 4366(@Appendix { ...)m 21( })k 800 3886(@Appendix { ...)m 21( })k
+grestore
+gsave
+1417 -14005 translate
+400 fnt1
+0 0 0 0 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 13 13
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt4 vec2 /Times-Bold LoutRecode
+/fnt4 { /Times-Boldfnt4 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10334(13)s gsave
+1417 -14005 translate
+400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+400 fnt4
+3840 11376(Sections)m
+[ /Dest /LOUT26_260_all_12 /DEST pdfmark
+360 fnt2 800 9720(@Section)m 800 9240( @T)m 43(ag { dfs })k
+800 8760( @Title { Depth-\207rst search })m 800 8280(@Begin)m 800 7800(@PP)m 800 7320(W)m 10(e tur)k -9(n no)k 5(w to our \207rst algor)k -5(ithm)k
+800 6840(on gener)m 3(al g)k 3(r)k 3(aphs ...)k 800 6360(@End @Section)m
+
+grestore
+gsave
+1417 -14005 translate
+400 fnt1 0 0 0 0 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 14 14
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt4 vec2 /Times-Bold LoutRecode
+/fnt4 { /Times-Boldfnt4 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10327(14)s gsave
+1417 -14005 translate
+400 fnt1 9066 12053 0 12053 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+[ /Dest /LOUT26_260_all_13 /DEST pdfmark
+8640 10080 1440 8456 400 480 100 0 668 LoutGr2
+LoutBox stroke
+grestore
+400 fnt4
+1440 8364(10.6.)m 2424(Depth-\207rst)s 4386(sear)s 7(ch)k 400 fnt1
+2240 7742(W)m 32(e)k 2854(turn)s 3592(no)s 10(w)k
+4359(to)s 4758(our)s 5391(\207rst)s 1440 7262(algorithm)m 3093(on)s
+3587(general)s 4854(graphs)s 6003(\202)s
+grestore
+
+grestore
+gsave
+1417 -14005 translate
+400 fnt1 0 0 0 0 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 15 15
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt4 vec2 /Times-Bold LoutRecode
+/fnt4 { /Times-Boldfnt4 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1527(lout)m 10332(15)s gsave
+1417 -14005 translate
+400 fnt1 9066 12051 0 12051 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+400 fnt4
+3142 11375(Cr)m 7(oss)k 4199(r)s 7(efer)k 7(ences)k
+
+[ /Dest /LOUT26_260_all_14 /DEST pdfmark
+360 fnt2 800 9722(F)m 10(or fur)k -14(ther inf)k 10(or)k -9(mation, consult)k
+800 9242(Section @NumberOf dfs on page)m 800 8762(@P)m 14(ageOf { dfs }.)k
+grestore
+gsave
+1417 -14005 translate
+400 fnt1 0 0 0 0 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 16 16
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10328(16)s gsave
+1417 -14005 translate
+400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+[ /Dest /LOUT26_260_all_15 /DEST pdfmark
+8640 10080 1440 8457 400 480 100 0 667 LoutGr2
+LoutBox stroke
+grestore
+1440 8367(F)m 6(or)k
+2089(further)s 3276(information,)s 5341(consult)s 1440 7887(Section)m 2732(10.6)s
+3520(on)s 4014(page)s 4860(245.)s
+grestore
+
+grestore
+gsave
+1417 -14005 translate
+400 fnt1 0 0 0 0 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 17 17
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt4 vec2 /Times-Bold LoutRecode
+/fnt4 { /Times-Boldfnt4 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10331(17)s gsave
+1417 -14005 translate
+400 fnt1 9066 12053 0 12053 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+400 fnt4
+3612 11377(Refer)m 7(ences)k
+[ /Dest /LOUT26_260_all_16 /DEST pdfmark
+360 fnt2 800 9723(@Database @Ref)m 10(erence { m)k 5(yrefs })k
+800 9243(...)m 800 8763(F)m 10(or the details)k 5(, consult the User')k 18(s)k
+800 8283(Guide @Cite { $kingston1995lout.user }.)m
+grestore
+gsave
+1417 -14005 translate
+400 fnt1 0 0 0 0 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 18 18
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt4 vec2 /Times-Bold LoutRecode
+/fnt4 { /Times-Boldfnt4 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt5 vec2 /Times-Italic LoutRecode
+/fnt5 { /Times-Italicfnt5 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10331(18)s gsave
+1417 -14005 translate
+400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+[ /Dest /LOUT26_260_all_17 /DEST pdfmark
+8640 10080 1440 8457 400 480 100 0 667 LoutGr2
+LoutBox stroke
+grestore
+1440 8367(F)m 6(or)k
+2089(the)s 2669(details,)s 3889(consult)s 5143(the)s 5723(User')s 22(s)k
+1440 7887(Guide)m 2508([1].)s 1440 7263(\202)m 400 fnt4 1440 6637(Refer)m 7(ences)k
+400 fnt1 1440 5879(1.)m 2240(Jef)s 10(fre)k 6(y)k
+3422(H.)s 3883(Kingston.)s 400 fnt5 5621 5881(A)m 5947(User')s 16(s)k
+2240 5401(Guide)m 3304(to)s 3703(the)s 4279(Lout)s 5119(Document)s
+2240 4921(F)m 42(ormatting)k 4107(System)s 5308(\(V)s 44(er)k 4(sion)k
+2240 4441(3\))m 400 fnt1 2556 4439(.)m 2829(Basser)s 3992(Department)s
+5977(of)s 2240 3959(Computer)m 3938(Science)s 5171(,)s 5349(Uni)s 10(v)k 6(ersity)k
+2240 3479(of)m 2693(Sydne)s 6(y)k 3876(,)s 4054(1995)s
+4830(.)s
+[ /Dest /LOUT22_1794_all_4 /DEST pdfmark
+1440 2642(2.)m 2240(\202)s
+[ /Dest /LOUT22_1794_all_5 /DEST pdfmark
+
+grestore
+
+grestore
+gsave
+1417 -14005 translate
+400 fnt1 0 0 0 0 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 19 19
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt4 vec2 /Times-Bold LoutRecode
+/fnt4 { /Times-Boldfnt4 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10329(19)s gsave
+1417 -14005 translate
+400 fnt1 9066 12051 0 12051 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+400 fnt4
+2601 11375(Database)m 4269(\207le)s 4872(myr)s 7(efs.ld)k
+[ /Dest /LOUT26_260_all_18 /DEST pdfmark
+360 fnt2
+800 9644({ @Ref)m 10(erence)k 800 9164( @T)m 43(ag { kingston1995lout.user })k 800 8684( @T)m 43(ype { Book })k
+800 8204( @A)m 10(uthor { Jeffre)k 7(y H.)k 21( Kingston })k 800 7724( @Title { A User')m 18(s Guide to the Lout)k
+800 7244(Document F)m 10(or)k -9(matting System \(V)k 28(ersion 3\) })k 800 6764( @Institution { Basser Depar)m -14(tment of)k
+800 6284(Computer Science })m 800 5804( @Address { Univ)m 9(ersity of Sydne)k 7(y)k 800 5324(2006, A)m 10(ustr)k 3(alia })k
+800 4844( @Y)m 50(ear { 1994 })k 800 4364(})m
+grestore
+gsave
+1417 -14005 translate
+400 fnt1 0 0 0 0 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 20 20
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt4 vec2 /Times-Bold LoutRecode
+/fnt4 { /Times-Boldfnt4 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10326(20)s gsave
+1417 -14005 translate
+400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+400 fnt4
+2965 11375(Books)m 4097(\(and)s 4966(theses\))s
+[ /Dest /LOUT26_260_all_19 /DEST pdfmark
+400 fnt1 0 9650(\213)m
+800(T)s 14(itle)k 1632(page,)s 2564(pref)s 4(ace,)k
+3912(introduction)s
+[ /Dest /LOUT22_1794_all_6 /DEST pdfmark
+0 8810(\213)m 800(Automatic)s 2574(table)s 3442(of)s
+3895(contents)s
+[ /Dest /LOUT22_1794_all_7 /DEST pdfmark
+0 8053(\213)m 800(Pref)s 4(atory)k 2372(pages)s
+3365(numbered)s 5060(in)s 5465(Roman)s 6713(numerals)s
+[ /Dest /LOUT22_1794_all_8 /DEST pdfmark
+0 7213(\213)m
+800(Chapters,)s 2397(sections,)s 3861(subsections,)s 5880(appendices)s
+[ /Dest /LOUT22_1794_all_9 /DEST pdfmark
+0 6374(\213)m
+800(References)s 2656(at)s 3044(end)s 3718(of)s 4171(chapters)s
+5585(or)s 6018(book)s
+[ /Dest /LOUT22_1794_all_10 /DEST pdfmark
+0 5535(\213)m 800(Running)s 2265(page)s
+3111(headers)s
+[ /Dest /LOUT22_1794_all_11 /DEST pdfmark
+0 4695(\213)m 800(Odd-e)s 10(v)k 6(en)k
+2453(page)s 3299(formats)s
+[ /Dest /LOUT22_1794_all_12 /DEST pdfmark
+0 3855(\213)m 800(Sorted)s 1940(inde)s 6(x)k
+
+[ /Dest /LOUT22_1794_all_13 /DEST pdfmark
+
+grestore
+gsave
+1417 -14005 translate
+400 fnt1 0 0 0 0 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 21 21
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt4 vec2 /Times-Bold LoutRecode
+/fnt4 { /Times-Boldfnt4 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10339(21)s gsave
+1417 -14005 translate
+400 fnt1 9066 12053 0 12053 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+400 fnt4
+2631 11377(Making)m 4057(a)s 4353(sorted)s 5509(index)s
+[ /Dest /LOUT26_260_all_20 /DEST pdfmark
+360 fnt2
+800 9646(@PP)m 800 9166(There are se)m 10(v)k 9(er)k 3(al possib)k 7(le w)k 5(a)k 10(ys to implement the)k
+800 8686(@I P)m 14(ar)k -14(tition procedure)k 5(,)k 800 8206(par)m -14(tition @Inde)k 10(x { @I P)k 14(ar)k -14(tition \(in {@I Quic)k 7(ksor)k -14(t}\) })k
+800 7726(b)m 7(ut the f)k 10(ollo)k 5(wing seems to be the best.)k 21( Star)k -14(ting ...)k
+
+grestore
+gsave
+1417 -14005 translate
+400 fnt1 0 0 0 0 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 22 22
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt4 vec2 /Times-Bold LoutRecode
+/fnt4 { /Times-Boldfnt4 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt5 vec2 /Times-Italic LoutRecode
+/fnt5 { /Times-Italicfnt5 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10327(22)s gsave
+1417 -14005 translate
+400 fnt1 9066 12053 0 12053 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+[ /Dest /LOUT26_260_all_21 /DEST pdfmark
+8640 10080 1440 8462 400 480 100 0 668 LoutGr2
+LoutBox stroke
+grestore
+400 fnt4
+1440 8370(Index)m 400 fnt1 1440 7795(\202)m 1440 7315(partial)m 2552(order)s 16(,)k
+3557(227)s 400 fnt5 1440 6837(P)m 32(artition)k 400 fnt1
+2941 6835(\(in)m 400 fnt5 3479 6837(Quic)m 8(ksort)k 400 fnt1
+5052 6835(\),)m 5363(189)s 1440 6355(postorder)m 3049(tra)s 8(v)k 6(ersal)k
+1840 5875(of)m 2293(binary)s 3404(tree,)s 4180(19)s 1840 5395(topological)m
+3730(ordering,)s 5262(229)s 1440 4915(\202)m
+grestore
+
+grestore
+gsave
+1417 -14005 translate
+400 fnt1 0 0 0 0 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 23 23
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt4 vec2 /Times-Bold LoutRecode
+/fnt4 { /Times-Boldfnt4 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10334(23)s gsave
+1417 -14005 translate
+400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+400 fnt4
+2785 11376(Equation)m 4455(f)s 10(ormatting)k
+[ /Dest /LOUT26_260_all_22 /DEST pdfmark
+360 fnt2 800 9645(@SysInclude { eq })m
+800 9165(...)m 800 8685(Since @Eq { )m 18(T\(n-i\) = )k 18(T\(0\) = 0 } w)k 3(e ha)k 7(v)k 9(e)k
+800 8205(@IndentedDispla)m 10(y @Eq {)k 800 7725(T\(n\) = big sum from i=0 to n-1 2 sup i = 2 sup n - 1)m 800 7245(})m 800 6765(f)m 10(or the n)k 3(umber of disk mo)k 5(v)k 9(es made b)k 7(y the )k 18(T)k 43(o)k 5(w)k 3(ers)k
+800 6285(of Hanoi algor)m -5(ithm, giv)k 9(en @Eq { n } disks)k 5(.)k
+grestore
+gsave
+1417 -14005 translate
+400 fnt1
+0 0 0 0 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 24 24
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Symbol
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt5 vec2 /Times-Italic LoutRecode
+/fnt5 { /Times-Italicfnt5 LoutFont } def
+%%IncludeResource: font Symbol
+/fnt6 { /Symbol LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10327(24)s gsave
+1417 -14005 translate
+400 fnt1 9066 12053 0 12053 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+[ /Dest /LOUT26_260_all_23 /DEST pdfmark
+8640 10080 1440 8457 400 480 100 0 668 LoutGr2
+LoutBox stroke
+grestore
+1440 8367(Since)m
+400 fnt5 2419 8369(T)m 400 fnt6 2691 8357(\()m 400 fnt5
+2831 8369(n)m 400 fnt6 3141 8357(-)m 400 fnt5 3475 8369(i)m
+400 fnt6 3601 8357(\))m 3852(=)s 400 fnt5 4207 8369(T)m
+400 fnt6 4479 8357(\()m 4619(0)s 4828(\))s 5079(=)s
+5434(0)s 400 fnt1 5723 8367(we)m 6280(ha)s 8(v)k 6(e)k
+400 fnt5 2240 7204(T)m 400 fnt6 2512 7192(\()m 400 fnt5
+2652 7204(n)m 400 fnt6 2862 7192(\))m 3113(=)s 280 fnt5
+3468 7622(n)m 280 fnt6 3640 7613(-)m 3829(1)s 520 fnt6
+3522 7162(\345)m 280 fnt5 3483 6864(i)m 280 fnt6 3599 6855(=)m
+3791(0)s 280 fnt5 4149 7367(i)m 400 fnt6 3959 7192(2)m
+4363(=)s 280 fnt5 4908 7400(n)m 400 fnt6 4718 7192(2)m
+5161(-)s 5495(1)s 400 fnt1 1440 6098(for)m 2006(the)s
+2586(number)s 3907(of)s 4360(disk)s 5128(mo)s 6(v)k 6(es)k
+6243(made)s 1440 5618(by)m 1930(the)s 2510(T)s 32(o)k 10(wers)k
+3749(of)s 4202(Hanoi)s 5268(algorithm,)s 1440 5138(gi)m 10(v)k 6(en)k
+400 fnt5 2406 5140(n)m 400 fnt1 2696 5138(disks.)m
+grestore
+
+grestore
+gsave
+1417 -14005 translate
+400 fnt1
+0 0 0 0 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 25 25
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt4 vec2 /Times-Bold LoutRecode
+/fnt4 { /Times-Boldfnt4 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1527(lout)m 10332(25)s gsave
+1417 -14005 translate
+400 fnt1 9066 12051 0 12051 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+400 fnt4
+3035 11375(Another)m 4550(equation)s
+[ /Dest /LOUT26_260_all_24 /DEST pdfmark
+360 fnt2 800 9644(@CenteredDispla)m 10(y @Eq {)k
+800 9164(big int supp 1 on 0 )m 21(`)k 800 8684(dx o)m 5(v)k 9(er sqr)k -14(t { 1 - x sup 2 })k
+800 8204(= pi o)m 5(v)k 9(er 2)k 800 7724(})m
+grestore
+gsave
+1417 -14005 translate
+400 fnt1
+0 0 0 0 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 26 26
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Symbol
+%%+ font Times-Italic
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Symbol
+/fnt6 { /Symbol LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt5 vec2 /Times-Italic LoutRecode
+/fnt5 { /Times-Italicfnt5 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10328(26)s gsave
+1417 -14005 translate
+400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+[ /Dest /LOUT26_260_all_25 /DEST pdfmark
+8640 10080 1440 8640 400 480 100 0 667 LoutGr2
+LoutBox stroke
+grestore
+676 fnt6
+3159 7423(\362)m 280 fnt6 3355 7972(1)m 3355 7281(0)m 400 fnt5
+3991 7782(dx)m 1187 0 0 0 400 480 20 3587 7697 LoutGr2
+0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke
+grestore
+
+grestore
+gsave
+0 7292 translate
+1.0000 1.2231 scale
+400 fnt6 3587 -100(\326)m
+grestore
+981 0 0 0 400 480 20 3793 7617 LoutGr2
+0 0 moveto xsize 0 lineto 0.03 ft setlinewidth 2 setlinecap stroke
+grestore
+
+grestore
+400 fnt6 3853 7251(1)m
+4129(-)s 280 fnt6 4641 7365(2)m 400 fnt5 4463 7263(x)m
+400 fnt6 4914 7597(=)m 5269 7784(p)m gsave
+5269 7697 translate
+400 fnt5 212 0 0 0 400 480 20 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke
+grestore
+
+grestore
+5280 7317(2)m
+
+grestore
+
+grestore
+gsave
+1417 -14005 translate
+400 fnt1 0 0 0 0 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 27 27
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt4 vec2 /Times-Bold LoutRecode
+/fnt4 { /Times-Boldfnt4 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10331(27)s gsave
+1417 -14005 translate
+400 fnt1 9066 12053 0 12053 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+400 fnt4
+3991 11383(T)m 36(ables)k
+[ /Dest /LOUT26_260_all_26 /DEST pdfmark
+360 fnt2 800 9729(@SysInclude { tab })m 800 9249(...)m
+800 8769(@T)m 43(ab)k 800 8289( @Fmta { @Col @I A ! @Col B })m 800 7809({)m 800 7329(@Ro)m 5(w)k 5(a)k
+800 6849( A { F)m 10(or)k -14(tr)k 3(an })k 800 6369( B { )m 18(The \207rst ...)k 21( language })k
+800 5889(@Ro)m 5(w)k 5(a)k 800 5409( A { Algol-60 })m 800 4929( B { Said to be ...)m 21( successors })k
+800 4449(@Ro)m 5(w)k 5(a)k 800 3969( A { P)m 14(ascal })k
+800 3489( B { )m 18(The f)k 10(amous ...)k 21( successors })k 800 3009(})m
+
+grestore
+gsave
+1417 -14005 translate
+400 fnt1 0 0 0 0 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 28 28
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt5 vec2 /Times-Italic LoutRecode
+/fnt5 { /Times-Italicfnt5 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10331(28)s gsave
+1417 -14005 translate
+400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+[ /Dest /LOUT26_260_all_27 /DEST pdfmark
+8640 10080 1440 8640 400 480 100 0 667 LoutGr2
+LoutBox stroke
+grestore
+400 fnt5
+1440 8177(F)m 42(ortr)k 6(an)k 400 fnt1 3178 8175(The)m
+3891(\207rst)s 4612(high-le)s 10(v)k 6(el)k 3178 7695(programming)m
+5442(language)s 400 fnt5 1440 6950(Algol-60)m 400 fnt1 3178 6948(Said)m
+3985(to)s 4384(be)s 4853(a)s 5130(better)s 3178 6468(language)m
+4712(than)s 5494(most)s 6371(of)s 6824(its)s 3178 5988(successors)m
+400 fnt5 1440 5327(P)m 32(ascal)k 400 fnt1 3178 5325(The)m
+3891(most)s 4768(f)s 4(amous)k 6024(of)s 3178 4845(Algol-60')m 22(s)k
+4971(successors)s
+grestore
+
+grestore
+gsave
+1417 -14005 translate
+400 fnt1 0 0 0 0 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 29 29
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt4 vec2 /Times-Bold LoutRecode
+/fnt4 { /Times-Boldfnt4 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10329(29)s gsave
+1417 -14005 translate
+400 fnt1 9066 12051 0 12051 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+400 fnt4
+3357 11375(Another)m 4872(table)s
+[ /Dest /LOUT26_260_all_28 /DEST pdfmark
+360 fnt2 800 10201(@T)m 43(ab)k
+800 9721( hmargin { 0.4c })m 800 9241( vmargin { 0.3v })m 800 8761( side { single })m 800 8281( @Fmta { @Col @B @CC X @Ov)m 9(er A,B)k 7(,C })k
+800 7801( @Fmtb { @Col @I A ! @Col B !! @Col C })m 800 7321({)m 800 6361(@Ro)m 5(w)k 5(a abo)k 5(v)k 9(e { single })k
+800 5881( X { )m 18(V)k 25(alue of mathematical ...)k 21( dollars\) })k 800 4921(@Ro)m 5(wb abo)k 5(v)k 9(e { doub)k 7(le })k
+800 4441( A { Quadr)m 3(atic f)k 10(or)k -9(m)k 3(ula })k
+800 3961( B { @Eq { x ^= { ...)m 21( } o)k 5(v)k 9(er 2a } })k 800 3481( C { 3^.5 })m
+800 2521(@Ro)m 5(wb belo)k 5(w { single })k 800 2041( A { Binomial theorem })m 800 1561( B { @Eq { \( a + b \) sup n ^= ...)m 21( b sup n-k } })k
+800 1081( C { 12^ })m 800 601(})m
+grestore
+gsave
+1417 -14005 translate
+400 fnt1 0 0 0 0 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 30 30
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Symbol
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt4 vec2 /Times-Bold LoutRecode
+/fnt4 { /Times-Boldfnt4 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt5 vec2 /Times-Italic LoutRecode
+/fnt5 { /Times-Italicfnt5 LoutFont } def
+%%IncludeResource: font Symbol
+/fnt6 { /Symbol LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10326(30)s gsave
+1417 -14005 translate
+400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+[ /Dest /LOUT26_260_all_29 /DEST pdfmark
+8640 10080 1440 8640 400 480 100 0 667 LoutGr2
+LoutBox stroke
+grestore
+gsave
+1440 8640 translate
+0.5977 0.5977 scale
+0 144 0 144 400 480 100 0 -144 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+226 0 0 0 400 480 100 0 0 LoutGr2
+0.5 pt ltabhsp
+grestore
+
+grestore
+0 344 0 159 400 480 100 0 -488 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 144 0 0 400 480 100 0 -632 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+8889 0 0 0 400 480 100 226 0 LoutGr2
+0.5 pt ltabhs
+grestore
+
+grestore
+400 fnt4
+226 -421(V)m 36(alue)k 1281(of)s 1736(mathematical)s 4157(f)s 10(ormulae)k
+5793(\(millions)s 7369(of)s 7824(dollars\))s gsave
+9115 0 translate
+400 fnt1 226 0 0 0 400 480 100 LoutGraphic
+gsave
+0.5 pt ltabhsp
+grestore
+
+grestore
+gsave
+9341 -144 translate
+400 fnt1
+296 144 0 144 400 480 100 LoutGraphic
+gsave
+0.5 pt ltabvs
+grestore
+
+grestore
+gsave
+9341 -488 translate
+400 fnt1 296 344 0 159 400 480 100 LoutGraphic
+gsave
+0.5 pt ltabvs
+grestore
+
+grestore
+gsave
+9341 -632 translate
+400 fnt1 296 144 0 0 400 480 100 LoutGraphic
+gsave
+0.5 pt ltabvs
+grestore
+
+grestore
+gsave
+0 -776 translate
+400 fnt1 0 144 0 144 400 480 100 LoutGraphic
+gsave
+0.5 pt ltabvs
+grestore
+
+grestore
+gsave
+0 -632 translate
+400 fnt1 226 0 0 0 400 480 100 LoutGraphic
+gsave
+0.5 pt ltabhd
+grestore
+
+grestore
+gsave
+0 -1867 translate
+400 fnt1
+0 1091 0 480 400 480 100 LoutGraphic
+gsave
+0.5 pt ltabvs
+grestore
+
+grestore
+gsave
+0 -2011 translate
+400 fnt1 0 144 0 0 400 480 100 LoutGraphic
+gsave
+0.5 pt ltabvs
+grestore
+
+grestore
+gsave
+226 -632 translate
+400 fnt1 2985 0 0 0 400 480 100 LoutGraphic
+gsave
+0.5 pt ltabhd
+grestore
+
+grestore
+400 fnt5 226 -1475(Quadr)m 6(atic)k
+1955(formula)s gsave
+3211 -632 translate
+400 fnt1 226 0 0 0 400 480 100 LoutGraphic
+gsave
+0.5 pt ltabhd
+grestore
+
+grestore
+gsave
+3437 -632 translate
+400 fnt1 226 0 0 0 400 480 100 LoutGraphic
+gsave
+0.5 pt ltabhd
+grestore
+
+grestore
+gsave
+3663 -632 translate
+400 fnt1 4255 0 1260 0 400 480 100 LoutGraphic
+gsave
+0.5 pt ltabhd
+grestore
+
+grestore
+4725(x)s
+400 fnt6 5063 -1487(=)m 5418 -1207(-)m 400 fnt5 5652 -1195(b)m
+400 fnt6 5962 -1207(\261)m gsave
+0 -1146 translate
+1.0000 1.3937 scale
+6297 -100(\326)m
+grestore
+gsave
+6503 -776 translate
+400 fnt5 1415 0 0 0 400 480 20 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto 0.03 ft setlinewidth 2 setlinecap stroke
+grestore
+
+grestore
+280 fnt6
+6753 -1028(2)m 400 fnt5 6563 -1195(b)m 400 fnt6 7006 -1207(-)m
+7340(4)s 400 fnt5 7548 -1195(ac)m 2500 0 0 0 400 480 20 5418 -1387 LoutGr2
+0 0 moveto xsize 0 lineto 0.05 ft setlinewidth stroke
+grestore
+
+grestore
+400 fnt6 6467 -1767(2)m
+400 fnt5 6677 -1755(a)m gsave
+7918 -632 translate
+400 fnt1 226 0 0 0 400 480 100 LoutGraphic
+gsave
+0.5 pt ltabhd
+grestore
+
+grestore
+gsave
+8144 -776 translate
+400 fnt1 0 144 0 144 400 480 100 LoutGraphic
+gsave
+0.5 pt ltabvs
+grestore
+
+grestore
+gsave
+8144 -632 translate
+400 fnt1
+226 0 0 0 400 480 100 LoutGraphic
+gsave
+0.5 pt ltabhd
+grestore
+
+grestore
+gsave
+8144 -1867 translate
+400 fnt1 0 1091 0 480 400 480 100 LoutGraphic
+gsave
+0.5 pt ltabvs
+grestore
+
+grestore
+gsave
+8144 -2011 translate
+400 fnt1 0 144 0 0 400 480 100 LoutGraphic
+gsave
+0.5 pt ltabvs
+grestore
+
+grestore
+gsave
+8370 -632 translate
+400 fnt1 745 0 390 0 400 480 100 LoutGraphic
+gsave
+0.5 pt ltabhd
+grestore
+
+grestore
+400 fnt1 8587 -1477(3)m
+8760(.5)s 226 0 0 0 400 480 100 9115 -632 LoutGr2
+0.5 pt ltabhd
+grestore
+
+grestore
+296 144 0 144 400 480 100 9341 -776 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+296 1091 0 480 400 480 100 9341 -1867 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+296 144 0 0 400 480 100 9341 -2011 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 144 0 144 400 480 100 0 -2155 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 863 0 449 400 480 100 0 -3018 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+0 144 0 0 400 480 100 0 -3162 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+226 0 0 0 400 480 100 0 -3162 LoutGr2
+0.5 pt ltabhsp
+grestore
+
+grestore
+400 fnt5 226 -2657(Binomial)m 1791(theor)s 14(em)k
+gsave
+226 -3162 translate
+400 fnt1 2985 0 0 0 400 480 100 LoutGraphic
+gsave
+0.5 pt ltabhs
+grestore
+
+grestore
+gsave
+3211 -3162 translate
+400 fnt1 226 0 0 0 400 480 100 LoutGraphic
+gsave
+0.5 pt ltabhs
+grestore
+
+grestore
+gsave
+3437 -3162 translate
+400 fnt1 226 0 0 0 400 480 100 LoutGraphic
+gsave
+0.5 pt ltabhs
+grestore
+
+grestore
+400 fnt6 3663 -2669(\()m
+400 fnt5 3803 -2657(a)m 400 fnt6 4114 -2669(+)m 400 fnt5
+4449 -2657(b)m 280 fnt5 4770 -2463(n)m 400 fnt6 4659 -2669(\))m
+5063(=)s 336 fnt6 5549 -2290(\245)m 520 fnt6 5484 -2699(\345)m
+280 fnt5 5418 -3005(k)m 280 fnt6 5588 -3014(=)m 5780(0)s
+gsave
+0 -2560 translate
+1.0000 2.3652 scale
+400 fnt6 5932 -100(\()m
+grestore
+400 fnt5 6112 -2417(n)m 6115 -2893(k)m
+gsave
+0 -2560 translate
+1.0000 2.3652 scale
+400 fnt6 6362 -100(\))m
+grestore
+280 fnt5 6684 -2501(k)m 400 fnt5
+6493 -2657(a)m 280 fnt5 7022 -2488(n)m 280 fnt6 7194 -2497(-)m
+280 fnt5 7383 -2488(k)m 400 fnt5 6832 -2657(b)m gsave
+3663 -3162 translate
+400 fnt1
+4255 0 1260 0 400 480 100 LoutGraphic
+gsave
+0.5 pt ltabhs
+grestore
+
+grestore
+gsave
+7918 -3162 translate
+400 fnt1 226 0 0 0 400 480 100 LoutGraphic
+gsave
+0.5 pt ltabhs
+grestore
+
+grestore
+gsave
+8144 -2155 translate
+400 fnt1 0 144 0 144 400 480 100 LoutGraphic
+gsave
+0.5 pt ltabvs
+grestore
+
+grestore
+gsave
+8144 -3018 translate
+400 fnt1 0 863 0 449 400 480 100 LoutGraphic
+gsave
+0.5 pt ltabvs
+grestore
+
+grestore
+gsave
+8144 -3162 translate
+400 fnt1 0 144 0 0 400 480 100 LoutGraphic
+gsave
+0.5 pt ltabvs
+grestore
+
+grestore
+gsave
+8144 -3162 translate
+400 fnt1
+226 0 0 0 400 480 100 LoutGraphic
+gsave
+0.5 pt ltabhs
+grestore
+
+grestore
+400 fnt1 8370 -2659(12)m 745 0 390 0 400 480 100 8370 -3162 LoutGr2
+0.5 pt ltabhs
+grestore
+
+grestore
+226 0 0 0 400 480 100 9115 -3162 LoutGr2
+0.5 pt ltabhsp
+grestore
+
+grestore
+296 144 0 144 400 480 100 9341 -2155 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+296 863 0 449 400 480 100 9341 -3018 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+296 144 0 0 400 480 100 9341 -3162 LoutGr2
+0.5 pt ltabvs
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+gsave
+1417 -14005 translate
+400 fnt1 0 0 0 0 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 31 31
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt4 vec2 /Times-Bold LoutRecode
+/fnt4 { /Times-Boldfnt4 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10339(31)s gsave
+1417 -14005 translate
+400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+400 fnt4
+3123 11382(P)m 4(ascal)k 4297(pr)s 7(ograms)k
+[ /Dest /LOUT26_260_all_30 /DEST pdfmark
+360 fnt2
+800 9651(@SysInclude { pas })m 800 9171(...)m 800 8691(@ID @P)m 14(as {)k 800 8211(procedure DoPr)m -5(iAbstr)k 3(act\(root:)k 18( Pr)k -5(iEntr)k -10(y\);)k
+800 7731(begin)m 800 7251( if root^.leftchild <> nil then begin)m 800 6771( DoPr)m -5(iAbstr)k 3(act\(root^.leftchild\);)k
+800 6291( wr)m -5(ite\(', '\);)k 800 5811( end;)m 800 5331( Pr)m -5(iK)k 14(e)k 7(yAbstr)k 3(act\(root^.k)k 7(e)k 7(y\);)k
+800 4851( wr)m -5(ite\(':'\);)k 800 4371( Pr)m -5(iV)k 25(alueAbstr)k 3(act\(root^.v)k 9(alue\);)k
+800 3891( if root^.r)m -5(ightchild <> nil then begin)k 800 3411( wr)m -5(ite\(', '\);)k 800 2931( DoPr)m -5(iAbstr)k 3(act\(root^.r)k -5(ightchild\);)k
+800 2451( end;)m 800 1971(end;)m 800 1491(})m
+grestore
+gsave
+1417 -14005 translate
+400 fnt1 0 0 0 0 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 32 32
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Symbol
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt4 vec2 /Times-Bold LoutRecode
+/fnt4 { /Times-Boldfnt4 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt5 vec2 /Times-Italic LoutRecode
+/fnt5 { /Times-Italicfnt5 LoutFont } def
+%%IncludeResource: font Symbol
+/fnt6 { /Symbol LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10327(32)s gsave
+1417 -14005 translate
+400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+[ /Dest /LOUT26_260_all_31 /DEST pdfmark
+8640 10080 1440 8455 400 480 100 0 667 LoutGr2
+LoutBox stroke
+grestore
+400 fnt4
+1440 8363(pr)m 7(ocedur)k 7(e)k 400 fnt5 3270 8367(DoPriAbstr)m 6(act)k
+400 fnt1 5622 8365(\()m 400 fnt5 5744 8367(r)m 18(oot)k
+400 fnt1 6399 8365(:)m 400 fnt5 6576 8367(PriEntry)m 400 fnt1
+7966 8365(\);)m 400 fnt4 1440 7883(begin)m 1840 7403(if)m 400 fnt5
+2206 7407(r)m 18(oot)k 320 fnt6 2861 7415(\255)m 400 fnt1
+3043 7405(.)m 400 fnt5 3116 7407(leftc)m 6(hild)k 400 fnt6
+4529 7395(\271)m 400 fnt4 4845 7403(nil)m 5380(then)s 6228(begin)s
+400 fnt5 2240 6927(DoPriAbstr)m 6(act)k 400 fnt1 4592 6925(\()m
+400 fnt5 4714 6927(r)m 18(oot)k 320 fnt6 5369 6935(\255)m
+400 fnt1 5551 6925(.)m 400 fnt5 5624 6927(leftc)m 6(hild)k
+400 fnt1 6937 6925(\);)m 400 fnt5 2240 6447(write)m 400 fnt1
+3048 6445(\(',)m 3492('\);)s 400 fnt4 1840 5963(end)m 400 fnt1
+2453 5965(;)m 400 fnt5 1840 5487(PriK)m 14(e)k 12(yAbstr)k 6(act)k
+400 fnt1 4298 5485(\()m 400 fnt5 4420 5487(r)m 18(oot)k
+320 fnt6 5075 5495(\255)m 400 fnt1 5257 5485(.)m 400 fnt5
+5330 5487(k)m 4(e)k 12(y)k 400 fnt1 5838 5485(\);)m
+400 fnt5 1840 5007(write)m 400 fnt1 2648 5005(\(':'\);)m 400 fnt5
+1840 4527(PriV)m 44(alueAbstr)k 6(act)k 400 fnt1 4592 4525(\()m
+400 fnt5 4714 4527(r)m 18(oot)k 320 fnt6 5369 4535(\255)m
+400 fnt1 5551 4525(.)m 400 fnt5 5624 4527(value)m 400 fnt1
+6477 4525(\);)m 400 fnt4 1840 4043(if)m 400 fnt5 2206 4047(r)m 18(oot)k
+320 fnt6 2861 4055(\255)m 400 fnt1 3043 4045(.)m 400 fnt5
+3116 4047(rightc)m 6(hild)k 400 fnt6 4796 4035(\271)m 400 fnt4
+5112 4043(nil)m 5647(then)s 6495(begin)s 400 fnt5 2240 3567(write)m
+400 fnt1 3048 3565(\(',)m 3492('\);)s 400 fnt5 2240 3087(DoPriAbstr)m 6(act)k
+400 fnt1 4592 3085(\()m 400 fnt5 4714 3087(r)m 18(oot)k
+320 fnt6 5369 3095(\255)m 400 fnt1 5551 3085(.)m 400 fnt5
+5624 3087(rightc)m 6(hild)k 400 fnt1 7204 3085(\);)m 400 fnt4
+1840 2603(end)m 400 fnt1 2453 2605(;)m 400 fnt4 1440 2123(end)m
+400 fnt1 2053 2125(;)m
+grestore
+
+grestore
+gsave
+1417 -14005 translate
+400 fnt1 0 0 0 0 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 33 33
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt4 vec2 /Times-Bold LoutRecode
+/fnt4 { /Times-Boldfnt4 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10334(33)s gsave
+1417 -14005 translate
+400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+400 fnt4
+3304 11376(Basic)m 4308(graphics)s
+[ /Dest /LOUT26_260_all_32 /DEST pdfmark
+360 fnt2 800 9645(45d @Rotate 1.5 @Scale @Bo)m 10(x {)k
+800 9165( Hello)m 14(, w)k 3(or)k -5(ld)k 800 8685(})m
+
+grestore
+gsave
+1417 -14005 translate
+400 fnt1 0 0 0 0 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 34 34
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10327(34)s gsave
+1417 -14005 translate
+400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+[ /Dest /LOUT26_260_all_33 /DEST pdfmark
+8640 10080 1440 8640 400 480 100 0 667 LoutGr2
+LoutBox stroke
+grestore
+gsave
+2528 5722 translate
+45.0000 rotate
+gsave
+0 0 translate
+1.5000 1.5000 scale
+gsave
+0 -254 translate
+360 fnt2
+2027 526 108 254 360 480 100 LoutGraphic
+gsave
+LoutBox stroke
+grestore
+108 161(Hello)m 14(,)k 1080(w)s 3(or)k -5(ld)k
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+gsave
+1417 -14005 translate
+400 fnt1 0 0 0 0 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 35 35
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt4 vec2 /Times-Bold LoutRecode
+/fnt4 { /Times-Boldfnt4 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1527(lout)m 10332(35)s gsave
+1417 -14005 translate
+400 fnt1 9066 12051 0 12051 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+400 fnt4
+2908 11375(Adv)m 4(anced)k 4704(graphics)s
+[ /Dest /LOUT26_260_all_34 /DEST pdfmark
+360 fnt2 800 9644(@SysInclude { \207g })m
+800 9164(...)m 800 8684(@Fig {)m 800 8204(@Bo)m 10(x)k 800 7724( margin { 0c })m
+800 7244( paint { b)m 7(lac)k 7(k })k 800 6764(@Ellipse)m 800 6284( linestyle { noline })m
+800 5804( paint { white })m 800 5324({ Hello)m 14(, w)k 3(or)k -5(ld })k
+800 4844(})m
+grestore
+gsave
+1417 -14005 translate
+400 fnt1 0 0 0 0 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 36 36
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10328(36)s gsave
+1417 -14005 translate
+400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+[ /Dest /LOUT26_260_all_35 /DEST pdfmark
+8640 10080 1440 8231 400 480 100 0 667 LoutGr2
+LoutBox stroke
+grestore
+5760 781 226 372 400 480 100 1440 7859 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+2442 781 226 372 400 480 100 0 0 LoutGr2
+/lfigblack [ lfigbox ] gsave lfigpaintpath grestore
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+2442 781 226 372 400 480 100 0 0 LoutGr2
+/lfigwhite [ lfigellipse ] gsave lfigpaintpath grestore
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfignoline [ lfigellipse ] lfigdopath
+pop pop
+grestore
+226 282(Hello,)m
+1291(w)s 4(orld)k
+grestore
+
+grestore
+end end restore
+grestore
+
+grestore
+
+grestore
+gsave
+1417 -14005 translate
+400 fnt1 0 0 0 0 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 37 37
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt4 vec2 /Times-Bold LoutRecode
+/fnt4 { /Times-Boldfnt4 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10331(37)s gsave
+1417 -14005 translate
+400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+400 fnt4
+3302 11376(P)m 8(oint)k 4304(labelling)s
+[ /Dest /LOUT26_260_all_36 /DEST pdfmark
+360 fnt2 800 9645(@Fig {)m
+800 9165(A::)m 800 8685({)m 800 8205( 1::)m 18( @Ellipse { 3c @Wide 2c @High })k 800 7725( //3c)m
+800 7245( 2::)m 18( @Bo)k 10(x { 3c @Wide 2c @High })k 800 6765(})m 800 6285(@Sho)m 5(wLabels)k
+800 5805(})m
+grestore
+gsave
+1417 -14005 translate
+400 fnt1 0 0 0 0 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 38 38
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10331(38)s gsave
+1417 -14005 translate
+400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+[ /Dest /LOUT26_260_all_37 /DEST pdfmark
+8640 10080 1440 8414 400 480 100 0 667 LoutGr2
+LoutBox stroke
+grestore
+5760 4873 0 4647 400 480 100 1440 3767 LoutGr2
+grestore save gsave 200 dict begin lfigdict begin
+grestore
+2153 4873 0 4647 400 480 100 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+2153 1586 226 1360 400 480 100 0 3287 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+2153 1586 226 1360 400 480 100 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigellipse ] lfigdopath
+pop pop
+grestore
+
+grestore
+(1) lfigpromotelabels
+grestore
+2153 1586 226 1360 400 480 100 0 0 LoutGr2
+currentdict end 200 dict begin begin
+grestore
+2153 1586 226 1360 400 480 100 0 0 LoutGr2
+
+0.5 pt setlinewidth lfiground setlinecap
+0.15 cm /lfigsolid [ lfigbox ] lfigdopath
+pop pop
+grestore
+
+grestore
+(2) lfigpromotelabels
+grestore
+(A) lfigpromotelabels
+grestore
+3507 4873 0 4647 400 480 100 2253 0 LoutGr2
+lfigshowlabels
+grestore
+
+grestore
+end end restore
+grestore
+
+grestore
+
+grestore
+gsave
+1417 -14005 translate
+400 fnt1
+0 0 0 0 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 39 39
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt4 vec2 /Times-Bold LoutRecode
+/fnt4 { /Times-Boldfnt4 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10329(39)s gsave
+1417 -14005 translate
+400 fnt1 9066 12051 0 12051 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+400 fnt4
+3895 11375(Graphs)m
+[ /Dest /LOUT26_260_all_38 /DEST pdfmark
+340 fnt2 800 9035(@Gr)m 3(aph)k 800 8555( abo)m 5(v)k 8(ecaption { Ne)k 6(w South )k 13(W)k 13(ales road deaths)k
+800 8075(\(per 100 million v)m 8(ehicle km\) })k 800 7595({)m 800 7115( @Data points { plus } pairs { dashed })m 800 6635( { 1963 5.6 1971 4.3 1976 3.7 1979 3.4)m
+800 6155( 1982 2.9 1985 2.3 1988 2.0 })m 800 5675(})m
+grestore
+gsave
+1417 -14005 translate
+400 fnt1 0 0 0 0 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 40 40
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10326(40)s gsave
+1417 -14005 translate
+400 fnt1 9066 12052 0 12052 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+[ /Dest /LOUT26_260_all_39 /DEST pdfmark
+8640 10080 1440 8640 400 480 100 0 667 LoutGr2
+LoutBox stroke
+grestore
+1631 8367(Ne)m 10(w)k
+2463(South)s 3491(W)s 32(ales)k 4540(road)s 5347(deaths)s
+1717 7887(\(per)m 2460(100)s 3151(million)s 4400(v)s 6(ehicle)k
+5639(km\))s 5103 3402 0 3402 400 480 100 1440 4116 LoutGr2
+grestore
+
+gsave xsize ysize lgraphdict begin /ysize exch def
+/xsize exch def /alldata [ [ [ 1963 5.6 1971 4.3 1976 3.7 1979 3.4 1982 2.9 1985 2.3 1988 2.0 ] xandy
+{ plus }
+{ ilinesetup dashed }
+{ /dashlength 0.2 ft def
+ /linewidth currentlinewidth def
+ /symbolsize 0.15 ft def
+ /symbollinewidth currentlinewidth def }
+{ false }
+{ null LoutSetTexture }
+] ] def
+0 [ false ] 0 alldata false false 0
+0.5 cm false false 0.5 ft xset
+0 [ false ] 1 alldata false false 0
+0.5 cm false false 0.5 ft yset
+norset
+rundata framestyle
+grestore
+end
+
+grestore
+
+grestore
+
+grestore
+gsave
+1417 -14005 translate
+400 fnt1 0 0 0 0 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 41 41
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Helvetica
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Helvetica
+/Helveticafnt2 vec2 /Helvetica LoutRecode
+/fnt2 { /Helveticafnt2 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10339(41)s gsave
+1417 -14005 translate
+400 fnt1 9066 12053 0 12053 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+[ /Dest /LOUT26_260_all_40 /DEST pdfmark
+360 fnt2
+800 10484(-2p @F)m 10(ont @Gr)k 3(aph)k 800 10004( style { ax)m 10(es })k
+800 9524( xor)m -5(igin { 0 } y)k 7(or)k -5(igin { 0 })k 800 9044( xtic)m 7(ks { 10@ 50@ 100@ 200@ 500@ })k
+800 8564( objects { @NE at { 300 2 } @I { Exponential })m 800 8084( @SE at { ...)m 21( } @I { Unif)k 10(or)k -9(m } })k
+800 7604( belo)m 5(wcaption { @I n })k 800 7124({)m 800 6644( @Data points { \207lledcircle } { ...)m 21( })k
+800 6164( @Data points { \207lledcircle } { ...)m 21( })k 800 5204( @Data pairs { dashed })m 800 4724( { 10 2 500 2 })m 800 3764( @Data pairs { dashed })m
+800 3284( {)m 800 2804( xloop from { 10 } to { 500 } b)m 7(y { 20 } do)k 800 2324( {)m 800 1844( x sqr)m -14(t { pi*x / 4 } + 1)k
+800 1364( })m 800 884( })m 800 404(})m
+grestore
+gsave
+1417 -14005 translate
+400 fnt1 0 0 0 0 400 480 100 LoutGraphic
+gsave
+1 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Page: 42 42
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Italic
+/pgsave save def
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt1 vec2 /Times-Roman LoutRecode
+/fnt1 { /Times-Romanfnt1 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt5 vec2 /Times-Italic LoutRecode
+/fnt5 { /Times-Italicfnt5 LoutFont } def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+gsave
+0 0 translate
+400 fnt1 0.0 0.0 0.0 LoutSetRGBColor LoutTextureSolid 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutPageSet
+grestore
+gsave
+0 0 translate
+1.0 1.0 1.0 LoutSetRGBColor 11900 16840 0 16840 400 480 100 LoutGraphic
+gsave
+LoutBox gsave 1.0 1.0 1.0 LoutSetRGBColor fill grestore 0 cm setlinewidth stroke
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+160 fnt1
+0.0 0.0 0.0 LoutSetRGBColor 1417 -1526(lout)m 10327(42)s gsave
+1417 -14005 translate
+400 fnt1 9066 12053 0 12053 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+[ /Dest /LOUT26_260_all_41 /DEST pdfmark
+8640 10080 1440 8640 400 480 100 0 668 LoutGr2
+LoutBox stroke
+grestore
+gsave
+1440 4671 translate
+360 fnt1
+5670 3969 0 3969 360 480 90 LoutGraphic
+gsave
+grestore
+
+gsave xsize ysize lgraphdict begin /ysize exch def
+/xsize exch def /alldata [ [ [ 10 1.97 50 2.01 100 2.00 200 2.0 500 2.00 ] xandy
+{ filledcircle }
+{ }
+{ /dashlength 0.2 ft def
+ /linewidth currentlinewidth def
+ /symbolsize 0.15 ft def
+ /symbollinewidth currentlinewidth def }
+{ false }
+{ null LoutSetTexture }
+]
+[ [ 10 3.53 50 7.45 100 9.32 200 13.41 500 21.63 ] xandy
+{ filledcircle }
+{ }
+{ /dashlength 0.2 ft def
+ /linewidth currentlinewidth def
+ /symbolsize 0.15 ft def
+ /symbollinewidth currentlinewidth def }
+{ false }
+{ null LoutSetTexture }
+]
+[ [ 10 2 500 2 ] xandy
+{ }
+{ linesetup cdashed }
+{ /dashlength 0.2 ft def
+ /linewidth currentlinewidth def
+ /symbolsize 0.15 ft def
+ /symbollinewidth currentlinewidth def }
+{ false }
+{ null LoutSetTexture }
+]
+[ [ 10 20 500 { /xval exch def xval 3.14159 xval mul 4 div sqrt 1 add } for ] xandy
+{ }
+{ linesetup cdashed }
+{ /dashlength 0.2 ft def
+ /linewidth currentlinewidth def
+ /symbolsize 0.15 ft def
+ /symbollinewidth currentlinewidth def }
+{ false }
+{ null LoutSetTexture }
+] ] def
+0 [ 10 lgen 50 lgen 100 lgen 200 lgen 500 lgen ] 0 alldata false false 0
+0 false 0 0.5 ft xset
+0 [ false ] 1 alldata false false 0
+0 false 0 0.5 ft yset
+norset
+rundata axesstyle
+grestore
+1953 535 0 535 360 480 90 0 -535 LoutGr2
+300 2 trpoint translate 0 ysize translate gsave
+grestore
+360 fnt5 108 182(Exponential)m grestore
+grestore
+1428 533 0 533 360 480 90 0 -533 LoutGr2
+300 3.14159 300 4 div mul sqrt 1 add trpoint translate 0 0 translate gsave
+grestore
+360 fnt5 108 182(Uniform)m grestore
+grestore
+end
+
+grestore
+360 fnt5
+4189 3901(n)m
+grestore
+
+grestore
+gsave
+1417 -14005 translate
+400 fnt1 0 0 0 0 400 480 100 LoutGraphic
+gsave
+0 LoutMargSet
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+grestore
+
+pgsave restore
+showpage
+
+%%Trailer
+%%DocumentNeededResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+%%+ font Helvetica
+%%+ font Helvetica-Oblique
+%%+ font Symbol
+%%DocumentSuppliedResources: procset LoutStartUp
+%%+ procset LoutTabPrependGraphic
+%%+ procset LoutFigPrependGraphic
+%%+ procset LoutGraphPrependGraphic
+%%+ procset LoutBasicSetup
+%%+ encoding vec2
+%%Pages: 42
+%%EOF
diff --git a/doc/doc/user/README b/doc/doc/user/README
new file mode 100644
index 0000000..c573063
--- /dev/null
+++ b/doc/doc/user/README
@@ -0,0 +1,48 @@
+Directory lout/doc/user
+
+This directory contains the Lout source files for the User's
+Guide to the Lout Document Formatting System. A copy of the
+final PostScript output file (A4 paper size) is stored at
+"ftp://ftp.it.usyd.edu.au/jeff/lout/lout-3.40.user.ps.gz".
+To produce the Guide yourself, type the command
+
+ lout -r5 all > user.ps
+
+in this directory. The -r5 flag causes Lout to run over the
+document five times. This is needed to completely resolve all
+cross references, although a readable PostScript file would be
+produced after one run if -r was omitted. Auxiliary files with
+.li and .ld suffixes will be created in this directory.
+
+Slight changes (e.g. to Letter paper size) could easily cause
+the number of required runs to increase. I've kept it down
+to 5 by rewriting to eliminate cases where the number of pages
+consumed by a chapter varies from run to run.
+
+The first run will produce a large number of error messages,
+nearly all beginning with "unresolved cross reference". These
+should gradually go away on later runs. The following shows the
+error message output on the fifth run for A4 size printing:
+
+lout:
+ : lout -r beginning run 5:
+lout file "gra_tick" (from "gra" line 38, from "all" line 46):
+ 234,1: 23.7c object too high for 23.6c space; @Scale inserted
+lout file "gra_summ" (from "gra" line 44, from "all" line 46):
+ 10,1: 25.7c object too high for 23.6c space; @Scale inserted
+lout file "prg_tabs" (from "prg" line 152, from "all" line 48):
+ 66,23: prg2lout 2,1: program text ended within comment
+ 68,35: prg2lout 2,1: program text ended within comment
+
+The first two warnings are about large tables that had to be scaled
+down slightly to fit on the page. The last two warnings point to
+two places where a C program text ended inside a comment, which in
+these cases was deliberate. If you set the document in Letter size
+paper, you will get a somewhat different set of warning messages.
+
+Optimal page breaking has been turned off for this document owing to
+failure to converge, caused by footnotes and floating figures close
+to large unbreakable displays.
+
+Jeffrey H. Kingston
+26 June 2013
diff --git a/doc/doc/user/all b/doc/doc/user/all
new file mode 100644
index 0000000..b40344d
--- /dev/null
+++ b/doc/doc/user/all
@@ -0,0 +1,52 @@
+@SysInclude { xrgb }
+@SysInclude { tab }
+@SysInclude { tbl }
+@SysInclude { math }
+@SysInclude { graph }
+@SysInclude { pie }
+@SysInclude { pas }
+@SysInclude { diag }
+@SysInclude { cprint }
+@SysInclude { eiffel }
+@SysInclude { perl }
+@Include { mybook }
+# @Include { letterbook } # for testing Letter size formatting
+
+@SysDatabase @Reference { loutrefs }
+
+@Book
+ @Title { A User's Guide to the
+
+Lout
+
+Document Formatting System
+}
+ @Author { Jeffrey H. Kingston }
+ @Edition { Version 3.40
+June 2013 }
+ @Publisher {
+Copyright @CopyRight 1991, 2013 Jeffrey H. Kingston,
+School of Information Technologies,
+The University of Sydney 2006, Australia. ISBN 0 86758 951 5.
+}
+ @InitialLanguage { English }
+ # @OptimizePages { Yes }
+//
+
+@Include { preface }
+@Include { bas }
+@Include { str }
+@Include { typ }
+@Include { fmt }
+@Include { ref }
+@Include { tbl }
+@Include { mat }
+@Include { bgr }
+@Include { dia }
+@Include { gra }
+@Include { pie }
+@Include { prg }
+@Include { pascal }
+@Include { ap_qck }
+@Include { ap_byp }
+@Include { ap_col }
diff --git a/doc/doc/user/ap_byp b/doc/doc/user/ap_byp
new file mode 100644
index 0000000..002f439
--- /dev/null
+++ b/doc/doc/user/ap_byp
@@ -0,0 +1,100 @@
+@Appendix
+ @Title { Bypass Symbols }
+ @Tag { bypass }
+@Begin
+@PP
+The `bypass' symbols described in this appendix are intended to be
+bypass.symbols @Index { bypass symbols }
+used in Lout which is generated by computer programs. Their purpose
+is to bypass the Lout cross reference database, and so reduce the
+number of passes needed to finalise a document. These symbols are not
+intended to be used by people, because that would only lead back to the
+consistency problems that prompted the introduction of cross references
+in the first place.
+@PP
+To produce a bypass table of contents, set the @Code "@MakeContents"
+setup file option to @Code "Bypass" and use @Code "@BypassContentsEntry"
+symbols at the outermost level just before the introduction or first
+chapter:
+@ID @Tab
+ @Fmta { @Col @Code A ! @Col ! @Col B }
+ vmargin { 0.5vx }
+{
+@Rowa
+ A { "@BypassContentsEntry" }
+@Rowa
+ A { " indent { 0f }" }
+ B { the indent, e.g. {@Code "0f"}, {@Code "2f"}, {@Code "4f"} ... }
+@Rowa
+ A { " number {}" }
+ B { the section (etc.) number e.g. {@Code "5.2"} }
+@Rowa
+ A { " title {}" }
+ B { the section (etc.) title e.g. @Code "Azaleas" }
+@Rowa
+ A { " pagenum {}" }
+ B { the page number e.g. @Code "@PageOf azaleas" }
+}
+For major entries such as chapters, use @Code "@BypassMajorContentsEntry"
+with the same options. This increases the vertical spacing and uses
+bold font. When @Code "@MakeContents" is {@Code "Bypass"}, no contents
+entries will be produced automatically.
+@PP
+To bypass Lout's automatic numbering of large-scale structure symbols,
+use the @Code "@BypassNumber" option:
+@ID @Code {
+"@Section"
+" @Title { Azaleas }"
+" @Tag { azaleas }"
+" @BypassNumber { 5.2 }"
+"..."
+}
+Give the full `path number' (5.2, B.3 or whatever) of the symbol. There is
+a @Code "@BypassNumber" option for every symbol that has a @Code "@Title"
+option and is usually assigned a number automatically by Lout, plus
+{@Code "@Figure"}, {@Code "@Table"}, and (since Version 3.36) the numbered
+display symbols. No changes to the setup file are required in order to use
+{@Code "@BypassNumber"}, and it is permitted for some large-scale structure
+symbols to have this option and others not.
+@PP
+To produce a bypass reference list, set the @Code "@MakeReferences"
+setup file option to @Code "Bypass" and place reference entries at the
+end of the document, after the last chapter or other large-scale structure
+symbol but before any bypass index entries (see below), like this:
+@ID @Code {
+"@BypassReference"
+" label { [Kin94a] }"
+" value { @RefPrint kingston1995lout.expert }"
+}
+The two options are objects which become the label and value of the
+reference entry. The @Code "value" option can be any object, including
+an explicit reference; but @Code "@RefPrint" does not introduce any
+cross-referencing delay if the @Code "@Reference" symbols lie in a
+separate database file. No sorting or removal of duplicate entries
+will be done by Lout. When @Code "@MakeReferences" is {@Code "Bypass"},
+@Code "@Cite" and related symbols are ignored.
+@PP
+There is also @Code "@BypassChapReference" with the same options for
+producing bypass chapter reference lists; these symbols should be
+placed at the outer level immediately after the preface, introduction,
+chapter or appendix that they refer to.
+@PP
+To produce bypass indexes, set the @Code "@MakeIndex" setup file
+option to {@Code Bypass} and use the @Code "@BypassRawIndex" symbol
+repeatedly at the very end of the document, enclosed in
+@Code "@BypassBeginIndex" and @Code "@BypassEndIndex" symbols:
+@ID @Code {
+"@BypassBeginIndex"
+"@BypassRawIndex indent { 0f } { Azaleas, @PageOf azaleas }"
+"..."
+"@BypassEndIndex"
+}
+The @Code "indent" option gives the indent ({@Code "0f"}, @Code {"1f"},
+@Code {2f}, etc.), and the right parameter is as for @Code "@RawIndex". No
+@Code "@PageMark" operations, sorting, merging, or attachment of page
+numbers will be done by Lout. When @Code "@MakeIndex" is {@Code Bypass},
+@Code "@Index" and related symbols are ignored. At present, bypass
+index symbols work only in books, not with ordinary documents or
+technical reports. There are corresponding symbols for creating
+bypass indexes A and B.
+@End @Appendix
diff --git a/doc/doc/user/ap_col b/doc/doc/user/ap_col
new file mode 100644
index 0000000..495deea
--- /dev/null
+++ b/doc/doc/user/ap_col
@@ -0,0 +1,581 @@
+@Appendix
+ @Title { Lots More Colours }
+ @Tag { morecolours }
+@Begin
+Here is the long list of extra colours, said to be from the
+xrgb @Index { @Code "@Xrgb" symbol }
+X windows system, that you can get by placing
+@Code "@SysInclude { xrgb }" at the start of your document and
+using the @Code "@Xrgb" symbol. For example, you might write
+@ID @Code "{@Xrgb oldlace} @Colour ..."
+or
+@ID @Code "@Box paint { @Xrgb oldlace } ..."
+You can't get these colours just by giving their
+names; you have to use the @Code "@Xrgb" symbol. Wherever
+@Code "grey" appears it may also be spelt {@Code gray}.
+@PP
+There are 541 colours here. I've removed capitalized alternative
+spellings and hyphens from the information provided to me. Thanks
+to Mark Summerfield for providing this information.
+@DP
+@XRGBTest black
+@XRGBTest snow
+@XRGBTest ghostwhite
+@XRGBTest whitesmoke
+@XRGBTest gainsboro
+@XRGBTest floralwhite
+@XRGBTest oldlace
+@XRGBTest linen
+@XRGBTest antiquewhite
+@XRGBTest papayawhip
+@XRGBTest blanchedalmond
+@XRGBTest bisque
+@XRGBTest peachpuff
+@XRGBTest navajowhite
+@XRGBTest moccasin
+@XRGBTest cornsilk
+@XRGBTest ivory
+@XRGBTest lemonchiffon
+@XRGBTest seashell
+@XRGBTest honeydew
+@XRGBTest mintcream
+@XRGBTest azure
+@XRGBTest aliceblue
+@XRGBTest lavender
+@XRGBTest lavenderblush
+@XRGBTest mistyrose
+@XRGBTest white
+@XRGBTest darkslategrey
+@XRGBTest dimgrey
+@XRGBTest slategrey
+@XRGBTest lightslategrey
+@XRGBTest grey
+@XRGBTest lightgrey
+@XRGBTest midnightblue
+@XRGBTest navy
+@XRGBTest navyblue
+@XRGBTest cornflowerblue
+@XRGBTest darkslateblue
+@XRGBTest slateblue
+@XRGBTest mediumslateblue
+@XRGBTest lightslateblue
+@XRGBTest mediumblue
+@XRGBTest royalblue
+@XRGBTest blue
+@XRGBTest dodgerblue
+@XRGBTest deepskyblue
+@XRGBTest skyblue
+@XRGBTest lightskyblue
+@XRGBTest steelblue
+@XRGBTest lightsteelblue
+@XRGBTest lightblue
+@XRGBTest powderblue
+@XRGBTest paleturquoise
+@XRGBTest darkturquoise
+@XRGBTest mediumturquoise
+@XRGBTest turquoise
+@XRGBTest cyan
+@XRGBTest lightcyan
+@XRGBTest cadetblue
+@XRGBTest mediumaquamarine
+@XRGBTest aquamarine
+@XRGBTest darkgreen
+@XRGBTest darkolivegreen
+@XRGBTest darkseagreen
+@XRGBTest seagreen
+@XRGBTest mediumseagreen
+@XRGBTest lightseagreen
+@XRGBTest palegreen
+@XRGBTest springgreen
+@XRGBTest lawngreen
+@XRGBTest green
+@XRGBTest chartreuse
+@XRGBTest mediumspringgreen
+@XRGBTest greenyellow
+@XRGBTest limegreen
+@XRGBTest yellowgreen
+@XRGBTest forestgreen
+@XRGBTest olivedrab
+@XRGBTest darkkhaki
+@XRGBTest khaki
+@XRGBTest palegoldenrod
+@XRGBTest lightgoldenrodyellow
+@XRGBTest lightyellow
+@XRGBTest yellow
+@XRGBTest gold
+@XRGBTest lightgoldenrod
+@XRGBTest goldenrod
+@XRGBTest darkgoldenrod
+@XRGBTest rosybrown
+@XRGBTest indianred
+@XRGBTest saddlebrown
+@XRGBTest sienna
+@XRGBTest peru
+@XRGBTest burlywood
+@XRGBTest beige
+@XRGBTest wheat
+@XRGBTest sandybrown
+@XRGBTest tan
+@XRGBTest chocolate
+@XRGBTest firebrick
+@XRGBTest brown
+@XRGBTest darksalmon
+@XRGBTest salmon
+@XRGBTest lightsalmon
+@XRGBTest orange
+@XRGBTest darkorange
+@XRGBTest coral
+@XRGBTest lightcoral
+@XRGBTest tomato
+@XRGBTest orangered
+@XRGBTest red
+@XRGBTest hotpink
+@XRGBTest deeppink
+@XRGBTest pink
+@XRGBTest lightpink
+@XRGBTest palevioletred
+@XRGBTest maroon
+@XRGBTest mediumvioletred
+@XRGBTest violetred
+@XRGBTest magenta
+@XRGBTest violet
+@XRGBTest plum
+@XRGBTest orchid
+@XRGBTest mediumorchid
+@XRGBTest darkorchid
+@XRGBTest darkviolet
+@XRGBTest blueviolet
+@XRGBTest purple
+@XRGBTest mediumpurple
+@XRGBTest thistle
+@XRGBNoTest
+@XRGBNoTest
+@XRGBNoTest
+@XRGBNoTest
+@DP
+@XRGBTest snow1
+@XRGBTest snow2
+@XRGBTest snow3
+@XRGBTest snow4
+@XRGBTest seashell1
+@XRGBTest seashell2
+@XRGBTest seashell3
+@XRGBTest seashell4
+@XRGBTest antiquewhite1
+@XRGBTest antiquewhite2
+@XRGBTest antiquewhite3
+@XRGBTest antiquewhite4
+@XRGBTest bisque1
+@XRGBTest bisque2
+@XRGBTest bisque3
+@XRGBTest bisque4
+@XRGBTest peachpuff1
+@XRGBTest peachpuff2
+@XRGBTest peachpuff3
+@XRGBTest peachpuff4
+@XRGBTest navajowhite1
+@XRGBTest navajowhite2
+@XRGBTest navajowhite3
+@XRGBTest navajowhite4
+@XRGBTest lemonchiffon1
+@XRGBTest lemonchiffon2
+@XRGBTest lemonchiffon3
+@XRGBTest lemonchiffon4
+@XRGBTest cornsilk1
+@XRGBTest cornsilk2
+@XRGBTest cornsilk3
+@XRGBTest cornsilk4
+@XRGBTest ivory1
+@XRGBTest ivory2
+@XRGBTest ivory3
+@XRGBTest ivory4
+@XRGBTest honeydew1
+@XRGBTest honeydew2
+@XRGBTest honeydew3
+@XRGBTest honeydew4
+@XRGBTest lavenderblush1
+@XRGBTest lavenderblush2
+@XRGBTest lavenderblush3
+@XRGBTest lavenderblush4
+@XRGBTest mistyrose1
+@XRGBTest mistyrose2
+@XRGBTest mistyrose3
+@XRGBTest mistyrose4
+@XRGBTest azure1
+@XRGBTest azure2
+@XRGBTest azure3
+@XRGBTest azure4
+@XRGBTest slateblue1
+@XRGBTest slateblue2
+@XRGBTest slateblue3
+@XRGBTest slateblue4
+@XRGBTest royalblue1
+@XRGBTest royalblue2
+@XRGBTest royalblue3
+@XRGBTest royalblue4
+@XRGBTest blue1
+@XRGBTest blue2
+@XRGBTest blue3
+@XRGBTest blue4
+@XRGBTest dodgerblue1
+@XRGBTest dodgerblue2
+@XRGBTest dodgerblue3
+@XRGBTest dodgerblue4
+@XRGBTest steelblue1
+@XRGBTest steelblue2
+@XRGBTest steelblue3
+@XRGBTest steelblue4
+@XRGBTest deepskyblue1
+@XRGBTest deepskyblue2
+@XRGBTest deepskyblue3
+@XRGBTest deepskyblue4
+@XRGBTest skyblue1
+@XRGBTest skyblue2
+@XRGBTest skyblue3
+@XRGBTest skyblue4
+@XRGBTest lightskyblue1
+@XRGBTest lightskyblue2
+@XRGBTest lightskyblue3
+@XRGBTest lightskyblue4
+@XRGBTest lightsteelblue1
+@XRGBTest lightsteelblue2
+@XRGBTest lightsteelblue3
+@XRGBTest lightsteelblue4
+@XRGBTest lightblue1
+@XRGBTest lightblue2
+@XRGBTest lightblue3
+@XRGBTest lightblue4
+@XRGBTest lightcyan1
+@XRGBTest lightcyan2
+@XRGBTest lightcyan3
+@XRGBTest lightcyan4
+@XRGBTest paleturquoise1
+@XRGBTest paleturquoise2
+@XRGBTest paleturquoise3
+@XRGBTest paleturquoise4
+@XRGBTest cadetblue1
+@XRGBTest cadetblue2
+@XRGBTest cadetblue3
+@XRGBTest cadetblue4
+@XRGBTest turquoise1
+@XRGBTest turquoise2
+@XRGBTest turquoise3
+@XRGBTest turquoise4
+@XRGBTest cyan1
+@XRGBTest cyan2
+@XRGBTest cyan3
+@XRGBTest cyan4
+@XRGBTest aquamarine1
+@XRGBTest aquamarine2
+@XRGBTest aquamarine3
+@XRGBTest aquamarine4
+@XRGBTest darkseagreen1
+@XRGBTest darkseagreen2
+@XRGBTest darkseagreen3
+@XRGBTest darkseagreen4
+@XRGBTest seagreen1
+@XRGBTest seagreen2
+@XRGBTest seagreen3
+@XRGBTest seagreen4
+@XRGBTest palegreen1
+@XRGBTest palegreen2
+@XRGBTest palegreen3
+@XRGBTest palegreen4
+@XRGBTest springgreen1
+@XRGBTest springgreen2
+@XRGBTest springgreen3
+@XRGBTest springgreen4
+@XRGBTest green1
+@XRGBTest green2
+@XRGBTest green3
+@XRGBTest green4
+@XRGBTest chartreuse1
+@XRGBTest chartreuse2
+@XRGBTest chartreuse3
+@XRGBTest chartreuse4
+@XRGBTest olivedrab1
+@XRGBTest olivedrab2
+@XRGBTest olivedrab3
+@XRGBTest olivedrab4
+@XRGBTest darkolivegreen1
+@XRGBTest darkolivegreen2
+@XRGBTest darkolivegreen3
+@XRGBTest darkolivegreen4
+@XRGBTest khaki1
+@XRGBTest khaki2
+@XRGBTest khaki3
+@XRGBTest khaki4
+@XRGBTest lightgoldenrod1
+@XRGBTest lightgoldenrod2
+@XRGBTest lightgoldenrod3
+@XRGBTest lightgoldenrod4
+@XRGBTest lightyellow1
+@XRGBTest lightyellow2
+@XRGBTest lightyellow3
+@XRGBTest lightyellow4
+@XRGBTest yellow1
+@XRGBTest yellow2
+@XRGBTest yellow3
+@XRGBTest yellow4
+@XRGBTest gold1
+@XRGBTest gold2
+@XRGBTest gold3
+@XRGBTest gold4
+@XRGBTest goldenrod1
+@XRGBTest goldenrod2
+@XRGBTest goldenrod3
+@XRGBTest goldenrod4
+@XRGBTest darkgoldenrod1
+@XRGBTest darkgoldenrod2
+@XRGBTest darkgoldenrod3
+@XRGBTest darkgoldenrod4
+@XRGBTest rosybrown1
+@XRGBTest rosybrown2
+@XRGBTest rosybrown3
+@XRGBTest rosybrown4
+@XRGBTest indianred1
+@XRGBTest indianred2
+@XRGBTest indianred3
+@XRGBTest indianred4
+@XRGBTest sienna1
+@XRGBTest sienna2
+@XRGBTest sienna3
+@XRGBTest sienna4
+@XRGBTest burlywood1
+@XRGBTest burlywood2
+@XRGBTest burlywood3
+@XRGBTest burlywood4
+@XRGBTest wheat1
+@XRGBTest wheat2
+@XRGBTest wheat3
+@XRGBTest wheat4
+@XRGBTest tan1
+@XRGBTest tan2
+@XRGBTest tan3
+@XRGBTest tan4
+@XRGBTest chocolate1
+@XRGBTest chocolate2
+@XRGBTest chocolate3
+@XRGBTest chocolate4
+@XRGBTest firebrick1
+@XRGBTest firebrick2
+@XRGBTest firebrick3
+@XRGBTest firebrick4
+@XRGBTest brown1
+@XRGBTest brown2
+@XRGBTest brown3
+@XRGBTest brown4
+@XRGBTest salmon1
+@XRGBTest salmon2
+@XRGBTest salmon3
+@XRGBTest salmon4
+@XRGBTest lightsalmon1
+@XRGBTest lightsalmon2
+@XRGBTest lightsalmon3
+@XRGBTest lightsalmon4
+@XRGBTest orange1
+@XRGBTest orange2
+@XRGBTest orange3
+@XRGBTest orange4
+@XRGBTest darkorange1
+@XRGBTest darkorange2
+@XRGBTest darkorange3
+@XRGBTest darkorange4
+@XRGBTest coral1
+@XRGBTest coral2
+@XRGBTest coral3
+@XRGBTest coral4
+@XRGBTest tomato1
+@XRGBTest tomato2
+@XRGBTest tomato3
+@XRGBTest tomato4
+@XRGBTest orangered1
+@XRGBTest orangered2
+@XRGBTest orangered3
+@XRGBTest orangered4
+@XRGBTest red1
+@XRGBTest red2
+@XRGBTest red3
+@XRGBTest red4
+@XRGBTest deeppink1
+@XRGBTest deeppink2
+@XRGBTest deeppink3
+@XRGBTest deeppink4
+@XRGBTest hotpink1
+@XRGBTest hotpink2
+@XRGBTest hotpink3
+@XRGBTest hotpink4
+@XRGBTest pink1
+@XRGBTest pink2
+@XRGBTest pink3
+@XRGBTest pink4
+@XRGBTest lightpink1
+@XRGBTest lightpink2
+@XRGBTest lightpink3
+@XRGBTest lightpink4
+@XRGBTest palevioletred1
+@XRGBTest palevioletred2
+@XRGBTest palevioletred3
+@XRGBTest palevioletred4
+@XRGBTest maroon1
+@XRGBTest maroon2
+@XRGBTest maroon3
+@XRGBTest maroon4
+@XRGBTest violetred1
+@XRGBTest violetred2
+@XRGBTest violetred3
+@XRGBTest violetred4
+@XRGBTest magenta1
+@XRGBTest magenta2
+@XRGBTest magenta3
+@XRGBTest magenta4
+@XRGBTest orchid1
+@XRGBTest orchid2
+@XRGBTest orchid3
+@XRGBTest orchid4
+@XRGBTest plum1
+@XRGBTest plum2
+@XRGBTest plum3
+@XRGBTest plum4
+@XRGBTest mediumorchid1
+@XRGBTest mediumorchid2
+@XRGBTest mediumorchid3
+@XRGBTest mediumorchid4
+@XRGBTest darkorchid1
+@XRGBTest darkorchid2
+@XRGBTest darkorchid3
+@XRGBTest darkorchid4
+@XRGBTest purple1
+@XRGBTest purple2
+@XRGBTest purple3
+@XRGBTest purple4
+@XRGBTest mediumpurple1
+@XRGBTest mediumpurple2
+@XRGBTest mediumpurple3
+@XRGBTest mediumpurple4
+@XRGBTest thistle1
+@XRGBTest thistle2
+@XRGBTest thistle3
+@XRGBTest thistle4
+@XRGBNoTest
+@XRGBNoTest
+@XRGBNoTest
+@XRGBNoTest
+@DP
+@XRGBTest grey0
+@XRGBTest grey1
+@XRGBTest grey2
+@XRGBTest grey3
+@XRGBTest grey4
+@XRGBTest grey5
+@XRGBTest grey6
+@XRGBTest grey7
+@XRGBTest grey8
+@XRGBTest grey9
+@XRGBTest grey10
+@XRGBTest grey11
+@XRGBTest grey12
+@XRGBTest grey13
+@XRGBTest grey14
+@XRGBTest grey15
+@XRGBTest grey16
+@XRGBTest grey17
+@XRGBTest grey18
+@XRGBTest grey19
+@XRGBTest grey20
+@XRGBTest grey21
+@XRGBTest grey22
+@XRGBTest grey23
+@XRGBTest grey24
+@XRGBTest grey25
+@XRGBTest grey26
+@XRGBTest grey27
+@XRGBTest grey28
+@XRGBTest grey29
+@XRGBTest grey30
+@XRGBTest grey31
+@XRGBTest grey32
+@XRGBTest grey33
+@XRGBTest grey34
+@XRGBTest grey35
+@XRGBTest grey36
+@XRGBTest grey37
+@XRGBTest grey38
+@XRGBTest grey39
+@XRGBTest grey40
+@XRGBTest grey41
+@XRGBTest grey42
+@XRGBTest grey43
+@XRGBTest grey44
+@XRGBTest grey45
+@XRGBTest grey46
+@XRGBTest grey47
+@XRGBTest grey48
+@XRGBTest grey49
+@XRGBTest grey50
+@XRGBTest grey51
+@XRGBTest grey52
+@XRGBTest grey53
+@XRGBTest grey54
+@XRGBTest grey55
+@XRGBTest grey56
+@XRGBTest grey57
+@XRGBTest grey58
+@XRGBTest grey59
+@XRGBTest grey60
+@XRGBTest grey61
+@XRGBTest grey62
+@XRGBTest grey63
+@XRGBTest grey64
+@XRGBTest grey65
+@XRGBTest grey66
+@XRGBTest grey67
+@XRGBTest grey68
+@XRGBTest grey69
+@XRGBTest grey70
+@XRGBTest grey71
+@XRGBTest grey72
+@XRGBTest grey73
+@XRGBTest grey74
+@XRGBTest grey75
+@XRGBTest grey76
+@XRGBTest grey77
+@XRGBTest grey78
+@XRGBTest grey79
+@XRGBTest grey80
+@XRGBTest grey81
+@XRGBTest grey82
+@XRGBTest grey83
+@XRGBTest grey84
+@XRGBTest grey85
+@XRGBTest grey86
+@XRGBTest grey87
+@XRGBTest grey88
+@XRGBTest grey89
+@XRGBTest grey90
+@XRGBTest grey91
+@XRGBTest grey92
+@XRGBTest grey93
+@XRGBTest grey94
+@XRGBTest grey95
+@XRGBTest grey96
+@XRGBTest grey97
+@XRGBTest grey98
+@XRGBTest grey99
+@XRGBTest grey100
+@XRGBNoTest
+@XRGBNoTest
+@XRGBNoTest
+@XRGBNoTest
+@DP
+@XRGBTest darkgrey
+@XRGBTest darkblue
+@XRGBTest darkcyan
+@XRGBTest darkmagenta
+@XRGBTest darkred
+@XRGBTest lightgreen
+@XRGBNoTest # makes a dummy last line to ensure adjusting on all lines
+@XRGBNoTest
+@XRGBNoTest
+@XRGBNoTest
+@End @Appendix
diff --git a/doc/doc/user/ap_qck b/doc/doc/user/ap_qck
new file mode 100644
index 0000000..531e63d
--- /dev/null
+++ b/doc/doc/user/ap_qck
@@ -0,0 +1,367 @@
+@Appendix
+ @Title { Lout Quick Reference Guide }
+@Begin
+10p @Font 1.15fx @Break @OneCol
+@Tab @Fmta { @Col 20c @Wide A ! @Col 20c @Wide B }
+{
+@Rowa A {
+@Heading { 1. Running Lout }
+@LD @Code {
+"lout filename > postscript.ps"
+}
+
+@LP
+@Heading { 2. Ordinary documents (simple form) }
+@LD @Code {
+"@SysInclude { doc }"
+"@Doc @Text @Begin"
+"..."
+"@End @Text"
+}
+
+@LP
+@Heading { 3. Ordinary documents (full form) }
+@LD @Code {
+"@SysInclude { doc }"
+"@Document"
+" @InitialFont { Times Base 12p }"
+" @InitialBreak { adjust 1.2fx hyphen }"
+" @InitialLanguage { English }"
+" @FirstPageNumber { 1 }"
+" @ColumnNumber { 1 }"
+" @PageOrientation { Portrait }"
+"//"
+"@Text @Begin"
+"..."
+"@BeginSections"
+"@Section ... @End @Section"
+"@EndSections"
+"@End @Text"
+}
+
+@LP
+@Heading { 4. Technical reports }
+@LD @Code {
+"@SysInclude { report }"
+"@Report"
+" @Title { ... }"
+" @Author { ... }"
+" @Institution { ... }"
+" @DateLine { No }"
+" @CoverSheet { Yes }"
+" @InitialFont { Times Base 12p }"
+" @InitialBreak { adjust 1.2fx hyphen }"
+" @InitialLanguage { English }"
+" @PageHeaders { Simple }"
+" @FirstPageNumber { 1 }"
+" @ColumnNumber { 1 }"
+" @Abstract { ... }"
+"//"
+"@Section ... @End @Section"
+"@Appendix ... @End @Appendix"
+}
+}
+
+B {
+@Heading { 5. Large-scale structure symbols }
+@LL
+@LI @Code {
+"@Section"
+" @Title { ... }"
+" @Tag { ... }"
+"@Begin"
+"@PP"
+"..."
+"@End @Section"
+}
+@LI lines @Break {
+@Code "@Section / @SubSection / @SubSubSection"
+@Code "@Appendix / @SubAppendix / @SubSubAppendix"
+@Code "@BeginSubSections" ... @Code "@EndSubSections" if inner.
+}
+@EndList
+
+@LP
+@Heading { 6. Cross references }
+@LD @Tab
+ @Fmta { @Col @Code A ! @Col ! @Col @Code B }
+{
+@Rowa
+ A { "@Tag { foo }" }
+ B { "@PageOf foo" }
+@Rowa
+ A { "@PageMark foo" }
+ B { "@NumberOf foo" }
+}
+
+@LP
+@Heading { 7. Font changes }
+@LL
+@LI @Tab
+ @Fmta { @Col @Code A ! @Col @Code B }
+ vmargin { 0.5vx }
+{
+@Rowa
+ A { "@B { bold font }" }
+ B { "@I { italic font }" }
+@Rowa
+ A { "@BI { bold-italic font }" }
+ B { "@R { Roman font }" }
+@Rowa
+ A { "@S { small-caps font}" }
+ B { "@F { fixed-width font }" }
+@Rowa
+ B { "@II { italic bold or Roman }" }
+}
+@LI @Code {
+"{ family face size } @Font { ... }"
+}
+@LI @Code {
+"Times Helvetica Courier ..."
+"Base Slope Bold BoldSlope ..."
+"10p 12p +2p -2p 2.0f ..."
+}
+@EndList
+
+@LP
+@Heading { 8. Paragraph breaking styles }
+@LL
+@LI @Code {
+"{ breakstyle linesep hyphen } @Break { ... }"
+}
+@LI @Code {
+"adjust ragged lines clines ..."
+"1.2fx 2vx 0.9vx ..."
+"hyphen nohyphen"
+}
+@EndList
+
+@LP
+@Heading { 9. New paragraph and new page }
+@LD @Tab
+ @Fmta { @Col @Code A ! @Col B }
+ vmargin { 0.5vx }
+{
+@Rowa A { "@PP" } B { Plain paragraph }
+@Rowa A { "@LP" } B { Left paragraph }
+@Rowa A { "@LLP" } B { New line }
+@Rowa A { "@DP" } B { Display paragraph }
+@Rowa A { "@NP" } B { New page }
+@Rowa A { "@CNP" } B { Conditional new page }
+}
+}
+
+} # end first table
+@LP
+10p @Font 1.15fx @Break @OneCol
+@Tab @Fmta { @Col 20c @Wide A ! @Col 20c @Wide B }
+{
+@Rowa A {
+@Heading { 10. Displays and headings }
+@LL
+@LI @Code {
+"@CD @Heading { A centred heading }"
+"@ID { An indented display }"
+}
+@LI @Tab
+ @Fmta { @Col @Code A ! @Col @Code B }
+ vmargin { 0.5vx }
+{
+@Rowa A { "@D" } B { "@Display" }
+@Rowa A { "@LD" } B { "@LeftDisplay" }
+@Rowa A { "@ID" } B { "@IndentedDisplay" }
+@Rowa A { "@QD" } B { "@QuotedDisplay" }
+@Rowa A { "@CD" } B { "@CentredDisplay" }
+@Rowa B { "@CenteredDisplay" }
+@Rowa B { "@RightDisplay" }
+}
+@EndList
+
+@LP
+@Heading { 11. Lists}
+@LL
+@LI @Code {
+"@List"
+"@ListItem { A list item }"
+"@ListItem { Another list item }"
+"@EndList"
+}
+@LI @Tab
+ @Fmta { @Col @Code A ! @Col @Code B }
+ vmargin { 0.5vx }
+{
+@Rowa
+ A { "@L" }
+ B { "@List" }
+@Rowa
+ A { "@LL" }
+ B { "@LeftList" }
+@Rowa
+ A { "@IL" }
+ B { "@IndentedList" }
+@Rowa
+ A { "@QL" }
+ B { "@QuotedList" }
+@Rowa
+ A { "@CL" }
+ B { "@CentredList" }
+@Rowa
+ B { "@CenteredList" }
+@Rowa
+ A { "@NL" }
+ B { "@NumberedList" }
+@Rowa
+ A { "@RL" }
+ B { "@RomanList" }
+@Rowa
+ A { "@UCRL" }
+ B { "@UCRomanList" }
+@Rowa
+ A { "@AL" }
+ B { "@AlphaList" }
+@Rowa
+ A { "@UCAL" }
+ B { "@UCAlphaList" }
+@Rowa
+ A { "@PNL" }
+ B { "@ParenNumberedList" }
+@Rowa
+ A { "@PRL" }
+ B { "@ParenRomanList" }
+@Rowa
+ A { "@PUCRL" }
+ B { "@ParenUCRomanList" }
+@Rowa
+ A { "@PAL" }
+ B { "@ParenAlphaList" }
+@Rowa
+ A { "@PUCAL" }
+ B { "@ParenUCAlphaList" }
+@Rowa
+ A { "@BL" }
+ B { "@BulletList" }
+@Rowa
+ A { "@SL" }
+ B { "@StarList" }
+@Rowa
+ A { "@DL" }
+ B { "@DashList" }
+}
+@LI @Code {
+"@TaggedList"
+"@TagItem { label } { A list item }"
+"@TagItem { label } { Another list item }"
+"@EndList"
+}
+@LI @Tab
+ @Fmta { @Col @Code A ! @Col @Code B }
+ vmargin { 0.5vx }
+{
+@Rowa
+ A { "@TL" }
+ B { "@TaggedList" }
+@Rowa
+ A { "@WTL" }
+ B { "@WideTaggedList" }
+@Rowa
+ A { "@VWTL" }
+ B { "@VeryWideTaggedList" }
+}
+@EndList
+
+@LP
+@Heading { 12. Footnotes, endnotes, margin notes }
+@LD @Tab
+ @Fmta { @Col @Code A ! @Col @Code B }
+ vmargin { 0.5vx }
+{
+@Rowa
+ A { "@FootNote { ... }" }
+ B { "@EndNote { ... }" }
+@Rowa
+ A { "@LeftNote { ... }" }
+ B { "@RightNote { ... }" }
+@Rowa
+ A { "@OuterNote { ... }" }
+ B { "@InnerNote { ... }" }
+}
+}
+
+B {
+@Heading { 13. Floating figures and tables }
+@LD @Tab
+ @Fmta { @Col @Code A ! @Col ! @Col ! @Col @Code B }
+{
+@Rowa
+ A {
+"@Figure"
+" @Caption { ... }"
+" @Tag { ... }"
+"@Begin"
+"..."
+"@End @Figure"
+}
+ B {
+"@Table"
+" @Caption { ... }"
+" @Tag { ... }"
+"@Begin"
+"..."
+"@End @Table"
+}
+}
+
+@LP
+@Heading { 14. Tables }
+@LD @Code {
+"@SysInclude { tbl }"
+"@SysInclude { doc }"
+"..."
+"@Tbl"
+" aformat { @Cell A | @Cell B }"
+" marginvertical { 0.5vx }"
+"{"
+"@Rowa"
+" A { ... }"
+" B { ... }"
+"@Rowa"
+" ..."
+"}"
+}
+
+@LP
+@Heading { 15. Equations }
+@LD @Code {
+"@SysInclude { eq }"
+"@SysInclude { doc }"
+"..."
+"@Eq { sum from i=0 to n { r sup i over sqrt pi } }"
+}
+
+@LP
+@Heading { 16. Basic graphics }
+@LD @Code {
+"grey @Colour { ... }"
+"gray @Color { ... }"
+"@Box { ... }"
+"@CurveBox { ... }"
+"@ShadowBox { ... }"
+"60d @Rotate { ... }"
+"0.71 @Scale { ... }"
+"@QuotedDisplay @Scale { ... }"
+"@IncludeGraphic filename.eps"
+}
+
+@LP
+@Heading { 17. Miscellaneous }
+@LD lines @Break {
+@Code "@Underline { will be underlined }"
+@Code "@Date"
+@Code "@Time"
+@Code "German @Language { ... }"
+@Code "\# comment to end of line"
+@Code "\"#&/@^{}|~\"" (enclose these characters in quotes)
+}
+}
+} # end second table
+@End @Appendix
diff --git a/doc/doc/user/bas b/doc/doc/user/bas
new file mode 100644
index 0000000..a947d77
--- /dev/null
+++ b/doc/doc/user/bas
@@ -0,0 +1,32 @@
+@Chapter
+ @Title { The Basics }
+ @Tag { basics }
+@Begin
+@LP
+The Lout document formatting system has been designed with the needs of
+the ordinary user very much in mind. Although the features of Lout are
+virtually endless, and include mathematical equations, diagrams made from
+lines and shapes, bibliographic databases, and so on, the system is very
+simple to use.
+@BeginSections
+@Include { bas_star }
+@Include { bas_objs }
+@Include { bas_spac }
+@Include { bas_char }
+@Include { bas_empt }
+@Include { bas_font }
+@Include { bas_head }
+@Include { bas_par1 }
+@Include { bas_par2 }
+@Include { bas_line }
+@Include { bas_hyph }
+@Include { bas_marg }
+@Include { bas_unde }
+@Include { bas_lang }
+@Include { bas_date }
+@Include { bas_supe }
+@Include { bas_verb }
+@Include { bas_drop }
+@Include { bas_conv }
+@EndSections
+@End @Chapter
diff --git a/doc/doc/user/bas_char b/doc/doc/user/bas_char
new file mode 100644
index 0000000..58f25a2
--- /dev/null
+++ b/doc/doc/user/bas_char
@@ -0,0 +1,603 @@
+@Section
+ @Title { Characters }
+ @Tag { characters }
+@Begin
+@PP
+The usual way to get characters into a document is simply to type them as
+characters. @Index characters
+we have been doing all along. However, for some characters this is not
+possible, either because they have some special meaning, as @Code "{"
+and @Code "}" do, or because the keyboard has no button for them. This
+section explains how to get every possible character: every printable
+character in the ISO-LATIN-1 character set, every character in the Adobe
+Systems Symbol font, plus the characters {@Char quotesinglbase},
+{@Char quotedblbase}, {@Char ellipsis}, {@Char OE}, {@Char oe},
+{@Char quotedblleft}, {@Char quotedblright}, {@Char fi},
+{@Char fl}, {@Char endash}, {@Char emdash}, {@Char bullet}, {@Char dagger},
+{@Char daggerdbl}, {@Char florin}, {@Char fraction}, and @Euro. If it
+exists at all, you will find it here. ISO-LATIN-2 and Russian characters
+are available separately. In principle, there is no limit to the characters
+available, but to go beyond those given in this section requires expertise
+in defining encoding vectors and fonts @Cite { $kingston1995lout.expert}.
+@PP
+First up we have the characters that you get simply by typing
+them. The characters themselves are shown at the left, and what you
+type to get them at the right:
+@ID @OneRow @Tab
+ vmargin { 0.5vx }
+ @Fmta { @Col @CC A ! @Col @Code A ! @Col ! @Col @CC B ! @Col @Code B !
+ @Col ! @Col @CC C ! @Col @Code C ! @Col ! @Col @CC D ! @Col @Code D !
+ @Col ! @Col @CC E ! @Col @Code E ! @Col ! @Col @CC F ! @Col @Code F }
+{
+@Rowa A { ! } B { $ } C { % } D { ' } E { ( } F { ) }
+@Rowa A { * } B { + } C { , } D { - } E { 0 } F { 1 }
+@Rowa A { 2 } B { 3 } C { 4 } D { 5 } E { 6 } F { 7 }
+@Rowa A { 8 } B { 9 } C { : } D { ; } E { < } F { = }
+@Rowa A { > } B { ? } C { A } D { B } E { C } F { D }
+@Rowa A { E } B { F } C { G } D { H } E { I } F { J }
+@Rowa A { K } B { L } C { M } D { N } E { O } F { P }
+@Rowa A { Q } B { R } C { S } D { T } E { U } F { V }
+@Rowa A { W } B { X } C { Y } D { Z } E { [ } F { ] }
+@Rowa A { _ } B { ` } C { a } D { b } E { c } F { d }
+@Rowa A { e } B { f } C { g } D { h } E { i } F { j }
+@Rowa A { k } B { l } C { m } D { n } E { o } F { p }
+@Rowa A { q } B { r } C { s } D { t } E { u } F { v }
+@Rowa A { w } B { x } C { y } D { z } E { } F { }
+}
+Next come characters that have buttons but have a special meaning if
+they are typed directly, and consequently have to be enclosed in double
+quotes to turn off this meaning:
+quote.chars @Index { quote characters }
+@ID @OneRow @Tab
+ @Fmta { @Col @CC A ! @Col @Code B ! @Col !
+ @Col @CC C ! @Col @Code D ! @Col !
+ @Col @CC E ! @Col @Code F ! @Col !
+ @Col @CC G ! @Col @Code H ! @Col I
+ }
+{
+@Rowa
+ A { "\"" } B { "\"\\\"\"" }
+ C { "#" } D { "\"#\"" }
+ E { "&" } F { "\"&\"" }
+ G { "/" } H { "\"/\"" }
+@Rowa
+ A { "@" } B { "\"@\"" }
+ C { "\\" } D { "\"\\\\\"" }
+ E { "^" } F { "\"^\"" }
+ G { "{" } H { "\"{\"" }
+@Rowa
+ A { "|" } B { "\"|\"" }
+ C { "}" } D { "\"}\"" }
+ E { "~" } F { "\"~\"" }
+ G { } H { "\" \"" }
+ I { (space character) }
+}
+If you think you want {@Code "\""}, you probably really want `` and '',
+for which see below. You can place whole sequences of characters, special
+or not, inside one pair of double quotes:
+@ID @OneRow @Tab
+ @Fmta { @Col A ! @Col ! @Col @Code B }
+{
+@Rowa
+ A { "jeff/includes/su_crest.eps" }
+ B { "\"jeff/includes/su_crest.eps\"" }
+@Rowa
+ A { "\"@PP\"" }
+ B { "\"\\\"@PP\\\"\"" }
+}
+The following characters have been deemed important enough to deserve
+their own symbols:
+@ID @OneRow @Tab
+ vmargin { 0.5vx }
+ @Fmta { @Col A ! @Col @Code B ! @Col ! @Col C ! @Col @Code D !
+ @Col ! @Col E ! @Col @Code F }
+{
+ @Rowa
+ A { `` }
+ B { "``" }
+ C { ,, }
+ D { ",," }
+ E { -- }
+ F { "--" }
+ @Rowa
+ A { '' }
+ B { "''" }
+ C { ... }
+ D { "..." }
+ E { --- }
+ F { "---" }
+ @Rowa
+ A { @Bullet bullet @Index @Code "@Bullet" }
+ B { "@Bullet" }
+ C { @Star star @Index @Code "@Star" }
+ D { "@Star" }
+ E { @ParSym parsym @Index @Code "@ParSym" }
+ F { "@ParSym" }
+ @Rowa
+ A { @SectSym sectsym @Index @Code "@SectSym" }
+ B { "@SectSym" }
+ C { @Dagger dagger @Index @Code "@Dagger" }
+ D { "@Dagger" }
+ E { @DaggerDbl daggerdbl @Index @Code "@DaggerDbl" }
+ F { "@DaggerDbl"}
+ @Rowa
+ A { @CDot cdot @Index @Code "@CDot" }
+ B { "@CDot" }
+ C { @Sterling sterling @Index @Code "@Sterling" }
+ D { "@Sterling" }
+ E { @Yen yen @Index @Code "@Yen" }
+ F { "@Yen" }
+ @Rowa
+ A { @Florin florin @Index @Code "@Florin" }
+ B { "@Florin" }
+ C { @Degree degree @Index @Code "@Degree" }
+ D { "@Degree" }
+ E { @Minute minute @Index @Code "@Minute" }
+ F { "@Minute" }
+ @Rowa
+ A { @Second second @Index @Code "@Second" }
+ B { "@Second" }
+ C { @Lozenge lozenge @Index @Code "@Lozenge" }
+ D { "@Lozenge" }
+ E { @Multiply multiply @Index @Code "@Multiply"}
+ F { "@Multiply" }
+ @Rowa
+ A { @Divide divide @Index @Code "@Divide" }
+ B { "@Divide" }
+ C { @CopyRight copyright @Index @Code "@CopyRight" }
+ D { "@CopyRight"}
+ E { @Register register @Index @Code "@Register" }
+ F { "@Register" }
+ @Rowa
+ A { @TradeMark trademark @Index @Code "@TradeMark" }
+ B { "@TradeMark"}
+ C { @Euro euro @Index @Code "@Euro" }
+ D { "@Euro"}
+}
+Next we have the complete ISO-LATIN-1 character set, whose members you
+iso.latin.1 @Index { ISO-LATIN-1 character set }
+char. @Index { @Code "@Char" symbol }
+get with the @Code "@Char" symbol followed by the name of the character
+you want:
+@ID @OneRow -3p @Font @Tab
+ hmargin { 0.1c }
+ vmargin { 0.4vo }
+ @Fmta { @Col @CC @Char A ! @Col @Code { "@Char" A } ! @Col !
+ @Col @CC @Char B ! @Col @Code { "@Char" B } ! @Col !
+ @Col @CC @Char C ! @Col @Code { "@Char" C } ! @Col !
+ @Col @CC @Char D ! @Col @Code { "@Char" D } }
+ @Fmtb { @Col @CC @Char A ! @Col @Code { "@Char" A } ! @Col !
+ @Col ! @Col ! @Col ! @Col ! @Col ! @Col ! @Col ! @Col }
+{
+@Rowa A { space } B { exclam } C { quotedbl } D { numbersign }
+@Rowa A { dollar } B { percent } C { ampersand } D { quoteright }
+@Rowa A { parenleft } B { parenright } C { asterisk } D { plus }
+@Rowa A { comma } B { hyphen } C { period } D { slash }
+@Rowa A { zero } B { one } C { two } D { three }
+@Rowa A { four } B { five } C { six } D { seven }
+@Rowa A { eight } B { nine } C { colon } D { semicolon }
+@Rowa A { less } B { equal } C { greater } D { question }
+@Rowa A { at } B { A } C { B } D { C }
+@Rowa A { D } B { E } C { F } D { G }
+@Rowa A { H } B { I } C { J } D { K }
+@Rowa A { L } B { M } C { N } D { O }
+@Rowa A { P } B { Q } C { R } D { S }
+@Rowa A { T } B { U } C { V } D { W }
+@Rowa A { X } B { Y } C { Z } D { bracketleft }
+@Rowa A { backslash } B { bracketright } C { asciicircum } D { underscore }
+@Rowa A { quoteleft } B { a } C { b } D { c }
+@Rowa A { d } B { e } C { f } D { g }
+@Rowa A { h } B { i } C { j } D { k }
+@Rowa A { l } B { m } C { n } D { o }
+@Rowa A { p } B { q } C { r } D { s }
+@Rowa A { t } B { u } C { v } D { w }
+@Rowa A { x } B { y } C { z } D { braceleft }
+@Rowa A { bar } B { braceright } C { asciitilde } D { dotlessi }
+@Rowa A { grave } B { acute } C { circumflex } D { tilde }
+@Rowa A { macron } B { breve } C { dotaccent } D { dieresis }
+@Rowa A { ring } B { cedilla } C { hungarumlaut } D { ogonek }
+@Rowa A { caron } B { space } C { exclamdown } D { cent }
+@Rowa A { sterling } B { currency } C { yen } D { brokenbar }
+@Rowa A { section } B { dieresis } C { copyright } D { ordfeminine }
+@Rowa A { guillemotleft } B { logicalnot } C { hyphen } D { registered }
+@Rowa A { macron } B { degree } C { plusminus } D { twosuperior }
+@Rowa A { threesuperior } B { acute } C { mu } D { paragraph }
+@Rowa A { periodcentered } B { cedilla } C { onesuperior } D { ordmasculine }
+@Rowa A { guillemotright } B { onequarter } C { onehalf } D { threequarters }
+@Rowa A { questiondown } B { Agrave } C { Aacute } D { Acircumflex }
+@Rowa A { Atilde } B { Adieresis } C { Aring } D { AE }
+@Rowa A { Ccedilla } B { Egrave } C { Eacute } D { Ecircumflex }
+@Rowa A { Edieresis } B { Igrave } C { Iacute } D { Icircumflex }
+@Rowa A { Idieresis } B { Eth } C { Ntilde } D { Ograve }
+@Rowa A { Oacute } B { Ocircumflex } C { Otilde } D { Odieresis }
+@Rowa A { multiply } B { Oslash } C { Ugrave } D { Uacute }
+@Rowa A { Ucircumflex } B { Udieresis } C { Yacute } D { Thorn }
+@Rowa A { germandbls } B { agrave } C { aacute } D { acircumflex }
+@Rowa A { atilde } B { adieresis } C { aring } D { ae }
+@Rowa A { ccedilla } B { egrave } C { eacute } D { ecircumflex }
+@Rowa A { edieresis } B { igrave } C { iacute } D { icircumflex }
+@Rowa A { idieresis } B { eth } C { ntilde } D { ograve }
+@Rowa A { oacute } B { ocircumflex } C { otilde } D { odieresis }
+@Rowa A { divide } B { oslash } C { ugrave } D { uacute }
+@Rowa A { ucircumflex } B { udieresis } C { yacute } D { thorn }
+@Rowb A { ydieresis }
+}
+Of course, many of these characters can also be typed directly, or with the
+aid of double quotes, as we have seen. If your keyboard has accented
+accented @Index { accented characters }
+characters on it, you can type them directly too; if not, you need to
+use the @Code "@Char" symbol, in which case you will probably need
+braces as well:
+@ID @Code "gar{@Char ccedilla}on"
+to distinguish the @Code "@Char" symbol and the character name from
+adjacent letters.
+@PP
+Next we have the Adobe Systems Symbol font, a treasure trove of
+symbol. @Index { Symbol font }
+sym. @Index { @Code "@Sym" symbol }
+exotic characters obtained with the @Code "@Sym" symbol:
+@ID @OneRow -3p @Font @Tab
+ hmargin { 0.1c }
+ vmargin { 0.4vo }
+ @Fmta { @Col @CC @Sym A ! @Col @Code { "@Sym" A } ! @Col !
+ @Col @CC @Sym B ! @Col @Code { "@Sym" B } ! @Col !
+ @Col @CC @Sym C ! @Col @Code { "@Sym" C } ! @Col !
+ @Col @CC @Sym D ! @Col @Code { "@Sym" D } }
+{
+@Rowa A { space } B { exclam } C { universal } D { numbersign }
+@Rowa A { existential } B { percent } C { ampersand } D { suchthat }
+@Rowa A { parenleft } B { parenright } C { asteriskmath } D { plus }
+@Rowa A { comma } B { minus } C { period } D { slash }
+@Rowa A { zero } B { one } C { two } D { three }
+@Rowa A { four } B { five } C { six } D { seven }
+@Rowa A { eight } B { nine } C { colon } D { semicolon }
+@Rowa A { less } B { equal } C { greater } D { question }
+@Rowa A { congruent } B { Alpha } C { Beta } D { Chi }
+@Rowa A { Delta } B { Epsilon } C { Phi } D { Gamma }
+@Rowa A { Eta } B { Iota } C { theta1 } D { Kappa }
+@Rowa A { Lambda } B { Mu } C { Nu } D { Omicron }
+@Rowa A { Pi } B { Theta } C { Rho } D { Sigma }
+@Rowa A { Tau } B { Upsilon } C { sigma1 } D { Omega }
+@Rowa A { Xi } B { Psi } C { Zeta } D { bracketleft }
+@Rowa A { therefore } B { bracketright } C { perpendicular } D { underscore }
+@Rowa A { radicalex } B { alpha } C { beta } D { chi }
+@Rowa A { delta } B { epsilon } C { phi } D { gamma }
+@Rowa A { eta } B { iota } C { phi1 } D { kappa }
+@Rowa A { lambda } B { mu } C { nu } D { omicron }
+@Rowa A { pi } B { theta } C { rho } D { sigma }
+@Rowa A { tau } B { upsilon } C { omega1 } D { omega }
+@Rowa A { xi } B { psi } C { zeta } D { braceleft }
+@Rowa A { bar } B { braceright } C { similar } D { Upsilon1 }
+@Rowa A { minute } B { lessequal } C { fraction } D { infinity }
+@Rowa A { florin } B { club } C { diamond } D { heart }
+@Rowa A { spade } B { arrowboth } C { arrowleft } D { arrowup }
+@Rowa A { arrowright } B { arrowdown } C { degree } D { plusminus }
+@Rowa A { second } B { greaterequal } C { multiply } D { proportional }
+@Rowa A { partialdiff } B { bullet } C { divide } D { notequal }
+@Rowa A { equivalence } B { approxequal } C { ellipsis } D { arrowvertex }
+@Rowa A { arrowhorizex } B { carriagereturn } C { aleph } D { Ifraktur }
+@Rowa A { Rfraktur } B { weierstrass } C { circlemultiply } D { circleplus }
+@Rowa A { emptyset } B { intersection } C { union } D { propersuperset }
+@Rowa A { reflexsuperset } B { notsubset } C {propersubset} D {reflexsubset}
+@Rowa A { element } B { notelement } C { angle } D { gradient }
+@Rowa A { registerserif } B { copyrightserif } C {trademarkserif} D {product}
+@Rowa A { radical } B { dotmath } C { logicalnot } D { logicaland }
+@Rowa A { logicalor } B { arrowdblboth } C { arrowdblleft } D { arrowdblup }
+@Rowa A { arrowdblright } B { arrowdbldown } C { lozenge } D { angleleft }
+@Rowa A { registersans } B { copyrightsans } C {trademarksans} D {summation}
+@Rowa A { parenlefttp } B { parenleftex } C { parenleftbt } D {bracketlefttp}
+ vmargin { 0.5vx }
+@Rowa A { bracketleftex } B { bracketleftbt } C {bracelefttp} D {braceleftmid}
+ vmargin { 0.5vx }
+@Rowa A { braceleftbt } B { braceex } C { angleright } D { integral }
+ vmargin { 0.5vx }
+@Rowa A { integraltp } B { integralex } C { integralbt } D { parenrighttp }
+ vmargin { 0.5vx }
+@Rowa A {parenrightex} B {parenrightbt} C {bracketrighttp} D {bracketrightex}
+ vmargin { 0.5vx }
+@Rowa A { bracketrightbt } B {bracerighttp} C {bracerightmid} D {bracerightbt}
+ vmargin { 0.5vx }
+}
+There is only one Symbol font; it does not come in bold or italic faces
+like the other fonts. Typing @Code "@B @Sym alpha" is therefore useless,
+and anyway there is no bold @Sym alpha character in any font distributed
+with Lout. # (except see Section {@NumberOf teq}).
+@PP
+Next there are the dingbats. Here they are with their
+dingbats. @Index { dingbats characters }
+(regrettably meaningless) names:
+@FootNote {
+If you see only conventional characters in this table, the problem
+is that your viewer does not have access to the Dingbats font. The
+author's viewer has this problem, for example, but his printer doesn't.
+}
+@CD @Tbl
+ indent { ctr }
+ iv { ctr }
+ rule { yes }
+ font { -1p }
+ width { 1.0c }
+ margin { 0.2f }
+ aiv { top }
+ afont { Helvetica Base -2p }
+ aformat {
+ @Cell paint { @Xrgb grey95 } -90d @Rotate B |
+ @Cell ruleright { double } -90d @Rotate C |
+ @Cell paint { @Xrgb grey95 } -90d @Rotate D |
+ @Cell ruleright { double } -90d @Rotate E |
+ @Cell paint { @Xrgb grey95 } -90d @Rotate F |
+ @Cell ruleright { double } -90d @Rotate G |
+ @Cell paint { @Xrgb grey95 } -90d @Rotate H |
+ @Cell ruleright { double } -90d @Rotate I |
+ @Cell paint { @Xrgb grey95 } -90d @Rotate J |
+ @Cell ruleright { double } -90d @Rotate K |
+ @Cell paint { @Xrgb grey95 } -90d @Rotate L |
+ @Cell -90d @Rotate M | }
+ bformat {
+ @Cell paint { @Xrgb grey95 } indent { right } B |
+ @Cell ruleright { double } font { Dingbats Base -1p } @Char C |
+ @Cell paint { @Xrgb grey95 } indent { right } D |
+ @Cell ruleright { double } font { Dingbats Base -1p } @Char E |
+ @Cell paint { @Xrgb grey95 } indent { right } F |
+ @Cell ruleright { double } font { Dingbats Base -1p } @Char G |
+ @Cell paint { @Xrgb grey95 } indent { right } H |
+ @Cell ruleright { double } font { Dingbats Base -1p } @Char I |
+ @Cell paint { @Xrgb grey95 } indent { right } J |
+ @Cell ruleright { double } font { Dingbats Base -1p } @Char K |
+ @Cell paint { @Xrgb grey95 } indent { right } L |
+ @Cell font { Dingbats Base -1p } @Char M | }
+{
+ @Rowa
+ B { "@"Ding } C{ Dingbat }
+ D { "@"Ding } E{ Dingbat }
+ F { "@"Ding } G{ Dingbat }
+ H { "@"Ding } I{ Dingbat }
+ J { "@"Ding } K{ Dingbat }
+ L { "@"Ding } M{ Dingbat }
+ @Rowb
+ B{a1} C{a1}
+ D{a2} E{a2}
+ F{a202} G{a202}
+ H{a3} I{a3}
+ J{a4} K{a4}
+ L{a5} M{a5}
+ @Rowb
+ B{a119} C{a119}
+ D{a118} E{a118}
+ F{a117} G{a117}
+ H{a11} I{a11}
+ J{a12} K{a12}
+ L{a13} M{a13}
+ @Rowb
+ B{a14} C{a14}
+ D{a15} E{a15}
+ F{a16} G{a16}
+ H{a105}I{a105}
+ J{a17} K{a17}
+ L{a18} M{a18}
+ @Rowb
+ B{a19} C{a19}
+ D{a20} E{a20}
+ F{a21} G{a21}
+ H{a22} I{a22}
+ J{a23} K{a23}
+ L{a24} M{a24}
+ @Rowb
+ B{a25} C{a25}
+ D{a26} E{a26}
+ F{a27} G{a27}
+ H{a28}I{a28}
+ J{a6} K{a6}
+ L{a7} M{a7}
+ @Rowb
+ B{a8} C{a8}
+ D{a9} E{a9}
+ F{a10} G{a10}
+ H{a29} I{a29}
+ J{a30} K{a30}
+ L{a31} M{a31}
+ @Rowb
+ B{a32} C{a32}
+ D{a33} E{a33}
+ F{a34} G{a34}
+ H{a35} I{a35}
+ J{a36} K{a36}
+ L{a37} M{a37}
+ @Rowb
+ B{a38} C{a38}
+ D{a39} E{a39}
+ F{a40} G{a40}
+ H{a41} I{a41}
+ J{a42} K{a42}
+ L{a43} M{a43}
+ @Rowb
+ B{a44} C{a44}
+ D{a45} E{a45}
+ F{a46} G{a46}
+ H{a47} I{a47}
+ J{a48} K{a48}
+ L{a49} M{a49}
+ @Rowb
+ B{a50} C{a50}
+ D{a51} E{a51}
+ F{a52} G{a52}
+ H{a54} I{a54}
+ J{a55} K{a55}
+ L{a56} M{a56}
+ @Rowb
+ B{a57} C{a57}
+ D{a58} E{a58}
+ F{a59} G{a59}
+ H{a60} I{a60}
+ J{a61} K{a61}
+ L{a62} M{a62}
+ @Rowb
+ B{a63} C{a63}
+ D{a64} E{a64}
+ F{a65} G{a65}
+ H{a66} I{a66}
+ J{a67} K{a67}
+ L{a68} M{a68}
+ @Rowb
+ B{a69} C{a69}
+ D{a70} E{a70}
+ F{a71} G{a71}
+ H{a72} I{a72}
+ J{a73} K{a73}
+ L{a74} M{a74}
+ @Rowb
+ B{a203} C{a203}
+ D{a75} E{a75}
+ F{a204} G{a204}
+ H{a76} I{a76}
+ J{a77} K{a77}
+ L{a78} M{a78}
+ @Rowb
+ B{a79} C{a79}
+ D{a81} E{a81}
+ F{a82} G{a82}
+ H{a83} I{a83}
+ J{a84} K{a84}
+ L{a97} M{a97}
+ @Rowb
+ B{a98} C{a98}
+ D{a99} E{a99}
+ F{a100} G{a100}
+ H{a101} I{a101}
+ J{a102} K{a102}
+ L{a103} M{a103}
+ @Rowb
+ B{a104} C{a104}
+ D{a106} E{a106}
+ F{a107} G{a107}
+ H{a108} I{a108}
+ J{a112} K{a112}
+ L{a111} M{a111}
+ @Rowb
+ B{a110} C{a110}
+ D{a109} E{a109}
+ F{a120} G{a120}
+ H{a121} I{a121}
+ J{a122} K{a122}
+ L{a123} M{a123}
+ @Rowb
+ B{a124} C{a124}
+ D{a125} E{a125}
+ F{a126} G{a126}
+ H{a127} I{a127}
+ J{a128} K{a128}
+ L{a129} M{a129}
+ @Rowb
+ B{a130} C{a130}
+ D{a131} E{a131}
+ F{a132} G{a132}
+ H{a133} I{a133}
+ J{a134} K{a134}
+ L{a135} M{a135}
+ @Rowb
+ B{a136} C{a136}
+ D{a137} E{a137}
+ F{a138} G{a138}
+ H{a139} I{a139}
+ J{a140} K{a140}
+ L{a141} M{a141}
+ @Rowb
+ B{a142} C{a142}
+ D{a143} E{a143}
+ F{a144} G{a144}
+ H{a145} I{a145}
+ J{a146} K{a146}
+ L{a147} M{a147}
+ @Rowb
+ B{a148} C{a148}
+ D{a149} E{a149}
+ F{a150} G{a150}
+ H{a151} I{a151}
+ J{a152} K{a152}
+ L{a153} M{a153}
+ @Rowb
+ B{a154} C{a154}
+ D{a155} E{a155}
+ F{a156} G{a156}
+ H{a157} I{a157}
+ J{a158} K{a158}
+ L{a159} M{a159}
+ @Rowb
+ B{a160} C{a160}
+ D{a161} E{a161}
+ F{a163} G{a163}
+ H{a164} I{a164}
+ J{a196} K{a196}
+ L{a165} M{a165}
+ @Rowb
+ B{a192} C{a192}
+ D{a166} E{a166}
+ F{a167} G{a167}
+ H{a168} I{a168}
+ J{a169} K{a169}
+ L{a170} M{a170}
+ @Rowb
+ B{a171} C{a171}
+ D{a172} E{a172}
+ F{a173} G{a173}
+ H{a162} I{a162}
+ J{a174} K{a174}
+ L{a175} M{a175}
+ @Rowb
+ B{a176} C{a176}
+ D{a177} E{a177}
+ F{a178} G{a178}
+ H{a179} I{a179}
+ J{a193} K{a193}
+ L{a180} M{a180}
+ @Rowb
+ B{a199} C{a199}
+ D{a181} E{a181}
+ F{a200} G{a200}
+ H{a182} I{a182}
+ J{a201} K{a201}
+ L{a183} M{a183}
+ @Rowb
+ B{a184} C{a184}
+ D{a197} E{a197}
+ F{a185} G{a185}
+ H{a194} I{a194}
+ J{a198} K{a198}
+ L{a186} M{a186}
+ @Rowb
+ B{a195} C{a195}
+ D{a187} E{a187}
+ F{a188} G{a188}
+ H{a189} I{a189}
+ J{a190} K{a190}
+ L{a191} M{a191}
+}
+The easiest way to get a dingbat is to write, for example,
+@ID @Code "@Ding a123"
+which produces the dingbat with the given name from the table
+above. This is just a short for
+@ID @Code @Verbatim {
+{ Dingbats Base } @Font { @Char a123 }
+}
+In other words, dingbats are just another font.
+@PP
+Finally we have a few more characters that you get with the @Code "@Char"
+symbol, although they aren't ISO-LATIN-1 characters.
+@ID @OneRow -3p @Font @Tab
+ hmargin { 0.1c }
+ vmargin { 0.4vo }
+ @Fmta { @Col @CC @Char A ! @Col @Code { "@Char" A } ! @Col !
+ @Col @CC @Char B ! @Col @Code { "@Char" B } ! @Col !
+ @Col @CC @Char C ! @Col @Code { "@Char" C } ! @Col !
+ @Col @CC @Char D ! @Col @Code { "@Char" D } }
+ @Fmtb { @Col @CC @Char A ! @Col @Code { "@Char" A } ! @Col !
+ @Col ! @Col ! @Col ! @Col ! @Col ! @Col ! @Col ! @Col }
+{
+@Rowa A { quotesinglbase } B { quotedblbase } C { ellipsis } D { OE }
+@Rowa A { oe } B { quotedblleft } C { quotedblright } D { fi }
+@Rowa A { fl } B { endash } C { emdash } D { bullet }
+@Rowa A { dagger } B { daggerdbl } C { florin } D { fraction }
+}
+Most of these are also listed as `characters important enough to
+deserve their own symbols'.
+@End @Section
diff --git a/doc/doc/user/bas_conv b/doc/doc/user/bas_conv
new file mode 100644
index 0000000..bad4ed7
--- /dev/null
+++ b/doc/doc/user/bas_conv
@@ -0,0 +1,75 @@
+@Section
+ @Title { Alternative conventions for white space }
+ @Tag { white }
+@Begin
+@PP
+As Section {@NumberOf spaces} explains, when two objects are separated
+by one or more white space characters (spaces, tabs, and newlines), this
+same amount of white space will separate the two objects in the output.
+@PP
+Two other conventions for interpreting these white spaces have been
+used in other document formatting systems. Roughly, they are:
+@ID @Tab
+ @Fmta { @Col A ! @Col B }
+{
+@Rowa
+ A { troff }
+ B { Like Lout, except that at every point where a sentence ends at
+the end of an input line, add one extra space in the output. }
+@Rowa
+ A { @TeX }
+ B { Replace all sequences of two or more white spaces by one. Then,
+at every point where a sentence ends, whether or not it is at the end
+of a line, add one extra space in the output. }
+}
+Lout offers these two alternative conventions by means of the
+initialspace. @Index { @Code "@InitialSpace" option }
+@Code "@InitialSpace" option. This is similar to the
+@Code "@InitialFont" option described at the end of Section
+{@NumberOf fonts}, in that you can set it at the beginning of your
+document, like this:
+@ID @OneRow @Code {
+"@SysInclude { doc }"
+"@Document"
+" @InitialSpace { lout }"
+"//"
+"@Text @Begin"
+"..."
+"@End @Text"
+}
+or you can set it in the setup file. The above example shows the
+default value, {@Code lout}, which produces Lout's usual spacing;
+lout.space @Index { @Code lout spacing }
+troff.space @Index { @Code troff spacing }
+tex.space @Index { @Code tex (@LaTeX) spacing }
+the alternative values are @Code "troff" and {@Code "tex"}.
+@PP
+How to tell whether a sentence has ended is a vexed question. For
+the @Code "troff" method, Lout looks for a word at the end of a line
+ending in one of `.', `:', `?', or `!' optionally followed by either
+a right quote character or a right parenthesis. Actually, this depends
+on the current language (Section {@NumberOf languages}); the rule just
+given is for English, and other languages may differ.
+@PP
+The @Code "tex" rule for where a sentence ends is slightly more
+complicated. Lout looks for a word, not necessarily at the end
+of an input line, which ends as described for @Code "troff" but
+in addition has a lower-case letter preceding that.
+@PP
+You must use a paragraph symbol, such as @Code "@PP" or {@Code "@LP"},
+to separate paragraphs. The common convention of other systems,
+that a blank line marks a paragraph, is never true of Lout.
+@PP
+Whatever rule is adopted, there are occasional exceptions where you
+will have to indicate explicitly whether you want an ordinary space
+or a between-sentences space. For this there are two symbols,
+@Code "~" (ordinary space) and {@Code "~~"} (between-sentences
+space). For example,
+@ID @Code "Dr.~Kingston"
+will produce an ordinary space between the two words, even with
+@Code "tex" which would otherwise consider that spot to be the end
+of a sentence. Spaces adjacent to these two symbols have no effect on
+the result. However, @Code "~" produces an unbreakable space (that
+is, one that will never be replaced by the end of a line) in contrast
+to just leaving a space, which is breakable.
+@End @Section
diff --git a/doc/doc/user/bas_date b/doc/doc/user/bas_date
new file mode 100644
index 0000000..16ee433
--- /dev/null
+++ b/doc/doc/user/bas_date
@@ -0,0 +1,84 @@
+@Section
+ @Title { The current date and time }
+ @Tag { date }
+@Begin
+@PP
+The @Code "@Date" and @Code "@Time" symbols produce the current date
+date. @Index @Code "@Date"
+time. @Index @Code "@Time"
+and time:
+@ID @Code "It is now @Time on @Date."
+produces something like
+@ID { It is now @Time on @Date. }
+The result depends on the current language.
+@PP
+Both symbols have a @Code "@Format" option that changes the format of
+the result:
+@ID @Code "@Date @Format { @DayNum\"/\"@MonthNum\"/\"@ShortYear }"
+The result is the @Code "@Format" option with the symbols replaced by
+the appropriate values:
+@ID { @Date @Format { @DayNum"/"@MonthNum"/"@ShortYear } }
+The @Code "/" characters have been enclosed in double quotes for the
+usual reason (Section {@NumberOf characters}).
+@PP
+Here is the full list of symbols that you can use within both
+@Code "@Format" options:
+@ID @OneRow @Tab
+ @Fmta { @Col @Code A ! @Col B }
+ vmargin { 0.5vx }
+{
+@Rowa
+ A { "@Year" }
+ B { The year, e.g. @Code "1994" }
+@Rowa
+ A { "@ShortYear" }
+ B { The last two digits of the year, e.g. @Code "94" }
+@Rowa
+ A { "@Month" }
+ B { The month, e.g. @Code "December" }
+@Rowa
+ A { "@ShortMonth" }
+ B { The month abbreviated, e.g. @Code "Dec" }
+@Rowa
+ A { "@MonthNum" }
+ B { The number of the month, between @Code "1" and @Code "12" }
+@Rowa
+ A { "@Day" }
+ B { The day of the week, e.g. @Code "Saturday" }
+@Rowa
+ A { "@ShortDay" }
+ B { The day abbreviated, e.g. @Code "Sat" }
+@Rowa
+ A { "@DayNum" }
+ B { The day of the month, between @Code "1" and @Code "31" }
+@Rowa
+ A { "@MeriDiem" }
+ B { @Code "a.m." or @Code "p.m." }
+@Rowa
+ A { "@ShortMeriDiem" }
+ B { @Code "am" or @Code "pm" }
+@Rowa
+ A { "@Hour" }
+ B { The hour, between @Code "00" and @Code "23" }
+@Rowa
+ A { "@ShortHour" }
+ B { The hour, between @Code "0" and @Code "23" }
+@Rowa
+ A { "@TwelveHour" }
+ B { The hour, between @Code "1" and @Code "12" }
+@Rowa
+ A { "@Minute" }
+ B { The minute, between @Code "00" and @Code "59" }
+@Rowa
+ A { "@Second" }
+ B { The second, almost always between @Code "00" and @Code "59" }
+}
+The default format for @Code "@Date" in English is
+@ID @Code "@Date @Format { @DayNum @Month, @Year }"
+and the default format for @Code "@Time" in English is
+@ID @Code "@Time @Format { @TwelveHour.@Minute @MeriDiem }"
+Both default formats depend on the current language, and
+so do {@Code "@Month"}, {@Code "@ShortMonth"},
+{@Code "@Day"}, and {@Code "@ShortDay"},{@Code "@MeriDiem" }
+and {@Code "@ShortMeriDiem" }.
+@End @Section
diff --git a/doc/doc/user/bas_drop b/doc/doc/user/bas_drop
new file mode 100644
index 0000000..0978123
--- /dev/null
+++ b/doc/doc/user/bas_drop
@@ -0,0 +1,44 @@
+@Section
+ @Title { Drop capitals }
+ @Tag { dropcaps }
+@Begin
+@PP
+There are two symbols for producing drop capitals, {@Code "@DropCapTwo"}
+drop.cap.two.sym @Index @Code "@DropCapTwo"
+drop.cap.three.sym @Index @Code "@DropCapThree"
+and {@Code "@DropCapThree"}. Place the capital to be dropped just
+before the symbol, and the rest of the paragraph after it:
+@ID @OneRow @Code {
+"I @DropCapTwo {"
+"t is a truth universally acknowledged, that a single man"
+"in possession of a good fortune, must be in want of a wife."
+"}"
+}
+produces the object
+@ID 3i @Wide {
+I @DropCapTwo {
+t is a truth universally acknowledged, that a single man
+in possession of a good fortune, must be in want of a wife.
+}
+}
+@Code "@DropCapThree" is the same except that the capital is larger
+and spreads over three lines.
+@PP
+Because Lout occasionally gets the height of the enlarged capital
+slightly wrong, there is a @Code "height" option which allows you
+to change the height if you need to:
+@ID @OneRow @Code {
+"H @DropCapTwo height { 1.5v }"
+"{"
+" ..."
+"}"
+}
+This shows the default value for the height of the capital in
+{@Code "@DropCapTwo"}: 1.5 times the current inter-line
+spacing. The default height in @Code "@DropCapThree" is {@Code "2.5v"}.
+@PP
+These symbols produce an object which may appear anywhere in the
+usual way. A paragraph symbol will be needed after the paragraph. The
+paragraph breaking style of the body of the paragraph will be
+{@Code "adjust nohyphen"}; this cannot be changed at present.
+@End @Section
diff --git a/doc/doc/user/bas_empt b/doc/doc/user/bas_empt
new file mode 100644
index 0000000..c9f615d
--- /dev/null
+++ b/doc/doc/user/bas_empt
@@ -0,0 +1,26 @@
+@Section
+ @Title { The empty object }
+ @Tag { empty }
+@Begin
+@PP
+It is possible to produce examples in which an object is clearly
+empty. @Index { empty object }
+missing:
+@ID @Code "{ @I }"
+The @Code "@I" symbol is supposed to italicize the following object,
+but in this example there isn't one. A more plausible example is
+@ID @OneRow @Code {
+"@PP"
+"@PP"
+}
+There are supposed to be paragraph objects between paragraph symbols,
+but here there aren't.
+@PP
+Wherever an object is clearly missing, Lout inserts an @I { empty object },
+which is a rectangle of size zero by zero that prints as nothing. Here
+are two other ways to get an empty object:
+@ID @Code "{} \"\""
+Braces always enclose an object, so Lout is obliged to insert an empty
+object between them; the two double quotes make a word with no characters
+in it, which is taken to be an empty object.
+@End @Section
diff --git a/doc/doc/user/bas_font b/doc/doc/user/bas_font
new file mode 100644
index 0000000..631ecfd
--- /dev/null
+++ b/doc/doc/user/bas_font
@@ -0,0 +1,670 @@
+@Section
+ @Title { Fonts and font sizes }
+ @Tag { fonts }
+@Begin
+@PP
+A @I font is a collection of printable characters. For example, here
+is the Times Roman font:
+@ID @OneRow { Times Base } @Font 0.05c @Space {
+{ @Char space }
+{ @Char exclam }
+{ @Char quotedbl }
+{ @Char numbersign }
+{ @Char dollar }
+{ @Char percent }
+{ @Char ampersand }
+{ @Char quoteright }
+{ @Char parenleft }
+{ @Char parenright }
+{ @Char asterisk }
+{ @Char plus }
+{ @Char comma }
+{ @Char hyphen }
+{ @Char period }
+{ @Char slash }
+{ @Char zero }
+{ @Char one }
+{ @Char two }
+{ @Char three }
+{ @Char four }
+{ @Char five }
+{ @Char six }
+{ @Char seven }
+{ @Char eight }
+{ @Char nine }
+{ @Char colon }
+{ @Char semicolon }
+{ @Char less }
+{ @Char equal }
+{ @Char greater }
+{ @Char question }
+{ @Char at }
+{ @Char bracketleft }
+{ @Char backslash }
+{ @Char bracketright }
+{ @Char asciicircum }
+{ @Char underscore }
+{ @Char quoteleft }
+//1vx
+{ @Char A }
+{ @Char B }
+{ @Char C }
+{ @Char D }
+{ @Char E }
+{ @Char F }
+{ @Char G }
+{ @Char H }
+{ @Char I }
+{ @Char J }
+{ @Char K }
+{ @Char L }
+{ @Char M }
+{ @Char N }
+{ @Char O }
+{ @Char P }
+{ @Char Q }
+{ @Char R }
+{ @Char S }
+{ @Char T }
+{ @Char U }
+{ @Char V }
+{ @Char W }
+{ @Char X }
+{ @Char Y }
+{ @Char Z }
+//1vx
+{ @Char a }
+{ @Char b }
+{ @Char c }
+{ @Char d }
+{ @Char e }
+{ @Char f }
+{ @Char g }
+{ @Char h }
+{ @Char i }
+{ @Char j }
+{ @Char k }
+{ @Char l }
+{ @Char m }
+{ @Char n }
+{ @Char o }
+{ @Char p }
+{ @Char q }
+{ @Char r }
+{ @Char s }
+{ @Char t }
+{ @Char u }
+{ @Char v }
+{ @Char w }
+{ @Char x }
+{ @Char y }
+{ @Char z }
+//1vx
+{ @Char braceleft }
+{ @Char bar }
+{ @Char braceright }
+{ @Char asciitilde }
+{ @Char dotlessi }
+{ @Char grave }
+{ @Char acute }
+{ @Char circumflex }
+{ @Char tilde }
+{ @Char macron }
+{ @Char breve }
+{ @Char dotaccent }
+{ @Char dieresis }
+{ @Char ring }
+{ @Char cedilla }
+{ @Char hungarumlaut }
+{ @Char ogonek }
+{ @Char caron }
+{ @Char space }
+{ @Char exclamdown }
+{ @Char cent }
+{ @Char sterling }
+{ @Char currency }
+{ @Char yen }
+{ @Char brokenbar }
+{ @Char section }
+{ @Char dieresis }
+{ @Char copyright }
+{ @Char ordfeminine }
+{ @Char guillemotleft }
+{ @Char logicalnot }
+{ @Char hyphen }
+{ @Char registered }
+{ @Char macron }
+{ @Char degree }
+{ @Char plusminus }
+{ @Char twosuperior }
+{ @Char threesuperior }
+{ @Char acute }
+{ @Char mu }
+{ @Char paragraph }
+{ @Char periodcentered }
+{ @Char cedilla }
+{ @Char onesuperior }
+{ @Char ordmasculine }
+{ @Char guillemotright }
+{ @Char onequarter }
+{ @Char onehalf }
+{ @Char threequarters }
+{ @Char questiondown }
+//1vx
+{ @Char Agrave }
+{ @Char Aacute }
+{ @Char Acircumflex }
+{ @Char Atilde }
+{ @Char Adieresis }
+{ @Char Aring }
+{ @Char AE }
+{ @Char Ccedilla }
+{ @Char Egrave }
+{ @Char Eacute }
+{ @Char Ecircumflex }
+{ @Char Edieresis }
+{ @Char Igrave }
+{ @Char Iacute }
+{ @Char Icircumflex }
+{ @Char Idieresis }
+{ @Char Eth }
+{ @Char Ntilde }
+{ @Char Ograve }
+{ @Char Oacute }
+{ @Char Ocircumflex }
+{ @Char Otilde }
+{ @Char Odieresis }
+{ @Char multiply }
+{ @Char Oslash }
+{ @Char Ugrave }
+{ @Char Uacute }
+{ @Char Ucircumflex }
+{ @Char Udieresis }
+{ @Char Yacute }
+{ @Char Thorn }
+//1vx
+{ @Char germandbls }
+{ @Char agrave }
+{ @Char aacute }
+{ @Char acircumflex }
+{ @Char atilde }
+{ @Char adieresis }
+{ @Char aring }
+{ @Char ae }
+{ @Char ccedilla }
+{ @Char egrave }
+{ @Char eacute }
+{ @Char ecircumflex }
+{ @Char edieresis }
+{ @Char igrave }
+{ @Char iacute }
+{ @Char icircumflex }
+{ @Char idieresis }
+{ @Char eth }
+{ @Char ntilde }
+{ @Char ograve }
+{ @Char oacute }
+{ @Char ocircumflex }
+{ @Char otilde }
+{ @Char odieresis }
+{ @Char divide }
+{ @Char oslash }
+{ @Char ugrave }
+{ @Char uacute }
+{ @Char ucircumflex }
+{ @Char udieresis }
+{ @Char yacute }
+{ @Char thorn }
+{ @Char ydieresis }
+}
+and here is the Times Italic font:
+@ID @OneRow { Times Slope } @Font 0.05c @Space {
+{ @Char space }
+{ @Char exclam }
+{ @Char quotedbl }
+{ @Char numbersign }
+{ @Char dollar }
+{ @Char percent }
+{ @Char ampersand }
+{ @Char quoteright }
+{ @Char parenleft }
+{ @Char parenright }
+{ @Char asterisk }
+{ @Char plus }
+{ @Char comma }
+{ @Char hyphen }
+{ @Char period }
+{ @Char slash }
+{ @Char zero }
+{ @Char one }
+{ @Char two }
+{ @Char three }
+{ @Char four }
+{ @Char five }
+{ @Char six }
+{ @Char seven }
+{ @Char eight }
+{ @Char nine }
+{ @Char colon }
+{ @Char semicolon }
+{ @Char less }
+{ @Char equal }
+{ @Char greater }
+{ @Char question }
+{ @Char at }
+{ @Char bracketleft }
+{ @Char backslash }
+{ @Char bracketright }
+{ @Char asciicircum }
+{ @Char underscore }
+{ @Char quoteleft }
+//1vx
+{ @Char A }
+{ @Char B }
+{ @Char C }
+{ @Char D }
+{ @Char E }
+{ @Char F }
+{ @Char G }
+{ @Char H }
+{ @Char I }
+{ @Char J }
+{ @Char K }
+{ @Char L }
+{ @Char M }
+{ @Char N }
+{ @Char O }
+{ @Char P }
+{ @Char Q }
+{ @Char R }
+{ @Char S }
+{ @Char T }
+{ @Char U }
+{ @Char V }
+{ @Char W }
+{ @Char X }
+{ @Char Y }
+{ @Char Z }
+//1vx
+{ @Char a }
+{ @Char b }
+{ @Char c }
+{ @Char d }
+{ @Char e }
+{ @Char f }
+{ @Char g }
+{ @Char h }
+{ @Char i }
+{ @Char j }
+{ @Char k }
+{ @Char l }
+{ @Char m }
+{ @Char n }
+{ @Char o }
+{ @Char p }
+{ @Char q }
+{ @Char r }
+{ @Char s }
+{ @Char t }
+{ @Char u }
+{ @Char v }
+{ @Char w }
+{ @Char x }
+{ @Char y }
+{ @Char z }
+//1vx
+{ @Char braceleft }
+{ @Char bar }
+{ @Char braceright }
+{ @Char asciitilde }
+{ @Char dotlessi }
+{ @Char grave }
+{ @Char acute }
+{ @Char circumflex }
+{ @Char tilde }
+{ @Char macron }
+{ @Char breve }
+{ @Char dotaccent }
+{ @Char dieresis }
+{ @Char ring }
+{ @Char cedilla }
+{ @Char hungarumlaut }
+{ @Char ogonek }
+{ @Char caron }
+{ @Char space }
+{ @Char exclamdown }
+{ @Char cent }
+{ @Char sterling }
+{ @Char currency }
+{ @Char yen }
+{ @Char brokenbar }
+{ @Char section }
+{ @Char dieresis }
+{ @Char copyright }
+{ @Char ordfeminine }
+{ @Char guillemotleft }
+{ @Char logicalnot }
+{ @Char hyphen }
+{ @Char registered }
+{ @Char macron }
+{ @Char degree }
+{ @Char plusminus }
+{ @Char twosuperior }
+{ @Char threesuperior }
+{ @Char acute }
+{ @Char mu }
+{ @Char paragraph }
+{ @Char periodcentered }
+{ @Char cedilla }
+{ @Char onesuperior }
+{ @Char ordmasculine }
+{ @Char guillemotright }
+{ @Char onequarter }
+{ @Char onehalf }
+{ @Char threequarters }
+{ @Char questiondown }
+//1vx
+{ @Char Agrave }
+{ @Char Aacute }
+{ @Char Acircumflex }
+{ @Char Atilde }
+{ @Char Adieresis }
+{ @Char Aring }
+{ @Char AE }
+{ @Char Ccedilla }
+{ @Char Egrave }
+{ @Char Eacute }
+{ @Char Ecircumflex }
+{ @Char Edieresis }
+{ @Char Igrave }
+{ @Char Iacute }
+{ @Char Icircumflex }
+{ @Char Idieresis }
+{ @Char Eth }
+{ @Char Ntilde }
+{ @Char Ograve }
+{ @Char Oacute }
+{ @Char Ocircumflex }
+{ @Char Otilde }
+{ @Char Odieresis }
+{ @Char multiply }
+{ @Char Oslash }
+{ @Char Ugrave }
+{ @Char Uacute }
+{ @Char Ucircumflex }
+{ @Char Udieresis }
+{ @Char Yacute }
+{ @Char Thorn }
+//1vx
+{ @Char germandbls }
+{ @Char agrave }
+{ @Char aacute }
+{ @Char acircumflex }
+{ @Char atilde }
+{ @Char adieresis }
+{ @Char aring }
+{ @Char ae }
+{ @Char ccedilla }
+{ @Char egrave }
+{ @Char eacute }
+{ @Char ecircumflex }
+{ @Char edieresis }
+{ @Char igrave }
+{ @Char iacute }
+{ @Char icircumflex }
+{ @Char idieresis }
+{ @Char eth }
+{ @Char ntilde }
+{ @Char ograve }
+{ @Char oacute }
+{ @Char ocircumflex }
+{ @Char otilde }
+{ @Char odieresis }
+{ @Char divide }
+{ @Char oslash }
+{ @Char ugrave }
+{ @Char uacute }
+{ @Char ucircumflex }
+{ @Char udieresis }
+{ @Char yacute }
+{ @Char thorn }
+{ @Char ydieresis }
+}
+As their names imply, these two fonts belong to the @I { Times family },
+a collection of fonts designed to go well together. Every font has a
+@I { family name }, such as Times, Helvetica, or Courier, and a
+family.name @Index { family name of font }
+face.name @Index { face name of font }
+@I { face name }, such as Roman or Italic. To find out how to
+get the unusual characters, see Section {@NumberOf characters}.
+@PP
+Documents look best when they use just one font family, so the most
+common need is to change to a different face within the current
+family. We have already seen {@Code "@I"}, which changes to the Italic
+face of the current family; there are six such symbols:
+b. @Index @Code "@B"
+i. @Index @Code "@I"
+bi. @Index @Code "@BI"
+ii. @Index @Code "@II"
+s. @Index @Code "@S"
+r. @Index @Code "@R"
+@ID @OneRow @Tab
+ @Fmta { @Col @Code A ! @Col B }
+{
+@Rowa
+ A { "@B { Hello World }" }
+ B { @B { Hello World } }
+@Rowa
+ A { "@I { Hello World }" }
+ B { @I { Hello World } }
+@Rowa
+ A { "@BI { Hello World }" }
+ B { @BI { Hello World } }
+@Rowa
+ A { "@II { Hello World }" }
+ B { @II { Hello World } }
+@Rowa
+ A { "@S { Hello World }" }
+ B { @S { Hello World } }
+@Rowa
+ A { "@R { Hello World }" }
+ B { @R { Hello World } }
+}
+The symbols' names stand for Bold, Italic, Bold-Italic, Italic-Italic
+(see below), Small capitals, and Roman. It is conventional to use Bold
+for headings; Italic for emphasis, terms being defined, and subsidiary
+headings; and Roman for the rest. Small capitals are not really a
+different font; they are
+small.caps @Index { small capitals }
+made on demand from the current font. So you can write, for example,
+@ID @Code "@I @S { Hello World }"
+and get @I @S { Hello World }. You can change the size of small
+capitals using the @Code "@Font" or @Code "@InitialFont" symbols,
+as described below.
+@PP
+The @Code "@R" symbol is almost unnecessary, since the document as a
+whole is set in a Roman face; but it is occasionally useful:
+@ID @Code "@I { An Italic sentence with one @R Roman word }"
+produces
+@ID @I { An Italic sentence with one @R Roman word }
+This illustrates the general principle that the effect of a font symbol
+on the following object is subject to font symbols within that object.
+@PP
+When part of a title is to be set in italic font, neither @Code "@I"
+nor @Code "@BI" is suitable because the part should appear in bold
+italics in the title itself, but in ordinary italics in running headers
+and the table of contents. The @Code "@II" symbol is the one for this
+situation: it produces bold italics when the current font is bold,
+and ordinary italics otherwise.
+@PP
+Changing families is a little more complicated. Here is the complete
+list of font families and their faces available with Basser Lout Version 3:
+@ID @OneRow @Tab
+ @Fmta { @Col @Code A ! @Col { ragged nohyphen } @Break @Code B }
+{
+@Rowa
+ A { AvantGarde }
+ B { Base Slope Bold BoldSlope BoldObl Book BookOblique
+CondBold CondBook CondDemi CondMedium Demi DemiOblique
+ExtraLight ExtraLightObl Medium MediumObl }
+@Rowa
+ A { Bookman }
+ B { Base Slope Bold BoldSlope BoldItalic Demi DemiItalic
+Light LightItalic Medium MediumItalic }
+@Rowa
+ A { Chancery }
+ B { Base Slope Bold BoldSlope
+Roman Bold Italic Light Demi LightItalic MediumItalic
+}
+@Rowa
+ A { Courier }
+ B { Base Slope Bold BoldSlope BoldOblique Oblique }
+@Rowa
+ A { Helvetica }
+ B { Base Slope Bold BoldSlope Black BlackOblique
+BoldOblique Compressed Cond CondBlack CondBlackObl
+CondBold CondBoldObl CondLight CondLightObl
+CondOblique ExtraCompressed
+Light LightOblique Narrow NarrowBold NarrowBoldObl
+NarrowObl Oblique UltraCompressed }
+@Rowa
+ A { Schoolbook }
+ B { Base Slope Bold BoldSlope BoldItalic Italic Roman }
+@Rowa
+ A { Palatino }
+ B { Base Slope Bold BoldSlope BoldItalic
+BoldItalicOsF BoldOsF Italic ItalicOsF Roman SC }
+@Rowa
+ A { Symbol }
+ B { Base Slope Bold BoldSlope }
+@Rowa
+ A { Times }
+ B { Base Slope Bold BoldSlope BoldItalic
+BoldItalicOsF BoldSC ExtraBold Italic ItalicOsF
+Roman RomanSC Semibold SemiboldItalic }
+@Rowa
+ A { Dingbats }
+ B { Base Slope Bold BoldSlope }
+}
+Lout understands all these fonts, but your printing device may not. Times,
+Helvetica, Courier, and Symbol at least seem to be ubiquitous, although
+not in every face. These fonts work only with languages that use the
+Latin1 character set; consult Section {@NumberOf languages} for more
+information about this. It is not difficult for a Lout expert to extend this
+list @Cite { $kingston1995lout.expert }.
+@PP
+It is a convention in Lout that every font family should at least
+base. @Index { @Code Base font }
+slope. @Index { @Code Slope font }
+bold. @Index { @Code Bold font }
+boldslope. @Index { @Code BoldSlope font }
+contain faces called @Code { Base }, @Code { Slope }, @Code { Bold },
+and @Code { BoldSlope }, and these faces are what the @Code { "@R" },
+@Code { "@I" }, @Code { "@B" }, and @Code { "@BI" } symbols give you. But
+this convention is something of a fiction for two reasons. First,
+some font families don't have faces that could reasonably be described as
+bold or whatever. In particular, the @Code Symbol family contains just
+one face, and all four conventional face names produce that face. Second,
+the four conventional face names are not names that typographers actually
+use, @Code { Bold } excepted. @Code { Slope } produces an italic face
+in some families and an oblique one in others. As the table shows, the
+true names are available if you want to use them, but it is very convenient
+to have a @Code { Slope } face that is guaranteed to exist no matter which
+family is used.
+@PP
+The @Code "@Font" symbol changes the font of the following object. For
+font.sym @Index { @Code "@Font" symbol }
+example,
+@ID @Code "{ Helvetica Slope } @Font { Hello World }"
+produces
+@ID { Helvetica Slope } @Font { Hello World }
+When changing to a different family, a face name must follow the family
+name; but when changing face within a family, just the face name is
+sufficient.
+@PP
+To make the characters larger or smaller, you need to change the
+font.size @Index { font size }
+@I { font size }, which can also be done with the @Code "@Font"
+symbol. Font sizes are traditionally measured in {@I points}: there
+are 72 points to one inch, and the most common font sizes are 12 point
+and 10 point. However, as Section {@NumberOf objects} explains in
+detail, any length including fractional lengths is acceptable:
+@ID @Code "24p @Font { Hello World }"
+changes to 24 point size, producing
+@ID 24p @Font { Hello World }
+It is also possible to specify a font size relative to the current
+size: @Code "+2p" means two points larger, @Code "-2p" means two
+points smaller, and @Code "1.5f" means 1.5 times the current font
+size.
+@PP
+If you switch font sizes in the middle of a line, as in
+@ID @Code "Here's a 20p @Font big word"
+you will discover one of Lout's obscure secrets:
+@ID { Here's a 20p @Font big word }
+Adjacent letters are aligned vertically through their middles, not
+through the baseline, causing this awkward alignment. This was done
+because it makes equation formatting easy, and examples like the above
+look poor anyway. However, if you want to do this and so require
+alignment through the baseline, you can get it, with the @Code baselinemark
+option to the @Code "@Font" symbol:
+@ID @Code "baselinemark @Font { Here's a 20p @Font big word }"
+which produces
+@ID baselinemark @Font { Here's a 20p @Font big word }
+If you want it this way throughout your document, you can get it by
+putting @Code { baselinemark } in your initial font (see below).
+Lout's equation formatter contains the opposite option, which is
+@Code "xheight2mark @Font { ... }"
+(which aligns through a point half the height of
+an x character) so you won't disrupt equation formatting if you do
+this, although if you put an equation inside a paragraph, its
+axis will be aligned with the baseline of the adjacent words.
+@PP
+There is an @Code "@F" symbol which switches to a fixed width font
+family:
+@ID @Code "@F { Hello world }"
+produces the equivalent of @Code "{ Courier Base -1p } @Font ...",
+like this:
+@ID @F { Hello world }
+The @Code "-1p" is included to compensate for the relatively
+large appearance of the Courier font.
+@PP
+The document as a whole will be set in @Code { Times Base 12p }. To
+change this you need to change the @Code "@InitialFont" option, for
+initialfont. @Index @Code "@InitialFont"
+example to
+@ID @Code "@InitialFont { Helvetica Base 10p }"
+to get Helvetica 10 point. You must give all three parts in
+{@Code "@InitialFont"}: family, face, size. If you are using your own
+setup file, as explained in Section {@NumberOf setup}, you can find the
+@Code "@InitialFont" option there. If not, you can set it at the
+beginning of your document as explained in Section {@NumberOf ordinary}.
+@PP
+The @Code "@InitialFont" option is also a good place to set the size
+of small capitals if you don't like the default size that Lout gives
+you:
+@ID @Code "@InitialFont { Helvetica Base 10p setsmallcaps 0.9 }"
+In this example we're asking for small capitals to have size 0.9
+times the height of ordinary capitals. The number following
+@Code "setsmallcaps" is a ratio, not a length, so it carries no
+unit of measurement. You can put @Code "setsmallcaps" in an ordinary
+@Code "@Font" symbol too, if you like. For example,
+@ID @Code "{ setsmallcaps 0.9 } @Font @S { Hello, world }"
+has result
+@ID { { setsmallcaps 0.9 } @Font @S { Hello, world } }
+However for consistency most people would use @Code "setsmallcaps" only in
+{@Code "@InitialFont"}, if at all.
+@PP
+@I Ligatures are sequences of two or more letters run together; the
+ligatures. @Index { ligatures }
+most common ligatures are `fi' and `fl.' @I Kerning is moving adjacent
+kerning. @Index { kerning }
+letters closer together, for example in `VA.' Lout considers
+ligatures and kerning to be integral parts of each font; you can prevent
+them from happening only by enclosing one of the letters in a
+@Code "@OneCol" symbol, as in {@Code "@OneCol { V }A" }. Alternatively,
+to turn off ligatures you can write
+@ID @Code "nolig @Font { ... }"
+and then ligatures will not be used within the object following
+{@Code "@Font"}. Should you ever need to turn ligatures on
+within a region where they are turned off, use {@Code "lig @Font"}.
+@End @Section
diff --git a/doc/doc/user/bas_head b/doc/doc/user/bas_head
new file mode 100644
index 0000000..485c2a2
--- /dev/null
+++ b/doc/doc/user/bas_head
@@ -0,0 +1,31 @@
+@Section
+ @Title { Headings }
+ @Tag { headings }
+@Begin
+@PP
+The @Code "@Heading" symbol makes the following object into a
+heading. @Index @Code "@Heading"
+heading. Actually, all it does is change the font, so if you want a
+centred heading you have to display it as well:
+@ID @OneRow @Code {
+"@Display @Heading { A Centred Heading }"
+"Following text"
+}
+If you want a left-justified heading, use @Code "@LeftDisplay" instead
+of @Code {"@Display"}. Alternatively, you can use no display symbol at
+all, but then you will need paragraph symbols before and after:
+@ID @OneRow @Code {
+"@DP"
+"@Heading { A Left-Justified Heading }"
+"@PP"
+"Following text"
+}
+The font used is @Code Bold in the current family, although you can
+change this by changing the @Code "@HeadingFont" option in the setup
+headingfont. @Index @Code "@HeadingFont"
+file (Section {@NumberOf setup}).
+@PP
+In complex documents, large-scale structure symbols
+(Section {@NumberOf largescale}) are usually more appropriate
+than the @Code "@Heading" symbol.
+@End @Section
diff --git a/doc/doc/user/bas_hyph b/doc/doc/user/bas_hyph
new file mode 100644
index 0000000..9e9a2f9
--- /dev/null
+++ b/doc/doc/user/bas_hyph
@@ -0,0 +1,39 @@
+@Section
+ @Title { Hyphenation }
+ @Tag { hyph }
+@Begin
+@PP
+The @Code "@Break" symbol also controls hyphenation: @Code "hyphen"
+hyphenation. @Index hyphenation
+@Code "@Break" turns it on, @Code "nohyphen" @Code "@Break" turns it
+off. For example, ragged breaking is often done without hyphenation:
+@ID @OneRow @Code {
+"@IndentedDisplay { ragged nohyphen } @Break {"
+"This little paragraph will appear with"
+"ragged ends to its lines."
+"}"
+}
+Lout's method of choosing hyphenation points is copied from the @TeX
+tex.hyph @SubIndex { hyphenation }
+system, except that Lout will never place a hyphen within a sequence
+of characters that form a ligature (fl and
+ligatures.hyph @SubIndex { and hyphenation }
+fi are the most common ligatures).
+@PP
+Hyphenation usually works well by itself; you should never need to
+interfere with its ideas of what to do. However, if you do want
+to tell Lout where you think a hyphen could be inserted, you can
+use the @Code "&-" symbol:
+@IndentedDisplay @Code {
+"after&-math"
+}
+This both allows hyphenation at the point marked and prevents it
+in the adjacent word fragments. If @Code "&-" occurs directly after
+a hyphen or slash character, hyphenation will be permitted but no extra
+hyphen will be inserted.
+@PP
+To prevent hyphenation of a word, enclose the word in a @Code "@OneCol"
+symbol. To turn hyphenation off throughout the document, you need to set
+the @Code "@InitialBreak" option to {@Code "nohyphen"}, as described at
+the end of Section {@NumberOf linespace}.
+@End @Section
diff --git a/doc/doc/user/bas_lang b/doc/doc/user/bas_lang
new file mode 100644
index 0000000..9e36cea
--- /dev/null
+++ b/doc/doc/user/bas_lang
@@ -0,0 +1,127 @@
+@Section
+ @Title { Languages other than English }
+ @Tag { languages }
+@Begin
+@PP
+When part of a document is written in a language other than English,
+languages. @Index { languages other than English }
+Lout should be informed of this using the @Code "@Language" symbol:
+language. @Index @Code "@Language"
+@ID @OneRow @Code {
+"... the garter, he said: French @Language { `Honi soit qui mal y"
+"pense' }, and this saying ..."
+}
+Changing language is quite analogous to changing font using the
+@Code "@Font" symbol.
+@PP
+At the time of writing, the following languages were available:
+@CD @OneRow @Tbl
+ aformat { @Cell ml { 0i } @Code A | @Cell mr { 0i } @Code B }
+ mv { 0.5vx }
+{
+@Rowa
+ A { Croatian Hrvatski }
+ B { Italian Italiano it }
+@Rowa
+ A { Czech Cesky Cestina cs }
+ B { Norwegian Norsk no }
+@Rowa
+ A { Danish Dansk da }
+ B { Polish Polski pl }
+@Rowa
+ A { Dutch Nederlands nl }
+ B { Portuguese Português pt }
+@Rowa
+ A { English en }
+ B { Programming }
+@Rowa
+ A { EnglishUK en-GB }
+ B { Russian ru }
+@Rowa
+ A { Esperanto eo }
+ B { Slovak Slovensky Slovencina }
+@Rowa
+ A { Finnish Suomi fi }
+ B { Slovenian Slovenia Slovenija sl }
+@Rowa
+ A { French Francais Fran{@Char ccedilla}ais fr }
+ B { Spanish Espa{@Char ntilde}ol es }
+@Rowa
+ A { German Deutsch de }
+ B { Swedish Svenska sv }
+@Rowa
+ A { Hungarian Magyar hu }
+ B { UpperSorbian hornjoserbsce serbsce }
+}
+File @Code "include/langdefs" in the distribution always has the exact
+list of known languages. As shown, most languages have alternative
+names, all equally acceptable to the @Code "@Language"
+symbol. @Code "EnglishUK" differs from @Code "English" only by applying
+hyphenation rules said to be more appropriate for British English;
+@Code "Programming" is for programming languages and is used by the
+symbols of Chapter {@NumberOf cprint}.
+@PP
+Since accented characters (Section {@NumberOf characters}) are always
+available irrespective of the language, at first sight it might seem
+that there is no need to bother informing Lout what language you are
+writing in. However, words are hyphenated differently depending on the
+hyphenation.languages @SubIndex { in languages other than English }
+language, and some symbols have different results in different
+languages. For example,
+@ID @Code "Danish @Language @Date"
+produces
+@ID { Danish @Language @Date }
+date.languages @SubIndex { in languages other than English }
+time.languages @SubIndex { in languages other than English }
+lists.languages @SubIndex { in languages other than English }
+and the alphabetic list symbols of Section {@NumberOf lists} also
+vary with the current language. So it's worth doing for the sake of
+knowing that non-English parts will appear as they should.
+@PP
+If your entire document is in a language other than English, you need
+to change the @Code "@InitialLanguage" option:
+initiallanguage. @Index @Code "@InitialLanguage"
+@ID @Code "@InitialLanguage { Deutsch }"
+If you are using your own setup file (Section {@NumberOf setup}), you
+can change it there. If not, you can change it at the start of your
+document, as explained in Section {@NumberOf ordinary}.
+@PP
+Czech, Polish, and Slovenian (at least) use the Latin2 character set,
+and users of these languages have to place
+@ID @Code "@SysInclude { latin2 }"
+at the start of their documents in order to get access to the
+Latin2 versions of the fonts.
+@FootNote { Prior to Version 3.21 of Lout, some accented characters
+were missing from these Latin2 fonts, but this deficiency has now
+been corrected. Lout generates output for these characters which
+prints their base letter and accent separately. } These have
+family names such as TimesCE, CourierCE, HelveticaCE, and so on (CE
+standing for Central European), to distinguish them from the same
+fonts encoded in Latin1. The face names are unchanged. A typical
+Latin2 document would therefore start off like this:
+@ID @OneRow @Code {
+"@SysInclude { latin2 }"
+"@SysInclude { doc }"
+"@Document"
+" @InitialLanguage { Polish }"
+" @InitialFont { TimesCE Base 12p }"
+"//"
+}
+Depending on the document type there may be a few other font-setting
+options in the setup file that need to be changed; in fact, it might be
+best to produce your own setup file in this case, replacing {@Code "doc"},
+with the changed options in it. See Section {@NumberOf setup} for how
+to do this. You could even start your setup file off with
+@Code "@SysInclude { latin2 }" to avoid the trouble of typing it at
+the top of every document. Consult database file @Code "latin2.ld"
+in the standard database directory for a complete list of Latin2 fonts.
+@PP
+Russian uses Cyrillic characters. In principle, users of Russian
+have to place
+@ID @Code "@SysInclude { russian }"
+at the very start of their documents in order to get access to
+Cyrillic fonts. However no such fonts are distributed
+with the current version of Lout, so this line does nothing at
+present. Other left-to-right languages are easily added, so
+consult the author if your language is not listed.
+@End @Section
diff --git a/doc/doc/user/bas_line b/doc/doc/user/bas_line
new file mode 100644
index 0000000..7861112
--- /dev/null
+++ b/doc/doc/user/bas_line
@@ -0,0 +1,43 @@
+@Section
+ @Title { Line spacing }
+ @Tag { linespace }
+@Begin
+@PP
+The @Code "@Break" symbol also controls the amount of space placed
+line.spacing @Index { line spacing }
+between the lines of paragraphs. This distance is best given using the
+@Code "v" unit of measurement: @Code "1v" is the current line
+separation (see Section {@NumberOf objects} for a description of
+lengths in general). For example,
+@ID @Code "2vx @Break ..."
+produces double spacing in the paragraphs of the following object, and
+double.spacing @Index { double spacing }
+@ID @Code "0.9vx @Break ..."
+produces cramped spacing, which can be useful in large tables that don't
+quite fit on one page. The @Code "x" following the @Code "v" is required,
+but its meaning is beyond our scope @Cite { $kingston1995lout.expert }.
+@PP
+To set the entire document in a different line spacing from the
+initialbreak @Index @Code "@InitialBreak"
+default, you need to change the @Code "@InitialBreak" option. If you
+are using your own setup file (Section {@NumberOf setup}),
+change it there. If not, you can change it at the beginning of your
+document, as described in Section {@NumberOf ordinary}.
+@PP
+The default value of the @Code "@InitialBreak" option produces the
+@Code "adjust" paragraph breaking style with a line spacing of 1.20
+times the current (that is, the initial) font size, and hyphenation
+on:
+@ID @Code "@InitialBreak { adjust 1.20fx hyphen }"
+To get double spacing, change it to
+@ID @Code "@InitialBreak { adjust 2.40fx hyphen }"
+To get ragged paragraphs with hyphenation off, change it to
+@ID @Code "@InitialBreak { ragged 1.20fx nohyphen }"
+and so on. It is a good idea to define the initial line spacing using
+the @Code "f" unit, since then if you change the initial font size the
+line spacing will change with it. However, any length (Section
+{@NumberOf objects}) with an @Code "x" appended will do: @Code "14px"
+for 14 point, @Code "0.5cx" for 0.5 centimetres, etc. But don't use
+the @Code "v" unit, because it refers to some @I previous line spacing,
+whereas here we are defining the line spacing for the first time.
+@End @Section
diff --git a/doc/doc/user/bas_marg b/doc/doc/user/bas_marg
new file mode 100644
index 0000000..416378c
--- /dev/null
+++ b/doc/doc/user/bas_marg
@@ -0,0 +1,33 @@
+@Section
+ @Title { Margin kerning }
+ @Tag { mkern }
+@Begin
+@PP
+The @Code "@Break" symbol offers a variant of ordinary paragraph
+breaking called @I { margin kerning }, in which small characters
+margin.kerning. @Index { margin kerning }
+that happen to end up at the start or end of a line protrude
+slightly into the margin. This is said to make documents
+look better, particularly in narrow columns. For example,
+@ID @Code @Verbatim {
+2i @Wide marginkerning @Break {
+This is a test, just a little test, of
+margin kerning. It should kern small
+characters at the margins.
+}
+}
+produces
+@ID 2i @Wide marginkerning @Break {
+This is a test, just a little test, of
+margin kerning. It should kern small
+characters at the margins.
+}
+in which the comma at the end of the first line protrudes. (For the
+@Code "@Wide" symbol, which produces a two-inch column here,
+see Section {@NumberOf precise}.)
+@PP
+As with most @Code "@Break" options, you probably want this in your
+@Code "@InitialBreak" option, described in Section {@NumberOf paras},
+if you use it at all. By default there is no margin kerning. To turn
+it off in a context where it is on, use @Code {"nomarginkerning @Break"}.
+@End @Section
diff --git a/doc/doc/user/bas_objs b/doc/doc/user/bas_objs
new file mode 100644
index 0000000..f6a2f78
--- /dev/null
+++ b/doc/doc/user/bas_objs
@@ -0,0 +1,141 @@
+@Section
+ @Title { Objects, symbols, options, and lengths }
+ @Tag { objects }
+@Begin
+@PP
+Lout is not concerned with the exact shapes of individual characters,
+only with the rectangular areas they occupy:
+@ID {
+@Box margin { 0c } B &
+@Box margin { 0c } i &
+@Box margin { 0c } o &
+@Box margin { 0c } l &
+@Box margin { 0c } o &
+@Box margin { 0c } g &
+@Box margin { 0c } y
+}
+When letters join together into a word, the result is a larger rectangle
+enclosing them all:
+@ID @Box margin { 0c } Biology
+When words join into lines we get even larger rectangles:
+@ID @Box margin { 0c } { Biology is the study of living things. }
+and so on up through paragraphs and columns to the largest rectangles,
+which are pages. We call any such rectangle, whether made up of one
+character, one word, one line, one paragraph, one page, or anything
+object. @Index { object }
+else, an @I { object }.
+@PP
+We also often say, for example, `the object
+{@Code "@I { Hello world }"},' referring to a piece of Lout's input as
+an object. This makes sense because we are anticipating the result
+produced, in this case the object @I { Hello world }. It's true that if
+a line break happens to fall between @I Hello and @I { world }, the
+result of @Code "@I { Hello world }" is not a single rectangle. We
+answer this by thinking of objects as existing before paragraph breaking
+rearranges them.
+@PP
+Not everything is an object, however. @Code "@I" alone is not an object,
+merely a symbol with the potential of producing an object when given an
+object to work on. To understand this, ask yourself what rectangle
+@Code "@I" alone could possibly represent: there is no such rectangle.
+@PP
+It helps to imagine the assembly of objects taking place before your
+eyes. Look at @Code Hello and imagine the objects H, e, l, l, o being
+assembled into the larger object Hello; look at @Code "Hello world"
+and imagine Hello and world being assembled into Hello world. When
+looking at
+@ID @Code "@I { Hello world }"
+you need to imagine the @Code "@I" symbol consuming the following object,
+Hello world, and replacing it with the object @I { Hello world }. Here
+is another example:
+@ID @Code "@CurveBox { Hello world }"
+The @Code "@CurveBox" symbol (Section {@NumberOf boxes}) consumes
+Hello world and replaces it with the object
+@ID @CurveBox { Hello world }
+This brings us to a basic principle of Lout: @I { Where you can put
+one object, you can put any object }. A few examples will show the
+vast range of possibilities opened up by this:
+@ID @Code "@CurveBox { @I Hello world }"
+produces
+@ID @CurveBox { @I Hello world }
+It doesn't bother @Code "@CurveBox" if one of the words inside
+it is in italics. Next:
+@ID @Code "@I @CurveBox { Hello world }"
+produces
+@ID @I @CurveBox { Hello world }
+The object following @Code "@I" cannot be just @Code {"@CurveBox"},
+since that is not an object by itself (it needs to be applied to some
+object first). So the object following @Code "@I" is
+@Code {"@CurveBox { Hello world }"}, and it is this that is consumed by
+@Code "@I" and modified. The @Code "@I" symbol is happy to hunt
+through the object looking for words to italicize. We could go on
+indefinitely in this way, producing
+@ID @CurveBox { @CurveBox Hello @CurveBox world }
+for example by {@Code "@CurveBox { @CurveBox Hello @CurveBox world }"}.
+@PP
+Symbols like @Code "@CurveBox" often have @I { options }, which are
+option. @Index { option }
+subsidiary symbols that modify the result. For example, @Code "@CurveBox"
+has @Code "margin" and @Code "paint" options:
+@ID @OneRow @Code {
+"@CurveBox"
+" margin { 0.5c }"
+" paint { lightgrey }"
+"{ Hello world }"
+}
+Options come immediately after the main symbol, before any following
+object. Each consists of the option name followed by the value we want
+the option to have, always enclosed in braces. Setting out options on
+separate lines as we have done above makes them easy to see but is not
+compulsory (end of line and space are the same to Lout). The result,
+naturally enough, is a curved box with a 0.5 centimetre margin around
+its contents, painted light grey:
+@ID @CurveBox
+ margin { 0.5c }
+ paint { lightgrey }
+{ Hello world }
+Options are optional: if you leave out an option, Lout supplies a
+sensible @I default value for it. Options may be given in any
+order. They are a very useful way of adding flexibility to symbols
+without cluttering things up when they aren't needed. They also help
+with learning: you can learn the basic symbol first and worry about
+the options later.
+@PP
+Whenever a length is required, as in the @Code margin option above, it
+length. @Index { length }
+centimetres. @Index { centimetres }
+inches. @Index { inches }
+point.unit @Index { point (unit of measurement) }
+em.unit @Index { em (unit of measurement) }
+f.unit @Index { @Code f unit of measurement }
+s.unit @Index { @Code s unit of measurement }
+v.unit @Index { @Code v unit of measurement }
+units.of @Index { units of measurement }
+may be given using any one of the following seven units of measurement:
+@ID @OneRow @Tab
+ @Fmta { @Col @Code A ! @Col B }
+ vmargin { 0.5vx }
+{
+@Rowa A { c } B { Centimetres }
+@Rowa A { i } B { Inches ({@Code "1i"} = {@Code "2.54c"}) }
+@Rowa A { p } B { Points ({@Code "72p"} = {@Code "1i"}) }
+@Rowa A { m } B { Ems ({@Code "12m"} = {@Code "1i"}) }
+@Rowa A { f } B { @Code "1f" is the current font size }
+@Rowa A { s } B { @Code "1s" is the current width of a space character }
+@Rowa A { v } B { @Code "1v" is the current inter-line spacing }
+}
+The first four all define absolute distances and are strictly
+interchangeable. It is traditional to measure font sizes in points; typical
+sizes are @Code "12p" and {@Code "10p"}, but fractional sizes are allowed.
+@PP
+If you use the @Code "f" unit, the length will depend on the current
+font size. This can be very useful. For example, the default value of
+the @Code "margin" option of @Code "@CurveBox" is @Code "0.3f" (0.3
+times the current font size). If you use a large font, for example in
+an overhead transparency, you get a correspondingly large margin without
+having to ask for it.
+@PP
+The @Code "s" and @Code "v" units are less useful. The @Code "v" unit
+is used within paragraph symbols (Section {@NumberOf paragraphs}) to
+ensure that the space between paragraphs widens with the inter-line spacing.
+@End @Section
diff --git a/doc/doc/user/bas_par1 b/doc/doc/user/bas_par1
new file mode 100644
index 0000000..eaf2839
--- /dev/null
+++ b/doc/doc/user/bas_par1
@@ -0,0 +1,106 @@
+@Section
+ @Title { Starting a new line, paragraph, or page }
+ @Tag { paragraphs }
+@Begin
+@PP
+The usual way to start a new paragraph is with the @Code "@PP" `plain
+pp. @Index @Code "@PP"
+paragraphs. @Index { paragraph symbols }
+paragraph' symbol. It produces a small vertical space and indents the
+first line of the new paragraph. Some document formatting systems
+interpret a blank line as a request to start a new paragraph. This is
+not the case with Lout: a blank line is two line-endings, equivalent to
+two spaces.
+@PP
+The @Code "@LP" `left paragraph' symbol produces the same
+lp. @Index @Code "@LP"
+vertical space as {@Code "@PP"}, but omits the indent. The @Code "@LLP"
+`left line paragraph' symbol starts a new paragraph using
+llp. @Index @Code "@LLP"
+the usual inter-line spacing and no indent, or in other words it starts a
+new line. If you are using it to create single lines, you need the
+@Code "lines" paragraph breaking style instead (Section {@NumberOf paras}).
+@PP
+The @Code "@DP" `display paragraph' symbol produces a somewhat larger
+dp. @Index @Code "@DP"
+vertical space, equal to the amount used before and after displays
+(Section {@NumberOf displays}), with no indent. To get even more
+space, use @Code "@DP" repeatedly. Another symbol,
+{@Code "@LOP"}, leaves a paragraph break the size of the gap left
+lop. @Index @Code "@LOP"
+outside (that is, before and after) lists (Section {@NumberOf lists}). This
+is usually equal to {@Code "@DP"}.
+@PP
+The {@Code "@NP"} `new page' symbol causes the following paragraph to
+page. @Index { page, skipping to next }
+new.page @Index { new page }
+np. @Index { @Code "@NP" (new page) }
+begin on a new page or column. Of course, Lout starts a new page or
+column automatically when the old one is full, so @Code "@NP" is needed
+only rarely.
+@PP
+To make each section begin on a new page you must set the @Code "@SectionGap"
+sectiongap. @Index @Code "@SectionGap"
+setup file option (Section {@NumberOf largescale}). To make one particular
+section start on a new page or column, place @Code "@NP" within the previous
+section, at the end. Placing @Code "@NP" between sections will not work.
+@PP
+Occasionally Lout will start a new page or column directly after a heading,
+which looks very poor. The obvious answer is to place an @Code "@NP"
+just before the heading, but when the document is later revised and the
+heading no longer falls near the page or column ending, this @Code "@NP"
+will have to be taken away again.
+A better answer is to precede the heading with a @Code "@CNP" `conditional
+cnp. @Index @Code "@CNP"
+new page' symbol, which checks whether enough space remains in the page or
+column for a heading and at least two lines of text. If so, @Code "@CNP"
+does nothing; if not, @Code "@CNP" causes a new page or column to be begun,
+like {@Code "@NP"}. The recommended arrangement is
+@ID @OneRow @Code {
+# "end of previous part."
+"@DP"
+"@CNP"
+"@Heading { A Heading }"
+"@PP"
+"First paragraph of next part ..."
+}
+The @Code "@CNP" symbol should be preceded by either @Code "@DP" or
+@Code "@LP", preferably {@Code "@DP"}, and this determines the amount of
+space when the @Code "@NP" action does not occur.
+@PP
+The ultimate answer to the conditional new page problem is to recognise
+that the heading is the beginning of a new section of the document, and
+to use a large-scale structure symbol like @Code "@Section" (Section
+{@NumberOf largescale}). Conditional new page is just one of many
+services provided automatically by these symbols.
+@PP
+Some people do not like to see the first line of a paragraph alone at
+the bottom of a page, or the last line of a paragraph alone at the
+top (these blemishes are sometimes called widows and orphans). You
+can instruct Lout not to allow these; see the next section for details.
+@PP
+You can modify the effect of the paragraph symbols by changing options
+in the setup file. For general information about setup files and their
+options, consult Section {@NumberOf setup}; here we just explain how
+the relevant options work. The options and their default values are
+paragap @Index @Code "@ParaGap"
+paraindent @Index @Code "@ParaIndent"
+displaygap @Index @Code "@DisplayGap"
+@ID @OneRow @Code {
+"@ParaGap { 1.30vx }"
+"@ParaIndent { 2.00f }"
+"@DisplayGap { 1.00v }"
+}
+The values are lengths (Section {@NumberOf objects}), except that
+for reasons beyond our scope @Code "@ParaGap" must be a length with
+an @Code "x" appended, as shown. The @Code "@ParaGap" option determines
+how much vertical space will be
+inserted by @Code "@PP" and {@Code "@LP"}. The default value,
+{@Code "1.30vx"}, is 30% more than the normal inter-line spacing;
+to get no extra spacing, change it to {@Code "1.00vx"}. The
+@Code "@ParaIndent" option determines the width of the indent produced
+by {@Code "@PP"}, and its default value is twice the current font
+size. The @Code "@DisplayGap" option determines the amount of vertical
+space inserted by {@Code "@DP"}, as well as the vertical space before
+and after displays.
+@End @Section
diff --git a/doc/doc/user/bas_par2 b/doc/doc/user/bas_par2
new file mode 100644
index 0000000..f26ec9e
--- /dev/null
+++ b/doc/doc/user/bas_par2
@@ -0,0 +1,338 @@
+@Section
+ @Title { Paragraph breaking }
+ @Tag { paras }
+@Begin
+@PP
+@I { Paragraph breaking } is the process of
+paragraph.breaking @Index { paragraph breaking }
+inserting line breaks into paragraphs at places appropriate to the column
+width. Lout works out suitable column widths and performs paragraph
+breaking automatically, finding an `optimal' break with the method
+used by the @TeX
+tex.paragraph @SubIndex { paragraph breaking }
+system. It offers ten styles of paragraph breaking,
+which we will explore with the aid of this example:
+@ID @OneRow @Code {
+It is a truth universally
+acknowledged, that a single man
+in possession of a good fortune,
+must be in want of a wife.
+}
+Changing the paragraph breaking style is similar to changing the font,
+colour, or language, and is done using the @Code "@Break" symbol:
+breakzzz.sym @Index { @Code "@Break" symbol }
+@ID @Code "ragged @Break ..."
+This example causes every paragraph in the following object to be
+broken using the @Code ragged style, of which more below.
+@PP
+The first two styles perform @I { line adjustment }, which
+line.adjustment @Index { line adjustment }
+means that they enlarge the spaces between the objects making up each
+line except the last so as to fill the lines completely:
+@IndentedList
+@LI @Tab
+ @Fmta { @Col 6c @Wide @Code A ! @Col 7c @Wide B }
+{
+@Rowa
+ A { "adjust @Break ..." }
+ B { adjust @Break {
+It is a truth universally
+acknowledged, that a single man
+in possession of a good fortune,
+must be in want of a wife.
+}}
+}
+@LI @Tab
+ @Fmta { @Col 6c @Wide @Code A ! @Col 7c @Wide B }
+{
+@Rowa
+ A { "outdent @Break ..." }
+ B { outdent @Break {
+It is a truth universally
+acknowledged, that a single man
+in possession of a good fortune,
+must be in want of a wife.
+}}
+}
+@EndList
+The @Code adjust style is frequently used, so it has been chosen as the
+default style. Outdenting adds a small space at the start of each line
+outdent. @Index { outdented paragraphs }
+except the first, and is much less common.
+@PP
+The next four styles do not adjust lines, leaving the paragraph
+ragged. @Index { @Code ragged paragraph breaking style }
+cragged. @Index { @Code cragged paragraph breaking style }
+rragged. @Index { @Code rragged paragraph breaking style }
+oragged. @Index { @Code oragged paragraph breaking style }
+{@I ragged}:
+@IndentedList
+@LI @Tab
+ @Fmta { @Col 6c @Wide @Code A ! @Col 7c @Wide B }
+{
+@Rowa
+ A { "ragged @Break ..." }
+ B { ragged @Break {
+It is a truth universally
+acknowledged, that a single man
+in possession of a good fortune,
+must be in want of a wife.
+}}
+}
+@LI @Tab
+ @Fmta { @Col 6c @Wide @Code A ! @Col 7c @Wide B }
+{
+@Rowa
+ A { "cragged @Break ..." }
+ B { cragged @Break {
+It is a truth universally
+acknowledged, that a single man
+in possession of a good fortune,
+must be in want of a wife.
+}}
+}
+@LI @Tab
+ @Fmta { @Col 6c @Wide @Code A ! @Col 7c @Wide B }
+{
+@Rowa
+ A { "rragged @Break ..." }
+ B { rragged @Break {
+It is a truth universally
+acknowledged, that a single man
+in possession of a good fortune,
+must be in want of a wife.
+}}
+}
+@LI @Tab
+ @Fmta { @Col 6c @Wide @Code A ! @Col 7c @Wide B }
+{
+@Rowa
+ A { "oragged @Break ..." }
+ B { oragged @Break {
+It is a truth universally
+acknowledged, that a single man
+in possession of a good fortune,
+must be in want of a wife.
+}}
+}
+@EndList
+The paragraph is broken in the same places as @Code adjust breaks it,
+but the resulting lines are left-justified, centred, or right-justified
+with respect to each other, rather than adjusted; @Code "oragged"
+is like @Code "outdent" except the resulting lines are not adjusted.
+@PP
+If you have a few words that must be kept together on one line, the
+preventing. @Index { preventing line breaks }
+keeping. @Index { keeping things on one line }
+recommended way is to separate them by the @Code "~" symbol:
+@ID @Code "According to Prof.~Jones, the effect of ..."
+It's best not to bother about this until you actually get a bad line
+break, since chances are good that the words will fall on one line anyway.
+@PP
+The last four styles differ from the first six in breaking the
+paragraph at the points where it is broken in the original input:
+lines. @Index { @Code lines paragraph breaking style }
+clines. @Index { @Code clines paragraph breaking style }
+olines. @Index { @Code olines paragraph breaking style }
+rlines. @Index { @Code rlines paragraph breaking style }
+@IndentedList
+@LI @Tab
+ @Fmta { @Col 6c @Wide @Code A ! @Col 7c @Wide B }
+{
+@Rowa
+ A { "lines @Break ..." }
+ B { lines @Break {
+It is a truth universally
+acknowledged, that a single man
+in possession of a good fortune,
+must be in want of a wife.
+}}
+}
+@LI @Tab
+ @Fmta { @Col 6c @Wide @Code A ! @Col 7c @Wide B }
+{
+@Rowa
+ A { "clines @Break ..." }
+ B { clines @Break {
+It @PageMark clines is a truth universally
+acknowledged, that a single man
+in possession of a good fortune,
+must be in want of a wife.
+}}
+}
+@LI @Tab
+ @Fmta { @Col 6c @Wide @Code A ! @Col 7c @Wide B }
+{
+@Rowa
+ A { "rlines @Break ..." }
+ B { rlines @Break {
+It is a truth universally
+acknowledged, that a single man
+in possession of a good fortune,
+must be in want of a wife.
+}}
+}
+@LI @Tab
+ @Fmta { @Col 6c @Wide @Code A ! @Col 7c @Wide B }
+{
+@Rowa
+ A { "olines @Break ..." }
+ B { olines @Break {
+It is a truth universally
+acknowledged, that a single man
+in possession of a good fortune,
+must be in want of a wife.
+}}
+}
+@EndList
+The lines are left-justified, centred, right-justified, or outdented
+with respect to each other in the same way as for the ragged styles.
+@PP
+When using the @Code lines style, there are some fine points concerning
+the proper use of white space. Consider this example:
+@ID @OneRow @Code {
+"@IndentedDisplay lines @Break @I {"
+"Teach me to hear Mermaides singing,"
+"Or to keep off envies stinging,"
+" And finde"
+" What winde"
+"Serves to'advance an honest minde."
+"}"
+}
+The result is the indented display
+@IndentedDisplay lines @Break @I {
+Teach me to hear Mermaides singing,
+Or to keep off envies stinging,
+ And finde
+ What winde
+Serves to'advance an honest minde.
+}
+This style is the only one for which it is useful to indent individual
+input lines; as the result shows, such indents will be respected.
+However, Lout's rule that only white space separating objects
+affects the result (Section {@NumberOf spaces}) still holds, so
+indenting the first line is not effective:
+@ID @OneRow @Code {
+"@IndentedDisplay lines @Break @I {"
+" And finde"
+" What winde"
+"Serves to'advance an honest minde."
+"}"
+}
+produces
+@IndentedDisplay lines @Break @I {
+ And finde
+ What winde
+Serves to'advance an honest minde.
+}
+This may seem awkward, but actually it is very convenient, because
+you don't have to worry about whether the first line of the paragraph
+should appear on a new line as above, or immediately after the opening
+brace: space at that point does not separate two objects, so it has
+no effect. The indent can be obtained by starting the first line
+with an empty object (Section {@NumberOf empty}):
+@ID @OneRow @Code {
+"@IndentedDisplay lines @Break @I {"
+"{} And finde"
+" What winde"
+"Serves to'advance an honest minde."
+"}"
+}
+The result is
+@IndentedDisplay lines @Break @I {
+{} And finde
+ What winde
+Serves to'advance an honest minde.
+}
+as desired.
+@PP
+When using {@Code lines}, {@Code clines}, {@Code rlines}, and
+{@Code "olines @Break"}, blank lines are respected and ordinarily appear
+at their full height. However, it often looks better to give somewhat
+blanklinescale. @Index { @Code blanklinescale }
+less than this to blank lines. For this there is the {@Code blanklinescale}
+option to {@Code "@Break"}:
+@ID @OneRow @Code @Verbatim {
+@IndentedDisplay { lines blanklinescale 0.6 } @Break @I {
+Go, and catch a falling star,
+ Get with child a mandrake root,
+Tell me, where all past years are,
+ Or who cleft the Devil's foot,
+Teach me to hear Mermaides singing,
+Or to keep off envies stinging,
+ And finde
+ What winde
+Serves to'advance an honest minde.
+
+If thou be'st born to strange sights,
+ Things invisible to see,
+Ride ten thousand days and nights,
+ Till age snow white hairs on thee,
+Thou, when thou return'st, wilt tell me
+All strange wonders that befell thee,
+ And swear
+ No where
+Lives a woman true, and fair.
+}
+}
+As shown, @Code "blanklinescale" may appear at any point in the
+object to the left of {@Code "@Break"}, followed by a number
+indicating how much to scale the usual height of a blank line by. The
+object to the left of @Code "@Break" has to be enclosed in braces as
+shown, to ensure that its extent is clear. The result is
+@IndentedDisplay { lines blanklinescale 0.6 } @Break @I {
+Go, and catch a falling star,
+ Get with child a mandrake root,
+Tell me, where all past years are,
+ Or who cleft the Devil's foot,
+Teach me to hear Mermaides singing,
+Or to keep off envies stinging,
+ And finde
+ What winde
+Serves to'advance an honest minde.
+
+If thou be'st born to strange sights,
+ Things invisible to see,
+Ride ten thousand days and nights,
+ Till age snow white hairs on thee,
+Thou, when thou return'st, wilt tell me
+All strange wonders that befell thee,
+ And swear
+ No where
+Lives a woman true, and fair.
+}
+in which the verses are separated by considerably less than a full
+blank line; instead of a baseline-to-baseline gap of twice the
+interline space, as usual, the gap here is only 1.6 times the
+interline space. Two blank lines would give 2.2 times the
+interline space, and so on. There is no unit of measurement
+associated with {@Code "blanklinescale"}, because it is a scale
+factor, not a length.
+@PP
+To set the entire document in a paragraph breaking style other
+than {@Code "adjust"}, you need to change the @Code "@InitialBreak" option,
+as explained at the end of Section {@NumberOf linespace}.
+@PP
+Some people don't like to see the first line of a paragraph alone at the
+widows @Index { widow lines }
+orphans @Index { orphan lines }
+unbreakablefirst. @Index { @Code unbreakablefirst }
+unbreakablelast. @Index { @Code unbreakablelast }
+foot of a page or column (the rest appearing on the next page). You can
+instruct Lout not to allow this with
+@ID @Code "unbreakablefirst @Break ..."
+meaning that the first line cannot be broken off from the rest of the
+paragraph. Similarly,
+@ID @Code "unbreakablelast @Break ..."
+instructs Lout to prevent the last line of a paragraph from appearing
+alone at the top of a page or column. These features would probably be
+invoked in the @Code "@InitialBreak" option, like this:
+@ID
+@Code "@InitialBreak { unbreakablefirst unbreakablelast hyphen adjust 1.2fx }"
+You can turn them off with @Code "breakablefirst @Break"
+and @Code "breakablelast @Break". In both cases Lout makes it happen by
+breaking at the previous place, either between paragraphs or two lines from
+the end of a paragraph. Both features are compatible with Lout's
+@Code "@OptimizePages" option, which optimizes the overall page
+layout subject to these requirements.
+@End @Section
diff --git a/doc/doc/user/bas_spac b/doc/doc/user/bas_spac
new file mode 100644
index 0000000..0a120a8
--- /dev/null
+++ b/doc/doc/user/bas_spac
@@ -0,0 +1,104 @@
+@Section
+ @Title { Spaces and braces }
+ @Tag { spaces }
+@Begin
+@PP
+Every symbol in Lout either consists entirely of letters ({@Code "@"}
+symbols. @Index { symbols, makeup of }
+is considered to be a letter) or entirely of punctuation characters. Here
+are some examples of each type:
+@ID @OneRow @Tab
+ @Fmta { @Col @I @CC A ! @Col @I @CC B }
+ @Fmtb { @Col @Code @CC A ! @Col @Code @CC B }
+{
+@Rowa A { From letters } B { From punctuation }
+@Rowb A { "@PP" } B { "{" }
+@Rowb A { "margin" } B { "}" }
+}
+Now if two symbols made from letters are run together like this:
+@ID {
+@Code "@CurveBox@I Hello" &8ct @I (wrong!)
+}
+Lout will take this to mean one word or symbol called {@Code "@CurveBox@I"},
+which is wrong. In the same way, a letter-type symbol cannot be run
+together with a word. However, punctuation-type symbols can be run together
+with anything. For example, in
+@ID @Code "@CurveBox{ Hello @I { world }}."
+Lout understands that @Code "@CurveBox" and @Code "{"
+# }
+are separate, and it also sorts out
+# {{
+@Code "}}." into two right brace symbols and a full stop. It might
+seem strange to treat punctuation and letters so differently,
+but computer programming languages have done it like this for
+many years, and it works well. This is the first use for
+spaces. @Index { spaces, significance of }
+spaces: to separate letter-type symbols from each other and from words.
+@PP
+To see the second use for spaces, consider two words side by side:
+@ID @Code "Hello world"
+We want this to produce Hello world, so a space between two words in
+the input must mean a space between them in the result. Apply the
+golden rule (where you can put one object, you can put any object) and
+you get this: @I { a space between two objects in the input produces
+a space between them in the result }. For example,
+@ID @Code "@CurveBox Hello @CurveBox world"
+produces
+@ID { @CurveBox Hello @CurveBox world }
+The space between the two objects @Code "@CurveBox Hello" and
+@Code "@CurveBox world" appears between them in the result; the other
+two spaces do not separate objects so do not appear in the result.
+@PP
+Two objects may be separated by a number of spaces other than one. If
+they are separated by no spaces, they will appear immediately adjacent
+in the result; if separated by two spaces, they will appear two spaces
+apart; and so on. In English it is correct to leave two spaces between
+the end of one sentence and the beginning of the next, for example. See
+Section {@NumberOf white} for two alternative ways to interpret white
+space in Lout.
+@PP
+Occasionally the two uses for spaces conflict. For example, to produce
+@ID { { @CurveBox Hello }{ @CurveBox world } }
+we need to have no spaces between the two objects, but then @Code "Hello"
+and the following @Code "@CurveBox" would be run together, which will
+not work. The solution is to use braces:
+@ID @Code "{ @CurveBox Hello }{ @CurveBox world }"
+None of the six spaces in this example lie between two objects.
+@PP
+However, the main use of braces is to inform Lout that the object
+within them is to be kept together, so that any nearby symbols are to
+apply to all of it. For example, leaving the braces out of
+@Code "@I { Hello world }" would mean that @Code "@I" applies only to
+{@Code "Hello"}.
+@PP
+When an object-consuming symbol like @Code "@I" is followed by an
+braces. @RawIndex { braces }
+braces.in.lout @SubIndex { in Lout text }
+object enclosed in braces, that is the object consumed. For example,
+@ID @Code "This is @I { absolutely necessary }, since otherwise ..."
+produces
+@ID { This is @I { absolutely necessary }, since otherwise ... }
+with the object @Code "absolutely necessary" italicized, but not the
+following comma. If there are no braces, the object consumed is
+everything up to the next object-separating space:
+@ID @Code "This is @I necessary, since otherwise ..."
+produces
+@ID { This is @I necessary, since otherwise ... }
+with an undesirable italic comma. In practice, this means you can
+avoid braces only when italicizing a single word with no punctuation
+attached.
+@PP
+One common pitfall is to use unnecessary braces, like this:
+@ID {
+@Code "@I { @CurveBox { Hello world } }" &8ct @I (bad!)
+}
+Another is to think that all spaces produce space in the result, and so
+write
+@ID {
+@Code "@I{@CurveBox{Hello world}}" &8ct @I (worse!)
+}
+Use braces only when necessary, and add extra spaces where they do not
+separate objects, and your documents will be far easier to read while
+you are working on them. Don't be fooled by the argument that says it
+doesn't matter because it doesn't affect the final printed result.
+@End @Section
diff --git a/doc/doc/user/bas_star b/doc/doc/user/bas_star
new file mode 100644
index 0000000..512148a
--- /dev/null
+++ b/doc/doc/user/bas_star
@@ -0,0 +1,129 @@
+@Section
+ @Title { Getting started }
+ @Tag { start }
+@Begin
+@PP
+Suppose you want to produce the following little document:
+@CD @Box margin { 1.3c } 7.0c @Wide 9c @High {
+@Display @Heading { Introduction by W. J. Harvey }
+harvey.w.j @Index { Harvey, W. J. }
+For Virginia Woolf, @I Middlemarch was `the magnificent book
+which for all its imperfections is one of the few English novels
+written for grown-up people.'
+@PP
+She was, no doubt, thinking of George Eliot's unblinking but
+eliot.g @Index { Eliot, George }
+compassionate delineation of her characters, of the subtlety of
+psychological analysis and the maturity of moral comment which
+underlie this complex and varied novel of English provincial
+life in the early nineteenth century.
+}
+Unlike word processing and desktop publishing systems, with Lout you
+cannot see and edit your document on the screen in this finished
+form. Instead, you edit an ordinary text file, in which your text is
+augmented with symbols that mark out the headings, paragraphs, and so
+on. Although it would be nice to be able to see and edit the finished
+form, working with a text file and symbols does have some compensating
+advantages.
+@PP
+The first step in producing your introduction to @I Middlemarch is to
+use the text editor of your choice to construct this text file:
+@ID @OneRow @Code {
+"@SysInclude { doc }"
+"@Doc @Text @Begin"
+"@Display @Heading { Introduction by W. J. Harvey }"
+"For Virginia Woolf, @I Middlemarch was `the magnificent book which for all its"
+"imperfections is one of the few English novels written for grown-up people.'"
+"@PP"
+"She was, no doubt, thinking of George Eliot's unblinking but compassionate"
+"delineation of her characters, of the subtlety of psychological analysis and"
+"the maturity of moral comment which underlie this complex and varied novel"
+"of English provincial life in the early nineteenth century."
+"@End @Text"
+}
+Comparing this with the finished form, it's easy to guess that
+@Code "@I" is a symbol that causes the following thing to be printed
+in italics, and that @Code "@PP" starts a new paragraph. The other
+symbols are not much harder.
+@PP
+@Code "@SysInclude { doc }" instructs Lout to read a @I { setup file }
+called {@Code "doc"}, in which the symbols are defined. Setup files
+are the subject of Chapter {@NumberOf changes}, but you can go a long
+way without worrying about them. @Code "@Doc @Text @Begin" and
+@Code "@End @Text" have no visible effect, but they must bracket the
+document as a whole. Again, you don't have to know what they are for.
+@PP
+That explains everything except the part that produces the heading. It's
+an interesting glimpse of the way that Lout's symbols cooperate with
+each other:
+@ID @Code "@Display @Heading { Introduction by W. J. Harvey }"
+The @Code "@Display" symbol does the centring and leaves space above
+and below, while @Code "@Heading" switches to a bold font. The braces
+group the words of the heading together so that these symbols apply to
+all of it; without them they would apply to just the first word. All
+this is explained in detail in Sections {@NumberOf objects}
+and {@NumberOf spaces}.
+@PP
+Once the file is ready, the next step is to get it processed by the
+Basser Lout interpreter. If the file's name is {@Code "intro"},
+the command for this on the Unix
+@FootNote { Unix is a trademark. }
+operating system is
+@ID @Code "lout intro > intro.ps"
+The output is the PostScript
+@FootNote { PostScript is a trademark of Adobe Systems, Inc. }
+file {@Code "intro.ps"}, which is suitable for printing on many laser
+printers and other devices. There are programs that show you the
+result on your screen as well, although you won't be able to edit it
+there. You can also get plain text output (Section {@NumberOf plain})
+and PDF output.
+@PP
+There are a few points that often confuse people as they begin, so we'll
+treat them briefly now with pointers to later sections where they are
+done properly.
+@PP
+Some characters are symbols that produce special effects -- for
+example, @Code "{" and @Code "}" produce grouping -- and to turn off
+these effects the characters must be enclosed in double quotes: @Code
+"\"{\"" produces "{". The complete set of these special characters is
+@ID @Code "/ | & { } # @ ^ ~ \\ \""
+Section {@NumberOf characters} treats unusual characters in full detail.
+@PP
+Symbols like @Code "@Doc" and @Code "@Text" must be separated from
+each other by one or more spaces, otherwise Lout will think they are part
+of one symbol. See Section {@NumberOf spaces} for the details.
+@PP
+People familiar with other systems might expect that leaving a blank line would
+cause Lout to start a new paragraph; but this is not so, you must use a
+paragraph symbol. Lout will ordinarily take notice of how many spaces you type
+between words (Section {@NumberOf spaces}), but it will mimic the spacing rules
+of two other systems, troff and @TeX, if you prefer (Section {@NumberOf white}).
+@PP
+When Lout runs, you might see some error messages containing the words
+errors. @Index { errors }
+`unresolved cross reference' and `no destination point' -- not on file
+@Code "intro" above, but on more complicated ones (anything with a footnote,
+for example). These just mean that you have to run the @Code "lout" command
+again to finish off the complicated things (Section {@NumberOf cross}), and
+they will gradually go away. Of course, if you see messages about missing
+braces, unknown symbols, and so on, you need to revise your file. Lout will
+give the line number of the problem, and how far along the line it is.
+@PP
+@BI { WARNING: } Lout allows documents to cause arbitrary system commands
+to be executed. These typically do useful things such as format computer
+programs and uncompress graphics files, but it is possible for a
+malicious person to send you a document which includes a command to delete
+all your files, send abusive mail to the President of the United States in
+your name, etc. You can protect yourself against this possibility by using
+the `safe execution' flag:
+@ID @Code "lout -S suspect.document > out.ps"
+Then no system commands will be executed; instead, Lout will print them so
+that you can confirm for yourself that they are safe before running again
+without the flag. These system commands are Lout's only potentially unsafe
+features, but you also need to worry about whether the resulting PostScript
+file contains malicious code, since the document may direct Lout to include
+arbitrary PostScript code in the output. The safe execution of PostScript
+programs is a matter for PostScript interpreters, not for Lout. For example,
+the popular Ghostview program has a @Code "-safer" command line option,
+which is rumoured to disable unsafe PostScript features.
+@End @Section
diff --git a/doc/doc/user/bas_supe b/doc/doc/user/bas_supe
new file mode 100644
index 0000000..40faf92
--- /dev/null
+++ b/doc/doc/user/bas_supe
@@ -0,0 +1,17 @@
+@Section
+ @Title { Superscripts and subscripts }
+ @Tag { super }
+@Begin
+@PP
+There are @Code "@Sup" and @Code "@Sub" symbols for producing
+superscripts and subscripts:
+@ID @Code "2 @Sup nd"
+produces
+@ID { 2 @Sup nd }
+and the @Code "@Sub" symbol works in a similar way. These symbols
+are probably never required in English language text, since the
+only uses for them are in footnotes, which produce the superscript
+automatically, and equations, which have their own versions of these
+symbols. Both symbols have a @Code "gap" option which determines the
+vertical spacing.
+@End @Section
diff --git a/doc/doc/user/bas_unde b/doc/doc/user/bas_unde
new file mode 100644
index 0000000..57bcc8a
--- /dev/null
+++ b/doc/doc/user/bas_unde
@@ -0,0 +1,55 @@
+@Section
+ @Title { Underlining }
+ @Tag { underlining }
+@Begin
+@PP
+The @Code "@Underline" symbol underlines the following object:
+underline.sym @Index @Code "@Underline"
+@ID @OneRow @Code {
+"This little paragraph of text will have"
+"@Underline { three underlined words } in it."
+}
+produces
+@ID @OneRow 1.6i @Wide {
+This little paragraph of text will have
+@Underline { three underlined words } in it.
+}
+The underlining is continuous unless a line break intervenes. You
+can't use this symbol to underline an arbitrary object: it is carefully
+designed to produce high-quality underlining of single words and
+parts of paragraphs, and it works only for those objects.
+@PP
+Each font contains information about how words in that font should be
+underlined: how far below the baseline the line should be drawn, and how
+thick. The @Code "@Underline" symbol uses this information; the font
+it bases its underlining on is the font of the first object underlined
+if it is a word, or else the font of the enclosing paragraph.
+@PP
+The underline produced by @Code "@Underline" will have the same colour
+as whatever is being underlined. If you want a different colour, you need
+the @Code "@ColouredUnderline" or equivalently @Code "@ColoredUnderline"
+symbol, which takes a colour on the left as well as the thing to be
+underlined on the right:
+@ID @OneRow @Code {
+"This little paragraph of text will have"
+"blue @ColouredUnderline { three underlined words } in it."
+}
+produces
+@ID @OneRow 1.6i @Wide {
+This little paragraph of text will have
+blue @ColouredUnderline { three underlined words } in it.
+}
+The colours available are as for the @Code "@Colour" symbol from
+Section {@NumberOf colour}.
+@PP
+There is no way to set a default value for the colour of a coloured
+underline, but you can make it easy to get an underline of a specific
+colour, by placing a definition at the start of your document, like this:
+@ID @OneRow @Code @Verbatim {
+import @BasicSetup
+def @MustCheck right x { blue @ColouredUnderline x }
+}
+This allows you to type @Code "@MustCheck" instead of
+{@Code "blue @ColouredUnderline"}. Definitions are explained in
+general in Section {@NumberOf definitions}.
+@End @Section
diff --git a/doc/doc/user/bas_verb b/doc/doc/user/bas_verb
new file mode 100644
index 0000000..6165878
--- /dev/null
+++ b/doc/doc/user/bas_verb
@@ -0,0 +1,104 @@
+@Section
+ @Title { Verbatim and piped text }
+ @Tag { verbatim }
+@Begin
+@PP
+The @Code "@Verbatim" symbol
+@FootNote {
+Prior to Version 3.13 the @Code "@Verbatim" symbol was restricted to Unix
+systems only. This restriction no longer applies to @Code "@Verbatim" and
+{@Code "@RawVerbatim"}, but it does apply to {@Code "@Pipe"},
+{@Code "@PipeVerbatim"}, and {@Code "@PipeRawVerbatim"}.
+}
+prints the following object exactly as
+verbatim.sym @Index @Code "@Verbatim"
+it appears in the input file. All special meanings for characters,
+symbols, etc. are turned off; there is one result line for
+each input line. For example,
+@ID @Code @Verbatim {
+@IndentedDisplay @Verbatim {
+A line of "verbatim" text
+Another line, with a \ character
+}
+}
+has result
+@IndentedDisplay @Verbatim {
+A line of "verbatim" text
+Another line, with a \ character
+}
+Use @Code "@F @Verbatim { ... }" to get the result in a fixed-width font.
+@PP
+If the verbatim text contains @Code "{" or @Code "}" characters, then
+they should either be balanced or else you need to use the alternative
+form
+@ID @Code {
+"@Verbatim @Begin"
+"..."
+"@End @Verbatim"
+}
+so that there is no doubt about where the verbatim text ends. Although
+we have said that there are no special meanings, there is one exception
+to this rule: @Code "@Include" and @Code "@SysInclude" commands are
+recognized, allowing all or part of the verbatim text to come from some
+other file. Braces do not have to be balanced in that file.
+@PP
+Occasionally the first line of some verbatim text begins with some
+spaces that have to be preserved. This is a problem for @Code "@Verbatim"
+because it ignores all white spaces following the opening brace and
+all white spaces preceding the closing brace. However, the alternative
+@Code "@RawVerbatim" symbol stops ignoring white spaces at the opening
+raw.verbatim.sym @Index @Code "@RawVerbatim"
+as soon as a newline character is reached; in other words, it will
+preserve all white spaces following the first newline.
+@PP
+The @Code "@Pipe" symbol (available on Unix-style systems only) may be
+pipe.sym @Index @Code "@Pipe"
+used to pipe some text through a Unix command. For example,
+@ID @Code lines @Break @Verbatim {
+@ID lines @Break "sort" @Pipe {
+Gaskell, Elizabeth
+Lawrence, D. H.
+Austen, Jane
+Dickens, Charles
+}
+}
+will cause the object between braces following @Code "@Pipe" to be
+piped without interpretation through the Unix @Code "sort" command; its
+output is the result of the @Code "@Pipe" command, here made into a
+display preserving the line breaks in the output. The final result will
+be the four authors, one per line, in alphabetical order. We can't show
+this result to you because that would make this manual not compilable on
+non-Unix systems.
+@PP
+The double quotes around @Code sort are not necessary in this example,
+but may be in more complex ones. For example, one can see just the
+first few lines of the sorted result using
+@ID @Code @Verbatim { "sort | head" @Pipe ... }
+and here the quotes are necessary because @Code "|" is one of the special
+characters that need quoting, according to Section {@NumberOf characters}.
+The quotes also serve to group the command into a single Lout object.
+@PP
+Some Unix commands don't need any input, and then the object following
+@Code "@Pipe" may be empty. For example,
+@ID @Code @Verbatim { "ls" @Pipe {} }
+will list the files of the current directory.
+@PP
+Any Lout symbols in the result of the @Code "@Pipe" symbol, such as
+{@Code "@PP"}, {@Code "@Box"}, and so on, will be interpreted in the
+usual way. This is convenient because it allows you to write your
+own Unix commands that include Lout symbols in their output. However,
+sometimes it is preferable if the output is treated verbatim. For
+example,
+@ID @Code @Verbatim { "pwd" @Pipe {} }
+attempts to print the current working directory, but this will not
+come out well because the output contains {@Code "/"} symbols, which
+Lout will then attempt to interpret as Lout symbols. To avoid this
+problem, use @Code "@PipeVerbatim" instead of {@Code "@Pipe"}:
+pipeverbatim.sym @Index @Code "@PipeVerbatim"
+piperawverbatim.sym @Index @Code "@PipeRawVerbatim"
+@ID @Code @Verbatim { "pwd" @PipeVerbatim {} }
+This causes the output of the command to be enclosed in
+@Code "@Verbatim @Begin" and {@Code "@End @Verbatim"}. There is
+also a @Code "@PipeRawVerbatim" symbol which encloses the output in
+@Code "@RawVerbatim" rather than the ordinary {@Code "@Verbatim"}.
+@End @Section
diff --git a/doc/doc/user/bgr b/doc/doc/user/bgr
new file mode 100644
index 0000000..66f4a2f
--- /dev/null
+++ b/doc/doc/user/bgr
@@ -0,0 +1,24 @@
+@Chapter
+ @Title { Basic Graphics }
+ @Tag { graphics }
+@Begin
+@LP
+This chapter introduces some basic graphics symbols for colour, texture,
+graphics. @Index { graphics (basic) }
+graphics.see @RawSubIndex { @I { see also } diagrams, graphs, pie graphs }
+rotation, scaling, and included illustrations. These are all from the
+standard BasicLayout package, so no @Code "@SysInclude" line is needed to
+get them beyond the usual @Code "@SysInclude { doc }" or whatever.
+@BeginSections
+@Include { bgr_colo }
+@Include { bgr_text }
+@Include { bgr_boxs }
+@Include { bgr_outl }
+@Include { bgr_rota }
+@Include { bgr_scal }
+@Include { bgr_clip }
+@Include { bgr_mirr }
+@Include { bgr_incl }
+@Include { bgr_prec }
+@EndSections
+@End @Chapter
diff --git a/doc/doc/user/bgr_boxs b/doc/doc/user/bgr_boxs
new file mode 100644
index 0000000..c75b059
--- /dev/null
+++ b/doc/doc/user/bgr_boxs
@@ -0,0 +1,216 @@
+@Section
+ @Title { Boxes and rules }
+ @Tag { boxes }
+@Begin
+@PP
+The @Code "@Box" symbol causes the following object to be enclosed in a
+box. @Index @Code "@Box"
+box:
+@ID @OneRow @Code {
+"@QuotedDisplay @Box {"
+"@CentredDisplay @Heading Cheating"
+"The Department uses assignments ... of that student alone."
+"}"
+}
+The result of this is
+@QuotedDisplay @Box {
+@CentredDisplay @Heading Cheating
+The Department uses assignments both as a teaching device and as a
+major component of its assessment of each student. It therefore
+requires that all programs, exercises etc. handed in bearing an
+individual student's name be the work of that student alone.
+}
+showing that a box may enclose an arbitrarily complicated object.
+@PP
+The @Code "@Box" symbol has a @Code margin option which determines the
+box. @RawIndex @Code "@Box"
+box.margin @SubIndex { @Code "margin" option }
+margin between the box and what it encloses. For example,
+@ID @OneRow @Code {
+"@Box"
+" margin { 0.1c }"
+"{}"
+}
+requests a box with a 0.1 centimetre margin enclosing an empty object,
+so the result is a square whose width and height are 0.2 centimetres:
+@ID @Box margin { 0.1c } {}
+If the @Code "margin" option is omitted, it is assigned the default
+value {@Code "0.3f"}, which means 0.3 times the current font size. It
+is very useful to tie the margin to the font size in this way, because
+large headings (in overhead transparencies, say) need large margins.
+@PP
+There is a @Code "linewidth" option which determines the width
+box.linewidth @SubIndex { @Code "linewidth" option }
+(thickness) of the line drawn around the boundary of the box:
+@ID @OneRow @Code {
+"@Box"
+" linewidth { 0.1c }"
+"{ Hello world }"
+}
+produces
+@ID @Code {
+@Box
+ linewidth { 0.1c }
+{ Hello world }
+}
+Lout does not take the line width into account when working out how
+large everything is: as far as Lout is concerned, the line always
+has width zero. If you draw very thick lines you might need a larger
+margin and more space near the box. The default value of @Code linewidth
+is empty, which produces whatever width the PostScript interpreter
+in your output device thinks is a good default value. The special
+value @Code "none" for @Code "linewidth" ensures that no line is drawn
+around the box at all.
+@PP
+There is also a @Code "paint" option which paints a background of the
+box.paint @SubIndex { @Code "paint" option }
+nominated colour:
+@ID @Code "@Box paint { grey } WARNING!"
+has result
+@ID @Box paint { grey } WARNING!
+This is quite different from {@Code "grey @Colour @Box WARNING!"},
+which produces
+@ID grey @Colour @Box WARNING!
+The @Code "paint" option may be given any colour from the list in
+Section {@NumberOf colour}; its default value is {@Code "none"}, which
+is a special value (not a colour) which means no painting. White paint
+comes into its own inside painted boxes:
+@ID @Code "@Box paint { nochange } white @Colour { Hello world }"
+makes a box painted in whatever colour we are using at the moment,
+with white text inside:
+@ID @Box paint { nochange } white @Colour { Hello world }
+This works because the box is painted before the object it encloses
+is drawn on the page.
+@PP
+Wherever there is a @Code paint option in Lout for painting the background
+of something, there is always an accompanying @Code texture option for
+box.texture @SubIndex { @Code "texture" option }
+applying that paint with the textures described in
+Section {@NumberOf textures}. For example,
+@ID @Code "@Box paint { black } texture { brickwork } 50p @Font WARNING!"
+produces
+@FootNote { As explained in Section {@NumberOf textures}, if you can't
+see any textures the problem is probably with your PostScript viewer. }
+@ID @Box paint { black } texture { brickwork } 50p @Font WARNING!
+If @Code paint is absent or @Code none then @Code texture will have no
+effect. Since textures are naturally lighter than solid colour, you
+will usually need darker paint when using textures than when not.
+@PP
+To set options on a texture within a @Code "texture" option, you can write
+@ID @Code "texture { striped @Texture angle { 45d } scale { 2 } }"
+mimicking the @Code "@Texture" symbol from Section {@NumberOf textures},
+but without any following object. However, it's clunky to have to type
+both @Code texture and {@Code "@Texture"}, so by special arrangement you
+can omit the @Code "@Texture" symbol within the @Code "texture" option:
+@ID @Code "texture { striped angle { 45d } scale { 2 } }"
+The value of the @Code "texture" option may also be an expert's texture
+as required by {@Code "@SetTexture"}. Incidentally, there is no
+significance in our laying out all the options along one line. As always
+in Lout, the end of a line and a space mean the same. We've done it this
+way because we think it's the clearest way to lay out the @Code texture option.
+@PP
+Let's just summarize the painting and texturing possibilities for boxes.
+A box has three components: its outline, its background, and its content
+(what appears inside). You can actually set the colour and texture of
+all three components independently of each other, with a little trouble:
+@ID @OneRow @Code @Verbatim {
+black @Colour striped @Texture angle { 45d }
+@Box
+ paint { lightgrey }
+ linewidth { 2p }
+ texture { striped angle { 90d } }
+darkgrey @Colour striped @Texture scale { 2 } 50p @Font ABC
+}
+produces
+@CD {
+black @Colour striped @Texture angle { 45d }
+@Box
+ paint { lightgrey }
+ linewidth { 2p }
+ texture { striped angle { 90d } }
+darkgrey @Colour striped @Texture scale { 2 } 50p @Font ABC
+}
+The outline colour and texture are the colour and texture from outside
+the box; the background colour and texture are determined by the
+@Code paint and @Code texture options; and the colour and texture of
+the contents are inherited from outside the box, but can be changed as
+shown if desired. When two textures overstrike, the lower one shows
+through the unpainted parts of the upper one.
+@PP
+There are @Code "@CurveBox" and @Code "@ShadowBox" symbols that
+curvebox. @Index @Code "@CurveBox"
+shadowbox. @Index @Code "@ShadowBox"
+produce other kinds of boxes:
+@CD @Tab
+ @Fmta { @Col A ! @Col ! @Col B }
+{
+@Rowa
+ A { @CurveBox { A curve box } }
+ B { @ShadowBox { A shadow box } }
+}
+These also have {@Code "margin"}, {@Code "linewidth"}, {@Code "paint"},
+and @Code "texture" options, and @Code "@ShadowBox" has a @Code "shadow"
+option which determines the thickness of the shadow (its default value
+is {@Code "0.2f"}). There is no option to change the colour of the
+shadow, but it is quite easy to combine two boxes to get that effect:
+@ID @OneRow @Code @Verbatim {
+lightgrey @Colour @ShadowBox margin { 0c } black @Colour @Box
+{
+ A shadow box
+}
+}
+produces
+@CD lightgrey @Colour @ShadowBox margin { 0c } black @Colour @Box
+{
+ A shadow box
+}
+in which the shadow, and only the shadow, is coloured light grey.
+@PP
+Boxes are quite at home inside paragraphs, as @Box { a box },
+@CurveBox { a curve box }, and @ShadowBox { a shadow box }
+show. Simply proceed as usual:
+@ID @Code "... paragraphs, as @Box { a box }, @CurveBox { a curve box }, ..."
+Boxes within paragraphs are never broken across two lines.
+@PP
+Two symbols make horizontal rules. @Code "@FullWidthRule"
+fullwidthrule. @Index @Code "@FullWidthRule"
+rules. @Index rules
+makes a rule which occupies the full page (or column) width,
+or (more precisely) as much horizontal space as it legally can:
+@DP @FullWidthRule @DP
+@Code "@FullWidthRule" produces an object in the usual way, so you
+will need paragraph or display symbols to separate it from preceding
+and following things.
+@PP
+A variant called @Code "@LocalWidthRule" is more timid about zooming
+localwidthrule. @Index @Code "@LocalWidthRule"
+across the whole page:
+@ID @Code {
+"@OddPageTop { { My lovely document @LP @LocalWidthRule } @Right @PageNum }"
+}
+will draw a rule under just the three words. Of course, underlining using
+the @Code "@Underline" symbol might be a better way to do this.
+@PP
+These two rule symbols are handled behind the scenes like the outlines
+of boxes. Both symbols have a @Code "linewidth" option which works
+like the one for boxes described above. In particular, Lout leaves
+zero space for the line, no matter how wide you make it. And to change
+the colour or texture of a rule, it must be enclosed in @Code "@Colour"
+and @Code "@Texture" symbols:
+@ID @Code "chessboard @Texture scale { 2 } @FullWidthRule linewidth { 8p }"
+produces
+@DP
+chessboard @Texture scale { 2 } @FullWidthRule linewidth { 8p }
+@DP
+Notice how we have made sure that the rule is wide enough to
+accommodate two rows of the chessboard texture. The author's
+printer places a thin row of solid colour along the top of
+this pattern. Logically it should not be there; it can be got
+rid of by reducing the line width:
+@ID @Code "chessboard @Texture scale { 2 } @FullWidthRule linewidth { 7.5p }"
+produces
+@DP
+chessboard @Texture scale { 2 } @FullWidthRule linewidth { 7.5p }
+@DP
+We can only guess that the problem might be roundoff error.
+@End @Section
diff --git a/doc/doc/user/bgr_clip b/doc/doc/user/bgr_clip
new file mode 100644
index 0000000..dc31f66
--- /dev/null
+++ b/doc/doc/user/bgr_clip
@@ -0,0 +1,49 @@
+@Section
+ @Title { Clipping }
+ @Tag { clipping }
+@Begin
+@PP
+The @Code "@HClip" symbol clips the following object horizontally to
+the available width:
+@ID @Code {
+"@Box 1c @Wide @HClip WARNING!"
+}
+produces
+@ID {
+@Box 1c @Wide @HClip WARNING!
+}
+The following object may be arbitrary as usual; for example, it
+could be an illustration included using @Code "@IncludeGraphic"
+(Section {@NumberOf include}).
+We have used the @Code "@Wide" symbol from Section {@NumberOf precise}
+to make clear what the available width is in this small example (one
+centimetre), but @Code "@HClip" will work in any context; for example,
+you could use it to clip a table entry, or a display.
+@PP
+The @Code "@HClip" symbol has a @Code "shift" option which determines
+which part of the clipped object is displayed. It may take on any
+value between {@Code "0.0"}, meaning to display the leftmost part
+(the default value), and {@Code "1.0"}, meaning to display the rightmost
+part:
+@ID @Code {
+"@Box 1c @Wide @HClip shift { 1.0 } WARNING!"
+}
+produces
+@ID {
+@Box 1c @Wide @HClip shift { 1.0 } WARNING!
+}
+To display the central part, use shift value {@Code "0.5"}. Notice that
+there is no unit of measurement attached to the value of {@Code "shift"}.
+@PP
+There is also a @Code "@VClip" symbol which works in exactly the same
+way, only vertically. The two symbols combine together naturally:
+@ID @Code {
+"@Box 1c @Wide 0.2c @High @HClip @VClip WARNING!"
+}
+produces
+@ID {
+@Box 1c @Wide 0.2c @High @HClip @VClip WARNING!
+}
+The @Code "shift" options to determine which part of the two-dimensional
+area is displayed, as usual.
+@End @Section
diff --git a/doc/doc/user/bgr_colo b/doc/doc/user/bgr_colo
new file mode 100644
index 0000000..90d95fd
--- /dev/null
+++ b/doc/doc/user/bgr_colo
@@ -0,0 +1,60 @@
+@Section
+ @Title { Colour }
+ @Tag { colour }
+@Begin
+@PP
+Colour is obtained in much the same way that fonts and language changes
+colour. @Index @Code "@Colour"
+color. @Index @Code "@Color"
+are, using the @Code "@Colour" (or equivalently {@Code "@Color"}) symbol:
+@ID @Code "grey @Colour { Hello, world }"
+produces
+@ID grey @Colour { Hello, world }
+The @Code "@Colour" symbol will accept any of the following colours:
+@QD @HAdjust @Tab
+ vmargin { 0.5vx }
+ hmargin { 0.2c }
+ @Fmta { @Col A @Colour @FilledBox ! @Col @Code A ! @Col !
+ @Col B @Colour @FilledBox ! @Col @Code B ! @Col !
+ @Col C @Colour @FilledBox ! @Col @Code C }
+ @Fmtb { @Col A @Colour @FilledBox ! @Col @Code A ! @Col !
+ @Col B @Colour @FilledBox ! @Col @Code B ! @Col !
+ @Col ! @Col }
+{
+@Rowa A { darkred } B { red } C { lightred }
+@Rowa A { darkgreen } B { green } C { lightgreen }
+@Rowa A { darkblue } B { blue } C { lightblue }
+@Rowa A { darkcyan } B { cyan } C { lightcyan }
+@Rowa A { darkmagenta } B { magenta } C { lightmagenta }
+@Rowa A { darkyellow } B { yellow } C { lightyellow }
+@Rowa A { darkgrey } B { grey } C { lightgrey }
+@Rowa A { darkgray } B { gray } C { lightgray }
+@Rowb A { black } B { white }
+}
+Monochrome output devices will render them as shades of grey. Colouring
+something @Code white makes it invisible (unless printed on a coloured
+background), which is sometimes useful. See Appendix {@NumberOf morecolours}
+to get many more colour names, using the @Code xrgb include file
+and its @Code "@Xrgb" symbol.
+@PP
+In addition to the list of colours given above, there is a special
+{@Code nochange} colour which produces whatever colour you already
+happen to be using; you can also use an empty object to ask for this. And
+you can get lots more colours by specifying them using numbers, like this:
+@ID @Code "{ rgb 0.5 0.5 1.0 } @Colour { Hello, world }"
+which means use red at intensity 0.5, green at intensity 0.5, and
+blue at intensity 1.0, producing
+@ID { rgb 0.5 0.5 1.0 } @Colour { Hello, world }
+In the strange world of colour coordinates, in which 0 is dark and 1 is
+light, this is a light blue. You can also use the CMYK system:
+@ID @Code "{ cmyk 0.5 0.5 1.0 1.0 } @Colour { Hello, world }"
+produces
+@ID { cmyk 0.5 0.5 1.0 1.0 } @Colour { Hello, world }
+Wherever in this document it says that that you can use any colour
+from this section, it means any of the names above, or {@Code nochange},
+or an object beginning with @Code "rgb" or @Code "cmyk" as shown.
+# @PP
+# Whether the colours produced by @Code "@Colour" actually
+# correspond with the names depends on the output device; the same
+# nominal colour can look quite different on screen and on paper.
+@End @Section
diff --git a/doc/doc/user/bgr_incl b/doc/doc/user/bgr_incl
new file mode 100644
index 0000000..bc54f4c
--- /dev/null
+++ b/doc/doc/user/bgr_incl
@@ -0,0 +1,82 @@
+@Section
+ @Title { Including an illustration }
+ @Tag { include }
+@Begin
+@PP
+The @Code "@IncludeGraphic" symbol incorporates into a Lout document an
+include.graphic @Index @Code "@IncludeGraphic"
+include.illus @Index { including an illustration }
+illustration (that is, an encapsulated PostScript or EPS file)
+produced by other means. For the opposite process, using Lout to produce
+an illustration for inclusion in some other document, see
+Section {@NumberOf illustrations}.
+@PP
+For example, suppose the encapsulated PostScript file @Code "su_crest.eps"
+contains the University of Sydney crest. Then
+@ID @Code "@IncludeGraphic su_crest.eps"
+produces
+@ID @IncludeGraphic su_crest.eps
+In general, the result produced by @Code "@IncludeGraphic" is an object
+that may be scaled, clipped, rotated, made into a display or placed within
+a paragraph, just like any other object. Accolades for this remarkable
+flexibility should go to the PostScript page description language,
+whose extraordinary power makes the provision of this feature in Lout
+almost trivial.
+@PP
+The @Code "@IncludeGraphic" command understands that files ending
+with any of the suffixes {@Code ".gz"}, {@Code "-gz"}, {@Code ".z"},
+{@Code "-z"}, {@Code "_z"}, and {@Code ".Z"} are compressed files,
+and it will uncompress such files using the @Code "gunzip" command
+before including them. The uncompressed version is stored in a file
+called @Code "lout.eps" in the current directory, and removed after
+being copied into the output file.
+@PP
+If you place an included illustration in a line of text, or anywhere
+where you care about its alignment with things on each side,
+it will be positioned with its centre at the same height as the
+centre of the letter x. If this is not what you want, use the
+@Code "@VShift" symbol from Section {@NumberOf precise}:
+vshift. @Index @Code "@VShift"
+@ID @Code "... +0.5f @VShift @IncludeGraphic ..."
+prints the illustration half of the current font size higher on the
+page than would otherwise have been the case, and
+@ID @Code "... -0.5f @VShift @IncludeGraphic ..."
+prints it half the current font size lower.
+@PP
+Sometimes you need to include the same EPS file many times, for
+example once per page. If it is a large file it can make the
+output file very large to include it over and over again. Lout
+offers a solution to this problem, in the form of the
+includegraphicrepeated. @Index @Code "@IncludeGraphicRepeated"
+@Code "@IncludeGraphicRepeated" symbol. You place this at
+the start of your document, like this for example:
+@ID @Code {
+"@Include { doc }"
+"@IncludeGraphicRepeated { su_crest.eps }"
+}
+(note the braces around the following EPS file name). Adding
+@Code "@IncludeGraphicRepeated" like this does not actually print the
+graphic anywhere on any page; on the contrary, it is guaranteed to not
+change the appearance of your document at all. What it does do
+is give Lout a hint that the EPS file between the braces is likely
+to be included many times over in this document. Lout then
+handles this EPS file in a different way that involves copying it
+into the PostScript output file just once, no matter how many
+times it is included by subsequent @Code "@IncludeGraphic" symbols.
+@PP
+When your EPS file would otherwise be included many times over, using
+@Code "@IncludeGraphicRepeated" definitely makes your PostScript
+output file a lot shorter, and it usually makes it print faster as
+well. On the other hand, {@Code "@IncludeGraphicRepeated"} uses
+Level 2 PostScript features which some older printers may not have,
+and it consumes a lot of memory in the printer. If memory runs out
+your job will not print properly, so use @Code "@IncludeGraphicRepeated"
+with caution.
+@FootNote {
+A test file using @Code "@IncludeGraphicRepeated" generated by the author
+is currently (Version 3.35) being displayed correctly in two PostScript
+viewers and converted to PDF correctly by the Unix @Code ps2pdf command.
+This PDF file prints without any problems on the author's printer, but
+the original PostScript file does not.
+}
+@End @Section
diff --git a/doc/doc/user/bgr_mirr b/doc/doc/user/bgr_mirr
new file mode 100644
index 0000000..6474ba6
--- /dev/null
+++ b/doc/doc/user/bgr_mirr
@@ -0,0 +1,38 @@
+@Section
+ @Title { Mirror reflections }
+ @Tag { mirroring }
+@Begin
+@PP
+The @Code "@HMirror" symbol produces a horizontal mirror reflection
+reflect. @Index { Reflected objects }
+mirror. @Index { Mirror images }
+hmirror. @Index @Code "@HMirror"
+of the following object:
+@ID @Code {
+"@HMirror AMBULANCE"
+}
+produces
+@ID @HMirror AMBULANCE
+The @Code "@VMirror" symbol produces a vertical mirror reflection
+vmirror. @Index @Code "@VMirror"
+of the following object:
+@ID @Code {
+"@VMirror 5c @Wide @Box {"
+"@B { Pond life. } Pond life includes"
+"frogs, tadpoles, newts, salamanders,"
+"eels, and mosquito larvae."
+"}"
+}
+produces
+@ID @VMirror 5c @Wide @Box {
+@B { Pond life. } Pond life includes
+frogs, tadpoles, newts, salamanders,
+eels, and mosquito larvae.
+}
+As this example shows, the object to be mirror reflected may be
+arbitrary. We have used a @Code "@Wide" symbol in this example
+to restrict the width of the result to be five centimetres wide.
+See the description of the @Code "@VShift" symbol in
+Section {@NumberOf include} for what to do if your reflected
+object is not aligned properly with adjacent objects.
+@End @Section
diff --git a/doc/doc/user/bgr_outl b/doc/doc/user/bgr_outl
new file mode 100644
index 0000000..226683d
--- /dev/null
+++ b/doc/doc/user/bgr_outl
@@ -0,0 +1,16 @@
+@Section
+ @Title { Outlined words }
+ @Tag { outline }
+@Begin
+@PP
+The @@Outline symbol
+outline.sym @Index { @@Outline symbol }
+causes all the words in the following object (which may be
+arbitrary as usual) to be printed in outline. For example,
+@ID @Code @Verbatim { @Outline @Box 24p @Font HELP }
+produces
+@ID @Outline @Box 18p @Font HELP
+There is no way to control the thickness of the outline, and
+@@Outline has no effect in PDF output. On the other hand,
+it works with any font likely to be used in practice.
+@End @Section
diff --git a/doc/doc/user/bgr_prec b/doc/doc/user/bgr_prec
new file mode 100644
index 0000000..d4f70d1
--- /dev/null
+++ b/doc/doc/user/bgr_prec
@@ -0,0 +1,216 @@
+@Section
+ @Title { Precise object placement }
+ @Tag { precise }
+@Begin
+@PP
+This section offers some tips on placing objects precisely where you want
+them relative to each other. If your problem is to place objects precisely
+at some unusual point on the page, you probably need a margin note or the
+@Code "@Place" symbol, for which see Section {@NumberOf marginnotes}.
+@PP
+Precise object placement is not a subject with clear boundaries, so
+this section is mainly a list of examples, covering the
+@Code {"@OneCol"}, @Code {"@OneRow"}, @Code {"@Wide"}, @Code {"@High"},
+@Code {"@HExpand"}, @Code {"@VExpand"}, @Code {"@HShift"}, @Code {"@VShift"},
+@Code {"@VStrut"}, @Code {"@OverStrike"}, @Code {"@ZeroHeight"},
+and @Code {"@ZeroWidth"} symbols.
+@PP
+The @Code "@OneCol" symbol causes the following object to be kept
+onecol. @Index @Code "@OneCol"
+on one line. (The name stands for `one column', which is a bit
+confusing unless you are an expert.) For example, you could use
+it to prevent hyphenation in a particular word, or to keep someone's
+name together on one line:
+@ID @Code "@OneCol { Mr. Jones }"
+although there is also the @Code "~" symbol for that. Similarly,
+@Code "@OneRow" causes the following object to be kept in one
+onerow. @Index @Code "@OneRow"
+column. It is commonly used to keep displays and list items
+together:
+@ID @Code "@IndentedDisplay @OneRow ..."
+and
+@ID @Code "@ListItem @OneRow ..."
+are the usual uses.
+@PP
+Loosely speaking, the @Code {"@Wide"} symbol causes the object following
+wide. @Index @Code "@Wide"
+it to have a particular width. It also has a @Code "@OneCol" effect.
+Paragraphs within the object will be broken if necessary in order to
+satisfy the width restriction. More precisely, the result of the
+@Code {"@Wide"} symbol is an object with the given width, with the
+following object fitting inside it, so having at most that width. Compare
+@ID @Code "5c @Wide @Box { A box }"
+which produces
+@ID 5c @Wide @Box { A box }
+with
+@ID @Code "@Box 5c @Wide { A box }"
+which produces
+@ID @Box 5c @Wide { A box }
+In the first example, the only obligation on the box is to be
+at most five centimetres wide, so that it fits into the space
+allowed it. In the second example, the box is drawn around
+an object guaranteed to be exactly five centimetres wide.
+The width of the box itself will be five centimetres plus twice the
+box margin width. Any length (Section {@NumberOf objects}) is allowed,
+and the object following @Code "@Wide" may be arbitrary as usual.
+@PP
+The @Code "@High" symbol is like @Code {"@Wide"}, only vertical. The two
+high. @Index @Code "@High"
+may be used together:
+@ID @Code "@Box 5c @Wide 5c @High { A box }"
+produces
+@ID @Box 5c @Wide 5c @High { A box }
+Be careful when using @Code "@High" to allow enough space for
+whatever is inside. An error message will be printed if you
+don't, and the @Code "@High" symbol will be ignored.
+@PP
+Instead of a particular width, it is quite common to want something
+to be as wide as possible. For this there is the @Code "@HExpand"
+hexpand. @Index @Code "@HExpand"
+symbol:
+@ID @Code "@IndentedDisplay @Box @HExpand { A box }"
+produces
+@IndentedDisplay @Box @HExpand { A box }
+Notice how @Code "@HExpand" is placed after the @Code "@Box" symbol,
+to ensure that the box is drawn around something as wide as possible,
+analogously to the second @Code "@Wide" example above. Lout has
+carefully worked out that `as wide as possible' means the column width
+minus the indent width and box margins.
+@PP
+Here is an example of @Code "@Wide" and @Code "@HExpand" working
+together:
+@ID @Box margin { 0.3c } 8c @Wide {
+Name: @Underline @HExpand
+@LP
+Address: @Underline @HExpand
+}
+The problem is to get the underlines to be as wide as possible.
+The solution is
+@ID @Code @Verbatim {
+@Box margin { 0.3c } 8c @Wide {
+Name: @Underline @HExpand
+@LP
+Address: @Underline @HExpand
+}
+}
+Each @Code "@HExpand" symbol produces for its result an object
+which is as wide as possible, in this example containing nothing.
+When that object is underlined, the underline is as wide as possible.
+@PP
+Although there is a corresponding @Code "@VExpand" symbol, it is not very
+vexpand. @Index @Code "@VExpand"
+useful alone because `as high as possible' does not mean `down to the foot
+of the page' as you would expect. It is mainly useful within
+{@Code "@High"}.
+@PP
+The @Code {"@HShift"} and @Code {"@VShift"} symbols control the alignment
+hshift. @Index @Code "@HShift"
+vshift. @Index @Code "@VShift"
+of objects with neighbouring objects. There are not many places in document
+formatting where alignment actually matters. Ordinary lines of text are
+one of them:
+@ID @Code "faults such as {-0.3f @VShift s}lipped letters"
+produces
+@ID { faults such as {-0.3f @VShift s}lipped letters }
+with the object following @Code "@VShift" aligned with neighbouring
+objects such that it appears 0.3 times the current font size lower
+than it normally would. The object following @Code {"@VShift"} may
+be arbitrary as usual. Examples requiring @Code "@HShift" are very
+rare; one appears below.
+@PP
+The @Code "@VStrut" symbol is used to compensate for missing
+vstrut. @Index @Code "@VStrut"
+letter ascenders and descenders. For example, the three
+boxes @Box { e }, @Box { f }, and @Box { g } look ragged
+because their contents differ in their ascenders and descenders.
+The solution is to insert a @I strut into each box: an invisible
+object of zero width whose height is that of a letter with both
+an ascender and a descender. This is done with the
+@Code "@VStrut" symbol, which attaches such a strut to the
+following object:
+@ID @Code "@Box { @VStrut e }, @Box { @VStrut f }, and @Box { @VStrut g }"
+produces
+@ID { @Box { @VStrut e }, @Box { @VStrut f }, and @Box { @VStrut g } }
+The @Code "@VStrut" symbol has @Code "above" and @Code "below" options
+which determine how high and low (relative to the middle of the letter
+`x') the strut is to go. Their default values are both @Code { "0.5f" }.
+@PP
+Missing descenders can cause list items to appear unequally spaced,
+because the space between list items is ordinarily measured from
+the bottom edge of the higher list item to the top edge of the lower
+one, rather than from baseline to baseline. Enclosing the last word
+of the troublesome items in @Code "@VStrut" will fix this problem.
+@PP
+Alternatively, and possibly more conveniently, Version 3.33 of Lout
+has added a @Code "strut" option to the @Code "@Font" symbol, used
+alone like this:
+@ID @Code "strut @Font ..."
+or in combination with other values suited to go to the left of
+{@Code "@Font"}, like this:
+@ID @Code "{ strut +2p } @Font ..."
+This causes a vertical strut to be added to every word under the
+influence of the {@Code "@Font"} symbol. The height of this
+kind of strut is fixed at the height of the highest character in
+the font, and its depth at the depth of the deepest character,
+as recorded by the `font bounding box' stored with the description
+of the font. For example,
+@ID @Code "strut @Font { @Box { e }, @Box { @f }, and @Box { g } }"
+produces
+@ID strut @Font { @Box { e }, @Box { f }, and @Box { g } }
+If you need many struts, it might pay to include @Code "strut"
+in the @Code "@InitialFont" option of your document, so that it
+applies everywhere.
+@PP
+The @Code "@OverStrike" symbol causes the objects on
+overstrike. @Index @Code "@OverStrike"
+each side of it to be overstruck:
+@ID @Code "= @OverStrike \"/\""
+produces
+@ID { = @OverStrike "/" }
+The objects to be overstruck may be arbitrary as usual. For example,
+Section {@NumberOf overall} recommends this symbol for overstriking
+two graphs, to get what appears to be one graph with two coordinate
+systems superimposed. The second object is printed after the first
+and will paint over it.
+@PP
+Sometimes the best way to get Lout to do what you want is to make it
+pretend that some object has zero width or height, using the
+zerowidth. @Index @Code "@ZeroWidth"
+zeroheight. @Index @Code "@ZeroHeight"
+@Code "@ZeroWidth" and @Code "@ZeroHeight" symbols. Lout will
+format the overall document as though the object in question had
+zero width or height, but it will still print the entire object.
+@PP
+For example, you might have an inline equation that causes the
+line spacing to increase to accommodate it -- @M { 2 sup 2 sup N } say --
+but you would rather it didn't. Writing
+@ID @Code "@ZeroHeight @M { 2 sup 2 sup N }"
+causes Lout to pretend that the object has zero height, and so
+it will not increase the line spacing around this version of
+{@ZeroHeight @M { 2 sup 2 sup N }}, as you can see.
+@PP
+The @Code "@HShift" and @Code "@VShift" symbols provide a way to move
+the printed object with respect to the zero-width one:
+@ID @Code @Verbatim {
+{@ZeroWidth 1w @HShift ``}My dear Sir Thomas!'' cried
+Mrs. Norris, red with anger, ``Fanny can walk.''
+}
+This example produces `hanging punctuation':
+@ID 5c @Wide ragged @Break {
+{@ZeroWidth 1w @HShift ``}My dear Sir Thomas!'' cried
+Mrs. Norris, red with anger, ``Fanny can walk.''
+}
+The double quotes are printed at zero width, and @Code "1w @HShift"
+ensures that they appear just to the left of the empty object that
+Lout thinks it is placing, so that they protrude into the margin
+rather than overstriking the next word (the Expert's Guide
+@Cite { $kingston1995lout.expert } explains the @Code "w" unit of
+measurement).
+@PP
+Some of the symbols described in this section are Lout primitives, described
+in full detail in the Expert's Guide @Cite { $kingston1995lout.expert };
+and that is also the place to look for more information about precise
+object placement. In particular, the Lout primitives described there
+for horizontal and vertical concatenation, @Code "/" and {@Code "|"},
+offer possibilities beyond what has been described here.
+@End @Section
diff --git a/doc/doc/user/bgr_rota b/doc/doc/user/bgr_rota
new file mode 100644
index 0000000..002af2d
--- /dev/null
+++ b/doc/doc/user/bgr_rota
@@ -0,0 +1,35 @@
+@Section
+ @Title { Rotation }
+ @Tag { rotation }
+@Begin
+@PP
+The @Code "@Rotate" symbol rotates the following object by any positive
+rotate. @Index @Code "@Rotate"
+or negative angle:
+@ID @Code "45d @Rotate @Box WARNING!"
+The angle is measured in degrees. The result here is
+@ID { 45d @Rotate @Box WARNING! }
+As usual, the object to be rotated may be arbitrary. However, it is
+difficult for Lout to choose appropriate column widths for paragraphs
+inside rotated objects, so if a rotated object contains paragraphs that
+should be broken it is best to define the object's width explicitly,
+using the @Code "@Wide" symbol from Section {@NumberOf precise}:
+wide. @RawIndex { @Code "@Wide" }
+wide.rotate @SubIndex { with @Code "@Rotate" }
+@ID @OneRow @Code @Verbatim {
+-90d @Rotate 4c @Wide {
+Papal initiatives and influence from the crowning of
+Charlemagne to the First Crusade
+}
+}
+The result here is
+@ID {
+-90d @Rotate 4c @Wide {
+Papal initiatives and influence from the crowning of
+Charlemagne to the First Crusade
+}
+}
+The @Code "@Wide" symbol fixes the width of the following object, in
+this example to the length 4.5 centimetres, which is all Lout needs to
+decide the column widths of any paragraphs within it.
+@End @Section
diff --git a/doc/doc/user/bgr_scal b/doc/doc/user/bgr_scal
new file mode 100644
index 0000000..05f1074
--- /dev/null
+++ b/doc/doc/user/bgr_scal
@@ -0,0 +1,68 @@
+@Section
+ @Title { Scaling }
+ @Tag { scaling }
+@Begin
+@PP
+The @Code "@Scale" symbol performs a geometrical scaling of the
+scale. @Index @Code "@Scale"
+following object:
+@ID @Code {
+"0.5 @Scale @Box WARNING!"
+}
+produces
+@ID {
+0.5 @Scale @Box WARNING!
+}
+A scale factor of 0.5 means half the original size, 2.0 means double size,
+and so on. No unit of measurement appears in the scale factor, because
+it makes no sense to have one. As usual, the object to be scaled may be
+arbitrary.
+@PP
+It is also possible to supply two scale factors, in which case the
+first is applied horizontally and the second vertically:
+@ID @Code "{0.5 2.0} @Scale @Box WARNING!"
+has result
+@ID {0.5 2.0} @Scale @Box WARNING!
+Practical uses for this kind of scaling are rare.
+@PP
+If an empty object is given instead of a scale factor, like this:
+@ID @Code "{} @Scale @Box WARNING!"
+the @Code "@Scale" symbol will choose the largest scale factor that
+does not overrun the available horizontal space. It is often possible
+to omit the {@Code "{}"}, since Lout inserts an empty object
+automatically whenever an object is clearly missing (see Section
+{@NumberOf objects}). For example,
+@ID @Code "@QuotedDisplay @Scale @Box WARNING!"
+produces
+@QuotedDisplay @Scale @Box WARNING!
+@Code "@QuotedDisplay" and @Code "@LeftDisplay" go well with this form
+of {@Code "@Scale"}. However, some care is needed because Lout foolishly
+takes no account of the available @I vertical space when choosing the
+scale factor. The chosen scale factor could enlarge the vertical size so
+much that the object no longer fits on the page, with disastrous results.
+@PP
+By using the @Code "@Wide" symbol from Section {@NumberOf precise} to
+restrict the available horizontal space, this form of scaling can also
+be used to scale to a nominated width. For example,
+wide. @RawIndex { @Code "@Wide" }
+wide.scale @SubIndex { with @Code "@Scale" }
+@ID @Code "5c @Wide @Scale @Box WARNING!"
+produces
+@ID { 5c @Wide @Scale @Box WARNING! }
+which is 5 centimetres wide.
+@PP
+The @Code "@Scale" symbol will scale either up or down, whichever
+is required to fit the available space. There is also a way to make
+it scale down if necessary but never scale up, by giving the
+@Code "downifneeded" keyword instead of an empty object:
+@ID @Code "5c @Wide downifneeded @Scale @Box WARNING!"
+produces no scaling:
+@ID 5c @Wide downifneeded @Scale @Box WARNING!
+but
+@ID @Code "1c @Wide downifneeded @Scale @Box WARNING!"
+does produce scaling:
+@ID 1c @Wide downifneeded @Scale @Box WARNING!
+This is a good option if scaling is being used when a display is
+around the same width as the page; it scales only if this is
+needed to fit the display into the column, not otherwise.
+@End @Section
diff --git a/doc/doc/user/bgr_text b/doc/doc/user/bgr_text
new file mode 100644
index 0000000..5f76227
--- /dev/null
+++ b/doc/doc/user/bgr_text
@@ -0,0 +1,261 @@
+@Section
+ @Title { Textures }
+ @Tag { textures }
+@Begin
+@PP
+The @Code "@Texture" symbol works in the same kind of way as @Code "@Font"
+texture.sym @Index { @Code "@Texture" symbol }
+and @Code "@Colour" do. It causes the object to its right to be printed
+in a texture specified by the object to its
+left:
+@ID @Code "striped @Texture 40p @Font ABC"
+produces
+@FootNote {
+If you can't see the result here, or if you can see it but without
+texture, then the fault is probably in your PostScript viewer.
+The PostScript viewer used by the author (a 1997 version of @I { gv })
+shows a blank space here and throughout this section wherever a
+texture is supposed to appear, but when printed on his printer
+the textures appear correctly. Some viewers may fail altogether when
+given a PostScript file with textures. In that case, run your document
+again using @OneCol @I { lout -t } instead of @I { lout }. This will
+cause Lout to ignore all textures and print everything in solid colour.
+}
+@CD striped @Texture 40p @Font ABC
+The object to the right of @Code "@Texture" may be arbitrary as usual.
+@PP
+# Textures are harder to specify than colours, and only a few
+# texture names are widely used.
+Only a handful of textures
+are offered by the @Code "@Texture" symbol; but, as some
+compensation, there are options which allow any texture to
+be scaled, printed at any angle,
+texture.sym @RawIndex { @Code "@Texture" symbol }
+texture.sym.scale @SubIndex { @Code "scale" option }
+texture.sym.angle @SubIndex { @Code "angle" option }
+texture.sym.hshift @SubIndex { @Code "hshift" option }
+texture.sym.vshift @SubIndex { @Code "vshift" option }
+and shifted:
+@ID @OneRow @Code @Verbatim {
+striped @Texture
+ scale { 2 }
+ angle { 45d }
+ hshift { 1p }
+ vshift { 3p }
+40p @Font ABC
+}
+produces
+@CD striped @Texture
+ scale { 2 }
+ angle { 45d }
+ hshift { 1p }
+ vshift { 3p }
+40p @Font ABC
+with the texture scaled by a factor of 2, printed at an angle of 45
+degrees, and shifted one point horizontally and three points
+vertically. The @Code scale option causes equal scaling in the
+horizontal and vertical directions; there is also {@Code hscale}
+which scales horizontally only, and @Code vscale which scales
+vertically only. As you would expect, the default values of these
+options are @Code 1 for the scaling options, {@Code 0d} for {@Code angle},
+and {@Code 0p} for {@Code hshift} and {@Code vshift}.
+# @PP
+# Stripes would rarely need to be shifted in practice, but some of the other
+# textures described below can benefit from shifting.
+@PP
+Here is the list of all textures offered by the @Code "@Texture"
+symbol, with the options specific to each kind of texture, their
+default values, and sample default output. Remember, all textures
+take the {@Code angle}, {@Code scale}, {@Code hscale}, {@Code vscale},
+{@Code hshift}, and {@Code vshift} options as well.
+@ID @OneRow @Tbl
+ mv { 0.5v }
+ aformat { @Cell ml { 0i } A | @Cell @Code B | @Cell mr { 0i } @I lines @Break C }
+{
+
+@Rowa
+ ma { 0i }
+ A { @TextureSample solid }
+ B {
+"solid @Texture"
+solid."texture" @Index { @Code "solid" "texture" }
+}
+
+@Rowa
+ A { @TextureSample striped }
+ B {
+"striped @Texture"
+" width { 1p }"
+" gap { 1p }"
+}
+ C { ""
+The width of each stripe
+The width of each gap between stripes
+striped."texture" @Index { @Code "striped" "texture" }
+}
+
+@Rowa
+ A { @TextureSample grid }
+ B {
+"grid @Texture"
+" width { 1p }"
+" gap { 1p }"
+}
+ C { ""
+The width of each stripe
+grid."texture" @Index { @Code "grid" "texture" }
+The width of each gap between stripes
+}
+
+@Rowa
+ A { @TextureSample dotted }
+ B {
+"dotted @Texture"
+" radius { 0.5p }"
+" gap { 2p }"
+}
+ C { ""
+The radius of each dot (filled circle)
+dotted."texture" @Index { @Code "dotted" "texture" }
+The gap between the centres of adjacent dots
+}
+
+@Rowa
+ A { @TextureSample chessboard }
+ B {
+"chessboard @Texture"
+" width { 2p }"
+}
+ C { ""
+The width of each square
+chessboard."texture" @Index { @Code "chessboard" "texture" }
+}
+
+@Rowa
+ A { @TextureSample brickwork }
+ B {
+"brickwork @Texture"
+" width { 6p }"
+" height { 2p }"
+" linewidth { 0.5p }"
+}
+ C { ""
+The width of each brick
+The height of each brick
+brickwork."texture" @Index { @Code "brickwork" "texture" }
+The width of the brickwork lines
+}
+
+@Rowa
+ A { @TextureSample honeycomb }
+ B {
+"honeycomb @Texture"
+" radius { 2p }"
+" linewidth { 0.5p }"
+}
+ C { ""
+The radius of each hexagon
+honeycomb."texture" @Index { @Code "honeycomb" "texture" }
+The width of the lines
+}
+
+@Rowa
+ A { @TextureSample triangular }
+ B {
+"triangular @Texture"
+" radius { 4p }"
+" linewidth { 0.5p }"
+}
+ C { ""
+The side length of each triangle
+triangular."texture" @Index { @Code "triangular" "texture" }
+The width of the lines
+}
+
+@Rowa
+ mb { 0i }
+ A { @TextureSample string }
+ B {
+"string @Texture"
+" width { 12p }"
+" height { 12p }"
+" font { Times-Roman }"
+" size { 10p }"
+" value { \"*\" }"
+}
+ C { ""
+The width at which the string repeats
+The height at which the string repeats
+The font used to display the string (see below)
+The font size used to display the string
+string."texture" @Index { @Code "string" "texture" }
+The characters to be displayed
+}
+
+}
+This last example seems like a good one for experimenting with
+the {@Code hshift} and {@Code vshift} options:
+texture.sym.hshift @SubIndex { @Code "hshift" option }
+texture.sym.vshift @SubIndex { @Code "vshift" option }
+@ID @OneRow @Tbl
+ mv { 0.5v }
+ aformat { @Cell ml { 0i } A | @Cell @Code B | @Cell mr { 0i } @I lines @Break C }
+{
+@Rowa
+ mb { 0i }
+ A {
+@Box margin { 0i }
+string @Texture hshift { 4p } vshift { 4p }
+@Box margin { 2.0f } paint { black } {}
+}
+ B {
+"string @Texture"
+" hshift { 4p }"
+" vshift { 4p }"
+}
+}
+You have to find the right amount of shift by experiment, especially
+when combined with rotation and scaling. We recommend sticking to the
+{@Code p} (points), {@Code m} (ems), {@Code c} (centimetres), and
+{@Code i} (inches) units of measurement when giving length options
+to {@Code "@Texture"} symbols.
+@PP
+Care is needed when using the @Code font and @Code value options
+of {@Code "string @Texture"}, since these options are passed straight
+through to the PostScript output without checking. The @Code "font"
+option takes a PostScript name for a font, not a Lout name. Typical
+PostScript font names, virtually certain to work, are {@Code Times-Roman}
+and {@Code Helvetica}. Since Lout takes no special steps to make sure
+that the font you ask for is available, you should restrict your font
+choices to fonts known to be in use elsewhere on the same page, or
+known to be always loaded in your viewing device. The @Code "value"
+option must be a sequence of characters from the nominated font.
+Although the value does not have to be quoted as shown, we recommend
+it as a reminder of how limited the choices are here. Also, spaces in
+your value will work better between quotes, and to make parentheses --
+@Code "(" and @Code ")" -- come out correctly they must be enclosed in
+quotes and preceded by a backslash character, which you get as usual by
+writing @I two backslash characters. For example, {@Code "\"\\\\(\""}
+will produce one left parenthesis.
+@PP
+Notice that {@Code "solid @Texture"} produces solid colour,
+or in other words no texture:
+@ID @Code @Verbatim {
+striped @Texture angle { 45d }
+@Box linewidth { 2p } solid @Texture 50p @Font WARNING!
+}
+produces
+@CD {
+striped @Texture angle { 45d }
+@Box linewidth { 2p } solid @Texture 50p @Font WARNING!
+}
+As shown, {@Code "solid @Texture"} is useful for switching back to
+normal printing within a textured region. In this example, without
+it the letters would have been striped as well.
+@PP
+Expert users can also make the object to the left of @Code "@Texture"
+be anything that is acceptable to the left of the expert's symbol
+{@Code "@SetTexture"}, allowing people who want to do some serious
+work in PostScript to get arbitrary textures. Consult the Expert's
+Guide for more about this.
+@End @Section
diff --git a/doc/doc/user/dia b/doc/doc/user/dia
new file mode 100644
index 0000000..e23d5a8
--- /dev/null
+++ b/doc/doc/user/dia
@@ -0,0 +1,56 @@
+@Chapter
+ @Title { Diagrams }
+ @Tag { diagrams }
+@Begin
+@LP
+This chapter describes how to use the @@Diag symbol
+diagrams. @RawIndex { diagrams }
+diag.diagrams @Index { @Code "@Diag" (diagrams) }
+# @FootNote {
+# Starting with Version 3.18 of Lout, the @@Diag symbol was enhanced with
+# the {@Code "@ANode"}, {@Code "@BNode"}, and {@Code "@CNode"} symbols
+# described in Section {@NumberOf dia_node}, and with the symbols for
+# syntax diagrams described in Section {@NumberOf dia_synt}.
+#These
+#enhancements are upwardly compatible, unless the user has defined
+#symbols with these same names and used them within diagrams.
+# @LP
+# Prior to Version 3.09 of Lout, this chapter described a symbol called
+# fig. @Index @Code "@Fig"
+# {@Code "@Fig"} which was similar to but more primitive than
+# {@Code "@Diag"}. For backward compatibility the @Code "@Fig" symbol
+# is still available and still works exactly as described in the old
+# documentation, but there is no reason to use it in new documents.
+# }
+to make diagrams like this one:
+diag. @Index @Code "@Diag"
+@CD @Diag
+ margin { 0.2c }
+{
+-2p @Font
+{ A:: @Ellipse { 25, 39 }
+/0.3c |0.2c B:: @Ellipse { 43 } |0.1c |0.8c E:: @Box outlinestyle {noline} {Problem node}
+/0.3c C:: @Ellipse { 40, 41 } | | D:: @Ellipse paint { lightgrey } {44, 45, 46}
+}
+// @Link from { A } to { B }
+// @Link from { B } to { C }
+// @Link from { B } to { D }
+// @Arrow from { E } to { D }
+}
+@@Diag offers nodes and links, arrows, labels, coordinates,
+tree diagrams, and syntax diagrams.
+@BeginSections
+@Include { dia_intr }
+@Include { dia_node }
+@Include { dia_link }
+@Include { dia_tags }
+@Include { dia_labe }
+@Include { dia_posi }
+@Include { dia_tree }
+@Include { dia_synt }
+@Include { dia_erro }
+@Include { dia_defi }
+@Include { dia_geom }
+@Include { dia_summ }
+@EndSections
+@End @Chapter
diff --git a/doc/doc/user/dia_cons b/doc/doc/user/dia_cons
new file mode 100644
index 0000000..569b756
--- /dev/null
+++ b/doc/doc/user/dia_cons
@@ -0,0 +1,7 @@
+@Section
+ @Tag { dia_cons }
+ @Title { Consistency within and between diagrams }
+@Begin
+@PP
+@I { still to do }
+@End @Section
diff --git a/doc/doc/user/dia_defi b/doc/doc/user/dia_defi
new file mode 100644
index 0000000..63c1a96
--- /dev/null
+++ b/doc/doc/user/dia_defi
@@ -0,0 +1,366 @@
+@Section
+ @Tag { dia_defi }
+ @Title { Expert usage: defining new shapes }
+@Begin
+@PP
+@@Diag permits you to create your own node outlines and link paths, by
+diagrams. @RawIndex { diagrams }
+diagrams.definitions @SubIndex { definitions }
+definitions. @RawIndex { definitions }
+definitions.use.with.diagrams @SubIndex { use with diagrams }
+giving non-standard values to the @Code outline and @Code path
+options. This section shows how to do this for very simple shapes
+only; the following section introduces the large repertoire of geometrical
+symbols that @@Diag offers for helping you create complex shapes.
+@PP
+As explained earlier, a node outline is drawn over its {@I base}, which
+is a rectangle containing the following object plus margins. The base
+defines a coordinate system with the point (0, 0) at the bottom left
+corner, and @M { (xsize, ysize) } at the top right:
+@CD @OneRow @Diag {
+@Box
+ nodelabelmargin { 0.3f }
+ blabel { @M { ysize } }
+ blabelprox { E }
+ clabel { @M { 0 } }
+ clabelprox { E }
+ dlabel { @M { xsize } }
+ dlabelprox { N }
+ alabel { @M { 0 } }
+ alabelpos { SW }
+ alabelprox { N }
+ paint { lightgrey }
+ outlinestyle { noline }
+ margin { 0c }
+{ 3c @Wide 2c @High }
+//0.5c
+}
+The value of the @Code outline option is a sequence of points defined in
+this coordinate system:
+@ID {
+@Code @Verbatim {
+@Node
+ outline {
+ 0 0
+ xsize 0
+ 0 ysize
+ 0 0
+ }
+}
+||7ct
+@Diag {
+@Box
+ margin { 0c }
+ outlinestyle { noline }
+ paint { lightgrey }
+@Node
+ outline {
+ 0 0
+ xsize 0
+ 0 ysize
+ 0 0
+ }
+ margin { 0c }
+{ 3c @Wide 2c @High }
+}
+}
+As shown, the resulting outline is created by joining each point to the
+next with a straight line. It is conventional to proceed anticlockwise
+around the outline, but you may start anywhere.
+@PP
+The {@Code paint}, {@Code texture}, {@Code outlinestyle},
+{@Code outlinedashlength}, and {@Code outlinewidth} options of
+@Code "@Node" work for user-defined outlines exactly as they do
+for the standard ones:
+@ID {
+@Code @Verbatim {
+@Node
+ outline {
+ 0 0
+ xsize 0
+ 0 ysize
+ 0 0
+ }
+ paint { lightgrey }
+ outlinestyle { solid dashed }
+}
+||7ct
+@Diag {
+@Node
+ outline {
+ 0 0
+ xsize 0
+ 0 ysize
+ 0 0
+ }
+ paint { lightgrey }
+ outlinestyle { solid dashed }
+ margin { 0c }
+{ 3c @Wide 2c @High }
+}
+}
+Each line in the outline is one segment for {@Code outlinestyle}.
+@PP
+If two points in an outline are separated by {@Code "[]"}, no line is
+drawn between them, and the outline is treated as two separate,
+disconnected regions when painting.
+@PP
+Two points may also be separated by {@Code "["}{@I point}{@Code "]"},
+where @I point stands for any point. This causes the two points to be
+joined by an arc whose centre is at the given point:
+@ID {
+@Code @Verbatim {
+@Node
+ outline {
+ 0 0
+ ysize 0
+ [ 0 0 ]
+ 0 ysize
+ 0 0
+ }
+}
+||7ct
+@Diag {
+@Box
+ margin { 0c }
+ outlinestyle { noline }
+ paint { lightgrey }
+@Node
+ outline {
+ 0 0
+ ysize 0
+ [ 0 0 ]
+ 0 ysize
+ 0 0
+ }
+ margin { 0c }
+{ 3c @Wide 2c @High }
+}
+}
+The arc will be circular if possible, otherwise it will be part of
+elliptical. @Index { elliptical arcs }
+an ellipse whose axes are oriented horizontally and vertically. The
+arc goes anticlockwise; to get a clockwise arc, use
+{@Code "["}{@I point}{@Code " clockwise]"}.
+@PP
+Two points may be separated by
+@M { [x sub 1 ``` y sub 1 ``` x sub 2 ``` y sub 2 ] }, which requests
+that a Bezier curve be drawn between them with control points
+bezier.curve @Index { Bezier curve }
+@M { (x sub 1 , y sub 1 ) } and
+@M { (x sub 2 , y sub 2 ) }:
+@CD @Diag {
+@Node
+ outline {
+ A:: { xsize*0.2 ysize*0.5 }
+ B:: { xsize*0.4 ysize*0.9 }
+ C:: { xsize*0.9 ysize*0.4 }
+ D:: { xsize*0.3 ysize*0.1 }
+ A B C D A
+ }
+ alabelpos { A }
+ blabelpos { B }
+ clabelpos { C }
+ dlabelpos { D }
+ alabelprox { SE }
+ blabelprox { SW }
+ clabelprox { SW }
+ dlabelprox { NW }
+ outlinestyle { cdashed cdashed cdashed noline }
+ alabel { @M { ( x sub 0 , y sub 0 ) } }
+ blabel { @M { ( x sub 1 , y sub 1 ) } }
+ clabel { @M { ( x sub 2 , y sub 2 ) } }
+ dlabel { @M { ( x sub 3 , y sub 3 ) } }
+{ 6c @Wide 2c @High }
+//
+@Link
+ path { A [B C] D }
+}
+The curve is attracted toward the control points, without reaching
+them; it is tangent to the straight line from the start point to the
+first control point, and from the second control point to the finishing
+point, and it lies wholly inside the quadrilateral formed by the four
+points. Owing to the author's laziness, dashes and dots do not fit as
+neatly onto Bezier curves as they do onto lines and arcs.
+@PP
+Tags (Section {@NumberOf dia_tags}) may be assigned to points within
+the outline option, like this:
+@ID {
+@Code @Verbatim {
+@Node
+ outline {
+ LR:: { xsize 0 }
+ UL:: { 0 ysize }
+ 0 0 LR UL 0 0
+ }
+}
+||7ct
+@Diag {
+//0.5f
+@ShowTags @Node
+ outline {
+ LR:: { xsize 0 }
+ UL:: { 0 ysize }
+ 0 0 LR UL 0 0
+ }
+ { 2c @High 3c @Wide }
+}
+}
+The tagged point does not have to lie on the outline, and it
+is not automatically added to the outline. Once defined, a
+tag stands for a point in the usual way; it may be used later in the
+outline, as was done above, relabelled, and so on, exactly like the tags
+of the standard nodes.
+@PP
+Once a point has been tagged, a @I direction may be associated
+with it, to inform @@Diag which way the outline or
+link path is going at that point. The standard outlines have directions:
+@ID {
+@Code {
+"@Ellipse { 3c @Wide 1c @High }"
+}
+||7ct
+@Diag {
+//0.5f
+@ShowTags @ShowDirections @Ellipse { 3c @Wide 1c @High }
+}
+}
+@Code CTR has no direction. If available, direction information
+is used when placing labels, in the proximity step (by {@Code above}, for
+example) and in the angle step if the label is aligned, perpendicular,
+parallel, or antiparallel. A direction is given using the
+@Code ":<" symbol within an outline:
+@ID {
+@Code @Verbatim {
+@Node
+ outline {
+ LR:: { xsize 0 }
+ LR:< 0d
+ UL:: { 0 ysize }
+ UL:< 270d
+ 0 0 LR UL 0 0
+ }
+}
+||7ct
+@Diag {
+//0.5f
+@ShowTags @ShowDirections @Node
+ outline {
+ LR:: { xsize 0 }
+ LR:< 0d
+ UL:: { 0 ysize }
+ UL:< 270d
+ 0 0 LR UL 0 0
+ }
+ { 2c @High 3c @Wide }
+}
+}
+It is often helpful when creating outlines to check where the tagged
+points and directions really are, by printing them out as is done
+above. For this there is a @Code "@ShowTags" symbol whose result is
+the following (arbitrary) object with its tagged points visible, and
+a @Code "@ShowDirections" symbol which works similarly and shows the
+directions. The diagram above was printed using
+{@Code "@ShowTags @ShowDirections @Node ..."}. There is also a
+@Code "@ShowPoints" symbol which is like @Code "@ShowTags" except
+that it omits the tags, just placing circles on the points.
+@PP
+Link paths are similar to node outlines, created
+using the @Code path option of @Code "@Link" instead of the
+@Code outline option of {@Code "@Node"}. The major difference is that
+links have no base, so @Code xsize and @Code ysize cannot be
+used. Indeed, even @Code "0 0" does not have any useful
+meaning inside a link path.
+@PP
+Within a link path, the symbols @Code from and @Code to denote the
+values of the link's @Code from and @Code to options, and these
+form the basis of constructing the link path:
+@ID {
+@Code @Verbatim {
+@Link
+ path {
+ FROM:: from
+ TO:: to
+ FROM TO
+ }
+}
+||7ct
+{
+//1.0c
+@VContract @Diag {
+3c @Wide 1c @High
+//
+@ShowTags @Link
+ path {
+ FROM:: from
+ TO:: to
+ FROM TO
+ }
+ from { 0,1 }
+ to { 1,0 }
+}
+}
+}
+This simple example creates two tagged points and joins them with
+a straight line. If you want a link that can carry arrowheads, it is
+best to ensure that it creates @Code FROM and @Code TO tags, with
+directions pointing along the link from @Code FROM to @Code TO at
+both points, since then the default values of the various arrow
+options will do the rest. Similarly, if you want labels you need to
+define {@Code LFROM}, {@Code LMID}, and {@Code LTO} labels, ideally
+also with directions.
+@PP
+Once the outline or path is complete, unless it is really a one-off
+production the best thing to do with it is to add it to your
+extend. @Index { @Code extend keyword }
+@Code "mydefs" file in the following form:
+@ID @OneRow @Code @Verbatim {
+extend @DiagSetup @Diag
+macro @MyNode {
+ @Node
+ outline {
+ LR:: { xsize 0 }
+ LR:< 0d
+ UL:: { 0 ysize }
+ UL:< 270d
+ 0 0 LR UL 0 0
+ }
+}
+}
+This says that we are `extending' the @@Diag symbol by adding a new
+symbol, {@Code "@MyNode"}, which stands for what follows it between
+braces. @Code "@MyNode" will then behave exactly like @Code "@Circle"
+and the other standard node symbols. The same pattern works for links:
+@ID @OneRow @Code @Verbatim {
+extend @DiagSetup @Diag
+macro @MyLink {
+ @Link
+ path {
+ FROM:: from
+ TO:: to
+ FROM TO
+ }
+}
+}
+If it is worth the effort to construct a new outline or link path, it
+is worth packaging it like this and thinking up a good name for it,
+for then it will be available, easily, forever.
+@PP
+This same approach is also useful to define common combinations of
+options, even when there is no new outline or path:
+@ID @OneRow @Code @Verbatim {
+extend @DiagSetup @Diag
+macro @BigOctagon {
+ @Polygon
+ sides { 8 }
+ hsize { 5c }
+ vsize { 5c }
+ font { Bold }
+}
+}
+Such definitions are very useful if the combinations occur
+frequently. Any options not mentioned have their usual default values,
+and may be set in the usual way:
+@ID @Code "@BigOctagon outlinestyle { dashed } ..."
+Attempts to reset an already set option will elicit a warning message.
+@End @Section
diff --git a/doc/doc/user/dia_erro b/doc/doc/user/dia_erro
new file mode 100644
index 0000000..95b1d4d
--- /dev/null
+++ b/doc/doc/user/dia_erro
@@ -0,0 +1,87 @@
+@Section
+ @Tag { dia_erro }
+ @Title { Errors }
+@Begin
+@PP
+Lout normally produces an output file that will print without mishap on
+any PostScript device. However, some of the options of {@Code "@Diag"}'s
+symbols are passed through Lout to the output file without checking,
+including anything containing @Code "@Diag" lengths, angles, points, and
+tags. Any errors in these options will not be detected until the file
+errors. @RawIndex { errors }
+errors.in.diagrams @SubIndex { in diagrams }
+is printed.
+@PP
+The most likely errors are {@I syntax @I errors}, as in
+@Code "outline { 0 0 [ 0 xsize }" for example, in which a @Code "]" is
+missing; @I { type errors }, as in @Code "SE:: 45d" where the
+following object should have been a point; and @I { undefined errors },
+arising from labels misspelt or used before being defined. Less commonly,
+the options may all be correct but the figure is too large in some way: too
+many labels, too deeply nested, and so on.
+@PP
+When an error is detected, @@Diag arranges for the offending page to
+be printed up to the point where the error occurred, with a message nearby
+describing the error. Printing of the document is then aborted. It is
+often quite easy to find the problem, because it lies in whatever should
+have been printed next.
+@PP
+If you see {@Code VMerror} in an error message, it means that the printer
+vmerror. @Index { @Code VMerror PostScript error }
+is running out of memory. In that case, one thing you can try is
+diagrams. @RawIndex { diagrams }
+diagrams.save @SubIndex { @Code "save" option }
+save. @RawIndex { @Code "save" option }
+save.in.diagrams @SubIndex { in diagrams }
+@ID @Code {
+"@Diag"
+" save { yes }"
+"..."
+}
+This causes the memory used by @@Diag to be reclaimed as soon
+as the diagram is printed, rather than at the end of the current page
+as is usual. However, if the diagram is nested inside some other
+major Lout package, such as {@Code "@Graph"}, use of this option may
+cause other PostScript errors.
+@PP
+If you see @Code "dictfull" in an error message, it means that you are
+dictfull. @Index { @Code dictfull PostScript error }
+using an old version of PostScript. Increasing the @Code "maxlabels"
+option of @@Diag (Section {@NumberOf dia_summ}) might fix the problem.
+@PP
+On other occasions your document might print without problems but you
+see things that should not be there. Here is a typical example,
+reported by a user:
+@CD @Diag
+ margin { 0.3f }
+ outline { shadowbox }
+ shadow { 0.2f }
+ paint { lightyellow }
+ zindent { 0.4f }
+{
+ @Tbl
+ marginhorizontal { 0.55f }
+ aformat { @Cell A }
+ {
+ @Rowa
+ A { QEVENT:: @Node paint { lightblue } { QEvent } }
+ @Rowa
+ A { QIMEVENT:: @Node paint { lightblue } halign { right } { QIMEvent } }
+ @Rowa
+ A { QKEYEVENT:: @Node paint { lightblue } { QKeyEvent } }
+ }
+ //
+ @RVLCurveArrow from { QEVENT } to { QIMEVENT } bias { 1.5f }
+ @RVLCurveArrow from { QEVENT } to { QKEYEVENT } bias { 1.5f }
+}
+The problem here is the two short lengths of straight line protruding
+backwards beyond the point where the arrow starts to curve. This has
+occurred because the @Code TO labels are to the right of the point
+where the curving begins; it can be corrected either by reducing the
+@Code radius option, or else by decreasing @Code { zindent }. Ideally
+@Code "@Diag" would adjust options for you so as to ensure that the
+diagram always look good; but this is quite difficult to do, especially
+when space to turn in is tight or there is a choice of which option to
+adjust, as in the example above. So @Code "@Diag" just does a few
+basic things and leaves the rest to you.
+@End @Section
diff --git a/doc/doc/user/dia_geom b/doc/doc/user/dia_geom
new file mode 100644
index 0000000..a3c4e86
--- /dev/null
+++ b/doc/doc/user/dia_geom
@@ -0,0 +1,206 @@
+@Section
+ @Tag { dia_geom }
+ @Title { Expert usage: numbers, lengths, angles, and points }
+@Begin
+@PP
+@@Diag has many options whose values contain lengths, angles, and
+diagrams. @RawIndex { diagrams }
+diagrams.geometry @SubIndex { geometry }
+geometry.diagrams @Index { geometry in diagrams }
+points. Options such as @Code margin and {@Code vsize}, which affect the
+size or appearance of the base of a node, may contain only the kinds of
+lengths described in Section {@NumberOf objects}; but in all other cases
+arbitrarily complex algebraic expressions may be used to specify the
+values.
+@PP
+The usual mathematical operations may be applied to numbers, angles, and
+lengths:
+@ID @Code "2.0f + 3.0f * sin { 30d }"
+is a valid length. Since this is just ordinary algebra on real numbers,
+the unsurprising details are deferred to the summary
+(Section {@NumberOf dia_summ}). Grouping is always done with braces,
+never parentheses.
+@PP
+More interesting are the geometrical symbols that @@Diag provides. The
+most fundamental is not a symbol at all: two lengths side by side define
+a point. For example,
+@ID @Code "xsize ysize * 0.5"
+within an outline is the point at the far right of the base, halfway
+up.
+@PP
+There are @Code "++" and @Code "--" symbols for vector addition and
+subtraction of two points, and @Code "**" for multiplication by a
+scalar. For example,
+@ID @Code "A@CTR ++ { 1.0f 0 }"
+is the point @Code 1f to the right of {@Code "A@CTR"}. It is a good idea
+to distinguish between @I { absolute points }, like {@Code "A@CTR"}
+and @Code "0.5,1", which denote fixed positions on the page, and
+@I { relative points }, like {@Code "1.0f 0"}, which serve as offsets
+from absolute points. The difference of two absolute points is a relative
+point; adding two absolute points gives an unpredictable result because
+it depends on the origin of the coordinate system. However, the expression
+@ID @Code "P1 ** x ++ P2 ** {1 - x}"
+is safe for any two absolute points {@Code P1} and {@Code P2} and any
+number {@Code x}; it produces a point on the line through the two
+points.
+@PP
+These remarks on safety do not apply within the @Code outline option of
+{@Code "@Node"}, because there the coordinate system is clearly
+specified. Vector operations, with the aid of a few well-chosen tags,
+can greatly simplify the production of outlines:
+@ID {
+@Code @Verbatim {
+@Node
+ outline {
+ SB:: {0 ysize} ** 0.4
+ ST:: {0 ysize} ** 0.6
+ HB:: {xsize 0} ** 0.7
+ SB
+ SB ++ HB
+ HB
+ xsize ysize * 0.5
+ HB ++ {0 ysize}
+ HB ++ ST
+ ST
+ SB
+ }
+ paint { grey }
+{ 6c @Wide 2c @High }
+}
+||7ct
+@Diag {
+@ShowTags @Node
+ outline {
+ SB:: {0 ysize} ** 0.4
+ ST:: {0 ysize} ** 0.6
+ HB:: {xsize 0} ** 0.7
+ SB
+ SB ++ HB
+ HB
+ xsize ysize * 0.5
+ HB ++ {0 ysize}
+ HB ++ ST
+ ST
+ SB
+ }
+ paint { grey }
+{ 6c @Wide 2c @High }
+}
+}
+But absolute sums like @Code "SB ++ HB" are not safe
+in link paths and stray options like {@Code "alabelpos"}.
+@PP
+Sometimes it is useful to define tags
+which are not wanted afterwards and are better forgotten. For
+this there is the @Code ":=" symbol, which works in much the same
+way as @Code "::" except that the tag is forgotten after the outline
+or path option ends. The value assigned does not have to be a point, it
+can be a length or angle, or even a sequence of values. It is
+permissible to change the value assigned to a tag by reassigning.
+@PP
+Two very useful symbols, {@Code angleto} and {@Code atangle}, bring
+angles into the algebra. The {@Code angleto} symbol finds the angle
+from one point to another. For example,
+@ID @Code "SB angleto ST"
+in the outline above would produce {@Code 90d}. The @Code atangle symbol
+finds the point at a given length and angle from the origin. For example,
+@ID @Code "1.4142f atangle 45d"
+is the point {@Code "1f 1f"}, and
+@ID @Code "B@NE ++ 2f atangle 115d"
+is the point @Code 2f from {@Code "B@NE"} to its northwest.
+@PP
+There is a @Code prev symbol, used only within {@Code outline} and
+{@Code path}, which returns the previous point on the outline or
+path, ignoring points within {@Code "[]"}. It makes relative movements
+very easy:
+@ID {
+@Code @Verbatim {
+ outline {
+ 0 0
+ { 2c atangle 30d }
+ prev ++ { 2c atangle 90d }
+ prev ++ { 2c atangle 150d }
+ prev ++ { 2c atangle 210d }
+ prev ++ { 2c atangle 270d }
+ 0 0
+ }
+}
+||7ct
+@Diag { ||2.5c
+@Node
+ outline {
+ 0 0
+ { 2c atangle 30d }
+ prev ++ { 2c atangle 90d }
+ prev ++ { 2c atangle 150d }
+ prev ++ { 2c atangle 210d }
+ prev ++ { 2c atangle 270d }
+ 0 0
+ }
+{ 4c @Wide 4c @High }
+}
+}
+This example is rather naughty because the outline does not grow and
+shrink with the base as it should. Such outlines, while tempting, are
+always regretted later.
+@PP
+There are {@Code xcoord} and {@Code ycoord} symbols for finding the
+@I x and @I y coordinates of a point:
+@ID @Code {
+"{xcoord P1} min {xcoord P2}" "{ycoord P1} max {ycoord P2}"
+}
+is the point at the top left-hand corner of the smallest rectangle
+containing points {@Code P1} and {@Code P2}. And there is a
+@Code distance symbol which produces the (non-negative) distance between
+two points:
+@ID @Code "CTR ++ { CTR distance NW } atangle { CTR angleto NW }"
+equals {@Code NW}.
+@PP
+The rest of this section is concerned with how the `special virtue'
+of the @Code from and @Code to options, their ability to accept a node
+tag as well as a point, is implemented behind the scenes. A good
+user-defined link should also have this virtue, because it is extremely
+useful.
+@PP
+The solution is based on a symbol called {@Code boundaryatangle},
+whose preceding object should be either a point or else the tag
+of a node with one of the standard shapes, and whose following object
+is an angle:
+@ID @Code @Verbatim {
+{ xsize ysize*0.5 } boundaryatangle 45d
+A boundaryatangle 45d
+}
+In the first case the result is the point, regardless of the
+angle. In the second case, the result is the point on the boundary of
+the node whose tag is given, at the given angle from the centre.
+@PP
+There is a second symbol with a similar adaptive ability, called
+{@Code "??"}, which is defined to be @Code "@" whenever that would
+make sense, and otherwise to produce the preceding object for its
+result. For example, @Code "A??CTR" will equal @Code "A@CTR" if there
+is such a thing; but
+@ID @Code "{ xsize ysize*0.5 }??CTR"
+will have result {@Code "{ xsize ysize*0.5 }"} since replacing
+@Code "??" by @Code "@" does not produce anything sensible.
+@PP
+Now suppose we want a link path that connects @Code "from" and
+@Code "to" by a straight line, where @Code "from" and @Code "to" may be
+either node tags or points. In either case a suitable direction for the
+line to take is
+@ID @Code "from??CTR angleto to??CTR"
+and so the desired path is
+@ID @Code @Verbatim {
+path {
+ FROM:: from boundaryatangle { from??CTR angleto to??CTR }
+ TO:: to boundaryatangle { to??CTR angleto from??CTR }
+ FROM
+ TO
+}
+}
+The first line defines point @Code FROM to be on the boundary of
+@Code from at the appropriate angle, if @Code "from" is a node tag;
+otherwise @Code "FROM" is just the point {@Code from}. The second
+line defines point @Code TO similarly, and then the last two lines
+join these two points. The @Code line standard link type is exactly
+this plus a few additional tags and directions.
+@End @Section
diff --git a/doc/doc/user/dia_intr b/doc/doc/user/dia_intr
new file mode 100644
index 0000000..1aa8c66
--- /dev/null
+++ b/doc/doc/user/dia_intr
@@ -0,0 +1,116 @@
+@Section
+ @Tag { dia_intr }
+ @Title { Introduction }
+@Begin
+@PP
+To use the @@Diag symbol you first need to include its setup file. For
+example, suppose you have an ordinary document with tables:
+@ID @OneRow @Code {
+"@SysInclude { tbl }"
+"@SysInclude { doc }"
+"@Doc @Text @Begin"
+"..."
+"@End @Text"
+}
+Change this to
+@ID @OneRow @Code {
+"@SysInclude { tbl }"
+"@SysInclude { diag }"
+"@SysInclude { doc }"
+"@Doc @Text @Begin"
+"..."
+"@End @Text"
+}
+This provides everything you need for making diagrams.
+@PP
+The result of the @@Diag symbol is an object in the usual way. A diagram
+is commonly made into a floating figure, like this:
+@ID @OneRow @Code {
+"@Figure"
+" @Caption { ... }"
+"@Diag {"
+" ..."
+"}"
+}
+or into a centred display, like this:
+@ID @OneRow @Code {
+"@CentredDisplay @Diag { ... }"
+}
+but it could be an entry in a table, a word in a paragraph, or anything
+else.
+@PP
+Although it is not compulsory, most uses of @@Diag contain a
+@I { nodes part } and a @I { links part }:
+@ID @OneRow lines @Break {
+@Code "@Diag {"
+ @I { nodes part }
+ @Code "//"
+ @I { links part }
+@Code "}"
+}
+This reflects @@Diag's view of the world as consisting of {@I nodes}
+diagrams. @RawIndex { diagrams }
+diagrams.nodespart @SubIndex { nodes part }
+nodespart.diagrams @Index { nodes part in diagrams }
+diagrams. @RawIndex { diagrams }
+diagrams.linkspart @SubIndex { links part }
+linkspart.diagrams @Index { links part in diagrams }
+(circles, squares, and so on), which have to be put in their right
+places and then joined with @I links (lines, arrows). The technical
+meaning of the {@Code "//"} symbol does not concern us here; it
+simply serves to divide the two parts.
+@PP
+For example, here is a nodes part containing two nodes separated by
+a @Code "@DP" symbol that (as usual) leaves some vertical space
+between them:
+@ID @OneRow @Tab
+ @Fmta { @Col 7c @Wide A ! @Col B }
+{
+@Rowa
+ A { @Code {
+"@Ellipse { Hello, world }"
+"@DP"
+"@Square @I x"
+} }
+ B { @Diag {
+@Ellipse { Hello, world }
+@DP
+@Square @I x
+} }
+}
+Node symbols like @Code "@Ellipse" and @Code "@Square" follow a familiar
+pattern: they consume the following object, which may be arbitrary, draw
+a shape around it, and give back the resulting object. To insert links, the
+nodes must first be given names, called {@I tags}, using the @Code "::" symbol:
+diagrams. @RawIndex { diagrams }
+diagrams.tags @SubIndex { tags ({@Code "::"}) }
+tags.diagrams @Index { tags ({@Code "::"}) in diagrams }
+@ID @OneRow @Code {
+"A:: @Ellipse { Hello, world }"
+"@DP"
+"B:: @Square @I x"
+}
+Then a link from @Code A to @Code B may be added to the links part:
+@ID @OneRow @Tab
+ @Fmta { @Col 7c @Wide A ! @Col B }
+{
+@Rowa
+ A { @Code @Verbatim {
+@Diag {
+ A:: @Ellipse { Hello, world }
+ @DP
+ B:: @Square @I x
+ //
+ @Link from { A } to { B }
+}
+} }
+ B { @Diag {
+A:: @Ellipse { Hello, world }
+@DP
+B:: @Square @I x
+//
+@Link from { A } to { B }
+} }
+}
+Subsequent examples will often omit the enclosing {@Code "@Diag { }"}.
+@End @Section
diff --git a/doc/doc/user/dia_labe b/doc/doc/user/dia_labe
new file mode 100644
index 0000000..3bc647a
--- /dev/null
+++ b/doc/doc/user/dia_labe
@@ -0,0 +1,514 @@
+@Section
+ @Tag { dia_labe }
+ @Title { Labels }
+@Begin
+@PP
+Diagrams often contain small @I labels adjacent to their nodes and links:
+diagrams. @RawIndex { diagrams }
+diagrams.labels @SubIndex { labels }
+labels. @RawIndex { labels }
+labels.in.diagrams @SubIndex { in diagrams }
+@CD @Diag
+ nodelabelformat { @I @Body }
+{
+@Tab
+ @Fmta { @Col A ! @Col ! @Col ! @Col B ! @Col ! @Col ! @Col C }
+{
+@Rowa
+ B { B:: @Circle alabel { b } }
+@Rowa
+ A { A:: @Circle alabel { a } }
+@Rowa
+ C { C:: @Circle dlabel { c } }
+}
+//
+@Arrow from { A } to { B } ylabel { 10 }
+@Arrow from { A } to { C } ylabel { 15 }
+@Arrow from { B } to { C } ylabel { 20 }
+}
+Each node may have up to four labels, called {@Code alabel}, {@Code blabel},
+diagrams. @RawIndex { diagrams }
+diagrams.alabel @SubIndex { @Code "alabel" option }
+alabel.diagrams @Index { @Code "alabel" option (diagrams) }
+diagrams. @RawIndex { diagrams }
+diagrams.blabel @SubIndex { @Code "blabel" option }
+blabel.diagrams @Index { @Code "blabel" option (diagrams) }
+diagrams. @RawIndex { diagrams }
+diagrams.clabel @SubIndex { @Code "clabel" option }
+clabel.diagrams @Index { @Code "clabel" option (diagrams) }
+diagrams. @RawIndex { diagrams }
+diagrams.dlabel @SubIndex { @Code "dlabel" option }
+dlabel.diagrams @Index { @Code "dlabel" option (diagrams) }
+{@Code clabel}, and {@Code dlabel}:
+@ID {
+@Code @Verbatim {
+@Ellipse
+ alabel { a }
+ blabel { b }
+ clabel { c }
+ dlabel { d }
+{ Hello, world }
+}
+||7ct
+@VContract @Diag {
+@Ellipse
+ alabel { a }
+ blabel { b }
+ clabel { c }
+ dlabel { d }
+{ Hello, world }
+}
+}
+Links also have labels, five in fact:
+diagrams. @RawIndex { diagrams }
+diagrams.fromlabel @SubIndex { @Code "fromlabel" option }
+fromlabel.diagrams @Index { @Code "fromlabel" option (diagrams) }
+diagrams. @RawIndex { diagrams }
+diagrams.xlabel @SubIndex { @Code "xlabel" option }
+xlabel.diagrams @Index { @Code "xlabel" option (diagrams) }
+diagrams. @RawIndex { diagrams }
+diagrams.ylabel @SubIndex { @Code "ylabel" option }
+ylabel.diagrams @Index { @Code "ylabel" option (diagrams) }
+diagrams. @RawIndex { diagrams }
+diagrams.zlabel @SubIndex { @Code "zlabel" option }
+zlabel.diagrams @Index { @Code "zlabel" option (diagrams) }
+diagrams. @RawIndex { diagrams }
+diagrams.tolabel @SubIndex { @Code "tolabel" option }
+tolabel.diagrams @Index { @Code "tolabel" option (diagrams) }
+@ID {
+@Code @Verbatim {
+@Link
+ fromlabel { f }
+ xlabel { x }
+ ylabel { y }
+ zlabel { z }
+ tolabel { t }
+}
+||7ct
+@VContract @Diag {
+3c @Wide 1c @High
+//
+@Link
+ from { 0 0 }
+ to { 1,1 }
+ fromlabel { f }
+ xlabel { x }
+ ylabel { y }
+ zlabel { z }
+ tolabel { t }
+}
+}
+The {@Code fromlabel} and {@Code tolabel} options are positioned directly
+over the endpoints of the link, and {@Code fromlabel} is by default printed
+at a funny angle, because these labels are the means of attaching
+arrowheads to links:
+@ID {
+@Code @Verbatim {
+@Link
+ tolabel { @SolidArrowHead }
+}
+||7ct
+@VContract @Diag {
+3c @Wide 1c @High
+//
+@Link
+ from { 0 0 }
+ to { 1,1 }
+ tolabel { @SolidArrowHead }
+}
+}
+@Code "@SolidArrowHead" is a symbol, available for use anywhere, whose
+value is an object in the shape of a small solid arrowhead. The arrowhead
+options of Section {@NumberOf dia_link} work by setting {@Code fromlabel}
+and {@Code tolabel} in exactly this way. Usually it is best to forget
+about {@Code fromlabel} and {@Code tolabel}, and think of links as having
+just {@Code xlabel} near the start, {@Code ylabel} in the middle, and
+{@Code zlabel} near the end; but when you need different arrowheads, or
+arrowheads in a different colour from the rest of the arrow:
+@ID {
+@Code @Verbatim {
+@Link
+ tolabel { red @Colour @SolidArrowHead }
+}
+||9ct
+@VContract @Diag {
+3c @Wide 1c @High
+//
+@Link
+ from { 0 0 }
+ to { 1,1 }
+ tolabel { red @Colour @SolidArrowHead }
+}
+}
+{@Code fromlabel} and {@Code tolabel} are the answer.
+@PP
+Adding a label will not change the size of the diagram or the position
+of any node, link, or other label. Although a label may be an arbitrary
+object, it is treated as having zero size and will overstrike anything
+that happens to be where it wants to go.
+@PP
+There are options for controlling the appearance and position of
+labels. These are described below mainly for {@Code alabel}, but there
+are corresponding options for all nine labels.
+@PP
+The {@Code alabelfont} and {@Code alabelbreak} options determine the
+diagrams. @RawIndex { diagrams }
+diagrams.labelfont @SubIndex { @Code "labelfont" options }
+labelfont. @RawIndex { @Code "labelfont" options }
+labelfont.in.diagrams @SubIndex { in diagrams }
+diagrams. @RawIndex { diagrams }
+diagrams.labelbreak @SubIndex { @Code "labelbreak" options }
+labelbreak. @RawIndex { @Code "labelbreak" options }
+labelbreak.in.diagrams @SubIndex { in diagrams }
+font and paragraph breaking style of the label:
+@ID {
+@Code @Verbatim {
+@Ellipse
+ alabel { a }
+ alabelfont { -2p }
+ alabelbreak { ragged nohyphen }
+{ Hello, world }
+}
+||7ct
+@VContract @Diag {
+@Ellipse
+ alabel { a }
+ alabelfont { -2p }
+ alabelbreak { ragged nohyphen }
+{ Hello, world }
+}
+}
+This example shows the default values of these two options; @Code "-2p"
+explains why the labels in earlier examples were printed in a smaller
+font size. There is also an {@Code alabelformat} option which allows
+diagrams. @RawIndex { diagrams }
+diagrams.labelformat @SubIndex { @Code "labelformat" options }
+labelformat. @RawIndex { @Code "labelformat" options }
+labelformat.in.diagrams @SubIndex { in diagrams }
+for more radical changes in appearance:
+@ID {
+@Code @Verbatim {
+@Ellipse
+ alabel { a }
+ alabelformat { @Box @I @Body }
+{ Hello, world }
+}
+||7ct
+@Diag {
+//0.5c
+@Ellipse
+ alabel { a }
+ alabelformat { @Box @I @Body }
+{ Hello, world }
+}
+}
+The value attached to the ellipse will be the value of {@Code alabelformat},
+with any @Code "@Body" symbol within it replaced by the value of the
+{@Code alabel} option. This example produces boxed italic labels.
+@PP
+Nodes also have {@Code nodelabelfont}, {@Code nodelabelbreak}, and
+{@Code nodelabelformat} options which work in the same way but affect all
+of the node labels, not just one:
+@ID {
+@Code @Verbatim {
+@Ellipse
+ nodelabelformat
+ { @Box @I @Body }
+ alabel { a }
+ blabel { b }
+{ Hello, world }
+}
+||7ct
+@Diag {
+//0.5c
+@Ellipse
+ nodelabelformat { @Box @I @Body }
+ alabel { a }
+ blabel { b }
+{ Hello, world }
+}
+}
+Links similarly have {@Code linklabelfont}, {@Code linklabelbreak}, and
+{@Code linklabelformat} options which affect all the link labels
+(except {@Code fromlabel} and {@Code tolabel}, since that would produce
+results that people do not expect.) The @Code "@Diag" symbol also has
+these options, in the usual way, and they are extremely useful there:
+@ID {
+@Code @Verbatim {
+@Diag
+ nodelabelfont { Slope -2p }
+ linklabelformat { "/"@Body"/" }
+ hsize { 1.8c }
+{
+ A:: @Ellipse alabel { a } { OK }
+ @DP
+ @DP
+ B:: @Ellipse alabel { b } { FAULT }
+ //
+ @Arrow from { A } to { B } ylabel { sig }
+}
+}
+||7ct
+@VContract @Diag
+ nodelabelfont { Slope -2p }
+ linklabelformat { "/"@Body"/" }
+ hsize { 1.8c }
+{
+ A:: @Ellipse alabel { a } { OK }
+ @DP
+ @DP
+ B:: @Ellipse alabel { b } { FAULT }
+ //
+ @Arrow from { A } to { B } ylabel { sig }
+}
+}
+These settings specify that every node label will be set in italics,
+two points smaller than the surrounding text, and that every link label
+will appear between two @Code "/" characters, also two points smaller
+because the default value of @Code "linklabelfont" still applies. Of
+course, it remains open to any node or link to override these settings
+by supplying its own label options.
+@PP
+The remaining five label options, {@Code alabelpos}, {@Code alabelangle},
+{@Code alabelprox}, {@Code alabelmargin}, {@Code alabelctr}, and
+{@Code alabeladjust},
+affect the position of the label. Don't be daunted by the number of
+options. As previous examples have shown, they all have sensible
+default values and thus need to be set only rarely.
+@PP
+Each label inhabits its own characteristic region of the node or
+link: {@Code alabel} in the north-east corner of the node,
+{@Code ylabel} halfway along the link, and so on. This general
+location of the label is defined by the {@Code alabelpos} option. Here
+diagrams. @RawIndex { diagrams }
+diagrams.labelpos @SubIndex { @Code "labelpos" options }
+labelpos.diagrams @Index { @Code "labelpos" options (diagrams) }
+are the default values for all nine labels:
+@IL
+@LI {
+@Code @Verbatim {
+@Node
+ alabelpos { NE }
+ blabelpos { NW }
+ clabelpos { SW }
+ dlabelpos { SE }
+}
+||7ct
+@VContract @Diag {
+//0.5f
+@ShowTags @Ellipse { 3c @Wide 2c @High }
+}
+}
+@LI {
+@Code @Verbatim {
+@Link
+ fromlabelpos { FROM }
+ xlabelpos { LFROM }
+ ylabelpos { LMID }
+ zlabelpos { LTO }
+ tolabelpos { TO }
+}
+||7ct
+@VContract @Diag {
+//1.0f
+2c @Wide 2.2c @High
+//
+@ShowTags @Link
+ from { 0,0.7 }
+ to { 1,0 }
+ # tolabel { @SolidArrowHead }
+}
+}
+@EL
+Thus, by changing @Code clabelpos to @Code S you can move the position
+of the @Code clabel label to beneath the node. You can do this for every
+node by setting this option in the @Code "@Diag" symbol, as was done for
+the formatting options above.
+@PP
+In a similar vein, there is an @Code { xindent } option which controls how
+diagrams. @RawIndex { diagrams }
+diagrams.xindent @SubIndex { @Code "xindent" option }
+xindent.diagrams @Index { @Code "xindent" option (diagrams) }
+far from the start of the link the @Code "LFROM" tag, and hence the
+{@Code xlabel}, will appear. A similar option, @Code { zindent }, determines
+diagrams. @RawIndex { diagrams }
+diagrams.zindent @SubIndex { @Code "zindent" option }
+zindent.diagrams @Index { @Code "zindent" option (diagrams) }
+how far from the end of the link the @Code "LTO" tag and hence the
+{@Code zlabel} will appear:
+@ID {
+@Code @Verbatim {
+@Link
+ xindent { 1f }
+ zindent { 2f }
+}
+||7ct
+@VContract @Diag {
+//1f
+2c @Wide 1.2c @High
+//
+@ShowTags @Link
+ xindent { 1f }
+ zindent { 2f }
+ from { 0,0.7 }
+ to { 1,0 }
+}
+}
+Both options have default value {@Code 0.8f}.
+@PP
+The @Code alabelangle option determines the angle at which the label is
+diagrams. @RawIndex { diagrams }
+diagrams.labelangle @SubIndex { @Code "labelangle" options }
+labelangle.diagrams @Index { @Code "labelangle" options (diagrams) }
+printed:
+@ID @Tab
+ @Fmta { @Col @Code A ! @Col B }
+{
+@Rowa
+ A { "alabelangle { horizontal }" }
+ B { Horizontal (the default) }
+@Rowa
+ A { "alabelangle { aligned }" }
+ B { Aligned with the node outline or link path }
+@Rowa
+ A { "alabelangle { perpendicular }" }
+ B { Perpendicular to the outline or link path }
+}
+The @Code "alabelprox" option determines where in the proximity of
+diagrams. @RawIndex { diagrams }
+diagrams.labelprox @SubIndex { @Code "labelprox" options }
+labelprox.diagrams @Index { @Code "labelprox" options (diagrams) }
+@Code alabelpos the label is printed:
+@ID @Tab
+ @Fmta { @Col @Code A ! @Col B }
+{
+@Rowa
+ A { "alabelprox { above }" }
+ B { Above the node outline or link path (the default for link labels) }
+@Rowa
+ A { "alabelprox { below }" }
+ B { Below the node outline or link path }
+@Rowa
+ A { "alabelprox { left }" }
+ B { To the left of the node outline or link path }
+@Rowa
+ A { "alabelprox { right }" }
+ B { To the right of the node outline or link path }
+@Rowa
+ A { "alabelprox { inside }" }
+ B { Inside the node outline or on the left of the link path
+going from @Code from to @Code to }
+@Rowa
+ A { "alabelprox { outside }" }
+ B { Outside the node outline or on the right of the link path
+going from @Code from to @Code to (the default for node labels) }
+}
+The {@Code alabelmargin} option adds a margin around all four sides of
+diagrams. @RawIndex { diagrams }
+diagrams.labelmargin @SubIndex { @Code "labelmargin" options }
+labelmargin. @RawIndex { @Code "labelmargin" options }
+labelmargin.in.diagrams @SubIndex { in diagrams }
+the label, thereby moving it away from {@Code alabelpos} irrespective of
+which direction it happens to lie in:
+@ID {
+@Code @Verbatim {
+@Ellipse
+ alabel { a }
+ alabelmargin { 0f }
+{ Hello, world }
+}
+||7ct
+@VContract @Diag {
+@Ellipse
+ alabel { a }
+ alabelmargin { 0f }
+{ Hello, world }
+}
+}
+The default value is {@Code 0.2f}, and so there is scope for some
+reduction as well as increase.
+@PP
+@@Diag takes careful account of the @Code alabelangle option, the
+@Code alabelprox option, the direction that the node outline or link
+path is heading, and which label it is, and places the label in a way
+that looks good nearly always. When it doesn't, the remainder of this
+section should help.
+@PP
+The @Code alabelangle option may be given an arbitrary angle, and then
+the label will be printed at that angle. There are also the special
+values @Code parallel and {@Code antiparallel}, which give the direction
+that the node outline or link path is going at that point and its
+opposite. These are the default values for @Code tolabelangle and
+@Code fromlabelangle respectively, which explains why arrowheads point the
+right way. The @Code aligned value above is one of these two angles,
+the one closest to {@Code 0d}.
+@PP
+The @Code alabelprox option may be {@Code N},
+{@Code S}, {@Code E}, {@Code W}, {@Code NE}, {@Code SE}, {@Code NW},
+{@Code SW}, {@Code NNW}, {@Code NNE}, {@Code SSW}, {@Code SSE}, or {@Code CTR}:
+@CD @Diag {
+//1f
+@ShowTags @Box margin { 0.5c } { 24p @Font grey @Colour @I label }
+}
+meaning that the indicated point of the label will coincide with
+{@Code alabelpos}. These points lie on the outside of the margins
+added by {@Code alabelmargin}.
+@PP
+The six values of @Code alabelprox given earlier (@Code { above },
+@Code { below }, etc.) all produce one of {@Code N}, {@Code S} etc. for
+their ultimate result; which one they produce depends on the direction
+the outline or link is going at that point. For example, @Code { above }
+produces @Code { SE } when the outline or link is going from northeast
+to southwest or vice versa, @Code { SW } when the outline or link is
+going from northwest to southeast and vice versa, and @Code { S } when
+it happens to be exactly horizontal. There is also a dependence
+on which label it is: for example, if it is @Code "xlabel" and the
+direction happens to be vertical, the result is {@Code "NW"}.
+@PP
+The preceding discussion is all under the assumption that the
+@Code "alabelctr" option is {@Code no}. When it is {@Code "yes"},
+a small adjustment is made to the position of the label. The selected
+corner or side midpoint of the label will no longer coincide with
+{@Code alabelpos}, although it will still lie on the straight line passing
+through {@Code alabelpos} at the angle of {@Code alabelpos}. The corner
+or side midpoint slides up or down this line to the point which
+minimises the distance from {@Code alabelpos} to the centre of the
+label. Only @Code ylabelctr has @Code "yes" for its default value; the
+diagrams. @RawIndex { diagrams }
+diagrams.labelctr @SubIndex { @Code "labelctr" options }
+labelctr.diagrams @Index { @Code "labelctr" options (diagrams) }
+@Code y label often looks better centred when this adjustment is made,
+particularly on lines with shallow but non-zero slope:
+@CD @Tab
+ @Fmta { @Col @CC A ! @Col ! @Col @CC B }
+{
+@Rowa
+ A { @Code "ylabelctr { no }" }
+ B { @Code "ylabelctr { yes }" }
+@Rowa
+@Rowa
+@Rowa
+ A { @Diag ylabelctr { no } {
+ A:: @Square //0.5c &3c B:: @Square
+ //
+ @Link from { A } to { B } ylabel { @I { ylabel } }
+ } }
+ B { @Diag ylabelctr { yes } {
+ A:: @Square //0.5c &3c B:: @Square
+ //
+ @Link from { A } to { B } ylabel { @I { ylabel } }
+ } }
+}
+since it is then the centre of the label which is centred on the link,
+rather than one of its corners.
+@PP
+Finally, when all else fails there is an {@Code alabeladjust} option
+diagrams. @RawIndex { diagrams }
+diagrams.labeladjust @SubIndex { @Code "labeladjust" options }
+labeladjust. @RawIndex { @Code "labeladjust" options }
+labeladjust.in.diagrams @SubIndex { in diagrams }
+which translates the label by an arbitrary amount:
+@ID @Code "alabeladjust { -0.5c 1.5c }"
+causes the label to appear 0.5 centimetres to the left of and 1.5 centimetres
+above the point where it otherwise would have done.
+@End @Section
diff --git a/doc/doc/user/dia_link b/doc/doc/user/dia_link
new file mode 100644
index 0000000..d20a451
--- /dev/null
+++ b/doc/doc/user/dia_link
@@ -0,0 +1,381 @@
+@Section
+ @Tag { dia_link }
+ @Title { Links }
+@Begin
+@PP
+@Code "@Diag" has one basic symbol for creating links, called
+diagrams. @RawIndex { diagrams }
+diagrams.link @SubIndex { @Code "@Link" symbol }
+link.diagrams @Index { @Code "@Link" symbol (diagrams) }
+{@Code "@Link"}. It draws a link between two points or nodes
+given by {@Code from} and {@Code to} options, along a path
+diagrams. @RawIndex { diagrams }
+diagrams.from @SubIndex { @Code "from" option }
+from.diagrams @Index { @Code "from" option (diagrams) }
+diagrams. @RawIndex { diagrams }
+diagrams.to @SubIndex { @Code "to" option }
+to.diagrams @Index { @Code "to" option (diagrams) }
+given by a {@Code path} option:
+diagrams. @RawIndex { diagrams }
+diagrams.path @SubIndex { @Code "path" option }
+path.diagrams @Index { @Code "path" option (diagrams) }
+@ID @OneRow @Code @Verbatim {
+@Link
+ path { ... }
+ from { ... }
+ to { ... }
+}
+Unlike {@Code "@Node"}, {@Code "@Link"} has no following object.
+@PP
+The @Code "path" option may be used to produce a link of any shape, as
+Section {@NumberOf dia_defi} explains. There are also values
+that produce standard paths. These are listed in full in the summary
+(Section {@NumberOf dia_summ}). Here is a sample:
+@ID @Tab
+ @Fmta { @Col @Code { path "{" A "}" } ! @Col ! @Col B !
+ @Col 0.5c @Wide ! @Col @Code { path "{" C "}" } ! @Col ! @Col D
+ }
+{
+
+@Rowa
+ A { line }
+ B {
+@Diag {
+A:: @Circle //1c ||2c B:: @Circle
+// @Link from { A } to { B } path { line } arrow { yes }
+}
+}
+ C { acurve }
+ D {
+@Diag {
+A:: @Circle //1c ||2c B:: @Circle
+// @Link from { A } to { B } path { acurve } arrow { yes }
+}
+}
+
+@Rowa
+ A { rvlcurve }
+ B {
+@Diag {
+A:: @Circle //1c ||2c B:: @Circle
+// @Link from { A } to { B } path { rvlcurve } arrow { yes }
+}
+}
+ C { ccurve }
+ D {
+@Diag {
+A:: @Circle //1c ||2c B:: @Circle
+// @Link from { A } to { B } path { ccurve } arrow { yes }
+}
+}
+
+}
+The name @Code rvlcurve is a reminder that the curve goes right, then
+vertically, then left, with curved corners. The @Code acurve and
+@Code ccurve values produce circular arcs, anticlockwise or clockwise,
+lying on the circle passing through the endpoints, or through the
+centres of the endpoints when they are tags denoting nodes. There
+is also @Code "curve" which is an abbreviation for {@Code "acurve"}.
+All these standard paths are defined in a way that makes sense no matter
+where the two nodes are relative to each other, except that no promise
+of a sensible result is made for two nodes very close together.
+@PP
+@Code "@Link" has two options, @Code bias and {@Code radius}, that may be
+diagrams. @RawIndex { diagrams }
+diagrams.bias @SubIndex { @Code "bias" option }
+bias.diagrams @Index { @Code "bias" option (diagrams) }
+diagrams. @RawIndex { diagrams }
+diagrams.radius @SubIndex { @Code "radius" option }
+radius. @RawIndex { @Code "radius" option }
+radius.in.diagrams @SubIndex { in diagrams }
+used to fine-tune the path. The @Code "bias" option determines the
+maximum distance that a curve is permitted to stray:
+@CD @Tab
+ @Fmta { @Col A ! @Col ! @Col B }
+{
+
+@Rowa
+
+ A { @Diag vstrut { no } margin { 0.5c } {
+A:: @Circle //1.5c ||2c B:: @Circle
+//
+LA:: @Line pathstyle { cdashed } from { A } to { B }
+LB:: @Curve from { A } to { B }
+@Line arrow { both } from { LA@LMID } to { LB@LMID }
+ ylabel { @I bias } # ylabeladjust { 0.15c 0 }
+} }
+
+ B { @Diag vstrut { no } margin { 0.5c } {
+A:: @Circle //1.5c ||2c B:: @Circle
+//
+LA:: @RVLCurve from { A } to { B }
+LB:: @Line pathstyle { cdashed } from { B@E } to { B@E ++ {0 2.5c} }
+@Line arrow { both } from { LB@LMID } to { LA@LMID }
+ ylabel { @I bias } ylabeladjust { 0 0.05c }
+} }
+
+}
+The @Code radius option does @I not apply to @Code acurve and
+{@Code ccurve}; rather, it determines the radius of the arcs at
+the corners of @Code rvlcurve and its kin. A very large radius will be
+reduced to the largest reasonable value, which provides a way to get
+a semicircle at the right in an {@Code rvlcurve}.
+@PP
+Lout has no idea where the path is wandering, and cannot take it into
+account when placing a diagram on the page:
+@ID {
+@Code @Verbatim {
+@Link
+ path { acurve }
+ bias { 2c }
+}
+||7ct
+@Diag vstrut { no } {
+A:: @Circle &3c B:: @Circle
+//
+@Link path { acurve } bias { 2c } from { A } to { B }
+}
+}
+In such cases you have to arrange for the extra space yourself, by adding
+an extra paragraph symbol, blank row or column in a table, or whatever.
+@PP
+As with {@Code "@Node"} options, {@Code "@Link"} options may all be
+given to {@Code "@Diag"} as well, where they apply to every link in
+the diagram, unless overridden in the usual way. They also appear
+in the setup file, where they apply to every link in every diagram
+of the document, unless overridden.
+@PP
+There are {@Code pathstyle}, {@Code pathdashlength}, {@Code pathwidth},
+and {@Code pathcolour} (alternative name {@Code pathcolor})
+diagrams. @RawIndex { diagrams }
+diagrams.pathstyle @SubIndex { @Code "pathstyle" option }
+pathstyle.diagrams @Index { @Code "pathstyle" option (diagrams) }
+diagrams. @RawIndex { diagrams }
+diagrams.pathdashlength @SubIndex { @Code "pathdashlength" option }
+pathdashlength.diagrams @Index { @Code "pathdashlength" option (diagrams) }
+diagrams. @RawIndex { diagrams }
+diagrams.pathwidth @SubIndex { @Code "pathwidth" option }
+pathwidth.diagrams @Index { @Code "pathwidth" option (diagrams) }
+diagrams.pathcolour @SubIndex { @Code "pathcolour" option }
+pathcolour.diagrams @Index { @Code "pathcolour" option (diagrams) }
+options which affect the path's appearance like the
+{@Code outlinestyle}, {@Code outlinedashlength}, {@Code outlinewidth},
+and {@Code outlinecolour} options of {@Code "@Node"} affect its outline.
+Here they are with their default values:
+@ID {
+@Code @Verbatim {
+@Link
+ pathstyle { solid }
+ pathdashlength { 0.2f }
+ pathwidth { thin }
+ pathcolour { nochange }
+}
+}
+When {@Code pathstyle} contains just one value (as opposed to a sequence
+of values) @Code "@Diag" tries to divide the path into fewer segments
+than it would otherwise, to make dashed and dotted paths look as good
+as possible. There is also a {@Code pathgap} option which affects only
+@Code doubleline paths; it
+diagrams. @RawIndex { diagrams }
+diagrams.pathgap @SubIndex { @Code "pathgap" option }
+pathgap.diagrams @Index { @Code "pathgap" option (diagrams) }
+determines the gap between the centres of the two lines.
+@PP
+The @Code "@Link" symbol has an @Code arrow option, which adds an
+diagrams. @RawIndex { diagrams }
+diagrams.arrow.opt @SubIndex { @Code "arrow" option }
+arrow.opt.diagrams @Index { @Code "arrow" option (diagrams) }
+arrowhead to the end of the link:
+@ID {
+@Code @Verbatim {
+@Link
+ arrow { yes }
+}
+||7ct
+@Diag {
+1c @High 3c @Wide
+//
+@Link
+ from { 0,0 }
+ to { 1,1 }
+ arrow { yes }
+}
+}
+Its value may be {@Code no} (the default), {@Code yes}, {@Code forward}
+(which is the same as {@Code yes}), {@Code back}, or {@Code both}:
+@ID {
+@Code @Verbatim {
+@Link
+ arrow { both }
+ pathcolour { green }
+}
+||7ct
+@Diag {
+1c @High 3c @Wide
+//
+@Link
+ from { 0,0 }
+ to { 1,1 }
+ arrow { both }
+ pathcolour { green }
+}
+}
+To colour the arrowheads differently you need {@Code fromlabel} and
+{@Code tolabel}, described in Section {@NumberOf dia_labe}. Colouring
+a link using `{@Code "green @Colour @Link ..."}' works too; it also
+colours the link's labels.
+@PP
+@Code "@Link" offers {@Code arrowstyle}, {@Code arrowwidth}, and
+{@Code arrowlength} options for changing the appearance of the
+arrowheads. For
+diagrams. @RawIndex { diagrams }
+diagrams.arrowstyle @SubIndex { @Code "arrowstyle" option }
+arrowstyle.diagrams @Index { @Code "arrowstyle" option (diagrams) }
+diagrams. @RawIndex { diagrams }
+diagrams.arrowwidth @SubIndex { @Code "arrowwidth" option }
+arrowwidth.diagrams @Index { @Code "arrowwidth" option (diagrams) }
+diagrams. @RawIndex { diagrams }
+diagrams.arrowlength @SubIndex { @Code "arrowlength" option }
+arrowlength.diagrams @Index { @Code "arrowlength" option (diagrams) }
+consistency it is usually best to set the corresponding options to
+the @Code "@Diag" symbol, which applies them to every arrow in the
+diagram:
+@ID @OneRow @Code @Verbatim {
+@Diag
+ arrowstyle { solid }
+ arrowwidth { 0.3f }
+ arrowlength { 0.5f }
+{
+ ...
+}
+}
+This shows the default values: a solid arrowhead like the ones above,
+@Code "0.3f" wide (across) and @Code "0.5f" long. The @Code "arrowwidth"
+and @Code "arrowlength" options may be any length; it may be necessary to
+decrease @Code "arrowwidth" when many arrows enter one node. The full list
+of possible values for @Code "arrowstyle" is
+@ID @Tab
+ @Fmta { @Col @Code { "arrowstyle {" A "}" } ! @Col B }
+ vmargin { 1.0vx }
+{
+@Rowa
+ A { solid }
+ B { @Diag vstrut { no } { A:: @Circle |2c B:: @Circle
+ // @Link from { A } to { B } arrow { yes } arrowstyle { solid } } }
+@Rowa
+ A { solidwithbar }
+ B { @Diag vstrut { no } { A:: @Circle |2c B:: @Circle
+ // @Link from { A } to { B } arrow { yes } arrowstyle { solidwithbar } } }
+@Rowa
+ A { halfopen }
+ B { @Diag vstrut { no } { A:: @Circle |2c B:: @Circle
+ // @Link from { A } to { B } arrow { yes } arrowstyle { halfopen } } }
+@Rowa
+ A { open }
+ B { @Diag vstrut { no } { A:: @Circle |2c B:: @Circle
+ // @Link from { A } to { B } arrow { yes } arrowstyle { open } } }
+@Rowa
+ A { curvedsolid }
+ B { @Diag vstrut { no } { A:: @Circle |2c B:: @Circle
+ // @Link from { A } to { B } arrow { yes } arrowstyle { curvedsolid } } }
+@Rowa
+ A { curvedhalfopen }
+ B { @Diag vstrut { no } { A:: @Circle |2c B:: @Circle
+ // @Link from { A } to { B } arrow { yes } arrowstyle { curvedhalfopen } } }
+@Rowa
+ A { curvedopen }
+ B { @Diag vstrut { no } { A:: @Circle |2c B:: @Circle
+ // @Link from { A } to { B } arrow { yes } arrowstyle { curvedopen } } }
+@Rowa
+ A { circle }
+ B { @Diag vstrut { no } { A:: @Circle |2c B:: @Circle
+ // @Link from { A } to { B } arrow { yes } arrowstyle { circle } } }
+@Rowa
+ A { box }
+ B { @Diag vstrut { no } { A:: @Circle |2c B:: @Circle
+ // @Link from { A } to { B } arrow { yes } arrowstyle { box } } }
+@Rowa
+ A { many }
+ B { @Diag vstrut { no } { A:: @Circle |2c B:: @Box
+ // @Link from { A } to { B } arrow { yes } arrowstyle { many } } }
+}
+The reader is invited to admire the beautifully sharp points on these
+arrowheads.
+@FootNote {
+The outlines of all nodes and arrowheads are drawn on the inside of the
+geometrical curve defining them, not centred over the curve as is common in
+PostScript documents. Hence, the arrowheads and node outlines intersect at
+a true geometrical point; they do not overlap by one line width. Furthermore,
+the standard link paths terminate at the base of the arrowhead, not at
+the point; the arrowhead itself is responsible for continuing the link
+path, at the appropriate width (although never dashed or dotted), from its
+base to its point, and hence can and does ensure that the link path does
+not overstrike and thicken the point of the arrow.
+} &2s
+The arrow with style @Code solidwithbar has a bar at the tip of the
+arrowhead, whose length equals the width of the arrow and whose
+width is {@Code pathwidth}, like this:
+@ID @Diag {
+A:: @Box margin { 0i } outlinestyle { noline } 3c @Wide
+//
+@Link from { A@W } to { A@CTR } arrow { forward } arrowstyle { solidwithbar }
+@Link from { A@CTR } to { A@E } arrow { back } backarrowstyle { solidwithbar }
+}
+This example shows that half of the bar extends beyond the area
+allocated to the arrow, so that if two of these arrows meet from
+opposite directions, their bars will exactly overstrike.
+@PP
+Corresponding with {@Code arrowstyle}, {@Code arrowwidth}, and
+{@Code arrowlength}, there are {@Code backarrowstyle},
+{@Code backarrowwidth}, and {@Code backarrowlength} options which
+diagrams. @RawIndex { diagrams }
+diagrams.backarrowstyle @SubIndex { @Code "backarrowstyle" option }
+backarrowstyle.diagrams @Index { @Code "backarrowstyle" option (diagrams) }
+diagrams. @RawIndex { diagrams }
+diagrams.backarrowwidth @SubIndex { @Code "backarrowwidth" option }
+backarrowwidth.diagrams @Index { @Code "backarrowwidth" option (diagrams) }
+diagrams. @RawIndex { diagrams }
+diagrams.backarrowlength @SubIndex { @Code "backarrowlength" option }
+backarrowlength.diagrams @Index { @Code "backarrowlength" option (diagrams) }
+determine the style and size of the back arrow; it doesn't have
+to be the same style or size as the forward arrow:
+@ID {
+@Code @Verbatim {
+@Link
+ arrow { both }
+ backarrowstyle { circle }
+}
+||7ct
+@Diag {
+1c @High 3c @Wide
+//
+@Link
+ from { 0,0 }
+ to { 1,1 }
+ arrow { both }
+ backarrowstyle { circle }
+}
+}
+It is also possible to place an arbitrary object at the beginning or
+end of a link, using the @Code "fromlabel" and @Code "tolabel" options
+of Section {@NumberOf dia_labe}.
+@PP
+@Code "@Diag" offers link symbols which are just @Code "@Link" with
+one of the standard paths already set: {@Code "@Line"},
+{@Code "@Curve"}, {@Code "@CCurve"},
+diagrams. @RawIndex { diagrams }
+diagrams.line @SubIndex { @Code "@Line" symbol }
+line.diagrams @Index { @Code "@Line" symbol (diagrams) }
+diagrams. @RawIndex { diagrams }
+diagrams.curve @SubIndex { @Code "@Curve" symbol }
+curve.diagrams @Index { @Code "@Curve" symbol (diagrams) }
+{@Code "@RVLCurve"}, and so on. There are also symbols in which
+the @Code "arrow" option is set to @Code yes as well: {@Code "@Arrow"},
+diagrams. @RawIndex { diagrams }
+diagrams.arrow.sym @SubIndex { @Code "@Arrow" symbol }
+arrow.sym.diagrams @Index { @Code "@Arrow" symbol (diagrams) }
+{@Code "@CurveArrow"}, {@Code "@CCurveArrow"}, {@Code "@RVLCurveArrow"},
+and so on. See the summary (Section {@NumberOf dia_summ}) for the
+full list of these symbols. You will still need the @Code "arrow" option
+to get backward arrows and double-ended arrows.
+@End @Section
diff --git a/doc/doc/user/dia_node b/doc/doc/user/dia_node
new file mode 100644
index 0000000..af72196
--- /dev/null
+++ b/doc/doc/user/dia_node
@@ -0,0 +1,721 @@
+@Section
+ @Tag { dia_node }
+ @Title { Nodes }
+@Begin
+@PP
+@Code "@Diag" has one basic symbol for creating nodes. It is called
+diagrams. @RawIndex { diagrams }
+diagrams.node @SubIndex { @Code "@Node" symbol }
+node.diagrams @Index { @Code "@Node" symbol (diagrams) }
+{@Code "@Node"}, and it takes the following object and encloses it in an
+outline whose shape is determined by the {@Code "outline"} option:
+diagrams. @RawIndex { diagrams }
+diagrams.outline @SubIndex { @Code "outline" option }
+outline.diagrams @Index { @Code "outline" option (diagrams) }
+@ID {
+@Code @Verbatim {
+@Node
+ outline { curvebox }
+{ Hello, world }
+}
+||7ct
+@Diag {
+@Node
+ outline { curvebox }
+{ Hello, world }
+}
+}
+As Section {@NumberOf dia_defi} explains, the @Code outline option may be
+used to produce an outline of any shape. There are also nine values that
+produce standard shapes: {@Code box}, {@Code curvebox}, {@Code shadowbox},
+{@Code square}, {@Code diamond}, {@Code polygon}, {@Code isosceles},
+{@Code ellipse}, and {@Code circle}.
+@PP
+The shape of the outline is determined by the @Code outline option, but
+its size and position depend on the size and position of its
+{@I base}: the following object with a small margin around it. For
+diagrams. @RawIndex { diagrams }
+diagrams.base @SubIndex { base of a node }
+base.diagrams @Index { base of a node in diagrams }
+example, this is how a circle is positioned over its base (shown in
+grey):
+@ID @OneRow {
+@Code @Verbatim {
+@Node
+ outline { circle }
+{ Hello, world }
+}
+||7ct
+@Diag {
+@Box paint { lightgrey } outlinestyle { noline } margin { 0c }
+@Node
+ outline { circle }
+{ Hello, world }
+}
+}
+Lout works only with the base, having no idea where the outline is, which
+explains why this circle is too high for the space allowed
+it. Section {@NumberOf dia_summ} shows how each of the standard
+outlines is positioned over its base.
+@PP
+The @Code "@Node" symbol has many options. They all share a very
+useful property: they may be given to the @Code "@Diag" symbol
+as well, where they apply to every node in the diagram:
+@ID @OneRow {
+@Code @Verbatim {
+@Diag
+ outline { circle }
+{
+ @Node @I a
+ @DP
+ @Node @I b
+}
+}
+||7ct
+@Diag
+ outline { circle }
+{
+ @Node @I a
+ @DP
+ @Node @I b
+}
+}
+These options also appear in the setup file ({@Code diag});
+if set there, they apply to every node in every diagram of the
+document. As the number of nodes increases, it becomes very tedious and
+error-prone to duplicate options at all the nodes. Giving each option
+just once, at the @Code "@Diag" symbol or in the setup file, saves time
+and makes it easy to change all the nodes into squares or any other shape
+later on. Any setup file option may be overridden in a diagram by giving
+the option to its @Code "@Diag" symbol; any @Code "@Diag" option or setup
+file option may be overridden at any node by giving the option again there.
+@PP
+Sometimes a diagram contains several different node types, each with
+its own combination of options (for example, the syntax diagrams of
+Section {@NumberOf dia_synt} have three node types). To handle these
+cases there are five alternative versions of the @Code "@Node"
+symbol, called {@Code "@ANode"},
+diagrams. @RawIndex { diagrams }
+diagrams.anode @SubIndex { @Code "@ANode" symbol }
+anode.diagrams @Index { @Code "@ANode" symbol (diagrams) }
+{@Code "@BNode"},
+diagrams. @RawIndex { diagrams }
+diagrams.bnode @SubIndex { @Code "@BNode" symbol }
+bnode.diagrams @Index { @Code "@BNode" symbol (diagrams) }
+{@Code "@CNode"},
+diagrams. @RawIndex { diagrams }
+diagrams.cnode @SubIndex { @Code "@CNode" symbol }
+cnode.diagrams @Index { @Code "@CNode" symbol (diagrams) }
+{@Code "@DNode"},
+diagrams. @RawIndex { diagrams }
+diagrams.dnode @SubIndex { @Code "@DNode" symbol }
+dnode.diagrams @Index { @Code "@DNode" symbol (diagrams) }
+and
+diagrams. @RawIndex { diagrams }
+diagrams.enode @SubIndex { @Code "@ENode" symbol }
+enode.diagrams @Index { @Code "@ENode" symbol (diagrams) }
+{@Code "@ENode"}. These have exactly the same options as
+{@Code "@Node"}, but the @I default values of these options
+are different, in that they come from @Code "@Diag" options,
+or else setup file options, that have an extra letter in front
+of their name: @Code { a }, @Code { b }, @Code { c },
+@Code { d }, or @Code { e }. Here is a small example (see later
+in this section for the @Code font option):
+@ID @OneRow {
+@Code @Verbatim {
+@Diag
+ aoutline { box }
+ afont { Italic }
+ boutline { curvebox }
+ bfont { Bold }
+{
+ @ANode identifier
+ @DP
+ @BNode keyword
+}
+}
+||7ct
+@Diag
+ aoutline { box }
+ afont { Italic }
+ boutline { curvebox }
+ bfont { Bold }
+{
+ @ANode identifier
+ @DP
+ @BNode keyword
+}
+}
+When giving an option directly to {@Code "@ANode"}, {@Code "@BNode"},
+{@Code "@CNode"}, {@Code "@DNode"}, and {@Code "@ENode"}, the initial
+@Code { a }, @Code { b }, @Code { c }, @Code { d }, or @Code { e }
+used with @Code "@Diag" and in the setup file is omitted.
+@PP
+To save time in simple cases, @Code "@Diag" provides nine other
+node symbols:
+{@Code "@Box"},
+diagrams. @RawIndex { diagrams }
+diagrams.box @SubIndex { @Code "@Box" symbol }
+boxzzz.diagrams @Index { @Code "@Box" symbol (diagrams) }
+{@Code "@CurveBox"},
+diagrams. @RawIndex { diagrams }
+diagrams.curvebox @SubIndex { @Code "@CurveBox" symbol }
+curvebox.diagrams @Index { @Code "@CurveBox" symbol (diagrams) }
+{@Code "@ShadowBox"},
+diagrams. @RawIndex { diagrams }
+diagrams.shadowbox @SubIndex { @Code "@ShadowBox" symbol }
+shadowbox.diagrams @Index { @Code "@ShadowBox" symbol (diagrams) }
+{@Code "@Square"},
+diagrams. @RawIndex { diagrams }
+diagrams.square @SubIndex { @Code "@Square" symbol }
+square.diagrams @Index { @Code "@Square" symbol (diagrams) }
+{@Code "@Diamond"},
+diagrams. @RawIndex { diagrams }
+diagrams.diamond @SubIndex { @Code "@Diamond" symbol }
+diamond.diagrams @Index { @Code "@Diamond" symbol (diagrams) }
+{@Code "@Polygon"},
+diagrams. @RawIndex { diagrams }
+diagrams.polygon @SubIndex { @Code "@Polygon" symbol }
+{@Code "@Isosceles"},
+diagrams. @RawIndex { diagrams }
+diagrams.isosceles @SubIndex { @Code "@Isosceles" symbol }
+isosceles.diagrams @Index { @Code "@Isosceles" symbol (diagrams) }
+{@Code "@Ellipse"},
+diagrams. @RawIndex { diagrams }
+diagrams.ellipse @SubIndex { @Code "@Ellipse" symbol }
+ellipse.diagrams @Index { @Code "@Ellipse" symbol (diagrams) }
+diagrams. @RawIndex { diagrams }
+diagrams.circle @SubIndex { @Code "@Circle" symbol }
+circle.diagrams @Index { @Code "@Circle" symbol (diagrams) }
+and {@Code "@Circle"}. These are just abbreviations for @Code "@Node"
+with its {@Code outline} option set, nothing more. They take the
+same options as {@Code "@Node"} (except that @Code outline is
+already fixed), and everything works in the same way.
+@PP
+There is a @Code shadow option which determines the depth of the shadow
+diagrams. @RawIndex { diagrams }
+diagrams.shadow @SubIndex { @Code "shadow" option }
+shadow.diagrams @Index { @Code "shadow" option (diagrams) }
+in shadow boxes:
+@ID {
+@Code @Verbatim {
+@Node
+ outline { shadowbox }
+ shadow { 0.4f }
+{ WARNING }
+}
+||7ct
+@Diag {
+@Node
+ outline { shadowbox }
+ shadow { 0.4f }
+{ WARNING }
+}
+}
+This example shows the default value, 0.4 times the current font
+size. For polygons there is a @Code sides option for specifying the number
+diagrams. @RawIndex { diagrams }
+diagrams.sides @SubIndex { @Code "sides" option }
+sides.diagrams @Index { @Code "sides" option (diagrams) }
+diagrams. @RawIndex { diagrams }
+diagrams.angle @SubIndex { @Code "angle" option }
+angle.diagrams @Index { @Code "angle" option (diagrams) }
+polygon.diagrams @Index { @Code "@Polygon" (diagrams) }
+of sides, and an @Code angle option for rotating the outline:
+@IL
+@LI {
+@Code @Verbatim {
+@Polygon
+ sides { 5 }
+}
+||7ct
+@Diag {
+@Polygon
+ sides { 5 }
+{ 1c @High 1c @Wide }
+}
+}
+
+@LI {
+@Code @Verbatim {
+@Polygon
+ sides { 5 }
+ angle { 0d }
+}
+||7ct
+@Diag {
+@Polygon
+ sides { 5 }
+ angle { 0d }
+{ 1c @High 1c @Wide }
+}
+}
+@EL
+Setting @Code angle to @Code 0d causes the first vertex to be placed
+directly underneath the centre, and as the angle increases, the
+position of the first vertex rotates anticlockwise. The defaults are
+3 sides and the angle that gives the polygon a
+horizontal base (i.e. 180 degrees divided by the number of sides). Thus
+the two cases with symmetry about a vertical axis are obtained by the
+default angle and @Code "0d" respectively, which is convenient. The
+{@Code "shadow"}, {@Code "sides"}, and {@Code "angle"} options may be
+given to any node, and also to {@Code "@Diag"} and in the setup file,
+where they apply to every node as usual. However, they only affect the
+appearance of shadow boxes and polygons, respectively.
+@PP
+The {@Code outlinestyle}, {@Code outlinedashlength}, {@Code outlinewidth},
+and {@Code outlinecolour} (alternative name {@Code outlinecolor})
+diagrams. @RawIndex { diagrams }
+diagrams.outlinestyle @SubIndex { @Code "outlinestyle" option }
+outlinestyle. @RawIndex { @Code "outlinestyle" option }
+outlinestyle.in.diagrams @SubIndex { in diagrams }
+diagrams. @RawIndex { diagrams }
+diagrams.outlinedashlength @SubIndex { @Code "outlinedashlength" option }
+outlinedashlength. @RawIndex { @Code "outlinedashlength" option }
+outlinedashlength.in.diagrams @SubIndex { in diagrams }
+diagrams. @RawIndex { diagrams }
+diagrams.outlinewidth @SubIndex { @Code "outlinewidth" option }
+outlinewidth. @RawIndex { @Code "outlinewidth" option }
+outlinewidth.in.diagrams @SubIndex { in diagrams }
+outlinecolour. @RawIndex { @Code "outlinecolour" option }
+outlinecolour.in.diagrams @SubIndex { in diagrams }
+options apply to any node and affect the appearance of the outline:
+@ID @OneRow {
+@Code @Verbatim {
+@CurveBox
+ outlinestyle { solid }
+ outlinedashlength { 0.2f }
+ outlinewidth { thin }
+ outlinecolour { nochange }
+{ Hello, world }
+}
+||7ct
+@Diag {
+@CurveBox
+ outlinestyle { solid }
+ outlinedashlength { 0.2f }
+ outlinewidth { thin }
+ outlinecolour { nochange }
+{ Hello, world }
+}
+}
+This example shows the default values of these options. The
+{@Code outlinestyle} option's allowed values include {@Code solid},
+{@Code dashed},
+diagrams. @RawIndex { diagrams }
+diagrams.solid @SubIndex { @Code "solid" outlines }
+solid.diagrams @Index { @Code "solid" outlines (diagrams) }
+diagrams. @RawIndex { diagrams }
+diagrams.dashed @SubIndex { @Code "dashed" outlines }
+dashed.diagrams @Index { dashed outlines (diagrams) }
+{@Code cdashed}, {@Code dotted}, and {@Code noline}.
+diagrams. @RawIndex { diagrams }
+diagrams.cdashed @SubIndex { @Code "cdashed" outlines }
+cdashed.diagrams @Index { cdashed outlines (diagrams) }
+diagrams. @RawIndex { diagrams }
+diagrams.dotted @SubIndex { @Code "dotted" outlines }
+dotted.diagrams @Index { dotted outlines (diagrams) }
+diagrams. @RawIndex { diagrams }
+diagrams.noline @SubIndex { @Code "noline" outlines }
+noline.diagrams @Index { noline outlines (diagrams) }
+There are also six values for mixing dots and dashes
+(Section {@NumberOf dia_summ}).
+@PP
+The @Code dashed option makes all dashes the same length, whereas
+@Code cdashed halves the length of the first and last dash on each
+segment, which usually looks better:
+@ID @OneRow {
+@Code @Verbatim {
+@CurveBox
+ outlinestyle { cdashed }
+{ Hello, world }
+}
+||7ct
+@Diag {
+@CurveBox
+ outlinestyle { cdashed }
+{ Hello, world }
+}
+}
+The length of dashes is {@Code outlinedashlength}, and the distance
+between dashes or dots is at most {@Code outlinedashlength},
+reduced to make the dashes or dots fit evenly.
+@PP
+The {@Code outlinestyle} option may contain a sequence of the values
+mentioned above, meaning that they are to be applied in turn to each
+segment of the outline:
+@ID @OneRow {
+@Code @Verbatim {
+@CurveBox
+ outlinestyle { solid cdashed }
+{ Hello, world }
+}
+||7ct
+@Diag {
+@CurveBox
+ outlinestyle { solid cdashed }
+{ Hello, world }
+}
+}
+If there are more segments than values, {@Code outlinestyle} cycles back
+to the first value again; this is why a single value is applied to all
+segments. Section {@NumberOf dia_summ} shows how each of the
+standard shapes is divided into segments.
+@PP
+The @Code outlinewidth option gives the width of the line, dashes,
+or dots, and may be {@Code thin}, {@Code medium}, {@Code thick}, or
+any length. The values used for {@Code thin}, {@Code medium}, and
+{@Code thick} are {@Code 0.04f}, {@Code 0.08f}, and {@Code 0.12f}.
+@PP
+The {@Code outlinecolour} (alternatively {@Code outlinecolor}) option
+determines the colour of the outline:
+@ID @OneRow {
+@Code @Verbatim {
+@CurveBox
+ outlinestyle { cdashed }
+ outlinecolour { red }
+{ Hello, world }
+}
+||7ct
+@Diag {
+@CurveBox
+ outlinestyle { cdashed }
+ outlinecolour { red }
+{ Hello, world }
+}
+}
+It may be {@Code nochange} (or empty) for the colour currently in
+use, or any colour from Section {@NumberOf colour}.
+@PP
+The node symbols of @Code "@Diag" are quite separate symbols from the
+three basic box symbols of Section {@NumberOf boxes}. Although much
+is the same, one obvious difference between the two is that to get no
+outline in those boxes you use @Code { "linewidth { none }" }, whereas
+to get no outline here you use @Code { "outlinestyle { noline }" }. The
+basic boxes can only draw the outline solid or not at all, and their
+options have been kept simple to reflect that.
+@PP
+Nodes may be painted any of the colours listed in Section
+{@NumberOf colour}, using the @Code "paint" option:
+diagrams. @RawIndex { diagrams }
+diagrams.paint @SubIndex { @Code "paint" option }
+paint. @RawIndex { @Code "paint" option }
+paint.in.diagrams @SubIndex { in diagrams }
+@ID @OneRow {
+@Code @Verbatim {
+@Box
+ paint { grey }
+@Diamond
+ outlinestyle { noline }
+ paint { white }
+{ Hello, world }
+}
+||7ct
+@Diag {
+@Box
+ paint { grey }
+@Diamond
+ outlinestyle { noline }
+ paint { white }
+{ Hello, world }
+}
+}
+In this example the object following @Code "@Box" is a diamond containing
+{@Code "Hello, world"}. The default value of @Code "paint" is {@Code none},
+a special value (not a colour) meaning `don't apply any paint'. There is
+also a @Code "texture" option which causes this paint to be applied with a
+diagrams. @RawIndex { diagrams }
+diagrams.texture @SubIndex { @Code "texture" option }
+texture.option. @RawIndex { @Code "texture" option }
+texture.option.in.diagrams @SubIndex { in diagrams }
+given texture. This works exacly like the @Code texture option described
+in Section {@NumberOf boxes}, so we'll say no more about it here.
+@PP
+When painting it is important to know what order things are done in,
+because anything put down earlier will disappear under the paint.
+This is why @Code none and @Code white are different. Painting is
+done first, then outlines, and finally the following object.
+@PP
+Each node symbol has
+@Code "font" and @Code "break" options which may be used to
+diagrams. @RawIndex { diagrams }
+diagrams.font @SubIndex { @Code "font" option }
+font.option. @RawIndex { @Code "font" option }
+font.option.in.diagrams @SubIndex { in diagrams }
+diagrams. @RawIndex { diagrams }
+diagrams.break @SubIndex { @Code "break" option }
+break. @RawIndex { @Code "break" option }
+break.diagrams @SubIndex { in diagrams }
+set the font and paragraph breaking style of the following object:
+@ID @OneRow {
+@Code @Verbatim {
+@Box
+ font { Helvetica Base }
+ break { clines }
+{
+WARNING
+DANGEROUS
+PENGUINS
+}
+}
+||7ct
+@Diag {
+@Box
+ font { Helvetica Base }
+ break { clines }
+{
+WARNING
+DANGEROUS
+PENGUINS
+}
+}
+}
+Both options have empty default values, which leave the font and break
+style unchanged. There is also a @Code "format" option for making more
+diagrams. @RawIndex { diagrams }
+diagrams.format @SubIndex { @Code "format" option }
+format.diagrams @Index { @Code "format" option (diagrams) }
+radical changes to the appearance of the following object:
+@ID @OneRow {
+@Code @Verbatim {
+@Box
+ format {
+ {0.8 1.5} @Scale @S @Body
+ }
+{
+Dangerous Penguins
+}
+}
+||7ct
+@Diag {
+@Box
+ format { { 0.8 1.5 } @Scale @S @Body }
+{
+Dangerous Penguins
+}
+}
+}
+The result is the @Code "format" option with any @Code "@Body" symbol
+within it replaced by the following object. These are very useful when
+attached to the @Code "@Diag" symbol:
+@ID @OneRow @Code @Verbatim {
+@Diag
+ font { Helvetica Base }
+ break { clines }
+ format { { 0.8 1.5 } @Scale @S @Body }
+{
+ ...
+}
+}
+since then they apply to every node, as usual, thereby eliminating
+a lot of tedious, error-prone duplication of formatting information
+at each node.
+@PP
+The @Code margin option determines the size of the margin added to
+diagrams. @RawIndex { diagrams }
+diagrams.margin @SubIndex { @Code "margin" option }
+margin.options @RawIndex { margin options }
+margin.options.in.diagrams @SubIndex { in diagrams }
+the following object:
+@ID @OneRow {
+@Code @Verbatim {
+@Box
+ margin { 0c }
+{ Hello, world }
+}
+||7ct
+@Diag {
+@Box
+ margin { 0c }
+{ Hello, world }
+}
+}
+These margins are included in the node's base (described above), so a
+larger margin enlarges the base and hence the outline as well. The
+default value of @Code margin is {@Code 0.6f} (six-tenths of the current
+font size), and so the margin will automatically increase when the font size
+does, for example in overhead transparencies.
+@PP
+The @Code margin option adds the same margin to all four sides. For
+finer control, the @Code hmargin option determines the horizontal (left
+and right) margins only, overriding {@Code margin}. Similarly, the
+@Code vmargin option determines the vertical (top and foot) margins. There
+are also {@Code leftmargin}, {@Code rightmargin},
+{@Code topmargin}, and {@Code footmargin} options which override
+{@Code margin}, {@Code hmargin}, and {@Code vmargin}.
+@PP
+When nodes appear side by side, the {@Code valign} option is
+diagrams. @RawIndex { diagrams }
+diagrams.valign @SubIndex { @Code "valign" option }
+valign.diagrams @Index { @Code "valign" option (diagrams) }
+useful for controlling their vertical position with respect to each
+other. For example,
+@ID @OneRow {
+@Code @Verbatim {
+@Diag
+ valign { foot }
+{
+@Box font { 24p } Big
+@Box font { 8p } Small
+}
+}
+||7ct
+@Diag
+ valign { foot }
+{
+@Box font { 24p } Big
+@Box font { 8p } Small
+}
+}
+causes the feet of the boxes to be aligned. In this example it is
+applied to all nodes at once, but, as usual, it can be applied to
+individual nodes as well. The value of {@Code valign} can be a
+length, which means that the point of alignment is to be that far
+down from the top of the base (including margins); or it may be
+{@Code top}, {@Code ctr}, or {@Code foot}, meaning alignment
+through the top, centre (the default value), or foot.
+@PP
+The {@Code vsize} option specifies a particular
+diagrams. @RawIndex { diagrams }
+diagrams.vsize @SubIndex { @Code "vsize" option }
+vsize.diagrams @Index { @Code "vsize" option (diagrams) }
+height for a node (not including margins):
+@ID @OneRow {
+@Code @Verbatim {
+@Diag
+ vsize { 2f }
+{
+@Box font { 24p } Big
+@Box font { 8p } Small
+}
+}
+||7ct
+@Diag
+ vsize { 2f }
+{
+@Box font { 24p } Big
+@Box font { 8p } Small
+}
+}
+The font size used when calculating @Code vsize is not affected by
+the value of any @Code font option. If the following object is too
+tall for the chosen height, Lout will print a warning message (`forced
+to enlarge {@Code "@High"}', probably) and enlarge the base.
+@PP
+There is a @Code vindent option which is effective only when @Code vsize
+diagrams. @RawIndex { diagrams }
+diagrams.vindent @SubIndex { @Code "vindent" option }
+vindent.diagrams @Index { @Code "vindent" option (diagrams) }
+is used. It controls where in the vertical space the following object
+is to appear:
+@ID @OneRow {
+@Code @Verbatim {
+@Diag
+ vsize { 3f }
+{
+@Box vindent { top } Top
+@Box Centre
+@Box vindent { foot } Foot
+}
+}
+||7ct
+@Diag
+ vsize { 3f }
+ vindent { ctr }
+{
+@Box vindent { top } Top
+@Box Centre
+@Box vindent { foot } Foot
+}
+}
+The value may be {@Code top} for at the top, {@Code ctr} (the default
+value) for in the centre, {@Code foot} for at the foot, or a length,
+meaning that far down from the top. These values are the same as
+for the @Code valign option.
+@PP
+Small discrepancies in the size of nodes can be very annoying,
+particularly when the nodes appear side by side:
+@ID @OneRow {
+@Code @Verbatim {
+@Diag
+{
+@Box Hole @Box in
+@Box my @Box pocket
+}
+}
+||7ct
+@Diag
+{
+@Box Hole @Box in
+@Box my @Box pocket
+}
+}
+These are caused by the slightly different heights of the objects within
+the nodes. Selecting a fixed vertical size for all nodes goes some way
+towards solving this problem:
+@ID @OneRow {
+@Code @Verbatim {
+@Diag
+ vsize { 1f }
+{
+@Box Hole @Box in
+@Box my @Box pocket
+}
+}
+||7ct
+@Diag
+ vsize { 1f }
+{
+@Box Hole @Box in
+@Box my @Box pocket
+}
+}
+The size @Code "1f" is a good choice because most fonts are designed to
+be @Code "1f" high from the top of the tallest character to the foot of the
+deepest. However, there is still a problem with the baselines of the words
+being misaligned. A better solution is to insert a @I { vertical strut }
+into each node: an invisible object with zero width and height equal to
+{@Code 1f}. This is done using the @Code vstrut option:
+diagrams. @RawIndex { diagrams }
+diagrams.vstrut @SubIndex { @Code "vstrut" option }
+vstrut.diagrams @Index { @Code "vstrut" option (diagrams) }
+@ID @OneRow {
+@Code @Verbatim {
+@Diag
+ vstrut { yes }
+{
+@Box Hole @Box in
+@Box my @Box pocket
+}
+}
+||7ct
+@Diag
+ vstrut { yes }
+{
+@Box Hole @Box in
+@Box my @Box pocket
+}
+}
+The @Code vstrut option may be {@Code yes}, {@Code no} (the default value), or
+a length, meaning to insert a strut of this height. So @Code "vstrut { yes }"
+is equivalent to {@Code "vstrut { 1.0f }"}.
+@PP
+There are {@Code halign}, {@Code hsize}, {@Code hindent}, and {@Code hstrut}
+diagrams. @RawIndex { diagrams }
+diagrams.halign @SubIndex { @Code "halign" option }
+halign.diagrams @Index { @Code "halign" option (diagrams) }
+diagrams. @RawIndex { diagrams }
+diagrams.hsize @SubIndex { @Code "hsize" option }
+hsize.diagrams @Index { @Code "hsize" option (diagrams) }
+diagrams. @RawIndex { diagrams }
+diagrams.hindent @SubIndex { @Code "hindent" option }
+hindent.diagrams @Index { @Code "hindent" option (diagrams) }
+diagrams. @RawIndex { diagrams }
+diagrams.hstrut @SubIndex { @Code "hstrut" option }
+hstrut.diagrams @Index { @Code "hstrut" option (diagrams) }
+options that do horizontally exactly what {@Code valign}, {@Code vsize},
+{@Code vindent}, and {@Code vstrut} do vertically, except that they
+use {@Code left} and {@Code right} where the vertical ones use
+{@Code top} and {@Code foot}. The best way to fix horizontal size
+discrepancies is with {@Code hsize}, not {@Code hstrut}.
+@End @Section
diff --git a/doc/doc/user/dia_posi b/doc/doc/user/dia_posi
new file mode 100644
index 0000000..7b41f15
--- /dev/null
+++ b/doc/doc/user/dia_posi
@@ -0,0 +1,233 @@
+@Section
+ @Tag { dia_posi }
+ @Title { Positioning }
+@Begin
+@PP
+Once the nodes are in place, @@Diag can be trusted to look
+diagrams. @RawIndex { diagrams }
+diagrams.positioning @SubIndex { positioning nodes }
+positioning.diagrams @Index { positioning nodes in diagrams }
+after the rest: links to standard outlines will terminate neatly on their
+boundaries, labels will not overstrike links no matter what direction they
+are heading, and so on. The great weakness of @@Diag is in positioning
+the nodes. This is partly because `what pleases the eye' is often the
+rule, and an interactive system is really needed in such cases; and
+partly because, even when the rule is more formal (for example, when
+the nodes are to be laid out in a grid), @@Diag does not have symbols
+to produce it anyway.
+@PP
+Previous examples have used @Code "@DP" for getting nodes one under
+another, and white space between nodes for getting them side by side, but
+this is very primitive. This section suggests three better ways: using
+{@Code "@Tbl"}, using {@Code "@Graph"}, and using coordinates; and the
+following section adds a fourth, using @@Diag's tree-drawing symbols. It's
+a bit of a jumble.
+@PP
+{@Code "@Tbl"} (Chapter {@NumberOf tables}) is a good choice when
+the nodes have any grid-like arrangement:
+@ID @OneRow {
+@Code @Verbatim {
+@Diag {
+@Tbl
+ aformat { @Cell A | @Cell B | @Cell C }
+ marginhorizontal { 0.5c }
+ marginvertical { 0.25c }
+{
+@Rowa
+ B { A:: @Square }
+@Rowa
+ A { B:: @Square }
+ C { C:: @Square }
+@Rowa
+ B { D:: @Square }
+}
+//
+@Arrow from { A } to { B }
+@Arrow from { A } to { C }
+@Arrow from { B } to { D }
+@Arrow from { C } to { D }
+@Arrow from { A } to { D }
+}
+}
+||9ct
+@Diag {
+@Tbl
+ aformat { @Cell A | @Cell B | @Cell C }
+ marginhorizontal { 0.5c }
+ marginvertical { 0.25c }
+{
+@Rowa
+ B { A:: @Square }
+@Rowa
+ A { B:: @Square }
+ C { C:: @Square }
+@Rowa
+ B { D:: @Square }
+}
+//
+@Arrow from { A } to { B }
+@Arrow from { A } to { C }
+@Arrow from { B } to { D }
+@Arrow from { C } to { D }
+@Arrow from { A } to { D }
+}
+}
+The table lies in the nodes part. Tags may share names
+with columns; the two cannot conflict.
+@PP
+Similarly, the @Code "@Graph" symbol from Chapter {@NumberOf graphs}
+has an @Code "objects" option which can place arbitrary objects,
+including labelled nodes, anywhere on a graph:
+@ID @OneRow {
+@Code @Verbatim {
+@Diag {
+@Graph
+ xmin { 0 }
+ xmax { 100 }
+ ymin { 0 }
+ ymax { 100 }
+ objects {
+ @CTR at { 20 30 } { A:: @Square }
+ @CTR at { 60 70 } { B:: @Square }
+ }
+{}
+//
+@Link from { A } to { B }
+}
+}
+||8.5ct
+@Diag {
+@Graph
+ xmin { 0 }
+ xmax { 100 }
+ ymin { 0 }
+ ymax { 100 }
+ objects {
+ @CTR at { 20 30 } { A:: @Square }
+ @CTR at { 60 70 } { B:: @Square }
+ }
+{}
+//
+@Link from { A } to { B }
+}
+}
+Once again the @Code "@Graph" symbol occupies the nodes part. You can
+get rid of the axes by setting the @Code "style" option of @Code "@Graph"
+to {@Code none}, and then it won't look like a graph at all.
+@PP
+@@Diag has a system of node positioning based on coordinates which is
+somewhat similar to the @Code "@Graph" one. It is often the easiest way
+to scatter nodes about a diagram at random. The first step is to create
+a nodes part that is just an empty space of whatever size you want the
+final diagram to be:
+@ID @OneRow @Code @Verbatim {
+@Diag {
+ 4c @High 6c @Wide
+ //
+ ...
+}
+}
+As shown, this is done with the @Code "@Wide" and @Code "@High" symbols
+from basic Lout; the above diagram will be four centimetres high by
+six centimetres wide.
+@PP
+@@Diag has a @Code "," symbol that allows you to specify a point by
+diagrams. @RawIndex { diagrams }
+diagrams.coordinates @SubIndex { coordinates }
+coordinates.diagrams @Index { coordinates in diagrams }
+its coordinates in the diagram's base. For example,
+@Code "0,0" denotes the bottom left-hand corner of the base,
+@Code "1,0" denotes the bottom right-hand corner, and
+@Code "0.5,0.5" denotes the centre of the base. Coordinates should
+usually be between 0 and 1, since otherwise they denote points
+outside the base (which is allowed but seldom useful).
+@PP
+Every node symbol has a @Code "translate" option which allows you
+diagrams. @RawIndex { diagrams }
+diagrams.translate @SubIndex { @Code "translate" option }
+translate.diagrams @Index { @Code "translate" option (diagrams) }
+to move the node about on the diagram's base (or off it if you use
+coordinates less than 0 or greater than 1). If you use this option,
+the node effectively has zero size and overstrikes anything else
+in the area you put it (like labels do). It is best to put these
+nodes in the links part:
+@ID @OneRow {
+@Code @Verbatim {
+@Diag {
+@Box margin { 0c } 4c @Wide 5c @High
+//
+A:: @Square
+ translate { CTR to 0.5, 0.67 }
+ { @I A }
+B:: @Circle
+ translate { CTR to 0.8, 0.25 }
+ { @I B }
+}
+}
+||9ct
+@Diag {
+@Box margin { 0c } 4c @Wide 5c @High
+//
+A:: @Square
+ translate { CTR to 0.5, 0.67 }
+ { @I A }
+B:: @Circle
+ translate { CTR to 0.8, 0.25 }
+ { @I B }
+}
+}
+A box with margin zero has been drawn around the empty space to
+show its extent. The value of @Code "translate" should always
+be {@I point} @Code to {@I point}; the first point lies within
+the node, the second lies within the nodes part, and the translation
+makes these two points coincide.
+@PP
+You are free to have nodes in the nodes part as well, or any object
+at all. Here is an example which shows what a little ingenuity
+can accomplish:
+@ID @OneRow {
+@Code @Verbatim {
+@Diag {
+@Polygon
+ sides { 5 }
+ outlinestyle { noline }
+ hsize { 4c }
+ vsize { 4c }
+//
+A:: @Circle translate { N to P1 } {}
+B:: @Circle translate { N to P2 } {}
+C:: @Circle translate { N to P3 } {}
+D:: @Circle translate { N to P4 } {}
+E:: @Circle translate { N to P5 } {}
+@Link arrow { both } from { A } to { B }
+@Link arrow { both } from { B } to { C }
+@Link arrow { both } from { C } to { D }
+@Link arrow { both } from { D } to { E }
+@Link arrow { both } from { E } to { A }
+}
+}
+||9ct
+@Diag {
+@Polygon
+ sides { 5 }
+ outlinestyle { noline }
+ hsize { 4c }
+ vsize { 4c }
+//
+A:: @Circle translate { N to P1 } {}
+B:: @Circle translate { N to P2 } {}
+C:: @Circle translate { N to P3 } {}
+D:: @Circle translate { N to P4 } {}
+E:: @Circle translate { N to P5 } {}
+@Link arrow { both } from { A } to { B }
+@Link arrow { both } from { B } to { C }
+@Link arrow { both } from { C } to { D }
+@Link arrow { both } from { D } to { E }
+@Link arrow { both } from { E } to { A }
+}
+}
+This uses the tags of a phantom polygon to position the
+real nodes. It would be a rare interactive system that could
+position nodes with this precision; @@Diag shines whenever there
+is a formal positioning rule to follow.
+@End @Section
diff --git a/doc/doc/user/dia_summ b/doc/doc/user/dia_summ
new file mode 100644
index 0000000..6dd0383
--- /dev/null
+++ b/doc/doc/user/dia_summ
@@ -0,0 +1,2112 @@
+@Section
+ @Tag { dia_summ }
+ @Title { Summary }
+@Begin
+@PP
+Here is the complete list of standard node outlines that may be given
+diagrams. @RawIndex { diagrams }
+diagrams.summary @SubIndex { summary of all options }
+summary.diagrams @Index { summary of all options for diagrams }
+to the @Code "@Node" symbol. Each shows the outline name, any extra
+options relevant to this outline, base (shown as a grey
+box), segments (shown using {@Code "outlinestyle { solid dashed }"}),
+tags, and directions (shown as a thick arrowhead wherever defined):
+@IndentedList gap { 3v }
+
+@LI {
+@Code {
+"@Node"
+" outline { box }"
+}
+||7ct
+@Diag {
+//0.5f
+@Box paint { lightgrey } outlinestyle { noline } margin { 0c }
+@ShowTags @ShowDirections @Node
+ outline { box }
+ outlinestyle { solid dashed }
+ outlinewidth { 0.03f }
+ vsize { 1.0c } hsize { 2.0c }
+}
+}
+
+@LI {
+@Code {
+"@Node"
+" outline { curvebox }"
+}
+||7ct
+@Diag {
+@Box paint { lightgrey } outlinestyle { noline } margin { 0c }
+@ShowTags @ShowDirections @Node
+ outline { curvebox }
+ outlinestyle { solid dashed }
+ outlinewidth { 0.03f }
+ vsize { 1.0c } hsize { 2.0c }
+}
+}
+
+@LI {
+@Code {
+"@Node"
+" outline { shadowbox }"
+" shadow { 0.4f }"
+}
+||7ct
+@Diag {
+@Box paint { lightgrey } outlinestyle { noline } margin { 0c }
+@ShowTags @ShowDirections @Node
+ outline { shadowbox }
+ outlinestyle { solid dashed }
+ outlinewidth { 0.03f }
+ vsize { 1.0c } hsize { 2.0c }
+}
+}
+
+@LI {
+@Code {
+"@Node"
+" outline { square }"
+}
+||7ct
+@Diag {
+//1.5f
+@Box paint { lightgrey } outlinestyle { noline } margin { 0c }
+@ShowTags @ShowDirections @Node
+ outline { square }
+ outlinestyle { solid dashed }
+ outlinewidth { 0.03f }
+ vsize { 1.0c } hsize { 2.0c }
+}
+}
+
+@LI {
+@Code {
+"@Node"
+" outline { diamond }"
+}
+||7ct
+@Diag {
+@Box paint { lightgrey } outlinestyle { noline } margin { 0c }
+@ShowTags @ShowDirections @Node
+ outline { diamond }
+ outlinestyle { solid dashed }
+ outlinewidth { 0.03f }
+ vsize { 1.0c } hsize { 2.0c }
+}
+}
+
+@LI {
+@Code {
+"@Node"
+" outline { polygon }"
+" sides { 3 }"
+" angle { 180d / sides }"
+}
+||7ct
+@Diag {
+//0.5f
+@Box paint { lightgrey } outlinestyle { noline } margin { 0c }
+@ShowTags @ShowDirections @Node
+ outline { polygon }
+ outlinestyle { solid dashed }
+ outlinewidth { 0.03f }
+ vsize { 1.0c } hsize { 2.0c }
+&0.5c ... &0.5c
+@Box paint { lightgrey } outlinestyle { noline } margin { 0c }
+@ShowTags @ShowDirections @Node
+ outline { polygon }
+ sides { 10 }
+ outlinestyle { solid dashed }
+ outlinewidth { 0.03f }
+ vsize { 1.0c } hsize { 2.0c }
+&0.5c ...
+}
+}
+
+@LI {
+@Code {
+"@Node"
+" outline { isosceles }"
+}
+||7ct
+@Diag {
+@Box paint { lightgrey } outlinestyle { noline } margin { 0c }
+@ShowTags @ShowDirections @Node
+ outline { isosceles }
+ outlinestyle { solid dashed }
+ outlinewidth { 0.03f }
+ vsize { 1.0c } hsize { 2.0c }
+}
+}
+
+@LI {
+@Code {
+"@Node"
+" outline { ellipse }"
+}
+||7ct
+@Diag {
+@Box paint { lightgrey } outlinestyle { noline } margin { 0c }
+@ShowTags @ShowDirections @Node
+ outline { ellipse }
+ outlinestyle { solid dashed }
+ outlinewidth { 0.03f }
+ vsize { 1.0c } hsize { 2.0c }
+}
+}
+
+@LI {
+@Code {
+"@Node"
+" outline { circle }"
+}
+||7ct
+@Diag {
+@Box paint { lightgrey } outlinestyle { noline } margin { 0c }
+@ShowTags @ShowDirections @Node
+ outline { circle }
+ outlinestyle { solid dashed }
+ outlinewidth { 0.03f }
+ vsize { 1.0c } hsize { 2.0c }
+}
+}
+
+@EndList
+@DP
+Here are the abbreviations for the standard shapes:
+@ID @Tab
+ vmargin { 0.5vx }
+ @Fmta { @Col @Code { outline "{" A "}" } ! @Col @Code { "@"B } }
+{
+@Rowa
+ A { box }
+ B { Box }
+@Rowa
+ A { curvebox }
+ B { CurveBox }
+@Rowa
+ A { shadowbox }
+ B { ShadowBox }
+@Rowa
+ A { square }
+ B { Square }
+@Rowa
+ A { diamond }
+ B { Diamond }
+@Rowa
+ A { polygon }
+ B { Polygon }
+@Rowa
+ A { isosceles }
+ B { Isosceles }
+@Rowa
+ A { ellipse }
+ B { Ellipse }
+@Rowa
+ A { circle }
+ B { Circle }
+}
+Here are all the options to the @Code "@Node" symbol, their default
+values, and their ranges of allowed values. Definitions of {@I number},
+{@I length}, {@I angle}, and {@I point} appear later in this summary. The
+options related to {@Code alabel}, {@Code blabel}, {@Code clabel}, and
+{@Code dlabel} have mostly been omitted since they are the same as
+the {@Code nodelabel} options except for {@Code nodelabelpos}.
+@DP
+1fx @Break @Tab
+ hmargin { 1s }
+ # vmargin { 0.6vx }
+ @Fmth { @Col @Code A ! @Col @Code " " ! @Col @Code B ! @Col @Code " " !
+ @Col 0.3c @Wide ! @Col C }
+ @Fmta { @Col @Code A ! @Col @Code "{" ! @Col @Code B ! @Col @Code "}" !
+ @Col 0.3c @Wide ! @Col C }
+{
+@FirstRowh
+ A { "@Node" }
+@Rowa
+ A { " outline" }
+ B { box }
+ C { {@Code box}, {@Code curvebox}, {@Code shadowbox}, {@Code square},
+{@Code diamond}, {@Code polygon}, {@Code ellipse}, {@Code circle}, or
+any outline }
+@Rowa
+ A { " margin" }
+ B { 0.6f }
+ C { any length from Section {@NumberOf objects} }
+@Rowa
+ A { " shadow" }
+ B { 0.4f }
+ C { any @I length }
+@Rowa
+ A { " sides" }
+ B { 3 }
+ C { any @I number (it will be rounded to the nearest integer) }
+@Rowa
+ A { " angle" }
+ B { 180d "/" sides }
+ C { any @I angle }
+@Rowa
+ A { " translate" }
+ B { }
+ C { empty, or @I point @Code to @I point }
+@Rowa
+ A { " outlinestyle" }
+ B { solid }
+ C { {@Code solid}, {@Code dashed}, {@Code cdashed}, {@Code dotted},
+{@Code dotdashed}, {@Code dotcdashed}, {@Code dotdotdashed},
+{@Code dotdotcdashed}, {@Code dotdotdotdashed}, {@Code dotdotdotcdashed},
+{@Code noline}, or any sequence of one or more of these }
+@Rowa
+ A { " outlinedashlength"}
+ B { 0.2f }
+ C { any @I length }
+@Rowa
+ A { " outlinewidth" }
+ B { thin }
+ C { {@Code thin}, {@Code medium}, {@Code thick}, or any @I length }
+@Rowa
+ A { " outlinecolour" }
+ B { nochange }
+ C { @Code nochange or any colour from Section {@NumberOf colour} }
+@Rowa
+ A { " paint" }
+ B { none }
+ C { @Code none or any colour from Section {@NumberOf colour} }
+@Rowa
+ A { " texture" }
+ B { solid }
+ C { Any texture from Section {@NumberOf textures} }
+@Rowa
+ A { " font" }
+ B { }
+ C { any value suitable for the @Code "@Font" symbol }
+@Rowa
+ A { " break" }
+ B { }
+ C { any value suitable for the @Code "@Break" symbol }
+@Rowa
+ A { " format" }
+ B { "@Body" }
+ C { any object, usually containing {@Code "@Body"} }
+@Rowa
+ A { " valign"}
+ B { ctr }
+ C { {@Code "top"}, {@Code "ctr"}, {@Code "foot"}, or any length
+from Section {@NumberOf objects} }
+@Rowa
+ A { " vsize"}
+ B { }
+ C { empty, or any length from Section {@NumberOf objects} }
+@Rowa
+ A { " vindent"}
+ B { ctr }
+ C { {@Code "top"}, {@Code "ctr"}, {@Code "mctr"}, {@Code "foot"}, or any
+length from Section {@NumberOf objects} }
+@Rowa
+ A { " vstrut"}
+ B { no }
+ C { {@Code no}, {@Code yes}, or any length from Section {@NumberOf objects} }
+@Rowa
+ A { " vmargin" }
+ B { margin }
+ C { any length from Section {@NumberOf objects} }
+@Rowa
+ A { " topmargin" }
+ B { vmargin }
+ C { any length from Section {@NumberOf objects} }
+@Rowa
+ A { " footmargin" }
+ B { vmargin }
+ C { any length from Section {@NumberOf objects} }
+@Rowa
+ A { " halign"}
+ B { ctr }
+ C { {@Code "left"}, {@Code "ctr"}, {@Code "right"}, or any length from Section {@NumberOf objects} }
+@Rowa
+ A { " hsize"}
+ B { }
+ C { empty, or any length from Section {@NumberOf objects} }
+@Rowa
+ A { " hindent"}
+ B { ctr }
+ C { {@Code "left"}, {@Code "ctr"}, {@Code "mctr"}, {@Code "right"}, or any
+length from Section {@NumberOf objects} }
+@Rowa
+ A { " hstrut"}
+ B { no }
+ C { {@Code no}, {@Code yes}, or any length from Section {@NumberOf objects} }
+@Rowa
+ A { " hmargin" }
+ B { margin }
+ C { any length from Section {@NumberOf objects} }
+@Rowa
+ A { " leftmargin" }
+ B { hmargin }
+ C { any length from Section {@NumberOf objects} }
+@Rowa
+ A { " rightmargin" }
+ B { hmargin }
+ C { any length from Section {@NumberOf objects} }
+@Rowa
+ A { " nodelabel"}
+ B { }
+ C { any object }
+@Rowa
+ A { " nodelabelmargin"}
+ B { 0.2f }
+ C { any length from Section {@NumberOf objects} }
+@Rowa
+ A { " nodelabelfont"}
+ B { -2p }
+ C { any value suitable for the @Code "@Font" symbol }
+@Rowa
+ A { " nodelabelbreak"}
+ B { ragged nohyphen }
+ C { any value suitable for the @Code "@Break" symbol }
+@Rowa
+ A { " nodelabelformat"}
+ B { "@Body" }
+ C { any object, usually containing @Code "@Body" }
+@Rowa
+ A { " nodelabelpos"}
+ B { }
+ C { any @I point }
+@Rowa
+ A { " nodelabelangle"}
+ B { horizontal }
+ C { {@Code horizontal}, {@Code aligned}, or {@Code perpendicular};
+{@Code parallel}, {@Code antiparallel}, or any @I angle }
+@Rowa
+ A { " nodelabelprox"}
+ B { outside }
+ C { {@Code above}, {@Code below}, {@Code left}, {@Code right},
+{@Code inside}, or {@Code outside}; {@Code CTR}, {@Code N}, {@Code S},
+{@Code E}, {@Code W}, {@Code NE}, {@Code NW}, {@Code SW}, {@Code SE},
+{@Code NNW}, {@Code NNE}, {@Code SSW}, or {@Code SSE}
+}
+@Rowa
+ A { " nodelabelctr"}
+ B { no }
+ C { @Code yes or @Code no }
+@Rowa
+ A { " nodelabeladjust"}
+ B { 0 0 }
+ C { any @I point }
+@Rowa
+ A { " alabelpos"}
+ B { NE }
+ C { any @I point }
+@Rowa
+ A { " blabelpos"}
+ B { NW }
+ C { any @I point }
+@Rowa
+ A { " clabelpos"}
+ B { SW }
+ C { any @I point }
+@Rowa
+ A { " dlabelpos"}
+ B { SE }
+ C { any @I point }
+}
+@DP
+Here is the complete list of standard link paths that may be given
+to the @Code "@Link" symbol. Each entry shows the link path name,
+any extra options relevant to this path, segments (shown using
+{@Code "outlinestyle { solid dashed }"}, and tags. All tags
+have directions pointing along the link from @Code FROM to
+{@Code TO}; these have been omitted for clarity. The @Code frompt
+and @Code topt options of @Code bezier are compulsory and denote the
+two control points (Section {@NumberOf dia_defi}).
+@IndentedList gap { 2v }
+
+@LI {
+@Code {
+"@Link"
+" path { line }"
+}
+||6ct
+@Diag {
+//0.5f
+A:: @Circle /0.8c |1.5c B:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { line } from { A } to { B }
+}
+&2.5c
+#@Diag {
+#|1.5c B:: @Circle /0.8c A:: @Circle
+#//
+#@ShowTags @Link
+# pathstyle { solid dashed }
+# path { line } from { A } to { B }
+#}
+}
+
+@LI {
+@Code {
+"@Link"
+" path { doubleline }"
+}
+||6ct
+@Diag {
+//0.5f
+A:: @Circle /0.8c |1.5c B:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { doubleline } from { A } to { B }
+}
+&2.5c
+#@Diag {
+#|1.5c B:: @Circle /0.8c A:: @Circle
+#//
+#@ShowTags @Link
+# pathstyle { solid dashed }
+# path { line } from { A } to { B }
+#}
+}
+
+@LI {
+@Code {
+"@Link"
+" path { curve }"
+" bias { 2.0f }"
+}
+||6ct
+@Diag {
+A:: @Circle /0.8c |1.5c B:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { curve } from { A } to { B }
+}
+&2.5c
+@Diag {
+|1.5c B:: @Circle /0.8c A:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { curve } from { A } to { B }
+}
+}
+
+@LI {
+@Code {
+"@Link"
+" path { ccurve }"
+" bias { 2.0f }"
+}
+||6ct
+@Diag {
+//0.5f
+A:: @Circle /0.8c |1.5c B:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { ccurve } from { A } to { B }
+}
+&2.5c
+@Diag {
+//0.5f
+|1.5c B:: @Circle /0.8c A:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { ccurve } from { A } to { B }
+}
+}
+
+@LI {
+@Code {
+"@Link"
+" path { bezier }"
+" frompt { A@CTR ++ { 3f 0 } }"
+" topt { B@CTR ++ { 3f 0 } }"
+}
+||6ct
+@Diag {
+//0.5f
+A:: @Circle /0.8c |1.5c B:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { bezier } from { A } to { B }
+ frompt { A@CTR ++ { 3f 0 } }
+ topt { B@CTR ++ { 3f 0 } }
+}
+&2.5c
+@Diag {
+//0.5f
+|1.5c B:: @Circle /0.8c A:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { bezier } from { A } to { B }
+ frompt { A@CTR ++ { 3f 0 } }
+ topt { B@CTR ++ { 3f 0 } }
+}
+}
+
+@LI {
+@Code {
+"@Link"
+" path { vhline }"
+}
+||6ct
+@Diag {
+//0.5f
+A:: @Circle /0.8c |1.5c B:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { vhline } from { A } to { B }
+}
+&2.5c
+@Diag {
+//0.5f
+|1.5c B:: @Circle /0.8c A:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { vhline } from { A } to { B }
+}
+}
+
+@LI {
+@Code {
+"@Link"
+" path { hvline }"
+}
+||6ct
+@Diag {
+//0.5f
+A:: @Circle /0.8c |1.5c B:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { hvline } from { A } to { B }
+}
+&2.5c
+@Diag {
+//0.5f
+|1.5c B:: @Circle /0.8c A:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { hvline } from { A } to { B }
+}
+}
+
+@LII {
+In the following links, the @Code radius option determines the
+radius of the curved corners of the link.
+}
+
+@LI {
+@Code {
+"@Link"
+" path { vhcurve }"
+" radius { 1.0f }"
+}
+||6ct
+@Diag {
+//0.5f
+A:: @Circle /0.8c |1.5c B:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { vhcurve } from { A } to { B }
+}
+&2.5c
+@Diag {
+//0.5f
+|1.5c B:: @Circle /0.8c A:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { vhcurve } from { A } to { B }
+}
+}
+
+@LI {
+@Code {
+"@Link"
+" path { hvcurve }"
+" radius { 1.0f }"
+}
+||6ct
+@Diag {
+//0.5f
+A:: @Circle /0.8c |1.5c B:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { hvcurve } from { A } to { B }
+}
+&2.5c
+@Diag {
+//0.5f
+|1.5c B:: @Circle /0.8c A:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { hvcurve } from { A } to { B }
+}
+}
+
+@LII {
+In the following links, the @Code bias option determines how far
+the link extends to the left of the leftmost node, or to the
+right of the rightmost node.
+}
+
+@LI {
+@Code {
+"@Link"
+" path { lvrline }"
+" bias { 2.0f }"
+}
+||6ct
+@Diag {
+//0.5f
+A:: @Circle /0.8c |1.5c B:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { lvrline } from { A } to { B }
+}
+&2.5c
+@Diag {
+//0.5f
+|1.5c B:: @Circle /0.8c A:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { lvrline } from { A } to { B }
+}
+}
+
+@LI {
+@Code {
+"@Link"
+" path { rvlline }"
+" bias { 2.0f }"
+}
+||6ct
+@Diag {
+//0.5f
+A:: @Circle /0.8c |1.5c B:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { rvlline } from { A } to { B }
+}
+&2.5c
+@Diag {
+//0.5f
+|1.5c B:: @Circle /0.8c A:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { rvlline } from { A } to { B }
+}
+}
+
+@LI {
+@Code {
+"@Link"
+" path { lvrcurve }"
+" bias { 2.0f }"
+" radius { 1.0f }"
+}
+||6ct
+@Diag {
+//0.5f
+A:: @Circle /0.8c |1.5c B:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { lvrcurve } from { A } to { B }
+}
+&2.5c
+@Diag {
+//0.5f
+|1.5c B:: @Circle /0.8c A:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { lvrcurve } from { A } to { B }
+}
+}
+
+@LI {
+@Code {
+"@Link"
+" path { rvlcurve }"
+" bias { 2.0f }"
+" radius { 1.0f }"
+}
+||6ct
+@Diag {
+//0.5f
+A:: @Circle /0.8c |1.5c B:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { rvlcurve } from { A } to { B }
+}
+&2.5c
+@Diag {
+//0.5f
+|1.5c B:: @Circle /0.8c A:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { rvlcurve } from { A } to { B }
+}
+}
+
+@LI {
+@Code {
+"@Link"
+" path { dhuline }"
+" bias { 2.0f }"
+}
+||6ct
+@Diag {
+//0.5f
+A:: @Circle /0.8c |1.5c B:: @Circle /2f
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { dhuline } from { A } to { B }
+}
+&2.5c
+@Diag {
+//0.5f
+|1.5c B:: @Circle /0.8c A:: @Circle /2f
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { dhuline } from { A } to { B }
+}
+}
+
+@LI {
+@Code {
+"@Link"
+" path { uhdline }"
+" bias { 2.0f }"
+}
+||6ct
+@Diag {
+//2.5f
+A:: @Circle /0.8c |1.5c B:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { uhdline } from { A } to { B }
+}
+&2.5c
+@Diag {
+//2.5f
+|1.5c B:: @Circle /0.8c A:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { uhdline } from { A } to { B }
+}
+}
+
+@LI {
+@Code {
+"@Link"
+" path { dhucurve }"
+" bias { 2.0f }"
+" radius { 1.0f }"
+}
+||6ct
+@Diag {
+//0.5f
+A:: @Circle /0.8c |1.5c B:: @Circle /2f
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { dhucurve } from { A } to { B }
+}
+&2.5c
+@Diag {
+//0.5f
+|1.5c B:: @Circle /0.8c A:: @Circle /2f
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { dhucurve } from { A } to { B }
+}
+}
+
+@LI {
+@Code {
+"@Link"
+" path { uhdcurve }"
+" bias { 2.0f }"
+" radius { 1.0f }"
+}
+||6ct
+@Diag {
+//2.5f
+A:: @Circle /0.8c |1.5c B:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { uhdcurve } from { A } to { B }
+}
+&2.5c
+@Diag {
+//2.5f
+|1.5c B:: @Circle /0.8c A:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { uhdcurve } from { A } to { B }
+}
+}
+
+@LII {
+In the following links, the @Code "hfrac" and @Code "hbias" options
+determine how far across from @Code "FROM" to @Code "TO" the path turns
+vertical: a fraction @Code "hfrac" of the way across, plus a distance
+{@Code "hbias"}. The default settings shown make this point halfway; by
+changing @Code "hfrac" to 0 and giving a length to {@Code "hbias"}, one can
+select a particular distance, rather than a fraction of the total distance.
+}
+
+@LI {
+@Code {
+"@Link"
+" path { hvhline }"
+" hfrac { 0.5 }"
+" hbias { 0f }"
+" radius { 1.0f }"
+}
+||6ct
+@Diag {
+//0.5f
+A:: @Circle /0.8c |1.5c B:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { hvhline } from { A } to { B }
+}
+&2.5c
+@Diag {
+//0.5f
+|1.5c B:: @Circle /0.8c A:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { hvhline } from { A } to { B }
+}
+}
+
+@LI {
+@Code {
+"@Link"
+" path { hvhcurve }"
+" hfrac { 0.5 }"
+" hbias { 0f }"
+" radius { 1.0f }"
+}
+||6ct
+@Diag {
+//0.5f
+A:: @Circle /0.8c |1.5c B:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { hvhcurve } from { A } to { B }
+}
+&2.5c
+@Diag {
+//0.5f
+|1.5c B:: @Circle /0.8c A:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { hvhcurve } from { A } to { B }
+}
+}
+
+@LI {
+@Code {
+"@Link"
+" path { vhvline }"
+" hfrac { 0.5 }"
+" hbias { 0f }"
+" radius { 1.0f }"
+}
+||6ct
+@Diag {
+//0.5f
+A:: @Circle /1.8c |1.5c B:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { vhvline } from { A } to { B }
+}
+&2.5c
+@Diag {
+//0.5f
+|1.5c B:: @Circle /1.8c A:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { vhvline } from { A } to { B }
+}
+}
+
+@LI {
+@Code {
+"@Link"
+" path { vhvcurve }"
+" hfrac { 0.5 }"
+" hbias { 0f }"
+" radius { 1.0f }"
+}
+||6ct
+@Diag {
+//0.5f
+A:: @Circle /1.8c |1.5c B:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { vhvcurve } from { A } to { B }
+}
+&2.5c
+@Diag {
+//0.5f
+|1.5c B:: @Circle /1.8c A:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { vhvcurve } from { A } to { B }
+}
+}
+
+@LII {
+In the following links, the @Code "fbias" option determines
+how far the curve extends away from the FROM node; the
+@Code "tbias" option determines how far it extends away from
+the TO node; and the @Code "bias" option determines how far
+it extends above the higher or below the lower node.
+}
+
+@LI {
+@Code {
+"@Link"
+" path { dwrapline }"
+" tbias { 2.0f }"
+" bias { 2.0f }"
+" fbias { 2.0f }"
+}
+||6ct
+@Diag {
+//0.5f
+A:: @Circle /0.8c |1.5c B:: @Circle /2f
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { dwrapline } from { A } to { B }
+}
+&2.5c
+@Diag {
+//0.5f
+|1.5c B:: @Circle /0.8c A:: @Circle /2f
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { dwrapline } from { A } to { B }
+}
+}
+
+@LI {
+@Code {
+"@Link"
+" path { uwrapline }"
+" tbias { 2.0f }"
+" bias { 2.0f }"
+" fbias { 2.0f }"
+}
+||6ct
+@Diag {
+//0.5f
+/2f A:: @Circle /0.8c |1.5c B:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { uwrapline } from { A } to { B }
+}
+&2.5c
+@Diag {
+//0.5f
+/2f |1.5c B:: @Circle /0.8c A:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { uwrapline } from { A } to { B }
+}
+}
+
+@LI {
+@Code {
+"@Link"
+" path { dwrapcurve }"
+" tbias { 2.0f }"
+" bias { 2.0f }"
+" fbias { 2.0f }"
+" radius { 1.0f }"
+}
+||6ct
+@Diag {
+//0.5f
+A:: @Circle /0.8c |1.5c B:: @Circle /2f
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { dwrapcurve } from { A } to { B }
+}
+&2.5c
+@Diag {
+//0.5f
+|1.5c B:: @Circle /0.8c A:: @Circle /2f
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { dwrapcurve } from { A } to { B }
+}
+}
+
+@LI {
+@Code {
+"@Link"
+" path { uwrapcurve }"
+" tbias { 2.0f }"
+" bias { 2.0f }"
+" fbias { 2.0f }"
+" radius { 1.0f }"
+}
+||6ct
+@Diag {
+//0.5f
+/2f A:: @Circle /0.8c |1.5c B:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { uwrapcurve } from { A } to { B }
+}
+&2.5c
+@Diag {
+//0.5f
+/2f |1.5c B:: @Circle /0.8c A:: @Circle
+//
+@ShowTags @Link
+ pathstyle { solid dashed }
+ path { uwrapcurve } from { A } to { B }
+}
+}
+
+@EndList
+Here is the list of abbreviations for the standard paths (note
+that @Code curve and @Code acurve are the same). Each
+path also has an abbreviation which adds a forward arrow:
+@DP
+@Tab
+ @Fmta { @Col { @DisplayIndent @Wide & @Code { path "{" A "}" } } !
+ @Col @Code "@"B ! @Col @Code "@"C }
+{
+@FirstRowa
+ A { line }
+ B { Line }
+ C { Arrow }
+@Rowa
+ A { doubleline }
+ B { DoubleLine }
+ C { DoubleArrow }
+@Rowa
+ A { curve }
+ B { Curve }
+ C { CurveArrow }
+@Rowa
+ A { acurve }
+ B { ACurve }
+ C { ACurveArrow }
+@Rowa
+ A { ccurve }
+ B { CCurve }
+ C { CCurveArrow }
+
+@Rowa
+ A { bezier }
+ B { Bezier }
+ C { BezierArrow }
+
+@Rowa
+ A { hvline }
+ B { HVLine }
+ C { HVArrow }
+@Rowa
+ A { vhline }
+ B { VHLine }
+ C { VHArrow }
+@Rowa
+ A { hvcurve }
+ B { HVCurve }
+ C { HVCurveArrow }
+@Rowa
+ A { vhcurve }
+ B { VHCurve }
+ C { VHCurveArrow }
+
+@Rowa
+ A { lvrline }
+ B { LVRLine }
+ C { LVRArrow }
+@Rowa
+ A { rvlline }
+ B { RVLLine }
+ C { RVLArrow }
+@Rowa
+ A { lvrcurve }
+ B { LVRCurve }
+ C { LVRCurveArrow }
+@Rowa
+ A { rvlcurve }
+ B { RVLCurve }
+ C { RVLCurveArrow }
+
+@Rowa
+ A { dhuline }
+ B { DHULine }
+ C { DHUArrow }
+@Rowa
+ A { uhdline }
+ B { UHDLine }
+ C { UHDArrow }
+@Rowa
+ A { dhucurve }
+ B { DHUCurve }
+ C { DHUCurveArrow }
+@Rowa
+ A { uhdcurve }
+ B { RVLCurve }
+ C { RVLCurveArrow }
+
+@Rowa
+ A { hvhline }
+ B { HVHLine }
+ C { HVHArrow }
+@Rowa
+ A { vhvline }
+ B { VHVLine }
+ C { VHVArrow }
+@Rowa
+ A { hvhcurve }
+ B { HVHCurve }
+ C { HVHCurveArrow }
+@Rowa
+ A { vhvcurve }
+ B { VHVCurve }
+ C { VHVCurveArrow }
+
+@Rowa
+ A { dwrapline }
+ B { DWrapLine }
+ C { DWrapArrow }
+@Rowa
+ A { uwrapline }
+ B { UWrapLine }
+ C { UWrapArrow }
+@Rowa
+ A { dwrapcurve }
+ B { DWrapCurve }
+ C { DWrapCurveArrow }
+@Rowa
+ A { uwrapcurve }
+ B { UWrapCurve }
+ C { UWrapCurveArrow }
+}
+@DP
+Here is the complete list of options to the @Code "@Link" symbol. The
+options related to {@Code xlabel}, {@Code ylabel}, and {@Code zlabel}
+have been omitted where they are the same as the {@Code linklabel} options.
+@DP
+1fx @Break @Tab
+ hmargin { 1s }
+ # vmargin { 0.6vx }
+ @Fmth { @Col @Code A ! @Col @Code " " ! @Col @Code B ! @Col @Code " " !
+ @Col 0.3c @Wide ! @Col C }
+ @Fmta { @Col @Code A ! @Col @Code "{" ! @Col @Code B ! @Col @Code "}" !
+ @Col 0.3c @Wide ! @Col C }
+{
+@Rowh
+ A { "@Link" }
+@Rowa
+ A { " path" }
+ B { line }
+ C { {@Code "line"}, {@Code "doubleline"}, {@Code "curve"}, {@Code "acurve"},
+{@Code "ccurve"}, {@Code "bezier"},
+{@Code "vhline"}, {@Code "hvline"}, {@Code "vhcurve"}, {@Code "hvcurve"},
+{@Code "lvrline"}, {@Code "rvlline"}, {@Code "lvrcurve"}, {@Code "rvlcurve"},
+{@Code "dhuline"}, {@Code "uhdline"}, {@Code "dhucurve"}, {@Code "uhdcurve"},
+{@Code "hvhline"}, {@Code "vhvline"}, {@Code "hvhcurve"}, {@Code "vhvcurve"},
+{@Code "dwrapline"}, {@Code "uwrapline"}, {@Code "dwrapcurve"},
+{@Code "uwrapcurve"}, or any path }
+@Rowa
+ A { " from"}
+ B { 0,0 }
+ C { any @I point or node label }
+@Rowa
+ A { " to"}
+ B { 1,1 }
+ C { any @I point or node label }
+@Rowa
+ A { " bias"}
+ B { 2.0f }
+ C { any @I length }
+@Rowa
+ A { " fbias"}
+ B { 2.0f }
+ C { any @I length }
+@Rowa
+ A { " tbias"}
+ B { 2.0f }
+ C { any @I length }
+@Rowa
+ A { " hfrac"}
+ B { 0.5 }
+ C { any fractional @I number }
+@Rowa
+ A { " hbias"}
+ B { 0.0f }
+ C { any @I length }
+@Rowa
+ A { " radius"}
+ B { 1.0f }
+ C { any @I length }
+@Rowa
+ A { " xindent"}
+ B { 0.8f }
+ C { any @I length }
+@Rowa
+ A { " zindent"}
+ B { 0.8f }
+ C { any @I length }
+@Rowa
+ A { " frompt"}
+ B { 0 0 }
+ C { any @I point }
+@Rowa
+ A { " topt"}
+ B { 0 0 }
+ C { any @I point }
+@Rowa
+ A { " pathstyle" }
+ B { solid }
+ C { {@Code solid}, {@Code dashed}, {@Code cdashed}, {@Code dotted},
+{@Code dotdashed}, {@Code dotcdashed}, {@Code dotdotdashed},
+{@Code dotdotcdashed}, {@Code dotdotdotdashed}, {@Code dotdotdotcdashed},
+{@Code noline}, or any sequence of one or more of these values }
+@Rowa
+ A { " pathdashlength"}
+ B { 0.2f }
+ C { any @I length }
+@Rowa
+ A { " pathwidth" }
+ B { thin }
+ C { {@Code thin}, {@Code medium}, {@Code thick}, or any @I length }
+@Rowa
+ A { " pathcolour" }
+ B { nochange }
+ C { @Code nochange or any colour from Section {@NumberOf colour} }
+@Rowa
+ A { " pathgap" }
+ B { thin }
+ C { {@Code thin}, {@Code medium}, {@Code thick}, or any @I length }
+@Rowa
+ A { " arrow"}
+ B { no }
+ C { {@Code no}, {@Code yes}, {@Code forward}, {@Code back},
+or {@Code both} }
+@Rowa
+ A { " arrowstyle"}
+ B { solid }
+ C { {@Code solid}, {@Code solidwithbar}, {@Code halfopen}, {@Code open},
+{@Code curvedsolid}, {@Code curvedhalfopen}, {@Code curvedopen},
+{@Code circle}, {@Code box}, or {@Code many} }
+@Rowa
+ A { " arrowwidth"}
+ B { 0.3f }
+ C { any @I length }
+@Rowa
+ A { " arrowlength"}
+ B { 0.5f }
+ C { any @I length }
+@Rowa
+ A { " backarrowstyle"}
+ B { solid }
+ C { {@Code solid}, {@Code solidwithbar}, {@Code halfopen}, {@Code open},
+{@Code curvedsolid}, {@Code curvedhalfopen}, {@Code curvedopen},
+{@Code circle}, {@Code box}, or {@Code many} }
+@Rowa
+ A { " backarrowwidth"}
+ B { 0.3f }
+ C { any @I length }
+@Rowa
+ A { " backarrowlength"}
+ B { 0.5f }
+ C { any @I length }
+@Rowa
+ A { " linklabel"}
+ B { }
+ C { any object }
+@Rowa
+ A { " linklabelmargin"}
+ B { 0.2f }
+ C { any length from Section {@NumberOf objects} }
+@Rowa
+ A { " linklabelfont"}
+ B { -2p }
+ C { any value suitable for the @Code "@Font" symbol }
+@Rowa
+ A { " linklabelbreak"}
+ B { ragged nohyphen }
+ C { any value suitable for the @Code "@Break" symbol }
+@Rowa
+ A { " linklabelformat"}
+ B { "@Body" }
+ C { any object, usually containing @Code "@Body" }
+@Rowa
+ A { " linklabelpos"}
+ B { }
+ C { any @I point }
+@Rowa
+ A { " linklabelangle"}
+ B { horizontal }
+ C { {@Code horizontal}, {@Code aligned}, or {@Code perpendicular};
+{@Code parallel}, {@Code antiparallel}, or any @I angle }
+@Rowa
+ A { " linklabelprox"}
+ B { above }
+ C { {@Code above}, {@Code below}, {@Code left}, {@Code right},
+{@Code inside}, or {@Code outside}; {@Code CTR}, {@Code N}, {@Code S},
+{@Code E}, {@Code W}, {@Code NE}, {@Code NW}, {@Code SW}, {@Code SE},
+{@Code NNW}, {@Code NNE}, {@Code SSW}, or {@Code SSE}
+}
+@Rowa
+ A { " linklabelctr"}
+ B { no }
+ C { @Code yes or @Code no }
+@Rowa
+ A { " linklabeladjust"}
+ B { 0 0 }
+ C { any @I point }
+@Rowa
+ A { " xlabelpos"}
+ B { LFROM }
+ C { any @I point }
+@Rowa
+ A { " ylabelpos"}
+ B { LMID }
+ C { any @I point }
+@Rowa
+ A { " ylabelctr"}
+ B { yes }
+ C { @Code yes or @Code no }
+@Rowa
+ A { " zlabelpos"}
+ B { LTO }
+ C { any @I point }
+@Rowa
+ A { " fromlabel"}
+ B { }
+ C { any object }
+@Rowa
+ A { " fromlabelmargin"}
+ B { 0f }
+ C { any length from Section {@NumberOf objects} }
+@Rowa
+ A { " fromlabelfont"}
+ B { "-2p" }
+ C { Any value suitable for the @Code "@Font" symbol }
+@Rowa
+ A { " fromlabelbreak"}
+ B { ragged nohyphen }
+ C { Any value suitable for the @Code "@Break" symbol }
+@Rowa
+ A { " fromlabelformat"}
+ B { "@Body" }
+ C { any object, usually containing @Code "@Body" }
+@Rowa
+ A { " fromlabelpos"}
+ B { FROM }
+ C { any @I point }
+@Rowa
+ A { " fromlabelangle"}
+ B { antiparallel }
+ C { {@Code horizontal}, {@Code aligned}, or {@Code perpendicular};
+{@Code parallel}, {@Code antiparallel}, or any @I angle }
+@Rowa
+ A { " fromlabelprox"}
+ B { W }
+ C { {@Code above}, {@Code below}, {@Code left}, {@Code right},
+{@Code inside}, or {@Code outside}; {@Code CTR}, {@Code N}, {@Code S},
+{@Code E}, {@Code W}, {@Code NE}, {@Code NW}, {@Code SW}, {@Code SE},
+{@Code NNW}, {@Code NNE}, {@Code SSW}, or {@Code SSE}
+}
+@Rowa
+ A { " fromlabelctr"}
+ B { no }
+ C { @Code yes or @Code no }
+@Rowa
+ A { " fromlabeladjust"}
+ B { 0 0 }
+ C { any @I point }
+@Rowa
+ A { " tolabel"}
+ B { }
+ C { any object }
+@Rowa
+ A { " tolabelmargin"}
+ B { 0f }
+ C { any length from Section {@NumberOf objects} }
+@Rowa
+ A { " tolabelfont"}
+ B { "-2p" }
+ C { Any value suitable for the @Code "@Font" symbol }
+@Rowa
+ A { " tolabelbreak"}
+ B { ragged nohyphen }
+ C { Any value suitable for the @Code "@Break" symbol }
+@Rowa
+ A { " tolabelformat"}
+ B { "@Body" }
+ C { any object, usually containing @Code "@Body" }
+@Rowa
+ A { " tolabelpos"}
+ B { TO }
+ C { any @I point }
+@Rowa
+ A { " tolabelangle"}
+ B { parallel }
+ C { {@Code horizontal}, {@Code aligned}, or {@Code perpendicular};
+{@Code parallel}, {@Code antiparallel}, or any @I angle }
+@Rowa
+ A { " tolabelprox"}
+ B { W }
+ C { {@Code above}, {@Code below}, {@Code left}, {@Code right},
+{@Code inside}, or {@Code outside}; {@Code CTR}, {@Code N}, {@Code S},
+{@Code E}, {@Code W}, {@Code NE}, {@Code NW}, {@Code SW}, {@Code SE},
+{@Code NNW}, {@Code NNE}, {@Code SSW}, or {@Code SSE}
+}
+@Rowa
+ A { " tolabelctr"}
+ B { no }
+ C { @Code yes or @Code no }
+@Rowa
+ A { " tolabeladjust"}
+ B { 0 0 }
+ C { any @I point }
+}
+@DP
+Here is the complete list of options to the @Code "@Tree" symbol:
+@DP @OneRow 1fx @Break @Tab
+ hmargin { 1s }
+ # vmargin { 0.6vx }
+ @Fmth { @Col @Code A ! @Col @Code " " ! @Col @Code B ! @Col @Code " " !
+ @Col 1.0c @Wide ! @Col C }
+ @Fmta { @Col @Code A ! @Col @Code "{" ! @Col @Code B ! @Col @Code "}" !
+ @Col 1.0c @Wide ! @Col C }
+{
+@Rowh
+ A { "@Tree" }
+@Rowa
+ A { " treehindent" }
+ B { ctr }
+ C { {@Code left}, {@Code ctr}, {@Code right}, or any length from
+Section {@NumberOf objects} }
+}
+@DP
+The @Code "@HTree" option has a similar @Code "treevindent" option,
+which may be {@Code "top"}, {@Code ctr}, {@Code foot}, or any length
+from Section {@NumberOf objects}.
+@PP
+Here are all the syntax diagrams symbols, used within {@Code "@SyntaxDiag"}
+usually but also available within {@Code "@Diag"}. To begin with we have
+the six starter symbols:
+@CD @SyntaxDiag {
+@Tbl
+ aformat { @Cell @Code A | @Cell B | @Cell | @Cell @Code C |
+ @Cell D | @Cell | @Cell @Code E | @Cell F }
+{
+@Rowa
+ A { "@StartRight ..." }
+ B { @StartRight @ACell "..." }
+ C { "@StartUp ..." }
+ D { @StartUp @ACell "..." }
+ E {
+"@StartRightRight"
+ "A { ... }"
+ "B { ... }"
+}
+ F { @StartRightRight A { @ACell A } B { @ACell B } }
+@Rowa
+ A { "@StartLeft ..." }
+ B { @StartLeft @ACell "..." }
+ C { "@StartDown ..." }
+ D { @StartDown @ACell "..." }
+ E {
+"@StartRightDown"
+ "A { ... }"
+ "B { ... }"
+}
+ F { @StartRightDown A { @ACell A } B { @ACell B } }
+}
+}
+And here are all the syntax diagram types, shown in all four directions
+(right, up, left, and down). @Code "@Sequence" and @Code "@Select" may
+have up to twelve options, {@Code "A"} to {@Code "L"}.
+@IndentedList
+
+@LI @SyntaxDiag { @Four code { "@ACell ..." } @ACell "..." }
+
+@LI @SyntaxDiag { @Four code { "@BCell ..." } @BCell "..." }
+
+@LI @SyntaxDiag { @Four code { "@CCell ..." } @CCell "..." }
+
+@LI @SyntaxDiag { @Four code { "@Skip" } @Skip }
+
+@LI @SyntaxDiag { @Four code {
+"@Sequence"
+ "A { ... }"
+ "B { ... }"
+ "C { ... }"
+} @Sequence A { @ACell A } B { @ACell B } C { @ACell C } }
+
+@LI @SyntaxDiag { @Four code {
+"@Select"
+ "A { ... }"
+ "B { ... }"
+ "C { ... }"
+} @Select A { @ACell A } B { @ACell B } C { @ACell C } }
+
+@LI @SyntaxDiag { @Four code { "@Optional ..." } @Optional @ACell "..." }
+
+@LI @SyntaxDiag { @Four code { "@OptionalDiverted ..." }
+ @OptionalDiverted @ACell "..." }
+
+@LI @SyntaxDiag { @Four code { "@Diverted ..." } @Diverted @ACell "..." }
+
+@LI @SyntaxDiag { @Four code {
+"@OneOrBoth"
+ "A { ... }"
+ "B { ... }"
+} @OneOrBoth A { @ACell A } B { @ACell B } }
+
+@LI @SyntaxDiag { @Four code {
+"@Loop"
+ "A { ... }"
+ "B { ... }"
+} @Loop A { @ACell A } B { @ACell B } }
+
+@LI @SyntaxDiag { @Four code { "@Repeat ..." } @Repeat @ACell "..." }
+
+@LI @SyntaxDiag { @Four code {
+"@LoopOpposite"
+ "A { ... }"
+ "B { ... }"
+} @LoopOpposite A { @ACell A } B { @ACell B } }
+
+@LI @SyntaxDiag { @Four code { "@RepeatOpposite ..." }
+ @RepeatOpposite @ACell "..." }
+
+@LI @SyntaxDiag { @Four code { "@RepeatDiverted ..." }
+ @RepeatDiverted @ACell "..." }
+
+@EndList
+The @Code "@Diag" symbol and to the {@Code "@DiagSetup"} setup
+file symbol have all of the options of {@Code "@Node"}, {@Code "@Link"},
+{@Code "@Tree"}, and {@Code "@HTree"}. They also have the following
+options:
+@DP
+1fx @Break @Tab
+ hmargin { 1s }
+ # vmargin { 0.6vx }
+ @Fmth { @Col @Code A ! @Col @Code " " ! @Col @Code B ! @Col @Code " " !
+ @Col 1.0c @Wide ! @Col C }
+ @Fmta { @Col @Code A ! @Col @Code "{" ! @Col @Code B ! @Col @Code "}" !
+ @Col 1.0c @Wide ! @Col C }
+{
+@Rowh
+ A { "@Diag" }
+@Rowa
+ A { " maxlabels" }
+ B { 200 }
+ C { any whole number }
+@Rowa
+ A { " save" }
+ B { no }
+ C { @Code no or @Code yes }
+@Rowa
+ A { " treehsep" }
+ B { 0.5f }
+ C { any length from Section {@NumberOf objects} }
+@Rowa
+ A { " syntaxgap" }
+ B { 0.35f }
+ C { any length from Section {@NumberOf objects} }
+@Rowa
+ A { " syntaxbias" }
+ B { 1.0f }
+ C { any length from Section {@NumberOf objects} }
+@Rowa
+ A { " syntaxradius" }
+ B { 0.3f }
+ C { any length from Section {@NumberOf objects} }
+}
+@DP
+The following lists define all the ways to specify numbers, lengths,
+angles, points, and booleans. Brief explanations appear to the right,
+with the symbols' precedences in parentheses.
+@DP
+1fx @Break @Tab
+ # vmargin { 0.6vx }
+ @Fmth { @Col { &@DisplayIndent A } ! @Col }
+ @Fmta { @Col { &@DisplayIndent &2s A } ! @Col B }
+{
+
+@Rowh A { @I number } vmargin { 0.2vx }
+@Rowh
+@Rowa
+ A { {@Sym minus}27.56 }
+ B { or any literal number }
+@Rowa
+ A { @Code sqrt @I number }
+ B { square root (99) }
+@Rowa
+ A { @Code abs @I number }
+ B { absolute value (99) }
+@Rowa
+ A { @Code ceiling @I number }
+ B { least integer greater than or equal to (99) }
+@Rowa
+ A { @Code floor @I number }
+ B { greatest integer less than or equal to (99) }
+@Rowa
+ A { @Code truncate @I number }
+ B { delete fractional part (99) }
+@Rowa
+ A { @Code round @I number }
+ B { round to nearest integer (99) }
+@Rowa
+ A { @Code sin @I angle }
+ B { sine of angle measured in degrees (99) }
+@Rowa
+ A { @Code cos @I angle }
+ B { cosine of angle measured in degrees (99) }
+@Rowa
+ A { @I number @Code atan @I number }
+ B { arc tangent of first over second (98) }
+@Rowa
+ A { @I number @Code exp @I number }
+ B { first number raised to second number (98) }
+@Rowa
+ A { @I number @Code log @I number }
+ B { logarithm of second number to base first (98) }
+@Rowa
+ A { @I number @Code rand @I number }
+ B { random real number in this range inclusive (98) }
+@Rowa
+ A { @I number @Code max @I number }
+ B { the larger of two numbers (98) }
+@Rowa
+ A { @I number @Code min @I number }
+ B { the smaller of two numbers (98) }
+@Rowa
+ A { @I number @Code "*" @I number }
+ B { the product of two numbers (97) }
+@Rowa
+ A { @I number @Code "/" @I number }
+ B { real-valued division (96, left associative) }
+@Rowa
+ A { @I length @Code "/" @I length }
+ B { the ratio of two lengths (96, left associative) }
+@Rowa
+ A { @I angle @Code "/" @I angle }
+ B { the ratio of two angles (96, left associative) }
+@Rowa
+ A { @I number @Code idiv @I number }
+ B { integer division of two numbers (96, left associative) }
+@Rowa
+ A { @I number @Code mod @I number }
+ B { integer remainder when first divided by second (96) }
+@Rowa
+ A { @I number @Code "+" @I number }
+ B { sum of two numbers (96, left associative) }
+@Rowa
+ A { @Code "+" @I number }
+ B { identity operation (96) }
+@Rowa
+ A { @I number @Sym minus @I number }
+ B { difference of two numbers (96, left associative) }
+@Rowa
+ A { @Sym minus @I number }
+ B { negation (96) }
+@Rowa
+ A { @Code sides }
+ B { ({@Code outline} only) value of the node's @Code sides option }
+
+@Rowh
+@Rowh
+@Rowh
+@Rowh
+@Rowh A { @I length } vmargin { 0.2vx }
+@Rowh
+@Rowa
+ A { 0 }
+ B { zero }
+@Rowa
+ A { @Code xsize }
+ B { ({@Code outline} only) distance to right boundary }
+@Rowa
+ A { @Code ysize }
+ B { ({@Code outline} only) distance to top boundary }
+@Rowa
+ A { @Code xmark }
+ B { ({@Code outline} only) distance to column mark }
+@Rowa
+ A { @Code ymark }
+ B { ({@Code outline} only) distance to row mark }
+@Rowa
+ A { @Code margin }
+ B { ({@Code outline} only) value of the node's @Code margin option }
+@Rowa
+ A { @Code shadow }
+ B { ({@Code outline} only) value of the node's @Code shadow option }
+@Rowa
+ A { @I number @Code i }
+ B { @I number inches (100) }
+@Rowa
+ A { @I number @Code c }
+ B { @I number centimetres (100) }
+@Rowa
+ A { @I number @Code p }
+ B { @I number points (100) }
+@Rowa
+ A { @I number @Code m }
+ B { @I number ems (100) }
+@Rowa
+ A { @I number @Code s }
+ B { @Code 1s is the current width of a space (100) }
+@Rowa
+ A { @I number @Code v }
+ B { @Code 1v is the current inter-line space (100) }
+@Rowa
+ A { @I number @Code f }
+ B { @Code 1f is the size of the current font (100) }
+@Rowa
+ A { @Code "xcoord" @I point }
+ B { the @I x coordinate of the point (99) }
+@Rowa
+ A { @Code "ycoord" @I point }
+ B { the @I y coordinate of the point (99) }
+@Rowa
+ A { @Code abs @I length }
+ B { absolute value (99) }
+@Rowa
+ A { @I length @Code rand @I length }
+ B { random real length in this range inclusive (98) }
+@Rowa
+ A { @I length @Code max @I length }
+ B { the larger of two lengths (98) }
+@Rowa
+ A { @I length @Code min @I length }
+ B { the smaller of two lengths (98) }
+@Rowa
+ A { @I point @Code "distance" @I point }
+ B { (non-negative) distance between two points (98) }
+@Rowa
+ A { @I length @Code "*" @I number }
+ B { length multiplied by number (97) }
+@Rowa
+ A { @I number @Code "*" @I length }
+ B { length multiplied by number (97) }
+@Rowa
+ A { @I length @Code "/" @I number }
+ B { length divided by number (96, left associative) }
+@Rowa
+ A { @I length @Code "+" @I length }
+ B { sum of two lengths (96, left associative) }
+@Rowa
+ A { @Code "+" @I length }
+ B { identity operation (96) }
+@Rowa
+ A { @I length @Sym minus @I length }
+ B { difference of two lengths (96, left associative) }
+@Rowa
+ A { @Sym minus @I length }
+ B { negation (96) }
+
+@Rowh
+@Rowh
+@Rowh
+@Rowh
+@Rowh A { @I angle } vmargin { 0.2vx }
+@Rowh
+@Rowa
+ A { @I number @Code d }
+ B { @I number degrees (100) }
+@Rowa
+ A { @I number }
+ B { @I number degrees (@Code d is optional) (100) }
+@Rowa
+ A { @Code parallel }
+ B { ({@Code labelangle} options only) angle parallel to curve at label point }
+@Rowa
+ A { @Code antiparallel }
+ B { ({@Code labelangle} options only) angle antiparallel to curve at label point }
+@Rowa
+ A { @Code perpendicular }
+ B { ({@Code labelangle} options only) angle perpendicular to curve at label point }
+@Rowa
+ A { @Code antiperpendicular }
+ B { ({@Code labelangle} options only) angle antiperpendicular to curve at label point }
+@Rowa
+ A { {@I label}{@Code "??ANGLE"} }
+ B { angle parallel to curve at {@I label} if known, else @Code "0d" (99) }
+@Rowa
+ A { @Code anglefix @I angle }
+ B { @I angle normalized to between @Code 0d inclusive and @Code 360d exclusive (99) }
+@Rowa
+ A { @Code abs @I angle }
+ B { absolute value (99) }
+@Rowa
+ A { @I length @Code atan @I length }
+ B { arc tangent of first over second (98) }
+@Rowa
+ A { @I point @Code "angleto" @I point }
+ B { angle from first point to second (98) }
+@Rowa
+ A { @I angle @Code rand @I angle }
+ B { random angle in this range inclusive (98) }
+@Rowa
+ A { @I angle @Code max @I angle }
+ B { the larger of two angles (98) }
+@Rowa
+ A { @I angle @Code min @I angle }
+ B { the smaller of two angles (98) }
+@Rowa
+ A { @I angle @Code "*" @I number }
+ B { angle multiplied by number (97) }
+@Rowa
+ A { @I number @Code "*" @I angle }
+ B { angle multiplied by number (97) }
+@Rowa
+ A { @I angle @Code "/" @I number }
+ B { division of angle by number (96, left associative) }
+@Rowa
+ A { @I angle @Code "+" @I angle }
+ B { sum of two angles (96, left associative) }
+@Rowa
+ A { @Code "+" @I angle }
+ B { identity operation (96) }
+@Rowa
+ A { @I angle @Sym minus @I angle }
+ B { difference of two angles (96, left associative) }
+@Rowa
+ A { @Sym minus @I angle }
+ B { negation (96) }
+@Rowa
+ A { @Code angle }
+ B { ({@Code outline} only) value of the node's @Code angle option }
+
+
+@Rowh
+@Rowh
+@Rowh
+@Rowh
+@Rowh A { @I point } vmargin { 0.2vx }
+@Rowh
+@Rowa
+ A { @I label }
+ B { a previously defined label }
+@Rowa
+ A { {@I any}{@Code "??"}{@I label} }
+ B { {@I any}{@Code "@"}{@I label} if sensible, else {@I any} (99) }
+@Rowa
+ A { @Code "prev" }
+ B { the previous point in a shape }
+@Rowa
+ A { @I length @Code "atangle" @I angle }
+ B { point at distance and angle from origin (89) }
+@Rowa
+ A { @I "point/tag" @Code "boundaryatangle" @I angle }
+ B { @I {point}, or point on boundary of @I tag at @I angle (89) }
+@Rowa
+ A { @I point @Code "**" @I number }
+ B { multiplication of point by number (88) }
+@Rowa
+ A { @I point @Code "++" @I point }
+ B { vector sum of two points (87) }
+@Rowa
+ A { @I point {@Sym minus}{@Sym minus} @I point }
+ B { vector difference of two points (87) }
+@Rowa
+ A { @I {number, number} }
+ B { @I x and @I y coordinates with respect to base (70) }
+@Rowa
+ A { @I {length length} }
+ B { @I x and @I y distance from origin (5) }
+@Rowa
+ A { @Code from }
+ B { ({@Code path} only) the value of the link's @Code from option }
+@Rowa
+ A { @Code to }
+ B { ({@Code path} only) the value of the link's @Code to option }
+
+@Rowh
+@Rowh
+@Rowh
+@Rowh
+@Rowh A { @I boolean } vmargin { 0.2vx }
+@Rowh
+@Rowa
+ A { @I number @Code "=" @I number }
+ B { @M { non = }; also between lengths (79) }
+@Rowa
+ A { @I number @Code "!=" @I number }
+ B { @M { non != }; also between lengths (79) }
+@Rowa
+ A { @I number @Code "==" @I number }
+ B { @M { non = } between angles (79) }
+@Rowa
+ A { @I number @Code "!==" @I number }
+ B { @M { non != } between angles (79) }
+@Rowa
+ A { @I number @Code "<=" @I number }
+ B { @M { non <= }; also between lengths (79) }
+@Rowa
+ A { @I number @Code "<" @I number }
+ B { @M { non < }; also between lengths (79) }
+@Rowa
+ A { @I number @Code ">=" @I number }
+ B { @M { non >= }; also between lengths (79) }
+@Rowa
+ A { @I number @Code ">" @I number }
+ B { @M { non > }; also between lengths (79) }
+@Rowa
+ A { @Code "not" @I boolean }
+ B { Logical not (78) }
+@Rowa
+ A { @I boolean @Code "and" @I boolean }
+ B { Logical and (77) }
+@Rowa
+ A { @I boolean @Code "or" @I boolean }
+ B { Logical or (76) }
+@Rowa
+ A { @I boolean @Code "xor" @I boolean }
+ B { Logical exclusive or (76) }
+
+}
+@DP
+A length is represented in PostScript by a single number on the operand
+stack; so is an angle. Therefore all number operations can be applied
+to lengths and angles as well, but the results will not always be
+useful. For example, rounding a length to the nearest integer is
+not a useful thing to do because the result depends on the basic unit
+(what does 1 equal as a length?) which is implementation-dependent and
+genuinely subject to change. Rounding the @I ratio of two lengths does
+make sense. The above is an attempt to list only the useful operations;
+but if you really need the logarithm of an angle, you can have it.
+@PP
+Angles are a little more amenable to this kind of thing because they are
+always measured in degrees. However, angles suffer from the problem that
+{@Code 0d} is really the same angle as {@Code 360d}. For this reason,
+separate equality and inequality operators for angles are provided which
+ignore multiples of {@Code 360d}, and less than and similar relations
+are not defined for angles, because they inherently are not well
+defined. See also the @Code anglefix symbol above.
+@PP
+A point is represented by two lengths (which are numbers) on the
+stack. Those familiar with PostScript and willing to sacrifice portability
+and increase their risk of error can therefore write, for example,
+@OneCol { @I point @Code "exch" } to obtain the reflection of a point about
+the main diagonal, and so on.
+@PP
+The following may have a result of any type, depending on
+their options. The options and result may be a
+sequence of things as required in shapes, including @Code "[]" and
+so forth.
+@IndentedList
+@LI @OneRow lines @Break {
+@Code if
+ @Code "cond {" @I boolean @Code "}"
+ @Code "then {" @I anything @Code "}"
+ @Code "else {" @I anything @Code "}"
+}
+@LI @OneRow lines @Break {
+@I angle @Code quadcase
+ @Code "0 {" @I anything @Code "}"
+ @Code "0-90 {" @I anything @Code "}"
+ @Code "90 {" @I anything @Code "}"
+ @Code "90-180 {" @I anything @Code "}"
+ @Code "180 {" @I anything @Code "}"
+ @Code "180-270 {" @I anything @Code "}"
+ @Code "270 {" @I anything @Code "}"
+ @Code "270-360 {" @I anything @Code "}"
+}
+@LI @OneRow lines @Break {
+@I number @Code signcase
+ @Code "neg {" @I anything @Code "}"
+ @Code "zero {" @I anything @Code "}"
+ @Code "pos {" @I anything @Code "}"
+}
+@LI @OneRow lines @Break {
+@Code "xloop from {" @I number "} to {" @I number "} by {" @I number "} do {"
+ @I anything
+@Code "}"
+}
+@LI @OneRow lines @Break {
+@Code "yloop from {" @I number "} to {" @I number "} by {" @I number "} do {"
+ @I anything
+@Code "}"
+}
+@LI @OneRow lines @Break {
+@Code "zloop from {" @I number "} to {" @I number "} by {" @I number "} do {"
+ @I anything
+@Code "}"
+}
+@EndList
+The @Code "if" symbol returns @Code "then" or @Code "else" depending on
+the value of {@Code "cond"}, and @Code "signcase" returns {@Code "neg"},
+{@Code zero}, or {@Code pos} depending on whether @I number (which
+may also be an angle or a length) is negative, zero, or positive. The
+@Code "quadcase" symbol decides whether the given angle points in
+one of the four horizontal or vertical directions, or into the quadrants
+between them, and returns the appropriate option. Don't be misled by
+the unorthodox option names; it is not possible to give your own
+ranges, only these ones.
+@PP
+The loops return a sequence of
+repetitions of {@I anything}; any occurrences of {@Code x} in
+{@Code xloop} will be replaced by the current value of the loop counter,
+and similarly for the other loops.
+@PP
+Symbols not covered in this summary are the retagging symbol @Code "::"
+(Section {@NumberOf dia_tags}); the symbols available within the
+{@Code "@Tree"} symbol (Section {@NumberOf dia_posi}); and {@Code ":<"},
+{@Code ":="}, {@Code "@ShowPoints"}, {@Code "@ShowTags"}, and
+{@Code "@ShowDirections"} from Section {@NumberOf dia_defi}.
+@End @Section
diff --git a/doc/doc/user/dia_synt b/doc/doc/user/dia_synt
new file mode 100644
index 0000000..de0811c
--- /dev/null
+++ b/doc/doc/user/dia_synt
@@ -0,0 +1,604 @@
+@Section
+ @Tag { dia_synt }
+ @Title { Syntax diagrams }
+@Begin
+@PP
+A variant of the @@Diag symbol, called {@Code "@SyntaxDiag"},
+diagrams. @RawIndex { diagrams }
+diagrams.syntax @SubIndex { syntax diagrams }
+syntax.diagrams @Index { syntax diagrams }
+railroad.diagrams @Index { railroad diagrams }
+produces syntax diagrams (sometimes called railroad diagrams):
+@CD @SyntaxDiag
+ title { call-chain }
+{
+ @StartRight @Sequence
+ A { @Optional @Sequence
+ A { @BCell "super" }
+ B { @CCell "!" }
+ }
+ B { @Loop
+ A { @Sequence
+ A { @ACell identifier }
+ B { @Optional @Sequence
+ A { @CCell "(" }
+ B { @Loop
+ A { @ACell expression }
+ B { @CCell "," }
+ }
+ C { @CCell ")" }
+ }
+ }
+ B { @CCell "." }
+ }
+}
+These are used to define the syntax of computer programming languages,
+although they could be put to other uses. We'll explain how to get
+syntax diagrams first. At the end of this section is an explanation of
+how to change the formats of things, which people who use these diagrams
+for other purposes will probably need to do.
+@PP
+A syntax diagram can be @I { right-moving }, which means it starts
+at the left and heads right (like the example above), or it can be
+@I { down-moving }, starting at the top and heading downwards. The
+@Code "@StartRight" and @Code "@StartDown" symbols are used at the start
+of the diagram to say which of these directions is wanted:
+@ID @OneRow @Code @Verbatim {
+@SyntaxDiag
+ title { call-chain }
+{
+ @StartRight ...
+}
+}
+where @Code { ... } stands for the rest of the diagram, as we are about
+to describe. For completeness there are also @Code "@StartLeft" and
+@Code "@StartUp" symbols, but diagrams never start off in these directions.
+@PP
+If you accidentally omit the starting symbol ({@Code "@StartRight"} or
+whatever), you will get several error messages, the first of which
+should mention @Code { diag_dirn }; it is trying to tell you, in a
+cryptic way, that it doesn't know which direction you want to go in.
+@PP
+The @Code title option is optional; if given, the effect is as shown
+(this option is also available with {@Code "@Diag"}). Subsequent
+examples will omit the enclosing {@Code "@SyntaxDiag { ... }"}.
+@PP
+The basic components of syntax diagrams are @I { category cells },
+shown as boxes in the example above and obtained with the
+@Code "@ACell" symbol; @I { keyword cells }, shown as curved boxes
+and obtained with {@Code "@BCell"}; and @I { punctuation cells },
+containing symbols small enough to be enclosed in circles, and
+obtained with {@Code "@CCell"}. After each symbol, place whatever
+has to go inside the cell:
+@ID @OneRow {
+@Code @Verbatim { @StartRight @BCell loop }
+|7ct
+@SyntaxDiag {
+@StartRight @BCell loop
+}
+}
+Lout will insert the appropriate arrows, taking account of which
+direction (right, up, left, or down) the diagram is currently
+moving. This is true for all the syntax diagram symbols; we
+won't mention it again.
+# @FootNote {
+# This wonderfully useful effect is achieved by a dirty trick, one
+# of whose consequences is that if you see an error message
+# similar to `@Code { replacing unknown "@Case" option 0p by 1p }'
+# it means you've forgotten the initial @Code "@StartRight" or
+# whatever.
+# }
+@PP
+Occasionally, instead of a cell one wants the horizontal or
+vertical line to continue uninterrupted. For this there is
+the @Code "@Skip" symbol:
+@ID @OneRow {
+@Code @Verbatim { @StartDown @Skip }
+|7ct
+@SyntaxDiag {
+@StartDown @Skip
+}
+}
+Some examples of its use in practice appear below.
+@PP
+There are three main ways to build up larger syntax diagrams out
+of smaller ones: @I { sequencing }, @I { selection }, and
+@I { looping }. For sequencing there is the @Code "@Sequence" symbol:
+@ID @OneRow {
+@Code @Verbatim {
+@StartRight @Sequence
+ A { @BCell loop }
+ B { @ACell statements }
+ C { @BCell end }
+}
+||7ct
+@SyntaxDiag {
+@StartRight @Sequence
+ A { @BCell loop }
+ B { @ACell statements }
+ C { @BCell end }
+}
+}
+This is what the sequence looks like in the other three directions:
+@CD @OneRow @SyntaxDiag {
+@Tbl
+ mh { 1f }
+ mv { 0i }
+ iv { top }
+ aformat { @Cell ml { 0i } @StartUp A | @Cell @StartLeft A |
+ @Cell mr { 0i } @StartDown A }
+{
+@Rowa A {
+@Sequence
+ A { @BCell loop }
+ B { @ACell statements }
+ C { @BCell end }
+}
+} }
+Whatever the direction, the arrows go from option @Code A to option @Code B
+to option @Code C and so on. You can have up to twelve items in the
+sequence, in options @Code A to {@Code L}; if more than twelve are needed,
+just place another sequence inside any one of these options: where one
+syntax diagram is allowed, any syntax diagram is allowed, provided there
+is enough space on the page (Lout makes a total mess of any diagram that
+is too wide to fit on the page).
+@PP
+After sequencing comes selection, which is obtained with the
+@Code "@Select" symbol:
+@ID @OneRow {
+@Code @Verbatim {
+@StartRight @Select
+ A { @ACell asst }
+ B { @ACell call-chain }
+ C { @Sequence
+ A { @BCell assert }
+ B { @ACell condition }
+ }
+}
+||7ct
+@SyntaxDiag {
+@StartRight @Select
+ A { @ACell asst }
+ B { @ACell call-chain }
+ C { @Sequence
+ A { @BCell assert }
+ B { @ACell condition }
+ }
+}
+}
+This example shows right-moving selection of three alternatives,
+the third being a sequence of things. Here is the same example
+in the other three directions:
+@CD @OneRow @SyntaxDiag {
+@Tbl
+ mh { 1f }
+ mv { 0i }
+ iv { top }
+ aformat { @Cell ml { 0i } @StartUp A | @Cell @StartLeft A |
+ @Cell mr { 0i } @StartDown A }
+{
+@Rowa A {
+@Select
+ A { @ACell asst }
+ B { @ACell call-chain }
+ C { @Sequence
+ A { @BCell assert }
+ B { @ACell condition }
+ }
+} } }
+When building up complex diagrams like this, it pays to keep the indenting
+perfect in the source document. As with sequences, there can be
+up to twelve alternatives, in options from @Code A to {@Code L}.
+@PP
+To say that something is @I optional is to select either that thing or
+nothing:
+@ID @OneRow {
+@Code @Verbatim {
+@StartRight @Select
+ A { @Skip }
+ B { @ACell parameters }
+}
+||7ct
+@SyntaxDiag {
+@StartRight @Select
+ A { @Skip }
+ B { @ACell parameters }
+}
+}
+Since this case is so common, there is an @Code "@Optional" symbol for it:
+@ID @OneRow {
+@Code @Verbatim {
+@StartRight @Optional
+@ACell parameters
+}
+||7ct
+@SyntaxDiag {
+@StartRight @Optional
+@ACell parameters
+}
+}
+@Code "@Optional" is exactly like @Code "@Select" with option @Code A
+set to @Code "@Skip" and option @Code B set to the syntax diagram
+following the @Code "@Optional" symbol. Here is the same example in
+the other three directions:
+@CD @OneRow @SyntaxDiag {
+@Tbl
+ mh { 1f }
+ mv { 0i }
+ iv { top }
+ aformat { @Cell ml { 0i } @StartUp A | @Cell @StartLeft A |
+ @Cell mr { 0i } @StartDown A }
+{
+@Rowa A {
+@Optional @ACell parameters
+} } }
+There is another kind of `optional' layout, {@Code "@OptionalDiverted"}:
+@ID @OneRow {
+@Code @Verbatim {
+@StartDown @OptionalDiverted
+@Sequence
+ A { @BCell creation }
+ B { @ACell parameters }
+}
+||7ct
+@SyntaxDiag {
+@StartDown @OptionalDiverted @Sequence
+ A { @BCell creation }
+ B { @ACell parameters }
+}
+}
+Here is the same example in the other three directions:
+@CD @OneRow @SyntaxDiag {
+@Tbl
+ mh { 1f }
+ mv { 0i }
+ iv { top }
+ aformat { @Cell ml { 0i } @StartRight A | @Cell @StartUp A |
+ @Cell mr { 0i } @StartLeft A }
+{
+@Rowa A {
+@OptionalDiverted @Sequence
+ A { @BCell creation }
+ B { @ACell parameters }
+} } }
+The optional material goes in a direction perpendicular to what
+it would have otherwise: right-moving if previously up or down, and
+down-moving if previously left or right.
+@PP
+Another, related symbol is {@Code "@Diverted"}; it is similar to
+@Code "@OptionalDiverted" but without the path which produces nothing:
+@ID @OneRow {
+@Code @Verbatim {
+@StartDown @Diverted @Sequence
+ A { @BCell creation }
+ B { @ACell parameters }
+}
+||7ct
+@SyntaxDiag {
+@StartDown @Diverted @Sequence
+ A { @BCell creation }
+ B { @ACell parameters }
+}
+}
+Here is the same example in the other three directions:
+@CD @OneRow @SyntaxDiag {
+@Tbl
+ mh { 1f }
+ mv { 0i }
+ iv { top }
+ aformat { @Cell ml { 0i } @StartRight A | @Cell @StartUp A |
+ @Cell mr { 0i } @StartLeft A }
+{
+@Rowa A {
+@Diverted @Sequence
+ A { @BCell creation }
+ B { @ACell parameters }
+} } }
+This symbol is a great aid to packing a big syntax diagram into a
+compact shape.
+@PP
+A variant of the basic selection idea is when you want one thing
+or another, or alternatively both in a particular order. You can get
+this with the @Code "@OneOrBoth" symbol, which takes exactly two
+options, @Code "A" and {@Code "B"}:
+@ID @OneRow {
+@Code @Verbatim {
+@StartRight @OneOrBoth
+ A { @ACell type }
+ B { @ACell body }
+}
+||7ct
+@SyntaxDiag {
+@StartRight @OneOrBoth
+ A { @ACell type }
+ B { @ACell body }
+}
+}
+Although the concept extends to more than two options, the symbol
+doesn't. The summary at the end of this chapter shows the other
+three directions.
+@PP
+That covers sequencing and selection; now for looping. The @Code "@Loop"
+symbol produces a loop, with option @Code A going forwards and option
+@Code B centred and going backwards:
+@ID @OneRow {
+@Code @Verbatim {
+@StartRight @Loop
+ A { @Sequence
+ A { @ACell identifier }
+ B { @CCell : }
+ C { @ACell type }
+ }
+ B { @CCell , }
+}
+||7ct
+@SyntaxDiag {
+@StartRight @Loop
+ A { @Sequence
+ A { @ACell identifier }
+ B { @CCell : }
+ C { @ACell type }
+ }
+ B { @CCell , }
+}
+}
+Here is the same example in the other three directions:
+@CD @OneRow @SyntaxDiag {
+@Tbl
+ mh { 1f }
+ mv { 0i }
+ iv { top }
+ aformat { @Cell ml { 0i } @StartUp A | @Cell @StartLeft A |
+ @Cell mr { 0i } @StartDown A }
+{
+@Rowa A {
+@Loop
+ A { @Sequence
+ A { @ACell identifier }
+ B { @CCell : }
+ C { @ACell type }
+ }
+ B { @CCell , }
+} } }
+One common case of looping is to have nothing on the way back. We could
+get this by placing @Code "@Skip" in option {@Code B} of {@Code "@Loop"},
+but there is an even easier way, the {@Code "@Repeat"} symbol:
+@ID @OneRow {
+@Code @Verbatim {
+@StartRight @Repeat
+@ACell statement
+}
+||7ct
+@SyntaxDiag {
+@StartRight @Repeat
+@ACell statement
+}
+}
+Here is the same example in the other three directions:
+@CD @OneRow @SyntaxDiag {
+@Tbl
+ mh { 1f }
+ mv { 0i }
+ iv { top }
+ aformat { @Cell ml { 0i } @StartUp A | @Cell @StartLeft A |
+ @Cell mr { 0i } @StartDown A }
+{
+@Rowa A {
+@Repeat
+@ACell statement
+} } }
+Occasionally it looks better to have the empty returning arrow go on
+the opposite side of the forward part; for that, there are
+@Code "@LoopOpposite" and @Code "@RepeatOpposite" symbols:
+@ID @OneRow {
+@Code @Verbatim {
+@StartRight @LoopOpposite
+ A { @Sequence
+ A { @ACell identifier }
+ B { @CCell : }
+ C { @ACell type }
+ }
+ B { @CCell , }
+}
+||7ct
+@SyntaxDiag {
+@StartRight @LoopOpposite
+ A { @Sequence
+ A { @ACell identifier }
+ B { @CCell : }
+ C { @ACell type }
+ }
+ B { @CCell , }
+}
+}
+Here is the same example in the other three directions:
+@CD @OneRow @SyntaxDiag {
+@Tbl
+ mh { 1f }
+ mv { 0i }
+ iv { top }
+ aformat { @Cell ml { 0i } @StartUp A | @Cell @StartLeft A |
+ @Cell mr { 0i } @StartDown A }
+{
+@Rowa A {
+@LoopOpposite
+ A { @Sequence
+ A { @ACell identifier }
+ B { @CCell : }
+ C { @ACell type }
+ }
+ B { @CCell , }
+} } }
+@Code "@RepeatOpposite" is particularly useful around a large
+{@Code "@Select"}:
+@ID @OneRow {
+@Code @Verbatim {
+@StartRight @RepeatOpposite
+@Select
+ A { @ACell asst }
+ B { @ACell call-chain }
+ C { @BCell return }
+ D { @Sequence
+ A { @BCell assert }
+ B { @ACell condition }
+ }
+ E { @ACell conditional }
+ F { @ACell selection }
+ G { @ACell loop }
+}
+||7ct
+@SyntaxDiag {
+@StartRight @RepeatOpposite
+@Select
+ A { @ACell asst }
+ B { @ACell call-chain }
+ C { @BCell return }
+ D { @Sequence
+ A { @BCell assert }
+ B { @ACell condition }
+ }
+ E { @ACell conditional }
+ F { @ACell selection }
+ G { @ACell loop }
+}
+}
+since it clearly distinguishes the loop from the selection.
+@PP
+Finally, the @Code "@RepeatDiverted" symbol combines the two ideas
+of repetition and diversion:
+@ID @OneRow {
+@Code @Verbatim {
+@StartDown @RepeatDiverted
+@ACell statement
+}
+||7ct
+@SyntaxDiag {
+@StartDown @RepeatDiverted
+@ACell statement
+}
+}
+Here is the same example in the other three directions:
+@CD @OneRow @SyntaxDiag {
+@Tbl
+ mh { 1f }
+ mv { 0i }
+ iv { top }
+ aformat { @Cell ml { 0i } @StartRight A | @Cell @StartUp A |
+ @Cell mr { 0i } @StartLeft A }
+{
+@Rowa A {
+@RepeatDiverted
+@ACell statement
+} } }
+There is no {@Code "@LoopDiverted"} symbol, for good reason.
+@PP
+Every syntax diagram, from the simplest to the most complex, has
+one arrow going into it, and one coming out. There are no exceptions
+to this rule. In most syntax diagrams, these two arrows lie on the
+same (invisible) line and point in the same direction, and this is
+the direction that we say the diagram is moving. There are two symbols
+that produce syntax diagrams that lack this second property. Because
+of this lack, these symbols cannot be used at arbitrary places in a
+complex diagram; they can only be used instead of the @Code "@StartRight"
+or @Code "@StartDown" symbols at the beginning of a diagram. The first
+symbol, {@Code "@StartRightDown"}, prints its option @Code A right-moving
+and its option @Code B down-moving like this:
+@ID @OneRow {
+@Code @Verbatim {
+@StartRightDown
+ A { @ACell A }
+ B { @ACell B }
+}
+||7ct
+@SyntaxDiag {
+@StartRightDown
+ A { @ACell A }
+ B { @ACell B }
+}
+}
+The second symbol, {@Code "@StartRightRight"}, prints both options
+right-moving like this:
+@ID @OneRow {
+@Code @Verbatim {
+@StartRightRight
+ A { @ACell A }
+ B { @ACell B }
+}
+||7ct
+@SyntaxDiag {
+@StartRightRight
+ A { @ACell A }
+ B { @ACell B }
+}
+}
+As usual, the options to these symbols may contain arbitrarily complex
+syntax diagrams.
+@PP
+Finally, a few words about changing things. The @Code "@SyntaxDiag"
+symbol used the {@Code "@ANode"}, {@Code "@BNode"}, and {@Code "@CNode"}
+symbols of @@Diag to construct its three types of cells. In fact, the
+@Code "@SyntaxDiag" symbol is nothing more than this:
+@ID @OneRow @Code @Verbatim {
+@Diag
+ avalign { mark }
+ avstrut { yes }
+ amargin { 0.2f }
+ aoutline { box }
+ afont { Italic }
+ bvalign { mark }
+ bvstrut { yes }
+ bmargin { 0.2f }
+ boutline { curvebox }
+ bfont { Bold }
+ cvalign { mark }
+ cvstrut { yes }
+ cmargin { 0.2f }
+ coutline { circle }
+ chsize { 1f }
+ arrowlength { 0.4f }
+}
+So any of the other @Code "@Diag" options can be used freely with
+{@Code "@SyntaxDiag"}; and the format of the three cell types can be
+changed by using @Code "@Diag" instead of {@Code "@SyntaxDiag"}, and
+choosing new values for these (and other) options. For example, if
+you need four or five types of cell, just set some @Code { d } and
+@Code { e } options and use @Code "@DCell" and @Code "@ECell" in
+addition to {@Code "@ACell"}, {@Code "@BCell"}, and {@Code "@CCell"}.
+@PP
+If there are more than five cell types, it is necessary to fall back
+on the {@Code "@XCell"} symbol, which produces a cell without nominating
+any particular cell type. After @Code "@XCell" there must be a regular
+@Code "@Diag" node, like this:
+@ID @OneRow {
+@Code @Verbatim {
+@StartRight @XCell @Ellipse INIT
+}
+|7ct
+@SyntaxDiag {
+@StartRight @XCell @Ellipse INIT
+}
+}
+This way there is no limit to the number of different kinds of cells.
+Also, since (for example) @Code "@ACell" is merely an abbreviation for
+@ID @OneRow @Code @Verbatim { @XCell @ANode }
+any node options may follow {@Code "@ACell"}, {@Code "@BCell"},
+{@Code "@CCell"}, {@Code "@DCell"}, and {@Code "@ECell"}. The
+appearance of the arrows can be changed in the usual way, by
+setting options as has been done above for {@Code "arrowlength"}.
+@PP
+There are three options specifically related to syntax diagrams:
+@ID @OneRow @Code @Verbatim {
+@SyntaxDiag
+ syntaxgap { 0.35f }
+ syntaxbias { 1.0f }
+ syntaxradius { 0.3f }
+}
+The @Code syntaxgap option determines the spacing between the various
+elements; changing it causes the syntax diagrams to be set tighter or
+looser in a consistent way. The default value shown is 0.35 times the
+current font size. The @Code syntaxbias and @Code syntaxradius
+options affect the appearance of curved lines, as in @Code "@RVLCurve"
+and its relatives. These options are also available with {@Code "@Diag"},
+and in the setup file. Note however that these options cannot be given to
+individual elements in a syntax diagram, only to the diagram as a whole.
+@End @Section
diff --git a/doc/doc/user/dia_tags b/doc/doc/user/dia_tags
new file mode 100644
index 0000000..71a423d
--- /dev/null
+++ b/doc/doc/user/dia_tags
@@ -0,0 +1,202 @@
+@Section
+ @Tag { dia_tags }
+ @Title { Tags }
+@Begin
+@PP
+In addition to drawing the outline, each of the standard node
+types also attaches names, called {@I tags}, to certain points. For
+diagrams. @RawIndex { diagrams }
+diagrams.tags @SubIndex { tags ({@Code "::"}) }
+tags.diagrams @Index { tags ({@Code "::"}) in diagrams }
+example, the @Code "@Ellipse" symbol creates nine tags:
+@ID {
+@Code {
+"@Ellipse"
+}
+||7ct
+@Diag {
+//1.0f
+@ShowTags @Ellipse
+ vsize { 1.5c }
+ hsize { 3.0c }
+}
+}
+The standard link symbols also create tags:
+@ID {
+@Code {
+"@Link"
+}
+||7ct
+@Diag {
+2.5c @High 2c @Wide
+//
+@ShowTags @Arrow
+ from { 0,0.8 }
+ to { 1,0 }
+}
+}
+The names and positions of all standard tags may be found in the summary
+(Section {@NumberOf dia_summ}) at the end of this chapter. Each tag
+stands for a point, and may be used wherever a point is required:
+@ID {
+@Code @Verbatim {
+@Ellipse { Hello, world }
+//
+@Link from { SW } to { SE }
+}
+||7ct
+@Diag {
+@Ellipse { Hello, world }
+//
+@Link from { SW } to { SE }
+}
+}
+A tag may only be used later in the text of the diagram than the place
+where it is defined.
+@PP
+Standard tags like @Code N and @Code S are not much use as they are,
+since in general there will be many nodes and so many @Code N and
+@Code S tags. The retagging symbol, {@Code "::"}, solves this problem:
+@ID {
+@Code {
+"A:: @Ellipse"
+}
+||7ct
+@Diag {
+//1.5f
+@ShowTags {
+A:: @Ellipse
+ vsize { 1.5c }
+ hsize { 3.0c }
+}
+}
+}
+Within the following object, the points have their original tags, but
+afterwards the names are changed by prefixing the word preceding
+{@Code "::"}, plus a @Code "@" character, to each one. These longer
+tags may be used exactly like the others:
+@ID {
+@Code @Verbatim {
+A:: @Ellipse { Hello, world }
+//
+@Link from { A@SW } to { A@SE }
+}
+||7ct
+@Diag {
+A:: @Ellipse { Hello, world }
+//
+@Link from { A@SW } to { A@SE }
+}
+}
+The retagging symbol may be applied to links, and indeed to arbitrary
+objects; it will retag every tag within the following object, even
+tags that have already been retagged:
+@ID {
+@Code @Verbatim {
+A:: {
+ 1:: @Ellipse
+ vsize { 1.0c }
+ hsize { 2.5c }
+ @DP
+ @DP
+ 2:: @Ellipse
+ vsize { 1.0c }
+ hsize { 2.5c }
+}
+}
+||7ct
+@Diag {
+//1.0f
+@ShowTags {
+A:: {
+ 1:: @Ellipse
+ vsize { 1.0c }
+ hsize { 2.5c }
+ @DP
+ @DP
+ 2:: @Ellipse
+ vsize { 1.0c }
+ hsize { 2.5c }
+}
+}
+}
+}
+In practice one usually only retags individual nodes. It is best to
+use only upper-case letters in tags, because Lout and PostScript have
+tags of their own containing lower-case letters, and any mixup causes
+total disaster. Although the above example uses digits, these can
+cause problems since a tag like {@Code "A@1@S"} will be interpreted
+by Lout as @Code "A@1" followed by the @Code "@S" small capitals
+symbol. (This problem can itself be avoided by enclosing the entire
+tag in quotes, as in {@Code "\"A@1@S\""}; this works because tags are
+just words to Lout, although they are symbols to PostScript. But
+better to avoid the whole problem by not using digits.)
+@PP
+When a tag lies within the object following some node, it is
+automatically retagged in this way with tag {@Code IN}. For example, in
+@ID @OneRow @Code @Verbatim {
+@Square
+@Circle Hello
+}
+the circle lies within the square, and what you get in effect is
+@ID @Code @Verbatim {
+@Square
+IN:: @Circle Hello
+}
+This prevents confusion between the tags of the inner and outer nodes. This
+retagging cannot be left to the user's discretion, owing to unexpected
+effects on the positioning of labels of the outer node if inner tags are
+not retagged.
+@PP
+Although @Code from and @Code to are just two of several options within
+@Code "@Diag" where a point is expected, and so where a tag may be given,
+they have a special virtue not shared by other options. It is possible
+to give the name of an entire node, not just a tag denoting one point,
+to them:
+@ID {
+@Code @Verbatim {
+A:: @Circle
+@DP
+B:: @Ellipse { Hello, world }
+//
+@Link from { A } to { B }
+}
+||7ct
+@Diag {
+A:: @Circle
+@DP
+B:: @Ellipse { Hello, world }
+//
+@Link from { A } to { B }
+}
+}
+This will select a point on the outline of the named node, appropriate
+to the type of link being drawn. It is extremely useful, of course, but
+potentially confusing: @Code A and @Code B do not denote points and are
+not tags, strictly speaking, at all.
+@PP
+The @Code "::" symbol has a @Code restrict option which can be
+diagrams. @RawIndex { diagrams }
+diagrams.restrict @SubIndex { @Code "restrict" option }
+restrict.diagrams @Index { @Code "restrict" option (diagrams) }
+used to save printer memory in deeply nested structures (such as the
+syntax diagrams of Section {@NumberOf dia_synt}) by restricting the
+tags promoted by @Code "::" to a limited set and discarding the rest:
+@ID {
+@Code {
+"A:: restrict { (E) (W) } @Ellipse"
+}
+||7ct
+@Diag {
+@ShowTags {
+ A:: restrict { (E) (W) } @Ellipse
+ vsize { 1.5c }
+ hsize { 3.0c }
+ }
+}
+}
+The tags to be preserved appear within the @Code restrict option, each
+enclosed in parentheses. Care is needed with this option: all of
+the listed tags must actually exist in the following object. If not, the
+result will be a PostScript error mentioning the @Code get command.
+@End @Section
diff --git a/doc/doc/user/dia_tree b/doc/doc/user/dia_tree
new file mode 100644
index 0000000..2845b89
--- /dev/null
+++ b/doc/doc/user/dia_tree
@@ -0,0 +1,417 @@
+@Section
+ @Tag { dia_tree }
+ @Title { Trees }
+@Begin
+@PP
+@@Diag offers some symbols for producing tree diagrams, using the
+diagrams. @RawIndex { diagrams }
+diagrams.tree @SubIndex { @Code "@Tree" symbol }
+tree.diagrams @Index { @Code "@Tree" symbol (diagrams) }
+@Code "@Tree" symbol, which may appear anywhere within the nodes part:
+@ID @OneRow @Code @Verbatim {
+@Diag {
+ ...
+ @Tree { ... }
+ ...
+}
+}
+Within this symbol, new symbols {@Code "@LeftSub"}, {@Code "@RightSub"},
+diagrams. @RawIndex { diagrams }
+diagrams.leftsub @SubIndex { @Code "@LeftSub" symbol }
+leftsub.diagrams @Index { @Code "@LeftSub" symbol (diagrams) }
+diagrams. @RawIndex { diagrams }
+diagrams.rightsub @SubIndex { @Code "@RightSub" symbol }
+rightsub.diagrams @Index { @Code "@RightSub" symbol (diagrams) }
+{@Code "@FirstSub"}, {@Code "@NextSub"}, and {@Code "@StubSub"} become
+available. The first two are used to get a (non-empty) binary tree:
+@ID @OneRow {
+@Code @Verbatim {
+@Tree {
+ @Circle A
+ @LeftSub {
+ @Circle B
+ @LeftSub @Square C
+ @RightSub @Square D
+ }
+ @RightSub @Circle E
+}
+}
+||7ct
+@Diag {
+@Tree {
+ @Circle A
+ @LeftSub {
+ @Circle B
+ @LeftSub @Square C
+ @RightSub @Square D
+ }
+ @RightSub @Circle E
+}
+}
+}
+The root of the tree, which must be a single node but may have any
+outline, comes first. After that comes the @Code "@LeftSub" symbol
+followed by the left subtree, which must be enclosed in braces unless
+it consists of a single node. After that comes the @Code "@RightSub"
+symbol followed by the right subtree, again enclosed in braces unless it
+consists of a single node. These rules apply recursively and will
+produce a binary tree of arbitrary size and depth. If a node has no
+left or right subtree, leave out the corresponding @Code "@LeftSub" or
+@Code "@RightSub" symbol.
+@PP
+A similar system using @Code "@FirstSub" and @Code "@NextSub" produces
+diagrams. @RawIndex { diagrams }
+diagrams.firstsub @SubIndex { @Code "@FirstSub" symbol }
+firstsub.diagrams @Index { @Code "@FirstSub" symbol (diagrams) }
+diagrams. @RawIndex { diagrams }
+diagrams.nextsub @SubIndex { @Code "@NextSub" symbol }
+nextsub.diagrams @Index { @Code "@NextSub" symbol (diagrams) }
+trees in which each node may have arbitrarily many children:
+@ID @OneRow {
+@Code @Verbatim {
+@Tree {
+ @Circle A
+ @FirstSub {
+ @Circle B
+ @FirstSub @Square C
+ @NextSub @Square D
+ }
+ @NextSub @Circle E
+ @NextSub @Circle F
+}
+}
+||7ct
+@Diag {
+@Tree {
+ @Circle A
+ @FirstSub {
+ @Circle B
+ @FirstSub @Square C
+ @NextSub @Square D
+ }
+ @NextSub @Circle E
+ @NextSub @Circle F
+}
+}
+}
+The first subtree is preceded by {@Code "@FirstSub"}, and subsequent
+trees are preceded by {@Code "@NextSub"}. The subtrees are spaced
+at equal separations from each other, with the root centred over
+them, in contrast to the binary tree arrangement in which the two
+subtrees are positioned to the left and right of the root, never
+intruding into the space beneath it.
+@PP
+Although each subtree must contain a node for its root, it is not hard
+to get around this:
+@ID @OneRow {
+@Code @Verbatim {
+@Tree
+{
+@Circle
+@FirstSub @Circle
+@NextSub pathstyle { noline }
+ @Circle outlinestyle { noline }
+ ...
+@NextSub @Circle
+}
+}
+||7ct
+@Diag {
+@Tree
+{
+@Circle
+@FirstSub @Circle
+@NextSub pathstyle { noline }
+ @Circle outlinestyle { noline }
+ ...
+@NextSub @Circle
+}
+}
+}
+Clumsy as this is, it often assists in placing the unenclosed object
+in a way consistent with the surrounding nodes, and offers margins
+and so forth which help with fine-tuning its position.
+@PP
+The fifth subtree symbol, {@Code "@StubSub"}, produces a stub subtree:
+diagrams. @RawIndex { diagrams }
+diagrams.stubsub @SubIndex { @Code "@StubSub" symbol }
+stubsub.diagrams @Index { @Code "@StubSub" symbol (diagrams) }
+@ID @OneRow {
+@Code @Verbatim {
+@Tree {
+@Circle @Math { a }
+@StubSub @Math { T tsub a }
+}
+}
+||7ct
+@Diag {
+@Tree {
+@Circle @Math { a }
+@StubSub @Math { T tsub a }
+}
+}
+}
+Unlike the other subtree symbols, {@Code "@StubSub"} is not followed
+by a subtree with a node for its root; rather, it is followed by an
+arbitrary object, and the path is drawn around this stub object, which
+is placed directly underneath the parent node with zero vertical
+separation. In practice, it is usually necessary to attach margins to
+the following object; the easiest way to do that is to enclose it in
+{@Code "@Box outlinestyle { noline }"}. An example appears below.
+@PP
+It is possible to mix the three subtree types, by having binary tree
+symbols following some nodes, non-binary tree symbols following
+others, and a single {@Code "@StubSub"} following others. However,
+at any one node the subtrees must be all either binary, non-binary,
+or stub.
+@PP
+The subtree symbols have all of the options of {@Code "@Link"}, and
+these apply to the link drawn from the parent of the root of the subtree
+to the root of the subtree (or anticlockwise around the stub object):
+@ID @OneRow {
+@Code @Verbatim {
+@Tree {
+ @Circle A
+ @LeftSub
+ arrow { yes }
+ xlabel { 1 }
+ @Circle B
+ @RightSub
+ arrow { yes }
+ xlabel { 2 }
+ @Circle C
+}
+}
+||7ct
+@Diag {
+@Tree {
+ @Circle A
+ @LeftSub
+ arrow { yes }
+ xlabel { 1 }
+ @Circle B
+ @RightSub
+ arrow { yes }
+ xlabel { 2 }
+ @Circle C
+}
+}
+}
+To get reverse arrows use @Code "arrow { back }" as usual.
+@PP
+The subtree symbols do not need @Code from and @Code to options,
+because they already know which nodes they are linking together. However,
+you may use @Code from or @Code to to give a tag specifying a particular
+diagrams. @RawIndex { diagrams }
+diagrams.from @SubIndex { @Code "from" option }
+from.diagrams @Index { @Code "from" option (diagrams) }
+diagrams. @RawIndex { diagrams }
+diagrams.to @SubIndex { @Code "to" option }
+to.diagrams @Index { @Code "to" option (diagrams) }
+point within the node:
+@ID @OneRow {
+@Code @Verbatim {
+@Tree {
+@Circle
+@LeftSub from { S } to { N }
+ @Isosceles vsize { 2f }
+@RightSub from { S } to { N }
+ @Isosceles vsize { 2f }
+}
+}
+||7ct
+@Diag
+{
+@Tree {
+@Circle
+@LeftSub from { S } to { N }
+ @Isosceles vsize { 2f }
+@RightSub from { S } to { N }
+ @Isosceles vsize { 2f }
+}
+}
+}
+In this example both links go from the @Code S tag of the parent node to the
+@Code N tag of the child node (at the apex of the iscosceles triangle). These
+options also work for {@Code "@StubSub"}, where they refer to the start and
+end of the stub path:
+@ID @OneRow {
+@Code @Verbatim {
+@Tree {
+@Circle @Math { a }
+@StubSub from { SW } to { SE }
+@Box outlinestyle { noline }
+ @Math { T tsub a }
+}
+}
+||7ct
+@Diag {
+@Tree {
+@Circle @Math { a }
+@StubSub from { SW } to { SE }
+@Box outlinestyle { noline }
+ @Math { T tsub a }
+}
+}
+}
+and so the tags both refer to points in the parent node in this case.
+@PP
+The @Code "@LeftSub" and @Code "@RightSub" symbols have variants called
+@Code "@ZeroWidthLeftSub" and @Code "@ZeroWidthRightSub" which are the
+diagrams. @RawIndex { diagrams }
+diagrams.zerowidthleftsub @SubIndex { @Code "@ZeroWidthLeftSub" symbol }
+zerowidthleftsub.diagrams @Index { @Code "@ZeroWidthLeftSub" (diagrams) }
+diagrams. @RawIndex { diagrams }
+diagrams.zerowidthrightsub @SubIndex { @Code "@ZeroWidthRightSub" symbol }
+zerowidthrightsub.diagrams @Index { @Code "@ZeroWidthRightSub" (diagrams) }
+same except that the resulting subtrees consume no width:
+@ID @OneRow {
+@Code @Verbatim {
+@Tree {
+@Circle
+@LeftSub {
+ @Circle
+ @LeftSub @Square
+ @RightSub @Square
+}
+@RightSub {
+ @Circle
+ @LeftSub {
+ @Circle
+ @ZeroWidthLeftSub @Square
+ @ZeroWidthRightSub @Square
+ }
+ @RightSub @Square
+} }
+}
+||7ct
+@Diag {
+@Tree
+{
+@Circle
+@LeftSub {
+ @Circle
+ @LeftSub @Square
+ @RightSub @Square
+}
+@RightSub {
+ @Circle
+ @LeftSub {
+ @Circle
+ @ZeroWidthLeftSub @Square
+ @ZeroWidthRightSub @Square
+ }
+ @RightSub @Square
+}
+}
+}
+}
+There is nothing analogous for the other subtree symbols.
+@PP
+The @Code "@Diag" symbol has a few options for adjusting the appearance
+of the tree. The @Code "treehsep" option determines the horizontal space left
+diagrams. @RawIndex { diagrams }
+diagrams.treehsep @SubIndex { @Code "treehsep" option }
+treehsep.diagrams @Index { @Code "treehsep" option (diagrams) }
+between a root and its left subtree, between a root and its right subtree,
+and between one subtree and the next when @Code "@NextSub" is used. The
+@Code "treevsep" option determines the vertical space left between a root
+diagrams. @RawIndex { diagrams }
+diagrams.treevsep @SubIndex { @Code "treevsep" option }
+treevsep.diagrams @Index { @Code "treevsep" option (diagrams) }
+and its subtrees:
+@ID @OneRow {
+@Code @Verbatim {
+@Diag
+ treehsep { 0c }
+ treevsep { 0c }
+{
+@Tree
+{
+ @Circle A
+ @LeftSub @Square B
+ @RightSub @Square C
+}
+}
+}
+||7ct
+@Diag
+ treehsep { 0c }
+ treevsep { 0c }
+{
+@Tree
+{
+ @Circle A
+ @LeftSub @Square B
+ @RightSub @Square C
+}
+}
+}
+These may also be given to individual subtree symbols; @Code "treevsep"
+works only with @Code "@LeftSub" and {@Code "@FirstSub"}, since these
+determine the vertical separation of all children of their parent.
+@PP
+The @Code "treehindent" option determines where the root of a non-binary
+diagrams. @RawIndex { diagrams }
+diagrams.treehindent @SubIndex { @Code "treehindent" option }
+treehindent.diagrams @Index { @Code "treehindent" option (diagrams) }
+tree is positioned over its subtrees; the value may be @Code "left"
+for at left, @Code "ctr" for centred over them (the default),
+@Code "right" for at the right, or any length, meaning that far from
+the left. Owing to problems behind the scenes, this option may not be
+given to individual subtree symbols; so as a consolation, it is permitted
+as an option to the @Code "@Tree" symbol.
+@PP
+It is not possible to attach tags to nodes within a tree, because
+tags are attached automatically by the tree symbols and any extra
+tags would disrupt the linking. However, you can use @Code "@ShowTags"
+to find out what these automatic tags are, and use them in a subsequent
+links part. For example, the tag attached to the right child of the left
+child of the root of a binary tree is {@Code "L@R@T"}, and in general the
+tag records the path from the root to the node, with @Code "T" added to
+the end. The root always has tag {@Code "T"}. The tree as a whole may
+be retagged in the usual way.
+@PP
+There is an @Code "@HTree" symbol which is the same as
+diagrams. @RawIndex { diagrams }
+diagrams.htree @SubIndex { @Code "@HTree" symbol }
+htree.diagrams @Index { @Code "@HTree" symbol (diagrams) }
+@Code "@Tree" except that the tree grows horizontally (from left to
+right) instead of vertically. The same symbols are available within
+@Code "@HTree" as within {@Code "@Tree"}; @Code "@LeftSub" and
+@Code "@FirstSub" produce what might be called the top subtree, and
+@Code "@RightSub" and @Code "@NextSub" produce lower trees. @Code "@HTree"
+has no @Code "treehindent" option; instead, it has an exactly analogous
+@Code "treevindent" option.
+diagrams. @RawIndex { diagrams }
+diagrams.treevindent @SubIndex { @Code "treevindent" option }
+treevindent.diagrams @Index { @Code "treevindent" option (diagrams) }
+@PP
+@Code "@HTree" may be used to get horizontal lists:
+@ID @OneRow {
+@Code @Verbatim {
+@I @Diag
+ arrow { yes } treehsep { 1c } {
+@HTree {
+ @Node A
+ @FirstSub {
+ @Node B
+ @FirstSub @Node C
+ }
+}
+}
+}
+||7ct
+@I @Diag arrow { yes } treehsep { 1c } {
+@HTree {
+@Node A
+@FirstSub {
+ @Node B
+ @FirstSub @Node C
+}
+}
+}
+}
+The braces are clumsy but necessary. The first node has tag {@Code "T"}, the
+second has tag {@Code "S@T"}, the third has tag {@Code "S@S@T"}, and so on.
+@End @Section
diff --git a/doc/doc/user/draft.eps b/doc/doc/user/draft.eps
new file mode 100644
index 0000000..bfc6e9a
--- /dev/null
+++ b/doc/doc/user/draft.eps
@@ -0,0 +1,289 @@
+%!PS-Adobe-3.0
+%%Creator: Basser Lout Version 3.00 (July 1994)
+%%CreationDate: Fri Sep 9 10:46:13 1994
+%%DocumentData: Binary
+%%DocumentNeededResources: (atend)
+%%DocumentSuppliedResources: (atend)
+%%Pages: (atend)
+%%BoundingBox: 0 0 595 842
+%%EndComments
+
+%%BeginProlog
+%%BeginResource: procset LoutStartUp
+/m { 3 1 roll moveto show } bind def
+/s { exch currentpoint exch pop moveto show } bind def
+/k { exch neg 0 rmoveto show } bind def
+/in { 1440 mul } def
+/cm { 567 mul } def
+/pt { 20 mul } def
+/em { 120 mul } def
+/sp { louts mul } def
+/vs { loutv mul } def
+/ft { loutf mul } def
+/dg { } def
+
+/LoutGraphic {
+ /louts exch def
+ /loutv exch def
+ /loutf exch def
+ /ymark exch def
+ /xmark exch def
+ /ysize exch def
+ /xsize exch def
+} def
+
+/LoutFont
+{ findfont exch scalefont setfont
+} bind def
+
+/LoutRecode {
+ { findfont dup length dict begin
+ {1 index /FID ne {def} {pop pop} ifelse} forall
+ /Encoding exch def
+ currentdict end definefont pop
+ }
+ stopped {}
+} bind def
+
+/BeginEPSF {
+ /LoutEPSFState save def
+ /dict_count countdictstack def
+ /op_count count 1 sub def
+ userdict begin
+ /showpage { } def
+ 0 setgray 0 setlinecap
+ 1 setlinewidth 0 setlinejoin
+ 10 setmiterlimit [] 0 setdash newpath
+ /languagelevel where
+ { pop languagelevel
+ 1 ne
+ { false setstrokeadjust false setoverprint
+ } if
+ } if
+} bind def
+
+/EndEPSF {
+ count op_count sub { pop } repeat
+ countdictstack dict_count sub { end } repeat
+ LoutEPSFState restore
+} bind def
+%%EndResource
+
+%%BeginResource encoding vec1
+/vec1 [
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright
+/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
+/zero /one /two /three /four /five /six /seven
+/eight /nine /colon /semicolon /less /equal /greater /question
+/at /A /B /C /D /E /F /G
+/H /I /J /K /L /M /N /O
+/P /Q /R /S /T /U /V /W
+/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
+/quoteleft /a /b /c /d /e /f /g
+/h /i /j /k /l /m /n /o
+/p /q /r /s /t /u /v /w
+/x /y /z /braceleft /bar /braceright /asciitilde /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /quotedblleft /quotedblright /fi
+/fl /endash /emdash /bullet /dagger /daggerdbl /florin /fraction
+/dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent
+/dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek /caron
+/space /exclamdown /cent /sterling /currency /yen /brokenbar /section
+/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron
+/degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered
+/cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown
+/Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
+/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis
+/Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply
+/Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls
+/agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla
+/egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
+/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide
+/oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis
+] def
+%%EndResource
+
+%%EndProlog
+
+%%BeginSetup
+%%IncludeResource: font Times-Roman
+/Times-Romanfnt86 vec1 /Times-Roman LoutRecode
+/fnt86 { /Times-Romanfnt86 LoutFont } def
+%%IncludeResource: font Times-Bold
+/Times-Boldfnt88 vec1 /Times-Bold LoutRecode
+/fnt88 { /Times-Boldfnt88 LoutFont } def
+%%IncludeResource: font Times-Italic
+/Times-Italicfnt87 vec1 /Times-Italic LoutRecode
+/fnt87 { /Times-Italicfnt87 LoutFont } def
+/LoutExtColour [ currentrgbcolor ] cvx def
+%%EndSetup
+
+%%Page: ? 1
+%%BeginPageSetup
+%%PageResources: font Times-Roman
+%%+ font Times-Bold
+%%+ font Times-Italic
+/pgsave save def
+0.0500 dup scale 10 setlinewidth
+%%EndPageSetup
+
+gsave
+0 16840 translate
+0.0000 rotate
+gsave
+3087 -14622 translate
+17.7734 17.7734 scale
+gsave
+0 0 translate
+62.0000 rotate
+240 fnt86 0.8 0.8 0.8 setrgbcolor 0 -54(DRAFT)m
+grestore
+
+grestore
+
+grestore
+gsave
+0 16840 translate
+0.0000 rotate
+240 fnt88 LoutExtColour setrgbcolor
+5143 -3022(A)m 5376(T)s 22(est)k 5852(Example)s 240 fnt87
+5029 -3520(J)m 6(ef)k 4(fr)k 8(e)k 7(y)k
+5713(H.)s 6006(Kingston)s 240 fnt86 3998 -4021(Basser)m 4695(Department)s
+5883(of)s 6142(Computer)s 7159(Science)s 4446 -4309(The)m 4878(Uni)s 6(v)k 3(ersity)k
+5938(of)s 6197(Sydne)s 3(y)k 6973(2006)s 5512 -4597(Australia)m
+5053 -5050(9)m 5233(September)s 9(,)k 6366(1994)s 240 fnt88
+3097 -5692(Abstract)m 240 fnt86 1897 -6123(This)m 2403(is)s 2643(the)s
+3016(abstract.)s 3959(It')s 13(s)k 4344(v)s 3(ery)k
+4847(short,)s 5466(as)s 1417 -6411(be\207ts)m 2036(a)s 2243(tin)s 3(y)k
+2713(test)s 3145(document.)s 4310(Ho)s 6(we)k 6(v)k 3(er)k
+5273(it)s 5506(is)s 1417 -6699(long)m 1892(enough)s 2647(to)s
+2882(check)s 3489(that)s 3896(things)s 4530(are)s 4870(w)s 2(orking)k
+1417 -6987(as)m 1676(e)s 3(xpected.)k 240 fnt88 1417 -7780(1.)m
+1717(The)s 2176(\207rst)s 2647(section)s 240 fnt86 1897 -8211(This)m
+2408(is)s 2653(the)s 3031(\207rst)s 3488(section.)s 4371(It)s
+4602(too)s 4994(is)s 5239(v)s 3(ery)k 1417 -8499(short,)m
+2045(just)s 2480(a)s 2676(test)s 3097(section,)s 3924(nothing)s
+4746(more)s 5327([)s 5406(1)s 5526(])s 5605(.)s
+1417 -8787(This)m 1912(is)s 2141(the)s 2503(\207rst)s 2944(section.)s
+3811(It)s 4026(too)s 4402(is)s 4631(v)s 3(ery)k
+5123(short,)s 1417 -9075(just)m 1885(a)s 2114(test)s 2568(section,)s
+3428(nothing)s 4283(more.)s 4957(This)s 5505(is)s 1417 -9363(the)m
+1794(\207rst)s 2250(section.)s 3132(It)s 3362(too)s 3753(is)s
+3997(v)s 3(ery)k 4504(short,)s 5127(just)s 5557(a)s
+1417 -9651(test)m 1841(section,)s 2671(nothing)s 3496(more.)s 4140(This)s
+4658(is)s 4910(the)s 5295(\207rst)s 1417 -9939(section.)m 2255(It)s
+2441(too)s 2788(is)s 2988(v)s 3(ery)k 3451(short,)s
+4030(just)s 4416(a)s 4563(test)s 4935(section,)s 1417 -10227(nothing)m
+2254(more.)s 153 fnt86 2805 -10121(i)m 240 fnt86 2952 -10227(This)m
+3482(is)s 3746(the)s 4143(\207rst)s 4619(section.)s 5521(It)s
+1417 -10515(too)m 1794(is)s 2024(v)s 3(ery)k 2517(short,)s
+3126(just)s 3542(a)s 3719(test)s 4121(section,)s 4929(nothing)s
+1417 -10803(more.)m 2037(This)s 2531(is)s 2759(the)s 3120(\207rst)s
+3560(section.)s 4426(It)s 4640(too)s 5015(is)s 5243(v)s 3(ery)k
+1417 -11091(short,)m 2024(just)s 2438(a)s 2613(test)s 3013(section,)s
+3819(nothing)s 4620(more.)s 5240(This)s 1417 -11379(is)m 1655(the)s
+2026(\207rst)s 2476(section.)s 3352(It)s 3576(too)s 3961(is)s
+4199(v)s 3(ery)k 4700(short,)s 5317(just)s 1417 -11667(a)m
+1591(test)s 1990(section,)s 2795(nothing)s 3595(more.)s 4214(This)s
+4707(is)s 4934(the)s 5294(\207rst)s 1417 -11955(section.)m 2255(It)s
+2441(too)s 2788(is)s 2988(v)s 3(ery)k 3451(short,)s
+4030(just)s 4416(a)s 4563(test)s 4935(section,)s 1417 -12243(nothing)m
+2260(more.)s 2922(This)s 3458(is)s 3728(the)s 4131(\207rst)s
+4613(section.)s 5521(It)s 1417 -12531(too)m 1794(is)s 2024(v)s 3(ery)k
+2517(short,)s 3126(just)s 3542(a)s 3719(test)s 4121(section,)s
+4929(nothing)s 1417 -12819(more.)m 2037(This)s 2531(is)s 2759(the)s
+3120(\207rst)s 3560(section.)s 4426(It)s 4640(too)s 5015(is)s
+5243(v)s 3(ery)k 1417 -13107(short,)m 2024(just)s 2438(a)s
+2613(test)s 3013(section,)s 3819(nothing)s 4620(more.)s 5240(This)s
+1417 -13395(is)m 1655(the)s 2026(\207rst)s 2476(section.)s 3352(It)s
+3576(too)s 3961(is)s 4199(v)s 3(ery)k 4700(short,)s
+5317(just)s 1417 -13683(a)m 1591(test)s 1990(section,)s 2795(nothing)s
+3595(more.)s 4214(This)s 4707(is)s 4934(the)s 5294(\207rst)s
+1417 -13971(section.)m 2255(It)s 2441(too)s 2788(is)s 2988(v)s 3(ery)k
+3451(short,)s 4030(just)s 4416(a)s 4563(test)s 4935(section,)s
+1417 -14259(nothing)m 2260(more.)s 2922(This)s 3458(is)s 3728(the)s
+4131(\207rst)s 4613(section.)s 5521(It)s 1417 -14547(too)m 1794(is)s
+2024(v)s 3(ery)k 2517(short,)s 3126(just)s 3542(a)s
+3719(test)s 4121(section,)s 4929(nothing)s 1417 -14835(more.)m 2037(This)s
+2531(is)s 2759(the)s 3120(\207rst)s 3560(section.)s 4426(It)s
+4640(too)s 5015(is)s 5243(v)s 3(ery)k 1417 -15123(short,)m
+2024(just)s 2438(a)s 2613(test)s 3013(section,)s 3819(nothing)s
+4620(more.)s 5240(This)s 6233 -5690(is)m 6471(the)s 6842(\207rst)s
+7292(section.)s 8168(It)s 8392(too)s 8777(is)s 9015(v)s 3(ery)k
+9516(short,)s 10133(just)s 6233 -5978(a)m 6407(test)s 6806(section,)s
+7611(nothing)s 8411(more.)s 9030(This)s 9523(is)s 9750(the)s
+10110(\207rst)s 6233 -6266(section.)m 7071(It)s 7257(too)s 7604(is)s
+7804(v)s 3(ery)k 8267(short,)s 8846(just)s 9232(a)s
+9379(test)s 9751(section,)s 6233 -6554(nothing)m 7076(more.)s 7738(This)s
+8274(is)s 8544(the)s 8947(\207rst)s 9429(section.)s 10337(It)s
+6233 -6842(too)m 6610(is)s 6840(v)s 3(ery)k 7333(short,)s
+7942(just)s 8358(a)s 8535(test)s 8937(section,)s 9745(nothing)s
+6233 -7130(more.)m 6853(This)s 7347(is)s 7575(the)s 7936(\207rst)s
+8376(section.)s 9242(It)s 9456(too)s 9831(is)s 10059(v)s 3(ery)k
+6233 -7418(short,)m 6829(just)s 7232(a)s 7396(test)s 7785(section,)s
+8580(nothing)s 9370(more.)s 153 fnt86 9921 -7312(ii)m 240 fnt86
+10063 -7418(This)m 6233 -7706(is)m 6471(the)s 6842(\207rst)s 7292(section.)s
+8168(It)s 8392(too)s 8777(is)s 9015(v)s 3(ery)k
+9516(short,)s 10133(just)s 6233 -7994(a)m 6407(test)s 6806(section,)s
+7611(nothing)s 8411(more.)s 9030(This)s 9523(is)s 9750(the)s
+10110(\207rst)s 6233 -8282(section.)m 7071(It)s 7257(too)s 7604(is)s
+7804(v)s 3(ery)k 8267(short,)s 8846(just)s 9232(a)s
+9379(test)s 9751(section,)s 6233 -8570(nothing)m 7066(more.)s 153 fnt86
+7617 -8464(a)m 240 fnt86 7785 -8570(This)m 8311(is)s 8571(the)s
+8964(\207rst)s 9436(section.)s 10334(It)s 6233 -8858(too)m 6610(is)s
+6840(v)s 3(ery)k 7333(short,)s 7942(just)s 8358(a)s
+8535(test)s 8937(section,)s 9745(nothing)s 6233 -9146(more.)m 6853(This)s
+7347(is)s 7575(the)s 7936(\207rst)s 8376(section.)s 9242(It)s
+9456(too)s 9831(is)s 10059(v)s 3(ery)k 6233 -9434(short,)m
+6840(just)s 7254(a)s 7429(test)s 7829(section,)s 8635(nothing)s
+9436(more.)s 10056(This)s 6233 -9722(is)m 6471(the)s 6842(\207rst)s
+7292(section.)s 8168(It)s 8392(too)s 8777(is)s 9015(v)s 3(ery)k
+9516(short,)s 10133(just)s 6233 -10010(a)m 6407(test)s 6806(section,)s
+7611(nothing)s 8411(more.)s 9030(This)s 9523(is)s 9750(the)s
+10110(\207rst)s 6233 -10298(section.)m 7071(It)s 7257(too)s 7604(is)s
+7804(v)s 3(ery)k 8267(short,)s 8846(just)s 9232(a)s
+9379(test)s 9751(section,)s 6233 -10586(nothing)m 7076(more.)s 7738(This)s
+8274(is)s 8544(the)s 8947(\207rst)s 9429(section.)s 10337(It)s
+6233 -10874(too)m 6610(is)s 6840(v)s 3(ery)k 7333(short,)s
+7942(just)s 8358(a)s 8535(test)s 8937(section,)s 9745(nothing)s
+6233 -11162(more.)m 240 fnt88 6233 -11761(1.1)m 6533(.)s 6713(The)s
+7172(\207rst)s 7643(subsection)s 240 fnt86 6713 -12192(This)m 7244(is)s
+7509(the)s 7907(\207rst)s 8384(subsection,)s 9560(and)s 10012(what)s
+6233 -12480(is)m 6518(more)s 7135(it)s 7393(has)s 7838(sub-subsections)s
+9479(which)s 10190(are)s 6233 -12768(starting)m 7009(no)s 6(w)k 15(.)k
+240 fnt87 6233 -13415(The)m 6652(\207r)s 2(st)k 7082(sub-subsection)s
+240 fnt86 6713 -13893(This)m 7222(is)s 7465(the)s 7841(\207rst)s
+8296(sub-subsection.)s 9922(There)s 6233 -14181(will)m 6664(be)s 6950(a)s
+7116(second)s 7841(one)s 8247(in)s 8493(a)s 8659(minute.)s
+gsave
+6233 -14668 translate
+240 fnt86 LoutExtColour setrgbcolor 1134 0 0 0 240 288 60 LoutGraphic
+gsave
+0 0 moveto xsize 0 lineto stroke
+grestore
+
+grestore
+122 fnt86 LoutExtColour setrgbcolor 6233 -14836(a)m 192 fnt86 6287 -14921(This)m
+6687(is)s 6874(the)s 7168(\207rst)s 7524(footnote,)s 8270(anchored)s
+9032(to)s 4(w)k 1(ards)k 9692(the)s 9986(end)s
+10323(of)s 6233 -15151(the)m 6530(\207rst)s 6889(section.)s 7590(It)s
+7769(should)s 8343(appear)s 8916(at)s 9117(the)s 9414(bottom)s
+10020(of)s 10242(the)s 6233 -15381(page.)m 6739(Let')s 10(s)k
+7169(hope)s 7590(it)s 7744(comes)s 8281(out)s 8574(right.)s
+
+grestore
+
+pgsave restore
+showpage
+
+%%Trailer
+%%DocumentNeededResources: font Times-Roman
+%%+ font Times-Italic
+%%+ font Times-Bold
+%%DocumentSuppliedResources: procset LoutStartUp
+%%+ encoding vec1
+%%Pages: 1
+%%EOF
diff --git a/doc/doc/user/equ b/doc/doc/user/equ
new file mode 100644
index 0000000..6ff73ad
--- /dev/null
+++ b/doc/doc/user/equ
@@ -0,0 +1,31 @@
+@Chapter
+ @Title { Equations }
+ @Tag { equations }
+@Begin
+@LP
+This chapter explains how to produce mathematical formulas in Lout,
+equations. @Index { equations }
+mathematics. @Index mathematics
+equations. @RawIndex { equations }
+equations.eq @SubIndex { @Code "@Eq" }
+eq.equations @Index { @Code "@Eq" (equations) }
+using the @Code "@Eq" symbol like this:
+@ID @Code {
+"@Eq { big int supp 1 on 0 ` dx over sqrt {1 - x sup 2} = pi over 2 }"
+}
+This example produces
+@ID @Eq { big int supp 1 on 0 ` dx over sqrt {1 - x sup 2} = pi over 2 }
+The @Code "@Eq" symbol looks after all the details of spacing for
+you, and it provides several hundred mathematical symbols.
+@BeginSections
+@Include { equ_intr }
+@Include { equ_symb }
+@Include { equ_vert }
+@Include { equ_spac }
+@Include { equ_disp }
+@Include { equ_defs }
+@Include { equ_summ }
+# @Include { equ_tequ } apparently not offered any more, forget why
+@Include { equ_math }
+@EndSections
+@End @Chapter
diff --git a/doc/doc/user/equ_defs b/doc/doc/user/equ_defs
new file mode 100644
index 0000000..e05deac
--- /dev/null
+++ b/doc/doc/user/equ_defs
@@ -0,0 +1,57 @@
+@Section
+ @Title { Defining new equation formatting symbols }
+@Begin
+@PP
+Whenever you type particular equations or parts of equations repeatedly,
+you can save time by using definitions. Definitions are the subject of
+Section {@NumberOf definitions}, so here we will just give a few examples
+equations. @RawIndex { equations }
+equations.definitions @SubIndex { definitions, use with }
+definitions. @RawIndex { definitions }
+definitions.use.with.equations @SubIndex { use with equations }
+of their use in equation formatting.
+@PP
+Suppose for example that @OneCol @Eq { p sub i ` log sub 2 ` p sub i }
+occurs frequently in your document. Then
+@ID @Code "def epi { p sub i ` log sub 2 ` p sub i }"
+makes the symbol @Code "epi" stand for the object between the braces:
+@ID {
+@Code "big sum from i=1 to n ` epi"
+|7ct
+@Eq { big sum from i=1 to n ` epi }
+}
+Parameters are very useful when parts of the symbol vary:
+@ID @OneRow @Code {
+"def ep"
+" right x"
+"{ p sub x ` log sub 2 ` p sub x"
+"}"
+}
+The parameter @Code x will be replaced by the object just to the right
+of {@Code "ep"}:
+@ID {
+@Code {
+"big sum from i=1 to k ` ep i +"
+"big sum from j=k+1 to n ep j"
+}
+||7ct
+@Eq {
+big sum from i=1 to k ` ep i +
+big sum from j=k+1 to n ep j
+}
+}
+The precedence of the symbols you define will be 100 by default.
+@PP
+To make the symbols of @Code "@Eq" available within such definitions,
+each must be preceded by {@Code "import @Eq"}. As explained in Section
+{@NumberOf definitions}, the definitions go into a file called
+{@Code "mydefs"}, which might then look like this:
+@ID @OneRow @Code {
+"import @Eq"
+"def epi { p sub i ` log sub 2 ` p sub i }"
+""
+"import @Eq"
+"def ep right x { p sub x ` log sub 2 ` p sub x }"
+}
+Use of @Code "epi" and @Code "ep" outside @Code "@Eq" will cause an error.
+@End @Section
diff --git a/doc/doc/user/equ_disp b/doc/doc/user/equ_disp
new file mode 100644
index 0000000..43ce4b8
--- /dev/null
+++ b/doc/doc/user/equ_disp
@@ -0,0 +1,126 @@
+@Section
+ @Title { Displaying equations }
+ @Tag { mathdisplays }
+@Begin
+@PP
+The result of the @Code "@Eq" symbol is an object which, according to the
+displayed.equations @Index { displayed equations }
+golden rule (Section {@NumberOf objects}), may appear anywhere: inside
+a paragraph, inside a table, and so on. In particular, equations are
+often displayed using the @Code "@CentredDisplay" or @Code "@IndentedDisplay"
+symbols from Section {@NumberOf displays}:
+@ID @Code "@IndentedDisplay @Eq { ... }"
+Now displayed equations are often numbered, and often aligned with one
+another on their equals signs. For this there are special display
+symbols which are the the subject of this section. These symbols can
+align and number any display at all, but since in practice they seem to
+be used only with equations, we discuss them here rather than in
+Section {@NumberOf displays} where they really belong.
+@PP
+Let's begin by looking at a first example of a numbered display:
+aligned.displays @Index { aligned displays }
+aligned.equations @Index { aligned equations }
+numbered.displays @Index { numbered displays }
+numbered.equations @Index { numbered equations }
+@BeginAlignedDisplays
+@CentredAlignedNumberedDisplay
+ @Tag { fibeq }
+@Eq { F sub n ^= F sub {n-1} + F sub {n-2} }
+After the display we might have some more text for a while, and then
+we might want a second display, aligned on its equals sign with the
+first, and also numbered in sequence with it:
+@CentredAlignedNumberedDisplay
+@Eq { F sub n - F sub {n-1} ^= F sub {n-2} }
+@EndAlignedDisplays
+Notice that the two displays are centred as a block as well as
+aligned. Altogether there are four ways in which displays vary:
+@BL
+@LI { A display can be raw or not raw (see below); }
+@LI { It can be a {@Code "@Display"}, {@Code "@LeftDisplay"},
+{@Code "@IndentedDisplay"}, {@Code "@QuotedDisplay"},
+{@Code "@CentredDisplay"}, {@Code "@CenteredDisplay"},
+or {@Code "@RightDisplay"}; }
+@LI { It can be aligned or not aligned; }
+@LI { It can be numbered or not numbered. }
+@EL
+All possible combinations are allowed. The display that has everything
+is called
+@ID @Code "@RawCentredAlignedNumberedDisplay"
+By leaving out some or all of {@Code Raw}, {@Code Aligned}, and
+{@Code Numbered}, and by changing or leaving out {@Code Centred},
+we get all these combinations. The two displays
+numbereddisplay. @Index @Code "@NumberedDisplay"
+aligneddisplay. @Index @Code "@AlignedDisplay"
+given earlier were made like this:
+@ID @OneRow @Code {
+"... a first example of a numbered display:"
+"@BeginAlignedDisplays"
+"@CentredAlignedNumberedDisplay"
+" @Tag { fibeq }"
+"@Eq { F sub n ^= F sub { n-1 } + F sub { n-2 } }"
+"After the display we might ... numbered in sequence with it:"
+"@CentredAlignedNumberedDisplay @Eq { F sub n - F sub { n-1 } ^= F sub { n-2 } }"
+"@EndAlignedDisplays"
+"Notice that the two displays are centred ..."
+}
+All numbered displays have an optional @Code "@Tag" option which is
+used for cross referencing (see Section {@NumberOf cross}). Alignment
+and numbering work quite independently; they don't have to start or end
+together, and there can be non-aligned and non-numbered displays among
+the others.
+@PP
+When aligned displays are used, it is necessary to indicate where the
+aligned group begins and ends, by placing @Code "@BeginAlignedDisplays"
+beginaligneddisplays @Index @Code "@BeginAlignedDisplays"
+endaligneddisplays @Index @Code "@EndAlignedDisplays"
+just before the first, and @Code "@EndAlignedDisplays" just after the
+last. The alignment points are indicated by preceding them by the
+symbol {@Code "^"}, so you aren't restricted to aligning at equals
+signs. @Code "@BeginAlignedDisplays" and @Code "@EndAlignedDisplays"
+cannot span across several sections or subsections: the equations
+aligned by them must lie within a single large-scale structure symbol.
+@PP
+In our example of aligned and numbered displays, the two displays
+were separated by some ordinary text. Very often, though, aligned
+displays follow directly after each other. This is a problem, because
+if you have one display directly following another there will be too
+much vertical space between them. This problem was mentioned in
+Section {@NumberOf displays}, and the recommended solution was to
+use a list. However, there are no aligned or numbered (in this sense)
+lists.
+@PP
+Fortunately, each display symbol has a `raw' version, which
+means that no space is inserted above or below the display. Instead,
+raw.displays @Index { raw displays }
+you must insert it yourself using paragraph symbols:
+@ID @OneRow @Code @Verbatim {
+preceding text
+@DP
+@RawAlignedDisplay @Eq { ... }
+@DP
+@RawAlignedNumberedDisplay @Eq { ... }
+@DP
+following text
+}
+You get the right spacing by placing {@Code "@DP"} symbols before,
+between, and after each display; and you get to use the specialized
+displays that you need. Raw and non-raw displays may be numbered and
+aligned together.
+@PP
+Numbered displays are numbered automatically. Depending on where in
+the document they appear, the number might include a chapter number
+or section number, etc. This is controlled by options in the setup
+file; for example, setting @Code "@ChapterNumInDisplays" to @Code Yes
+ensures that numbered displays will be numbered afresh at the beginning
+of each chapter, and that the number will include a chapter number. There
+is also a @Code "@DisplayNumStyle" option which controls the style of
+displays; the default value, {@Code "(num)"}, encloses the number in
+parentheses as is conventional when numbering equations.
+@PP
+Every display symbol has an abbreviated form consisting of @Code "@"
+followed by its capital letters only. For example,
+@Code "@BeginAlignedDisplays" may be abbreviated to {@Code "@BAD"}, and
+the display that has everything to {@Code "@RCAND"}. Owing to an
+unfortunate clash between the initial letters of `raw' and `right',
+@Code "@RightDisplay" and the other right displays have no abbreviations.
+@End @Section
diff --git a/doc/doc/user/equ_intr b/doc/doc/user/equ_intr
new file mode 100644
index 0000000..1c3ea37
--- /dev/null
+++ b/doc/doc/user/equ_intr
@@ -0,0 +1,60 @@
+@Section
+ @Title { Introduction }
+@Begin
+@PP
+The Lout definitions for the @Code "@Eq" symbol are accessed via a setup
+file called {@Code "eq"}, which you must include at the start of your
+document if
+eq.file @Index { @Code "eq" file }
+you want equations, like this:
+@ID @OneRow @Code {
+"@SysInclude { tbl }"
+"@SysInclude { eq }"
+"@SysInclude { doc }"
+"@Doc @Text @Begin"
+"..."
+"@End @Text"
+}
+This shows what to do if you want both tables and equations, but you
+may leave out the line for tables if you don't want them. Setup files
+for specialized packages, such as {@Code "tab"} and {@Code "eq"},
+are best included before the main setup file, but may be included in
+any order.
+@PP
+With the @Code "eq" file included, you may write
+@ID @Code "@Eq { ... }"
+at any point in your document, and the symbols of @Code "@Eq" will be
+available between the braces. Any symbols available outside continue
+to be available inside, which means that equations may be freely mixed
+with other symbols, without restriction.
+@PP
+Equations may appear within a paragraph of text, or they may be
+displayed. {@Code "@Eq"}'s job is to produce an object containing the
+equation; it neither knows nor cares where this equation goes.
+@PP
+To display an equation, use a display symbol like @Code "@IndentedDisplay"
+or @Code "@CentredDisplay" (Section {@NumberOf displays}). For example,
+@ID @Code "@CentredDisplay @Eq { int supp pi on 0 sin ` x = 0 }"
+produces
+@CentredDisplay @Eq { int supp pi on 0 sin ` x = 0 }
+There are also symbols for aligned and numbered displays, which are
+very commonly used with equations. These symbols are the subject of
+Section {@NumberOf mathdisplays}.
+@PP
+To get an equation within a paragraph, it is best to use a variant of
+@Code "@Eq" called {@Code "@E"}. An equation within @Code "@E { ... }"
+will be prevented from breaking across two lines, and its superscripts
+will appear slightly lower, which is desirable within paragraphs.
+equations. @RawIndex { equations }
+equations.e @SubIndex { @Code "@E" }
+eaaa.equations @Index { @Code "@E" (equations) }
+@PP
+In this chapter we show the Lout input at the left, and its
+result at the right:
+@ID {
+@Code "@Eq { {x sup 2 + y sup 2} over 2 }"
+|7ct
+@Eq { {x sup 2 + y sup 2} over 2 }
+}
+Subsequent examples will omit the enclosing {@Code "@Eq { ... }"}.
+@End @Section
diff --git a/doc/doc/user/equ_math b/doc/doc/user/equ_math
new file mode 100644
index 0000000..c665bb1
--- /dev/null
+++ b/doc/doc/user/equ_math
@@ -0,0 +1,212 @@
+# Written by Ludovic Courtès <ludo@gnu.org>, July 2007.
+#
+# Based on:
+# http://lists.planix.com/pipermail/lout-users/2007q2/004355.html .
+
+@Section
+ @Title { The @Code { "@Math" } package }
+ @Tag { math_package }
+@Begin
+
+equations.math @SubIndex { @Code "@Math" }
+
+@PP
+
+The @Code { "@Math" } package provides features similar to those found
+in @Code { "@Eq" } but with improved formula layout. For instance, the
+@Code { "@M" } symbol offers better rendering of equations within
+paragraphs than @Code { "@E" }. To that end, @Code { "@Math" }
+implements the four equation layout styles described by Donald E. Knuth in
+@I { The { @TeX }book } along with the corresponding transition rules
+@Cite { $knuth1984tex }. Namely, depending on its rendering context,
+a math formula may be in one of the following styles:
+
+@BulletList
+@LI { ``display'' style, for formulas displayed on lines by
+themselves; }
+@LI { ``text'' style, for formulas embedded in text; }
+@LI { ``script'' style, for formulas used in superscripts and
+subscripts; }
+@LI { ``subscript'' style, for second-order superscripts and
+subscripts. }
+@EndList
+
+In addition, formulas can be ``cramped'', meaning that exponents are
+lower than usual.
+
+@PP
+Fortunately, you usually don't need to be familiar with these display
+styles and corresponding layout algorithm to use @Code { "@Math" }.
+The sections below summarize the differences from @Code { "@Eq" } as
+well as the new features.
+
+@BeginSubSections
+
+@SubSection @Title { Differences from @Code { "@Eq" } }
+@Begin
+
+@PP
+First and foremost, the Lout definitions for the @Code "@Math" symbol
+are accessed via a setup file called {@Code "math"}, which you must
+include at the start of your document in the usual way:
+
+@ID @OneRow @Code {
+"@SysInclude { math }"
+"@SysInclude { doc }"
+"@Doc @Text @Begin"
+"..."
+"@End @Text"
+}
+
+Note that it is possible to include both @Code "eq" and { @Code "math"
+}. Instead of typing formulas within { @Code "@Eq" } or { @Code "@E" },
+they must be embedded in { @Code "@Math" } or { @Code "@M" },
+respectively.
+@PP
+
+In @Code { "@Math" }, sums, products, integrations and similar large
+operations are laid out according to the current style. For instance,
+the limits of a sum are laid out differently depending on the context:
+
+@BeginAlignedDisplays
+@CAND {
+ @Math { { sum from { i = 0 } to { n } { i sup 2 } } over { x + y } } }
+@CAND {
+ @Math { sum from { i = 0 } to { n } } }
+@EndAlignedDisplays
+
+Similarly, the @Code { "big" } symbol that is used in @Code { "@Eq" } to
+display sums, integrations, etc. is usually not needed: the size of the
+``sigma'' or other symbol automatically adapts to the context.
+@PP
+
+The @Code { "from" } and @Code { "to" } stand-alone symbols found in
+@Code { "@Eq" } are not available. Instead, symbols such as @Code {
+"sum" } that require them have @Code { "from" } and @Code { "to" }
+options instead. For example, instead of
+@ID { @Code { "@Eq { sum from i = 0 to n { i sup 2 } }" } }
+it is necessary to write
+@ID { @Code { "@Math { sum from { i = 0 } to { n } { i sup 2 } }" } }
+The braces are necessary now because @Code { "from" } and @Code { "to" }
+are options of @Code { "sum" }, and it is a general rule of Lout that
+the values of options have to be enclosed in braces.
+@PP
+
+Unlike those of @Code { "@Eq" }, mathematical operators obey standard
+precedence rules. Thus, to get @M { { n + 1 } over 2 }, one must write
+@Code { "@M { { n + 1 } over 2 }" } instead of just
+@Code { "@E { n+1 over 2 }" }.
+
+@PP
+@Code "@Math" generally produces better mathematical layout than
+@Code { "@Eq" }. Consider the following examples rendered with
+@Code "@Math" (on the left) and with @Code "@Eq" (on the right):
+
+@ID { @Math { 2 sup { 2 sup { 2 sup x } } }
+|8ct
+@Eq { 2 sup { 2 sup { 2 sup x } } } }
+
+//
+@RID { @Math { x supp { z supp d on c } on { y supp a on b } }
+|8ct
+@Eq { x supp { z supp d on c } on { y supp a on b } } }
+
+@ID { @Math { { { n + 1 } over 2 } over x }
+|8ct
+@Eq { { { n + 1 } over 2 } over x } }
+
+//
+@RID {
+@Math { a sub 0 + 1 over {
+ a sub 1 + 1 over {
+ a sub 2 + 1 over {
+ a sub 3 + 1 over {
+ a sub 4 } } } } }
+|8ct
+@Eq { a sub 0 + 1 over {
+ a sub 1 + 1 over {
+ a sub 2 + 1 over {
+ a sub 3 + 1 over {
+ a sub 4 } } } } } }
+
+@End @SubSection
+
+@SubSection @Title { New symbols and options }
+@Begin
+
+@LP
+The @Code { "@Math" } symbol has a few options not found in
+@Code { "@Eq" }. The @Code "symbolfont" and @Code "basefont" options
+denote, respectively, the font where symbols are searched for and the font
+where other characters are searched for. These fonts default to Symbol
+and Times, respectively. Note that @Code "@Math" is currently tailored
+to use these fonts so using other fonts may require manual adaptation of
+equation layout.
+
+@PP
+Besides, @Code "@Math" provides several new symbols. Symbols @Code
+"above" and @Code "below" behave similarly to @Code "from" and @Code
+"to" in @Code "@Eq", respectively. In other words, @Code "above" prints
+its left parameter on top of its right parameter, while @Code "below"
+does the opposite operation:
+
+@ID { @Code { "@M { { a above f } + { z below b } }" }
+|8ct
+@M { { a above f } + { z below b } } }
+
+@ID {
+{ @Code {
+"@Math { sum from { { 1 <= i <= p } above"
+" { 1 <= j <= q } above"
+" { 1 <= k <= r } }"
+" { a sub { ij } b sub { jk } c sub { ki } } }" }
+|8ct
+@Math { sum from { { 1 <= i <= p } above
+ { 1 <= j <= q } above
+ { 1 <= k <= r } }
+ { a sub { ij } b sub { jk } c sub { ki } } } } }
+
+@Code "@Math" produces spacing around operators that depends on the type
+of operator (see Section @NumberOf { "equ_spacing" }) and also on the
+current style. When defining new operators for @Code "@Math", it is
+usually desirable to make sure they use spacing consistent with other
+operators. To that end, @Code "@Math" provides spacing symbols similar
+to those found in @Code "@Eq", namely @Code { rel }, @Code { bin } and
+@Code { punct }. However, these symbols differ from their @Code "@Eq"
+counterpart in that they take three parameters: a left parameter, an
+@Code "op" option, and a right parameter. For example,
+@ID @Code "@Math { x bin op { ! } y }"
+produces
+@ID @Math { x bin op { ! } y }
+The left and right parameters are laid out around the operator specified
+by the @Code { op } option, including appropriate spacing.
+
+@PP
+
+Finally, @Code "@Math" offers additional symbols that allow users to
+explicitly specify the style under which part of a math formula is to be
+laid out. These low-level primitives may be useful in specific
+situations such as the one illustrated below:
+
+@ID { @Code {
+"@Math {"
+" lim above @SubScriptStyle { i --> infinity }"
+" f(x) = { g(x) } over { h(x) } }"
+}
+|8ct
+@Math {
+ lim above @SubScriptStyle { i --> infinity }
+ f(x) = { g(x) } over { h(x) } }
+}
+
+@Code "@SuperScriptStyle" and @Code "@SubScriptStyle" lay out their
+right parameter under the ``script'' or ``subscript'' style,
+respectively. @Code "@NumeratorStyle" and @Code "@DenominatorStyle" lay
+out their right parameter as if it where the numerator or denominator of
+a fraction, respectively. Likewise, @Code "@SquareRootStyle" lays out
+its right parameter as if it were below a square root.
+
+@End @SubSection
+
+@EndSubSections
+@End @Section
diff --git a/doc/doc/user/equ_spac b/doc/doc/user/equ_spac
new file mode 100644
index 0000000..c87e9a6
--- /dev/null
+++ b/doc/doc/user/equ_spac
@@ -0,0 +1,106 @@
+@Section
+ @Title { Spacing }
+ @Tag { equ_spacing }
+@Begin
+@PP
+There is a basic rule governing the use of white space characters (space,
+tab, and newline) in the input to Lout: white space between two objects
+affects the result; white space between a symbol and its parameter does
+not. This is explained at length in Section {@NumberOf spaces}.
+@PP
+Although this rule is just right most of the time, it is not adequate
+for equation formatting. Getting the horizontal spacing right in
+equations is a very fiddly business, involving four different sizes of
+space (zero, thin, medium, and thick), and different rules for spacing
+within superscripts and subscripts to those applying outside, according
+to a leading authority @Cite { $knuth1984tex }. {@Code "@Eq"} therefore
+takes the spacing decisions upon itself, and consequently chooses to
+ignore all white space in its input, even between two objects. (The
+simplest way to restore the effect of white space to part of an equation
+is to enclose that part in a @Code "@Font" symbol.)
+@PP
+Every symbol provided by {@Code "@Eq"} has a @I {full name}, which
+equations. @RawIndex { equations }
+equations.fullname @SubIndex { full name of symbol }
+full.name @Index { full name of equation symbol }
+denotes the symbol without any space attached. Many symbols also
+have a @I {short name}, which denotes the same symbol with what
+equations. @RawIndex { equations }
+equations.shortname @SubIndex { short name of symbol }
+short.name @Index { short name of equation symbol }
+{@Code "@Eq"} considers to be an appropriate amount of space for that
+symbol attached to it. For example, @Eq { lessequal } has full name
+@Code lessequal and short name {@Code "<="}:
+@IL
+@LI {
+@Code "a lessequal b"
+|7ct
+@Eq { a lessequal b }
+}
+@LI {
+@Code "a <= b"
+|7ct
+@Eq { a <= b }
+}
+@EL
+{@Code "@Eq"} puts a thick space around relation symbols like {@Code "<="},
+equations. @RawIndex { equations }
+equations.relation.symbols @SubIndex { relation symbols }
+relation.symbols @Index { relation symbols in equations }
+a medium space around binary operator symbols like {@Code "+"}, and a thin
+equations. @RawIndex { equations }
+equations.binaryoperators @SubIndex { binary operator symbols }
+binaryoperators @Index { binary operator symbols in equations }
+space after punctuation symbols (@Code ";" and {@Code ","}); except that
+equations. @RawIndex { equations }
+equations.punctuation @SubIndex { punctuation symbols }
+punctuation @Index { punctuation symbols in equations }
+in places where the symbols appear in a smaller size (superscripts,
+subscripts, etc.), these spaces are omitted. No other horizontal space
+is ever inserted.
+@PP
+The short names have been carefully designed to produce good-looking
+mathematics most of the time. It is best to rely on them in the first
+instance and only think about spacing when the result is not pleasing. In
+that case, {@Code "@Eq"}'s space can be removed by using the full names,
+equations. @RawIndex { equations }
+equations.spacing @SubIndex { spacing symbols }
+spacing.equations @Index { spacing symbols in equations }
+and thin, medium and thick space can be added using the following symbols:
+@ID @Tab
+ vmargin { 0.5vx }
+ @Fmta { @Col A ! @Col B }
+{
+@Rowa
+ A { @Code "`" }
+ B { {@Code "0.18f"} ({@Code "0.018f"} in subscripts, etc.) }
+@Rowa
+ A { @Code "``" }
+ B { {@Code "0.24f"} ({@Code "0.024f"} in subscripts, etc.) }
+@Rowa
+ A { @Code "```" }
+ B { {@Code "0.30f"} ({@Code "0.030f"} in subscripts, etc.) }
+}
+where @Code "1f" is the current font size. These symbols have low
+precedence. The @Code "&" symbol from raw Lout is also available;
+the @Code "s" unit has value 0 and so is not very useful, but one can
+write @Code "&2m" for example for a two em space. The full names are
+tedious to remember, so {@Code "@Eq"} provides a @Code "non" symbol
+equations. @RawIndex { equations }
+equations.non @SubIndex { @Code "non" symbol }
+non.equations @Index { @Code "non" symbol (equations) }
+which removes spaces from its right parameter; thus @Code "non <=" is
+equivalent to {@Code "lessequal"}. There are also {@Code "rel"},
+equations. @RawIndex { equations }
+equations.rel @SubIndex { @Code "rel" symbol }
+rel.equations @Index { @Code "rel" symbol (equations) }
+{@Code "bin"}, and {@Code "punct"} symbols for telling {@Code "@Eq"}
+equations. @RawIndex { equations }
+equations.bin @SubIndex { @Code "bin" symbol }
+bin.equations @Index { @Code "bin" symbol (equations) }
+equations. @RawIndex { equations }
+equations.punct @SubIndex { @Code "punct" symbol }
+punct.equations @Index { @Code "punct" symbol (equations) }
+to add space to the following symbol as though it was a relation symbol,
+binary operator, or punctuation symbol.
+@End @Section
diff --git a/doc/doc/user/equ_summ b/doc/doc/user/equ_summ
new file mode 100644
index 0000000..5b3c1aa
--- /dev/null
+++ b/doc/doc/user/equ_summ
@@ -0,0 +1,782 @@
+@Section
+ @Title { Summary }
+@Begin
+@PP
+This section is a complete list of the symbols provided by
+{@Code "@Eq"}. We divide them into auxiliary, parameterized, short names
+(further divided into relations, binary operators, and punctuation),
+and full names. The auxiliary symbols are:
+@ID @Tab
+ vmargin { 0.5vx }
+ @Fmta { @Col A ! @Col B }
+{
+@Rowa
+ A { @Code "`" }
+ B { Thin space }
+@Rowa
+ A { @Code "``" }
+ B { Medium space }
+@Rowa
+ A { @Code "```" }
+ B { Thick space }
+@Rowa
+ A { @Code "bin x" }
+ B { Treat @Code x as a binary operator }
+@Rowa
+ A { @Code "rel x" }
+ B { Treat @Code x as a relation }
+@Rowa
+ A { @Code "punct x" }
+ B { Treat @Code x as a punctuation symbol }
+@Rowa
+ A { @Code "non x" }
+ B { Remove spaces normally put into @Code x }
+@Rowa
+ A { @Code "vctr x" }
+ B { Centre @Code x vertically
+equations. @RawIndex { equations }
+equations.vctr @SubIndex { @Code "vctr" symbol }
+vctr.equations @Index { @Code "vctr" symbol (equations) }
+}
+@Rowa
+ A { @Code "big x" }
+ B { Make @Code x larger }
+@Rowa
+ A { @Code "small x" }
+ B { Make @Code x smaller }
+}
+Here are all the parameterized symbols, shown in groups of equal
+precedence, with the precedence itself at right:
+@ID @OneRow lines @Break {
+@Code "matrix pmatrix bmatrix brmatrix fmatrix cmatrix amatrix not" (100)
+@Code "dot dotdot hat tilde vec dyad overbar underbar" (62)
+@Code "sup sub tsub supp" (60) @Code "on ton" (61)
+@Code "from to widefrom wideto" (58)
+@Code "sqrt root" (56)
+@Code "over frac" (54)
+@Code "col lcol ccol rcol mcol" (52)
+@Code "row axisrow" (50)
+# @Code "above labove cabove rabove mabove" (52)
+# @Code "nextcol" (50)
+}
+See Section {@NumberOf symbols} for examples of matrices. Here are some
+examples of the other symbols:
+@IL
+
+@LI {
+@Code "x dot"
+|7ct
+@Eq { x dot }
+equations. @RawIndex { equations }
+equations.dot @SubIndex { @Code "dot" symbol }
+dot.equations @Index { @Code "dot" symbol (equations) }
+}
+
+@LI {
+@Code "x dotdot"
+|7ct
+@Eq { x dotdot }
+equations. @RawIndex { equations }
+equations.dotdot @SubIndex { @Code "dotdot" symbol }
+dotdot.equations @Index { @Code "dotdot" symbol (equations) }
+}
+
+@LI {
+@Code "x hat"
+|7ct
+@Eq { x hat }
+equations. @RawIndex { equations }
+equations.hat @SubIndex { @Code "hat" symbol }
+hat.equations @Index { @Code "hat" symbol (equations) }
+}
+
+@LI {
+@Code "x tilde"
+|7ct
+@Eq { x tilde }
+equations. @RawIndex { equations }
+equations.tilde @SubIndex { @Code "tilde" symbol }
+tilde.equations @Index { @Code "tilde" symbol (equations) }
+}
+
+@LI {
+@Code "x vec"
+|7ct
+@Eq { x vec }
+equations. @RawIndex { equations }
+equations.vec @SubIndex { @Code "vec" symbol }
+vec.equations @Index { @Code "vec" symbol (equations) }
+}
+
+@LI {
+@Code "x dyad"
+|7ct
+@Eq { x dyad }
+equations. @RawIndex { equations }
+equations.dyad @SubIndex { @Code "dyad" symbol }
+dyad.equations @Index { @Code "dyad" symbol (equations) }
+}
+
+@LI {
+@Code "x+y overbar"
+|7ct
+@Eq { x+y overbar }
+equations. @RawIndex { equations }
+equations.overbar @SubIndex { @Code "overbar" symbol }
+overbar.equations @Index { @Code "overbar" symbol (equations) }
+}
+
+@LI {
+@Code "x+y underbar"
+|7ct
+@Eq { x+y underbar }
+equations. @RawIndex { equations }
+equations.underbar @SubIndex { @Code "underbar" symbol }
+underbar.equations @Index { @Code "underbar" symbol (equations) }
+}
+
+@EL
+These marks are centred over the preceding object, except the last two
+which are extended to the width of the object.
+@IL
+
+@LI {
+@Code "a sup b"
+|7ct
+@Eq {a sup b}
+}
+
+@LI {
+@Code "a sub b"
+|7ct
+@Eq {a sub b}
+}
+
+@LI {
+@Code "W tsub b"
+|7ct
+@Eq {W tsub b}
+}
+
+@LI {
+@Code "a supp b on c"
+|7ct
+@Eq {a supp b on c}
+}
+
+@LI {
+@Code "W supp b ton c"
+|7ct
+@Eq {W supp b ton c}
+}
+
+@EL
+Note that @Code "supp" and @Code "on" (or {@Code "ton"}) must be used
+together as shown; @Code "tsub" and @Code "ton" are exactly like
+@Code "sub" and @Code "on" except that the subscript is tucked in.
+@IL
+
+@LI {
+@Code "big sum from i"
+|7ct
+@Eq {big sum from i}
+}
+
+@LI {
+@Code "big prod to j"
+|7ct
+@Eq {big prod to j}
+}
+
+@LI {
+@Code { "{a, ... , z} widefrom"
+"{90d @Rotate blbrace}" }
+|7ct
+@Eq { {a, ... , z} widefrom {90d @Rotate blbrace} }
+equations. @RawIndex { equations }
+equations.widefrom @SubIndex { @Code "widefrom" symbol }
+widezzzfrom.equations @Index { @Code "widefrom" symbol (equations) }
+}
+
+@LI {
+@Code "{a, ... , z} wideto minus"
+|7ct
+@Eq { {a, ... , z} wideto minus }
+equations. @RawIndex { equations }
+equations.wideto @SubIndex { @Code "wideto" symbol }
+widezzzto.equations @Index { @Code "wideto" symbol (equations) }
+}
+
+@EL
+@Code "widefrom" and @Code "wideto" are like @Code "from" and
+@Code "to" except that they horizontally scale the right parameter
+to the width of the left.
+@IL
+
+@LI {
+@Code "sqrt {x over y}"
+|7ct
+@Eq { sqrt {x over y} }
+equations. @RawIndex { equations }
+equations.sqrt @SubIndex { @Code "sqrt" symbol }
+sqrt.equations @Index { @Code "sqrt" symbol (equations) }
+}
+
+@LI {
+@Code "3 root {x over y}"
+|7ct
+@Eq { 3 root {x over y} }
+equations. @RawIndex { equations }
+equations.root @SubIndex { @Code "root" symbol }
+root.equations @Index { @Code "root" symbol (equations) }
+}
+
+@EL
+The left parameter of @Code "root" may be any object. Here are
+four ways to denote division:
+@IL
+
+@LI {
+@Code "2 over 3"
+|7ct
+@Eq { 2 over 3 }
+equations. @RawIndex { equations }
+equations.over @SubIndex { @Code "over" symbol }
+over.equations @Index { @Code "over" symbol (equations) }
+}
+
+@LI {
+@Code "2 frac 3"
+|7ct
+@Eq { 2 frac 3 }
+equations. @RawIndex { equations }
+equations.frac @SubIndex { @Code "frac" symbol }
+frac.equations @Index { @Code "frac" symbol (equations) }
+}
+
+@LI {
+@Code "2 div 3"
+|7ct
+@Eq { 2 div 3 }
+equations. @RawIndex { equations }
+equations.div @SubIndex { @Code "div" symbol }
+div.equations @Index { @Code "div" symbol (equations) }
+}
+
+@LI {
+@Code "2 slash 3"
+|7ct
+@Eq { 2 slash 3 }
+equations. @RawIndex { equations }
+equations.slash @SubIndex { @Code "slash" symbol }
+slash.equations @Index { @Code "slash" symbol (equations) }
+}
+
+@EL
+The @Code "div" symbol is a binary operator (see below), and
+@Code "slash" is the full name for the @Code "/" character from
+the Adobe Symbol font. You can't use @Code "/" itself, because
+it is one of Lout's special symbols.
+@PP
+The following short names define relations (that is, they have a thick
+space on each side):
+@DP
+ragged @Break {
+"<" @Dbl @Eq { < }
+">" @Dbl @Eq { > }
+"=" @Dbl @Eq { = }
+"<=" @Dbl @Eq { <= }
+"prec" @Dbl @Eq { prec }
+"preceq" @Dbl @Eq { preceq }
+"<<" @Dbl @Eq { << }
+"subset" @Dbl @Eq { subset }
+"subseteq" @Dbl @Eq { subseteq }
+"sqsubseteq" @Dbl @Eq { sqsubseteq }
+"in" @Dbl @Eq { in }
+"vdash" @Dbl @Eq { vdash }
+"smile" @Dbl @Eq { smile }
+"frown" @Dbl @Eq { frown }
+">=" @Dbl @Eq { >= }
+"succ" @Dbl @Eq { succ }
+"succeq" @Dbl @Eq { succeq }
+">>" @Dbl @Eq { >> }
+"supset" @Dbl @Eq { supset }
+"supseteq" @Dbl @Eq { supseteq }
+"sqsupseteq" @Dbl @Eq { sqsupseteq }
+"ni" @Dbl @Eq { ni }
+"dashv" @Dbl @Eq { dashv }
+"mid" @Dbl @Eq { mid }
+"parallel" @Dbl @Eq { parallel }
+"==" @Dbl @Eq { == }
+"~" @Dbl @Eq { ~ }
+"-~" @Dbl @Eq { -~ }
+"asymp" @Dbl @Eq { asymp }
+"~~" @Dbl @Eq { ~~ }
+"=~" @Dbl @Eq { =~ }
+"bowtie" @Dbl @Eq { bowtie }
+"propto" @Dbl @Eq { propto }
+"models" @Dbl @Eq { models }
+"doteq" @Dbl @Eq { doteq }
+"trieq" @Dbl @Eq { trieq }
+"perp" @Dbl @Eq { perp }
+"notsub" @Dbl @Eq { notsub }
+"notin" @Dbl @Eq { notin }
+"!=" @Dbl @Eq { != }
+"<->" @Dbl @Eq { <-> }
+"<--" @Dbl @Eq { <-- }
+"-->" @Dbl @Eq { --> }
+"up" @Dbl @Eq { up }
+"down" @Dbl @Eq { down }
+"<=>" @Dbl @Eq { <=> }
+"<==" @Dbl @Eq { <== }
+"==>" @Dbl @Eq { ==> }
+"dblup" @Dbl @Eq { dblup }
+"dbldown" @Dbl @Eq { dbldown }
+":" @Dbl @Eq { : }
+"::" @Dbl @Eq { :: }
+":=" @Dbl @Eq { := }
+}
+@DP
+These can be negated by preceding them with {@Code "not"}, as in
+equations. @RawIndex { equations }
+equations.not @SubIndex { @Code "not" symbol }
+not.equations @Index { @Code "not" symbol (equations) }
+negation. @Index { negation of equation symbols }
+{@Code "not =="}, for example, which yields {@Eq { not == }}. The
+following short names define binary operators (medium space on each side):
+@DP
+ragged @Break {
+"+" @Dbl @Eq { + }
+"-" @Dbl @Eq { - }
+"+-" @Dbl @Eq { +- }
+"-+" @Dbl @Eq { -+ }
+"setminus" @Dbl @Eq { setminus }
+"cdot" @Dbl @Eq { cdot }
+"times" @Dbl @Eq { times }
+"*" @Dbl @Eq { * }
+"circ" @Dbl @Eq { circ }
+"div" @Dbl @Eq { div }
+"cap" @Dbl @Eq { cap }
+"cup" @Dbl @Eq { cup }
+"uplus" @Dbl @Eq { uplus }
+"sqcap" @Dbl @Eq { sqcap }
+"sqcup" @Dbl @Eq { sqcup }
+"triangleleft" @Dbl @Eq { triangleleft }
+"triangleright" @Dbl @Eq { triangleright }
+"wr" @Dbl @Eq { wr }
+"bigcirc" @Dbl @Eq { bigcirc }
+"bigtriangleup" @Dbl @Eq { bigtriangleup }
+"bigtriangledown"@Dbl @Eq { bigtriangledown }
+"vee" @Dbl @Eq { vee }
+"wedge" @Dbl @Eq { wedge }
+"oplus" @Dbl @Eq { oplus }
+"ominus" @Dbl @Eq { ominus }
+"otimes" @Dbl @Eq { otimes }
+"oslash" @Dbl @Eq { oslash }
+"odot" @Dbl @Eq { odot }
+"dagger" @Dbl @Eq { dagger }
+"daggerdbl" @Dbl @Eq { daggerdbl }
+"amalg" @Dbl @Eq { amalg }
+}
+@DP
+The following names define arrow symbols (no extra space):
+@DP
+ragged @Break {
+"leftarrow" @Dbl @Eq { leftarrow }
+"longleftarrow" @Dbl @Eq { longleftarrow }
+"dblleftarrow" @Dbl @Eq { dblleftarrow }
+"dbllongleftarrow" @Dbl @Eq { dbllongleftarrow }
+"rightarrow" @Dbl @Eq { rightarrow }
+"longrightarrow" @Dbl @Eq { longrightarrow }
+"dblrightarrow" @Dbl @Eq { dblrightarrow }
+"dbllongrightarrow" @Dbl @Eq { dbllongrightarrow }
+"leftrightarrow" @Dbl @Eq { leftrightarrow }
+"longleftrightarrow" @Dbl @Eq { longleftrightarrow }
+"dblleftrightarrow" @Dbl @Eq { dblleftrightarrow }
+{ 1.15i @Wide @HScale "dbllongleftrightarrow" } @Dbl @Eq { dbllongleftrightarrow }
+"mapsto" @Dbl @Eq { mapsto }
+"longmapsto" @Dbl @Eq { longmapsto }
+"hookleftarrow" @Dbl @Eq { hookleftarrow }
+"hookrightarrow" @Dbl @Eq { hookrightarrow }
+"leadsto" @Dbl @Eq { leadsto }
+"leftharpoonup" @Dbl @Eq { leftharpoonup }
+"rightharpoonup" @Dbl @Eq { rightharpoonup }
+"leftharpoondown" @Dbl @Eq { leftharpoondown }
+"rightharpoondown" @Dbl @Eq { rightharpoondown }
+"rightleftharpoons" @Dbl @Eq { rightleftharpoons }
+"uparrow" @Dbl @Eq { uparrow }
+"dbluparrow" @Dbl @Eq { dbluparrow }
+"downarrow" @Dbl @Eq { downarrow }
+"dbldownarrow" @Dbl @Eq { dbldownarrow }
+"updownarrow" @Dbl @Eq { updownarrow }
+"dblupdownarrow" @Dbl @Eq { dblupdownarrow }
+"nearrow" @Dbl @Eq { nearrow }
+"searrow" @Dbl @Eq { searrow }
+"swarrow" @Dbl @Eq { swarrow }
+"nwarrow" @Dbl @Eq { nwarrow }
+}
+@DP
+The following names define punctuation symbols (thin space on the
+right-hand side):
+@DP
+ragged @Break {
+";" @Dbl @Eq { ; }
+"," @Dbl @Eq { , }
+"col" @Dbl @Eq { col }
+}
+@DP
+The following symbols are used in ways typified by the large sum and
+product symbols. In display equations they should be preceded by the
+@Code "big" symbol:
+@DP
+ragged @Break {
+"sum" @Dbl @Eq { sum }
+"prod" @Dbl @Eq { prod }
+"coprod" @Dbl @Eq { coprod }
+@LP
+"int" @Dbl @Eq { int }
+"oint" @Dbl @Eq { oint }
+"bcap" @Dbl @Eq { bcap }
+@LP
+"bcup" @Dbl @Eq { bcup }
+"bvee" @Dbl @Eq { bvee }
+"bwedge" @Dbl @Eq { bwedge }
+@LP
+"bodot" @Dbl @Eq { bodot }
+"botimes" @Dbl @Eq { botimes }
+"boplus" @Dbl @Eq { boplus }
+@LP
+"buplus" @Dbl @Eq { buplus }
+}
+@DP
+The following symbols are defined so that they will appear in Roman,
+as is conventional for them in equations:
+@DP
+ragged @Break {
+"arccos" @Dbl @Eq { arccos }
+"arcsin" @Dbl @Eq { arcsin }
+"arctan" @Dbl @Eq { arctan }
+"arg" @Dbl @Eq { arg }
+"cos" @Dbl @Eq { cos }
+"cosh" @Dbl @Eq { cosh }
+"cot" @Dbl @Eq { cot }
+"coth" @Dbl @Eq { coth }
+"csc" @Dbl @Eq { csc }
+"deg" @Dbl @Eq { deg }
+"det" @Dbl @Eq { det }
+"dim" @Dbl @Eq { dim }
+"exp" @Dbl @Eq { exp }
+"gcd" @Dbl @Eq { gcd }
+"hom" @Dbl @Eq { hom }
+"inf" @Dbl @Eq { inf }
+"ker" @Dbl @Eq { ker }
+"lg" @Dbl @Eq { lg }
+"lim" @Dbl @Eq { lim }
+"liminf" @Dbl @Eq { liminf }
+"limsup" @Dbl @Eq { limsup }
+"ln" @Dbl @Eq { ln }
+"log" @Dbl @Eq { log }
+"max" @Dbl @Eq { max }
+"min" @Dbl @Eq { min }
+"Pr" @Dbl @Eq { Pr }
+"sec" @Dbl @Eq { sec }
+"sin" @Dbl @Eq { sin }
+"sinh" @Dbl @Eq { sinh }
+"supr" @Dbl @Eq { supr }
+"tan" @Dbl @Eq { tan }
+"tanh" @Dbl @Eq { tanh }
+"mod" @Dbl @Eq { mod }
+}
+@DP
+The following symbols are also defined to ensure that they will appear
+in Roman:
+@DP
+ragged @Break {
+"0" @Dbl @Eq { 0 }
+"1" @Dbl @Eq { 1 }
+"2" @Dbl @Eq { 2 }
+"3" @Dbl @Eq { 3 }
+"4" @Dbl @Eq { 4 }
+"5" @Dbl @Eq { 5 }
+"6" @Dbl @Eq { 6 }
+"7" @Dbl @Eq { 7 }
+"8" @Dbl @Eq { 8 }
+"9" @Dbl @Eq { 9 }
+"!" @Dbl @Eq { ! }
+"?" @Dbl @Eq { ? }
+"%" @Dbl @Eq { % }
+"(" @Dbl @Eq { ( }
+")" @Dbl @Eq { ) }
+"[" @Dbl @Eq { [ }
+"]" @Dbl @Eq { ] }
+}
+@DP
+The following symbols make good @Code atleft and @Code atright parameters
+of the @Code matrix symbol:
+@LP
+@LP
+ragged @Break {
+"lpar" @Dbl @Eq { lpar }
+"blpar" @Dbl @Eq { blpar }
+"rpar" @Dbl @Eq { rpar }
+"brpar" @Dbl @Eq { brpar }
+"lbrack" @Dbl @Eq { lbrack }
+"blbrack" @Dbl @Eq { blbrack }
+"rbrack" @Dbl @Eq { rbrack }
+"brbrack" @Dbl @Eq { brbrack }
+"lbrace" @Dbl @Eq { lbrace }
+"blbrace" @Dbl @Eq { blbrace }
+"rbrace" @Dbl @Eq { rbrace }
+"brbrace" @Dbl @Eq { brbrace }
+"lfloor" @Dbl @Eq { lfloor }
+"blfloor" @Dbl @Eq { blfloor }
+"rfloor" @Dbl @Eq { rfloor }
+"brfloor" @Dbl @Eq { brfloor }
+"lceil" @Dbl @Eq { lceil }
+"blceil" @Dbl @Eq { blceil }
+"rceil" @Dbl @Eq { rceil }
+"brceil" @Dbl @Eq { brceil }
+"langle" @Dbl @Eq { langle }
+"blangle" @Dbl @Eq { blangle }
+"rangle" @Dbl @Eq { rangle }
+"brangle" @Dbl @Eq { brangle }
+}
+@LP
+@LP
+Here are some miscellaneous symbols:
+@DP
+ragged @Break {
+"hbar" @Dbl @Eq { hbar }
+"Re" @Dbl @Eq { Re }
+"Im" @Dbl @Eq { Im }
+"partial" @Dbl @Eq { partial }
+"infty" @Dbl @Eq { infty }
+"prime" @Dbl @Eq { prime }
+"nabla" @Dbl @Eq { nabla }
+"surd" @Dbl @Eq { surd }
+"top" @Dbl @Eq { top }
+"bot" @Dbl @Eq { bot }
+"dbar" @Dbl @Eq { dbar }
+"triangle" @Dbl @Eq { triangle }
+"backslash" @Dbl @Eq { backslash }
+"forall" @Dbl @Eq { forall }
+"exists" @Dbl @Eq { exists }
+"neg" @Dbl @Eq { neg }
+"circle" @Dbl @Eq { circle }
+"filledcircle" @Dbl @Eq { filledcircle }
+"square" @Dbl @Eq { square }
+"ldots" @Dbl @Eq { ldots }
+"cdots" @Dbl @Eq { cdots }
+"vdots" @Dbl @Eq { vdots }
+"ddots" @Dbl @Eq { ddots }
+"del" @Dbl @Eq { del }
+"grad" @Dbl @Eq { grad }
+"triangleup" @Dbl @Eq { triangleup }
+"triangledown" @Dbl @Eq { triangledown }
+"..." @Dbl @Eq { ... }
+",...," @Dbl @Eq { ,..., }
+"half" @Dbl @Eq { half }
+"third" @Dbl @Eq { third }
+"'" @Dbl @Eq { ' }
+"empty" @Dbl @Eq { empty }
+}
+@DP
+Finally, here is the long list of full names from the Adobe Symbol font;
+these are as for the @Code "@Sym" symbol of Section {@NumberOf characters},
+but within equations you don't type {@Code "@Sym"}:
+@DP
+ragged @Break {
+"space" @Dbl @Eq { space }
+"exclam" @Dbl @Eq { exclam }
+"universal" @Dbl @Eq { universal }
+"numbersign" @Dbl @Eq { numbersign }
+"existential" @Dbl @Eq { existential }
+"percent" @Dbl @Eq { percent }
+"ampersand" @Dbl @Eq { ampersand }
+"suchthat" @Dbl @Eq { suchthat }
+"parenleft" @Dbl @Eq { parenleft }
+"parenright" @Dbl @Eq { parenright }
+"asteriskmath" @Dbl @Eq { asteriskmath }
+"plus" @Dbl @Eq { plus }
+"comma" @Dbl @Eq { comma }
+"minus" @Dbl @Eq { minus }
+"period" @Dbl @Eq { period }
+"slash" @Dbl @Eq { slash }
+"zero" @Dbl @Eq { zero }
+"one" @Dbl @Eq { one }
+"two" @Dbl @Eq { two }
+"three" @Dbl @Eq { three }
+"four" @Dbl @Eq { four }
+"five" @Dbl @Eq { five }
+"six" @Dbl @Eq { six }
+"seven" @Dbl @Eq { seven }
+"eight" @Dbl @Eq { eight }
+"nine" @Dbl @Eq { nine }
+"colon" @Dbl @Eq { colon }
+"semicolon" @Dbl @Eq { semicolon }
+"less" @Dbl @Eq { less }
+"equal" @Dbl @Eq { equal }
+"greater" @Dbl @Eq { greater }
+"question" @Dbl @Eq { question }
+"congruent" @Dbl @Eq { congruent }
+"Alpha" @Dbl @Eq { Alpha }
+"Beta" @Dbl @Eq { Beta }
+"Chi" @Dbl @Eq { Chi }
+"Delta" @Dbl @Eq { Delta }
+"Epsilon" @Dbl @Eq { Epsilon }
+"Phi" @Dbl @Eq { Phi }
+"Gamma" @Dbl @Eq { Gamma }
+"Eta" @Dbl @Eq { Eta }
+"Iota" @Dbl @Eq { Iota }
+"thetaone" @Dbl @Eq { thetaone }
+"Kappa" @Dbl @Eq { Kappa }
+"Lambda" @Dbl @Eq { Lambda }
+"Mu" @Dbl @Eq { Mu }
+"Nu" @Dbl @Eq { Nu }
+"Omicron" @Dbl @Eq { Omicron }
+"Pi" @Dbl @Eq { Pi }
+"Theta" @Dbl @Eq { Theta }
+"Rho" @Dbl @Eq { Rho }
+"Sigma" @Dbl @Eq { Sigma }
+"Tau" @Dbl @Eq { Tau }
+"Upsilon" @Dbl @Eq { Upsilon }
+"sigmaone" @Dbl @Eq { sigmaone }
+"Omega" @Dbl @Eq { Omega }
+"Xi" @Dbl @Eq { Xi }
+"Psi" @Dbl @Eq { Psi }
+"Zeta" @Dbl @Eq { Zeta }
+"bracketleft" @Dbl @Eq { bracketleft }
+"therefore" @Dbl @Eq { therefore }
+"bracketright" @Dbl @Eq { bracketright }
+"perpendicular" @Dbl @Eq { perpendicular }
+"underscore" @Dbl @Eq { underscore }
+"radicalex" @Dbl @Eq { radicalex }
+"alpha" @Dbl @Eq { alpha }
+"beta" @Dbl @Eq { beta }
+"chi" @Dbl @Eq { chi }
+"delta" @Dbl @Eq { delta }
+"epsilon" @Dbl @Eq { epsilon }
+"phi" @Dbl @Eq { phi }
+"gamma" @Dbl @Eq { gamma }
+"eta" @Dbl @Eq { eta }
+"iota" @Dbl @Eq { iota }
+"phione" @Dbl @Eq { phione }
+"kappa" @Dbl @Eq { kappa }
+"lambda" @Dbl @Eq { lambda }
+"mu" @Dbl @Eq { mu }
+"nu" @Dbl @Eq { nu }
+"omicron" @Dbl @Eq { omicron }
+"pi" @Dbl @Eq { pi }
+"theta" @Dbl @Eq { theta }
+"rho" @Dbl @Eq { rho }
+"sigma" @Dbl @Eq { sigma }
+"tau" @Dbl @Eq { tau }
+"upsilon" @Dbl @Eq { upsilon }
+"omegaone" @Dbl @Eq { omegaone }
+"omega" @Dbl @Eq { omega }
+"xi" @Dbl @Eq { xi }
+"psi" @Dbl @Eq { psi }
+"zeta" @Dbl @Eq { zeta }
+"braceleft" @Dbl @Eq { braceleft }
+"bar" @Dbl @Eq { bar }
+"braceright" @Dbl @Eq { braceright }
+"similar" @Dbl @Eq { similar }
+"Upsilonone" @Dbl @Eq { Upsilonone }
+"minute" @Dbl @Eq { minute }
+"lessequal" @Dbl @Eq { lessequal }
+"fraction" @Dbl @Eq { fraction }
+"infinity" @Dbl @Eq { infinity }
+"florin" @Dbl @Eq { florin }
+"club" @Dbl @Eq { club }
+"diamond" @Dbl @Eq { diamond }
+"heart" @Dbl @Eq { heart }
+"spade" @Dbl @Eq { spade }
+"arrowboth" @Dbl @Eq { arrowboth }
+"arrowleft" @Dbl @Eq { arrowleft }
+"arrowup" @Dbl @Eq { arrowup }
+"arrowright" @Dbl @Eq { arrowright }
+"arrowdown" @Dbl @Eq { arrowdown }
+"degree" @Dbl @Eq { degree }
+"plusminus" @Dbl @Eq { plusminus }
+"second" @Dbl @Eq { second }
+"greaterequal" @Dbl @Eq { greaterequal }
+"multiply" @Dbl @Eq { multiply }
+"proportional" @Dbl @Eq { proportional }
+"partialdiff" @Dbl @Eq { partialdiff }
+"bullet" @Dbl @Eq { bullet }
+"divide" @Dbl @Eq { divide }
+"notequal" @Dbl @Eq { notequal }
+"equivalence" @Dbl @Eq { equivalence }
+"approxequal" @Dbl @Eq { approxequal }
+"ellipsis" @Dbl @Eq { ellipsis }
+"arrowvertex" @Dbl @Eq { arrowvertex }
+"arrowhorizex" @Dbl @Eq { arrowhorizex }
+"carriagereturn"@Dbl @Eq { carriagereturn }
+"aleph" @Dbl @Eq { aleph }
+"Ifraktur" @Dbl @Eq { Ifraktur }
+"Rfraktur" @Dbl @Eq { Rfraktur }
+"weierstrass" @Dbl @Eq { weierstrass }
+"circlemultiply"@Dbl @Eq { circlemultiply }
+"circleplus" @Dbl @Eq { circleplus }
+"emptyset" @Dbl @Eq { emptyset }
+"intersection" @Dbl @Eq { intersection }
+"union" @Dbl @Eq { union }
+"propersuperset"@Dbl @Eq { propersuperset }
+"reflexsuperset"@Dbl @Eq { reflexsuperset }
+"notsubset" @Dbl @Eq { notsubset }
+"propersubset" @Dbl @Eq { propersubset }
+"reflexsubset" @Dbl @Eq { reflexsubset }
+"element" @Dbl @Eq { element }
+"notelement" @Dbl @Eq { notelement }
+"angle" @Dbl @Eq { angle }
+"gradient" @Dbl @Eq { gradient }
+"registerserif" @Dbl @Eq { registerserif }
+"copyrightserif"@Dbl @Eq { copyrightserif }
+"trademarkserif"@Dbl @Eq { trademarkserif }
+"product" @Dbl @Eq { product }
+"radical" @Dbl @Eq { radical }
+"dotmath" @Dbl @Eq { dotmath }
+"logicalnot" @Dbl @Eq { logicalnot }
+"logicaland" @Dbl @Eq { logicaland }
+"logicalor" @Dbl @Eq { logicalor }
+"arrowdblboth" @Dbl @Eq { arrowdblboth }
+"arrowdblleft" @Dbl @Eq { arrowdblleft }
+"arrowdblup" @Dbl @Eq { arrowdblup }
+"arrowdblright" @Dbl @Eq { arrowdblright }
+"arrowdbldown" @Dbl @Eq { arrowdbldown }
+"lozenge" @Dbl @Eq { lozenge }
+"angleleft" @Dbl @Eq { angleleft }
+"registersans" @Dbl @Eq { registersans }
+"copyrightsans" @Dbl @Eq { copyrightsans }
+"trademarksans" @Dbl @Eq { trademarksans }
+"summation" @Dbl @Eq { summation }
+"parenlefttp" @Dbl @Eq { parenlefttp }
+"parenleftex" @Dbl @Eq { parenleftex }
+"parenleftbt" @Dbl @Eq { parenleftbt }
+"bracketlefttp" @Dbl @Eq { bracketlefttp }
+"bracketleftex" @Dbl @Eq { bracketleftex }
+"bracketleftbt" @Dbl @Eq { bracketleftbt }
+"bracelefttp" @Dbl @Eq { bracelefttp }
+"braceleftmid" @Dbl @Eq { braceleftmid }
+"braceleftbt" @Dbl @Eq { braceleftbt }
+"braceex" @Dbl @Eq { braceex }
+"angleright" @Dbl @Eq { angleright }
+"integral" @Dbl @Eq { integral }
+"integraltp" @Dbl @Eq { integraltp }
+"integralex" @Dbl @Eq { integralex }
+"integralbt" @Dbl @Eq { integralbt }
+"parenrighttp" @Dbl @Eq { parenrighttp }
+"parenrightex" @Dbl @Eq { parenrightex }
+"parenrightbt" @Dbl @Eq { parenrightbt }
+"bracketrighttp"@Dbl @Eq { bracketrighttp }
+"bracketrightex"@Dbl @Eq { bracketrightex }
+"bracketrightbt"@Dbl @Eq { bracketrightbt }
+"bracerighttp" @Dbl @Eq { bracerighttp }
+"bracerightmid" @Dbl @Eq { bracerightmid }
+"bracerightbt" @Dbl @Eq { bracerightbt }
+}
+@DP
+The names given are the same as Adobe's, as used by the @Code "@Sym"
+symbol, except in a few places where the Adobe name contains a digit,
+which is not possible for a symbol name in Lout.
+@End @Section
diff --git a/doc/doc/user/equ_symb b/doc/doc/user/equ_symb
new file mode 100644
index 0000000..20f407b
--- /dev/null
+++ b/doc/doc/user/equ_symb
@@ -0,0 +1,437 @@
+@Section
+ @Title { Symbols }
+ @Tag { symbols }
+@Begin
+@PP
+@Code "@Eq" prints characters in the fonts appropriate for mathematics:
+@ID {
+@Code "x - 2"
+|7ct
+@Eq { x-2 }
+}
+Here @Eq { x } is in Italic, @Eq { 2 } is in Roman, and @Eq { minus } is
+from the Symbol font. The character @Code "-" is a @I symbol which
+stands for @Eq {minus}, and @Code "2" is also a symbol, standing for
+@Eq { 2 }. @Code "@Eq" includes a vast number of symbols:
+@ID {
+@Code "Omega delta int partial club"
+|7ct
+@Eq { Omega delta int partial club }
+}
+The summary at the end of this chapter has the complete list.
+@PP
+Symbols whose names are made from letters should be separated from each
+other by at least one space or end of line, as was done above, or else
+@Code "@Eq" will become confused:
+@ID {
+@Code "Omegadelta"
+|7ct
+@Eq { Omegadelta }
+}
+Symbols whose names are made from digits and punctuation characters can,
+however, be run together with each other and with symbols made from
+letters:
+@ID {
+@Code "Omega-delta<=2"
+|7ct
+@Eq { Omega-delta<=2 }
+}
+This rule applies throughout Lout (Section {@NumberOf spaces}).
+@PP
+Some symbols join objects together in mathematical ways:
+@ID {
+@Code "x sub 2"
+|7ct
+@Eq { x sub 2 }
+}
+Here the @Code "sub" symbol has taken the object just to its left, and
+equations. @RawIndex { equations }
+equations.sub @SubIndex { @Code "sub" symbol }
+sub.sym.equations @Index { @Code "sub" symbol (equations) }
+the object just to its right, and joined them into one object in the
+form of a subscript. The two objects are called the left and right
+parameters of {@Code "sub"}, and they may be arbitrary Lout objects.
+@PP
+Other symbols of a similar kind include {@Code "sup"} for
+equations. @RawIndex { equations }
+equations.sup @SubIndex { @Code "sup" symbol }
+sup.equations @Index { @Code "sup" symbol (equations) }
+superscripting, @Code "over" for built-up fractions, and @Code "from"
+equations. @RawIndex { equations }
+equations.over @SubIndex { @Code "over" symbol }
+over.equations @Index { @Code "over" symbol (equations) }
+equations. @RawIndex { equations }
+equations.from @SubIndex { @Code "from" symbol }
+from.equations @Index { @Code "from" symbol (equations) }
+equations. @RawIndex { equations }
+equations.to @SubIndex { @Code "to" symbol }
+to.equations @Index { @Code "to" symbol (equations) }
+and @Code "to" for the lower and upper limits of sums, products,
+etc. These symbols may be used together to produce complicated
+equations very easily:
+@ID {
+@Code {
+"big sum from i=0 to n r sup i"
+"= {r sup n+1 - 1} over r-1"
+}
+||7ct
+@Eq { big sum from i=0 to n r sup i
+= {r sup n+1 - 1} over r-1
+}
+}
+Here @Code "sum" is just the @Eq { summation } symbol; @Code "from" and
+@Code "to" do all the work of placing the limits. They are quite
+independent, so either or both may be omitted. To get a superscript
+directly over a subscript, use the @Code "supp" and @Code "on" symbols:
+equations. @RawIndex { equations }
+equations.supp @SubIndex { @Code "supp" symbol }
+supp.equations @Index { @Code "supp" symbol (equations) }
+equations. @RawIndex { equations }
+equations.on @SubIndex { @Code "on" symbol }
+on.equations @Index { @Code "on" symbol (equations) }
+@ID {
+@Code "A supp b on a"
+|7ct
+@Eq { A supp b on a }
+}
+These two symbols should always be used together as shown.
+@PP
+Sometimes a subscript appears to be too far to the right, owing to
+the slope of italic letters: in @Eq { W sub n }, for example. You
+can fix this by using `tucked' subscripts, like this:
+@IndentedList
+@LI {
+@Code "W tsub n"
+|7ct
+@Eq { W tsub n }
+}
+@LI {
+@Code "W supp b ton a"
+|7ct
+@Eq { W supp b ton a }
+}
+@EndList
+The @Code "tsub" and @Code "ton" symbols are exactly like @Code "sub"
+equations. @RawIndex { equations }
+equations.tsub @SubIndex { @Code "tsub" symbol }
+tsub.equations @Index { @Code "tsub" symbol (equations) }
+equations. @RawIndex { equations }
+equations.ton @SubIndex { @Code "ton" symbol }
+ton.equations @Index { @Code "ton" symbol (equations) }
+and @Code "on" except for this tucking-in effect. However, the
+@Code "sub" symbol itself does a certain amount of tucking in; the
+amount is determined by kerning information in the font files and
+so is sensitive to the shape of the letters.
+@PP
+As usual in Lout, braces are used to group something into an indivisible
+object. Leaving them out creates ambiguities:
+@ID @Code "a sup b over c"
+There are two possible interpretations for this:
+@IndentedList
+@LI {
+@Code "{a sup b} over c"
+|7ct
+@Eq { {a sup b} over c }
+}
+@LI {
+@Code "a sup {b over c}"
+|7ct
+@Eq { a sup {b over c} }
+}
+@EndList
+@Code "@Eq" chooses between them in the following way. Every symbol that
+takes a parameter also has a {@I precedence}, which is a number. For
+equations. @RawIndex { equations }
+equations.precedence @SubIndex { precedence of symbols }
+precedence.equations @Index { precedence of symbols in equations }
+example, @Code "sup" has precedence 60 and @Code "over" has precedence
+54. The symbol with the highest precedence wins the object lying between
+them, so in the above case the first interpretation is chosen. If two
+symbols of equal precedence compete for an object, the association is
+towards the left:
+@ID {
+@Code "a sup b sub 2"
+|7ct
+@Eq { a sup b sub 2 }
+}
+In this case it is more probable that the following right association
+was actually wanted:
+@ID {
+@Code "a sup { b sub 2 }"
+|7ct
+@Eq { a sup { b sub 2 } }
+}
+When in doubt, use braces to make the grouping clear.
+@PP
+White space between two objects is considered to be a symbol with
+precedence 7, which is lower than the precedence of any @Code "@Eq"
+symbol; but if the two objects are immediately adjacent and neither is
+enclosed in braces the precedence is 102, which is higher than the
+precedence of any @Code "@Eq" symbol. Compare these three examples:
+@IL
+@LI {
+@Code "big sum from i=0 to n"
+|7ct
+@Eq { big sum from i=0 to n }
+}
+@LI {
+@Code "big sum from {i = 0} to n"
+|7ct
+@Eq { big sum from {i = 0} to n }
+}
+@LI {
+@Code "big sum from i = 0 to n"
+|7ct
+@Eq { big sum from i = 0 to n }
+}
+@EL
+and you will see that some care is needed on this point. Braces can
+always be used to override precedence and associativity, and when in
+doubt the easiest course is to insert them. Although Lout allows
+symbols to associate towards the left or right, @Code "@Eq" chooses
+to have only left associative symbols. The summary at the end of this
+chapter gives the precedence of every symbol.
+@PP
+The @Code matrix symbol {@PageMark matrix} builds an array of objects:
+equations. @RawIndex { equations }
+equations.matrix @SubIndex { @Code "matrix" symbol }
+matrix.equations @Index { @Code "matrix" symbol (equations) }
+@ID {
+@Code @Verbatim {
+matrix
+ atleft { blpar }
+ atright { brpar }
+{
+ row col x sup 2 col y sup 2 col z sup 2
+ row col x col y col z
+ row col 1 col 1 col 1
+}
+}
+||9ct
+@Eq {
+matrix
+ atleft { blpar }
+ atright { brpar }
+{
+ row col x sup 2 col y sup 2 col z sup 2
+ row col x col y col z
+ row col 1 col 1 col 1
+}
+}
+}
+The @Code atleft and @Code atright options place vertically scaled
+equations. @RawIndex { equations }
+equations.atleft @SubIndex { @Code "atleft" option }
+atleft.equations @Index { @Code "atleft" option (equations) }
+equations. @RawIndex { equations }
+equations.atright @SubIndex { @Code "atright" option }
+atright.equations @Index { @Code "atright" option (equations) }
+versions of their values at each side; if either is omitted the value
+is taken to be an empty object of zero width by default. Although
+we have used @Code blpar and @Code brpar here, since the options are
+vertically scaled to the correct size some people prefer simply
+@ID @OneRow @Code @Verbatim {
+matrix
+ atleft { ( }
+ atright { ) }
+}
+The right parameter of @Code matrix is the array itself. It must be
+enclosed in braces, and it is a sequence of rows introduced by
+equations. @RawIndex { equations }
+equations.row @SubIndex { @Code "row" symbol }
+row.equations @Index { @Code "row" symbol (equations) }
+equations. @RawIndex { equations }
+equations.col @SubIndex { @Code "col" symbol }
+col.equations @Index { @Code "col" symbol (equations) }
+@Code row symbols; each row is a sequence of objects introduced by
+@Code col symbols.
+@FootNote {
+Older versions of Lout use different symbols, {@Code "above"} and
+{@Code "nextcol"}, at this point. For backward compatibility these
+symbols are still available, but they are obsolete and no longer documented.
+}
+The @Code row and @Code col symbols have low precedence, but not
+as low as white space between two objects. Therefore, unless the
+entries in the array are very simple, it is safest to enclose each of
+them in braces.
+@PP
+Entries built with the @Code col symbol have their objects centred in
+the column. Also available are @Code lcol for left-justified entries,
+equations. @RawIndex { equations }
+equations.lcol @SubIndex { @Code "lcol" symbol }
+lcol.equations @Index { @Code "lcol" symbol (equations) }
+@Code ccol meaning the same as {@Code col}, @Code rcol for
+equations. @RawIndex { equations }
+equations.ccol @SubIndex { @Code "ccol" symbol }
+ccol.equations @Index { @Code "ccol" symbol (equations) }
+equations. @RawIndex { equations }
+equations.rcol @SubIndex { @Code "rcol" symbol }
+rcol.equations @Index { @Code "rcol" symbol (equations) }
+right-justified entries, and @Code mcol for alignment along column
+equations. @RawIndex { equations }
+equations.mcol @SubIndex { @Code "mcol" symbol }
+mcol.equations @Index { @Code "mcol" symbol (equations) }
+marks. Each column may contain entries of different kinds, except
+that @Code mcol does not work well with any other sort.
+@PP
+When several matrices appear side by side, slight differences in height
+can cause an unsightly appearance:
+@ID @Eq {
+matrix
+ atleft { ( }
+ atright { ) }
+{
+ row col a sub 11 col a sub 12
+ row col a sub 21 col a sub 22
+}
+matrix
+ atleft { ( }
+ atright { ) }
+{
+ row col b sub 11 col b sub 12
+ row col b sub 21 col b sub 22
+}
+=
+matrix
+ atleft { ( }
+ atright { ) }
+{
+ row col c sub 11 col c sub 12
+ row col c sub 21 col c sub 22
+}
+}
+To assist in resolving this problem, the @Code "matrix" symbol has
+a @Code "strut" option, which causes a strut to be inserted into
+equations. @RawIndex { equations }
+equations.strut @SubIndex { @Code "strut" option }
+strut.option. @RawIndex { @Code "strut" option }
+strut.option.in.equations @SubIndex { in equations }
+every row, guaranteeing that every row has height at least equal
+to the height of the strut. By using
+@ID @Code {
+"matrix"
+" strut { Yes }"
+"..."
+}
+in each of the three matrices above, the result is improved to
+@ID @Eq {
+matrix
+ atleft { ( }
+ atright { ) }
+ strut { Yes }
+{
+ row col a sub 11 col a sub 12
+ row col a sub 21 col a sub 22
+}
+matrix
+ atleft { ( }
+ atright { ) }
+ strut { Yes }
+{
+ row col b sub 11 col b sub 12
+ row col b sub 21 col b sub 22
+}
+=
+matrix
+ atleft { ( }
+ atright { ) }
+ strut { Yes }
+{
+ row col c sub 11 col c sub 12
+ row col c sub 21 col c sub 22
+}
+}
+By default, the strut has height @Code "0.5f" (half the current font
+size) both above and below the axis of the row. This can be changed
+by giving any length as the value of the @Code "strut" option:
+@Code "strut { 2.0c }" for two centimetres above and below
+the axis, and so on.
+@PP
+Some symbols have been added which produce `matrices' with commonly needed
+@Code atleft and @Code atright options already set for you. Here are
+these symbols, on the left, with the equivalent @Code matrix symbol
+and, on the right, the result produced:
+@ID @Tab
+ @Fmta { @Col @Code A ! @Col ! @Col @Code B ! @Col ! @Col C }
+{
+@Rowa
+ A { "pmatrix" }
+ B { "matrix atleft { ( } atright { ) } { M }" }
+ C { @Eq { pmatrix { M } }
+equations. @RawIndex { equations }
+equations.pmatrix @SubIndex { @Code "pmatrix" symbol }
+pmatrix.equations @Index { @Code "pmatrix" symbol (equations) }
+}
+@Rowa
+ A { "bmatrix" }
+ B { "matrix atleft { blbrack } atright { brbrack } { M }" }
+ C { @Eq { bmatrix { M } }
+equations. @RawIndex { equations }
+equations.bmatrix @SubIndex { @Code "bmatrix" symbol }
+bmatrix.equations @Index { @Code "bmatrix" symbol (equations) }
+}
+@Rowa
+ A { "brmatrix" }
+ B { "matrix atleft { blbrace } atright { brbrace } { M }" }
+ C { @Eq { brmatrix { M } }
+equations. @RawIndex { equations }
+equations.brmatrix @SubIndex { @Code "brmatrix" symbol }
+brmatrix.equations @Index { @Code "brmatrix" symbol (equations) }
+}
+@Rowa
+ A { "fmatrix" }
+ B { "matrix atleft { blfloor } atright { brfloor } { M }" }
+ C { @Eq { fmatrix { M } }
+equations. @RawIndex { equations }
+equations.fmatrix @SubIndex { @Code "fmatrix" symbol }
+fmatrix.equations @Index { @Code "fmatrix" symbol (equations) }
+}
+@Rowa
+ A { "cmatrix" }
+ B { "matrix atleft { blceil } atright { brceil } { M }" }
+ C { @Eq { cmatrix { M } }
+equations. @RawIndex { equations }
+equations.cmatrix @SubIndex { @Code "cmatrix" symbol }
+cmatrix.equations @Index { @Code "cmatrix" symbol (equations) }
+}
+@Rowa
+ A { "amatrix" }
+ B { "matrix atleft { blangle } atright { brangle } { M }" }
+ C { @Eq { amatrix { M } }
+equations. @RawIndex { equations }
+equations.amatrix @SubIndex { @Code "amatrix" symbol }
+amatrix.equations @Index { @Code "amatrix" symbol (equations) }
+}
+}
+For example:
+@ID {
+@Code {
+"fmatrix { (n+1) over 2 }"
+}
+|7ct
+@Eq {
+fmatrix { (n+1) over 2 }
+}
+}
+As this example shows, these symbols are very useful for getting large
+scaled delimiters around things that aren't necessarily matrices at all.
+@PP
+Each of the @Code "@Eq" symbols that takes parameters also has a @Code gap
+equations. @RawIndex { equations }
+equations.gap @SubIndex { @Code "gap" option }
+gap.equations @Index { @Code "gap" option (equations) }
+option, which controls the amount of space inserted by the symbol:
+@IL
+@LI {
+@Code "x over y"
+|7ct
+@Eq { x over y }
+}
+@LI {
+6c @Wide @Code "x over gap { 3p } y"
+|7ct
+@Eq { x over gap { 3p } y }
+}
+@EL
+@Code "@Eq" usually gets the spacing right without help.
+@End @Section
diff --git a/doc/doc/user/equ_tequ b/doc/doc/user/equ_tequ
new file mode 100644
index 0000000..c02782a
--- /dev/null
+++ b/doc/doc/user/equ_tequ
@@ -0,0 +1,44 @@
+@Section
+ @Title { An alternative version that uses @TeX's fonts }
+ @Tag { teq }
+@Begin
+@PP
+There is an alternative version of the @Code "@Eq" symbol that
+tex. @RawIndex { @TeX }
+tex.mathfonts @SubIndex { mathematical fonts }
+uses fonts taken from the @TeX document formatting
+system. These fonts are said to produce better-looking
+mathematics than the Adobe Systems Symbol font used by the
+standard @Code "@Eq" symbol.
+@PP
+The fonts were converted from @TeX form to PostScript form by
+Basil K. Malyshev, who has attached a license to them permitting
+malyshev @Index { Malyshev, Basil K. }
+non-commercial use only. This is a much more stringent license
+than the one attached to Lout itself. For this reason, the files
+needed to use these @TeX fonts are distributed separately from the
+rest of Lout, although you can get them from the same place (see the
+preface of this guide).
+@PP
+Once these files are installed, you change from the standard
+@Code "@Eq" symbol to the @TeX version by changing the initial
+@Code "@SysInclude { eq }" to {@Code "@SysInclude { teq }"}. Do
+absolutely nothing else.
+@PP
+Unfortunately, the @TeX fonts are not usually resident on PostScript
+printing devices, which means that Lout is obliged to include them in
+its PostScript output file. You don't have to do anything to make this
+happen, but the cost is fairly large: changing to
+@Code "@SysInclude { teq }" increases the size of the PostScript
+output file by 252 kilobytes.
+@PP
+It is possible to gain access to characters in the @TeX
+fonts that are not accessible directly from {@Code "@Eq"}, mainly
+script capitals and bold-italic Greek letters. For example, you can
+use @Code "{cmsy Base} @Font @Char \"A\"" to get a script A, and
+@Code "{cmmi Bold} @Font @Char \"pi\"" to get a bold-italic
+{@Sym pi}. For the full story, consult file @Code "teq" in the
+Lout system include directory for the names of these fonts, and then
+look in Lout's font directory for their font metrics files, which
+show the names and encodings of all the characters.
+@End @Section
diff --git a/doc/doc/user/equ_vert b/doc/doc/user/equ_vert
new file mode 100644
index 0000000..95d46a8
--- /dev/null
+++ b/doc/doc/user/equ_vert
@@ -0,0 +1,175 @@
+@Section
+ @Tag { vpos }
+ @Title { Vertical positioning }
+@Begin
+@PP
+Every equation and every object within every equation has an
+@I axis running through it which is used to position it vertically
+equations. @RawIndex { equations }
+equations.axis @SubIndex { axis of }
+axis @Index { axis of equation }
+with respect to nearby objects. In the Expert's Guide to Lout
+@Cite { $kingston1995lout.expert } this is called a @I { row mark },
+but we'll stick with axis. Here are some examples with the axis
+shown as a dashed line:
+@ID {
+@ShowHMark @Eq { x sup 2 }
+||2c
+@ShowHMark @Eq { non + }
+||2c
+@ShowHMark @Eq { @ExA }
+}
+When these objects are placed adjacent to one another, their
+axes are merged, giving the correct vertical positioning:
+@ID @ShowHMark @Eq { x sup 2 + @ExA }
+Most of the time you do not need to think about vertical
+positioning, because for most objects there is just one
+sensible place for the axis to go, and Lout puts it there.
+@PP
+Matrices and the delimiters that enclose them are the two
+exceptions. Lout makes the axis of a matrix pass through
+its exact centre, and it shifts the axes of delimiters
+so that they exactly enclose the thing delimited. These
+choices are never disastrous, but there are other possibilities
+that might be better sometimes.
+@PP
+The axis of a matrix could reasonably be set to the axis
+of any of its rows:
+@ID {
+@ShowHMark @Eq {
+matrix userow { yes } {
+ axisrow col { x sup 3 } col { y sup 3 } col { z sup 3 }
+ row col { x sup 2 } col { y sup 2 } col { z sup 2 }
+ row col { x } col { y } col { z }
+}
+}
+||2c
+@ShowHMark @Eq {
+matrix userow { yes } {
+ row col { x sup 3 } col { y sup 3 } col { z sup 3 }
+ axisrow col { x sup 2 } col { y sup 2 } col { z sup 2 }
+ row col { x } col { y } col { z }
+}
+}
+||2c
+@ShowHMark @Eq {
+matrix userow { yes } {
+ row col { x sup 3 } col { y sup 3 } col { z sup 3 }
+ row col { x sup 2 } col { y sup 2 } col { z sup 2 }
+ axisrow col { x } col { y } col { z }
+}
+}
+}
+Alternatively, it could be set to where Lout usually places it,
+through the exact centre:
+@ID {
+@ShowHMark @Eq {
+matrix {
+ row col { x sup 3 } col { y sup 3 } col { z sup 3 }
+ row col { x sup 2 } col { y sup 2 } col { z sup 2 }
+ row col { x } col { y } col { z }
+}
+}
+}
+Delimiters could reasonably keep the axes that they naturally
+have (approximately through their centres, but not exactly):
+@ID {
+@ShowHMark @Eq { pmatrix userow { yes } shiftdelim { no } { @ExA } }
+}
+or they could have their axes moved in the way that Lout usually does,
+to the point which allows them to evenly cover the thing delimited:
+@ID {
+@ShowHMark @Eq { pmatrix userow { yes } { @ExA } }
+}
+Altogether then there are four possibilities when these two alternatives
+interact:
+@CD lines @Break @Tab
+ @Fmta { @Col 0.5w @VShift A ! @Col ! @Col B ! @Col ! @Col C }
+{
+@Rowa
+ A { }
+ B { Matrix axis
+uses row axis }
+ C { Matrix axis passes
+through centre }
+@Rowa
+@Rowa
+ A { Delimiter
+keeps its axis }
+ B { @ShowHMark @Eq { pmatrix userow {yes} shiftdelim {no } { @ExA } } }
+ C { @ShowHMark @Eq { pmatrix userow {no } shiftdelim {no } { @ExA } } }
+@Rowa
+@Rowa
+ A { Delimiter
+axis shifted }
+ B { @ShowHMark @Eq { pmatrix userow {yes} shiftdelim {yes} { @ExA } } }
+ C { @ShowHMark @Eq { pmatrix userow {no } shiftdelim {yes} { @ExA } } }
+}
+To supply these possibilities, the @Code "matrix" symbol and all
+its variants (@Code "pmatrix" etc.) have two options whose
+equations. @RawIndex { equations }
+equations.userow @SubIndex { @Code "userow" option }
+userow.equations @Index { @Code "userow" option (equations) }
+equations. @RawIndex { equations }
+equations.shiftdelim @SubIndex { @Code "shiftdelim" option }
+shiftdelim.equations @Index { @Code "shiftdelim" option (equations) }
+values may be {@Code "yes"} or {@Code "no"}:
+@ID @Code @Verbatim {
+matrix
+ userow { no }
+ shiftdelim { yes }
+{
+ ...
+}
+}
+The @Code "userow" option determines whether the axis of the
+matrix will use a row axis; the default is not to, i.e. to
+centre the axis instead. The @Code "shiftdelim" option
+determines whether the axis of the delimiter will be shifted
+so that the delimiter evenly covers the thing delimited; the
+default is to do this.
+@PP
+If @Code "userow" is {@Code "yes"}, the next question is
+which row's axis to use to make the overall axis. If you
+do nothing, the first (or only) row's axis becomes the
+overall axis. To select some other row instead, replace
+the @Code "row" symbol that precedes the row by {@Code "axisrow"}:
+equations. @RawIndex { equations }
+equations.axisrow @SubIndex { @Code "axisrow" symbol }
+axisrow.equations @Index { @Code "axisrow" symbol (equations) }
+@ID @Code @Tab
+ vmargin { 0.5vx }
+ hmargin { 1s }
+ @Fmta { @Col A ! @Col ! @Col B ! @Col ! @Col C ! @Col ! @Col D ! @Col }
+ @Fmtb { @Col A ! @Col " col {" ! @Col B ! @Col "} col {" ! @Col C ! @Col "} col {" ! @Col D ! @Col "}" }
+{
+@Rowa
+ A { "matrix userow { yes } {" &0io }
+@Rowb
+ A { " row" }
+ B { "x sup 3" }
+ C { "y sup 3" }
+ D { "z sup 3" }
+@Rowb
+ A { " axisrow" }
+ B { "x sup 2" }
+ C { "y sup 2" }
+ D { "z sup 2" }
+@Rowb
+ A { " row" }
+ B { "x" }
+ C { "y" }
+ D { "z" }
+@Rowa
+ A { "}" }
+}
+The result of this is
+@ID @ShowHMark @Eq {
+matrix userow { yes } {
+ row col { x sup 3 } col { y sup 3 } col { z sup 3 }
+ axisrow col { x sup 2 } col { y sup 2 } col { z sup 2 }
+ row col { x } col { y } col { z }
+}
+}
+with the axis through the second row as desired.
+@End @Section
diff --git a/doc/doc/user/fmt b/doc/doc/user/fmt
new file mode 100644
index 0000000..ffd5e7f
--- /dev/null
+++ b/doc/doc/user/fmt
@@ -0,0 +1,16 @@
+@Chapter
+ @Title { Changing the Overall Format }
+ @Tag { changes }
+@Begin
+@LP
+The symbols of Lout make many decisions behind the scenes. Even the
+humble @Code "@PP" symbol has to decide how much vertical space to
+leave, and how far to indent the first line of the paragraph. How to
+change these decisions is the subject of this chapter.
+@BeginSections
+@Include { fmt_setu }
+@Include { fmt_size }
+@Include { fmt_marg }
+@Include { fmt_head }
+@EndSections
+@End @Chapter
diff --git a/doc/doc/user/fmt1.awk b/doc/doc/user/fmt1.awk
new file mode 100644
index 0000000..06a6b53
--- /dev/null
+++ b/doc/doc/user/fmt1.awk
@@ -0,0 +1,12 @@
+BEGIN {
+ print "@Tbl"
+ print " mv { 0.5vx }"
+ print " aformat { @Cell ml { 0i } indent { right } @Code A | @Cell B | @Cell |"
+ print " @Cell indent { right } @Code C | @Cell D | @Cell |"
+ print " @Cell indent { right } @Code E | @Cell mr { 0i } F }"
+ print "{"
+}
+NR % 3 == 1 { printf "@Rowa\n A { \"%s\" } B { @Math { %s } }\n", $1, $1 }
+NR % 3 == 2 { printf " C { \"%s\" } D { @Math { %s } }\n", $1, $1 }
+NR % 3 == 0 { printf " E { \"%s\" } F { @Math { %s } }\n", $1, $1 }
+END { print "}" }
diff --git a/doc/doc/user/fmt2.awk b/doc/doc/user/fmt2.awk
new file mode 100644
index 0000000..063acec
--- /dev/null
+++ b/doc/doc/user/fmt2.awk
@@ -0,0 +1,16 @@
+BEGIN {
+ print "@Tbl"
+ print " mv { 0.5vx }"
+ print " aformat { @Cell ml { 0i } indent { right } @Code A | @Cell B | @Cell |"
+ print " @Cell indent { right } @Code C | @Cell D | @Cell |"
+ print " @Cell indent { right } @Code E | @Cell mr { 0i } F }"
+ print "{"
+}
+NR % 3 == 1 { printf "@Rowa\n"
+ printf " A { \"%s from { a } to { b }\" }\n", $1
+ printf " B { @Math { %s from { a } to { b } } }\n", $1 }
+NR % 3 == 2 { printf " C { \"%s from { a } to { b }\" }\n", $1
+ printf " D { @Math { %s from { a } to { b } } }\n", $1 }
+NR % 3 == 0 { printf " E { \"%s from { a } to { b }\" }\n", $1
+ printf " F { @Math { %s from { a } to { b } } }\n", $1 }
+END { print "}" }
diff --git a/doc/doc/user/fmt_head b/doc/doc/user/fmt_head
new file mode 100644
index 0000000..a47a16f
--- /dev/null
+++ b/doc/doc/user/fmt_head
@@ -0,0 +1,330 @@
+@Section
+ @Title { Page numbers and running headers }
+ @Tag { headers }
+@Begin
+@PP
+A @I { page header } is a line at the top of a page containing a page
+page.header @Index { page header }
+running.header @Index { running header }
+number or running title. A @I { page footer } is a similar line at
+page.footer @Index { page footer }
+the bottom of a page. This section describes the setup file options
+that control the appearance of page headers and footers.
+@PP
+There are four basic styles, selected by the @Code "@PageHeaders" option:
+page.headers @Index @Code "@PageHeaders"
+@ID @Tab
+ @Fmta { @Col @Code { "@PageHeaders {" A "}" } ! @Col B }
+{
+@Rowa
+ A { None }
+ B { No page headers, no page footers. }
+@Rowa
+ A { Simple }
+ B { No footers, and a centred page number between hyphens for
+header on every page whose number is not 0 or 1. }
+@Rowa
+ A { Titles }
+ B { Full running titles as in the present document. }
+@Rowa
+ A { NoTitles }
+ B { Page numbers placed as for @Code { Titles }, but with the
+titles themselves blanked out. }
+}
+@Code Titles and @Code NoTitles use Lout's cross-referencing machinery,
+so will require a few runs to settle down. @Code None and @Code Simple
+do not, so they work first time and may be used with the @Code "-s"
+command line flag. Section {@NumberOf cross} has a fuller discussion
+of these ramifications of cross referencing.
+@PP
+The next step is to set the page numbers, using
+the @Code "@PageNumbers" and @Code "@FirstPageNumber" options. There
+page.numbers @Index @Code "@PageNumbers"
+are two useful values for {@Code "@PageNumbers"}:
+@ID @Tab
+ @Fmta { @Col @Code { "@PageNumbers {" A "}" } ! @Col B }
+{
+@Rowa
+ A { Arabic }
+ B { Arabic page numbers }
+@Rowa
+ A { Roman }
+ B { Lower-case Roman page numbers }
+}
+although the full range of choices is {@Code "None"}, {@Code "Arabic"},
+{@Code "Roman"}, {@Code "UCRoman"}, {@Code "Alpha"}, and
+{@Code "UCAlpha"}. @Code "@FirstPageNumber" is the number of the
+first.page.number @Index @Code "@FirstPageNumber"
+first page. Its default value is of course {@Code 1}, although
+@ID @Code "@FirstPageNumber { 0 }"
+might be useful if the first page is really an unnumbered cover
+sheet. @Code "@FirstPageNumber" must be an Arabic number even if
+@Code "@PageNumbers" is set to something other than {@Code "Arabic"}.
+@PP
+Some document types, such as books and technical reports with cover
+sheets, have a separate introductory
+sequence of pages preceding the main sequence. For the page numbers on
+introductory pages there are two options, @Code "@IntroPageNumbers"
+intro.page.numbers @Index @Code "@IntroPageNumbers"
+intro.first.page.number @Index @Code "@IntroFirstPageNumber"
+and {@Code "@IntroFirstPageNumber"}, which are exactly analogous to
+@Code "@PageNumbers" and {@Code "@FirstPageNumber"}. It is traditional
+to number introductory pages using Roman numerals, so @Code Roman is
+the default value of {@Code "@IntroPageNumbers"}.
+@PP
+Let's summarize the five options so far by looking at their values in
+the @Code book setup file, which was used to produce the present document:
+@ID @OneRow @Code @Verbatim {
+@PageHeaders { Titles }
+@PageNumbers { Arabic }
+@FirstPageNumber { 1 }
+@IntroPageNumbers { Roman }
+@IntroFirstPageNumber { 1 }
+}
+The remainder of this section goes beyond these basic choices to explain
+how to change the detailed appearance of page headers
+and footers. Inevitably it gets quite a lot harder.
+@PP
+Pages are classified by the page header options in three ways:
+@NumberedList
+@LI { @I { Odd vs. even }. The first page is odd, the second is even,
+odd.pages @Index { odd and even pages }
+the third is odd, and so on. If @Code "@FirstPageNumber" is set to
+an even number, the first page will have that number, but it will still
+be classified as odd. }
+@LI { @I { Start vs. non-start }. A start page is the first page of
+start.pages @Index { start and non-start pages }
+some major part of the document (a chapter, say); other pages are
+non-start. The @Code { Simple } header type uses a simpler
+definition: a page whose number is 0 or 1 is a start page, all others
+are non-start. }
+@LI { @I { Intro vs. non-intro }. Intro pages form a separate sequence of
+intro.pages @Index { intro and non-intro pages }
+pages that precede the main (non-intro) sequence. They typically contain
+prefatory material such as a title page, preface, and table of contents.
+In a book there will always be an even number of Intro pages, even if
+it means that the last one is empty. }
+@EndList
+These classifications are quite independent of each other: a page
+could be a non-intro start odd page, or an intro non-start even page,
+and so on. This makes eight (@M { 2 times 2 times 2 }) possibilities
+altogether. Depending on the type of document there may also be pages
+that Lout will never place a page header or footer on (e.g. pages
+containing part titles in books).
+@PP
+If you choose {@Code "@PageHeaders { None }"}, there are no page headers
+or footers, so there is nothing more to say. If you choose
+{@Code "@PageHeaders { Simple }"}, then eight options become relevant
+for controlling the page headers on each of the eight kinds of
+pages. Here they are with their default values:
+@ID @OneRow @Code @Verbatim {
+@OddTop { @Centre { - @PageNum - } }
+@EvenTop { @Centre { - @PageNum - } }
+@StartOddTop { @Null }
+@StartEvenTop { @Null }
+@IntroOddTop { @Null }
+@IntroEvenTop { @Null }
+@IntroStartOddTop { @Null }
+@IntroStartEvenTop { @Null }
+}
+If the word @Code Start is missing from an option name, the option
+applies to non-start pages; if @Code Intro is missing, it applies to
+non-intro pages. Another eight options control footers in the same way:
+@ID @OneRow @Code @Verbatim {
+@OddFoot { @Null }
+@EvenFoot { @Null }
+@StartOddFoot { @Null }
+@StartEvenFoot { @Null }
+@IntroOddFoot { @Centre @PageNum }
+@IntroEvenFoot { @Null }
+@IntroStartOddFoot { @Centre @PageNum }
+@IntroStartEvenFoot { @Null }
+}
+The value of the option is an object which becomes the header or
+footer. It may be any object, but there are some peculiarities that
+will be explained now.
+@PP
+The full set of symbols of the BasicSetup package can be used
+when setting page header options (and indeed any of the options
+of the @Code "@BasicSetup" @Code "@Use" clause package), as well as
+symbols from special-purpose
+packages that have been included before this setup file. This means
+you can use any symbol you might reasonably expect to. But footnotes and
+floating figures and tables, for example, are not from BasicSetup so
+cannot be used.
+@PP
+There are five symbols of special relevance to page headers and
+footers: {@Code "@Null"}, {@Code "@Centre"}, {@Code "@Center"},
+{@Code "@Right"}, and {@Code "@PageNum"}.
+@PP
+The @Code "@Null" symbol is similar to the empty object in printing as
+null. @Index @Code "@Null"
+nothing, but in addition it removes the vertical space that ordinarily
+separates the header line from the page body. If there is no header
+there should be no vertical space either, so always use @Code "@Null"
+rather than the empty object in header and footer options.
+@PP
+@Code "@Centre" and @Code "@Center" centre the following object, and
+centre. @Index @Code "@Centre"
+center. @Index @Code "@Center"
+right. @Index @Code "@Right"
+@Code "@Right" right-justifies it:
+@ID @Code "at left @Centre { - 27 - } @Right { at right }"
+produces
+@QD @HExpand { at left @Centre { - 27 - } @Right { at right } }
+The objects should be enclosed in braces if they contain spaces.
+@PP
+The @Code "@PageNum" symbol produces the number of the current page, in
+page.num. @Index @Code "@PageNum"
+Arabic, Roman, etc. as specified by the @Code "@PageNumbers" or
+@Code "@IntroPageNumbers" option. @Code "@PageNum" is available only
+within page header and footer options.
+@PP
+To get the @I last page into a header, so that you can have page
+headers like `Page 5 of 8', you need @Code "@PageOf last.page" as
+described in Section {@NumberOf cross}. You might have
+@ID @Code "@Centre { Page @PageNum of @PageOf last.page }"
+as the value of @Code "@EvenTop" and the rest.
+@PP
+At this point you might like to pause and verify that the default
+values of the sixteen options given above produce what we said they
+would: no footers, and a centred page number between hyphens on every
+page whose number is not 0 or 1. It should be clear now what to do if
+you want to remove the hyphens, move the numbers to the page footer,
+make them bold, have them at the left on even pages and at the right on
+odd pages, and so on.
+@PP
+A different set of sixteen options applies when @Code "@PageHeaders"
+is set to @Code Titles or {@Code "NoTitles"}. Here are the eight
+options for headers, with their default values:
+@ID @OneRow @Code @Verbatim {
+@RunningOddTop { @I { @MinorNum @DotSep @MinorTitle }
+ @Right @B @PageNum }
+@RunningEvenTop { @B @PageNum
+ @Right @I { @MajorNum @DotSep @MajorTitle } }
+@RunningStartOddTop { @Null }
+@RunningStartEvenTop { @Null }
+@RunningIntroOddTop { @Null }
+@RunningIntroEvenTop { @Null }
+@RunningIntroStartOddTop { @Null }
+@RunningIntroStartEvenTop { @Null }
+}
+Some options occupy two lines, but only because they are long: as
+usual, the end of a line is the same as one space. Here are the
+options for footers:
+@ID @OneRow @Code @Verbatim {
+@RunningOddFoot { @Null }
+@RunningEvenFoot { @Null }
+@RunningStartOddFoot { @Centre { Bold 0.8f } @Font @PageNum }
+@RunningStartEvenFoot { @Centre { Bold 0.8f } @Font @PageNum }
+@RunningIntroOddFoot { @Right @PageNum }
+@RunningIntroEvenFoot { @PageNum }
+@RunningIntroStartOddFoot { @Null }
+@RunningIntroStartEvenFoot { @Null }
+}
+All these options are similar to the earlier ones, in providing one
+option for each of the eight kinds of pages. The names are the same
+except that @Code Running is added to each. Remember that a start
+page is now one that begins a major part of the document.
+@PP
+In addition to the symbols described earlier for simple page headers
+and footers, these running header options may contain the symbols
+{@Code "@MajorNum"}, {@Code "@MajorTitle"}, {@Code "@MinorNum"},
+{@Code "@MinorTitle"}, {@Code "@DotSep"}, {@Code "@NoDotSep"},
+{@Code "@DotJoin"}, {@Code "@NoDotJoin"}, {@Code "@DashJoin"},
+and {@Code "@NumSep"} described below.
+major.num @Index @Code "@MajorNum"
+major.title @Index @Code "@MajorTitle"
+minor.num @Index @Code "@MinorNum"
+minor.title @Index @Code "@MinorTitle"
+@PP
+The exact values of {@Code "@MajorNum"}, {@Code "@MajorTitle"},
+{@Code "@MinorNum"}, and {@Code "@MinorTitle"} depend on the document
+type, but they are intended to describe what is on the current page. Here
+are some values typical of books:
+@ID @Tab
+ @Fmta { @Col @Code A ! @Col @Code B }
+ vmargin { 0.5vx }
+{
+@Rowa
+ A { "@MajorNum" }
+ B { Chapter 2 }
+@Rowa
+ A { "@MajorTitle" }
+ B { Adding Structure to Documents }
+@Rowa
+ A { "@MinorNum" }
+ B { 2.7 }
+@Rowa
+ A { "@MinorTitle" }
+ B { Tables of contents }
+}
+It is not possible to change the values assigned to these symbols, but
+the sixteen options allow you to choose whether to use them and how to
+arrange them, in the usual way.
+@PP
+The @Code "@DotSep" symbol consumes the objects to its left and right
+dot.sep @Index @Code "@DotSep"
+and produces them separated by a dot and two spaces:
+@ID @Code "@MinorNum @DotSep @MinorTitle"
+is the same as
+@ID @Code "@MinorNum. @MinorTitle"
+However, if either object is empty, the dot and two spaces are
+omitted. It's a fine point, needed mainly for unnumbered chapters
+and sections. @Code "@DotJoin" is the same as @Code "@DotSep" but
+dot.join @Index @Code "@DotJoin"
+without the two spaces. @Code "@NoDotSep" is the same as
+nodot.sep @Index @Code "@NoDotSep"
+@Code "@DotSep" but leaving out the dot, @Code "@NoDotJoin" is the same
+nodot.join @Index @Code "@NoDotJoin"
+as @Code "@DotJoin" but again leaving out the dot, and @Code "@DashJoin"
+dash.join @Index @Code "@DashJoin"
+is the same as @Code "@DotJoin" except that `--' replaces the dot.
+@PP
+Lout uses @Code "@DotSep" between numbers and titles by default. To
+get rid of all dots between numbers and titles it is necessary to
+change all occurrences of @Code "@DotSep" in the setup file to
+{@Code "@NoDotSep"}. There are about ten occurrences, depending
+on the setup file.
+@PP
+@Code "@NumSep" {@PageMark numsep} is similar to @Code "@NoDotSep"
+except that one space
+num.sep @Index @Code "@NumSep"
+hungarian @Index { Hungarian and @Code "@NumSep" }
+is used, not two, and also the order of the two parts is reversed and
+a dot is added if the current language is Hungarian (apparently
+Hungarians write `3. Table' where other people write `Table 3').
+@Code "@NumSep" is used behind the scenes in a variety of places.
+@PP
+The present document was produced using @Code "@PageHeaders { Titles }"
+with the default values of the sixteen options unchanged, as you might
+like to verify. @Code "@PageHeaders { NoTitles }" is identical to
+@Code "@PageHeaders { Titles }" except that {@Code "@MajorNum"},
+{@Code "@MajorTitle"}, {@Code "@MinorNum"}, and {@Code "@MinorTitle"}
+are always replaced by empty objects. The description given at the
+beginning of this section, `like @Code "Titles" but with the titles
+blanked out,' is therefore accurate.
+@PP
+There is a @Code "@StructPageNums" setup file option that produces
+structpagenums. @Index @Code "@StructPageNums"
+structured page numbers when it is changed to {@Code Yes}; that is,
+page numbers that include a section number, subsection number, and so
+on. Precisely which structure numbers are included is determined by the
+@Code "@SectionNumInRunners" option and its relatives. @Code "@PageHeaders"
+must be @Code Titles when structured page numbers are used, and it is
+probably best to set @Code "@SectionGap" and some similar options to
+{@Code "2b"} (meaning new page) as well. The @Code "@NumberSeparator"
+setup file option (Section {@NumberOf largescale}) affects the format
+of the structured page numbers.
+@PP
+There is a @Code "@PageNumberFormat" setup file option that
+pagenumberformat. @Index @Code "@PageNumberFormat"
+allows a uniform format to be applied to every page number.
+Its default value,
+@ID @Code "@PageNumberFormat { number }"
+just produces the number. To change the format, change the
+object within the braces. For example,
+@ID @Code "@PageNumberFormat { (number) }"
+will cause parentheses to be printed around every page number, and so
+on.
+@End @Section
diff --git a/doc/doc/user/fmt_marg b/doc/doc/user/fmt_marg
new file mode 100644
index 0000000..c3a98b0
--- /dev/null
+++ b/doc/doc/user/fmt_marg
@@ -0,0 +1,149 @@
+@Section
+ @Title { Page margins, page boxes, and page backgrounds }
+ @Tag { margins }
+@Begin
+@PP
+There are six options for setting the top and bottom margins on each
+margin.options @RawIndex { margin options }
+margin.options.in.pages @SubIndex { in pages }
+top.margin @Index @Code "@TopMargin"
+foot.margin @Index @Code "@FootMargin"
+odd.left.margin @Index @Code "@OddLeftMargin"
+odd.right.margin @Index @Code "@OddRightMargin"
+even.left.margin @Index @Code "@EvenLeftMargin"
+even.right.margin @Index @Code "@EvenRightMargin"
+page, and the left and right margins on odd and even pages. Here they
+are with their default values:
+@ID @OneRow @Code @Verbatim {
+@TopMargin { 2.50c }
+@FootMargin { 2.50c }
+@OddLeftMargin { 2.50c }
+@OddRightMargin { 2.50c }
+@EvenLeftMargin { 2.50c }
+@EvenRightMargin { 2.50c }
+}
+When setting these options you must ensure that
+@ID @Math { @Code "@OddLeftMargin" + @Code "@OddRightMargin" =
+@Code "@EvenLeftMargin" + @Code "@EvenRightMargin" }
+In other words, the total margin on odd pages must be the same as on
+even pages.
+@PP
+In addition, four options are provided which add extra left and right
+margins to the page @I body (that is, everything but the running headers
+and footers):
+@ID @OneRow @Code @Verbatim {
+@OddLeftBodyMargin { 0c }
+@OddRightBodyMargin { 0c }
+@EvenLeftBodyMargin { 0c }
+@EvenRightBodyMargin { 0c }
+}
+The default is to add no page body margins, as shown. Most people who
+use page body margins would change only @Code "@OddRightBodyMargin" and
+{@Code "@EvenLeftBodyMargin"}, since those are the outside margins. As
+for ordinary margins, the total (left plus right) page body margin must
+be the same on odd and even pages. Margin notes
+(Section {@NumberOf marginnotes}) occupy body margin space.
+@PP
+You can draw a box around each page. The relevant options and their
+default values are
+@ID @OneRow @Code @Verbatim {
+@PageBoxType { None }
+@PageBoxMargin { 1.00c }
+@PageBoxLineWidth {}
+@PageBoxPaint { None }
+@PageBoxShadow { 0.06c }
+}
+You get boxes by changing the @Code "@PageBoxType" option:
+page.box.type @Index @Code "@PageBoxType"
+@ID @OneRow @Tab
+ @Fmta { @Col @Code A ! @Col @CC B }
+{
+@Rowa
+ A { "@PageBoxType { None }" }
+ B { (no box) }
+@Rowa
+@Rowa
+ A { "@PageBoxType { Box }" }
+ B { @Box 1.0c @Wide 1.4c @High }
+@Rowa
+@Rowa
+ A { "@PageBoxType { CurveBox }" }
+ B { @CurveBox 1.0c @Wide 1.4c @High }
+@Rowa
+@Rowa
+ A { "@PageBoxType { ShadowBox }" }
+ B { @ShadowBox 1.0c @Wide 1.4c @High }
+}
+Page boxes reduce the amount of space available to the page contents,
+so your columns will become somewhat narrower and shorter when you
+introduce them.
+@PP
+The {@Code "@PageBoxMargin"}, {@Code "@PageBoxLineWidth"},
+{@Code "@PageBoxPaint"}, and {@Code "@PageBoxShadow"} options affect
+the page box exactly as the {@Code margin}, {@Code linewidth},
+{@Code paint}, and {@Code shadow} options described
+for other boxes in Section {@NumberOf boxes} do. For example,
+@ID @OneRow @Code @Verbatim {
+@PageBoxType { CurveBox }
+@PageBoxMargin { 1.0c }
+@PageBoxPaint { grey }
+}
+draws a curved box, painted grey, around each page, with a one
+centimetre margin between its boundary and the page contents. If the
+left margin is 2.5 centimetres, say, this gives a total left margin
+from the page edge to the page contents of 3.5 centimetres.
+@PP
+More generally, you can enclose each page in any object at all,
+using @Code "@PageEnclose":
+@ID @Code {
+"@PageEnclose { @Body }"
+}
+Within the @Code "@PageEnclose" option, @Code "@Body" stands for the
+page, and it must occur exactly once. You could place a curved box
+around each page, for example, by writing
+@ID @Code {
+"@PageEnclose { @CurveBox @Body }"
+}
+This could be done with {@Code "@PageBox"}, but @Code "@PageEnclose"
+offers infinitely many possibilities.
+@PP
+@Code "@PageBackground" replaces the usual white background of the page:
+page.background @Index @Code "@PageBackground"
+@ID @Code {
+"@PageBackground { @Scale 60d @Rotate lightgrey @Colour DRAFT }"
+}
+Its value is an object which is drawn on each page, within the
+margins, before the page contents are drawn. This example draws
+a large word DRAFT in light grey diagonally across each page:
+@ID @Box margin { 0c } 0.2 @Scale @IncludeGraphic draft.eps
+You have to find a suitable angle by experiment. As Section
+{@NumberOf scaling} explains, @Code "@Scale" with no scale factor
+only takes account of the available horizontal space, not the
+available vertical space, so if your angle is too steep the result
+will be too tall for the page and you will get a regrettably obscure
+warning message about a `broken size constraint.' The solution is
+to try a smaller angle.
+@PP
+Another useful page background draws marks to show where the margins
+boundarymarks @Index @Code "@BoundaryMarks"
+cut.marks @Index { cut marks }
+lie:
+@ID @Code "@PageBackground { @BoundaryMarks }"
+produces something like this around each page:
+@DP @DP
+@ID { |@DisplayIndent 3c @High 2c @Wide @HExpand @VExpand @BoundaryMarks }
+@DP @DP
+The @Code "@BoundaryMarks" symbol has options for controlling the
+line width (thickness), the line length, and the gap between the
+ends of the lines and the corner of the text area:
+@ID @OneRow @Code @Verbatim {
+@PageBackground {
+ @BoundaryMarks
+ linewidth { 0.2p }
+ length { 0.5c }
+ gap { 0.5c }
+}
+}
+This shows the default values: 0.2 points for line width,
+0.5 centimetres for the others.
+@End @Section
diff --git a/doc/doc/user/fmt_setu b/doc/doc/user/fmt_setu
new file mode 100644
index 0000000..2e38a0d
--- /dev/null
+++ b/doc/doc/user/fmt_setu
@@ -0,0 +1,211 @@
+@Section
+ @Title { Setup files }
+ @Tag { setup }
+@Begin
+@PP
+As mentioned briefly in Section {@NumberOf start}, each Lout document
+begins with an instruction to include (i.e. to read) a @I { setup file }:
+setup.files. @Index { setup files }
+sysinclude. @Index @Code "@SysInclude"
+system.include @Index { system include directory }
+doc.file @Index { @Code "doc" file }
+@ID @Code "@SysInclude { doc }"
+The setup file's name in this example is @Code { doc }, and the @Code Sys
+in @Code "@SysInclude" means that @Code doc is stored in the @I { Lout
+system include directory }, which is where all the standard setup files
+are kept. Each document type (Chapter {@NumberOf types}) has its own
+setup file, and each specialized package (for equations, tables, and
+so on) has a setup file too.
+@PP
+To change the overall format of a document, you need to create your own
+setup file by copying and modifying one of the standard ones. We will
+assume that you are making an ordinary document, with the @Code doc
+setup file, but a similar procedure works for any setup file.
+@PP
+You first need to find out the name of the Lout system include
+directory, by typing
+@ID @Code "lout -V"
+in Unix. This causes Lout to print out various facts about itself. Then,
+supposing that this tells you that the Lout system include directory
+is @Code { "/usr/lout/include" }, type the Unix command
+@ID @Code "cp /usr/lout/include/doc mydoc"
+to copy the @Code doc setup file into your directory,
+mydoc.file @Index { @Code "mydoc" file }
+renaming it @Code {mydoc}. Since @Code "doc" is read-only, you may
+need to change the mode of @Code mydoc to be writable (by
+@Code "chmod +w mydoc" in Unix). Now replace
+@ID @Code "@SysInclude { doc }"
+at the beginning of your document by
+@ID @Code "@Include { mydoc }"
+and Lout will read @Code mydoc as the setup file instead of
+@Code { doc }. Since the two files are at present identical, this has
+changed nothing so far; but now any changes you make to @Code mydoc
+will affect your document. Notice the use of @Code "@Include"
+rather than @Code { "@SysInclude" }; @Code "@Include" will search your
+current directory for @Code { mydoc }, whereas @Code "@SysInclude"
+searches only the system directory.
+@PP
+The remainder of this section is a tour through @Code {doc},
+explaining the various parts and how to modify them. The first lines
+that actually do anything are these:
+@ID @OneRow @Code {
+"@SysInclude { langdefs }"
+"@SysInclude { bsf }"
+"@SysInclude { dsf }"
+"@SysInclude { docf }"
+}
+We already know that @Code "@SysInclude" causes Lout to read a file from
+the Lout system include directory. File @Code langdefs
+langdefs.file @Index { @Code "langdefs" file }
+tells Lout what languages there are, and files @Code "bsf" and
+@Code "dsf" contain
+bsf.file @Index { @Code "bsf" file }
+dsf.file @Index { @Code "dsf" file }
+the definitions of the BasicSetup and DocumentSetup packages, in which
+all the symbols of the first two chapters of this guide are defined. File
+@Code "docf" contains extra definitions specific to
+docf.file @Index { @Code "docf" file }
+ordinary documents (as distinct from technical reports, books, or the
+other document types of Chapter {@NumberOf types}). So this line
+will be different in the setup files for those other types.
+@PP
+The next line is
+@ID @Code {
+"@Include { mydefs }"
+}
+This searches your current directory for a file called @Code { mydefs },
+which (as Section {@NumberOf definitions} explains) is intended to hold
+your own personal set of definitions of new symbols. It does no harm
+if there is no @Code "mydefs" file in your current directory, because
+@Code "@Include" then searches the Lout system include directory for
+it, and there is an empty @Code mydefs file there. When using your own
+setup file, you might prefer to delete @Code "@Include { mydefs }" and
+put your definitions in its place, so that you have one file of setup
+material rather than two.
+@PP
+Next we come to the BasicSetup @Code "@Use" clause. It looks like this:
+use. @Index @Code "@Use"
+@ID @OneRow @Code @Verbatim {
+@Use { @BasicSetup
+ # @InitialFont { Times Base 12p }
+ # @InitialBreak { {adjust 1.20fx hyphen} @OrIfPlain {ragged 1fx nohyphen} }
+ # @InitialSpace { lout }
+ # @InitialLanguage { English }
+ # @InitialColour { black }
+ # @InitialBackgroundColour { white }
+ # @OptimizePages { No }
+ # @HeadingFont { Bold }
+ # @ParaGap { 1.3vx @OrIfPlain 1f }
+ # @ParaIndent { 2.00f @OrIfPlain 5s }
+}
+}
+@Code "@BasicSetup" is a symbol, and @Code { "@InitialFont" },
+basic.layout @Index @Code "@BasicSetup"
+@Code { "@InitialBreak" }, etc. are its options. There are more options
+than we've shown; the display above just shows the first
+few. You change the overall format of your document by changing
+these options.
+@PP
+A @Code "#" causes Lout to ignore that character and the rest of the
+line (such ignored parts are called {@I comments} and @Code "#" is
+the @I { comment character }). As it stands, then, the options are
+all hidden within comments, so their default values (shown within braces
+in the comments) are in force. To change an option, delete the @Code "#"
+and change the value between braces. For example, to set the document
+in Helvetica 10 point font, change the @Code { "@InitialFont" } line to
+@ID @Code "@InitialFont { Helvetica Base 10p }"
+We won't go through all the options now, since they are the subject of
+following sections.
+@PP
+The @Code "@OrIfPlain" symbol that appears within some setup file
+options is used to set the value of the option differently when
+plain text output (Section {@NumberOf plain}) is being produced. For
+example, the default value of @Code "@InitialBreak" is usually
+{@Code "adjust 1.20fx hyphen"}, but when plain text is being produced
+it switches to {@Code "ragged 1fx nohyphen"}. When changing such
+options you can leave the @Code "@OrIfPlain" symbol there and change
+one or both of the alternative values as you wish.
+@PP
+Next comes a similar @Code "@Use" clause, for the DocumentSetup package:
+@ID @OneRow @Code @Verbatim {
+@Use { @DocumentSetup
+ # @PageType { A4 @OrIfPlain Other }
+ # @PageWidth { 80s }
+ # @PageHeight { 66f }
+ # @PageOrientation { Portrait }
+ # @PageBackground {}
+ # @TopMargin { 2.5c @OrIfPlain 6f }
+}
+}
+This one has many options, starting with options for page
+layout as shown, then going on to figures and tables, tables of
+contents, etc.
+@PP
+The standard setup files are all much the same up to this point; the
+main variation is that in some files, some options are already set. The
+@Code "slides" setup file, for example, contains
+@ID @Code "@InitialFont { Times Base 20p }"
+so that overhead transparencies will have a large font size. However,
+now comes a third @Code "@Use" clause whose symbol and options depend
+on the document type. For ordinary documents (i.e. in the @Code "doc"
+setup file) this clause is (once again we show just some of the options):
+@ID @OneRow @Code @Verbatim {
+@Use { @OrdinarySetup
+ # @IndexWord { index }
+ # @AppendixWord { appendix }
+ # @SectionNumbers { Arabic }
+ # @AppendixNumbers { UCAlpha }
+ # @SectionHeadingFont { Bold }
+}
+}
+In the @Code slides setup file for overhead transparencies, we find this:
+@ID @OneRow @Code @Verbatim {
+@Use { @OverheadSetup
+ # @DateLine { No }
+ # @ContentsWord { contents }
+ # @FirstOverheadNumber { 1 }
+ # @OverheadNumbers { Arabic }
+ # @TitlePageFont { Helvetica Base 1.5f }
+ # @OverheadHeadingFont { Bold }
+ # @OverheadInContents { No }
+}
+}
+In general this third @Code "@Use" clause assigns values to options
+specific to the document type we are using, whereas the first and
+second @Code "@Use" clauses assign values to options that are relevant to many
+or all document types.
+@PP
+The setup file ends with a comment identifying a spot where database
+declarations may
+database.dec @Index { database declarations, where to put }
+be put, and two such declarations, one for fonts and the other for
+reference printing styles.
+@PP
+The setup files used with other packages, such as C and C++ program printing,
+diagrams, and graphs, are similar to the @Code { doc } setup file we
+have just gone through. They contain a @@SysInclude line analogous to
+@Code "@SysInclude { dsf }" for reading the package's definition, followed
+by a @@Use clause for setting the package's options. The same procedure
+is followed for changing these options. For example, to change the
+options of the @Code "diag" package, copy file @Code "diag" from the
+Lout system include directory to your directory, replace the
+@ID @Code "@SysInclude { diag }"
+line at the top of your document by {@Code "@Include { mydiag }"}, then
+edit @Code "mydiag" and change the options as you wish.
+@PP
+If you are using several packages and you would like a single setup file,
+that is quite easy to arrange. For example, suppose you have
+@ID @Code {
+"@Include { mydoc }"
+"@Include { mydiag }"
+"@Include { mycprint }"
+}
+To create a single setup file, just concatenate these three files into
+one file (call it @Code { mysetup }, say), and replace the three lines by
+@ID @Code {
+"@Include { mysetup }"
+}
+As explained earlier, you can even replace the @Code "@Include { mydefs }"
+line within the setup file by the actual definitions, giving just one
+file of setup material for the entire document.
+@End @Section
diff --git a/doc/doc/user/fmt_size b/doc/doc/user/fmt_size
new file mode 100644
index 0000000..8418f30
--- /dev/null
+++ b/doc/doc/user/fmt_size
@@ -0,0 +1,103 @@
+@Section
+ @Title { Page size and page orientation }
+ @Tag { pagesize }
+@Begin
+@PP
+This section explains how to use the setup file options that determine
+page size and page orientation. Here they are with their default values:
+page.type @Index @Code "@PageType"
+@ID @OneRow @Code @Verbatim {
+@PageType { A4 }
+@PageWidth {}
+@PageHeight {}
+@PageOrientation { Portrait }
+}
+The default value at your site may be different, since installers of
+Lout are recommended to set it to the usual size of a piece of paper
+at their location. The easy way to change the page size is to set
+the @Code "@PageType" option to the name of the paper you use:
+@ID @Tab
+ vmargin { 0.5vx }
+ @Fmtb { @Col ! @Col ! @Col @I @RR B ! @Col @I @RR C }
+ @Fmta { @Col @Code { "@PageType {" A "}" } ! @Col ! @Col @Code @CC B !
+ @Col @Code @CC C }
+{
+@Rowb B { width in points } C { height in points }
+@Rowa A { Letter } B { 612p } C { 792p }
+@Rowa A { Tabloid } B { 792p } C { 1224p }
+@Rowa A { Ledger } B { 1224p } C { 792p }
+@Rowa A { Legal } B { 612p } C { 1008p }
+@Rowa A { Statement } B { 396p } C { 612p }
+@Rowa A { Executive } B { 540p } C { 720p }
+@Rowa A { A0 } B { 2380p } C { 3368p }
+@Rowa A { A1 } B { 1684p } C { 2380p }
+@Rowa A { A2 } B { 1190p } C { 1684p }
+@Rowa A { A3 } B { 842p } C { 1190p }
+@Rowa A { A4 } B { 595p } C { 842p }
+@Rowa A { A5 } B { 420p } C { 595p }
+@Rowa A { ISOB4 } B { 709p } C { 1001p }
+@Rowa A { ISOB5 } B { 499p } C { 709p }
+@Rowa A { JISB4 } B { 729p } C { 1032p }
+@Rowa A { JISB5 } B { 516p } C { 729p }
+@Rowa A { B4 } B { 729p } C { 1032p }
+@Rowa A { B5 } B { 516p } C { 729p }
+@Rowa A { Folio } B { 612p } C { 936p }
+@Rowa A { Quarto } B { 610p } C { 780p }
+@Rowa A { 10x14 } B { 720p } C { 1008p }
+}
+This will automatically assign the widths and heights shown above to
+the @Code "@PageWidth" and @Code "@PageHeight" options, so you don't
+have to worry about those options. It is recommended that {@Code ISOB4}
+or {@Code JISB4} be used instead of {@Code B4}, and that {@Code ISOB5}
+or {@Code JISB5} be used instead of {@Code B5}. If your paper size
+is not on this list, set @Code "@PageType" to @Code Other and supply
+your own width and height:
+page.width @Index @Code "@PageWidth"
+page.height @Index @Code "@PageHeight"
+@ID @Tab
+ vmargin { 0.5vx }
+ @Fmta { @Col @Code A }
+{
+@Rowa A { "@PageType { Other }" }
+@Rowa A { "@PageWidth { 12.0c }" }
+@Rowa A { "@PageHeight { 18.0c }" }
+}
+The width and height may each be any length (Section {@NumberOf objects}),
+and do not have to be in points.
+@PP
+The basic page orientations are @I portrait and @I landscape:
+page.orientation @Index @Code "@PageOrientation"
+@ID @Tab
+ @Fmta { @Col 8c @Wide @Code A ! @Col B }
+{
+@Rowa
+ A { "@PageOrientation { Portrait }" }
+ B { @Box 1.0c @Wide 1.4c @High { Hello } }
+@Rowa
+@Rowa
+ A { "@PageOrientation { Landscape }" }
+ B { @Box 1.4c @Wide 1.0c @High { Hello } }
+}
+When changing to {@Code Landscape}, do not change the page type, page
+width, or page height, and do not change the way you feed your paper
+into the printer. Lout knows what to do.
+@PP
+Two other orientations are provided which are 180@Degree rotations of
+the basic ones:
+@ID @Tab
+ @Fmta { @Col 8c @Wide @Code A ! @Col B }
+{
+@Rowa
+ A { "@PageOrientation { ReversePortrait }" }
+ B { @Box 1.0c @Wide 1.4c @High { //1rt &1rt 180d @Rotate Hello } }
+@Rowa
+@Rowa
+ A { "@PageOrientation { ReverseLandscape }" }
+ B { @Box 1.4c @Wide 1.0c @High { //1rt &1rt 180d @Rotate Hello } }
+}
+# @Code ReverseLandscape might be useful when post-processing the
+# PostScript output to print two landscape pages per sheet.
+The @Code "@PageOrientation" symbol is available at the start of a
+document, as well as in the setup file, like {@Code "@InitialFont"}
+and {@Code "@PageHeaders"}.
+@End @Section
diff --git a/doc/doc/user/gra b/doc/doc/user/gra
new file mode 100644
index 0000000..58c73ac
--- /dev/null
+++ b/doc/doc/user/gra
@@ -0,0 +1,46 @@
+@Chapter
+ @Title { Graphs }
+ @Tag { graphs }
+@Begin
+@LP
+This chapter describes how to draw graphs, using the @Code "@Graph"
+graphs. @Index { graphs (statistical) }
+graph. @Index @Code "@Graph"
+symbol. For example,
+@ID @OneRow @Code {
+"@Graph"
+" abovecaption { New South Wales road deaths, 1960--1990"
+"(fatalities per 100 million vehicle km) }"
+"{"
+" @Data points { plus } pairs { dashed }"
+" { 1963 5.6 1971 4.3 1976 3.7 1979 3.4 1982 2.9 1985 2.3 1988 2.0 }"
+"}"
+}
+produces the graph
+@CD @Graph
+ abovecaption { New South Wales road deaths, 1960--1990
+(fatalities per 100 million vehicle km) }
+{
+ @Data
+ points { plus }
+ pairs { dashed }
+ {
+ 1963 5.6 1971 4.3 1976 3.7 1979 3.4 1982 2.9 1985 2.3 1988 2.0
+ }
+}
+The features of @Code "@Graph" include captions, automatic and manual
+ticks and labels, logarithmic axes, histograms, and plotting of
+mathematical functions.
+@BeginSections
+@Include { gra_intr }
+@Include { gra_over }
+@Include { gra_capt }
+@Include { gra_tick }
+@Include { gra_data }
+@Include { gra_plac }
+@Include { gra_func }
+@Include { gra_keys }
+@Include { gra_erro }
+@Include { gra_summ }
+@EndSections
+@End @Chapter
diff --git a/doc/doc/user/gra_capt b/doc/doc/user/gra_capt
new file mode 100644
index 0000000..6c7e77c
--- /dev/null
+++ b/doc/doc/user/gra_capt
@@ -0,0 +1,110 @@
+@Section
+ @Title { Captions }
+ @Tag { captions }
+@Begin
+@PP
+There are options for placing captions above, below, left, and right of
+captions. @RawIndex { captions }
+captions.graphs @SubIndex { in graphs }
+graphs. @RawIndex { graphs (statistical) }
+graphs.captions @SubIndex { captions }
+graphs.abovecaption @SubIndex { @Code abovecaption option }
+abovecaption. @RawIndex { @Code "abovecaption" option }
+abovecaption.graph @SubIndex { in graphs }
+graphs. @RawIndex { graphs (statistical) }
+graphs.belowcaption @SubIndex { @Code belowcaption option }
+belowcaption. @RawIndex { @Code "belowcaption" option }
+belowcaption.graph @SubIndex { in graphs }
+graphs. @RawIndex { graphs (statistical) }
+graphs.leftcaption @SubIndex { @Code leftcaption option }
+leftcaption. @RawIndex { @Code "leftcaption" option }
+leftcaption.graph @SubIndex { in graphs }
+graphs. @RawIndex { graphs (statistical) }
+graphs.rightcaption @SubIndex { @Code rightcaption option }
+rightcaption. @RawIndex { @Code "rightcaption" option }
+rightcaption.graph @SubIndex { in graphs }
+the frame:
+@ID @OneRow @Code {
+"@Graph"
+" abovecaption { This appears above }"
+" belowcaption { This appears below }"
+" leftcaption { At left }"
+" rightcaption { At right }"
+"{"
+"}"
+}
+produces
+@CD @Graph
+ abovecaption { This appears above }
+ belowcaption { This appears below }
+ leftcaption { At left }
+ rightcaption { At right }
+{
+}
+The captions may be arbitrary Lout objects, so may include
+equations, {@Code "@Rotate"}, and so on. Each caption except
+@Code rightcaption is printed in the
+@Code "clines @Break" style, which means that multiple lines in one
+caption will be centred beneath each other. The @Code rightcaption
+option uses the @Code "lines @Break" style, in which the lines are
+left justified beneath each other. Incidentally, this example shows
+what happens if there is no data.
+@PP
+There are options for controlling the amount of space between each
+caption (when non-empty) and the frame. Here they are with their
+graphs. @RawIndex { graphs (statistical) }
+graphs.abovegap @SubIndex { @Code abovegap option }
+abovegap. @RawIndex { @Code "abovegap" option }
+abovegap.graphs @SubIndex { in graphs }
+graphs. @RawIndex { graphs (statistical) }
+graphs.belowgap @SubIndex { @Code belowgap option }
+belowgap. @RawIndex { @Code "belowgap" option }
+belowgap.graphs @SubIndex { in graphs }
+graphs. @RawIndex { graphs (statistical) }
+graphs.leftgap @SubIndex { @Code leftgap option }
+leftgap. @RawIndex { @Code "leftgap" option }
+leftgap.graphs @SubIndex { in graphs }
+graphs. @RawIndex { graphs (statistical) }
+graphs.rightgap @SubIndex { @Code rightgap option }
+rightgap. @RawIndex { @Code "rightgap" option }
+rightgap.graphs @SubIndex { in graphs }
+default values:
+@ID @OneRow @Code @Verbatim {
+@Graph
+ abovegap { 0.5c }
+ belowgap { 0.5c }
+ leftgap { 1.5c }
+ rightgap { 0.5c }
+{
+ ...
+}
+}
+This is particularly important in the case of {@Code "leftgap"} (and
+@Code "rightgap" if @Code rticks is used), because
+Lout has no idea how wide the ticks and labels attached to the y axis
+are; 1.5c is just a wild guess and often needs adjustment. On the
+other hand, Lout does know how high the ticks and labels on the x axis
+are; it allows 1.7 times the current font size for them, and
+@Code "belowgap" is additional to this.
+@PP
+When a graph is to be presented as a centred display, it is generally
+best if the centring is done with respect to the frame alone, not the
+captions, ticks, and labels. The @Code "hidecaptions" option does this by
+graphs. @RawIndex { graphs (statistical) }
+graphs.hidecaptions @SubIndex { @Code hidecaptions option }
+hidecaptions. @RawIndex { @Code "hidecaptions" option }
+hidecaptions.in.graphs @SubIndex { in graphs }
+making the left and right captions and gaps seem to Lout to have zero width:
+@ID @OneRow @Code @Verbatim {
+@Graph
+ hidecaptions { yes }
+{
+ ...
+}
+}
+Actually @Code "yes" has been made the default value, since the vast
+majority of graphs are centred displays. In the rare cases where
+this feature is not wanted (for example, if a graph appears as an entry
+in a table), use {@Code "hidecaptions { no }"}. The y and r ticks and labels
+seem to Lout to have zero width already, so do not need to be hidden.
+@End @Section
diff --git a/doc/doc/user/gra_data b/doc/doc/user/gra_data
new file mode 100644
index 0000000..318cd20
--- /dev/null
+++ b/doc/doc/user/gra_data
@@ -0,0 +1,382 @@
+@Section
+ @Title { Changing the appearance of the data }
+ @Tag { data }
+@Begin
+@PP
+The @Code "@Data" symbol has options for controlling the
+graphs. @RawIndex { graphs (statistical) }
+graphs.data @SubIndex { @Code "@Data" symbol }
+data.graph @Index { @Code "@Data" symbol (graphs) }
+appearance of its data. We have already seen the
+@Code "points" option, which controls what is printed at each data
+graphs. @RawIndex { graphs (statistical) }
+graphs.points @SubIndex { @Code points option }
+points.graph @Index { @Code "points" option (graphs) }
+point:
+@CD @Tab
+ vmargin { 0.5vx }
+ @Fmta { @Col @Code A ! @Col B ! @Col ! @Col @Code C ! @Col D }
+{
+@Rowa
+ A { cross }
+ B { @GraphCross }
+ C { plus }
+ D { @GraphPlus }
+@Rowa
+ A { square }
+ B { @GraphSquare }
+ C { filledsquare }
+ D { @GraphFilledSquare }
+@Rowa
+ A { diamond }
+ B { @GraphDiamond }
+ C { filleddiamond }
+ D { @GraphFilledDiamond }
+@Rowa
+ A { circle }
+ B { @GraphCircle }
+ C { filledcircle }
+ D { @GraphFilledCircle }
+@Rowa
+ A { triangle }
+ B { @GraphTriangle }
+ C { filledtriangle }
+ D { @GraphFilledTriangle }
+}
+Filled and open squares have exactly the same size, filled and open
+diamonds have exactly the same size, and so on. If the @Code "points"
+option is omitted or empty, nothing is printed. The symbols are
+centred over the data point. There is a @Code "symbolsize"
+graphs. @RawIndex { graphs (statistical) }
+graphs.symbolsize @SubIndex { @Code symbolsize option }
+symbolsize.graph @Index { @Code "symbolsize" option (graphs) }
+option which controls the size (radius) of all these symbols, and
+a @Code "symbollinewidth" option which controls their line width:
+# @FootNote {
+# The @Code "symbollinewidth" option was introduced in Version 3.37,
+# as part of a bug fix which also caused the printed size of some
+# symbols to change slightly.
+# }
+@ID @OneRow @Code {
+"@Data"
+" symbolsize { 0.15f }"
+" symbollinewidth { 0.5p }"
+}
+shows their default values, 0.15 times the current font size and half
+a point. More precisely, these default values are taken from options
+to the @Code "@Graph" symbol with the same names. By setting those
+options you can therefore control all data points in the graph at
+once. The @Code "symbollinewidth" option does not affect the
+appearance of @Code { filledsquare }, @Code { filleddiamond },
+@Code { filledcircle }, or @Code { filledtriangle }.
+@PP
+The @Code "@Data" symbol also has a @Code "pairs" option which
+graphs. @RawIndex { graphs (statistical) }
+graphs.pairs @SubIndex { @Code pairs option }
+pairs.graph @Index { @Code "pairs" option (graphs) }
+determines how each pair of points is connected. The choices are
+@Code none (not connected, the default), @Code solid (a solid line),
+@Code dashed (a dashed line), @Code dotted (a dotted line), or
+@Code { dotdashed }, @Code { dotdotdashed }, and @Code { dotdotdotdashed }
+for mixing dots and dashes. For example,
+@ID @OneRow @Code @Verbatim {
+@Graph
+ abovecaption { Estimated population of Boston, New York, and Philadelphia }
+{
+ @Data points { plus } pairs { solid }
+ { 1720 12000 1730 13000 1740 15601 1760 15631 1770 15877 }
+
+ @Data points { plus } pairs { dashed }
+ { 1720 7000 1730 8622 1740 10451 1750 14255 1760 18000 1770 22667 }
+
+ @Data points { plus } pairs { dotdashed }
+ { 1720 10000 1730 11500 1740 12654 1750 18202 1760 23750 1770 34583 }
+}
+}
+produces
+@CD @Graph
+ abovecaption { Estimated population of Boston, New York, and Philadelphia
+}
+{
+ @Data points { plus } pairs { solid }
+ { 1720 12000 1730 13000 1740 15601 1760 15631 1770 15877 }
+
+ @Data points { plus } pairs { dashed }
+ { 1720 7000 1730 8622 1740 10451 1750 14255 1760 18000 1770 22667 }
+
+ @Data points { plus } pairs { dotdashed }
+ { 1720 10000 1730 11500 1740 12654 1750 18202 1760 23750 1770 34583 }
+
+}
+(R. C. Simmons, @I { The American Colonies }, W. W. Norton, New York,
+1981.) We will see in Section {@NumberOf key} how to add an explanatory key to
+this graph. If the points have symbols, these connecting lines will stop 1.5
+symbolsizes away from the data points, so as not to overstrike them. If
+the points have no symbols and @Code "pairs" is {@Code "dashed"}, the
+first and last dash in each segment will have half the length of the
+others.
+@PP
+A @Code "dashlength" option controls the length of dashes and also the
+graphs. @RawIndex { graphs (statistical) }
+graphs.dashlength @SubIndex { @Code dashlength option }
+dashlength.graph @Index { @Code "dashlength" option (graphs) }
+separation between dots, and a @Code "linewidth" option controls the
+graphs. @RawIndex { graphs (statistical) }
+graphs.linewidth @SubIndex { @Code linewidth option }
+linewidth.graph @Index { @Code "linewidth" option (graphs) }
+width (thickness) of the lines and dots:
+@ID @OneRow @Code @Verbatim {
+@Data
+ dashlength { 0.2f }
+ linewidth { 0.5p }
+{
+ ...
+}
+}
+This shows the default values, {@Code "0.2f"} for @Code "dashlength"
+and {@Code "0.5p"} (half a point) for {@Code "linewidth"}. Actually
+the default value for @Code "linewidth" is whatever happens to be
+already in use, but Lout sets line widths to half a point initially.
+This option also controls the separation between bars in histograms.
+@PP
+The @Code "pairs" option is also used for producing histograms, like
+graphs. @RawIndex { graphs (statistical) }
+graphs.histograms @SubIndex { histograms }
+histograms. @Index { histograms }
+graphs. @RawIndex { graphs (statistical) }
+graphs.yhisto @SubIndex { @Code yhisto option }
+yhisto.graph @Index { @Code "yhisto" option (graphs) }
+this:
+@ID @OneRow @Code @Verbatim {
+@Graph
+ hidecaptions { yes }
+ abovecaption { Computer Science 3 Results (1993) }
+ leftcaption { Number of
+students }
+ belowcaption { Final mark (%) }
+ yextra { 0c }
+ ymax { 80 }
+{
+ @Data pairs { yhisto }
+ { 0 1 10 3 20 2 30 4 40 15 50 60 60 58 70 28 80 15 90 7 100 0 }
+}
+}
+which has result
+@CD @Graph
+ hidecaptions { yes }
+ abovecaption { Computer Science 3 Results (1993) }
+ leftcaption { Number of
+students }
+ belowcaption { Final mark (%) }
+ yextra { 0c }
+ ymax { 80 }
+{
+ @Data
+ pairs { yhisto }
+ { 0 1 10 3 20 2 30 4 40 15 50 60 60 58 70 28 80 15 90 7 100 0 }
+}
+Note carefully that one y histogram rectangle occupies the space from
+one x value to the next, with height equal to the y value lying between
+these two x values. This means that the very last y value has no effect
+on the result (however, there must be a last y value anyway).
+@PP
+There is an alternative to @Code "yhisto" called {@Code "surfaceyhisto"}:
+graphs. @RawIndex { graphs (statistical) }
+graphs.surfaceyhisto @SubIndex { @Code surfaceyhisto option }
+surfaceyhisto.graph @Index { @Code "surfaceyhisto" option (graphs) }
+@CD @Graph
+ hidecaptions { yes }
+ abovecaption { Computer Science 3 Results (1993) }
+ leftcaption { Number of
+students }
+ belowcaption { Final mark (%) }
+ yextra { 0c }
+ ymax { 80 }
+{
+ @Data
+ pairs { surfaceyhisto }
+ { 0 1 10 3 20 2 30 4 40 15 50 60 60 58 70 28 80 15 90 7 100 0 }
+}
+As you can see, @Code "surfaceyhisto" draws just the surface of the
+histogram, not the descending lines.
+@PP
+There are @Code "xhisto" and @Code "surfacexhisto" values of
+graphs. @RawIndex { graphs (statistical) }
+graphs.xhisto @SubIndex { @Code xhisto option }
+xhisto.graph @Index { @Code "xhisto" option (graphs) }
+graphs. @RawIndex { graphs (statistical) }
+graphs.surfacexhisto @SubIndex { @Code surfacexhisto option }
+surfacexhisto.graph @Index { @Code "surfacexhisto" option (graphs) }
+@Code "pairs" which produce a histogram whose bars are parallel to
+the x axis. There are also {@Code "filledyhisto" } and
+{@Code "filledxhisto" } values which produce filled rectangles rather
+graphs. @RawIndex { graphs (statistical) }
+graphs.filledxhisto @SubIndex { @Code filledxhisto option }
+filledxhisto.graph @Index { @Code "filledxhisto" option (graphs) }
+graphs. @RawIndex { graphs (statistical) }
+graphs.filledyhisto @SubIndex { @Code filledyhisto option }
+filledyhisto.graph @Index { @Code "filledyhisto" option (graphs) }
+than outlined ones:
+@ID @OneRow @Code @Verbatim {
+@Graph
+ abovecaption { Fertility rates in some developing countries }
+ xextra { 0c }
+ yextra { 0c }
+ xmax { 8 }
+ yticks {
+ 1.5 (Turkey) 2.5 (Thailand)
+ 3.5 (Indonesia) 4.5 (Costa Rica)
+ 5.5 (Colombia) 6.5 (Cameroon)
+ 7.5 (Botswana) 8.5 (Bangladesh)
+ }
+ yticklength { 0c }
+{
+ @Data
+ pairs { filledxhisto }
+ { 0 1 3.2 2 2.2 3 3.0 4 3.5 5 2.8 6 5.9 7 4.8 8 5.3 9 }
+}
+}
+produces
+@CD @Graph
+ abovecaption { Fertility rates in some developing countries }
+ xextra { 0c }
+ yextra { 0c }
+ xmax { 8 }
+ yticks { 1.5 (Turkey) 2.5 (Thailand) 3.5 (Indonesia) 4.5 (Costa Rica)
+ 5.5 (Colombia) 6.5 (Cameroon) 7.5 (Botswana) 8.5 (Bangladesh) }
+ yticklength { 0c }
+{
+ @Data
+ pairs { filledxhisto }
+ { 0 1 3.2 2 2.2 3 3.0 4 3.5 5 2.8 6 5.9 7 4.8 8 5.3 9 }
+}
+(Bryant Robey, Shea O. Rutstein, and Leo Morros: The fertility decline in
+developing countries, @I { Scientific American }, December 1993.) Once
+again each bar goes from one y value to the next, with its x value
+equal to the x value lying between the two y values; this time the very
+first x value has no effect on the result.
+@PP
+The colour of one set of data can be changed with a @Code "colour"
+graphs. @RawIndex { graphs (statistical) }
+graphs.colour @SubIndex { @Code colour option }
+colour.graph @Index { @Code "colour" option (graphs) }
+option:
+@ID @OneRow @Code @Verbatim {
+@Data
+ colour { blue }
+}
+For the complete list of acceptable colours, see Section
+{@NumberOf colour}. The @Code "colour" option's name may also be
+spelt @Code {"color"}.
+@PP
+It is also possible to paint the area between the data points and
+the x axis (or frame if @Code "style" is not {@Code "axes"}), using
+graphs. @RawIndex { graphs (statistical) }
+graphs.paint @SubIndex { @Code paint option }
+paint. @RawIndex { @Code "paint" option }
+paint.in.graphs @SubIndex { in graphs }
+@ID @OneRow @Code {
+"@Data"
+" paint { yes }"
+}
+The paint colour is determined by the @Code "colour" option just
+introduced; it will be @Code "black" if no colour is specified. Paint
+(including white paint) hides paint, points, and lines drawn by previous
+data sets. However the points and lines of each data set are drawn after
+painting that set, so they cannot be hidden under their own paint; and
+axes and frames are drawn last so that they too are never hidden.
+@PP
+Wherever there is a @Code paint option in Lout's standard packages,
+there is a neighbouring @Code texture option. For historical reasons
+the @Code paint option of @Code "@Graph" is not quite the same as other
+@Code "paint" options, but the @Code "texture" option is available
+graphs. @RawIndex { graphs (statistical) }
+graphs.texture @SubIndex { @Code texture option }
+texture.option. @RawIndex { @Code "texture" option }
+texture.option.in.graph @SubIndex { in graphs }
+as usual:
+@ID @OneRow @Code @Verbatim {
+@Graph
+ yextra { 0c }
+{
+ @Data
+ paint { yes }
+ texture { chessboard angle { 45d } }
+ { 0 0.00 1 1.00 2 1.50 3 1.83 4 2.08 5 2.28 6 2.45 }
+}
+}
+produces
+@FootNote {
+If you can't see any textures here, the fault is probably with your
+PostScript viewer. See Section {@NumberOf textures}.
+}
+@CD @Graph
+ yextra { 0c }
+{
+ @Data
+ paint { yes }
+ texture { striped angle { 90d } }
+ { 0 0.00 1 1.00 2 1.50 3 1.83 4 2.08 5 2.28 6 2.45 }
+}
+Any value acceptable to the @Code "texture" option of @Code "@Box"
+(Section {@NumberOf boxes}) is acceptable here. The @Code "texture"
+option will also give a texture to the filled areas of a
+{@Code filledxhisto} or {@Code filledyhisto}:
+@ID @OneRow @Code @Verbatim {
+@Graph
+ yextra { 0c }
+{
+ @Data
+ pairs { filledyhisto }
+ texture { striped angle { 45d } }
+ { 0 0.00 1 1.00 2 1.50 3 1.83 4 2.08 5 2.28 6 2.45 7 0 }
+}
+}
+produces
+@CD @Graph
+ yextra { 0c }
+{
+ @Data
+ pairs { filledyhisto }
+ texture { striped angle { 45d } }
+ { 0 0.00 1 1.00 2 1.50 3 1.83 4 2.08 5 2.28 6 2.45 7 0 }
+}
+If you want the bars to vary in colour or texture, you have to give
+multiple @Code "@Data" sets, one for each combination of colour and
+texture.
+@PP
+A @Code "dataformat" option is provided for changing the interpretation
+graphs. @RawIndex { graphs (statistical) }
+graphs.dataformat @SubIndex { @Code dataformat option }
+dataformat.graph @Index { @Code "dataformat" option (graphs) }
+of the data. Ordinarily, as we know, the numbers are taken to be pairs of
+x and y coordinates, like this:
+@ID @OneRow @Code {
+"@Data"
+"{"
+" x y x y ... x y"
+"}"
+}
+However, by setting @Code "dataformat" to {@Code "yonly"}, the
+interpretation is changed to a sequence of y coordinates only:
+@ID @OneRow @Code {
+"@Data"
+" dataformat { yonly }"
+"{"
+" y y ... y"
+"}"
+}
+and x values 1, 2, and so on are inserted automatically, as though
+the original input was
+@ID @OneRow @Code {
+"@Data"
+"{"
+" 1 y 2 y ..."
+"}"
+}
+Similarly, {@Code "xonly"} inserts y values 1, 2, and so on. The
+default value, {@Code "xandy"}, gives the usual interpretation, and
+{@Code "swapxandy"} exchanges adjacent pairs of numbers: the data
+is interpreted as @M { (y, x) } pairs rather than @M { (x, y) }
+pairs. The layout of data on lines has no effect on the interpretation.
+@End @Section
diff --git a/doc/doc/user/gra_erro b/doc/doc/user/gra_erro
new file mode 100644
index 0000000..2a11dba
--- /dev/null
+++ b/doc/doc/user/gra_erro
@@ -0,0 +1,48 @@
+@Section
+ @Title { Errors }
+ @Tag { grerrors }
+@Begin
+@PP
+Lout normally produces output that will print without mishap on
+graphs. @RawIndex { graphs (statistical) }
+graphs.errors @SubIndex { errors }
+errors. @RawIndex { errors }
+errors.in.graphs @SubIndex { in graphs }
+any PostScript device. However, some of the options of @Code "@Graph"
+and all of the data and labels are passed through Lout without
+checking. Any errors in this material will not be detected
+until the file is printed.
+@PP
+The most likely errors are @I { rangecheck errors}, for example if
+an attempt is made to divide by zero or take the square root of a
+negative number, and @I { undefined errors }, arising from symbols
+misspelt, use of @Code "x" outside an {@Code "xloop"}, etc. Less commonly,
+everything may be correct but the graph is too large in some
+way: too much data, expression too deeply nested, and so on.
+@PP
+When an error is detected, @Code "@Graph" arranges for the offending page
+to be printed up to where the error occurred, with a message describing
+the error. Printing of the document is then aborted. The problem is
+usually easy to locate since it lies in whatever should have been printed
+next.
+@PP
+If you see @Code VMerror in an error message, it means that the printer
+has run out of memory. All the data is stored in the printer while the
+graph is being printed, and it remains there until the end of the current
+page, when it is discarded and all memory consumed by the graph is
+reclaimed. If you do run out of memory, one option is to try
+graphs. @RawIndex { graphs (statistical) }
+graphs.save @SubIndex { @Code save option }
+save. @RawIndex { @Code "save" option }
+save.in.graphs @SubIndex { in graphs }
+@ID @OneRow @Code @Verbatim {
+@Graph
+ save { yes }
+...
+}
+This causes the memory used by the graph to be reclaimed as soon as
+the graph is printed, which might solve your problem if you have
+several graphs on one page. However, if the graph is inside some
+other major package, notably {@Code "@Diag"}, this could cause
+PostScript errors in that package.
+@End @Section
diff --git a/doc/doc/user/gra_func b/doc/doc/user/gra_func
new file mode 100644
index 0000000..fbe3df4
--- /dev/null
+++ b/doc/doc/user/gra_func
@@ -0,0 +1,180 @@
+@Section
+ @Title { Mathematical functions, loops, and tests }
+ @Tag { functions }
+@Begin
+@PP
+@Code "@Graph" offers quite a large selection of mathematical functions,
+graphs. @RawIndex { graphs (statistical) }
+graphs.mathematical @SubIndex { mathematical functions }
+mathematical.functions @Index { mathematical functions in graphs }
+available everywhere that x and y coordinates are required: within
+the @Code xticks and @Code yticks options, within the points within
+the @Code "objects" option, and within the right parameter of the
+@Code "@Data" symbol. For example,
+@ID @OneRow @Code @Verbatim {
+@Data
+ pairs { solid }
+{
+ 0 0 pi sin { pi/2 }
+}
+}
+draws a solid line from @M {(0, 0)} to @M {(pi, sin(pi "/" 2))}. Section
+{@NumberOf grsummary} lists all the functions; they include the four
+arithmetical operators @M { non + }, @M { non - }, @M { non * }, and
+@M { "/" }, as well as {@Code "sin"}, {@Code "cos"}, {@Code "sqrt"}, and
+many others. Braces are used for grouping, never parentheses.
+@PP
+For plotting functions there are three looping symbols, {@Code "xloop"},
+{@Code "yloop"}, and {@Code "zloop"}. For example, the following plots
+the two functions @M { y = 2 } and @M { y = sqrt { pi x "/" 4 } + 1 }
+for @M { x } from 10 to 500:
+@ID -1px @Break @OneRow @Code @Verbatim {
+-2p @Font @Graph
+ style { axes }
+ xorigin { 0 }
+ yorigin { 0 }
+ width { 8c }
+ xticks { 10@ 50@ 100@ 200@ 500@ }
+ objects { @NE at { 300 2 } @I { Exponential }
+ @SE at { 300 sqrt { pi*300/4 } + 1 } @I { Uniform } }
+ belowcaption { @I n }
+ belowgap { 0c }
+ leftcaption { Right shell nodes }
+{
+ @Data points { filledcircle }
+ { 10 1.97 50 2.01 100 2.00 200 2.0 500 2.00 }
+
+ @Data points { filledcircle }
+ { 10 3.53 50 7.45 100 9.32 200 13.41 500 21.63 }
+
+ @Data pairs { dashed }
+ { 10 2 500 2 }
+
+ @Data pairs { dashed }
+ {
+ xloop from { 10 } to { 500 } by { 20 } do
+ {
+ x sqrt { pi*x / 4 } + 1
+ }
+ }
+}
+}
+The @Code "do" option of @Code xloop is replicated repeatedly with each
+occurrence of @Code x replaced by 10, 30, 50, ... up to 490. The
+result is
+@CD -2p @Font @Graph
+ style { axes }
+ xorigin { 0 }
+ yorigin { 0 }
+ width { 8c }
+ xticks { 10@ 50@ 100@ 200@ 500@ }
+ objects {
+ @NE at { 300 2 } @I { Exponential }
+ @SE at { 300 sqrt { pi*300/4 } + 1 } @I { Uniform }
+ }
+ belowcaption { @I n }
+ belowgap { 0c }
+ leftcaption { Right shell nodes }
+{
+ @Data points { filledcircle }
+ { 10 1.97 50 2.01 100 2.00 200 2.0 500 2.00 }
+
+ @Data points { filledcircle }
+ { 10 3.53 50 7.45 100 9.32 200 13.41 500 21.63 }
+
+ @Data pairs { dashed }
+ { 10 2 500 2 }
+
+ @Data pairs { dashed }
+ {
+ xloop from { 10 } to { 500 } by { 20 } do
+ {
+ x sqrt { pi*x / 4 } + 1
+ }
+ }
+}
+(Jeffrey H. Kingston, Analysis of tree algorithms for the simulation
+event list. @I { Acta Informatica } {@B 22}, pp. 15--33 1985). The
+points are connected by straight line segments as usual, but a
+smallish @Code "by" option of about one-twentieth of the range creates
+the illusion of a smooth curve quite well.
+@PP
+There is also an @Code "if" symbol which produces alternative results,
+depending on whether a condition evaluates to @Code "true" or
+{@Code"false"}:
+@ID @OneRow @Code @Verbatim {
+xloop from { -5 } to { +5 } by { 0.2 } do
+{
+ if cond { abs { x } > 0.1 } then { x 1/x } else {}
+}
+}
+This plots the function @M { y = 1 "/" x }, skipping points near
+zero. Actually the @Code "else" part could be omitted since its default
+value is empty.
+@PP
+Adventurous users might enjoy nesting a @Code "yloop" or @Code "zloop"
+within an {@Code "xloop"}, or using loops to generate ticks, like this:
+@ID @OneRow @Code @Verbatim {
+xticks {
+ xloop from { 0 } to { 20 } do
+ {
+ x if cond { x mod 5 = 0 } then { @ }
+ }
+}
+}
+The missing @Code "by" option defaults to 1, so this produces x ticks at
+0, 1, 2, ..., 20, with labels at 0, 5, 10, 15, and 20. It is quite all
+right to mix @Code "@" and even labels in with numbers, as long as the
+final result obeys the rules of Section {@NumberOf ticks}.
+@PP
+You can define your own functions using Lout definitions, placed in your
+@Code "mydefs" file as explained in Section {@NumberOf definitions}. Here
+is an example of a function definition:
+@ID @OneRow @Code @Verbatim {
+import @Graph @Data
+def @Tan
+ precedence 40
+ right x
+{
+ sin x / cos x
+}
+}
+This defines a function called @Code "@Tan" which implements the
+trigonometric tangent function. It may then be used in expressions
+just like any other function:
+@ID @OneRow @Code @Verbatim {
+@Data {
+ yloop from { 0 } to { 0.95 } by { 0.05 } do
+ {
+ y @Tan { y / pi }
+ }
+}
+}
+Following is a detailed explanation.
+@PP
+The first line, {@Code "import @Graph @Data"}, is the import clause. Its
+function is to grant the definition access to the three previously defined
+functions (symbols) that it uses, namely {@Code "sin"}, {@Code "cos"},
+and {@Code "/"}. These are found within the @Code "@Data" symbol within
+{@Code "@Graph"}.
+@PP
+After the import clause comes the @Code "def" keyword, meaning
+`define,' and then the name of the symbol being defined, in this case
+@Code "@Tan". We have chosen @Code "@Tan" rather than @Code "tan"
+because symbols defined by the user in this way are visible throughout
+the document, and we do not want the literal word @Code "tan" to be
+taken as a symbol.
+@PP
+Next comes the symbol's precedence, in this case the same as @Code "sin" and
+@Code "cos" (see Section {@NumberOf grsummary} for the precedence of
+each symbol). Next is a list of the formal parameters, in this case
+just one, called {@Code "x"}, that is to be passed on the right.
+@PP
+Finally comes the body of the definition enclosed in braces. When
+@Code "@Tan" is invoked, its value will be this body with each occurrence
+of the formal parameter @Code "x" replaced by the object following the
+@Code "@Tan" symbol. For example, the @Code "do" option of the @Code
+"yloop" above becomes
+@ID @Code "y sin { y / pi } / cos { y / pi }"
+as you would expect.
+@End @Section
diff --git a/doc/doc/user/gra_intr b/doc/doc/user/gra_intr
new file mode 100644
index 0000000..94d2cd3
--- /dev/null
+++ b/doc/doc/user/gra_intr
@@ -0,0 +1,51 @@
+@Section
+ @Title { Introduction }
+ @Tag { grintro }
+@Begin
+@PP
+The Lout definitions for graph formatting are kept in a file called
+{@Code "graph"}, which you must include at the start of your document if
+graph.file @Index { @Code "graph" file }
+you want graphs, like this:
+@ID @OneRow @Code {
+"@SysInclude { graph }"
+"@SysInclude { doc }"
+"@Doc @Text @Begin"
+"..."
+"@End @Text"
+}
+Setup files like {@Code "graph"} are best included before the main
+setup file. Once this is done, the @Code "@Graph" symbol will be
+available for use anywhere within your document.
+@PP
+@Code "@Graph" distinguishes between the overall graph, produced by the
+@Code "@Graph" symbol itself, and the data sets to be placed within it,
+each of which is enclosed by a @Code "@Data" symbol:
+@ID @OneRow @Code {
+"@CentredDisplay @Graph"
+"{"
+" @Data points { plus }"
+" { 1 1.10 2 1.21 3 1.33 4 1.46 5 1.61 6 1.77 7 1.95 8 2.14 }"
+""
+" @Data points { circle }"
+" { 1 1.20 2 1.44 3 1.73 4 2.07 5 2.45 6 2.99 7 3.58 8 4.30 }"
+"}"
+}
+Although it is good practice to lay the input data out neatly, layout
+has no effect on the result. It is not necessary to have one data point
+per line, for example. The result of this example is
+@CentredDisplay @Graph
+{
+ @Data
+ points { plus }
+ { 1 1.10 2 1.21 3 1.33 4 1.46 5 1.61 6 1.77 7 1.95 8 2.14 }
+
+ @Data
+ points { circle }
+ { 1 1.20 2 1.44 3 1.73 4 2.07 5 2.45 6 2.99 7 3.58 8 4.30 }
+}
+We have used the @Code "@CentredDisplay" symbol from Section
+{@NumberOf displays} to produce a centred display, but the
+@Code "@Graph" symbol produces an object which may appear anywhere
+at all.
+@End @Section
diff --git a/doc/doc/user/gra_keys b/doc/doc/user/gra_keys
new file mode 100644
index 0000000..e3a7e5a
--- /dev/null
+++ b/doc/doc/user/gra_keys
@@ -0,0 +1,171 @@
+@Section
+ @Title { Adding a key to the graph }
+ @Tag { key }
+@Begin
+@PP
+A @I key to a graph is an explanation of what each data set
+graphs. @RawIndex { graphs (statistical) }
+graphs.keys @SubIndex { keys }
+keys.graph @Index { keys in graphs }
+represents. To assist you in constructing a key, some extra symbols
+are provided in addition to {@Code "@Graph"}:
+graphs. @RawIndex { graphs (statistical) }
+graphs.graphcross @SubIndex { @Code "@GraphCross" symbol }
+{ graphacross } @Index { @Code "@GraphCross" symbol (graphs) }
+
+graphs. @RawIndex { graphs (statistical) }
+graphs.graphplus @SubIndex { @Code "@GraphPlus" symbol }
+{ graphaplus } @Index { @Code "@GraphPlus" symbol (graphs) }
+
+graphs. @RawIndex { graphs (statistical) }
+graphs.graphsquare @SubIndex { @Code "@GraphSquare" symbol }
+{ graphasquare } @Index { @Code "@GraphSquare" symbol (graphs) }
+
+graphs. @RawIndex { graphs (statistical) }
+graphs.graphfilled.square @SubIndex { @Code "@GraphFilledSquare" symbol }
+{ graphafilled.square } @Index { @Code "@GraphFilledSquare" symbol (graphs) }
+
+graphs. @RawIndex { graphs (statistical) }
+graphs.graphdiamond @SubIndex { @Code "@GraphDiamond" symbol }
+{ graphadiamond } @Index { @Code "@GraphDiamond" symbol (graphs) }
+
+graphs. @RawIndex { graphs (statistical) }
+graphs.graphfilled.diamond @SubIndex { @Code "@GraphFilledDiamond" symbol }
+{ graphafilled.diamond } @Index { @Code "@GraphFilledDiamond" symbol (graphs) }
+
+graphs. @RawIndex { graphs (statistical) }
+graphs.graphcircle @SubIndex { @Code "@GraphCircle" symbol }
+{ graphacircle } @Index { @Code "@GraphCircle" symbol (graphs) }
+
+graphs. @RawIndex { graphs (statistical) }
+graphs.graphfilled.circle @SubIndex { @Code "@GraphFilledCircle" symbol }
+{ graphafilled.circle } @Index { @Code "@GraphFilledCircle" symbol (graphs) }
+
+graphs. @RawIndex { graphs (statistical) }
+graphs.graphtriangle @SubIndex { @Code "@GraphTriangle" symbol }
+{ graphatriangle } @Index { @Code "@GraphTriangle" symbol (graphs) }
+
+graphs. @RawIndex { graphs (statistical) }
+graphs.graphfilled.triangle @SubIndex { @Code "@GraphFilledTriangle" symbol }
+{ graphafilled.triangle } @Index { @Code "@GraphFilledTriangle" symbol (graphs) }
+
+graphs. @RawIndex { graphs (statistical) }
+graphs.graphnoline @SubIndex { @Code "@GraphNoLine" symbol }
+{ graphanoline } @Index { @Code "@GraphNoLine" symbol (graphs) }
+
+graphs. @RawIndex { graphs (statistical) }
+graphs.graphsolid @SubIndex { @Code "@GraphSolid" symbol }
+{ graphasolid } @Index { @Code "@GraphSolid" symbol (graphs) }
+
+graphs. @RawIndex { graphs (statistical) }
+graphs.graphdashed @SubIndex { @Code "@GraphDashed" symbol }
+{ graphadashed } @Index { @Code "@GraphDashed" symbol (graphs) }
+
+graphs. @RawIndex { graphs (statistical) }
+graphs.graphdotted @SubIndex { @Code "@GraphDotted" symbol }
+{ graphadotted } @Index { @Code "@GraphDotted" symbol (graphs) }
+
+graphs. @RawIndex { graphs (statistical) }
+graphs.graphdotdashed @SubIndex { @Code "@GraphDotDashed" symbol }
+{ graphadotdashed } @Index { @Code "@GraphDotDashed" symbol (graphs) }
+
+graphs. @RawIndex { graphs (statistical) }
+graphs.graphdotdotdashed @SubIndex { @Code "@GraphDotDotDashed" symbol }
+{ graphadotdotdashed } @Index { @Code "@GraphDotDotDashed" symbol (graphs) }
+
+graphs. @RawIndex { graphs (statistical) }
+graphs.graphdotdotdotdashed @SubIndex { @Code "@GraphDotDotDotDashed" symbol }
+{ graphadotdotdotdashed } @Index { @Code "@GraphDotDotDotDashed" symbol (graphs) }
+
+@ID @Tab
+ @Fmta { @Col @Code A ! @Col B ! @Col @Code C ! @Col D }
+{
+@Rowa
+ A { "@GraphCross" }
+ B { @GraphCross }
+ C { "@GraphPlus" }
+ D { @GraphPlus }
+@Rowa
+ A { "@GraphSquare" }
+ B { @GraphSquare }
+ C { "@GraphFilledSquare" }
+ D { @GraphFilledSquare }
+@Rowa
+ A { "@GraphDiamond" }
+ B { @GraphDiamond }
+ C { "@GraphFilledDiamond" }
+ D { @GraphFilledDiamond }
+@Rowa
+ A { "@GraphCircle" }
+ B { @GraphCircle }
+ C { "@GraphFilledCircle" }
+ D { @GraphFilledCircle }
+@Rowa
+ A { "@GraphTriangle" }
+ B { @GraphTriangle }
+ C { "@GraphFilledTriangle" }
+ D { @GraphFilledTriangle }
+@Rowa
+@Rowa
+ A { "@GraphNoLine" }
+ B { @GraphNoLine }
+@Rowa
+ A { "@GraphSolid" }
+ B { @GraphSolid }
+@Rowa
+ A { "@GraphDashed" }
+ B { @GraphDashed }
+@Rowa
+ A { "@GraphDotted" }
+ B { @GraphDotted }
+@Rowa
+ A { "@GraphDotDashed" }
+ B { @GraphDotDashed }
+@Rowa
+ A { "@GraphDotDotDashed" }
+ B { @GraphDotDotDashed }
+@Rowa
+ A { "@GraphDotDotDotDashed" }
+ B { @GraphDotDotDotDashed }
+}
+These extra symbols may be used anywhere in your document except within
+the right parameter of {@Code "@Graph"}; they are commonly used within
+the caption options of {@Code "@Graph"}:
+@ID @OneRow @Code @Verbatim {
+@Graph
+ rightcaption {
+@GraphPlus @GraphSolid @GraphPlus Boston
+@GraphPlus @GraphDashed @GraphPlus New York
+@GraphPlus @GraphDotDashed @GraphPlus Philadelphia
+}
+}
+(You can also use them within the @Code objects option, which
+is the way to place your key within the graph itself.)
+Recall that unlike the other captions, @Code rightcaption is set using
+the @Code "lines @Break" style rather than {@Code "clines @Break"}
+(Section {@NumberOf captions}). Adding this caption to the graph
+from Section {@NumberOf data}, the complete result is
+@CD @Graph
+ rightcaption {
+@GraphPlus @GraphSolid @GraphPlus Boston
+@GraphPlus @GraphDashed @GraphPlus New York
+@GraphPlus @GraphDotDashed @GraphPlus Philadelphia
+}
+{
+ @Data points { plus } pairs { solid }
+ { 1720 12000 1730 13000 1740 15601 1760 15631 1770 15877 }
+
+ @Data points { plus } pairs { dashed }
+ { 1720 7000 1730 8622 1740 10451 1750 14255 1760 18000 1770 22667 }
+
+ @Data points { plus } pairs { dotdashed }
+ { 1720 10000 1730 11500 1740 12654 1750 18202 1760 23750 1770 34583 }
+
+}
+The first eight symbols have a @Code "symbolsize" and @Code "symbollinewidth"
+options with the usual meaning and the usual default values ({@Code "0.15f"}
+and {@Code "0.5p"}). The last four symbols have @Code "dashlength" and
+@Code "linewidth" options with the usual default values, {@Code "0.2f"} and
+{@Code "0.5p"}, and a @Code "length" option, which determines the length
+of the line drawn by each symbol; its default value is {@Code "1.0f"}.
+@End @Section
diff --git a/doc/doc/user/gra_over b/doc/doc/user/gra_over
new file mode 100644
index 0000000..4f7eae6
--- /dev/null
+++ b/doc/doc/user/gra_over
@@ -0,0 +1,224 @@
+@Section
+ @Title { Changing the overall appearance of the graph }
+ @Tag { overall }
+@Begin
+@PP
+The overall appearance of the graph is controlled by options to the
+@Code "@Graph" symbol. As usual, these options follow the @Code "@Graph"
+symbol, with their values enclosed in braces; they may appear in any order,
+and if omitted are assigned some sensible default value. The default
+values may be changed by setting options in the setup file as usual.
+@PP
+There is a @Code "font" option for changing the font throughout the
+graph, whose value is anything suitable for passing to Lout's
+@Code "@Font" symbol. Indeed, you can get the same effect by
+placing a @Code "@Font" symbol immediately before @Code "@Graph"
+in the usual way. However, the @Code "font" option is useful
+because it can be set in the setup file, where it applies to
+every graph in your document.
+@PP
+There is a @Code "style" option for controlling the overall style of the
+graphs. @RawIndex { graphs (statistical) }
+graphs.style @SubIndex { @Code style option }
+style. @RawIndex { @Code "style" option }
+style.in.graphs @SubIndex { in graphs }
+axes. @Index { axes in graphs }
+graph, whose value may be either {@Code "frame"}, {@Code "grid"},
+{@Code "none"}, or {@Code "axes"}. The default value is {@Code "frame"},
+and it produces a frame around the graph with ticks and labels along
+its left and bottom edges, as in previous examples. Value @Code "grid"
+is similar except that the ticks are converted into grid lines crossing
+the entire frame. The {@Code "none"} style prints nothing (no frame,
+no ticks, no labels), which is useful for producing graphs that don't
+look like graphs, as it were.
+@PP
+If {@Code "axes"} is chosen, two other options called {@Code xorigin}
+and {@Code yorigin} become compulsory:
+graphs. @RawIndex { graphs (statistical) }
+graphs.xorigin @SubIndex { @Code xorigin option }
+xorigin.graph @Index { @Code "xorigin" option (graphs) }
+graphs. @RawIndex { graphs (statistical) }
+graphs.yorigin @SubIndex { @Code yorigin option }
+yorigin.graph @Index { @Code "yorigin" option (graphs) }
+@ID @OneRow @Code @Verbatim {
+@Graph
+ font { -2p }
+ style { axes }
+ xorigin { 0 }
+ yorigin { 0 }
+ width { 12c }
+ height { 7c }
+ leftcaption { 90d @Rotate { counts (%) } }
+ leftgap { 1.0c }
+ belowcaption { time (min) }
+ belowgap { 0c }
+{
+ @Data
+ points { filledsquare }
+ pairs { solid }
+ { 0 0.0 1 4.8 2 7.0 3 15.2 4 19.8 5 20.0 6 21.0 7 25.0
+ 10 29.5 15 31.2 20 35.0 30 40.0 60 50.8
+ }
+
+ @Data
+ points { square }
+ pairs { solid }
+ {
+ 0 0.0 1 3.7 1.5 43.1 2 99.1 3 85.6 4 69.1 5 47.0 6 44.1 7 40.8
+ 10 35.0 15 29.4 20 25.0 30 21.1 60 15.5
+ }
+}
+}
+We have used some other options which will be explained shortly. The
+resulting graph has an x axis and a y axis instead of a frame, like this:
+@CD -2p @Font @Graph
+ style { axes }
+ xorigin { 0 }
+ yorigin { 0 }
+ width { 12c }
+ height { 7c }
+ leftcaption { 90d @Rotate { counts (%) } }
+ leftgap { 1.0c }
+ belowcaption { time (min) }
+ belowgap { 0c }
+{
+ @Data
+ points { filledsquare }
+ pairs { solid }
+ { 0 0.0 1 9.5 2 15.0 3 18.2 4 20.1 5 22.1 7 25.0
+ 10 28.3 15 31.2 20 35.0 30 40.0 60 50.8
+ }
+
+ @Data
+ points { square }
+ pairs { solid }
+ {
+ 0 0.0 1 3.7 1.5 43.1 2 99.1 3 85.6 4 69.1 5 47.0 6 44.1 7 40.8
+ 10 35.0 15 29.4 20 25.0 30 21.1 60 15.5
+ }
+}
+The point where the axes cross is ({@Code xorigin}, {@Code yorigin}).
+@PP
+Although @Code "@Graph" does not provide explicit support for
+multiple axes, you can simulate them by overstriking two
+separate graphs of equal size. There is an @Code "@OverStrike"
+overstrike. @Index @Code "@OverStrike"
+symbol which overstrikes two objects, so
+@ID @Code "@Graph { ... } @OverStrike @Graph { ... }"
+will do the job. Typically one of the graphs would have y ticks,
+and the other would have r ticks (adjacent to the right-hand side of the
+frame).
+@PP
+There are @Code "xlog" and @Code "ylog" options which produce
+graphs. @RawIndex { graphs (statistical) }
+graphs.xlog @SubIndex { @Code xlog option }
+xlog.graph @Index { @Code "xlog" option (graphs) }
+graphs. @RawIndex { graphs (statistical) }
+graphs.ylog @SubIndex { @Code ylog option }
+ylog.graph @Index { @Code "ylog" option (graphs) }
+logarithmic.axes @Index { logarithmic axes in graphs }
+logarithmic x and y axes:
+@ID @OneRow @Code @Verbatim {
+@Graph
+ xlog { 10 }
+ ylog { 10 }
+{
+ ...
+}
+}
+The value is the base of the logarithm, usually 10 or 2, or
+{@Code none} (the default) meaning not logarithmic. Logarithms
+to different bases differ only by a constant factor, so the main effect
+of different bases is on the choice of ticks and labels. An @Code "xlog"
+option will be ignored if there are any negative or zero x data points,
+x ticks, or {@Code "xorigin"} or {@Code "xmin"} options; and similarly
+for {@Code "ylog"}.
+@PP
+There are @Code "width" and @Code "height" options for setting the size
+graphs. @RawIndex { graphs (statistical) }
+graphs.width @SubIndex { @Code width option }
+width. @RawIndex { @Code "width" option }
+width.in.graphs @SubIndex { in graphs }
+graphs. @RawIndex { graphs (statistical) }
+graphs.height @SubIndex { @Code height option }
+height. @RawIndex { @Code "height" option }
+height.in.graphs @SubIndex { in graphs }
+of the total area enclosed:
+@ID @OneRow @Code @Verbatim {
+@Graph
+ width { 6.0c }
+ height { 4.0c }
+{
+ ...
+}
+}
+This shows the default width and height, six centimetres and four
+centimetres. These lengths and others discussed below can be specified
+using a variety of units of measurement (see Section {@NumberOf grsummary}
+for the details).
+@PP
+Within the frame or axes, a small margin is kept free of data points. The
+size of this margin is controlled by @Code "xextra" and @Code "yextra"
+graphs. @RawIndex { graphs (statistical) }
+graphs.xextra @SubIndex { @Code xextra option }
+xextra.graph @Index { @Code "xextra" option (graphs) }
+graphs. @RawIndex { graphs (statistical) }
+graphs.yextra @SubIndex { @Code yextra option }
+yextra.graph @Index { @Code "yextra" option (graphs) }
+options:
+@ID @OneRow @Code @Verbatim {
+@Graph
+ xextra { 0.5c }
+ yextra { 0.5c }
+{
+ ...
+}
+}
+Setting @Code "xextra" to @Code "0.5c" (the default value if the
+@Code style option is {@Code frame}) means that the smallest x value
+will be placed 0.5 centimetres to the right of the left boundary, and
+the largest will be placed 0.5 centimetres to the left of the right
+boundary. It is quite safe to set @Code "xextra" to @Code "0c" if
+desired, and indeed this is the default value when @Code style is
+{@Code axes} or {@Code none}. The @Code "yextra" option works in
+exactly the same way for y values.
+@PP
+The @Code "xdecreasing" option plots the x values in decreasing order
+graphs. @RawIndex { graphs (statistical) }
+graphs.xdecreasing @SubIndex { @Code xdecreasing option }
+xdecreasing.graph @Index { @Code "xdecreasing" option (graphs) }
+instead of increasing:
+@ID @Code @Verbatim {
+@Graph
+ xdecreasing { yes }
+ abovecaption { New South Wales road deaths, 1960--1990
+(fatalities per 100 million vehicle km) }
+{
+ @Data
+ points { plus }
+ pairs { dashed }
+ {
+ 1963 5.6 1971 4.3 1976 3.7 1979 3.4 1982 2.9 1985 2.3 1988 2.0
+ }
+}
+}
+produces
+@CD @Graph
+ xdecreasing { yes }
+ abovecaption { New South Wales road deaths, 1960--1990
+(fatalities per 100 million vehicle km) }
+{
+ @Data
+ points { plus }
+ pairs { dashed }
+ {
+ 1963 5.6 1971 4.3 1976 3.7 1979 3.4 1982 2.9 1985 2.3 1988 2.0
+ }
+}
+The value of @Code "xdecreasing" should be either @Code "no" (the default
+value) or {@Code "yes"}. A similar @Code "ydecreasing" option does the same
+graphs. @RawIndex { graphs (statistical) }
+graphs.ydecreasing @SubIndex { @Code ydecreasing option }
+ydecreasing.graph @Index { @Code "ydecreasing" option (graphs) }
+thing to the y axis.
+@End @Section
diff --git a/doc/doc/user/gra_plac b/doc/doc/user/gra_plac
new file mode 100644
index 0000000..4e686f1
--- /dev/null
+++ b/doc/doc/user/gra_plac
@@ -0,0 +1,54 @@
+@Section
+ @Title { Placing arbitrary objects on the graph }
+ @Tag { arbobj }
+@Begin
+@PP
+As we have just seen, the repertoire of symbols that @Code "@Data" is
+able to place on the graph is quite limited. However, there is a way
+to place any number of arbitrary Lout objects anywhere on the graph,
+using the @Code objects option to the @Code "@Graph" symbol:
+graphs. @RawIndex { graphs (statistical) }
+graphs.objects @SubIndex { @Code objects option }
+objects.graph @Index { @Code "objects" option (graphs) }
+@ID @OneRow @Code @Verbatim {
+@Graph
+ objects {
+ @CTR at {2.5 6.0} @Math { y = x sup 2 }
+ @CTR at {4.5 7.0} @Math { y = x sup 3 }
+ }
+}
+where we have used the @Code "@Math" symbol from
+Chapter {@NumberOf mathematics} to place two equations onto the graph
+at the points {@Code "2.5 6.0"} and {@Code "4.5 7.0"} respectively. An
+example result appears in the next section.
+@PP
+In addition to {@Code "@CTR"}, there are eight other symbols which may
+be used within the @Code "objects" option in the same way: {@Code "@NW"},
+{@Code "@SW"}, {@Code "@SE"}, {@Code "@NE"}, {@Code "@N"}, {@Code "@W"},
+{@Code "@S"}, and {@Code "@E"}. These place the object just to the
+northwest of the point, to the southwest, and so on instead of centring
+it over the point. By `to the northwest' we mean that the object's bottom
+right corner coincides with the point, and similarly for the other symbols.
+@PP
+Each of these symbols has a @Code "margin" option which enlarges the
+object by adding a margin:
+@ID @Code "@NW at {2.5 6.0} margin { 0.3f } @Eq { y = x sup 2 }"
+shows the default value, 0.3 times the current font size. As the margin
+is increased, the object moves further away from the point.
+@PP
+The major advantage of the @Code "objects" option over the @Code "@Data"
+symbol is that arbitrary Lout objects may be used. The @Code "@Data"
+symbol however is able to place many copies of its symbols onto the graph,
+and also allow for them when connecting points together with lines. Also,
+the points within the @Code "objects" option are not taken into account
+when deciding on the permissible range of x and y values, whereas the
+points within the @Code "@Data" symbol are. Altogether it seems best
+to use the @Code "@Data" symbol for the bulk of the data points, and to
+use the @Code "objects" option for adding a small number of labels or
+other decorations.
+@PP
+The @Code "objects" option may contain @Code "@Graph" symbols, but in
+that case, owing to a deficiency in the implementation, those symbols
+must have their @Code save options (Section {@NumberOf grerrors}) set
+to {@Code yes}.
+@End @Section
diff --git a/doc/doc/user/gra_summ b/doc/doc/user/gra_summ
new file mode 100644
index 0000000..7854efb
--- /dev/null
+++ b/doc/doc/user/gra_summ
@@ -0,0 +1,473 @@
+@Section
+ @Title { Summary }
+ @Tag { grsummary }
+@Begin
+@PP
+The options to the @Code "@Graph" symbol, their default values, and
+graphs. @RawIndex { graphs (statistical) }
+graphs.summary @SubIndex { summary of all options }
+their possible values are:
+@ID -2.5px @Break -1p @Font @Tab
+ hmargin { 0.15c }
+ @Fmta { @Col @Code { " "A } ! @Col @Code "{" ! @Col @Code B !
+ @Col @Code "}" ! @Col ! @Col ! @Col C }
+ @Fmtb { @Col @Code A ! @Col ! @Col ! @Col ! @Col ! @Col ! @Col }
+{
+@Rowb
+ A { "@Graph" }
+@Rowa
+ A { style }
+ B { frame }
+ C { {@Code frame}, {@Code grid}, {@Code axes}, or {@Code none} }
+@Rowa
+ A { font }
+ B { }
+ C { Any value suitable for {@Code "@Font"} }
+@Rowa
+ A { xorigin }
+ B { none }
+ C { {@Code none} or any @I number }
+@Rowa
+ A { yorigin }
+ B { none }
+ C { {@Code none} or any @I number }
+@Rowa
+ A { xlog }
+ B { none }
+ C { {@Code none} or any @I number greater than 1 }
+@Rowa
+ A { ylog }
+ B { none }
+ C { {@Code none} or any @I number greater than 1 }
+@Rowa
+ A { width }
+ B { 6.0c }
+ C { any @I distance }
+@Rowa
+ A { height }
+ B { 4.0c }
+ C { any @I distance }
+@Rowa
+ A { xextra }
+ B { auto }
+ C { any @I distance ({@Code auto} means @Code "0.5c" for {@Code frame} else {@Code "0c"}) }
+@Rowa
+ A { yextra }
+ B { auto }
+ C { any @I distance ({@Code auto} means @Code "0.5c" for {@Code frame} else {@Code "0c"}) }
+@Rowa
+ A { xdecreasing }
+ B { no }
+ C { @Code yes or @Code no }
+@Rowa
+ A { ydecreasing }
+ B { no }
+ C { @Code yes or @Code no }
+@Rowa
+ A { leftcaption }
+ B { }
+ C { any Lout object }
+@Rowa
+ A { rightcaption }
+ B { }
+ C { any Lout object }
+@Rowa
+ A { abovecaption }
+ B { }
+ C { any Lout object }
+@Rowa
+ A { belowcaption }
+ B { }
+ C { any Lout object }
+@Rowa
+ A { leftgap }
+ B { 1.5c }
+ C { any @I distance }
+@Rowa
+ A { rightgap }
+ B { 0.5c }
+ C { any @I distance }
+@Rowa
+ A { abovegap }
+ B { 0.5c }
+ C { any @I distance }
+@Rowa
+ A { belowgap }
+ B { 0.5c }
+ C { any @I distance }
+@Rowa
+ A { hidecaptions }
+ B { yes }
+ C { @Code yes or @Code no }
+@Rowa
+ A { xmin }
+ B { none }
+ C { @Code none or any {@I number} }
+@Rowa
+ A { xmax }
+ B { none }
+ C { @Code none or any {@I number} }
+@Rowa
+ A { ymin }
+ B { none }
+ C { @Code none or any {@I number} }
+@Rowa
+ A { ymax }
+ B { none }
+ C { @Code none or any {@I number} }
+@Rowa
+ A { xticksep }
+ B { none }
+ C { {@Code none} or any @I number greater than 0 }
+@Rowa
+ A { yticksep }
+ B { none }
+ C { {@Code none} or any @I number greater than 0 }
+@Rowa
+ A { rticksep }
+ B { none }
+ C { {@Code none} or any @I number greater than 0 }
+@Rowa
+ A { xticks }
+ B { auto }
+ C { @I sequence (of numbers and strings), or @Code auto (automatic) }
+@Rowa
+ A { yticks }
+ B { auto }
+ C { @I sequence (of numbers and strings), or @Code auto (automatic) }
+@Rowa
+ A { rticks }
+ B { }
+ C { @I sequence (of numbers and strings), or @Code auto (automatic) }
+@Rowa
+ A { xticklength }
+ B { 0.5f }
+ C { any @I distance }
+@Rowa
+ A { yticklength }
+ B { 0.5f }
+ C { any @I distance }
+@Rowa
+ A { rticklength }
+ B { 0.5f }
+ C { any @I distance }
+@Rowa
+ A { objects }
+ B { }
+ C { sequence of {@Code "@CTR"}, {@Code "@NW"}, {@Code "@SW"}, {@Code "@SE"},
+{@Code "@NE"}, {@Code "@N"}, {@Code "@W"}, {@Code "@S"}, {@Code "@E"} symbols }
+@Rowa
+ A { save }
+ B { no }
+ C { {@Code no} or {@Code yes} }
+@Rowa
+ A { points }
+ B { none }
+ C { {@Code none}, {@Code plus}, {@Code cross}, {@Code square},
+{@Code filledsquare}, {@Code diamond}, {@Code filleddiamond},
+{@Code circle}, {@Code filledcircle}, {@Code triangle}, {@Code filledtriangle} }
+@Rowa
+ A { symbolsize }
+ B { 0.15f }
+ C { any @I distance }
+@Rowa
+ A { symbollinewidth }
+ B { 0.5p }
+ C { any @I distance }
+@Rowa
+ A { pairs }
+ B { none }
+ C { {@Code none}, {@Code solid}, {@Code dashed}, {@Code dotted},
+{@Code dotdashed}, {@Code dotdotdashed}, {@Code dotdotdotdashed},
+{@Code yhisto}, {@Code xhisto}, {@Code filledyhisto}, {@Code filledxhisto},
+{@Code surfaceyhisto}, {@Code surfacexhisto} }
+@Rowa
+ A { dashlength }
+ B { 0.2f }
+ C { any @I distance }
+@Rowa
+ A { linewidth }
+ B { 0.5p }
+ C { any @I distance }
+@Rowa
+ A { "colour/color" }
+ B { none }
+ C { {@Code none} or any colour from Section {@NumberOf colour}}
+@Rowa
+ A { paint }
+ B { no }
+ C { {@Code none}, {@Code no}, or {@Code yes} }
+@Rowa
+ A { texture }
+ B { solid }
+ C { any texture from Section {@NumberOf textures} }
+@Rowa
+ A { dataformat }
+ B { xandy }
+ C { {@Code xandy}, {@Code yonly}, {@Code xonly}, {@Code swapxandy} }
+}
+@I Number means an ordinary decimal number; @I distance means a number
+with a unit of measurement (Section {@NumberOf objects}), such as
+@Code { 5c } or {@Code 0.5f}. In general, numbers denote x or y
+values while distances denote lengths on the printed result.
+@PP
+The minimum plottable x value is the minimum of all the x data,
+{@Code xticks}, {@Code xorigin}, {@Code xmin}, and {@Code xmax} whenever
+these are not {@Code none}. If @Code xticks is {@Code none}, this
+minimum may be reduced further to a `round' number. The maximum plottable
+x value is the maximum of the same values, and it may be increased further
+if {@Code xticks} is {@Code none}. Similar remarks apply to y values.
+@PP
+The value of the @Code "objects" option is a sequence of zero or more of
+the following:
+@ID @Tab
+ vmargin { 0.5vx }
+ @Fmta { @Col A ! @Col { @Code "at {" @I expression @I expression
+@Code "}" } ! @Col @I object }
+{
+@Rowa A { @Code "@CTR" }
+@Rowa A { @Code "@NW" }
+@Rowa A { @Code "@SW" }
+@Rowa A { @Code "@SE" }
+@Rowa A { @Code "@NE" }
+@Rowa A { @Code "@N" }
+@Rowa A { @Code "@W" }
+@Rowa A { @Code "@S" }
+@Rowa A { @Code "@E" }
+}
+where @I object is an arbitrary Lout object. Each of these nine symbols
+also has a @Code "margin" option whose value may be any non-negative
+distance, with default value {@Code "0.3f"}.
+@PP
+The options to the @Code "@Data" symbol, their default values, and
+their possible values are:
+@ID 0.85vx @Break @Tab
+ hmargin { 0.15c }
+ @Fmta { @Col @Code { " "A } ! @Col @Code "{" ! @Col @I inherited !
+ @Col @Code "}" ! @Col ! @Col ! @Col C }
+ @Fmtb { @Col A ! @Col ! @Col ! @Col ! @Col ! @Col ! @Col }
+{
+@Rowb
+ A { @Code "@Data" }
+@Rowa
+ A { points }
+ C { {@Code none}, {@Code plus}, {@Code cross}, {@Code square},
+{@Code filledsquare}, {@Code diamond}, {@Code filleddiamond},
+{@Code circle}, {@Code filledcircle},
+{@Code triangle}, {@Code filledtriangle} }
+@Rowa
+ A { symbolsize }
+ C { any @I distance }
+@Rowa
+ A { symbollinewidth }
+ C { any @I distance }
+@Rowa
+ A { pairs }
+ C { {@Code none}, {@Code solid}, {@Code dashed}, {@Code dotted},
+{@Code dotdashed}, {@Code dotdotdashed}, {@Code dotdotdotdashed},
+{@Code yhisto}, {@Code xhisto}, {@Code filledyhisto}, {@Code filledxhisto},
+{@Code surfaceyhisto}, {@Code surfacexhisto} }
+@Rowa
+ A { dashlength }
+ C { any @I distance }
+@Rowa
+ A { linewidth }
+ C { any @I distance }
+@Rowa
+ A { "colour/color" }
+ C { {@Code none}, or any colour name from Section {@NumberOf colour} }
+@Rowa
+ A { paint }
+ C { {@Code no} or {@Code yes} }
+@Rowa
+ A { texture }
+ C { Any texture from Section {@NumberOf textures} }
+@Rowa
+ A { dataformat }
+ C { {@Code xandy}, {@Code yonly}, {@Code xonly} }
+@Rowb
+ A { @Code "{" @I sequence @Code "}" }
+ C { any @I sequence }
+}
+@I Inherited means that the default value is taken from the
+@Code "@Graph" option with the same name.
+Furthermore, every option of {@Code "@Graph"} and {@Code "@Data"},
+as well as of {@Code "@GraphPlus"}, {@Code "@GraphNoLine"}, and the
+other symbols from Section {@NumberOf key}, appears in the setup file,
+and giving a value to an option there makes that value the default
+value for every {@Code "@Graph"} in your document. For example,
+if you want every data set in every graph to use {@Code "dashed"}
+for {@Code "pairs"}, you can set the @Code "pairs" option in the
+setup file to {@Code "dashed"}, and then all your data sets will
+have dashed lines unless you override the setup file value by
+some other value to the {@Code "pairs"} option of a {@Code "@Graph"}
+or @Code "@Data" symbol.
+@PP
+The right parameter of @Code "@Data" contains a @I sequence of zero
+or more {@I expressions}. The {@Code xticks}, {@Code yticks}, and
+{@Code rticks} options also are sequences, which may contain @Code "@"
+and labels as well as expressions. An @I expression is any of the
+following (operators are shown in decreasing precedence order, with
+the precedence, if relevant, at right):
+@ID @Tab
+ vmargin { 0.5vx }
+ @Fmta { @Col A ! @Col ! @Col B }
+{
+@Rowa
+ A { @I number }
+@Rowa
+ A { @Code x (within @Code xloop only) }
+@Rowa
+ A { @Code y (within @Code yloop only) }
+@Rowa
+ A { @Code z (within @Code zloop only) }
+@Rowa
+ A { @Code pi }
+@Rowa
+ A { @Code e }
+@Rowa
+ A { @Code "{" @I expression @Code "}" }
+@Rowa
+ A { @Code "sqrt" @I expression }
+ B { 40 }
+@Rowa
+ A { @Code "abs" @I expression }
+ B { 40 }
+@Rowa
+ A { @Code "ceiling" @I expression }
+ B { 40 }
+@Rowa
+ A { @Code "floor" @I expression }
+ B { 40 }
+@Rowa
+ A { @Code "truncate" @I expression }
+ B { 40 }
+@Rowa
+ A { @Code "round" @I expression }
+ B { 40 }
+@Rowa
+ A { @Code "cos" @I expression }
+ B { 40 }
+@Rowa
+ A { @Code "sin" @I expression }
+ B { 40 }
+@Rowa
+ A { @I expression @Code "atan" @I expression }
+ B { 39 }
+@Rowa
+ A { @I expression @Code "exp" @I expression }
+ B { 38 }
+@Rowa
+ A { @I expression @Code "log" @I expression }
+ B { 37 }
+@Rowa
+ A { @I expression @Code "rand" @I expression }
+ B { 36 }
+@Rowa
+ A { @I expression @M { non * } @I expression }
+ B { 35 }
+@Rowa
+ A { @I expression @Code "/" @I expression }
+ B { 34 }
+@Rowa
+ A { @I expression @Code "idiv" @I expression }
+ B { 34 }
+@Rowa
+ A { @I expression @Code "mod" @I expression }
+ B { 34 }
+@Rowa
+ A { @I expression @M { non - } @I expression }
+ B { 33 }
+@Rowa
+ A { @M { non - } @I expression }
+ B { 33 }
+@Rowa
+ A { @I expression @Code "+" @I expression }
+ B { 32 }
+@Rowa
+ A { @Code "+" @I expression }
+ B { 32 }
+@Rowa
+ A { @Code "if cond {" @I boolean @Code "} then {" @I expression
+@Code "} else {" @I expression @Code "}" }
+}
+A @M { non - } immediately followed by a digit or decimal point is
+always taken to be a minus sign, never a subtraction. The left
+parameter of @Code "exp" and @Code "log" is the base of the
+exponentiation and logarithm respectively; @Code "idiv" is integer
+division; and @Code "rand" returns a uniform random integer lying between
+its two parameters (inclusive). Now a @I sequence is zero or more of
+the following:
+@ID @Tab
+ vmargin { 0.5vx }
+ @Fmta { @Col A }
+{
+@Rowa
+ A { 2c @Wide "@" (within {@Code xticks}, {@Code yticks}, and {@Code rticks} only) }
+@Rowa
+ A { 2c @Wide { ({@I label}) } (within {@Code xticks}, {@Code yticks}, and {@Code rticks} only) }
+@Rowa
+ A { @I expression }
+@Rowa
+ A { @Code "xloop from {" @I expression @Code "} to {" @I expression
+@Code "} by {" @I expression @Code "} do {" @I sequence @Code "}" }
+@Rowa
+ A { @Code "yloop from {" @I expression @Code "} to {" @I expression
+@Code "} by {" @I expression @Code "} do {" @I sequence @Code "}" }
+@Rowa
+ A { @Code "zloop from {" @I expression @Code "} to {" @I expression
+@Code "} by {" @I expression @Code "} do {" @I sequence @Code "}" }
+@Rowa
+ A { @Code "if cond {" @I boolean @Code "} then {" @I sequence
+@Code "} else {" @I sequence @Code "}" }
+}
+The @Code "by" part of the loop symbols is optional with default
+value 1; the @Code "else" part of @Code "if" is optional with
+default value equal to the empty sequence. A @I boolean is any one of
+the following things, again shown in decreasing precedence order, with
+the precedence at right:
+@ID @Tab
+ vmargin { 0.5vx }
+ @Fmta { @Col A ! @Col ! @Col B }
+{
+@Rowa
+ A { @Code true }
+@Rowa
+ A { @Code false }
+@Rowa
+ A { @Code "{" @I boolean @Code "}" }
+@Rowa
+ A { @I expression @Code = @I expression }
+ B { 30 }
+@Rowa
+ A { @I expression @Code != @I expression }
+ B { 30 }
+@Rowa
+ A { @I expression @Code < @I expression }
+ B { 30 }
+@Rowa
+ A { @I expression @Code <= @I expression }
+ B { 30 }
+@Rowa
+ A { @I expression @Code > @I expression }
+ B { 30 }
+@Rowa
+ A { @I expression @Code >= @I expression }
+ B { 30 }
+@Rowa
+ A { @Code not @I boolean }
+ B { 25 }
+@Rowa
+ A { @I boolean @Code and @I boolean }
+ B { 24 }
+@Rowa
+ A { @I boolean @Code xor @I boolean }
+ B { 23 }
+@Rowa
+ A { @I boolean @Code or @I boolean }
+ B { 22 }
+@Rowa
+ A { @Code "if cond {" @I boolean @Code "} then {" @I boolean
+@Code "} else {" @I boolean @Code "}" }
+}
+@End @Section
diff --git a/doc/doc/user/gra_tick b/doc/doc/user/gra_tick
new file mode 100644
index 0000000..23e2402
--- /dev/null
+++ b/doc/doc/user/gra_tick
@@ -0,0 +1,296 @@
+@Section
+ @Title { Ticks and labels }
+ @Tag { ticks }
+@Begin
+@PP
+@I Ticks are the short lines that mark off intervals along the axes, and
+graphs. @RawIndex { graphs (statistical) }
+graphs.ticks @SubIndex { ticks }
+ticks.graph @Index { ticks in graphs }
+graphs. @RawIndex { graphs (statistical) }
+graphs.labels @SubIndex { labels }
+labels. @RawIndex { labels }
+labels.in.graphs @SubIndex { in graphs }
+@I labels are the numbers appearing near the ticks (not to be confused
+with captions). {@Code "@Graph"} produces ticks and labels automatically
+with some care, so it is probably best not to worry about them unless the
+result is not pleasing, in which case there are options for controlling them.
+@PP
+One simple way to control the production of x ticks is with the
+{@Code xmin}, {@Code xmax}, and {@Code xticksep} options to @Code
+graphs. @RawIndex { graphs (statistical) }
+graphs.xmin @SubIndex { @Code xmin option }
+xmin.graph @Index { @Code "xmin" option (graphs) }
+graphs. @RawIndex { graphs (statistical) }
+graphs.xmax @SubIndex { @Code xmax option }
+xmax.graph @Index { @Code "xmax" option (graphs) }
+graphs. @RawIndex { graphs (statistical) }
+graphs.xticksep @SubIndex { @Code xticksep option }
+xticksep.graph @Index { @Code "xticksep" option (graphs) }
+"@Graph". For example,
+@ID @OneRow @Code {
+"@Graph"
+" xmin { 0 }"
+" xmax { 5 }"
+" xticksep { 0.5 }"
+}
+specifies that x values in the range 0 to 5 are to be expected, and that
+a tick and label is to appear every 0.5 units along the x axis. One or
+both of @Code "xmin" and @Code "xmax" may be omitted, in which case
+suitable values will be inferred from the data as usual.
+@PP
+Alternatively, complete control over the appearance of x ticks and labels
+is provided by the @Code "xticks" option. For example,
+graphs. @RawIndex { graphs (statistical) }
+graphs.xticks @SubIndex { @Code xticks option }
+xticks.graph @Index { @Code "xticks" option (graphs) }
+@ID @OneRow @Code {
+"@Graph"
+" xticks { 0@ 5 10@ 15 20@ }"
+}
+specifies that x ticks are to be drawn at 0, 5, 10, 15, and 20. An
+@Code "@" following a number indicates that a label is to be printed as
+well, so the above example will produce labels at 0, 10, and 20. For
+even finer control, @Code "@" may be replaced by a label enclosed
+in parentheses:
+@ID @OneRow @Code {
+"@Graph"
+" xticks { 1 (Democrat) 2 (Republican) 3 (Other) }"
+}
+As this example shows, a label does not have to be a number; it can be
+any string of characters, including spaces and balanced parentheses;
+but it may not be an arbitrary Lout object.
+@PP
+The character @Code "^" in a label indicates that the
+remainder is to be treated as an exponent:
+@ID @OneRow @Code {
+"@Graph"
+" xlog { 10 }"
+" xticks { 1 (1) 10 (10) 100 (10^2) 1000 (10^3) 10000 (10^4) 100000 (10^5) }"
+"{"
+" @Data points { plus }"
+" { 1 2.1 10 3.4 100 4.9 1000 6.1 10000 7.2 100000 7.6 }"
+"}"
+}
+In fact, the labels inserted automatically when @Code xticks is omitted have
+exponents when the axis is logarithmic, so @Code xticks is hardly necessary
+in this example. Anyway the result is
+@CD @Graph
+ height { 3c }
+ xlog { 10 }
+ xticks { 1 (1) 10 (10) 100 (10^2) 1000 (10^3) 10000 (10^4) 100000 (10^5) }
+{
+ @Data points { plus }
+ {
+ 1 2.1 10 3.4 100 4.9 1000 6.1 10000 7.2 100000 7.6
+ }
+}
+Setting @Code "xticks" to empty produces no x ticks (this is not the
+same as omitting {@Code xticks}).
+@PP
+Similar options control ticks and labels on the y axis: {@Code "ymin"},
+{@Code "ymax"}, {@Code "yticksep"}, and {@Code "yticks"}. There are
+graphs. @RawIndex { graphs (statistical) }
+graphs.ymin @SubIndex { @Code ymin option }
+ymin.graph @Index { @Code "ymin" option (graphs) }
+graphs. @RawIndex { graphs (statistical) }
+graphs.ymax @SubIndex { @Code ymax option }
+ymax.graph @Index { @Code "ymax" option (graphs) }
+graphs. @RawIndex { graphs (statistical) }
+graphs.yticksep @SubIndex { @Code yticksep option }
+yticksep.graph @Index { @Code "yticksep" option (graphs) }
+graphs. @RawIndex { graphs (statistical) }
+graphs.yticks @SubIndex { @Code yticks option }
+yticks.graph @Index { @Code "yticks" option (graphs) }
+also @Code "xticklength" and @Code "yticklength" options which set
+the length of ticks:
+graphs. @RawIndex { graphs (statistical) }
+graphs.xticklength @SubIndex { @Code xticklength option }
+xticklength.graph @Index { @Code "xticklength" option (graphs) }
+graphs. @RawIndex { graphs (statistical) }
+graphs.yticklength @SubIndex { @Code yticklength option }
+yticklength.graph @Index { @Code "yticklength" option (graphs) }
+@ID @OneRow @Code {
+"@Graph"
+" xticklength { 0.5f }"
+" yticklength { 0.5f }"
+}
+shows the default values, half the current font size in both cases.
+@PP
+There is also an {@Code "rticks"} option which is similar to
+graphs. @RawIndex { graphs (statistical) }
+graphs.rticks @SubIndex { @Code rticks option }
+rticks.graph @Index { @Code "rticks" option (graphs) }
+{@Code "yticks"} except that the ticks it controls appear on the
+right-hand side of the frame (this option is relevant only when
+the @Code style option is {@Code frame}). Unlike @Code "xticks" and
+{@Code "yticks"}, {@Code "rticks"} has empty default value, which is
+why you don't usually see r ticks. They are most useful when overstriking
+two graphs using @Code "@OverStrike" as explained earlier; one graph will
+have y ticks in the usual way, the other will have r ticks and empty
+y ticks:
+@CD {
+
+@Graph
+ style { frame }
+ width { 6c }
+ height { 6c }
+ xextra { 0c }
+ yextra { 0c }
+ rightcaption { -90d @Rotate { Precipitation mm } }
+ rightgap { 3.0f }
+ hidecaptions { no }
+ xmin { 0 }
+ xmax { 12 }
+ ymin { 0 }
+ ymax { 450 }
+ xticks { }
+ xticklength { 0c }
+ rticks { 0@ 50@ 100@ 150@ 200@ 250@ 300@ 350@ 400@ 450@ }
+ yticks {}
+{
+ @Data
+ pairs { filledyhisto }
+ colour { blue }
+ linewidth { 1p }
+ {
+ 0 340
+ 1 410
+ 2 430
+ 3 340
+ 4 290
+ 5 175
+ 6 140
+ 7 125
+ 8 110
+ 9 100
+ 10 85
+ 11 175
+ 12 0
+ }
+}
+
+@OverStrike
+
+@Graph
+ style { frame }
+ width { 6c }
+ height { 6c }
+ xextra { 0c }
+ yextra { 0c }
+ leftcaption { 90d @Rotate { Temperature {@Degree}C } }
+ leftgap { 2.5f }
+ hidecaptions { no }
+ xmin { 0 }
+ xmax { 12 }
+ ymin { -30 }
+ ymax { 50 }
+ xticks {
+ 0.5 (J)
+ 1.5 (F)
+ 2.5 (M)
+ 3.5 (A)
+ 4.5 (M)
+ 5.5 (J)
+ 6.5 (J)
+ 7.5 (A)
+ 8.5 (S)
+ 9.5 (O)
+ 10.5 (N)
+ 11.5 (D)
+ }
+ xticklength { 0c }
+ yticks { -30@ -20@ -10@ 0@ 10@ 20@ 30@ 40@ }
+{
+ @Data
+ pairs { solid }
+ colour { red }
+ linewidth { 1p }
+ {
+ 0.0 24
+ 1.0 24
+ 2.0 25
+ 3.0 26
+ 4.0 26
+ 5.0 26
+ 6.0 26
+ 7.0 27
+ 8.0 26
+ 9.0 27
+ 10.0 28
+ 11.0 28
+ 12.0 26
+ }
+}
+
+}
+Here the first graph has
+@ID @Code {
+"rticks { 0@ 50@ 100@ 150@ 200@ 250@ 300@ 350@ 400@ 450@ }"
+"yticks {}"
+}
+for its ticks. This graph uses other features that we have not
+come to yet, but anyway its source is:
+@ID 0.95 @Scale -1px @Break @OneRow @Code @Verbatim {
+@Graph
+ style { frame }
+ width { 6c }
+ height { 6c }
+ xextra { 0c }
+ yextra { 0c }
+ rightcaption { -90d @Rotate { Precipitation mm } }
+ rightgap { 3.0f }
+ hidecaptions { no }
+ xmin { 0 }
+ xmax { 12 }
+ ymin { 0 }
+ ymax { 450 }
+ xticks { }
+ xticklength { 0c }
+ rticks { 0@ 50@ 100@ 150@ 200@ 250@ 300@ 350@ 400@ 450@ }
+ yticks {}
+{
+ @Data pairs { filledyhisto } colour { blue } linewidth { 1p }
+ {
+ 0 340 1 410 2 430 3 340 4 290 5 175 6 140
+ 7 125 8 110 9 100 10 85 11 175 12 0
+ }
+}
+
+@OverStrike
+
+@Graph
+ style { frame }
+ width { 6c }
+ height { 6c }
+ xextra { 0c }
+ yextra { 0c }
+ leftcaption { 90d @Rotate { Temperature {@Degree}C } }
+ leftgap { 2.5f }
+ hidecaptions { no }
+ xmin { 0 }
+ xmax { 12 }
+ ymin { -30 }
+ ymax { 50 }
+ xticks {
+ 0.5 (J) 1.5 (F) 2.5 (M) 3.5 (A) 4.5 (M) 5.5 (J)
+ 6.5 (J) 7.5 (A) 8.5 (S) 9.5 (O) 10.5 (N) 11.5 (D)
+ }
+ xticklength { 0c }
+ yticks { -30@ -20@ -10@ 0@ 10@ 20@ 30@ 40@ }
+{
+ @Data pairs { solid } colour { red } linewidth { 1p }
+ {
+ 0.0 24 1.0 24 2.0 25 3.0 26 4.0 26 5.0 26 6.0
+ 26 7.0 27 8.0 26 9.0 27 10.0 28 11.0 28 12.0 26
+ }
+}
+}
+Lout has only a hazy idea of how much space is occupied by ticks and
+labels. Unless @Code "xticks" is empty, Lout allows 1.7 times the
+current font size below the graph for x ticks and labels, which is
+usually about right; but it does not allow any space for y and r ticks and
+labels since it has no idea how wide the labels will be. The discussion
+of captions in Section {@NumberOf captions} explains how to use the
+@Code "leftgap" and @Code "rightgap" options to work around this deficiency.
+@End @Section
diff --git a/doc/doc/user/johnson b/doc/doc/user/johnson
new file mode 100644
index 0000000..aaedd4c
--- /dev/null
+++ b/doc/doc/user/johnson
@@ -0,0 +1,19 @@
+@SysInclude { fig }
+@SysInclude { diag }
+@SysInclude { eq }
+@SysInclude { tbl }
+@SysInclude { doc }
+@Doc @Text @Begin
+@QD @Tbl
+ rule { yes }
+{
+@Row format { @StartVSpan @Cell A | @StartHSpan @Cell B | @HSpan }
+ A { @SomeText }
+ B { @SomeText }
+@Row format { @VSpan | @Cell B | @StartVSpan @Cell C }
+ B { @SomeText }
+ C { @SomeText }
+@Row format { @StartHSpan @Cell A | @HSpan | @VSpan }
+ A { @SomeText }
+}
+@End @Text
diff --git a/doc/doc/user/johnson.out b/doc/doc/user/johnson.out
new file mode 100644
index 0000000..ead54ef
--- /dev/null
+++ b/doc/doc/user/johnson.out
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+ ...................................................
+ . . .
+ . Johnson . Johnson suddenly uttered, in .
+ . suddenly . a strong determined tone, an .
+ . uttered, . apophegm, at which many will .
+ . in a strong . start: `Patriotism is the .
+ . determined . last refuge of a scoundrel.' .
+ . tone, an . .
+ . apophegm, at . .
+ . which many ..................................
+ . will start: . . .
+ . `Patriotism . Johnson . Johnson .
+ . is the last . suddenly . suddenly .
+ . refuge of a . uttered, . uttered, .
+ . scoundrel.' . in a strong . in a strong .
+ . . determined . determined .
+ . . tone, an . tone, an .
+ . . apophegm, at . apophegm, at .
+ . . which many . which many .
+ . . will start: . will start: .
+ . . `Patriotism . `Patriotism .
+ . . is the last . is the last .
+ . . refuge of a . refuge of a .
+ . . scoundrel.' . scoundrel.' .
+ . . . .
+ . . . .
+ .................................. .
+ . . .
+ . Johnson suddenly uttered, in . .
+ . a strong determined tone, an . .
+ . apophegm, at which many will . .
+ . start: `Patriotism is the . .
+ . last refuge of a scoundrel.' . .
+ . . .
+ . . .
+ ...................................................
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/doc/user/letterbook b/doc/doc/user/letterbook
new file mode 100644
index 0000000..6d6b749
--- /dev/null
+++ b/doc/doc/user/letterbook
@@ -0,0 +1,356 @@
+###############################################################################
+# #
+# Lout setup file for books #
+# #
+# Jeffrey H. Kingston #
+# 5 February 1999 #
+# #
+###############################################################################
+
+
+###############################################################################
+# #
+# @SysInclude commands for standard packages. #
+# #
+###############################################################################
+
+ @SysInclude { langdefs } # language definitions
+ @SysInclude { bsf } # BasicSetup package
+ @SysInclude { dsf } # DocumentSetup package
+ @SysInclude { bookf } # BookSetup extension
+
+
+###############################################################################
+# #
+# @Include command for reading personal definitions from current directory. #
+# #
+###############################################################################
+
+ @Include { mydefs }
+
+###############################################################################
+# #
+# The @BasicSetup @Use clause - basics, lists, paragraphs, displays. #
+# #
+# To change the default value of any option, delete the # at the start of #
+# its line and change the value between braces. #
+# #
+###############################################################################
+
+@Use { @BasicSetup
+ # @InitialFont { Times Base 12p } # initial font
+ # @InitialBreak {{adjust 1.2fx hyphen} @OrIfPlain {ragged 1fx nohyphen}}
+ # @InitialSpace { lout } # initial space style
+ # @InitialLanguage { English } # initial language
+ # @InitialColour { black } # initial colour
+ # @OptimizePages { No } # optimize page breaks?
+ # @HeadingFont { Bold } # font for @Heading
+ # @ParaGap { 1.3vx @OrIfPlain 1f } # gap between paragraphs
+ # @ParaIndent { 2.00f @OrIfPlain 5s } # first-line indent for @PP
+ # @DisplayGap { 1.00v @OrIfPlain 1f } # gap above, below displays
+ # @DisplayIndent { 2.00f @OrIfPlain 5s } # @IndentedDisplay indent
+ # @DefaultIndent { 0.5rt } # @Display indent
+ # @DisplayNumStyle { (num) } # style of display numbers
+ # @WideIndent { 4.00f @OrIfPlain 10s } # @WideTaggedList indent
+ # @VeryWideIndent { 8.00f @OrIfPlain 20s } # @VeryWideTaggedList indent
+ # @ListGap { 1.00v @OrIfPlain 1f } # gap between list items
+ # @ListIndent { 0s } # indent of list items
+ # @ListRightIndent { 0s } # right indent of list items
+ # @ListLabelWidth { 2.00f @OrIfPlain 5s } # width allowed for list tags
+ # @NumberSeparator { . } # separates nums like 2.3.7
+}
+
+
+###############################################################################
+# #
+# The @DocumentSetup @Use clause - page layout plus figures, tables, etc. #
+# #
+# To change the default value of any option, delete the # at the start of #
+# its line and change the value between braces. #
+# #
+###############################################################################
+
+@Use { @DocumentSetup
+ @PageType { Letter @OrIfPlain Other} # page type (width, height)
+ # @PageWidth { 80s } # page width if type Other
+ # @PageHeight { 66f } # page height if type Other
+ # @PageOrientation { Portrait } # Portrait, Landscape, etc.
+ # @PageBackground { } # background of each page
+ # @TopMargin { 2.5c @OrIfPlain 6f } # top margin of all pages
+ # @FootMargin { 2.5c @OrIfPlain 6f } # bottom margin of all pages
+ # @OddLeftMargin { 2.5c @OrIfPlain 10s } # left margin of odd pages
+ # @OddRightMargin { 2.5c @OrIfPlain 10s } # right margin of odd pages
+ # @EvenLeftMargin { 2.5c @OrIfPlain 10s } # left margin of even pages
+ # @EvenRightMargin { 2.5c @OrIfPlain 10s } # right margin of even pages
+ # @PageBoxType { None } # None Box CurveBox ShadowBox
+ # @PageBoxMargin { 1.00c } # page box margin
+ # @PageBoxLineWidth { } # page box line thickness
+ # @PageBoxPaint { none } # page box paint
+ # @PageBoxShadow { 0.60c } # shadow margin if ShadowBox
+ # @ColumnNumber { 1 } # number of columns (1 to 10)
+ # @ColumnGap { 1.00c @OrIfPlain 6s } # column gap
+ # @FigureLocation { PageTop } # default figure location
+ # @TableLocation { PageTop } # default table location
+ # @FigureFormat { @CC @Body } # default figure format
+ # @TableFormat { @CC @Body } # default table format
+ # @FigureWord { figure } # "Figure" word else anything
+ # @TableWord { table } # "Table" word else anything
+ # @FigureNumbers { Arabic } # method of numbering figures
+ # @TableNumbers { Arabic } # method of numbering tables
+ # @FigureCaptionPos { Below } # Above or Below
+ # @TableCaptionPos { Below } # Above or Below
+ # @CaptionFont { } # figure, table caption font
+ # @CaptionBreak { } # figure, table caption break
+ # @CaptionFormat { @B { number @DotSep @OneCol } } # figure, table caption format
+ # @MakeFigureContents { No } # list of figures at start
+ # @MakeTableContents { No } # list of tables at start
+ # @MakeContents { No } # make contents? Yes or No
+ @MakeContents { Yes } # make contents? Yes or No
+ # @ContentsGap { 0.20v @OrIfPlain 0f } # extra gap above minor entry
+ # @ContentsGapAbove { 0.80v @OrIfPlain 1f } # extra gap above major entry
+ # @ContentsGapBelow { 0.00v @OrIfPlain 0f } # extra gap below major entry
+ # @ContentsPartGapAbove { 1.00v @OrIfPlain 1f } # extra gap above `part' entry
+ # @ContentsPartGapBelow { 0.00v @OrIfPlain 0f } # extra gap below `part' entry
+ # @ContentsFormat { number @DotSep title } # contents entry format
+ # @ContentsLeader { .. } # leader symbol in contents
+ # @ContentsLeaderGap { 4s @OrIfPlain 2s } # gap between leaders
+ # @ContentsRightWidth { 3f @OrIfPlain 6s } # page numbers column width
+ # @MakeReferences { Yes } # make references? Yes or No
+ # @RefCiteStyle { [cite] } # citation style
+ # @RefCiteLabels { @RefNum } # citation items
+ # @RefNumbers { Arabic } # reference numbers
+ # @RefListFormat { Labels } # NoLabels, Labels, etc.
+ # @RefListLabels { [@RefNum] } # ref list label format
+ # @RefListTitle { references } # title of reference list
+ # @ChapRefListTitle { references } # title of chapter ref list
+ # @RefListIndent { 0s } # indent to left of labels
+ # @RefListRightIndent { 0s } # indent to right of items
+ # @RefListGap { @ListGap } # gap between ref list items
+ # @RefListFont { } # font used in reference list
+ # @RefListBreak { } # break style of ref list
+ # @RefListLabelWidth { @ListLabelWidth } # Labels column width
+ # @RefListSortKey { @Tag } # sorting key
+ # @MakeIndex { No } # make index? Yes or No
+ @MakeIndex { Yes } # make index? Yes or No
+ # @IndexFont { } # index entries font
+ # @IndexBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break
+ # @IndexColumnNumber { 2 } # index columns (1 to 10)
+ # @IndexColumnGap { 1.00c @OrIfPlain 6s } # index column gap
+ # @MakeIndexA { No } # make index A? Yes or No
+ # @IndexAFont { } # index A entries font
+ # @IndexABreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break
+ # @IndexAColumnNumber { 2 } # index A columns (1 to 10)
+ # @IndexAColumnGap { 1.00c @OrIfPlain 6s } # index A column gap
+ # @MakeIndexB { No } # make index B? Yes or No
+ # @IndexBFont { } # index B entries font
+ # @IndexBBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break
+ # @IndexBColumnNumber { 2 } # index B columns (1 to 10)
+ # @IndexBColumnGap { 1.00c @OrIfPlain 6s } # index B column gap
+ # @TopGap { 0.75c @OrIfPlain 2f } # gap between figures
+ # @MidGap { 0.75c @OrIfPlain 2f } # gap above/below body text
+ # @FootNoteNumbers { Arabic } # footnote numbers
+ # @FootNoteThrough { No } # numbered through chapter?
+ # @FootNoteLocation { ColFoot } # where the footnote appears
+ # @FootNoteFont { 0.80f } # font for footnotes
+ # @FootNoteBreak { 1.2fx @OrIfPlain 1fx } # break for footnotes
+ # @FootLen { 2.00c @OrIfPlain 10s } # length of footnote line
+ # @FootAboveGap { @DisplayGap } # gap above footnote line
+ # @FootGap { 0.20c @OrIfPlain 1fx } # gap between footnotes
+ # @MarginNoteFont { 0.80f } # font of margin notes
+ # @MarginNoteBreak { ragged 1.10fx } # break style of margin notes
+ # @MarginNoteHGap { 0.5c } # horizontal gap to notes
+ # @MarginNoteVGap { @DisplayGap } # min vertical gap between
+ # @MarginNoteWidth { 1.50c } # width of margin notes
+ # @EndNoteNumbers { Arabic } # endnote numbers
+ # @EndNoteFont { 0.80f } # font of endnotes
+ # @EndNoteBreak { 1.2fx @OrIfPlain 1fx } # break for endnotes
+ # @EndNoteGap { 0.20c @OrIfPlain 1f } # gap between endnotes
+ # @TheoremWord { theorem } # "Theorem" word, etc.
+ # @DefinitionWord { definition } # "Definition" word, etc.
+ # @ClaimWord { claim } # "Claim" word, etc.
+ # @PropositionWord { proposition } # "Proposition" word, etc.
+ # @LemmaWord { lemma } # "Lemma" word, etc.
+ # @CorollaryWord { corollary } # "Corollary" word, etc.
+ # @ExampleWord { example } # "Example" word, etc.
+ # @ProofWord { proof } # "Proof" word, etc.
+ # @PageHeaders { Simple } # None Simple Titles NoTitles
+ @PageHeaders { Titles } # None Simple Titles NoTitles
+ # @PageNumbers { Arabic } # page numbers
+ # @FirstPageNumber { 1 } # number of first page
+ # @IntroPageNumbers { Roman } # intro page numbers
+ # @IntroFirstPageNumber{ 1 } # number of first intro page
+ # @StructPageNums { No } # make structured page numbers
+
+ # @OddTop { @Centre{- @PageNum -} } # Simple page headers
+ # @OddFoot { @Null }
+ # @EvenTop { @Centre{- @PageNum -} }
+ # @EvenFoot { @Null }
+ # @StartOddTop { @Null }
+ # @StartOddFoot { @Null }
+ # @StartEvenTop { @Null }
+ # @StartEvenFoot { @Null }
+ # @IntroOddTop { @Null }
+ # @IntroOddFoot { @Centre @PageNum }
+ # @IntroEvenTop { @Null }
+ # @IntroEvenFoot { @Centre @PageNum }
+ # @IntroStartOddTop { @Null }
+ # @IntroStartOddFoot { @Null }
+ # @IntroStartEvenTop { @Null }
+ # @IntroStartEvenFoot { @Null }
+
+ # Titles, NoTitles headers
+ # @RunningOddTop { @I {@MinorNum @DotSep @MinorTitle} @Right @B @PageNum }
+ # @RunningOddFoot { @Null }
+ # @RunningEvenTop { @B @PageNum @Right @I {@MajorNum @DotSep @MajorTitle} }
+ # @RunningEvenFoot { @Null }
+ # @RunningStartOddTop { @Null }
+ # @RunningStartOddFoot { @Centre { Bold 0.8f } @Font @PageNum }
+ # @RunningStartEvenTop { @Null }
+ # @RunningStartEvenFoot { @Centre { Bold 0.8f } @Font @PageNum }
+ # @RunningIntroOddTop { @Null }
+ # @RunningIntroOddFoot { @Right @PageNum }
+ # @RunningIntroEvenTop { @Null }
+ # @RunningIntroEvenFoot { @PageNum }
+ # @RunningIntroStartOddTop { @Null }
+ # @RunningIntroStartOddFoot { @Null }
+ # @RunningIntroStartEvenTop { @Null }
+ # @RunningIntroStartEvenFoot { @Null }
+}
+
+
+###############################################################################
+# #
+# The @BookSetup @Use clause - options specific to books. #
+# #
+###############################################################################
+
+@Use { @BookSetup
+ # @TitlePageFont { Helvetica Base} # title page font (not size)
+ # @SeparateIntroNumbering { Yes } # separate intro page numbers
+ # @PrefaceAfterContents { No } # Yes or No
+ # @ChapterStartPages { Any } # Any, Odd, or Even
+ # @ReferencesBeforeAppendices { No } # references before appendices
+ # @PrefaceWord { preface } # word for "Preface"
+ # @ContentsWord { contents } # word for "Contents"
+ # @FigureListWord { figurelist } # word for "List of Figures"
+ # @TableListWord { tablelist } # word for "List of Tables"
+ # @IntroductionWord { introduction } # word for "Introduction"
+ # @ChapterWord { chapter } # word for "Chapter"
+ # @AppendixWord { appendix } # word for "Appendix"
+ # @IndexWord { index } # word for "Index"
+ # @IndexAWord { index } # word for "Index" (A)
+ # @IndexBWord { index } # word for "Index" (B)
+ # @ChapterNumbers { Arabic } # kind of chapter numbers
+ # @FirstChapterNumber { 1 } # first chapter number (Arabic)
+ # @SectionNumbers { Arabic } # kind of section numbers
+ # @FirstSectionNumber { 1 } # first section number (Arabic)
+ # @SubSectionNumbers { Arabic } # kind of subsection numbers
+ # @FirstSubSectionNumber { 1 } # first subsect number (Arabic)
+ # @SubSubSectionNumbers { Arabic } # kind of sub-subs. numbers
+ # @FirstSubSubSectionNumber { 1 } # first sub-sub number (Arabic)
+ # @AppendixNumbers { UCAlpha } # kind of appendix numbers
+ # @FirstAppendixNumber { 1 } # first appendix num (Arabic)
+ # @SubAppendixNumbers { Arabic } # kind of subappendix numbers
+ # @FirstSubAppendixNumber { 1 } # first sub-app num (Arabic)
+ # @SubSubAppendixNumbers { Arabic } # kind of sub-subapp. numbers
+ # @FirstSubSubAppendixNumber { 1 } # first sub-sub num (Arabic)
+ # @PartHeadingFont { Helvetica Base 2.50f } # part head font
+ # @PartHeadingBreak { clines 1.2fx nohyphen } # part head break
+ # @PartHeadingFormat { @CD number @DP @CD title } # part head format
+ # @ChapterHeadingFont { Bold 2.00f } # chapter head font
+ # @ChapterHeadingBreak { ragged 1.2fx nohyphen } # chapter head break
+ # @ChapterHeadingFormat { number @DotSep title } # format of chap. head
+ # @SectionHeadingFont { Bold } # section head font
+ # @SectionHeadingBreak { ragged 1.2fx nohyphen } # section head break
+ # @SectionHeadingFormat { number @DotSep title } # section head fmt
+ # @SubSectionHeadingFont { Bold } # subs. head font
+ # @SubSectionHeadingBreak { ragged 1.2fx nohyphen } # subs. head break
+ # @SubSectionHeadingFormat { number @DotSep title } # subs. head fmt
+ # @SubSubSectionHeadingFont { Slope } # sub-subs. head font
+ # @SubSubSectionHeadingBreak { ragged 1.2fx nohyphen } # sub-subs. head break
+ # @SubSubSectionHeadingFormat { number @DotSep title } # sub-subs. head fmt
+ # @AppendixHeadingFont { Bold 2.00f } # appendix head font
+ # @AppendixHeadingBreak { ragged 1.2fx nohyphen } # appendix head break
+ # @AppendixHeadingFormat { number @DotSep title } # appendix head fmt
+ # @SubAppendixHeadingFont { Bold } # subapp. head font
+ # @SubAppendixHeadingBreak { ragged 1.2fx nohyphen } # subapp. head break
+ # @SubAppendixHeadingFormat { number @DotSep title } # subapp. head fmt
+ # @SubSubAppendixHeadingFont { Slope } # sub-suba. head font
+ # @SubSubAppendixHeadingBreak { ragged 1.2fx nohyphen } # sub-suba. head break
+ # @SubSubAppendixHeadingFormat{ number @DotSep title } # sub-suba. head fmt
+ # @AbovePartGap { 4.00f } # gap above part title
+ # @AboveChapterGap { 3.00f } # above major titles
+ # @SectionGap { 2.0v @OrIfPlain 3f } # between sections
+ # @SubSectionGap { 1.5v @OrIfPlain 2f } # between subsects
+ # @SubSubSectionGap { 1.5v @OrIfPlain 2f } # between sub-subs.
+ # @SubAppendixGap { 2.0v @OrIfPlain 3f } # between subappendices
+ # @SubSubAppendixGap { 1.5v @OrIfPlain 2f } # between sub-subapps
+ # @IntroductionInContents { Yes } # add introduction to contents
+ # @PartInContents { Yes } # add parts to contents
+ # @ChapterInContents { Yes } # add chapters to contents
+ # @SectionInContents { Yes } # add sections to contents
+ # @SubSectionInContents { Yes } # add subsections to contents
+ # @SubSubSectionInContents { No } # add sub-subsects to contents
+ # @AppendixInContents { Yes } # add appendices to contents
+ # @SubAppendixInContents { Yes } # add subappendices to contents
+ # @SubSubAppendixInContents { No } # add sub-subapps to contents
+ # @ReferencesInContents { Yes } # add ref. section to contents
+ # @IndexInContents { Yes } # add index to contents
+ # @IndexAInContents { Yes } # add index A to contents
+ # @IndexBInContents { Yes } # add index B to contents
+ # @PartContentsIndent { 0.5rt } # indent of part contents entry
+ # @ChapterNumInTheorems { Yes } # theorem num has chapter num
+ # @SectionNumInTheorems { No } # theorem num has section num
+ # @SubSectionNumInTheorems { No } # theorem num has subsect num
+ # @SubSubSectionNumInTheorems { No } # theorem num has sub-ss. num
+ # @AppendixNumInTheorems { Yes } # theorem num has appendix num
+ # @SubAppendixNumInTheorems { No } # theorem num has sub-app num
+ # @SubSubAppendixNumInTheorems{ No } # theorem num has sub-sa. num
+ # @ChapterNumInDisplays { Yes } # display num has chapter num
+ # @SectionNumInDisplays { Yes } # display num has section num
+ # @SubSectionNumInDisplays { No } # display num has subsect num
+ # @SubSubSectionNumInDisplays { No } # display num has sub-ss. num
+ # @AppendixNumInDisplays { Yes } # display num has appendix num
+ # @SubAppendixNumInDisplays { Yes } # display num has sub-app num
+ # @SubSubAppendixNumInDisplays{ No } # display num has sub-sa. num
+ # @ChapterNumInFigures { Yes } # figure num has chapter num
+ # @SectionNumInFigures { No } # figure num has section num
+ # @SubSectionNumInFigures { No } # figure num has subsect num
+ # @SubSubSectionNumInFigures { No } # figure num has sub-ss. num
+ # @AppendixNumInFigures { Yes } # figure num has appendix num
+ # @SubAppendixNumInFigures { No } # figure num has sub-app num
+ # @SubSubAppendixNumInFigures { No } # figure num has sub-sa. num
+ # @ChapterNumInTables { Yes } # table num has chapter num
+ # @SectionNumInTables { No } # table num has section num
+ # @SubSectionNumInTables { No } # table num has subsect num
+ # @SubSubSectionNumInTables { No } # table num has sub-ss. num
+ # @AppendixNumInTables { Yes } # table num has appendix num
+ # @SubAppendixNumInTables { No } # table num has sub-app num
+ # @SubSubAppendixNumInTables { No } # table num has sub-sa. num
+ # @SectionNumInRunners { Yes } # runners have section num
+ # @SubSectionNumInRunners { No } # runners have subsect num
+ # @SubSubSectionNumInRunners { No } # runners have sub-ss. num
+ # @SubAppendixNumInRunners { Yes } # runners have sub-app num
+ # @SubSubAppendixNumInRunners { No } # runners have sub-sa. num
+ # @PrefacePrefix { } # for structured page nums
+ # @ContentsPrefix { } # for structured page nums
+ # @FigureContentsPrefix { } # for structured page nums
+ # @TableContentsPrefix { } # for structured page nums
+ # @IntroductionPrefix { } # for structured page nums
+ # @ChapterPrefix { } # for structured page nums
+ # @AppendixPrefix { } # for structured page nums
+ # @ReferencesPrefix { } # for structured page nums
+ # @IndexPrefix { } # for structured page nums
+ # @IndexAPrefix { } # for structured page nums
+ # @IndexBPrefix { } # for structured page nums
+}
+
+
+###############################################################################
+# #
+# @Database (and @SysDatabase) clauses go here. #
+# #
+###############################################################################
+
+@SysDatabase @FontDef { fontdefs } # fond definitions
+@SysDatabase @RefStyle { refstyle } # reference printing styles
diff --git a/doc/doc/user/mat b/doc/doc/user/mat
new file mode 100644
index 0000000..cbead5c
--- /dev/null
+++ b/doc/doc/user/mat
@@ -0,0 +1,40 @@
+@Chapter
+ @Title { Mathematics }
+ @Tag { mathematics }
+@Begin
+@LP
+This chapter explains how to produce mathematics in Lout,
+equations. @RawIndex { equations @I see mathematics }
+mathematics. @Index mathematics
+mathematics.math @SubIndex { @Code "@Math" }
+math. @Index { @Code "@Math" (mathematics) }
+using the @Code "@Math" symbol
+@FootNote {
+@Code "@Math" follows the equation formatting rules of D. E. Knuth's
+knuth @Index { Knuth, D. E. }
+tex. @Index { @TeX }
+@TeX system. Prior to Version 3.37 of Lout, this chapter described
+a symbol called
+eq. @Index @Code "@Eq"
+{@Code "@Eq"} which was similar to {@Code "@Math"} but less faithful
+to those rules. For backward compatibility the @Code "@Eq" symbol
+is still available and still works exactly as described in the old
+documentation, but there is no reason to use it in new documents.
+}
+like this:
+@ID @Code @Verbatim {
+@Math { int from { 0 } to { 1 } dx over sqrt {1 - x sup 2} = pi over 2 }
+}
+This example produces
+@ID @Math { int from { 0 } to { 1 } dx over sqrt {1 - x sup 2} = pi over 2 }
+The @Code "@Math" symbol looks after all the details of spacing for
+you, and it provides several hundred mathematical symbols.
+@BeginSections
+@Include { mat_intr }
+@Include { mat_comm }
+@Include { mat_matr }
+@Include { mat_disp }
+@Include { mat_defs }
+@Include { mat_summ }
+@EndSections
+@End @Chapter
diff --git a/doc/doc/user/mat_comm b/doc/doc/user/mat_comm
new file mode 100644
index 0000000..4fbb3a7
--- /dev/null
+++ b/doc/doc/user/mat_comm
@@ -0,0 +1,124 @@
+@Section
+ @Title { Commonly used symbols }
+ @Tag { mat_comm }
+@Begin
+@PP
+@Code "@Math" prints characters in the fonts appropriate for mathematics:
+@ID {
+@Code "x - 2"
+|7ct
+@Math { x-2 }
+}
+Here @Math { x } is in Italic, @Math { 2 } is in Roman, and @Math { minus }
+is from the Symbol font. The character @Code "-" is a @I symbol which
+stands for @Math {minus}, and @Code "2" is also a symbol, standing for
+@Math { 2 }. @Code "@Math" offers a vast array of symbols:
+@ID {
+@Code "Omega delta integral partial club"
+|7ct
+@Math { Omega delta integral partial club }
+}
+This section introduces the most commonly used ones;
+Section {@NumberOf mat_summ} has the full list.
+@PP
+Symbols whose names are made from letters should be separated from each
+other by at least one space or end of line, as was done above, or else
+@Code "@Math" will become confused:
+@ID {
+@Code "Omegadelta"
+|7ct
+@Math { Omegadelta }
+}
+Symbols whose names are made from digits and punctuation characters can,
+however, be run together with each other and with symbols made from
+letters:
+@ID {
+@Code "Omega-delta<=2"
+|7ct
+@Math { Omega-delta<=2 }
+}
+This rule applies throughout Lout (Section {@NumberOf spaces}).
+@PP
+Some symbols join objects together in mathematical ways:
+@ID {
+@Code "x sub 2"
+|7ct
+@Math { x sub 2 }
+}
+Here the @Code "sub" symbol has taken the object just to its left, and
+mathematics.sub. @SubIndex { @Code "sub" symbol }
+sub. @Index { @Code "sub" symbol (mathematics) }
+the object just to its right, and joined them into one object in the
+form of a subscript. The two objects are called the left and right
+parameters of {@Code "sub"}, and they may be arbitrary Lout objects.
+@PP
+Similar symbols include {@Code "sup"} for
+mathematics.sup. @SubIndex { @Code "sup" symbol }
+sup. @Index { @Code "sup" symbol (mathematics) }
+superscripting, @Code "over" for built-up fractions,
+mathematics.over. @SubIndex { @Code "over" symbol }
+over. @Index { @Code "over" symbol (mathematics) }
+and @Code sqrt for square roots.
+mathematics.sqrt. @SubIndex { @Code "sqrt" symbol }
+sqrt. @Index { @Code "sqrt" symbol (mathematics) }
+The @Code "-" symbol used earlier is an example of a
+@I { binary operator } symbol, and @Code "<=" is
+mathematics.binary.operators. @SubIndex { binary operators }
+binary.operators. @Index { binary operators (mathematics) }
+a @I { relation } symbol. These take the objects
+mathematics.relation. @SubIndex { relation symbols }
+relation.symbols. @Index { relation symbols (mathematics) }
+to their left and right and display them as shown; it's hard
+to see, but there is slightly more space around relations
+than around binary operators. There are also @I { large operator }
+mathematics.large.operators. @SubIndex { large operators }
+large.operators. @Index { large operators (mathematics) }
+symbols which take @Code { from } and @Code { to } options and
+set them as limits:
+@ID {
+@Code @Verbatim { sum from { i=0 } to { n } i }
+|7ct
+@Math { sum from { i=0 } to { n } i }
+}
+As usual in Lout, options are optional, but when given, their values
+must be enclosed in braces as shown. Section {@NumberOf mat_summ}
+has the full list of large operator symbols.
+@PP
+All these symbols may be used together to produce complicated
+mathematics very easily:
+@ID {
+@Code @Verbatim { sqrt { x sup 2 + y sup 2 } over 2 }
+|7ct
+@Math { sqrt { x sup 2 + y sup 2 } over 2 }
+}
+Braces are used in the usual way for grouping. Leaving them out
+creates ambiguities:
+@ID @Code "a sup b over c"
+There are two possible interpretations for this:
+@IndentedList
+@LI {
+@Code "{a sup b} over c"
+|7ct
+@ZeroHeight @Math { {a sup b} over c }
+}
+@LI {
+@Code "a sup {b over c}"
+|7ct
+@Math { a sup {b over c} }
+}
+@EndList
+@Code "@Math" chooses between them in the following way. Every symbol
+that takes a parameter also has a {@I precedence}, which is a number
+defined in Section {@NumberOf mat_summ}.
+mathematics.precedence @SubIndex { precedence of symbols }
+precedence.mathematics @Index { precedence of symbols (mathematics) }
+The symbol with the higher precedence wins the object lying between
+them. White space between two objects is considered to be a symbol
+whose precedence is lower than that of any @Code "@Math" symbol. If
+two symbols of equal precedence compete for an object, the association
+is towards the left.
+@PP
+In the above case the first interpretation is chosen, because
+@Code "sup" has higher precedence than {@Code "over"}. When
+in doubt, use braces to make the grouping clear.
+@End @Section
diff --git a/doc/doc/user/mat_defs b/doc/doc/user/mat_defs
new file mode 100644
index 0000000..15d4e05
--- /dev/null
+++ b/doc/doc/user/mat_defs
@@ -0,0 +1,55 @@
+@Section
+ @Title { Defining new mathematical symbols }
+@Begin
+@PP
+Whenever you type a particular piece of mathematics repeatedly, you
+can save time by using definitions. Definitions are the subject of
+Section {@NumberOf definitions}, so here we will just give a few examples
+mathematics.definitions @SubIndex { definitions, use with }
+definitions. @RawIndex { definitions }
+definitions.use.with.mathematics @SubIndex { use with mathematics }
+of their use in formatting mathematics.
+@PP
+Suppose for example that @OneCol @Math { p sub i ` log sub 2 ` p sub i }
+occurs frequently in your document. Then
+@ID @Code "def epi { p sub i ` log sub 2 ` p sub i }"
+makes the symbol @Code "epi" stand for the object between the braces:
+@ID {
+@Code @Verbatim { sum from { i=1 } to { n } ` epi }
+|7ct
+@Math { sum from { i=1 } to { n } ` epi }
+}
+Parameters are very useful when parts of the symbol vary:
+@ID @OneRow @Code @Verbatim {
+def ep right x
+{
+ p sub x ` log sub 2 ` p sub x
+}
+}
+The parameter @Code x will be replaced by the object just to the right
+of {@Code "ep"}:
+@ID {
+@Code {
+"sum from { i=1 } to { k } ` ep i +"
+"sum from { j=k+1 } to { n } ep j"
+}
+||7ct
+@Math {
+sum from { i=1 } to { k } ` ep i +
+sum from { j=k+1 } to { n } ep j
+}
+}
+The precedence of the symbols you define will be 100 by default.
+To make the symbols of @Code "@Math" available within such definitions,
+each must be preceded by {@Code "import @Math"}. As explained in Section
+{@NumberOf definitions}, the definitions go into a file called
+{@Code "mydefs"}, which might look like this:
+@ID @OneRow @Code @Verbatim {
+import @Math
+def epi { p sub i ` log sub 2 ` p sub i }
+
+import @Math
+def ep right x { p sub x ` log sub 2 ` p sub x }
+}
+Use of @Code "epi" and @Code "ep" outside @Code "@Math" will cause an error.
+@End @Section
diff --git a/doc/doc/user/mat_disp b/doc/doc/user/mat_disp
new file mode 100644
index 0000000..e250850
--- /dev/null
+++ b/doc/doc/user/mat_disp
@@ -0,0 +1,126 @@
+@Section
+ @Title { Displaying equations }
+ @Tag { mathdisplays }
+@Begin
+@PP
+The result of the @Code "@Math" symbol is an object which, according to the
+displayed.mathematics @Index { displayed mathematics }
+golden rule (Section {@NumberOf objects}), may appear anywhere: inside
+a paragraph, inside a table, and so on. In particular, equations are
+often displayed using the @Code "@CentredDisplay" or @Code "@IndentedDisplay"
+symbols from Section {@NumberOf displays}:
+@ID @Code "@IndentedDisplay @Math { ... }"
+Now displayed equations are often numbered, and often aligned with one
+another on their equals signs. For this there are special display
+symbols which are the the subject of this section. These symbols can
+align and number any display at all, but since in practice they seem to
+be used only with equations, we discuss them here rather than in
+Section {@NumberOf displays} where they really belong.
+@PP
+Let's begin by looking at a first example of a numbered display:
+aligned.displays @Index { aligned displays }
+aligned.equations @Index { aligned mathematics }
+numbered.displays @Index { numbered displays }
+numbered.equations @Index { numbered mathematics }
+@BeginAlignedDisplays
+@CentredAlignedNumberedDisplay
+ @Tag { fibeq }
+@Math { F sub n ^= F sub {n-1} + F sub {n-2} }
+After the display we might have some more text for a while, and then
+we might want a second display, aligned on its equals sign with the
+first, and also numbered in sequence with it:
+@CentredAlignedNumberedDisplay
+@Math { F sub n - F sub {n-1} ^= F sub {n-2} }
+@EndAlignedDisplays
+Notice that the two displays are centred as a block as well as
+aligned. Altogether there are four ways in which displays vary:
+@BL
+@LI { A display can be raw or not raw (see below); }
+@LI { It can be a {@Code "@Display"}, {@Code "@LeftDisplay"},
+{@Code "@IndentedDisplay"}, {@Code "@QuotedDisplay"},
+{@Code "@CentredDisplay"}, {@Code "@CenteredDisplay"},
+or {@Code "@RightDisplay"}; }
+@LI { It can be aligned or not aligned; }
+@LI { It can be numbered or not numbered. }
+@EL
+All possible combinations are allowed. The display that has everything
+is called
+@ID @Code "@RawCentredAlignedNumberedDisplay"
+By leaving out some or all of {@Code Raw}, {@Code Aligned}, and
+{@Code Numbered}, and by changing or leaving out {@Code Centred},
+we get all these combinations. The two displays
+numbereddisplay. @Index @Code "@NumberedDisplay"
+aligneddisplay. @Index @Code "@AlignedDisplay"
+given earlier were made like this:
+@ID @OneRow @Code @Verbatim {
+... a first example of a numbered display:
+@BeginAlignedDisplays
+@CentredAlignedNumberedDisplay
+ @Tag { fibeq }
+@Math { F sub n ^= F sub {n-1} + F sub {n-2} }
+After the display we might ... numbered in sequence with it:
+@CentredAlignedNumberedDisplay @Math { F sub n - F sub {n-1} ^= F sub {n-2} }
+@EndAlignedDisplays
+Notice that the two displays are centred ...
+}
+All numbered displays have an optional @Code "@Tag" option which is
+used for cross referencing (see Section {@NumberOf cross}). Alignment
+and numbering work quite independently; they don't have to start or end
+together, and there can be non-aligned and non-numbered displays among
+the others.
+@PP
+When aligned displays are used, it is necessary to indicate where the
+aligned group begins and ends, by placing @Code "@BeginAlignedDisplays"
+beginaligneddisplays @Index @Code "@BeginAlignedDisplays"
+endaligneddisplays @Index @Code "@EndAlignedDisplays"
+just before the first, and @Code "@EndAlignedDisplays" just after the
+last. The alignment points are indicated by preceding them by the
+symbol {@Code "^"}, so you aren't restricted to aligning at equals
+signs. @Code "@BeginAlignedDisplays" and @Code "@EndAlignedDisplays"
+cannot span across several sections or subsections: the equations
+aligned by them must lie within a single large-scale structure symbol.
+@PP
+In our example of aligned and numbered displays, the two displays
+were separated by some ordinary text. Very often, though, aligned
+displays follow directly after each other. This is a problem, because
+if you have one display directly following another there will be too
+much vertical space between them. This problem was mentioned in
+Section {@NumberOf displays}, and the recommended solution was to
+use a list. However, there are no aligned or numbered (in this sense)
+lists.
+@PP
+Fortunately, each display symbol has a `raw' version, which
+means that no space is inserted above or below the display. Instead,
+raw.displays @Index { raw displays }
+you must insert it yourself using paragraph symbols:
+@ID @OneRow @Code @Verbatim {
+preceding text
+@DP
+@RawAlignedDisplay @Math { ... }
+@DP
+@RawAlignedNumberedDisplay @Math { ... }
+@DP
+following text
+}
+# You get the right spacing by placing {@Code "@DP"} symbols before,
+# between, and after each display; and you get to use the specialized
+# displays that you need.
+Raw and non-raw displays may be numbered and aligned together.
+@PP
+Numbered displays are numbered automatically. Depending on where in
+the document they appear, the number might include a chapter number
+or section number, etc. This is controlled by options in the setup
+file; for example, setting @Code "@ChapterNumInDisplays" to @Code Yes
+ensures that numbered displays will be numbered afresh at the beginning
+of each chapter, and that the number will include a chapter number. There
+is also a @Code "@DisplayNumStyle" option which controls the style of
+displays; the default value, {@Code "(num)"}, encloses the number in
+parentheses as usual for equations.
+@PP
+Every display symbol has an abbreviated form consisting of @Code "@"
+followed by its capital letters only. For example,
+@Code "@BeginAlignedDisplays" may be abbreviated to {@Code "@BAD"}, and
+the display that has everything to {@Code "@RCAND"}. Owing to an
+unfortunate clash between the initial letters of `raw' and `right',
+@Code "@RightDisplay" and the other right displays have no abbreviations.
+@End @Section
diff --git a/doc/doc/user/mat_intr b/doc/doc/user/mat_intr
new file mode 100644
index 0000000..24b5347
--- /dev/null
+++ b/doc/doc/user/mat_intr
@@ -0,0 +1,63 @@
+@Section
+ @Title { Getting started }
+@Begin
+@PP
+The Lout definitions for the @Code "@Math" symbol are accessed via a setup
+file called {@Code "math"}, which you must include at the start of your
+document if
+math.file @Index { @Code "math" file }
+you want mathematics, like this:
+@ID @OneRow @Code {
+"@SysInclude { tbl }"
+"@SysInclude { math }"
+"@SysInclude { doc }"
+"@Doc @Text @Begin"
+"..."
+"@End @Text"
+}
+This shows what to do if you want both tables and mathematics, but you
+may leave out the line for tables if you don't want them. Setup files
+for specialized packages, such as {@Code "tbl"} and {@Code "math"},
+are best included before the main setup file, but may be included in
+any order.
+@PP
+With the @Code "math" file included, you may write
+@ID @Code "@Math { ... }"
+at any point in your document, and the symbols of @Code "@Math" will be
+available between the braces. Any symbols available outside continue
+to be available inside, which means that mathematics may be freely mixed
+with other symbols.
+@PP
+The @Code "@Math" symbol may appear anywhere; its job is to produce
+an object containing mathematics, and it neither knows nor cares where
+that object goes. To display mathematics, use a display symbol
+like @Code "@IndentedDisplay" or @Code "@CentredDisplay"
+(Section {@NumberOf displays}). For example,
+@ID @Code "@CentredDisplay @Math { int from { 0 } to { pi } sin ` x = 0 }"
+produces
+@CentredDisplay @Math { int from { 0 } to { pi } sin ` x = 0 }
+There are also symbols for aligned and numbered displays
+(Section {@NumberOf mathdisplays}).
+@PP
+The @Code "@Math" symbol sets the mathematics in @I { display style },
+mathematics.display.style @SubIndex { display style }
+display.style @Index { display style (mathematics) }
+a style suited to displays. To get mathematics within a paragraph,
+it is best to use a variant of @Code "@Math" called {@Code "@M"}. The
+mathematics.maaa @SubIndex { @Code "@M" }
+maaa. @Index { @Code "@M" (mathematics) }
+value of @Code "@M { ... }" will be kept together on one line, and it
+will appear in @I { text style }, a more compact style suited to
+mathematics.text.style @SubIndex { text style }
+text.style @Index { text style (mathematics) }
+mathematics within paragraphs.
+@PP
+Throughout this chapter we show the Lout input at the left, and its
+result at the right:
+@ID {
+@Code "@Math { {x sup 2 + y sup 2} over 2 }"
+|7ct
+@Math { {x sup 2 + y sup 2} over 2 }
+}
+Subsequent examples will omit the enclosing {@Code "@Math { ... }"}.
+@End @Section
diff --git a/doc/doc/user/mat_matr b/doc/doc/user/mat_matr
new file mode 100644
index 0000000..45c9b76
--- /dev/null
+++ b/doc/doc/user/mat_matr
@@ -0,0 +1,295 @@
+@Section
+ @Title { Matrices }
+ @Tag { matrices }
+@Begin
+@PP
+The @Code matrix symbol {@PageMark matrix} builds an array of objects:
+mathematics.matrix @SubIndex { @Code "matrix" symbol }
+matrix.mathematics @Index { @Code "matrix" symbol (mathematics) }
+@ID {
+@Code @Verbatim {
+matrix
+ atleft { blpar }
+ atright { brpar }
+{
+ row col x sup 2 col y sup 2 col z sup 2
+ row col x col y col z
+ row col 1 col 1 col 1
+}
+}
+||9ct
+@Math {
+matrix
+ atleft { blpar }
+ atright { brpar }
+{
+ row col x sup 2 col y sup 2 col z sup 2
+ row col x col y col z
+ row col 1 col 1 col 1
+}
+}
+}
+The @Code atleft and @Code atright options place vertically scaled
+versions of their values at each side; if either is omitted the value
+is taken to be an empty object of zero width. Although @Code blpar
+and @Code brpar are used here, since the options are vertically
+scaled it would also be reasonable to use just
+@ID @OneRow @Code @Verbatim {
+matrix
+ atleft { ( }
+ atright { ) }
+}
+The right parameter of @Code matrix is the array itself. It must be
+enclosed in braces. It is a sequence of rows introduced by
+@Code row symbols; each row is a sequence of objects introduced
+by @Code col symbols. The @Code row and @Code col symbols have
+low precedence (Section {@NumberOf mat_summ}), but not as low as
+white space between objects, so it is safest to enclose the entries
+in braces, except in simple cases.
+@PP
+Entries built with the @Code col symbol have their objects centred in
+the column. Also available are @Code lcol for left-justified entries,
+@Code ccol meaning the same as {@Code col}, @Code rcol for
+right-justified entries, and @Code mcol for alignment along column
+marks. Each column may contain entries of different kinds, except
+that @Code mcol does not work well with any other sort.
+@PP
+When several matrices appear side by side, slight differences in height
+can cause an unsightly appearance:
+@ID @Math {
+matrix
+ atleft { ( }
+ atright { ) }
+{
+ row col a sub 11 col a sub 12
+ row col a sub 21 col a sub 22
+}
+matrix
+ atleft { ( }
+ atright { ) }
+{
+ row col b sub 11 col b sub 12
+ row col b sub 21 col b sub 22
+}
+=
+matrix
+ atleft { ( }
+ atright { ) }
+{
+ row col c sub 11 col c sub 12
+ row col c sub 21 col c sub 22
+}
+}
+To assist in resolving this problem, the @Code "matrix" symbol has
+a @Code "strut" option, which causes a strut to be inserted into
+every row, guaranteeing that every row has height at least equal
+to the height of the strut. By using
+@ID @Code {
+"matrix"
+" strut { Yes }"
+"..."
+}
+in each of the three matrices above, the result is improved to
+@ID @Math {
+matrix
+ atleft { ( }
+ atright { ) }
+ strut { Yes }
+{
+ row col a sub 11 col a sub 12
+ row col a sub 21 col a sub 22
+}
+matrix
+ atleft { ( }
+ atright { ) }
+ strut { Yes }
+{
+ row col b sub 11 col b sub 12
+ row col b sub 21 col b sub 22
+}
+=
+matrix
+ atleft { ( }
+ atright { ) }
+ strut { Yes }
+{
+ row col c sub 11 col c sub 12
+ row col c sub 21 col c sub 22
+}
+}
+By default, the strut has height @Code "0.5f" (half the current font
+size) both above and below the axis of the row. This can be changed
+by giving any length as the value of the @Code "strut" option:
+@Code "strut { 2.0c }" for two centimetres above and below
+the axis, and so on.
+@PP
+Some symbols are defined which produce `matrices' with commonly needed
+@Code atleft and @Code atright options already set for you:
+@ID {
+@Code { "fmatrix { {n+1} over 2 }" }
+|7ct
+@Math { fmatrix { {n+1} over 2 } }
+}
+As this example shows, these symbols are very useful for getting large
+scaled delimiters around things that aren't necessarily matrices at all.
+Section {@NumberOf mat_summ} has the full list of these symbols.
+@PP
+Every fragment of mathematics has an @I axis running through it which
+is used to position it vertically
+mathematics.axis @SubIndex { axis of }
+axis @Index { axis (in mathematics) }
+with respect to nearby objects. In the Expert's Guide to Lout
+@Cite { $kingston1995lout.expert } this is called a @I { row mark },
+but we'll stick with axis. Here are some examples with the axis
+shown as a dashed line:
+@ID {
+@ShowHMark @Math { x sup 2 }
+||2c
+@ShowHMark @Math { non + }
+||2c
+@ShowHMark @Math { @ExA }
+}
+When these objects are placed adjacent to one another, their
+axes are merged:
+@ID @ShowHMark @Math { x sup 2 + @ExA }
+Most of the time you do not need to think about vertical
+positioning, because for most objects there is just one
+sensible place for the axis to go, and Lout puts it there.
+@PP
+Matrices and the delimiters that enclose them are the two
+exceptions. Lout makes the axis of a matrix pass through
+its exact centre, and it shifts the axes of delimiters
+so that they exactly enclose the thing delimited. These
+choices are never disastrous, but there are other possibilities
+that might be better sometimes.
+@PP
+The axis of a matrix could reasonably be set to the axis
+of any of its rows:
+@ID {
+@ShowHMark @Math {
+matrix userow { yes } {
+ axisrow col { x sup 3 } col { y sup 3 } col { z sup 3 }
+ row col { x sup 2 } col { y sup 2 } col { z sup 2 }
+ row col { x } col { y } col { z }
+}
+}
+||2c
+@ShowHMark @Math {
+matrix userow { yes } {
+ row col { x sup 3 } col { y sup 3 } col { z sup 3 }
+ axisrow col { x sup 2 } col { y sup 2 } col { z sup 2 }
+ row col { x } col { y } col { z }
+}
+}
+||2c
+@ShowHMark @Math {
+matrix userow { yes } {
+ row col { x sup 3 } col { y sup 3 } col { z sup 3 }
+ row col { x sup 2 } col { y sup 2 } col { z sup 2 }
+ axisrow col { x } col { y } col { z }
+}
+}
+}
+Alternatively, it could be set to where Lout usually places it,
+through the exact centre:
+@ID {
+@ShowHMark @Math {
+matrix {
+ row col { x sup 3 } col { y sup 3 } col { z sup 3 }
+ row col { x sup 2 } col { y sup 2 } col { z sup 2 }
+ row col { x } col { y } col { z }
+}
+}
+}
+Delimiters could reasonably keep the axes that they naturally
+have (approximately through their centres, but not exactly):
+@ID {
+@ShowHMark @Math { pmatrix userow { yes } shiftdelim { no } { @ExA } }
+}
+or they could have their axes moved in the way that Lout usually does,
+to the point which allows them to evenly cover the thing delimited:
+@ID {
+@ShowHMark @Math { pmatrix userow { yes } { @ExA } }
+}
+Altogether then there are four possibilities when these two alternatives
+interact:
+@CD lines @Break @Tbl
+ aformat { @Cell 0.5w @VShift A | @Cell | @Cell B | @Cell | @Cell C }
+{
+@Rowa
+ A { }
+ B { Matrix axis
+uses row axis }
+ C { Matrix axis passes
+through centre }
+@Rowa
+ A { Delimiter
+keeps its axis }
+ B { @ShowHMark @Math { pmatrix userow {yes} shiftdelim {no } { @ExA } } }
+ C { @ShowHMark @Math { pmatrix userow {no } shiftdelim {no } { @ExA } } }
+@Rowa
+ A { Delimiter
+axis shifted }
+ B { @ShowHMark @Math { pmatrix userow {yes} shiftdelim {yes} { @ExA } } }
+ C { @ShowHMark @Math { pmatrix userow {no } shiftdelim {yes} { @ExA } } }
+}
+To supply these possibilities, the @Code "matrix" symbol and all
+its variants (@Code "fmatrix" etc.) have two options whose
+values may be {@Code "yes"} or {@Code "no"}:
+@ID @Code @Verbatim {
+matrix
+ userow { no }
+ shiftdelim { yes }
+{
+ ...
+}
+}
+The @Code "userow" option determines whether the axis of the
+matrix will use a row axis; the default is not to, i.e. to
+centre the axis. The @Code "shiftdelim" option determines whether
+the axis of the delimiter will be shifted so that the delimiter
+evenly covers the thing delimited; the default is to do this.
+@PP
+If @Code "userow" is {@Code "yes"}, the next question is
+which row's axis to use to make the overall axis. If you
+do nothing, the first (or only) row's axis becomes the
+overall axis. To select some other row instead, replace
+the @Code "row" symbol that precedes the row by {@Code "axisrow"}:
+@ID @Code @Tbl
+ mv { 0.5vx }
+ mh { 1s }
+ aformat { @Cell A | @Cell | @Cell B | @Cell | @Cell C | @Cell |
+ @Cell D }
+ bformat { @Cell A | @Cell " col" | @Cell B | @Cell " col" | @Cell C |
+ @Cell " col" | @Cell D }
+{
+@Rowa
+ A { "matrix userow { yes } {" &0io }
+@Rowb
+ A { " row" }
+ B { "x sup 3" }
+ C { "y sup 3" }
+ D { "z sup 3" }
+@Rowb
+ A { " axisrow" }
+ B { "x sup 2" }
+ C { "y sup 2" }
+ D { "z sup 2" }
+@Rowb
+ A { " row" }
+ B { "x" }
+ C { "y" }
+ D { "z" }
+@Rowa
+ A { "}" }
+}
+The result of this is
+@ID @ShowHMark @Math {
+matrix userow { yes } {
+ row col { x sup 3 } col { y sup 3 } col { z sup 3 }
+ axisrow col { x sup 2 } col { y sup 2 } col { z sup 2 }
+ row col { x } col { y } col { z }
+}
+}
+with the axis through the second row as desired.
+@End @Section
diff --git a/doc/doc/user/mat_summ b/doc/doc/user/mat_summ
new file mode 100644
index 0000000..f6bf1a2
--- /dev/null
+++ b/doc/doc/user/mat_summ
@@ -0,0 +1,1314 @@
+@Section
+ @Title { Summary }
+ @Tag { mat_summ }
+@Begin
+@PP
+This section is a complete list of the symbols provided by
+{@Code "@Math"}. We divide them into @I { helper }, @I { ordinary },
+@I { variable-building }, @I { large operator }, @I { unary operator },
+@I { binary operator }, @I { relation }, and @I { punctuation } symbols.
+mathematics.precedence @SubIndex { precedence of symbols }
+precedence.mathematics @Index { precedence of symbols (mathematics) }
+The precedences of these symbols, where relevant, are as follows:
+@ID @OneRow @Tbl
+ mv { 0.5vx }
+ aformat { @Cell ml { 0i } A | @Cell indent { ctr } B | @Cell mr { 0i } C }
+ afont { Italic }
+ bformat { @Cell ml { 0i } A | @Cell indent { ctr } B | @Cell mr { 0i } C }
+{
+@Rowa
+ ma { 0i }
+ A { Symbol type }
+ B { Precedence }
+ C { Symbols }
+ rb { yes }
+@Rowb
+ A { Helper }
+ B { 100 }
+ C { @Code { "big" } @Code { "small" } @Code { "vctr" }
+@Code { "@SuperScriptStyle" } etc.
+# @Code { "@SubScriptStyle" }
+# @Code { "@NumeratorStyle" } @Code { "@DenominatorStyle" }
+# @Code { "@SquareRootStyle" }
+}
+@Rowb
+ A { Variable-building }
+ B { 84 }
+ C { @Code { "dot" } @Code { "dotdot" } @Code { "hat" }
+@Code { "tilde" } @Code { "vec" } @Code { "dyad" }
+@Code { "overbar" } @Code { "underbar" }
+}
+@Rowb
+ A { Variable-building }
+ B { 82 }
+ C { @Code { "sub" } @Code { "on" } @Code { "ton" } }
+@Rowb
+ A { Variable-building }
+ B { 80 }
+ C { @Code { "sup" } @Code { "supp" } }
+@Rowb
+ A { Unary operator }
+ B { 70 }
+ C { @Code { sqrt } @Code { root } @Code { zroot } @Code { matrix } etc. }
+@Rowb
+ A { Binary operator }
+ B { 64 }
+ C { @Code { "times" } @Code { "*" } }
+@Rowb
+ A { Binary operator }
+ B { 62 }
+ C { @Code { "div" } @Code { "frac" } @Code { "over" } }
+@Rowb
+ A { Binary operator }
+ B { 60 }
+ C { @Code { "bin" } @Code { "+" } @Code { "-" } and
+all other binary operator symbols }
+@Rowb
+ A { Relation }
+ B { 50 }
+ C { @Code "rel" and all other relation symbols }
+@Rowb
+ A { Punctuation }
+ B { 40 }
+ C { @Code { "punct" } @Code { ";" } @Code { "," } @Code { "col" } }
+@Rowb
+ A { Helper }
+ B { 26 }
+ C { @Code "non" }
+@Rowb
+ A { Helper }
+ B { 24 }
+ C { @Code { "above" } @Code { "below" } @Code { "wideabove" }
+@Code { "widebelow" }
+}
+@Rowb
+ A { Helper }
+ B { 22 }
+ C { @Code { "col" } @Code { "lcol" } @Code { "ccol" }
+@Code { "rcol" } @Code { "mcol" } }
+@Rowb
+ A { Helper }
+ B { 20 }
+ C { @Code { "row" } @Code { "axisrow" } }
+ rb { yes }
+ mb { 0i }
+}
+Results are shown in display style in this section; the other styles
+give more compressed results.
+@BeginSubSections
+
+@SubSection
+ @Title { Helper symbols }
+@Begin
+@LP
+The full list of helper symbols is
+@ID @OneRow @Tbl
+ mv { 0.5vx }
+ aformat { @Cell ml { 0i } A | @Cell mr { 0i } B }
+{
+@Rowa
+ ma { 0i }
+ A { @Code "`" }
+ B { Thin space, as after punctuation symbols }
+@Rowa
+ A { @Code "``" }
+ B { Medium space, as around binary operator symbols }
+@Rowa
+ A { @Code "```" }
+ B { Thick space, as around relation symbols }
+@Rowa
+ A { @Code "big x"
+mathematics.big. @SubIndex { @Code "big" symbol }
+big. @Index { @Code "big" symbol (mathematics) }
+}
+ B { Make @Code x larger }
+@Rowa
+ A { @Code "small x"
+mathematics.small. @SubIndex { @Code "small" symbol }
+small. @Index { @Code "small" symbol (mathematics) }
+}
+ B { Make @Code x smaller }
+@Rowa
+ A { @Code "vctr x"
+mathematics.vctr. @SubIndex { @Code "vctr" symbol }
+vctr. @Index { @Code "vctr" symbol (mathematics) }
+}
+ B { Centre @Code x vertically }
+@Rowa
+ A { @Code "@SuperScriptStyle x"
+mathematics.superscriptstyle. @SubIndex { @Code "@SuperScriptStyle" }
+superscriptstyle. @Index { @Code "@SuperScriptStyle" (mathematics) }
+}
+ B { Set @Code x in the style of a superscript }
+@Rowa
+ A { @Code "@SubScriptStyle x"
+mathematics.subscriptstyle. @SubIndex { @Code "@SubScriptStyle" }
+subscriptstyle. @Index { @Code "@SubScriptStyle" (mathematics) }
+}
+ B { Set @Code x in the style of a subscript }
+@Rowa
+ A { @Code "@NumeratorStyle x"
+mathematics.numeratorstyle. @SubIndex { @Code "@NumeratorStyle" }
+numeratorstyle. @Index { @Code "@NumeratorStyle" (mathematics) }
+}
+ B { Set @Code x in the style of a numerator }
+@Rowa
+ A { @Code "@DenominatorStyle x"
+mathematics.denominatorstyle. @SubIndex { @Code "@DenominatorStyle" }
+denominatorstyle. @Index { @Code "@DenominatorStyle" (mathematics) }
+}
+ B { Set @Code x in the style of a denominator }
+@Rowa
+ A { @Code "@SquareRootStyle x"
+mathematics.squarerootstyle. @SubIndex { @Code "@SquareRootStyle" }
+squarerootstyle. @Index { @Code "@SquareRootStyle" (mathematics) }
+}
+ B { Set @Code x in the style of a square root }
+@Rowa
+ A { @Code { above } @Code { below } @Code { wideabove }
+@Code { widebelow } }
+ B { Vertical stacking (see below) }
+@Rowa
+ A { @Code { "col" } @Code { "lcol" } @Code { "ccol" }
+@Code { "rcol" } @Code { "mcol" } @Code { "row" } @Code { "axisrow" } }
+ B { Used only within matrices (Section {@NumberOf matrices}) }
+@Rowa
+ A { @Code "non x" }
+ B { Remove spaces from @Code x (see below) }
+ mb { 0i }
+}
+where @Code "x" is arbitrary as usual. The @Code "above" symbol prints
+mathematics.above. @SubIndex { @Code "above" symbol }
+above. @Index { @Code "above" symbol (mathematics) }
+the preceding object above the following object, while the @Code "below"
+mathematics.below. @SubIndex { @Code "below" symbol }
+below. @Index { @Code "below" symbol (mathematics) }
+symbol prints it below:
+@ID {
+@Code @Verbatim { { a above f } + { z below b } }
+|7ct
+@Math { { a above f } + { z below b } }
+}
+Here is a larger example:
+@ID { @Code @Verbatim {
+sum from { { 1 <= i <= p } above
+ { 1 <= j <= q } above { 1 <= k <= r } }
+{ a sub ij b sub jk c sub ki }
+}
+||7ct
+@Math {
+ sum from { { 1 <= i <= p } above
+ { 1 <= j <= q } above
+ { 1 <= k <= r } }
+ { a sub { ij } b sub { jk } c sub { ki } }
+}
+}
+The @Code "wideabove" and @Code "widebelow" symbols are like @Code "above"
+mathematics.wideabove. @SubIndex { @Code "wideabove" symbol }
+wideabove. @Index { @Code "wideabove" symbol (mathematics) }
+mathematics.widebelow. @SubIndex { @Code "widebelow" symbol }
+widebelow. @Index { @Code "widebelow" symbol (mathematics) }
+and @Code "below" except that they horizontally scale the right parameter
+to the width of the left:
+@IL
+
+@LI {
+@Code @Verbatim {
+{a, ... , z} wideabove
+{90d @Rotate blbrace}
+}
+||7ct
+@Math { {a, ... , z} wideabove {90d @Rotate blbrace} }
+}
+
+@LI {
+@Code "{a, ... , z} widebelow minus"
+|7ct
+@Math { {a, ... , z} widebelow minus }
+}
+@EL
+The @Code "non" symbol prints the following object without the
+mathematics.non. @SubIndex { @Code "non" symbol }
+non. @Index { @Code "non" symbol (mathematics) }
+horizontal spacing it would usually contain. It has low precedence
+so that, in examples like
+@ID @Code @Verbatim {
+The `@M { non <= }' operation is reflexive and transitive.
+}
+which produces
+@ID {
+The `@M { non <= }' operation is reflexive and transitive.
+}
+it is easy to use the familiar symbolic names for relations and
+operators without getting the usual surrounding spaces, saving
+the trouble of looking up the names of the characters.
+@End @SubSection
+
+@SubSection
+ @Title { Ordinary symbols }
+@Begin
+@LP
+Ordinary symbols are the simplest symbols. They do not take objects
+mathematics.ordinary. @SubIndex { ordinary symbols }
+ordinary. @Index { ordinary symbols (mathematics) }
+to their left or right, and they always look the same except for the
+usual change of size in certain contexts (superscripts, subscripts, etc.).
+There are hundreds of these symbols, so they are presented here in groups.
+@PP
+The first group consists of all the symbols from the Adobe Symbol font;
+these are as for the @Code "@Sym" symbol of Section {@NumberOf characters},
+but within @Code "@Math" you don't type {@Code "@Sym"}:
+@DP
+@Tbl
+ mv { 0.5vx }
+ aformat { @Cell ml {@DisplayIndent} indent {right} w {@LCodeWidth} @Code A |
+ @Cell w {@ResultWidth} B |
+ @Cell indent {right} w {@CodeWidth} @Code C |
+ @Cell w {@ResultWidth} D |
+ @Cell indent {right} w {@CodeWidth} @Code E |
+ @Cell w {@ResultWidth} mr { 0i } F }
+{
+@Rowa
+ ma { 0i }
+ A { "space" } B { @Math { space } }
+ C { "exclam" } D { @Math { exclam } }
+ E { "universal" } F { @Math { universal } }
+@Rowa
+ A { "numbersign" } B { @Math { numbersign } }
+ C { "existential" } D { @Math { existential } }
+ E { "percent" } F { @Math { percent } }
+@Rowa
+ A { "ampersand" } B { @Math { ampersand } }
+ C { "suchthat" } D { @Math { suchthat } }
+ E { "parenleft" } F { @Math { parenleft } }
+@Rowa
+ A { "parenright" } B { @Math { parenright } }
+ C { "asteriskmath" } D { @Math { asteriskmath } }
+ E { "plus" } F { @Math { plus } }
+@Rowa
+ A { "comma" } B { @Math { comma } }
+ C { "minus" } D { @Math { minus } }
+ E { "period" } F { @Math { period } }
+@Rowa
+ A { "slash" } B { @Math { slash } }
+ C { "zero" } D { @Math { zero } }
+ E { "one" } F { @Math { one } }
+@Rowa
+ A { "two" } B { @Math { two } }
+ C { "three" } D { @Math { three } }
+ E { "four" } F { @Math { four } }
+@Rowa
+ A { "five" } B { @Math { five } }
+ C { "six" } D { @Math { six } }
+ E { "seven" } F { @Math { seven } }
+@Rowa
+ A { "eight" } B { @Math { eight } }
+ C { "nine" } D { @Math { nine } }
+ E { "colon" } F { @Math { colon } }
+@Rowa
+ A { "semicolon" } B { @Math { semicolon } }
+ C { "less" } D { @Math { less } }
+ E { "equal" } F { @Math { equal } }
+@Rowa
+ A { "greater" } B { @Math { greater } }
+ C { "question" } D { @Math { question } }
+ E { "congruent" } F { @Math { congruent } }
+@Rowa
+ A { "Alpha" } B { @Math { Alpha } }
+ C { "Beta" } D { @Math { Beta } }
+ E { "Chi" } F { @Math { Chi } }
+@Rowa
+ A { "Delta" } B { @Math { Delta } }
+ C { "Epsilon" } D { @Math { Epsilon } }
+ E { "Phi" } F { @Math { Phi } }
+@Rowa
+ A { "Gamma" } B { @Math { Gamma } }
+ C { "Eta" } D { @Math { Eta } }
+ E { "Iota" } F { @Math { Iota } }
+@Rowa
+ A { "thetaone" } B { @Math { thetaone } }
+ C { "Kappa" } D { @Math { Kappa } }
+ E { "Lambda" } F { @Math { Lambda } }
+@Rowa
+ A { "Mu" } B { @Math { Mu } }
+ C { "Nu" } D { @Math { Nu } }
+ E { "Omicron" } F { @Math { Omicron } }
+@Rowa
+ A { "Pi" } B { @Math { Pi } }
+ C { "Theta" } D { @Math { Theta } }
+ E { "Rho" } F { @Math { Rho } }
+@Rowa
+ A { "Sigma" } B { @Math { Sigma } }
+ C { "Tau" } D { @Math { Tau } }
+ E { "Upsilon" } F { @Math { Upsilon } }
+@Rowa
+ A { "sigmaone" } B { @Math { sigmaone } }
+ C { "Omega" } D { @Math { Omega } }
+ E { "Xi" } F { @Math { Xi } }
+@Rowa
+ A { "Psi" } B { @Math { Psi } }
+ C { "Zeta" } D { @Math { Zeta } }
+ E { "bracketleft" } F { @Math { bracketleft } }
+@Rowa
+ A { "therefore" } B { @Math { therefore } }
+ C { "bracketright" } D { @Math { bracketright } }
+ E { "perpendicular" } F { @Math { perpendicular } }
+@Rowa
+ A { "underscore" } B { @Math { underscore } }
+ C { "radicalex" } D { @Math { radicalex } }
+ E { "alpha" } F { @Math { alpha } }
+@Rowa
+ A { "beta" } B { @Math { beta } }
+ C { "chi" } D { @Math { chi } }
+ E { "delta" } F { @Math { delta } }
+@Rowa
+ A { "epsilon" } B { @Math { epsilon } }
+ C { "phi" } D { @Math { phi } }
+ E { "gamma" } F { @Math { gamma } }
+@Rowa
+ A { "eta" } B { @Math { eta } }
+ C { "iota" } D { @Math { iota } }
+ E { "phione" } F { @Math { phione } }
+@Rowa
+ A { "kappa" } B { @Math { kappa } }
+ C { "lambda" } D { @Math { lambda } }
+ E { "mu" } F { @Math { mu } }
+@Rowa
+ A { "nu" } B { @Math { nu } }
+ C { "omicron" } D { @Math { omicron } }
+ E { "pi" } F { @Math { pi } }
+@Rowa
+ A { "theta" } B { @Math { theta } }
+ C { "rho" } D { @Math { rho } }
+ E { "sigma" } F { @Math { sigma } }
+@Rowa
+ A { "tau" } B { @Math { tau } }
+ C { "upsilon" } D { @Math { upsilon } }
+ E { "omegaone" } F { @Math { omegaone } }
+@Rowa
+ A { "omega" } B { @Math { omega } }
+ C { "xi" } D { @Math { xi } }
+ E { "psi" } F { @Math { psi } }
+@Rowa
+ A { "zeta" } B { @Math { zeta } }
+ C { "braceleft" } D { @Math { braceleft } }
+ E { "bar" } F { @Math { bar } }
+@Rowa
+ A { "braceright" } B { @Math { braceright } }
+ C { "similar" } D { @Math { similar } }
+ E { "Upsilonone" } F { @Math { Upsilonone } }
+@Rowa
+ A { "minute" } B { @Math { minute } }
+ C { "lessequal" } D { @Math { lessequal } }
+ E { "fraction" } F { @Math { fraction } }
+@Rowa
+ A { "infinity" } B { @Math { infinity } }
+ C { "florin" } D { @Math { florin } }
+ E { "club" } F { @Math { club } }
+@Rowa
+ A { "diamond" } B { @Math { diamond } }
+ C { "heart" } D { @Math { heart } }
+ E { "spade" } F { @Math { spade } }
+@Rowa
+ A { "arrowboth" } B { @Math { arrowboth } }
+ C { "arrowleft" } D { @Math { arrowleft } }
+ E { "arrowup" } F { @Math { arrowup } }
+@Rowa
+ A { "arrowright" } B { @Math { arrowright } }
+ C { "arrowdown" } D { @Math { arrowdown } }
+ E { "degree" } F { @Math { degree } }
+@Rowa
+ A { "plusminus" } B { @Math { plusminus } }
+ C { "second" } D { @Math { second } }
+ E { "greaterequal" } F { @Math { greaterequal } }
+@Rowa
+ A { "multiply" } B { @Math { multiply } }
+ C { "proportional" } D { @Math { proportional } }
+ E { "partialdiff" } F { @Math { partialdiff } }
+@Rowa
+ A { "bullet" } B { @Math { bullet } }
+ C { "divide" } D { @Math { divide } }
+ E { "notequal" } F { @Math { notequal } }
+@Rowa
+ A { "equivalence" } B { @Math { equivalence } }
+ C { "approxequal" } D { @Math { approxequal } }
+ E { "ellipsis" } F { @Math { ellipsis } }
+@Rowa
+ A { "arrowvertex" } B { @Math { arrowvertex } }
+ C { "arrowhorizex" } D { @Math { arrowhorizex } }
+ E { "carriagereturn" } F { @Math { carriagereturn } }
+@Rowa
+ A { "aleph" } B { @Math { aleph } }
+ C { "Ifraktur" } D { @Math { Ifraktur } }
+ E { "Rfraktur" } F { @Math { Rfraktur } }
+@Rowa
+ A { "weierstrass" } B { @Math { weierstrass } }
+ C { "circlemultiply" } D { @Math { circlemultiply } }
+ E { "circleplus" } F { @Math { circleplus } }
+@Rowa
+ A { "emptyset" } B { @Math { emptyset } }
+ C { "intersection" } D { @Math { intersection } }
+ E { "union" } F { @Math { union } }
+@Rowa
+ A { { 0.92 1.0 } @Scale "propersuperset" } B { @Math { propersuperset } }
+ C { "reflexsuperset" } D { @Math { reflexsuperset } }
+ E { "notsubset" } F { @Math { notsubset } }
+@Rowa
+ A { "propersubset" } B { @Math { propersubset } }
+ C { "reflexsubset" } D { @Math { reflexsubset } }
+ E { "element" } F { @Math { element } }
+@Rowa
+ A { "notelement" } B { @Math { notelement } }
+ C { "angle" } D { @Math { angle } }
+ E { "gradient" } F { @Math { gradient } }
+@Rowa
+ A { "registerserif" } B { @Math { registerserif } }
+ C { "copyrightserif" } D { @Math { copyrightserif } }
+ E { "trademarkserif" } F { @Math { trademarkserif } }
+@Rowa
+ A { "product" } B { @Math { product } }
+ C { "radical" } D { @Math { radical } }
+ E { "dotmath" } F { @Math { dotmath } }
+@Rowa
+ A { "logicalnot" } B { @Math { logicalnot } }
+ C { "logicaland" } D { @Math { logicaland } }
+ E { "logicalor" } F { @Math { logicalor } }
+@Rowa
+ A { "arrowdblboth" } B { @Math { arrowdblboth } }
+ C { "arrowdblleft" } D { @Math { arrowdblleft } }
+ E { "arrowdblup" } F { @Math { arrowdblup } }
+@Rowa
+ A { "arrowdblright" } B { @Math { arrowdblright } }
+ C { "arrowdbldown" } D { @Math { arrowdbldown } }
+ E { "lozenge" } F { @Math { lozenge } }
+@Rowa
+ A { "angleleft" } B { @Math { angleleft } }
+ C { "registersans" } D { @Math { registersans } }
+ E { "copyrightsans" } F { @Math { copyrightsans } }
+@Rowa
+ A { { 0.92 1.0 } @Scale "trademarksans" } B { @Math { trademarksans } }
+ C { "summation" } D { @Math { summation } }
+ E { "parenlefttp" } F { @Math { parenlefttp } }
+@Rowa
+ A { "parenleftex" } B { @Math { parenleftex } }
+ C { "parenleftbt" } D { @Math { parenleftbt } }
+ E { "bracketlefttp" } F { @Math { bracketlefttp } }
+@Rowa
+ A { "bracketleftex" } B { @Math { bracketleftex } }
+ C { "bracketleftbt" } D { @Math { bracketleftbt } }
+ E { "bracelefttp" } F { @Math { bracelefttp } }
+@Rowa
+ A { "braceleftmid" } B { @Math { braceleftmid } }
+ C { "braceleftbt" } D { @Math { braceleftbt } }
+ E { "braceex" } F { @Math { braceex } }
+@Rowa
+ A { "angleright" } B { @Math { angleright } }
+ C { "integral" } D { @Math { integral } }
+ E { "integraltp" } F { @Math { integraltp } }
+@Rowa
+ A { "integralex" } B { @Math { integralex } }
+ C { "integralbt" } D { @Math { integralbt } }
+ E { "parenrighttp" } F { @Math { parenrighttp } }
+@Rowa
+ A { "parenrightex" } B { @Math { parenrightex } }
+ C { "parenrightbt" } D { @Math { parenrightbt } }
+ E { "bracketrighttp" } F { @Math { bracketrighttp } }
+@Rowa
+ A { "bracketrightex" } B { @Math { bracketrightex } }
+ C { "bracketrightbt" } D { @Math { bracketrightbt } }
+ E { "bracerighttp" } F { @Math { bracerighttp } }
+@Rowa
+ A { "bracerightmid" } B { @Math { bracerightmid } }
+ C { "bracerightbt" } D { @Math { bracerightbt } }
+ mb { 0i }
+}
+@DP
+The symbols that produce the Symbol font characters @Code { theta1 },
+@Code { sigma1 }, @Code { phi1 }, @Code { omega1 }, and @Code { Upsilon1 }
+are called @Code { thetaone }, @Code { sigmaone }, @Code { phione },
+@Code { omegaone }, and @Code { Upsilonone }, since Lout symbol names
+cannot contain both letters and digits. The second group of ordinary
+symbols produces arrows:
+@ID @OneRow @Tbl
+ mv { 0.5vx }
+ aformat { @Cell ml{0i} indent{right} w{@LCodeWidth} @Code A |
+ @Cell w {@ResultWidth} B |
+ @Cell indent {right} w {@CodeWidth} @Code C |
+ @Cell w {@ResultWidth} D |
+ @Cell indent {right} w {@CodeWidth} @Code E |
+ @Cell w {@ResultWidth} mr { 0i } F }
+{
+@Rowa
+ ma { 0i }
+ A { "leftarrow" } B { @Math { leftarrow } }
+ C { "longleftarrow" } D { @Math { longleftarrow } }
+ E { "dblleftarrow" } F { @Math { dblleftarrow } }
+@Rowa
+ A { "dbllongleftarrow" } B { @Math { dbllongleftarrow } }
+ C { "rightarrow" } D { @Math { rightarrow } }
+ E { "longrightarrow" } F { @Math { longrightarrow } }
+@Rowa
+ A { "dblrightarrow" } B { @Math { dblrightarrow } }
+ C { "dbllongrightarrow" } D { @Math { dbllongrightarrow } }
+ E { "leftrightarrow" } F { @Math { leftrightarrow } }
+@Rowa
+ A { "longleftrightarrow" } B { @Math { longleftrightarrow } }
+ C { "dblleftrightarrow" } D { @Math { dblleftrightarrow } }
+ E { { 0.85 1.0 } @Scale "dbllongleftrightarrow" }
+ F { @Math { dbllongleftrightarrow } }
+@Rowa
+ A { "mapsto" } B { @Math { mapsto } }
+ C { "longmapsto" } D { @Math { longmapsto } }
+ E { "hookleftarrow" } F { @Math { hookleftarrow } }
+@Rowa
+ A { "hookrightarrow" } B { @Math { hookrightarrow } }
+ C { "leadsto" } D { @Math { leadsto } }
+ E { "leftharpoonup" } F { @Math { leftharpoonup } }
+@Rowa
+ A { "rightharpoonup" } B { @Math { rightharpoonup } }
+ C { "leftharpoondown" } D { @Math { leftharpoondown } }
+ E { { 0.95 1.0 } @Scale "rightharpoondown" } F { @Math { rightharpoondown } }
+@Rowa
+ A { "rightleftharpoons" } B { @Math { rightleftharpoons } }
+ C { "uparrow" } D { @Math { uparrow } }
+ E { "dbluparrow" } F { @Math { dbluparrow } }
+@Rowa
+ A { "downarrow" } B { @Math { downarrow } }
+ C { "dbldownarrow" } D { @Math { dbldownarrow } }
+ E { "updownarrow" } F { @Math { updownarrow } }
+@Rowa
+ A { "dblupdownarrow" } B { @Math { dblupdownarrow } }
+ C { "nearrow" } D { @Math { nearrow } }
+ E { "searrow" } F { @Math { searrow } }
+@Rowa
+ A { "swarrow" } B { @Math { swarrow } }
+ C { "nwarrow" } D { @Math { nwarrow } }
+ mb { 0i }
+}
+The members of the third group of ordinary symbols stand for themselves,
+but in Roman font rather than the Italic which is the default in
+mathematics:
+@ID @OneRow @Tbl
+ mv { 0.45vx }
+ aformat { @Cell ml {0i} indent {right} w {@LCodeWidth} @Code A |
+ @Cell w {@ResultWidth} B |
+ @Cell indent {right} w {@CodeWidth} @Code C |
+ @Cell w {@ResultWidth} D |
+ @Cell indent {right} w {@CodeWidth} @Code E |
+ @Cell w {@ResultWidth} mr { 0i } F }
+{
+@Rowa
+ ma { 0i }
+ A { "arccos" } B { @Math { arccos } }
+ C { "arcsin" } D { @Math { arcsin } }
+ E { "arctan" } F { @Math { arctan } }
+@Rowa
+ A { "arg" } B { @Math { arg } }
+ C { "cos" } D { @Math { cos } }
+ E { "cosh" } F { @Math { cosh } }
+@Rowa
+ A { "cot" } B { @Math { cot } }
+ C { "coth" } D { @Math { coth } }
+ E { "csc" } F { @Math { csc } }
+@Rowa
+ A { "deg" } B { @Math { deg } }
+ C { "det" } D { @Math { det } }
+ E { "dim" } F { @Math { dim } }
+@Rowa
+ A { "exp" } B { @Math { exp } }
+ C { "gcd" } D { @Math { gcd } }
+ E { "hom" } F { @Math { hom } }
+@Rowa
+ A { "inf" } B { @Math { inf } }
+ C { "ker" } D { @Math { ker } }
+ E { "lg" } F { @Math { lg } }
+@Rowa
+ A { "lim" } B { @Math { lim } }
+ C { "liminf" } D { @ZeroWidth @Math { liminf } }
+ E { "limsup" } F { @Math { limsup } }
+@Rowa
+ A { "ln" } B { @Math { ln } }
+ C { "log" } D { @Math { log } }
+ E { "max" } F { @Math { max } }
+@Rowa
+ A { "min" } B { @Math { min } }
+ C { "Pr" } D { @Math { Pr } }
+ E { "sec" } F { @Math { sec } }
+@Rowa
+ A { "sin" } B { @Math { sin } }
+ C { "sinh" } D { @Math { sinh } }
+ E { "supr" } F { @Math { supr } }
+@Rowa
+ A { "tan" } B { @Math { tan } }
+ C { "tanh" } D { @Math { tanh } }
+ E { "mod" } F { @Math { mod } }
+@Rowa
+ A { "0" } B { @Math { 0 } }
+ C { "1" } D { @Math { 1 } }
+ E { "2" } F { @Math { 2 } }
+@Rowa
+ A { "3" } B { @Math { 3 } }
+ C { "4" } D { @Math { 4 } }
+ E { "5" } F { @Math { 5 } }
+@Rowa
+ A { "6" } B { @Math { 6 } }
+ C { "7" } D { @Math { 7 } }
+ E { "8" } F { @Math { 8 } }
+@Rowa
+ A { "9" } B { @Math { 9 } }
+ C { "!" } D { @Math { ! } }
+ E { "?" } F { @Math { ? } }
+@Rowa
+ A { "%" } B { @Math { % } }
+ C { "(" } D { @Math { ( } }
+ E { ")" } F { @Math { ) } }
+@Rowa
+ A { "[" } B { @Math { [ } }
+ C { "]" } D { @Math { ] } }
+ mb { 0i }
+}
+The fourth group make good values for the @Code "atleft" and
+@Code "atright" options of @Code { matrix }:
+@ID @OneRow @Tbl
+ mv { 0.5vx }
+ aformat { @Cell ml { 0i } indent { right } w {@LCodeWidth} @Code A | @Cell B | @Cell |
+ @Cell indent { right } @Code C | @Cell D | @Cell |
+ @Cell indent { right } @Code E | @Cell F | @Cell |
+ @Cell indent { right } @Code G | @Cell mr { 0i } H }
+{
+@Rowa
+ ma { 0i }
+ strut { 1.2f }
+ A { "lpar" } B { @Math { lpar } }
+ C { "rpar" } D { @Math { rpar } }
+ E { "lbrack" } F { @Math { lbrack } }
+ G { "rbrack" } H { @Math { rbrack } }
+@Rowa
+ strut { 1.2f }
+ A { "lbrace" } B { @Math { lbrace } }
+ C { "rbrace" } D { @Math { rbrace } }
+ E { "lfloor" } F { @Math { lfloor } }
+ G { "rfloor" } H { @Math { rfloor } }
+@Rowa
+ strut { 1.2f }
+ A { "lceil" } B { @Math { lceil } }
+ C { "rceil" } D { @Math { rceil } }
+ E { "langle" } F { @Math { langle } }
+ G { "rangle" } H { @Math { rangle } }
+@Rowa
+ strut { 3.5f }
+ A { "blpar" } B { @Math { blpar } }
+ C { "brpar" } D { @Math { brpar } }
+ E { "blbrack" } F { @Math { blbrack } }
+ G { "brbrack" } H { @Math { brbrack } }
+@Rowa
+ strut { 3.5f }
+ A { "blbrace" } B { @Math { blbrace } }
+ C { "brbrace" } D { @Math { brbrace } }
+ E { "blfloor" } F { @Math { blfloor } }
+ G { "brfloor" } H { @Math { brfloor } }
+@Rowa
+ strut { 3.5f }
+ A { "blceil" } B { @Math { blceil } }
+ C { "brceil" } D { @Math { brceil } }
+ E { "blangle" } F { @Math { blangle } }
+ G { "brangle" } H { @Math { brangle } }
+ mb { 0i }
+}
+The last group is miscellaneous:
+@DP
+@RID @OneRow @Tbl
+ mv { 0.5vx }
+ aformat { @Cell ml {0i} indent {right} w {@LCodeWidth} @Code A |
+ @Cell w {@ResultWidth} B |
+ @Cell indent {right} w {@CodeWidth} @Code C |
+ @Cell w {@ResultWidth} D |
+ @Cell indent {right} w {@CodeWidth} @Code E |
+ @Cell w {@ResultWidth} mr { 0i } F }
+{
+@Rowa
+ ma { 0i }
+ A { "hbar" } B { @Math { hbar } }
+ C { "Re" } D { @Math { Re } }
+ E { "Im" } F { @Math { Im } }
+@Rowa
+ A { "partial" } B { @Math { partial } }
+ C { "infty" } D { @Math { infty } }
+ E { "prime" } F { @Math { prime } }
+@Rowa
+ A { "nabla" } B { @Math { nabla } }
+ C { "surd" } D { @Math { surd } }
+ E { "top" } F { @Math { top } }
+@Rowa
+ A { "bot" } B { @Math { bot } }
+ C { "dbar" } D { @Math { dbar } }
+ E { "triangle" } F { @Math { triangle } }
+@Rowa
+ A { "backslash" } B { @Math { backslash } }
+ C { "forall" } D { @Math { forall } }
+ E { "exists" } F { @Math { exists } }
+@Rowa
+ A { "neg" } B { @Math { neg } }
+ C { "circle" } D { @Math { circle } }
+ E { "filledcircle" } F { @Math { filledcircle } }
+@Rowa
+ A { "square" } B { @Math { square } }
+ C { "ldots" } D { @Math { ldots } }
+ E { "cdots" } F { @Math { cdots } }
+@Rowa
+ A { "vdots" } B { @Math { vdots } }
+ C { "ddots" } D { @Math { ddots } }
+ E { "del" } F { @Math { del } }
+@Rowa
+ A { "grad" } B { @Math { grad } }
+ C { "..." } D { @Math { ... } }
+ E { ",...," } F { @Math { ,..., } }
+@Rowa
+ A { "'" } B { @Math { ' } }
+ C { "''" } D { @Math { '' } }
+ E { "'''" } F { @Math { ''' } }
+@Rowa
+ A { "''''" } B { @Math { '''' } }
+ C { "empty" } D { @Math { empty } }
+ E { "triangleup" } F { @Math { triangleup } }
+@Rowa
+ A { "triangledown" } B { @Math { triangledown } }
+ C { "half" } D { @Math { half } }
+ E { "third" } F { @Math { third } }
+ mb { 0i }
+}
+@End @SubSection
+
+@SubSection
+ @Title { Variable-building symbols }
+@Begin
+@LP
+Under this category are symbols that are mainly used to build
+mathematics.variablebuilding. @SubIndex { variable-building symbols }
+variablebuilding. @Index { variable-building symbols (mathematics) }
+variables. However, as usual in Lout, the objects they link
+together may in fact be arbitrary. First we have symbols that
+place a mark over or under an object:
+mathematics.dot. @SubIndex { @Code "dot" symbol }
+dot. @Index { @Code "dot" symbol (mathematics) }
+mathematics.dotdot. @SubIndex { @Code "dotdot" symbol }
+dotdot. @Index { @Code "dotdot" symbol (mathematics) }
+mathematics.hat. @SubIndex { @Code "hat" symbol }
+hat. @Index { @Code "hat" symbol (mathematics) }
+mathematics.tilde. @SubIndex { @Code "tilde" symbol }
+tilde. @Index { @Code "tilde" symbol (mathematics) }
+mathematics.vec. @SubIndex { @Code "vec" symbol }
+vec. @Index { @Code "vec" symbol (mathematics) }
+mathematics.dyad. @SubIndex { @Code "dyad" symbol }
+dyad. @Index { @Code "dyad" symbol (mathematics) }
+mathematics.overbar. @SubIndex { @Code "overbar" symbol }
+overbar. @Index { @Code "overbar" symbol (mathematics) }
+mathematics.underbar. @SubIndex { @Code "underbar" symbol }
+underbar. @Index { @Code "underbar" symbol (mathematics) }
+@ID @Tbl
+ mv { 0.5vx }
+ aformat { @Cell ml{0i} indent{right} w{@LCodeWidth} @Code A |
+ @Cell w {@ResultWidth} B |
+ @Cell indent {right} w {@CodeWidth} @Code C |
+ @Cell w {@ResultWidth} D |
+ @Cell indent {right} w {@CodeWidth} @Code E |
+ @Cell w {@ResultWidth} mr { 0i } F }
+{
+@Rowa
+ ma { 0i }
+ A { "x dot" } B { @Math { x dot } }
+ C { "x dotdot" } D { @Math { x dotdot } }
+ E { "x hat" } F { @Math { x hat } }
+@Rowa
+ A { "x tilde" } B { @Math { x tilde } }
+ C { "x vec" } D { @Math { x vec } }
+ E { "x dyad" } F { @Math { x dyad } }
+@Rowa
+ A { "{x + y} overbar" } B { @Math { {x + y} overbar } }
+ C { "{x + y} underbar" } D { @Math { {x + y} underbar } }
+ mb { 0i }
+}
+These marks are centred, with a small skew to allow for italic
+slant, except the last two which are extended to the width of
+the object.
+@PP
+The remaining variable-building symbols produce superscripts and
+subscripts:
+# These differ in appearance depending on the style,
+mathematics.sup. @SubIndex { @Code "sup" symbol }
+sup. @Index { @Code "sup" symbol (mathematics) }
+mathematics.sub. @SubIndex { @Code "sub" symbol }
+sub. @Index { @Code "sub" symbol (mathematics) }
+mathematics.tsub. @SubIndex { @Code "tsub" symbol }
+tsub. @Index { @Code "tsub" symbol (mathematics) }
+mathematics.supp. @SubIndex { @Code "supp" symbol }
+supp. @Index { @Code "supp" symbol (mathematics) }
+mathematics.on. @SubIndex { @Code "on" symbol }
+on. @Index { @Code "on" symbol (mathematics) }
+mathematics.ton. @SubIndex { @Code "ton" symbol }
+ton. @Index { @Code "ton" symbol (mathematics) }
+so the results are shown in both display and text style:
+@ID @Tbl
+ mv { 0.6vx }
+ # aformat { @Cell ml {0i} indent {right} @Code A | @Cell B | @Cell C | @Cell |
+ # @Cell indent {right} @Code D | @Cell E | @Cell F | @Cell |
+ # @Cell indent {right} @Code G | @Cell H | @Cell mr {0i} I }
+ aformat { @Cell ml {0i} indent {right} @Code A | @Cell B | @Cell |
+ @Cell indent {right} @Code D | @Cell E | @Cell |
+ @Cell indent {right} @Code G | @Cell mr {0i} H }
+{
+@Rowa
+ ma { 0i }
+ A { "x sup y" } B { @Math { x sup y } } C { @M { x sup y } }
+ D { "x sub y" } E { @Math { x sub y } } F { @M { x sub y } }
+ G { "W tsub y" } H { @Math { W tsub y } } I { @M { W tsub y } }
+@Rowa
+ A { "x supp y on z" } B { @Math {x supp y on z } } C { @M {x supp y on z } }
+ D { "W supp y ton z" } E { @Math {W supp y ton z} } F { @M {W supp y ton z} }
+ mb { 0i }
+}
+The @Code "supp" and @Code "on" (or {@Code "ton"}) symbols must be
+used together as shown; @Code "tsub" and @Code "ton" are exactly like
+@Code "sub" and @Code "on" except that the subscript is tucked in.
+@End @SubSection
+
+@SubSection
+ @Title { Large operator symbols }
+@Begin
+@LP
+Large operator symbols have @Code "from" and @Code "to"
+mathematics.large.operators. @SubIndex { large operators }
+large.operators. @Index { large operators (mathematics) }
+options which work as described for the @Code "sum" symbol
+in Section {@NumberOf mat_comm}. Here they all are, with
+their results in both display style and text style:
+@CD @OneRow @Tbl
+ mv { 0.7vx }
+ strut { 2.5f }
+ aformat { @Cell ml {0i} indent {right} @Code A | @Cell B | @Cell C | @Cell |
+ @Cell indent {right} @Code D | @Cell E | @Cell mr {0i} F }
+{
+@Rowa
+ ma { 0i }
+ A { "sum from { a } to { b } x" }
+ B { @Math { sum from { a } to { b } x } }
+ C { @M { sum from { a } to { b } x } }
+ D { "prod from { a } to { b } x" }
+ E { @Math { prod from { a } to { b } x } }
+ F { @M { prod from { a } to { b } x } }
+@Rowa
+ A { "coprod from { a } to { b } x" }
+ B { @Math { coprod from { a } to { b } x } }
+ C { @M { coprod from { a } to { b } x } }
+ D { "bcap from { a } to { b } x" }
+ E { @Math { bcap from { a } to { b } x } }
+ F { @M { bcap from { a } to { b } x } }
+@Rowa
+ A { "bcup from { a } to { b } x" }
+ B { @Math { bcup from { a } to { b } x } }
+ C { @M { bcup from { a } to { b } x } }
+ D { "bvee from { a } to { b } x" }
+ E { @Math { bvee from { a } to { b } x } }
+ F { @M { bvee from { a } to { b } x } }
+@Rowa
+ A { "bwedge from { a } to { b } x" }
+ B { @Math { bwedge from { a } to { b } x } }
+ C { @M { bwedge from { a } to { b } x } }
+ D { "bodot from { a } to { b } x" }
+ E { @Math { bodot from { a } to { b } x } }
+ F { @M { bodot from { a } to { b } x } }
+@Rowa
+ A { "botimes from { a } to { b } x" }
+ B { @Math { botimes from { a } to { b } x } }
+ C { @M { botimes from { a } to { b } x } }
+ D { "boplus from { a } to { b } x" }
+ E { @Math { boplus from { a } to { b } x } }
+ F { @M { boplus from { a } to { b } x } }
+@Rowa
+ A { "buplus from { a } to { b } x" }
+ B { @Math { buplus from { a } to { b } x } }
+ C { @M { buplus from { a } to { b } x } }
+ D { "int from { a } to { b } x" }
+ E { @Math { int from { a } to { b } x } }
+ F { @M { int from { a } to { b } x } }
+@Rowa
+ A { "oint from { a } to { b } x" }
+ B { @Math { oint from { a } to { b } x } }
+ C { @M { oint from { a } to { b } x } }
+ mb { 0i }
+}
+All these symbols also have a @Code "limits" option; when set to
+@Code "yes" it causes the limits to be shown above and below the
+symbol, when @Code "no" it causes them to be shown as superscripts and
+subscripts, and when omitted it defaults to @Code "yes" in display style
+and @Code "no" otherwise, except for integrals, where the default is
+uniformly @Code "no" as required by mathematical convention.
+@PP
+The @Code "largeop" symbol causes an arbitrary object to be treated
+mathematics.largeop. @SubIndex { @Code "largeop" symbol }
+largeop. @Index { @Code "largeop" symbol (mathematics) }
+options which work as described for the @Code "sum" symbol
+as a large operator:
+@ID {
+@Code @Verbatim { largeop symbol { diamond } from { a } to { b } x }
+|10ct
+@Math { largeop symbol { diamond } from { a } to { b } x }
+}
+In addition to {@Code "limits"}, {@Code "from"}, and {@Code "to"}
+options, @Code "largeop" has a @Code "symbol" option holding the
+object to be made into a large operator. In display style, this
+object is enlarged using the @Code "big" helper function.
+@End @SubSection
+
+@SubSection
+ @Title { Unary operator symbols }
+@Begin
+@LP
+This category mainly contains symbols that take one object on the right
+mathematics.unaryoperator. @SubIndex { unary operators }
+unaryoperator. @Index { unary operators (mathematics) }
+and transform it.
+@IL
+
+@LI {
+@Code "sqrt {x over y}"
+|7ct
+@Math { sqrt {x over y} }
+mathematics.sqrt. @SubIndex { @Code "sqrt" symbol }
+sqrt. @Index { @Code "sqrt" symbol (mathematics) }
+}
+
+@LI {
+@Code "3 root {x over y}"
+|7ct
+@Math { 3 root {x over y} }
+mathematics.root @SubIndex { @Code "root" symbol }
+root.mathematics @Index { @Code "root" symbol (mathematics) }
+}
+
+@LI {
+@Code @Verbatim { matrix atleft { ( } atright { ) } { x } }
+|7ct @Math { matrix atleft { ( } atright { ) } { x } }
+}
+
+@EL
+As usual, any object may appear to the left of {@Code "root"}.
+The @Code "matrix" symbol produces matrices, as explained in
+detail in Section {@NumberOf matrices}. Its following object
+must be enclosed in braces.
+@PP
+There are symbols which produce `matrices' with commonly needed
+@Code atleft and @Code atright options already set for you. Here are
+these symbols, on the left, with the equivalent @Code matrix symbol
+and, on the right, the result produced:
+@ID @Tbl
+ aformat { @Cell ml { 0i } @Code A | @Cell | @Cell @Code B |
+ @Cell | @Cell mr { 0i } C }
+{
+@Rowa
+ ma { 0i }
+ A { "pmatrix { M }" }
+ B { "matrix atleft { ( } atright { ) } { M }" }
+ C { @Math { pmatrix { M } }
+mathematics.pmatrix @SubIndex { @Code "pmatrix" symbol }
+pmatrix.mathematics @Index { @Code "pmatrix" symbol (mathematics) }
+}
+@Rowa
+ A { "bmatrix { M }" }
+ B { "matrix atleft { blbrack } atright { brbrack } { M }" }
+ C { @Math { bmatrix { M } }
+mathematics.bmatrix @SubIndex { @Code "bmatrix" symbol }
+bmatrix.mathematics @Index { @Code "bmatrix" symbol (mathematics) }
+}
+@Rowa
+ A { "brmatrix { M }" }
+ B { "matrix atleft { blbrace } atright { brbrace } { M }" }
+ C { @Math { brmatrix { M } }
+mathematics.brmatrix @SubIndex { @Code "brmatrix" symbol }
+brmatrix.mathematics @Index { @Code "brmatrix" symbol (mathematics) }
+}
+@Rowa
+ A { "fmatrix { M }" }
+ B { "matrix atleft { blfloor } atright { brfloor } { M }" }
+ C { @Math { fmatrix { M } }
+mathematics.fmatrix @SubIndex { @Code "fmatrix" symbol }
+fmatrix.mathematics @Index { @Code "fmatrix" symbol (mathematics) }
+}
+@Rowa
+ A { "cmatrix { M }" }
+ B { "matrix atleft { blceil } atright { brceil } { M }" }
+ C { @Math { cmatrix { M } }
+mathematics.cmatrix @SubIndex { @Code "cmatrix" symbol }
+cmatrix.mathematics @Index { @Code "cmatrix" symbol (mathematics) }
+}
+@Rowa
+ A { "amatrix { M }" }
+ B { "matrix atleft { blangle } atright { brangle } { M }" }
+ C { @Math { amatrix { M } }
+mathematics.amatrix @SubIndex { @Code "amatrix" symbol }
+amatrix.mathematics @Index { @Code "amatrix" symbol (mathematics) }
+}
+ mb { 0i }
+}
+These are very useful for getting large scaled delimiters around things
+that aren't necessarily matrices at all.
+@End @SubSection
+
+@SubSection
+ @Title { Binary operator symbols }
+@Begin
+@LP
+The symbols in this category take an object on the left and on
+mathematics.binary.operators. @SubIndex { binary operators }
+binary.operators. @Index { binary operators (mathematics) }
+the right. The first two produce built-up fractions:
+mathematics.over. @SubIndex { @Code "over" symbol }
+over. @Index { @Code "over" symbol (mathematics) }
+mathematics.frac @SubIndex { @Code "frac" symbol }
+frac.mathematics @Index { @Code "frac" symbol (mathematics) }
+@ID @Tbl
+ aformat { @Cell ml { 0i } indent { right } @Code A | @Cell B | @Cell |
+ @Cell indent { right } @Code C | @Cell mr { 0i } D }
+{
+@Rowa
+ ma { 0i }
+ A { "x over y" } B { @Math { x over y } }
+ C { "x frac y" } D { @Math { x frac y } }
+ mb { 0i }
+}
+The remaining binary operator symbols print the objects to the
+left and right separated by the operator with a medium-width
+space on each side. Most have precedence 80, but a few (those
+representing multiplication and division operations) have higher
+precedence in accordance with mathematical convention. Here is
+the full list of these operators:
+@ID @Tbl
+ mv { 0.5vx }
+ aformat { @Cell ml{0i} indent{right} w{@LCodeWidth} @Code A |
+ @Cell w {@ResultWidth} B |
+ @Cell indent {right} w {@CodeWidth} @Code C |
+ @Cell w {@ResultWidth} D |
+ @Cell indent {right} w {@CodeWidth} @Code E |
+ @Cell w {@ResultWidth} mr { 0i } F }
+{
+@Rowa
+ ma { 0i }
+ A { "x + y" } B { @Math { x + y } }
+ C { "x - y" } D { @Math { x - y } }
+ E { "x +- y" } F { @Math { x +- y } }
+@Rowa
+ A { "x -+ y" } B { @Math { x -+ y } }
+ C { "x setminus y" } D { @Math { x setminus y } }
+ E { "x cdot y" } F { @Math { x cdot y } }
+@Rowa
+ A { "x times y" } B { @Math { x times y } }
+ C { "x * y" } D { @Math { x * y } }
+ E { "x circ y" } F { @Math { x circ y } }
+@Rowa
+ A { "x div y" } B { @Math { x div y } }
+ C { "x cap y" } D { @Math { x cap y } }
+ E { "x cup y" } F { @Math { x cup y } }
+@Rowa
+ A { "x uplus y" } B { @Math { x uplus y } }
+ C { "x sqcap y" } D { @Math { x sqcap y } }
+ E { "x sqcup y" } F { @Math { x sqcup y } }
+@Rowa
+ A { "x triangleleft y" } B { @Math { x triangleleft y } }
+ C { "x triangleright y" } D { @Math { x triangleright y } }
+ E { "x wr y" } F { @Math { x wr y } }
+@Rowa
+ A { "x bigcirc y" } B { @Math { x bigcirc y } }
+ C { "x bigtriangleup y" } D { @Math { x bigtriangleup y } }
+ E { { 0.85 1.0 } @Scale "x bigtriangledown y" }
+ F { @Math { x bigtriangledown y } }
+@Rowa
+ A { "x vee y" } B { @Math { x vee y } }
+ C { "x wedge y" } D { @Math { x wedge y } }
+ E { "x oplus y" } F { @Math { x oplus y } }
+@Rowa
+ A { "x ominus y" } B { @Math { x ominus y } }
+ C { "x otimes y" } D { @Math { x otimes y } }
+ E { "x oslash y" } F { @Math { x oslash y } }
+@Rowa
+ A { "x odot y" } B { @Math { x odot y } }
+ C { "x dagger y" } D { @Math { x dagger y } }
+ E { "x daggerdbl y" } F { @Math { x daggerdbl y } }
+@Rowa
+ A { "x amalg y" } B { @Math { x amalg y } }
+ mb { 0i }
+}
+The @Code "bin" symbol causes an arbitrary object to be treated
+mathematics.bin @SubIndex { @Code "bin" symbol }
+bin.mathematics @Index { @Code "bin" symbol (mathematics) }
+as a binary operator:
+@ID {
+@Code @Verbatim { x bin op { diamond } y }
+|7ct
+@Math { x bin op { diamond } y }
+}
+The @Code "op" option following @Code "bin" contains the object
+to be treated as a binary operator; its two parameters precede
+and follow @Code "bin" as usual.
+@End @SubSection
+
+@SubSection
+ @Title { Relation symbols }
+@Begin
+@LP
+These symbols represent relations. They take an object on
+mathematics.relation. @SubIndex { relation symbols }
+relation.symbols. @Index { relation symbols (mathematics) }
+the left and on the right, and print them separated by the
+relation symbol, with a slightly wider space on each side than
+is used for binary operators. They have lower precedence than
+binary operators, in accordance with mathematical convention. Here
+is the full list of these relations:
+@ID @Tbl
+ mv { 0.5vx }
+ aformat { @Cell ml{0i} indent{right} w{@LCodeWidth} @Code A |
+ @Cell w {@ResultWidth} B |
+ @Cell indent {right} w {@CodeWidth} @Code C |
+ @Cell w {@ResultWidth} D |
+ @Cell indent {right} w {@CodeWidth} @Code E |
+ @Cell w {@ResultWidth} mr { 0i } F }
+{
+@Rowa
+ ma { 0i }
+ A { "x < y" } B { @Math { x < y } }
+ C { "x > y" } D { @Math { x > y } }
+ E { "x = y" } F { @Math { x = y } }
+@Rowa
+ A { "x <= y" } B { @Math { x <= y } }
+ C { "x prec y" } D { @Math { x prec y } }
+ E { "x preceq y" } F { @Math { x preceq y } }
+@Rowa
+ A { "x << y" } B { @Math { x << y } }
+ C { "x subset y" } D { @Math { x subset y } }
+ E { "x subseteq y" } F { @Math { x subseteq y } }
+@Rowa
+ A { "x sqsubseteq y" } B { @Math { x sqsubseteq y } }
+ C { "x in y" } D { @Math { x in y } }
+ E { "x vdash y" } F { @Math { x vdash y } }
+@Rowa
+ A { "x smile y" } B { @Math { x smile y } }
+ C { "x frown y" } D { @Math { x frown y } }
+ E { "x >= y" } F { @Math { x >= y } }
+@Rowa
+ A { "x succ y" } B { @Math { x succ y } }
+ C { "x succeq y" } D { @Math { x succeq y } }
+ E { "x >> y" } F { @Math { x >> y } }
+@Rowa
+ A { "x supset y" } B { @Math { x supset y } }
+ C { "x supseteq y" } D { @Math { x supseteq y } }
+ E { "x sqsupseteq y" } F { @Math { x sqsupseteq y } }
+@Rowa
+ A { "x ni y" } B { @Math { x ni y } }
+ C { "x dashv y" } D { @Math { x dashv y } }
+ E { "x mid y" } F { @Math { x mid y } }
+@Rowa
+ A { "x parallel y" } B { @Math { x parallel y } }
+ C { "x == y" } D { @Math { x == y } }
+ E { "x ~ y" } F { @Math { x ~ y } }
+@Rowa
+ A { "x -~ y" } B { @Math { x -~ y } }
+ C { "x asymp y" } D { @Math { x asymp y } }
+ E { "x ~~ y" } F { @Math { x ~~ y } }
+@Rowa
+ A { "x =~ y" } B { @Math { x =~ y } }
+ C { "x bowtie y" } D { @Math { x bowtie y } }
+ E { "x propto y" } F { @Math { x propto y } }
+@Rowa
+ A { "x models y" } B { @Math { x models y } }
+ C { "x trieq y" } D { @Math { x trieq y } }
+ E { "x doteq y" } F { @Math { x doteq y } }
+@Rowa
+ A { "x perp y" } B { @Math { x perp y } }
+ C { "x notsub y" } D { @Math { x notsub y } }
+ E { "x notin y" } F { @Math { x notin y } }
+@Rowa
+ A { "x != y" } B { @Math { x != y } }
+ C { "x <-> y" } D { @Math { x <-> y } }
+ E { "x <-- y" } F { @Math { x <-- y } }
+@Rowa
+ A { "x --> y" } B { @Math { x --> y } }
+ C { "x up y" } D { @Math { x up y } }
+ E { "x down y" } F { @Math { x down y } }
+@Rowa
+ A { "x <=> y" } B { @Math { x <=> y } }
+ C { "x <== y" } D { @Math { x <== y } }
+ E { "x ==> y" } F { @Math { x ==> y } }
+@Rowa
+ A { "x dblup y" } B { @Math { x dblup y } }
+ C { "x dbldown y" } D { @Math { x dbldown y } }
+ E { "x : y" } F { @Math { x : y } }
+@Rowa
+ A { "x :: y" } B { @Math { x :: y } }
+ C { "x := y" } D { @Math { x := y } }
+ mb { 0i }
+}
+All of these symbols have a @Code "neg" option which, when set
+to {@Code "yes"}, causes a slash to overstrike the relation
+symbol:
+@ID {
+@Code @Verbatim { x ==> neg { yes } y }
+|7ct
+@Math { x ==> neg { yes } y }
+}
+The slash is horizontally centred over the relation symbol,
+which is not always best.
+@PP
+The @Code "rel" symbol causes an arbitrary object to be treated
+mathematics.rel @SubIndex { @Code "rel" symbol }
+rel.mathematics @Index { @Code "rel" symbol (mathematics) }
+as a relation:
+@ID {
+@Code @Verbatim { x rel op { diamond } y }
+|7ct
+@Math { x rel op { diamond } y }
+}
+The @Code "op" option following @Code "rel" contains the object
+to be treated as a relation; @Code "rel" also has the @Code "neg"
+option, plus the left and right parameters as usual.
+@End @SubSection
+
+@SubSection
+ @Title { Punctuation symbols }
+@Begin
+@LP
+These symbols represent punctuation. They take an object on
+mathematics.punctuation. @SubIndex { punctuation symbols }
+punctuation.mathematics @Index { punctuation symbols (mathematics) }
+the left and on the right, and print them separated by the
+punctuation symbol, with no space to the left and a thin
+space to the right. Here is the full list of these symbols:
+@ID @Tbl
+ aformat { @Cell ml{0i} indent{right} w{@LCodeWidth} @Code A |
+ @Cell w {@ResultWidth} B |
+ @Cell indent {right} w {@CodeWidth} @Code C |
+ @Cell w {@ResultWidth} D |
+ @Cell indent {right} w {@CodeWidth} @Code E |
+ @Cell w {@ResultWidth} mr { 0i } F }
+{
+@Rowa
+ ma { 0i }
+ A { "x ; y" } B { @Math { x ; y } }
+ C { "x , y" } D { @Math { x , y } }
+ E { "x col y" } F { @Math { x col y } }
+ mb { 0i }
+}
+The @Code "punct" symbol causes an arbitrary object to be treated
+mathematics.punct @SubIndex { @Code "punct" symbol }
+punct.mathematics @Index { @Code "punct" symbol (mathematics) }
+as punctuation:
+@ID {
+@Code @Verbatim { x punct symbol { diamond } y }
+|7ct
+@Math { x punct symbol { diamond } y }
+}
+The @Code "symbol" option following @Code "punct" contains the object
+to be treated as punctuation; its two parameters precede and follow
+@Code "punct" as usual.
+@End @SubSection
+
+@EndSubSections
+@End @Section
diff --git a/doc/doc/user/mybook b/doc/doc/user/mybook
new file mode 100644
index 0000000..e17cb7a
--- /dev/null
+++ b/doc/doc/user/mybook
@@ -0,0 +1,540 @@
+###############################################################################
+# #
+# Lout setup file for books #
+# #
+# Jeffrey H. Kingston #
+# #
+###############################################################################
+
+
+###############################################################################
+# #
+# @SysInclude commands for standard packages. #
+# #
+###############################################################################
+
+ @SysInclude { langdefs } # language definitions
+ @SysInclude { bsf } # BasicSetup package
+ @SysInclude { dsf } # DocumentSetup package
+ @SysInclude { bookf } # BookSetup extension
+
+
+###############################################################################
+# #
+# @Include command for reading personal definitions from current directory. #
+# #
+###############################################################################
+
+ @Include { mydefs }
+
+###############################################################################
+# #
+# The @BasicSetup @Use clause - basics, lists, paragraphs, displays. #
+# #
+# To change the default value of any option, delete the # at the start of #
+# its line and change the value between braces. #
+# #
+###############################################################################
+
+@Use { @BasicSetup
+ # @InitialFont { Times Base 12p } # initial font
+ # @InitialBreak {{adjust 1.2fx hyphen} @OrIfPlain {ragged 1fx nohyphen}}
+ # @InitialOutdent { 2f @OrIfPlain 4s } # initial outdent
+ # @InitialSpace { lout } # initial space style
+ # @InitialLanguage { English } # initial language
+ # @InitialColour { black } # initial colour
+ # @InitialBackgroundColour { white } # initial background colour
+ # @OptimizePages { No } # optimize page breaks?
+ # @HeadingFont { Bold } # font for @Heading
+ # @FixedWidthFont { Courier Base -1p } # font for @F
+ # @ParaGap { 1.3vx @OrIfPlain 1f } # gap between paragraphs
+ # @ParaIndent { 2.00f @OrIfPlain 5s } # first-line indent for @PP
+ # @DisplayGap { 1.00v @OrIfPlain 1f } # gap above, below displays
+ # @DisplayIndent { 2.00f @OrIfPlain 5s } # @IndentedDisplay indent
+ # @DefaultIndent { 0.5rt } # @Display indent
+ # @DisplayNumStyle { (num) } # style of display numbers
+ # @WideIndent { 4.00f @OrIfPlain 10s } # @WideTaggedList indent
+ # @VeryWideIndent { 8.00f @OrIfPlain 20s } # @VeryWideTaggedList indent
+ # @ListOuterGap { 1.00v @OrIfPlain 1f } # gap before, after lists
+ # @ListGap { 1.00v @OrIfPlain 1f } # gap between list items
+ # @ListIndent { 0s } # indent of list items
+ # @ListRightIndent { 0s } # right indent of list items
+ # @ListLabelWidth { 2.00f @OrIfPlain 5s } # width allowed for list tags
+ # @ListLabelRight { No } # right-adjust list labels
+ # @ListLabelRightGap { 2s } # gap when right-adjusting
+ # @ListFont { } # font of list items
+ # @ListBreak { } # break style of list items
+ # @NumberSeparator { . } # separates nums like 2.3.7
+ # @CrossLinkFormat { @Body } # format of cross links
+ # @ExternalLinkFormat { @Body } # format of external links
+}
+
+
+###############################################################################
+# #
+# The @DocumentSetup @Use clause - page layout plus figures, tables, etc. #
+# #
+# To change the default value of any option, delete the # at the start of #
+# its line and change the value between braces. #
+# #
+###############################################################################
+
+@Use { @DocumentSetup
+ # @PageType { A4 @OrIfPlain Other} # page type (width, height)
+ # @PageWidth { 80s } # page width if type Other
+ # @PageHeight { 66f } # page height if type Other
+ # @PageOrientation { Portrait } # Portrait, Landscape, etc.
+ # @PageBackground { } # background of each page
+ # @TopMargin { 2.5c @OrIfPlain 6f } # top margin of all pages
+ # @FootMargin { 2.5c @OrIfPlain 6f } # bottom margin of all pages
+ # @OddLeftMargin { 2.5c @OrIfPlain 10s } # left margin of odd pages
+ # @OddRightMargin { 2.5c @OrIfPlain 10s } # right margin of odd pages
+ # @EvenLeftMargin { 2.5c @OrIfPlain 10s } # left margin of even pages
+ # @EvenRightMargin { 2.5c @OrIfPlain 10s } # right margin of even pages
+ # @OddLeftBodyMargin { 0c } # extra margin for page body
+ # @OddRightBodyMargin { 0c } # extra margin for page body
+ # @EvenLeftBodyMargin { 0c } # extra margin for page body
+ # @EvenRightBodyMargin{ 0c } # extra margin for page body
+ # @PageBoxType { None } # None Box CurveBox ShadowBox
+ # @PageBoxMargin { 1.00c } # page box margin
+ # @PageBoxLineWidth { } # page box line thickness
+ # @PageBoxPaint { none } # page box paint
+ # @PageBoxShadow { 0.60c } # shadow margin if ShadowBox
+ # @PageEnclose { @Body } # enclose every page in this
+ # @ColumnNumber { 1 } # number of columns (1 to 10)
+ # @ColumnGap { 1.00c @OrIfPlain 6s } # column gap
+
+ # @FigureLocation { PageTop } # default figure location
+ # @FigureFormat { @CC @Body } # default figure format
+ # @FigureWord { figure } # "Figure" word else anything
+ # @FigureNumbers { Arabic } # method of numbering figures
+ # @FigureCaptionPos { Below } # Above or Below
+ # @FigureCaptionFont { -2p } # figure caption font
+ # @FigureCaptionBreak { adjust hyphen 1.2fx } # figure caption break
+ # @FigureCaptionFormat{ {@B { word @NumSep number. &2s }} @Insert caption }
+ # @MakeFigureContents { No } # list of figures at start
+
+ # @TableLocation { PageTop } # default table location
+ # @TableFormat { @CC @Body } # default table format
+ # @TableWord { table } # "Table" word else anything
+ # @TableNumbers { Arabic } # method of numbering tables
+ # @TableCaptionPos { Below } # Above or Below
+ # @TableCaptionFont { -2p } # table caption font
+ # @TableCaptionBreak { adjust hyphen 1.2fx } # table caption break
+ # @TableCaptionFormat { {@B { word @NumSep number. &2s }} @Insert caption }
+ # @MakeTableContents { No } # list of tables at start
+
+ # @FloaterLocation { PageTop } # default floater location
+ # @FloaterFormat { @CC @Body } # default floater format
+ # @FloaterWord { floater } # "Floater" word else anything
+ # @FloaterNumbers { Arabic } # method of numbering floaters
+ # @FloaterCaptionPos { Below } # Above or Below
+ # @FloaterCaptionFont { -2p } # floater caption font
+ # @FloaterCaptionBreak{ adjust hyphen 1.2fx } # floater caption break
+ # @FloaterCaptionFormat{ {@B { word @NumSep number. &2s }} @Insert caption }
+ # @MakeFloaterContents{ No } # list of floaters at start
+
+ # @MakeContents { No } # make contents? Yes or No
+ @MakeContents { Yes } # make contents? Yes or No
+ # @ContentsGap { 0.20v @OrIfPlain 0f } # extra gap above minor entry
+ # @ContentsGapAbove { 0.80v @OrIfPlain 1f } # extra gap above major entry
+ # @ContentsGapBelow { 0.00v @OrIfPlain 0f } # extra gap below major entry
+ # @ContentsFont { Bold } # font for major entry
+ # @ContentsPartGapAbove { 1.00v @OrIfPlain 1f } # extra gap above `part' entry
+ # @ContentsPartGapBelow { 0.00v @OrIfPlain 0f } # extra gap below `part' entry
+ # @ContentsFormat { number @DotSep title } # contents entry format
+ # @ContentsLeader { .. } # leader symbol in contents
+ # @ContentsLeaderGap { 4s @OrIfPlain 2s } # gap between leaders
+ # @ContentsRightWidth { 3f @OrIfPlain 6s } # page numbers column width
+
+ # @MakeReferences { Yes } # make references? Yes or No
+ # @RefCiteStyle { [cite] } # citation style
+ # @RefCiteLabels { @RefNum } # citation items
+ # @RefNumbers { Arabic } # reference numbers
+ # @RefListFormat { Labels } # NoLabels, Labels, etc.
+ # @RefListLabels { [@RefNum] } # ref list label format
+ # @RefListTitle { references } # title of reference list
+ # @ChapRefListTitle { references } # title of chapter ref list
+ # @RefListIndent { 0s } # indent to left of labels
+ # @RefListRightIndent { 0s } # indent to right of items
+ # @RefListGap { @ListGap } # gap between ref list items
+ # @RefListFont { } # font used in reference list
+ # @RefListBreak { } # break style of ref list
+ # @RefListLabelWidth { @ListLabelWidth } # Labels column width
+ # @RefListSortKey { @Tag } # sorting key
+
+ # @MakeGlossary { No } # make glossary? Yes or No
+ # @GlossaryText { @Null } # glossary initial text
+ # @GlossaryFont { } # glossary entries font
+ # @GlossaryBreak { } # glossary entries break
+ # @GlossaryFormat { +3p @Font @S @Name # glossary entries format
+ # @Right @I { @Word&&page @PageNum }
+ # @DP @RawIndentedDisplay @Body }
+ # @GlossaryGap { @DisplayGap } # gap between glossary entries
+ # @GlossaryColumnNumber{ 2 } # glossary columns (1 to 10)
+ # @GlossaryColumnGap { 1.00c @OrIfPlain 6s } # glossary column gap
+ # @InGlossaryFont { smallcaps } # font for @InGlossary
+ # @InGlossaryFormat { @Body } # format for @InGlossary
+
+ # @MakeIndex { No } # make index? Yes or No
+ # @MakeIndex { No } # make index? Yes or No
+ @MakeIndex { Yes } # make index? Yes or No
+ # @IndexText { @Null } # index initial text
+ # @IndexFont { } # index entries font
+ # @IndexBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break
+ # @IndexFormat { @Body } # @Index format
+ # @SubIndexFormat { {1f @Wide}@Body } # @SubIndex format
+ # @SubSubIndexFormat { {2f @Wide}@Body } # @SubSubIndex format
+ # @IndexTypeOrdinary { @PageNum } # Ordinary pagenum format
+ # @IndexTypeMain { @B @PageNum } # Main pagenum format
+ # @IndexTypeSpecial { @I @PageNum } # Special pagenum format
+ # @IndexRangeFormat { @From--@To } # index page range format
+ # @IndexColumnNumber { 2 } # index columns (1 to 10)
+ # @IndexColumnGap { 1.00c @OrIfPlain 6s } # index column gap
+ # @IndexCtd { Yes } # include (ctd.) lines
+ # @IndexCtdWord { continued } # "ctd." in current lang.
+ # @IndexCtdFormat { @Body @I (@CtdWord) } # format of ctd.
+ # @IndexSpacerAbove { 2v } # space above index spacer
+ # @IndexSpacerBelow { 1v } # space below index spacer
+ # @IndexSpacerFont { +3p } # font of index spacer
+ # @IndexSpacerFormat { @Body } # format of index spacer
+
+ # @MakeIndexA { No } # make index A? Yes or No
+ # @IndexAText { @Null } # index A initial text
+ # @IndexAFont { } # index A entries font
+ # @IndexABreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break
+ # @IndexAFormat { @Body } # @IndexA format
+ # @SubIndexAFormat { {1f @Wide}@Body } # @SubIndexA format
+ # @SubSubIndexAFormat { {2f @Wide}@Body } # @SubSubIndexA format
+ # @IndexATypeOrdinary { @PageNum } # Ordinary pagenum format
+ # @IndexATypeMain { @B @PageNum } # Main pagenum format
+ # @IndexATypeSpecial { @I @PageNum } # Special pagenum format
+ # @IndexARangeFormat { @From--@To } # index page range format
+ # @IndexAColumnNumber { 2 } # index A columns (1 to 10)
+ # @IndexAColumnGap { 1.00c @OrIfPlain 6s } # index A column gap
+ # @IndexACtd { Yes } # include (ctd.) lines
+ # @IndexACtdWord { continued } # "ctd." in current lang.
+ # @IndexACtdFormat { @Body @I (@CtdWord) } # format of ctd.
+ # @IndexASpacerAbove { 2v } # space above index A spacer
+ # @IndexASpacerBelow { 1v } # space below index A spacer
+ # @IndexASpacerFont { +3p } # font of index A spacer
+ # @IndexASpacerFormat { @Body } # format of index A spacer
+
+ # @MakeIndexB { No } # make index B? Yes or No
+ # @IndexBText { @Null } # index B initial text
+ # @IndexBFont { } # index B entries font
+ # @IndexBBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break
+ # @IndexBFormat { @Body } # @IndexB format
+ # @SubIndexBFormat { {1f @Wide}@Body } # @SubIndexB format
+ # @SubSubIndexBFormat { {2f @Wide}@Body } # @SubSubIndexB format
+ # @IndexBTypeOrdinary { @PageNum } # Ordinary pagenum format
+ # @IndexBTypeMain { @B @PageNum } # Main pagenum format
+ # @IndexBTypeSpecial { @I @PageNum } # Special pagenum format
+ # @IndexBRangeFormat { @From--@To } # index page range format
+ # @IndexBColumnNumber { 2 } # index B columns (1 to 10)
+ # @IndexBColumnGap { 1.00c @OrIfPlain 6s } # index B column gap
+ # @IndexBCtd { Yes } # include (ctd.) lines
+ # @IndexBCtdWord { continued } # "ctd." in current lang.
+ # @IndexBCtdFormat { @Body @I (@CtdWord) } # format of ctd.
+ # @IndexBSpacerAbove { 2v } # space above index B spacer
+ # @IndexBSpacerBelow { 1v } # space below index B spacer
+ # @IndexBSpacerFont { +3p } # font of index B spacer
+ # @IndexBSpacerFormat { @Body } # format of index B spacer
+
+ # @MakeColophon { No } # make colophon? Yes or No
+ # @ColophonFont { } # font for colophon
+ # @ColophonBreak { } # break style for colophon
+ # @ColophonColumnNumber { 1 } # colophon columns (1 to 10)
+ # @ColophonColumnGap { 1.00c @OrIfPlain 6s } # colophon column gap
+
+ # @TopGap { 0.75c @OrIfPlain 2f } # gap between figures
+ # @MidGap { 0.75c @OrIfPlain 2f } # gap above/below body text
+
+ # @FootNoteNumbers { Arabic } # footnote numbers
+ # @FootNoteThrough { No } # numbered through chapter?
+ # @FootNoteLocation { ColFoot } # where the footnote appears
+ # @FootNoteFont { 0.80f } # font for footnotes
+ # @FootNoteBreak { 1.2fx @OrIfPlain 1fx } # break for footnotes
+ # @FootNoteFormat { { number &0.05f } @Insert body } # footnote format
+ # @FootLen { 2.00c @OrIfPlain 10s } # length of footnote line
+ # @FootAboveGap { @DisplayGap } # gap above footnote line
+ # @FootGap { 0.20c @OrIfPlain 1fx } # gap between footnotes
+ # @MarginNoteFont { 0.80f } # font of margin notes
+ # @MarginNoteBreak { ragged 1.10fx } # break style of margin notes
+ # @MarginNoteHGap { 0.5c } # horizontal gap to notes
+ # @MarginNoteVGap { @DisplayGap } # min vertical gap between
+ # @MarginNoteWidth { 1.50c } # width of margin notes
+ # @EndNoteNumbers { Arabic } # endnote numbers
+ # @EndNoteFont { 0.80f } # font of endnotes
+ # @EndNoteBreak { 1.2fx @OrIfPlain 1fx } # break for endnotes
+ # @EndNoteFormat { { number &0.05f } @Insert body } # endnote format
+ # @EndNoteGap { 0.20c @OrIfPlain 1f } # gap between endnotes
+
+ # @TheoremWord { theorem } # "Theorem" word, etc.
+ # @TheoremTitleFormat { (title) } # only if title present
+ # @TheoremFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @DefinitionWord { definition } # "Definition" word, etc.
+ # @DefinitionTitleFormat { (title) } # only if title present
+ # @DefinitionFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @ClaimWord { claim } # "Claim" word, etc.
+ # @ClaimTitleFormat { (title) } # only if title present
+ # @ClaimFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @PropositionWord { proposition } # "Proposition" word, etc.
+ # @PropositionTitleFormat { (title) } # only if title present
+ # @PropositionFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @LemmaWord { lemma } # "Lemma" word, etc.
+ # @LemmaTitleFormat { (title) } # only if title present
+ # @LemmaFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @CorollaryWord { corollary } # "Corollary" word, etc.
+ # @CorollaryTitleFormat { (title) } # only if title present
+ # @CorollaryFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @ExampleWord { example } # "Example" word, etc.
+ # @ExampleTitleFormat { (title) } # only if title present
+ # @ExampleFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @ProofWord { proof } # "Proof" word, etc.
+
+ # @PageHeaders { Simple } # None Simple Titles NoTitles
+ @PageHeaders { Titles } # None Simple Titles NoTitles
+ # @PageNumbers { Arabic } # page numbers
+ # @FirstPageNumber { 1 } # number of first page
+ # @IntroPageNumbers { Roman } # intro page numbers
+ # @IntroFirstPageNumber{ 1 } # number of first intro page
+ # @StructPageNums { No } # make structured page numbers
+ # @PageNumberFormat { number } # format of all page numbers
+
+ # @OddTop { @Centre{- @PageNum -} } # Simple page headers
+ # @OddFoot { @Null }
+ # @EvenTop { @Centre{- @PageNum -} }
+ # @EvenFoot { @Null }
+ # @StartOddTop { @Null }
+ # @StartOddFoot { @Null }
+ # @StartEvenTop { @Null }
+ # @StartEvenFoot { @Null }
+ # @IntroOddTop { @Null }
+ # @IntroOddFoot { @Centre @PageNum }
+ # @IntroEvenTop { @Null }
+ # @IntroEvenFoot { @Centre @PageNum }
+ # @IntroStartOddTop { @Null }
+ # @IntroStartOddFoot { @Null }
+ # @IntroStartEvenTop { @Null }
+ # @IntroStartEvenFoot { @Null }
+
+ # Titles, NoTitles headers
+ # @RunningOddTop { @I {@MinorNum @DotSep @MinorTitle} @Right @B @PageNum }
+ # @RunningOddFoot { @Null }
+ # @RunningEvenTop { @B @PageNum @Right @I {@MajorNum @DotSep @MajorTitle} }
+ # @RunningEvenFoot { @Null }
+ # @RunningStartOddTop { @Null }
+ # @RunningStartOddFoot { @Centre { Bold 0.8f } @Font @PageNum }
+ # @RunningStartEvenTop { @Null }
+ # @RunningStartEvenFoot { @Centre { Bold 0.8f } @Font @PageNum }
+ # @RunningIntroOddTop { @Null }
+ # @RunningIntroOddFoot { @Right @PageNum }
+ # @RunningIntroEvenTop { @Null }
+ # @RunningIntroEvenFoot { @PageNum }
+ # @RunningIntroStartOddTop { @Null }
+ # @RunningIntroStartOddFoot { @Null }
+ # @RunningIntroStartEvenTop { @Null }
+ # @RunningIntroStartEvenFoot { @Null }
+}
+
+
+###############################################################################
+# #
+# The @BookSetup @Use clause - options specific to books. #
+# #
+###############################################################################
+
+@Use { @BookSetup
+ # @TitlePageFont { Helvetica Base} # title page font (not size)
+ # @SeparateIntroNumbering { Yes } # separate intro page numbers
+ # @PrefaceAfterContents { No } # Yes or No
+ # @ChapterStartPages { Any } # Any, Odd, Even, SamePage
+ # @ReferencesBeforeAppendices { No } # references before appendices
+ # @PrefaceWord { preface } # word for "Preface"
+ # @ContentsWord { contents } # word for "Contents"
+ # @FigureListWord { figurelist } # word for "List of Figures"
+ # @TableListWord { tablelist } # word for "List of Tables"
+ # @FloaterListWord { floaterlist } # word for "List of Floaters"
+ # @IntroductionWord { introduction } # word for "Introduction"
+ # @AbbreviationsWord { abbreviations } # word for "Abbreviations"
+ # @ChapterWord { chapter } # word for "Chapter"
+ # @AppendixWord { appendix } # word for "Appendix"
+ # @GlossaryWord { glossary } # word for "Glossary"
+ # @IndexWord { index } # word for "Index"
+ # @IndexAWord { index } # word for "Index" (A)
+ # @IndexBWord { index } # word for "Index" (B)
+ # @ColophonWord { colophon } # word for "Colophon"
+ # @SubPrefaceNumbers { None } # kind of sub-preface numbers
+ # @FirstSubPrefaceNumber { 1 } # first sub-preface number (Arabic)
+ # @SubIntroductionNumbers { None } # kind of sub-introduction numbers
+ # @FirstSubIntroductionNumber { 1 } # first sub-introduction number
+ # @ChapterNumbers { Arabic } # kind of chapter numbers
+ # @FirstChapterNumber { 1 } # first chapter number (Arabic)
+ # @SectionNumbers { Arabic } # kind of section numbers
+ # @FirstSectionNumber { 1 } # first section number (Arabic)
+ # @SubSectionNumbers { Arabic } # kind of subsection numbers
+ # @FirstSubSectionNumber { 1 } # first subsect number (Arabic)
+ # @SubSubSectionNumbers { Arabic } # kind of sub-subs. numbers
+ # @FirstSubSubSectionNumber { 1 } # first sub-sub number (Arabic)
+ # @AppendixNumbers { UCAlpha } # kind of appendix numbers
+ # @FirstAppendixNumber { 1 } # first appendix num (Arabic)
+ # @SubAppendixNumbers { Arabic } # kind of subappendix numbers
+ # @FirstSubAppendixNumber { 1 } # first sub-app num (Arabic)
+ # @SubSubAppendixNumbers { Arabic } # kind of sub-subapp. numbers
+ # @FirstSubSubAppendixNumber { 1 } # first sub-sub num (Arabic)
+ # @PartHeadingFont { Helvetica Base 2.50f } # part head font
+ # @PartHeadingBreak { clines 1.2fx nohyphen } # part head break
+ # @PartHeadingFormat { @CD number @DP @CD title } # part head format
+ # @ChapterHeadingFont { Bold 2.00f } # chapter head font
+ # @ChapterHeadingBreak { ragged 1.2fx nohyphen } # chapter head break
+ # @ChapterHeadingFormat { number @DotSep title } # format of chap. head
+ # @SubPrefaceHeadingFont { Bold } # sub-preface head font
+ # @SubPrefaceHeadingBreak { ragged 1.2fx nohyphen } # sub-preface head break
+ # @SubPrefaceHeadingFormat { number @DotSep title } # format of s.-p. head
+ # @SubIntroductionHeadingFont { Bold } # sub-intro head font
+ # @SubIntroductionHeadingBreak { ragged 1.2fx nohyphen} # sub-intro head break
+ # @SubIntroductionHeadingFormat { number @DotSep title} # format of sub-intro. hd
+ # @SectionHeadingFont { Bold } # section head font
+ # @SectionHeadingBreak { ragged 1.2fx nohyphen } # section head break
+ # @SectionHeadingFormat { number @DotSep title } # section head fmt
+ # @SubSectionHeadingFont { Bold } # subs. head font
+ # @SubSectionHeadingBreak { ragged 1.2fx nohyphen } # subs. head break
+ # @SubSectionHeadingFormat { number @DotSep title } # subs. head fmt
+ # @SubSubSectionHeadingFont { Slope } # sub-subs. head font
+ # @SubSubSectionHeadingBreak { ragged 1.2fx nohyphen } # sub-subs. head break
+ # @SubSubSectionHeadingFormat { number @DotSep title } # sub-subs. head fmt
+ # @AppendixHeadingFont { Bold 2.00f } # appendix head font
+ # @AppendixHeadingBreak { ragged 1.2fx nohyphen } # appendix head break
+ # @AppendixHeadingFormat { number @DotSep title } # appendix head fmt
+ # @SubAppendixHeadingFont { Bold } # subapp. head font
+ # @SubAppendixHeadingBreak { ragged 1.2fx nohyphen } # subapp. head break
+ # @SubAppendixHeadingFormat { number @DotSep title } # subapp. head fmt
+ # @SubSubAppendixHeadingFont { Slope } # sub-suba. head font
+ # @SubSubAppendixHeadingBreak { ragged 1.2fx nohyphen } # sub-suba. head break
+ # @SubSubAppendixHeadingFormat{ number @DotSep title } # sub-suba. head fmt
+ # @AbovePartGap { 4.00f } # gap above part title
+ # @AboveChapterGap { 3.00f } # above major titles
+ # @SubPrefaceGap { 2.0v @OrIfPlain 3f } # between sub-prefaces
+ # @SubIntroductionGap { 2.0v @OrIfPlain 3f } # between sub-intros
+ # @SectionGap { 2.0v @OrIfPlain 3f } # between sections
+ # @SubSectionGap { 1.5v @OrIfPlain 2f } # between subsects
+ # @SubSubSectionGap { 1.5v @OrIfPlain 2f } # between sub-subs.
+ # @SubAppendixGap { 2.0v @OrIfPlain 3f } # between subappendices
+ # @SubSubAppendixGap { 1.5v @OrIfPlain 2f } # between sub-subapps
+ # @PrefaceInContents { Yes } # add preface to contents
+ # @SubPrefaceInContents { No } # add sub-preface to contents
+ # @AbbreviationsInContents { Yes } # add abbreviations to contents
+ # @IntroductionInContents { Yes } # add introduction to contents
+ # @SubIntroductionInContents { No } # add sub-intro to contents
+ # @PartInContents { Yes } # add parts to contents
+ # @ChapterInContents { Yes } # add chapters to contents
+ # @SectionInContents { Yes } # add sections to contents
+ @SubSectionInContents { No } # add subsections to contents
+ # @SubSubSectionInContents { No } # add sub-subsects to contents
+ # @AppendixInContents { Yes } # add appendices to contents
+ # @SubAppendixInContents { Yes } # add subappendices to contents
+ # @SubSubAppendixInContents { No } # add sub-subapps to contents
+ # @ReferencesInContents { Yes } # add ref. section to contents
+ # @GlossaryInContents { Yes } # add glossary to contents
+ # @IndexInContents { Yes } # add index to contents
+ # @IndexAInContents { Yes } # add index A to contents
+ # @IndexBInContents { Yes } # add index B to contents
+ # @ColophonInContents { Yes } # add colophon to contents
+ # @PrefaceContentsIndent { 0f } # indent in contents of preface
+ # @SubPrefaceContentsIndent { 3f } # indent in contents of sub-preface
+ # @AbbreviationsContentsIndent{ 0f } # indent in contents of abbreviations
+ # @IntroductionContentsIndent { 0f } # indent in contents of introduction
+ # @SubIntroductionContentsIndent { 3f } # indent in contents of sub-intro
+ # @PartContentsIndent { 0.5rt } # indent in contents of part (dft is ctr)
+ # @ChapterContentsIndent { 0f } # indent in contents of chapter
+ # @SectionContentsIndent { 3f } # indent in contents of section
+ # @SubSectionContentsIndent { 6f } # indent in contents of subsection
+ # @SubSubSectionContentsIndent{ 9f } # indent in contents of sub-subsection
+ # @AppendixContentsIndent { 0f } # indent in contents of appendix
+ # @SubAppendixContentsIndent { 3f } # indent in contents of sub-appendix
+ # @SubSubAppendixContentsIndent { 6f } # indent in contents of sub-subappendix
+ # @ReferencesContentsIndent { 0f } # indent in contents of references
+ # @GlossaryContentsIndent { 0f } # indent in contents of gloassary
+ # @IndexContentsIndent { 0f } # indent in contents of index
+ # @IndexAContentsIndent { 0f } # indent in contents of index A
+ # @IndexBContentsIndent { 0f } # indent in contents of index B
+ # @ColophonContentsIndent { 0f } # indent in contents of colophon
+ # @SubPrefaceNumInTheorems { No } # theorem num has sub-preface num
+ # @SubIntroductionNumInTheorems { No } # theorem num has sub-intro num
+ # @ChapterNumInTheorems { Yes } # theorem num has chapter num
+ # @SectionNumInTheorems { No } # theorem num has section num
+ # @SubSectionNumInTheorems { No } # theorem num has subsect num
+ # @SubSubSectionNumInTheorems { No } # theorem num has sub-ss. num
+ # @AppendixNumInTheorems { Yes } # theorem num has appendix num
+ # @SubAppendixNumInTheorems { No } # theorem num has sub-app num
+ # @SubSubAppendixNumInTheorems{ No } # theorem num has sub-sa. num
+ # @SubPrefaceNumInDisplays { No } # display num has sub-preface num
+ # @SubIntroductionNumInDisplays { No } # display num has sub-intro num
+ # @ChapterNumInDisplays { Yes } # display num has chapter num
+ # @SectionNumInDisplays { Yes } # display num has section num
+ # @SubSectionNumInDisplays { No } # display num has subsect num
+ # @SubSubSectionNumInDisplays { No } # display num has sub-ss. num
+ # @AppendixNumInDisplays { Yes } # display num has appendix num
+ # @SubAppendixNumInDisplays { Yes } # display num has sub-app num
+ # @SubSubAppendixNumInDisplays{ No } # display num has sub-sa. num
+ # @SubPrefaceNumInFigures { No } # figure num has sub-preface num
+ # @SubIntroductionumInFigures { No } # figure num has sub-intro num
+ # @ChapterNumInFigures { Yes } # figure num has chapter num
+ # @SectionNumInFigures { No } # figure num has section num
+ # @SubSectionNumInFigures { No } # figure num has subsect num
+ # @SubSubSectionNumInFigures { No } # figure num has sub-ss. num
+ # @AppendixNumInFigures { Yes } # figure num has appendix num
+ # @SubAppendixNumInFigures { No } # figure num has sub-app num
+ # @SubSubAppendixNumInFigures { No } # figure num has sub-sa. num
+ # @SubPrefaceNumInTables { No } # table num has sub-preface num
+ # @SubIntroductionumInTables { No } # table num has sub-intro num
+ # @ChapterNumInTables { Yes } # table num has chapter num
+ # @SectionNumInTables { No } # table num has section num
+ # @SubSectionNumInTables { No } # table num has subsect num
+ # @SubSubSectionNumInTables { No } # table num has sub-ss. num
+ # @AppendixNumInTables { Yes } # table num has appendix num
+ # @SubAppendixNumInTables { No } # table num has sub-app num
+ # @SubSubAppendixNumInTables { No } # table num has sub-sa. num
+ # @SubPrefaceNumInFloaters { No } # floater num has sub-preface num
+ # @SubIntroductionumInFloaters{ No } # floater num has sub-intro num
+ # @ChapterNumInFloaters { Yes } # floater num has chapter num
+ # @SectionNumInFloaters { No } # floater num has section num
+ # @SubSectionNumInFloaters { No } # floater num has subsect num
+ # @SubSubSectionNumInFloaters { No } # floater num has sub-ss. num
+ # @AppendixNumInFloaters { Yes } # floater num has appendix num
+ # @SubAppendixNumInFloaters { No } # floater num has sub-app num
+ # @SubSubAppendixNumInFloaters{ No } # floater num has sub-sa. num
+ # @SubPrefaceNumInRunners { No } # runners have sub-preface num
+ # @SubIntroductionNumInRunners { No } # runners have sub-intro num
+ # @SectionNumInRunners { Yes } # runners have section num
+ # @SubSectionNumInRunners { No } # runners have subsect num
+ # @SubSubSectionNumInRunners { No } # runners have sub-ss. num
+ # @SubAppendixNumInRunners { Yes } # runners have sub-app num
+ # @SubSubAppendixNumInRunners { No } # runners have sub-sa. num
+ # @PrefacePrefix { } # for structured page nums
+ # @ContentsPrefix { } # for structured page nums
+ # @FigureContentsPrefix { } # for structured page nums
+ # @TableContentsPrefix { } # for structured page nums
+ # @FloaterContentsPrefix { } # for structured page nums
+ # @AbbreviationsPrefix { } # for structured page nums
+ # @IntroductionPrefix { } # for structured page nums
+ # @ChapterPrefix { } # for structured page nums
+ # @AppendixPrefix { } # for structured page nums
+ # @ReferencesPrefix { } # for structured page nums
+ # @GlossaryPrefix { } # for structured page nums
+ # @IndexPrefix { } # for structured page nums
+ # @IndexAPrefix { } # for structured page nums
+ # @IndexBPrefix { } # for structured page nums
+ # @ColophonPrefix { } # for structured page nums
+}
+
+
+###############################################################################
+# #
+# @Database (and @SysDatabase) clauses go here. #
+# #
+###############################################################################
+
+@SysDatabase @FontDef { fontdefs } # font definitions
+@SysDatabase @RefStyle { refstyle } # reference printing styles
diff --git a/doc/doc/user/mydefs b/doc/doc/user/mydefs
new file mode 100644
index 0000000..1ec1678
--- /dev/null
+++ b/doc/doc/user/mydefs
@@ -0,0 +1,225 @@
+
+ ###################################################
+ # #
+ # Lout keywords and @Code symbol. #
+ # #
+ ###################################################
+
+ def @Code right x
+ { { Helvetica Base -1p } @Font lines @Break x }
+
+ def @@BackEnd { @Code "@BackEnd" }
+ def @@Begin { @Code "@Begin" }
+ def @@Break { @Code "@Break" }
+ def @@Case { @Code "@Case" }
+ def @@Database { @Code "@Database" }
+ def @@End { @Code "@End" }
+ def @@Font { @Code "@Font" }
+ def @@Char { @Code "@Char" }
+ def @@Galley { @Code "@Galley" }
+ def @@Graphic { @Code "@Graphic" }
+ def @@HAdjust { @Code "@HAdjust" }
+ def @@HContract { @Code "@HContract" }
+ def @@HCover { @Code "@HCover" }
+ def @@HExpand { @Code "@HExpand" }
+ def @@HScale { @Code "@HScale" }
+ def @@High { @Code "@High" }
+ def @@HShift { @Code "@HShift" }
+ def @@Include { @Code "@Include" }
+ def @@Insert { @Code "@Insert " }
+ def @@IncludeGraphic { @Code "@IncludeGraphic" }
+ def @@Key { @Code "@Key" }
+ def @@LClos { @Code "@LClos" }
+ def @@LEnv { @Code "@LEnv" }
+ def @@LInput { @Code "@LInput" }
+ def @@LVis { @Code "@LVis" }
+ def @@Moment { @Code "@Moment" }
+ def @@Next { @Code "@Next" }
+ def @@Null { @Code "@Null" }
+ def @@OneCol { @Code "@OneCol" }
+ def @@OneRow { @Code "@OneRow" }
+ def @@Open { @Code "@Open" }
+ def @@Outline { @Code "@Outline" }
+ def @@PAdjust { @Code "@PAdjust" }
+ def @@PrependGraphic { @Code "@PrependGraphic" }
+ def @@Rotate { @Code "@Rotate" }
+ def @@Scale { @Code "@Scale" }
+ def @@SetColor { @Code "@SetColor" }
+ def @@SetColour { @Code "@SetColour" }
+ def @@Language { @Code "@Language" }
+ def @@CurrLang { @Code "@CurrLang" }
+ def @@Space { @Code "@Space" }
+ def @@SysDatabase { @Code "@SysDatabase" }
+ def @@SysInclude { @Code "@SysInclude" }
+ def @@SysIncludeGraphic { @Code "@SysIncludeGraphic" }
+ def @@SysPrependGraphic { @Code "@SysPrependGraphic" }
+ def @@Tag { @Code "@Tag" }
+ def @@Tagged { @Code "@Tagged" }
+ def @@Use { @Code "@Use" }
+ def @@VAdjust { @Code "@VAdjust" }
+ def @@VContract { @Code "@VContract" }
+ def @@VCover { @Code "@VCover" }
+ def @@VExpand { @Code "@VExpand" }
+ def @@VScale { @Code "@VScale" }
+ def @@VShift { @Code "@VShift" }
+ def @@Wide { @Code "@Wide" }
+ def @@Yield { @Code "@Yield" }
+
+
+ ###################################################
+ # #
+ # Miscellaneous symbols used in the guide. #
+ # #
+ ###################################################
+
+ def @TeX
+ { @OneCol { T &0.4fo {-0.2f @VShift E} &0.45fo X }
+ }
+
+ def @LaTeX
+ { @OneCol { L &0.3fo { +0.1f @VShift 0.8f @Font A } &0.4fo @TeX }
+ }
+
+ import @BasicSetup
+ def @Batlow { Batlow Food Distributors Pty. Ltd. }
+
+ import @BasicSetup
+ def @GreyBox right x { @Box paint { lightgrey } x }
+
+ import @BasicSetup
+ def @HeadingBox left x right y
+ {
+ @Box { @CentredDisplay @Heading x y }
+ }
+
+ def @FilledBox
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ { "0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto"
+ "closepath fill"
+ } @Graphic { 0.6f @High ^/ 0.4f @High 4f @Wide }
+ }
+ PDF @Yield {
+ { "0 0 m __xsize 0 l __xsize __ysize l 0 __ysize l h f"
+ } @Graphic { 0.6f @High ^/ 0.4f @High 4f @Wide }
+ }
+ }
+ }
+
+ import @Math
+ def epi { p sub i ` log sub 2 ` p sub i }
+
+ import @Math
+ def ep right x { p sub x ` log sub 2 ` p sub x }
+
+# def @Dbl left x right y
+# { 1.95i @Wide
+# { 1.25i @Wide { |1rt @Code x } |0.2i @Eq {non y} }
+# }
+
+ def @LCodeWidth { 3.5c }
+ def @CodeWidth { 4.0c }
+ def @ResultWidth { 1.6c }
+
+ import @Math
+ def @ExA { 1 over sqrt { 1 - 4 x sup 2 } }
+
+ def @@Diag { @Code "@Diag" }
+
+ extend @DiagSetup @Diag
+ macro @MyNode {
+ @Node
+ outline {
+ LR:: { xsize 0 }
+ LR:< 0d
+ UL:: { 0 ysize }
+ UL:< 270d
+ 0 0 LR UL 0 0
+ }
+ }
+
+ extend @DiagSetup @Diag
+ macro @MyLink {
+ @Link
+ path {
+ FROM:: from
+ TO:: to
+ FROM TO
+ }
+ }
+
+ def @ShowHMark right x
+ {
+ {
+ "-0.3 cm ymark moveto xsize 0.3 cm add ymark lineto"
+ "[ 0.1 cm ] 0 setdash stroke"
+ } @Graphic x
+ }
+
+ def @ZeroWidth right x { @OneCol { |0io x |0io } }
+
+ def @SomeText
+ {
+Johnson suddenly uttered, in a strong determined tone, an apophegm, at
+which many will start: `Patriotism is the last refuge of a scoundrel.'
+ }
+
+ import @DiagSetup
+ def @OpenCircle { @Diag { @Circle margin { 0.2f } } }
+
+ import @DiagSetup
+ def @ClosedCircle { @Diag { @Circle paint { black } margin { 0.2f } } }
+
+ import @TblSetup @BasicSetup
+ def @AmberLight
+ {
+ @OneRow @Tbl
+ aformat { @Cell indentvertical { align } A }
+ marginhorizontal { 0i }
+ marginvertical { 0i }
+ strut { no }
+ rule { no }
+ paint { no }
+ {
+ @Rowa A { @OpenCircle }
+ @MarkRowa A { @ClosedCircle }
+ @Rowa A { @OpenCircle }
+ }
+ }
+
+ import @DiagSetup @Diag
+ def @Four named code { } right x
+ {
+ 3.8c @Wide @Code code ||0.3c
+ 2.7c @Wide @StartRight x ||0.3c
+ 2.7c @Wide @StartUp x ||0.3c
+ 2.7c @Wide @StartLeft x ||0.3c
+ 2.2c @Wide @StartDown x
+ }
+
+ import @BasicSetup
+ def @TextureSample right x
+ {
+ @Box margin { 0i }
+ x @Texture @Box margin { 2.0f } paint { black } {}
+ }
+
+ import @BasicSetup
+ def @XRGBTest right col
+ {
+ def @Thing {
+ @HContract @VContract { 0.9c @Wide 0.5f @High ^/ 0.5f @High }
+ }
+
+ @HContract {
+ @Box paint { @Xrgb col } margin { 0i } @Thing
+ &0.2c
+ 2.8c @Wide downifneeded @Scale @Code col
+ }
+ }
+
+ def @XRGBNoTest
+ {
+ @HContract { 0.9c @Wide &0.2c 2.8c @Wide {} }
+ }
diff --git a/doc/doc/user/pascal b/doc/doc/user/pascal
new file mode 100644
index 0000000..41376df
--- /dev/null
+++ b/doc/doc/user/pascal
@@ -0,0 +1,162 @@
+@Chapter
+ @Title { Pascal and Modula-2 Programs }
+@Begin
+@LP
+There is a @Code "@Pas" symbol for printing Pascal programs
+pascal @Index { Pascal programs }
+pas. @Index @Code "@Pas"
+@Cite { $jensen1975pascal }. No attempt is made to follow any
+particular printing standard; the design simply reflects this author's
+taste. To use {@Code "@Pas"}, place @Code "@SysInclude { pas }" at the
+start of your document in the usual way. A Pascal program or program
+fragment is entered like this:
+@ID @Code {
+"@ID @Pas {"
+"procedure PriDelete(x: PriEntry; var Q: PriorityQueue);"
+" var i: integer;"
+"begin"
+" with Q^ do begin"
+" size := size - 1;"
+" if x^.back <= size then"
+" begin"
+" i := x^.back;"
+" A[i] := A[size + 1];"
+" A[i]^.back := i;"
+" PriAddRoot(i, Q);"
+" PriAddLeaf(i, Q)"
+" end"
+" end"
+"end;"
+"}"
+}
+This produces
+@ID @Pas {
+procedure PriDelete(x: PriEntry; var Q: PriorityQueue);
+ var i: integer;
+begin
+ with Q^ do begin
+ size := size - 1;
+ if x^.back <= size then
+ begin
+ i := x^.back;
+ A[i] := A[size + 1];
+ A[i]^.back := i;
+ PriAddRoot(i, Q);
+ PriAddLeaf(i, Q)
+ end
+ end
+end;
+}
+Blank lines, line breaks, indents and spaces in the input are respected,
+with a tab being considered equal to eight spaces. @Code "@Pas" can also
+be used within a paragraph to produce a fragment like
+@OneCol @Pas { A[i..j] }. Use @Code "@OneCol @Pas { ... }" to prevent the
+result from breaking over two lines.
+@PP
+@Code "@Pas" does not attempt to rearrange the program in any way. Each
+item is simply printed according to the following plan:
+@ID {
+7c @Wide {
+ @Code and |2.5ct @Pas { and }
+//1vx @Code array |2.5ct @Pas { array }
+//1vx @Code begin |2.5ct @Pas { begin }
+//1vx @Code case |2.5ct @Pas { case }
+//1vx @Code const |2.5ct @Pas { const }
+//1vx @Code div |2.5ct @Pas { div }
+//1vx @Code do |2.5ct @Pas { do }
+//1vx @Code downto |2.5ct @Pas { downto }
+//1vx @Code else |2.5ct @Pas { else }
+//1vx @Code end |2.5ct @Pas { end }
+//1vx @Code file |2.5ct @Pas { file }
+//1vx @Code for |2.5ct @Pas { for }
+//1vx @Code forward |2.5ct @Pas { forward }
+//1vx @Code function |2.5ct @Pas { function }
+//1vx @Code goto |2.5ct @Pas { goto }
+//1vx @Code if |2.5ct @Pas { if }
+//1vx @Code in |2.5ct @Pas { in }
+//1vx @Code label |2.5ct @Pas { label }
+//1vx @Code mod |2.5ct @Pas { mod }
+//1vx @Code nil |2.5ct @Pas { nil }
+//1vx @Code not |2.5ct @Pas { not }
+//1vx @Code of |2.5ct @Pas { of }
+//1vx @Code or |2.5ct @Pas { or }
+//1vx @Code otherwise |2.5ct @Pas { otherwise }
+//1vx @Code packed |2.5ct @Pas { packed }
+//1vx @Code procedure |2.5ct @Pas { procedure }
+//1vx @Code program |2.5ct @Pas { program }
+//1vx @Code record |2.5ct @Pas { record }
+//1vx @Code repeat |2.5ct @Pas { repeat }
+//1vx @Code set |2.5ct @Pas { set }
+//1vx @Code then |2.5ct @Pas { then }
+//1vx @Code to |2.5ct @Pas { to }
+//1vx @Code type |2.5ct @Pas { type }
+//1vx @Code until |2.5ct @Pas { until }
+//1vx @Code var |2.5ct @Pas { var }
+//1vx @Code while |2.5ct @Pas { while }
+//1vx @Code with |2.5ct @Pas { with }
+} | 7c @Wide {
+ @Code "0" |2.5ct @Pas { 0 }
+//1vx @Code "1" |2.5ct @Pas { 1 }
+//1vx @Code "2" |2.5ct @Pas { 2 }
+//1vx @Code "3" |2.5ct @Pas { 3 }
+//1vx @Code "4" |2.5ct @Pas { 4 }
+//1vx @Code "5" |2.5ct @Pas { 5 }
+//1vx @Code "6" |2.5ct @Pas { 6 }
+//1vx @Code "7" |2.5ct @Pas { 7 }
+//1vx @Code "8" |2.5ct @Pas { 8 }
+//1vx @Code "9" |2.5ct @Pas { 9 }
+//1vx @Code "." |2.5ct @Pas { . }
+//1vx @Code "," |2.5ct @Pas { , }
+//1vx @Code ":" |2.5ct @Pas { : }
+//1vx @Code ";" |2.5ct @Pas { ; }
+//1vx @Code "'" |2.5ct @Pas { ' }
+//1vx @Code "`" |2.5ct @Pas { ` }
+//1vx @Code "+" |2.5ct @Pas { + }
+//1vx @Code "-" |2.5ct @Pas { - }
+//1vx @Code "*" |2.5ct @Pas { * }
+//1vx @Code "/" |2.5ct @Pas { / }
+//1vx @Code "(" |2.5ct @Pas { ( }
+//1vx @Code ")" |2.5ct @Pas { ) }
+//1vx @Code "[" |2.5ct @Pas { [ }
+//1vx @Code "]" |2.5ct @Pas { ] }
+//1vx @Code "^" |2.5ct @Pas { ^ }
+//1vx @Code ".." |2.5ct @Pas { .. }
+//1vx @Code "=" |2.5ct @Pas { = }
+//1vx @Code "<" |2.5ct @Pas { < }
+//1vx @Code ">" |2.5ct @Pas { > }
+//1vx @Code "<>" |2.5ct @Pas { <> }
+//1vx @Code "<=" |2.5ct @Pas { <= }
+//1vx @Code ">=" |2.5ct @Pas { >= }
+//1vx @Code ":=" |2.5ct @Pas { := }
+}
+}
+Anything not mentioned here will appear in italic font.
+@PP
+Unlike the @Code "@CP" symbol from the previous chapter, the @Code "@Pas"
+symbol is a quick-and-dirty production which does not offer you any options,
+or indeed attempt to solve every problem of Pascal formatting. In
+particular, Pascal strings need attention before formatting by
+{@Code "@Pas"}. Their interiors are best enclosed in double quotes to
+prevent the above transformations from occurring inside them. Any
+@Code "\\" or @Code "\"" characters inside strings will need to be
+replaced by @Code "\\\\" and @Code "\\\"" respectively, and the opening
+quote should be replaced by {@Code "`"}.
+@PP
+Similar remarks apply to Pascal comments; don't forget that @Code "{"
+and @Code "}" must be enclosed in double quotes. Alternatively, a
+@Code "@Com" symbol can be placed in front of a comment enclosed
+in braces. It will add literal braces:
+@ID @Code {
+"@Com { A Pascal comment }"
+}
+has result
+@ID @Pas {
+@Com { A Pascal comment }
+}
+It may still be necessary to enclose the interior in double quotes.
+@PP
+There is a @Code "@Modula" symbol which allows you to format Modula-2
+programs in the same way as @Code "@Pas" does for Pascal. You get it
+via {@Code "@SysInclude { modula }"}, and once again it is a quick-and-dirty
+production.
+@End @Chapter
diff --git a/doc/doc/user/pie b/doc/doc/user/pie
new file mode 100644
index 0000000..cb0fd38
--- /dev/null
+++ b/doc/doc/user/pie
@@ -0,0 +1,53 @@
+@Chapter
+ @Title { Pie Graphs }
+ @Tag { pie }
+@Begin
+@LP
+This chapter describes how to draw pie graphs, using the @Code "@Pie"
+piegraphs. @Index { pie graphs }
+pie. @Index { @Code "@Pie" symbol }
+symbol. For example,
+@ID @OneRow -1px @Break @Code @Verbatim {
+@Pie
+{
+ @Slice
+ weight { 20 }
+ label { Admin (20%) }
+ @Slice
+ weight { 40 }
+ paint { green }
+ label { Research (40%) }
+ @Slice
+ weight { 40 }
+ paint { lightred }
+ label { Teaching (40%) }
+}
+}
+produces the pie graph
+@CD @Pie
+{
+ @Slice
+ weight { 20 }
+ label { Admin (20%) }
+ @Slice
+ weight { 40 }
+ paint { green }
+ label { Research (40%) }
+ @Slice
+ weight { 40 }
+ paint { lightred }
+ label { Teaching (40%) }
+}
+This example shows off most of what @Code "@Pie" can do.
+# there are many options, but for the most part they offer
+# detailed adjustments, not additional features.
+@BeginSections
+@Include { pie_intr }
+@Include { pie_slic }
+@Include { pie_over }
+@Include { pie_capt }
+@Include { pie_labe }
+@Include { pie_erro }
+@Include { pie_summ }
+@EndSections
+@End @Chapter
diff --git a/doc/doc/user/pie_capt b/doc/doc/user/pie_capt
new file mode 100644
index 0000000..ba28c8c
--- /dev/null
+++ b/doc/doc/user/pie_capt
@@ -0,0 +1,111 @@
+@Section
+ @Title { Captions }
+ @Tag { pie_capt }
+@Begin
+@PP
+There are options for placing captions left, right, above, and below
+captions. @RawIndex { captions }
+captions.pie @SubIndex { in pie graphs }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.captions @SubIndex { captions }
+leftcaption. @RawIndex { @Code "leftcaption" option }
+leftcaption.pie @SubIndex { in pie graphs }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.leftcaption @SubIndex { @Code "leftcaption" option }
+rightcaption. @RawIndex { @Code "rightcaption" option }
+rightcaption.pie @SubIndex { in pie graphs }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.rightcaption @SubIndex { @Code "rightcaption" option }
+abovecaption. @RawIndex { @Code "abovecaption" option }
+abovecaption.pie @SubIndex { in pie graphs }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.abovecaption @SubIndex { @Code "abovecaption" option }
+belowcaption. @RawIndex { @Code "belowcaption" option }
+belowcaption.pie @SubIndex { in pie graphs }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.belowcaption @SubIndex { @Code "belowcaption" option }
+the pie graph, following the pattern of the captions in {@Code "@Graph"}:
+@ID @OneRow @Code @Verbatim {
+@Pie
+ leftcaption { At left }
+ rightcaption { At right }
+ abovecaption { This appears above }
+ belowcaption { This appears below }
+}
+produces
+@CD @Pie
+ leftcaption { At left }
+ rightcaption { At right }
+ abovecaption { This appears above }
+ belowcaption { This appears below }
+{
+ @Slice
+ weight { 20 }
+ label { Admin (20%) }
+ @Slice
+ weight { 40 }
+ paint { green }
+ label { Research (40%) }
+ @Slice
+ weight { 40 }
+ paint { lightred }
+ label { Teaching (40%) }
+}
+The captions may be arbitrary Lout objects, so may include
+equations, {@Code "@Rotate"}, and so on. Each caption except
+@Code rightcaption is printed in the
+@Code "clines @Break" style, which means that multiple lines in one
+caption will be centred beneath each other. The @Code rightcaption
+option uses the @Code "lines @Break" style, in which the lines are
+left justified beneath each other.
+@PP
+There are options for controlling the amount of space between each
+caption and the pie graph. Here they are with their default values:
+leftgap. @RawIndex { @Code "leftgap" option }
+leftgap.pie @SubIndex { in pie graphs }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.leftgap @SubIndex { @Code "leftgap" option }
+rightgap. @RawIndex { @Code "rightgap" option }
+rightgap.pie @SubIndex { in pie graphs }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.rightgap @SubIndex { @Code "rightgap" option }
+abovegap. @RawIndex { @Code "abovegap" option }
+abovegap.pie @SubIndex { in pie graphs }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.abovegap @SubIndex { @Code "abovegap" option }
+belowgap. @RawIndex { @Code "belowgap" option }
+belowgap.pie @SubIndex { in pie graphs }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.belowgap @SubIndex { @Code "belowgap" option }
+@ID @OneRow @Code @Verbatim {
+@Pie
+ leftgap { 0.5c }
+ rightgap { 0.5c }
+ abovegap { 0.5c }
+ belowgap { 0.5c }
+}
+These gaps are inserted only if the corresponding caption is
+non-empty. Lout knows exactly where captions are, and leaves
+space for them and their gaps, so it would be wrong to attempt
+to use the {@Code leftextra}, {@Code rightextra}, {@Code aboveextra},
+and {@Code belowextra} options from Section {@NumberOf pie_over} to
+allow for the space occupied by captions.
+@PP
+When a pie graph is to be presented as a centred display, it is usually
+best if the centring is done with respect to the pie alone, not the
+captions and labels. The @Code "hidecaptions" option does this by
+hidecaptions. @RawIndex { @Code "hidecaptions" option }
+hidecaptions.in.pie @SubIndex { in pie graphs }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.hidecaptions @SubIndex { @Code "hidecaptions" option }
+making the left and right captions and gaps seem to Lout to have zero
+width:
+@ID @OneRow @Code @Verbatim {
+@Pie
+ hidecaptions { yes }
+}
+Actually @Code "yes" has been made the default value, since the vast
+majority of pie graphs are centred displays. In the rare cases where
+this feature is not wanted (for example, if a pie graph appears as an entry
+in a table), use {@Code "hidecaptions { no }"}.
+@End @Section
diff --git a/doc/doc/user/pie_erro b/doc/doc/user/pie_erro
new file mode 100644
index 0000000..fc8ed1c
--- /dev/null
+++ b/doc/doc/user/pie_erro
@@ -0,0 +1,35 @@
+@Section
+ @Title { Errors }
+ @Tag { pie_erro }
+@Begin
+@PP
+Lout normally produces output that will print without mishap on
+errors. @RawIndex { errors }
+errors.pie @SubIndex { in pie graphs }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.errors @SubIndex { errors }
+any PostScript device. However, some of the options of @Code "@Pie"
+and @Code "@Slice" are passed through Lout without checking. Any
+errors in this material will not be detected until the file is printed.
+@PP
+When an error is detected, the offending page is printed up to the
+point where the error occurred, with a message nearby describing
+the error. Printing of the document is then aborted. The problem
+is usually easy to locate since it lies in whatever should have
+been printed next.
+@PP
+Like {@Code "@Diag"} and {@Code "@Graph"}, @Code "@Pie" has a
+@Code "save" option which causes the memory used by the pie graph
+save. @RawIndex { @Code "save" option }
+save.in.pie @SubIndex { in pie graphs }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.save @SubIndex { @Code "save" option }
+to be reclaimed as soon as it is printed:
+@ID @OneRow @Code @Verbatim {
+@Pie
+ save { yes }
+...
+}
+However @Code "@Pie" uses very little memory and so this option is
+probably not going to be needed.
+@End @Section
diff --git a/doc/doc/user/pie_intr b/doc/doc/user/pie_intr
new file mode 100644
index 0000000..9eca4d2
--- /dev/null
+++ b/doc/doc/user/pie_intr
@@ -0,0 +1,65 @@
+@Section
+ @Title { Introduction }
+ @Tag { pie_intr }
+@Begin
+@PP
+The Lout definitions for pie graph formatting are kept in a file called
+{@Code "pie"}, which you must include at the start of your document if
+pie.file @Index { @Code "pie" setup file }
+you want pie graphs, like this:
+@ID -1px @Break @OneRow @Code {
+"@SysInclude { pie }"
+"@SysInclude { doc }"
+"@Doc @Text @Begin"
+"..."
+"@End @Text"
+}
+Setup files for specialized packages, such as {@Code "pie"}, should be
+included before the main setup file. Once this is done, the @Code "@Pie"
+symbol used below will then be available for use anywhere within your
+document. As usual in Lout, the @Code "@Pie" symbol produces an object
+which may appear anywhere at all -- in a centred display, for example,
+or in a figure, or as an entry in a table.
+@PP
+A pie graph is made by a @Code "@Pie" symbol enclosing a sequence of
+@Code "@Slice" symbols. These @Code "@Slice" symbols and their options
+are the only things that may appear inside the @Code "@Pie" symbol.
+@PP
+Every option of @Code "@Slice" is also an option of {@Code "@Pie"}.
+Giving a value to such an option at @Code "@Pie" will make that
+the default value for very {@Code "@Slice"}. For example,
+you can write
+@ID -1px @Break @OneRow @Code @Verbatim {
+@Pie
+ weight { 20 }
+{
+ ...
+}
+}
+to give every slice a weight (angular extent) of 20. If all but a
+few slices have the same weight, you can still do this, just giving
+a @Code weight option to the exceptional slices.
+@PP
+Furthermore, every option of @Code "@Pie" appears in the setup
+file, and giving a value to an option there makes that value the
+default value for every @Code "@Pie" in your document. For example,
+if you want every slice of every pie to be light red, you can set
+the @Code paint option in the setup file to {@Code lightred},
+and all your slices will be painted this colour unless you
+override the setup file value by giving @Code paint options to
+some pies or slices.
+@PP
+See Section @NumberOf setup to find out how to make your own copy
+of the setup file, perhaps calling it {@Code mypie}, and change
+some options within it. Your document would then typically
+start like this:
+@ID -1px @Break @OneRow @Code {
+"@Include { mypie }"
+"@SysInclude { doc }"
+"@Doc @Text @Begin"
+"..."
+"@End @Text"
+}
+and by changing options within file @Code "mypie" you can
+affect every pie graph in your document.
+@End @Section
diff --git a/doc/doc/user/pie_labe b/doc/doc/user/pie_labe
new file mode 100644
index 0000000..aca92f9
--- /dev/null
+++ b/doc/doc/user/pie_labe
@@ -0,0 +1,382 @@
+@Section
+ @Title { Labels }
+ @Tag { pie_labe }
+@Begin
+@PP
+labels. @RawIndex { labels }
+labels.in.pie @SubIndex { in pie graphs }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.labels @SubIndex { labels }
+Labels are short messages printed inside the slices,
+identifying them. We've already seen the @Code label
+option, in which we place the label, which can be an
+arbitrary Lout object. In this section we'll show how
+to change the format and position of these labels.
+@PP
+For changing the format of a label there are four options:
+@ID -1px @Break @OneRow @Code @Verbatim {
+@Slice
+ labelfont { -2p }
+ labelbreak { clines }
+ labelmargin { 0.2f }
+ labelformat { @Body }
+}
+This shows the default values of these options.
+@PP
+The @Code labelfont option determines the font in which the
+labelfont. @RawIndex { @Code "labelfont" options }
+labelfont.in.pie @SubIndex { in pie graphs }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.labelfont @SubIndex { @Code "labelfont" option }
+label will be printed. The default value shown above calls
+for the current font to be used, two points smaller than it
+otherwise would have been. Any value acceptable to the
+@Code "@Font" symbol from Section {@NumberOf fonts} is
+acceptable here, including changing the family and face.
+@PP
+The @Code labelbreak option determines how paragraph breaking
+labelbreak. @RawIndex { @Code "labelbreak" options }
+labelbreak.in.pie @SubIndex { in pie graphs }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.labelbreak @SubIndex { @Code "labelbreak" option }
+within the label will be carried out. Any value acceptable to
+the @Code "@Break" symbol from Section {@NumberOf paras} is
+acceptable here. The default value shown above causes each
+line of the label to be one line of the result, with each
+line centred with respect to the longest line.
+@PP
+The @Code labelmargin option places a margin around the
+labelmargin. @RawIndex { @Code "labelmargin" options }
+labelmargin.in.pie @SubIndex { in pie graphs }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.labelmargin @SubIndex { @Code "labelmargin" option }
+label. The default value shown makes a margin of width
+0.2 times the current font size. This margin has no effect
+on the appearance or position of the label (in particular,
+it is drawn outside @Code "labelformat" below, not inside).
+It is only needed for adjusting the appearance of fingers,
+as described as the end of this section.
+@PP
+The @Code labelformat option allows more radical changes
+labelformat. @RawIndex { @Code "labelformat" options }
+labelformat.in.pie @SubIndex { in pie graphs }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.labelformat @SubIndex { @Code "labelformat" option }
+to the label format. Its value may be an arbitrary
+object. Within it, the symbol @Code "@Body" stands for
+the value of the @Code "label" option:
+@ID -1px @Break @OneRow @Code @Verbatim {
+@Slice
+ labelformat { @ShadowBox @Body }
+}
+will cause the text of the label to appear within a
+shadow box. Of course, we could get this effect by
+placing these symbols in the label itself, like this:
+@ID -1px @Break @OneRow @Code @Verbatim {
+@Slice
+ label { @ShadowBox { Admin (20%) } }
+}
+However, like all @Code "@Slice" options, @Code labelformat
+may be given to @Code "@Pie" as well, like this:
+@ID -1px @Break @OneRow @Code @Verbatim {
+@Pie
+ labelformat { @ShadowBox @Body }
+}
+and there it affects every label in the pie graph:
+@CD @Pie
+ labelformat { @ShadowBox @Body }
+{
+ @Slice
+ weight { 20 }
+ label { Admin (20%) }
+ @Slice
+ weight { 40 }
+ label { Research (40%) }
+ @Slice
+ weight { 40 }
+ label { Teaching (40%) }
+}
+When the labels all have the same format, this is much faster
+and less error-prone than formatting each label independently,
+especially when experimenting with different formats.
+@PP
+Two options are available for changing the positions of
+labels:
+@ID -1px @Break @OneRow @Code @Verbatim {
+@Slice
+ labelradius { internal }
+ labeladjust { 0c 0c }
+}
+Each label occupies a rectangular area, and these options
+determine the position of the centre of the rectangle.
+@PP
+The @Code labelradius option determines how far the
+labelradius.pie @Index { @Code "labelradius" option (pie graphs) }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.labelradius @SubIndex { @Code "labelradius" option }
+centre of the label is from the point of the slice
+(usually the same as the centre of the pie graph,
+but not when the slice is detached). The default value
+of {@Code labelradius} shown above, {@Code internal},
+is a synonym for 0.6, so it causes the centre of the label
+to appear 60% of the way from the point of the slice to
+its outside boundary. The angular position of the label
+centre will be halfway around the arc of the slice. No
+attempt is made to fit the label into the interior of
+the slice; it lands where these rules say irrespective
+of what might be overstruck when it does. It is printed
+after its slice's outline and paint, so it can't be
+hidden by them; but if it strays into the next slice it
+will be buried under any paint in that slice.
+@PP
+For fine adjustments, the @Code labeladjust option
+labeladjust. @RawIndex { @Code "labeladjust" options }
+labeladjust.in.pie @SubIndex { in pie graphs }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.labeladjust @SubIndex { @Code "labeladjust" option }
+may be used to move the label centre any distance in
+the x and y directions. For example,
+@ID -1px @Break @OneRow @Code @Verbatim {
+@Slice
+ labeladjust { 0.2c -0.1c }
+}
+will move the label centre 0.2 centimetres further to
+the right and 0.1 centimetres down from where it would
+otherwise have appeared.
+@PP
+The recommended procedure for getting internal labels
+to look good is to first try them without any adjustment.
+Next, consider rearranging the label layout. Our running
+example has poorly positioned labels, but they can be
+improved just by breaking each label over two lines:
+@CD @Pie
+ # abovecaption { Ideal breakdown of academic workload }
+ aboveextra { 1f }
+{
+ @Slice
+ detach { yes }
+ weight { 20 }
+ label { Admin @LLP (20%) }
+ @Slice
+ weight { 40 }
+ paint { green }
+ label { Research @LLP (40%) }
+ @Slice
+ weight { 40 }
+ paint { lightred }
+ label { Teaching @LLP (40%) }
+}
+Finally, the @Code labeladjust option is there as a last resort.
+@PP
+To get a label outside its slice, use
+externallabels.pie @Index { external labels in pie graphs }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.externallabels @SubIndex { external labels }
+@ID -1px @Break @OneRow @Code @Verbatim {
+@Slice
+ labelradius { external }
+}
+Again, @Code external is just a synonym for the number
+1.4, meaning that the label centre is to be placed 140%
+of the pie chart's radius away from the point of the
+slice. It can be replaced by any number.
+@PP
+Two issues arise when labels are placed externally.
+The first issue is that Lout does not know where these labels
+are being printed and so cannot leave space for them.
+Section {@NumberOf pie_over} has already explained how to
+handle this problem using the {@Code leftextra},
+{@Code rightextra}, {@Code aboveextra}, and {@Code belowextra}
+options of {@Code "@Pie"}. Our running example, converted
+to external labels, might be entered like this:
+@ID -1px @Break @OneRow @Code @Verbatim {
+@Pie
+ abovecaption { Ideal breakdown of academic workload }
+ labelradius { external }
+ aboveextra { 0.7c }
+ belowextra { 1.3c }
+{
+ @Slice
+ detach { yes }
+ weight { 20 }
+ label { Admin @LLP (20%) }
+ @Slice
+ weight { 40 }
+ paint { green }
+ label { Research @LLP (40%) }
+ @Slice
+ weight { 40 }
+ paint { lightred }
+ label { Teaching @LLP (40%) }
+}
+}
+which produces this:
+@CD @Pie
+ abovecaption { Ideal breakdown of academic workload }
+ labelradius { external }
+ aboveextra { 0.7c }
+ belowextra { 1.3c }
+{
+ @Slice
+ detach { yes }
+ weight { 20 }
+ label { Admin @LLP (20%) }
+ @Slice
+ weight { 40 }
+ paint { green }
+ label { Research @LLP (40%) }
+ @Slice
+ weight { 40 }
+ paint { lightred }
+ label { Teaching @LLP (40%) }
+}
+The amount of extra space to add has to be worked out by
+experiment. It can help to temporarily remove all
+captions and enclose the @Code "@Pie" symbol in a box
+with zero margin:
+@ID -1px @Break @Code @Verbatim { @Box margin { 0i } @Pie ... }
+to show clearly how much space the @Code extra options
+are covering.
+@PP
+The second issue raised by external labels is how to
+visually connect each label with its slice, when this
+fingers.pie @Index { fingers in pie graphs }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.fingers @SubIndex { fingers }
+seems necessary. @Code "@Pie" can do this with short
+line segments that we will call {@I fingers}:
+@CD @Pie
+ abovecaption { Ideal breakdown of academic workload }
+ labelradius { external }
+ aboveextra { 1.3f }
+ belowextra { 3f }
+ finger { yes }
+{
+ @Slice
+ detach { yes }
+ weight { 20 }
+ label { Admin @LLP (20%) }
+ @Slice
+ weight { 40 }
+ paint { green }
+ label { Research @LLP (40%) }
+ @Slice
+ weight { 40 }
+ paint { lightred }
+ label { Teaching @LLP (40%) }
+}
+These were made by adding @Code "finger { yes }" as
+another option to the @Code "@Pie" symbol.
+@PP
+Each slice has several options which control the
+appearance of its own finger. Here is the full set,
+showing their default values:
+@ID -1px @Break @OneRow @Code @Verbatim {
+@Slice
+ finger { no }
+ fingerstyle { solid }
+ fingerdashlength { 0.2f }
+ fingerwidth { thin }
+ fingerradius { 0.7 }
+ fingeradjust { 0c 0c }
+}
+The @Code "finger" option may be @Code "no" or @Code "yes"
+finger.pie @Index { @Code "finger" option (pie graphs) }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.finger @SubIndex { @Code "finger" option }
+and determines whether a finger will be drawn or not.
+@PP
+The {@Code fingerstyle}, {@Code fingerdashlength}, and
+{@Code fingerwidth} options are exactly analogous to
+fingerstyle.pie @Index { @Code "fingerstyle" option (pie graphs) }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.fingerstyle @SubIndex { @Code "fingerstyle" option }
+fingerdashlength.pie @Index { @Code "fingerdashlength" option (pie graphs) }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.fingerdashlength @SubIndex { @Code "fingerdashlength" option }
+fingerwidth.pie @Index { @Code "fingerwidth" option (pie graphs) }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.fingerwidth @SubIndex { @Code "fingerwidth" option }
+the {@Code outlinestyle}, {@Code outlinedashlength}, and
+{@Code outlinewidth} options. They take the same range
+of values, and determine the style of the line segment
+drawn to make the finger (solid, dashed, etc.).
+@PP
+The {@Code fingerradius} and {@Code fingeradjust} options
+are exactly analogous to the {@Code labelradius} and
+{@Code labeladjust} options, except that instead of
+determining the position of the centre of the label they
+determine the position of the inner endpoint of the
+finger. The default values place it 70% of the way
+from the point of the slice to its outer edge. The
+@I outer endpoint of the finger always terminates on
+the bounding box of the label, with the line pointing
+through the centre of the label, and this cannot be
+changed, although the @Code labelmargin option
+(see the start of this section) may be used to decrease
+or increase the margin around the label, thus causing
+the finger to terminate closer to the label or further away.
+@PP
+Fingers may have arrowheads on their inner ends:
+@ID @OneRow @Code @Verbatim {
+@Pie
+ labelradius { 1.6 }
+ aboveextra { 2f }
+ belowextra { 4f }
+ finger { yes }
+ fingerarrow { yes }
+ fingerradius { 1 }
+{
+ @Slice
+ detach { yes }
+ weight { 20 }
+ label { Admin @LLP (20%) }
+ @Slice
+ weight { 40 }
+ paint { green }
+ label { Research @LLP (40%) }
+ @Slice
+ weight { 40 }
+ paint { lightred }
+ label { Teaching @LLP (40%) }
+}
+}
+produces
+@CD @Pie
+ labelradius { 1.6 }
+ aboveextra { 2f }
+ belowextra { 4f }
+ finger { yes }
+ fingerarrow { yes }
+ fingerradius { 1 }
+{
+ @Slice
+ detach { yes }
+ weight { 20 }
+ label { Admin @LLP (20%) }
+ @Slice
+ weight { 40 }
+ paint { green }
+ label { Research @LLP (40%) }
+ @Slice
+ weight { 40 }
+ paint { lightred }
+ label { Teaching @LLP (40%) }
+}
+The point of the arrowhead coincides with the inner
+endpoint of the finger, so @Code "fingerradius" would
+usually be set to @Code 1 when arrowheads are used.
+@PP
+Although @Code "@Pie" does not offer the elegant selection
+of arrowhead styles of {@Code "@Diag"}, it is possible
+to change the length and width of the arrowheads
+with these options:
+@ID @OneRow @Code @Verbatim {
+@Slice
+ fingerarrowlength { 0.6f }
+ fingerarrowwidth { 0.45f }
+}
+This example shows the default values of these options.
+These options may of course be given to @Code "@Pie" and
+also in the setup file as usual.
+@End @Section
diff --git a/doc/doc/user/pie_over b/doc/doc/user/pie_over
new file mode 100644
index 0000000..2445a05
--- /dev/null
+++ b/doc/doc/user/pie_over
@@ -0,0 +1,117 @@
+@Section
+ @Title { Changing the overall appearance of the pie graph }
+ @Tag { pie_over }
+@Begin
+@PP
+We've already seen that all @Code "@Slice" options may be given
+piegraphs. @RawIndex { pie graphs }
+piegraphs.overall @SubIndex { overall appearance }
+to @Code "@Pie" as well. In addition to those, @Code "@Pie" has
+its own options that affect the overall appearance of the pie graph:
+@ID -1px @Break @OneRow @Code @Verbatim {
+@Pie
+ radius { 2.5c }
+ initialangle { 0d }
+ leftextra { 0c }
+ rightextra { 0c }
+ aboveextra { 0c }
+ belowextra { 0c }
+}
+This example shows these options with their default values.
+@PP
+The @Code radius option determines the radius of the pie
+radius. @RawIndex { @Code "radius" option }
+radius.pie @SubIndex { in pie graphs }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.radius @SubIndex { @Code "radius" option }
+graph. As shown, the default radius is 2.5 centimetres, giving a diameter
+of 5 centimetres.
+@PP
+The @Code initialangle option determines the angle that the first
+initialangle.pie @Index { @Code "initialangle" option (pie graphs) }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.initialangle @SubIndex { @Code "initialangle" option }
+slice begins at. Following mathematical convention, the default angle
+@Code 0d is directly to the right of the centre of the pie graph, and
+as the value of @Code initialangle is increased the initial angle moves
+anticlockwise. The slices are placed in anticlockwise order immediately
+adjacent to each other. If you need a gap between two slices, use a
+slice with no outline, no paint, and no label.
+@PP
+Lout thinks that the whole pie graph occupies a square space
+tightly fitting around the given radius, as we can verify by
+drawing a box with zero margin around an example pie graph:
+@CD @Box margin { 0i } @Pie
+{
+ @Slice
+ weight { 20 }
+ label { Admin (20%) }
+ @Slice
+ weight { 40 }
+ paint { green }
+ label { Research (40%) }
+ @Slice
+ weight { 40 }
+ paint { lightred }
+ label { Teaching (40%) }
+}
+Detached slices (Section {@NumberOf pie_slic}) and external
+labels (Section {@NumberOf pie_labe}) can be printed outside
+this square region without Lout's knowledge, and this is
+likely to spoil the layout:
+@CD @Box margin { 0i } @Pie
+{
+ @Slice
+ detach { yes }
+ weight { 20 }
+ label { Admin (20%) }
+ @Slice
+ weight { 40 }
+ paint { green }
+ label { Research (40%) }
+ @Slice
+ weight { 40 }
+ paint { lightred }
+ label { Teaching (40%) }
+}
+The {@Code leftextra}, {@Code rightextra}, {@Code aboveextra}, and
+leftextra.pie @Index { @Code "leftextra" option (pie graphs) }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.leftextra @SubIndex { @Code "leftextra" option }
+rightextra.pie @Index { @Code "rightextra" option (pie graphs) }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.rightextra @SubIndex { @Code "rightextra" option }
+aboveextra.pie @Index { @Code "aboveextra" option (pie graphs) }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.aboveextra @SubIndex { @Code "aboveextra" option }
+belowextra.pie @Index { @Code "belowextra" option (pie graphs) }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.belowextra @SubIndex { @Code "belowextra" option }
+{@Code belowextra} options are used to tell Lout to leave extra
+space to the left, right, above, and below, so as to correct these
+problems:
+@ID -1px @Break @OneRow @Code @Verbatim {
+@Pie
+ aboveextra { 0.7c }
+}
+We have not added extra space at the right as well, since we prefer
+to centre the pie graph horizontally without regard to detached
+slices. The result occupies 0.7 cm extra at the top:
+@CD @Box margin { 0i } @Pie aboveextra { 0.7c }
+{
+ @Slice
+ detach { yes }
+ weight { 20 }
+ label { Admin (20%) }
+ @Slice
+ weight { 40 }
+ paint { green }
+ label { Research (40%) }
+ @Slice
+ weight { 40 }
+ paint { lightred }
+ label { Teaching (40%) }
+}
+We'll see these options again when we come to external labels in
+Section {@NumberOf pie_labe}.
+@End @Section
diff --git a/doc/doc/user/pie_slic b/doc/doc/user/pie_slic
new file mode 100644
index 0000000..1c8f7d8
--- /dev/null
+++ b/doc/doc/user/pie_slic
@@ -0,0 +1,203 @@
+@Section
+ @Title { Changing the appearance of slices }
+ @Tag { pie_slic }
+@Begin
+@PP
+The @Code "@Slice" symbol has options for controlling the
+slice. @Index { @Code "@Slice" symbol (pie graphs) }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.slice @SubIndex { @Code "@Slice" symbol }
+appearance of the slice it makes:
+@ID -1px @Break @OneRow @Code @Verbatim {
+@Slice
+ weight { 10 }
+ paint { none }
+ texture { solid }
+ outlinestyle { solid }
+ outlinedashlength { 0.2f }
+ outlinewidth { thin }
+ detach { no }
+}
+This example shows the default values of the options.
+@PP
+The @Code weight option is the weight (angular extent) of
+weight.pie @Index { @Code "weight" option (pie graphs) }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.weight @SubIndex { @Code "weight" option }
+the slice. By default, the total weight of the complete
+pie graph is 100, so a slice of weight 10, say, would occupy
+10% of the pie area, or in other words an angular extent
+of (10"/"100) @Multiply 360 degrees. You can change the
+@I total weight by setting an option to the @Code "@Pie" symbol:
+totalweight.pie @Index { @Code "totalweight" option (pie graphs) }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.totalweight @SubIndex { @Code "totalweight" option }
+@ID -1px @Break @OneRow @Code @Verbatim {
+@Pie
+ totalweight { 360 }
+}
+The value 360 would be useful if you wanted your weights to
+correspond with degrees. It would be good to get @Code "@Pie"
+to add up all the weights of its constituent slices and use
+that for the total weight, but problems behind the scenes
+prevent this. As it is, if the total weight of all slices
+is less than {@Code totalweight}, the leftover angular
+extent will be blank; and if it exceeds {@Code totalweight},
+later slices will overstrike earlier ones.
+@PP
+The @Code paint option defines the colour of the interior
+paint. @RawIndex { @Code "paint" option }
+paint.in.pie @SubIndex { in pie graphs }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.paint @SubIndex { @Code "paint" option }
+of the slice. Any colour acceptable to the {@Code "@Colour"}
+symbol (Section {@NumberOf colour}) is allowed, plus the
+default value {@Code none}, meaning no paint. As always,
+alongside the @Code "paint" option there is a @Code "texture"
+texture.option. @RawIndex { @Code "texture" option }
+texture.option.in.pie @SubIndex { in pie graphs }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.texture @SubIndex { @Code "texture" option }
+option:
+@ID -1px @Break @OneRow @Code @Verbatim {
+@Pie
+ paint { grey }
+{
+ @Slice
+ weight { 20 }
+ texture { striped }
+ label { Admin (20%) }
+ @Slice
+ weight { 40 }
+ texture { striped angle { 45d } }
+ label { Research (40%) }
+ @Slice
+ weight { 40 }
+ texture { striped angle { 90d } }
+ label { Teaching (40%) }
+}
+}
+produces
+@CD
+@Pie
+ paint { grey }
+{
+ @Slice
+ weight { 20 }
+ texture { striped }
+ label { Admin (20%) }
+ @Slice
+ weight { 40 }
+ texture { striped angle { 45d } }
+ label { Research (40%) }
+ @Slice
+ weight { 40 }
+ texture { striped angle { 90d } }
+ label { Teaching (40%) }
+}
+Textures might work better in black and white prints.
+@PP
+The next three options affect the outline drawn around each
+slice. The @Code outlinestyle option
+outlinestyle. @RawIndex { @Code "outlinestyle" option }
+outlinestyle.in.pie @SubIndex { in pie graphs }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.outlinestyle @SubIndex { @Code "outlinestyle" option }
+may be {@Code solid} (the default) which
+draws a solid line, {@Code dashed} which draws a dashed
+line, {@Code cdashed} which draws a dashed line with
+half-size dashes at the ends (this often looks better
+than {@Code dashed}), @Code "dotted" which draws a dotted line,
+and @Code noline which draws no outline at all. The
+@Code outlinedashlength option determines the dash length
+outlinedashlength. @RawIndex { @Code "outlinedashlength" option }
+outlinedashlength.in.pie @SubIndex { in pie graphs }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.outlinedashlength @SubIndex { @Code "outlinedashlength" option }
+if @Code outlinestyle is @Code dashed or {@Code cdashed}, and
+the distance between dots if @Code outlinestyle is
+{@Code dotted}. The length will be varied a little to ensure
+that the dashes or dots fit evenly on each segment of the
+outline. The @Code "outlinewidth" option determines the width
+outlinewidth. @RawIndex { @Code "outlinewidth" option }
+outlinewidth.in.pie @SubIndex { in pie graphs }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.outlinewidth @SubIndex { @Code "outlinewidth" option }
+of the outline, or the diameter of the dots if @Code outlinestyle
+is {@Code dotted}.
+@PP
+You can give three values to {@Code outlinestyle}, like this:
+@ID -1px @Break @OneRow @Code @Verbatim {
+@Pie
+{ red @Colour @Slice
+ weight { 75 }
+ outlinestyle { dashed cdashed dotted }
+ label { Bad debts }
+}
+}
+and the first will apply to the first straight segment,
+the second to the curved segment, and the third to the
+second straight segment:
+@CD @Pie
+{ red @Colour @Slice
+ weight { 75 }
+ outlinestyle { dashed cdashed dotted }
+ label { Bad debts }
+}
+There is no option to change the colour of the outline,
+but you can change the colour of the whole slice using
+the {@Code "@Colour"} symbol from Section {@NumberOf colour}
+as shown. It colours the label as well, but you can
+fix that by enclosing the contents of your label in
+another {@Code "@Colour"} symbol if you need to.
+@PP
+The @Code detach option pulls its slice radially out of the
+detach.pie @Index { @Code "detach" option (pie graphs) }
+piegraphs. @RawIndex { pie graphs }
+piegraphs.detach @SubIndex { @Code "detach" option }
+pie, without affecting any other slice:
+@CD @Pie
+ # abovecaption { Ideal breakdown of academic workload }
+ aboveextra { 0.7c }
+{
+ @Slice
+ detach { yes }
+ weight { 20 }
+ label { Admin (20%) }
+ @Slice
+ weight { 40 }
+ paint { green }
+ label { Research (40%) }
+ @Slice
+ weight { 40 }
+ paint { lightred }
+ label { Teaching (40%) }
+}
+is produced by
+@ID -1px @Break @OneRow @Code @Verbatim {
+@Pie
+ aboveextra { 0.7c }
+{
+ @Slice
+ detach { yes }
+ weight { 20 }
+ label { Admin (20%) }
+ @Slice
+ weight { 40 }
+ paint { green }
+ label { Research (40%) }
+ @Slice
+ weight { 40 }
+ paint { lightred }
+ label { Teaching (40%) }
+}
+}
+We've used the @Code aboveextra option
+(Section {@NumberOf pie_over}) to compensate for Lout's
+ignorance of where the slice actually ended up.
+The value of @Code detach may be {@Code no} (the
+default), {@Code yes}, or any number, which defines
+the fraction of the pie radius that the slice is
+pulled out by. For example, @Code yes is just another
+name for {@Code 0.5}.
+@End @Section
diff --git a/doc/doc/user/pie_summ b/doc/doc/user/pie_summ
new file mode 100644
index 0000000..471567a
--- /dev/null
+++ b/doc/doc/user/pie_summ
@@ -0,0 +1,187 @@
+@Section
+ @Title { Summary }
+ @Tag { pie_summ }
+@Begin
+@PP
+Here are the options of the @Code "@Pie" symbol,
+piegraphs. @RawIndex { pie graphs }
+piegraphs.summary @SubIndex { summary }
+with their default values and allowed values:
+@ID @Tab
+ hmargin { 0.15c }
+ vmargin { 0.47vx }
+ @Fmta { @Col @Code { " "A } ! @Col @Code "{" ! @Col @Code B !
+ @Col @Code "}" ! @Col ! @Col ! @Col C }
+ @Fmtb { @Col @Code A ! @Col ! @Col ! @Col ! @Col ! @Col ! @Col }
+{
+@Rowb
+ A { "@Pie" }
+@Rowa
+ A { save }
+ B { no }
+ C { {@Code no} or {@Code yes} }
+@Rowa
+ A { totalweight }
+ B { 100 }
+ C { any positive number }
+@Rowa
+ A { radius }
+ B { 2.5c }
+ C { any length }
+@Rowa
+ A { initialangle }
+ B { 0d }
+ C { any angle (@Code {90d} etc.) }
+@Rowa
+ A { leftextra }
+ B { 0c }
+ C { any length }
+@Rowa
+ A { rightextra }
+ B { 0c }
+ C { any length }
+@Rowa
+ A { aboveextra }
+ B { 0c }
+ C { any length }
+@Rowa
+ A { belowextra }
+ B { 0c }
+ C { any length }
+@Rowa
+ A { leftcaption }
+ B { }
+ C { any Lout object }
+@Rowa
+ A { rightcaption }
+ B { }
+ C { any Lout object }
+@Rowa
+ A { abovecaption }
+ B { }
+ C { any Lout object }
+@Rowa
+ A { belowcaption }
+ B { }
+ C { any Lout object }
+@Rowa
+ A { leftgap }
+ B { 0.5c }
+ C { any length }
+@Rowa
+ A { rightgap }
+ B { 0.5c }
+ C { any length }
+@Rowa
+ A { abovegap }
+ B { 0.5c }
+ C { any length }
+@Rowa
+ A { belowgap }
+ B { 0.5c }
+ C { any length }
+@Rowa
+ A { hidecaptions }
+ B { yes }
+ C { @Code no or @Code yes }
+@Rowa
+ A { weight }
+ B { 10 }
+ C { Any positive number }
+@Rowa
+ A { paint }
+ B { none }
+ C { @Code none or any colour (Section @NumberOf { colour }) }
+@Rowa
+ A { texture }
+ B { solid }
+ C { Any texture (Section @NumberOf { textures }) }
+@Rowa
+ A { outlinestyle }
+ B { solid }
+ C { {@Code solid}, @Code {dashed}, @Code {cdashed}, @Code { dotted },
+or @Code { noline } }
+@Rowa
+ A { outlinedashlength }
+ B { 0.2f }
+ C { any length }
+@Rowa
+ A { outlinewidth }
+ B { thin }
+ C { @Code { thin }, @Code { medium }, @Code { thick }, or any length }
+@Rowa
+ A { detach }
+ B { no }
+ C { {@Code no}, {@Code yes}, or any non-negative number }
+@Rowa
+ A { label }
+ B { }
+ C { any Lout object }
+@Rowa
+ A { labelfont }
+ B { -2p }
+ C { any font as given to @Code "@Font" }
+@Rowa
+ A { labelbreak }
+ B { clines }
+ C { any break style as given to @Code "@Break" }
+@Rowa
+ A { labelmargin }
+ B { 0.2f }
+ C { any length }
+@Rowa
+ A { labelformat }
+ B { "@Body" }
+ C { any Lout object, usually including @Code "@Body" }
+@Rowa
+ A { labelradius }
+ B { internal }
+ C { {@Code internal}, {@Code external}, or any positive number }
+@Rowa
+ A { labeladjust }
+ B { 0c 0c }
+ C { any point (pair of lengths) }
+@Rowa
+ A { finger }
+ B { no }
+ C { @Code no or @Code yes }
+@Rowa
+ A { fingerstyle }
+ B { solid }
+ C { {@Code solid}, @Code {dashed}, @Code {cdashed}, @Code { dotted },
+or @Code { noline } }
+@Rowa
+ A { fingerdashlength }
+ B { 0.2f }
+ C { any length }
+@Rowa
+ A { fingerwidth }
+ B { thin }
+ C { @Code { thin }, @Code { medium }, @Code { thick }, or any length }
+@Rowa
+ A { fingerradius }
+ B { 0.7 }
+ C { any positive number }
+@Rowa
+ A { fingeradjust }
+ B { 0c 0c }
+ C { a point (pair of lengths) }
+@Rowa
+ A { fingerarrow }
+ B { no }
+ C { @Code no or @Code yes }
+@Rowa
+ A { fingerarrowlength }
+ B { 0.6f }
+ C { any length }
+@Rowa
+ A { fingerarrowwidth }
+ B { 0.45f }
+ C { any length }
+}
+The options from @Code "weight" downwards are also the complete
+set of options of the @Code "@Slice" symbol. The value of an
+option is the value given at the @Code "@Slice" symbol, if any;
+otherwise, the value at the enclosing @Code "@Pie" is used
+if any; if it is not given there, the setup file value is used.
+@End @Section
diff --git a/doc/doc/user/preface b/doc/doc/user/preface
new file mode 100644
index 0000000..99310c7
--- /dev/null
+++ b/doc/doc/user/preface
@@ -0,0 +1,71 @@
+@Preface @Begin
+@LP
+This User's Guide brings together in one document everything needed
+for the day-to-day use of Version 3 of the Lout document formatting
+system.
+@IndexLetters
+@PP
+There are three other documents describing Lout: the Expert's Guide
+@Cite { $kingston1995lout.expert }, which you need if you want to add
+new features to Lout; a journal paper on the design and implementation
+of Lout @Cite { $kingston1993lout.design }; and a set of overhead
+transparencies @Cite { $kingston1994lout.overheads } that cover much
+the same ground as this Guide. These documents are all distributed
+with the software.
+@PP
+Lout is distributed free of charge under the GNU Public License. The
+gnu. @Index { GNU Public License }
+primary source is
+@ID @Code "ftp://ftp.it.usyd.edu.au/jeff/lout"
+containing a gzipped tar file of the current version, and various
+other things including a PostScript version of this guide. The
+distribution contains source code, libraries, documentation,
+license, and installation instructions.
+@PP
+A mailing list has been set up for discussion of all topics related to
+Lout. To subscribe (or unsubscribe), visit
+@ID @Code "http://lists.nongnu.org/mailman/listinfo/lout-users"
+After subscribing, to post an item send email to
+{@Code "lout-users@nongnu.org"}; it will be forwarded to all
+subscribers via email. There is also a web
+site at {@Code "http://savannah.nongnu.org/projects/lout"}.
+@PP
+Lout began in 1984 as a research project into the design of a high-level
+language for document formatting. At that time my name for the subject
+was `document layout,' and this terminology survives in the name
+`Lout'. The initial design
+was strongly influenced by Brian W. Kernighan and Lorinda L. Cherry's eqn
+kernighan @Index { Kernighan, Brian W. }
+cherry.l @Index { Cherry, Lorinda L.}
+eqn. @Index { @Code eqn equation formatter }
+equation formatter @Cite { $kernighan1975eqn }, and also by Brian K. Reid's
+Scribe system @Cite { $reid1980scribe }. That
+scribe. @RawIndex { Scribe }
+scribe.influence @SubIndex { influence on Lout }
+reid.b @Index { Reid, Brian K. }
+research phase ended in October 1991 with the first public release.
+@PP
+Since then the system has been steadily improved and extended. Optimal
+paragraph breaking and automatic hyphenation were copied from Donald
+knuth @Index { Knuth, D. E. }
+tex. @Index { @TeX }
+E. Knuth's @TeX system @Cite { $knuth1984tex }, and the optimal paragraph
+breaking algorithm was applied to the problem of producing optimal page
+breaks. The first implementations of horizontal galleys and optimal
+page breaking were by my student Gabor Inokai. Vincent Tan contributed
+the PDF back end. Ludovic Court{@Char egrave}s contributed the
+@Code "@Math" package and set up the current mailing list.
+Valeriy E. Ushakov smoothed the path for many people, by his
+contributions to improving Lout's robustness, and his tireless
+management of and responses to the Lout mailing list. The number of
+other people who have offered comments and suggestions to me is so great
+that it is quite out of my power to acknowledge them individually. I
+hope that seeing their ideas adopted will be thanks enough.
+@DP
+@RLD lines @Break {
+Jeffrey H. Kingston
+School of Information Technologies
+The University of Sydney 2006, Australia
+@Code "jeff@it.usyd.edu.au"
+}
+@End @Preface
diff --git a/doc/doc/user/prg b/doc/doc/user/prg
new file mode 100644
index 0000000..fcda27e
--- /dev/null
+++ b/doc/doc/user/prg
@@ -0,0 +1,160 @@
+@Chapter
+ @Title { Computer Programs }
+ @Tag { cprint }
+@Begin
+@LP
+This chapter describes how to typeset computer program text using Lout
+programs. @Index { programs }
+computer.programs. @RawIndex { computer programs @I see programs }
+along with the @Code prg2lout
+prg2lout. @Index { @Code prg2lout filter program }
+filter program, which is always installed wherever Lout is.
+The available languages are:
+blue. @Index { Blue program printing }
+c. @Index { C and C++ program printing }
+eiffel. @Index { Eiffel program printing }
+haskell. @Index { Haskell program printing }
+java. @Index { Java program printing }
+javascript. @Index { Javascript program printing }
+nonpareil. @Index { Nonpareil program printing }
+perl. @Index { Perl program printing }
+pod. @Index { Pod (for Perl) printing }
+python. @Index { Python program printing }
+rsl. @Index { RSL program printing }
+ruby. @Index { Ruby program printing }
+tcl. @Index { Tcl program printing }
+@CD @Tbl
+ mv { 0.5vx }
+ af { Italic }
+ aformat { @Cell A | @Cell B | @Cell C | @Cell D | @Cell E }
+ bformat { @Cell A | @Cell @Code B | @Cell @Code C | @Cell @Code D | @Cell E }
+{
+@Rowa
+ rb { yes }
+ A { Language name }
+ B { Setup file name }
+ C { Lout symbol }
+ D { Default style }
+ E { ` ' escapes }
+@Rowb
+ A { Blue }
+ B { blue }
+ C { "@Blue" }
+ D { varying }
+ E { Yes }
+@Rowb
+ A { C, C++ }
+ B { cprint }
+ C { "@CP" }
+ D { fixed }
+ E { No }
+@Rowb
+ A { Eiffel }
+ B { eiffel }
+ C { "@Eiffel" }
+ D { varying }
+ E { Yes }
+@Rowb
+ A { Haskell }
+ B { haskell }
+ C { "@Haskell" }
+ D { symbol }
+ E { Yes }
+@Rowb
+ A { Java }
+ B { java }
+ C { "@Java" }
+ D { fixed }
+ E { No }
+@Rowb
+ A { Javascript }
+ B { javascript }
+ C { "@JavaScript" }
+ D { fixed }
+ E { No }
+@Rowb
+ A { Nonpareil }
+ B { np }
+ C { "@Nonpareil" }
+ D { symbol }
+ E { Yes }
+@Rowb
+ A { Perl }
+ B { perl }
+ C { "@Perl" }
+ D { fixed }
+ E { No }
+@Rowb
+ A { Pod }
+ B { pod }
+ C { "@Pod" }
+ D { varying }
+ E { No }
+@Rowb
+ A { Python }
+ B { python }
+ C { "@Python" }
+ D { varying }
+ E { No }
+@Rowb
+ A { RSL }
+ B { rsl }
+ C { "@RSL" }
+ D { symbol }
+ E { Yes }
+@Rowb
+ A { Ruby }
+ B { ruby }
+ C { "@Ruby" }
+ D { fixed }
+ E { No }
+@Rowb
+ A { Tcl }
+ B { tcl }
+ C { "@Tcl" }
+ D { fixed }
+ E { No }
+ rb { yes }
+}
+C and C++ are handled together since, for formatting purposes, they
+differ only in that C++ has some additional keywords plus an extra
+way to make comments. Whenever we mention C from now on, we mean
+both C and C++. See Section {@NumberOf prg_perl} for more on Perl
+and its handmaiden Pod. The second to fifth columns of this table will be
+explained at various points later in this chapter.
+# @FootNote {
+# Prior to Version 3.18 of Lout, this chapter described how to typeset
+# programs written in the C programming language using the
+# @Code c2lout filter, and Eiffel programs using the @Code eif2lout
+# filter. These have now been withdrawn and replaced by {@Code prg2lout},
+# which handles multiple languages. Ordinary Lout documents require no
+# modifications as a result of this change.
+# }
+@PP
+It is possible to simply print out one or more program files independently
+of any document. Alternatively, the program text may be printed as part of
+a larger Lout document. Either way, Lout does not lay out the programs in
+the sense of choosing line breaks and indenting; it uses whatever line
+breaks and indenting you give to the program. What Lout does do is cope
+with characters in the program text that it would ordinarily either reject
+or interpret in some way (braces and so on), ensuring that you can include
+program texts with absolutely no modifications; plus, if you wish, Lout
+will print keywords in bold, identifiers in italics, add line numbers, etc.
+@PP
+It is fairly easy to add new languages: you don't have to write
+executable code, just declare records describing your language.
+There are instructions at the top of file {@I prg2lout.c}.
+@BeginSections
+@Include { prg_lone }
+@Include { prg_embe }
+@Include { prg_opti }
+@Include { prg_chan }
+@Include { prg_tabs }
+@Include { prg_form }
+@Include { prg_comm }
+@Include { prg_prog }
+@Include { prg_pipe }
+@Include { prg_erro }
+@Include { prg_perl }
+@EndSections
+@End @Chapter
diff --git a/doc/doc/user/prg_chan b/doc/doc/user/prg_chan
new file mode 100644
index 0000000..a561e79
--- /dev/null
+++ b/doc/doc/user/prg_chan
@@ -0,0 +1,144 @@
+@Section
+ @Title { Changing the appearance of all programs simultaneously }
+ @Tag { cpsetup }
+@Begin
+@PP
+We have just seen that the {@Code "@CP"}, {@Code "@Eiffel"} etc. symbols
+have many options for changing the appearance of the program text. However,
+most people would not want to have a different style for every program text
+in their document; they want to define the style once at the start, and have
+all their program texts come out in that style without laboriously setting
+options on every symbol. You do this by copying the setup file and
+changing it.
+@PP
+For general information about how to make your own setup file, consult
+Section {@NumberOf setup}. The options that determine the default
+values are in the @Code "@Use" clause which occupies most of the setup
+programs. @RawIndex { programs }
+programs.setup @SubIndex { setup files for }
+setup.files. @RawIndex { setup files }
+setup.files.for.programs @SubIndex { for programs }
+file. Here is part of the @Code "@Use" clause from {@Code cprint}:
+@ID @Code @Tbl
+ mv { 0.5vx }
+ aformat { @Cell A | @Cell B | @Cell C }
+ bformat { @Cell { " #" A } | @Cell { "{" B } | @Cell "}" }
+{
+@Rowa A { "@Use { @CPSetup" }
+@Rowb A { "pipe" } B { }
+@Rowb A { "numbered" } B { No }
+@Rowb A { "blanknumbered" } B { Yes }
+@Rowb A { "style" } B { fixed }
+
+@Rowa
+@Rowb A { "fixedfont" } B { Courier }
+@Rowb A { "fixedsize" } B { -1.0p }
+@Rowb A { "fixedline" } B { 1.0vx }
+@Rowb A { "fixedblanklinescale" } B { 1.0 }
+@Rowb A { "fixedspace" } B { lout }
+@Rowb A { "fixedtabin" } B { 8 }
+@Rowb A { "fixedtabout" } B { 8s }
+
+@Rowa
+@Rowb A { "fixedidentifiers" } B { Base }
+@Rowb A { "fixedkeywords" } B { Base }
+@Rowb A { "fixedoperators" } B { Base }
+@Rowb A { "fixednumbers" } B { Base }
+@Rowb A { "fixedstrings" } B { Base }
+@Rowb A { "fixedcomments" } B { Base }
+@Rowb A { "fixedlinenumbers" } B { Base }
+
+@Rowa
+@Rowb A { "fixedidentifiersformat" } B { "@Body" }
+@Rowb A { "fixedkeywordsformat" } B { "@Body" }
+@Rowb A { "fixedoperatorsformat" } B { "@Body" }
+@Rowb A { "fixednumbersformat" } B { "@Body" }
+@Rowb A { "fixedstringsformat" } B { "@Body" }
+@Rowb A { "fixedcommentsformat" } B { "@Body" }
+@Rowb A { "fixedlinenumbersformat" } B { "@Body" }
+
+#@Rowa
+#@Rowa A { "..." }
+#
+#@Rowa
+@Rowa A { "}" }
+}
+The @Code pipe option will be explained in Section {@NumberOf pipes}. The
+options whose name begins with @Code "fixed" apply only when
+@Code style is {@Code fixed}; there are corresponding options, not
+shown, which apply when @Code style is {@Code varying} and {@Code symbol}.
+@PP
+This extract shows that the default value of @Code "numbered" is {@Code No},
+of @Code "blanknumbered" is {@Code Yes}, and of @Code style is {@Code fixed}.
+It also shows the default font family, font face, font size,
+line spacing, blank line scale factor, spacing mode, and tab settings when
+the style is {@Code "fixed"}. The font family name for @Code "fixed" style
+is {@Code "Courier"}, but for the other styles (not shown) it is empty.
+This causes the @Code "fixed" style to always switch to Courier, and the
+other styles to use the same font family as in the surrounding document.
+@PP
+The options from @Code "fixedidentifiers" to @Code "fixedlinenumbers"
+allow you to set the font face to use for each of these parts of your
+program. People who want fixed-width fonts do not usually want very
+exciting font faces either, so the default values above are all
+{@Code "Base"}, but for the {@Code varying} and {@Code symbol} styles,
+the default identifier face is {@Code Slope}, the default keyword
+face is {@Code Bold}, and so on. You can actually give a family name
+before the face name in these options, allowing you to switch font
+families for different parts of the program if you wish.
+@PP
+The @Code fixedidentifiersformat option allows you to make a more
+radical change to the format of identifiers than just the font. Within
+this option, @Code "@Body" stands for the identifier being formatted, and
+by applying Lout symbols to it, you apply them to every identifier. For
+example,
+@ID @Code "fixedidentifiersformat { red @Colour @Body }"
+will cause identifiers to be printed red.
+@FootNote {
+@Code "@Colour" is not a Lout primitive like, say, {@Code "@Font"}; it is
+defined when you write @Code "@SysInclude { doc }" or the equivalent for
+the other document types. This is true of quite a few generally useful
+symbols, including {@Code "@Box"} and {@Code "@I"}. If you want to use
+these symbols here, you must include your setup file @I after
+@Code "@SysInclude { doc }" or whatever, the reverse of the usual
+arrangement, so that they are defined before Lout reads your setup
+file. This is always done when formatting programs independently of
+any document, so you can use these symbols in a setup file given by
+a @Code { -S } command line flag.
+} If you do use exotic formats, remember that in some programming languages,
+comments and even strings may occupy more than one line: {@Code "@Box"},
+for example, will give a logical but probably unwanted result when
+formatting a multi-line string.
+@PP
+As always with setup files, to change a default value, delete the preceding
+@Code "#" and change the part between braces. For example, suppose you are
+happy with @Code "fixed" except that you want bold keywords. Then one line
+needs to be changed, to
+@ID @Code "fixedkeywords { Bold }"
+Or suppose you like @Code "varying" as it stands, but would like it to be
+the default style rather than {@Code "fixed"}. Again, only one line needs
+to be changed, to {@Code "style { varying }"}.
+@PP
+It is probably not a good idea to change the default value of
+@Code { numbered } to {@Code Yes}, because small fragments of
+code within paragraphs will then get line numbers as well as large
+displayed programs. If you do have many large numbered programs as
+well as small fragments, a better approach would be to place
+@ID @OneRow @Code @Verbatim {
+import @CPSetup
+macro @NCP { @CP numbered { Yes } }
+}
+(or the equivalent for your language) in your @Code mydefs file, so that
+you can type @Code "@NCP" instead of {@Code "@CP numbered { Yes }"}. On
+the other hand, it is quite safe to change @Code "blanknumbered" to
+{@Code "No"} or {@Code "NoPrint"} in the setup file; this will cause
+line numbers to be omitted from blank lines whenever there happen to
+be line numbers.
+@PP
+The setup files for the other languages are identical to this one, except
+that the symbol after @Code "@Use" is different, and some of the
+default values may be different. Changing an option affects only the
+language of that setup file; if you have multiple languages you can
+have multiple setup files and change their options quite independently
+of each other.
+@End @Section
diff --git a/doc/doc/user/prg_comm b/doc/doc/user/prg_comm
new file mode 100644
index 0000000..dc7374e
--- /dev/null
+++ b/doc/doc/user/prg_comm
@@ -0,0 +1,77 @@
+@Section
+ @Title { Embedding Lout commands within program comments }
+ @Tag { cpcomm }
+@Begin
+@PP
+It is possible to embed Lout text inside program comments. How this
+programs. @RawIndex { programs }
+programs.loutcode @SubIndex { Lout code embedded in }
+loutcode.programs @Index { Lout code embedded in programs }
+is done could in principle vary from language to language, but in
+every language supported so far it is done by starting off the comment
+with an @Code "@" character. If the language has several ways to get
+a comment, this will work every way. The entire comment after the @Code "@"
+character should then be Lout text. For example, to force Lout to start
+a new page at some point within a C program, place
+@ID @Code "/*@ @NP */"
+at that point. (In this case you can also simply include a formfeed
+character without any comment; see Section {@NumberOf formfeed}
+for more on this.) Or, to make a heading in an Eiffel program, do this:
+@ID @Code "--@ @Display @Heading { treeprint }"
+(Eiffel comments begin with @Code "--" and end at the end of the
+line.) Other possible uses for this feature include index entries and
+margin notes. Incredible as it may seem, you can even write
+@ID @Code "/*@ @CD @Heading { Function @CP { treeprint() } } */"
+with @Code "@CP" and C code inside the Lout code inside the C code. You
+probably can't go further, however, at least not in C, since that would
+require a C comment inside a C comment.
+@PP
+It's possible to get quite long Lout insertions, with a bit of
+care. For example, here's how to get a filled paragraph of text
+into a computer program:
+@ID @OneRow @Code @Verbatim {
+@Eiffel {
+--@@ID ragged @Break {
+--@This program is free software; you can redistribute
+--@it and"/"or modify it under the terms of the
+--@@B { GNU General Public License } as published by
+--@the Free Software Foundation; either Version 2, or
+--@(at your option) any later version.
+--@}
+
+launch(x: APPLICATION) is
+ -- launch the application
+ deferred
+}
+}
+produces
+@ID @OneRow @Eiffel {
+--@@ID ragged @Break {
+--@This program is free software; you can redistribute
+--@it and"/"or modify it under the terms of the
+--@@B { GNU General Public License } as published by
+--@the Free Software Foundation; either Version 2, or
+--@(at your option) any later version.
+--@}
+
+launch(x: APPLICATION) is
+ -- launch the application
+ deferred
+}
+This example relies on the fact that @Code prg2lout passes
+escape comments like these through to Lout absolutely
+untouched. Notice the use of both a display symbol ({@Code "@ID"})
+and a change to the break style ({@Code "ragged @Break"}). If
+the change of break style had been omitted, the break
+style of the surrounding program, {@Code "lines @Break"},
+would have been applied to the displayed paragraph. The
+display symbol is needed because without it the paragraph
+would be an integral part of the surrounding program (which
+is actually considered by Lout to be one paragraph), making
+the @Code "ragged @Break" ineffective since you can't change
+the paragraph style in the middle of a paragraph.
+@PP
+Clearly, use of such escape comments in conjunction with line
+numbers is going to be problematic. No promise is made
+that the result of doing that will make sense.
+@End @Section
diff --git a/doc/doc/user/prg_embe b/doc/doc/user/prg_embe
new file mode 100644
index 0000000..c7d2952
--- /dev/null
+++ b/doc/doc/user/prg_embe
@@ -0,0 +1,90 @@
+@Section
+ @Title { Typesetting computer programs as part of a larger document }
+ @Tag { embedded }
+@Begin
+@PP
+When the program texts are to be part of a larger Lout document,
+the procedure is somewhat different. You need to include the setup file
+appropriate to your language, like this:
+@ID @OneRow @Code {
+"@SysInclude { cprint }"
+"@SysInclude { doc }"
+}
+The @Code cprint setup file includes everything needed to set up for C
+program formatting; for the other languages, consult the second column
+of the table at the start of this chapter.
+@PP
+The program texts within the Lout document are enclosed in braces
+preceded by the Lout symbol from the third column of the table, like
+this for the C language:
+@ID @OneRow @Code @Verbatim {
+@IndentedDisplay @CP {
+#include <stdio.h>
+treeprint(struct tnode *p) /* print tree p recursively */
+{
+ if (p != NULL) {
+ treeprint(p->left);
+ printf(\%4d %s\\n\, p->count, p->word);
+ treeprint(p->right);
+ }
+}
+}
+}
+Although computer programs violate the rules of legal Lout input in many ways,
+these rules are suspended by the {@Code "@CP"}, {@Code "@Eiffel"} etc. symbols,
+allowing the program text to be incorporated with absolutely no
+modifications. The result is
+@ID @OneRow @CP {
+#include <stdio.h>
+treeprint(struct tnode *p) /* print tree p recursively */
+{
+ if (p != NULL) {
+ treeprint(p->left);
+ printf("%4d %s\n", p->count, p->word);
+ treeprint(p->right);
+ }
+}
+}
+We have chosen to use the @Code "@IndentedDisplay" symbol from Section
+{@NumberOf displays} to obtain an indented display, but in fact
+{@Code "@CP"}, {@Code "@Eiffel"} and the rest may appear anywhere at
+all: the result is an object in the usual way, which may go
+anywhere.
+@PP
+It is quite normal to include fragments of programs, particularly
+identifiers, within paragraphs; this is done in the obvious way:
+@ID @OneRow @Code @Verbatim {
+Calling @CP { remove_cooling_rods() } without checking @CP { temp } first
+is not recommended since it may cause the reactor to melt down.
+}
+Use @Code "@OneCol @CP { ... }" (or @Code "@OneCol @Eiffel { ... }" etc. for
+other languages) to prevent the program text being broken across two lines,
+if desired. Hyphenation is on by default in computer programs; however,
+the current language is changed from @Code English or whatever to
+{@Code Programming}, whose hyhenation rules permit hyphenation after
+an underscore character or between a preceding lower-case letter
+and a following upper-case letter, but not elsewhere.
+@PP
+In cases where the program text has unbalanced braces, it is necessary to
+programs. @RawIndex { programs }
+programs.braces @SubIndex { braces in }
+braces. @RawIndex { braces }
+braces.in.program @SubIndex { in program formatting }
+use the alternative form @Code "@CP @Begin ... @End @CP" (or the
+equivalent for other languages), so that Lout does not confuse program
+braces with Lout braces. In that case the program text must not
+contain {@Code "@End"}; and in either case the program text must not
+include @Code "@Include" or @Code "@SysInclude" unless you are really
+including a file at that point (Section {@NumberOf pipes}).
+@PP
+If your Lout document contains program texts in several languages,
+simply add one @Code "@SysInclude" line for each of them and proceed
+as before. If your programming language is not currently supported,
+a viable alternative is
+@ID @Code "@F @Verbatim { ... }"
+This causes the text between braces to be set verbatim in
+a fixed-width font, as explained elsewhere in this guide. This
+method will not handle tab and formfeed characters very well. Again,
+use @Code "@Verbatim @Begin ... @End @Verbatim" if your program text
+contains unbalanced braces.
+@End @Section
diff --git a/doc/doc/user/prg_erro b/doc/doc/user/prg_erro
new file mode 100644
index 0000000..ee4d784
--- /dev/null
+++ b/doc/doc/user/prg_erro
@@ -0,0 +1,43 @@
+@Section
+ @Title { Error messages }
+ @Tag { cpp_erro }
+@Begin
+@PP
+In order to understand the error messages produced by program
+printing, it is necessary to understand that Lout's first step when
+programs. @RawIndex { programs }
+programs.errors @SubIndex { errors }
+errors. @RawIndex { errors }
+errors.in.programs @SubIndex { in program formatting }
+given a program text is to pass it to the separate {@Code prg2lout}
+program for analysis. This separate program is the source of most
+of the error messages associated with program printing.
+@PP
+The {@Code prg2lout} program is quite happy to format a fragment of a
+computer program: there is no need to supply a complete routine, or
+a complete statement, or any such thing. However, it will complain if
+you supply only a fragment of one lexical unit, such as a comment or
+string without its terminating delimiter. It will also complain if
+there is a character that cannot be classified as part of an identifier,
+number, etc. according to the rules of the language as they have been
+given to @Code prg2lout by the implementer. Irrespective of the
+language rules, @Code prg2lout always interprets spaces, tabs, newlines,
+and formfeed characters in the usual way.
+@PP
+If an error message is generated by {@Code prg2lout}, it will contain
+a line and column number counting from the start of the program text
+involved. Lout will precede this error message with a file name,
+line number, and column number pointing to the Lout symbol
+({@Code "@CP"}, {@Code "@Eiffel"} etc.) whose program text caused the
+error message, like this:
+@ID @OneRow @Code @Verbatim {
+lout file "prg_tabs" (from "prg" line 96, from "all" line 46):
+ 56,23: prg2lout 2,1: program text ended within comment
+}
+This is an actual message produced when formatting this chapter. The
+program text in question has only one line, containing an incomplete comment,
+so when @Code "prg2lout" tried to start the second line and found nothing,
+it complained as shown. In general, then, you have to add
+{@Code "prg2lout"}'s line number to Lout's line number, and use some
+initiative, to find the precise point of the problem.
+@End @Section
diff --git a/doc/doc/user/prg_form b/doc/doc/user/prg_form
new file mode 100644
index 0000000..d76f44e
--- /dev/null
+++ b/doc/doc/user/prg_form
@@ -0,0 +1,57 @@
+@Section
+ @Title { Dealing with formfeed characters in programs }
+ @Tag { formfeed }
+@Begin
+@PP
+The formfeed (Control-L) character is traditionally taken to be a
+programs. @RawIndex { programs }
+programs.formfeeds @SubIndex { formfeed characters in }
+formfeeds.programs @Index { formfeed characters in programs }
+request to start a new page. This is explicitly recognized by the
+formal definition of the C language and many others, which treat
+this character as white space from a language point of view, with
+the understanding that it will cause a page break when printed.
+@PP
+There are no @Code { prg2lout } options for dealing with formfeed
+characters. They will be converted into @Code "@NP" (new page)
+symbols, causing a new page or column to be begun in the printing.
+@PP
+Whether formfeed characters end their line or not is a problem. Consider
+this example, where @Code "^L" stands for one formfeed character:
+@ID @Code @Verbatim {
+abc
+def^Lghi
+jhk
+}
+How many lines does this example contain? Your text editor would
+probably say `three', but when you print it you will see four. It
+is not desirable to have printed programs (especially those with
+line numbers attached) disagreeing with text editors about line
+numbers. The solution adopted by @Code { prg2lout } to this
+problem is to treat the formfeed character as including a newline,
+but to assign the same line number to both parts of the original line
+(the parts before and after the formfeed). If the part after the
+formfeed is empty (that is, if the formfeed character is immediately
+followed by a newline or another formfeed), and if the formfeed is not
+inside any lexical unit, then the empty line after the formfeed will
+not be printed at all.
+@PP
+The most common case is that of a formfeed character, outside any
+lexical unit, on a line by itself. Let's see what this rule
+produces in the following example of this case:
+@ID @Code @Verbatim {
+abc
+def
+^L
+ghi
+}
+There will be one blank line numbered 3 at the end of the first page,
+and a line numbered 4 and containing @Code ghi at the start of the
+next page. The blank line is a necessity, at least when lines are
+being numbered, because we want the last line in the example to be
+numbered 4 to agree with text editors, but we don't want the line
+numbers on our print to skip from 2 on the first page to 4 on the
+second, because that would make readers anxious about the apparently
+missing line 3. If you don't want that empty line, move the formfeed
+character to the end of the preceding line.
+@End @Section
diff --git a/doc/doc/user/prg_lone b/doc/doc/user/prg_lone
new file mode 100644
index 0000000..dfce1de
--- /dev/null
+++ b/doc/doc/user/prg_lone
@@ -0,0 +1,57 @@
+@Section
+ @Title { Typesetting computer programs independently of any document }
+ @Tag { alone }
+@Begin
+@PP
+Printing of program files independently of any document is done by
+programs. @RawIndex { programs }
+programs.standalone @SubIndex { stand-alone }
+standalone.programs @Index { stand-alone programs }
+the Unix pipeline
+@ID @Code "prg2lout -l language options files | lout -s > out.ps"
+where @Code language stands for any one of the programming language
+names in the first column of the table above. As usual with Lout, the
+output will be a PostScript file. Each input file will begin on a new
+page of the output, starting with its name in bold type. The @Code options
+are
+@WideTaggedList
+@TI { {@Code-p}{@I style} } {
+Select a printing style (Section {@NumberOf embedded}), either
+{@Code -pfixed}, {@Code -pvarying}, or {@Code -psymbol}. The default
+value varies with the language, as shown in the fourth column of the
+table above.
+}
+@TI { @Code -n } {
+Do not print file names.
+}
+@TI { {@Code -f}{@I font} } {
+Select a font family. The default is @Code "-fCourier" for
+{@Code -pfixed}, and @Code "-fTimes" otherwise.
+}
+@TI { {@Code -v}{@I vsize} } {
+Select an inter-line spacing size in Lout units. The default is
+@Code -v1.1fx meaning 1.1 times the font size measured from baseline
+to baseline.
+}
+@TI { {@Code -b}{@I number} } {
+Select a blank line scale factor, usually a number between 0.5 and 1.0,
+indicating the factor by which the usual amount of white space inserted
+to represent a blank line is to be reduced. The default is @Code { 1.0 },
+meaning no reduction.
+}
+@TI { {@Code -L}{@I number} } {
+Add line numbers to the print, starting with {@I number}, or
+1 if {@I number} is omitted.
+}
+@TI { {@Code -N} } {
+Do not print line numbers at the start of blank lines.
+}
+@TI { {@Code -S}{@I file} } {
+Use @I file as the setup file for printing your language. This allows
+you to change all the options mentioned in subsequent sections, rather
+than just the few given here.
+}
+@EndList
+There are also {@Code -t} and {@Code -T} options for dealing with tab
+characters (Section {@NumberOf tabs}).
+@End @Section
diff --git a/doc/doc/user/prg_opti b/doc/doc/user/prg_opti
new file mode 100644
index 0000000..733126b
--- /dev/null
+++ b/doc/doc/user/prg_opti
@@ -0,0 +1,172 @@
+@Section
+ @Title { Changing the appearance of a program }
+ @Tag { prg_opti }
+@Begin
+@PP
+The {@Code "@CP"}, {@Code "@Eiffel"} etc. symbols have a number of
+options for changing the appearance of the printed program. These
+options are the same for all symbols, although their default values
+may vary. The @Code "style" option changes the printing style; its
+programs. @RawIndex { programs }
+programs.style @SubIndex { @Code "style" option }
+style. @RawIndex { @Code "style" option }
+style.in.programs @SubIndex { in programs }
+programs. @RawIndex { programs }
+programs.fixed @SubIndex { @Code "fixed" style }
+fixed.programs @Index { @Code "fixed" style (programs) }
+value may be {@Code "fixed"} (fixed-width font), {@Code "varying"}
+programs. @RawIndex { programs }
+programs.varying @SubIndex { @Code "varying" style }
+varying.programs @Index { @Code "varying" style (programs) }
+programs. @RawIndex { programs }
+programs.symbol @SubIndex { @Code "symbol" style }
+symbol.programs @Index { @Code "symbol" style (programs) }
+(varying-width font), or {@Code "symbol"} (varying-width font with
+mathematical symbols used for some operators). Its default value
+depends on the language, and may be found in the fourth column of
+the table at the start of this chapter. The example in the previous
+section was in @Code fixed style; we can switch styles like this:
+@ID @OneRow @Code @Verbatim {
+@CP
+ style { varying }
+{
+#include <stdio.h>
+treeprint(struct tnode *p) /* print tree p recursively */
+{
+ if (p != NULL) {
+ treeprint(p->left);
+ printf(\%4d %s\\n\, p->count, p->word);
+ treeprint(p->right);
+ }
+}
+}
+}
+The result in this case will be
+@ID @OneRow @CP style { varying }
+{
+#include <stdio.h>
+treeprint(struct tnode *p) /* print tree p recursively */
+{
+ if (p != NULL) {
+ treeprint(p->left);
+ printf("%4d %s\n", p->count, p->word);
+ treeprint(p->right);
+ }
+}
+}
+If we use @Code "style { symbol }" we get this:
+@ID @OneRow @CP style { symbol }
+{
+#include <stdio.h>
+treeprint(struct tnode *p) /* print tree p recursively */
+{
+ if (p != NULL) {
+ treeprint(p->left);
+ printf("%4d %s\n", p->count, p->word);
+ treeprint(p->right);
+ }
+}
+}
+with mathematical symbols replacing some of the operators.
+@PP
+The {@Code "@CP"}, {@Code "@Eiffel"} etc. symbols have additional options
+which allow a finer control over the style. Here they all are, with their
+default values:
+@ID @OneRow @Code @Verbatim {
+@CP [ or @Eiffel, @Blue, etc. ]
+ pipe {}
+ numbered { No }
+ blanknumbered { Yes }
+ style { fixed }
+ font { Courier }
+ size { -1.0p }
+ line { 1.0vx }
+ blanklinescale { 1.0 }
+ space { lout }
+ tabin { 8 }
+ tabout { 8s }
+ identifiers { Base }
+ keywords { Base }
+ operators { Base }
+ numbers { Base }
+ strings { Base }
+ comments { Base }
+{
+ ...
+}
+}
+Apart from {@Code "pipe"}, {@Code "numbered"} and {@Code "blanknumbered"},
+the default values shown are for @Code "style { fixed }" only; the other
+styles have other defaults (Section {@NumberOf cpsetup}). For the
+{@Code "pipe"} option, see Section {@NumberOf pipes}.
+@PP
+The value of {@Code "numbered"} may be {@Code "No"} (the default),
+{@Code "Yes"}, or a number, and it determines whether or not
+programs. @RawIndex { programs }
+programs.numbered @SubIndex { @Code "numbered" option }
+numbered.programs @Index { @Code "numbered" option (programs) }
+line numbers are to be added, and if so the value of the first one.
+If @Code "numbered" is {@Code "Yes"}, then the {@Code "blanknumbered"}
+option becomes relevant, and it determines whether blank lines are to
+programs. @RawIndex { programs }
+programs.blanknumbered @SubIndex { @Code "blanknumbered" option }
+blanknumbered.programs @Index { @Code "blanknumbered" option (programs) }
+receive line numbers or not. It has three acceptable values: {@Code "Yes"},
+the default value, meaning that blank lines are printed with line numbers,
+just like other lines; {@Code No}, meaning that blank lines are not
+assigned line numbers; and {@Code NoPrint}, meaning that blank lines
+are assigned line numbers but these are not printed, so that the line
+numbers printed before and after a blank line will differ by 2.
+@PP
+The {@Code "style"} option is already familiar. Next comes {@Code "font"},
+which determines the font family to use, {@Code "size"},
+programs. @RawIndex { programs }
+programs.font @SubIndex { @Code "font" option }
+font.option. @RawIndex { @Code "font" option }
+font.option.in.programs @SubIndex { in program formatting }
+programs. @RawIndex { programs }
+programs.size @SubIndex { @Code "size" option }
+size.programs @Index { @Code "size" option (programs) }
+programs. @RawIndex { programs }
+programs.line @SubIndex { @Code "line" option }
+line.programs @Index { @Code "line" option (programs) }
+the font size to use, {@Code "line"}, the inter-line spacing,
+{@Code "blanklinescale"}, a scale factor by which the usual
+programs. @RawIndex { programs }
+programs.blanklinescale @SubIndex { @Code "blanklinescale" option }
+blanklinescale.programs @Index { @Code "blanklinescale" option (programs) }
+height of blank lines without printed line numbers is reduced (as in the
+option to the @Code "@Break" symbol of the same name), and {@Code "space"}, the
+spacing mode (as for the @Code "@Space" symbol of Section {@NumberOf white}).
+programs. @RawIndex { programs }
+programs.space @SubIndex { @Code "space" option }
+space.programs @Index { @Code "space" option (programs) }
+The default value of @Code "size" asks for one point smaller than in the
+surrounding document; this was done to compensate for Courier's relatively
+large appearance compared to other fonts of the same nominal size.
+@PP
+The @Code "tabin" and @Code "tabout" options are the subject of
+Section {@NumberOf tabs}. After them come six options giving the
+particular font faces in which to print identifiers, keywords, operators,
+programs. @RawIndex { programs }
+programs.identifiers @SubIndex { @Code "identifiers" option }
+identifiers.programs @Index { @Code "identifiers" option (programs) }
+programs. @RawIndex { programs }
+programs.keywords @SubIndex { @Code "keywords" option }
+keywords.programs @Index { @Code "keywords" option (programs) }
+programs. @RawIndex { programs }
+programs.operators @SubIndex { @Code "operators" option }
+operators.programs @Index { @Code "operators" option (programs) }
+programs. @RawIndex { programs }
+programs.numbers @SubIndex { @Code "numbers" option }
+numbers.programs @Index { @Code "numbers" option (programs) }
+programs. @RawIndex { programs }
+programs.strings @SubIndex { @Code "strings" option }
+strings.programs @Index { @Code "strings" option (programs) }
+programs. @RawIndex { programs }
+programs.comments @SubIndex { @Code "comments" option }
+comments.programs @Index { @Code "comments" option (programs) }
+numbers, strings, and comments. {@Code "Base"} means the basic face; other
+commonly available choices are {@Code "Slope"} and {@Code "Bold"}. These
+options may all be set to different faces if desired.
+@End @Section
diff --git a/doc/doc/user/prg_perl b/doc/doc/user/prg_perl
new file mode 100644
index 0000000..e1fa0d6
--- /dev/null
+++ b/doc/doc/user/prg_perl
@@ -0,0 +1,126 @@
+@Section
+ @Title { Notes on Perl and Pod }
+ @Tag { prg_perl }
+@Begin
+@PP
+The Perl programming language
+programs. @RawIndex { programs }
+programs.perl @SubIndex { Perl problems }
+perl.programs @Index { Perl problems (programs) }
+@FootNote { My thanks to Mark Summerfield for help with Perl and Pod. }
+is quite a difficult one for the @Code { prg2lout } program to deal with,
+and our boast that programs can be included with `absolutely no
+modifications' is not quite true for Perl.
+@PP
+Here is the complete list of problem areas. In most cases their
+effect is to get the formatting wrong over a short region, which is not
+perhaps so disastrous; and it should be easy to modify your Perl program
+without changing its meaning, to work around these problems. After all,
+in Perl there is always more than one way to do it.
+@NumberedList
+
+@LI {
+@I Here-documents such as
+@ID @Verbatim {
+<<"EOF"
+These lines will be read as though
+enclosed in double quotes
+EOF
+}
+will be handled correctly only if the string appearing immediately after
+the @Perl { << } operator (that is, the string used to terminate the
+here-document) is one of @Perl { EOF }, @Perl { EOT }, @Perl { END },
+and the empty string, all optionally enclosed in quotes of any of the
+three kinds. If this condition is not met, then the here-document will
+be treated as Perl program text. If the condition is met, there is still
+another problem: the @Perl { << } symbol and everything after it on the
+same line will be treated (incorrectly) as a string. The worst consequence
+of this is that stacked here-documents will not be printed properly.
+}
+
+@LI {
+When @Code { prg2lout } is scanning the program text looking for the
+beginning of a lexical unit, it may come upon a @Code "/" character,
+and this @I initial @Code "/" (not subsequent ones in the same lexical
+unit) it finds difficult to interpret, since it may be the beginning
+of a regular expression, to be formatted like a string, or it may be a
+complete lexical unit denoting division. The program chooses the regular
+expression (or equivalently, string) interpretation if the @Code "/"
+character is immediately preceded by @Code { "q" }, @Code { "qq" },
+@Code { "qx" }, @Code { "qw" }, @Code { "qr" }, @Code { "m" },
+@Code { "s" }, @Code { "y" }, or @Code { "tr" }. It also chooses the
+regular expression interpretation if the @Code "/" character appears
+at the start of a line, or if it is immediately preceded by zero, one,
+or two space or tab characters, which are themselves immediately preceded
+by a complete lexical unit which is one of @Code { "(" }, @Code { "=" },
+@Code { "=~" }, @Code { "!~" }, @Code { "split" }, @Code { "if" },
+@Code { "and" }, @Code { "&&" }, @Code { "or" }, @Code { "||" },
+@Code { "not" }, @Code { "!" }, @Code { "unless" },
+@Code { "for" }, @Code { "foreach" }, and @Code { "while" }. Otherwise
+it chooses the division interpretation. In the rare cases where this
+rule fails, you can force @Code { prg2lout } to choose the regular expression
+interpretation by placing an @Code { m } in front of the initial @Code "/"
+(this does not change the meaning of the program), and you can force the
+division interpretation by placing at least three spaces before the
+@Code "/" character.
+}
+
+@LI {
+Substitution expressions, even such lexically complex ones as
+@Perl { s{{@D}}[{@I}] }, are handled correctly. However,
+@Code { prg2lout } does not understand that the letters @Code "gimosx"
+in any combination appearing immediately after a substitution
+expression are part of it; it treats them as the start of a new lexical
+unit. This new unit will usually be taken to be an identifier, which
+is harmless enough, but occasionally it is taken to be something
+else. For example, in
+@ID @Code @Verbatim { s///s; }
+the trailing @Code "s" will be mistaken for the start of a new
+substitution expression, with @Code ";" delimiting the first
+pattern. This particular example can be fixed by inserting a
+space before the semicolon.
+}
+
+@EndList
+Further work may eliminate some of these problems.
+@PP
+The Pod language is used by Perl programmers for creating documentation,
+programs. @RawIndex { programs }
+programs.pod @SubIndex { Pod problems }
+pod.programs @Index { Pod problems (programs) }
+and may be found within Perl programs or standing alone. Lout supports
+both arrangements without any special action by the user. At the
+beginning of the @Code perl setup line, the following line has been placed:
+@ID @Code "@SysInclude { pod }"
+Thus, asking for Perl always gives you Pod as well. If you are using
+your own setup files for both languages, it is probably better to
+break this connection by deleting this line from your copy of the
+@Code perl setup file and placing
+@ID @OneRow @Code {
+"@Include { mypod }"
+"@Include { myperl }"
+}
+at the start of your document in the usual way.
+@PP
+Because Pod is a documentation language rather than a programming
+language, the setup file options listed in Section {@NumberOf cpsetup}
+do not really apply. So for Pod only these have been discarded and replaced
+by a completely different set of options, controlling such things as
+the size of headings and the gaps between list items, which you can
+find documented in the @Code { pod } setup file.
+@PP
+If you ask for line numbers on a Pod program, or on a Perl program that
+contains Pod, any text blocks in the Pod that would otherwise have
+appeared as filled paragraphs will come out with the line breaks in
+the source respected, and lines numbered accordingly. Because
+@Code "prg2lout" attaches line numbers before Lout breaks paragraphs,
+it is not possible to number the lines after paragraph breaking.
+@PP
+Owing to problems behind the scenes, if a Pod inclusion in a Perl
+program has unbalanced braces, @Code "prg2lout" is forced to insert
+braces into the Pod text to make them balance. It will insert a
+left brace directly before any unbalanced right brace, and it will
+insert right braces at the end of the Pod inclusion to balance any
+preceding unbalanced left braces. It will tell you if it has to do
+this. This problem does not afflict Pod when used as a separate language.
+@End @Section
diff --git a/doc/doc/user/prg_pipe b/doc/doc/user/prg_pipe
new file mode 100644
index 0000000..ea45fbd
--- /dev/null
+++ b/doc/doc/user/prg_pipe
@@ -0,0 +1,70 @@
+@Section
+ @Title { Reading and selecting program text from separate files }
+ @Tag { pipes }
+@Begin
+@PP
+We have said that program text within @Code "@CP { ... }" and the other
+programs. @RawIndex { programs }
+programs.include @SubIndex { @Code "@Include" within }
+include.programs @Index { @Code "@Include" within programs }
+symbols is passed directly to @Code prg2lout for analysis. However,
+there is an exception. The program text may contain an
+@Code "@Include" or @Code "@SysInclude" command, which, as for the
+@Code "@Verbatim" symbol (Section {@NumberOf verbatim}), causes Lout
+to take the program text from a file:
+@ID @OneRow @Code {
+"@Eiffel"
+"{"
+" @Include { \"/usr/staff/jeff/Eiffel/hash.e\" }"
+"}"
+}
+The included file is not examined for balanced braces or @Code "@End" or
+{@Code "@Include"}; it is treated entirely verbatim and passed straight
+on to {@Code prg2lout}. There may be several @Code "@Include" commands,
+and any amount of program text as well, within @Code "@CP { ... }" and
+the rest.
+@PP
+When including files in this way it often happens that only part of an
+actual program file is wanted for display. Rather than placing the
+wanted part in a separate file, which is error-prone and tedious when
+the program is changing, Unix users can use the @Code "pipe" option
+programs. @RawIndex { programs }
+programs.pipe @SubIndex { @Code "pipe" option }
+pipe.programs @Index { @Code "pipe" option (programs) }
+to pipe the entire file through an arbitrary sequence of Unix commands,
+which may be used to make the wanted selection before the program text
+is passed to {@Code prg2lout}.
+@PP
+For example, suppose that all your Eiffel routines begin with the
+routine name one tab stop from the left margin and end at the first
+following @Eiffel { end } indented two tab stops. Then
+@ID @OneRow @Code {
+"@Eiffel"
+" pipe { \"sed -n /^.insert/,/^..end/p\" }"
+"{"
+" @Include { \"/usr/staff/jeff/Eiffel/hash.e\" }"
+"}"
+}
+will select just the @Eiffel { insert } routine from the @Code { hash.e }
+file. Assuming that your program text has been laid out in a
+disciplined manner, every line of the selection will begin with a
+tab character that is not wanted in this display, so an even better
+pipe is
+@ID @OneRow @Code {
+"@Eiffel"
+" pipe { \"sed -n /^.insert/,/^..end/p | cut -c2-\" }"
+"{"
+" @Include { \"/usr/staff/jeff/Eiffel/hash.e\" }"
+"}"
+}
+since it cuts away the unwanted tab characters. Unfortunately, we
+can't show the result of this on an actual example, since that would
+prevent this manual from being formatted on a non-Unix system.
+@PP
+When using @Code "pipe" it is also possible to omit {@Code "@Include"}
+and use the pipe to get the file as well as select from it:
+@ID @OneRow @Code {
+"@Eiffel pipe { \"cat /usr/staff/jeff/Eiffel/hash.e | sed -n /^.insert/,/^..end/p | cut -c2-\" } {}"
+}
+This pipes nothing into the {@Code cat} command, which does no harm.
+@End @Section
diff --git a/doc/doc/user/prg_prog b/doc/doc/user/prg_prog
new file mode 100644
index 0000000..398dd29
--- /dev/null
+++ b/doc/doc/user/prg_prog
@@ -0,0 +1,38 @@
+@Section
+ @Title { Embedding program text within program comments }
+ @Tag { cpp_prog }
+@Begin
+@PP
+The standard reference for the Eiffel language @Cite { $meyer1992eiffel }
+programs. @RawIndex { programs }
+programs.programtext @SubIndex { program text in comments }
+programtext.programs @Index { program text in program comments }
+specifies that identifiers within comments may or should be enclosed
+in ` and ' so that they may be noticed and printed in an italic
+font:
+@ID @OneRow @Code @Verbatim {
+@ID @Eiffel {
+deposit(amount: REAL) is
+ -- deposit `amount' dollars
+}
+}
+produces
+@ID @OneRow @Eiffel {
+deposit(amount: REAL) is
+ -- deposit `amount' dollars
+}
+This has been generalized in Lout: arbitrary text within an
+Eiffel comment between ` and ' will be treated as Eiffel text and
+printed accordingly. Some other languages may also offer this
+feature: see the fifth column of the table at the start of this
+chapter. In principle the precise means of getting it could vary
+from language to language, but the languages available at the moment
+either do not have it at all, or else they use ` and ' like Eiffel.
+@PP
+On the subject of Eiffel, the Eiffel reference @Cite { $meyer1992eiffel }
+has some quite detailed style guidelines, and these have been closely
+followed in the implementation of the @Code "@Eiffel" symbol. In
+particular, @Code "@Eiffel" prints dots larger than usual when they
+denote feature calls, as the example @OneCol @Eiffel { account.deposit(20) }
+shows.
+@End @Section
diff --git a/doc/doc/user/prg_tabs b/doc/doc/user/prg_tabs
new file mode 100644
index 0000000..f3ffa67
--- /dev/null
+++ b/doc/doc/user/prg_tabs
@@ -0,0 +1,76 @@
+@Section
+ @Title { Dealing with tab characters in programs }
+ @Tag { tabs }
+@Begin
+@PP
+Tab characters provide a convenient way to indent and align parts of
+programs. @RawIndex { programs }
+programs.tab.characters @SubIndex { tab characters }
+tab.characters.programs @Index { tab characters in programs }
+computer programs. With care, this alignment can be preserved in the final
+print even with varying-width fonts.
+@PP
+The distance between two tab stops in the program text is by default taken
+to be 8 characters, which is standard for Unix. This can be changed with
+programs. @RawIndex { programs }
+programs.tabin @SubIndex { @Code "tabin" option }
+tabin.programs @Index { @Code "tabin" option (programs) }
+the @Code "tabin" option. For example,
+@ID @Code "@CP tabin { 4 }"
+informs Lout that tab stops occur every 4 characters in the program
+text. All the symbols ({@Code "@CP"}, {@Code "@Eiffel"}, etc.) and
+their setup files have this option and the next; but to save repetition
+we will stick with C for the rest of this section.
+@PP
+The distance between two tab stops on the printed page is quite a different
+thing, and it is determined by the value of the @Code "tabout" option, which
+programs. @RawIndex { programs }
+programs.tabout @SubIndex { @Code "tabout" option }
+tabout.programs @Index { @Code "tabout" option (programs) }
+must be a Lout length. For example,
+@ID @Code "@CP tabout { 0.5i }"
+requests that tab stops be placed at half-inch intervals. In other
+words, a distance of one tab stop in the program text will be equivalent to a
+distance of half an inch on the printed page. For example,
+@ID @Code "@CP style { varying } tabout { 3f } numbered { Yes }"
+might produce the following, where tab characters in the program text
+have been used for indenting and also to align the comments:
+@ID @OneRow @CP style { varying } tabout { 3f } numbered { Yes } {
+struct tnode { /* the basic node */
+ char *word; /* points to the text */
+ int count; /* number of occurrences */
+ struct tnode *left; /* left child */
+ struct tnode *right; /* right child */
+};
+}
+We've used @Code "numbered { Yes }" to demonstrate that the features
+for dealing with tabs work even with line numbers. The value {@Code "3f"}
+means three times the current font size, and it is the default value of
+@Code "tabout" for the @Code { varying } and @Code { symbol } styles
+(Section {@NumberOf cpsetup}). In a 12 point font this is 36 points,
+or half an inch.
+@PP
+If @Code "tabout" is too small, there is a danger that the
+alignment might fail. For example,
+@ID @Code "@CP style { varying } tabout { 0.2i }"
+produces
+@ID @OneRow @CP style { varying } tabout { 0.2i } {
+struct tnode { /* the basic node */
+ char *word; /* points to the text */
+ int count; /* number of occurrences */
+ struct tnode *left; /* left child */
+ struct tnode *right; /* right child */
+};
+}
+given the same C text as the previous example. The problem here is that
+we are asking for @CP { /* } to appear four tab stops or 0.8 inches
+from the left edge, and yet the material to its left on the line is
+wider than this. This causes @CP { /* } to be shifted further to the
+right than expected, and the alignment is lost. The only solution is
+to increase {@Code "tabout"}.
+@PP
+When typesetting computer program texts independently of any document,
+there are @Code "-t" and @Code "-T" options to the @Code "prg2lout"
+program equivalent to @Code "tabin" and @Code "tabout" respectively. For
+example, @Code "-T0.5i" produces a half-inch tab width.
+@End @Section
diff --git a/doc/doc/user/ref b/doc/doc/user/ref
new file mode 100644
index 0000000..baf81e7
--- /dev/null
+++ b/doc/doc/user/ref
@@ -0,0 +1,32 @@
+@Chapter
+ @Title { References }
+ @Tag { biblio }
+@Begin
+@LP
+The simple way to make a list of references is to put them in a numbered
+references. @Index { references }
+or tagged list at the end of your document. If you use references only
+rarely, that is probably the best way, but if you use them frequently this
+chapter will save you hours of work in the long run.
+@PP
+Some good principles and many examples have been given by van Leunen
+van.leunen. @Index { van Leunen, Mary-Claire }
+@Cite { $vanleunen1992handbook }. Broadly speaking Lout follows her
+recommendations, with some unification and scaling back as is inevitable
+with software. Scribe @Cite { $reid1980scribe }
+latex. @Index @LaTeX
+scribe. @RawIndex Scribe
+scribe.reference @SubIndex { reference formatting }
+and @LaTeX @Cite { $lamport1986latex } followed the first edition of the
+same source.
+# , so translation from Scribe and @LaTeX references is
+# fairly straightforward.
+@BeginSections
+@Include { ref_sett }
+@Include { ref_cite }
+@Include { ref_labe }
+@Include { ref_entr }
+@Include { ref_chan }
+@Include { ref_crea }
+@EndSections
+@End @Chapter
diff --git a/doc/doc/user/ref_chan b/doc/doc/user/ref_chan
new file mode 100644
index 0000000..d346de3
--- /dev/null
+++ b/doc/doc/user/ref_chan
@@ -0,0 +1,241 @@
+@Section
+ @Title { Changing the appearance of citations and the reference list }
+ @Tag { changeref }
+@Begin
+@PP
+By default, citations appear like this @Cite { $kingston1995lout.expert },
+and the reference list appears like the one at the end of this
+document, with the entries numbered, and sorted by their @Code "@Tag"
+options. This section explains how to change all this, by setting
+options in the setup file.
+@PP
+For a general introduction to setup files and their options, see
+Section {@NumberOf setup}. Here we just describe the setup
+file options that relate to references. Here they are, with their
+default values:
+@ID @OneRow @Code @Verbatim {
+@MakeReferences { Yes }
+@RefCiteStyle { [cite] }
+@RefCiteLabels { @RefNum }
+@RefNumbers { Arabic }
+@RefListFormat { Labels }
+@RefListLabels { [@RefNum] }
+@RefListTitle { references }
+@ChapRefListTitle { references }
+@RefListIndent { 0c }
+@RefListRightIndent { 0c }
+@RefListGap { 1.00v }
+@RefListFont { }
+@RefListBreak { }
+@RefListLabelWidth { 2.00f }
+@RefListSortKey { @Tag }
+}
+references. @RawIndex { references }
+references.makereferences @SubIndex { @Code "@MakeReferences" }
+makereferences.references @Index { @Code "@MakeReferences" (references) }
+Setting @Code "@MakeReferences" to @Code "No" will cause Lout to ignore
+all citation symbols and omit all reference lists.
+@PP
+@Code "@RefCiteStyle" and @Code "@RefCiteLabels" combine to
+references. @RawIndex { references }
+references.refcitestyle @SubIndex { @Code "@RefCiteStyle" }
+refcitestyle.references @Index { @Code "@RefCiteStyle" (references) }
+determine the appearance of citations. The result of each @Code "@Cite"
+symbol is the value of @Code "@RefCiteStyle" with the @Code "cite"
+symbol replaced by the object following the @Code "@Cite" symbol. For
+example, the default value shown above encloses each citation in
+brackets. The @Code "cite" symbol must appear exactly once within
+{@Code "@RefCiteStyle"}.
+@PP
+@Code "@RefCiteLabels" determines the appearance of each label within
+references. @RawIndex { references }
+references.refcitelabels @SubIndex { @Code "@RefCiteLabels" }
+refcitelabels.references @Index { @Code "@RefCiteLabels" (references) }
+the citation. Within it, the @Code "@RefNum" symbol will produce the
+number of the reference, and you may also use any of the options of the
+@Code "@Reference" symbol listed at the beginning of Section
+{@NumberOf entries}:
+@ID @OneRow @Tab
+ @Fmta { @Col @Code A ! @Col B }
+{
+@Rowa
+ A { "@RefCiteLabels { @RefNum }" }
+ B { [3] }
+@Rowa
+ A { "@RefCiteLabels { @Label }" }
+ B { [Kin93] }
+@Rowa
+ A { "@RefCiteLabels { @Author, @Year }" }
+ B { [Jeffrey H. Kingston, 1993] }
+}
+The value of @Code "@RefCiteLabels" may be any object. The @Code "@Label"
+symbol will produce the @Code "label" option of @Code "$" or @Code "@Ref"
+if there is one, rather than the @Code "@Label" option of the reference;
+this @Code "label" option is explained in Section {@NumberOf labelled}.
+@PP
+@Code "@RefNumbers" determines the kind of numbering produced by the
+references. @RawIndex { references }
+references.refnumbers @SubIndex { @Code "@RefNumbers" }
+refnumbers.references @Index { @Code "@RefNumbers" (references) }
+@Code "@RefNum" symbol used within @Code "@RefCiteLabels" above and
+@Code "@RefListLabels" below. Its value may be {@Code Arabic},
+{@Code Roman}, {@Code UCRoman}, {@Code Alpha}, or {@Code UCAlpha}, as
+usual for numbering in Lout. If you don't use {@Code "@RefNum"},
+@Code "@RefNumbers" has no effect.
+@PP
+The remaining eleven setup file options are all concerned with the
+appearance of the reference list. The first, {@Code "@RefListFormat"},
+references. @RawIndex { references }
+references.reflistformat @SubIndex { @Code "@RefListFormat" }
+reflistformat.references @Index { @Code "@RefListFormat" (references) }
+determines the overall format of the list. Here is what its four
+@NoCite { $strunk1979style } possible values do:
+@ID @Tab
+ @Fmta { @Col @Code A ! @Col @OneCol B }
+ vmargin { 0.3v }
+{
+@Rowa
+ A { "@RefListFormat { NoLabels }" }
+ B { @RefPrint strunk1979style }
+@Rowa
+@Rowa
+ A { "@RefListFormat { Labels }" }
+ B { 2f @Wide {{@NumberOf strunk1979style}.} | @RefPrint strunk1979style }
+@Rowa
+@Rowa
+ A { "@RefListFormat { DropLabels }" }
+ B { {@NumberOf strunk1979style}. //1vx
+ 2f @Wide {} | @RefPrint strunk1979style
+ }
+@Rowa
+@Rowa
+ A { "@RefListFormat { InLabels }" }
+ B { {@NumberOf strunk1979style}. &2s @RefPrint strunk1979style }
+}
+@Code "@RefListFormat" is not concerned with the appearance of the
+labels and references, only with where they appear.
+@PP
+@Code "@RefListLabels" determines the appearance of the labels in the
+references. @RawIndex { references }
+references.reflistlabels @SubIndex { @Code "@RefListLabels" }
+reflistlabels.references @Index { @Code "@RefListLabels" (references) }
+reference list (and so has no effect if @Code "@RefListFormat" is
+{@Code "NoLabels"}). It is a combination of @Code "@RefCiteStyle"
+and {@Code "@RefCiteLabels"}; you can use @Code "@RefNum" and all the
+options of @Code "@Reference" within it. The default value,
+@ID @Code "@RefListLabels { @RefNum. }"
+produces a numbered reference list in the style of
+{@Code "@NumberedList"}. Another useful value is
+@ID @Code "@RefListLabels { [@Label] }"
+which produces the @Code "@Label" option of the reference, or the
+@Code "label" option of the citation if there is one, enclosed in
+brackets. If you do switch to non-numeric labels you will need to
+either use @Code "DropLabels" or else increase the
+@Code "@RefListLabelWidth" option described below.
+@PP
+@Code "@RefListTitle" determines the heading placed just before the
+references. @RawIndex { references }
+references.reflisttitle @SubIndex { @Code "@RefListTitle" }
+reflisttitle.references @Index { @Code "@RefListTitle" (references) }
+reference list at the end of the document:
+@ID @Code "@RefListTitle { Further Reading }"
+Two special values, @Code "references" and {@Code "bibliography"},
+produce References and Bibliography in English and their equivalents
+in other languages. @Code "@ChapRefListTitle" is the same as
+references. @RawIndex { references }
+references.chapreflisttitle @SubIndex { @Code "@ChapRefListTitle" }
+chapreflisttitle.references @Index { @Code "@ChapRefListTitle" (references) }
+{@Code "@RefListTitle"}, but applied to the reference list at the end
+of each chapter of a book when @Code "@ChapCite" is used.
+@PP
+{@Code "@RefListIndent"}, {@Code "@RefListRightIndent"}, and
+references. @RawIndex { references }
+references.reflistindent @SubIndex { @Code "@RefListIndent" }
+reflistindent.references @Index { @Code "@RefListIndent" (references) }
+references. @RawIndex { references }
+references.reflistrightindent @SubIndex { @Code "@RefListRightIndent" }
+reflistrightindent.references @Index { @Code "@RefListRightIndent" (references) }
+{@Code "@RefListGap"} determine the left indent, right indent, and gap
+references. @RawIndex { references }
+references.reflistgap @SubIndex { @Code "@RefListGap" }
+reflistgap.references @Index { @Code "@RefListGap" (references) }
+between reference list items, analogously to the {@Code "indent"},
+{@Code "rightindent"}, and {@Code "gap"} options of the @Code "@List"
+symbol (Section {@NumberOf lists}). @Code "@RefListFont" and
+references. @RawIndex { references }
+references.reflistfont @SubIndex { @Code "@RefListFont" }
+reflistfont.references @Index { @Code "@RefListFont" (references) }
+references. @RawIndex { references }
+references.reflistbreak @SubIndex { @Code "@RefListBreak" }
+reflistbreak.references @Index { @Code "@RefListBreak" (references) }
+@Code "@RefListBreak" determine the font and
+paragraph breaking style of the reference list. For example,
+@ID @OneRow @Code @Verbatim {
+@RefListFont { -2p }
+@RefListBreak { 1.2fx outdent }
+}
+switches to a smaller size with outdented paragraphs (these work well
+with {@Code NoLabels}). The empty default values produce the same
+font and break style as in the document as a whole.
+@PP
+@Code "@RefListLabelWidth" determines the distance from the left
+references. @RawIndex { references }
+references.reflistlabelwidth @SubIndex { @Code "@RefListLabelWidth" }
+reflistlabelwidth.references @Index { @Code "@RefListLabelWidth" (references) }
+edge of the labels to the left edge of the references, when
+@Code "@RefListFormat" is @Code Labels or {@Code DropLabels} (it
+has no effect when @Code "@RefListFormat" is @Code NoLabels or
+{@Code "InLabels"}). This is different to {@Code "@RefListIndent"},
+which determines the distance from the edge of the column to the
+left edge of the item.
+@PP
+Particular care is needed when @Code "@RefListFormat"
+is @Code Labels and the labels are non-numeric, for then if the
+labels are too wide they will overstrike the references. The default
+value, {@Code 2.00f}, is twice the current font size. It may be
+changed to any length (Section {@NumberOf objects}). Regrettably,
+Lout is not clever enough to choose a good value by itself.
+@PP
+Finally, @Code "@RefListSortKey" determines the sorting key used when
+references. @RawIndex { references }
+references.reflistsortkey @SubIndex { @Code "@RefListSortKey" }
+reflistsortkey.references @Index { @Code "@RefListSortKey" (references) }
+sort.ref @Index { sorting of reference lists }
+ordering the reference list. The default value,
+@ID @Code "@RefListSortKey { @Tag }"
+sorts by tag. Another possibility is to sort by the
+@Code "@Label" option:
+@ID @Code "@RefListSortKey { @Label }"
+As usual @Code "@Label" will use the value of a @Code "label" option
+to the citation if there is one. To sort by order of first citation, use
+@ID @Code "@RefListSortKey { @CiteOrder }"
+@Code "@CiteOrder" is implemented in a quick and dirty way, and there
+are a couple of problems to watch out for if you use it. First,
+when you cite references more than once you get some strange
+intermediate error messages and results. All such problems will
+be gone by the end of the fifth run. Second, if you insert
+more citations later on, you will need to restart the whole process,
+by deleting the cross reference index file {@I lout.li}, since any
+late insertions get erroneously stuck on the end instead of inserted
+in the correct order. If things go haywire, delete {@I lout.li} then
+do five runs and they should be right again.
+@PP
+@Code "@RefListSortKey" may be any sequence of words
+and options from the @Code "@Reference" symbol, but not @Code "@RefNum"
+for obvious reasons. A possible more elaborate sorting key is
+@ID @Code "@RefListSortKey { @Author:@Year:@Tag }"
+sorting first by author, then by year within each author, and finally
+by tag. However you
+are supposed to choose tags which have this effect, and that is more
+reliable since the modern practice is to put the authors' surnames
+after their given names. There seems to be little practical use for
+sorting keys other than {@Code "@Tag"}, {@Code "@Label"}, and
+{@Code "@CiteOrder"}.
+@PP
+A colon within the @Code "@RefListSortKey" option is converted by Lout
+into a character smaller than any printable character, which ensures that
+the sorting is carried out separately on the three fields. It is essential
+that the sort key uniquely identify the reference, because if two sort
+keys are equal only one of the references will be printed. The easiest
+way to ensure this is to always include @Code "@Tag" in the sort key.
+@End @Section
diff --git a/doc/doc/user/ref_cite b/doc/doc/user/ref_cite
new file mode 100644
index 0000000..c2ea68c
--- /dev/null
+++ b/doc/doc/user/ref_cite
@@ -0,0 +1,100 @@
+@Section
+ @Title { Citation }
+ @Tag { citation }
+@Begin
+@PP
+To cite one or more references, use the @Code "@Cite" symbol like this:
+references. @RawIndex { references }
+references.cite @SubIndex { @Code "@Cite" }
+cite.references @Index { @Code "@Cite" (references) }
+@ID @Code @Verbatim {
+This feature is beyond our scope @Cite { $kingston1995lout.expert, page 97 }.
+}
+The following object must be enclosed in braces. It may be an arbitrary
+object as usual. Within it the @Code "$" character is a symbol with a
+special meaning: it causes a citation to be made of the reference whose
+@Code "@Tag" option is the word following the @Code "$" symbol:
+@ID {
+This feature is beyond our scope @Cite { $kingston1995lout.expert, page 97 }.
+}
+The reference itself will appear automatically in a reference list at
+the end of the document, and the citation(s) will be enclosed in brackets
+as shown. There is no need to write @Code "${kingston1995lout.expert},"
+as would normally be the case, because within @Code "@Cite" special
+arrangements are made to prevent commas and semicolons from being a
+nuisance.
+@PP
+A reference may be cited many times, but it will appear in the
+reference list only once. The references will ordinarily be sorted by
+tag and labelled with Arabic numbers, although this can be changed by
+setting options in the setup file (Section {@NumberOf changeref}).
+@PP
+In books, there is a @Code "@ChapCite" symbol which is
+references. @RawIndex { references }
+references.chap.cite @SubIndex { @Code "@ChapCite" }
+chap.cite.references @Index { @Code "@ChapCite" (references) }
+the same as @Code "@Cite" except that its references come out at the
+end of the current preface, introduction, chapter, or appendix.
+@PP
+A citation may appear in a footnote, figure, table, or index entry.
+The reference will appear in the first reference list after the
+citation point, or if none, in the closest preceding reference list.
+This is fine in documents with just one reference list; but when
+using @Code "@ChapCite" in books, if the citation point appears
+after the intended reference list (because the footnote or figure
+has floated past the reference list at the end of the chapter),
+the reference will come out in the wrong list.
+@PP
+Although it is frowned upon by the authorities, some people include
+references which are not cited anywhere in the body of their document. For
+this there is {@Code "@NoCite"}:
+references. @RawIndex { references }
+references.no.cite @SubIndex { @Code "@NoCite" }
+no.cite.references @Index { @Code "@NoCite" (references) }
+@ID @Code {
+"... our scope @NoCite { $kingston1995lout.expert $kingston1993lout.design }."
+}
+produces
+@ID {
+... our scope @NoCite { $kingston1995lout.expert $kingston1993lout.design }.
+}
+with the @Code "@NoCite" symbol and any preceding space removed. The
+references nevertheless appear in the reference list as usual. If
+you put commas between the references inside @Code "@NoCite" you
+will get commas in the output (so don't). There
+is a @Code "@NoChapCite" symbol that combines @Code "@NoCite" and
+references. @RawIndex { references }
+references.no.chap.cite @SubIndex { @Code "@NoChapCite" }
+no.chap.cite.references @Index { @Code "@NoChapCite" (references) }
+{@Code "@ChapCite"}. For compatibility with previous versions of Lout,
+there is a @Code "@Ref" symbol:
+ref. @Index { @Code "@Ref" (references) }
+@ID @Code "@Ref kingston1995lout.expert"
+is the same as @Code "@Cite { $kingston1995lout.expert }" without the
+brackets. There are analogous {@Code "@ChapRef"}, {@Code "@NoRef"},
+and {@Code "@NoChapRef"}
+chap.ref @Index { @Code "@ChapRef" (references) }
+no.ref @Index { @Code "@NoRef" (references) }
+no.chap.ref @Index { @Code "@NoChapRef" (references) }
+symbols, which are not recommended.
+@PP
+The @Code "@RefPrint" symbol will print a reference on the spot:
+resume. @Index { resumes }
+curriculum. @Index { curriculum vitae }
+references. @RawIndex { references }
+references.refprint @SubIndex { @Code "@RefPrint" }
+refprint.references @Index { @Code "@RefPrint" (references) }
+@ID @Code "@RefPrint kingston1995lout.expert"
+has result
+@ID @RefPrint kingston1995lout.expert
+unrelated to any reference list. For example,
+@ID @OneRow @Code @Verbatim {
+@Heading { Journal Articles }
+@NumberedList
+@LI @RefPrint kingston1985tree
+...
+@LI @RefPrint kingston1993lout.design
+@EndList
+}
+might appear in someone's resume.
+@End @Section
diff --git a/doc/doc/user/ref_crea b/doc/doc/user/ref_crea
new file mode 100644
index 0000000..7a01ac9
--- /dev/null
+++ b/doc/doc/user/ref_crea
@@ -0,0 +1,134 @@
+@Section
+ @Title { Creating your own entry types and formats }
+ @Tag { refstyles }
+@Begin
+@PP
+Although the options of @Code "@Reference" ({@Code "@Tag"},
+{@Code "@Type"}, {@Code "@Author"}, etc.) are fixed, you can add your
+own reference types and change the formatting of existing types. To
+do this you must use your own setup file, as explained in
+Section {@NumberOf setup}. At the end of the setup file is this line:
+references. @RawIndex { references }
+references.refstyle @SubIndex { @Code "@RefStyle" }
+refstyle.references @Index { @Code "@RefStyle" (references) }
+@ID @Code "@SysDatabase @RefStyle { refstyle }"
+This tells Lout to consult a database file of reference styles called
+{@Code "refstyle.ld"}. These are not references, they are formatting
+styles, one for each reference type. The @Code "Sys" in @Code "@SysDatabase"
+references. @RawIndex { references }
+references.sysdatabase @SubIndex { @Code "@SysDatabase" }
+sysdatabase.references @Index { @Code "@SysDatabase" }
+means that this file is stored in the @I { Lout system database directory },
+system.database.dir @Index { system database directory }
+refstyle.ld.file @Index { @Code "refstyle.ld" file}
+which is where all the standard databases are kept. To change the
+formatting of a reference type, or to add your own types, you need to
+create your own reference styles database file by copying and modifying
+{@Code "refstyle.ld"}.
+@PP
+To find out the name of the Lout system database directory, type the
+Unix command
+@ID @Code "lout -V"
+Then, supposing that the Lout system database directory is
+{@Code "/usr/lout/data"}, type
+@ID @Code "cp /usr/lout/data/refstyle.ld mystyle.ld"
+to copy @Code "refstyle.ld" into your
+mystyle.ld.file @Index { @Code "mystyle.ld" file}
+directory, renamed {@Code "mystyle.ld"}. Since @Code "refstyle.ld"
+is read-only, you may need to change @Code "mystyle.ld"
+to be writable (@Code "chmod +w mystyle.ld" in Unix). Now replace
+@ID @Code "@SysDatabase @RefStyle { refstyle }"
+at the end of your setup file by
+@ID @Code "@Database @RefStyle { mystyle }"
+and Lout will read its reference styles from @Code "mystyle.ld" instead
+of {@Code "refstyle.ld"}. Since the two are at
+present identical, this has changed nothing so far; but now any changes
+you make to @Code "mystyle.ld" will affect your document. Changing
+@Code "@SysDatabase" to @Code "@Database" makes Lout search your
+current directory for {@Code "mystyle.ld"}, whereas @Code "@SysDatabase"
+searches only the system directory.
+@PP
+In practice you will probably want to store your database of reference
+styles in some library directory, so that it can be used by
+many documents. A Unix pathname is appropriate for this:
+@ID @Code @Verbatim { @Database @RefStyle { "/usr/jeff/lib/mystyle" } }
+Quotes are needed because of the @Code "/" characters.
+@PP
+The database entries within @Code "refstyle.ld" and @Code "mystyle.ld"
+might look something like this:
+@ID @OneRow @Code @Verbatim {
+{ Book @RefStyle @Style
+ { @Reference&&reftag @Open
+ {
+ @Author. @I @Title. @Publisher, @Year.
+ }
+ }
+}
+}
+The first two lines are beyond our scope, except that @Code "Book"
+identifies this as the entry defining how references of type
+@Code Book appear. Apart from this one word these lines are the
+same in every reference style, so you don't need to understand
+them. The important part is in the middle:
+@ID @Code "@Author. @I @Title. @Publisher, @Year."
+The meaning should be clear: first print the author option and a full
+stop, then the title option and another full stop in italics, and so
+on. To change the @Code Book format, change this object. To create
+a new reference type, copy the whole entry, change @Code Book to a
+new name of your choice, and change the middle part. Delete index
+file @Code "mystyle.li" (if there is one) so that Lout knows to
+regenerate it.
+@PP
+Although the entry shown above is perfectly viable, the real entry for
+@Code Book is much more complicated, in part because there are more
+options than those basic four, but mainly because the real entry goes
+to great lengths to do the right thing when options are omitted:
+@ID @Tab
+ vmargin { 0.5vx }
+ @Fmta { @Col @Code A ! @Col @Code B }
+{
+@Rowa A { "{ Book @RefStyle @Style" }
+@Rowa A { " { @Reference&&reftag @Open" }
+@Rowa A { " {" }
+@Rowa A { " { @Author. {}" } B { "} @If @Author" }
+@Rowa A { " { @I @Title" } B { "} @If @Title" }
+@Rowa A { " { @Word&&notitle" } B { "} @If @Not @Title" }
+@Rowa A { " { , @Pinpoint" } B { "} @If @Pinpoint" }
+@Rowa A { " { , @Word&&pages @NumSep @Pages" } B { "} @If @Pages" }
+@Rowa A { " { , @Word&&page @NumSep @Page" } B { "} @If @Page" }
+@Rowa A { " { . @TitleNote" } B { "} @If @TitleNote" }
+@Rowa A { " { . @HowPublished" } B { "} @If @HowPublished" }
+@Rowa A { " { . @Publisher" } B { "} @If @Publisher" }
+@Rowa A { " { . @Organization" } B { "} @If @Organization" }
+@Rowa A { " { . @Institution" } B { "} @If @Institution" }
+@Rowa A { " { , @Address" } B { "} @If @Address" }
+@Rowa A { " { . @Edition" } B { "} @If @Edition" }
+@Rowa A { " { , @Month @Year" } B { "} @If @Year @And @Month" }
+@Rowa A { " { , @Year " } B { "} @If @Year @And @Not @Month" }
+@Rowa A { " { ." } B { "} @If @True" }
+@Rowa A { " { {} URL @URL." } B { "} @If @URL" }
+@Rowa A { " { {} @Note" } B { "} @If @Note" }
+@Rowa A { " }" }
+@Rowa A { " }" }
+@Rowa A { "}" }
+}
+The meaning is that each object to the left of an @Code "@If" will be
+printed only if the condition to the right of the @Code "@If" is
+true. The condition may contain options, which are considered to be
+true if they are not omitted (non-empty), and it may contain {@Code "@And"},
+{@Code "@Or"}, {@Code "@Not"}, and @Code "@True" with the usual precedence
+and meaning. Sub-conditions may be enclosed in braces if desired, although
+it is best to keep the conditions as simple as possible given the
+complexity of the whole setup.
+@PP
+The objects subject to @Code "@If" are printed with no preceding space;
+any space in the result will be from space within them, not between
+them. This is why @Code "@If @True" is not redundant.
+@PP
+The object @Code "@Word&&notitle" produces @Code "No title" in the
+current language; @Code "@Word&&pages" produces {@Code pages} in the
+current language, and so on. Consult database @Code "standard.ld" for
+standard.ld.file @Index { @Code "standard.ld" file }
+other standard words and phrases, and page {@PageOf numsep} for
+{@Code "@NumSep"}.
+@End @Section
diff --git a/doc/doc/user/ref_entr b/doc/doc/user/ref_entr
new file mode 100644
index 0000000..e5949fc
--- /dev/null
+++ b/doc/doc/user/ref_entr
@@ -0,0 +1,314 @@
+@Section
+ @Title { Constructing database entries }
+ @Tag { entries }
+@Begin
+@PP
+Here is the complete, fixed list of options that you may give to the
+@Code "@Reference" symbol:
+@ID @Tab
+ vmargin { 0.47vx }
+ @Fmta { @Col @Code A ! @Col B }
+{
+@Rowa
+ A { "{ @Reference" }
+@Rowa
+ A { " @Tag {}" }
+ B { Used to cite this reference }
+@Rowa
+ A { " @Type {}" }
+ B { The type of reference, for example {@Code Book}, {@Code Article} }
+@Rowa
+ A { " @Abstract {}" }
+ B { Not used, intended to hold an abstract }
+@Rowa
+ A { " @Address {}" }
+ B { The address of a publisher, organization, or institution }
+@Rowa
+ A { " @Annote {}" }
+ B { Not used, intended for annotations }
+@Rowa
+ A { " @Author {}" }
+ B { The author(s) or editor(s) }
+@Rowa
+ A { " @Day {}" }
+ B { The day of the month, for newspaper articles }
+@Rowa
+ A { " @Edition {}" }
+ B { The edition, for example @Code "Second Edition" }
+@Rowa
+ A { " @HowPublished {}" }
+ B { How something strange has been published }
+@Rowa
+ A { " @InAuthor {}" }
+ B { The author of the work that the cited work appears within }
+@Rowa
+ A { " @InTitle {}" }
+ B { The title of the work that the cited work appears within }
+@Rowa
+ A { " @Institution {}" }
+ B { The institution or school }
+@Rowa
+ A { " @Journal {}" }
+ B { The journal name }
+@Rowa
+ A { " @Keywords {}" }
+ B { Not used, intended to hold keywords }
+@Rowa
+ A { " @Label {}" }
+ B { The label of a labelled reference }
+@Rowa
+ A { " @Month {}" }
+ B { The month of publication or writing }
+@Rowa
+ A { " @Note {}" }
+ B { Any additional helpful information }
+@Rowa
+ A { " @Number {}" }
+ B { The number of a technical report }
+@Rowa
+ A { " @Organization {}" }
+ B { The organization sponsoring the work }
+@Rowa
+ A { " @Page {}" }
+ B { Page number if only one, for example @Code "23" }
+@Rowa
+ A { " @Pages {}" }
+ B { Page numbers if more than one, for example @Code "23--47" }
+@Rowa
+ A { " @Pinpoint {}" }
+ B { A point or part of the work, for example @Code "Chapter VI" }
+@Rowa
+ A { " @Publisher {}" }
+ B { The publisher of the work }
+@Rowa
+ A { " @Title {}" }
+ B { The title of the work }
+@Rowa
+ A { " @TitleNote {}" }
+ B { Additional title information (series, editor, etc.) }
+@Rowa
+ A { " @TRType {}" }
+ B { The type of a technical report, for example @Code "Research Note" }
+@Rowa
+ A { " @URL {}" }
+ B { The URL of the reference }
+@Rowa
+ A { " @Volume {}" }
+ B { The volume of a journal }
+@Rowa
+ A { " @Year {}" }
+ B { The year of publication or writing }
+@Rowa
+ A { "}" }
+}
+Every reference may contain any of these options, although, depending
+on the {@Code "@Type"} option, only some will be printed. You can't give
+an option twice; in particular, multiple authors must be placed
+within one @Code "@Author" option, arranged as you want them to appear. Here
+is the complete set of values that you may give to the @Code "@Type" option:
+@ID @Tab
+ vmargin { 0.5vx }
+ @Fmta { @Col @Code A ! @Col @Code B ! @Col @Code C ! @Col @Code D }
+{
+ @Rowa
+ A { Book }
+ B { TechReport }
+ C { Article }
+ D { InBook }
+ @Rowa
+ A { Proceedings }
+ B { MastersThesis }
+ C {}
+ D { InProceedings }
+ @Rowa
+ A { PhDThesis }
+ B { Misc }
+ C {}
+ D {}
+}
+Each column represents one broad category of reference type: the first
+contains large works; the second contains small works not appearing
+within anything else (although possibly part of a series); the third
+contains small works appearing within an ongoing forum for such works;
+and the fourth contains small works appearing within large works. In each
+case, the reference may be to the work as a whole, or to one point or part
+of it (known as pinpointing).
+@PP
+Some care is needed when choosing the @Code "@Tag" option, since references
+are both cited and sorted by tag. It is best to choose a three-part
+tag consisting of the first author's surname and possibly initial, the
+year of publication, and a brief reminder of the contents:
+@ID @Code "@Tag { kingston1995lout.expert }"
+Keep to lower-case letters, since mixed cases confuse the sorting, and
+give the full four digits of the year to avoid trouble in the year
+2000. Multi-word tags are possible but not recommended.
+@PP
+Unusually for Lout, you can have unquoted @Code "/" and @Code "~"
+references. @RawIndex { references }
+references.url @SubIndex { @Code "@URL" }
+url.references @Index { @Code "@URL" (references) }
+characters inside the @Code "@URL" option:
+@ID @Code "@URL { ftp://ftp.cs.su.oz.au/jeff/lout }"
+In fact it is better not to use quotes because then Lout will
+be able to break lines at @Code "/" characters, which is very useful
+since URLs tend to be long and prone to causing bad line breaks.
+@PP
+Since the types within each broad category are similar, our plan is to
+give one example of each and briefly note how the others differ. Here
+is a @Code Book entry showing all its options:
+references. @RawIndex { references }
+references.book @SubIndex { @Code Book reference type }
+book.references @Index { @Code "Book" reference type }
+@ID @OneRow @Code @Verbatim {
+{ @Reference
+ @Tag { homer.odyssey }
+ @Type { Book }
+ @Author { Homer }
+ @Title { The Odyssey }
+ @TitleNote { Translated by E. V. Rieu }
+ @Pinpoint { Chapter VI }
+ @Pages { 102--111 }
+ @Page { 102 }
+ @Publisher { Penguin Books }
+ @Address { Harmondsworth, Middlesex }
+ @Edition { Penguin Classics Edition }
+ @Month { August }
+ @Year { 1942 }
+ @Note { The date of composition is unknown,
+but is thought to be about the tenth century BC. }
+}
+}
+And here is what it produces:
+@ID @RefPrint homer.odyssey
+The only compulsory options are {@Code "@Tag"}, {@Code "@Type"}, and
+{@Code "@Title"}, and Lout will carefully adjust the formatting to the
+right thing when you omit others. A basic book would have just
+{@Code "@Tag"}, {@Code "@Type"}, {@Code "@Author"}, {@Code "@Title"},
+{@Code "@Publisher"}, and {@Code "@Year"} options.
+@PP
+@Code Proceedings is similar, except you
+references. @RawIndex { references }
+references.proceedings @SubIndex { @Code Proceedings reference type }
+proceedings.references @Index { @Code "Proceedings" reference type }
+may have an @Code "@Organization" or @Code "@Institution" option for
+the sponsoring organization if you wish, and the author will either be
+absent or an editor:
+@ID @Code "@Author { P. W. Lamb, editor }"
+There is no option specifically for editors, translators, and so forth.
+@PP
+@Code PhDThesis is very similar again, with @Code "@Institution"
+references. @RawIndex { references }
+references.phdthesis @SubIndex { @Code PhDThesis reference type }
+phdthesis.references @Index { @Code "PhDThesis" reference type }
+instead of {@Code "@Publisher"}, and the phrase `Ph.D. thesis'
+appearing by magic in the right spot. Like all words and phrases
+introduced automatically by Lout, it will be translated into the current
+language if this is not English.
+@PP
+Moving now to the second broad category, here is a typical {@Code TechReport}:
+references. @RawIndex { references }
+references.techreport @SubIndex { @Code TechReport reference type }
+techreport.references @Index { @Code "TechReport" reference type }
+@ID @OneRow @Code @Verbatim {
+{ @Reference
+ @Tag { christofides1976tsp }
+ @Type { TechReport }
+ @Author { Christofides, N. }
+ @Title { Worst-case analysis of a new heuristic
+for the travelling salesman problem }
+ @Number { 388 }
+ @Institution { Graduate School of Industrial
+Administration, Carnegie-Mellon University }
+ @Address { Pittsburgh, PA }
+ @Year { 1976 }
+}
+}
+Here is the result:
+@ID @RefPrint christofides1976tsp
+The two novelties here are the @Code "@Number" option, which is the
+number of the report, and the `Tech. Rep.' phrase. If you
+need some other phrase instead, use the @Code "@TRType" option:
+@ID @Code "@TRType { Programmer's Manual }"
+or whatever. The phrase will be `Master's Thesis' in the
+current language for type {@Code MastersThesis}, and absent in type
+references. @RawIndex { references }
+references.mastersthesis @SubIndex { @Code MastersThesis reference type }
+mastersthesis.references @Index { @Code "MastersThesis" reference type }
+references. @RawIndex { references }
+references.misc @SubIndex { @Code Misc reference type }
+misc.references @Index { @Code "Misc" reference type }
+{@Code Misc}. You may use the pinpointing options ({@Code "@Pinpoint"},
+{@Code "@Page"}, and {@Code "@Pages"}) and {@Code "@TitleNote"},
+{@Code "@Month"}, and {@Code "@Note"} in the same way as for books.
+@PP
+Journal articles are referenced by journal name, volume, number, and
+page(s):
+references. @RawIndex { references }
+references.article @SubIndex { @Code Article reference type }
+article.references @Index { @Code "Article" reference type }
+@ID @OneRow @Code @Verbatim {
+{ @Reference
+ @Tag { kingston1993lout.design }
+ @Type { Article }
+ @Author { Jeffrey H. Kingston }
+ @Title { The design and implementation of the
+Lout document formatting language }
+ @Journal { Software---Practice and Experience }
+ @Volume { 23 }
+ @Pages { 1001--1041 }
+ @Year { 1993 }
+}
+}
+The result of this is
+@ID @RefPrint kingston1993lout.design
+All are optional, as usual. Notice that @Code "@Pages" and @Code "@Page"
+refer to the whole article so are not available for pinpointing here,
+but you may still use {@Code "@Pinpoint"}.
+@PP
+Finally, small works that appear within large works have @Code "@Author"
+references. @RawIndex { references }
+references.inbook @SubIndex { @Code InBook reference type }
+inbook.references @Index { @Code "InBook" reference type }
+and @Code "@Title" options for the work itself, and @Code "@InAuthor" and
+@Code "@InTitle" for the work that it appears within:
+@ID @OneRow @Code @Verbatim {
+{ @Reference
+ @Tag { rieu1942intro }
+ @Type { InBook }
+ @Author { E. V. Rieu }
+ @Title { Introduction to @I { The Odyssey } }
+ @InAuthor { Homer }
+ @InTitle { The Odyssey }
+ @Publisher { Penguin }
+ @Year { 1942 }
+}
+}
+@Code "@InAuthor" would often be absent or an editor. The result is
+@ID @RefPrint rieu1942intro
+The other options are as for large works. Type @Code InProceedings is
+references. @RawIndex { references }
+references.inproceedings @SubIndex { @Code InProceedings reference type }
+inproceedings.references @Index { @Code "InProceedings" reference type }
+similar to {@Code InBook}.
+@PP
+A database usually has a long life, and some day it might find itself
+used in a document whose language is not the one its original compiler
+had in mind. So a truly meticulous compiler of database entries would
+enclose @I all language-specific options in
+@Code "@Language" symbols:
+@ID @OneRow @Code @Verbatim {
+{ @Reference
+ @Tag { zimand1986size.sets.strings }
+ @Type { Article }
+ @Author { French @Language { M. Zimand } }
+ @Title { English @Language { On the topological size of sets of random strings } }
+ @Journal { German @Language { Zeitschr. f. math. Logik und Grundlagen d. Math. } }
+ @Volume { 32 }
+ @Pages { 81--88 }
+ @Year { 1986 }
+}
+}
+(My apologies to M. Zimand if he or she is not French.) This ensures
+correct hyphenation whatever the language of the document in which the
+reference appears.
+@End @Section
diff --git a/doc/doc/user/ref_labe b/doc/doc/user/ref_labe
new file mode 100644
index 0000000..1cc5644
--- /dev/null
+++ b/doc/doc/user/ref_labe
@@ -0,0 +1,70 @@
+@Section
+ @Title { Labelled (as opposed to numbered) references }
+ @RunningTitle { Labelled references }
+ @Tag { labelled }
+@Begin
+@PP
+Lout ordinarily assigns a number to each reference, and prints this
+references. @RawIndex { references }
+references.labelled @SubIndex { labelled }
+labelled.references @Index { labelled references }
+number beside the reference in the reference list and at the point(s)
+of citation. There is a way to make Lout use a label of your choice
+instead of a number for each reference. First change the following
+setup file options to the values shown (these options are explained
+in Section {@NumberOf changeref}):
+@ID @OneRow @Code @Verbatim {
+@RefCiteLabels { @Label }
+@RefListLabels { @Label. }
+@RefListLabelWidth { 4.00f }
+@RefListSortKey { @Label }
+}
+Then make sure that every reference you cite has a {@Code "@Label"} option:
+references. @RawIndex { references }
+references.label @SubIndex { @Code "@Label" }
+label.references @Index { @Code "@Label" (references) }
+@ID @OneRow @Code @Verbatim {
+{ @Reference
+ @Tag { kingston1995lout.expert }
+ @Type { TechReport }
+ @Label { Kin94 }
+ ...
+}
+}
+@Code "@Label" may contain several words, and even font changes, but not
+an arbitrary object.
+@PP
+The effect of these changes is that your references will now be labelled
+with their @Code "@Label" options instead of with numbers, and they will
+be sorted by label instead of by tag. However, tags are still used when
+citing.
+@PP
+The big problem with labels is that they vary from document to
+document, either because of a change of style or because the usual
+first few letters of the authors' names plus year has to be augmented
+with {@Code a}, {@Code b}, {@Code c} etc. to distinguish publications
+by the same authors in the same year. To help you overcome these
+problems, the @Code "$" symbol has a @Code "label" option:
+@ID @Code {
+"@Cite { $ label { Kin94a } kingston1995lout.expert, ... }"
+}
+The @Code "@Ref" and @Code "@ChapRef" symbols also have a @Code label
+option. If you use this option, it will be used to label the reference
+instead of the @Code "@Label" option from the @Code "@Reference" symbol
+(indeed, the @Code "@Reference" symbol need have no @Code "@Label" option
+in this case). But note that using @Code "label" does not itself give
+you labelled references; you get them with the setup file options as
+explained above.
+@PP
+If your labels turn out to be too wide for the space allowed for them
+in the reference list, you have two alternatives. One is to increase
+the @Code "@RefListLabelWidth" setup file option shown above, since it
+determines this space. The other is to change the @Code "@RefListFormat"
+setup file option to {@Code "DropLabels"}, which produces drop items:
+@ID @OneRow {
+@RawTaggedList
+@DTI { Kin94a. } @RefPrint kingston1995lout.expert
+@RawEndList
+}
+Then it won't matter how wide your labels are.
+@End @Section
diff --git a/doc/doc/user/ref_sett b/doc/doc/user/ref_sett
new file mode 100644
index 0000000..e053ec2
--- /dev/null
+++ b/doc/doc/user/ref_sett
@@ -0,0 +1,114 @@
+@Section
+ @Title { Setting up a bibliographic database }
+ @Tag { databases }
+@Begin
+@PP
+The basic idea is to store your references in a separate
+references. @RawIndex { references }
+references.database.files @SubIndex { database.files }
+database.files.references @Index { database files of references }
+@I { database file }, in a form which does not include formatting
+details such as font changes. This makes it easy to use the same
+references in many documents, and it leaves the formatting to Lout. Here
+is an example of a reference as it would appear in a database file:
+@ID @OneRow @Code @Verbatim {
+{ @Reference
+ @Tag { vanleunen1992 }
+ @Type { Book }
+ @Author { Mary-Claire van Leunen }
+ @Title { A Handbook for Scholars }
+ @Publisher { Oxford }
+ @Edition { Revised Edition }
+ @Year { 1992 }
+}
+}
+references. @RawIndex { references }
+references.reference @SubIndex { @Code "@Reference" }
+reference.references @Index { @Code "@Reference" (references) }
+@Code "@Reference" is a symbol, and {@Code "@Tag"}, {@Code "@Type"},
+{@Code "@Author"}, and so on are its options. The database file as
+a whole consists of a sequence of references, each enclosed in braces
+as shown.
+@PP
+The @Code "@Tag" option is compulsory: since you cite a reference by
+references. @RawIndex { references }
+references.tag @SubIndex { @Code "@Tag" }
+tag.option. @RawIndex { @Code "@Tag" option }
+tag.option.in.references @SubIndex { in references }
+giving its tag, there must be one. The @Code "@Type" option is also
+references. @RawIndex { references }
+references.type @SubIndex { @Code "@Type" option }
+type.references @Index { @Code "@Type" (references) }
+compulsory, since it says whether the reference is to a book, a journal
+article, or whatever, and this determines what other options are
+required. Section {@NumberOf entries} describes all the types provided
+by Lout, and Section {@NumberOf refstyles} explains how to add your own.
+@PP
+Lout database file names must end in {@Code ".ld"}, so now suppose that
+you have made one called
+ld.file @Index { @Code ".ld" file }
+refs.ld.file @Index { @Code "refs.ld" file }
+@Code "refs.ld" and put it in the same directory as your document. Next,
+place
+@ID @Code "@Database @Reference { refs }"
+references. @RawIndex { references }
+references.database @SubIndex { @Code "@Database" }
+database.references @Index { @Code "@Database" (references) }
+at the start of your document, just before {@Code "@Doc"},
+{@Code "@Document"}, {@Code "@Report"}, or whatever. Alternatively,
+you may place it at the end of your setup file. It informs Lout that
+you might be referring to @Code "@Reference" symbols in database
+@Code "refs" (that is, in file {@Code "refs.ld"}).
+@PP
+If you want to maintain a central database, used by many documents, you
+won't want it in the same directory as any one of them. A Unix
+pathname will be more appropriate:
+@ID @Code "@Database @Reference { \"/usr/jeff/lib/refs\" }"
+or whatever. Quotes are needed because of the @Code "/" characters.
+A separate directory is probably safest anyway, since Lout creates
+files ending in @Code ".ld" in the document directory when sorting out
+cross references (Section {@NumberOf cross}), and clearing these out
+using the Unix command
+@ID @Code "rm lout.li *.ld"
+will destroy your valuable database file if it is kept in the same
+directory.
+@PP
+With the database file created and the @Code "@Database" line in place,
+you are ready to start citing references. The first time that the
+references. @RawIndex { references }
+references.database.index.file @SubIndex { database index file }
+database.index.file @Index { database index file }
+index.file @Index { index file }
+database is used, Lout will create an @I { index file } whose purpose
+is to speed up the retrieval of your references. Thanks to this file
+you can have hundreds or even thousands of references in your database,
+without slowing Lout down very much. However, whenever you change your
+database file @I { you must remove its corresponding index file }, so
+that Lout knows to create it afresh.
+@FootNote {
+Lout may be able to use the last modification times of the database
+and index files to decide whether the index file needs to be created
+afresh, saving you the trouble of removing it. Type {@Code "lout -V"}
+to find out whether this is true of your system.
+}
+ The index file is stored in the
+same directory as the database file, and it has the same name except
+that it ends in @Code ".li" rather than @Code ".ld" (e.g.
+li.file @Index { @Code ".li" file }
+{@Code "refs.li"}).
+@PP
+If a separate database file is not convenient for some reason, perhaps
+because you need a self-contained document in a single file, the
+@Code "@Reference" symbols may be incorporated into the document
+itself, anywhere that ordinary text may appear. Nothing will appear
+where they are typed in, but Lout will notice them and treat them as if
+they had come from a database file. In this case no @Code "@Database"
+symbol is needed unless you are referring to a database as well.
+@PP
+You may have multiple databases, like this:
+@ID @OneRow @Code {
+"@Database @Reference { myrefs }"
+"@Database @Reference { \"/usr/pub/refs/theoryrefs\" }"
+}
+Lout will search the databases in the order you list them.
+@End @Section
diff --git a/doc/doc/user/str b/doc/doc/user/str
new file mode 100644
index 0000000..1a285fb
--- /dev/null
+++ b/doc/doc/user/str
@@ -0,0 +1,20 @@
+@Chapter
+ @Title { Documents With Structure }
+ @Tag { structure }
+@Begin
+@BeginSections
+@Include { str_disp }
+@Include { str_list }
+@Include { str_foot }
+@Include { str_marg }
+@Include { str_theo }
+@Include { str_figs }
+@Include { str_larg }
+@Include { str_cros }
+@Include { str_cont }
+@Include { str_glos }
+@Include { str_indx }
+@Include { str_colu }
+@Include { str_defs }
+@EndSections
+@End @Chapter
diff --git a/doc/doc/user/str_colu b/doc/doc/user/str_colu
new file mode 100644
index 0000000..84e1a4c
--- /dev/null
+++ b/doc/doc/user/str_colu
@@ -0,0 +1,40 @@
+@Section
+ @Title { Multiple columns }
+ @Tag { columns }
+@Begin
+@PP
+You can change the number of columns of text per page, and the width of
+columns. @Index columns
+multiple.columns @Index { multiple columns }
+the gap between the columns, by changing these two setup file options:
+columnnumber. @Index @Code "@ColumnNumber"
+columngap. @Index @Code "@ColumnGap"
+@ID @OneRow @Code {
+"@ColumnNumber { 1 }"
+"@ColumnGap { 1.00c }"
+}
+If you are using your own setup file (Section {@NumberOf setup}), you can
+find and change them there. If not, @Code "@ColumnNumber" may be changed
+at the beginning of your document (Section {@NumberOf ordinary}).
+@PP
+@Code "@ColumnNumber" may be any number between 1 and 10, with default
+value 1 as shown, and @Code "@ColumnGap" may be any length (Section
+{@NumberOf objects}). The column width is derived from these options
+column.width @RawIndex { column width }
+column.width.in.pages @SubIndex { in pages }
+using the obvious formula
+@ID @Math { columnwidth = { pagewidth - margins -
+({@Code "@ColumnNumber"} - 1) times {@Code "@ColumnGap"} }
+over @Code "@ColumnNumber"
+}
+You must ensure that this comes to something reasonable.
+@PP
+These two options do not apply to pages containing an index. For them
+there are similar setup file options called @Code "@IndexColumnNumber"
+and @Code "@IndexColumnGap" (Section {@NumberOf indexes}).
+@PP
+Most document types permit you to have multiple columns, but certain
+things will be kept full width regardless of the @Code "@ColumnNumber"
+option: figures and tables, chapter headings, and so on. The details
+vary with the document type, so are deferred to Chapter {@NumberOf types}.
+@End @Section
diff --git a/doc/doc/user/str_cont b/doc/doc/user/str_cont
new file mode 100644
index 0000000..f14cde7
--- /dev/null
+++ b/doc/doc/user/str_cont
@@ -0,0 +1,101 @@
+@Section
+ @Title { Tables of contents }
+ @Tag { contents }
+@Begin
+@PP
+Lout takes note of the titles of all your large-scale structure symbols
+contents. @Index { contents, tables of }
+tables.zzz.of.contents. @Index { tables of contents }
+(Section {@NumberOf largescale}) and what pages they begin on, and it
+uses this information to produce a table of contents like the one at
+the start of the present document. It is totally automatic; you do
+nothing.
+@PP
+Some details of the appearance of the table of contents, including
+whether to make one or not, are controlled by options in the setup
+file. The default setting is to make one in books but not to in
+other types of documents, but by changing the setup file you can have
+a table of contents in any type of document.
+@PP
+Section @NumberOf setup describes setup files in general and how to
+change the options within them. The options relevant to tables of
+contents and their default values are:
+@ID @OneRow @Code @Verbatim {
+@MakeContents { No }
+@ContentsGap { 0.2v }
+@ContentsGapAbove { 0.8v }
+@ContentsGapBelow { 0.0v }
+@ContentsFont { Bold }
+@ContentsPartGapAbove { 1.0v }
+@ContentsPartGapBelow { 0.0v }
+@ContentsFormat { number @DotSep title }
+@ContentsLeader { .. }
+@ContentsLeaderGap { 4s }
+@ContentsRightWidth { 3f }
+}
+The @Code "@MakeContents" option may be @Code Yes or {@Code No}, and
+makecontents. @Index @Code "@MakeContents"
+determines whether a table of contents is made or not. Its default
+value is @Code No but it is set to @Code Yes in the @Code book setup
+file.
+@PP
+@Code "@ContentsGap" determines how much vertical space to leave
+contentsgap. @Index @Code "@ContentsGap"
+above each line of the table of contents, in addition to the usual
+single line spacing; its value may be any length (Section
+{@NumberOf objects}). The default value, {@Code "0.2v"}, is twenty
+percent of the current inter-line spacing.
+@PP
+Some entries, such as those for chapters and appendices in books, are
+more important than others. @Code "@ContentsGap" does not apply to these
+entries; instead, @Code "@ContentsGapAbove" and @Code "@ContentsGapBelow"
+contentsgapabove. @Index @Code "@ContentsGapAbove"
+contentsgapbelow. @Index @Code "@ContentsGapBelow"
+are used above and below each of them, again in addition to the usual
+single line spacing. @Code "@ContentsFont" also applies only to these
+`major entries', and determines their font. The default value causes
+them to appear in Bold.
+@PP
+@Code "@ContentsPartGapAbove" and @Code "@ContentsPartGapBelow" are
+like @Code "@ContentsGapAbove" and @Code "@ContentsGapBelow", only
+used before and after contents entries that denote book parts.
+@PP
+@Code "@ContentsFormat" determines the format of each entry of
+contentsformat. @Index @Code "@ContentsFormat"
+the table of contents. Within it, @Code number stands for the
+number of the chapter, section, or whatever, and @Code title
+for its title. The default value, {@Code "number @DotSep title"},
+produces the number followed by a dot, two spaces, and the title,
+or just the title if there is no number.
+@PP
+@Code "@ContentsLeader" is the object which is repeated across the page
+contentsleader. @Index @Code "@ContentsLeader"
+to connect each entry with its page number; popular values are @Code ".."
+and @Code "." and the empty object. @Code "@ContentsLeaderGap" determines
+contentsleadergap. @Index @Code "@ContentsLeaderGap"
+how far apart these objects are; the default value, {@Code "4s"}, is
+four times the width of a space character. @Code "@ContentsLeaderGap"
+may be {@Code "0s"}, but only if @Code "@ContentsLeader" is non-empty.
+@PP
+@Code "@ContentsRightWidth" reserves some
+contentsrightwidth. @Index @Code "@ContentsRightWidth"
+space at the far right for page numbers. Any entry wide enough to
+intrude into this space is broken into two or more lines to keep it
+clear.
+@PP
+In addition to these options, each document type has options that
+determine which large-scale structure symbols will be listed in the
+table of contents. For example, among the options to the
+@Code "@BookSetup" symbol in the @Code book setup file are these:
+@ID @OneRow @Code {
+"@ChapterInContents { Yes }"
+"@SectionInContents { Yes }"
+"@SubSectionInContents { Yes }"
+"@SubSubSectionInContents { No }"
+"@AppendixInContents { Yes }"
+"@SubAppendixInContents { Yes }"
+"@SubSubAppendixInContents { No }"
+}
+Each may be either {@Code "Yes"} or {@Code "No"}; these default values
+produce entries for everything except sub-subsections and sub-subappendices.
+@End @Section
diff --git a/doc/doc/user/str_cros b/doc/doc/user/str_cros
new file mode 100644
index 0000000..f00747d
--- /dev/null
+++ b/doc/doc/user/str_cros
@@ -0,0 +1,232 @@
+@Section
+ @Title { Cross references and links }
+ @Tag { cross }
+@Begin
+@PP
+Cross references are a useful feature of documents, but they are a
+cross.ref @Index { cross references }
+problem for authors. Suppose that at one point of your document
+you have
+@ID @OneRow @Code {
+"We hold these truths to be self-evident, that all men are created equal,"
+"that they are endowed by their Creator with certain inalienable Rights,"
+"that among these are Life, Liberty, and the pursuit of Happiness..."
+}
+and that at some other point, earlier or later, you have
+@ID @OneRow @Code {
+"The anti-slavery cause, founded as it was on the Declaration"
+"of Independence (page 181), could appeal to patriotic as"
+"well as moral sentiments..."
+}
+This is a @I { cross reference }, and the problem is that as the document
+is revised, the Declaration of Independence might move to page 185, and
+the cross reference must be found and changed.
+@PP
+Lout has a simple solution to this problem. Instead of writing the
+pageof. @Index @Code "@PageOf"
+page number, write
+@ID @OneRow @Code {
+"The anti-slavery cause, founded as it was on the Declaration"
+"of Independence (page @PageOf { decl.of.ind }), could appeal to"
+"patriotic as well as moral sentiments..."
+}
+instead, and at the point referred to, write
+pagemark. @Index @Code "@PageMark"
+@ID @OneRow @Code {
+"We @PageMark decl.of.ind hold these truths to be self-evident, that..."
+}
+Inserting @Code "@PageMark decl.of.ind" will not affect the result,
+but Lout makes a note of the number of the page on which the word
+preceding it appears, and inserts that number in place of
+{@Code "@PageOf decl.of.ind"}. The tag, {@Code "decl.of.ind"}, may be
+any simple word (actually Lout will accept a multi-word tag, but they
+are very inconvenient and better avoided). The braces are there, as
+usual, to control grouping: we don't want the following punctuation
+characters in the tag.
+@PP
+One tag called @Code "last.page" is created automatically
+"last.page.tag" @Index { @Code "last.page" tag }
+for you. @Code "@PageOf last.page" gives the number of the last page
+of the document. For example, the result for this document is
+{@PageOf last.page}.
+@PP
+Cross referencing also applies to large-scale structure symbols such as
+@Code "@Chapter" and @Code "@Section" (any symbol with a @Code "@Title"
+option), as well as @Code { "@FootNote" }, @Code { "@EndNote" },
+@Code { "@Figure" }, @Code { "@Table" }, @Code { "@Floater" }, the
+numbered display symbols, and @Code "@ListItem" and @Code "@DropListItem"
+(but not @Code "@TagItem" and {@Code "@DropTagItem"}). Each of these
+symbols has a @Code "@Tag" option:
+tag.option. @Index { @Code "@Tag" option }
+@ID @OneRow @Code {
+"@Section"
+" @Title { Cross references }"
+" @Tag { cross }"
+"@Begin"
+"@PP"
+"Cross references are a useful ..."
+}
+Now you can use the @Code "@PageOf" symbol to find the
+number of the page on which the symbol's result begins, and the
+@Code "@NumberOf" symbol to find its number:
+numberof. @Index @Code "@NumberOf"
+@ID @OneRow @Code {
+"For further information on this point, please consult"
+"Section @NumberOf cross (page @PageOf { cross })."
+}
+produces
+@QD {
+For further information on this point, please consult
+Section @NumberOf cross (page @PageOf { cross }).
+}
+For symbols with a @Code "@Title" option (chapters, sections, etc.)
+or a @Code "@Caption" option (@Code { "@Figure" }, @Code { "@Table" },
+and @Code { "@Floater" }) there is also the @Code "@TitleOf" symbol,
+titleof. @Index @Code "@TitleOf"
+which returns the value of the @Code "@Title" or @Code "@Caption" option:
+@ID @OneRow @Code {
+"For further information on this point, please consult"
+"the @TitleOf { cross } section."
+}
+produces
+@QD {
+For further information on this point, please consult
+the @TitleOf { cross } section.
+}
+But this symbol won't work for footnotes, list items, and other
+things without a title or caption.
+@PP
+For those with more expertise in using Lout, there is a
+pageparityof. @Index @Code "@PageParityOf"
+@Code "@PageParityOf" symbol which is very similar to @Code "@PageOf"
+except that it returns one of the two words @Code "Odd" and @Code "Even"
+instead of a page number, indicating whether the object it references is
+printed on an odd or even page. For example, @Code "@PageParityOf cross"
+produces @Code {@PageParityOf cross}.
+@PP
+Like all tags, the value of the @Code "@Tag" option should be a simple
+word (although Lout does accept multi-word tags). Cross referencing of
+list items yields just the number of the item, in Arabic, Roman, or
+whatever; it does not include the surrounding parentheses or other
+decorations introducted by the list's @Code "style" option.
+@PP
+To work cross references out, Lout has to process your document more
+multiple.runs @Index { multiple runs, why needed }
+than once, storing information between runs in special files it
+creates whose names end in @Code ".li" and {@Code ".ld"}.
+A complex document like this Guide requires five runs, but since every
+run produces a perfectly good PostScript file suitable for proof reading,
+in fact you need two runs to start with and one run per cycle of revision
+thereafter, only one more than would have been necessary in any case.
+@PP
+The cross referencing system assumes that each Unix directory contains
+directories @Index { directories, Lout files and }
+only one Lout document (possibly spread over many files). If you keep
+several documents in one directory you can turn off the cross referencing
+with the @Code "-s" flag:
+@ID @Code "lout -s simple > simple.ps"
+Since this will cause question marks to replace footnote and section
+numbers, and other products of cross referencing, it is only feasible
+for simple documents. Alternatively, you can reset cross referencing
+when switching from one document to another, by removing file
+lout.li @Index { @Code lout.li file }
+{@Code "lout.li"}. You should also remove this file if your document
+changes radically -- from a report to a book, say.
+@FootNote {
+An unfortunate and long-standing bug causes Lout to crash occasionally
+when reading from a cross-reference database
+file that it wrote on the preceding run. The problem has to do with
+mistakenly taking a literal word, or part of such a word, as an invocation
+of a symbol. The crash will occur on the @I second run (because the
+database file is written, not read, on the first run), and might be
+accompanied by an error message mentioning routine @I { AttachEnv } or
+@I { SetTarget }. You can make it happen, for example, by including
+@ID @Code "pnformat @Index { watch me crash! }"
+in your document -- the @Code pnformat tag, a literal word, will be
+mistaken for the @Code pnformat option of @Code "@Index" by the
+database reader. If this problem appears, try enclosing tags that you
+entered recently in double quotes. Enclosing @Code pnformat above
+in double quotes fixes the example problem.
+}
+@PP
+PDF viewers and recent versions of PostScript viewers offer a high-tech
+version of cross references called {@I links}, which allow the user to
+click on, say, the entry for a section in a table of contents and be
+immediately transported to the page on which that section begins. In
+principle, anything could happen when a link is clicked on, but Lout
+only offers two kinds of links: @I { internal links } that transport
+the user to some page in the current document, and @I { external
+links } that transports the user to a URL location on the World Wide Web.
+@PP
+Lout automatically makes an internal link out of every page number it
+prints in the table of contents and in the index, and every reference
+citation. You can also insert your own links, using the
+@Code "@CrossLink" symbol like this:
+@ID @Code "See cross @CrossLink { Section @NumberOf cross }"
+The @Code "@CrossLink" symbol consumes two objects, one to its left and the
+other to its right, and we'll explain each of these now.
+@PP
+The object on the right (@Code "Section @NumberOf cross" in our
+example) can be an arbitrary Lout object: you don't have to have
+@Code "@NumberOf" or @Code "@PageOf" inside it, although in practice
+you often will, since it makes sense to put a low-tech link wherever
+you have a high-tech one, for the benefit of readers of paper
+versions. This object on the right is what is printed, so the
+overall result in this example is
+@ID { See cross @CrossLink { Section @NumberOf cross } }
+But, beyond this, clicking anywhere on this object on the screen will
+invoke the link, transporting the user to some other page.
+@PP
+The object on the left (@Code cross in our example) must be a tag
+that is acceptable to the @Code "@PageOf" symbol described earlier
+in this section. The link will transport the user who clicks on
+it to the page that @Code "@PageOf" would point to if given that
+tag. You can ensure that your tag is acceptable in the usual
+ways: by using {@Code "@PageMark"}, or by giving the tag as the
+@Code "@Tag" option of a chapter, section, etc. as described earlier
+in this section.
+@PP
+A moment ago we said that the object to the right of @Code "@CrossLink"
+is what is printed by the @Code "@CrossLink" symbol. This is true by
+default, but there is a @Code "@CrossLinkFormat" option in the setup
+files which allows you to change the appearance of this printed
+object. (See Section {@NumberOf setup} for a general description
+of setup files and their options.) The default value of
+@Code "@CrossLinkFormat" is
+@ID @Code "@CrossLinkFormat { @Body }"
+Within the @Code "@CrossLinkFormat" option, the @Code "@Body" symbol
+stands for the object to the right of {@Code "@CrossLink"}. It is
+actually the value of @Code "@CrossLinkFormat" that is printed, so,
+for example, changing it to
+@ID @Code "@CrossLinkFormat { blue @Colour @Underline @Body }"
+causes all link objects to be printed in blue and underlined. If
+you want a special format just for one link, there is a @Code "@Format"
+option to @Code "@CrossLink" that overrides {@Code "@CrossLinkFormat"}:
+@ID @Code "cross @CrossLink @Format { @CurveBox @Body } { Section @NumberOf cross }"
+You can also give the formatting you want directly, since the object
+to the right of @Code "@CrossLink" can be an arbitrary Lout object:
+@ID @Code "cross @CrossLink @CurveBox { Section @NumberOf cross }"
+However, in this form the @Code "@CrossLinkFormat" setup file option
+is still applied.
+@PP
+External links are obtained in much the same way as internal ones,
+except that the symbol to use is @Code "@ExternalLink" and instead
+of supplying a tag, you need to supply a URL:
+@ID @Code {
+"\"http://lout.wiki.sourceforge.net/\" @ExternalLink { Lout Home Page }"
+}
+Once again the result is the object to the right, modified by any
+@Code "@Format" option; and there is an {@Code "@ExternalLinkFormat"}
+setup file option that works in the same way as
+{@Code "@CrossLinkFormat"}. This time, though, the effect is to
+jump right out of your document to the given place on the World
+Wide Web, if the software displaying your document is capable of it.
+@PP
+At present, the @Code "@CrossLink" and @Code "@ExternalLink" symbols
+behave as though a @Code "@OneCol" symbol encloses the object to their
+right. This means that that object is kept together on one line of any
+enclosing paragraph, and inter-word spaces within it are not adjusted
+along with the inter-word spaces of any enclosing paragraph. This
+deficiency might be corrected in the future, but meanwhile it means
+that it is best to keep your objects on the right short.
+@End @Section
diff --git a/doc/doc/user/str_defs b/doc/doc/user/str_defs
new file mode 100644
index 0000000..7de300a
--- /dev/null
+++ b/doc/doc/user/str_defs
@@ -0,0 +1,133 @@
+@Section
+ @Title { Defining new symbols }
+ @Tag { definitions }
+@Begin
+@PP
+Whenever you find yourself typing something repeatedly, you can
+definitions. @Index definitions
+save time by defining your own personal symbol to stand for that
+thing. For example, suppose you type `@Batlow' frequently. You
+can define your own symbol, {@Code "@Batlow"} say, so that
+@ID @Code {
+"Concerning your crate supply contract with @Batlow, @Batlow wishes to ..."
+}
+produces
+@ID {
+Concerning your crate supply contract with @Batlow, @Batlow wishes to ...
+}
+You will never have to type @Batlow again.
+@PP
+Create a file called @Code "mydefs" in your current
+mydefs.file @Index { @Code mydefs file }
+directory, containing definitions like this:
+@ID @OneRow @Code {
+"import @BasicSetup"
+"def @Batlow { Batlow Food Distributors Pty. Ltd. }"
+}
+The meaning of the first line, {@Code "import @BasicSetup"}, will be
+explained shortly. After that comes @Code "def" for `define,' then
+the name of the symbol being defined, then its value between braces.
+So this example defines a symbol called @Code "@Batlow" to stand for
+the object following it between braces. Lout will read this file
+during its setup phase (Section {@NumberOf setup}). Alternatively, you
+can place definitions directly into your document files, following your
+@Code "@SysInclude" lines and before {@Code "@Doc"}, {@Code "@Report"},
+or whatever symbol your document proper starts with.
+@PP
+Your symbols may have any names you wish made from letters and
+{@Code "@"}. However, it is good practice to have exactly one
+{@Code "@"}, at the start, and to choose distinctive names that
+have no chance of being the same as the name of any existing
+symbol. @Code "@Batlow" is a good choice, for example.
+@PP
+The object between braces is quite arbitrary; in particular, it may
+contain symbols. For example, suppose you frequently need a small grey box:
+@ID @OneRow @Code {
+"import @BasicSetup"
+"def @GreyBox { @Box paint { lightgrey } {} }"
+}
+This defines a @Code "@GreyBox" symbol that produces {@GreyBox}. Most
+of the symbols in this guide are from the @I {BasicSetup package},
+import. @Index @Code import
+which is why @Code "import @BasicSetup" is required: it makes
+these symbols available to the definition, and can actually be omitted
+before definitions like the one for @Code "@Batlow" which do not use
+any symbols. However it does no harm, so we place it in front of every
+definition as a matter of course.
+@PP
+Later chapters of this guide introduce specialized symbols for producing
+tables, equations, diagrams, graphs, and computer programs. You need a
+different @Code "import" clause when using those symbols within a
+definition, because they are not from the BasicSetup package. Examples
+may be found in the chapters concerned.
+@PP
+Now suppose you frequently need a grey box, but enclosing different
+things: @GreyBox ENTRY one moment, @GreyBox EXIT the next. You could
+try omitting the @Code "{}" from the definition above, but that does
+not work, because Lout notices the missing object while reading the
+definition, and inserts an empty object in the usual way (Section
+{@NumberOf empty}).
+@PP
+However, there is a way to define a @Code "@GreyBox" symbol so that
+@Code "@GreyBox ENTRY" produces {@GreyBox ENTRY}, @Code "@GreyBox EXIT"
+produces {@GreyBox EXIT}, and so on:
+@ID @OneRow @Code {
+"import @BasicSetup"
+"def @GreyBox right x { @Box paint { lightgrey } x }"
+}
+The addition of @Code "right x" immediately after the symbol's name
+places @Code "@GreyBox" into that class of symbols, like {@Code "@I"}
+and @Code {"@Box"}, which consume and transform the object to their
+right. The @Code "x" in @Code "right x" means that the object to the
+right will be referred to as @Code "x" within the definition. So in
+@ID @Code "@GreyBox { Hello world }"
+@Code "@GreyBox" consumes the following object, which becomes
+{@Code "x"}, so that the value is
+@ID @Code "@Box paint { lightgrey } { Hello world }"
+which produces @GreyBox { Hello world }.
+@PP
+It is a good principle to choose symbol names that refer to what the symbol
+is for, rather than how it does what it does. Here is a good example:
+@ID @OneRow @Code {
+"import @BasicSetup"
+"def @Poetry right x { lines @Break @I x }"
+}
+This kind of name is very pleasant to use:
+@ID @OneRow @Code {
+"@IndentedDisplay @Poetry {"
+"Teach me to hear Mermaides singing,"
+"Or to keep off envies stinging,"
+" And finde"
+" What winde"
+"Serves to'advance an honest minde."
+"}"
+}
+Most of Lout's symbols follow this principle.
+@PP
+You can define symbols that consume the object to their left as well
+as the object to their right, as the {@Code "@Font"}, {@Code "@Break"},
+and {@Code "@Colour"} symbols do:
+@ID @OneRow @Code {
+"import @BasicSetup"
+"def @HeadingBox left x right y"
+"{ @Box { @CentredDisplay @Heading x y }"
+"}"
+}
+This takes three lines only because it is long; as usual, end of
+line is the same as a space. Now
+@ID @OneRow @Code {
+"Cheating @HeadingBox {"
+"The Department uses assignments ... of that student alone."
+"}"
+}
+is much easier to type than the equivalent example in Section
+{@NumberOf boxes}. The result is the same:
+@QD Cheating @HeadingBox {
+The Department uses assignments both as a teaching device and as a
+major component of its assessment of each student. It therefore
+requires that all programs, exercises etc. handed in bearing an
+individual student's name be the work of that student alone.
+}
+Do not use a paragraph, display, or list symbol at the beginning or end
+of a definition. The result is not what people who do it are hoping for.
+@End @Section
diff --git a/doc/doc/user/str_disp b/doc/doc/user/str_disp
new file mode 100644
index 0000000..fb968ac
--- /dev/null
+++ b/doc/doc/user/str_disp
@@ -0,0 +1,94 @@
+@Section
+ @Title { Displays }
+ @Tag { displays }
+@Begin
+@PP
+The @Code "@Display" symbol displays the following object in the centre
+displays. @Index displays
+display. @Index @Code "@Display"
+of the page or column:
+@ID @Code "@Display @I { Invitation to Afternoon Tea }"
+has result
+@Display @I { Invitation to Afternoon Tea }
+Space is inserted automatically above and below the display; no
+paragraph symbols are needed.
+@PP
+To display at the left margin instead of centred, use
+leftdisplay. @Index @Code "@LeftDisplay"
+{@Code "@LeftDisplay"} instead of {@Code "@Display"}. To indent
+the display, use {@Code "@IndentedDisplay"} or {@Code "@QuotedDisplay"};
+indenteddisplay. @Index @Code "@IndentedDisplay"
+quoteddisplay. @Index @Code "@QuotedDisplay"
+the latter indents at the right margin as well as at the left. There are
+also @Code "@CentredDisplay" and @Code "@CenteredDisplay" symbols which
+centreddisplay. @Index @Code "@CentredDisplay"
+centereddisplay. @Index @Code "@CenteredDisplay"
+centre the display (like {@Code "@Display"}), and
+rightdisplay. @Index @Code "@RightDisplay"
+@Code "@RightDisplay" which right-justifies the display.
+@PP
+If you use displays frequently you might prefer abbreviated forms of
+their names. These are made from @Code "@" and the capital letters of
+d. @Index @Code "@D"
+ld. @Index @Code "@LD"
+id. @Index @Code "@ID"
+qd. @Index @Code "@QD"
+cd. @Index @Code "@CD"
+the full name: {@Code "@D"}, {@Code "@LD"}, {@Code "@ID"}, {@Code "@QD"},
+and {@Code "@CD"}. Owing to a clash with the name of another symbol,
+{@Code "@RightDisplay"} has no abbreviation.
+@PP
+Displays often need to be set using a different font, paragraph
+breaking style, and so on to the surrounding text. It's best to set
+out such displays like this:
+@ID @OneRow @Code {
+"@CentredDisplay @I clines @Break {"
+"Invitation to Afternoon Tea"
+"with"
+"Mr. and Mrs. Gilbert Newington-Smith"
+"}"
+}
+You can have as many of these symbols as you like, including specialized
+ones like {@Code "@CurveBox"} and {@Code "@Tbl"}. The only rule is that
+the display symbol must come first: @Code "@I @Display ..." is wrong.
+@PP
+It's not a good idea to have one display immediately followed by
+another one, because there will be too much vertical space between
+them. Use a list instead (Section {@NumberOf lists}). Displays
+at the ends of paragraphs look awkward and are best avoided.
+@PP
+A display may come out partly on one page or column and partly on
+the next, if it has places where it obviously can be broken in two. For
+example, a display which is an ordinary paragraph of text might be
+broken in two between any two lines. To force a display to keep
+together on one page or column, use the @Code "@OneRow" symbol like
+this: @Code "@Display @OneRow { ... }".
+@PP
+Other display symbols produce aligned and numbered displays, and raw
+displays (i.e. without vertical space). Although these can display any
+object as usual, in practice they are used for mathematics, so they are
+described in Section {@NumberOf mathdisplays}.
+@PP
+Three setup file options control the appearance of displays. (For a
+general introduction to setup files and their options, consult
+Section {@NumberOf setup}.) Here they are with their default values:
+@ID @OneRow @Code {
+"@DisplayGap { 1.00v }"
+"@DefaultIndent { 0.5rt }"
+"@DisplayIndent { 2.00f }"
+}
+@Code "@DisplayGap" is the amount of vertical space inserted before and
+display.gap. @Index @Code "@DisplayGap"
+after displays, and may be any length (Section {@NumberOf objects}). The
+default value, @Code {"1.00v"}, is equal to the current inter-line spacing.
+@PP
+@Code "@DefaultIndent" is the indent produced by
+default.indent @Index @Code "@DefaultIndent"
+{@Code "@Display"}; {@Code "0.5rt"} produces centring, although why it does
+so is beyond our scope
+@Cite { $kingston1995lout.expert }. @Code "@DisplayIndent" is the
+display.indent. @Index @Code "@DisplayIndent"
+indent for {@Code "@IndentedDisplay"}, and (at both margins) for
+{@Code "@QuotedDisplay"}. Its default value, {@Code "2.00f"}, is twice
+the current font size.
+@End @Section
diff --git a/doc/doc/user/str_figs b/doc/doc/user/str_figs
new file mode 100644
index 0000000..120331a
--- /dev/null
+++ b/doc/doc/user/str_figs
@@ -0,0 +1,291 @@
+@Section
+ @Title { Figures and tables }
+ @Tag { figures }
+@Begin
+@PP
+Figures are created in a similar way to footnotes:
+figures. @Index { figures }
+@ID @OneRow @Code {
+"@Figure"
+" @Caption { Basser Lout }"
+"@Diag vstrut { yes } treehsep { 1c } {"
+" @HTree { @Box Lout @FirstSub arrow { yes } @Box PostScript }"
+"}"
+}
+The @Code "@Figure" symbol places the following object (which in this
+figure. @Index @Code "@Figure"
+example is created using the {@Code "@Diag"} symbol from
+Chapter {@NumberOf diagrams}) at the top of the following column or page,
+@Figure
+ @Tag { figex }
+ @Caption { Basser Lout }
+@Diag vstrut { yes } treehsep { 1c } {
+ @HTree { @Box Lout @FirstSub arrow { yes } @Box PostScript }
+}
+labelled by the @Code "@Caption" option and automatically numbered. You
+captions. @RawIndex { captions }
+captions.figures @SubIndex { in @Code "@Figure" and @Code "@Table" }
+can see this example at the top of page {@PageOf figex}. Tables are
+table. @Index @Code "@Table"
+obtained in the same way using {@Code "@Table"} instead of {@Code "@Figure"}.
+There is a third symbol called {@Code "@Floater"}. It won't be mentioned
+again, but it works exactly like @Code "@Figure" and {@Code "@Table"}.
+@PP
+@Code "@Figure" and @Code "@Table" each have an @Code "@InitialLanguage"
+option which determines the language of the figure or table. If this is
+omitted, the language of the document as a whole will be used, not the
+language where the figure or table occurs.
+@PP
+The two symbols also have a @Code "@CaptionPos" option, which determines
+whether the caption appears above or below the figure or table. The
+default is {@Code "Below"}, the alternative is {@Code "Above"}.
+@PP
+The question of what is a suitable running header to print on pages
+containing figures and tables (possibly from different sections) is a
+rather awkward one. On any page with a figure or table at the top, Lout
+uses whatever running header was appropriate for the text on the previous
+page. In practice it seems to work quite well.
+@PP
+If your document contains many figures, large figures, or multi-page
+figures, you are likely to encounter cases where Lout's assignment of
+figures to pages is not pleasing. In that case, you can improve things
+by moving the figures around within the body text, and by using the
+@Code "@Location" option of {@Code "@Figure"}, which determines
+location. @Index @Code "@Location"
+where the figure will appear. Its values are
+@DP @Tab
+ @Fmta { @Col @Code A ! @Col B }
+{
+@FirstRowa
+ A { PageTop }
+ B { The figure will appear at the top of the following page, occupying
+the full page width; or, if there is insufficient space there (owing to other
+figures already present), at the top of the first subsequent page with
+sufficient space. }
+@Rowa
+ A { EvenPageTop }
+ B { Like @Code PageTop except that the first page of the figure
+or table will be an even-numbered (left-hand or verso) page -- useful
+for double-page spreads. }
+@Rowa
+ A { FullPage }
+ B { Like {@Code PageTop} except that nothing else will appear on the
+same page as the figure except the usual running headers and footers, and
+possibly other @Code FullPage figures and tables.
+@FootNote { This location replaces the @Code "@FullPage" option of
+earlier versions of Lout, which has been withdrawn. }
+}
+@Rowa
+ A { EvenFullPage }
+ B { Like {@Code FullPage} except that the first page of the figure
+or table will be an even-numbered (left-hand or verso) page, like
+{@Code EvenPageTop}.
+}
+@Rowa
+ A { PageFoot }
+ B { The figure will appear at the foot of the current page, occupying
+the full page width; or, if there is insufficient space there, at the top
+of the following page and so on as for {@Code PageTop}. }
+@Rowa
+ A { ColTop }
+ B { The figure will appear at the top of the following column,
+occupying the column width; or, if there is insufficient space there,
+at the top of the first subsequent column with sufficient space. This
+is different from @Code PageTop only in multi-column documents. }
+@Rowa
+ A { ColFoot }
+ B { The figure will appear at the foot of the current column,
+occupying the column width; or, if there is insufficient space there, at
+the top of the following column as for {@Code ColTop}. This differs
+from @Code PageFoot only in multi-column documents. }
+@Rowa
+ A { ColEnd }
+ B { The figure will appear in a column at the end of the document
+(or chapter, appendix etc. in the case of books). There is no
+corresponding @Code PageEnd value.
+}
+@Rowa
+ A { AfterLine }
+ B { The figure will appear as a column-width display immediately after
+the line in the final printed document in which it occurs. }
+@Rowa
+ A { TryAfterLine }
+ B { The same as @Code {AfterLine} unless there is insufficient space
+in the current column to hold the displayed figure, in which case it
+switches to @Code {ColTop} instead. }
+@Rowa
+ A { Display }
+ B { The figure will appear as a display at the point it occurs. There
+is no @Code TryDisplay value corresponding to {@Code Display}. }
+@Rowa
+ A { Raw }
+ B { The figure will appear as an object, with no extra spacing, at
+the point it occurs. This is useful, for example, for getting two figures
+side by side in one display: use a displayed table containing two raw
+figures. }
+}
+@DP
+The @Code "@Table" symbol also has this option. The default location is
+{@Code "PageTop"}, but this can be changed by changing the
+figurelocation. @Index @Code "@FigureLocation"
+tablelocation. @Index @Code "@TableLocation"
+@Code "@FigureLocation" and @Code "@TableLocation" setup file options.
+@PP
+The numbers assigned to figures and tables, and their ordering in any list
+of figures or tables, is based on where they appear in the final printed
+document, not on where they appear in the source files. This is better for
+the reader in the unusual case of a fixed figure being overtaken by a
+floating one. If a section number is printed as part of a figure number,
+and the figure floats forward from one section into another, the figure
+number will reflect the later section, not the earlier one as it should.
+You can fix this problem by moving the figure to an earlier point in
+the section, or by not having section numbers in figures (see below).
+@PP
+@Code "@Figure" and @Code "@Table" each have a @Code "@OnePage" option,
+whose value may be @Code "Yes" or {@Code No}. Setting @Code "@OnePage"
+to @Code Yes causes the figure or table and its caption to be kept
+together on one page or column (enclosing the body of the figure or table
+in @Code "@OneRow" would have the same effect except that it would not
+incorporate the caption, hence the need for this option). You need to be
+certain that the whole assembly will fit on one page when setting
+@Code "@OnePage" to {@Code "Yes"}. If it doesn't, Lout should warn you
+with a message such as
+@ID @Code "25.3c object too high for 23.4c space; will try elsewhere"
+giving the size of the oversize object and the size of the space it
+failed to fit into; but (unfortunately) it does not given a clear
+indication of whether trying elsewhere succeeded or not. When you
+see this message you need to check for yourself whether the figure was
+actually printed or not; it may mean merely that the figure was put
+back to a later page than the first possible one.
+@PP
+The @I default value of the @Code "@OnePage" option for each figure or
+table depends on the value of its @Code "@Location" option as follows:
+@ID @OneRow @Tab
+ @Fmta { @Col @Code A ! @Col ! @Col @Code B }
+{
+@Rowa
+ A { No }
+ B { PageTop ColTop ColEnd Raw }
+@Rowa
+ A { Yes }
+ B { PageFoot ColFoot Display AfterLine TryAfterLine }
+}
+These choices represent a guess that figures that the user is happy to
+see at the page foot or in a display are probably going to be small enough
+to keep on one page, but that other figures may not be. In any case, these
+are only default values and you may set @Code "@OnePage" as you wish.
+@PP
+By default, the body of the figure will be centred, and this usually looks
+best, at least for small figures. @Code "@Figure" and @Code "@Table" each
+have a @Code "@Format" option which controls this format:
+@ID @OneRow @Code {
+"@Figure"
+" @Format { @CurveBox @HExpand @CC @Body }"
+}
+Within the @Code "@Format" option, the @Code "@Body" symbol stands for the
+body of the figure or table; it must appear exactly once. Display symbols
+such as @Code "@CentredDisplay" may not be applied to the {@Code "@Body"}
+symbol; instead, there are {@Code "@II"}, {@Code "@QQ"}, {@Code "@CC"}, and
+{@Code "@RR"}, which indent, quote, centre, or right-justify the following
+object. The example just given centres the figure inside a @Code "@CurveBox"
+which is horizontally expanded (by the @Code "@HExpand" symbol, which is not
+specific to figures) to occupy the full width of the page or column, rather
+than fitting snugly around the figure.
+@PP
+Although @Code "@CC" will always centre the figure or table, occasionally
+it underestimates the amount of space available to centre in, and hence
+the figure or table appears only partly centred, or even left
+justified. This occurs when nothing on the page extends the full
+width of the page. If this problem occurs, use
+@ID @Code "@Format { @HExpand @CC @Body }"
+The @Code "@HExpand" symbol expands the space available to the following
+object to the maximum possible amount, so that the centring is with respect
+to the full available width as desired.
+@PP
+The @Code "@Format" option applies to just the body of the figure, not to
+its caption. It applies to each page or column of a multi-page or
+multi-column figure; for example, the above format will draw a box around
+each page of a multi-page figure, and each page will be separately centred.
+@Code "ColEnd" and @Code "Raw" figures are exceptions to this rule: they
+always apply the format to the figure as a whole. This means that you cannot
+box multi-page figures of these two types, since the result would be an
+unbreakable object too large to fit on one page.
+@PP
+There are setup file options for controlling the appearance of figures and
+tables. Only those for figures will be given here, since the ones for tables
+are identical except that @Code Table replaces @Code Figure in their
+names. Here they all are:
+@FootNote { These are as of Version 3.15 and above. Prior to that
+there were {@Code "@CaptionFont"}, {@Code "@CaptionBreak"}, and
+{@Code "@CaptionFormat"} options, and {@Code "@CaptionFormat"}
+took values that did not include the @Code "caption" symbol. }
+@ID @OneCol @Code {
+"@FigureLocation { PageTop }"
+"@FigureFormat { @CC @Body }"
+"@FigureWord { figure }"
+"@FigureNumbers { Arabic }"
+"@FigureCaptionPos { Below }"
+"@FigureCaptionFont { }"
+"@FigureCaptionBreak { }"
+"@FigureCaptionFormat { @B { word @NumSep number. &2s } @Insert caption }"
+"@MakeFigureContents { No }"
+"@FigureListWord { figurelist }"
+}
+@Code "@FigureLocation" is the default value of the @Code "@Location"
+option of figures. Changing it, for example to
+{@Code "FullPage"}, changes the location of all figures at
+once. You may still override this location for any individual figure,
+however, by giving that figure a @Code "@Location" option. In a similar way,
+figureformat. @Index @Code "@FigureFormat"
+tableformat. @Index @Code "@TableFormat"
+@Code "@FigureFormat" is the default value of the @Code "@Format"
+option (this shows why figures are centred by default) and
+figurecaptionpos. @Index @Code "@FigureCaptionPos"
+tablecaptionpos. @Index @Code "@TableCaptionPos"
+@Code "@FigureCaptionPos" is the default value of {@Code "@CaptionPos"}.
+@PP
+@Code "@FigureWord" determines the word that is part of the figure
+number. The default value, {@Code figure}, produces `Figure' or its
+equivalent in the current language; any other value produces itself.
+@PP
+@Code "@FigureNumbers"
+figurenumbers. @Index @Code "@FigureNumbers"
+tablenumbers. @Index @Code "@TableNumbers"
+determines whether figures are
+numbered automatically or not; the choices are
+{@Code "None"}, {@Code "Arabic"}, {@Code "Roman"}, {@Code "UCRoman"},
+{@Code "Alpha"}, and {@Code "UCAlpha"}. Depending on the document
+type and where the figure or table occurs, the number might include
+a chapter number as well. This is determined by options in the
+setup file for your document type; for example,
+@ID @Code "@SectionNumInFigures { No }"
+appears in the @Code "report" setup file, and means that a section
+number will not appear in the figure number (unless you change the
+option to {@Code Yes}).
+@PP
+@Code "@FigureCaptionFont" and @Code "@FigureCaptionBreak" determine the
+font and paragraph breaking style used in the captions of figures. Their
+default values are empty, meaning to use the initial font and break styles;
+but, for example, you could have
+@ID @Code "@FigureCaptionFont { -2p }"
+in your setup file to get a smaller font size in your captions.
+@PP
+The @Code "@FigureCaptionFormat" option determines the format of the
+caption. Within it, the symbol @Code word stands for the `Figure'
+word as defined by {@Code "@FigureWord"}; the @Code number
+symbol stands for the number of the figure; and @Code caption stands
+for the body of the caption. The default value shown above prints
+the word and number and a period in bold, inserted together with a
+gap of two spaces into the first paragraph of the caption. If you
+don't use the @Code "@Insert" symbol you'll run into problems with
+multi-paragraph captions.
+@PP
+You can get a list of figures at the start of your document by setting
+the @Code "@MakeFigureContents" setup file option to {@Code Yes}. The
+format of these lists will follow the format of tables of contents. These
+lists are only available in books (Section {@NumberOf books}). The
+title printed above the list of figures is determined by the
+@Code "@FigureListWord" option; the default value, {@Code "figurelist"},
+produces `List of Figures' or its equivalent in the current language; any
+other value produces itself.
+@End @Section
diff --git a/doc/doc/user/str_foot b/doc/doc/user/str_foot
new file mode 100644
index 0000000..2eea124
--- /dev/null
+++ b/doc/doc/user/str_foot
@@ -0,0 +1,154 @@
+@Section
+ @Title { Footnotes and endnotes }
+ @Tag { footnotes }
+@Begin
+@PP
+A footnote is created by typing
+footnote. @Index @Code "@FootNote"
+@ID @Code "@FootNote { Like this. }"
+after the word that the footnote refers to. It will be numbered
+automatically and placed at the foot of the page or column;
+@FootNote { Like this. }
+or, if space there is insufficient, it may start on or run onto the
+following page or column. The footnote must be enclosed in braces.
+@PP
+The @Code "@FootNote" symbol has a @Code "@Location" option which
+determines where it goes:
+@ID @Code {
+"@FootNote"
+" @Location { ColFoot }"
+"{ ... }"
+}
+places the footnote at the bottom of the column, and
+@ID @Code {
+"@FootNote"
+" @Location { PageFoot }"
+"{ ... }"
+}
+places it at the bottom of the current page, occupying the full page
+width even in a multi-column document (this is occasionally
+useful for footnotes to headings). Of course, in a single-column
+document there is no difference anyway. The default value of the
+@Code "@Location" option is {@Code "ColFoot"}.
+@PP
+Endnotes work in exactly the same way as footnotes, except that the
+endnote. @Index @Code "@EndNote"
+symbol to use is @Code "@EndNote" and they appear either at the end
+of the document or at the end of some major part of it, depending on
+the type of document (Chapter {@NumberOf types}). Endnotes are
+always column width and so have no @Code "@Location" option.
+@PP
+Footnotes are usually labelled with consecutive Arabic numberals, but
+you can tell Lout to label a footnote (not an endnote) with something
+else, like this:
+@ID @OneRow @Code @Verbatim {
+@FootNote
+ @Label { @Dagger }
+{ This footnote will be labelled with a dagger, not a number. }
+}
+whose result should appear at the bottom of this page.
+@FootNote
+ @Label { @Dagger }
+{ This footnote will be labelled with a dagger, not a number. }
+Symbols commonly used for footnote labels include @Code "@Dagger" (@Dagger),
+@Code "@DaggerDbl" (@DaggerDbl), @Code "@Star" (@Star),
+@Code "@SectSym" (@SectSym), and @Code "@ParSym" (@ParSym),
+but you can use any object. If you want no label at all,
+use an empty object like this:
+@ID @OneRow @Code @Verbatim {
+@FootNote
+ @Label {}
+}
+Footnotes with a @Code "@Label" option are excluded from the automatic
+numbering that applies to other footnotes.
+@PP
+The language of a footnote or endnote will be the language of the
+document as a whole. This is not necessarily the same as the
+current language at the point where the footnote or endnote occurs,
+or even the language of the enclosing large-scale structure symbol. It
+may be necessary to enclose the body of the footnote in a language
+symbol, like this:
+@ID @Code "@FootNote { French @Language { ... } }"
+Doing it the other way ({@Code "French @Language @FootNote ..."}) is
+not effective.
+@PP
+A footnote attached to the very last line of a chapter or appendix of
+a book occasionally runs onto the first page of the following chapter
+or appendix, and this looks very poor. If this happens, the solution
+is to place an @Code "@LP" after the last line (including the footnote).
+@PP
+In the rare case where more than one footnote is attached to one word,
+use @Code "@AnotherFootNote" for the second and subsequent footnotes:
+anotherfootnote. @Index @Code "@AnotherFootNote"
+@ID @Code {
+"something or other."
+"@FootNote { The first footnote. }"
+"@AnotherFootNote { The second footnote. }"
+}
+This ensures that the superscripts will be separated by
+commas, as convention demands.
+@PP
+The setup file contains a number of options for controlling the
+appearance of footnotes. (See Section @NumberOf setup for a general
+introduction to setup files and their options.) Here are all the
+options, with their default values:
+@ID @OneRow @Code {
+"@FootNoteThrough { No }"
+"@FootNoteLocation { ColFoot }"
+"@FootNoteNumbers { Arabic }"
+"@FootNoteFont { 0.80f }"
+"@FootNoteBreak { 1.20fx }"
+"@FootNoteFormat { { number &0.05f } @Insert body }"
+"@FootLen { 2.00c }"
+"@FootAboveGap { 1.00v }"
+"@FootGap { 0.20c }"
+}
+There are also setup file options for controlling endnotes. Since
+they are quite similar to the ones for footnotes, we won't say any
+more about them here.
+@PP
+@Code "@FootNoteThrough" may be @Code "Yes" or @Code { "No" };
+footnotethrough. @Index @Code "@FootNoteThrough"
+@Code "Yes" means that the footnotes are numbered continuously
+through the document (or through each chapter in the case of books);
+@Code "No" means that the numbering begins afresh on each
+page. @Code "@FootNoteLocation" determines the default value of
+footnotelocatin. @Index @Code "@FootNoteLocation"
+the @Code "@Location" option mentioned above; it may be either
+@Code "ColFoot" or {@Code "PageFoot"}.
+@PP
+@Code "@FootNoteNumbers" determines how the footnotes are numbered;
+footnotenumbers. @Index @Code "@FootNoteNumbers"
+it may be {@Code Arabic}, {@Code Roman}, {@Code UCRoman}, {@Code Alpha},
+or {@Code UCAlpha}, which give the obvious results. It may also be
+{@Code Bullets}, which uses sequences of bullets to mark the footnotes,
+as proposed by typographer Jan Tschichold, and it may be {@Code Symbols},
+which produces the traditional sequence of daggers and similar symbols.
+@PP
+@Code "@FootNoteFont" and @Code "@FootNoteBreak" determine the
+footnotefont. @Index @Code "@FootNoteFont"
+footnotebreak. @Index @Code "@FootNoteBreak"
+font and paragraph breaking style of footnotes. The default value
+of @Code "@FootNoteFont" produces the same font family and face as the
+bulk of the document, but reduced to 0.8 times the original size.
+@PP
+@Code "@FootNoteFormat" determines the format of the footnote. The
+@Code number symbol within it must appear exactly once, and is replaced
+by the number of the footnote (if numbered). The @Code body symbol is
+replaced by the body (that is, the content) of the footnote. The default
+value shown uses symbols from raw Lout to add a small space at the right of
+the number, then insert it at the beginning of the first paragraph of
+the body. Another suitable value might be
+@ID @Code "@FootNoteFormat { number |1fx body }"
+which places the body in a separate column to the number, one
+font width to the right of the left edge of the number.
+@PP
+@Code "@FootLen" determines the length of the small horizontal line
+footlen. @Index @Code "@FootLen"
+drawn above the footnotes;
+@Code "@FootAboveGap" determines the minimum space to be left clear
+footabovegap. @Index @Code "@FootAboveGap"
+above this line; and @Code "@FootGap" determines the
+footgap. @Index @Code "@FootGap"
+vertical separation between footnotes. All three may be any length.
+@End @Section
diff --git a/doc/doc/user/str_glos b/doc/doc/user/str_glos
new file mode 100644
index 0000000..03638cf
--- /dev/null
+++ b/doc/doc/user/str_glos
@@ -0,0 +1,209 @@
+@Section
+ @Title { Glossaries }
+ @Tag { glossaries }
+@Begin
+@PP
+A glossary
+@FootNote {
+The features described in this section are closely based on a
+design by Thorsten Seitz. }
+is a section at the end of a document containing terms
+and their definitions, with a reference back to the page of the
+document where each term is first used. It's similar to an index,
+except that there are fewer entries and they are longer and more
+spaced out -- for reading rather than just reference.
+@PP
+In order to get a glossary, you have to be using either the @Code book
+or @Code report setup file, and you have to make your own copy of
+the setup file (as described in Section {@NumberOf setup}) and change
+the @Code "@MakeGlossary" option within it to {@Code "Yes"}. Lout
+does not insert a glossary automatically. The glossary will appear
+at the end of the document, immediately before any index.
+@PP
+To make an entry in the glossary, place something like this in
+your main text at the point you are defining the term:
+@ID @OneRow @Code @Verbatim {
+Object @Glossary {
+Part of a document occupying a rectangular area;
+may be a simple word, or a collection of smaller
+objects composed in arbitrary ways.
+}
+}
+The object to the left of @Code "@Glossary" is the term being defined,
+and the object to the right is its definition. Nothing will appear
+in the main text where you put this, but the term will appear in the
+glossary, accompanied by its definition and the page number of this spot.
+@PP
+The term should be just a word or a short sequence of words. The
+definition may be as long and complex as you wish, containing
+paragraphs, displays, and so on.
+@PP
+The glossary items will appear sorted alphabetically. You can use
+the @Code "sortkey" option of @Code "@Glossary" to provide a separate
+sorting key:
+@ID @Code @Verbatim {
+{@Char florin} @Glossary sortkey { florin } {
+The florin character.
+}
+}
+This entry will appear in the list where things beginning with
+@Code f do, not where the @Code florin character code would
+place it. If you do this, since the term being defined is no
+longer used as a sort key it is free to be an arbitrary object, not
+restricted to be a word or a short sequence of words.
+@PP
+Creating a glossary entry does not automatically create an index
+entry (Section {@NumberOf indexes}). If you want an index entry
+for your glossary term as well (as you probably will) you need to
+make that separately, and you will need to use a different tag
+from the tag used by the glossary entry (which is either the term
+being defined, or @Code sortkey if given). To make an index entry
+that points into the actual glossary, which you also probably need,
+just place your index entry somewhere inside the definition.
+@PP
+In your main text you may want to indicate to the reader that
+some word or phrase appears in the glossary. For that there
+is the @Code "@InGlossary" symbol:
+@ID @Code "... where you can put one @InGlossary { object } ..."
+The thing between braces does not actually have to be in the
+glossary; @Code "@InGlossary" usually just changes the font,
+by default to small capitals, and it does not change anything
+unless @Code "@MakeGlossary" is {@Code Yes}.
+@PP
+The remainder of this section explains how to change the appearance
+of the printed glossary, by setting options in the setup file. For
+a general introduction to setup files and their options, see
+Section {@NumberOf setup}; here we just explain how the particular
+options relating to glossaries work.
+@PP
+Most of the glossary options appear within the @Code "@DocumentSetup"
+@Code "@Use" clause. Here they are (except {@Code "@GlossaryFormat"}
+which we'll discuss in a moment) with their default values:
+@ID @Code @OneRow @Verbatim {
+@MakeGlossary { No }
+@GlossaryText { @Null }
+@GlossaryFont {}
+@GlossaryBreak {}
+@GlossaryGap { @DisplayGap }
+@GlossaryColumnNumber{ 2 }
+@GlossaryColumnGap { 1.00c @OrIfPlain 6s }
+@InGlossaryFont { smallcaps }
+@InGlossaryFormat { @Body }
+}
+First comes {@Code "@MakeGlossary"}, which determines whether to
+make a glossary, as we know.
+@PP
+{@Code "@GlossaryText"} is some arbitrary text that will be
+placed before the first entry of the glossary. You can also
+give this option to the @Code "@Book" and @Code "@Report" symbols,
+and that would probably be the best place since such text is
+usually part of the document content, not the setup.
+@PP
+@Code "@GlossaryFont" and @Code "@GlossaryBreak" are font and
+break style options which are applied to each glossary entry. The
+default values don't change the font or break style at all.
+@PP
+@Code "@GlossaryGap" determines the vertical separation between
+one glossary entry and the next. You can give any length
+(Section {@NumberOf objects}) here; the default is the gap used
+around displays.
+@PP
+@Code "@GlossaryColumnNumber" and @Code "@GlossaryColumnGap"
+determine the number of columns on glossary pages, and the
+width of the gap between them. By default you get two columns
+per page and a one centimetre gap (or six spaces in plain text
+output), as for indexes (Section {@NumberOf indexes}).
+@PP
+@Code "@InGlossaryFont" and @Code "@InGlossaryFormat" determine
+the appearance of the result of the @Code "@InGlossary" symbol. The
+first changes the font; the second allows for more radical
+formatting. Within it, {@Code "@Body"} stands for the object
+following the {@Code "@InGlossary"} object, and you can do
+anything you like with it here. For example,
+@ID @Code "@InGlossaryFormat { @CurveBox @Body }"
+would cause @Code "@InGlossary" to enclose the following
+object in a curvebox (which would look horrible, of course).
+The default values change to small capitals but nothing more.
+@PP
+{@Code "@GlossaryFormat"}, which we omitted earlier because
+it is more complex, determines the format of each glossary
+entry. Here it is with its default value:
+@ID @OneRow @Code @Verbatim {
+@GlossaryFormat {
+ +3p @Font @S @Name @Right @I { @Word&&page @PageNum }
+ @DP
+ @RawIndentedDisplay @Body
+}
+}
+We'll go through this bit by bit.
+@PP
+First, the value of the option is longer than usual so we have
+spread it over three lines. There is nothing significant in
+this; end of line is the same as a space to Lout, and we've
+used three lines just to show the value clearly.
+@PP
+Within @Code "@GlossaryFormat" three symbols are made
+available specially:
+@QD @OneRow @Tbl
+ aformat { @Cell @Code A | @Cell B }
+{
+@Rowa
+ A { "@Name" }
+ B { Will be replaced by the term being defined }
+@Rowa
+ A { "@PageNum" }
+ B { Will be replaced by the number of the page of the
+spot where the @Code "@Glossary" symbol is placed }
+@Rowa
+ A { "@Body" }
+ B { Will be replaced by the definition }
+}
+Now let's look at what the default format does. The first bit,
+@ID @Code "+3p @Font @S @Name"
+produces the term being defined, three points larger than would
+have been the case otherwise, and in small capitals. The
+@Code "@Right" symbol causes what follows it to appear at the
+far right, so
+@ID @Code "@I { @Word&&page @PageNum }"
+will appear at the right of the column on the same line as
+the term. The value of {@Code "@Word&&page"} is just
+{@Code page} in the current language, and @Code "@PageNum" is a
+page number as we know, so this produces something like
+@ID @I { page 143 }
+at the right. After that we have {@Code "@DP"} which leaves
+a display-sized vertical gap, then the body appears in an
+indented display, made Raw so that there is no trailing
+vertical space.
+@PP
+You can change this option to anything you like. For example,
+suppose you prefer bold to small capitals, you want the page number
+in parentheses after the term, and you want each entry to be
+kept together in one column:
+@ID @OneRow @Code @Verbatim {
+@GlossaryFormat {
+ @OneRow {
+ @B @Name (@I { @Word&&page @PageNum })
+ @DP
+ @RawIndentedDisplay @Body
+ }
+}
+}
+And so on.
+@PP
+There are a few more setup file options for glossaries, to be found
+in the {@Code "@BookSetup"} or {@Code "@ReportSetup"} @Code "@Use"
+clause of the setup file. Here they are with their default values:
+@ID @OneRow @Code @Verbatim {
+@GlossaryWord { glossary }
+@GlossaryInContents { Yes }
+@GlossaryPrefix {}
+}
+The first determines the word that will be used as the title of
+the glossary. The default value shown produces {@Code Glossary}
+in English and its equivalent in other languages. You could change
+it, for example, to
+@ID @Code "@GlossaryWord { List of Definitions }"
+@Code "@GlossaryInContents" determines whether the glossary will
+be listed in the table of contents if there is one; and
+@Code "@GlossaryPrefix" is used by structure page numbers.
+@End @Section
diff --git a/doc/doc/user/str_indx b/doc/doc/user/str_indx
new file mode 100644
index 0000000..68d1ff1
--- /dev/null
+++ b/doc/doc/user/str_indx
@@ -0,0 +1,497 @@
+@Section
+ @Title { Indexes }
+ @Tag { indexes }
+@Begin
+@PP
+Although Lout is not clever enough to guess what entries should go in
+indexes. @Index { indexes }
+your index, it will do almost everything else for you: sort the
+entries and attach the correct page numbers automatically. As for
+tables of contents, the default setting is to have an index in
+books but not in other types of documents. This and a few aspects of
+the appearance of the index can be changed by changing the setup file,
+as explained at the end of this section.
+@PP
+Now, suppose you are discussing Galileo and you want his name in your
+index. Let's be ambitious and say that you want the index to contain
+something like this:
+@ID @OneRow lines @Break {
+Galileo Galilei
+ life of, 201
+ telescope, his use of, 201--203
+ trial of, 205--211, @I 242, 395
+}
+These lines show off Lout's five tricks: the first is a @I { raw entry }
+(no page number attached); the second is a @I sub-entry (indented); the
+third has a @I { page number range } instead of a single page number; and
+the fourth has a @I { merged entry } (several page numbers or ranges within
+one entry) and a @I { special element } (the page number in italics).
+@PP
+We'll get to them in a moment, but first, let's see how to get a basic
+entry, like this one:
+@ID { Galileo Galilei, 201 }
+To get this into your index, type
+@ID @Code "galileo @Index { Galileo Galilei }"
+at the point where you mention Galileo. Nothing will be printed there,
+but the object following the @Code "@Index" symbol will be placed in
+index.sym @Index { @Code "@Index" symbol }
+the index, plus a comma and the correct page number.
+@PP
+The object preceding the @Code "@Index" symbol is a compulsory key
+which is used for sorting the index entries,
+@FootNote {
+The collating sequence used to decide what comes after what is either
+the collating sequence used by the @Code "memcmp()" library routine (just
+the underlying binary character codes), or else the one used by the
+@Code "strcoll()" collating sequence, which understands accented
+characters and whose effect depends on your locale. To find out
+whether @Code "strcoll()" is in use or not, type @Code "lout -V" which
+prints out several lines of this and similar information, including
+information about command line flags to switch between the two kinds of
+collation.
+@PP
+If the sorting you get turns out to be not what you expected, the
+first thing to try is the replacement of all accented letters in index
+keys by unaccented ones. Sorting is quite an intractable problem: even
+collation.order @Index { collation order }
+sorting.order @Index { sorting order }
+if @Code "strcoll()" gets the sorting right for one language, there still
+remains the problem of sorting multilingual indexes.
+}
+but which is not itself printed. It is best to construct these
+keys from lower-case letters and the . character only, beginning
+with a letter, although multi-word keys are allowed. These sorting keys
+do not have to be distinct from the tags used in cross referencing;
+however, they do have to be distinct from each other, unless you want
+merged entries (see below).
+@PP
+Our first trick, raw entries (no page number attached), is very
+easy: just use @Code "@RawIndex" instead of {@Code "@Index"}. So the
+rawindex.sym @Index { @Code "@RawIndex" symbol }
+first line of our ambitious example is obtained by
+@ID @Code "galileo @RawIndex { Galileo Galilei }"
+This could go anywhere, since no page numbers are involved.
+@PP
+Our second trick, sub-entries, is also easy, since a sub-entry
+is just an ordinary entry with an indent. The symbol is
+{@Code "@SubIndex"}, so the second line of our ambitious example is
+subindex.sym @Index { @Code "@SubIndex" symbol }
+produced by
+@ID @Code "galileo.life @SubIndex { life of }"
+You should always give sub-entries the same sorting key as their
+corresponding main entries, plus a . and another word, because then
+you can be certain that the sorting will place sub-entries directly
+after their main entries. There is a @Code "@SubSubIndex" symbol that
+produces a double indent, and there are @Code "@RawSubIndex" and
+@Code "@RawSubSubIndex" symbols.
+@PP
+For our third trick, page number ranges, we use the @Code "to" option
+of the {@Code "@Index"}, {@Code "@SubIndex"}, and {@Code "@SubSubIndex"}
+symbols. For example, to produce the sub-entry
+@ID { telescope, his use of, 201--203 }
+put
+@ID @Code {
+ "galileo.telescope @SubIndex to { gt.end } { telescope, his use of }"
+}
+at the beginning of the range, and
+@ID @Code "@PageMark { gt.end }"
+at the end. You can use any tag you like inside the @Code "to" option,
+as long as it differs from every other tag (notice that sorting keys
+do not have to differ from tags, but @Code "to" options do: this
+is because @Code "to" options go into @Code "@PageMark" like other
+tags do, and if two tags are the same we would have an ambiguous
+result of {@Code "@PageOf"}). If both ends of the range fall on the
+same page, the @Code "to" option is ignored: you will never get
+201--201.
+@PP
+Our fourth trick is the merged entry:
+@ID { trial of, 205--211, 242, 395 }
+This merged entry was originally three separate entries (sub-entries
+in this case):
+@ID @OneRow lines @Break {
+trial of, 205--211
+trial of, 242
+trial of, 395
+}
+We know how to produce these, using three @Code "@SubIndex" symbols,
+one with a @Code "to" option. Lout is able to merge several entries
+into one entry. This raises two questions: how does Lout know which
+entries to merge? and given those entries, what does the merging produce?
+@PP
+The answer to the first question is that Lout merges entries whose
+sorting keys are equal. The merged entry above is produced by these
+three entries, placed in the appropriate places:
+@ID @OneRow @Code {
+"galileo.trial @SubIndex to { gtrial.end } { trial of }"
+"galileo.trial @SubIndex { trial of }"
+"galileo.trial @SubIndex { trial of }"
+}
+The entries are merged because they have the same sorting key
+({@Code "galileo.trial"}), not because they happen to have the
+same content ({@Code "trial of"}).
+@PP
+Now, having decided that the three entries
+@ID @OneRow lines @Break {
+trial of, 205--211
+trial of, 242
+trial of, 395
+}
+must be merged, what does Lout do? Without being too formal, it
+finds the shortest larger entry that contains everything in the
+given entries, more or less, preserving the order in which
+the entries' points of origin appear in the final printed document.
+@PP
+If the entries are not different at all, then the result will be
+the same as each of them. With this in mind, let us return to
+our initial, ambitious example:
+@ID @OneRow lines @Break {
+Galileo Galilei
+ life of, 201
+ telescope, his use of, 201--203
+ trial of, 205--211, 242, 395
+}
+We now know how to produce all four of these entries, but one problem
+of some practical importance remains. Suppose we delete the section on
+the life of Galileo. If we had put the entry that produces `Galileo
+Galilei' in that section, we might inadvertently delete it, and the
+other two sub-entries will lose their main entry. Before deleting
+anything, we must hunt through it for index entries and ponder their
+significance, an error-prone and time-wasting thing to do.
+@PP
+The solution is as follows. When an index entry has sub-entries, make
+it raw, and repeat it just before each of its sub-entries:
+@ID @OneRow @Code {
+"galileo @RawIndex { Galileo Galilei }"
+"galileo.life @SubIndex { life of }"
+}
+at the first place,
+@ID @OneRow @Code {
+"galileo @RawIndex { Galileo Galilei }"
+"galileo.telescope @SubIndex { telescope, his use of }"
+}
+at the second, and so on. Now it is easy to verify that every
+sub-entry has a main entry; and when deleting a sub-entry we can and
+should delete the adjacent main entry. After sorting, our index
+entries will be
+@ID @Tab
+ @Fmta { @Col @Code A ! @Col B }
+{
+@Rowa
+ A { galileo }
+ B { Galileo Galilei }
+@Rowa
+ A { galileo }
+ B { Galileo Galilei }
+@Rowa
+ A { galileo }
+ B { Galileo Galilei }
+@Rowa
+ A { galileo }
+ B { Galileo Galilei }
+@Rowa
+ A { galileo }
+ B { Galileo Galilei }
+@Rowa
+ A { galileo.life }
+ B { {} life of, 201 }
+@Rowa
+ A { galileo.telescope }
+ B { {} telescope, his use of, 201--203 }
+@Rowa
+ A { galileo.trial }
+ B { {} trial of, 205--211 }
+@Rowa
+ A { galileo.trial }
+ B { {} trial of, 242 }
+@Rowa
+ A { galileo.trial }
+ B { {} trial of, 395 }
+}
+The first five entries have the same sorting key, and will be merged
+as required.
+@PP
+Each index entry symbol has a @Code { pnformat } option, which affects the
+way the page number of the entry is printed in the index. For example,
+@ID @Code "galileo.trial @SubIndex pnformat { Main } { trial of }"
+indicates that this is an entry of format {@Code Main}. By default the
+format is {@Code Ordinary}; it may be {@Code Main}, producing a
+bold page number in the index, or {@Code Special}, producing an
+italic page number.
+@PP
+As the name suggests, the @Code pnformat option is actually a format
+option, within which the @Code "@PageNum" symbol stands for the index
+page number, so you could even write
+@ID @Code "galileo.trial @SubIndex pnformat { @Underline @PageNum } { trial of }"
+to get an underlined page number. However, it is rarely a good
+idea to use the @Code { pnformat } option in this way. Better to
+decide once and for all what variants on the basic format you are
+going to have, call one variant {@Code Main} and the other {@Code Special},
+use the setup file options described later in this section to redefine
+the appearance of page numbers for these two index entry formats, and
+explain in the @Code "@IndexText" what the formats mean.
+@PP
+When index entries with different formats are merged, naturally each page
+number preserves its own format. If there are two merged entries with
+the same page number but different formats, the result is plausible but
+indeterminate. A page number range is formatted according to the format
+of the index entry which is its starting point. To change the format
+of the @I stem of the index entry, just do the usual thing. For example,
+@ID @Code "galileo @Index @I { Galileo Galilei }"
+will cause the stem of the entry to appear in an italic font.
+@PP
+The language of the index entry will be the initial language of the
+document as a whole, which is not necessarily the language at the point
+where the index entry occurs. To get the correct language you will need a
+@Code "@Language" symbol following the @Code "@Index" symbol:
+@ID @Code "galileo. @Index Italian @Language { Galileo Galilei }"
+or whatever. If you don't do this your index entry might be hyphenated
+incorrectly.
+@PP
+Although the page numbers in index entries will be kept up to date
+automatically as the document changes, as all cross references are,
+it is best to refrain from inserting index entries until the document
+is complete and an overall plan of the structure of the index can
+be made. Place index entries for floating figures and tables within
+their captions.
+@PP
+Large indexes may benefit from {@I spacers}: empty spaces or
+spacers. @Index { spacers in indexes }
+headings between the parts for each letter of the alphabet. One
+way to get blank line spacers is with {@Code "@RawIndex"}, like this:
+@ID @OneRow @Code {
+"b @RawIndex {}"
+"c @RawIndex {}"
+"d @RawIndex {}"
+"..."
+"z @RawIndex {}"
+}
+These phantom entries will insert blank lines before the region of each
+English letter except `a'. In fact there is a symbol called
+@Code "@IndexBlanks" that makes
+indexblanks. @Index @Code "@IndexBlanks"
+exactly these 25 entries. Unfortunately, these blanks will occasionally
+appear at the top of a column, and if there are no tags beginning with
+x, for example, there will be two blank lines between the w and y
+entries. You can start off with @Code "@IndexBlanks" and replace it
+later by the appropriate subset, if necessary.
+@FootNote {
+For Lout to solve this problem automatically, it would need to be told
+which letter each index entry belongs under, perhaps by symbols
+{@Code "@AIndex"}, {@Code "@BIndex"}, etc. The author felt that this
+would have been too tedious.
+}
+@PP
+More elaborate spacers can be inserted with
+indexspacer. @Index @Code "@IndexSpacer"
+the @Code "@IndexSpacer" symbol, like this:
+@ID @Code "a @IndexSpacer A"
+This is similar to @Code "a @RawIndex A" in that it puts the entry
+@Code A at sort position {@Code a}; but it also places extra space
+above and below it, and it includes a font change, so that the
+@Code A stands out like a heading (you can see the effect in the
+index of this document). @Code "@IndexSpacer" also includes a
+conditional new page, so that the spacer never appears alone at
+the bottom of a column.
+@PP
+The first spacer needs to be slightly different, since no
+space is wanted above it:
+initialindexspacer. @Index @Code "@InitialIndexSpacer"
+@ID @Code "a @InitialIndexSpacer A"
+There is an @Code "@IndexLetters" symbol which places the 26 spacers
+indexletters. @Index @Code "@IndexLetters"
+@ID @OneRow @Code @Verbatim {
+a @InitialIndexSpacer A
+b @IndexSpacer B
+...
+z @IndexSpacer Z
+}
+into your document for you in one go. Users of other alphabets are
+recommended to define a similar symbol of their own.
+@PP
+The remainder of this section describes how to change the appearance of
+the index by setting options in the setup file. For setup files and
+their options in general, consult Section {@NumberOf setup}.
+@PP
+There are several setup file options for the index. Here they are with
+their default values:
+@ID @OneRow @Code @Verbatim {
+@MakeIndex { No }
+@IndexText { @Null }
+@IndexFont { }
+@IndexBreak { oragged 1.2fx }
+@IndexFormat { @Body }
+@SubIndexFormat { {1f @Wide}@Body }
+@SubSubIndexFormat { {2f @Wide}@Body }
+@IndexTypeOrdinary { @PageNum }
+@IndexTypeMain { @B @PageNum }
+@IndexTypeSpecial { @I @PageNum }
+@IndexRangeFormat { @From--@To }
+@IndexColumnNumber { 2 }
+@IndexColumnGap { 1.00c }
+@IndexCtd { Yes }
+@IndexCtdWord { continued }
+@IndexCtdFormat { @Body @I (@CtdWord) }
+@IndexSpacerAbove { 2v }
+@IndexSpacerBelow { 1v }
+@IndexSpacerFont { +3p }
+@IndexSpacerFormat { @Body }
+}
+The @Code "@MakeIndex" option, which may be @Code Yes or {@Code No},
+makeindex. @Index @Code "@MakeIndex"
+determines whether to produce an index or not. Although the default
+value is {@Code No}, any type of document may be given an index just
+by changing it to {@Code Yes}. This has already been done in the
+@Code book setup file, but not in the others.
+@PP
+@Code "@IndexText" is some text to put at the start of the index,
+after the heading but before any index entries. It will appear
+full width on the page. This option is also available as an option
+of the {@Code "@Document"}, {@Code "@Report"}, and {@Code "@Book"}
+symbols.
+@PP
+@Code "@IndexFont" determines the font and font size of index entries
+indexfont. @Index @Code "@IndexFont"
+(e.g. {@Code "Times Base 12p"}). Leaving it empty as above produces
+the same font as the rest of the document. @Code "@IndexBreak" is the
+indexbreak. @Index @Code "@IndexBreak"
+paragraph breaking style applied to index entries; @Code oragged is the
+traditional and best way.
+@PP
+@Code "@IndexFormat" allows a more radical control of the appearance
+indexformat. @Index @Code "@IndexFormat"
+of the index entry than just its font and break style. Within it,
+the @Code "@Body" symbol stands for the entry, not including any page
+numbers. The default value just leaves the index entry as is, but the
+corresponding options for formatting subindexes ({@Code "@SubIndexFormat"}
+and {@Code "@SubSubIndexFormat"}) are more interesting:
+@ID @Code "@SubIndexFormat { {1f @Wide}@Body }"
+causes subindexes to begin with an indent of width {@Code 1f},
+immediately followed by the entry. For more information about
+lengths like {@Code 1f}, see Section {@NumberOf objects}. Another
+possible format is
+@ID @Code "@SubIndexFormat { -- @Body }"
+which causes the subindex to begin with an en-dash and two spaces
+instead of an indent.
+@PP
+{@Code "@IndexTypeOrdinary"}, {@Code "@IndexTypeMain"}, and
+{@Code "@IndexTypeSpecial"} give the page number format to use
+when the index entry type is {@Code Ordinary}, {@Code Main}, and
+{@Code Special} respectively. Within them the @Code "@PageNum"
+symbol stands for the page number or page number range being
+printed. The value of these options can be an arbitrary object.
+If the value of a @Code pnformat option is not {@Code Ordinary},
+{@Code Main}, or {@Code Special}, then the @Code pnformat option
+itself is printed; it too may contain a @Code "@PageNum" symbol,
+as explained earlier.
+@PP
+{@Code "@IndexRangeFormat"} gives the format to use when a page
+number range, such as 5--8, is to be included in an index entry.
+Within it the symbols @Code "@From" and @Code "To" stand for
+the first and last page numbers respectively. These will always
+be different when {@Code "@IndexRangeFormat"} is used; Lout knows
+never to insert a range when the two end points are equal. The
+default value just separates the two numbers by an en-dash with
+no space.
+@PP
+@Code "@IndexColumnNumber" and @Code "@IndexColumnGap" determine the
+indexcolumnnumber. @Index @Code "@IndexColumnNumber"
+indexcolumngap. @Index @Code "@IndexColumnGap"
+number of index columns per page, and the gap between them, and are
+exactly analogous to the @Code "@ColumnNumber" and @Code "@ColumnGap"
+options described in Section {@NumberOf columns}.
+@PP
+The next three options control the appearance of running headers
+@FootNote {
+Owing to problems behind the scenes, in the highly unlikely case
+where more than three copies of the same running header appear on
+the same page, their horizontal positions will become confused,
+probably resulting in the apparent disappearance of all but the
+last three.
+}
+in the index:
+indexctd. @Index { @Code "@IndexCtd" }
+indexctdword. @Index { @Code "@IndexCtdWord" }
+indexctdformat. @Index { @Code "@IndexCtdFormat" }
+@ID @OneRow @Code @Verbatim {
+@IndexCtd { Yes }
+@IndexCtdWord { continued }
+@IndexCtdFormat { @Body @I (@CtdWord) }
+}
+If an @Code "@Index" entry has @Code "@SubIndex" entries
+that run over to the next column, Lout will print an unobtrusive running
+header at the top of that column, something like this in English:
+@ID { procrastination @I (ctd.) }
+It will print two running headers if a @Code "@SubIndex" entry has
+@Code "@SubSubIndex" entries that run over, one for the main entry and an
+indented one for the sub-entry. You can turn off these running headers by
+setting @Code "@IndexCtd" to {@Code No}. A particular word is associated
+with index running headers; by default it is @Code "ctd." in English and
+its equivalent in other languages. This is what the default value,
+{@Code "continued"}, of the @Code "@IndexCtdWord" option gives you; if you
+want some other word, change that option to the word you want. Finally,
+you can control the format of the running headers using
+{@Code "@IndexCtdFormat"}. Within this option, the symbol @Code "@Body"
+stands for the value of the index entry that is running over (as formatted
+by {@Code "@IndexFormat"}, {@Code "@SubIndexFormat"}, or
+{@Code "@SubSubIndexFormat"} but without any page numbers), and
+@Code "@CtdWord" stands for the word produced by the @Code "@IndexCtdWord"
+option. The default value of {@Code "@IndexCtdFormat"}, shown above,
+yields the index entry followed by @Code "@IndexCtdWord" in
+italics and parentheses.
+@PP
+Finally, we have four options to control the appearance of index
+spacers:
+indexspacerabove. @Index { @Code "@IndexSpacerAbove" }
+indexspacerbelow. @Index { @Code "@IndexSpacerBelow" }
+indexspacerfont. @Index { @Code "@IndexSpacerFont" }
+indexspacerformat. @Index { @Code "@IndexSpacerFormat" }
+@ID @OneRow @Code @Verbatim {
+@IndexSpacerAbove { 2v }
+@IndexSpacerBelow { 1v }
+@IndexSpacerFont { +3p }
+@IndexSpacerFormat { @Body }
+}
+@Code "@IndexSpacerAbove" and @Code "@IndexSpacerBelow" determine the
+amount of extra space to insert above and below index spacers (except
+that {@Code "@InitialIndexSpacer"} uses @Code {0v} for its above space). Any
+lengths from Section {@NumberOf objects} are acceptable here; the default
+lengths shown are two times and one times the current inter-line
+spacing. @Code "@IndexSpacerFont" may contain any font change acceptable
+to the {@Code "@Font"} symbol; the default increases the size by 3
+points. For more radical changes to the spacer format,
+@Code "@IndexSpacerFormat" allows any symbols to be applied to the
+spacer object, which is represented by the symbol @Code "@Body" within
+this option. For example,
+@ID @Code "@IndexSpacerFormat { @Underline @Body }"
+will cause the spacer to be underlined.
+@PP
+The @Code "@IndexSpacer" symbol has {@Code above}, {@Code below},
+{@Code font}, and {@Code format} options which override the four
+setup file options. For example, @Code "@InitialIndexSpacer" is
+equivalent to
+@ID @Code "@IndexSpacer above { 0v }"
+Whether you will ever need to vary the appearance of index spacers
+individually in this way is very doubtful, but the capacity is there.
+@PP
+Lout offers three independent indexes (useful for author indexes,
+etc.). The other two are called index A and index B, and they
+precede the main index in the output. Just replace @Code Index
+by @Code IndexA to refer to index A, and by @Code IndexB to refer
+to index B. For example,
+@ID @Code "smith.j @IndexA { Smith, John }"
+will insert an index entry to index A, and @Code "@IndexBBlanks"
+will insert the usual 25 blank entries into index B. There are
+setup file options to change the titles of indexes.
+@PP
+In large projects it might help to rename the @Code "@IndexA" symbol
+to something else, such as {@Code "@AuthorIndex"}. This can
+be done by placing
+@ID @Code {
+"import @DocumentSetup"
+"macro @AuthorIndex { @IndexA }"
+}
+in the @Code mydefs file (Section {@NumberOf definitions}). The
+word @Code macro is needed here instead of @Code "def" because we
+are introducing a new name for an existing symbol, not defining
+a new symbol.
+@End @Section
diff --git a/doc/doc/user/str_larg b/doc/doc/user/str_larg
new file mode 100644
index 0000000..9e5fc79
--- /dev/null
+++ b/doc/doc/user/str_larg
@@ -0,0 +1,194 @@
+@Section
+ @Title { Large-scale structure: chapters, sections, etc. }
+ @RunningTitle { Large-scale structure }
+ @Tag { largescale }
+@Begin
+@PP
+Lout's large-scale structure symbols vary with the type of document
+large.scale. @Index { large-scale structure }
+({@Code "@Chapter"} for books, @Code "@Overhead" for overhead
+transparencies, etc.), but they all work in the same way. Here is a
+typical example, {@Code "@Section"}, as it would actually be used:
+@ID @OneRow @Code {
+"@Section"
+" @Title { Allocation of teachers }"
+"@Begin"
+"@PP"
+"Apart from the usual need to avoid clashes, the allocation of teachers must"
+"ensure that no teacher teaches more than seven periods per day, or ..."
+"@End @Section"
+}
+First comes the symbol itself, then any options in the usual way, and
+then the following object, enclosed in @Code "@Begin" and
+{@Code "@End @Section"}. The following object, also called the body
+of the section, may contain paragraphs, displays, and all the other
+features as usual. The body should begin with a paragraph symbol,
+which may be @Code "@PP" or @Code "@LP" as you prefer. The result is
+a section like the present one, automatically numbered, with the
+@Code "@Title" option for its heading, preceded by a conditional new
+title. @Index @Code "@Title"
+page symbol (Section {@NumberOf paragraphs}).
+@PP
+When @Code "@Section" symbols are used within an ordinary document, they
+must be bracketed by @Code "@BeginSections" and @Code "@EndSections"
+symbols, like this:
+@ID @OneRow @Code {
+"@SysInclude { doc }"
+"@Doc @Text @Begin"
+"preceding text"
+"@BeginSections"
+"@Section ... @End @Section"
+"@Section ... @End @Section"
+"..."
+"@Section ... @End @Section"
+"@EndSections"
+"@End @Text"
+}
+This arrangement is reminiscent of the one for lists, and, as for
+lists, there may be no paragraph or new page symbols before, between,
+or after the sections.
+@PP
+The @Code "@Begin ... @End @Section" that brackets the body of each
+section may be abbreviated to {@Code "{ ... }"}. However, the long
+form is recommended because it helps Lout to detect missing or extra
+braces within the body of the section.
+@PP
+To change the gap between sections, you need to change the
+@Code "@SectionGap" option in the setup file, as explained in
+Chapter {@NumberOf types}. If you just want a new page or column
+before one section, then use the @Code "@NewPage" option of that
+section, like this:
+@ID @OneRow @Code {
+"@Section"
+" @Title { Bandicoots and quolls }"
+" @NewPage { Yes }"
+"@Begin"
+"..."
+"@End @Section"
+}
+The @Code "@NewPage" option is only available with large-scale structure
+symbols that usually do not appear on a new page (like {@Code "@Section"}),
+and it forces them to appear on a new page. You can't use it with
+large-scale structure symbols that usually appear on a new page (like
+{@Code "@Chapter"}) to force them not to -- there is no way to do that.
+@PP
+All large-scale structure symbols have a @Code "@Tag" option, whose
+use is explained in Section {@NumberOf cross}, and a @Code "@RunningTitle"
+runningtitle. @Index @Code "@RunningTitle"
+option. If running page headers have been requested, @Code "@RunningTitle"
+will be used if it is given, otherwise @Code "@Title" will be used for the
+running header. For example, the present section begins like this:
+@ID @OneRow @Code {
+"@Section"
+" @Title { Large-scale structure: chapters, sections, etc. }"
+" @RunningTitle { Large-scale structure }"
+" @Tag { largescale }"
+"@Begin"
+"..."
+}
+The point is that the section title is rather long for a running
+title, and so we use @Code "@RunningTitle" to get an abbreviated
+version of it.
+@PP
+Section titles typically appear in Bold face in the section heading,
+but in Roman face in tables of contents and running page headers. So
+if part of your title is in italics, enclose it in @Code "@II" rather
+than just @Code "@I" to ensure that you get the right kind of italics
+in both contexts.
+@PP
+All large-scale structure symbols also have an @Code "@InitialLanguage"
+option which sets the current language for the duration of that
+symbol. However, footnotes, endnotes, figures, tables, references,
+and index entries are set in the initial language of the document as
+a whole, unless you change their language explicitly using the
+@Code "@Language" symbol.
+@PP
+The remainder of this section describes the setup file options for
+controlling the appearance of large-scale structure symbols. (For an
+introduction to setup files, consult Section {@NumberOf setup}.) These
+options mainly appear in the third @Code "@Use" clause, since exactly which
+large-scale structure symbols exist depends on the type of document. For
+example, here are the setup file options from the @Code "doc" setup file
+relating to appendices:
+@ID @OneRow @Code {
+"@AppendixWord { appendix }"
+"@AppendixNumbers { UCAlpha }"
+"@FirstAppendixNumber { 1 }"
+"@AppendixHeadingFont { Bold }"
+"@AppendixHeadingBreak { ragged 1.2fx nohyphen }"
+"@AppendixHeadingFormat { number @DotSep title }"
+"@AppendixGap { 2.0v @OrIfPlain 2f }"
+"@AppendixInContents { Yes }"
+"@AppendixNumInTheorems { No }"
+"@AppendixNumInDisplays { Yes }"
+"@AppendixNumInFigures { No }"
+"@AppendixNumInTables { No }"
+"@AppendixPrefix { }"
+}
+There are similar options for each large-scale structure symbol. Here is
+a brief explanation.
+@PP
+@Code "@AppendixWord" contains the word that is to be prefixed to the
+appendix number in full headings. The special value @Code appendix
+produces Appendix or its equivalent translated into the current
+language. Any other value produces itself.
+@PP
+@Code "@AppendixNumbers" determines the style of numbering of appendices,
+and may be {@Code Arabic}, {@Code Roman}, {@Code UCRoman}, {@Code Alpha},
+{@Code UCAlpha}, or {@Code None} meaning unnumbered. Most common is
+{@Code Arabic}, but appendices traditionally use upper-case
+letters, hence the value {@Code UCAlpha} given above.
+@PP
+@Code "@FirstAppendixNumber { 1 }" is the number (always in Arabic) to
+assign to the first appendix. It is almost always 1, but a few people
+like to start their numbering from 0; this is only possible if the
+style of numbering specified by @Code "@AppendixNumbers" is {@Code Arabic}.
+@PP
+@Code "@AppendixHeadingFont" and @Code "@AppendixHeadingBreak" specify
+the font and paragraph breaking style to be applied to the appendix
+heading (relative to {@Code "@InitialFont"} and {@Code "@InitialBreak"});
+the default values shown above produce Bold in the current font family
+and size, and ragged breaking without hyphenation.
+@PP
+@Code "@AppendixHeadingFormat" defines the format of the appendix
+heading. Within it, the symbols @Code number and @Code title stand for the
+appendix number (including the appendix word) and title respectively. The
+@Code "@DotSep" symbol produces a dot and two spaces, except when there is
+no number, when it produces nothing. For example, to draw a full-width
+rule under the heading, change this option to
+@ID @Code "@AppendixHeadingFormat { number @DotSep title @LP @FullWidthRule }"
+Arbitrary formats are acceptable.
+@PP
+@Code "@AppendixGap" determines the vertical space to leave between
+appendices; the default above leaves {@Code 2v}, except that when plain
+text output is in effect it leaves @Code 2f instead. To get a new page
+between appendices, use the magic value {@Code 2b}, which is raw Lout for
+new page. In books, the major components (preface, introduction, tables
+of contents, parts, chapters, appendices, and indexes) always start on a
+new page and there is nothing you can do to change that.
+@PP
+@Code "@AppendixInContents" determines whether the appendix will be listed
+in the table of contents, and may be @Code "Yes" or {@Code No}. The
+next few options determine whether an appendix number will be included
+in the numbers assigned to theorems etc., numbered displays, figures,
+and tables.
+@PP
+There is a @Code "@StructPageNums" setup file option which determines
+whether page numbers will include the numbers of large-scale structure
+symbols. If it is {@Code "Yes"}, @Code "@AppendixPrefix" is prefixed
+to all page numbers of pages containing appendices. For example, setting
+@Code "@AppendixPrefix" to @Code { APP- } produces page
+numbers APP-A-1, APP-A-2, and so on. The object separating each element
+of such compound numbers is determined by the @Code "@NumberSeparator"
+numberseparator. @Index @Code "@NumberSeparator"
+setup file option, which has default value @Code "." but which can easily
+be set to @Code "-" or @Code "--" if desired.
+@PP
+Running page headers above appendices always include the title of
+the appendix, so there is no option for specifying whether to do so or
+not. But for subappendices and other such smaller units, the choice of
+whether to mention them in running headers is left to the user:
+@ID @Code "@SubAppendixNumInRunners { Yes }"
+Despite the misleading name, this option determines whether the entire
+subappendix @I title as well as number will be used as a running header.
+@End @Section
diff --git a/doc/doc/user/str_list b/doc/doc/user/str_list
new file mode 100644
index 0000000..2e56aa1
--- /dev/null
+++ b/doc/doc/user/str_list
@@ -0,0 +1,524 @@
+@Section
+ @Title { Lists }
+ @Tag { lists }
+@Begin
+@PP
+The @Code "@IndentedList" symbol introduces items to be
+indentedlist. @Index @Code "@IndentedList"
+il. @Index @Code "@IL"
+lists. @Index { lists }
+made into a displayed list:
+@ID @OneRow @Code @Verbatim {
+preceding text
+@IndentedList
+@ListItem @I Emma
+@ListItem @I { Mansfield Park }
+@EndList
+following text
+}
+After the initial @Code "@IndentedList" symbol, each item is introduced by
+list.item. @Index @Code "@ListItem"
+li. @Index @Code "@LI"
+{@Code "@ListItem"}, and the list ends with {@Code "@EndList"}. The
+end.list. @Index @Code "@EndList"
+el. @Index @Code "@EL"
+result here is
+@ID @OneRow {
+preceding text
+@IndentedList
+@ListItem @I Emma
+@ListItem @I { Mansfield Park }
+@EndList
+following text
+}
+with space inserted automatically before, between, and after
+the items.
+@PP
+As the example shows, the @Code "@IndentedList" symbol causes the items to be
+indented. Also available are {@Code "@LeftList"},
+leftlist. @Index @Code "@LeftList"
+ll. @Index @Code "@LL"
+{@Code "@QuotedList"}, {@Code "@CentredList"}, and {@Code "@CenteredList"},
+quotedlist. @Index @Code "@QuotedList"
+ql. @Index @Code "@QL"
+centredlist. @Index @Code "@CentredList"
+centeredlist. @Index @Code "@CenteredList"
+cl. @Index @Code "@CL"
+which format the items like the corresponding display symbols do.
+Other list symbols generate a @I label for each item. For example,
+@Code "@NumberedList" causes the items to be numbered:
+numberedlist. @Index @Code "@NumberedList"
+nl. @Index @Code "@NL"
+@ID @OneRow @Code @Verbatim {
+@Heading { Quiz }
+@NumberedList
+@ListItem { Which American statesman owned a two-storey clock? }
+@ListItem { Which Yankee commander from the Civil War cut a
+swathe of destruction through the State of Georgia? }
+@EndList
+}
+has result
+@ID @OneRow {
+@Heading { Quiz }
+@NumberedList
+@ListItem { Which American statesman owned a two-storey clock? }
+@ListItem { Which Yankee commander from the Civil War cut a
+swathe of destruction through the State of Georgia? }
+@RawEndList
+}
+The generated labels are added at the left margin.
+Here is the full set
+of label-generating list symbols, showing the first label produced by each:
+parennumberedlist. @Index @Code "@ParenNumberedList"
+pnl. @Index @Code "@PNL"
+romanlist. @Index @Code "@RomanList"
+rl. @Index @Code "@RL"
+parenromanlist. @Index @Code "@ParenRomanList"
+prl. @Index @Code "@PRL"
+ucromanlist. @Index @Code "@UCRomanList"
+ucrl. @Index @Code "@UCRL"
+parenucromanlist. @Index @Code "@ParenUCRomanList"
+pucrl. @Index @Code "@PUCRL"
+alphalist. @Index @Code "@AlphaList"
+al. @Index @Code "@AL"
+parenalphalist. @Index @Code "@ParenAlphaList"
+pal. @Index @Code "@PAL"
+ucalphalist. @Index @Code "@UCAlphaList"
+ucal. @Index @Code "@UCAL"
+parenucalphalist. @Index @Code "@ParenUCAlphaList"
+pucal. @Index @Code "@PUCAL"
+bulletlist. @Index @Code "@BulletList"
+bl. @Index @Code "@BL"
+starlist. @Index @Code "@StarList"
+sl. @Index @Code "@SL"
+dashlist. @Index @Code "@DashList"
+dl. @Index @Code "@DL"
+@ID @Tab
+ @Fmta { @Col @CC A ! @Col @Code B ! @Col ! @Col @CC C ! @Col @Code D }
+{
+@Rowa
+ A { 1. }
+ B { "@NumberedList" }
+ C { (1) }
+ D { "@ParenNumberedList" }
+@Rowa
+ A { i. }
+ B { "@RomanList" }
+ C { (i) }
+ D { "@ParenRomanList" }
+@Rowa
+ A { I. }
+ B { "@UCRomanList" }
+ C { (I) }
+ D { "@ParenUCRomanList" }
+@Rowa
+ A { a. }
+ B { "@AlphaList" }
+ C { (a) }
+ D { "@ParenAlphaList" }
+@Rowa
+ A { A. }
+ B { "@UCAlphaList" }
+ C { (A) }
+ D { "@ParenUCAlphaList" }
+@Rowa
+ A { @Bullet }
+ B { "@BulletList" }
+@Rowa
+ A { @Star }
+ B { "@StarList" }
+@Rowa
+ A { -- }
+ B { "@DashList" }
+}
+roman @Index { Roman numerals }
+The Roman numerals end at cc (200), but ordinary decimal numbers have
+no limit. The labels produced by the four alphabetical list symbols are
+determined by the current language; in English they start at @Code "a"
+and end at {@Code "z"}.
+@PP
+You may also supply your own labels using the @Code "@TaggedList"
+taggedlist @Index @Code "@TaggedList"
+tl. @Index @Code "@TL"
+symbol. Each item is introduced by @Code "@TagItem" instead of
+tagitem. @Index @Code "@TagItem"
+ti. @Index @Code "@TI"
+{@Code "@ListItem"}. Since such labels tend to be quite wide,
+there are @Code "@WideTaggedList" and @Code "@VeryWideTaggedList" symbols
+widezzztaggedlist @Index @Code "@WideTaggedList"
+wtl. @Index @Code "@WTL"
+verywidetaggedlist @Index @Code "@VeryWideTaggedList"
+vwtl. @Index @Code "@VWTL"
+which leave extra space for them:
+@ID @OneRow @Code @Verbatim {
+@WideTaggedList
+@TagItem { 9 a.m. } { Breakfast in the Ipamena Lounge,
+served with Irish coffee and fresh croissants. }
+@TagItem { 10 a.m. } { Prof. A. Smith
+speaks on `The Wealth of Nations.' }
+@EndList
+}
+Each @Code "@TagItem" symbol is followed by the desired label between
+braces, and then the item proper. The label may be empty, but still its
+enclosing braces must be there. The result here is
+@ID @OneRow {
+@RawWideTaggedList
+@TagItem { 9 a.m. } { Breakfast in
+the Ipamena Lounge, served with
+Irish coffee and fresh croissants. }
+@TagItem { 10 a.m. } { Prof. A. Smith
+speaks on `The Wealth of Nations.' }
+@RawEndList
+}
+An alternative way to accommodate wide labels is the `drop item,'
+drop.item @Index { drop items }
+which looks like this:
+@ID @OneRow {
+@RawTaggedList
+@DTI { 10 a.m. } { Prof. A. Smith speaks on `The Wealth of Nations.' }
+@RawEndList
+}
+Individual items are dropped in this way by using @Code "@DropTagItem"
+drop.tag.item @Index @Code "@DropTagItem"
+dti. @Index @Code "@DTI"
+instead of {@Code "@TagItem"}. There is also a @Code "@DropListItem"
+drop.list.item @Index @Code "@DropListItem"
+dli. @Index @Code "@DLI"
+symbol corresponding to {@Code "@ListItem"}, but it is very rarely
+needed. Lout is not able to decide for itself whether a label is wide
+enough to require a drop item. Lout will refuse to skip to the next
+column or page between a drop tag and its item, preferring instead
+to move the drop tag to the next column or page.
+@PP
+Each list has a `raw' version which omits the preceding space, and
+raw.lists @Index { raw lists }
+raw.list. @Index @Code "@RawList"
+raw.end.list. @Index @Code "@RawEndList"
+@Code "@EndList" has a raw version which omits the following
+space. These are mainly used when an item is itself a list:
+@ID @OneRow @Code @Verbatim {
+@ParenNumberedList
+@ListItem {
+ @RawParenRomanList
+ @ListItem { MV Nominees,
+hereinafter called the vendor, ... }
+ @RawEndList
+}
+@EndList
+}
+produces
+@ID @OneRow {
+@RawParenNumberedList
+@ListItem {
+ @RawParenRomanList
+ @ListItem { MV Nominees,
+hereinafter called the vendor, ... }
+ @RawEndList
+}
+@RawEndList
+}
+If @Code "@ParenRomanList" had been used instead of
+{@Code "@RawParenRomanList"}, (1) and (i) would have appeared on
+different lines; or if @Code "@EndList" had been used instead of
+{@Code "@RawEndList"}, there would have been too much space following
+the list.
+@PP
+A list item may come out partly on one page or column and partly on
+the next, if it has places where it obviously can be broken in two. For
+example, a list item which is an ordinary paragraph of text might be
+broken in two between any two lines. To force a list item to keep
+together on one page or column, use the @Code "@OneRow" symbol like
+this: @Code "@ListItem @OneRow { ... }".
+@PP
+Occasionally it is desirable to start a new page or column between
+two list items. This cannot be done by inserting @Code "@NP"
+between them, because the space between two list items is a kind
+of no-man's land where nothing is allowed to be. Instead, the
+@Code "@ListNewPage" symbol is used: it is permitted only between
+two list items, and its effect is to make the following list item
+appear at the top of the next page or column. It may be used within
+any kind of list.
+@PP
+Another special list item is {@Code "@ListInterruptItem"}. This
+prints its content without any numbering or formatting:
+@ID @OneRow @Code @Verbatim {
+@NumberedList
+@ListItem { This is the first list item. }
+@ListInterruptItem { This is an interruption to the list. }
+@ListItem { This is the second list item. }
+@EndList
+}
+produces
+@ID @OneRow {
+@RawNumberedList
+@ListItem { This is the first list item. }
+@ListInterruptItem { This is an interruption to the list. }
+@ListItem { This is the second list item. }
+@RawEndList
+}
+Although @Code "@ListInterruptItem" is written like a list item, the
+result appears to be an interruption to the list. It may be used
+in any kind of list.
+@PP
+Yet another kind of list item symbol is
+paragraph.item. @Index @Code "@ParagraphItem"
+pi. @Index @Code "@PI"
+{@Code "@ParagraphItem"}, which introduces a list item
+whose labels are integrated into a paragraph:
+@ID @OneRow @Code @Verbatim {
+@Heading { Extract from GNU General Public License }
+@LeftList
+@ParagraphItem {
+You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty ...
+}
+@ParagraphItem {
+You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you ...
+}
+@EndList
+}
+has result
+@ID @OneRow {
+@Heading { Extract from GNU General Public License }
+@LeftList
+@ParagraphItem {
+You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty ...
+}
+@ParagraphItem {
+You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you ...
+}
+@RawEndList
+}
+Since the numbers are part of the item, the kind of list to use
+is just {@Code "@LeftList"} rather than {@Code "@NumberedList"}.
+It would be better if @Code "@ListItem" could be used, but problems
+behind the scenes prevent this. @Code "@ParagraphItem" has a
+@Code "style" option that works much like the @Code "style" option
+of {@Code "@List"} described just below.
+@PP
+Another useful variation is the @I { multi-column list }, in
+which the items are spread over several columns within the
+current column. Any kind of list may be converted into a
+multi-column list. For example, here is how to get a
+multi-column bullet list:
+@ID @OneRow @Code @Verbatim {
+@BulletList
+ colnum { 3 }
+ colgap { 1.0c }
+ colheight { 5.0c }
+}
+followed by the list items and @Code "@EndList" as usual. This
+list will appear spread over three columns, with the items placed
+down the first column, then down the second, and so on. The columns
+will have equal width, as wide as possible given that they are
+separated from each other by the gap given by {@Code "colgap"}.
+Ideally, one would want the columns to have equal height, just
+enough to hold all the items; but since Lout is not clever enough
+to do this, you must specify a fixed height for each column,
+using the @Code "colheight" option; and this height must be small
+enough to allow the entire list to fit onto one page, since it is
+effectively an unbreakable display.
+@PP
+The value of @Code "colnum" must be either 1, 2, 3, 4, or 5. If
+it is 1 (the default value), @Code "colgap" and @Code "colheight"
+are not used and the result is an ordinary list. The value of
+@Code "colgap" and @Code "colheight" may be any width; the default
+values are those shown above. All the features available for
+ordinary lists and list items work in the usual way with
+multi-column lists: one may keep a list item in one column by
+enclosing it in {@Code "@OneRow"}, cause a break to the next
+column using {@Code "@ListNewPage"}, and so on. If there is not
+enough space in the columns to hold all the items (a real possibility
+since their height is fixed), any excess is dropped, sometimes with
+and sometimes without a confusing error message.
+@PP
+Every symbol introduced in this section has an abbreviated form
+consisting of @Code "@" followed by its capital letters only. For
+example, @Code "@RawNumberedList" abbreviates to {@Code "@RNL"},
+and @Code "@ListItem" to {@Code "@LI"}. The sole exception is
+{@Code "@RawList"}, which has no abbreviation because @Code "@RL"
+is the abbreviation for {@Code "@RomanList"}.
+@PP
+list.symbol.options @Index { list symbol options }
+Expert users will be interested to learn that all of the list symbols
+described in this section are derived from the two basic ones,
+@Code "@List" and {@Code "@RawList"}, merely by setting options. Here
+list. @Index @Code "@List"
+l. @Index @Code "@L"
+are all the options, together with their default values:
+@ID @OneRow @Code @Verbatim {
+@List
+ type { num }
+ style { num }
+ labelwidth { 2f }
+ labelright { No }
+ labelrightgap { 2s }
+ indent { 0c }
+ rightindent { 0c }
+ gap { 1v }
+ start { 1 }
+ font { }
+ break { }
+ colnum { 1 }
+ colgap { 1.0c }
+ colheight { 5.0c }
+}
+These options may be used with all of the list and raw list symbols,
+except that some combinations don't make sense, for example @Code "indent"
+with {@Code "@CentredList"} or @Code "style" with {@Code "@BulletList"},
+since the list symbol has clearly already set the option.
+@PP
+The @Code "type" option determines the type of numbering (Arabic, Roman,
+etc.) and is not intended for ordinary use, since there are distinct
+symbols for each type, as we have seen. The @Code "style" option
+determines the format of the label, any @Code "num" symbol within it
+being replaced by the number (in Arabic, Roman, etc. as determined by the
+@Code "type" option) of the item. For example, @Code "@ParenNumberedList"
+is just
+@ID @OneRow @Code @Verbatim {
+@List
+ style { (num) }
+}
+and @Code "@BulletList" is just
+@ID @OneRow @Code @Verbatim {
+@List
+ style { @Bullet }
+}
+with @Code "num" not mentioned since no number is wanted. The
+@Code "@TaggedList" symbol and its variants also have the
+@Code "style" option; in their case, the @Code "num" symbol within
+it must be mentioned exactly once, and its value is set to produce
+the label supplied by the author.
+@PP
+The @Code "labelwidth" option determines the width set aside for the labels;
+this is where @Code "@WideTaggedList" and @Code "@VeryWideTaggedList" differ
+from {@Code "@TaggedList"}. If @Code "labelright" is {@Code "Yes"}, it
+means that the label is to appear right-justified in this width, apart from
+a width @Code "labelrightgap" to the right of it to separate it from the
+content of the list item. The default value of {@Code "labelrightgap"},
+{@Code "2s"}, is the width of two spaces. If @Code "labelright" is
+{@Code No}, @Code "labelrightgap" is not used.
+@PP
+The @Code "indent" and @Code "rightindent"
+options determine the space left blank at the left and right margins.
+The value given to these options may be any length, for example
+@Code "0.5i" (half an inch), or @Code "0.5f" (half the current font
+size). Section {@NumberOf objects} describes lengths in general. There
+are also three useful symbols denoting lengths: @Code "@DisplayIndent"
+is the amount by which indented and quoted displays are indented;
+@Code "@WideIndent" and @Code "@VeryWideIndent" are the indents used by
+@Code "@WideTaggedList" and {@Code "@VeryWideTaggedList"}. Using these
+symbols helps to keep documents consistent.
+@PP
+The @Code "gap" option determines the vertical space inserted between
+items. Once again this must be a length, although since it is
+vertical rather than horizontal, somewhat different kinds of lengths
+are appropriate: @Code "1.5v" for 1.5 times the current vertical space
+between lines, or the default value, {@Code "@DisplayGap"}, which produces
+the amount of vertical space used before and after displays. Owing to
+problems behind the scenes, there is no list option for the space before or after
+the list as a whole. To change this space in one list, use a raw list and
+insert your own paragraph symbols; to change it in every list there is a
+setup file option, described below.
+@PP
+The @Code "start" option is the number assigned to the first
+item. It must be decimal:
+@ID @OneRow @Code @Verbatim {
+@ParenRomanList
+ start { 25 }
+}
+looks strange, but it is the correct way to number the first
+item (xxv).
+@PP
+The @Code "font" option defines a font (or any value suited for
+the @Code "@Font" symbol) which is to be applied to each item
+(but not the labels). For example, you might be bothered by
+the fact that a list item whose last line has no descenders in
+its letters is closer to the next list item, producing a slightly
+irregular appearance. One way to solve this problem is
+@ID @OneRow @Code @Verbatim {
+@NumberedList
+ font { strut }
+}
+since the value @Code "strut" given to the @Code "@Font" symbol
+causes it to insert an invisible vertical strut into every word under
+the influence of that symbol. For more information, including
+another way to insert struts, consult Section {@NumberOf precise}.
+@PP
+The @Code "break" option defines a break style (suitable for the
+@Code "@Break" symbol) to be applied to each item. If you want
+each item in a ragged style, for example, you could just write
+@ID @OneRow @Code @Verbatim {
+@NumberedList
+ break { ragged }
+}
+rather than laboriously enclosing each item in @Code "ragged @Break".
+@PP
+The last three options, {@Code "colnum"}, {@Code "colgap"}, and
+{@Code "colheight"} work together to produce multi-column lists,
+as explained earlier. When the default value of @Code "colnum"
+is used (i.e. 1), {@Code "colgap"} and {@Code "colheight"} are
+ignored and the result is an ordinary list.
+@PP
+Here is a larger example of these options in action. Setting both
+@Code "indent" and @Code "rightindent" to @Code "@DisplayIndent"
+produces an effect similar to {@Code "@QuotedDisplay"}:
+@ID @OneRow @Code @Verbatim {
+preceding text
+@List
+ style { @I {Item num}: }
+ indent { @DisplayIndent }
+ rightindent { @DisplayIndent }
+ labelwidth { @WideIndent }
+ start { 10 }
+@ListItem { The vendor ... in the case of accident. }
+@ListItem { The vendor ... adjacent to the facility. }
+@EndList
+following text
+}
+The result is
+@ID @OneRow {
+preceding text
+@List
+ style { @I {Item num}: }
+ indent { @DisplayIndent }
+ rightindent { @DisplayIndent }
+ labelwidth { @WideIndent }
+ start { 10 }
+@ListItem {
+The vendor will not be liable for any injury caused by the escape of
+radiation or radioactive materials from the facility, nor for the
+costs of repair of any property damaged by nuclear blast or fallout
+in the case of accident.
+}
+@ListItem {
+The vendor will not be liable for any injury caused by radioactive
+materials being transported to or from the facility, nor for injury
+caused by radioactive materials stored adjacent to the facility.
+}
+@EndList
+following text
+}
+You can change the @I default values of the {@Code "labelwidth"},
+{@Code "labelright"}, {@Code "labelrightgap"}, {@Code "indent"},
+{@Code "rightindent"}, {@Code "gap"}, and {@Code "break"} options, by
+setting options called {@Code "@ListLabelWidth"}, {@Code "@ListLabelRight"},
+{@Code "@ListLabelRightGap"}, {@Code "@ListIndent"},
+{@Code "@ListRightIndent"}, {@Code "@ListGap"}, and
+{@Code "@ListBreak"} options in the setup file (Section {@NumberOf setup}).
+These default values will then apply to every list in the document unless
+overridden by an option, just like the usual default values. The setup
+file also has a {@Code "@ListOuterGap"} option which determines the gap
+before the first and after the last list item in non-raw lists.
+@End @Section
diff --git a/doc/doc/user/str_marg b/doc/doc/user/str_marg
new file mode 100644
index 0000000..246f623
--- /dev/null
+++ b/doc/doc/user/str_marg
@@ -0,0 +1,160 @@
+@Section
+ @Title { Margin notes and arbitrary placement }
+ @Tag { marginnotes }
+@Begin
+@PP
+A note can be placed in the left margin by typing
+leftnote. @Index @Code "@LeftNote"
+marginnote. @Index { margin notes }
+@ID {
+@Code "@LeftNote { A left note. }"
+@LeftNote { A left note. }
+}
+after the word that the note refers to. The note will appear in the
+margin at the same height on the page as that word, unless that would
+cause it to overlap a previous margin note, in which case it will be
+shifted downwards (but never onto the next page). The note may be an
+arbitrary Lout object; for example, you might type
+@ID {
+@Code "@LeftNote @I { A left note. }"
+@LeftNote @I { A left note. }
+}
+to make your note come out in italics.
+@PP
+You can get a note in the right margin by using @Code "@RightNote"
+@RightNote { A right note. }
+rightnote. @Index @Code "@RightNote"
+instead of {@Code "@LeftNote"}. To get a note in the outer margin
+(left on even pages, right on odd pages), use {@Code "@OuterNote"};
+@OuterNote { An outer note. }
+outernote. @Index @Code "@OuterNote"
+and for the opposite, use {@Code "@InnerNote"}.
+@InnerNote { An inner note. }
+@PP
+By default, Lout produces margins that are 2.5 centimetres wide, which
+is not really enough to accommodate reasonable margin notes. To
+change these margins, you need to change options in the setup file, as
+explained in Section {@NumberOf margins}.
+@PP
+The appearance of the margin notes themselves is also determined by
+options in the setup file (for a general introduction to setup files
+and their options, consult Section {@NumberOf setup}). Here are
+the options and their default values:
+@ID @OneRow @Code {
+"@MarginNoteFont { 0.80f }"
+"@MarginNoteBreak { ragged 1.10fx }"
+"@MarginNoteHGap { 0.5c }"
+"@MarginNoteVGap { 1.00v }"
+"@MarginNoteWidth { 1.50c }"
+}
+@Code "@MarginNoteFont" determines the font; the default value
+produces the current font scaled to 0.8 times the current size.
+@Code "Slope 0.80f" would yield italic notes, and so
+on. @Code "@MarginNoteBreak" is the paragraph breaking style,
+similar to the @Code "@InitialBreak" setup file option.
+@PP
+@Code "@MarginNoteHGap" determines how far away from the
+adjacent text column the margin note will appear; the default
+value is 0.5 centimetres. Notice that, by this definition, margin
+notes will appear in the page body margin (Section {@NumberOf margins})
+if there is one. @Code "@MarginNoteVGap" is the minimum
+vertical separation between margin notes (i.e. it determines how
+far downwards a note will be shifted to avoid the previous
+one). @Code "@MarginNoteWidth" determines the width of the column
+in which margin notes (both left and right) are set; the default
+value of 1.5 centimetres is suited to the 2.5 centimetre page margins
+that are the default, but if you widen the page or page body margins
+you will be able to increase @Code "@MarginNoteWidth" too.
+@PP
+Left notes extend into the left margin (including the left page body
+margin) a total distance of @Code "@MarginNoteHGap" plus
+{@Code "@MarginNoteWidth"}, and it is up to you to make sure that this
+does not put them off the page. Similar remarks apply to right
+notes. And since notes are never shifted to the next page, only
+downwards, there is also a risk that a note will be shifted off the
+bottom of the page, if it is very long or if preceding notes obstruct
+it. Again, it is up to you to avoid this problem by keeping your notes
+small and not too close together.
+@PP
+Margin notes work well inside footnotes, figures, and tables, but
+badly in multi-column documents unless used sparingly. They do
+not appear in plain text output (Section {@NumberOf plain}).
+@PP
+The @Code "@Place" symbol can place objects at arbitrary points on
+the current page:
+place. @Index @Code "@Place"
+@ID @OneRow @Code {
+"@Place"
+" x { right - 1c - xsize }"
+" y { { foot + top } / 2 }"
+"{"
+" @Box { Hello }"
+"}"
+}
+The placed object may be any object. This particular example produces a
+box whose @I x (horizontal) position is such that its right edge is one
+centimetre from the right edge of the page, and whose @I y (vertical)
+position is halfway up &
+@Place
+ x { right - 1c - xsize }
+ y { { foot + top } / 2 }
+{
+ @Box { Hello }
+}
+the page.
+@PP
+In addition to numbers, with or without units of measurement
+(Section {@NumberOf objects}), the following symbols
+may be used inside the @Code "x" and @Code "y" options:
+@ID @Tab
+ @Fmta { @Col @Code A ! @Col B }
+{
+@Rowa
+ A { left }
+ B { The left edge of the page }
+@Rowa
+ A { right }
+ B { The right edge of the page }
+@Rowa
+ A { foot }
+ B { The foot edge of the page }
+@Rowa
+ A { top }
+ B { The top edge of the page }
+@Rowa
+ A { "+" }
+ B { Addition (positive is to the right and up) }
+@Rowa
+ A { "-" }
+ B { Subtraction (negative is to the left and down) }
+@Rowa
+ A { "*" }
+ B { Multiplication }
+@Rowa
+ A { "/" }
+ B { Division }
+@Rowa
+ A { "xsize" }
+ B { The width of the object being placed }
+@Rowa
+ A { "xmark" }
+ B { The column mark of the object being placed (for expert users) }
+@Rowa
+ A { "ysize" }
+ B { The height of the object being placed }
+@Rowa
+ A { "ymark" }
+ B { The row mark of the object being placed (for expert users) }
+}
+Negative numbers have to be enclosed in double quotes to avoid the
+initial @Code "-" being mistaken for subtraction. The usual precedences
+and associativities apply to the mathematical operators; braces (not
+parentheses) may be used for grouping. It is best to give values to
+@Code "x" and @Code y that do not depend on any assumptions about
+where the coordinate system's origin is; this is true of the examples
+above. At the point where @Code "@Place" occurs, the result is an
+empty object. As with margin notes, Lout does not know what is
+happening and will not lay out the rest of the page around the
+placed object. @Code "@Place" does not take account of the value
+of any @Code "@PageOrientation" option.
+@End @Section
diff --git a/doc/doc/user/str_theo b/doc/doc/user/str_theo
new file mode 100644
index 0000000..da61e11
--- /dev/null
+++ b/doc/doc/user/str_theo
@@ -0,0 +1,108 @@
+@Section
+ @Title { Theorems, lemmas, corollaries, definitions, propositions,
+examples, and claims }
+ @RunningTitle { Theorems, lemmas, etc. }
+ @Tag { theorems }
+@Begin
+@PP
+theorem. @Index @Code "@Theorem"
+A theorem is created like this:
+@ID @OneRow @Code @Verbatim {
+@LD @Theorem
+ @Title { Fermat's Last Theorem }
+{
+@M { a sup n + b sup n != c sup n } for all positive integers @M { a },
+@M { b }, @M { c } and @M { n } when @M { n > 2 }.
+@LP
+@Proof I have a proof of this theorem, but the margin
+is too small to contain it. @EndProof
+}
+}
+where we have used the @Code "@LD" `left display' symbol from
+Section {@NumberOf displays} to get a left-justified display,
+and the @Code "@M" symbol from Chapter {@NumberOf mathematics}
+for the equations. The result is
+@ID @Theorem
+ @Title { Fermat's Last Theorem }
+{
+@M { a sup n + b sup n != c sup n } for all positive integers @M { a },
+@M { b }, @M { c } and @M { n } when @M { n > 2 }.
+@LP
+@Proof I have a proof of this theorem, but the margin
+is too small to contain it. @EndProof
+}
+The @Code "@Theorem" symbol produces an object with no adjacent
+vertical space, hence it needs to be used in conjuction with
+display or paragraph symbols. The theorem is numbered automatically,
+with the title and number inserted at the start of the first
+paragraph. @Code "@Title" may be omitted.
+@PP
+@Code "@Proof" produces @Proof @Null
+proof. @Index @Code "@Proof"
+with the appropriate following space, and @Code "@EndProof" produces
+endproof. @Index @Code "@EndProof"
+a box at the end of the line. They may be used anywhere, not
+just within theorems.
+@FootNote { Occasionally @Code "@EndProof" does not
+appear as far to the right as it should. This problem can be fixed by using
+{@Code "@LD @HExpand @Theorem"}, which instructs Lout to make sure
+that as much horizontal space as possible is allocated to the theorem. }
+@PP
+There are seven symbols that produce independently numbered sequences
+in this way. They are {@Code "@Theorem"}, {@Code "@Definition"},
+definition. @Index @Code "@Definition"
+claim. @Index @Code "@Claim"
+proposition. @Index @Code "@Proposition"
+lemma. @Index @Code "@Lemma"
+corollary. @Index @Code "@Corollary"
+example. @Index @Code "@Example"
+{@Code "@Claim"}, {@Code "@Proposition"}, {@Code "@Lemma"},
+{@Code "@Corollary"}, and {@Code "@Example"}.
+@PP
+The setup file contains options which determine whether the theorem
+numbers include a chapter number ({@Code "@ChapterNumInTheorems"}),
+or a section number ({@Code "@SectionNumInTheorems"}), and so on. A
+section number automatically includes a chapter number, etc. There
+are also options to change the word printed. For example, if you
+need a sequence of conjectures, change the @Code "@ClaimWord" setup
+file option to
+@ID @Code "@ClaimWord { Conjecture }"
+and use the @Code "@Claim" symbol for your conjectures. You can even put
+@ID @Code {
+"import @DocumentSetup"
+"macro @Conjecture { @Claim }"
+}
+into your @Code mydefs file (Section {@NumberOf definitions}) if you wish,
+so that you can write @Code "@Conjecture" in your documents instead of
+{@Code "@Claim"}.
+@PP
+The setup file also contains two options which control the format of
+the theorem (claims and so on have corresponding options). Here they
+are with their default values:
+@ID @Code {
+"@TheoremTitleFormat { (title) }"
+"@TheoremFormat { { @B { word @NumSep number title: } &2s } @Insert body }"
+}
+@Code "@TheoremTitleFormat" is used only when the theorem has a
+{@Code "@Title"}. It determines how the title is formatted: the
+@Code title symbol within it stands for the @Code "@Title" option.
+The default value shown places parentheses around the title.
+@Code "@TheoremFormat" determines the format of the entire theorem.
+Within it, @Code word stands for the value of {@Code "@TheoremWord"};
+@Code "number" is the number of the theorem; @Code "title" is the title
+of the theorem after formatting by {@Code "@TheoremFormat"} (if there
+is a title; otherwise @Code title is {@Code "@Null"}, which prints as
+nothing and even deletes preceding space as required); and
+@Code body is the body of the theorem. The default value prints the
+word, number and title with a colon in bold, and inserts them and two
+spaces into the first paragraph of the body. Another good value is
+@ID @Code { "@TheoremFormat { @B { word @NumSep number title } @LP body }" }
+which places the header in bold on a line by itself, separated from the
+body by a paragraph break. For @Code "@NumSep" see page {@PageOf numsep}.
+@PP
+Owing to problems behind the scenes, the @Code "@Theorem" symbol and its
+companions have a potential efficiency problem: although all numbers are
+finalized on the second run, it takes Lout time proportional to the square
+of the highest theorem number to do this. So large numbers of theorems
+numbered together might be slow.
+@End @Section
diff --git a/doc/doc/user/su_crest.eps b/doc/doc/user/su_crest.eps
new file mode 100644
index 0000000..95bc0f9
--- /dev/null
+++ b/doc/doc/user/su_crest.eps
@@ -0,0 +1,1156 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%BoundingBox: 0 0 60 53
+%%Pages: 1
+%%Title: Crest for The University of Sydney
+%%Creator: jaa@cs.su.oz.au encapsulated by rex@cs.su.oz.au
+%%+ Converted for colour and bug fixes by Rex.
+%%CreationDate: Wed May 13 18:02:34 EST 1992
+%%+ Converted for colour: Tue Jul 7 20:06:30 EST 1992
+%%DocumentNeededResources: font Times-Bold
+%%EndComments
+%%BeginProlog
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+
+% PMS colours
+% red - 185
+% blue - 286
+% gold - 871
+gsave
+.01 dup scale
+-1988 -1050 translate
+/colour 1 def % set to one if colour
+/pathtextdict 27 dict def
+
+/pathtext
+ { pathtextdict begin
+ /spacing exch def
+ /offset exch def
+ /str exch def
+ /pathdist 0 def
+ /offset offset str 0 1 getinterval stringwidth pop 2 div add def
+ /setdist offset def
+ /charcount 0 def
+ gsave flattenpath
+ {movetoproc} {linetoproc} {} {closepathproc} pathforall
+ grestore
+ newpath
+ end } def
+
+pathtextdict begin
+
+/movetoproc
+ { /newy exch def /newx exch def
+ /firstx newx def /firsty newy def
+ /ovr setdist pathdist sub def
+ newx newy transform
+ /cpy exch def /cpx exch def } def
+
+/linetoproc
+ { /oldx newx def /oldy newy def
+ /newy exch def /newx exch def
+ /dx newx oldx sub def
+ /dy newy oldy sub def
+ /dist dx dup mul dy dup mul add sqrt def
+ dist 0 ne
+ { /dsx dx dist div ovr mul def
+ /dsy dy dist div ovr mul def
+ oldx dsx add oldy dsy add transform
+ /cpy exch def /cpx exch def
+ /pathdist pathdist dist add def
+ { setdist pathdist le
+ { charcount str length lt
+ {setchar} {exit} ifelse }
+ { /ovr setdist pathdist sub def
+ exit }
+ ifelse } loop } if } def
+
+/closepathproc
+ { firstx firsty linetoproc
+ firstx firsty movetoproc } def
+
+/setchar
+ { /char str charcount 1 getinterval def
+ /charcount charcount 1 add def
+ /charwidth char stringwidth pop def
+ gsave
+ cpx cpy itransform translate
+ dy dx atan rotate
+ charwidth -2 div 0 moveto char show
+ /charwidth str length charcount gt
+ { str charcount 1 getinterval stringwidth pop }
+ { 0 } ifelse charwidth add 2 div def
+ charwidth 0 moveto
+ currentpoint transform
+ /cpy exch def /cpx exch def
+ grestore
+ /setdist setdist charwidth spacing add add def } def
+end
+/gold_colour {
+ colour 0 ne
+ { 0.9453 0.6206 0.004 setrgbcolor }
+ { 1 setgray }
+ ifelse
+} def
+/blue_colour {
+ colour 0 ne
+% { 0.0 0.0 0.0 setrgbcolor }
+% { 1.0 1.0 1.0 setrgbcolor }
+ { 0.0599 0.0526 0.5493 setrgbcolor }
+ { 1 setgray }
+ ifelse
+} def
+/red_colour {
+ colour 0 ne
+ { 0.9375 0.0 0.0 setrgbcolor }
+ { 1 setgray }
+ ifelse
+} def
+/c { curveto } def
+/m { moveto } def
+/l { lineto } def
+
+/sym1 { 5000 1939 m
+4974 2006 4971 2065 4924 2119 c
+4909 2137 4893 2152 4870 2153 c
+4845 2154 4824 2141 4811 2120 c
+4791 2089 4771 2068 4740 2047 c
+4722 2079 4713 2105 4706 2141 c
+4659 2111 4624 2091 4580 2057 c
+4555 2116 4561 2178 4597 2232 c
+4570 2236 4551 2242 4525 2242 c
+4543 2280 4564 2305 4598 2329 c
+4572 2345 4553 2358 4528 2375 c
+4432 2284 4332 2235 4201 2226 c
+3989 2210 3846 2323 3636 2356 c
+3596 2363 3565 2353 3525 2362 c
+3478 2372 3444 2415 3441 2463 c
+3358 2444 3304 2395 3250 2329 c
+3222 2365 3205 2402 3211 2447 c
+3179 2445 3148 2437 3135 2408 c
+3122 2378 3135 2351 3144 2320 c
+3092 2351 3046 2396 3050 2457 c
+3053 2509 3097 2544 3146 2563 c
+3104 2574 3073 2584 3030 2587 c
+3053 2628 3079 2655 3119 2679 c
+3070 2703 3031 2726 3003 2773 c
+3033 2798 3059 2811 3095 2827 c
+3062 2842 3035 2852 2999 2850 c
+2961 2846 2934 2826 2909 2798 c
+2897 2844 2904 2890 2936 2925 c
+2999 2992 3096 2968 3185 2949 c
+3143 3062 3116 3145 3080 3260 c
+3056 3248 3037 3240 3012 3228 c
+3009 3255 3008 3275 3004 3303 c
+2954 3263 2914 3228 2851 3218 c
+2792 3210 2733 3215 2694 3260 c
+2657 3302 2652 3361 2676 3411 c
+2698 3457 2745 3480 2796 3479 c
+2848 3478 2888 3433 2900 3382 c
+2976 3532 2884 3672 2865 3839 c
+2853 3951 2882 4059 2972 4127 c
+3035 4175 3120 4184 3186 4141 c
+3233 4110 3249 4047 3232 3993 c
+3306 4030 3338 4126 3312 4204 c
+3286 4278 3221 4333 3143 4334 c
+3082 4335 3030 4290 3012 4231 c
+2987 4270 2970 4307 2979 4352 c
+2991 4411 3040 4445 3096 4466 c
+3052 4496 3012 4518 2959 4515 c
+2915 4512 2887 4486 2857 4455 c
+2857 4526 2870 4594 2928 4636 c } def
+/sym2 { 3004 4693 3106 4680 3188 4630 c
+3195 4668 3210 4699 3241 4721 c
+3280 4749 3325 4751 3370 4734 c
+3324 4681 3347 4603 3386 4544 c
+3428 4480 3447 4422 3454 4346 c
+3491 4560 3479 4786 3309 4922 c
+3309 4871 3298 4821 3255 4794 c
+3200 4760 3143 4771 3080 4784 c
+2987 4804 2933 4885 2837 4880 c
+2806 4878 2771 4868 2762 4837 c
+2750 4800 2777 4768 2801 4737 c
+2736 4747 2662 4782 2659 4848 c
+2657 4904 2696 4947 2744 4976 c
+2706 4986 2676 4992 2637 4986 c
+2650 5022 2666 5051 2700 5067 c
+2751 5090 2798 5075 2851 5060 c
+2854 5126 2881 5190 2942 5213 c
+2997 5235 3049 5211 3099 5180 c
+3043 5175 2983 5150 2972 5095 c
+2960 5029 2985 4969 3033 4922 c
+3045 4972 3068 5004 3102 5043 c
+3175 5126 3245 5203 3235 5313 c
+3228 5402 3182 5463 3122 5528 c
+3096 5557 3073 5580 3067 5618 c
+3059 5671 3076 5722 3118 5756 c
+3174 5801 3245 5811 3313 5787 c
+3350 5775 3378 5745 3382 5707 c
+3387 5660 3355 5625 3320 5594 c
+3378 5596 3424 5615 3465 5657 c
+3488 5680 3500 5709 3492 5741 c
+3479 5789 3422 5808 3372 5807 c
+3398 5849 3436 5877 3485 5879 c
+3540 5881 3582 5851 3621 5812 c
+3626 5868 3617 5910 3633 5965 c
+3647 6015 3678 6046 3720 6077 c
+3728 6032 3736 5996 3761 5957 c
+3793 6007 3828 6041 3883 6062 c
+3939 6083 3991 6081 4047 6060 c
+3996 6024 3964 5988 3935 5934 c
+3967 5942 3991 5948 4021 5962 c
+4016 5935 4014 5915 4008 5889 c
+4103 5911 4184 5919 4273 5880 c
+4323 5858 4354 5820 4374 5768 c
+4396 5801 4407 5829 4419 5867 c
+4426 5890 4435 5908 4453 5924 c
+4487 5953 4511 5975 4544 6004 c
+4556 5978 4563 5960 4575 5935 c
+4629 5971 4670 5993 4721 6033 c
+4730 5997 4739 5972 4751 5937 c
+4775 5951 4795 5964 4806 5990 c
+4816 6013 4815 6039 4797 6057 c
+4771 6083 4733 6075 4696 6068 c
+4704 6112 4719 6149 4757 6172 c
+4799 6198 4847 6189 4892 6169 c
+4896 6198 4905 6220 4923 6243 c
+4942 6267 4969 6275 5000 6276 c
+closepath 0 setgray fill } def
+/sym3 { 5000 6214 m
+4943 6214 4937 6122 4950 6067 c
+4900 6113 4830 6146 4770 6114 c
+4809 6102 4847 6083 4855 6044 c
+4876 5953 4780 5890 4699 5844 c
+4690 5859 4685 5870 4676 5885 c
+4687 5894 4695 5900 4705 5908 c
+4700 5925 4697 5938 4692 5955 c
+4663 5938 4642 5927 4615 5910 c
+4588 5893 4579 5868 4565 5840 c
+4549 5838 4538 5837 4522 5836 c
+4531 5867 4536 5892 4530 5924 c
+4495 5894 4471 5865 4457 5821 c
+4444 5776 4425 5744 4391 5712 c
+4388 5697 4383 5687 4376 5673 c
+4469 5733 4547 5769 4656 5786 c
+4818 5811 4930 5924 5000 6072 c
+closepath gold_colour fill
+5000 2189 m
+4938 2287 4857 2343 4746 2376 c
+4678 2396 4629 2419 4570 2459 c
+4567 2441 4563 2427 4557 2410 c
+4614 2373 4657 2348 4717 2315 c
+4676 2303 4642 2301 4606 2277 c
+4637 2276 4659 2271 4688 2262 c
+4643 2233 4615 2195 4602 2143 c
+4652 2176 4692 2196 4748 2215 c
+4749 2183 4753 2160 4763 2130 c
+4787 2168 4816 2203 4861 2204 c
+4925 2205 4976 2156 5000 2096 c
+closepath gold_colour fill
+4392 2432 m
+4408 2444 4419 2476 4402 2484 c
+4390 2489 4373 2482 4371 2469 c
+4368 2450 4354 2439 4337 2430 c
+4322 2422 4305 2425 4292 2436 c
+4269 2456 4267 2491 4281 2518 c
+4302 2562 4346 2582 4395 2588 c
+4443 2593 4494 2578 4515 2534 c
+4533 2497 4520 2455 4494 2422 c
+4429 2336 4347 2292 4241 2272 c
+4078 2243 3955 2308 3798 2362 c
+3712 2391 3644 2402 3552 2403 c
+3526 2403 3502 2415 3489 2438 c } def
+/sym4 { 3478 2458 3480 2484 3496 2500 c
+3511 2515 3533 2519 3552 2510 c
+3577 2498 3586 2477 3603 2454 c
+3616 2466 3627 2472 3641 2482 c
+3611 2524 3575 2566 3524 2561 c
+3489 2558 3459 2538 3448 2505 c
+3371 2498 3317 2460 3262 2407 c
+3251 2431 3260 2453 3265 2479 c
+3203 2492 3143 2480 3097 2436 c
+3096 2455 3095 2471 3107 2487 c
+3142 2535 3198 2539 3256 2554 c
+3211 2591 3168 2607 3111 2619 c
+3127 2634 3139 2645 3158 2654 c
+3250 2647 3315 2628 3406 2609 c
+3408 2621 3408 2631 3410 2643 c
+3340 2669 3285 2680 3211 2689 c
+3152 2696 3112 2723 3063 2756 c
+3103 2781 3140 2795 3187 2788 c
+3134 2861 3054 2899 2965 2890 c
+3045 2966 3170 2921 3265 2864 c
+3251 2897 3248 2926 3254 2962 c
+3340 2893 3343 2793 3410 2707 c
+3422 2716 3431 2723 3443 2732 c
+3372 2844 3351 2965 3233 3026 c
+3227 3016 3223 3008 3218 2997 c
+3175 3107 3141 3187 3116 3302 c
+3124 3313 3128 3322 3135 3333 c
+3160 3280 3179 3241 3192 3184 c
+3252 3221 3277 3279 3291 3349 c
+3355 3062 3431 2842 3621 2618 c
+3809 2396 4163 2253 4392 2432 c
+closepath gold_colour fill
+3039 4863 m
+2983 4908 2943 4954 2927 5024 c
+2915 5080 2929 5128 2960 5175 c
+2899 5138 2888 5055 2909 4986 c
+2847 5018 2791 5045 2724 5028 c
+2766 5018 2795 4995 2820 4959 c
+2781 4942 2744 4934 2720 4898 c
+2705 4875 2705 4845 2720 4822 c
+2727 4875 2775 4915 2829 4920 c
+2912 4928 2966 4873 3045 4844 c
+3043 4851 3042 4856 3039 4863 c
+closepath gold_colour } def
+/sym5 { 3771 5716 m
+3765 5719 3760 5721 3754 5724 c
+3770 5759 3789 5787 3823 5803 c
+3878 5829 3926 5846 3959 5896 c
+3928 5887 3906 5879 3877 5866 c
+3878 5934 3908 5984 3952 6036 c
+3868 6021 3814 5962 3770 5888 c
+3735 5918 3714 5947 3698 5990 c
+3657 5925 3671 5860 3657 5785 c
+3646 5724 3605 5682 3549 5656 c
+3576 5689 3603 5723 3592 5765 c
+3578 5817 3517 5835 3463 5835 c
+3513 5807 3554 5753 3539 5697 c
+3504 5571 3311 5510 3202 5581 c
+3175 5599 3155 5628 3162 5659 c
+3170 5697 3216 5709 3255 5709 c
+3264 5709 3272 5699 3272 5690 c
+3272 5682 3266 5673 3258 5672 c
+3242 5672 3219 5667 3219 5650 c
+3219 5634 3234 5620 3250 5619 c
+3283 5618 3311 5638 3327 5667 c
+3340 5692 3331 5728 3306 5741 c
+3261 5764 3210 5761 3167 5733 c
+3130 5710 3107 5670 3114 5627 c
+3125 5558 3186 5514 3254 5498 c
+3369 5471 3464 5510 3568 5565 c
+3734 5651 3855 5715 4032 5775 c
+4106 5801 4192 5825 4246 5767 c
+4264 5748 4269 5713 4249 5695 c
+4238 5684 4222 5684 4207 5688 c
+4197 5690 4189 5710 4198 5714 c
+4205 5717 4213 5722 4212 5729 c
+4210 5738 4203 5742 4196 5747 c
+4180 5756 4160 5757 4145 5747 c
+4128 5736 4119 5718 4119 5698 c
+4119 5657 4151 5616 4192 5612 c
+4242 5608 4293 5626 4316 5670 c
+4339 5715 4335 5769 4301 5806 c
+4259 5852 4200 5860 4138 5854 c
+4067 5848 4018 5824 3948 5818 c
+3890 5771 3825 5768 3771 5716 c
+closepath gold_colour fill
+3351 3504 m
+3316 3561 3252 3571 3187 3584 c
+3110 3600 3060 3641 3004 3697 c
+3016 3707 3025 3713 3037 3724 c
+3101 3660 3167 3625 3257 3613 c
+3312 3606 3361 3640 3388 3688 c
+3411 3731 3408 3781 3382 3822 c
+3364 3849 3334 3858 3302 3859 c
+3271 3861 3242 3842 3231 3813 c
+3222 3791 3221 3763 3240 3749 c
+3253 3739 3284 3740 3285 3757 c
+3286 3768 3301 3773 3312 3771 c
+3322 3769 3329 3757 3326 3747 c
+3322 3727 3305 3714 3284 3708 c
+3256 3700 3230 3704 3203 3718 c
+3115 3764 3064 3837 3037 3933 c
+3113 3879 3205 3865 3289 3905 c
+3595 4053 3667 4488 3532 4801 c
+3477 4929 3390 5011 3265 5073 c
+3297 5102 3328 5121 3371 5123 c } def
+/sym6 { 3413 5125 3443 5105 3479 5084 c
+3476 5132 3466 5167 3451 5214 c
+3527 5188 3578 5153 3638 5100 c
+3632 5179 3602 5235 3556 5299 c
+3590 5327 3613 5351 3634 5389 c
+3530 5370 3412 5363 3351 5450 c
+3310 5451 3280 5452 3240 5461 c
+3287 5354 3297 5242 3236 5142 c
+3194 5074 3147 5036 3101 4970 c
+3075 4931 3081 4876 3115 4844 c
+3144 4817 3187 4810 3223 4827 c
+3260 4844 3270 4889 3265 4928 c
+3262 4944 3246 4954 3230 4952 c
+3215 4951 3195 4943 3196 4927 c
+3198 4910 3191 4886 3174 4887 c
+3140 4888 3147 4960 3174 4980 c
+3197 4996 3221 5002 3248 4995 c
+3457 4941 3527 4682 3509 4467 c
+3501 4375 3484 4302 3429 4228 c
+3414 4238 3403 4244 3389 4254 c
+3422 4339 3411 4425 3360 4500 c
+3318 4562 3278 4620 3293 4695 c
+3239 4664 3226 4599 3234 4538 c
+3175 4590 3117 4626 3039 4626 c
+2987 4625 2949 4593 2920 4550 c
+3017 4578 3119 4523 3169 4436 c
+3099 4425 3027 4388 3017 4318 c
+3072 4363 3134 4389 3203 4373 c
+3269 4357 3316 4315 3344 4253 c
+3384 4164 3381 4054 3308 3990 c
+3269 3956 3220 3939 3171 3956 c
+3138 3948 3102 3956 3083 3984 c
+3070 4003 3072 4027 3084 4047 c
+3094 4064 3113 4077 3132 4073 c
+3145 4070 3154 4057 3153 4044 c
+3152 4035 3146 4027 3137 4025 c
+3130 4024 3125 4024 3119 4026 c
+3114 4015 3122 4001 3134 3997 c
+3152 3992 3170 4004 3181 4019 c
+3192 4037 3190 4058 3182 4078 c
+3173 4098 3158 4113 3137 4118 c
+3063 4138 2984 4100 2947 4034 c
+2887 3928 2905 3819 2938 3702 c
+2978 3561 2993 3351 2852 3312 c
+2826 3305 2798 3300 2778 3318 c
+2760 3335 2756 3368 2774 3386 c
+2782 3395 2797 3400 2806 3392 c
+2813 3385 2815 3372 2808 3364 c
+2804 3358 2809 3347 2816 3347 c
+2833 3346 2851 3352 2857 3367 c
+2865 3390 2850 3414 2830 3427 c
+2803 3444 2768 3445 2742 3426 c
+2715 3406 2703 3372 2710 3338 c
+2719 3293 2759 3258 2805 3257 c
+2904 3254 2972 3321 3034 3397 c
+3040 3365 3047 3342 3053 3310 c
+3088 3343 3108 3375 3125 3420 c
+3173 3371 3193 3321 3214 3256 c
+3249 3322 3255 3386 3240 3459 c
+3283 3440 3321 3428 3368 3437 c
+3376 3438 3379 3449 3376 3457 c
+3370 3475 3361 3487 3351 3504 c
+closepath gold_colour fill } def
+
+/sym7 {
+%main interior
+5000 2313 m
+4955 2385 4880 2430 4730 2470 c
+4670 2490 4630 2538 4621 2553 c
+4641 2530 4630 2538 4621 2553 c
+4585 2613 4538 2650 4472 2670 c
+4397 2694 4326 2682 4259 2639 c
+4193 2598 4169 2523 4172 2445 c
+3789 2440 3543 2822 3392 3344 c
+3431 3350 3458 3359 3495 3371 c
+3490 3425 3475 3465 3415 3578 c
+3530 3685 3540 3805 3441 3896 c
+3632 4058 3686 4286 3678 4536 c
+3673 4730 3650 4830 3573 4935 c
+3573 5041 l
+3596 5023 3630 4992 3667 4942 c
+3740 5075 3732 5205 3670 5295 c
+3713 5352 3745 5410 3780 5495 c
+3692 5468 3608 5445 3533 5440 c
+4026 5680 l
+4040 5593 4125 5530 4250 5530 c
+4310 5530 4415 5580 4453 5616 c
+4514 5658 4607 5693 4661 5699 c
+4823 5717 4930 5780 5000 5890 c
+closepath 1 setgray fill } def
+/sym8 {
+% Banner outside
+5000 1556 m
+4862 1556 4759 1613 4651 1699 c
+4509 1814 4423 1918 4279 2033 c
+4149 2137 4015 2173 3848 2182 c
+3697 2189 3587 2175 3436 2165 c
+3273 2154 3136 2138 2993 2218 c
+2923 2257 2875 2297 2823 2359 c
+2818 2365 2826 2373 2832 2378 c
+2864 2398 2887 2412 2919 2433 c
+2954 2455 2947 2512 2922 2545 c
+2881 2600 2850 2641 2823 2703 c
+2793 2771 2795 2830 2758 2894 c
+2745 2916 2720 2935 2696 2927 c
+2647 2911 2610 2902 2561 2886 c
+2557 2885 2552 2889 2550 2894 c
+2530 2941 2515 2976 2502 3027 c
+2500 3032 2505 3038 2510 3040 c
+2546 3054 2573 3062 2609 3075 c
+2626 3081 2638 3091 2645 3108 c
+2652 3125 2651 3142 2643 3159 c
+2619 3213 2586 3244 2561 3297 c
+2538 3350 2530 3393 2511 3448 c
+2500 3481 2452 3494 2421 3478 c
+2291 3413 2194 3370 2064 3305 c
+2034 3289 2015 3267 2004 3236 c
+1988 3194 2014 3153 2048 3124 c
+2053 3119 2059 3111 2065 3115 c
+2075 3120 2082 3124 2092 3130 c
+2102 3135 2116 3133 2121 3123 c
+2134 3092 2150 3073 2169 3046 c
+2174 3040 2177 3030 2171 3026 c
+2144 3007 2124 2995 2097 2977 c
+2081 2966 2072 2948 2074 2928 c
+2078 2872 2082 2830 2101 2778 c
+2125 2717 2157 2677 2203 2631 c
+2210 2624 2219 2620 2228 2623 c
+2254 2631 2274 2637 2300 2646 c
+2307 2648 2315 2644 2318 2638 c
+2330 2616 2332 2597 2339 2574 c
+2340 2568 2336 2562 2330 2558 c
+2303 2539 2280 2531 2251 2515 c
+2240 2509 2234 2497 2237 2484 c
+2293 2264 2369 2102 2522 1934 c
+2640 1804 2769 1740 2940 1699 c
+3122 1655 3264 1689 3451 1705 c
+3631 1720 3776 1743 3942 1673 c
+4083 1613 4148 1508 4263 1408 c
+4485 1215 4706 1090 5000 1090 c
+closepath 0 setgray fill } def
+
+/sym9 { 5000 1502 m
+4722 1503 4558 1710 4353 1898 c
+4199 2039 4042 2129 3833 2132 c
+3632 2136 3486 2109 3286 2101 c
+3149 2096 3040 2122 2923 2194 c
+2745 2303 2674 2468 2599 2664 c
+2500 2600 2426 2557 2324 2497 c
+2385 2294 2456 2143 2606 1994 c
+2761 1838 2945 1768 3165 1777 c
+3357 1784 3497 1797 3689 1807 c
+3873 1817 4023 1758 4161 1638 c
+4301 1516 4393 1411 4554 1319 c
+4703 1234 4828 1178 5000 1177 c
+closepath 1 setgray fill
+2660 2661 m
+2695 2563 2727 2492 2784 2405 c
+2798 2413 2808 2420 2822 2430 c
+2771 2508 2758 2578 2721 2663 c
+2712 2683 2692 2706 2671 2697 c
+2658 2692 2655 2674 2660 2661 c
+closepath 1 setgray fill
+2608 2857 m
+2597 2853 2589 2851 2577 2847 c
+2586 2839 2592 2833 2602 2826 c
+2606 2837 2606 2846 2608 2857 c
+closepath 1 setgray fill
+2390 2680 m
+2403 2655 2407 2634 2412 2607 c
+2482 2651 2535 2679 2607 2721 c
+2633 2736 2659 2747 2688 2739 c
+2726 2728 2751 2702 2766 2665 c
+2795 2595 2806 2539 2845 2474 c
+2853 2460 2869 2447 2883 2454 c
+2901 2463 2894 2490 2885 2508 c
+2851 2572 2813 2612 2784 2679 c
+2758 2740 2752 2789 2729 2851 c
+2722 2870 2709 2890 2689 2888 c
+2670 2887 2663 2864 2662 2845 c
+2660 2803 2625 2773 2586 2757 c
+2514 2728 2462 2707 2390 2680 c
+closepath 1 setgray fill
+2481 3136 m
+2479 3113 2479 3094 2486 3072 c
+2500 3078 2510 3082 2524 3088 c
+2512 3108 2500 3121 2481 3136 c
+closepath 1 setgray fill } def
+/syma {
+2429 3113 m
+2333 3058 2261 3021 2166 2965 c
+2173 2856 2202 2775 2261 2684 c
+2368 2725 2447 2754 2553 2799 c
+2482 2901 2455 2992 2429 3113 c
+closepath 1 setgray fill
+2472 3422 m
+2469 3434 2457 3445 2445 3441 c
+2434 3436 2427 3423 2430 3411 c
+2438 3381 2452 3362 2471 3338 c
+2373 3280 2300 3241 2200 3186 c
+2219 3144 2234 3114 2259 3077 c
+2326 3114 2374 3141 2441 3178 c
+2466 3191 2497 3200 2518 3182 c
+2549 3156 2567 3134 2593 3105 c
+2600 3136 2599 3166 2579 3190 c
+2552 3224 2532 3250 2514 3289 c
+2493 3336 2484 3372 2472 3422 c
+closepath 1 setgray fill
+2380 3392 m
+2379 3400 2368 3406 2361 3402 c
+2269 3354 2202 3321 2112 3270 c
+2093 3260 2096 3233 2102 3212 c
+2103 3210 2105 3206 2107 3208 c
+2210 3264 2288 3301 2391 3358 c
+2386 3370 2383 3380 2380 3392 c
+closepath 1 setgray fill } def
+/symb_colour {
+% cross in 'azure' blue
+blue_colour
+5000 2313 m
+4955 2385 4880 2430 4730 2470 c
+4670 2490 l
+4670 3220 l
+3430 3220 l
+3392 3344 l
+3431 3350 3458 3359 3495 3371 c
+3490 3425 3475 3465 3415 3578 c
+3530 3685 3500 3805 3490 3813 c
+4670 3813 l
+4670 4582 l
+5000 4582 l
+closepath fill
+% Chief Gules
+red_colour
+5000 4582 m
+3675 4582 l
+3673 4730 3650 4830 3573 4935 c
+3573 5041 l
+3596 5023 3630 4992 3667 4942 c
+3740 5075 3732 5205 3670 5295 c
+3713 5352 3745 5410 3780 5495 c
+3692 5468 3608 5445 3533 5440 c
+4026 5680 l
+4040 5593 4125 5530 4250 5530 c
+4310 5530 4415 5580 4453 5616 c
+4514 5658 4607 5693 4661 5699 c
+4823 5717 4930 5780 5000 5890 c
+closepath fill
+% and now some lines around the cross, and at the base of the lion field
+0 setgray
+16 setlinewidth
+3675 4582 m 5000 4582 l stroke
+3490 3813 m 4670 3813 l 4670 4582 l stroke
+3430 3220 m 4670 3220 l 4670 2490 l stroke
+} def
+/book_clasp {
+2 copy
+gold_colour
+m
+50 0 rlineto
+0 50 rlineto
+-50 0 rlineto
+closepath fill
+2 copy
+0 setgray
+m
+50 0 rlineto
+stroke
+m
+0 50 rmoveto
+50 0 rlineto
+stroke
+} def
+/sym_book {
+% Book outline
+% First fill the outline
+1 setgray
+5000 3742 m
+4856 3798 4755 3804 4671 3700 c
+4671 3325 l
+5329 3325 l
+5329 3700 l
+5245 3804 5144 3798 5000 3742 c
+closepath fill
+% along the base of the book colour it gold
+gold_colour
+5329 3315 m
+5227 3420 5114 3413 5000 3363 c
+4886 3413 4773 3420 4671 3315 c
+closepath fill
+% Clasps for the book
+% Firstly colour the clasps gold
+gold_colour
+8 setlinewidth
+4671 3355 m
+4611 3355 l
+4611 3700 l
+4671 3700 l
+closepath
+gsave
+fill
+grestore
+0 setgray
+stroke
+% and strokes on the clasp holder
+3412 58 3644 { dup 4611 exch m 4671 exch l stroke } for
+4671 3300 m 4671 3700 l stroke
+% Now do the three book clasps
+5329 3400 book_clasp
+5329 3500 book_clasp
+5329 3600 book_clasp
+% then actually draw the book in black
+16 setlinewidth
+0 setgray
+5000 3742 m
+5000 3363 l
+4886 3413 4773 3420 4671 3315 c
+4671 3700 l
+4755 3804 4856 3798 5000 3742 c
+closepath stroke
+5329 3700 m
+5245 3804 5144 3798 5000 3742 c
+5000 3363 l
+5114 3413 5227 3420 5329 3315 c
+5329 3700 l
+closepath stroke
+5337 3300 m
+4663 3300 l
+stroke
+% Stroke along the spine of the book
+5000 3300 m
+5000 3742 l
+stroke
+% Line to the sides of the book
+22 setlinewidth
+4716 3360 m
+4716 3750 l
+stroke
+5284 3360 m
+5284 3750 l
+stroke
+0 setgray
+% finally some fine text lines on the book
+4 setlinewidth
+3470 60 3710 { dup dup dup dup dup dup dup
+ 4766 exch m 4840 exch l stroke
+ 5234 exch m 5160 exch l stroke
+ 4877 exch m 4953 exch l stroke
+ 5123 exch m 5047 exch l stroke
+ } for
+} def
+/symb_mono {
+0 setgray 30 setlinewidth
+% bottom most horizontal stroke
+4860 2400 m 5000 2400 l stroke
+% Horizontal strokes to base of book
+2500 100 3200 { dup 4670 exch m 5000 exch l stroke } for
+% strokes to the sides of the book
+3300 100 3700 { dup 3400 exch m 5000 exch l stroke } for
+% horiz strokes above the book
+3800 100 4500 { dup 4670 exch m 5000 exch l stroke } for
+% Vertical strokes to the top of the figure
+3614 5450 m 3614 5520 l stroke
+5060 5580 5620 5680 5720 5590 5570 5580 5620 5690 5720 5740 5770 5860 5950
+5000 -99 3614 { dup 4620 m exch l stroke } for
+% bottom dark horizontal line for cross
+84 setlinewidth 3400 3220 m 4696 3220 l stroke
+% Top dark horizontal line for cross
+56 setlinewidth 3460 3813 m 4696 3813 l stroke
+% Bottom dark line for vertical strokes
+92 setlinewidth 3650 4582 m 5000 4582 l stroke
+} def
+
+/sym { sym1 sym2 sym3 sym4 sym5 sym6 sym7 sym8 sym9 syma
+ colour 0 ne
+ { symb_colour }
+ { symb_mono }
+ ifelse
+} def
+
+% Draw the main body of the crest..
+0 setlinecap
+5000 0 translate -1 1 scale -5000 0 translate sym
+5000 0 translate -1 1 scale -5000 0 translate sym
+sym_book
+colour 0 eq
+{
+ % draw the dark & light edges for the cross
+ 30 setlinewidth
+ 4681 3813 m 4681 4582 l stroke
+ 4681 3220 m 4681 2400 l stroke
+ 84 setlinewidth
+ 5346 3813 m 5346 4582 l stroke
+ 5346 3220 m 5346 2400 l stroke
+} if
+
+/star {
+-41 -82 rlineto
+-112 42 rlineto
+39 -90 rlineto
+-85 -52 rlineto
+87 -48 rlineto
+-28 -86 rlineto
+93 33 rlineto
+45 -89 rlineto
+44 83 rlineto
+90 -28 rlineto
+-27 106 rlineto
+75 45 rlineto
+-77 42 rlineto
+28 82 rlineto
+-90 -24 rlineto
+-41 66 rlineto closepath } def
+% Draw the lion in black
+0 setlinewidth
+5863 4715 m
+5825 4660 5740 4655 5695 4700 c
+5660 4670 5608 4670 5582 4700 c
+5553 4730 5555 4780 5588 4800 c
+5554 4852 5576 4902 5655 4895 c
+5668 4893 5678 4900 5678 4910 c
+5678 4970 l
+5607 4971 5546 4980 5481 5020 c
+5481 4875 l
+5363 4930 5323 4890 5364 4810 c
+5267 4842 5240 4830 5245 4735 c
+5174 4810 5112 4773 5146 4703 c
+5115 4655 5055 4640 5021 4678 c
+4972 4677 4934 4694 4923 4723 c
+4910 4757 4917 4798 4955 4822 c
+4932 4850 4952 4875 4983 4896 c
+5012 4918 5050 4911 5077 4892 c
+5190 4970 l
+5127 5061 l
+5010 4973 4928 4950 4870 4962 c
+4845 4910 4795 4875 4733 4858 c
+4659 4942 4610 4932 4602 4804 c
+4520 4855 4483 4842 4460 4757 c
+4422 4782 4393 4781 4367 4760 c
+4378 4710 4357 4672 4326 4659 c
+4285 4648 4240 4655 4223 4697 c
+4167 4693 4137 4720 4115 4752 c
+4112 4790 4130 4828 4183 4840 c
+4183 4875 4192 4901 4222 4920 c
+4248 4939 4272 4930 4313 4904 c
+4315 4980 4272 5010 4225 4994 c
+4233 5040 4231 5070 4195 5080 c
+4149 5060 4095 5062 4075 5090 c
+4050 5112 4045 5159 4074 5193 c
+4047 5238 4050 5270 4075 5301 c
+4108 5338 4162 5330 4196 5298 c
+4232 5320 4262 5315 4287 5285 c
+4304 5262 4312 5220 4275 5181 c
+4387 5072 l
+4430 5095 l
+4408 5132 4395 5145 4395 5175 c
+4375 5193 4355 5219 4347 5251 c
+4302 5293 4300 5330 4335 5367 c
+4283 5422 4314 5485 4393 5483 c
+4407 5531 4465 5552 4506 5530 c
+4545 5561 4615 5562 4655 5530 c
+4716 5543 4762 5522 4770 5472 c
+4835 5490 4855 5422 4813 5372 c
+4844 5313 l
+4960 5313 l
+4865 5422 4870 5514 5015 5575 c
+5035 5631 5067 5658 5114 5700 c
+5128 5713 5153 5702 5151 5672 c
+5150 5617 l
+5195 5656 5240 5660 5258 5628 c
+5267 5611 5259 5586 5204 5530 c
+5220 5511 5227 5470 5207 5423 c
+5255 5442 5300 5467 5334 5485 c
+5473 5565 5652 5553 5728 5450 c
+5771 5382 5770 5338 5708 5272 c
+5673 5245 5674 5200 5702 5173 c
+5745 5131 5802 5110 5865 5093 c
+5810 5033 5813 5010 5866 4968 c
+5795 4925 5795 4898 5863 4850 c
+5786 4791 5783 4760 5863 4715 c
+5539 5324 m
+5565 5327 5589 5328 5607 5348 c
+5620 5363 5615 5388 5601 5403 c
+5586 5421 5562 5419 5539 5418 c
+5470 5406 5386 5372 5332 5324 c
+5539 5324 l
+closepath 0 setgray fill
+% We firstly fix problems,
+% The hole in the tail
+red_colour
+5091 5462 m
+5083 5471 5073 5475 5062 5475 c
+5050 5475 5040 5471 5032 5462 c
+5023 5454 5019 5444 5019 5433 c
+5019 5421 5023 5411 5032 5403 c
+5040 5394 5050 5390 5062 5390 c
+5073 5390 5083 5394 5091 5403 c
+5100 5411 5104 5421 5104 5433 c
+5104 5444 5100 5454 5091 5462 c
+closepath fill
+% Inside of right fore paw
+4294 5212 m
+4287 5200 4282 5191 4274 5180 c
+4280 5173 4287 5171 4294 5164 c
+4294 5182 4295 5195 4294 5212 c
+closepath fill
+% Rest of the right fore paw
+4328 5261 m
+4328 5212 4328 5176 4328 5127 c
+4347 5110 4360 5098 4379 5080 c
+4386 5074 4401 5084 4400 5094 c
+4400 5120 4396 5138 4396 5164 c
+4395 5179 4386 5190 4375 5200 c
+4354 5219 4354 5250 4328 5261 c
+closepath fill
+% and now in the rest in gold
+gold_colour
+% crotch
+5300 5162 m
+5326 5166 5354 5166 5371 5145 c
+5344 5139 5321 5146 5300 5162 c
+% Right hind leg
+closepath fill
+5316 4855 m
+5271 4863 5221 4835 5211 4791 c
+5188 4803 5166 4806 5141 4798 c
+5107 4787 5107 4741 5109 4704 c
+5096 4692 5085 4679 5067 4680 c
+5044 4682 5030 4709 5033 4731 c
+5034 4740 5010 4743 5009 4734 c
+5007 4723 4998 4712 4987 4713 c
+4962 4716 4939 4737 4939 4762 c
+4939 4784 4964 4797 4986 4797 c
+4995 4797 5003 4816 4995 4821 c
+4979 4831 4973 4859 4987 4872 c
+5010 4893 5051 4883 5071 4860 c
+5123 4892 5160 4917 5211 4950 c
+5221 4956 5224 4970 5218 4979 c
+5200 5007 5187 5027 5171 5056 c
+5162 5072 5157 5096 5173 5104 c
+5207 5121 5231 5135 5264 5152 c
+5299 5125 5338 5112 5382 5120 c
+5405 5088 5425 5067 5451 5037 c
+5450 4993 5449 4961 5449 4916 c
+5416 4926 5386 4940 5356 4924 c
+5330 4910 5318 4884 5316 4855 c
+closepath fill
+% Chest
+4631 5190 m
+4627 5148 4616 5095 4575 5091 c
+4535 5087 4514 5140 4511 5180 c
+4491 5152 4467 5122 4481 5091 c
+4494 5062 4515 5048 4537 5025 c
+4580 5046 4612 5060 4653 5085 c
+4673 5097 4681 5120 4680 5144 c
+4679 5168 4651 5175 4631 5190 c
+closepath fill
+% Main Body
+4306 4871 m
+4291 4896 4249 4908 4229 4888 c
+4212 4871 4212 4841 4227 4824 c
+4224 4819 4220 4817 4217 4812 c
+4195 4813 4169 4805 4166 4784 c
+4163 4765 4171 4745 4188 4737 c
+4207 4728 4229 4738 4243 4753 c
+4249 4748 4255 4746 4261 4742 c
+4255 4722 4259 4695 4278 4688 c
+4297 4682 4319 4681 4332 4696 c
+4346 4713 4336 4734 4330 4755 c
+4328 4762 4327 4769 4332 4775 c
+4358 4805 4401 4817 4438 4801 c
+4464 4849 4526 4868 4577 4851 c
+4579 4891 4612 4926 4652 4932 c
+4687 4936 4722 4923 4740 4892 c
+4781 4908 4812 4928 4835 4965 c
+4843 4977 4841 4989 4839 5002 c
+4835 5027 4826 5043 4815 5065 c
+4810 5074 4836 5085 4841 5076 c
+4856 5048 4864 5026 4873 4996 c
+4939 4998 4995 5004 5047 5045 c
+5138 5116 5212 5185 5328 5191 c
+5357 5192 5384 5181 5399 5156 c
+5462 5050 5572 5010 5694 4995 c
+5703 4994 5707 4984 5707 4975 c
+5707 4912 5707 4866 5707 4802 c
+5697 4802 5689 4802 5678 4801 c
+5677 4822 5674 4837 5672 4858 c
+5669 4883 5613 4876 5605 4853 c
+5597 4833 5615 4813 5633 4800 c
+5631 4793 5628 4787 5626 4780 c
+5610 4780 5592 4778 5587 4764 c
+5581 4748 5584 4729 5598 4719 c
+5613 4708 5630 4703 5649 4709 c
+5668 4714 5679 4728 5690 4745 c
+5698 4744 5703 4743 5711 4742 c
+5718 4710 5767 4698 5797 4712 c
+5769 4752 5770 4807 5801 4845 c
+5773 4874 5770 4922 5794 4954 c
+5772 4992 5773 5033 5791 5072 c
+5745 5094 5709 5112 5675 5150 c
+5643 5186 5635 5231 5647 5277 c
+5688 5310 5718 5357 5707 5410 c
+5691 5483 5604 5514 5529 5511 c
+5385 5505 5298 5418 5159 5379 c
+5109 5365 5062 5347 5019 5374 c
+4997 5388 4981 5409 4982 5436 c
+4983 5465 5003 5488 5030 5500 c
+5052 5510 5077 5511 5097 5497 c
+5118 5482 5125 5460 5127 5435 c
+5128 5423 5147 5413 5157 5419 c
+5175 5430 5187 5447 5185 5468 c
+5182 5495 5172 5513 5161 5537 c
+5187 5554 5199 5574 5217 5599 c
+5222 5606 5204 5619 5198 5613 c
+5175 5593 5153 5586 5128 5568 c
+5122 5563 5107 5568 5107 5576 c
+5110 5608 5110 5631 5109 5663 c
+5072 5629 5045 5590 5050 5541 c
+4992 5542 4922 5509 4919 5451 c
+4916 5384 4969 5341 5021 5300 c
+4954 5296 4904 5297 4836 5293 c
+4833 5276 4821 5264 4806 5256 c
+4798 5223 4777 5202 4749 5185 c
+4742 5157 4725 5138 4701 5122 c
+4694 5093 4682 5069 4657 5054 c
+4531 4981 4435 4936 4306 4871 c
+5207 5299 l
+5319 5353 5395 5408 5515 5439 c
+5555 5450 5594 5453 5625 5426 c
+5643 5411 5654 5391 5650 5368 c
+5645 5330 5611 5298 5573 5297 c
+5207 5299 l
+closepath fill
+% Mane below Left Ear
+4774 5350 m
+4765 5338 4761 5328 4755 5315 c
+4770 5303 4780 5293 4793 5279 c
+4800 5284 4804 5289 4810 5295 c
+4805 5296 4802 5296 4798 5296 c
+4798 5307 4798 5315 4797 5325 c
+4796 5338 4783 5342 4774 5350 c
+closepath fill
+% Mane below Right Ear
+4378 5312 m
+4368 5324 4365 5337 4362 5352 c
+4344 5342 4322 5328 4326 5308 c
+4328 5296 4333 5287 4342 5278 c
+4354 5292 4362 5302 4378 5312 c
+closepath fill
+% Mane below left Eye
+4690 5230 m
+4683 5217 4674 5209 4661 5200 c
+4677 5187 4687 5177 4700 5161 c
+4713 5173 4735 5196 4720 5207 c
+4709 5216 4701 5222 4690 5230 c
+closepath fill
+% Mane below right Eye
+4483 5195 m
+4466 5201 4452 5207 4443 5221 c
+4420 5208 4398 5174 4416 5155 c
+4425 5145 4432 5139 4442 5131 c
+4454 5156 4465 5173 4483 5195 c
+closepath fill
+% Face
+4426 5435 m
+4418 5454 4400 5481 4417 5491 c
+4440 5505 4461 5512 4487 5509 c
+4496 5508 4505 5506 4510 5498 c
+4521 5479 4526 5464 4536 5444 c
+4545 5445 4552 5447 4561 5447 c
+4556 5473 4519 5512 4545 5518 c
+4571 5524 4606 5536 4619 5512 c
+4632 5489 4639 5471 4645 5445 c
+4655 5447 4662 5447 4673 5448 c
+4669 5471 4658 5508 4681 5511 c
+4701 5514 4721 5508 4733 5493 c
+4744 5479 4724 5463 4711 5452 c
+4717 5445 4722 5440 4729 5433 c
+4752 5447 4788 5465 4803 5441 c
+4818 5417 4783 5392 4758 5378 c
+4754 5375 4750 5372 4747 5367 c
+4739 5350 4733 5338 4724 5321 c
+4721 5315 4723 5307 4729 5303 c
+4747 5289 4758 5276 4777 5262 c
+4769 5246 4759 5235 4743 5228 c
+4725 5241 4711 5250 4693 5263 c
+4693 5269 4694 5273 4694 5278 c
+4685 5278 4679 5279 4670 5278 c
+4671 5247 4642 5218 4610 5218 c
+4597 5218 4585 5226 4581 5239 c
+4575 5260 4600 5274 4620 5283 c
+4632 5288 4643 5297 4643 5310 c
+4643 5325 4644 5336 4643 5350 c
+4643 5357 4648 5363 4654 5366 c
+4668 5373 4678 5377 4692 5384 c
+4690 5393 4689 5400 4687 5410 c
+4665 5402 4650 5396 4629 5387 c
+4622 5385 4616 5379 4616 5371 c
+4615 5351 4611 5336 4612 5315 c
+4613 5307 4605 5300 4597 5300 c
+4575 5299 4560 5301 4539 5301 c
+4529 5301 4524 5312 4523 5322 c
+4521 5339 4520 5351 4519 5369 c
+4518 5376 4516 5384 4509 5386 c
+4486 5397 4470 5405 4446 5414 c
+4443 5405 4440 5399 4437 5390 c
+4458 5382 4472 5371 4492 5361 c
+4494 5340 4494 5325 4496 5304 c
+4498 5288 4516 5279 4533 5278 c
+4545 5277 4551 5262 4551 5249 c
+4551 5235 4541 5217 4526 5218 c
+4509 5220 4496 5219 4478 5222 c
+4456 5227 4461 5258 4459 5281 c
+4450 5281 4443 5281 4434 5281 c
+4435 5257 4423 5236 4402 5223 c
+4388 5214 4371 5235 4366 5251 c
+4360 5273 4387 5291 4409 5295 c
+4410 5301 4411 5305 4412 5311 c
+4394 5328 4388 5350 4388 5375 c
+4361 5387 4321 5414 4338 5437 c
+4355 5460 4391 5441 4414 5425 c
+4418 5428 4421 5432 4426 5435 c
+closepath fill
+% Tongue
+4564 5204 m
+4556 5198 4549 5194 4540 5192 c
+4543 5167 4546 5129 4571 5130 c
+4597 5130 4596 5170 4595 5195 c
+4583 5197 4574 5198 4564 5204 c
+closepath fill
+% Right Fore Paw
+4458 5072 m
+4429 5058 4408 5049 4379 5036 c
+4324 5086 4286 5124 4232 5174 c
+4255 5202 4277 5248 4249 5271 c
+4228 5288 4201 5264 4179 5248 c
+4158 5270 4127 5298 4103 5280 c
+4075 5260 4096 5216 4115 5188 c
+4094 5177 4077 5154 4084 5131 c
+4093 5101 4137 5086 4166 5100 c
+4186 5110 4208 5111 4227 5099 c
+4248 5084 4250 5059 4253 5034 c
+4304 5041 4346 4983 4351 4931 c
+4408 4961 4450 4983 4506 5014 c
+4487 5034 4471 5048 4458 5072 c
+closepath fill
+% Draw the stars (outline in black)
+0 setgray 60 setlinewidth
+3943 3714 m star stroke
+6077 3714 m star stroke
+5010 2943 m star stroke
+5010 4379 m star stroke
+% and fill in gold
+gold_colour
+3928 3725 m star fill
+6062 3725 m star fill
+4995 2958 m star fill
+4995 4394 m star fill
+
+0 setgray
+%%IncludeResource: font Times-Bold
+
+/Times-Bold findfont [ 342 0 0 250 0 0 ] makefont setfont newpath
+
+2430 2395 m
+2460 2278 2514 2220 2555 2180 c
+2576 2140 2613 2090 2662 2053 c
+2730 1993 2812 1925 2910 1893 c
+2987 1870 3115 1851 3207 1855 c
+3290 1860 3400 1860 3495 1870 c
+3760 1890 3990 1834 4135 1732 c
+4195 1690 4273 1615 4320 1565 c
+4368 1513 4517 1435 4547 1390 c
+4666 1320 4847 1250 5000 1250 c
+5153 1250 5334 1320 5453 1390 c
+5483 1435 5632 1513 5680 1565 c
+5727 1615 5805 1690 5865 1732 c
+6010 1834 6240 1890 6505 1870 c
+6600 1860 6710 1860 6793 1855 c
+6885 1851 7013 1870 7090 1893 c
+7188 1925 7270 1993 7338 2053 c
+7387 2090 7424 2140 7445 2180 c
+7486 2220 7540 2278 7570 2395 c
+(SIDERE\264MENS\264EADEM\264MUTATO) 0 30 pathtext
+grestore
+showpage
+%%Trailer
diff --git a/doc/doc/user/tbl b/doc/doc/user/tbl
new file mode 100644
index 0000000..7b374b3
--- /dev/null
+++ b/doc/doc/user/tbl
@@ -0,0 +1,56 @@
+@Chapter
+ @Title { Tables }
+ @Tag { tables }
+@Begin
+@LP
+This chapter explains how to produce tables like this one:
+tables. @Index { tables }
+@CD @Tbl
+ aindent { ctr }
+ arulebelow { double }
+ aformat { @StartHSpan @Cell @B X | | @HSpan }
+ bindent { align }
+ bformat { @Cell rr { no } @I A | @Cell rl { no } B | @Cell C }
+ rule { yes }
+{
+@Rowa
+ X { Value of mathematical formulae (millions of dollars) }
+@Rowb
+ A { Quadratic formula }
+ B { @M { x ^= { minus b +- sqrt { b sup 2 - 4ac } } over 2a } }
+ C { 3^.5 }
+@Rowb
+ A { Binomial theorem }
+ B { @M { ( a + b ) sup n ^= sum from { k=0 } to { infty }
+pmatrix { row ccol n row ccol k } a sup k b sup n-k
+} }
+ C { 12^ }
+}
+As the example shows, the tables may contain spanning columns, aligned
+columns, and rules, and the cells may contain arbitrary objects.
+@FootNote {
+There has been a slight change to {@Code "@Tbl"}, starting with Version
+3.18: if you want columns whose entries are aligned (on decimal points,
+equals signs, etc.), or the analogous thing with rows, you have to ask
+for it now, whereas before it happened automatically. See
+Section {@NumberOf tbl_alig} for the details.
+}
+@BeginSections
+
+@Include { tbl_intr } # introduction
+@Include { tbl_cell } # cell formatting: font, break, width, paint
+@Include { tbl_rows } # row formats and the @Row symbol
+@Include { tbl_rule } # rules
+@Include { tbl_marg } # margins
+@Include { tbl_widt } # width and height
+@Include { tbl_inde } # indenting and struts
+@Include { tbl_alig } # aligned columns and headings over them
+@Include { tbl_span } # spanning columns and rows
+@Include { tbl_mark } # @MarkRow
+@Include { tbl_mult } # multi-page tables
+@Include { tbl_plai } # plain text tables
+@Include { tbl_setu } # setup file options
+@Include { tbl_summ } # summary
+
+@EndSections
+@End @Chapter
diff --git a/doc/doc/user/tbl_alig b/doc/doc/user/tbl_alig
new file mode 100644
index 0000000..0634f75
--- /dev/null
+++ b/doc/doc/user/tbl_alig
@@ -0,0 +1,105 @@
+@Section
+ @Title { Aligned columns }
+ @Tag { tbl_alig }
+@Begin
+@PP
+Columns of numbers are often presented with decimal points aligned:
+tables. @RawIndex { tables }
+tables.aligned @SubIndex { aligned columns }
+aligned.columns @Index { aligned columns in tables }
+@CD @OneRow @Tbl
+ marginvertical { 0.5vx }
+ aformat { @Cell indent { align } A }
+{
+@Rowa A { 5^.46 } marginabove { 0i }
+@Rowa A { 3^.4159 }
+@Rowa A { 5772^ } marginbelow { 0i }
+}
+To produce this you need two steps. First, indicate that you want
+an aligned column, using @Code "indent { align }" on the relevant
+cell; and second, place a @Code "^" symbol, which is used generally
+throughout Lout for alignment, just before the alignment point in
+each entry:
+@ID @OneRow @Code @Verbatim {
+@Tbl
+ marginvertical { 0.5vx }
+ aformat { @Cell indent { align } A }
+{
+@Rowa A { 5^.46 }
+@Rowa A { 3^.4159 }
+@Rowa A { 5772^ }
+}
+}
+The equals signs of equations can be aligned in the same way.
+@PP
+Owing to problems behind the scenes, in a column in which one cell is
+labelled {@Code "indent { align }"}, all the other cells have to be
+so labelled, otherwise Lout make a mess of things. This is a problem
+when we want to get a heading over the top of an aligned column: if
+we follow the rule, the @I heading gets aligned, which is wrong. There
+is no ideal solution to this problem.
+@PP
+What most people want is for the heading to be centred in the column, and the
+aligned entries to be centred in the column as a block, but Lout cannot
+do this. One approximation is to make the heading cell a spanning
+cell (Section {@NumberOf tbl_span}) with centring, like this:
+@FootNote { Lout does not currently accept single-column tables
+with {@Code "@StartHSpan"}, so we've had to add
+an empty second column. }
+@ID @OneRow @Code @Verbatim {
+@Tbl
+ marginvertical { 0.5vx }
+ aformat { @StartHSpan @Cell indent { ctr } @B A | }
+ bformat { @Cell indent { align } A | }
+{
+@Rowa A { Head }
+@Rowb A { 5^.46 }
+@Rowb A { 3^.4159 }
+@Rowb A { 5772^ }
+}
+}
+The spanning quarantines the centred cell, permitting
+@Code "indent { ctr }" to work:
+@CD @OneRow @Tbl
+ marginvertical { 0.5vx }
+ aformat { @StartHSpan @Cell indent { ctr } @B A | }
+ bformat { @Cell indent { align } A | }
+{
+@Rowa A { Head } marginabove { 0i }
+@Rowb A { 5^.46 }
+@Rowb A { 3^.4159 }
+@Rowb A { 5772^ } marginbelow { 0i }
+}
+But if the heading cell is wider than the aligned cells, you get this:
+@CD @OneRow @Tbl
+ marginvertical { 0.5vx }
+ aformat { @StartHSpan @Cell indent { ctr } @B A | }
+ bformat { @Cell indent { align } A | }
+{
+@Rowa A { A Wider Heading } marginabove { 0i }
+@Rowb A { 5^.46 }
+@Rowb A { 3^.4159 }
+@Rowb A { 5772^ } marginbelow { 0i }
+}
+In other words, this will centre a heading with respect
+to aligned entries, but it will not centre aligned entries with
+respect to a heading. In these cases you could forget about
+@Code "@StartHSpan" and treat the heading as an aligned entry,
+either by placing a @Code "^" within it or by using
+@ID @Code "@Cell 0.5w @HShift A"
+which places the alignment point in the centre of the entry:
+@CD @OneRow @Tbl
+ indent { align }
+ marginvertical { 0.5vx }
+ aformat { @Cell 0.5w @HShift @B A }
+ bformat { @Cell A }
+{
+@Rowa A { A Wider Heading } marginabove { 0i }
+@Rowb A { 5^.46 }
+@Rowb A { 3^.4159 }
+@Rowb A { 5772^ } marginbelow { 0i }
+}
+You can move the alignment point about by changing the 0.5 to something
+smaller or larger. Of course, all this is a poor substitute for the
+real thing.
+@End @Section
diff --git a/doc/doc/user/tbl_cell b/doc/doc/user/tbl_cell
new file mode 100644
index 0000000..9d98023
--- /dev/null
+++ b/doc/doc/user/tbl_cell
@@ -0,0 +1,167 @@
+@Section
+ @Title { Changing the appearance of cells }
+ @Tag { tbl_cell }
+@Begin
+@PP
+The @Code "@Cell" symbol offers a few options for changing the appearance
+tables. @RawIndex { tables }
+tables.paint @SubIndex { @Code "paint" option }
+paint. @RawIndex { @Code "paint" option }
+paint.in.tables @SubIndex { in tables }
+tables. @RawIndex { tables }
+tables.font @SubIndex { @Code "font" option }
+font.option. @RawIndex { @Code "font" option }
+font.option.in.tables @SubIndex { in tables }
+tables. @RawIndex { tables }
+tables.break @SubIndex { @Code "break" option }
+break. @RawIndex { @Code "break" option }
+break.tables @SubIndex { in tables }
+of entries placed in it. Like all options, these
+appear immediately after the @Code "@Cell" symbol, with their values in braces:
+@ID @OneRow @Code @Verbatim {
+@Tbl
+ aformat { @Cell paint { lightgrey } font { Italic } break { clines } A }
+{
+@Rowa A {
+IMPORTANT
+Do not throw stones at this notice
+}
+}
+}
+The result here is
+@CD
+@Tbl
+ aformat { @Cell paint { lightgrey } font { Italic } break { clines } A | @Cell B }
+{
+@Rowa A {
+IMPORTANT
+Do not throw stones at this notice
+}
+}
+with a light grey background, Italic font, and
+@Code "clines" paragraph breaking style. The paint colour
+may be any colour from Section {@NumberOf colour}.
+@PP
+Wherever there is a @Code paint option in the standard packages, there
+is a neighbouring @Code texture option, which causes the paint to be
+tables. @RawIndex { tables }
+tables.texture @SubIndex { @Code "texture" option }
+texture.option. @RawIndex { @Code "texture" option }
+texture.option.in.tables @SubIndex { in tables }
+applied according to a given texture. For a list of available
+textures, consult Section {@NumberOf textures}; for how the @Code texture
+option works, consult the description of the @Code texture option to the
+@Code "@Box" symbol in Section {@NumberOf boxes} (all @Code texture
+options work in the same way). Here's an example:
+@ID @OneRow @Code @Verbatim {
+@Tbl
+ width { 2f }
+ height { 2f }
+ aformat {
+@Cell paint { black } texture { brickwork } A | @Cell B |
+@Cell paint { black } texture { brickwork } C | @Cell D }
+ bformat {
+@Cell A | @Cell paint { black } texture { brickwork } B |
+@Cell C | @Cell paint { black } texture { brickwork } D }
+{
+@Rowa
+@Rowb
+@Rowa
+@Rowb
+}
+}
+produces
+@FootNote { If you can't see any textures here, the fault is probably
+with your PostScript viewer. See Section {@NumberOf textures}. }
+@CD @OneRow
+@Tbl
+ width { 2f }
+ height { 2f }
+ aformat {
+@Cell paint { black } texture { brickwork } A | @Cell B |
+@Cell paint { black } texture { brickwork } C | @Cell D }
+ bformat {
+@Cell A | @Cell paint { black } texture { brickwork } B |
+@Cell C | @Cell paint { black } texture { brickwork } D }
+{
+@Rowa
+@Rowb
+@Rowa
+@Rowb
+}
+Another option, {@Code background}, allows an arbitrary object to be
+tables. @RawIndex { tables }
+tables.background @SubIndex { @Code "background" option }
+background.tables @Index { @Code "background" option (tables) }
+placed in the background of the cell, in front of any paint but behind
+the entry.
+@PP
+Later sections introduce other @Code "@Cell" options, for
+fixed-width columns, indented entries, margins, and rules. It is also
+possible to combine other symbols from Lout with cell formatting, by
+placing them between the @Code "@Cell" symbol and its following letter,
+rotated.entries @Index { rotated entries in tables }
+like this:
+@ID @OneRow @Code @Verbatim {
+@Tbl
+ aformat { @Cell 90d @Rotate @S A | @Cell @B grey @Colour B }
+{
+@Rowa
+ A { Col A }
+ B { Col B }
+}
+}
+Think of the @Code "A" as standing for the value of the @Code "A"
+option of the @Code "@Rowa" symbol (which it does), and you'll see
+that this is just Lout's usual rule of symbols applying to the
+object that follows them. The result here is
+@CD @Tbl
+ aformat { @Cell 90d @Rotate @S A | @Cell @B grey @Colour B }
+{
+@Rowa
+ A { Col A }
+ B { Col B }
+}
+In simple cases @Code "@B" is easier than {@Code "font { Bold }"};
+the latter is useful as a default value, as we will see in a moment.
+Note the difference between a coloured background, obtained with
+{@Code "paint"}, and a coloured entry, obtained using the @Code "@Colour"
+symbol.
+@PP
+When an entry in a table consists of several paragraphs, it will usually
+be best to enclose it in {@Code "@OneRow"}, since otherwise @Code "@Tbl"
+is likely to take each paragraph as a separate row, leading to incorrect
+vertical spacing. A convenient way to do this is
+@ID @Code "aformat { @Cell @OneRow A | @Cell @OneRow B }"
+and so on.
+@PP
+@Code "@Tbl" offers many places where you can set cell options. The meaning
+of the option is the same wherever you set it;
+what changes is the extent of its application. Taking the @Code "paint"
+option as a representative example, the most specific place to set it
+is at a @Code "@Cell" symbol as above; then it affects only that cell
+in rows formatted using that format. Alternatively,
+@ID @OneRow @Code @Verbatim {
+@Tbl
+ apaint { lightgrey }
+ aformat { @Cell A | @Cell B }
+}
+will paint every cell in the {@Code "aformat"}. And
+@ID @OneRow @Code @Verbatim {
+@Rowa
+ paint { lightgrey }
+ A { ... }
+}
+will paint every cell in a particular row. To paint the entire table, use
+@ID @OneRow @Code @Verbatim {
+@Tbl
+ paint { lightgrey }
+}
+And finally, there is a @Code "paint" option in the
+setup file (Section {@NumberOf tbl_setu}), which if set will paint every
+table in the document. When a more general setting of an option is
+contradicted by a more specific setting (e.g. when @Code "@Tbl" has
+@Code "paint { lightgrey }" but some cell or row has
+{@Code "paint { none }"}), the more specific setting applies. For a
+precise description, see Section {@NumberOf tbl_summ}.
+@End @Section
diff --git a/doc/doc/user/tbl_inde b/doc/doc/user/tbl_inde
new file mode 100644
index 0000000..c8e02d4
--- /dev/null
+++ b/doc/doc/user/tbl_inde
@@ -0,0 +1,69 @@
+@Section
+ @Title { Indenting and struts }
+ @Tag { tbl_inde }
+@Begin
+@PP
+By default, entries appear at the left within cells, not counting the
+cell margin. The @Code indent option causes entries to be indented
+tables. @RawIndex { tables }
+tables.indent @SubIndex { @Code "indent" option }
+indent.tables @Index { @Code "indent" option (tables) }
+horizontally. For example,
+@ID @OneRow @Code "@Cell indent { ctr }"
+horizontally centres the entry within the cell. Other possible values
+centred.entries @Index { centred entries in tables }
+right.justified.entries @Index { right justified entries in tables }
+are {@Code "left"} (the default value), {@Code "right"},
+{@Code "align"} (Section {@NumberOf tbl_alig}), or any length (for
+example, {@Code 2f}) meaning that much indent.
+@PP
+There is a corresponding @Code "indentvertical" option for vertical indenting
+tables. @RawIndex { tables }
+tables.indentvertical @SubIndex { @Code "indentvertical" option }
+indentvertical.tables @Index { @Code "indentvertical" option (tables) }
+within the cell. It takes the same values except that @Code "left" is
+renamed {@Code "top"} (the default), and @Code "right" is renamed
+{@Code foot}. A common problem with vertical placement is that words that
+lack ascenders (parts of letters that rise up) or descenders (parts that
+sink down) can easily become misaligned. Looking at
+@CD @Tbl
+ mv { 0i }
+ aformat { @Cell A | @Cell B | @Cell C }
+{
+@Rowa
+ A { resume }
+ B { poppy }
+ C { title }
+}
+which is the result of
+@ID @OneRow @Code @Verbatim {
+@Tbl
+ aformat { @Cell A | @Cell B | @Cell C }
+{
+@Rowa
+ A { resume }
+ B { poppy }
+ C { title }
+}
+}
+we see that the words are aligned correctly despite these
+worries. This is because by default
+@Code "@Tbl" adds a @I { vertical strut } to each entry: an invisible
+object of zero width and height {@Code "1f"}, which covers for any absent
+tables. @RawIndex { tables }
+tables.strut @SubIndex { @Code "strut" option }
+strut.option. @RawIndex { @Code "strut" option }
+strut.option.in.tables @SubIndex { in tables }
+ascenders and descenders. The option
+@ID @OneRow @Code "@Cell strut { no }"
+can be used to remove the strut; other acceptable values for this
+option are {@Code yes} (the default value), and any length, which will
+add a strut of that length.
+@PP
+For completeness there is a corresponding @Code "struthorizontal" option; it
+tables. @RawIndex { tables }
+tables.struthorizontal @SubIndex { @Code "struthorizontal" option }
+struthorizontal.tables @Index { @Code "struthorizontal" option (tables) }
+takes the same values, its default value is {@Code no}, and it unlikely
+ever to be used.
+@End @Section
diff --git a/doc/doc/user/tbl_intr b/doc/doc/user/tbl_intr
new file mode 100644
index 0000000..bb0727c
--- /dev/null
+++ b/doc/doc/user/tbl_intr
@@ -0,0 +1,135 @@
+@Section
+ @Title { Getting started }
+ @Tag { tbl_intr }
+@Begin
+@PP
+The Lout definitions for table formatting
+@FootNote {
+The @Code "tbl" package described here replaces the @Code "tab"
+package of Version 3.12 and earlier. For backward compatibility
+the @Code "tab" package is still available and still works as
+described in older versions of this documentation. Users of
+@Code "tab" will find simple uses of @Code "tbl" to be very similar,
+replacing @Code "@Tab" by {@Code "@Tbl"}, @Code "@Fmta" by
+{@Code "aformat"}, @Code "@Col" by {@Code "@Cell"}, and
+@Code "!" by {@Code "|"}.
+}
+are kept in a file called {@Code "tbl"}, which you must include at
+the start of your document if
+tbl.file @Index { @Code "tbl" file }
+you want tables, like this:
+@ID @OneRow @Code {
+"@SysInclude { tbl }"
+"@SysInclude { doc }"
+"@Doc @Text @Begin"
+"..."
+"@End @Text"
+}
+Specialized setup files, like {@Code "tbl"}, are included before the main
+setup file (@Code "doc" in this case). Alternatively, if you are using
+your own setup file, you may place the include commands within it, near the
+start.
+@PP
+To begin with a very simple example, the table
+tables. @RawIndex { tables }
+tables.tbl @SubIndex { @Code "@Tbl" }
+tbl.tables @Index { @Code "@Tbl" (tables) }
+@CD
+@Tbl
+ aformat { @Cell A | @Cell B | @Cell C }
+{
+@Rowa
+ A { Austen }
+ B { Chaucer }
+ C { Donne }
+@Rowa
+ A { Balzac }
+ B { Darwin }
+ C { Goethe }
+@Rowa
+ A { Byron }
+ B { Dickens }
+ C { Homer }
+}
+is produced by the following input:
+@ID @OneRow @Code @Verbatim {
+@Tbl
+ aformat { @Cell A | @Cell B | @Cell C }
+{
+@Rowa
+ A { Austen }
+ B { Chaucer }
+ C { Donne }
+@Rowa
+ A { Balzac }
+ B { Darwin }
+ C { Goethe }
+@Rowa
+ A { Byron }
+ B { Dickens }
+ C { Homer }
+}
+}
+Immediately after the @Code "@Tbl" symbol, which introduces the table,
+comes a @I { format option }, {@Code "aformat"}, describing the format of
+tables. @RawIndex { tables }
+tables.aformat @SubIndex { @Code "aformat" option }
+aformat.tables @Index { @Code "aformat" option (tables) }
+tables. @RawIndex { tables }
+tables.format @SubIndex { format of }
+format.tables @Index { format of tables }
+each row. It says that each row contains three cells: {@Code "@Cell A"},
+tables. @RawIndex { tables }
+tables.cell @SubIndex { @Code "@Cell" }
+cell.tables @Index { @Code "@Cell" (tables) }
+{@Code "@Cell B"}, and {@Code "@Cell C"}. The format option may have up
+to 26 cells, with names chosen freely from the upper-case letters from
+@Code A to {@Code Z}. The symbol @Code "|" separates each cell from the next.
+@PP
+After the format option comes the body of the table, enclosed in
+braces. It consists entirely of a sequence of rows, each introduced by
+a @Code "@Rowa" symbol and containing one entry for each cell of the
+tables. @RawIndex { tables }
+tables.rowa @SubIndex { @Code "@Rowa" }
+rowa.tables @Index { @Code "@Rowa" (tables) }
+format option, as shown (the row may occupy any number of lines of the
+input file). The entries may be arbitrary Lout objects, such as words,
+paragraphs, equations, figures, and so on without restriction. An entry
+may be omitted altogether if it is empty. Lout will choose suitable widths
+for the cells, and break paragraphs in the entries to the right widths.
+@PP
+The result of the @Code "@Tbl" symbol is an object. As usual with
+Lout, this object may appear at any point in the document,
+@FootNote {
+In rare cases, when the table occupies an entire paragraph but is not
+displayed, a bug in Basser Lout causes the second column to appear much
+too far to the right. If this occurs, replace
+the very first row symbol ({@Code "@Row"}, {@Code "@Rowa"}, {@Code "@Rowb"},
+etc.) by {@Code "@FirstRow"}, {@Code "@FirstRowa"}, {@Code "@FirstRowb"},
+etc. There are also {@Code "@HeaderFirstRow"}, {@Code "@HeaderFirstRowa"},
+{@Code "@HeaderFirstRowb"} etc. symbols for replacing {@Code "@HeaderRow"},
+{@Code "@HeaderRowa"}, {@Code "@HeaderRowb"}, etc., if required.
+# That should work, but if it doesn't, replacing
+# @Code "@Tbl" by @Code "@OneCol @Tbl" certainly will, although it also
+# prevents the table from breaking across page boundaries.
+}
+even within a paragraph or another table. Most commonly, though, tables
+are displayed using the @Code "@IndentedDisplay" and @Code "@CentredDisplay"
+symbols (Section {@NumberOf displays}):
+@ID @Code "@CentredDisplay @Tbl ..."
+or else they go into the @Code "@Table" symbol (Section {@NumberOf figures}):
+@ID @OneRow @Code {
+"@Table"
+" @Caption { ... }"
+"@Tbl ..."
+}
+which centres them at the top of the following page and adds a
+caption. Note the difference between {@Code "@Tbl"}, which builds a
+table, and {@Code "@Table"}, which places an arbitrary object in an
+appropriate place. It's important to remember that the result
+is an object like any other, because from time to time one wants such
+things as rotated tables whose entire contents are to be italicised:
+@ID @Code "90d @Rotate @I @Tbl ..."
+and it helps to remember that the full power of Lout can be
+brought to bear on the @I entire table.
+@End @Section
diff --git a/doc/doc/user/tbl_marg b/doc/doc/user/tbl_marg
new file mode 100644
index 0000000..6c156d3
--- /dev/null
+++ b/doc/doc/user/tbl_marg
@@ -0,0 +1,76 @@
+@Section
+ @Title { Margins }
+ @Tag { tbl_marg }
+@Begin
+@PP
+The @Code "@Cell" symbol offers a @Code margin option for changing the
+tables. @RawIndex { tables }
+tables.margin @SubIndex { @Code "margin" options }
+margin.options @RawIndex { margin options }
+margin.options.in.tables @SubIndex { in tables }
+amount of margin left between the entry and the boundary of the cell:
+@ID @Code "@Cell margin { 0.3f }"
+The default values are different for horizontal and vertical margins,
+which brings us to the @Code marginhorizontal and @Code marginvertical
+options:
+@ID @OneRow @Code @Verbatim {
+@Cell
+ marginhorizontal { 0.6f }
+ marginvertical { 0.3f }
+}
+These are the default values, 0.6 and 0.3 times the current font size
+respectively. Another useful value is {@Code "marginvertical { 0.5vx }"},
+which asks for a vertical margin of half the current line separation, but
+measured from baseline to baseline (this is what the @Code "x" means).
+This produces a separation equal to the separation of the surrounding lines:
+@CD @Tbl
+ marginvertical { 0.5vx }
+ aformat { @Cell A | @Cell B | @Cell C }
+{
+@Rowa
+ A { Austen }
+ B { Chaucer }
+ C { Donne }
+@Rowa
+ A { Balzac }
+ B { Darwin }
+ C { Goethe }
+@Rowa
+ A { Byron }
+ B { Dickens }
+ C { Homer }
+}
+This margin does not work so well when the cells contain paragraphs,
+diagrams or other things that could not be described as single lines.
+@PP
+There are {@Code "marginabove"}, {@Code "marginbelow"}, {@Code "marginleft"},
+and {@Code "marginright"} options for setting margins individually. For
+example, sometimes you don't want the extreme left and right margins in
+a table, and they can be got rid of like this:
+@ID @OneRow @Code @Verbatim {
+@Tbl
+ paint { lightgrey }
+ aformat { @Cell ml { 0i } A | @Cell B | @Cell mr { 0i } C }
+{
+@Rowa
+ A { Column A }
+ B { Column B }
+ C { Column C }
+}
+}
+We've used abbreviated versions of the options' names: @Code "ml" for
+{@Code marginleft}, and @Code "mr" for {@Code marginright}. Every option
+has such an abbreviated name, made from the first letters of the parts of
+its full name (Section {@NumberOf tbl_summ} lists all these names). The
+result is
+@DP @RCD @Tbl
+ paint { lightgrey }
+ aformat { @Cell ml { 0i } A | @Cell B | @Cell mr { 0i } C }
+{
+@Rowa
+ A { Column A }
+ B { Column B }
+ C { Column C }
+}
+# with the painting showing the reduced margins.
+@End @Section
diff --git a/doc/doc/user/tbl_mark b/doc/doc/user/tbl_mark
new file mode 100644
index 0000000..ec86f6d
--- /dev/null
+++ b/doc/doc/user/tbl_mark
@@ -0,0 +1,71 @@
+@Section
+ @Title { Vertical alignment of tables }
+ @Tag { tbl_mark }
+@Begin
+@PP
+Occasionally the vertical alignment of a table with objects to its left
+tables. @RawIndex { tables }
+tables.vertical.alignment @SubIndex { vertical alignment of }
+vertical.alignment @Index { vertical alignment of tables }
+and right becomes an issue. Examples are hard to find, but let's say
+that we need to construct a symbol
+@ID @AmberLight
+and include it in running text. The obvious first attempt at a table
+with three rows is
+@ID -1px @Break @OneRow @Code @Verbatim {
+@Tbl
+ aformat { @Cell A }
+ margin { 0i }
+ strut { no }
+{
+@Rowa A { @OpenCircle }
+@Rowa A { @ClosedCircle }
+@Rowa A { @OpenCircle }
+}
+}
+where @Code "@OpenCircle" and @Code "@ClosedCircle" produce open and
+closed circles (they may be defined using the @Code "@Diag" package);
+but this produces
+@Tbl
+ aformat { @Cell A }
+ margin { 0i }
+ strut { no }
+{
+@Rowa A { @OpenCircle }
+@Rowa A { @ClosedCircle }
+@Rowa A { @OpenCircle }
+}
+in running text, because vertical alignment is by default through the
+top boundary of the table. To make the alignment pass through one of
+the rows, replace its @Code "@Row" symbol by a corresponding
+tables. @RawIndex { tables }
+tables.markrow @SubIndex { @Code "@MarkRow" symbols }
+thing.tables @Index { @Code "@MarkRow" symbols (tables) }
+@Code "@MarkRow" symbol. Here is the revised table, enclosed in a
+definition for ease of use:
+amberlight @Index { @Code "@AmberLight" symbol }
+@ID -1px @Break @OneRow @Code @Verbatim {
+import @TblSetup
+def @AmberLight
+{
+ @OneRow @Tbl
+ aformat { @Cell indentvertical { align } A }
+ margin { 0i }
+ strut { no }
+ paint { no }
+ rule { no }
+ {
+ @Rowa A { @OpenCircle }
+ @MarkRowa A { @ClosedCircle }
+ @Rowa A { @OpenCircle }
+ }
+}
+}
+Now when we write
+@ID @Code "produces @AmberLight in running text"
+we find that this definition produces @AmberLight in running text, as
+desired. We have enclosed the table in @Code "@OneRow" to ensure that
+its rows will never become separated, and added some options just in
+case the definition is ever used with a setup file (Section
+{@NumberOf tbl_setu}) that has default painting or rules.
+@End @Section
diff --git a/doc/doc/user/tbl_mult b/doc/doc/user/tbl_mult
new file mode 100644
index 0000000..e716b6a
--- /dev/null
+++ b/doc/doc/user/tbl_mult
@@ -0,0 +1,152 @@
+@Section
+ @Title { Multi-page tables }
+ @Tag { tbl_mult }
+@Begin
+@PP
+The tables produced by @Code "@Tbl" permit page breaks (including breaking
+tables. @RawIndex { tables }
+tables.multipage @SubIndex { multi-page }
+multi.page.tables @Index { multi-page tables }
+to a new column) between every two rows, except rows that have a
+vertically spanning cell in common. Page breaks cannot occur
+within rows. The choice of page breaks can either be left to Lout,
+or it can be forced by placing the new page symbol @Code "@NP" between two
+tables. @RawIndex { tables }
+tables.np @SubIndex { @Code "@NP" (new page) in }
+np. @RawIndex { @Code "@NP" (new page) }
+np.in.tables @SubIndex { in tables }
+rows.
+@PP
+To prevent page breaks within a table, precede the @Code "@Tbl"
+symbol by {@Code "@OneRow"}:
+@ID @Code "@CD @OneRow @Tbl ..."
+@Code "@OneRow" is a general Lout symbol which binds the following
+object into a single, unbreakable row. The table must be small
+enough to fit on one page when you do this, otherwise an error
+will be printed and it will be scaled to fit. Display symbols
+like @Code "@CD" may have this effect anyway.
+@PP
+To prevent a page break between two particular rows, but not in
+general, replace the @Code "@Row" symbol of the second row with
+tables. @RawIndex { tables }
+tables.nobreakrow @SubIndex { @Code "@NoBreakRow" symbols }
+nobreakrow.tables @Index { @Code "@NoBreakRow" symbols (tables) }
+the corresponding @Code "@NoBreakRow" symbol (@Code "@NoBreakRowa"
+instead of {@Code "@Rowa"}, @Code "@NoBreakRowb" instead of
+{@Code "@Rowb"}, and so on).
+@PP
+Some care is needed over where to put multi-page tables. They can't go
+within any of the display symbols, because display symbols are not clever
+enough to break tables between rows, even though they are sometimes able
+to break simpler displays. (A display symbol will scale a very high table
+to fit on one page, and it will go wrong on a table containing
+{@Code "@NP"}.) Multi-page tables can go inside @Code "@Figure" or
+@Code "@Table" symbols, because these symbols have been set up to accept
+multi-page objects. Or they can go into the body text of the document
+at full width with a paragraph symbol before and after, like this:
+@ID -1px @Break @OneRow @Code @Verbatim {
+@DP
+@Tbl ...
+@DP
+}
+An example appears in Section {@NumberOf tbl_summ}. You can simulate
+an indent by an empty cell at the left of each row format. Lout will
+expand the rightmost column to the full page width; to prevent this,
+add a @Code "|" after the last cell within each {@Code format} option,
+creating an empty extra column.
+@PP
+One practical problem in multi-page tables is getting the rules
+right. The simplest way to do this is to set @Code "rulehorizontal"
+to {@Code yes}. This places a rule above every row including the
+first on each page, and a rule below every row including the last
+on each page. There is nothing equivalent to running headers
+(described below) at the bottom of the page -- nothing that would allow
+you to insert a rule after the last line of each page, but not
+elsewhere. (However, if you are using the @Code "@Table"
+symbol, its @Code "@Format" option can be used to do this.)
+@PP
+Another problem is getting a heading over every page after
+the first. This is easy if you know where the page breaks are going
+to fall (if you are using {@Code "@NP"}, for example), but you usually
+don't. To solve this problem, @Code {"@Tbl"} offers the
+@Code "@HeaderRowa" ... @Code "@HeaderRowh" and
+tables. @RawIndex { tables }
+tables.headerrow @SubIndex { @Code "@HeaderRow" symbols }
+headerrow.tables @Index { @Code "@HeaderRow" symbols (tables) }
+@Code "@EndHeaderRow" symbols. The multi-page table in
+Section {@NumberOf tbl_summ} is arranged like this:
+@ID -1px @Break @OneRow @Code @Verbatim {
+@Tbl
+ ...
+{
+@Rowd
+ A { Option names }
+ B { Default in PS, PDF }
+ C { Default in plain text }
+ D { Allowed values }
+ rulebelow { yes }
+@HeaderRowd
+ A { Option names (ctd.) }
+ B { Default in PS, PDF }
+ C { Default in plain text }
+ D { Allowed values }
+ rulebelow { yes }
+@Rowa
+ A { paint p }
+ B { none }
+ D { any colour from Section {@NumberOf colour} }
+...
+@Rowa
+ A { ruleplainchar rpc }
+ C { . }
+ D { any simple word e.g. @Code + }
+ rulebelow { yes }
+@EndHeaderRow
+}
+}
+@Code "@HeaderRowd" is exactly like {@Code "@Rowd"}, except that the row is
+not printed at all where it occurs; instead, it is saved up and used as a
+running header on subsequent pages.
+@PP
+The @Code "@EndHeaderRow" symbol goes where a @Code "@Row" symbol might
+go. Notice that it does not end with a letter between {@Code a} and
+{@Code h}, and that it has no options. Its effect is to cancel the
+closest preceding @Code "@HeaderRowa" ... @Code "@HeaderRowh" symbol.
+If you forget it, the result is bizarre: the header row will remain
+in effect, and then every page from this point on will have the running
+header, even though the table ended long before.
+@PP
+There may be any number of header rows saved up at any moment, all to be
+printed at the top of subsequent pages. Having @Code "@EndHeaderRow"
+allows them to be `nested.' For example,
+@ID -1px @Break @OneRow @Code @Verbatim {
+@HeaderRowa ...
+@HeaderRowb ...
+@EndHeaderRow
+@HeaderRowb ...
+@EndHeaderRow
+@EndHeaderRow
+}
+could be used in a table to say that the entire table has the first
+header row; and that the first part also has the second header row,
+but that subsequent parts of the table have their own, different
+second header row, but still the same first header row.
+@PP
+Certain kinds of objects are not allowed in header rows, and Lout will
+complain and quit if you try to put them there. Galleys
+(e.g. {@Code "@FootNote"} and {@Code "@Index"}) are not allowed, nor are
+cross references (e.g. {@Code "@NumberOf"} and {@Code "@PageOf"}), nor
+are {@Code "@HExpand"}, {@Code "@VExpand"}, or {@Code "@Scale"} in the
+form that works out its own scale factor. Spanning symbols
+({@Code "@StartHSpan"}, {@Code "@StartVSpan"} etc.) work well in header
+row formats, however.
+@PP
+Header rows have some other peculiarities, not likely to trouble
+the ordinary user but worth pointing out. Header rows are taken
+account of by Lout when deciding column widths, whether they are
+actually printed or not. Basser Lout copies running header rows
+into the table after each page break, with no check on whether the
+next page has enough space to accommodate them, so if your running
+headers are so high that there is no room for ordinary rows on the
+page after they are inserted, then the document will never end.
+@End @Section
diff --git a/doc/doc/user/tbl_plai b/doc/doc/user/tbl_plai
new file mode 100644
index 0000000..12ac289
--- /dev/null
+++ b/doc/doc/user/tbl_plai
@@ -0,0 +1,94 @@
+@Section
+ @Title { Plain text tables }
+ @Tag { tbl_plai }
+@Begin
+@PP
+@Code "@Tbl" changes the default values of several options when
+printing plain text (Section {@NumberOf plain}):
+@ID @OneRow @Code @Verbatim {
+@Tbl
+ marginvertical { 2f }
+ marginhorizontal { 2s }
+ rulehorizontalwidth { 1f }
+ ruleverticalwidth { 1s }
+ rulehorizontalgap { 0f }
+ ruleverticalgap { 0s }
+}
+When using plain text it is best to make vertical distances whole
+multiples of {@Code "1f"}, and horizontal distances whole multiples of
+{@Code "1s"}, since this avoids fractional spacing which cannot be
+successful in plain text files and produces quite messy results.
+If this is done, the results can be good:
+tables. @RawIndex { tables }
+tables.plaintext @SubIndex { plain text output }
+plain.text.tables @Index { plain text tables }
+@CD @OneRow 0.9 @Scale 1.0fx @Break @F @Verbatim {
+...................................................
+. . .
+. Johnson . Johnson suddenly uttered, in .
+. suddenly . a strong determined tone, an .
+. uttered, . apophegm, at which many will .
+. in a strong . start: `Patriotism is the .
+. determined . last refuge of a scoundrel.' .
+. tone, an . .
+. apophegm, at . .
+. which many ..................................
+. will start: . . .
+. `Patriotism . Johnson . Johnson .
+. is the last . suddenly . suddenly .
+. refuge of a . uttered, . uttered, .
+. scoundrel.' . in a strong . in a strong .
+. . determined . determined .
+. . tone, an . tone, an .
+. . apophegm, at . apophegm, at .
+. . which many . which many .
+. . will start: . will start: .
+. . `Patriotism . `Patriotism .
+. . is the last . is the last .
+. . refuge of a . refuge of a .
+. . scoundrel.' . scoundrel.' .
+. . . .
+. . . .
+.................................. .
+. . .
+. Johnson suddenly uttered, in . .
+. a strong determined tone, an . .
+. apophegm, at which many will . .
+. start: `Patriotism is the . .
+. last refuge of a scoundrel.' . .
+. . .
+. . .
+...................................................
+}
+This table was produced by a separate run of Lout and pasted into this
+document.
+@PP
+A @Code ruleplainchar option for changing the character used to
+tables. @RawIndex { tables }
+tables.ruleplainchar @SubIndex { @Code "ruleplainchar" option }
+ruleplainchar.tables @Index { @Code "ruleplainchar" option (tables) }
+draw rules. For example,
+@ID @Code @Verbatim {
+@Tbl
+ ruleplainchar { - }
+}
+would be good if you draw only horizontal rules. This option can be
+set anywhere as usual.
+@PP
+If you use rules it is worth pondering the implications of the last
+part of Section {@NumberOf tbl_rule}. Right and below rules are
+drawn outside the boundary of the cell, which is unimportant in
+ordinary output, but means that they will appear one space to the
+right and one line below the cell in plain text output. This explains
+the slight asymmetry in the example above; you can correct it with
+@ID @Code @Verbatim {
+@Tbl
+ marginright { 1s }
+ marginbelow { 1f }
+}
+but rules at the extreme right of the page will still go off the edge,
+and rules below the last line will bump into whatever follows the table.
+The first can be fixed by not using full width tables with right rules;
+the second by inserting an extra @Code "@DP" after a table that ends
+with a below rule.
+@End @Section
diff --git a/doc/doc/user/tbl_rows b/doc/doc/user/tbl_rows
new file mode 100644
index 0000000..bbc620a
--- /dev/null
+++ b/doc/doc/user/tbl_rows
@@ -0,0 +1,64 @@
+@Section
+ @Title { Changing the appearance of rows }
+ @Tag { tbl_rows }
+@Begin
+@PP
+We've seen that the @Code aformat option of @Code "@Tbl" determines the
+format of the rows introduced by the @Code "@Rowa" symbol. There are
+eight row format options: {@Code aformat},
+tables. @RawIndex { tables }
+tables.row.formats @SubIndex { row formats }
+row.formats @Index { row formats in tables }
+{@Code bformat}, and so on up to {@Code hformat}, and for each there
+is a corresponding {@Code "@Row"} symbol: {@Code "@Rowa"}, {@Code "@Rowb"},
+and so on:
+@ID @OneRow @Code @Verbatim {
+@Tbl
+ aformat { @Cell @I A | @Cell @I B }
+ bformat { @Cell A | @Cell B }
+{
+@Rowa
+ A { Name }
+ B { Nationality }
+@Rowb
+ A { Austen }
+ B { English }
+@Rowb
+ A { Balzac }
+ B { French }
+}
+}
+The result of this is
+@CD @OneRow @Tbl
+ aformat { @Cell @I A | @Cell @I B }
+ bformat { @Cell A | @Cell B }
+{
+@Rowa
+ A { Name }
+ B { Nationality }
+@Rowb
+ A { Austen }
+ B { English }
+@Rowb
+ A { Balzac }
+ B { French }
+}
+The first row, being a {@Code "@Rowa"}, is formatted using
+{@Code aformat}; the others, being {@Code "@Rowb"} symbols, are
+formatted using {@Code bformat}.
+@PP
+In addition to the eight @Code format options of {@Code "@Tbl"}, it is
+possible to specify the format of a row at the row itself, using the
+tables. @RawIndex { tables }
+tables.format.option @SubIndex { @Code "format" option }
+format.tables @Index { @Code "format" option (tables) }
+@Code "@Row" symbol like this:
+@ID @OneRow @Code @Verbatim {
+@Row
+ format { @Cell @B A | @Cell paint { lightgrey } B }
+ A { ... }
+ B { ... }
+}
+All formats must contain the same number of cells, otherwise the table
+will not be rectangular.
+@End @Section
diff --git a/doc/doc/user/tbl_rule b/doc/doc/user/tbl_rule
new file mode 100644
index 0000000..63cdb3c
--- /dev/null
+++ b/doc/doc/user/tbl_rule
@@ -0,0 +1,204 @@
+@Section
+ @Title { Rules }
+ @Tag { tbl_rule }
+@Begin
+@PP
+There is a @Code "rule" option for drawing a rule around a cell:
+tables. @RawIndex { tables }
+tables.rule @SubIndex { @Code "rule" options }
+rule.tables @Index { @Code "rule" options (tables) }
+@ID @OneRow @Code "@Cell rule { yes }"
+Other values are {@Code no} (the default),
+{@Code single} (the same as {@Code yes}), and {@Code double} (for a
+double rule).
+@PP
+There are @Code "rulehorizontal" and @Code "rulevertical" options which
+draw only horizontal or vertical rules, and also {@Code "ruleabove"},
+{@Code "rulebelow"}, {@Code "ruleleft"}, and {@Code "ruleright"} options:
+@ID @OneRow @Code @Verbatim {
+@Tbl
+ aformat { @Cell A | @Cell B }
+{
+@Rowa
+ ruleabove { yes }
+ A { Commercial property }
+ B { 10% }
+@Rowa
+ A { Stock market }
+ B { 15% }
+ rulebelow { yes }
+}
+}
+produces
+@CD @OneRow @Tbl
+ aformat { @Cell A | @Cell B }
+{
+@Rowa
+ ruleabove { yes }
+ A { Commercial property }
+ B { 10% }
+@Rowa
+ A { Stock market }
+ B { 15% }
+ rulebelow { yes }
+}
+These options take the same values as {@Code "rule"}, but draw
+along only one or two of the four edges.
+@PP
+Other options control the appearance of rules. Here they are with their
+default values:
+@ID @OneRow @Code @Verbatim {
+@Tbl
+ rulewidth { 0.05f }
+ rulegap { 0.15f }
+ rulecolour { black }
+}
+These say that rules are to be @Code "0.05f" wide (thick), double rules
+are to appear @Code "0.15f" apart, and the colour of rules is to be black.
+Once again, more specific versions of these symbols exist for controlling
+above, below, left, and right rules:
+@ID @OneRow @Code @Tbl
+ aformat { @Cell ml { 0i } A | @Cell B | @Cell C }
+ marginvertical { 0.5vx }
+{
+@Rowa
+ A { rulehorizontalwidth }
+ B { rulehorizontalgap }
+ C { rulehorizontalcolour }
+@Rowa
+ A { ruleabovewidth }
+ B { ruleabovegap }
+ C { ruleabovecolour }
+@Rowa
+ A { rulebelowwidth }
+ B { rulebelowgap }
+ C { rulebelowcolour }
+@Rowa
+ A { ruleverticalwidth }
+ B { ruleverticalgap }
+ C { ruleverticalcolour }
+@Rowa
+ A { ruleleftwidth }
+ B { ruleleftgap }
+ C { ruleleftcolour }
+@Rowa
+ A { rulerightwidth }
+ B { rulerightgap }
+ C { rulerightcolour }
+}
+All these options have alternative, abbreviated names; and @Code { colour }
+may be spelt @Code { color } wherever it appears. Section
+{@NumberOf tbl_summ} has a complete summary of all spellings of all
+options.
+@PP
+To clarify exactly where the rules are drawn, let's start with
+a cell with no rules at all:
+@CD @Tbl
+ mv { 0i }
+ aformat { @Cell width { 3c } height { 1.2c } paint { lightgrey } A }
+{
+@Rowa
+}
+Above rules and left rules are drawn within the cell boundary, just
+touching it, with any above rule overstriking any left rule:
+@CD { @Tbl
+ mv { 0i }
+ aformat { @Cell width { 3c } height { 1.2c } paint { lightgrey } A }
+{
+@Rowa
+}
+@Background @Tbl
+ mv { 0i }
+ aformat { @Cell width { 3c } height { 1.2c } A }
+ ruleleft { yes }
+ ruleabove { yes }
+ rulehorizontalwidth { 0.8v }
+ ruleverticalwidth { 0.5v }
+ ruleverticalcolour { grey }
+ rulehorizontalcolour { black }
+{
+@Rowa
+}
+}
+Below and right rules are drawn just outside the boundary of the
+cell, also touching it:
+@CD @Tbl mv { 0i } aformat { @Cell A | @Cell | @Cell B }
+{
+@Rowa
+ A {
+ @Tbl
+ mv { 0i }
+ aformat { @Cell width { 3c } height { 1.2c } paint { lightgrey } A }
+ {
+ @Rowa
+ }
+ @Background
+ @Tbl
+ mv { 0i }
+ aformat { @Cell width { 3c } height { 1.2c } A }
+ rulebelow { yes }
+ rulehorizontalwidth { 0.8v }
+ ruleverticalwidth { 0.5v }
+ ruleverticalcolour { grey }
+ rulehorizontalcolour { black }
+ {
+ @Rowa
+ }
+ }
+ B {
+ @Tbl
+ mv { 0i }
+ aformat { @Cell width { 3c } height { 1.2c } paint { lightgrey } A }
+ {
+ @Rowa
+ }
+ @Background
+ @Tbl
+ mv { 0i }
+ aformat { @Cell width { 3c } height { 1.2c } A }
+ ruleright { yes }
+ rulehorizontalwidth { 0.8v }
+ ruleverticalwidth { 0.5v }
+ ruleverticalcolour { grey }
+ rulehorizontalcolour { black }
+ {
+ @Rowa
+ }
+ }
+}
+@DP
+When a right rule is present, any above and below rules are extended
+by the width of the right rule, and they overstrike it:
+@CD {
+@Tbl
+ mv { 0i }
+ aformat { @Cell width { 3c } height { 1.2c } paint { lightgrey } A }
+{
+@Rowa
+}
+@Background
+@Tbl
+ mv { 0i }
+ aformat { @Cell width { 3c } height { 1.2c } A }
+ ruleabove { yes }
+ ruleright { yes }
+ rulebelow { yes }
+ rulehorizontalwidth { 0.8v }
+ ruleverticalwidth { 0.5v }
+ ruleverticalcolour { grey }
+ rulehorizontalcolour { black }
+{
+@Rowa
+}
+}
+@DP
+(These diagrams were produced by @Code "@Tbl" itself, using horizontal
+rules of width @Code 0.8v drawn in black, and vertical rules of width
+@Code 0.5v drawn in grey.) These arrangements ensure that even thick
+rules produce clean corners, and also that a right rule and a neighbouring
+left rule exactly overstrike each other, as do a below rule and its
+neighbouring above rule.
+# @PP
+# For information about rules in plain text tables, consult Section
+# {@NumberOf tbl_plai}.
+@End @Section
diff --git a/doc/doc/user/tbl_setu b/doc/doc/user/tbl_setu
new file mode 100644
index 0000000..db5c400
--- /dev/null
+++ b/doc/doc/user/tbl_setu
@@ -0,0 +1,63 @@
+@Section
+ @Title { Changing the overall format }
+ @Tag { tbl_setu }
+@Begin
+@PP
+All of the options apart from the @Code format options can be changed
+tables. @RawIndex { tables }
+tables.setup @SubIndex { setup file }
+setup.files. @RawIndex { setup files }
+setup.files.for.tables @SubIndex { for tables }
+in the @Code { tbl } setup file, in which case the new values become
+the default values for every table in the document, which promotes
+consistency and can save you a lot of time. The first step is to
+obtain your own copy of the setup file, @Code { tbl }, from the Lout
+system include directory. You can find out where that is by typing
+@ID @Code { lout -V }
+This prints out various things about Lout. Supposing that it says
+that the Lout system include directory is @Code { "/usr/lout/include" }, for
+example, you can copy the setup file into your current directory,
+renaming it @Code { mytbl }, with the Unix command
+@ID @Code "cp /usr/lout/include/tbl mytbl"
+or its equivalent on your system. You will also need to make
+@Code { mytbl } writable.
+@PP
+The next step is to replace the @Code "@SysInclude { tbl }" line at the
+start of your document with @Code { "@Include { mytbl }" }. This causes
+Lout to read your copy of the setup file, not the one in the system
+include directory. Since the two files are currently identical, this
+has changed nothing so far, but now you can change the options within
+@Code mytbl and the changes will affect your document.
+@PP
+Your copy of the setup file has some lines beginning with @Code "#"
+that are ignored by Lout, and then it has @Code { "@SysInclude { tblf }" }.
+This line tells Lout to read file @Code tblf which contains the definition
+of the @Code tbl package, so it should not be changed. After it comes
+the @Code "@TblSetup" @Code "@Use" clause, which looks like this:
+@ID @OneRow @Code @Verbatim {
+@Use { @TblSetup
+ # paint { none }
+ # font { }
+ # break { }
+}
+}
+Only a few of the options are shown here. To change an option, delete
+the @Code "#" and change the value. For example, suppose you want all
+table entries two points smaller than the surrounding text:
+@ID @OneRow @Code @Verbatim {
+@Use { @TblSetup
+ # paint { none }
+ font { -2p }
+ # break { }
+}
+}
+Relative font sizes are available anywhere, not just in setup files
+(Section {@NumberOf fonts}).
+@PP
+Some setup file options contain values which use the @Code "@OrIfPlain"
+symbol:
+@ID @Code "marginvertical { 0.3f @OrIfPlain 1f }"
+This means that the value of @Code marginvertical is to be @Code "0.3f"
+usually, but @Code 1f in plain text documents. Feel free to leave these
+symbols there when you change a value, or delete them if you prefer.
+@End @Section
diff --git a/doc/doc/user/tbl_span b/doc/doc/user/tbl_span
new file mode 100644
index 0000000..f6757c9
--- /dev/null
+++ b/doc/doc/user/tbl_span
@@ -0,0 +1,206 @@
+@Section
+ @Title { Spanning columns and rows }
+ @Tag { tbl_span }
+@Begin
+@PP
+To make a cell span across several columns, precede the @Code "@Cell"
+tables. @RawIndex { tables }
+tables.span @SubIndex { spanning columns and rows }
+spanning.columns @Index { spanning columns and rows in tables }
+symbol with @Code "@StartHSpan" and replace each spanned cell's
+tables. @RawIndex { tables }
+tables.starthspan @SubIndex { @Code "@StartHSpan" option }
+starthspan.tables @Index { @Code "@StartHSpan" option (tables) }
+@Code "@Cell" symbol with {@Code "@HSpan"}, like this:
+tables. @RawIndex { tables }
+tables.hspan @SubIndex { @Code "@HSpan" option }
+hspan.tables @Index { @Code "@HSpan" option (tables) }
+@ID @OneRow -1px @Break @Code @Verbatim {
+@Tbl
+ rule { yes }
+ aformat { @StartHSpan @Cell indent { ctr } @B A | @HSpan | @HSpan }
+ bformat { @Cell A | @Cell B | @Cell C }
+{
+@Rowa
+ A { Some famous authors }
+@Rowb
+ A { Austen }
+ B { Chaucer }
+ C { Donne }
+@Rowb
+ A { Balzac }
+ B { Darwin }
+ C { Goethe }
+}
+}
+The result of this is
+@CD @OneRow @Tbl
+ rule { yes }
+ aformat { @StartHSpan @Cell indent { ctr } @B A | @HSpan | @HSpan }
+ bformat { @Cell A | @Cell B | @Cell C }
+{
+@Rowa
+ A { Some famous authors }
+@Rowb
+ A { Austen }
+ B { Chaucer }
+ C { Donne }
+@Rowb
+ A { Balzac }
+ B { Darwin }
+ C { Goethe }
+}
+We've used a sample of options to show how naturally these go with
+spanning cells: they apply to the whole cell as usual, whatever
+its extent. It is quite acceptable to span just some of the columns,
+not all of them; indeed, there may be no @Code "@HSpan" symbols at
+all, and then the cell just spans its own column, which sounds redundant
+but actually has a use (Section {@NumberOf tbl_alig}).
+@PP
+Spanning rows work in the same way; the spanning cell is preceded by
+{@Code "@StartVSpan"}, and the spanned cells are replaced by
+tables. @RawIndex { tables }
+tables.startvspan @SubIndex { @Code "@StartVSpan" option }
+startvspan.tables @Index { @Code "@StartVSpan" option (tables) }
+tables. @RawIndex { tables }
+tables.vspan @SubIndex { @Code "@VSpan" option }
+vspan.tables @Index { @Code "@VSpan" option (tables) }
+{@Code "@VSpan"}:
+@ID @OneRow -1px @Break @Code @Verbatim {
+@Tbl
+ rule { yes }
+ aformat { @StartVSpan @Cell @I A | @Cell B | @Cell C }
+ bformat { @VSpan | @Cell B | @Cell C }
+{
+@Rowa
+ A { Mathematics }
+ B { MATH 1001 }
+ C { Differential Calculus }
+@Rowb
+ B { MATH 1002 }
+ C { Linear Algebra }
+@Rowa
+ A { Computer Science }
+ B { COMP 1001 }
+ C { Introductory Programming }
+@Rowb
+ B { COMP 1002 }
+ C { Introductory Computer Science }
+}
+}
+The result of this is
+@CD @OneRow @Tbl
+ rule { yes }
+ aformat { @StartVSpan @Cell @I A | @Cell B | @Cell C }
+ bformat { @VSpan | @Cell B | @Cell C }
+{
+@Rowa
+ A { Mathematics }
+ B { MATH 1001 }
+ C { Differential Calculus }
+@Rowb
+ B { MATH 1002 }
+ C { Linear Algebra }
+@Rowa
+ A { Computer Science }
+ B { COMP 1001 }
+ C { Introductory Programming }
+@Rowb
+ B { COMP 1002 }
+ C { Introductory Computer Science }
+}
+Here is a notorious larger example, the `spiral':
+@ID @OneRow -1px @Break @Code @Verbatim {
+@QuotedDisplay @Tbl
+ rule { yes }
+{
+@Row
+ format { @StartVSpan @Cell A | @StartHSpan @Cell B | @HSpan }
+ A { @SomeText }
+ B { @SomeText }
+@Row
+ format { @VSpan | @Cell B | @StartVSpan @Cell C }
+ B { @SomeText }
+ C { @SomeText }
+@Row
+ format { @StartHSpan @Cell A | @HSpan | @VSpan }
+ A { @SomeText }
+}
+}
+The @Code "@SomeText" symbol produces a short paragraph of text. The
+result is
+@QD @Tbl
+ rule { yes }
+{
+@Row format { @StartVSpan @Cell A | @StartHSpan @Cell B | @HSpan }
+ A { @SomeText }
+ B { @SomeText }
+@Row format { @VSpan | @Cell B | @StartVSpan @Cell C }
+ B { @SomeText }
+ C { @SomeText }
+@Row format { @StartHSpan @Cell A | @HSpan | @VSpan }
+ A { @SomeText }
+}
+It is important when constructing mind-boggling tables like this one
+to ensure that every format has exactly the same number of @Code "|"
+symbols. Otherwise the number of columns will differ from row to row.
+The names given to the entries ({@Code "A"}, {@Code "B"}, {@Code "C"},
+etc.) are quite irrelevant: having a @Code "@Cell D" in one row and
+a @Code "@Cell D" in another does not mean that the cells will appear
+in the same column.
+@PP
+There is a @Code "@StartHVSpan" symbol which combines the effects
+tables. @RawIndex { tables }
+tables.starthvspan @SubIndex { @Code "@StartHVSpan" option }
+starthvspan.tables @Index { @Code "@StartHVSpan" option (tables) }
+of @Code "@StartHSpan" and {@Code "@StartVSpan"}. You need to
+use it in this arrangement:
+@ID @OneRow @Tbl
+ mv { 0.5vx }
+ aformat { @Cell @Code A | @Cell @Code B | @Cell @Code C }
+{
+@Rowa
+ A { "@StartHVSpan" }
+ B { "@HSpan" }
+ C { "@HSpan" }
+@Rowa
+ A { "@VSpan" }
+@Rowa
+ A { "@VSpan" }
+}
+The blank positions should be left empty. For example:
+@ID @OneRow @Code @Verbatim {
+@Tbl
+ rule { yes }
+ aformat { @Cell A | @Cell B | @Cell C | @Cell D }
+ bformat { @Cell A | @StartHVSpan @Cell i { ctr } iv { ctr } B | @HSpan | @Cell D }
+ cformat { @Cell A | @VSpan | | @Cell D }
+{
+@Rowa
+@Rowb
+ B { CPU }
+@Rowc
+@Rowa
+}
+}
+produces
+@CD @OneRow @Tbl
+ rule { yes }
+ strut { no }
+ aformat { @Cell A | @Cell B | @Cell C | @Cell D }
+ bformat { @Cell A | @StartHVSpan @Cell i { ctr } iv { ctr } B | @HSpan | @Cell D }
+ cformat { @Cell A | @VSpan | | @Cell D }
+{
+@Rowa
+@Rowb
+ B { CPU }
+@Rowc
+@Rowa
+}
+This example illustrates how Lout apportions space in the presence of
+spanning columns. If the spanning cell is naturally narrower than the
+cells it spans, it is widened to their size. If it is wider (as in
+the example above), then the last spanned cell is widened to take
+up the slack. This is why the third cell is wider than the second in the
+first row of this example.
+@End @Section
diff --git a/doc/doc/user/tbl_summ b/doc/doc/user/tbl_summ
new file mode 100644
index 0000000..259cf99
--- /dev/null
+++ b/doc/doc/user/tbl_summ
@@ -0,0 +1,272 @@
+@Section
+ @Title { Summary of options }
+ @Tag { tbl_summ }
+@Begin
+@PP
+This summary applies to all @Code "@Tbl" options except the @Code format
+tables. @RawIndex { tables }
+tables.summary @SubIndex { summary of all options }
+options described in Section {@NumberOf tbl_rows}. Here is the complete
+list of these options, one option per line, showing its alternative
+spellings, default values (PostScript and PDF, and plain text) from the setup
+file, and allowed range of values. Where one option is indented below
+another, it means that the indented option is a specialized version of
+the other, which affects its default value. For more on this see below.
+@DP
+@Tbl
+ marginvertical { 0.5vx }
+ aformat { @Cell ml { 0i } @Code A |
+ @Cell @Code B | @Cell @Code C | @Cell mr { 0i } D }
+ bformat { @Cell ml { 0i } indent { 1f } @Code A |
+ @Cell @Code B | @Cell @Code C | @Cell mr { 0i } D }
+ cformat { @Cell ml { 0i } indent { 2f } @Code A |
+ @Cell @Code B | @Cell @Code C | @Cell mr { 0i } D }
+ dfont { Italic }
+ dbreak { lines }
+ dformat { @Cell ml { 0i } A | @Cell B | @Cell C | @Cell mr { 0i } D }
+ fformat { @StartHSpan @Cell ml { 0i } @Code A |
+ @HSpan | @HSpan | @Cell mr { 0i } D }
+ gformat { @StartHSpan @Cell ml { 0i } indent { 1f } @Code A |
+ @HSpan | @HSpan | @Cell mr { 0i } D }
+ hformat { @StartHSpan @Cell ml { 0i } indent { 2f } @Code A |
+ @HSpan | @HSpan | @Cell mr { 0i } D }
+{
+@Rowd
+ A { Option names }
+ B { Default in
+PS, PDF }
+ C { Default in
+plain text }
+ D { Allowed values }
+ rulebelow { yes }
+@HeaderRowd
+ A { Option names (ctd.) }
+ B { Default in
+PS, PDF }
+ C { Default in
+plain text }
+ D { Allowed values }
+ rulebelow { yes }
+@Rowa
+ A { paint p }
+ B { none }
+ D { any colour from Section {@NumberOf colour} }
+@Rowa
+ A { texture t }
+ B { solid }
+ D { any texture from Section {@NumberOf textures} }
+@Rowa
+ A { background bg }
+ D { any object }
+@Rowa
+ A { font f }
+ D { any font e.g. @Code "Helvetica Slope -2p" }
+@Rowa
+ A { break b }
+ D { any break e.g. @Code "ragged nohyphen" }
+@Rowa
+ A { width w }
+ D { @Code "expand" or any length e.g. @Code 5c }
+@Rowa
+ A { height h }
+ D { any length e.g. @Code 3c }
+@Rowa
+ A { indent i }
+ B { @Code left }
+ D { {@Code left}, {@Code ctr}, {@Code align}, {@Code mctr}, {@Code right}, or any length }
+@Rowa
+ A { indentvertical iv }
+ B { @Code top }
+ D { {@Code top}, {@Code ctr}, {@Code align}, {@Code mctr}, {@Code foot}, or any length }
+@Rowa
+ A { strut s }
+ B { yes }
+ C { yes }
+ D { {@Code no}, {@Code yes}, or any length }
+@Rowa
+ A { struthorizontal sh }
+ B { no }
+ C { no }
+ D { {@Code no}, {@Code yes}, or any length }
+@Rowa
+ ma { 1v }
+ A { margin m }
+ B { }
+ C { }
+ D { any length }
+@Rowb
+ A { marginhorizontal mh }
+ B { 0.6f }
+ C { 2s }
+ D { any length }
+@Rowc
+ A { marginleft ml }
+ D { any length }
+@Rowc
+ A { marginright mr }
+ D { any length }
+@Rowb
+ A { marginvertical mv }
+ B { 0.3f }
+ C { 2f }
+ D { any length }
+@Rowc
+ A { marginabove ma }
+ D { any length }
+@Rowc
+ A { marginbelow mb }
+ D { any length }
+@Rowa
+ ma { 1v }
+ A { rule r }
+ B { no }
+ C { no }
+ D { {@Code no}, {@Code yes}, {@Code single}, or {@Code double} }
+@Rowb
+ A { rulehorizontal rh }
+ D { {@Code no}, {@Code yes}, {@Code single}, or {@Code double} }
+@Rowc
+ A { ruleabove ra }
+ D { {@Code no}, {@Code yes}, {@Code single}, or {@Code double} }
+@Rowc
+ A { rulebelow rb }
+ D { {@Code no}, {@Code yes}, {@Code single}, or {@Code double} }
+@Rowb
+ A { rulevertical rv }
+ D { {@Code no}, {@Code yes}, {@Code single}, or {@Code double} }
+@Rowc
+ A { ruleleft rl }
+ D { {@Code no}, {@Code yes}, {@Code single}, or {@Code double} }
+@Rowc
+ A { ruleright rr }
+ D { {@Code no}, {@Code yes}, {@Code single}, or {@Code double} }
+@Rowa
+ ma { 1v }
+ A { rulewidth rw }
+ B { 0.05f }
+ D { any length }
+@Rowb
+ A { rulehorizontalwidth rhw }
+ C { 1f }
+ D { any length }
+@Rowc
+ A { ruleabovewidth raw }
+ D { any length }
+@Rowc
+ A { rulebelowwidth rbw }
+ D { any length }
+@Rowb
+ A { ruleverticalwidth rvw }
+ C { 1s }
+ D { any length }
+@Rowc
+ A { ruleleftwidth rlw }
+ D { any length }
+@Rowc
+ A { rulerightwidth rrw }
+ D { any length }
+@Rowa
+ ma { 1v }
+ A { rulegap rg }
+ B { 0.15f }
+ D { any length }
+@Rowb
+ A { rulehorizontalgap rhg }
+ C { 0f }
+ D { any length }
+@Rowc
+ A { ruleabovegap rag }
+ D { any length }
+@Rowc
+ A { rulebelowgap rbg }
+ D { any length }
+@Rowb
+ A { ruleverticalgap rvg }
+ C { 0s }
+ D { any length }
+@Rowc
+ A { ruleleftgap rlg }
+ D { any length }
+@Rowc
+ A { rulerightgap rrg }
+ D { any length }
+@Rowa
+ ma { 1v }
+ A { rulecolour rulecolor rc }
+ B { black }
+ D { any colour from Section {@NumberOf colour} }
+@Rowg
+ A { rulehorizontalcolour rulehorizontalcolor rhc }
+ D { any colour from Section {@NumberOf colour} }
+@Rowh
+ A { ruleabovecolour ruleabovecolor rac }
+ D { any colour from Section {@NumberOf colour} }
+@Rowh
+ A { rulebelowcolour rulebelowcolor rbc }
+ D { any colour from Section {@NumberOf colour} }
+@Rowg
+ A { ruleverticalcolour ruleverticalcolor rvc }
+ D { any colour from Section {@NumberOf colour} }
+@Rowh
+ A { ruleleftcolour ruleleftcolor rlc }
+ D { any colour from Section {@NumberOf colour} }
+@Rowh
+ A { rulerightcolour rulerightcolor rrc }
+ D { any colour from Section {@NumberOf colour} }
+@Rowa
+ ma { 1v }
+ A { ruleplainchar rpc }
+ C { . }
+ D { any simple word e.g. @Code + }
+ rulebelow { yes }
+@EndHeaderRow
+}
+@DP
+There are seven places where these options may be given, counting the
+setup file (Section {@NumberOf tbl_setu}). To make it clear that this
+summary applies to any of these options, we illustrate the seven places
+with a fictitious option called {@Code option}:
+@ID @OneRow @Code @Verbatim {
+@Use { @TblSetup
+ option { 1 }
+}
+
+@Tbl
+ option { 2 }
+ aoption { 3 }
+ aformat { @Cell option { 4 } A }
+{
+ @Rowa
+ option { 5 }
+ @Row
+ option { 6 }
+ format { @Cell option { 7 } A }
+}
+}
+Each occurrence of @Code option is of course optional. If there are
+none, the default value given in the table above applies. For any other
+combination of absent and present options, the value that applies is the
+present and relevant one with the largest number in the illustration
+just above. But before applying this rule, any general options must be
+thought of as being replaced by their more specialized versions:
+@ID @Code "rulehorizontal { yes }"
+is equivalent to
+@ID @Code @Verbatim {
+ruleabove { yes }
+rulebelow { yes }
+}
+for example. Conflicts are resolved in the logical way:
+@ID @Code @Verbatim {
+margin { 0.5f }
+marginleft { 0.0f }
+}
+is equivalent to the four specialized options
+@ID @Code @Verbatim {
+marginabove { 0.5f }
+marginbelow { 0.5f }
+marginleft { 0.0f }
+marginright { 0.5f }
+}
+General options are really just abbreviations for sets of specialized
+options.
+@End @Section
diff --git a/doc/doc/user/tbl_widt b/doc/doc/user/tbl_widt
new file mode 100644
index 0000000..f2d799d
--- /dev/null
+++ b/doc/doc/user/tbl_widt
@@ -0,0 +1,96 @@
+@Section
+ @Title { Cell width and height }
+ @Tag { tbl_widt }
+@Begin
+@PP
+Lout is quite good a choosing suitable widths for cells. It leaves
+column.width @RawIndex { column width }
+column.width.in.tables @SubIndex { in tables }
+narrow cells at their natural width, then uses paragraph breaking to
+reduce the wider cells to a common width which is as large as
+the available space allows:
+@QD @OneRow @Tbl
+ aformat { @Cell @I A | @Cell B | @Cell C }
+{
+@Rowa
+ A { Acacia }
+ B {
+Shrub or small tree with grey-green foliage and brilliant
+yellow blossom in late winter.
+}
+ C {
+Distributed widely throughout Australia except in the most arid
+parts; many varieties.
+}
+}
+This usually looks good, but if you need something else, there is
+the @Code width option:
+tables. @RawIndex { tables }
+tables.width @SubIndex { @Code "width" option }
+width. @RawIndex { @Code "width" option }
+width.in.tables @SubIndex { in tables }
+@ID @OneRow @Code "@Cell width { 3c }"
+Here we have asked for a cell width of three centimetres; this includes
+the cell margins. When using @Code width to fine-tune the appearance of
+a table wide enough to require paragraph breaking, it is best to use
+@Code width to make cells narrower, not wider.
+@PP
+Regrettably, there is no way to request that several cells in a row be
+given a common width equal to the width of the widest. One simple way to
+approximate this is to give these cells the same @Code width value. The
+@Code width option also has a special value, {@Code "expand"}. All
+cells with @Code "width { expand }" are assigned a common width
+tables. @RawIndex { tables }
+tables.expand @SubIndex { @Code expand cell width }
+expand.cell.width @Index { @Code expand cell width in tables }
+equal to the maximum amount permitted by the available space. For example,
+@ID @OneRow @Code @Verbatim {
+@QuotedDisplay @Tbl
+ width { expand }
+ paint { lightgrey }
+ aformat { @Cell A | @Cell B | @Cell C }
+{
+@Rowa
+ A { 23.56 }
+ B { 98.76 }
+ C { 65.00 }
+}
+}
+has result
+@QuotedDisplay @Tbl
+ width { expand }
+ paint { lightgrey }
+ aformat { @Cell A | @Cell B | @Cell C }
+{
+@Rowa
+ A { 23.56 }
+ B { 98.76 }
+ C { 65.00 }
+}
+We have used our usual trick of making the option apply to several cells
+by moving it to a more general level, in this case to {@Code "@Tbl"}.
+The available space can be reduced using the @Code "@Wide" symbol; if
+we replace @Code "@QuotedDisplay @Tbl" in the example above with
+@ID @OneRow @Code "@CentredDisplay 4i @Wide @Tbl"
+the result will be
+@CentredDisplay 4i @Wide @Tbl
+ width { expand }
+ paint { lightgrey }
+ aformat { @Cell A | @Cell B | @Cell C }
+{
+@Rowa
+ A { 23.56 }
+ B { 98.76 }
+ C { 65.00 }
+}
+with the total table width reduced to four inches.
+@PP
+There is an analogous @Code height option which makes a cell take on
+tables. @RawIndex { tables }
+tables.height @SubIndex { @Code height option }
+height. @RawIndex { @Code "height" option }
+height.in.tables @SubIndex { in tables }
+a particular fixed height, again including margins. Make sure there
+is enough height in the cell to hold its entry when you use this
+option. The @Code "expand" value is not available for height.
+@End @Section
diff --git a/doc/doc/user/typ b/doc/doc/user/typ
new file mode 100644
index 0000000..aaa1e36
--- /dev/null
+++ b/doc/doc/user/typ
@@ -0,0 +1,36 @@
+@Chapter
+ @Title { Types of Documents }
+ @Tag { types }
+@Begin
+@LP
+Different types of documents have different features: title pages in
+books, abstracts in technical reports, and so on. Lout offers five
+@I { document types } with the appropriate features: ordinary
+document.types @Index { document types }
+documents, technical reports, books, overhead transparencies, and
+stand-alone illustrations. The features of all other chapters are
+available within each document type, but the features of one type
+are not available within other types.
+# @LP
+# Particular types of documents have specialized formatting requirements:
+# title pages in books, abstracts in technical reports, and so on. Lout
+# provides a range of @I { document types } with the appropriate
+# specialized features for
+# document.types @Index { document types }
+# each type.
+# @PP
+# There are five types: ordinary documents, technical reports,
+# books, overhead transparencies, and stand-alone illustrations. The
+# features of all other chapters are available within each document type,
+# but the features of one type are not available within other types.
+@BeginSections
+@Include { typ_ordi }
+@Include { typ_repo }
+@Include { typ_book }
+@Include { typ_over }
+@Include { typ_illu }
+@Include { typ_plai }
+@Include { typ_apdf }
+@Include { typ_orga }
+@EndSections
+@End @Chapter
diff --git a/doc/doc/user/typ_apdf b/doc/doc/user/typ_apdf
new file mode 100644
index 0000000..6485a8e
--- /dev/null
+++ b/doc/doc/user/typ_apdf
@@ -0,0 +1,47 @@
+@Section
+ @Title { PDF (Adobe Portable Document Format) documents }
+ @Tag { pdf }
+@Begin
+@PP
+You can get Lout to produce PDF (Adobe Portable Document Format) output as
+an alternative to PostScript, by adding @Code "-PDF" to the command line
+like this:
+pdf. @Index { PDF documents }
+@ID @Code "lout -PDF simple > simple.pdf"
+No other changes are required.
+@PP
+When viewed with a PDF viewer, entries in tables of contents and indexes
+can be clicked on and this transports the viewer to the part of the document
+referenced by the link, as described in
+cross @CrossLink { Section {@NumberOf cross} }. Recent versions of PostScript
+support this feature too, via the @I pdfmark feature, and Lout's PostScript
+contains links expressed in this way. Unfortunately, few PostScript viewers
+know how to handle these links; those that don't just ignore them.
+@PP
+Regrettably, the PDF output produced by Lout is inferior at graphics: the
+advanced features of the @Code "@Diag" and @Code "@Graph" packages do not
+produce any output. One can still format documents that contain them, but
+the results are disappointing. The only way to get the best of everything
+is to produce PostScript, and then either pass it through a `distillation'
+program to produce PDF, or else view it with a PostScript viewer that
+understands links.
+@PP
+When generating PostScript for distillation to PDF, the
+docinfo. @Index @Code "@DocInfo"
+@Code "@DocInfo" symbol may be useful. Placed anywhere in the
+document, it generates PostScript which causes the PDF to contain
+a `document info dictionary' containing the author of the
+document, its title, and some keywords:
+@ID @Code @Verbatim {
+@DocInfo
+ author { Jeffrey H. Kingston }
+ title { A User's Guide to the Lout Document Formatting System }
+ keywords { Lout, PostScript, PDF }
+}
+The values of the options are restricted to sequences of simple words,
+as shown, since this is all that PDF document info dictionaries may
+contain. All three options are optional; if one is omitted, the
+dictionary will simply not have the corresponding entry, which is
+legal in PDF. There is no way to have the author and title taken
+automatically from @Code "@Author" and @Code "@Title" options.
+@End @Section
diff --git a/doc/doc/user/typ_book b/doc/doc/user/typ_book
new file mode 100644
index 0000000..fa5d33d
--- /dev/null
+++ b/doc/doc/user/typ_book
@@ -0,0 +1,523 @@
+@Section
+ @Title { Books }
+ @Tag { books }
+@Begin
+@PP
+To produce a book, start off with the @Code book setup file and the
+books. @Index { books }
+book. @Index @Code "@Book"
+@Code "@Book" symbol:
+@ID @OneRow -1px @Break @Code {
+"@SysInclude { book }"
+"@Book"
+" @Title {}"
+" @Author {}"
+" @Edition {}"
+" @Publisher {}"
+" @BeforeTitlePage {}"
+" @OnTitlePage {}"
+" @AfterTitlePage {}"
+" @AtEnd {}"
+" @InitialFont { Times Base 12p }"
+" @InitialBreak { adjust 1.2fx hyphen }"
+" @InitialSpace { lout }"
+" @InitialLanguage { English }"
+" @PageOrientation { Portrait }"
+" @PageHeaders { Titles }"
+" @ColumnNumber { 1 }"
+" @FirstPageNumber { 1 }"
+" @IntroFirstPageNumber { 1 }"
+" @OptimizePages { No }"
+" @GlossaryText { @Null }"
+" @IndexText { @Null }"
+" @IndexAText { @Null }"
+" @IndexBText { @Null }"
+"//"
+}
+This shows all the options of @Code "@Book" with their default values. As
+usual, these options may be given in any order, and only those
+to be changed need be given at all. The meaning of the
+@Code "//" symbol after the last option is beyond our scope, but total
+disaster will ensue if it is forgotten.
+@PP
+The {@Code "@Title"}, {@Code "@Author"}, and {@Code "@Edition"} options
+will appear on the title page, in the @Code "clines" paragraph breaking
+style which centres each line (Section {@NumberOf paras}). The
+@Code "@Publisher" option will appear at the foot of the title page.
+@PP
+The {@Code "@BeforeTitlePage"} option will come out on the page (or
+pages) preceding the title page. This is where publishers
+advertise other books of a similar kind, perhaps from a series.
+@PP
+If {@Code "@OnTitlePage"} is given it will replace the title page
+that usually appears, superseding the {@Code "@Title"}, {@Code "@Author"},
+{@Code "@Edition"}, and @Code "@Publisher" options in the process.
+@PP
+The {@Code "@AfterTitlePage"} option will come out on the page
+(or pages) following the title page. This is where publishers
+traditionally put copyright notices, information about production,
+and cataloguing-in-publication data. If this option is empty or
+omitted, there will be no such pages.
+@PP
+The {@Code "@AtEnd"} option will come out on a single unnumbered page
+with no page headers or footers, and using the same margins as for even
+pages, after the very last page of the book; even after the index if
+there is one. It is intended to make it possible to include a back
+cover, so @Code "@PageOf last.page" (Section {@NumberOf cross}) does
+not take account of any @Code "@AtEnd" page. (To make a colophon,
+which occupies any number of numbered pages after the index, consult
+the @Code "@Colophon" symbol below.)
+@PP
+The remaining options are a selection of setup file options (Section
+{@NumberOf setup}) that frequently need to be changed. If your changes
+to the overall formatting are confined to these options, you can change
+them here and avoid having your own setup file. If you already have
+your own setup file, change them in either place and omit them in
+the other.
+@PP
+@Code "@InitialFont" is the font of the bulk of the book,
+and should contain a family, a face, and a size. The default
+value selects the Times family, the Base face, and the 12 point size.
+@PP
+@Code "@InitialBreak" controls the behaviour of paragraph breaking in
+the bulk of the book. It should have three parts: a paragraph
+breaking style ({@Code adjust}, {@Code ragged}, etc.), an inter-line
+spacing ({@Code "1.2fx"} for single spacing, {@Code "2.4fx"} for
+double spacing, and so on), and either @Code "hyphen" or
+@Code "nohyphen" for turning hyphenation on or off. It may also
+have @Code "nobreakfirst" or @Code "nobreaklast" (or both), meaning
+to disallow a page break after the first line of a paragraph, or
+before the last, respectively.
+@PP
+@Code "@InitialSpace" determines how Lout treats white space
+between two objects, as described in Section
+{@NumberOf white}. @Code "@InitialLanguage" determines the
+language of the bulk of the book.
+@PP
+@Code "@PageOrientation" determines the orientation of the page. Its
+value may be {@Code Portrait} (the default), {@Code Landscape},
+{@Code ReversePortrait}, or {@Code ReverseLandscape}. See
+Section {@NumberOf pagesize} for further details.
+@PP
+@Code "@PageHeaders" determines the appearance of page headers and
+footers. Its value may be {@Code None},
+{@Code Simple}, {@Code Titles}, or {@Code NoTitles}. Section
+{@NumberOf headers} has the details, but just briefly, {@Code None}
+and {@Code Simple} are not really suitable for books, @Code Titles
+produces full running titles as in the present document, and
+@Code "NoTitles" is like @Code "Titles" with the running titles
+omitted, leaving just the page numbers.
+@PP
+@Code "@ColumnNumber" is the number of columns per page in the bulk of
+the book, and may be anything from {@Code 1} (the default value) to
+{@Code 10}. Irrespective of its value, all prefatory material, all
+chapter and appendix headings, and all figures and tables will be
+printed full width. There is a separate @Code "@IndexColumnNumber"
+option in the setup file which determines the number of columns in
+the index (Section {@NumberOf indexes}).
+@PP
+@Code "@FirstPageNumber" is the page number to be given to the first
+non-introductory page. @Code "@IntroFirstPageNumber" is the
+page number of the first introductory page; it will usually appear
+in Roman but must be given in Arabic.
+@PP
+Lout ordinarily places lines onto a page until space runs out, then moves
+to the next page and so on. This often produces ugly empty spaces at
+the bottoms of pages preceding large unbreakable displays. Setting the
+@Code "@OptimizePages" option to {@Code "Yes"} causes Lout to examine the
+overall situation and try to minimize the ugliness, using the @TeX
+optimal paragraph breaking algorithm. It takes two runs to do this,
+with intermediate results stored in Lout's cross reference database
+(Section {@NumberOf cross}); so deleting file {@Code lout.li} will reset
+it, which might be wise after major changes. It is possible for the
+optimizer to cycle, never settling on a single final best version; this
+is usually caused by footnotes or floating figures inserted at points
+which end up near page boundaries.
+@PP
+The {@Code "@GlossaryText"}, {@Code "@IndexText"}, {@Code "@IndexAText"},
+and {@Code "@IndexBText"} symbols allow you to insert some arbitrary
+text after the title of the glossary, index, etc., and before the
+entries.
+@PP
+After the compulsory @Code "//" comes an optional preface:
+preface. @Index @Code "@Preface"
+@ID @OneRow @Code {
+"@Preface"
+" @Title { About this book }"
+"@Begin"
+"@PP"
+"..."
+"@End @Preface"
+}
+Since the title of most prefaces is simply Preface, that is the default
+value in English of the @Code "@Title" option. Within the preface,
+just before {@Code "@End @Preface"}, there may optionally be a sequence
+of sub-prefaces enclosed in @Code "@BeginSubPrefaces" and
+{@Code "@EndSubPrefaces"}, like this:
+@ID @OneRow @Code @Verbatim {
+@BeginSubPrefaces
+@SubPreface ... @End @SubPreface
+@SubPreface ... @End @SubPreface
+@EndSubPrefaces
+}
+After the preface there will automatically appear a table of contents
+listing the introduction, chapters, sections, subsections, appendices,
+sub-appendices, bibliography, and index as appropriate.
+@PP
+The pages up to this point will be numbered in lower case Roman
+numerals; subsequent pages will be numbered in Arabic starting from
+the @Code "@FirstPageNumber" option of {@Code "@Book"}. There is
+a setup file option for changing this to a single numbering sequence
+(see below).
+@PP
+Next comes an optional abbreviations sections, exactly like the
+preface except that its name is @Code "@Abbreviations" and the
+abbreviations. @Index @Code "@Abbreviations"
+default title in English is Abbreviation. There are no
+sub-abbreviations, and no support for what goes inside; you need to
+use a list or table to lay out the abbreviations, in the usual way.
+@PP
+Next comes an optional introduction, exactly like the preface except that
+its name is @Code "@Introduction" and the default title in English is
+introduction. @Index @Code "@Introduction"
+Introduction:
+@ID @OneRow @Code {
+"@Introduction"
+"@Begin"
+"@PP"
+"..."
+"@End @Introduction"
+}
+It may have sub-introductions, exactly like sub-prefaces:
+@ID @OneRow @Code @Verbatim {
+@BeginSubIntroductions
+@SubIntroduction ... @End @SubIntroduction
+@SubIntroduction ... @End @SubIntroduction
+@EndSubIntroductions
+}
+After the introduction comes a sequence of chapters in the usual style:
+chapter. @Index @Code "@Chapter"
+@ID @OneRow @Code {
+"@Chapter"
+" @Title { Australian Native Plants }"
+"@Begin"
+"@PP"
+"..."
+"@End @Chapter"
+}
+No @Code "@BeginChapters" or @Code "@EndChapters" symbols are
+beginchapters. @Index @Code "@BeginChapters"
+endchapters. @Index @Code "@EndChapters"
+needed, because these chapters are not inside any other large-scale
+structure symbol.
+@PP
+In addition to all the usual options for large-scale structure symbols,
+@Code "@Chapter" offers {@Code "@BypassWord"}, which may be used to
+replace the `Chapter' word for this chapter only. For example,
+@ID @OneRow @Code {
+"@Chapter"
+" @BypassWord { Appendix }"
+"..."
+}
+could be used to place (what appears to the reader to be) an Appendix
+at the end of a part, or indeed anywhere at all. The chapter numbers
+are not affected. To change this word in all chapters, the
+@Code "@ChapterWord" setup file option is preferred.
+@PP
+Within a chapter, there may be a sequence of sections,
+each introduced by {@Code "@Section"}, all bracketed
+section.books @SubIndex { in books }
+by @Code "@BeginSections" and {@Code "@EndSections"}:
+beginsections.books @SubIndex { in books }
+endsections.books @SubIndex { in books }
+@ID @OneRow @Code {
+"preceding text"
+"@BeginSections"
+"@Section ... @End @Section"
+"@Section ... @End @Section"
+"..."
+"@Section ... @End @Section"
+"@EndSections"
+}
+Within each section there may be subsections, each introduced by
+{@Code "@SubSection"}, and the sequence as a whole bracketed by
+@Code "@BeginSubSections" and {@Code "@EndSubSections"}:
+subsection.books @SubIndex { in books }
+beginsubsections.books @SubIndex { in books }
+endsubsections.books @SubIndex { in books }
+@ID @OneRow @Code {
+"preceding text"
+"@BeginSubSections"
+"@SubSection ... @End @SubSection"
+"@SubSection ... @End @SubSection"
+"..."
+"@SubSection ... @End @SubSection"
+"@EndSubSections"
+}
+The subsections may contain sub-subsections, but
+subsubsection.books @SubIndex { in books }
+beginsubsubsections.books @SubIndex { in books }
+endsubsubsections.books @SubIndex { in books }
+there are no sub-sub-subsections.
+@PP
+After the chapters comes an optional sequence of appendices. Each
+is introduced by @Code "@Appendix" in the usual way:
+appendix.books @SubIndex { in books }
+@ID @OneRow @Code {
+"@Appendix"
+" @Title { Climatic Regions of Australia }"
+"@Begin"
+"@PP"
+"..."
+"@End @Appendix"
+}
+No @Code "@BeginAppendices" or @Code "@EndAppendices" symbols are
+beginappendices.books @SubIndex { in books }
+endappendices.books @SubIndex { in books }
+needed, because (like chapters) these appendices do not lie inside
+any other large-scale structure symbol. The appendices are numbered
+A, B, C, etc., as is conventional for them. Within each appendix
+there may be a sequence of subappendices, obtained with the
+@Code "@SubAppendix" symbol and bracketed by
+subappendix.books @SubIndex { in books }
+@Code "@BeginSubAppendices" and {@Code "@EndSubAppendices"}:
+beginsubappendices.books @SubIndex { in books }
+endsubappendices.books @SubIndex { in books }
+@ID @OneRow @Code {
+"preceding text"
+"@BeginSubAppendices"
+"@SubAppendix ... @End @SubAppendix"
+"@SubAppendix ... @End @SubAppendix"
+"..."
+"@SubAppendix ... @End @SubAppendix"
+"@EndSubAppendices"
+}
+There are sub-subappendices following the same pattern, but no
+subsubappendix.books @SubIndex { in books }
+beginsubsubappendices.books @SubIndex { in books }
+endsubsubappendices.books @SubIndex { in books }
+sub-sub-subappendices.
+@PP
+Apart from any colophon, described below, the book ends with the last
+chapter or appendix; any reference list or index will be appended
+automatically. Although we have described how to create books as
+though everything was in one large file, in practice it is much better
+to divide the book into multiple files, following the method given in
+Section {@NumberOf organizing}.
+@PP
+In addition to the {@Code "@Title"} option, each large-scale structure
+symbol (i.e. {@Code "@Preface"}, {@Code "@Introduction"}, {@Code "@Chapter"},
+{@Code "@Section"}, {@Code "@SubSection"}, {@Code "@SubSubSection"},
+{@Code "@Appendix"}, {@Code "@SubAppendix"}, and {@Code "@SubSubAppendix"})
+has a @Code "@Tag" option for cross referencing (Section {@NumberOf cross}),
+an @Code "@InitialLanguage" option for changing the language of that
+part of the document, and a @Code "@RunningTitle" option which will be
+used in place of @Code "@Title" in running headers if given. This last
+is useful when the full title is rather long.
+@PP
+The @Code "@Chapter" symbol has three additional options for dividing
+parts. @Index { parts of books }
+the book into parts:
+part.number @Index @Code "@PartNumber"
+part.title @Index @Code "@PartTitle"
+part.text @Index @Code "@PartText"
+@ID @OneRow @Code {
+"@Chapter"
+" @PartNumber { Part A }"
+" @PartTitle { The Ancient World }"
+" @PartText { ... }"
+}
+Any chapter with a non-empty @Code "@PartNumber" or @Code "@PartTitle"
+option will become the first chapter of a part. It will be preceded
+by two pages containing the part number, title, and text, and there
+will also be an entry made in the table of contents. Parts are @I not
+numbered automatically: you have to supply your own numbers or letters
+as shown above.
+@PP
+After the last chapter or appendix, an optional colophon may be given:
+@ID @OneRow @Code @Verbatim {
+@Colophon @Begin
+This document was typeset using the Lout document
+formatting system. The resulting PostScript file
+was converted to PDF using GNU @I { ps2pdf }.
+@End @Colophon
+}
+For this to work, however, the @Code "@MakeColophon" option of the
+setup file must be changed to @Code Yes (see next paragraph). A
+colophon appears at the very end of the book, after the index. It may
+occupy several pages, and these will be numbered as usual. See also
+the @Code "@AtEnd" option above, which is intended to hold a one-page
+unnumbered back cover. As the example suggests, colophons these days
+are generally used for notes concerning how a book was produced. They
+are an old form that has been revived; previously, according to my
+dictionary, they contained information now printed on the title page.
+@PP
+A colophon is like a preface except that it appears at the end, and
+should logically be implemented like the {@Code "@Preface"} symbol.
+Unfortunately, owing to problems behind the scenes it has instead
+been implemented like glossaries and indexes: you have to set a
+@Code "@MakeColophon" option in the setup file to {@Code Yes}. There
+are setup file options for setting the font and break style, column
+number and column gap, and heading ({@Code "@ColophonFont"},
+{@Code "@ColophonBreak"}, {@Code "@ColophonColumnNumber"},
+{@Code "@ColophonColumnGap"}, and {@Code "@ColophonWord"}). There are
+also {@Code "@ColophonInContents"} and {@Code "@ColophonPrefix"}
+options for determining whether the colophon appears in the table
+of contents, and its prefix when structured page numbers are used.
+@PP
+In rare combinations of circumstances, another problem behind the
+scenes sometimes causes the title of the Colophon to appear,
+bizarrely, on the second page of the colophon. If this happens
+you can work around it by starting off the body of the colophon
+with {@Code "@NP"}.
+@PP
+The features described in other chapters are all available within
+books. A table of contents and index will appear automatically, and
+you will need to change the setup file to avoid them. Endnotes will
+appear at the end of the enclosing preface, introduction, chapter, or
+appendix. The numbering of figures and tables includes a chapter or
+appendix number: the first figure of Appendix C will be Figure C.1,
+and so on. Figures and tables within the preface or introduction are
+numbered 1, 2, 3, etc. A figure or table will never appear on the
+same page as the beginning of a chapter or appendix. References work
+as described in Chapter {@NumberOf biblio}. As explained there, it is
+possible to have a list of references at the end of each chapter as well
+as at the end of the book.
+@PP
+Within the @Code "book" setup file there is a @Code "@BookSetup"
+booksetup. @Index @Code "@BookSetup"
+symbol whose options control the appearance of features specific to books
+(in other words, the features described in this section):
+@ID @OneRow @Code {
+"@Use { @BookSetup"
+" # @TitlePageFont { Helvetica Base }"
+" # @SeparateIntroNumbering { Yes }"
+" # @PrefaceAfterContents { No }"
+" # @ReferencesBeforeAppendices { No }"
+" # @ChapterStartPages { Any }"
+" # @ChapterWord { chapter }"
+" # @ChapterNumbers { Arabic }"
+" # @ChapterHeadingFont { Bold 2.00f }"
+" # @ChapterHeadingBreak { ragged 1.2fx nohyphen }"
+" # @ChapterHeadingFormat { number @DotSep title }"
+" # @AboveChapterGap { 3.00f }"
+" # @ChapterInContents { Yes }"
+" # @ChapterContentsIndent { 0f }"
+"}"
+}
+This is just a representative sample of these options. Section
+{@NumberOf setup} explains how to make your own setup file and
+change its options; here we just explain what the options do.
+@PP
+@Code "@TitlePageFont" is the font used on the title
+title.page.font. @Index @Code "@TitlePageFont"
+page of the book, not including a size.
+@PP
+@Code "@ChapterStartPages" determines what kinds of pages chapters and
+chapter.start.pages @Index @Code "@ChapterStartPages"
+other major components of the book may begin on, and may be {@Code Any},
+{@Code Odd}, or {@Code Even}, meaning any page, odd-numbered pages only,
+or even-numbered pages only. It may also be {@Code SamePage}, which
+means that chapters and appendices will continue directly after the
+previous chapter or appendix, on the same page (other major components
+such as the table of contents and index will start on a fresh page
+as usual). If you switch to {@Code SamePage}, you will probably need
+to adjust {@Code "@ChapterHeadingFont"} and {@Code "@AboveChapterGap"},
+described below, since their default values are intended for use with
+chapters and appendices that start on a fresh page; and you will also
+need to begin the body of your chapter with a paragraph symbol such as
+@Code "@LP" or {@Code "@PP"}, since otherwise there will be no
+vertical space between the chapter heading and body.
+@PP
+@Code "@SeparateIntroNumbering"
+separate.intro.numbering @Index @Code "@SeparateIntroNumbering"
+determines whether the introductory part of the book is to have a
+separate numbering sequence or not. @Code "@ReferencesBeforeAppendices"
+references. @RawIndex references
+references.references.before.appendices @SubIndex @Code "@ReferencesBeforeAppendices"
+determines whether any final list of references appears before or
+after any appendices. @Code "@ChapterWord" determines
+the word used in chapter titles; its default value, {@Code "chapter"},
+produces `Chapter' in the current language. The other six options control
+the appearance of chapters, and there are similar options for controlling
+the other large-scale structure symbols.
+@PP
+@Code "@ChapterNumbers" determines how chapters will be numbered, and may
+be @Code { None }, @Code { Arabic }, @Code { Roman }, @Code { UCRoman },
+@Code { Alpha }, or @Code { UCAlpha }. The default value is @Code Arabic
+for chapters and also for all large-scale structure symbols except
+appendices, for which it is {@Code UCAlpha}. This produces the appendices
+numbered in upper-case letters (A, B, C, etc.) that were mentioned earlier.
+@PP
+@Code "@ChapterHeadingFont" is the font used for chapter headings. The
+default value shown above produces the bold face of the initial font
+family, at twice the initial size. A family name is acceptable
+here as well. @Code "@ChapterHeadingBreak" is the break style for
+chapter headings.
+@PP
+@Code "@ChapterHeadingFormat" allows you to change
+the format of the heading. The symbol @Code "number" within it will
+be replaced by the number of the chapter (actually including the word
+Chapter as well in the current language, e.g. {@Code "Chapter 12"}); the
+symbol @Code "title" within it will be replaced by the title. So you could
+write, say,
+@ID @Code
+"@ChapterHeadingFormat { @Box paint { lightgrey } { number @DP title } }"
+to get the title below the number, both enclosed in a box. The default
+value uses the @Code "@DotSep" symbol from Section {@NumberOf headers}
+to show the number and title separated by a dot and two spaces, like
+@ID @Code "@ChapterHeadingFormat { number. title }"
+except when there is no number. This option is applied
+to other major headings, in the preface, introduction, table of
+contents, appendices, reference list, and index. In all these other
+cases, @Code "number" is an empty object, except for appendices, when it
+contains @Code "Appendix A" or whatever.
+@PP
+There is a @Code "@PartHeadingFormat" option for determining the
+format of part headings. It works in the same way as
+{@Code "@ChapterHeadingFormat"}, with @Code "number" and @Code "title"
+symbols standing for the relevant @Code "@PartNumber" and @Code "@PartTitle"
+options. The default value is
+@ID @Code "@PartHeadingFormat { @CD number @DP @CD title }"
+which centres the number and title. The default paragraph breaking
+style is {@Code "clines"}, but you may place a @Code "@Break" symbol
+within @Code "@PartHeadingFormat" to change this.
+@PP
+The example of boxed titles for chapters given above suffers from two
+practical deficiencies. First, the box won't extend right across the
+page, and second, when there is no @Code "number" we don't want
+@Code "@DP" either. Here is a value for @Code "@ChapterHeadingFormat"
+that solves both problems:
+@ID @OneCol @Code @Verbatim {
+@ChapterHeadingFormat {
+ number @Case {
+ {} @Yield @Box paint { lightgrey } @HExpand { title }
+ else @Yield @Box paint { lightgrey } @HExpand { number @DP title }
+ }
+}
+}
+The @Code "@Case" symbol (Expert's Guide @Cite { $kingston1995lout.expert })
+distinguishes between the cases where @Code "number" is empty and non-empty;
+the @Code "@HExpand" symbol expands the horizontal space occupied by the
+heading to the maximum possible, so that when the box is drawn around it
+it will occupy the full page width. The format can be as
+complicated as you like, and there is no need to squeeze it all onto
+one line; as always, the end of a line is the same as one space.
+@PP
+Every chapter and appendix begins on a new page. @Code "@AboveChapterGap"
+determines how much space is left blank above the chapter title; the
+default value is three times the initial font size. There are similar
+options for other large-scale structure symbols, which determine how
+much space is left before each one.
+@PP
+@Code "@ChapterInContents" determines whether or not an entry is made in
+the table of contents for each chapter; it may be @Code Yes or {@Code No},
+but would always be {@Code Yes}. The default value of the corresponding
+options for sub-subsections and sub-subappendices, however, is {@Code No}.
+@Code "@ChapterContentsIndent" determines how far from the left margin
+the contents entry is indented if it is printed at all. The default
+value shown above causes no indenting; but the default values for
+the corresponding @Code "@SectionrContentsIndent" and
+@Code "@SubSectionrContentsIndent" symbols are @Code 3f and @Code 6f
+respectively, producing the familiar indenting structure.
+@End @Section
diff --git a/doc/doc/user/typ_illu b/doc/doc/user/typ_illu
new file mode 100644
index 0000000..80b66f3
--- /dev/null
+++ b/doc/doc/user/typ_illu
@@ -0,0 +1,86 @@
+@Section
+ @Title { Stand-alone illustrations }
+ @Tag { illustrations }
+@Begin
+@PP
+This section describes how to use Lout to produce an illustration for
+stand.alone.illustrations. @Index { stand-alone illustrations }
+illustrations. @Index { illustrations }
+inclusion in some other document, which may itself be a Lout document
+but need not be. The opposite process, the inclusion of an illustration
+in a Lout document, is the subject of Section {@NumberOf include}.
+@PP
+Suppose you want to produce the following logo
+for inclusion in some other document:
+@ID {
+45d @Rotate @CurveBox { ARMY @LP 180d @Rotate ARMY }
+}
+This is just an object, and it is not hard to make it using Lout's
+graphics features:
+@ID @Code "45d @Rotate @CurveBox { ARMY @LP 180d @Rotate ARMY }"
+The problem is that objects ordinarily come out on pages with margins,
+page numbers, and so forth, which we don't want here. The solution
+is to use the illustration document type, whose setup file, curiously
+enough, is called {@Code "picture"}:
+illustration. @Index @Code "@Illustration"
+@ID @OneRow @Code {
+"@SysInclude { picture }"
+"@Illustration {"
+" 45d @Rotate @CurveBox { ARMY @LP 180d @Rotate ARMY }"
+"}"
+}
+After the usual @Code "@SysInclude" line comes one @Code "@Illustration"
+symbol. Following it is an arbitrary object which becomes the entire
+result, with no pages and no margins, ready for inclusion in some other
+document as an illustration.
+@PP
+The @Code "@Illustration" symbol has options for setting the initial
+font, paragraph breaking style, colour, and language. Here they are
+with their default values:
+@ID @OneRow @Code {
+"@Illustration"
+" @InitialFont { Times Base 12p }"
+" @InitialBreak { adjust 1.2fx hyphen }"
+" @InitialSpace { lout }"
+" @InitialLanguage { English }"
+" @InitialColour { black }"
+" @InitialBackgroundColour { white }"
+"{"
+" ..."
+"}"
+}
+You can specify any colour from the list in Section {@NumberOf colour},
+for example {@Code blue}, and then your illustration will have that
+colour wherever it is included.
+@PP
+Because there are no pages, the width and height of the result are
+indeterminate, depending on how large the object turns out to be. This
+makes things very awkward for filled paragraphs and centring, which depend
+on knowing how much space is available to be occupied. So you should either
+avoid filled paragraphs and all displays and lists altogether in
+illustrations, or else enclose your object in a @Code "@Wide" symbol:
+wide. @RawIndex { @Code "@Wide" }
+wide.illustrations @SubIndex { with illustrations }
+@ID @OneRow @Code {
+"@Illustration 5c @Wide {"
+" ..."
+"}"
+}
+to make clear how wide you want your illustration to be.
+@PP
+The technical name for a file containing a stand-alone illustration
+encapsulated.postscript @Index { encapsulated PostScript file }
+eps @Index { EPS file }
+is `encapsulated PostScript file' or `EPS file' for short. To get
+Lout to produce an encapsulated PostScript file instead of an ordinary
+PostScript file, you have to use the @Code "-EPS" Unix command line
+flag. For example, suppose the Lout file containing our example
+illustration is called {@Code "army"}; then the appropriate Unix
+command for formatting it is
+@ID @Code "lout -EPS army > army.eps"
+An EPS file is supposed to contain only one `page', so Lout will refuse
+to generate any second or subsequent pages when the @Code "-EPS" flag
+is given. There is also a minor difference in format between ordinary
+and encapsulated PostScript files, which is why the @Code "-EPS" flag
+is needed at all.
+@End @Section
diff --git a/doc/doc/user/typ_ordi b/doc/doc/user/typ_ordi
new file mode 100644
index 0000000..49b0397
--- /dev/null
+++ b/doc/doc/user/typ_ordi
@@ -0,0 +1,314 @@
+@Section
+ @Title { Ordinary documents }
+ @Tag { ordinary }
+@Begin
+@PP
+Ordinary documents are the simplest kind, consisting of a plain sequence
+ordinary. @Index { ordinary documents }
+of numbered pages. To produce an ordinary document, use the @Code doc
+setup file and the @Code "@Doc" symbol:
+doc. @Index @Code "@Doc"
+@ID @OneRow @Code {
+"@SysInclude { doc }"
+"@Doc @Text @Begin"
+"..."
+"@End @Text"
+}
+where @Code ... stands for the body of your document. This is the
+arrangement from Section {@NumberOf start} for getting
+started. Alternatively, you can begin with
+@Code "@Document" instead of {@Code "@Doc"}:
+document. @Index @Code "@Document"
+@ID @OneRow @Code {
+"@SysInclude { doc }"
+"@Document"
+" @InitialFont { Times Base 12p }"
+" @InitialBreak { adjust 1.2fx hyphen }"
+" @InitialSpace { lout }"
+" @InitialLanguage { English }"
+" @PageOrientation { Portrait }"
+" @PageHeaders { Simple }"
+" @FirstPageNumber { 1 }"
+" @ColumnNumber { 1 }"
+" @OptimizePages { No }"
+" @Unpaginated { No }"
+"//"
+"@Text @Begin"
+"..."
+"@End @Text"
+}
+This shows all the options of {@Code "@Document"}, with their default
+values. As usual with options, the options of {@Code "@Document"}
+may be given in any order, and only the ones that need to be changed
+need be given at all. Notice the @Code "//" after the last option. Its
+meaning is beyond our
+scope, but total disaster will ensue if it is forgotten. The @Code "@Doc"
+symbol is an abbreviation for {@Code "@Document //"}.
+# , which is why you don't need @Code "//" with {@Code "@Doc"}.
+@PP
+The eight options are a selection of setup file options (Section
+{@NumberOf setup}) that frequently need to be changed. If your changes
+to the overall formatting are confined to these options, you can change
+them here and avoid having your own setup file. If you already have
+your own setup file, change them in either place and omit them in
+the other.
+@PP
+@Code "@InitialFont" is the font of the bulk of the document,
+and should contain a family, a face, and a size. The default
+value selects the Times family, the Base face, and the 12 point size.
+@PP
+@Code "@InitialBreak" controls the behaviour of paragraph breaking in
+the bulk of the document. It should have three parts: a paragraph
+breaking style ({@Code adjust}, {@Code ragged}, etc.), an inter-line
+spacing ({@Code "1.2fx"} for single spacing, {@Code "2.4fx"} for
+double spacing, and so on), and either @Code "hyphen" or @Code "nohyphen"
+for turning hyphenation on or off. It may also have @Code "nobreakfirst"
+or @Code "nobreaklast" (or both), meaning to disallow a page break after
+the first line of a paragraph, or before the last, respectively.
+@PP
+@Code "@InitialSpace" determines how Lout treats white space between
+two objects, as described in Section
+{@NumberOf white}. @Code "@InitialLanguage" determines the language
+of the bulk of the document.
+@PP
+@Code "@PageOrientation" determines the orientation of the page. Its
+value may be {@Code Portrait} (the default), {@Code Landscape},
+{@Code ReversePortrait}, or {@Code ReverseLandscape}. See
+Section {@NumberOf pagesize} for further details.
+@PP
+@Code "@PageHeaders" determines the appearance of page headers and
+footers throughout the document, and may be {@Code None},
+{@Code Simple}, {@Code Titles}, or {@Code NoTitles}. Section
+{@NumberOf headers} has the details, but just briefly, {@Code None}
+means no page headers at all, {@Code Simple} means a
+page number between hyphens at the top of each page except the first,
+@Code Titles produces full running titles as in this guide,
+and @Code "NoTitles" is like @Code "Titles" with the running titles
+omitted, leaving just the page numbers.
+@PP
+@Code "@FirstPageNumber" is the page number given to the first page.
+@PP
+@Code "@ColumnNumber" is the number of columns per page in the bulk of
+the document, and may be anything from {@Code 1} (the default value) to
+{@Code 10}. It is possible to produce full-width ordinary
+text in a multi-column document, using the @Code "@FullWidth"
+full.width. @Index @Code "@FullWidth"
+symbol:
+@ID @OneRow @Code {
+"@SysInclude { doc }"
+"@Document"
+" @ColumnNumber { 2 }"
+"//"
+"@Text @Begin"
+"@FullWidth {"
+"@CentredDisplay @Heading { NOTICE TO TRESPASSERS }"
+"}Trespassers are hereby notified that, ..."
+"@End @Text"
+}
+This produces a full-width heading above a two-column body. The word
+@Code Trespassers has been placed immediately after the closing brace
+of @Code "@FullWidth" because (regrettably) any space here will appear
+before @Code Trespassers in the output. Alternatively you could use
+a paragraph symbol:
+@ID @OneRow @Code {
+"@FullWidth { @CentredDisplay @Heading { NOTICE TO TRESPASSERS } }"
+"@PP"
+"Trespassers are hereby notified that, ..."
+}
+You can have several @Code "@FullWidth" symbols,
+producing full-width text wherever you want. Just be aware that
+@Code "@FullWidth" always causes a fresh page to be begun, it will never
+appear on the same page as a figure or table, and it is not able to hold
+a table of contents, a section, or an appendix.
+@PP
+Lout ordinarily places lines onto a page until space runs out, then moves
+to the next page and so on. This often produces ugly empty spaces at
+the bottoms of pages preceding large unbreakable displays. Setting the
+@Code "@OptimizePages" option to {@Code "Yes"} causes Lout to examine the
+overall situation and try to minimize the ugliness, using the @TeX
+tex.page @SubIndex { page optimization }
+optimal paragraph breaking algorithm. It takes two runs to do this,
+with intermediate results stored in Lout's cross reference database
+(Section {@NumberOf cross}); so deleting file {@Code lout.li} will reset
+it, which might be wise after major changes. It is possible for the
+optimizer to cycle, never settling on a single final best
+version; this is usually caused by footnotes or floating figures inserted
+at points that end up near page boundaries.
+@PP
+The @Code "@Unpaginated" option, whose value is ignored unless plain text
+output is in effect, produces unpaginated output when changed to
+{@Code Yes} (see Section {@NumberOf plain}).
+@PP
+Within the @Code "@Text" symbol, it is possible to have a sequence
+of sections:
+section. @RawIndex @Code "@Section"
+section.ordinary @SubIndex { in ordinary documents }
+beginsections. @RawIndex @Code "@BeginSections"
+beginsections.ordinary @SubIndex { in ordinary documents }
+endsections. @RawIndex @Code "@EndSections"
+endsections.ordinary @SubIndex { in ordinary documents }
+@ID @OneRow @Code {
+"preceding text"
+"@BeginSections"
+"@Section ... @End @Section"
+"@Section ... @End @Section"
+"..."
+"@Section ... @End @Section"
+"@EndSections"
+}
+as described in Section {@NumberOf largescale}. Within any
+section, a similar arrangement produces subsections:
+subsection. @RawIndex @Code "@SubSection"
+subsection.ordinary @SubIndex { in ordinary documents }
+beginsubsections. @RawIndex @Code "@BeginSubSections"
+beginsubsections.ordinary @SubIndex { in ordinary documents }
+endsubsections. @RawIndex @Code "@EndSubSections"
+endsubsections.ordinary @SubIndex { in ordinary documents }
+@ID @OneRow @Code {
+"preceding text"
+"@BeginSubSections"
+"@SubSection ... @End @SubSection"
+"@SubSection ... @End @SubSection"
+"..."
+"@SubSection ... @End @SubSection"
+"@EndSubSections"
+}
+Within any subsection, there may be sub-subsections, obtained
+using {@Code "@BeginSubSubSections"}, {@Code "@SubSubSection"},
+subsubsection. @RawIndex @Code "@SubSubSection"
+subsubsection.ordinary @SubIndex { in ordinary documents }
+beginsubsubsections. @RawIndex @Code "@BeginSubSubSections"
+beginsubsubsections.ordinary @SubIndex { in ordinary documents }
+endsubsubsections. @RawIndex @Code "@EndSubSubSections"
+endsubsubsections.ordinary @SubIndex { in ordinary documents }
+and {@Code "@EndSubSubSections"}. There are no sub-sub-subsections.
+@PP
+Also within the @Code "@Text" symbol only, there may be a sequence of
+appendices:
+appendix. @RawIndex @Code "@Appendix"
+appendix.ordinary @SubIndex { in ordinary documents }
+beginappendices. @RawIndex @Code "@BeginAppendices"
+beginappendices.ordinary @SubIndex { in ordinary documents }
+endappendices. @RawIndex @Code "@EndAppendices"
+endappendices.ordinary @SubIndex { in ordinary documents }
+@ID @OneRow @Code {
+"preceding text"
+"@BeginAppendices"
+"@Appendix ... @End @Appendix"
+"@Appendix ... @End @Appendix"
+"..."
+"@Appendix ... @End @Appendix"
+"@EndAppendices"
+}
+These will be `numbered' A, B, C etc. as is conventional. Within any
+appendix there may be a sequence of subappendices, obtained in the
+usual way using {@Code "@BeginSubAppendices"}, {@Code "@SubAppendix"},
+subappendix. @RawIndex @Code "@SubAppendix"
+subappendix.ordinary @SubIndex { in ordinary documents }
+beginsubappendices. @RawIndex @Code "@BeginSubAppendices"
+beginsubappendices.ordinary @SubIndex { in ordinary documents }
+endsubappendices. @RawIndex @Code "@EndSubAppendices"
+endsubappendices.ordinary @SubIndex { in ordinary documents }
+and {@Code "@EndSubAppendices"}. There are sub-subappendices as well,
+following the same pattern, but no sub-sub-subappendices.
+subsubappendix. @RawIndex @Code "@SubSubAppendix"
+subsubappendix.ordinary @SubIndex { in ordinary documents }
+beginsubsubappendices. @RawIndex @Code "@BeginSubSubAppendices"
+beginsubsubappendices.ordinary @SubIndex { in ordinary documents }
+endsubsubappendices. @RawIndex @Code "@EndSubSubAppendices"
+endsubsubappendices.ordinary @SubIndex { in ordinary documents }
+@PP
+In addition to the {@Code "@Title"} option, each large-scale structure
+symbol ({@Code "@Section"}, {@Code "@SubSection"}, {@Code "@SubSubSection"},
+{@Code "@Appendix"}, {@Code "@SubAppendix"}, and {@Code "@SubSubAppendix"})
+has a @Code "@Tag" option for cross referencing (Section {@NumberOf cross}),
+an @Code "@InitialLanguage" option for changing the language of that part
+of the document, and a @Code "@RunningTitle" option which will be used in
+place of @Code "@Title" in running headers if given. @Code "@RunningTitle"
+is useful when the full title is rather long.
+@PP
+The features described in other chapters are all available within
+ordinary documents. Endnotes and references appear automatically at
+the end of the document. Figures are labelled Figure 1, Figure 2,
+etc., and tables are labelled Table 1, Table 2, etc.
+@PP
+To get a table of contents, set the @Code "@MakeContents" option in
+the setup file to {@Code Yes}, and insert the symbol
+@Code "@ContentsGoesHere" at the point where you would like the
+contents.goes.here. @Index @Code "@ContentsGoesHere"
+table of contents to appear, anywhere before the first section:
+@ID @OneRow @Code {
+"@SysInclude { doc }"
+"@Text @Begin"
+"@CentredDisplay @Heading { Safety Procedures }"
+"@Heading { Contents }"
+"@DP"
+"@ContentsGoesHere"
+"@DP"
+"..."
+"@End @Text"
+}
+You must supply your own heading, as well as paragraph symbols
+before and after. Regrettably, @Code "@ContentsGoesHere" may
+not be placed inside a display, nor inside {@Code "@FullWidth"}.
+@PP
+To get an index, set the @Code "@MakeIndex" option in the setup file
+to {@Code Yes}, and follow the instructions in Section
+{@NumberOf indexes}. The index will appear automatically at the end
+of your document.
+@PP
+Within the @Code doc setup file there is an @Code "@OrdinarySetup"
+symbol whose options control the appearance of features specific to
+ordinary documents (in other words, the features described in this
+section). Here is a representative sample of these options, showing
+their default values:
+ordinary.setup @Index @Code "@OrdinarySetup"
+@ID @OneRow @Code {
+"@Use { @OrdinarySetup"
+" # @IndexWord { index }"
+" # @AppendixWord { appendix }"
+" # @SectionNumbers { Arabic }"
+" # @SectionHeadingFont { Bold }"
+" # @SectionGap { 2.00v }"
+" # @SectionInContents { Yes }"
+" # @SectionContentsIndent { 0f }"
+"}"
+}
+Section {@NumberOf setup} explains how to make your own setup file and
+change its options.
+@PP
+The @Code "@IndexWord" option determines what the index is called, if
+there is one. The default value, {@Code "index"}, produces the word
+`Index' in the current language. Any other value produces itself. The
+@Code "@AppendixWord" option is similar; its default value is `Appendix'
+in the current language.
+@PP
+@Code "@SectionNumbers" determines how sections will be numbered, and may
+be @Code { None }, @Code { Arabic }, @Code { Roman }, @Code { UCRoman },
+@Code { Alpha }, or @Code { UCAlpha }. The default value is @Code Arabic
+for sections and also all other large-scale structure symbols except
+appendices, for which it is {@Code UCAlpha}. This produces the appendices
+numbered in upper-case letters (A, B, C, etc.) that were mentioned earlier.
+@PP
+@Code "@SectionHeadingFont" is the font used for section headings. The
+default value produces the bold face from the family of the
+initial font. A family name or size is also acceptable:
+@ID @Code "@SectionHeadingFont { Helvetica Base +2p }"
+makes the section heading appear in the Helvetica font, two
+points larger than the initial size.
+@PP
+@Code "@SectionGap" determines how much space is left blank before each
+section title; the default value shown above is twice the current
+inter-line spacing. The special value @Code "2b" may be used to get a
+page break rather than a space. There are similar options for other
+large-scale structure symbols, which determine how much space is left
+before each one.
+@PP
+@Code "@SectionInContents" determines whether or not an entry is made in
+the table of contents for each section; it may be @Code Yes or {@Code No},
+but would always be {@Code Yes}. The default value of the corresponding
+options for sub-subsections and sub-subappendices, however, is {@Code No}.
+@Code "@SectionContentsIndent" determines the indent of the contents
+entry if printed at all; the default value shown above, @Code {0f},
+asks for zero indenting, so the entry will appear at the left margin.
+@End @Section
diff --git a/doc/doc/user/typ_orga b/doc/doc/user/typ_orga
new file mode 100644
index 0000000..ab8beef
--- /dev/null
+++ b/doc/doc/user/typ_orga
@@ -0,0 +1,108 @@
+@Section
+ @Title { Organizing large documents }
+ @Tag { organizing }
+@Begin
+@PP
+It is not a good plan to store a large document in a single large
+organizing.large @Index { organizing large documents }
+file. It takes too long to find things in it, and if some catastrophe
+occurs, you lose the lot. Lout encourages you to break documents into
+pieces by its willingness to read a sequence of files
+({@Code "lout file1 file2 ..."}). For large documents, the following
+plan is recommended.
+@PP
+Suppose you are making a book whose third chapter contains sections on
+banksias, grevilleas, acacias, and eucalypts. Place each section, from
+@Code "@Section" to {@Code "@End @Section"}, in a separate file, making
+four files called, say, {@Code banksias}, {@Code grevilleas},
+{@Code acacias}, and {@Code eucalypts}. Then make a single file for the
+chapter as a whole whose contents are as follows:
+@ID @OneRow @Code {
+"@Chapter"
+" @Title { Australian Native Plants }"
+" @Tag { natives }"
+"@Begin"
+"Australian native plants provide a distinctive identity to the garden. Although"
+"less colourful than their European alternatives, some banksias and grevilleas do"
+"flower strongly, and of course the acacias (wattles) are unsurpassable in late winter."
+"@BeginSections"
+"@Include { banksias }"
+"@Include { grevilleas }"
+"@Include { acacias }"
+"@Include { eucalypts }"
+"@EndSections"
+"@End @Chapter"
+}
+The @Code "@Include" symbol causes Lout to read the file whose name follows
+include. @Index @Code "@Include"
+it between braces, just as though the contents of that file had been included
+at that point.
+@PP
+With this arrangement you can easily rearrange the order of the
+sections: just swap their @Code "@Include" lines. You should be using
+Lout's automatic cross referencing features (Section {@NumberOf cross}),
+so you don't have to worry about keeping cross references up to date. You
+can also temporarily delete a section by placing a @Code "#" character at
+the start of its line:
+@ID @Code "# @Include { acacias }"
+This works because @Code "#" is the @I { comment character }: Lout will
+comment. @Index { comments }
+ignore this character (unless enclosed in double quotes) and everything
+following it up to the end of the line. You can even temporarily delete
+every section except the one you are working on at the moment, using
+these comments.
+@PP
+Suppose now that this chapter file is called @Code { natives }, and you
+have others called @Code { preface }, @Code { flowers }, etc. Then you
+can make one file (call it @Code { garden }) for the whole book like this:
+@ID @OneRow @Code {
+"@SysInclude { book }"
+"@Book"
+" @Title { The Australian Garden }"
+" @Author { Martha S. Vineyard }"
+"//"
+"@Include { preface }"
+"@Include { flowers }"
+"@Include { shrubs }"
+"@Include { natives }"
+"@Include { trees }"
+}
+You can play the same tricks here: swap chapters around, or temporarily
+delete one or more with a {@Code "#"}. When a chapter is finished
+you can temporarily delete it to save formatting time and paper, and
+bring it back at the end. To format the book, use
+@Code "lout garden > out.ps"
+in Unix. Lout will read each @Code "@Include" file as it comes to it,
+and if it finds an @Code "@Include" of a section while reading a chapter
+file, it will read the section too.
+@PP
+If the order of your chapters is fairly stable, it might be advantageous
+to use the @Code "@BypassNumber" option of @Code "@Chapter" (described
+in Appendix {@NumberOf bypass}) to fix the numbers of all your chapters,
+so that you get correct chapter numbers even when formatting one
+chapter at a time.
+@PP
+If you decide to store chapters in separate Unix directories, make sure
+that any @Code "/" characters in the file names are enclosed in double
+quotes:
+@ID @Code "@Include { \"natives.dir/acacias\" }"
+Be careful not to give the directory the same name as your chapter
+file. You might also find it useful to construct your book
+@I { top-down }, as computer scientists call it, laying out all the
+chapters and sections as empty skeletons and filling their contents in
+later.
+@PP
+When some part of your document has to be repeated, one way to avoid
+entering it twice is to place that part in a separate file and use
+@Code "@Include" in two places to include it twice. This works, but
+there are two caveats. First, it may be better to use a definition
+(Section {@NumberOf definitions}), since that gives you an object
+with a name, which you can use with confidence anywhere at all.
+Second, Lout treats @Code "@Include" in a peculiar way when it
+appears in the setup part of a document (in definitions, databases,
+and the @Code "@Use" clauses that appear within setup files): it
+reads the file the first time, but silently skips it the other
+times. This is done to simplify the handling of files of
+definitions that depend on other files of definitions, as described
+in the Expert's Guide @Cite { $kingston1995lout.expert }.
+@End @Section
diff --git a/doc/doc/user/typ_over b/doc/doc/user/typ_over
new file mode 100644
index 0000000..48ee1ad
--- /dev/null
+++ b/doc/doc/user/typ_over
@@ -0,0 +1,315 @@
+@Section
+ @Title { Overhead transparencies }
+ @Tag { overheads }
+@Begin
+@PP
+To produce overhead transparencies (hereafter called overheads), start off
+overheads. @Index { overhead transparencies }
+slides. @RawIndex { slides @I see overhead transparencies }
+with the @Code slides setup file and the @Code "@OverheadTransparencies"
+overhead.transparencies. @Index @Code "@OverheadTransparencies"
+symbol:
+# @FootNote {
+# In Version 3.15 overhead transparencies were updated and brought into line
+# with the other document types. Although existing source files do not need
+# to be modified, their printed appearance may change (spacing, running
+# headers). There are some new setup file options, and some changes to
+# existing setup file options.
+# }
+@ID @OneRow @Code {
+"@SysInclude { slides }"
+"@OverheadTransparencies"
+" @Title {}"
+" @RunningTitle {}"
+" @Author {}"
+" @Institution {}"
+" @DateLine { No }"
+" @InitialFont { Times Base 20p }"
+" @InitialBreak { ragged 1.2fx nohyphen }"
+" @InitialSpace { lout }"
+" @InitialLanguage { English }"
+" @PageOrientation { Portrait }"
+" @PageHeaders { Titles }"
+" @FirstPageNumber { 1 }"
+" @FirstOverheadNumber { 1 }"
+" @FirstLectureNumber { 1 }"
+" @OptimizePages { No }"
+"//"
+}
+This shows all the options of @Code "@OverheadTransparencies" with their
+default values. As usual with options, they may be given in any order, and
+only the ones whose values need to be changed need be given at all. The
+meaning of the @Code "//" symbol after the last option is beyond our
+scope, but disaster will ensue if it is forgotten.
+@PP
+If @Code "@Title" is not empty, an initial overhead will be produced
+containing the {@Code "@Title"}, {@Code "@Author"}, {@Code "@Institution"},
+and {@Code "@DateLine"} options. @Code "@DateLine" may be set to
+{@Code "No"}, meaning no dateline, {@Code "Yes"}, meaning print the current
+date, or anything else, which is taken to be a date and printed.
+@PP
+Each overhead has a running header printed in small type at the top
+left. The @Code "@RunningTitle" option goes into this header, or, if
+there is no @Code "@RunningTitle" option, @Code "@Title" is used instead.
+@PP
+The remaining options are a selection of setup file options (Section
+{@NumberOf setup}) that frequently need to be changed. If your changes
+to the overall formatting are confined to these options, you can change
+them here and avoid having your own setup file. If you already have
+your own setup file, change them in either place and omit them in
+the other.
+@PP
+@Code "@InitialFont" is the font in which the overheads will be set, and
+should contain a family, a face, and a size. A good font size for
+overheads is 20 points, so that is the default size.
+@PP
+@Code "@InitialBreak" controls the behaviour of paragraph breaking in
+the overheads. It should have three parts: a paragraph
+breaking style ({@Code adjust}, {@Code ragged}, etc.), an inter-line
+spacing ({@Code "1.2fx"} for single spacing, {@Code "2.4fx"} for
+double spacing, and so on), and either @Code "hyphen" or @Code "nohyphen"
+for turning hyphenation on or off. Adjusted lines and hyphenated words
+are difficult to read from overheads, so the default is not to have them.
+@Code "@InitialSpace" determines how Lout treats white space between
+objects (Section {@NumberOf white}). @Code "@InitialLanguage"
+determines the language of the overheads.
+@PP
+@Code "@PageOrientation" determines the orientation of the page. Its
+value may be {@Code Portrait} (the default), {@Code Landscape},
+{@Code ReversePortrait}, or {@Code ReverseLandscape}. See
+Section {@NumberOf pagesize} for further details.
+@PP
+@Code "@PageHeaders" determines the appearance of page headers and
+footers. Its value may be {@Code None}, {@Code Simple}, {@Code Titles},
+or {@Code NoTitles}. Section {@NumberOf headers} has the details, but
+just briefly, {@Code None} produces no page headers, {@Code Simple} produces
+page numbers only, @Code Titles produces full running titles, and
+@Code "NoTitles" is similar to @Code "Simple" in this context.
+@PP
+@Code "@FirstPageNumber" is the number given to the first page,
+@Code "@FirstOverheadNumber" is the number given to the first overhead,
+and @Code "@FirstLectureNumber" is the number given to the first lecture,
+of which more below. See preceding sections for {@Code "@OptimizePages"}.
+@PP
+After the compulsory {@Code "//"} come the overheads themselves. There
+are two alternatives: a series of overheads, corresponding to a single
+lecture, or a series of series of overheads, corresponding to a series
+of lectures. If the first is wanted, use this arrangement:
+overhead. @Index @Code "@Overhead"
+@ID @OneRow @Code {
+"@SysInclude { slides }"
+"@OverheadTransparencies"
+" @Title { ... }"
+" @Author { ... }"
+" @DateLine { ... }"
+" ..."
+"//"
+"@Overhead ... @End @Overhead"
+"@Overhead ... @End @Overhead"
+"..."
+"@Overhead ... @End @Overhead"
+}
+@Code "@Overhead" is a large-scale structure symbol, similar to
+{@Code "@Section"}, with the usual options:
+@ID @OneRow @Code {
+"@Overhead"
+" @Title { Trends in investment since 1980 }"
+" @RunningTitle { Investment }"
+" @Tag { investment }"
+" @InitialLanguage { English }"
+"@Begin"
+"..."
+"@End @Overhead"
+}
+If @Code "@Title" is given it will appear as a centred, bold display
+at the beginning of the overhead. As usual, these options may be given
+in any order or omitted altogether.
+@PP
+The body of the overhead is quite arbitrary. Typically one tends to
+use lists and displays more than paragraphs, but all the usual features
+are available. Each overhead begins on a fresh page, but it may occupy
+more than one page.
+@PP
+@Code "@Overhead" also has a @Code "@Format" option which allows you to
+specify an arbitrary format for the body of the overhead (that is,
+everything except its title). For example,
+@ID @Code "@Format { @CurveBox @HExpand @VExpand @Body }"
+encloses the body in a curvebox, with the box expanded to the full
+available width and height. Unlike the similar option for figures
+and tables, however, this @Code "@Format" option unfortunately has
+not been set up to work with multi-page overheads, so if you use the
+format just given you have to make sure your overheads all fit on one
+page. To draw boxes around the @I entire page, use the @Code "@PageBox"
+setup file options.
+@PP
+Lout does not provide any special support for overlays. A good way to
+make them is to first produce one overhead containing all the layers
+simultaneously. Once this is correct, enclose the entire body of the
+overhead in {@Code "white @Colour"}, make one copy of the text of the
+overhead for each layer, separating the copies with @Code "@NP"
+(new page) symbols, and, in each copy, enclose the parts that are
+to appear in that layer in {@Code "black @Colour"} (or any other
+colour). This works because @Code "white @Colour" makes an object
+invisible without altering its size.
+@PP
+We turn now to the second major alternative, which is a series
+of lectures, like this:
+lecture. @Index @Code "@Lecture"
+@ID @OneRow @Code {
+"@SysInclude { slides }"
+"@OverheadTransparencies"
+" @Title { ... }"
+" @Author { ... }"
+" @DateLine { ... }"
+" ..."
+"//"
+"@Lecture ... @End @Lecture"
+"@Lecture ... @End @Lecture"
+"..."
+"@Lecture ... @End @Lecture"
+}
+@Code "@Lecture" is a large-scale structure symbol, again with
+the usual options:
+@ID @OneRow @Code {
+"@Lecture"
+" @Title { Macro-Economic Policies for the Nineties }"
+" @RunningTitle { Macro-economic policies }"
+" @Tag { macro-economics }"
+" @InitialLanguage { English }"
+"@Begin"
+"..."
+"@End @Lecture"
+}
+If @Code "@Title" is non-empty the series of overheads will begin with
+an overhead containing the title alone, centred on the page using the
+@Code "clines" paragraph breaking style. This means that it makes
+sense to have a multi-line title. Any text following the @Code "@Begin"
+will appear under the lecture title as you would expect. Within the
+body of {@Code "@Lecture"}, place a series of overheads
+bracketed by @Code "@BeginOverheads" and {@Code "@EndOverheads"}:
+beginoverheads. @Index @Code "@BeginOverheads"
+endoverheads. @Index @Code "@EndOverheads"
+@ID @OneRow @Code {
+"@BeginOverheads"
+"@Overhead ... @End @Overhead"
+"..."
+"@EndOverheads"
+}
+The @Code "@Overhead" symbol is exactly as described earlier.
+@PP
+The features described in other chapters are available with
+overheads. Endnotes and references appear automatically at the
+end of the overheads. You can have a table of contents, by setting
+the @Code "@MakeContents" option of the setup file to {@Code Yes}. It
+will appear automatically after any title overhead. The setup file
+options have been set on the assumption that you want your lectures
+to appear in the table of contents, but not individual overheads. It is not
+possible to have an index, and it is not possible to have multiple columns.
+@PP
+Within the @Code slides setup file there is an @Code "@OverheadSetup"
+symbol whose options control the appearance of features specific to
+overhead.setup. @Index @Code "@OverheadSetup"
+overheads (in other words, the features described in this section). Here
+are some of these options and their default values:
+@ID @OneRow @Code @Verbatim {
+@Use { @OverheadSetup
+ # @DateLine { No }
+ # @FirstOverheadNumber { 1 }
+ # @FirstLectureNumber { 1 }
+ # @ContentsWord { contents }
+ # @LectureNumbers { Arabic }
+ # @OverheadNumbers { Arabic }
+ # @TitlePageFont { Helvetica Base }
+ # @TitleFormat { @Center clines @Break title }
+ # @AuthorFormat { @Center clines @Break author }
+ # @InstitutionFormat { @Center clines @Break @I institution }
+ # @DateLineFormat { @Center date }
+ # @AboveTitleGap { 0.5i }
+ # @AboveAuthorGap { 1.0i }
+ # @AboveInstitutionGap { 0.5i }
+ # @AboveDateLineGap { 0.5i }
+ # @LectureHeadingFont { Bold 1.20f }
+ # @LectureHeadingFormat { @Centre number @DP @Centre title @DP }
+ # @OverheadHeadingFormat { @Centre title @DP }
+ # @OverheadHeadingFont { Bold }
+ # @LectureInContents { Yes }
+ # @OverheadInContents { No }
+ # @ReferencesInContents { Yes }
+}
+}
+For an introduction to setup files and their options, consult
+Section {@NumberOf setup}. The first four options are as for
+@Code "@OverheadTransparencies" as described above. @Code "@ContentsWord"
+determines the table of contents heading; its default value, {@Code contents},
+produces `Contents' in the current language. @Code "@LectureNumbers"
+and @Code "@OverheadNumbers" determine the style of numbering of lectures
+and overheads, and may be {@Code None}, {@Code Arabic}, {@Code Roman},
+{@Code UCRoman}, {@Code Alpha}, or {@Code UCAlpha} as usual. Next come
+options for setting the font of the overall title page, the format of
+the title, author, institution, and dateline parts of it, the gap
+above the title, author, institution, and dateline that appear on that
+page; then options controlling the appearance of the headings at the
+start of each lecture and overhead, and finally options which determine
+which entries are made in any table of contents.
+@PP
+The @Code "@LectureHeadingFormat" option determines the
+format of the heading of each lecture. Within it, the symbol @Code "number"
+stands for the number of the lecture, including the `Lecture' word if
+there is one, and @Code "title" stands for the title of the lecture. The
+default value centres the number and title, with display gaps below
+each one. @Code "@OverheadHeadingFormat" is similar; it has the same
+symbols but the default value chooses not to use {@Code "number"}.
+@PP
+Other setup file options exist which permit you to have a box drawn
+around each overhead, and to change the page size, margins, and
+orientation. These are described in Chapter {@NumberOf changes}.
+@PP
+Section {@NumberOf headers} describes the setup file options that
+control the appearance of page headers and footers. With overheads,
+the values given to the {@Code "@MajorTitle"}, {@Code "@MinorTitle"},
+{@Code "@MajorNum"}, and {@Code "@MinorNum"} symbols within those
+options are as follows. If @Code "@Lecture" is being used:
+@ID @Tab
+ @Fmta { @Col A ! @Col B }
+{
+@Rowa
+ A { @Code "@MajorTitle" }
+ B { The @Code "@RunningTitle" option of
+{@Code "@OverheadTransparencies"}, or its @Code "@Title" option
+if @Code "@RunningTitle" is absent; }
+@Rowa
+ A { @Code "@MinorTitle" }
+ B { The @Code "@RunningTitle" option of the current
+{@Code "@Lecture"}, or else its @Code "@Title" option if
+@Code "@RunningTitle" is absent; }
+@Rowa
+ A { @Code "@MajorNum" }
+ B { The number of the current {@Code "@Lecture"}; }
+@Rowa
+ A { @Code "@MinorNum" }
+ B { A two-part number, for example 5.2, containing the number of
+the current @Code "@Lecture" and the number within that lecture
+of the current overhead. }
+}
+If @Code "@Lecture" is not being used:
+@ID @Tab
+ @Fmta { @Col A ! @Col B }
+{
+@Rowa
+ A { @Code "@MajorTitle" }
+ B { The @Code "@RunningTitle" option of
+{@Code "@OverheadTransparencies"}, or its @Code "@Title" option
+if @Code "@RunningTitle" is absent; }
+@Rowa
+ A { @Code "@MinorTitle" }
+ B { Empty; }
+@Rowa
+ A { @Code "@MajorNum" }
+ B { Empty; }
+@Rowa
+ A { @Code "@MinorNum" }
+ B { The number of the current overhead. }
+}
+The first page occupied by any overhead is a @Code Start page; subsequent
+pages are @Code NonStart pages. There are no @Code Intro pages.
+@End @Section
diff --git a/doc/doc/user/typ_plai b/doc/doc/user/typ_plai
new file mode 100644
index 0000000..af0f08f
--- /dev/null
+++ b/doc/doc/user/typ_plai
@@ -0,0 +1,76 @@
+@Section
+ @Title { Plain text documents }
+ @Tag { plain }
+@Begin
+@PP
+Occasionally you may need to produce an output file containing plain text
+plain.text. @Index { plain text documents }
+rather than PostScript, for example for an online manual entry or to send
+as electronic mail. Any document that can be produced by Lout in
+PostScript can be produced in plain text as well, by adding a @Code "-p"
+flag to the Unix command line:
+@ID @Code "lout -p simple"
+No other changes are required. Here we are sending the output directly to
+the screen, but it can be redirected to a file, or piped through the
+@Code more command for viewing one page at a time, etc.
+@PP
+Of course, plain text is an extremely limited medium of communication
+compared with PostScript, and this forces Lout to make some rather
+drastic compromises:
+@BulletList gap { @ParaGap }
+@LI { Symbols like {@Code "@Bullet"}, which stand for unusual characters,
+produce printable characters which approximate the PostScript ones. For
+example, {@Code "@Bullet"} produces {@Code "o"}. However, the @Code "@Char"
+and @Code "@Sym" symbols often produce unprintable characters, and are best
+avoided; }
+@LI { All font and size changes are ignored, since plain text has only
+one font and size. Every character is taken to be @M { 1 frac 10 } inch
+wide and @M { 1 frac 6 } inch high; }
+@LI { No underlines are printed; }
+@LI { No margin notes are printed; }
+@LI { Scaled objects are not printed unless the scale factor happens to be 1; }
+@LI { Rotated objects are not printed unless the angle happens to be zero
+degrees. This means that page orientations (Section {@NumberOf pagesize})
+other than @Code Portrait do not work; }
+@LI { Ruled lines are not printed, and paint and colour options are
+ignored. This spoils the graphics and graphs of Chapters
+{@NumberOf graphics}, {@NumberOf diagrams}, and {@NumberOf graphs}. }
+@EndList
+Despite the problems, many things work surprisingly well. Tables, for example,
+look very good. It does no harm to try things and see if they work out.
+@PP
+The worst problem with plain text is that characters cannot be placed at
+arbitrary points on the page. A superscript, for example, is impossible to
+place correctly, so Lout uses a different layout for footnote labels (and
+makes a mess of equations, which are best avoided). Because of this problem
+it's best to make all horizontal lengths multiples of @M {1 frac 10} inch
+(conveniently expressed as {@Code 1s}), and all vertical lengths multiples
+of @M { 1 frac 6 } inch (conveniently expressed as {@Code 1f}). To help
+you do this, the setup files contain many entries that look like this
+example:
+@ID @Code "# @InitialBreak { {adjust 1.2fx hyphen} @OrIfPlain {ragged 1fx nohyphen} }"
+The meaning is that the value of @Code "@InitialBreak" will be
+@Code "adjust 1.2fx hyphen" usually, but will switch to
+{@Code "ragged 1fx nohyphen"}, which is better suited to plain text,
+if the @Code "-p" command line flag is used. These setup file values
+allow you to switch from PostScript to plain text and back again without
+changing anything at all except the @Code "-p" command line flag.
+@PP
+If you use @Code "lout -P" instead of {@Code "lout -p"}, the plain text
+output will contain a form-feed character (control-L) after each page
+form.feed @Index { form-feed in plain text }
+except the last. This character causes most printing devices to start
+a new page, which is very useful when your page height is not exactly
+right.
+@PP
+The @Code "@Document" symbol (Section {@NumberOf ordinary}) has an
+unpaginated. @Index @Code "@Unpaginated"
+@Code "@Unpaginated" option which, when set to {@Code "Yes"}, causes
+the plain text output to appear unpaginated, that is, in one continous
+stream with no page breaks. It is ignored if plain text output is
+not in effect, so it can be set to @Code "Yes" in documents intended
+for formatting both ways. The usual margins apply; footnotes appear
+at the end; floating figures and tables do not work. Lout stupidly
+reads the entire document before producing any output when this
+option is used, so if the document is long you might run out of memory.
+@End @Section
diff --git a/doc/doc/user/typ_repo b/doc/doc/user/typ_repo
new file mode 100644
index 0000000..0c41ff4
--- /dev/null
+++ b/doc/doc/user/typ_repo
@@ -0,0 +1,357 @@
+@Section
+ @Title { Technical reports }
+ @Tag { reports }
+@Begin
+@PP
+To make a technical report,
+start off with the @Code "report" setup
+reports. @Index { reports }
+technical.reports. @Index { technical reports }
+report. @Index @Code "@Report"
+file and the @Code "@Report" symbol:
+@ID @OneRow -1px @Break @Code {
+"@SysInclude { report }"
+"@Report"
+" @Title {}"
+" @Author {}"
+" @Institution {}"
+" @DateLine { No }"
+" @AtEnd {}"
+" @CoverSheet { Yes }"
+" @ContentsSeparate { No }"
+" @InitialFont { Times Base 12p }"
+" @InitialBreak { hyphen adjust 1.2fx }"
+" @InitialSpace { lout }"
+" @InitialLanguage { English }"
+" @PageOrientation { Portrait }"
+" @PageHeaders { Simple }"
+" @ColumnNumber { 1 }"
+" @FirstPageNumber { 1 }"
+" @OptimizePages { No }"
+" @AbstractDisplay { Yes }"
+" @AbstractTitle { Abstract }"
+" @Abstract {}"
+" @GlossaryText { @Null }"
+" @IndexText { @Null }"
+" @IndexAText { @Null }"
+" @IndexBText { @Null }"
+"//"
+}
+This shows all the options of {@Code "@Report"}
+@FootNote {
+Before Version 3.13, @Code "@Abstract" followed "//" rather than
+preceded it, and had some options that are now withdrawn. Old
+documents may therefore need some superficial rearrangement.
+}
+with their default values. As usual with options, they may be given in
+any order, and only the ones whose values need to be changed need be
+given at all. The meaning of the @Code "//" symbol is beyond our scope,
+but disaster will ensue if it is forgotten.
+@PP
+The @Code "@Title" option holds the title of the report. It will be
+printed using the @Code clines paragraph breaking style (Section
+{@NumberOf paras}), which centres each line, so multi-line titles
+make sense:
+@ID @OneRow @Code {
+"@Report"
+" @Title {"
+"The solution of real instances of"
+"the timetabling problem"
+"}"
+" ..."
+}
+With a multi-line title, each line after the first should begin
+at the left margin, not indented. It doesn't matter where the first
+line begins, because space following an open brace is ignored.
+@PP
+The @Code "@Author" and @Code "@Institution" options hold the author's
+name and institution or address, and will also be printed using the
+@Code clines style. If there are several authors but only one
+institution, list all the authors in the @Code "@Author" option:
+@ID @Code "@Author { Tim B. Cooper and Jeffrey H. Kingston }"
+With more authors, or with more than one institution, it is best to
+ignore the @Code "@Institution" option and place all the information
+within the @Code "@Author" option, enclosing institution information
+in @Code "@I" symbols. In extreme cases, a table with columns of
+authors might be necessary (Chapter {@NumberOf tables}).
+@PP
+@Code "@DateLine" may be set to {@Code No}, meaning no dateline,
+{@Code Yes}, meaning print the current date, or anything else, which is
+taken to be a date and printed:
+@ID @Code "@DateLine { 4 July, 1776 }"
+A good plan is to use @Code "@DateLine { Yes }" until
+the report is finalized.
+@PP
+The {@Code "@AtEnd"} option will come out on a single unnumbered
+page with no page headers or footers, and using the same margins as for
+even pages, after the very last page of the report; even after the
+index if there is one. It is intended to make it possible to
+include a back cover, so @Code "@PageOf last.page" does not take
+account of any @Code "@AtEnd" page.
+@PP
+The remaining options (except {@Code "@Abstract"}) are setup file options
+(Section {@NumberOf setup}) that frequently need to be changed. If your
+changes to the overall formatting are confined to these options, you can
+change them here and avoid having your own setup file. If you already have
+your own setup file, change them in either place and omit them in
+the other.
+@PP
+If @Code "@CoverSheet" is {@Code Yes}, an unnumbered cover
+cover.sheet. @Index @Code "@CoverSheet"
+sheet will be produced containing the title, author, institution,
+abstract, and dateline. Otherwise they will appear on the
+first page. The `cover sheet' is in reality a sequence of Intro pages
+(Section {@NumberOf headers}), numbered by default with Roman numerals
+on pages after the first.
+@PP
+In order to get a table of contents, it is necessary to use your
+own setup file (Section {@NumberOf setup} explains how to do this)
+and to set the @Code "@MakeContents" option within it to
+{@Code Yes}. The table of contents will ordinarily appear beginning
+on the first page, but if the @Code "@ContentsSeparate" option of
+@Code "@Report" is
+contents.separate @Index @Code "@ContentsSeparate"
+set to @Code "Yes" it will appear on separate pages.
+@PP
+@Code "@InitialFont" is the font of the bulk of the report,
+and should contain a family, a face, and a size. The default
+value selects the Times family, the Base face, and the 12 point size.
+@PP
+@Code "@InitialBreak" controls the behaviour of paragraph breaking in
+the bulk of the report. It should have three parts: a paragraph
+breaking style ({@Code adjust}, {@Code ragged}, etc.), an inter-line
+spacing ({@Code "1.2fx"} for single spacing, {@Code "2.4fx"} for
+double spacing, and so on), and either @Code "hyphen" or
+@Code "nohyphen" for turning hyphenation on or off. It may also
+have @Code "nobreakfirst" or @Code "nobreaklast" (or both), meaning
+to disallow a page break after the first line of a paragraph, or
+before the last, respectively.
+@PP
+@Code "@InitialSpace" determines how Lout treats white space between
+two objects, as described in Section
+{@NumberOf white}. @Code "@InitialLanguage" determines the language
+of the bulk of the report.
+@PP
+@Code "@PageOrientation" determines the orientation of the page. Its
+value may be {@Code Portrait} (the default), {@Code Landscape},
+{@Code ReversePortrait}, or {@Code ReverseLandscape}. See
+Section {@NumberOf pagesize} for further details.
+@PP
+@Code "@PageHeaders" determines the appearance of page headers and
+footers. Its value may be {@Code None},
+{@Code Simple}, {@Code Titles}, or {@Code NoTitles}. Section
+{@NumberOf headers} has the details, but just briefly, {@Code None}
+produces no page headers, {@Code Simple} produces a centred page number
+between hyphens on every page except the cover sheet and the first
+page, @Code Titles produces full running titles as in the present
+document, and @Code "NoTitles" is like @Code "Titles" with the running
+titles omitted, leaving just the page numbers.
+@PP
+@Code "@ColumnNumber" is the number of columns per page in the bulk of
+the report, and may be anything from {@Code 1} (the default value) to
+{@Code 10}. However, there is nothing analogous to the @Code "@FullWidth"
+symbol of ordinary documents. Instead, the cover sheet, title material,
+and all figures and tables will be printed full width, and the rest will
+be set in columns. There is a separate @Code "@IndexColumnNumber" option
+in the setup file which determines the number of columns in the index
+(Section {@NumberOf indexes}).
+@PP
+@Code "@FirstPageNumber" is the page number given to the first page.
+@PP
+Lout ordinarily places lines onto a page until space runs out, then moves
+to the next page and so on. This often produces ugly empty spaces at
+the bottoms of pages preceding large unbreakable displays. Setting the
+@Code "@OptimizePages" option to {@Code "Yes"} causes Lout to examine the
+overall situation and try to minimize the ugliness, using the @TeX
+optimal paragraph breaking algorithm. It takes two runs to do this,
+with intermediate results stored in Lout's cross reference database
+(Section {@NumberOf cross}); so deleting file {@Code lout.li} will reset
+it, which might be wise after major changes. It is possible for the
+optimizer to cycle, never settling on a single final best version; this
+is usually caused by footnotes or floating figures inserted at points
+which end up near page boundaries.
+@PP
+Finally we have three options that control the abstract.
+@Code "@AbstractDisplay" may be @Code { Yes } or {@Code No};
+it determines whether the abstract is displayed (occupying
+the full page width except for an indent at each side like a quoted
+display) or inline (occupying the column width). There is a more
+general option, {@Code "@AbstractFormat"}, in the setup file that
+offers more formatting choices. @Code "@AbstractTitle" is the title
+of the abstract; its default value is @Code Abstract or its equivalent
+in the current language. Finally, @Code "@Abstract" contains the
+abstract. @Index @Code "@Abstract"
+abstract itself; it may be empty or absent, in which case there will
+be no abstract. The abstract may contain footnotes in the usual way.
+@PP
+The {@Code "@GlossaryText"}, {@Code "@IndexText"}, {@Code "@IndexAText"},
+and {@Code "@IndexBText"} symbols allow you to insert some arbitrary
+text after the title of the glossary, index, etc., and before the
+entries.
+@PP
+After the compulsory {@Code "//"} comes the report body in the
+form of a sequence of sections:
+section.reports @SubIndex { in reports }
+@ID @OneRow @Code {
+"@Section"
+" @Title { Introduction }"
+"@Begin"
+"@PP"
+"..."
+"@End @Section"
+}
+No @Code "@BeginSections" or @Code "@EndSections" symbols are needed. The
+beginsections.reports @SubIndex { in reports }
+endsections.reports @SubIndex { in reports }
+general rule is that you need these bracketing symbols only when you are
+inside something else. Sections lie inside @Code "@Text" in ordinary
+documents, but they don't lie inside anything else in technical reports.
+@PP
+A section may have subsections, between
+subsection.reports @SubIndex { in reports }
+beginsubsections.reports @SubIndex { in reports }
+endsubsections.reports @SubIndex { in reports }
+@Code "@BeginSubSections" and {@Code "@EndSubSections"}:
+@ID @OneRow @Code {
+"preceding text"
+"@BeginSubSections"
+"@SubSection ... @End @SubSection"
+"@SubSection ... @End @SubSection"
+"..."
+"@SubSection ... @End @SubSection"
+"@EndSubSections"
+}
+Within each subsection there may be sub-subsections, each introduced
+by {@Code "@SubSubSection"}, with the whole sequence bracketed by
+subsubsection.reports @SubIndex { in reports }
+beginsubsubsections.reports @SubIndex { in reports }
+endsubsubsections.reports @SubIndex { in reports }
+@Code "@BeginSubSubSections" and {@Code "@EndSubSubSections"}:
+@ID @OneRow @Code {
+"preceding text"
+"@BeginSubSubSections"
+"@SubSubSection ... @End @SubSubSection"
+"@SubSubSection ... @End @SubSubSection"
+"..."
+"@SubSubSection ... @End @SubSubSection"
+"@EndSubSubSections"
+}
+There are no sub-sub-subsections.
+@PP
+After the sections comes an optional sequence of appendices:
+appendix.reports @SubIndex { in technical reports }
+@ID @OneRow @Code {
+"@Appendix"
+" @Title { Derivation of the renewal formula }"
+"@Begin"
+"@PP"
+"..."
+"@End @Appendix"
+}
+No @Code "@BeginAppendices" or @Code "@EndAppendices" symbols are needed,
+beginappendices.reports @SubIndex { in reports }
+endappendices.reports @SubIndex { in reports }
+because (like the sections above) these appendices do not lie inside
+any other large-scale structure symbol. The appendices are numbered
+A, B, C, etc., as is conventional for them. Within each appendix
+there may be a sequence of subappendices, obtained with the
+@Code "@SubAppendix" symbol and bracketed by @Code "@BeginSubAppendices"
+subappendix.reports @SubIndex { in reports }
+beginsubappendices.reports @SubIndex { in reports }
+endsubappendices.reports @SubIndex { in reports }
+and {@Code "@EndSubAppendices"}:
+@ID @OneRow @Code {
+"preceding text"
+"@BeginSubAppendices"
+"@SubAppendix ... @End @SubAppendix"
+"@SubAppendix ... @End @SubAppendix"
+"..."
+"@SubAppendix ... @End @SubAppendix"
+"@EndSubAppendices"
+}
+There are sub-subappendices following the same pattern, but no
+subsubappendix.reports @SubIndex { in reports }
+beginsubsubappendices.reports @SubIndex { in reports }
+endsubsubappendices.reports @SubIndex { in reports }
+sub-sub-subappendices.
+@PP
+The report ends with the last section or appendix; any reference list or
+index will be appended automatically. Although we have described how to
+create reports as though everything was in one large file, in practice it
+is much better to divide the report into multiple files, following the
+method given in Section {@NumberOf organizing}.
+@PP
+In addition to the {@Code "@Title"} option, each large-scale structure
+symbol ({@Code "@Section"}, {@Code "@SubSection"}, {@Code "@SubSubSection"},
+{@Code "@Appendix"}, {@Code "@SubAppendix"},
+and {@Code "@SubSubAppendix"}) has a @Code "@Tag" option for cross
+referencing (Section {@NumberOf cross}), an @Code "@InitialLanguage"
+option for changing the language of that part of the document, and a
+@Code "@RunningTitle" option which will be used in place of @Code "@Title"
+in running headers if given. @Code "@RunningTitle" is useful when the
+full title is rather long.
+@PP
+The features described in other chapters are all available within
+technical reports. To get a table of contents, change the @Code
+"@MakeContents" option in the setup file to {@Code Yes}; the rest is
+automatic, and you don't need the @Code "@ContentsGoesHere" symbol from
+ordinary documents. To get an index, again you need only change the
+@Code "@MakeIndex" setup file option to {@Code Yes}. Endnotes and
+references appear at the end of the report. Figures and tables are
+numbered 1, 2, 3, etc.
+@PP
+Within the @Code "report" setup file there is a @Code "@ReportSetup"
+symbol whose options control the appearance of features specific to
+report.setup @Index @Code "@ReportSetup"
+reports (in other words, the features described in this section). Section
+{@NumberOf setup} explains setup files and their options in general; here
+is a representative sample of these options, showing their default values:
+@ID @OneRow @Code {
+"@Use { @ReportSetup"
+" # @CoverSheet { Yes }"
+" # @DateLine { No }"
+" # @ReferencesBeforeAppendices { No }"
+" # @AbstractWord { abstract }"
+" # @ContentsWord { contents }"
+" # @SectionNumbers { Arabic }"
+" # @SectionHeadingFont { Bold }"
+" # @SectionGap { 2.00v }"
+" # @SectionInContents { Yes }"
+" # @SectionContentsIndent { 0f }"
+"}"
+}
+@Code "@CoverSheet" and @Code "@DateLine" are as for {@Code "@Report"};
+you can set them in either place as you prefer. @Code
+"@ReferencesBeforeAppendices" determines whether the reference list is
+printed out before or after any appendices. @Code "@AbstractWord"
+determines the value of the title of the abstract if none is given there;
+its default value, {@Code abstract}, produces `Abstract' in the current
+language. @Code "@ContentsWord" is similar; its default value produces
+`Contents' in the current language. The other four options
+control the appearance of sections, and there are similar options for
+controlling the other large-scale structure symbols.
+@PP
+@Code "@SectionNumbers" determines how sections will be numbered, and may
+be @Code { None }, @Code { Arabic }, @Code { Roman }, @Code { UCRoman },
+@Code { Alpha }, or @Code { UCAlpha }. The default value is @Code Arabic
+for sections, and also for all large-scale structure symbols except
+appendices, for which it is {@Code UCAlpha}. This produces the appendices
+numbered in upper-case letters (A, B, C, etc.) that were mentioned earlier.
+@PP
+@Code "@SectionHeadingFont" is the font of section headings. The
+default value shown above produces the bold face from the family
+of the initial font. A family name and size is acceptable:
+@ID @Code "@SectionHeadingFont { Helvetica Base +2p }"
+produces section headings in the Helvetica font, two points larger
+than the initial font size.
+@PP
+@Code "@SectionGap" determines how much space is left blank before each
+section title; the default value shown above is twice the current
+inter-line spacing. The special value @Code "2b" may be used to get a
+page break rather than a space. @Code "@SectionInContents" determines
+whether or not an entry is made in the table of contents for each section;
+it may be @Code Yes or {@Code No}. @Code "@SectionContentsIndent"
+determines how far the contents entry is indented from the left
+margin if printed at all. There are similar options for other
+large-scale structure symbols.
+@End @Section
diff --git a/doc/doc/user/vbas b/doc/doc/user/vbas
new file mode 100755
index 0000000..0004cfb
--- /dev/null
+++ b/doc/doc/user/vbas
@@ -0,0 +1,3 @@
+vi bas bas_star bas_objs bas_spac bas_char bas_empt bas_font bas_head \
+ bas_par1 bas_par2 bas_line bas_hyph bas_unde bas_date bas_lang \
+ bas_supe bas_verb bas_drop bas_conv
diff --git a/doc/doc/user/vbgr b/doc/doc/user/vbgr
new file mode 100755
index 0000000..be6461c
--- /dev/null
+++ b/doc/doc/user/vbgr
@@ -0,0 +1,11 @@
+gvim bgr
+gvim bgr_colo
+gvim bgr_text
+gvim bgr_boxs
+gvim bgr_outl
+gvim bgr_rota
+gvim bgr_scal
+gvim bgr_clip
+gvim bgr_mirr
+gvim bgr_incl
+gvim bgr_prec
diff --git a/doc/doc/user/vdia b/doc/doc/user/vdia
new file mode 100755
index 0000000..27c456c
--- /dev/null
+++ b/doc/doc/user/vdia
@@ -0,0 +1,13 @@
+gvim dia
+gvim dia_intr
+gvim dia_node
+gvim dia_link
+gvim dia_tags
+gvim dia_labe
+gvim dia_posi
+gvim dia_tree
+gvim dia_synt
+gvim dia_erro
+gvim dia_defi
+gvim dia_geom
+gvim dia_summ
diff --git a/doc/doc/user/vequ b/doc/doc/user/vequ
new file mode 100755
index 0000000..87cdf93
--- /dev/null
+++ b/doc/doc/user/vequ
@@ -0,0 +1,9 @@
+gvim equ
+gvim equ_intr
+gvim equ_symb
+gvim equ_vert
+gvim equ_spac
+gvim equ_disp
+gvim equ_defs
+gvim equ_summ
+gvim equ_tequ
diff --git a/doc/doc/user/vfmt b/doc/doc/user/vfmt
new file mode 100755
index 0000000..3e6af88
--- /dev/null
+++ b/doc/doc/user/vfmt
@@ -0,0 +1,5 @@
+gvim fmt
+gvim fmt_setu
+gvim fmt_size
+gvim fmt_marg
+gvim fmt_head
diff --git a/doc/doc/user/vgra b/doc/doc/user/vgra
new file mode 100755
index 0000000..60b9b5b
--- /dev/null
+++ b/doc/doc/user/vgra
@@ -0,0 +1,2 @@
+gvt gra gra_intr gra_over gra_capt gra_tick gra_data gra_plac gra_func \
+ gra_keys gra_erro gra_summ
diff --git a/doc/doc/user/vmat b/doc/doc/user/vmat
new file mode 100755
index 0000000..9241985
--- /dev/null
+++ b/doc/doc/user/vmat
@@ -0,0 +1 @@
+gvt mat mat_intr mat_comm mat_matr mat_disp mat_defs mat_summ
diff --git a/doc/doc/user/vpie b/doc/doc/user/vpie
new file mode 100755
index 0000000..5f9e2e4
--- /dev/null
+++ b/doc/doc/user/vpie
@@ -0,0 +1,15 @@
+gvim pie
+sleep 2
+gvim pie_intr
+sleep 2
+gvim pie_slic
+sleep 2
+gvim pie_over
+sleep 2
+gvim pie_capt
+sleep 2
+gvim pie_labe
+sleep 2
+gvim pie_erro
+sleep 2
+gvim pie_summ
diff --git a/doc/doc/user/vprg b/doc/doc/user/vprg
new file mode 100755
index 0000000..81c0abe
--- /dev/null
+++ b/doc/doc/user/vprg
@@ -0,0 +1,2 @@
+gvt prg prg_lone prg_embe prg_opti prg_chan prg_tabs prg_form \
+ prg_comm prg_prog prg_pipe prg_erro prg_perl
diff --git a/doc/doc/user/vref b/doc/doc/user/vref
new file mode 100755
index 0000000..7e85672
--- /dev/null
+++ b/doc/doc/user/vref
@@ -0,0 +1,7 @@
+gvim ref
+gvim ref_sett
+gvim ref_cite
+gvim ref_labe
+gvim ref_entr
+gvim ref_chan
+gvim ref_crea
diff --git a/doc/doc/user/vstr b/doc/doc/user/vstr
new file mode 100755
index 0000000..7f4e2d0
--- /dev/null
+++ b/doc/doc/user/vstr
@@ -0,0 +1,2 @@
+vi str str_disp str_list str_foot str_marg str_theo str_figs str_larg \
+ str_cros str_cont str_indx str_colu str_defs
diff --git a/doc/doc/user/vtbl b/doc/doc/user/vtbl
new file mode 100755
index 0000000..68159ce
--- /dev/null
+++ b/doc/doc/user/vtbl
@@ -0,0 +1,15 @@
+gvim tbl
+gvim tbl_intr
+gvim tbl_cell
+gvim tbl_rows
+gvim tbl_rule
+gvim tbl_marg
+gvim tbl_widt
+gvim tbl_inde
+gvim tbl_alig
+gvim tbl_span
+gvim tbl_mark
+gvim tbl_mult
+gvim tbl_plai
+gvim tbl_setu
+gvim tbl_summ
diff --git a/doc/doc/user/vtyp b/doc/doc/user/vtyp
new file mode 100755
index 0000000..a360b04
--- /dev/null
+++ b/doc/doc/user/vtyp
@@ -0,0 +1,2 @@
+gvim typ typ_ordi typ_repo typ_book typ_over typ_illu typ_plai \
+ typ_apdf typ_orga
diff --git a/externs.h b/externs.h
index 76450c9..4b1fc0e 100644
--- a/externs.h
+++ b/externs.h
@@ -95,7 +95,7 @@ extern nl_catd MsgCat;
/* */
/*****************************************************************************/
-#define LOUT_VERSION AsciiToFull("Basser Lout Version 3.39 (September 2010)")
+#define LOUT_VERSION AsciiToFull("Basser Lout Version 3.40 (June 2013)")
#define CROSS_DB AsciiToFull("lout")
#define SOURCE_SUFFIX AsciiToFull(".lt")
#define INDEX_SUFFIX AsciiToFull(".li")
diff --git a/font/font/00README b/font/font/00README
new file mode 100644
index 0000000..6b639f7
--- /dev/null
+++ b/font/font/00README
@@ -0,0 +1,25 @@
+Directory lout/font - font metrics files
+
+This directory contains Adobe Systems font metrics (formerly .AFM)
+files for all the fonts mentioned in file lout/include/fontdefs. These
+files are the source of Lout's information about the height and width
+of all characters. The files are exactly as distributed publicly by
+Adobe Systems except that erroneous ligature information has been
+removed from the four Courier font files.
+
+In addition, for every Adobe Systems font file, (call it FF) there is
+a companion file FF+ containing supplementary character definitions and
+composite character definitions sufficient to support Latin2 without any
+need to obtain Latin2 fonts. These files follow a format established
+by Version 3.21 of Lout, and were supplied by Jaroslav Serdula.
+
+Lout is informed of the existence of these files by means of a database
+of @FontDef symbols. Two such are supplied with Lout, in directory
+$(LOUTLIB)/data: fontdefs.ld and latin2.ld.
+
+All file names were previously reduced to a maximum of 8 characters,
+for portability to the DOS operating system. Now some of the FF+
+files have nine characters again. Let me know if this is a problem.
+
+Jeffrey H. Kingston
+10 May 2000
diff --git a/font/font/AG-Bd b/font/font/AG-Bd
new file mode 100644
index 0000000..f0753fb
--- /dev/null
+++ b/font/font/AG-Bd
@@ -0,0 +1,571 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1991 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Mon Mar 4 13:54:47 1991
+Comment UniqueID 34376
+Comment VMusage 26102 32994
+FontName AvantGarde-Bold
+FullName ITC Avant Garde Gothic Bold
+FamilyName ITC Avant Garde Gothic
+Weight Bold
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -118 -271 1222 1017
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.000
+Notice Copyright (c) 1991 Adobe Systems Incorporated. All Rights Reserved.ITC Avant Garde Gothic is a registered trademark of International Typeface Corporation.
+EncodingScheme AdobeStandardEncoding
+CapHeight 740
+XHeight 555
+Ascender 740
+Descender -185
+StartCharMetrics 228
+C 32 ; WX 309 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 333 ; N exclam ; B 81 0 252 740 ;
+C 34 ; WX 463 ; N quotedbl ; B 34 443 429 740 ;
+C 35 ; WX 618 ; N numbersign ; B 31 45 588 672 ;
+C 36 ; WX 618 ; N dollar ; B 80 -76 538 811 ;
+C 37 ; WX 858 ; N percent ; B 36 -15 822 755 ;
+C 38 ; WX 758 ; N ampersand ; B 49 -15 729 754 ;
+C 39 ; WX 314 ; N quoteright ; B 70 409 244 740 ;
+C 40 ; WX 473 ; N parenleft ; B 65 -264 430 754 ;
+C 41 ; WX 473 ; N parenright ; B 43 -264 408 754 ;
+C 42 ; WX 670 ; N asterisk ; B 115 318 555 740 ;
+C 43 ; WX 600 ; N plus ; B 48 0 552 506 ;
+C 44 ; WX 314 ; N comma ; B 71 -161 244 170 ;
+C 45 ; WX 281 ; N hyphen ; B 0 207 281 370 ;
+C 46 ; WX 314 ; N period ; B 71 0 244 170 ;
+C 47 ; WX 593 ; N slash ; B 72 -100 521 740 ;
+C 48 ; WX 618 ; N zero ; B 33 -14 585 754 ;
+C 49 ; WX 618 ; N one ; B 104 0 414 740 ;
+C 50 ; WX 618 ; N two ; B 44 0 573 754 ;
+C 51 ; WX 618 ; N three ; B 33 -14 579 754 ;
+C 52 ; WX 618 ; N four ; B 15 0 604 740 ;
+C 53 ; WX 618 ; N five ; B 26 -15 592 740 ;
+C 54 ; WX 618 ; N six ; B 21 -14 600 740 ;
+C 55 ; WX 618 ; N seven ; B 65 0 547 740 ;
+C 56 ; WX 618 ; N eight ; B 39 -14 579 754 ;
+C 57 ; WX 618 ; N nine ; B 20 0 602 754 ;
+C 58 ; WX 314 ; N colon ; B 71 0 244 555 ;
+C 59 ; WX 314 ; N semicolon ; B 71 -161 244 555 ;
+C 60 ; WX 600 ; N less ; B 46 -38 554 544 ;
+C 61 ; WX 600 ; N equal ; B 48 41 552 465 ;
+C 62 ; WX 600 ; N greater ; B 46 -38 554 544 ;
+C 63 ; WX 592 ; N question ; B 48 0 551 754 ;
+C 64 ; WX 748 ; N at ; B -3 -16 743 756 ;
+C 65 ; WX 758 ; N A ; B 9 0 749 740 ;
+C 66 ; WX 647 ; N B ; B 67 0 612 740 ;
+C 67 ; WX 832 ; N C ; B 37 -14 801 754 ;
+C 68 ; WX 742 ; N D ; B 57 0 697 740 ;
+C 69 ; WX 528 ; N E ; B 67 0 478 740 ;
+C 70 ; WX 506 ; N F ; B 67 0 471 740 ;
+C 71 ; WX 854 ; N G ; B 35 -15 823 754 ;
+C 72 ; WX 754 ; N H ; B 67 0 687 740 ;
+C 73 ; WX 323 ; N I ; B 67 0 256 740 ;
+C 74 ; WX 578 ; N J ; B 6 -14 510 740 ;
+C 75 ; WX 707 ; N K ; B 87 0 701 740 ;
+C 76 ; WX 487 ; N L ; B 72 0 480 740 ;
+C 77 ; WX 915 ; N M ; B 67 0 848 740 ;
+C 78 ; WX 759 ; N N ; B 67 0 691 740 ;
+C 79 ; WX 851 ; N O ; B 35 -14 816 754 ;
+C 80 ; WX 636 ; N P ; B 67 0 624 740 ;
+C 81 ; WX 866 ; N Q ; B 35 -15 855 754 ;
+C 82 ; WX 653 ; N R ; B 67 0 637 740 ;
+C 83 ; WX 573 ; N S ; B 25 -14 550 754 ;
+C 84 ; WX 499 ; N T ; B 10 0 490 740 ;
+C 85 ; WX 698 ; N U ; B 65 -14 633 740 ;
+C 86 ; WX 722 ; N V ; B 16 0 706 740 ;
+C 87 ; WX 981 ; N W ; B 16 0 964 740 ;
+C 88 ; WX 759 ; N X ; B 11 0 748 740 ;
+C 89 ; WX 647 ; N Y ; B 9 0 638 740 ;
+C 90 ; WX 499 ; N Z ; B 16 0 483 740 ;
+C 91 ; WX 473 ; N bracketleft ; B 104 -264 401 754 ;
+C 92 ; WX 593 ; N backslash ; B 72 -100 521 740 ;
+C 93 ; WX 473 ; N bracketright ; B 72 -264 369 754 ;
+C 94 ; WX 600 ; N asciicircum ; B 43 375 557 740 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 314 ; N quoteleft ; B 70 409 244 740 ;
+C 97 ; WX 704 ; N a ; B 34 -19 643 574 ;
+C 98 ; WX 693 ; N b ; B 60 -19 660 740 ;
+C 99 ; WX 652 ; N c ; B 33 -18 621 574 ;
+C 100 ; WX 698 ; N d ; B 34 -18 638 740 ;
+C 101 ; WX 646 ; N e ; B 30 -18 614 574 ;
+C 102 ; WX 314 ; N f ; B 4 0 302 754 ; L i fi ; L l fl ;
+C 103 ; WX 693 ; N g ; B 34 -247 635 573 ;
+C 104 ; WX 632 ; N h ; B 60 0 574 740 ;
+C 105 ; WX 286 ; N i ; B 60 0 226 740 ;
+C 106 ; WX 321 ; N j ; B 6 -204 253 740 ;
+C 107 ; WX 591 ; N k ; B 66 0 585 740 ;
+C 108 ; WX 286 ; N l ; B 60 0 226 740 ;
+C 109 ; WX 969 ; N m ; B 60 0 912 574 ;
+C 110 ; WX 632 ; N n ; B 60 0 574 574 ;
+C 111 ; WX 666 ; N o ; B 34 -17 632 573 ;
+C 112 ; WX 697 ; N p ; B 60 -185 663 574 ;
+C 113 ; WX 698 ; N q ; B 34 -185 638 574 ;
+C 114 ; WX 363 ; N r ; B 59 0 356 574 ;
+C 115 ; WX 499 ; N s ; B 24 -19 476 574 ;
+C 116 ; WX 351 ; N t ; B 11 0 339 740 ;
+C 117 ; WX 634 ; N u ; B 58 -18 574 555 ;
+C 118 ; WX 592 ; N v ; B 17 0 575 555 ;
+C 119 ; WX 850 ; N w ; B 7 0 843 555 ;
+C 120 ; WX 630 ; N x ; B 1 0 628 555 ;
+C 121 ; WX 574 ; N y ; B 1 -185 573 555 ;
+C 122 ; WX 444 ; N z ; B 15 0 428 555 ;
+C 123 ; WX 554 ; N braceleft ; B 105 -264 483 740 ;
+C 124 ; WX 555 ; N bar ; B 186 -100 369 740 ;
+C 125 ; WX 554 ; N braceright ; B 71 -264 449 740 ;
+C 126 ; WX 600 ; N asciitilde ; B 67 130 533 377 ;
+C 161 ; WX 333 ; N exclamdown ; B 81 -185 252 555 ;
+C 162 ; WX 618 ; N cent ; B 62 31 556 720 ;
+C 163 ; WX 618 ; N sterling ; B 14 0 618 755 ;
+C 164 ; WX 211 ; N fraction ; B -118 0 329 740 ;
+C 165 ; WX 618 ; N yen ; B 1 0 618 740 ;
+C 166 ; WX 618 ; N florin ; B 25 -152 547 818 ;
+C 167 ; WX 670 ; N section ; B 40 -271 630 754 ;
+C 168 ; WX 618 ; N currency ; B 0 38 618 651 ;
+C 169 ; WX 242 ; N quotesingle ; B 34 443 208 740 ;
+C 170 ; WX 555 ; N quotedblleft ; B 67 409 488 740 ;
+C 171 ; WX 422 ; N guillemotleft ; B 47 103 375 474 ;
+C 172 ; WX 222 ; N guilsinglleft ; B 47 103 175 474 ;
+C 173 ; WX 222 ; N guilsinglright ; B 47 103 175 474 ;
+C 174 ; WX 601 ; N fi ; B 4 0 541 754 ;
+C 175 ; WX 601 ; N fl ; B 4 0 541 754 ;
+C 177 ; WX 500 ; N endash ; B 35 207 465 370 ;
+C 178 ; WX 670 ; N dagger ; B 98 -244 572 740 ;
+C 179 ; WX 670 ; N daggerdbl ; B 98 -244 572 740 ;
+C 180 ; WX 314 ; N periodcentered ; B 71 168 244 338 ;
+C 182 ; WX 701 ; N paragraph ; B -7 -103 607 740 ;
+C 183 ; WX 739 ; N bullet ; B 217 222 522 532 ;
+C 184 ; WX 314 ; N quotesinglbase ; B 70 -161 244 170 ;
+C 185 ; WX 555 ; N quotedblbase ; B 67 -161 488 170 ;
+C 186 ; WX 555 ; N quotedblright ; B 67 409 488 740 ;
+C 187 ; WX 422 ; N guillemotright ; B 47 103 375 474 ;
+C 188 ; WX 1000 ; N ellipsis ; B 81 0 920 170 ;
+C 189 ; WX 1258 ; N perthousand ; B 36 -15 1222 755 ;
+C 191 ; WX 592 ; N questiondown ; B 41 -200 543 555 ;
+C 193 ; WX 555 ; N grave ; B 111 614 404 839 ;
+C 194 ; WX 555 ; N acute ; B 151 621 444 848 ;
+C 195 ; WX 555 ; N circumflex ; B 70 640 484 806 ;
+C 196 ; WX 555 ; N tilde ; B 75 651 480 781 ;
+C 197 ; WX 555 ; N macron ; B 98 658 457 784 ;
+C 198 ; WX 555 ; N breve ; B 71 644 483 788 ;
+C 199 ; WX 555 ; N dotaccent ; B 198 644 357 795 ;
+C 200 ; WX 555 ; N dieresis ; B 81 644 473 795 ;
+C 202 ; WX 555 ; N ring ; B 151 600 403 852 ;
+C 203 ; WX 555 ; N cedilla ; B 167 -245 388 0 ;
+C 205 ; WX 555 ; N hungarumlaut ; B 102 600 493 832 ;
+C 206 ; WX 555 ; N ogonek ; B 175 -206 380 0 ;
+C 207 ; WX 555 ; N caron ; B 70 633 484 799 ;
+C 208 ; WX 1000 ; N emdash ; B 35 207 965 370 ;
+C 225 ; WX 975 ; N AE ; B -10 0 925 740 ;
+C 227 ; WX 385 ; N ordfeminine ; B 19 448 333 754 ;
+C 232 ; WX 487 ; N Lslash ; B 7 0 480 740 ;
+C 233 ; WX 851 ; N Oslash ; B 35 -63 816 806 ;
+C 234 ; WX 1085 ; N OE ; B 35 -14 1035 754 ;
+C 235 ; WX 385 ; N ordmasculine ; B 37 448 347 754 ;
+C 241 ; WX 1091 ; N ae ; B 34 -18 1059 574 ;
+C 245 ; WX 286 ; N dotlessi ; B 60 0 226 555 ;
+C 248 ; WX 342 ; N lslash ; B 25 0 317 740 ;
+C 249 ; WX 666 ; N oslash ; B 34 -83 632 633 ;
+C 250 ; WX 1076 ; N oe ; B 34 -19 1045 574 ;
+C 251 ; WX 694 ; N germandbls ; B 58 -18 660 759 ;
+C -1 ; WX 646 ; N ecircumflex ; B 30 -18 614 806 ;
+C -1 ; WX 646 ; N edieresis ; B 30 -18 614 795 ;
+C -1 ; WX 704 ; N aacute ; B 34 -19 643 848 ;
+C -1 ; WX 800 ; N registered ; B 18 -14 783 754 ;
+C -1 ; WX 286 ; N icircumflex ; B -64 0 350 806 ;
+C -1 ; WX 634 ; N udieresis ; B 58 -18 574 795 ;
+C -1 ; WX 666 ; N ograve ; B 34 -17 632 839 ;
+C -1 ; WX 634 ; N uacute ; B 58 -18 574 848 ;
+C -1 ; WX 634 ; N ucircumflex ; B 58 -18 574 806 ;
+C -1 ; WX 758 ; N Aacute ; B 9 0 749 993 ;
+C -1 ; WX 286 ; N igrave ; B -48 0 245 839 ;
+C -1 ; WX 323 ; N Icircumflex ; B -46 0 368 971 ;
+C -1 ; WX 652 ; N ccedilla ; B 33 -245 621 574 ;
+C -1 ; WX 704 ; N adieresis ; B 34 -19 643 795 ;
+C -1 ; WX 528 ; N Ecircumflex ; B 57 0 478 971 ;
+C -1 ; WX 499 ; N scaron ; B 24 -19 476 799 ;
+C -1 ; WX 695 ; N thorn ; B 59 -185 663 740 ;
+C -1 ; WX 990 ; N trademark ; B 21 296 879 740 ;
+C -1 ; WX 646 ; N egrave ; B 30 -18 614 839 ;
+C -1 ; WX 407 ; N threesuperior ; B 22 287 379 749 ;
+C -1 ; WX 444 ; N zcaron ; B 15 0 454 799 ;
+C -1 ; WX 704 ; N atilde ; B 34 -19 643 781 ;
+C -1 ; WX 704 ; N aring ; B 34 -19 643 852 ;
+C -1 ; WX 666 ; N ocircumflex ; B 34 -17 632 806 ;
+C -1 ; WX 528 ; N Edieresis ; B 67 0 478 960 ;
+C -1 ; WX 1000 ; N threequarters ; B 41 0 959 749 ;
+C -1 ; WX 574 ; N ydieresis ; B 1 -185 573 795 ;
+C -1 ; WX 574 ; N yacute ; B 1 -185 573 848 ;
+C -1 ; WX 286 ; N iacute ; B 42 0 335 848 ;
+C -1 ; WX 758 ; N Acircumflex ; B 9 0 749 951 ;
+C -1 ; WX 698 ; N Uacute ; B 65 -14 633 1013 ;
+C -1 ; WX 646 ; N eacute ; B 30 -18 614 848 ;
+C -1 ; WX 851 ; N Ograve ; B 35 -14 816 1004 ;
+C -1 ; WX 704 ; N agrave ; B 34 -19 643 839 ;
+C -1 ; WX 698 ; N Udieresis ; B 65 -14 633 960 ;
+C -1 ; WX 704 ; N acircumflex ; B 34 -19 643 806 ;
+C -1 ; WX 323 ; N Igrave ; B -30 0 263 1004 ;
+C -1 ; WX 407 ; N twosuperior ; B 30 296 376 749 ;
+C -1 ; WX 698 ; N Ugrave ; B 65 -14 633 1004 ;
+C -1 ; WX 900 ; N onequarter ; B 48 0 851 740 ;
+C -1 ; WX 698 ; N Ucircumflex ; B 65 -14 633 971 ;
+C -1 ; WX 573 ; N Scaron ; B 25 -14 550 964 ;
+C -1 ; WX 323 ; N Idieresis ; B -35 0 357 960 ;
+C -1 ; WX 286 ; N idieresis ; B -53 0 339 795 ;
+C -1 ; WX 528 ; N Egrave ; B 67 0 478 1004 ;
+C -1 ; WX 851 ; N Oacute ; B 35 -14 816 1013 ;
+C -1 ; WX 600 ; N divide ; B 48 -57 552 563 ;
+C -1 ; WX 758 ; N Atilde ; B 9 0 749 946 ;
+C -1 ; WX 758 ; N Aring ; B 9 0 749 1017 ;
+C -1 ; WX 851 ; N Odieresis ; B 35 -14 816 960 ;
+C -1 ; WX 758 ; N Adieresis ; B 9 0 749 940 ;
+C -1 ; WX 759 ; N Ntilde ; B 67 0 691 946 ;
+C -1 ; WX 499 ; N Zcaron ; B 16 0 483 964 ;
+C -1 ; WX 636 ; N Thorn ; B 67 0 624 740 ;
+C -1 ; WX 323 ; N Iacute ; B 60 0 353 1013 ;
+C -1 ; WX 600 ; N plusminus ; B 48 -82 552 556 ;
+C -1 ; WX 600 ; N multiply ; B 56 0 544 487 ;
+C -1 ; WX 528 ; N Eacute ; B 67 0 478 1013 ;
+C -1 ; WX 647 ; N Ydieresis ; B 9 0 638 960 ;
+C -1 ; WX 407 ; N onesuperior ; B 69 296 270 740 ;
+C -1 ; WX 634 ; N ugrave ; B 58 -18 574 839 ;
+C -1 ; WX 600 ; N logicalnot ; B 33 108 557 445 ;
+C -1 ; WX 632 ; N ntilde ; B 60 0 574 781 ;
+C -1 ; WX 851 ; N Otilde ; B 35 -14 816 946 ;
+C -1 ; WX 666 ; N otilde ; B 34 -17 632 781 ;
+C -1 ; WX 832 ; N Ccedilla ; B 37 -245 801 754 ;
+C -1 ; WX 758 ; N Agrave ; B 9 0 749 984 ;
+C -1 ; WX 920 ; N onehalf ; B 48 0 872 740 ;
+C -1 ; WX 742 ; N Eth ; B 0 0 707 740 ;
+C -1 ; WX 400 ; N degree ; B 57 426 343 712 ;
+C -1 ; WX 647 ; N Yacute ; B 9 0 638 1013 ;
+C -1 ; WX 851 ; N Ocircumflex ; B 35 -14 816 971 ;
+C -1 ; WX 666 ; N oacute ; B 34 -17 632 848 ;
+C -1 ; WX 634 ; N mu ; B 52 -190 581 555 ;
+C -1 ; WX 600 ; N minus ; B 48 173 552 333 ;
+C -1 ; WX 666 ; N eth ; B 34 -17 632 756 ;
+C -1 ; WX 666 ; N odieresis ; B 34 -17 632 795 ;
+C -1 ; WX 800 ; N copyright ; B 18 -14 783 754 ;
+C -1 ; WX 555 ; N brokenbar ; B 186 -100 369 740 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 213
+
+KPX A y -68
+KPX A w -65
+KPX A v -70
+KPX A u -20
+KPX A quoteright -50
+KPX A quotedblright -50
+KPX A Y -80
+KPX A W -60
+KPX A V -102
+KPX A U -40
+KPX A T -25
+KPX A Q -50
+KPX A O -35
+KPX A G -40
+KPX A C -40
+
+KPX B A -10
+
+KPX C A -40
+
+KPX D period -20
+KPX D comma -20
+KPX D Y -45
+KPX D W -25
+KPX D V -50
+KPX D A -50
+
+KPX F period -129
+KPX F e -20
+KPX F comma -162
+KPX F a -20
+KPX F A -60
+
+KPX G period -20
+KPX G comma -20
+
+KPX J period -15
+KPX J a -20
+KPX J A -30
+
+KPX K y -40
+KPX K u -30
+KPX K o -45
+KPX K e -45
+KPX K O -30
+
+KPX L y -23
+KPX L quoteright -50
+KPX L quotedblright -50
+KPX L Y -80
+KPX L W -55
+KPX L V -85
+KPX L T -46
+
+KPX O period -30
+KPX O comma -30
+KPX O Y -30
+KPX O X -30
+KPX O W -20
+KPX O V -45
+KPX O T -15
+KPX O A -60
+
+KPX P period -200
+KPX P o -20
+KPX P e -20
+KPX P comma -220
+KPX P a -20
+KPX P A -85
+
+KPX Q comma 20
+
+KPX R W 10
+KPX R V -10
+KPX R U 10
+KPX R T 25
+KPX R O 10
+
+KPX S comma 20
+
+KPX T y -10
+KPX T w -55
+KPX T u -46
+KPX T semicolon -29
+KPX T r -30
+KPX T period -91
+KPX T o -49
+KPX T hyphen -75
+KPX T e -49
+KPX T comma -82
+KPX T colon -15
+KPX T a -70
+KPX T O -15
+KPX T A -25
+
+KPX U period -20
+KPX U comma -20
+KPX U A -40
+
+KPX V u -55
+KPX V semicolon -33
+KPX V period -145
+KPX V o -101
+KPX V i -30
+KPX V hyphen -75
+KPX V e -101
+KPX V comma -145
+KPX V colon -18
+KPX V a -95
+KPX V O -45
+KPX V G -20
+KPX V A -102
+
+KPX W y -32
+KPX W u -30
+KPX W semicolon -33
+KPX W period -106
+KPX W o -46
+KPX W i -10
+KPX W hyphen -35
+KPX W e -47
+KPX W comma -106
+KPX W colon -15
+KPX W a -50
+KPX W O -20
+KPX W A -58
+
+KPX Y u -70
+KPX Y semicolon -23
+KPX Y period -145
+KPX Y o -89
+KPX Y i -20
+KPX Y hyphen -100
+KPX Y e -89
+KPX Y comma -145
+KPX Y colon -10
+KPX Y a -93
+KPX Y O -30
+KPX Y A -80
+
+KPX a t 5
+KPX a p 20
+KPX a b 5
+
+KPX b y -20
+KPX b v -20
+KPX b b -10
+
+KPX c y -20
+KPX c k -15
+
+KPX comma space -50
+KPX comma quoteright -90
+KPX comma quotedblright -90
+
+KPX e y -20
+KPX e x -25
+KPX e w -20
+KPX e v -20
+
+KPX f period -50
+KPX f o -5
+KPX f comma -50
+KPX f a -5
+
+KPX g i 10
+
+KPX h y -30
+
+KPX k y -5
+KPX k o -30
+KPX k e -25
+
+KPX m y -20
+KPX m u -20
+
+KPX n y -15
+KPX n v -30
+
+KPX o y -20
+KPX o x -15
+KPX o w -20
+KPX o v -30
+
+KPX p y -20
+
+KPX period space -50
+KPX period quoteright -90
+KPX period quotedblright -90
+
+KPX quotedblleft A -50
+
+KPX quotedblright space -50
+
+KPX quoteleft quoteleft -80
+KPX quoteleft A -50
+
+KPX quoteright v -10
+KPX quoteright t 10
+KPX quoteright space -50
+KPX quoteright s -15
+KPX quoteright r -20
+KPX quoteright quoteright -80
+KPX quoteright d -45
+
+KPX r y 40
+KPX r v 40
+KPX r u 20
+KPX r t 20
+KPX r s 20
+KPX r q -8
+KPX r period -73
+KPX r p 20
+KPX r n 21
+KPX r m 28
+KPX r l 20
+KPX r k 20
+KPX r i 20
+KPX r hyphen -60
+KPX r g 1
+KPX r e -4
+KPX r d -6
+KPX r comma -75
+KPX r c -7
+
+KPX s period 20
+KPX s comma 20
+
+KPX space quoteleft -50
+KPX space quotedblleft -50
+KPX space Y -60
+KPX space W -25
+KPX space V -80
+KPX space T -25
+KPX space A -20
+
+KPX v period -90
+KPX v o -20
+KPX v e -20
+KPX v comma -90
+KPX v a -30
+
+KPX w period -90
+KPX w o -30
+KPX w h 15
+KPX w e -20
+KPX w comma -90
+KPX w a -30
+
+KPX x e -25
+
+KPX y period -60
+KPX y o -30
+KPX y e -20
+KPX y comma -90
+KPX y a -30
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 102 145 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 102 145 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 102 145 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 102 145 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 102 165 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 102 165 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute -13 165 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex -13 165 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis -13 165 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave -13 165 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute -91 165 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex -116 165 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis -116 165 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave -141 165 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 102 165 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 148 165 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 148 165 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 148 165 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 148 165 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 148 165 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 9 165 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 107 165 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 72 165 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 72 165 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 37 165 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 81 165 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 46 165 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron -3 165 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 75 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 75 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 75 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 75 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 75 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 75 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 46 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 46 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 46 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 46 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -109 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -134 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -134 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -159 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 39 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 56 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 56 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 56 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 56 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 56 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron -28 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 75 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 40 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 40 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 5 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 45 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 10 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron -30 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/AG-Bd+ b/font/font/AG-Bd+
new file mode 100644
index 0000000..3ae3566
--- /dev/null
+++ b/font/font/AG-Bd+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 832 ; N Ccaron ; B 37 -14 801 974 ;
+C -1 ; WX 652 ; N ccaron ; B 33 -18 621 799 ;
+C -1 ; WX 742 ; N Dcaron ; B 57 0 697 974 ;
+C -1 ; WX 820 ; N dcaron ; B 34 -18 829 814 ;
+C -1 ; WX 528 ; N Ecaron ; B 57 0 478 974 ;
+C -1 ; WX 646 ; N ecaron ; B 30 -18 614 799 ;
+C -1 ; WX 487 ; N Lcaron ; B 72 0 480 814 ;
+C -1 ; WX 487 ; N Lacute ; B 72 0 480 1035 ;
+C -1 ; WX 408 ; N lcaron ; B 60 0 417 814 ;
+C -1 ; WX 286 ; N lacute ; B 46 0 339 1035 ;
+C -1 ; WX 759 ; N Ncaron ; B 67 0 691 974 ;
+C -1 ; WX 632 ; N ncaron ; B 60 0 574 799 ;
+C -1 ; WX 653 ; N Rcaron ; B 67 0 637 974 ;
+C -1 ; WX 653 ; N Racute ; B 67 0 637 1035 ;
+C -1 ; WX 363 ; N rcaron ; B -26 0 388 799 ;
+C -1 ; WX 363 ; N racute ; B 59 0 377 848 ;
+C -1 ; WX 499 ; N Tcaron ; B 10 0 490 974 ;
+C -1 ; WX 473 ; N tcaron ; B 11 0 530 740 ;
+C -1 ; WX 698 ; N Uring ; B 65 -14 633 974 ;
+C -1 ; WX 634 ; N uring ; B 58 -18 574 852 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 214 175 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 77 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 93 175 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 585 74 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron -13 175 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 45 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 203 74 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute -34 187 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 173 74 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute -105 187 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 102 175 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 38 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 49 175 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 105 187 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron -96 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute -67 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron -28 175 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 286 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 71 122 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 39 0 ;
+EndBuildComposites
diff --git a/font/font/AG-BdO b/font/font/AG-BdO
new file mode 100644
index 0000000..25685aa
--- /dev/null
+++ b/font/font/AG-BdO
@@ -0,0 +1,571 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1991 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Mon Mar 4 13:58:07 1991
+Comment UniqueID 34379
+Comment VMusage 7139 42168
+FontName AvantGarde-BoldObl
+FullName ITC Avant Garde Gothic Bold Oblique
+FamilyName ITC Avant Garde Gothic
+Weight Bold
+ItalicAngle -10.5
+IsFixedPitch false
+FontBBox -118 -271 1256 1017
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.000
+Notice Copyright (c) 1991 Adobe Systems Incorporated. All Rights Reserved.ITC Avant Garde Gothic is a registered trademark of International Typeface Corporation.
+EncodingScheme AdobeStandardEncoding
+CapHeight 740
+XHeight 555
+Ascender 740
+Descender -185
+StartCharMetrics 228
+C 32 ; WX 309 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 333 ; N exclam ; B 81 0 389 740 ;
+C 34 ; WX 463 ; N quotedbl ; B 149 443 566 740 ;
+C 35 ; WX 618 ; N numbersign ; B 72 45 683 672 ;
+C 36 ; WX 618 ; N dollar ; B 117 -76 621 811 ;
+C 37 ; WX 858 ; N percent ; B 139 -15 856 755 ;
+C 38 ; WX 758 ; N ampersand ; B 83 -15 810 754 ;
+C 39 ; WX 314 ; N quoteright ; B 146 409 381 740 ;
+C 40 ; WX 473 ; N parenleft ; B 101 -264 570 754 ;
+C 41 ; WX 473 ; N parenright ; B -6 -264 462 754 ;
+C 42 ; WX 670 ; N asterisk ; B 215 318 655 740 ;
+C 43 ; WX 600 ; N plus ; B 80 0 614 506 ;
+C 44 ; WX 314 ; N comma ; B 41 -161 276 170 ;
+C 45 ; WX 281 ; N hyphen ; B 38 207 350 370 ;
+C 46 ; WX 314 ; N period ; B 71 0 276 170 ;
+C 47 ; WX 593 ; N slash ; B 53 -100 658 740 ;
+C 48 ; WX 618 ; N zero ; B 77 -14 679 754 ;
+C 49 ; WX 618 ; N one ; B 212 0 551 740 ;
+C 50 ; WX 618 ; N two ; B 51 0 671 754 ;
+C 51 ; WX 618 ; N three ; B 72 -14 643 754 ;
+C 52 ; WX 618 ; N four ; B 39 0 659 740 ;
+C 53 ; WX 618 ; N five ; B 63 -15 662 740 ;
+C 54 ; WX 618 ; N six ; B 66 -14 655 740 ;
+C 55 ; WX 618 ; N seven ; B 79 0 684 740 ;
+C 56 ; WX 618 ; N eight ; B 76 -14 640 754 ;
+C 57 ; WX 618 ; N nine ; B 103 0 697 754 ;
+C 58 ; WX 314 ; N colon ; B 71 0 347 555 ;
+C 59 ; WX 314 ; N semicolon ; B 41 -161 347 555 ;
+C 60 ; WX 600 ; N less ; B 79 -38 655 544 ;
+C 61 ; WX 600 ; N equal ; B 56 41 638 465 ;
+C 62 ; WX 600 ; N greater ; B 39 -38 615 544 ;
+C 63 ; WX 592 ; N question ; B 139 0 654 754 ;
+C 64 ; WX 748 ; N at ; B 58 -16 828 756 ;
+C 65 ; WX 758 ; N A ; B 9 0 749 740 ;
+C 66 ; WX 647 ; N B ; B 67 0 681 740 ;
+C 67 ; WX 832 ; N C ; B 99 -14 886 754 ;
+C 68 ; WX 742 ; N D ; B 57 0 775 740 ;
+C 69 ; WX 528 ; N E ; B 67 0 615 740 ;
+C 70 ; WX 506 ; N F ; B 67 0 608 740 ;
+C 71 ; WX 854 ; N G ; B 97 -15 900 754 ;
+C 72 ; WX 754 ; N H ; B 67 0 824 740 ;
+C 73 ; WX 323 ; N I ; B 67 0 393 740 ;
+C 74 ; WX 578 ; N J ; B 45 -14 647 740 ;
+C 75 ; WX 707 ; N K ; B 87 0 822 740 ;
+C 76 ; WX 487 ; N L ; B 72 0 511 740 ;
+C 77 ; WX 915 ; N M ; B 67 0 985 740 ;
+C 78 ; WX 759 ; N N ; B 67 0 828 740 ;
+C 79 ; WX 851 ; N O ; B 96 -14 891 754 ;
+C 80 ; WX 636 ; N P ; B 67 0 720 740 ;
+C 81 ; WX 866 ; N Q ; B 97 -15 895 754 ;
+C 82 ; WX 653 ; N R ; B 67 0 715 740 ;
+C 83 ; WX 573 ; N S ; B 62 -14 645 754 ;
+C 84 ; WX 499 ; N T ; B 116 0 627 740 ;
+C 85 ; WX 698 ; N U ; B 108 -14 770 740 ;
+C 86 ; WX 722 ; N V ; B 153 0 843 740 ;
+C 87 ; WX 981 ; N W ; B 153 0 1101 740 ;
+C 88 ; WX 759 ; N X ; B 11 0 855 740 ;
+C 89 ; WX 647 ; N Y ; B 146 0 775 740 ;
+C 90 ; WX 499 ; N Z ; B 16 0 620 740 ;
+C 91 ; WX 473 ; N bracketleft ; B 104 -264 541 754 ;
+C 92 ; WX 593 ; N backslash ; B 209 -100 502 740 ;
+C 93 ; WX 473 ; N bracketright ; B 23 -264 460 754 ;
+C 94 ; WX 600 ; N asciicircum ; B 112 375 626 740 ;
+C 95 ; WX 500 ; N underscore ; B -23 -125 486 -75 ;
+C 96 ; WX 314 ; N quoteleft ; B 146 409 381 740 ;
+C 97 ; WX 704 ; N a ; B 79 -19 746 574 ;
+C 98 ; WX 693 ; N b ; B 60 -19 719 740 ;
+C 99 ; WX 652 ; N c ; B 79 -18 683 574 ;
+C 100 ; WX 698 ; N d ; B 80 -18 775 740 ;
+C 101 ; WX 646 ; N e ; B 76 -18 670 574 ;
+C 102 ; WX 314 ; N f ; B 66 0 442 754 ; L i fi ; L l fl ;
+C 103 ; WX 693 ; N g ; B 34 -247 738 573 ;
+C 104 ; WX 632 ; N h ; B 60 0 645 740 ;
+C 105 ; WX 286 ; N i ; B 60 0 363 740 ;
+C 106 ; WX 321 ; N j ; B -32 -204 390 740 ;
+C 107 ; WX 591 ; N k ; B 66 0 688 740 ;
+C 108 ; WX 286 ; N l ; B 60 0 363 740 ;
+C 109 ; WX 969 ; N m ; B 60 0 983 574 ;
+C 110 ; WX 632 ; N n ; B 60 0 646 574 ;
+C 111 ; WX 666 ; N o ; B 80 -17 689 573 ;
+C 112 ; WX 697 ; N p ; B 26 -185 719 574 ;
+C 113 ; WX 698 ; N q ; B 78 -185 741 574 ;
+C 114 ; WX 363 ; N r ; B 59 0 462 574 ;
+C 115 ; WX 499 ; N s ; B 54 -19 534 574 ;
+C 116 ; WX 351 ; N t ; B 91 0 442 740 ;
+C 117 ; WX 634 ; N u ; B 90 -18 677 555 ;
+C 118 ; WX 592 ; N v ; B 120 0 678 555 ;
+C 119 ; WX 850 ; N w ; B 110 0 946 555 ;
+C 120 ; WX 630 ; N x ; B 1 0 703 555 ;
+C 121 ; WX 574 ; N y ; B 85 -185 676 555 ;
+C 122 ; WX 444 ; N z ; B 15 0 531 555 ;
+C 123 ; WX 554 ; N braceleft ; B 132 -264 620 740 ;
+C 124 ; WX 555 ; N bar ; B 167 -100 506 740 ;
+C 125 ; WX 554 ; N braceright ; B 22 -264 508 740 ;
+C 126 ; WX 600 ; N asciitilde ; B 120 130 574 377 ;
+C 161 ; WX 333 ; N exclamdown ; B 47 -185 355 555 ;
+C 162 ; WX 618 ; N cent ; B 128 31 634 720 ;
+C 163 ; WX 618 ; N sterling ; B 44 0 658 755 ;
+C 164 ; WX 211 ; N fraction ; B -118 0 466 740 ;
+C 165 ; WX 618 ; N yen ; B 50 0 755 740 ;
+C 166 ; WX 618 ; N florin ; B -2 -152 698 818 ;
+C 167 ; WX 670 ; N section ; B 57 -271 688 754 ;
+C 168 ; WX 618 ; N currency ; B 22 38 719 651 ;
+C 169 ; WX 242 ; N quotesingle ; B 149 443 345 740 ;
+C 170 ; WX 555 ; N quotedblleft ; B 143 409 625 740 ;
+C 171 ; WX 422 ; N guillemotleft ; B 90 103 463 474 ;
+C 172 ; WX 222 ; N guilsinglleft ; B 90 103 263 474 ;
+C 173 ; WX 222 ; N guilsinglright ; B 66 103 239 474 ;
+C 174 ; WX 601 ; N fi ; B 66 0 678 754 ;
+C 175 ; WX 601 ; N fl ; B 66 0 678 754 ;
+C 177 ; WX 500 ; N endash ; B 73 207 534 370 ;
+C 178 ; WX 670 ; N dagger ; B 176 -244 676 740 ;
+C 179 ; WX 670 ; N daggerdbl ; B 96 -244 682 740 ;
+C 180 ; WX 314 ; N periodcentered ; B 102 168 307 338 ;
+C 182 ; WX 701 ; N paragraph ; B 90 -103 744 740 ;
+C 183 ; WX 739 ; N bullet ; B 284 222 595 532 ;
+C 184 ; WX 314 ; N quotesinglbase ; B 40 -161 276 170 ;
+C 185 ; WX 555 ; N quotedblbase ; B 37 -161 520 170 ;
+C 186 ; WX 555 ; N quotedblright ; B 143 409 625 740 ;
+C 187 ; WX 422 ; N guillemotright ; B 66 103 439 474 ;
+C 188 ; WX 1000 ; N ellipsis ; B 81 0 952 170 ;
+C 189 ; WX 1258 ; N perthousand ; B 139 -15 1256 755 ;
+C 191 ; WX 592 ; N questiondown ; B 40 -200 554 555 ;
+C 193 ; WX 555 ; N grave ; B 245 614 536 839 ;
+C 194 ; WX 555 ; N acute ; B 284 621 579 848 ;
+C 195 ; WX 555 ; N circumflex ; B 189 640 603 806 ;
+C 196 ; WX 555 ; N tilde ; B 213 651 608 781 ;
+C 197 ; WX 555 ; N macron ; B 220 658 602 784 ;
+C 198 ; WX 555 ; N breve ; B 216 644 629 788 ;
+C 199 ; WX 555 ; N dotaccent ; B 317 644 504 795 ;
+C 200 ; WX 555 ; N dieresis ; B 200 644 620 795 ;
+C 202 ; WX 555 ; N ring ; B 283 600 540 852 ;
+C 203 ; WX 555 ; N cedilla ; B 139 -245 364 0 ;
+C 205 ; WX 555 ; N hungarumlaut ; B 222 600 637 832 ;
+C 206 ; WX 555 ; N ogonek ; B 153 -206 361 0 ;
+C 207 ; WX 555 ; N caron ; B 218 633 632 799 ;
+C 208 ; WX 1000 ; N emdash ; B 73 207 1034 370 ;
+C 225 ; WX 975 ; N AE ; B -10 0 1062 740 ;
+C 227 ; WX 385 ; N ordfeminine ; B 127 448 471 754 ;
+C 232 ; WX 487 ; N Lslash ; B 36 0 511 740 ;
+C 233 ; WX 851 ; N Oslash ; B 80 -63 908 806 ;
+C 234 ; WX 1085 ; N OE ; B 97 -14 1172 754 ;
+C 235 ; WX 385 ; N ordmasculine ; B 146 448 461 754 ;
+C 241 ; WX 1091 ; N ae ; B 81 -18 1115 574 ;
+C 245 ; WX 286 ; N dotlessi ; B 60 0 329 555 ;
+C 248 ; WX 342 ; N lslash ; B 60 0 418 740 ;
+C 249 ; WX 666 ; N oslash ; B 42 -83 726 633 ;
+C 250 ; WX 1076 ; N oe ; B 80 -19 1101 574 ;
+C 251 ; WX 694 ; N germandbls ; B 58 -18 706 759 ;
+C -1 ; WX 646 ; N ecircumflex ; B 76 -18 670 806 ;
+C -1 ; WX 646 ; N edieresis ; B 76 -18 670 795 ;
+C -1 ; WX 704 ; N aacute ; B 79 -19 746 848 ;
+C -1 ; WX 800 ; N registered ; B 80 -14 858 754 ;
+C -1 ; WX 286 ; N icircumflex ; B 55 0 469 806 ;
+C -1 ; WX 634 ; N udieresis ; B 90 -18 677 795 ;
+C -1 ; WX 666 ; N ograve ; B 80 -17 689 839 ;
+C -1 ; WX 634 ; N uacute ; B 90 -18 677 848 ;
+C -1 ; WX 634 ; N ucircumflex ; B 90 -18 677 806 ;
+C -1 ; WX 758 ; N Aacute ; B 9 0 749 993 ;
+C -1 ; WX 286 ; N igrave ; B 60 0 377 839 ;
+C -1 ; WX 323 ; N Icircumflex ; B 67 0 517 971 ;
+C -1 ; WX 652 ; N ccedilla ; B 79 -245 683 574 ;
+C -1 ; WX 704 ; N adieresis ; B 79 -19 746 795 ;
+C -1 ; WX 528 ; N Ecircumflex ; B 67 0 620 971 ;
+C -1 ; WX 499 ; N scaron ; B 54 -19 604 799 ;
+C -1 ; WX 695 ; N thorn ; B 25 -185 719 740 ;
+C -1 ; WX 990 ; N trademark ; B 139 296 1016 740 ;
+C -1 ; WX 646 ; N egrave ; B 76 -18 670 839 ;
+C -1 ; WX 407 ; N threesuperior ; B 101 287 471 749 ;
+C -1 ; WX 444 ; N zcaron ; B 15 0 602 799 ;
+C -1 ; WX 704 ; N atilde ; B 79 -19 746 781 ;
+C -1 ; WX 704 ; N aring ; B 79 -19 746 852 ;
+C -1 ; WX 666 ; N ocircumflex ; B 80 -17 689 806 ;
+C -1 ; WX 528 ; N Edieresis ; B 67 0 638 960 ;
+C -1 ; WX 1000 ; N threequarters ; B 120 0 991 749 ;
+C -1 ; WX 574 ; N ydieresis ; B 85 -185 676 795 ;
+C -1 ; WX 574 ; N yacute ; B 85 -185 676 848 ;
+C -1 ; WX 286 ; N iacute ; B 60 0 470 848 ;
+C -1 ; WX 758 ; N Acircumflex ; B 9 0 749 951 ;
+C -1 ; WX 698 ; N Uacute ; B 108 -14 770 1013 ;
+C -1 ; WX 646 ; N eacute ; B 76 -18 670 848 ;
+C -1 ; WX 851 ; N Ograve ; B 96 -14 891 1004 ;
+C -1 ; WX 704 ; N agrave ; B 79 -19 746 839 ;
+C -1 ; WX 698 ; N Udieresis ; B 108 -14 770 960 ;
+C -1 ; WX 704 ; N acircumflex ; B 79 -19 746 806 ;
+C -1 ; WX 323 ; N Igrave ; B 67 0 425 1004 ;
+C -1 ; WX 407 ; N twosuperior ; B 90 296 490 749 ;
+C -1 ; WX 698 ; N Ugrave ; B 108 -14 770 1004 ;
+C -1 ; WX 900 ; N onequarter ; B 166 0 883 740 ;
+C -1 ; WX 698 ; N Ucircumflex ; B 108 -14 770 971 ;
+C -1 ; WX 573 ; N Scaron ; B 62 -14 672 964 ;
+C -1 ; WX 323 ; N Idieresis ; B 67 0 535 960 ;
+C -1 ; WX 286 ; N idieresis ; B 60 0 486 795 ;
+C -1 ; WX 528 ; N Egrave ; B 67 0 615 1004 ;
+C -1 ; WX 851 ; N Oacute ; B 96 -14 891 1013 ;
+C -1 ; WX 600 ; N divide ; B 80 -57 614 563 ;
+C -1 ; WX 758 ; N Atilde ; B 9 0 749 946 ;
+C -1 ; WX 758 ; N Aring ; B 9 0 749 1017 ;
+C -1 ; WX 851 ; N Odieresis ; B 96 -14 891 960 ;
+C -1 ; WX 758 ; N Adieresis ; B 9 0 749 940 ;
+C -1 ; WX 759 ; N Ntilde ; B 67 0 828 946 ;
+C -1 ; WX 499 ; N Zcaron ; B 16 0 660 964 ;
+C -1 ; WX 636 ; N Thorn ; B 67 0 702 740 ;
+C -1 ; WX 323 ; N Iacute ; B 67 0 519 1013 ;
+C -1 ; WX 600 ; N plusminus ; B 33 -82 630 556 ;
+C -1 ; WX 600 ; N multiply ; B 77 0 613 487 ;
+C -1 ; WX 528 ; N Eacute ; B 67 0 615 1013 ;
+C -1 ; WX 647 ; N Ydieresis ; B 146 0 775 960 ;
+C -1 ; WX 407 ; N onesuperior ; B 187 296 407 740 ;
+C -1 ; WX 634 ; N ugrave ; B 90 -18 677 839 ;
+C -1 ; WX 600 ; N logicalnot ; B 86 108 639 445 ;
+C -1 ; WX 632 ; N ntilde ; B 60 0 647 781 ;
+C -1 ; WX 851 ; N Otilde ; B 96 -14 891 946 ;
+C -1 ; WX 666 ; N otilde ; B 80 -17 689 781 ;
+C -1 ; WX 832 ; N Ccedilla ; B 99 -245 886 754 ;
+C -1 ; WX 758 ; N Agrave ; B 9 0 749 984 ;
+C -1 ; WX 920 ; N onehalf ; B 166 0 931 740 ;
+C -1 ; WX 742 ; N Eth ; B 55 0 785 740 ;
+C -1 ; WX 400 ; N degree ; B 160 426 451 712 ;
+C -1 ; WX 647 ; N Yacute ; B 146 0 775 1013 ;
+C -1 ; WX 851 ; N Ocircumflex ; B 96 -14 891 971 ;
+C -1 ; WX 666 ; N oacute ; B 80 -17 689 848 ;
+C -1 ; WX 634 ; N mu ; B 17 -190 684 555 ;
+C -1 ; WX 600 ; N minus ; B 80 173 614 333 ;
+C -1 ; WX 666 ; N eth ; B 80 -17 721 756 ;
+C -1 ; WX 666 ; N odieresis ; B 80 -17 689 795 ;
+C -1 ; WX 800 ; N copyright ; B 80 -14 858 754 ;
+C -1 ; WX 555 ; N brokenbar ; B 167 -100 506 740 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 213
+
+KPX A y -68
+KPX A w -65
+KPX A v -70
+KPX A u -20
+KPX A quoteright -50
+KPX A quotedblright -50
+KPX A Y -80
+KPX A W -60
+KPX A V -102
+KPX A U -40
+KPX A T -25
+KPX A Q -50
+KPX A O -35
+KPX A G -40
+KPX A C -40
+
+KPX B A -10
+
+KPX C A -40
+
+KPX D period -20
+KPX D comma -20
+KPX D Y -45
+KPX D W -25
+KPX D V -50
+KPX D A -50
+
+KPX F period -129
+KPX F e -20
+KPX F comma -162
+KPX F a -20
+KPX F A -60
+
+KPX G period -20
+KPX G comma -20
+
+KPX J period -15
+KPX J a -20
+KPX J A -30
+
+KPX K y -40
+KPX K u -30
+KPX K o -45
+KPX K e -45
+KPX K O -30
+
+KPX L y -23
+KPX L quoteright -50
+KPX L quotedblright -50
+KPX L Y -80
+KPX L W -55
+KPX L V -85
+KPX L T -46
+
+KPX O period -30
+KPX O comma -30
+KPX O Y -30
+KPX O X -30
+KPX O W -20
+KPX O V -45
+KPX O T -15
+KPX O A -60
+
+KPX P period -200
+KPX P o -20
+KPX P e -20
+KPX P comma -220
+KPX P a -20
+KPX P A -85
+
+KPX Q comma 20
+
+KPX R W 10
+KPX R V -10
+KPX R U 10
+KPX R T 25
+KPX R O 10
+
+KPX S comma 20
+
+KPX T y -10
+KPX T w -55
+KPX T u -46
+KPX T semicolon -29
+KPX T r -30
+KPX T period -91
+KPX T o -49
+KPX T hyphen -75
+KPX T e -49
+KPX T comma -82
+KPX T colon -15
+KPX T a -70
+KPX T O -15
+KPX T A -25
+
+KPX U period -20
+KPX U comma -20
+KPX U A -40
+
+KPX V u -55
+KPX V semicolon -33
+KPX V period -145
+KPX V o -101
+KPX V i -30
+KPX V hyphen -75
+KPX V e -101
+KPX V comma -145
+KPX V colon -18
+KPX V a -95
+KPX V O -45
+KPX V G -20
+KPX V A -102
+
+KPX W y -32
+KPX W u -30
+KPX W semicolon -33
+KPX W period -106
+KPX W o -46
+KPX W i -10
+KPX W hyphen -35
+KPX W e -47
+KPX W comma -106
+KPX W colon -15
+KPX W a -50
+KPX W O -20
+KPX W A -58
+
+KPX Y u -70
+KPX Y semicolon -23
+KPX Y period -145
+KPX Y o -89
+KPX Y i -20
+KPX Y hyphen -100
+KPX Y e -89
+KPX Y comma -145
+KPX Y colon -10
+KPX Y a -93
+KPX Y O -30
+KPX Y A -80
+
+KPX a t 5
+KPX a p 20
+KPX a b 5
+
+KPX b y -20
+KPX b v -20
+KPX b b -10
+
+KPX c y -20
+KPX c k -15
+
+KPX comma space -50
+KPX comma quoteright -90
+KPX comma quotedblright -90
+
+KPX e y -20
+KPX e x -25
+KPX e w -20
+KPX e v -20
+
+KPX f period -50
+KPX f o -5
+KPX f comma -50
+KPX f a -5
+
+KPX g i 10
+
+KPX h y -30
+
+KPX k y -5
+KPX k o -30
+KPX k e -25
+
+KPX m y -20
+KPX m u -20
+
+KPX n y -15
+KPX n v -30
+
+KPX o y -20
+KPX o x -15
+KPX o w -20
+KPX o v -30
+
+KPX p y -20
+
+KPX period space -50
+KPX period quoteright -90
+KPX period quotedblright -90
+
+KPX quotedblleft A -50
+
+KPX quotedblright space -50
+
+KPX quoteleft quoteleft -80
+KPX quoteleft A -50
+
+KPX quoteright v -10
+KPX quoteright t 10
+KPX quoteright space -50
+KPX quoteright s -15
+KPX quoteright r -20
+KPX quoteright quoteright -80
+KPX quoteright d -45
+
+KPX r y 40
+KPX r v 40
+KPX r u 20
+KPX r t 20
+KPX r s 20
+KPX r q -8
+KPX r period -73
+KPX r p 20
+KPX r n 21
+KPX r m 28
+KPX r l 20
+KPX r k 20
+KPX r i 20
+KPX r hyphen -60
+KPX r g 1
+KPX r e -4
+KPX r d -6
+KPX r comma -75
+KPX r c -7
+
+KPX s period 20
+KPX s comma 20
+
+KPX space quoteleft -50
+KPX space quotedblleft -50
+KPX space Y -60
+KPX space W -25
+KPX space V -80
+KPX space T -25
+KPX space A -20
+
+KPX v period -90
+KPX v o -20
+KPX v e -20
+KPX v comma -90
+KPX v a -30
+
+KPX w period -90
+KPX w o -30
+KPX w h 15
+KPX w e -20
+KPX w comma -90
+KPX w a -30
+
+KPX x e -25
+
+KPX y period -60
+KPX y o -30
+KPX y e -20
+KPX y comma -90
+KPX y a -30
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 129 145 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 129 145 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 129 145 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 129 145 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 133 165 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 133 165 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 18 165 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 18 165 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 18 165 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 18 165 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute -60 165 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex -85 165 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis -85 165 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave -110 165 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 133 165 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 179 165 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 179 165 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 179 165 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 179 165 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 179 165 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 40 165 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 138 165 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 103 165 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 103 165 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 68 165 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 112 165 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 77 165 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 28 165 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 75 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 75 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 75 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 75 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 75 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 75 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 46 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 46 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 46 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 46 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -109 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -134 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -134 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -159 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 39 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 56 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 56 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 56 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 56 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 56 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron -28 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 75 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 40 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 40 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 5 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 45 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 10 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron -30 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/AG-BdO+ b/font/font/AG-BdO+
new file mode 100644
index 0000000..1bbf720
--- /dev/null
+++ b/font/font/AG-BdO+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 832 ; N Ccaron ; B 99 -14 886 974 ;
+C -1 ; WX 652 ; N ccaron ; B 79 -18 710 799 ;
+C -1 ; WX 742 ; N Dcaron ; B 57 0 775 974 ;
+C -1 ; WX 863 ; N dcaron ; B 80 -18 1034 814 ;
+C -1 ; WX 528 ; N Ecaron ; B 67 0 649 974 ;
+C -1 ; WX 646 ; N ecaron ; B 76 -18 677 799 ;
+C -1 ; WX 487 ; N Lcaron ; B 72 0 652 814 ;
+C -1 ; WX 487 ; N Lacute ; B 72 0 577 1035 ;
+C -1 ; WX 451 ; N lcaron ; B 60 0 622 814 ;
+C -1 ; WX 286 ; N lacute ; B 60 0 507 1035 ;
+C -1 ; WX 759 ; N Ncaron ; B 67 0 828 974 ;
+C -1 ; WX 632 ; N ncaron ; B 60 0 670 799 ;
+C -1 ; WX 653 ; N Rcaron ; B 67 0 715 974 ;
+C -1 ; WX 653 ; N Racute ; B 67 0 716 1035 ;
+C -1 ; WX 363 ; N rcaron ; B 59 0 536 799 ;
+C -1 ; WX 363 ; N racute ; B 59 0 513 848 ;
+C -1 ; WX 499 ; N Tcaron ; B 116 0 634 974 ;
+C -1 ; WX 516 ; N tcaron ; B 91 0 701 740 ;
+C -1 ; WX 698 ; N Uring ; B 108 -14 770 974 ;
+C -1 ; WX 634 ; N uring ; B 90 -18 677 852 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 247 175 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 78 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 123 175 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 653 74 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 17 175 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 45 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 271 74 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute -2 187 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 241 74 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute -72 187 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 132 175 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 38 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 79 175 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 137 187 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron -96 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute -66 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 2 175 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 320 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 92 122 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 39 0 ;
+EndBuildComposites
diff --git a/font/font/AG-Bk b/font/font/AG-Bk
new file mode 100644
index 0000000..53b03bb
--- /dev/null
+++ b/font/font/AG-Bk
@@ -0,0 +1,573 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1990, 1991 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Mon Mar 4 13:37:31 1991
+Comment UniqueID 34364
+Comment VMusage 24225 31117
+FontName AvantGarde-Book
+FullName ITC Avant Garde Gothic Book
+FamilyName ITC Avant Garde Gothic
+Weight Book
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -113 -222 1148 955
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.006
+Notice Copyright (c) 1985, 1987, 1989, 1990, 1991 Adobe Systems Incorporated. All Rights Reserved.ITC Avant Garde Gothic is a registered trademark of International Typeface Corporation.
+EncodingScheme AdobeStandardEncoding
+CapHeight 740
+XHeight 547
+Ascender 740
+Descender -192
+StartCharMetrics 228
+C 32 ; WX 277 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 295 ; N exclam ; B 111 0 185 740 ;
+C 34 ; WX 309 ; N quotedbl ; B 36 444 273 740 ;
+C 35 ; WX 554 ; N numbersign ; B 33 0 521 740 ;
+C 36 ; WX 554 ; N dollar ; B 70 -70 485 811 ;
+C 37 ; WX 775 ; N percent ; B 21 -13 753 751 ;
+C 38 ; WX 757 ; N ampersand ; B 56 -12 736 753 ;
+C 39 ; WX 351 ; N quoteright ; B 94 546 256 740 ;
+C 40 ; WX 369 ; N parenleft ; B 47 -205 355 757 ;
+C 41 ; WX 369 ; N parenright ; B 14 -205 322 757 ;
+C 42 ; WX 425 ; N asterisk ; B 58 446 367 740 ;
+C 43 ; WX 606 ; N plus ; B 51 0 555 506 ;
+C 44 ; WX 277 ; N comma ; B 14 -67 176 126 ;
+C 45 ; WX 332 ; N hyphen ; B 30 248 302 315 ;
+C 46 ; WX 277 ; N period ; B 102 0 176 126 ;
+C 47 ; WX 437 ; N slash ; B 44 -100 403 740 ;
+C 48 ; WX 554 ; N zero ; B 29 -13 525 753 ;
+C 49 ; WX 554 ; N one ; B 135 0 336 740 ;
+C 50 ; WX 554 ; N two ; B 40 0 514 753 ;
+C 51 ; WX 554 ; N three ; B 34 -13 506 753 ;
+C 52 ; WX 554 ; N four ; B 14 0 528 740 ;
+C 53 ; WX 554 ; N five ; B 26 -13 530 740 ;
+C 54 ; WX 554 ; N six ; B 24 -13 530 739 ;
+C 55 ; WX 554 ; N seven ; B 63 0 491 740 ;
+C 56 ; WX 554 ; N eight ; B 41 -13 513 753 ;
+C 57 ; WX 554 ; N nine ; B 24 0 530 752 ;
+C 58 ; WX 277 ; N colon ; B 102 0 176 548 ;
+C 59 ; WX 277 ; N semicolon ; B 14 -67 176 548 ;
+C 60 ; WX 606 ; N less ; B 46 -8 554 514 ;
+C 61 ; WX 606 ; N equal ; B 51 118 555 388 ;
+C 62 ; WX 606 ; N greater ; B 52 -8 560 514 ;
+C 63 ; WX 591 ; N question ; B 64 0 526 752 ;
+C 64 ; WX 867 ; N at ; B 65 -13 803 753 ;
+C 65 ; WX 740 ; N A ; B 12 0 729 740 ;
+C 66 ; WX 574 ; N B ; B 74 0 544 740 ;
+C 67 ; WX 813 ; N C ; B 43 -13 771 752 ;
+C 68 ; WX 744 ; N D ; B 74 0 699 740 ;
+C 69 ; WX 536 ; N E ; B 70 0 475 740 ;
+C 70 ; WX 485 ; N F ; B 70 0 444 740 ;
+C 71 ; WX 872 ; N G ; B 40 -13 828 753 ;
+C 72 ; WX 683 ; N H ; B 76 0 607 740 ;
+C 73 ; WX 226 ; N I ; B 76 0 150 740 ;
+C 74 ; WX 482 ; N J ; B 6 -13 402 740 ;
+C 75 ; WX 591 ; N K ; B 81 0 591 740 ;
+C 76 ; WX 462 ; N L ; B 82 0 462 740 ;
+C 77 ; WX 919 ; N M ; B 76 0 843 740 ;
+C 78 ; WX 740 ; N N ; B 75 0 664 740 ;
+C 79 ; WX 869 ; N O ; B 43 -13 826 753 ;
+C 80 ; WX 592 ; N P ; B 75 0 564 740 ;
+C 81 ; WX 871 ; N Q ; B 40 -13 837 753 ;
+C 82 ; WX 607 ; N R ; B 70 0 572 740 ;
+C 83 ; WX 498 ; N S ; B 22 -13 473 753 ;
+C 84 ; WX 426 ; N T ; B 6 0 419 740 ;
+C 85 ; WX 655 ; N U ; B 75 -13 579 740 ;
+C 86 ; WX 702 ; N V ; B 8 0 693 740 ;
+C 87 ; WX 960 ; N W ; B 11 0 950 740 ;
+C 88 ; WX 609 ; N X ; B 8 0 602 740 ;
+C 89 ; WX 592 ; N Y ; B 1 0 592 740 ;
+C 90 ; WX 480 ; N Z ; B 12 0 470 740 ;
+C 91 ; WX 351 ; N bracketleft ; B 133 -179 337 753 ;
+C 92 ; WX 605 ; N backslash ; B 118 -100 477 740 ;
+C 93 ; WX 351 ; N bracketright ; B 14 -179 218 753 ;
+C 94 ; WX 606 ; N asciicircum ; B 53 307 553 740 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 351 ; N quoteleft ; B 95 546 257 740 ;
+C 97 ; WX 683 ; N a ; B 42 -13 621 561 ;
+C 98 ; WX 682 ; N b ; B 68 -13 647 740 ;
+C 99 ; WX 647 ; N c ; B 41 -13 607 561 ;
+C 100 ; WX 685 ; N d ; B 39 -13 618 740 ;
+C 101 ; WX 650 ; N e ; B 38 -13 608 561 ;
+C 102 ; WX 314 ; N f ; B 19 0 314 753 ; L i fi ; L l fl ;
+C 103 ; WX 673 ; N g ; B 37 -215 606 561 ;
+C 104 ; WX 610 ; N h ; B 62 0 543 740 ;
+C 105 ; WX 200 ; N i ; B 65 0 135 740 ;
+C 106 ; WX 203 ; N j ; B -44 -192 137 740 ;
+C 107 ; WX 502 ; N k ; B 70 0 498 740 ;
+C 108 ; WX 200 ; N l ; B 65 0 135 740 ;
+C 109 ; WX 938 ; N m ; B 66 0 872 561 ;
+C 110 ; WX 610 ; N n ; B 65 0 546 561 ;
+C 111 ; WX 655 ; N o ; B 42 -13 614 561 ;
+C 112 ; WX 682 ; N p ; B 64 -192 643 561 ;
+C 113 ; WX 682 ; N q ; B 37 -192 616 561 ;
+C 114 ; WX 301 ; N r ; B 65 0 291 561 ;
+C 115 ; WX 388 ; N s ; B 24 -13 364 561 ;
+C 116 ; WX 339 ; N t ; B 14 0 330 740 ;
+C 117 ; WX 608 ; N u ; B 62 -13 541 547 ;
+C 118 ; WX 554 ; N v ; B 7 0 546 547 ;
+C 119 ; WX 831 ; N w ; B 13 0 820 547 ;
+C 120 ; WX 480 ; N x ; B 12 0 468 547 ;
+C 121 ; WX 536 ; N y ; B 15 -192 523 547 ;
+C 122 ; WX 425 ; N z ; B 10 0 415 547 ;
+C 123 ; WX 351 ; N braceleft ; B 70 -189 331 740 ;
+C 124 ; WX 672 ; N bar ; B 299 -100 373 740 ;
+C 125 ; WX 351 ; N braceright ; B 20 -189 281 740 ;
+C 126 ; WX 606 ; N asciitilde ; B 72 179 534 319 ;
+C 161 ; WX 295 ; N exclamdown ; B 110 -192 184 548 ;
+C 162 ; WX 554 ; N cent ; B 48 62 510 707 ;
+C 163 ; WX 554 ; N sterling ; B 4 0 552 753 ;
+C 164 ; WX 166 ; N fraction ; B -113 0 280 740 ;
+C 165 ; WX 554 ; N yen ; B 4 0 550 740 ;
+C 166 ; WX 554 ; N florin ; B -12 -153 518 818 ;
+C 167 ; WX 615 ; N section ; B 85 -141 529 753 ;
+C 168 ; WX 554 ; N currency ; B 8 42 546 580 ;
+C 169 ; WX 198 ; N quotesingle ; B 59 444 140 740 ;
+C 170 ; WX 502 ; N quotedblleft ; B 97 546 406 740 ;
+C 171 ; WX 425 ; N guillemotleft ; B 40 81 386 481 ;
+C 172 ; WX 251 ; N guilsinglleft ; B 40 81 212 481 ;
+C 173 ; WX 251 ; N guilsinglright ; B 39 81 211 481 ;
+C 174 ; WX 487 ; N fi ; B 19 0 422 753 ;
+C 175 ; WX 485 ; N fl ; B 19 0 420 753 ;
+C 177 ; WX 500 ; N endash ; B 35 248 465 315 ;
+C 178 ; WX 553 ; N dagger ; B 59 -133 493 740 ;
+C 179 ; WX 553 ; N daggerdbl ; B 59 -133 493 740 ;
+C 180 ; WX 277 ; N periodcentered ; B 102 190 176 316 ;
+C 182 ; WX 564 ; N paragraph ; B 22 -110 551 740 ;
+C 183 ; WX 606 ; N bullet ; B 150 222 455 532 ;
+C 184 ; WX 354 ; N quotesinglbase ; B 89 -68 251 126 ;
+C 185 ; WX 502 ; N quotedblbase ; B 89 -68 399 126 ;
+C 186 ; WX 484 ; N quotedblright ; B 96 546 405 740 ;
+C 187 ; WX 425 ; N guillemotright ; B 39 81 385 481 ;
+C 188 ; WX 1000 ; N ellipsis ; B 130 0 870 126 ;
+C 189 ; WX 1174 ; N perthousand ; B 25 -13 1148 751 ;
+C 191 ; WX 591 ; N questiondown ; B 65 -205 527 548 ;
+C 193 ; WX 378 ; N grave ; B 69 619 300 786 ;
+C 194 ; WX 375 ; N acute ; B 78 619 309 786 ;
+C 195 ; WX 502 ; N circumflex ; B 74 639 428 764 ;
+C 196 ; WX 439 ; N tilde ; B 47 651 392 754 ;
+C 197 ; WX 485 ; N macron ; B 73 669 411 736 ;
+C 198 ; WX 453 ; N breve ; B 52 651 401 754 ;
+C 199 ; WX 222 ; N dotaccent ; B 74 639 148 765 ;
+C 200 ; WX 369 ; N dieresis ; B 73 639 295 765 ;
+C 202 ; WX 332 ; N ring ; B 62 600 269 807 ;
+C 203 ; WX 324 ; N cedilla ; B 80 -222 254 0 ;
+C 205 ; WX 552 ; N hungarumlaut ; B 119 605 453 800 ;
+C 206 ; WX 302 ; N ogonek ; B 73 -191 228 0 ;
+C 207 ; WX 502 ; N caron ; B 68 639 423 764 ;
+C 208 ; WX 1000 ; N emdash ; B 35 248 965 315 ;
+C 225 ; WX 992 ; N AE ; B -20 0 907 740 ;
+C 227 ; WX 369 ; N ordfeminine ; B -3 407 356 753 ;
+C 232 ; WX 517 ; N Lslash ; B 59 0 517 740 ;
+C 233 ; WX 868 ; N Oslash ; B 43 -83 826 819 ;
+C 234 ; WX 1194 ; N OE ; B 45 -13 1142 753 ;
+C 235 ; WX 369 ; N ordmasculine ; B 12 407 356 753 ;
+C 241 ; WX 1157 ; N ae ; B 34 -13 1113 561 ;
+C 245 ; WX 200 ; N dotlessi ; B 65 0 135 547 ;
+C 248 ; WX 300 ; N lslash ; B 43 0 259 740 ;
+C 249 ; WX 653 ; N oslash ; B 41 -64 613 614 ;
+C 250 ; WX 1137 ; N oe ; B 34 -13 1104 561 ;
+C 251 ; WX 554 ; N germandbls ; B 61 -13 525 753 ;
+C -1 ; WX 650 ; N ecircumflex ; B 38 -13 608 764 ;
+C -1 ; WX 650 ; N edieresis ; B 38 -13 608 765 ;
+C -1 ; WX 683 ; N aacute ; B 42 -13 621 786 ;
+C -1 ; WX 747 ; N registered ; B -9 -12 755 752 ;
+C -1 ; WX 200 ; N icircumflex ; B -77 0 277 764 ;
+C -1 ; WX 608 ; N udieresis ; B 62 -13 541 765 ;
+C -1 ; WX 655 ; N ograve ; B 42 -13 614 786 ;
+C -1 ; WX 608 ; N uacute ; B 62 -13 541 786 ;
+C -1 ; WX 608 ; N ucircumflex ; B 62 -13 541 764 ;
+C -1 ; WX 740 ; N Aacute ; B 12 0 729 949 ;
+C -1 ; WX 200 ; N igrave ; B -60 0 171 786 ;
+C -1 ; WX 226 ; N Icircumflex ; B -64 0 290 927 ;
+C -1 ; WX 647 ; N ccedilla ; B 41 -222 607 561 ;
+C -1 ; WX 683 ; N adieresis ; B 42 -13 621 765 ;
+C -1 ; WX 536 ; N Ecircumflex ; B 70 0 475 927 ;
+C -1 ; WX 388 ; N scaron ; B 11 -13 366 764 ;
+C -1 ; WX 682 ; N thorn ; B 64 -192 643 740 ;
+C -1 ; WX 1000 ; N trademark ; B 9 296 816 740 ;
+C -1 ; WX 650 ; N egrave ; B 38 -13 608 786 ;
+C -1 ; WX 332 ; N threesuperior ; B 18 289 318 747 ;
+C -1 ; WX 425 ; N zcaron ; B 10 0 415 764 ;
+C -1 ; WX 683 ; N atilde ; B 42 -13 621 754 ;
+C -1 ; WX 683 ; N aring ; B 42 -13 621 807 ;
+C -1 ; WX 655 ; N ocircumflex ; B 42 -13 614 764 ;
+C -1 ; WX 536 ; N Edieresis ; B 70 0 475 928 ;
+C -1 ; WX 831 ; N threequarters ; B 46 0 784 747 ;
+C -1 ; WX 536 ; N ydieresis ; B 15 -192 523 765 ;
+C -1 ; WX 536 ; N yacute ; B 15 -192 523 786 ;
+C -1 ; WX 200 ; N iacute ; B 31 0 262 786 ;
+C -1 ; WX 740 ; N Acircumflex ; B 12 0 729 927 ;
+C -1 ; WX 655 ; N Uacute ; B 75 -13 579 949 ;
+C -1 ; WX 650 ; N eacute ; B 38 -13 608 786 ;
+C -1 ; WX 869 ; N Ograve ; B 43 -13 826 949 ;
+C -1 ; WX 683 ; N agrave ; B 42 -13 621 786 ;
+C -1 ; WX 655 ; N Udieresis ; B 75 -13 579 928 ;
+C -1 ; WX 683 ; N acircumflex ; B 42 -13 621 764 ;
+C -1 ; WX 226 ; N Igrave ; B -47 0 184 949 ;
+C -1 ; WX 332 ; N twosuperior ; B 19 296 318 747 ;
+C -1 ; WX 655 ; N Ugrave ; B 75 -13 579 949 ;
+C -1 ; WX 831 ; N onequarter ; B 100 0 729 740 ;
+C -1 ; WX 655 ; N Ucircumflex ; B 75 -13 579 927 ;
+C -1 ; WX 498 ; N Scaron ; B 22 -13 473 927 ;
+C -1 ; WX 226 ; N Idieresis ; B 2 0 224 928 ;
+C -1 ; WX 200 ; N idieresis ; B -11 0 211 765 ;
+C -1 ; WX 536 ; N Egrave ; B 70 0 475 949 ;
+C -1 ; WX 869 ; N Oacute ; B 43 -13 826 949 ;
+C -1 ; WX 606 ; N divide ; B 51 -13 555 519 ;
+C -1 ; WX 740 ; N Atilde ; B 12 0 729 917 ;
+C -1 ; WX 740 ; N Aring ; B 12 0 729 955 ;
+C -1 ; WX 869 ; N Odieresis ; B 43 -13 826 928 ;
+C -1 ; WX 740 ; N Adieresis ; B 12 0 729 928 ;
+C -1 ; WX 740 ; N Ntilde ; B 75 0 664 917 ;
+C -1 ; WX 480 ; N Zcaron ; B 12 0 470 927 ;
+C -1 ; WX 592 ; N Thorn ; B 60 0 549 740 ;
+C -1 ; WX 226 ; N Iacute ; B 44 0 275 949 ;
+C -1 ; WX 606 ; N plusminus ; B 51 -24 555 518 ;
+C -1 ; WX 606 ; N multiply ; B 74 24 533 482 ;
+C -1 ; WX 536 ; N Eacute ; B 70 0 475 949 ;
+C -1 ; WX 592 ; N Ydieresis ; B 1 0 592 928 ;
+C -1 ; WX 332 ; N onesuperior ; B 63 296 198 740 ;
+C -1 ; WX 608 ; N ugrave ; B 62 -13 541 786 ;
+C -1 ; WX 606 ; N logicalnot ; B 51 109 555 388 ;
+C -1 ; WX 610 ; N ntilde ; B 65 0 546 754 ;
+C -1 ; WX 869 ; N Otilde ; B 43 -13 826 917 ;
+C -1 ; WX 655 ; N otilde ; B 42 -13 614 754 ;
+C -1 ; WX 813 ; N Ccedilla ; B 43 -222 771 752 ;
+C -1 ; WX 740 ; N Agrave ; B 12 0 729 949 ;
+C -1 ; WX 831 ; N onehalf ; B 81 0 750 740 ;
+C -1 ; WX 790 ; N Eth ; B 40 0 739 740 ;
+C -1 ; WX 400 ; N degree ; B 56 421 344 709 ;
+C -1 ; WX 592 ; N Yacute ; B 1 0 592 949 ;
+C -1 ; WX 869 ; N Ocircumflex ; B 43 -13 826 927 ;
+C -1 ; WX 655 ; N oacute ; B 42 -13 614 786 ;
+C -1 ; WX 608 ; N mu ; B 80 -184 527 547 ;
+C -1 ; WX 606 ; N minus ; B 51 219 555 287 ;
+C -1 ; WX 655 ; N eth ; B 42 -12 614 753 ;
+C -1 ; WX 655 ; N odieresis ; B 42 -13 614 765 ;
+C -1 ; WX 747 ; N copyright ; B -9 -12 755 752 ;
+C -1 ; WX 672 ; N brokenbar ; B 299 -100 373 740 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 216
+
+KPX A y -62
+KPX A w -65
+KPX A v -70
+KPX A u -20
+KPX A quoteright -100
+KPX A quotedblright -100
+KPX A Y -92
+KPX A W -60
+KPX A V -102
+KPX A U -40
+KPX A T -45
+KPX A Q -40
+KPX A O -50
+KPX A G -40
+KPX A C -40
+
+KPX B A -10
+
+KPX C A -40
+
+KPX D period -20
+KPX D comma -20
+KPX D Y -30
+KPX D W -10
+KPX D V -50
+KPX D A -50
+
+KPX F period -160
+KPX F e -20
+KPX F comma -180
+KPX F a -20
+KPX F A -75
+
+KPX G period -20
+KPX G comma -20
+KPX G Y -20
+
+KPX J period -15
+KPX J a -20
+KPX J A -30
+
+KPX K o -15
+KPX K e -20
+KPX K O -20
+
+KPX L y -23
+KPX L quoteright -130
+KPX L quotedblright -130
+KPX L Y -91
+KPX L W -67
+KPX L V -113
+KPX L T -46
+
+KPX O period -30
+KPX O comma -30
+KPX O Y -30
+KPX O X -30
+KPX O W -20
+KPX O V -60
+KPX O T -30
+KPX O A -60
+
+KPX P period -300
+KPX P o -60
+KPX P e -20
+KPX P comma -280
+KPX P a -20
+KPX P A -114
+
+KPX Q comma 20
+
+KPX R Y -10
+KPX R W 10
+KPX R V -10
+KPX R T 6
+
+KPX S comma 20
+
+KPX T y -50
+KPX T w -55
+KPX T u -46
+KPX T semicolon -29
+KPX T r -30
+KPX T period -91
+KPX T o -70
+KPX T i 10
+KPX T hyphen -75
+KPX T e -49
+KPX T comma -82
+KPX T colon -15
+KPX T a -90
+KPX T O -30
+KPX T A -45
+
+KPX U period -20
+KPX U comma -20
+KPX U A -40
+
+KPX V u -40
+KPX V semicolon -33
+KPX V period -165
+KPX V o -101
+KPX V i -5
+KPX V hyphen -75
+KPX V e -101
+KPX V comma -145
+KPX V colon -18
+KPX V a -104
+KPX V O -60
+KPX V G -20
+KPX V A -102
+
+KPX W y -2
+KPX W u -30
+KPX W semicolon -33
+KPX W period -106
+KPX W o -46
+KPX W i 6
+KPX W hyphen -35
+KPX W e -47
+KPX W comma -106
+KPX W colon -15
+KPX W a -50
+KPX W O -20
+KPX W A -58
+
+KPX Y u -52
+KPX Y semicolon -23
+KPX Y period -175
+KPX Y o -89
+KPX Y hyphen -85
+KPX Y e -89
+KPX Y comma -145
+KPX Y colon -10
+KPX Y a -93
+KPX Y O -30
+KPX Y A -92
+
+KPX a p 20
+KPX a b 20
+
+KPX b y -20
+KPX b v -20
+
+KPX c y -20
+KPX c k -15
+
+KPX comma space -110
+KPX comma quoteright -120
+KPX comma quotedblright -120
+
+KPX e y -20
+KPX e w -20
+KPX e v -20
+
+KPX f period -50
+KPX f o -40
+KPX f l -30
+KPX f i -34
+KPX f f -60
+KPX f e -20
+KPX f dotlessi -34
+KPX f comma -50
+KPX f a -40
+
+KPX g a -15
+
+KPX h y -30
+
+KPX k y -5
+KPX k e -15
+
+KPX m y -20
+KPX m u -20
+KPX m a -20
+
+KPX n y -15
+KPX n v -20
+
+KPX o y -20
+KPX o x -15
+KPX o w -20
+KPX o v -30
+
+KPX p y -20
+
+KPX period space -110
+KPX period quoteright -120
+KPX period quotedblright -120
+
+KPX quotedblleft quoteleft -35
+KPX quotedblleft A -100
+
+KPX quotedblright space -110
+
+KPX quoteleft quoteleft -203
+KPX quoteleft A -100
+
+KPX quoteright v -30
+KPX quoteright t 10
+KPX quoteright space -110
+KPX quoteright s -15
+KPX quoteright r -20
+KPX quoteright quoteright -203
+KPX quoteright quotedblright -35
+KPX quoteright d -110
+
+KPX r y 40
+KPX r v 40
+KPX r u 20
+KPX r t 20
+KPX r s 20
+KPX r q -8
+KPX r period -73
+KPX r p 20
+KPX r o -20
+KPX r n 21
+KPX r m 28
+KPX r l 20
+KPX r k 20
+KPX r i 20
+KPX r hyphen -60
+KPX r g -15
+KPX r e -4
+KPX r d -6
+KPX r comma -75
+KPX r c -20
+KPX r a -20
+
+KPX s period 20
+KPX s comma 20
+
+KPX space quoteleft -110
+KPX space quotedblleft -110
+KPX space Y -60
+KPX space W -25
+KPX space V -50
+KPX space T -25
+KPX space A -20
+
+KPX v period -130
+KPX v o -30
+KPX v e -20
+KPX v comma -100
+KPX v a -30
+
+KPX w period -100
+KPX w o -30
+KPX w h 15
+KPX w e -20
+KPX w comma -90
+KPX w a -30
+
+KPX y period -125
+KPX y o -30
+KPX y e -20
+KPX y comma -110
+KPX y a -30
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 183 163 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 119 163 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 186 163 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 181 163 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 204 148 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 151 163 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 81 163 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 17 163 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 84 163 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 79 163 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute -34 163 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex -138 163 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis -71 163 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave -116 163 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 151 163 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 247 163 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 184 163 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 250 163 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 246 163 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 215 163 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron -2 163 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 160 163 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 77 163 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 143 163 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 119 163 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 129 163 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 112 163 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron -11 163 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 154 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 91 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 157 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 153 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 176 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 122 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 138 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 74 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 141 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 136 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -47 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -151 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -84 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -129 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 86 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 140 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 77 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 143 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 139 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 108 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron -57 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 137 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 53 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 120 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 95 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 101 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 84 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron -38 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/AG-Bk+ b/font/font/AG-Bk+
new file mode 100644
index 0000000..4245100
--- /dev/null
+++ b/font/font/AG-Bk+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 813 ; N Ccaron ; B 43 -13 771 933 ;
+C -1 ; WX 647 ; N ccaron ; B 41 -13 607 764 ;
+C -1 ; WX 744 ; N Dcaron ; B 74 0 699 933 ;
+C -1 ; WX 798 ; N dcaron ; B 39 -13 796 814 ;
+C -1 ; WX 536 ; N Ecaron ; B 70 0 475 933 ;
+C -1 ; WX 650 ; N ecaron ; B 38 -13 608 764 ;
+C -1 ; WX 462 ; N Lcaron ; B 82 0 462 814 ;
+C -1 ; WX 462 ; N Lacute ; B 82 0 462 975 ;
+C -1 ; WX 313 ; N lcaron ; B 65 0 313 814 ;
+C -1 ; WX 200 ; N lacute ; B 14 0 245 975 ;
+C -1 ; WX 740 ; N Ncaron ; B 75 0 664 933 ;
+C -1 ; WX 610 ; N ncaron ; B 65 0 546 764 ;
+C -1 ; WX 607 ; N Rcaron ; B 70 0 572 933 ;
+C -1 ; WX 607 ; N Racute ; B 70 0 572 975 ;
+C -1 ; WX 301 ; N rcaron ; B -32 0 323 764 ;
+C -1 ; WX 301 ; N racute ; B 64 0 295 786 ;
+C -1 ; WX 426 ; N Tcaron ; B 6 0 419 933 ;
+C -1 ; WX 452 ; N tcaron ; B 14 0 508 740 ;
+C -1 ; WX 655 ; N Uring ; B 75 -13 579 933 ;
+C -1 ; WX 608 ; N uring ; B 62 -13 541 807 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 228 169 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 100 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 121 169 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 540 74 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 17 169 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 74 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 72 74 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 43 189 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 57 74 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute -64 189 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 119 169 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 54 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 52 169 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 160 189 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron -100 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute -14 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron -38 169 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 252 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 161 126 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 138 0 ;
+EndBuildComposites
diff --git a/font/font/AG-BkO b/font/font/AG-BkO
new file mode 100644
index 0000000..e0e75f3
--- /dev/null
+++ b/font/font/AG-BkO
@@ -0,0 +1,573 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1990, 1991 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Mon Mar 4 13:41:11 1991
+Comment UniqueID 34367
+Comment VMusage 6555 39267
+FontName AvantGarde-BookOblique
+FullName ITC Avant Garde Gothic Book Oblique
+FamilyName ITC Avant Garde Gothic
+Weight Book
+ItalicAngle -10.5
+IsFixedPitch false
+FontBBox -113 -222 1279 955
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.006
+Notice Copyright (c) 1985, 1987, 1989, 1990, 1991 Adobe Systems Incorporated. All Rights Reserved.ITC Avant Garde Gothic is a registered trademark of International Typeface Corporation.
+EncodingScheme AdobeStandardEncoding
+CapHeight 740
+XHeight 547
+Ascender 740
+Descender -192
+StartCharMetrics 228
+C 32 ; WX 277 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 295 ; N exclam ; B 111 0 322 740 ;
+C 34 ; WX 309 ; N quotedbl ; B 130 444 410 740 ;
+C 35 ; WX 554 ; N numbersign ; B 71 0 620 740 ;
+C 36 ; WX 554 ; N dollar ; B 107 -70 581 811 ;
+C 37 ; WX 775 ; N percent ; B 124 -13 787 751 ;
+C 38 ; WX 757 ; N ampersand ; B 92 -12 775 753 ;
+C 39 ; WX 351 ; N quoteright ; B 195 546 393 740 ;
+C 40 ; WX 369 ; N parenleft ; B 89 -205 495 757 ;
+C 41 ; WX 369 ; N parenright ; B -24 -205 382 757 ;
+C 42 ; WX 425 ; N asterisk ; B 170 446 479 740 ;
+C 43 ; WX 606 ; N plus ; B 92 0 608 506 ;
+C 44 ; WX 277 ; N comma ; B 2 -67 199 126 ;
+C 45 ; WX 332 ; N hyphen ; B 76 248 360 315 ;
+C 46 ; WX 277 ; N period ; B 102 0 199 126 ;
+C 47 ; WX 437 ; N slash ; B 25 -100 540 740 ;
+C 48 ; WX 554 ; N zero ; B 71 -13 622 753 ;
+C 49 ; WX 554 ; N one ; B 260 0 473 740 ;
+C 50 ; WX 554 ; N two ; B 40 0 615 753 ;
+C 51 ; WX 554 ; N three ; B 73 -13 565 753 ;
+C 52 ; WX 554 ; N four ; B 39 0 598 740 ;
+C 53 ; WX 554 ; N five ; B 69 -13 605 740 ;
+C 54 ; WX 554 ; N six ; B 65 -13 580 739 ;
+C 55 ; WX 554 ; N seven ; B 110 0 628 740 ;
+C 56 ; WX 554 ; N eight ; B 77 -13 580 753 ;
+C 57 ; WX 554 ; N nine ; B 111 0 626 752 ;
+C 58 ; WX 277 ; N colon ; B 102 0 278 548 ;
+C 59 ; WX 277 ; N semicolon ; B 2 -67 278 548 ;
+C 60 ; WX 606 ; N less ; B 87 -8 649 514 ;
+C 61 ; WX 606 ; N equal ; B 73 118 627 388 ;
+C 62 ; WX 606 ; N greater ; B 51 -8 613 514 ;
+C 63 ; WX 591 ; N question ; B 158 0 628 752 ;
+C 64 ; WX 867 ; N at ; B 126 -13 888 753 ;
+C 65 ; WX 740 ; N A ; B 12 0 729 740 ;
+C 66 ; WX 574 ; N B ; B 74 0 606 740 ;
+C 67 ; WX 813 ; N C ; B 105 -13 870 752 ;
+C 68 ; WX 744 ; N D ; B 74 0 773 740 ;
+C 69 ; WX 536 ; N E ; B 70 0 612 740 ;
+C 70 ; WX 485 ; N F ; B 70 0 581 740 ;
+C 71 ; WX 872 ; N G ; B 103 -13 891 753 ;
+C 72 ; WX 683 ; N H ; B 76 0 744 740 ;
+C 73 ; WX 226 ; N I ; B 76 0 287 740 ;
+C 74 ; WX 482 ; N J ; B 37 -13 539 740 ;
+C 75 ; WX 591 ; N K ; B 81 0 728 740 ;
+C 76 ; WX 462 ; N L ; B 82 0 474 740 ;
+C 77 ; WX 919 ; N M ; B 76 0 980 740 ;
+C 78 ; WX 740 ; N N ; B 75 0 801 740 ;
+C 79 ; WX 869 ; N O ; B 105 -13 901 753 ;
+C 80 ; WX 592 ; N P ; B 75 0 664 740 ;
+C 81 ; WX 871 ; N Q ; B 102 -13 912 753 ;
+C 82 ; WX 607 ; N R ; B 70 0 669 740 ;
+C 83 ; WX 498 ; N S ; B 57 -13 561 753 ;
+C 84 ; WX 426 ; N T ; B 131 0 556 740 ;
+C 85 ; WX 655 ; N U ; B 118 -13 716 740 ;
+C 86 ; WX 702 ; N V ; B 145 0 830 740 ;
+C 87 ; WX 960 ; N W ; B 148 0 1087 740 ;
+C 88 ; WX 609 ; N X ; B 8 0 724 740 ;
+C 89 ; WX 592 ; N Y ; B 138 0 729 740 ;
+C 90 ; WX 480 ; N Z ; B 12 0 596 740 ;
+C 91 ; WX 351 ; N bracketleft ; B 145 -179 477 753 ;
+C 92 ; WX 605 ; N backslash ; B 255 -100 458 740 ;
+C 93 ; WX 351 ; N bracketright ; B -19 -179 312 753 ;
+C 94 ; WX 606 ; N asciicircum ; B 110 307 610 740 ;
+C 95 ; WX 500 ; N underscore ; B -23 -125 486 -75 ;
+C 96 ; WX 351 ; N quoteleft ; B 232 546 358 740 ;
+C 97 ; WX 683 ; N a ; B 88 -13 722 561 ;
+C 98 ; WX 682 ; N b ; B 68 -13 703 740 ;
+C 99 ; WX 647 ; N c ; B 87 -13 678 561 ;
+C 100 ; WX 685 ; N d ; B 85 -13 755 740 ;
+C 101 ; WX 650 ; N e ; B 84 -13 664 561 ;
+C 102 ; WX 314 ; N f ; B 104 0 454 753 ; L i fi ; L l fl ;
+C 103 ; WX 673 ; N g ; B 56 -215 707 561 ;
+C 104 ; WX 610 ; N h ; B 62 0 606 740 ;
+C 105 ; WX 200 ; N i ; B 65 0 272 740 ;
+C 106 ; WX 203 ; N j ; B -80 -192 274 740 ;
+C 107 ; WX 502 ; N k ; B 70 0 588 740 ;
+C 108 ; WX 200 ; N l ; B 65 0 272 740 ;
+C 109 ; WX 938 ; N m ; B 66 0 938 561 ;
+C 110 ; WX 610 ; N n ; B 65 0 609 561 ;
+C 111 ; WX 655 ; N o ; B 88 -13 669 561 ;
+C 112 ; WX 682 ; N p ; B 28 -192 699 561 ;
+C 113 ; WX 682 ; N q ; B 83 -192 717 561 ;
+C 114 ; WX 301 ; N r ; B 65 0 395 561 ;
+C 115 ; WX 388 ; N s ; B 49 -13 424 561 ;
+C 116 ; WX 339 ; N t ; B 104 0 431 740 ;
+C 117 ; WX 608 ; N u ; B 100 -13 642 547 ;
+C 118 ; WX 554 ; N v ; B 108 0 647 547 ;
+C 119 ; WX 831 ; N w ; B 114 0 921 547 ;
+C 120 ; WX 480 ; N x ; B 12 0 569 547 ;
+C 121 ; WX 536 ; N y ; B 97 -192 624 547 ;
+C 122 ; WX 425 ; N z ; B 10 0 498 547 ;
+C 123 ; WX 351 ; N braceleft ; B 115 -189 468 740 ;
+C 124 ; WX 672 ; N bar ; B 280 -100 510 740 ;
+C 125 ; WX 351 ; N braceright ; B -15 -189 338 740 ;
+C 126 ; WX 606 ; N asciitilde ; B 114 179 584 319 ;
+C 161 ; WX 295 ; N exclamdown ; B 74 -192 286 548 ;
+C 162 ; WX 554 ; N cent ; B 115 62 596 707 ;
+C 163 ; WX 554 ; N sterling ; B 29 0 614 753 ;
+C 164 ; WX 166 ; N fraction ; B -113 0 417 740 ;
+C 165 ; WX 554 ; N yen ; B 75 0 687 740 ;
+C 166 ; WX 554 ; N florin ; B -39 -153 669 818 ;
+C 167 ; WX 615 ; N section ; B 118 -141 597 753 ;
+C 168 ; WX 554 ; N currency ; B 24 42 645 580 ;
+C 169 ; WX 198 ; N quotesingle ; B 153 444 277 740 ;
+C 170 ; WX 502 ; N quotedblleft ; B 234 546 507 740 ;
+C 171 ; WX 425 ; N guillemotleft ; B 92 81 469 481 ;
+C 172 ; WX 251 ; N guilsinglleft ; B 92 81 295 481 ;
+C 173 ; WX 251 ; N guilsinglright ; B 60 81 263 481 ;
+C 174 ; WX 487 ; N fi ; B 104 0 559 753 ;
+C 175 ; WX 485 ; N fl ; B 104 0 557 753 ;
+C 177 ; WX 500 ; N endash ; B 81 248 523 315 ;
+C 178 ; WX 553 ; N dagger ; B 146 -133 593 740 ;
+C 179 ; WX 553 ; N daggerdbl ; B 72 -133 593 740 ;
+C 180 ; WX 277 ; N periodcentered ; B 137 190 235 316 ;
+C 182 ; WX 564 ; N paragraph ; B 119 -110 688 740 ;
+C 183 ; WX 606 ; N bullet ; B 217 222 528 532 ;
+C 184 ; WX 354 ; N quotesinglbase ; B 76 -68 274 126 ;
+C 185 ; WX 502 ; N quotedblbase ; B 76 -68 422 126 ;
+C 186 ; WX 484 ; N quotedblright ; B 197 546 542 740 ;
+C 187 ; WX 425 ; N guillemotright ; B 60 81 437 481 ;
+C 188 ; WX 1000 ; N ellipsis ; B 130 0 893 126 ;
+C 189 ; WX 1174 ; N perthousand ; B 128 -13 1182 751 ;
+C 191 ; WX 591 ; N questiondown ; B 64 -205 534 548 ;
+C 193 ; WX 378 ; N grave ; B 204 619 425 786 ;
+C 194 ; WX 375 ; N acute ; B 203 619 444 786 ;
+C 195 ; WX 502 ; N circumflex ; B 192 639 546 764 ;
+C 196 ; WX 439 ; N tilde ; B 179 651 520 754 ;
+C 197 ; WX 485 ; N macron ; B 197 669 547 736 ;
+C 198 ; WX 453 ; N breve ; B 192 651 541 754 ;
+C 199 ; WX 222 ; N dotaccent ; B 192 639 290 765 ;
+C 200 ; WX 369 ; N dieresis ; B 191 639 437 765 ;
+C 202 ; WX 332 ; N ring ; B 191 600 401 807 ;
+C 203 ; WX 324 ; N cedilla ; B 52 -222 231 0 ;
+C 205 ; WX 552 ; N hungarumlaut ; B 239 605 594 800 ;
+C 206 ; WX 302 ; N ogonek ; B 53 -191 202 0 ;
+C 207 ; WX 502 ; N caron ; B 210 639 565 764 ;
+C 208 ; WX 1000 ; N emdash ; B 81 248 1023 315 ;
+C 225 ; WX 992 ; N AE ; B -20 0 1044 740 ;
+C 227 ; WX 369 ; N ordfeminine ; B 102 407 494 753 ;
+C 232 ; WX 517 ; N Lslash ; B 107 0 529 740 ;
+C 233 ; WX 868 ; N Oslash ; B 76 -83 929 819 ;
+C 234 ; WX 1194 ; N OE ; B 107 -13 1279 753 ;
+C 235 ; WX 369 ; N ordmasculine ; B 116 407 466 753 ;
+C 241 ; WX 1157 ; N ae ; B 80 -13 1169 561 ;
+C 245 ; WX 200 ; N dotlessi ; B 65 0 236 547 ;
+C 248 ; WX 300 ; N lslash ; B 95 0 354 740 ;
+C 249 ; WX 653 ; N oslash ; B 51 -64 703 614 ;
+C 250 ; WX 1137 ; N oe ; B 80 -13 1160 561 ;
+C 251 ; WX 554 ; N germandbls ; B 61 -13 578 753 ;
+C -1 ; WX 650 ; N ecircumflex ; B 84 -13 664 764 ;
+C -1 ; WX 650 ; N edieresis ; B 84 -13 664 765 ;
+C -1 ; WX 683 ; N aacute ; B 88 -13 722 786 ;
+C -1 ; WX 747 ; N registered ; B 53 -12 830 752 ;
+C -1 ; WX 200 ; N icircumflex ; B 41 0 395 764 ;
+C -1 ; WX 608 ; N udieresis ; B 100 -13 642 765 ;
+C -1 ; WX 655 ; N ograve ; B 88 -13 669 786 ;
+C -1 ; WX 608 ; N uacute ; B 100 -13 642 786 ;
+C -1 ; WX 608 ; N ucircumflex ; B 100 -13 642 764 ;
+C -1 ; WX 740 ; N Aacute ; B 12 0 729 949 ;
+C -1 ; WX 200 ; N igrave ; B 65 0 296 786 ;
+C -1 ; WX 226 ; N Icircumflex ; B 76 0 439 927 ;
+C -1 ; WX 647 ; N ccedilla ; B 87 -222 678 561 ;
+C -1 ; WX 683 ; N adieresis ; B 88 -13 722 765 ;
+C -1 ; WX 536 ; N Ecircumflex ; B 70 0 612 927 ;
+C -1 ; WX 388 ; N scaron ; B 49 -13 508 764 ;
+C -1 ; WX 682 ; N thorn ; B 28 -192 699 740 ;
+C -1 ; WX 1000 ; N trademark ; B 137 296 953 740 ;
+C -1 ; WX 650 ; N egrave ; B 84 -13 664 786 ;
+C -1 ; WX 332 ; N threesuperior ; B 98 289 408 747 ;
+C -1 ; WX 425 ; N zcaron ; B 10 0 527 764 ;
+C -1 ; WX 683 ; N atilde ; B 88 -13 722 754 ;
+C -1 ; WX 683 ; N aring ; B 88 -13 722 807 ;
+C -1 ; WX 655 ; N ocircumflex ; B 88 -13 669 764 ;
+C -1 ; WX 536 ; N Edieresis ; B 70 0 612 928 ;
+C -1 ; WX 831 ; N threequarters ; B 126 0 825 747 ;
+C -1 ; WX 536 ; N ydieresis ; B 97 -192 624 765 ;
+C -1 ; WX 536 ; N yacute ; B 97 -192 624 786 ;
+C -1 ; WX 200 ; N iacute ; B 65 0 397 786 ;
+C -1 ; WX 740 ; N Acircumflex ; B 12 0 729 927 ;
+C -1 ; WX 655 ; N Uacute ; B 118 -13 716 949 ;
+C -1 ; WX 650 ; N eacute ; B 84 -13 664 786 ;
+C -1 ; WX 869 ; N Ograve ; B 105 -13 901 949 ;
+C -1 ; WX 683 ; N agrave ; B 88 -13 722 786 ;
+C -1 ; WX 655 ; N Udieresis ; B 118 -13 716 928 ;
+C -1 ; WX 683 ; N acircumflex ; B 88 -13 722 764 ;
+C -1 ; WX 226 ; N Igrave ; B 76 0 340 949 ;
+C -1 ; WX 332 ; N twosuperior ; B 74 296 433 747 ;
+C -1 ; WX 655 ; N Ugrave ; B 118 -13 716 949 ;
+C -1 ; WX 831 ; N onequarter ; B 183 0 770 740 ;
+C -1 ; WX 655 ; N Ucircumflex ; B 118 -13 716 927 ;
+C -1 ; WX 498 ; N Scaron ; B 57 -13 593 927 ;
+C -1 ; WX 226 ; N Idieresis ; B 76 0 396 928 ;
+C -1 ; WX 200 ; N idieresis ; B 65 0 353 765 ;
+C -1 ; WX 536 ; N Egrave ; B 70 0 612 949 ;
+C -1 ; WX 869 ; N Oacute ; B 105 -13 901 949 ;
+C -1 ; WX 606 ; N divide ; B 92 -13 608 519 ;
+C -1 ; WX 740 ; N Atilde ; B 12 0 729 917 ;
+C -1 ; WX 740 ; N Aring ; B 12 0 729 955 ;
+C -1 ; WX 869 ; N Odieresis ; B 105 -13 901 928 ;
+C -1 ; WX 740 ; N Adieresis ; B 12 0 729 928 ;
+C -1 ; WX 740 ; N Ntilde ; B 75 0 801 917 ;
+C -1 ; WX 480 ; N Zcaron ; B 12 0 596 927 ;
+C -1 ; WX 592 ; N Thorn ; B 60 0 621 740 ;
+C -1 ; WX 226 ; N Iacute ; B 76 0 440 949 ;
+C -1 ; WX 606 ; N plusminus ; B 47 -24 618 518 ;
+C -1 ; WX 606 ; N multiply ; B 87 24 612 482 ;
+C -1 ; WX 536 ; N Eacute ; B 70 0 612 949 ;
+C -1 ; WX 592 ; N Ydieresis ; B 138 0 729 928 ;
+C -1 ; WX 332 ; N onesuperior ; B 190 296 335 740 ;
+C -1 ; WX 608 ; N ugrave ; B 100 -13 642 786 ;
+C -1 ; WX 606 ; N logicalnot ; B 110 109 627 388 ;
+C -1 ; WX 610 ; N ntilde ; B 65 0 609 754 ;
+C -1 ; WX 869 ; N Otilde ; B 105 -13 901 917 ;
+C -1 ; WX 655 ; N otilde ; B 88 -13 669 754 ;
+C -1 ; WX 813 ; N Ccedilla ; B 105 -222 870 752 ;
+C -1 ; WX 740 ; N Agrave ; B 12 0 729 949 ;
+C -1 ; WX 831 ; N onehalf ; B 164 0 810 740 ;
+C -1 ; WX 790 ; N Eth ; B 104 0 813 740 ;
+C -1 ; WX 400 ; N degree ; B 158 421 451 709 ;
+C -1 ; WX 592 ; N Yacute ; B 138 0 729 949 ;
+C -1 ; WX 869 ; N Ocircumflex ; B 105 -13 901 927 ;
+C -1 ; WX 655 ; N oacute ; B 88 -13 669 786 ;
+C -1 ; WX 608 ; N mu ; B 46 -184 628 547 ;
+C -1 ; WX 606 ; N minus ; B 92 219 608 287 ;
+C -1 ; WX 655 ; N eth ; B 88 -12 675 753 ;
+C -1 ; WX 655 ; N odieresis ; B 88 -13 669 765 ;
+C -1 ; WX 747 ; N copyright ; B 53 -12 830 752 ;
+C -1 ; WX 672 ; N brokenbar ; B 280 -100 510 740 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 216
+
+KPX A y -62
+KPX A w -65
+KPX A v -70
+KPX A u -20
+KPX A quoteright -100
+KPX A quotedblright -100
+KPX A Y -92
+KPX A W -60
+KPX A V -102
+KPX A U -40
+KPX A T -45
+KPX A Q -40
+KPX A O -50
+KPX A G -40
+KPX A C -40
+
+KPX B A -10
+
+KPX C A -40
+
+KPX D period -20
+KPX D comma -20
+KPX D Y -30
+KPX D W -10
+KPX D V -50
+KPX D A -50
+
+KPX F period -160
+KPX F e -20
+KPX F comma -180
+KPX F a -20
+KPX F A -75
+
+KPX G period -20
+KPX G comma -20
+KPX G Y -20
+
+KPX J period -15
+KPX J a -20
+KPX J A -30
+
+KPX K o -15
+KPX K e -20
+KPX K O -20
+
+KPX L y -23
+KPX L quoteright -130
+KPX L quotedblright -130
+KPX L Y -91
+KPX L W -67
+KPX L V -113
+KPX L T -46
+
+KPX O period -30
+KPX O comma -30
+KPX O Y -30
+KPX O X -30
+KPX O W -20
+KPX O V -60
+KPX O T -30
+KPX O A -60
+
+KPX P period -300
+KPX P o -60
+KPX P e -20
+KPX P comma -280
+KPX P a -20
+KPX P A -114
+
+KPX Q comma 20
+
+KPX R Y -10
+KPX R W 10
+KPX R V -10
+KPX R T 6
+
+KPX S comma 20
+
+KPX T y -50
+KPX T w -55
+KPX T u -46
+KPX T semicolon -29
+KPX T r -30
+KPX T period -91
+KPX T o -70
+KPX T i 10
+KPX T hyphen -75
+KPX T e -49
+KPX T comma -82
+KPX T colon -15
+KPX T a -90
+KPX T O -30
+KPX T A -45
+
+KPX U period -20
+KPX U comma -20
+KPX U A -40
+
+KPX V u -40
+KPX V semicolon -33
+KPX V period -165
+KPX V o -101
+KPX V i -5
+KPX V hyphen -75
+KPX V e -101
+KPX V comma -145
+KPX V colon -18
+KPX V a -104
+KPX V O -60
+KPX V G -20
+KPX V A -102
+
+KPX W y -2
+KPX W u -30
+KPX W semicolon -33
+KPX W period -106
+KPX W o -46
+KPX W i 6
+KPX W hyphen -35
+KPX W e -47
+KPX W comma -106
+KPX W colon -15
+KPX W a -50
+KPX W O -20
+KPX W A -58
+
+KPX Y u -52
+KPX Y semicolon -23
+KPX Y period -175
+KPX Y o -89
+KPX Y hyphen -85
+KPX Y e -89
+KPX Y comma -145
+KPX Y colon -10
+KPX Y a -93
+KPX Y O -30
+KPX Y A -92
+
+KPX a p 20
+KPX a b 20
+
+KPX b y -20
+KPX b v -20
+
+KPX c y -20
+KPX c k -15
+
+KPX comma space -110
+KPX comma quoteright -120
+KPX comma quotedblright -120
+
+KPX e y -20
+KPX e w -20
+KPX e v -20
+
+KPX f period -50
+KPX f o -40
+KPX f l -30
+KPX f i -34
+KPX f f -60
+KPX f e -20
+KPX f dotlessi -34
+KPX f comma -50
+KPX f a -40
+
+KPX g a -15
+
+KPX h y -30
+
+KPX k y -5
+KPX k e -15
+
+KPX m y -20
+KPX m u -20
+KPX m a -20
+
+KPX n y -15
+KPX n v -20
+
+KPX o y -20
+KPX o x -15
+KPX o w -20
+KPX o v -30
+
+KPX p y -20
+
+KPX period space -110
+KPX period quoteright -120
+KPX period quotedblright -120
+
+KPX quotedblleft quoteleft -35
+KPX quotedblleft A -100
+
+KPX quotedblright space -110
+
+KPX quoteleft quoteleft -203
+KPX quoteleft A -100
+
+KPX quoteright v -30
+KPX quoteright t 10
+KPX quoteright space -110
+KPX quoteright s -15
+KPX quoteright r -20
+KPX quoteright quoteright -203
+KPX quoteright quotedblright -35
+KPX quoteright d -110
+
+KPX r y 40
+KPX r v 40
+KPX r u 20
+KPX r t 20
+KPX r s 20
+KPX r q -8
+KPX r period -73
+KPX r p 20
+KPX r o -20
+KPX r n 21
+KPX r m 28
+KPX r l 20
+KPX r k 20
+KPX r i 20
+KPX r hyphen -60
+KPX r g -15
+KPX r e -4
+KPX r d -6
+KPX r comma -75
+KPX r c -20
+KPX r a -20
+
+KPX s period 20
+KPX s comma 20
+
+KPX space quoteleft -110
+KPX space quotedblleft -110
+KPX space Y -60
+KPX space W -25
+KPX space V -50
+KPX space T -25
+KPX space A -20
+
+KPX v period -130
+KPX v o -30
+KPX v e -20
+KPX v comma -100
+KPX v a -30
+
+KPX w period -100
+KPX w o -30
+KPX w h 15
+KPX w e -20
+KPX w comma -90
+KPX w a -30
+
+KPX y period -125
+KPX y o -30
+KPX y e -20
+KPX y comma -110
+KPX y a -30
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 213 163 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 149 163 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 216 163 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 211 163 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 231 148 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 181 163 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 111 163 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 47 163 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 114 163 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 109 163 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute -4 163 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex -108 163 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis -41 163 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave -86 163 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 181 163 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 277 163 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 214 163 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 280 163 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 276 163 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 245 163 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 28 163 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 190 163 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 107 163 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 173 163 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 149 163 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 159 163 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 142 163 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 19 163 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 154 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 91 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 157 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 153 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 176 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 122 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 138 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 74 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 141 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 136 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -47 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -151 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -84 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -129 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 86 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 140 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 77 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 143 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 139 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 108 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron -57 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 137 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 53 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 120 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 95 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 101 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 84 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron -38 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/AG-BkO+ b/font/font/AG-BkO+
new file mode 100644
index 0000000..48b85b5
--- /dev/null
+++ b/font/font/AG-BkO+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 813 ; N Ccaron ; B 105 -13 870 933 ;
+C -1 ; WX 647 ; N ccaron ; B 87 -13 678 764 ;
+C -1 ; WX 744 ; N Dcaron ; B 74 0 773 933 ;
+C -1 ; WX 824 ; N dcaron ; B 85 -13 973 814 ;
+C -1 ; WX 536 ; N Ecaron ; B 70 0 612 933 ;
+C -1 ; WX 650 ; N ecaron ; B 84 -13 664 764 ;
+C -1 ; WX 462 ; N Lcaron ; B 82 0 505 814 ;
+C -1 ; WX 462 ; N Lacute ; B 82 0 520 975 ;
+C -1 ; WX 339 ; N lcaron ; B 65 0 490 814 ;
+C -1 ; WX 200 ; N lacute ; B 65 0 414 975 ;
+C -1 ; WX 740 ; N Ncaron ; B 75 0 801 933 ;
+C -1 ; WX 610 ; N ncaron ; B 65 0 619 764 ;
+C -1 ; WX 607 ; N Rcaron ; B 70 0 669 933 ;
+C -1 ; WX 607 ; N Racute ; B 70 0 669 975 ;
+C -1 ; WX 301 ; N rcaron ; B 65 0 465 764 ;
+C -1 ; WX 301 ; N racute ; B 65 0 431 786 ;
+C -1 ; WX 426 ; N Tcaron ; B 131 0 556 933 ;
+C -1 ; WX 478 ; N tcaron ; B 104 0 649 740 ;
+C -1 ; WX 655 ; N Uring ; B 118 -13 716 933 ;
+C -1 ; WX 608 ; N uring ; B 100 -13 642 807 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 261 169 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 102 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 150 169 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 580 74 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 46 169 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 74 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 112 74 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 76 189 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 97 74 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute -30 189 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 148 169 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 54 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 81 169 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 195 189 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron -100 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute -13 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron -9 169 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 256 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 183 126 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 138 0 ;
+EndBuildComposites
diff --git a/font/font/AG-CnBd b/font/font/AG-CnBd
new file mode 100644
index 0000000..429d72f
--- /dev/null
+++ b/font/font/AG-CnBd
@@ -0,0 +1,447 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Thu Apr 12 12:20:42 1990
+Comment UniqueID 28708
+Comment VMusage 26256 33148
+FontName AvantGarde-CondBold
+FullName ITC Avant Garde Gothic Condensed Bold
+FamilyName ITC Avant Garde Gothic
+Weight Bold
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -167 -234 1000 1001
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.001
+Notice Copyright (c) 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.Avant Garde Gothic is a registered trademark of International Typeface Corporation.
+EncodingScheme AdobeStandardEncoding
+CapHeight 724
+XHeight 568
+Ascender 724
+Descender -180
+StartCharMetrics 228
+C 32 ; WX 278 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 278 ; N exclam ; B 65 0 213 724 ;
+C 34 ; WX 333 ; N quotedbl ; B 10 444 323 724 ;
+C 35 ; WX 556 ; N numbersign ; B 22 0 534 724 ;
+C 36 ; WX 556 ; N dollar ; B 48 -72 508 780 ;
+C 37 ; WX 889 ; N percent ; B 44 -12 845 736 ;
+C 38 ; WX 667 ; N ampersand ; B 34 -12 642 736 ;
+C 39 ; WX 222 ; N quoteright ; B 2 486 228 736 ;
+C 40 ; WX 389 ; N parenleft ; B 42 -210 345 742 ;
+C 41 ; WX 389 ; N parenright ; B 44 -210 347 742 ;
+C 42 ; WX 444 ; N asterisk ; B 30 344 414 724 ;
+C 43 ; WX 600 ; N plus ; B 47 0 553 506 ;
+C 44 ; WX 278 ; N comma ; B 14 -102 212 148 ;
+C 45 ; WX 333 ; N hyphen ; B 42 221 291 347 ;
+C 46 ; WX 278 ; N period ; B 72 0 206 148 ;
+C 47 ; WX 278 ; N slash ; B -38 -12 315 736 ;
+C 48 ; WX 556 ; N zero ; B 36 -12 520 736 ;
+C 49 ; WX 556 ; N one ; B 114 0 366 724 ;
+C 50 ; WX 556 ; N two ; B 44 0 505 736 ;
+C 51 ; WX 556 ; N three ; B 32 -12 520 736 ;
+C 52 ; WX 556 ; N four ; B 34 0 510 724 ;
+C 53 ; WX 556 ; N five ; B 50 -12 518 724 ;
+C 54 ; WX 556 ; N six ; B 34 -12 520 736 ;
+C 55 ; WX 556 ; N seven ; B 56 0 500 724 ;
+C 56 ; WX 556 ; N eight ; B 31 -12 525 736 ;
+C 57 ; WX 556 ; N nine ; B 30 -12 522 736 ;
+C 58 ; WX 278 ; N colon ; B 72 0 206 490 ;
+C 59 ; WX 278 ; N semicolon ; B 14 -102 212 490 ;
+C 60 ; WX 600 ; N less ; B 47 -9 553 515 ;
+C 61 ; WX 600 ; N equal ; B 47 82 553 424 ;
+C 62 ; WX 600 ; N greater ; B 47 -9 553 515 ;
+C 63 ; WX 500 ; N question ; B 28 0 462 736 ;
+C 64 ; WX 800 ; N at ; B 44 -12 756 736 ;
+C 65 ; WX 556 ; N A ; B 2 0 554 724 ;
+C 66 ; WX 556 ; N B ; B 63 0 520 724 ;
+C 67 ; WX 611 ; N C ; B 33 -12 569 736 ;
+C 68 ; WX 611 ; N D ; B 62 0 577 724 ;
+C 69 ; WX 500 ; N E ; B 70 0 430 724 ;
+C 70 ; WX 444 ; N F ; B 58 0 400 724 ;
+C 71 ; WX 611 ; N G ; B 33 -12 569 736 ;
+C 72 ; WX 611 ; N H ; B 63 0 548 724 ;
+C 73 ; WX 278 ; N I ; B 63 0 215 724 ;
+C 74 ; WX 500 ; N J ; B 4 -12 430 724 ;
+C 75 ; WX 556 ; N K ; B 63 0 557 724 ;
+C 76 ; WX 444 ; N L ; B 70 0 416 724 ;
+C 77 ; WX 778 ; N M ; B 66 0 712 724 ;
+C 78 ; WX 611 ; N N ; B 66 0 544 724 ;
+C 79 ; WX 611 ; N O ; B 33 -12 577 736 ;
+C 80 ; WX 556 ; N P ; B 70 0 522 724 ;
+C 81 ; WX 611 ; N Q ; B 33 -12 577 736 ;
+C 82 ; WX 556 ; N R ; B 63 0 551 724 ;
+C 83 ; WX 556 ; N S ; B 34 -12 522 736 ;
+C 84 ; WX 444 ; N T ; B 22 0 422 724 ;
+C 85 ; WX 611 ; N U ; B 61 -12 549 724 ;
+C 86 ; WX 556 ; N V ; B 9 0 547 724 ;
+C 87 ; WX 833 ; N W ; B 4 0 828 724 ;
+C 88 ; WX 556 ; N X ; B 1 0 555 724 ;
+C 89 ; WX 500 ; N Y ; B -4 0 504 724 ;
+C 90 ; WX 500 ; N Z ; B 36 0 456 724 ;
+C 91 ; WX 389 ; N bracketleft ; B 62 -200 328 724 ;
+C 92 ; WX 278 ; N backslash ; B -37 -12 316 736 ;
+C 93 ; WX 389 ; N bracketright ; B 61 -200 327 724 ;
+C 94 ; WX 600 ; N asciicircum ; B 73 374 527 724 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 222 ; N quoteleft ; B -6 486 220 736 ;
+C 97 ; WX 500 ; N a ; B 31 -12 442 580 ;
+C 98 ; WX 500 ; N b ; B 58 -12 469 724 ;
+C 99 ; WX 444 ; N c ; B 31 -12 439 580 ;
+C 100 ; WX 500 ; N d ; B 31 -12 442 724 ;
+C 101 ; WX 500 ; N e ; B 31 -12 457 580 ;
+C 102 ; WX 278 ; N f ; B 16 0 276 724 ; L i fi ; L l fl ;
+C 103 ; WX 500 ; N g ; B 31 -192 442 580 ;
+C 104 ; WX 500 ; N h ; B 58 0 442 724 ;
+C 105 ; WX 278 ; N i ; B 72 0 206 724 ;
+C 106 ; WX 278 ; N j ; B 14 -192 206 724 ;
+C 107 ; WX 444 ; N k ; B 50 0 450 724 ;
+C 108 ; WX 278 ; N l ; B 72 0 206 724 ;
+C 109 ; WX 778 ; N m ; B 64 0 714 580 ;
+C 110 ; WX 500 ; N n ; B 58 0 442 580 ;
+C 111 ; WX 500 ; N o ; B 31 -12 469 580 ;
+C 112 ; WX 500 ; N p ; B 58 -180 469 580 ;
+C 113 ; WX 500 ; N q ; B 31 -180 442 580 ;
+C 114 ; WX 333 ; N r ; B 58 0 324 590 ;
+C 115 ; WX 444 ; N s ; B 12 -12 420 580 ;
+C 116 ; WX 278 ; N t ; B 12 0 266 676 ;
+C 117 ; WX 500 ; N u ; B 58 -12 442 568 ;
+C 118 ; WX 444 ; N v ; B 5 0 439 568 ;
+C 119 ; WX 667 ; N w ; B 1 0 665 568 ;
+C 120 ; WX 500 ; N x ; B 4 0 496 568 ;
+C 121 ; WX 444 ; N y ; B 3 -180 441 568 ;
+C 122 ; WX 444 ; N z ; B 28 0 396 568 ;
+C 123 ; WX 389 ; N braceleft ; B 22 -216 313 736 ;
+C 124 ; WX 222 ; N bar ; B 50 -12 172 736 ;
+C 125 ; WX 389 ; N braceright ; B 76 -216 367 736 ;
+C 126 ; WX 600 ; N asciitilde ; B 82 159 518 347 ;
+C 161 ; WX 278 ; N exclamdown ; B 65 -156 213 568 ;
+C 162 ; WX 556 ; N cent ; B 58 -20 488 724 ;
+C 163 ; WX 556 ; N sterling ; B 14 0 532 736 ;
+C 164 ; WX 167 ; N fraction ; B -167 -12 334 736 ;
+C 165 ; WX 556 ; N yen ; B 24 0 532 724 ;
+C 166 ; WX 556 ; N florin ; B 9 -192 547 736 ;
+C 167 ; WX 500 ; N section ; B 43 -86 457 736 ;
+C 168 ; WX 556 ; N currency ; B 18 102 538 622 ;
+C 169 ; WX 222 ; N quotesingle ; B 49 444 173 724 ;
+C 170 ; WX 444 ; N quotedblleft ; B 12 486 423 736 ;
+C 171 ; WX 444 ; N guillemotleft ; B 24 102 420 466 ;
+C 172 ; WX 278 ; N guilsinglleft ; B 32 102 246 466 ;
+C 173 ; WX 278 ; N guilsinglright ; B 32 102 246 466 ;
+C 174 ; WX 556 ; N fi ; B 26 0 484 724 ;
+C 175 ; WX 556 ; N fl ; B 26 0 484 724 ;
+C 177 ; WX 500 ; N endash ; B 0 239 500 329 ;
+C 178 ; WX 500 ; N dagger ; B 54 -80 446 724 ;
+C 179 ; WX 500 ; N daggerdbl ; B 54 -80 446 724 ;
+C 180 ; WX 278 ; N periodcentered ; B 63 177 215 329 ;
+C 182 ; WX 620 ; N paragraph ; B 30 -80 550 724 ;
+C 183 ; WX 500 ; N bullet ; B 69 181 431 543 ;
+C 184 ; WX 222 ; N quotesinglbase ; B 2 -102 228 148 ;
+C 185 ; WX 444 ; N quotedblbase ; B 21 -102 432 148 ;
+C 186 ; WX 444 ; N quotedblright ; B 21 486 432 736 ;
+C 187 ; WX 444 ; N guillemotright ; B 24 102 420 466 ;
+C 188 ; WX 1000 ; N ellipsis ; B 100 0 900 148 ;
+C 189 ; WX 1000 ; N perthousand ; B 22 -12 978 736 ;
+C 191 ; WX 500 ; N questiondown ; B 38 -168 472 568 ;
+C 193 ; WX 278 ; N grave ; B -26 626 222 774 ;
+C 194 ; WX 278 ; N acute ; B 56 626 304 774 ;
+C 195 ; WX 278 ; N circumflex ; B -38 626 316 774 ;
+C 196 ; WX 278 ; N tilde ; B -44 636 322 764 ;
+C 197 ; WX 278 ; N macron ; B -28 662 306 736 ;
+C 198 ; WX 278 ; N breve ; B -28 630 306 774 ;
+C 199 ; WX 278 ; N dotaccent ; B 76 640 202 752 ;
+C 200 ; WX 278 ; N dieresis ; B -22 640 300 752 ;
+C 202 ; WX 278 ; N ring ; B 25 632 253 860 ;
+C 203 ; WX 278 ; N cedilla ; B 16 -234 252 0 ;
+C 205 ; WX 278 ; N hungarumlaut ; B -22 626 386 774 ;
+C 206 ; WX 278 ; N ogonek ; B 25 -216 281 22 ;
+C 207 ; WX 278 ; N caron ; B -38 626 316 774 ;
+C 208 ; WX 1000 ; N emdash ; B 0 239 1000 329 ;
+C 225 ; WX 889 ; N AE ; B -12 0 804 724 ;
+C 227 ; WX 300 ; N ordfeminine ; B 4 381 280 736 ;
+C 232 ; WX 444 ; N Lslash ; B 7 0 416 724 ;
+C 233 ; WX 611 ; N Oslash ; B 0 -42 610 766 ;
+C 234 ; WX 889 ; N OE ; B 33 -12 819 736 ;
+C 235 ; WX 300 ; N ordmasculine ; B 7 380 293 736 ;
+C 241 ; WX 778 ; N ae ; B 16 -12 754 580 ;
+C 245 ; WX 278 ; N dotlessi ; B 72 0 206 568 ;
+C 248 ; WX 278 ; N lslash ; B -4 0 282 724 ;
+C 249 ; WX 500 ; N oslash ; B 5 -82 495 646 ;
+C 250 ; WX 778 ; N oe ; B 28 -12 754 580 ;
+C 251 ; WX 556 ; N germandbls ; B 60 -12 522 716 ;
+C -1 ; WX 500 ; N Zcaron ; B 36 0 456 915 ;
+C -1 ; WX 444 ; N ccedilla ; B 31 -234 439 580 ;
+C -1 ; WX 444 ; N ydieresis ; B 3 -180 441 752 ;
+C -1 ; WX 500 ; N atilde ; B 31 -12 442 764 ;
+C -1 ; WX 278 ; N icircumflex ; B -38 0 316 774 ;
+C -1 ; WX 333 ; N threesuperior ; B 12 286 330 736 ;
+C -1 ; WX 500 ; N ecircumflex ; B 31 -12 457 774 ;
+C -1 ; WX 500 ; N thorn ; B 58 -180 469 724 ;
+C -1 ; WX 500 ; N egrave ; B 31 -12 457 774 ;
+C -1 ; WX 333 ; N twosuperior ; B 14 294 320 736 ;
+C -1 ; WX 500 ; N eacute ; B 31 -12 457 774 ;
+C -1 ; WX 500 ; N otilde ; B 31 -12 469 764 ;
+C -1 ; WX 556 ; N Aacute ; B 2 0 554 915 ;
+C -1 ; WX 500 ; N ocircumflex ; B 31 -12 469 774 ;
+C -1 ; WX 444 ; N yacute ; B 3 -180 441 774 ;
+C -1 ; WX 500 ; N udieresis ; B 58 -12 442 752 ;
+C -1 ; WX 834 ; N threequarters ; B 32 -12 801 736 ;
+C -1 ; WX 500 ; N acircumflex ; B 31 -12 442 774 ;
+C -1 ; WX 611 ; N Eth ; B 4 0 577 724 ;
+C -1 ; WX 500 ; N edieresis ; B 31 -12 457 752 ;
+C -1 ; WX 500 ; N ugrave ; B 58 -12 442 774 ;
+C -1 ; WX 1000 ; N trademark ; B 20 298 932 724 ;
+C -1 ; WX 500 ; N ograve ; B 31 -12 469 774 ;
+C -1 ; WX 444 ; N scaron ; B 12 -12 420 774 ;
+C -1 ; WX 278 ; N Idieresis ; B -22 0 300 893 ;
+C -1 ; WX 500 ; N uacute ; B 58 -12 442 774 ;
+C -1 ; WX 500 ; N agrave ; B 31 -12 442 774 ;
+C -1 ; WX 500 ; N ntilde ; B 58 0 442 764 ;
+C -1 ; WX 500 ; N aring ; B 31 -12 442 860 ;
+C -1 ; WX 444 ; N zcaron ; B 28 0 399 774 ;
+C -1 ; WX 278 ; N Icircumflex ; B -38 0 316 915 ;
+C -1 ; WX 611 ; N Ntilde ; B 66 0 544 905 ;
+C -1 ; WX 500 ; N ucircumflex ; B 58 -12 442 774 ;
+C -1 ; WX 500 ; N Ecircumflex ; B 70 0 430 915 ;
+C -1 ; WX 278 ; N Iacute ; B 56 0 304 915 ;
+C -1 ; WX 611 ; N Ccedilla ; B 33 -234 569 736 ;
+C -1 ; WX 611 ; N Odieresis ; B 33 -12 577 893 ;
+C -1 ; WX 556 ; N Scaron ; B 34 -12 522 915 ;
+C -1 ; WX 500 ; N Edieresis ; B 70 0 430 893 ;
+C -1 ; WX 278 ; N Igrave ; B -26 0 222 915 ;
+C -1 ; WX 500 ; N adieresis ; B 31 -12 442 752 ;
+C -1 ; WX 611 ; N Ograve ; B 33 -12 577 915 ;
+C -1 ; WX 500 ; N Egrave ; B 70 0 430 915 ;
+C -1 ; WX 500 ; N Ydieresis ; B -4 0 504 893 ;
+C -1 ; WX 800 ; N registered ; B 12 -12 788 736 ;
+C -1 ; WX 611 ; N Otilde ; B 33 -12 577 905 ;
+C -1 ; WX 834 ; N onequarter ; B 76 -12 801 736 ;
+C -1 ; WX 611 ; N Ugrave ; B 61 -12 549 915 ;
+C -1 ; WX 611 ; N Ucircumflex ; B 61 -12 549 915 ;
+C -1 ; WX 556 ; N Thorn ; B 70 0 522 724 ;
+C -1 ; WX 600 ; N divide ; B 47 -47 553 553 ;
+C -1 ; WX 556 ; N Atilde ; B 2 0 554 905 ;
+C -1 ; WX 611 ; N Uacute ; B 61 -12 549 915 ;
+C -1 ; WX 611 ; N Ocircumflex ; B 33 -12 577 915 ;
+C -1 ; WX 600 ; N logicalnot ; B 47 82 553 424 ;
+C -1 ; WX 556 ; N Aring ; B 2 0 554 1001 ;
+C -1 ; WX 278 ; N idieresis ; B -22 0 300 752 ;
+C -1 ; WX 278 ; N iacute ; B 56 0 304 774 ;
+C -1 ; WX 500 ; N aacute ; B 31 -12 442 774 ;
+C -1 ; WX 600 ; N plusminus ; B 47 0 553 506 ;
+C -1 ; WX 600 ; N multiply ; B 47 0 553 506 ;
+C -1 ; WX 611 ; N Udieresis ; B 61 -12 549 893 ;
+C -1 ; WX 600 ; N minus ; B 47 192 553 314 ;
+C -1 ; WX 333 ; N onesuperior ; B 56 294 232 728 ;
+C -1 ; WX 500 ; N Eacute ; B 70 0 430 915 ;
+C -1 ; WX 556 ; N Acircumflex ; B 2 0 554 915 ;
+C -1 ; WX 800 ; N copyright ; B 12 -12 788 736 ;
+C -1 ; WX 556 ; N Agrave ; B 2 0 554 915 ;
+C -1 ; WX 500 ; N odieresis ; B 31 -12 469 752 ;
+C -1 ; WX 500 ; N oacute ; B 31 -12 469 774 ;
+C -1 ; WX 400 ; N degree ; B 52 440 348 736 ;
+C -1 ; WX 278 ; N igrave ; B -26 0 222 774 ;
+C -1 ; WX 500 ; N mu ; B 58 -180 442 568 ;
+C -1 ; WX 611 ; N Oacute ; B 33 -12 577 915 ;
+C -1 ; WX 500 ; N eth ; B 31 -10 469 736 ;
+C -1 ; WX 556 ; N Adieresis ; B 2 0 554 893 ;
+C -1 ; WX 500 ; N Yacute ; B -4 0 504 915 ;
+C -1 ; WX 222 ; N brokenbar ; B 50 -12 172 736 ;
+C -1 ; WX 834 ; N onehalf ; B 76 -12 801 736 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 115
+
+KPX A y -18
+KPX A w -18
+KPX A v -18
+KPX A quoteright -55
+KPX A Y -37
+KPX A W -37
+KPX A V -37
+KPX A T -37
+
+KPX F period -111
+KPX F comma -111
+KPX F A -18
+
+KPX L y -37
+KPX L quoteright -92
+KPX L Y -55
+KPX L W -55
+KPX L V -55
+KPX L T -55
+
+KPX P period -129
+KPX P comma -129
+KPX P A -37
+
+KPX R y 0
+KPX R Y -18
+KPX R W -18
+KPX R V -18
+KPX R T -18
+
+KPX T y -37
+KPX T w -55
+KPX T u -37
+KPX T semicolon -55
+KPX T s -55
+KPX T r -37
+KPX T period -74
+KPX T o -55
+KPX T i -37
+KPX T hyphen -55
+KPX T e -55
+KPX T comma -74
+KPX T colon -55
+KPX T c -55
+KPX T a -55
+KPX T A -37
+
+KPX V y -18
+KPX V u -18
+KPX V semicolon -37
+KPX V r -18
+KPX V period -92
+KPX V o -37
+KPX V i -18
+KPX V hyphen -55
+KPX V e -37
+KPX V comma -92
+KPX V colon -37
+KPX V a -37
+KPX V A -37
+
+KPX W y 0
+KPX W u 0
+KPX W semicolon -18
+KPX W r 0
+KPX W period -74
+KPX W o -18
+KPX W i 0
+KPX W hyphen -18
+KPX W e -18
+KPX W comma -74
+KPX W colon -18
+KPX W a -18
+KPX W A -18
+
+KPX Y v -18
+KPX Y u -18
+KPX Y semicolon -37
+KPX Y q -37
+KPX Y period -74
+KPX Y p -18
+KPX Y o -37
+KPX Y i -18
+KPX Y hyphen -55
+KPX Y e -37
+KPX Y comma -74
+KPX Y colon -37
+KPX Y a -37
+KPX Y A -37
+
+KPX f quoteright 18
+KPX f f 0
+
+KPX quoteleft quoteleft -37
+
+KPX quoteright t 0
+KPX quoteright s -55
+KPX quoteright quoteright -37
+
+KPX r z 0
+KPX r y 0
+KPX r x 0
+KPX r w 0
+KPX r v 0
+KPX r u 0
+KPX r t 0
+KPX r r 0
+KPX r quoteright 18
+KPX r q 0
+KPX r period -55
+KPX r o 0
+KPX r n 0
+KPX r m 0
+KPX r hyphen -37
+KPX r h 0
+KPX r g 0
+KPX r f 0
+KPX r e 0
+KPX r d 0
+KPX r comma -55
+KPX r c 0
+
+KPX v period -55
+KPX v comma -55
+
+KPX w period -37
+KPX w comma -37
+
+KPX y period -55
+KPX y comma -55
+EndKernPairs
+EndKernData
+StartComposites 58
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 139 141 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 139 141 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 139 141 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 139 141 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 139 141 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 139 141 ;
+CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 167 0 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 111 141 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 111 141 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 111 141 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 111 141 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 0 141 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 0 141 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 0 141 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 0 141 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 167 141 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 167 141 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 167 141 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 167 141 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 167 141 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 167 141 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 139 141 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 167 141 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 167 141 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 167 141 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 167 141 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 111 141 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 111 141 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 111 141 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 111 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 111 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 111 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 111 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 111 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 111 0 ;
+CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 83 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 111 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 111 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 111 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 111 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute 0 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex 0 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis 0 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave 0 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 111 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 111 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 111 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 111 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 111 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 111 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 83 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 111 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 111 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 111 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 111 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 83 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 83 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 83 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/AG-CnBd+ b/font/font/AG-CnBd+
new file mode 100644
index 0000000..c66eaea
--- /dev/null
+++ b/font/font/AG-CnBd+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 611 ; N Ccaron ; B 33 -12 569 938 ;
+C -1 ; WX 444 ; N ccaron ; B 31 -12 439 774 ;
+C -1 ; WX 611 ; N Dcaron ; B 62 0 577 938 ;
+C -1 ; WX 658 ; N dcaron ; B 31 -12 691 796 ;
+C -1 ; WX 500 ; N Ecaron ; B 70 0 430 938 ;
+C -1 ; WX 500 ; N ecaron ; B 31 -12 457 774 ;
+C -1 ; WX 444 ; N Lcaron ; B 70 0 464 796 ;
+C -1 ; WX 444 ; N Lacute ; B 70 0 416 938 ;
+C -1 ; WX 436 ; N lcaron ; B 72 0 455 796 ;
+C -1 ; WX 278 ; N lacute ; B 72 0 329 938 ;
+C -1 ; WX 611 ; N Ncaron ; B 66 0 544 938 ;
+C -1 ; WX 500 ; N ncaron ; B 58 0 442 774 ;
+C -1 ; WX 556 ; N Rcaron ; B 63 0 551 938 ;
+C -1 ; WX 556 ; N Racute ; B 63 0 551 938 ;
+C -1 ; WX 333 ; N rcaron ; B -11 0 343 774 ;
+C -1 ; WX 333 ; N racute ; B 58 0 356 774 ;
+C -1 ; WX 444 ; N Tcaron ; B 22 0 422 938 ;
+C -1 ; WX 436 ; N tcaron ; B 12 0 515 736 ;
+C -1 ; WX 611 ; N Uring ; B 61 -12 549 938 ;
+C -1 ; WX 500 ; N uring ; B 58 -12 442 860 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 220 164 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 103 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 166 164 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 463 60 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 111 164 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 111 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 236 60 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 83 164 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 227 60 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 25 164 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 166 164 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 111 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 139 164 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 186 164 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 27 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 52 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 83 164 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 287 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 166 78 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 111 0 ;
+EndBuildComposites
diff --git a/font/font/AG-CnBk b/font/font/AG-CnBk
new file mode 100644
index 0000000..f23a09f
--- /dev/null
+++ b/font/font/AG-CnBk
@@ -0,0 +1,447 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Thu Apr 12 12:58:00 1990
+Comment UniqueID 28712
+Comment VMusage 24087 30979
+FontName AvantGarde-CondBook
+FullName ITC Avant Garde Gothic Condensed Book
+FamilyName ITC Avant Garde Gothic
+Weight Book
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -167 -214 1000 977
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.001
+Notice Copyright (c) 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.Avant Garde Gothic is a registered trademark of International Typeface Corporation.
+EncodingScheme AdobeStandardEncoding
+CapHeight 724
+XHeight 550
+Ascender 724
+Descender -198
+StartCharMetrics 228
+C 32 ; WX 278 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 222 ; N exclam ; B 74 0 148 724 ;
+C 34 ; WX 333 ; N quotedbl ; B 78 453 255 724 ;
+C 35 ; WX 556 ; N numbersign ; B 25 0 531 724 ;
+C 36 ; WX 556 ; N dollar ; B 54 -121 492 816 ;
+C 37 ; WX 889 ; N percent ; B 58 -12 831 736 ;
+C 38 ; WX 611 ; N ampersand ; B 25 -12 595 736 ;
+C 39 ; WX 222 ; N quoteright ; B 22 514 200 736 ;
+C 40 ; WX 389 ; N parenleft ; B 74 -196 363 742 ;
+C 41 ; WX 389 ; N parenright ; B 26 -196 315 742 ;
+C 42 ; WX 444 ; N asterisk ; B 50 366 394 724 ;
+C 43 ; WX 600 ; N plus ; B 47 0 553 506 ;
+C 44 ; WX 278 ; N comma ; B 4 -118 182 104 ;
+C 45 ; WX 333 ; N hyphen ; B 43 244 290 306 ;
+C 46 ; WX 278 ; N period ; B 104 0 174 100 ;
+C 47 ; WX 278 ; N slash ; B -20 -12 298 736 ;
+C 48 ; WX 556 ; N zero ; B 32 -12 524 736 ;
+C 49 ; WX 556 ; N one ; B 138 0 332 724 ;
+C 50 ; WX 556 ; N two ; B 49 0 486 736 ;
+C 51 ; WX 556 ; N three ; B 34 -12 501 736 ;
+C 52 ; WX 556 ; N four ; B 29 0 502 724 ;
+C 53 ; WX 556 ; N five ; B 49 -12 501 724 ;
+C 54 ; WX 556 ; N six ; B 40 -12 515 736 ;
+C 55 ; WX 556 ; N seven ; B 46 0 476 724 ;
+C 56 ; WX 556 ; N eight ; B 36 -12 520 736 ;
+C 57 ; WX 556 ; N nine ; B 41 -12 516 736 ;
+C 58 ; WX 278 ; N colon ; B 104 0 174 456 ;
+C 59 ; WX 278 ; N semicolon ; B 4 -118 182 456 ;
+C 60 ; WX 600 ; N less ; B 47 -8 553 514 ;
+C 61 ; WX 600 ; N equal ; B 47 121 553 385 ;
+C 62 ; WX 600 ; N greater ; B 47 -8 553 514 ;
+C 63 ; WX 444 ; N question ; B 20 0 409 736 ;
+C 64 ; WX 800 ; N at ; B 41 -12 759 736 ;
+C 65 ; WX 500 ; N A ; B -2 0 502 724 ;
+C 66 ; WX 556 ; N B ; B 72 0 524 724 ;
+C 67 ; WX 556 ; N C ; B 31 -12 524 736 ;
+C 68 ; WX 611 ; N D ; B 72 0 579 724 ;
+C 69 ; WX 500 ; N E ; B 72 0 436 724 ;
+C 70 ; WX 444 ; N F ; B 72 0 406 724 ;
+C 71 ; WX 611 ; N G ; B 31 -12 566 736 ;
+C 72 ; WX 611 ; N H ; B 72 0 539 724 ;
+C 73 ; WX 222 ; N I ; B 72 0 150 724 ;
+C 74 ; WX 444 ; N J ; B 10 -12 372 724 ;
+C 75 ; WX 556 ; N K ; B 72 0 551 724 ;
+C 76 ; WX 444 ; N L ; B 72 0 426 724 ;
+C 77 ; WX 722 ; N M ; B 72 0 650 724 ;
+C 78 ; WX 611 ; N N ; B 72 0 539 724 ;
+C 79 ; WX 611 ; N O ; B 31 -12 579 736 ;
+C 80 ; WX 556 ; N P ; B 72 0 524 724 ;
+C 81 ; WX 611 ; N Q ; B 31 -12 595 736 ;
+C 82 ; WX 556 ; N R ; B 72 0 536 724 ;
+C 83 ; WX 500 ; N S ; B 24 -12 475 736 ;
+C 84 ; WX 444 ; N T ; B 10 0 434 724 ;
+C 85 ; WX 556 ; N U ; B 59 -12 497 724 ;
+C 86 ; WX 500 ; N V ; B -3 0 503 724 ;
+C 87 ; WX 833 ; N W ; B 5 0 828 724 ;
+C 88 ; WX 500 ; N X ; B 2 0 497 724 ;
+C 89 ; WX 500 ; N Y ; B 4 0 496 724 ;
+C 90 ; WX 444 ; N Z ; B 16 0 418 724 ;
+C 91 ; WX 389 ; N bracketleft ; B 102 -190 351 724 ;
+C 92 ; WX 278 ; N backslash ; B -20 -12 298 736 ;
+C 93 ; WX 389 ; N bracketright ; B 38 -190 287 724 ;
+C 94 ; WX 600 ; N asciicircum ; B 49 282 551 724 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 222 ; N quoteleft ; B 22 514 200 736 ;
+C 97 ; WX 500 ; N a ; B 34 -10 440 560 ;
+C 98 ; WX 500 ; N b ; B 60 -10 466 724 ;
+C 99 ; WX 444 ; N c ; B 34 -10 416 560 ;
+C 100 ; WX 500 ; N d ; B 34 -10 440 724 ;
+C 101 ; WX 444 ; N e ; B 28 -10 416 560 ;
+C 102 ; WX 222 ; N f ; B 0 0 240 724 ; L i fi ; L l fl ;
+C 103 ; WX 500 ; N g ; B 34 -214 436 560 ;
+C 104 ; WX 500 ; N h ; B 60 0 440 724 ;
+C 105 ; WX 222 ; N i ; B 74 0 148 720 ;
+C 106 ; WX 222 ; N j ; B -45 -214 148 720 ;
+C 107 ; WX 444 ; N k ; B 60 0 436 724 ;
+C 108 ; WX 222 ; N l ; B 74 0 148 724 ;
+C 109 ; WX 778 ; N m ; B 60 0 718 560 ;
+C 110 ; WX 500 ; N n ; B 60 0 440 560 ;
+C 111 ; WX 500 ; N o ; B 34 -10 466 560 ;
+C 112 ; WX 500 ; N p ; B 60 -198 466 560 ;
+C 113 ; WX 500 ; N q ; B 34 -198 440 560 ;
+C 114 ; WX 278 ; N r ; B 60 0 276 560 ;
+C 115 ; WX 444 ; N s ; B 28 -10 410 560 ;
+C 116 ; WX 222 ; N t ; B 5 0 233 720 ;
+C 117 ; WX 500 ; N u ; B 60 -10 440 550 ;
+C 118 ; WX 444 ; N v ; B 10 0 434 550 ;
+C 119 ; WX 667 ; N w ; B -5 0 671 550 ;
+C 120 ; WX 444 ; N x ; B 6 0 438 550 ;
+C 121 ; WX 444 ; N y ; B 8 -214 436 550 ;
+C 122 ; WX 444 ; N z ; B 22 0 404 550 ;
+C 123 ; WX 389 ; N braceleft ; B 44 -198 347 736 ;
+C 124 ; WX 222 ; N bar ; B 75 -12 147 736 ;
+C 125 ; WX 389 ; N braceright ; B 42 -198 345 736 ;
+C 126 ; WX 600 ; N asciitilde ; B 69 179 531 327 ;
+C 161 ; WX 222 ; N exclamdown ; B 74 -174 148 550 ;
+C 162 ; WX 556 ; N cent ; B 75 -12 460 736 ;
+C 163 ; WX 556 ; N sterling ; B 21 0 527 736 ;
+C 164 ; WX 167 ; N fraction ; B -167 -12 334 736 ;
+C 165 ; WX 556 ; N yen ; B 32 0 524 724 ;
+C 166 ; WX 556 ; N florin ; B 10 -214 545 736 ;
+C 167 ; WX 444 ; N section ; B 35 -80 408 736 ;
+C 168 ; WX 556 ; N currency ; B 28 112 528 612 ;
+C 169 ; WX 222 ; N quotesingle ; B 82 453 140 724 ;
+C 170 ; WX 333 ; N quotedblleft ; B 22 514 311 736 ;
+C 171 ; WX 444 ; N guillemotleft ; B 44 95 400 455 ;
+C 172 ; WX 278 ; N guilsinglleft ; B 41 95 237 455 ;
+C 173 ; WX 278 ; N guilsinglright ; B 41 95 237 455 ;
+C 174 ; WX 444 ; N fi ; B 0 0 370 724 ;
+C 175 ; WX 444 ; N fl ; B 0 0 370 724 ;
+C 177 ; WX 500 ; N endash ; B 0 252 500 298 ;
+C 178 ; WX 444 ; N dagger ; B 48 -92 396 724 ;
+C 179 ; WX 444 ; N daggerdbl ; B 48 -92 396 724 ;
+C 180 ; WX 278 ; N periodcentered ; B 89 203 189 303 ;
+C 182 ; WX 600 ; N paragraph ; B 49 -92 502 724 ;
+C 183 ; WX 500 ; N bullet ; B 69 181 431 543 ;
+C 184 ; WX 222 ; N quotesinglbase ; B 22 -118 200 104 ;
+C 185 ; WX 333 ; N quotedblbase ; B 22 -118 311 104 ;
+C 186 ; WX 333 ; N quotedblright ; B 22 514 311 736 ;
+C 187 ; WX 444 ; N guillemotright ; B 44 95 400 455 ;
+C 188 ; WX 1000 ; N ellipsis ; B 132 0 868 100 ;
+C 189 ; WX 1000 ; N perthousand ; B 22 -12 978 736 ;
+C 191 ; WX 444 ; N questiondown ; B 35 -186 424 550 ;
+C 193 ; WX 222 ; N grave ; B -14 608 174 748 ;
+C 194 ; WX 222 ; N acute ; B 48 608 236 748 ;
+C 195 ; WX 222 ; N circumflex ; B -36 608 258 748 ;
+C 196 ; WX 222 ; N tilde ; B -46 620 268 722 ;
+C 197 ; WX 222 ; N macron ; B -36 646 258 692 ;
+C 198 ; WX 222 ; N breve ; B -32 614 254 741 ;
+C 199 ; WX 222 ; N dotaccent ; B 79 619 143 721 ;
+C 200 ; WX 222 ; N dieresis ; B 0 619 222 721 ;
+C 202 ; WX 222 ; N ring ; B 5 610 217 822 ;
+C 203 ; WX 222 ; N cedilla ; B 10 -214 217 0 ;
+C 205 ; WX 222 ; N hungarumlaut ; B -12 608 296 748 ;
+C 206 ; WX 222 ; N ogonek ; B 1 -210 238 19 ;
+C 207 ; WX 222 ; N caron ; B -36 608 258 748 ;
+C 208 ; WX 1000 ; N emdash ; B 0 252 1000 298 ;
+C 225 ; WX 833 ; N AE ; B -14 0 769 724 ;
+C 227 ; WX 300 ; N ordfeminine ; B 10 394 274 736 ;
+C 232 ; WX 444 ; N Lslash ; B 0 0 426 724 ;
+C 233 ; WX 611 ; N Oslash ; B 12 -36 581 760 ;
+C 234 ; WX 944 ; N OE ; B 31 -12 880 736 ;
+C 235 ; WX 300 ; N ordmasculine ; B 9 394 291 736 ;
+C 241 ; WX 778 ; N ae ; B 23 -10 755 560 ;
+C 245 ; WX 222 ; N dotlessi ; B 74 0 148 550 ;
+C 248 ; WX 222 ; N lslash ; B -8 0 230 724 ;
+C 249 ; WX 500 ; N oslash ; B 23 -73 466 623 ;
+C 250 ; WX 778 ; N oe ; B 23 -10 755 560 ;
+C 251 ; WX 556 ; N germandbls ; B 65 -6 518 724 ;
+C -1 ; WX 444 ; N Zcaron ; B 16 0 418 903 ;
+C -1 ; WX 444 ; N ccedilla ; B 34 -214 416 560 ;
+C -1 ; WX 444 ; N ydieresis ; B 8 -214 436 721 ;
+C -1 ; WX 500 ; N atilde ; B 34 -10 440 722 ;
+C -1 ; WX 222 ; N icircumflex ; B -36 0 258 748 ;
+C -1 ; WX 333 ; N threesuperior ; B 13 286 320 736 ;
+C -1 ; WX 444 ; N ecircumflex ; B 28 -10 416 748 ;
+C -1 ; WX 500 ; N thorn ; B 60 -198 466 724 ;
+C -1 ; WX 444 ; N egrave ; B 28 -10 416 748 ;
+C -1 ; WX 333 ; N twosuperior ; B 20 294 314 736 ;
+C -1 ; WX 444 ; N eacute ; B 28 -10 416 748 ;
+C -1 ; WX 500 ; N otilde ; B 34 -10 466 722 ;
+C -1 ; WX 500 ; N Aacute ; B -2 0 502 903 ;
+C -1 ; WX 500 ; N ocircumflex ; B 34 -10 466 748 ;
+C -1 ; WX 444 ; N yacute ; B 8 -214 436 748 ;
+C -1 ; WX 500 ; N udieresis ; B 60 -10 440 721 ;
+C -1 ; WX 834 ; N threequarters ; B 33 -12 793 736 ;
+C -1 ; WX 500 ; N acircumflex ; B 34 -10 440 748 ;
+C -1 ; WX 611 ; N Eth ; B -12 0 579 724 ;
+C -1 ; WX 444 ; N edieresis ; B 28 -10 416 721 ;
+C -1 ; WX 500 ; N ugrave ; B 60 -10 440 748 ;
+C -1 ; WX 990 ; N trademark ; B 42 324 876 724 ;
+C -1 ; WX 500 ; N ograve ; B 34 -10 466 748 ;
+C -1 ; WX 444 ; N scaron ; B 28 -10 410 748 ;
+C -1 ; WX 222 ; N Idieresis ; B 0 0 222 876 ;
+C -1 ; WX 500 ; N uacute ; B 60 -10 440 748 ;
+C -1 ; WX 500 ; N agrave ; B 34 -10 440 748 ;
+C -1 ; WX 500 ; N ntilde ; B 60 0 440 722 ;
+C -1 ; WX 500 ; N aring ; B 34 -10 440 822 ;
+C -1 ; WX 444 ; N zcaron ; B 22 0 404 748 ;
+C -1 ; WX 222 ; N Icircumflex ; B -36 0 258 903 ;
+C -1 ; WX 611 ; N Ntilde ; B 72 0 539 877 ;
+C -1 ; WX 500 ; N ucircumflex ; B 60 -10 440 748 ;
+C -1 ; WX 500 ; N Ecircumflex ; B 72 0 436 903 ;
+C -1 ; WX 222 ; N Iacute ; B 48 0 236 903 ;
+C -1 ; WX 556 ; N Ccedilla ; B 31 -214 524 736 ;
+C -1 ; WX 611 ; N Odieresis ; B 31 -12 579 876 ;
+C -1 ; WX 500 ; N Scaron ; B 24 -12 475 903 ;
+C -1 ; WX 500 ; N Edieresis ; B 72 0 436 876 ;
+C -1 ; WX 222 ; N Igrave ; B -14 0 174 903 ;
+C -1 ; WX 500 ; N adieresis ; B 34 -10 440 721 ;
+C -1 ; WX 611 ; N Ograve ; B 31 -12 579 903 ;
+C -1 ; WX 500 ; N Egrave ; B 72 0 436 903 ;
+C -1 ; WX 500 ; N Ydieresis ; B 4 0 496 876 ;
+C -1 ; WX 800 ; N registered ; B 20 -12 780 736 ;
+C -1 ; WX 611 ; N Otilde ; B 31 -12 579 877 ;
+C -1 ; WX 834 ; N onequarter ; B 94 -12 793 736 ;
+C -1 ; WX 556 ; N Ugrave ; B 59 -12 497 903 ;
+C -1 ; WX 556 ; N Ucircumflex ; B 59 -12 497 903 ;
+C -1 ; WX 556 ; N Thorn ; B 72 0 524 723 ;
+C -1 ; WX 600 ; N divide ; B 47 -18 553 524 ;
+C -1 ; WX 500 ; N Atilde ; B -2 0 502 877 ;
+C -1 ; WX 556 ; N Uacute ; B 59 -12 497 903 ;
+C -1 ; WX 611 ; N Ocircumflex ; B 31 -12 579 903 ;
+C -1 ; WX 600 ; N logicalnot ; B 47 121 553 385 ;
+C -1 ; WX 500 ; N Aring ; B -2 0 502 977 ;
+C -1 ; WX 222 ; N idieresis ; B 0 0 222 721 ;
+C -1 ; WX 222 ; N iacute ; B 48 0 236 748 ;
+C -1 ; WX 500 ; N aacute ; B 34 -10 440 748 ;
+C -1 ; WX 600 ; N plusminus ; B 47 0 553 506 ;
+C -1 ; WX 600 ; N multiply ; B 47 0 553 506 ;
+C -1 ; WX 556 ; N Udieresis ; B 59 -12 497 876 ;
+C -1 ; WX 600 ; N minus ; B 47 217 553 289 ;
+C -1 ; WX 333 ; N onesuperior ; B 74 294 208 728 ;
+C -1 ; WX 500 ; N Eacute ; B 72 0 436 903 ;
+C -1 ; WX 500 ; N Acircumflex ; B -2 0 502 903 ;
+C -1 ; WX 800 ; N copyright ; B 20 -12 780 736 ;
+C -1 ; WX 500 ; N Agrave ; B -2 0 502 903 ;
+C -1 ; WX 500 ; N odieresis ; B 34 -10 466 721 ;
+C -1 ; WX 500 ; N oacute ; B 34 -10 466 748 ;
+C -1 ; WX 400 ; N degree ; B 57 450 343 736 ;
+C -1 ; WX 222 ; N igrave ; B -14 0 174 748 ;
+C -1 ; WX 500 ; N mu ; B 60 -198 440 550 ;
+C -1 ; WX 611 ; N Oacute ; B 31 -12 579 903 ;
+C -1 ; WX 500 ; N eth ; B 34 -10 466 736 ;
+C -1 ; WX 500 ; N Adieresis ; B -2 0 502 876 ;
+C -1 ; WX 500 ; N Yacute ; B 4 0 496 903 ;
+C -1 ; WX 222 ; N brokenbar ; B 75 -12 147 736 ;
+C -1 ; WX 834 ; N onehalf ; B 94 -12 795 736 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 115
+
+KPX A y -18
+KPX A w -18
+KPX A v -18
+KPX A quoteright -55
+KPX A Y -37
+KPX A W -37
+KPX A V -37
+KPX A T -37
+
+KPX F period -111
+KPX F comma -111
+KPX F A -18
+
+KPX L y -37
+KPX L quoteright -92
+KPX L Y -55
+KPX L W -55
+KPX L V -55
+KPX L T -55
+
+KPX P period -129
+KPX P comma -129
+KPX P A -37
+
+KPX R y 0
+KPX R Y -18
+KPX R W -18
+KPX R V -18
+KPX R T -18
+
+KPX T y -37
+KPX T w -55
+KPX T u -37
+KPX T semicolon -55
+KPX T s -55
+KPX T r -37
+KPX T period -74
+KPX T o -55
+KPX T i -37
+KPX T hyphen -55
+KPX T e -55
+KPX T comma -74
+KPX T colon -55
+KPX T c -55
+KPX T a -55
+KPX T A -37
+
+KPX V y 0
+KPX V u 0
+KPX V semicolon -18
+KPX V r 0
+KPX V period -74
+KPX V o -18
+KPX V i 0
+KPX V hyphen -37
+KPX V e -18
+KPX V comma -74
+KPX V colon -18
+KPX V a -18
+KPX V A -18
+
+KPX W y 0
+KPX W u 0
+KPX W semicolon -18
+KPX W r 0
+KPX W period -74
+KPX W o -18
+KPX W i 0
+KPX W hyphen -18
+KPX W e -18
+KPX W comma -74
+KPX W colon -18
+KPX W a -18
+KPX W A -18
+
+KPX Y v -18
+KPX Y u -18
+KPX Y semicolon -37
+KPX Y q -37
+KPX Y period -74
+KPX Y p -18
+KPX Y o -37
+KPX Y i -18
+KPX Y hyphen -55
+KPX Y e -37
+KPX Y comma -74
+KPX Y colon -37
+KPX Y a -37
+KPX Y A -37
+
+KPX f quoteright 18
+KPX f f 0
+
+KPX quoteleft quoteleft -111
+
+KPX quoteright t 0
+KPX quoteright s -55
+KPX quoteright quoteright -111
+
+KPX r z 0
+KPX r y 0
+KPX r x 0
+KPX r w 0
+KPX r v 0
+KPX r u 0
+KPX r t 0
+KPX r r 0
+KPX r quoteright 18
+KPX r q 0
+KPX r period -55
+KPX r o 0
+KPX r n 0
+KPX r m 0
+KPX r hyphen -37
+KPX r h 0
+KPX r g 0
+KPX r f 0
+KPX r e 0
+KPX r d 0
+KPX r comma -55
+KPX r c 0
+
+KPX v period -55
+KPX v comma -55
+
+KPX w period -37
+KPX w comma -37
+
+KPX y period -55
+KPX y comma -55
+EndKernPairs
+EndKernData
+StartComposites 58
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 139 155 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 139 155 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 139 155 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 139 155 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 139 155 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 139 155 ;
+CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 167 0 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 139 155 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 139 155 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 139 155 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 139 155 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 0 155 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 0 155 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 0 155 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 0 155 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 195 155 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 195 155 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 195 155 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 195 155 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 195 155 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 195 155 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 133 155 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 167 155 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 167 155 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 167 155 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 167 155 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 133 155 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 133 155 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 105 155 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 131 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 131 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 131 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 131 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 131 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 131 0 ;
+CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 111 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 111 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 111 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 111 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 111 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute 0 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex 0 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis 0 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave 0 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 139 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 139 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 139 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 139 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 139 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 139 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 111 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 139 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 139 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 139 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 139 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 111 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 111 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 111 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/AG-CnBk+ b/font/font/AG-CnBk+
new file mode 100644
index 0000000..ed26578
--- /dev/null
+++ b/font/font/AG-CnBk+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 556 ; N Ccaron ; B 31 -12 524 930 ;
+C -1 ; WX 444 ; N ccaron ; B 34 -10 416 748 ;
+C -1 ; WX 611 ; N Dcaron ; B 72 0 579 930 ;
+C -1 ; WX 625 ; N dcaron ; B 34 -10 636 796 ;
+C -1 ; WX 500 ; N Ecaron ; B 72 0 436 930 ;
+C -1 ; WX 444 ; N ecaron ; B 28 -10 416 748 ;
+C -1 ; WX 444 ; N Lcaron ; B 72 0 426 796 ;
+C -1 ; WX 444 ; N Lacute ; B 72 0 426 930 ;
+C -1 ; WX 347 ; N lcaron ; B 74 0 344 796 ;
+C -1 ; WX 222 ; N lacute ; B 67 0 255 930 ;
+C -1 ; WX 611 ; N Ncaron ; B 72 0 539 930 ;
+C -1 ; WX 500 ; N ncaron ; B 60 0 440 748 ;
+C -1 ; WX 556 ; N Rcaron ; B 72 0 536 930 ;
+C -1 ; WX 556 ; N Racute ; B 72 0 536 930 ;
+C -1 ; WX 278 ; N rcaron ; B -8 0 286 748 ;
+C -1 ; WX 278 ; N racute ; B 60 0 283 748 ;
+C -1 ; WX 444 ; N Tcaron ; B 10 0 434 930 ;
+C -1 ; WX 347 ; N tcaron ; B 5 0 429 736 ;
+C -1 ; WX 556 ; N Uring ; B 59 -12 497 930 ;
+C -1 ; WX 500 ; N uring ; B 60 -10 440 822 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 216 182 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 130 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 194 182 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 436 60 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 139 182 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 111 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 146 60 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 111 182 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 144 60 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 19 182 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 194 182 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 139 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 167 182 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 203 182 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 28 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 47 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 111 182 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 229 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 167 108 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 139 0 ;
+EndBuildComposites
diff --git a/font/font/AG-CnDm b/font/font/AG-CnDm
new file mode 100644
index 0000000..dc911a4
--- /dev/null
+++ b/font/font/AG-CnDm
@@ -0,0 +1,447 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Thu Apr 12 13:36:06 1990
+Comment UniqueID 28716
+Comment VMusage 25024 31916
+FontName AvantGarde-CondDemi
+FullName ITC Avant Garde Gothic Condensed Demi
+FamilyName ITC Avant Garde Gothic
+Weight Demi
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -167 -227 1000 971
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.001
+Notice Copyright (c) 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.Avant Garde Gothic is a registered trademark of International Typeface Corporation.
+EncodingScheme AdobeStandardEncoding
+CapHeight 724
+XHeight 572
+Ascender 724
+Descender -186
+StartCharMetrics 228
+C 32 ; WX 278 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 278 ; N exclam ; B 77 0 201 724 ;
+C 34 ; WX 333 ; N quotedbl ; B 30 468 303 724 ;
+C 35 ; WX 556 ; N numbersign ; B 22 0 534 724 ;
+C 36 ; WX 556 ; N dollar ; B 46 -74 498 788 ;
+C 37 ; WX 889 ; N percent ; B 50 -12 839 736 ;
+C 38 ; WX 611 ; N ampersand ; B 31 -12 590 736 ;
+C 39 ; WX 222 ; N quoteright ; B 10 508 200 736 ;
+C 40 ; WX 389 ; N parenleft ; B 64 -220 352 742 ;
+C 41 ; WX 389 ; N parenright ; B 37 -220 325 742 ;
+C 42 ; WX 444 ; N asterisk ; B 35 352 409 724 ;
+C 43 ; WX 600 ; N plus ; B 47 0 553 506 ;
+C 44 ; WX 278 ; N comma ; B 21 -94 215 130 ;
+C 45 ; WX 333 ; N hyphen ; B 44 236 289 336 ;
+C 46 ; WX 278 ; N period ; B 81 0 197 130 ;
+C 47 ; WX 278 ; N slash ; B -40 -12 318 736 ;
+C 48 ; WX 556 ; N zero ; B 36 -12 520 736 ;
+C 49 ; WX 556 ; N one ; B 118 0 355 724 ;
+C 50 ; WX 556 ; N two ; B 39 0 496 736 ;
+C 51 ; WX 556 ; N three ; B 30 -12 506 736 ;
+C 52 ; WX 556 ; N four ; B 33 0 509 724 ;
+C 53 ; WX 556 ; N five ; B 35 -12 514 724 ;
+C 54 ; WX 556 ; N six ; B 42 -12 515 736 ;
+C 55 ; WX 556 ; N seven ; B 46 0 486 724 ;
+C 56 ; WX 556 ; N eight ; B 39 -12 517 736 ;
+C 57 ; WX 556 ; N nine ; B 35 -12 516 736 ;
+C 58 ; WX 278 ; N colon ; B 81 0 197 484 ;
+C 59 ; WX 278 ; N semicolon ; B 21 -94 215 484 ;
+C 60 ; WX 600 ; N less ; B 47 -8 553 514 ;
+C 61 ; WX 600 ; N equal ; B 47 88 553 418 ;
+C 62 ; WX 600 ; N greater ; B 47 -8 553 514 ;
+C 63 ; WX 500 ; N question ; B 30 0 448 736 ;
+C 64 ; WX 800 ; N at ; B 33 -12 766 736 ;
+C 65 ; WX 556 ; N A ; B 0 0 556 724 ;
+C 66 ; WX 556 ; N B ; B 66 0 513 724 ;
+C 67 ; WX 611 ; N C ; B 37 -12 558 736 ;
+C 68 ; WX 611 ; N D ; B 66 0 573 724 ;
+C 69 ; WX 500 ; N E ; B 66 0 444 724 ;
+C 70 ; WX 444 ; N F ; B 58 0 414 724 ;
+C 71 ; WX 611 ; N G ; B 37 -12 565 736 ;
+C 72 ; WX 611 ; N H ; B 66 0 545 724 ;
+C 73 ; WX 278 ; N I ; B 77 0 201 724 ;
+C 74 ; WX 500 ; N J ; B 10 -12 434 724 ;
+C 75 ; WX 556 ; N K ; B 66 0 557 724 ;
+C 76 ; WX 444 ; N L ; B 66 0 420 724 ;
+C 77 ; WX 722 ; N M ; B 66 0 656 724 ;
+C 78 ; WX 611 ; N N ; B 69 0 542 724 ;
+C 79 ; WX 611 ; N O ; B 37 -12 573 736 ;
+C 80 ; WX 556 ; N P ; B 72 0 521 724 ;
+C 81 ; WX 611 ; N Q ; B 37 -12 573 736 ;
+C 82 ; WX 556 ; N R ; B 66 0 544 724 ;
+C 83 ; WX 500 ; N S ; B 27 -12 465 736 ;
+C 84 ; WX 444 ; N T ; B 14 0 430 724 ;
+C 85 ; WX 611 ; N U ; B 64 -12 546 724 ;
+C 86 ; WX 556 ; N V ; B 9 0 547 724 ;
+C 87 ; WX 833 ; N W ; B 2 0 830 724 ;
+C 88 ; WX 500 ; N X ; B -6 0 506 724 ;
+C 89 ; WX 500 ; N Y ; B 0 0 500 724 ;
+C 90 ; WX 444 ; N Z ; B 21 0 419 724 ;
+C 91 ; WX 389 ; N bracketleft ; B 80 -208 335 724 ;
+C 92 ; WX 278 ; N backslash ; B -40 -12 318 736 ;
+C 93 ; WX 389 ; N bracketright ; B 54 -208 309 724 ;
+C 94 ; WX 600 ; N asciicircum ; B 52 326 548 724 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 222 ; N quoteleft ; B 22 508 212 736 ;
+C 97 ; WX 500 ; N a ; B 30 -10 432 582 ;
+C 98 ; WX 500 ; N b ; B 60 -10 470 724 ;
+C 99 ; WX 444 ; N c ; B 30 -10 420 582 ;
+C 100 ; WX 500 ; N d ; B 30 -10 440 724 ;
+C 101 ; WX 500 ; N e ; B 30 -10 456 582 ;
+C 102 ; WX 278 ; N f ; B 16 0 271 736 ; L i fi ; L l fl ;
+C 103 ; WX 500 ; N g ; B 30 -198 440 582 ;
+C 104 ; WX 500 ; N h ; B 60 0 440 724 ;
+C 105 ; WX 222 ; N i ; B 53 0 169 736 ;
+C 106 ; WX 222 ; N j ; B -32 -186 169 736 ;
+C 107 ; WX 444 ; N k ; B 60 0 453 724 ;
+C 108 ; WX 222 ; N l ; B 53 0 169 724 ;
+C 109 ; WX 778 ; N m ; B 60 0 718 582 ;
+C 110 ; WX 500 ; N n ; B 60 0 440 582 ;
+C 111 ; WX 500 ; N o ; B 30 -10 470 582 ;
+C 112 ; WX 500 ; N p ; B 60 -186 470 582 ;
+C 113 ; WX 500 ; N q ; B 30 -186 440 582 ;
+C 114 ; WX 278 ; N r ; B 50 0 272 590 ;
+C 115 ; WX 444 ; N s ; B 28 -10 415 582 ;
+C 116 ; WX 278 ; N t ; B 12 0 271 693 ;
+C 117 ; WX 500 ; N u ; B 60 -10 440 572 ;
+C 118 ; WX 444 ; N v ; B 6 0 438 572 ;
+C 119 ; WX 667 ; N w ; B 5 0 661 572 ;
+C 120 ; WX 444 ; N x ; B -4 0 448 572 ;
+C 121 ; WX 444 ; N y ; B 6 -198 438 572 ;
+C 122 ; WX 444 ; N z ; B 22 0 414 572 ;
+C 123 ; WX 389 ; N braceleft ; B 12 -226 329 736 ;
+C 124 ; WX 222 ; N bar ; B 56 -12 166 736 ;
+C 125 ; WX 389 ; N braceright ; B 60 -226 377 736 ;
+C 126 ; WX 600 ; N asciitilde ; B 46 157 554 349 ;
+C 161 ; WX 278 ; N exclamdown ; B 77 -152 201 572 ;
+C 162 ; WX 556 ; N cent ; B 62 -20 472 736 ;
+C 163 ; WX 556 ; N sterling ; B 9 0 535 736 ;
+C 164 ; WX 167 ; N fraction ; B -167 -12 334 736 ;
+C 165 ; WX 556 ; N yen ; B 4 0 552 724 ;
+C 166 ; WX 556 ; N florin ; B 10 -198 546 736 ;
+C 167 ; WX 444 ; N section ; B 25 -78 418 736 ;
+C 168 ; WX 556 ; N currency ; B 18 100 538 624 ;
+C 169 ; WX 222 ; N quotesingle ; B 62 468 160 724 ;
+C 170 ; WX 389 ; N quotedblleft ; B 16 508 373 736 ;
+C 171 ; WX 444 ; N guillemotleft ; B 24 103 420 469 ;
+C 172 ; WX 278 ; N guilsinglleft ; B 24 103 254 469 ;
+C 173 ; WX 278 ; N guilsinglright ; B 24 103 254 469 ;
+C 174 ; WX 500 ; N fi ; B 16 0 447 736 ;
+C 175 ; WX 500 ; N fl ; B 16 0 447 736 ;
+C 177 ; WX 500 ; N endash ; B 0 244 500 328 ;
+C 178 ; WX 444 ; N dagger ; B 36 -90 408 724 ;
+C 179 ; WX 444 ; N daggerdbl ; B 36 -90 408 724 ;
+C 180 ; WX 278 ; N periodcentered ; B 73 187 205 319 ;
+C 182 ; WX 620 ; N paragraph ; B 8 -90 554 724 ;
+C 183 ; WX 500 ; N bullet ; B 69 181 431 543 ;
+C 184 ; WX 222 ; N quotesinglbase ; B 10 -98 200 130 ;
+C 185 ; WX 389 ; N quotedblbase ; B 16 -98 373 130 ;
+C 186 ; WX 389 ; N quotedblright ; B 16 508 373 736 ;
+C 187 ; WX 444 ; N guillemotright ; B 24 103 420 469 ;
+C 188 ; WX 1000 ; N ellipsis ; B 109 0 891 130 ;
+C 189 ; WX 1000 ; N perthousand ; B 4 -12 996 736 ;
+C 191 ; WX 500 ; N questiondown ; B 52 -164 470 572 ;
+C 193 ; WX 222 ; N grave ; B -38 632 186 776 ;
+C 194 ; WX 222 ; N acute ; B 36 632 260 776 ;
+C 195 ; WX 222 ; N circumflex ; B -52 632 274 776 ;
+C 196 ; WX 222 ; N tilde ; B -66 640 288 762 ;
+C 197 ; WX 222 ; N macron ; B -52 670 274 734 ;
+C 198 ; WX 222 ; N breve ; B -50 638 272 779 ;
+C 199 ; WX 222 ; N dotaccent ; B 55 646 167 752 ;
+C 200 ; WX 222 ; N dieresis ; B -32 646 254 752 ;
+C 202 ; WX 222 ; N ring ; B 8 632 214 838 ;
+C 203 ; WX 222 ; N cedilla ; B -1 -227 222 0 ;
+C 205 ; WX 222 ; N hungarumlaut ; B -48 632 340 776 ;
+C 206 ; WX 222 ; N ogonek ; B -5 -219 250 21 ;
+C 207 ; WX 222 ; N caron ; B -52 632 274 776 ;
+C 208 ; WX 1000 ; N emdash ; B 0 244 1000 328 ;
+C 225 ; WX 833 ; N AE ; B -8 0 777 724 ;
+C 227 ; WX 300 ; N ordfeminine ; B 8 380 269 736 ;
+C 232 ; WX 444 ; N Lslash ; B -10 0 420 724 ;
+C 233 ; WX 611 ; N Oslash ; B 4 -42 607 766 ;
+C 234 ; WX 889 ; N OE ; B 37 -12 833 736 ;
+C 235 ; WX 300 ; N ordmasculine ; B 7 380 293 736 ;
+C 241 ; WX 778 ; N ae ; B 30 -10 744 582 ;
+C 245 ; WX 222 ; N dotlessi ; B 53 0 169 572 ;
+C 248 ; WX 222 ; N lslash ; B -3 0 225 724 ;
+C 249 ; WX 500 ; N oslash ; B 11 -70 489 642 ;
+C 250 ; WX 778 ; N oe ; B 30 -10 744 582 ;
+C 251 ; WX 556 ; N germandbls ; B 60 -10 521 736 ;
+C -1 ; WX 444 ; N Zcaron ; B 21 0 419 909 ;
+C -1 ; WX 444 ; N ccedilla ; B 30 -227 420 582 ;
+C -1 ; WX 444 ; N ydieresis ; B 6 -198 438 752 ;
+C -1 ; WX 500 ; N atilde ; B 30 -10 432 762 ;
+C -1 ; WX 222 ; N icircumflex ; B -52 0 274 776 ;
+C -1 ; WX 333 ; N threesuperior ; B 8 286 317 736 ;
+C -1 ; WX 500 ; N ecircumflex ; B 30 -10 456 776 ;
+C -1 ; WX 500 ; N thorn ; B 60 -186 470 724 ;
+C -1 ; WX 500 ; N egrave ; B 30 -10 456 776 ;
+C -1 ; WX 333 ; N twosuperior ; B 18 294 315 736 ;
+C -1 ; WX 500 ; N eacute ; B 30 -10 456 776 ;
+C -1 ; WX 500 ; N otilde ; B 30 -10 470 762 ;
+C -1 ; WX 556 ; N Aacute ; B 0 0 556 909 ;
+C -1 ; WX 500 ; N ocircumflex ; B 30 -10 470 776 ;
+C -1 ; WX 444 ; N yacute ; B 6 -198 438 776 ;
+C -1 ; WX 500 ; N udieresis ; B 60 -10 440 752 ;
+C -1 ; WX 834 ; N threequarters ; B 28 -12 796 736 ;
+C -1 ; WX 500 ; N acircumflex ; B 30 -10 432 776 ;
+C -1 ; WX 611 ; N Eth ; B 2 0 573 724 ;
+C -1 ; WX 500 ; N edieresis ; B 30 -10 456 752 ;
+C -1 ; WX 500 ; N ugrave ; B 60 -10 440 776 ;
+C -1 ; WX 1000 ; N trademark ; B 16 298 923 724 ;
+C -1 ; WX 500 ; N ograve ; B 30 -10 470 776 ;
+C -1 ; WX 444 ; N scaron ; B 28 -10 415 776 ;
+C -1 ; WX 278 ; N Idieresis ; B -4 0 282 885 ;
+C -1 ; WX 500 ; N uacute ; B 60 -10 440 776 ;
+C -1 ; WX 500 ; N agrave ; B 30 -10 432 776 ;
+C -1 ; WX 500 ; N ntilde ; B 60 0 440 762 ;
+C -1 ; WX 500 ; N aring ; B 30 -10 432 838 ;
+C -1 ; WX 444 ; N zcaron ; B 22 0 414 776 ;
+C -1 ; WX 278 ; N Icircumflex ; B -24 0 302 909 ;
+C -1 ; WX 611 ; N Ntilde ; B 69 0 542 895 ;
+C -1 ; WX 500 ; N ucircumflex ; B 60 -10 440 776 ;
+C -1 ; WX 500 ; N Ecircumflex ; B 66 0 444 909 ;
+C -1 ; WX 278 ; N Iacute ; B 64 0 288 909 ;
+C -1 ; WX 611 ; N Ccedilla ; B 37 -227 558 736 ;
+C -1 ; WX 611 ; N Odieresis ; B 37 -12 573 885 ;
+C -1 ; WX 500 ; N Scaron ; B 27 -12 465 909 ;
+C -1 ; WX 500 ; N Edieresis ; B 66 0 444 885 ;
+C -1 ; WX 278 ; N Igrave ; B -10 0 214 909 ;
+C -1 ; WX 500 ; N adieresis ; B 30 -10 432 752 ;
+C -1 ; WX 611 ; N Ograve ; B 37 -12 573 909 ;
+C -1 ; WX 500 ; N Egrave ; B 66 0 444 909 ;
+C -1 ; WX 500 ; N Ydieresis ; B 0 0 500 885 ;
+C -1 ; WX 800 ; N registered ; B 13 -12 787 736 ;
+C -1 ; WX 611 ; N Otilde ; B 37 -12 573 895 ;
+C -1 ; WX 834 ; N onequarter ; B 85 -12 796 736 ;
+C -1 ; WX 611 ; N Ugrave ; B 64 -12 546 909 ;
+C -1 ; WX 611 ; N Ucircumflex ; B 64 -12 546 909 ;
+C -1 ; WX 556 ; N Thorn ; B 72 0 521 724 ;
+C -1 ; WX 600 ; N divide ; B 47 -43 553 549 ;
+C -1 ; WX 556 ; N Atilde ; B 0 0 556 895 ;
+C -1 ; WX 611 ; N Uacute ; B 64 -12 546 909 ;
+C -1 ; WX 611 ; N Ocircumflex ; B 37 -12 573 909 ;
+C -1 ; WX 600 ; N logicalnot ; B 47 88 553 418 ;
+C -1 ; WX 556 ; N Aring ; B 0 0 556 971 ;
+C -1 ; WX 222 ; N idieresis ; B -32 0 254 752 ;
+C -1 ; WX 222 ; N iacute ; B 36 0 260 776 ;
+C -1 ; WX 500 ; N aacute ; B 30 -10 432 776 ;
+C -1 ; WX 600 ; N plusminus ; B 47 0 553 506 ;
+C -1 ; WX 600 ; N multiply ; B 47 0 553 506 ;
+C -1 ; WX 611 ; N Udieresis ; B 64 -12 546 885 ;
+C -1 ; WX 600 ; N minus ; B 47 198 553 308 ;
+C -1 ; WX 333 ; N onesuperior ; B 65 294 227 728 ;
+C -1 ; WX 500 ; N Eacute ; B 66 0 444 909 ;
+C -1 ; WX 556 ; N Acircumflex ; B 0 0 556 909 ;
+C -1 ; WX 800 ; N copyright ; B 13 -12 787 736 ;
+C -1 ; WX 556 ; N Agrave ; B 0 0 556 909 ;
+C -1 ; WX 500 ; N odieresis ; B 30 -10 470 752 ;
+C -1 ; WX 500 ; N oacute ; B 30 -10 470 776 ;
+C -1 ; WX 400 ; N degree ; B 57 450 343 736 ;
+C -1 ; WX 222 ; N igrave ; B -38 0 186 776 ;
+C -1 ; WX 500 ; N mu ; B 60 -186 440 572 ;
+C -1 ; WX 611 ; N Oacute ; B 37 -12 573 909 ;
+C -1 ; WX 500 ; N eth ; B 30 -10 470 736 ;
+C -1 ; WX 556 ; N Adieresis ; B 0 0 556 885 ;
+C -1 ; WX 500 ; N Yacute ; B 0 0 500 909 ;
+C -1 ; WX 222 ; N brokenbar ; B 56 -12 166 736 ;
+C -1 ; WX 834 ; N onehalf ; B 85 -12 796 736 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 115
+
+KPX A y -18
+KPX A w -18
+KPX A v -18
+KPX A quoteright -55
+KPX A Y -37
+KPX A W -37
+KPX A V -37
+KPX A T -37
+
+KPX F period -111
+KPX F comma -111
+KPX F A -18
+
+KPX L y -37
+KPX L quoteright -92
+KPX L Y -55
+KPX L W -55
+KPX L V -55
+KPX L T -55
+
+KPX P period -129
+KPX P comma -129
+KPX P A -37
+
+KPX R y 0
+KPX R Y -18
+KPX R W -18
+KPX R V -18
+KPX R T -18
+
+KPX T y -37
+KPX T w -55
+KPX T u -37
+KPX T semicolon -55
+KPX T s -55
+KPX T r -37
+KPX T period -74
+KPX T o -55
+KPX T i -37
+KPX T hyphen -55
+KPX T e -55
+KPX T comma -74
+KPX T colon -55
+KPX T c -55
+KPX T a -55
+KPX T A -37
+
+KPX V y -18
+KPX V u -18
+KPX V semicolon -37
+KPX V r -18
+KPX V period -92
+KPX V o -37
+KPX V i -18
+KPX V hyphen -55
+KPX V e -37
+KPX V comma -92
+KPX V colon -37
+KPX V a -37
+KPX V A -37
+
+KPX W y 0
+KPX W u 0
+KPX W semicolon -18
+KPX W r 0
+KPX W period -74
+KPX W o -18
+KPX W i 0
+KPX W hyphen -18
+KPX W e -18
+KPX W comma -74
+KPX W colon -18
+KPX W a -18
+KPX W A -18
+
+KPX Y v -18
+KPX Y u -18
+KPX Y semicolon -37
+KPX Y q -37
+KPX Y period -74
+KPX Y p -18
+KPX Y o -37
+KPX Y i -18
+KPX Y hyphen -55
+KPX Y e -37
+KPX Y comma -74
+KPX Y colon -37
+KPX Y a -37
+KPX Y A -37
+
+KPX f quoteright 18
+KPX f f 0
+
+KPX quoteleft quoteleft -55
+
+KPX quoteright t 0
+KPX quoteright s -55
+KPX quoteright quoteright -55
+
+KPX r z 0
+KPX r y 0
+KPX r x 0
+KPX r w 0
+KPX r v 0
+KPX r u 0
+KPX r t 0
+KPX r r 0
+KPX r quoteright 18
+KPX r q 0
+KPX r period -55
+KPX r o 0
+KPX r n 0
+KPX r m 0
+KPX r hyphen -37
+KPX r h 0
+KPX r g 0
+KPX r f 0
+KPX r e 0
+KPX r d 0
+KPX r comma -55
+KPX r c 0
+
+KPX v period -55
+KPX v comma -55
+
+KPX w period -37
+KPX w comma -37
+
+KPX y period -55
+KPX y comma -55
+EndKernPairs
+EndKernData
+StartComposites 58
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 167 133 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 167 133 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 167 133 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 167 133 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 167 133 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 167 133 ;
+CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 201 0 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 139 133 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 139 133 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 139 133 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 139 133 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 28 133 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 28 133 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 28 133 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 28 133 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 195 133 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 195 133 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 195 133 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 195 133 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 195 133 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 195 133 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 145 133 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 195 133 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 195 133 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 195 133 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 195 133 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 145 133 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 145 133 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 117 133 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 131 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 131 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 131 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 131 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 131 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 131 0 ;
+CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 111 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 139 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 139 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 139 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 139 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute 0 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex 0 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis 0 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave 0 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 139 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 139 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 139 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 139 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 139 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 139 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 111 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 139 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 139 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 139 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 139 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 111 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 111 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 111 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/AG-CnDm+ b/font/font/AG-CnDm+
new file mode 100644
index 0000000..786d9c6
--- /dev/null
+++ b/font/font/AG-CnDm+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 611 ; N Ccaron ; B 37 -12 558 934 ;
+C -1 ; WX 444 ; N ccaron ; B 30 -10 420 776 ;
+C -1 ; WX 611 ; N Dcaron ; B 66 0 573 934 ;
+C -1 ; WX 633 ; N dcaron ; B 30 -10 649 796 ;
+C -1 ; WX 500 ; N Ecaron ; B 66 0 444 934 ;
+C -1 ; WX 500 ; N ecaron ; B 30 -10 456 776 ;
+C -1 ; WX 444 ; N Lcaron ; B 66 0 420 796 ;
+C -1 ; WX 444 ; N Lacute ; B 66 0 420 934 ;
+C -1 ; WX 355 ; N lcaron ; B 53 0 378 796 ;
+C -1 ; WX 222 ; N lacute ; B 53 0 282 934 ;
+C -1 ; WX 611 ; N Ncaron ; B 69 0 542 934 ;
+C -1 ; WX 500 ; N ncaron ; B 60 0 440 776 ;
+C -1 ; WX 556 ; N Rcaron ; B 66 0 544 934 ;
+C -1 ; WX 556 ; N Racute ; B 66 0 544 934 ;
+C -1 ; WX 278 ; N rcaron ; B -24 0 302 776 ;
+C -1 ; WX 278 ; N racute ; B 50 0 310 776 ;
+C -1 ; WX 444 ; N Tcaron ; B 14 0 430 934 ;
+C -1 ; WX 411 ; N tcaron ; B 12 0 480 736 ;
+C -1 ; WX 611 ; N Uring ; B 64 -12 546 934 ;
+C -1 ; WX 500 ; N uring ; B 60 -10 440 838 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 246 158 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 131 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 194 158 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 449 60 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 139 158 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 139 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 210 60 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 111 158 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 178 60 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 22 158 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 194 158 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 139 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 167 158 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 210 158 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 28 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 50 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 111 158 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 280 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 194 96 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 139 0 ;
+EndBuildComposites
diff --git a/font/font/AG-CnMd b/font/font/AG-CnMd
new file mode 100644
index 0000000..f059153
--- /dev/null
+++ b/font/font/AG-CnMd
@@ -0,0 +1,447 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Thu Apr 12 14:11:07 1990
+Comment UniqueID 28720
+Comment VMusage 23857 30749
+FontName AvantGarde-CondMedium
+FullName ITC Avant Garde Gothic Condensed Medium
+FamilyName ITC Avant Garde Gothic
+Weight Medium
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -167 -226 1001 980
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.001
+Notice Copyright (c) 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.Avant Garde Gothic is a registered trademark of International Typeface Corporation.
+EncodingScheme AdobeStandardEncoding
+CapHeight 724
+XHeight 560
+Ascender 724
+Descender -198
+StartCharMetrics 228
+C 32 ; WX 278 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 222 ; N exclam ; B 60 0 162 724 ;
+C 34 ; WX 333 ; N quotedbl ; B 55 476 278 724 ;
+C 35 ; WX 556 ; N numbersign ; B 24 0 537 724 ;
+C 36 ; WX 556 ; N dollar ; B 56 -88 488 802 ;
+C 37 ; WX 889 ; N percent ; B 44 -12 845 736 ;
+C 38 ; WX 611 ; N ampersand ; B 29 -12 594 736 ;
+C 39 ; WX 222 ; N quoteright ; B 27 516 195 736 ;
+C 40 ; WX 389 ; N parenleft ; B 62 -208 358 742 ;
+C 41 ; WX 389 ; N parenright ; B 31 -208 327 742 ;
+C 42 ; WX 444 ; N asterisk ; B 45 358 399 724 ;
+C 43 ; WX 600 ; N plus ; B 47 0 553 506 ;
+C 44 ; WX 278 ; N comma ; B 6 -104 198 124 ;
+C 45 ; WX 333 ; N hyphen ; B 47 238 286 322 ;
+C 46 ; WX 278 ; N period ; B 91 0 187 124 ;
+C 47 ; WX 278 ; N slash ; B -15 -12 293 736 ;
+C 48 ; WX 556 ; N zero ; B 39 -12 517 736 ;
+C 49 ; WX 556 ; N one ; B 118 0 345 724 ;
+C 50 ; WX 556 ; N two ; B 44 0 486 736 ;
+C 51 ; WX 556 ; N three ; B 34 -12 509 736 ;
+C 52 ; WX 556 ; N four ; B 32 0 500 724 ;
+C 53 ; WX 556 ; N five ; B 42 -12 505 724 ;
+C 54 ; WX 556 ; N six ; B 45 -12 511 736 ;
+C 55 ; WX 556 ; N seven ; B 30 0 486 724 ;
+C 56 ; WX 556 ; N eight ; B 34 -12 522 736 ;
+C 57 ; WX 556 ; N nine ; B 45 -12 511 736 ;
+C 58 ; WX 278 ; N colon ; B 91 0 187 470 ;
+C 59 ; WX 278 ; N semicolon ; B 6 -104 198 470 ;
+C 60 ; WX 600 ; N less ; B 47 -8 553 514 ;
+C 61 ; WX 600 ; N equal ; B 47 106 553 400 ;
+C 62 ; WX 600 ; N greater ; B 47 -8 553 514 ;
+C 63 ; WX 444 ; N question ; B 22 0 421 736 ;
+C 64 ; WX 800 ; N at ; B 40 -12 760 736 ;
+C 65 ; WX 500 ; N A ; B -3 0 503 724 ;
+C 66 ; WX 556 ; N B ; B 70 0 517 724 ;
+C 67 ; WX 556 ; N C ; B 36 -12 525 736 ;
+C 68 ; WX 611 ; N D ; B 70 0 574 724 ;
+C 69 ; WX 500 ; N E ; B 70 0 434 724 ;
+C 70 ; WX 444 ; N F ; B 70 0 414 724 ;
+C 71 ; WX 611 ; N G ; B 36 -12 563 736 ;
+C 72 ; WX 611 ; N H ; B 70 0 541 724 ;
+C 73 ; WX 222 ; N I ; B 60 0 162 724 ;
+C 74 ; WX 444 ; N J ; B 8 -12 384 724 ;
+C 75 ; WX 556 ; N K ; B 70 0 556 724 ;
+C 76 ; WX 444 ; N L ; B 70 0 430 724 ;
+C 77 ; WX 722 ; N M ; B 70 0 652 724 ;
+C 78 ; WX 611 ; N N ; B 76 0 534 724 ;
+C 79 ; WX 611 ; N O ; B 36 -12 574 736 ;
+C 80 ; WX 556 ; N P ; B 70 0 513 724 ;
+C 81 ; WX 611 ; N Q ; B 36 -12 588 736 ;
+C 82 ; WX 556 ; N R ; B 70 0 550 724 ;
+C 83 ; WX 500 ; N S ; B 24 -12 475 736 ;
+C 84 ; WX 444 ; N T ; B 16 0 428 724 ;
+C 85 ; WX 556 ; N U ; B 56 -12 500 724 ;
+C 86 ; WX 500 ; N V ; B -1 0 501 724 ;
+C 87 ; WX 833 ; N W ; B 7 0 825 724 ;
+C 88 ; WX 500 ; N X ; B 1 0 498 724 ;
+C 89 ; WX 500 ; N Y ; B 0 0 500 724 ;
+C 90 ; WX 444 ; N Z ; B 17 0 427 724 ;
+C 91 ; WX 389 ; N bracketleft ; B 88 -210 344 724 ;
+C 92 ; WX 278 ; N backslash ; B -15 -12 293 736 ;
+C 93 ; WX 389 ; N bracketright ; B 45 -210 301 724 ;
+C 94 ; WX 600 ; N asciicircum ; B 76 346 524 724 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 222 ; N quoteleft ; B 27 516 195 736 ;
+C 97 ; WX 500 ; N a ; B 34 -10 440 570 ;
+C 98 ; WX 500 ; N b ; B 60 -10 466 724 ;
+C 99 ; WX 444 ; N c ; B 34 -10 422 570 ;
+C 100 ; WX 500 ; N d ; B 34 -10 440 724 ;
+C 101 ; WX 444 ; N e ; B 34 -10 414 570 ;
+C 102 ; WX 222 ; N f ; B 2 0 229 724 ; L i fi ; L l fl ;
+C 103 ; WX 500 ; N g ; B 34 -198 440 570 ;
+C 104 ; WX 500 ; N h ; B 60 0 440 724 ;
+C 105 ; WX 222 ; N i ; B 63 0 159 724 ;
+C 106 ; WX 222 ; N j ; B -31 -204 162 724 ;
+C 107 ; WX 444 ; N k ; B 60 0 459 724 ;
+C 108 ; WX 222 ; N l ; B 63 0 159 724 ;
+C 109 ; WX 778 ; N m ; B 60 0 718 570 ;
+C 110 ; WX 500 ; N n ; B 60 0 440 570 ;
+C 111 ; WX 500 ; N o ; B 34 -10 466 570 ;
+C 112 ; WX 500 ; N p ; B 60 -198 466 570 ;
+C 113 ; WX 500 ; N q ; B 34 -198 440 570 ;
+C 114 ; WX 278 ; N r ; B 60 0 275 570 ;
+C 115 ; WX 389 ; N s ; B 17 -10 364 570 ;
+C 116 ; WX 222 ; N t ; B 0 0 222 694 ;
+C 117 ; WX 500 ; N u ; B 60 -10 440 560 ;
+C 118 ; WX 444 ; N v ; B 6 0 438 560 ;
+C 119 ; WX 667 ; N w ; B 11 0 655 560 ;
+C 120 ; WX 444 ; N x ; B 1 0 443 560 ;
+C 121 ; WX 444 ; N y ; B 6 -198 438 560 ;
+C 122 ; WX 444 ; N z ; B 34 0 410 560 ;
+C 123 ; WX 389 ; N braceleft ; B 43 -210 364 736 ;
+C 124 ; WX 222 ; N bar ; B 69 -12 153 736 ;
+C 125 ; WX 389 ; N braceright ; B 25 -210 346 736 ;
+C 126 ; WX 600 ; N asciitilde ; B 69 169 531 337 ;
+C 161 ; WX 222 ; N exclamdown ; B 60 -164 162 560 ;
+C 162 ; WX 556 ; N cent ; B 74 -26 464 750 ;
+C 163 ; WX 556 ; N sterling ; B 9 0 536 734 ;
+C 164 ; WX 167 ; N fraction ; B -167 -12 334 736 ;
+C 165 ; WX 556 ; N yen ; B 40 0 516 724 ;
+C 166 ; WX 556 ; N florin ; B 15 -204 534 736 ;
+C 167 ; WX 444 ; N section ; B 28 -80 415 736 ;
+C 168 ; WX 556 ; N currency ; B 24 109 532 615 ;
+C 169 ; WX 222 ; N quotesingle ; B 70 476 152 724 ;
+C 170 ; WX 333 ; N quotedblleft ; B 17 516 315 736 ;
+C 171 ; WX 444 ; N guillemotleft ; B 22 99 422 461 ;
+C 172 ; WX 278 ; N guilsinglleft ; B 32 99 256 461 ;
+C 173 ; WX 278 ; N guilsinglright ; B 22 99 246 461 ;
+C 174 ; WX 444 ; N fi ; B 2 0 381 724 ;
+C 175 ; WX 444 ; N fl ; B 2 0 381 724 ;
+C 177 ; WX 500 ; N endash ; B 0 249 500 311 ;
+C 178 ; WX 444 ; N dagger ; B 40 -80 404 736 ;
+C 179 ; WX 444 ; N daggerdbl ; B 40 -80 404 736 ;
+C 180 ; WX 278 ; N periodcentered ; B 84 198 194 308 ;
+C 182 ; WX 600 ; N paragraph ; B 49 -80 488 724 ;
+C 183 ; WX 500 ; N bullet ; B 69 181 431 543 ;
+C 184 ; WX 222 ; N quotesinglbase ; B 27 -96 195 124 ;
+C 185 ; WX 333 ; N quotedblbase ; B 18 -96 316 124 ;
+C 186 ; WX 333 ; N quotedblright ; B 18 516 316 736 ;
+C 187 ; WX 444 ; N guillemotright ; B 22 99 422 461 ;
+C 188 ; WX 1000 ; N ellipsis ; B 119 0 881 124 ;
+C 189 ; WX 1000 ; N perthousand ; B 0 -12 1001 736 ;
+C 191 ; WX 444 ; N questiondown ; B 23 -176 422 560 ;
+C 193 ; WX 222 ; N grave ; B -20 622 178 764 ;
+C 194 ; WX 222 ; N acute ; B 44 622 242 764 ;
+C 195 ; WX 222 ; N circumflex ; B -34 622 256 764 ;
+C 196 ; WX 222 ; N tilde ; B -59 633 281 749 ;
+C 197 ; WX 222 ; N macron ; B -44 657 266 715 ;
+C 198 ; WX 222 ; N breve ; B -43 628 265 764 ;
+C 199 ; WX 222 ; N dotaccent ; B 66 638 156 736 ;
+C 200 ; WX 222 ; N dieresis ; B -16 638 238 736 ;
+C 202 ; WX 222 ; N ring ; B 2 622 220 840 ;
+C 203 ; WX 222 ; N cedilla ; B 6 -226 221 0 ;
+C 205 ; WX 222 ; N hungarumlaut ; B -22 622 322 764 ;
+C 206 ; WX 222 ; N ogonek ; B 12 -212 259 20 ;
+C 207 ; WX 222 ; N caron ; B -34 622 256 764 ;
+C 208 ; WX 1000 ; N emdash ; B 0 249 1000 311 ;
+C 225 ; WX 833 ; N AE ; B -18 0 767 724 ;
+C 227 ; WX 300 ; N ordfeminine ; B 8 388 277 736 ;
+C 232 ; WX 444 ; N Lslash ; B 1 0 430 724 ;
+C 233 ; WX 611 ; N Oslash ; B 8 -42 602 766 ;
+C 234 ; WX 889 ; N OE ; B 30 -12 823 736 ;
+C 235 ; WX 300 ; N ordmasculine ; B 9 388 291 736 ;
+C 241 ; WX 778 ; N ae ; B 34 -10 744 570 ;
+C 245 ; WX 222 ; N dotlessi ; B 63 0 159 560 ;
+C 248 ; WX 222 ; N lslash ; B 3 0 219 724 ;
+C 249 ; WX 500 ; N oslash ; B 22 -76 478 636 ;
+C 250 ; WX 778 ; N oe ; B 34 -10 744 570 ;
+C 251 ; WX 556 ; N germandbls ; B 60 -10 522 724 ;
+C -1 ; WX 444 ; N Zcaron ; B 17 0 427 904 ;
+C -1 ; WX 444 ; N ccedilla ; B 34 -226 422 570 ;
+C -1 ; WX 444 ; N ydieresis ; B 6 -198 438 736 ;
+C -1 ; WX 500 ; N atilde ; B 34 -10 440 749 ;
+C -1 ; WX 222 ; N icircumflex ; B -34 0 256 764 ;
+C -1 ; WX 333 ; N threesuperior ; B 14 286 326 736 ;
+C -1 ; WX 444 ; N ecircumflex ; B 34 -10 414 764 ;
+C -1 ; WX 500 ; N thorn ; B 60 -198 466 724 ;
+C -1 ; WX 444 ; N egrave ; B 34 -10 414 764 ;
+C -1 ; WX 333 ; N twosuperior ; B 21 294 311 736 ;
+C -1 ; WX 444 ; N eacute ; B 34 -10 414 764 ;
+C -1 ; WX 500 ; N otilde ; B 34 -10 466 749 ;
+C -1 ; WX 500 ; N Aacute ; B -3 0 503 904 ;
+C -1 ; WX 500 ; N ocircumflex ; B 34 -10 466 764 ;
+C -1 ; WX 444 ; N yacute ; B 6 -198 438 764 ;
+C -1 ; WX 500 ; N udieresis ; B 60 -10 440 736 ;
+C -1 ; WX 834 ; N threequarters ; B 54 -12 785 736 ;
+C -1 ; WX 500 ; N acircumflex ; B 34 -10 440 764 ;
+C -1 ; WX 611 ; N Eth ; B -14 0 574 724 ;
+C -1 ; WX 444 ; N edieresis ; B 34 -10 414 736 ;
+C -1 ; WX 500 ; N ugrave ; B 60 -10 440 764 ;
+C -1 ; WX 990 ; N trademark ; B 82 312 908 724 ;
+C -1 ; WX 500 ; N ograve ; B 34 -10 466 764 ;
+C -1 ; WX 389 ; N scaron ; B 17 -10 364 764 ;
+C -1 ; WX 222 ; N Idieresis ; B -16 0 238 876 ;
+C -1 ; WX 500 ; N uacute ; B 60 -10 440 764 ;
+C -1 ; WX 500 ; N agrave ; B 34 -10 440 764 ;
+C -1 ; WX 500 ; N ntilde ; B 60 0 440 749 ;
+C -1 ; WX 500 ; N aring ; B 34 -10 440 840 ;
+C -1 ; WX 444 ; N zcaron ; B 34 0 410 764 ;
+C -1 ; WX 222 ; N Icircumflex ; B -34 0 256 904 ;
+C -1 ; WX 611 ; N Ntilde ; B 76 0 534 889 ;
+C -1 ; WX 500 ; N ucircumflex ; B 60 -10 440 764 ;
+C -1 ; WX 500 ; N Ecircumflex ; B 70 0 434 904 ;
+C -1 ; WX 222 ; N Iacute ; B 44 0 242 904 ;
+C -1 ; WX 556 ; N Ccedilla ; B 36 -226 525 736 ;
+C -1 ; WX 611 ; N Odieresis ; B 36 -12 574 876 ;
+C -1 ; WX 500 ; N Scaron ; B 24 -12 475 904 ;
+C -1 ; WX 500 ; N Edieresis ; B 70 0 434 876 ;
+C -1 ; WX 222 ; N Igrave ; B -20 0 178 904 ;
+C -1 ; WX 500 ; N adieresis ; B 34 -10 440 736 ;
+C -1 ; WX 611 ; N Ograve ; B 36 -12 574 904 ;
+C -1 ; WX 500 ; N Egrave ; B 70 0 434 904 ;
+C -1 ; WX 500 ; N Ydieresis ; B 0 0 500 876 ;
+C -1 ; WX 800 ; N registered ; B 20 -12 780 736 ;
+C -1 ; WX 611 ; N Otilde ; B 36 -12 574 889 ;
+C -1 ; WX 834 ; N onequarter ; B 94 -12 785 736 ;
+C -1 ; WX 556 ; N Ugrave ; B 56 -12 500 904 ;
+C -1 ; WX 556 ; N Ucircumflex ; B 56 -12 500 904 ;
+C -1 ; WX 556 ; N Thorn ; B 70 0 513 724 ;
+C -1 ; WX 600 ; N divide ; B 47 -26 553 532 ;
+C -1 ; WX 500 ; N Atilde ; B -3 0 503 889 ;
+C -1 ; WX 556 ; N Uacute ; B 56 -12 500 904 ;
+C -1 ; WX 611 ; N Ocircumflex ; B 36 -12 574 904 ;
+C -1 ; WX 600 ; N logicalnot ; B 47 106 553 400 ;
+C -1 ; WX 500 ; N Aring ; B -3 0 503 980 ;
+C -1 ; WX 222 ; N idieresis ; B -16 0 238 736 ;
+C -1 ; WX 222 ; N iacute ; B 44 0 242 764 ;
+C -1 ; WX 500 ; N aacute ; B 34 -10 440 764 ;
+C -1 ; WX 600 ; N plusminus ; B 47 0 553 506 ;
+C -1 ; WX 600 ; N multiply ; B 47 0 553 506 ;
+C -1 ; WX 556 ; N Udieresis ; B 56 -12 500 876 ;
+C -1 ; WX 600 ; N minus ; B 47 211 553 295 ;
+C -1 ; WX 333 ; N onesuperior ; B 66 294 221 728 ;
+C -1 ; WX 500 ; N Eacute ; B 70 0 434 904 ;
+C -1 ; WX 500 ; N Acircumflex ; B -3 0 503 904 ;
+C -1 ; WX 800 ; N copyright ; B 20 -12 780 736 ;
+C -1 ; WX 500 ; N Agrave ; B -3 0 503 904 ;
+C -1 ; WX 500 ; N odieresis ; B 34 -10 466 736 ;
+C -1 ; WX 500 ; N oacute ; B 34 -10 466 764 ;
+C -1 ; WX 400 ; N degree ; B 57 450 343 736 ;
+C -1 ; WX 222 ; N igrave ; B -20 0 178 764 ;
+C -1 ; WX 500 ; N mu ; B 60 -198 440 560 ;
+C -1 ; WX 611 ; N Oacute ; B 36 -12 574 904 ;
+C -1 ; WX 500 ; N eth ; B 34 -10 466 738 ;
+C -1 ; WX 500 ; N Adieresis ; B -3 0 503 876 ;
+C -1 ; WX 500 ; N Yacute ; B 0 0 500 904 ;
+C -1 ; WX 222 ; N brokenbar ; B 69 -12 153 736 ;
+C -1 ; WX 834 ; N onehalf ; B 94 -12 770 736 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 115
+
+KPX A y -18
+KPX A w -18
+KPX A v -18
+KPX A quoteright -55
+KPX A Y -37
+KPX A W -37
+KPX A V -37
+KPX A T -37
+
+KPX F period -111
+KPX F comma -111
+KPX F A -18
+
+KPX L y -37
+KPX L quoteright -92
+KPX L Y -55
+KPX L W -55
+KPX L V -55
+KPX L T -55
+
+KPX P period -129
+KPX P comma -129
+KPX P A -37
+
+KPX R y 0
+KPX R Y -18
+KPX R W -18
+KPX R V -18
+KPX R T -18
+
+KPX T y -37
+KPX T w -55
+KPX T u -37
+KPX T semicolon -55
+KPX T s -55
+KPX T r -37
+KPX T period -74
+KPX T o -55
+KPX T i -37
+KPX T hyphen -55
+KPX T e -55
+KPX T comma -74
+KPX T colon -55
+KPX T c -55
+KPX T a -55
+KPX T A -37
+
+KPX V y -18
+KPX V u -18
+KPX V semicolon -37
+KPX V r -18
+KPX V period -92
+KPX V o -37
+KPX V i -18
+KPX V hyphen -55
+KPX V e -37
+KPX V comma -92
+KPX V colon -37
+KPX V a -37
+KPX V A -37
+
+KPX W y 0
+KPX W u 0
+KPX W semicolon -18
+KPX W r 0
+KPX W period -74
+KPX W o -18
+KPX W i 0
+KPX W hyphen -18
+KPX W e -18
+KPX W comma -74
+KPX W colon -18
+KPX W a -18
+KPX W A -18
+
+KPX Y v -18
+KPX Y u -18
+KPX Y semicolon -37
+KPX Y q -37
+KPX Y period -74
+KPX Y p -18
+KPX Y o -37
+KPX Y i -18
+KPX Y hyphen -55
+KPX Y e -37
+KPX Y comma -74
+KPX Y colon -37
+KPX Y a -37
+KPX Y A -37
+
+KPX f quoteright 18
+KPX f f 0
+
+KPX quoteleft quoteleft -92
+
+KPX quoteright t 0
+KPX quoteright s -55
+KPX quoteright quoteright -92
+
+KPX r z 0
+KPX r y 0
+KPX r x 0
+KPX r w 0
+KPX r v 0
+KPX r u 0
+KPX r t 0
+KPX r r 0
+KPX r quoteright 18
+KPX r q 0
+KPX r period -55
+KPX r o 0
+KPX r n 0
+KPX r m 0
+KPX r hyphen -37
+KPX r h 0
+KPX r g 0
+KPX r f 0
+KPX r e 0
+KPX r d 0
+KPX r comma -55
+KPX r c 0
+
+KPX v period -55
+KPX v comma -55
+
+KPX w period -37
+KPX w comma -37
+
+KPX y period -55
+KPX y comma -55
+EndKernPairs
+EndKernData
+StartComposites 58
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 139 140 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 139 140 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 139 140 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 139 140 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 139 140 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 139 140 ;
+CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 167 0 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 145 140 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 145 140 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 145 140 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 145 140 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 0 140 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 0 140 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 0 140 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 0 140 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 195 140 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 195 140 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 195 140 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 195 140 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 195 140 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 195 140 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 139 140 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 167 140 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 167 140 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 167 140 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 167 140 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 139 140 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 139 140 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 111 140 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 139 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 139 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 139 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 139 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 139 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 139 0 ;
+CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 111 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 111 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 111 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 111 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 111 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute 0 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex 0 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis 0 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave 0 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 139 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 139 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 139 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 139 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 139 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 139 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 84 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 139 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 139 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 139 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 139 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 111 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 111 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 111 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/AG-CnMd+ b/font/font/AG-CnMd+
new file mode 100644
index 0000000..e12a8ae
--- /dev/null
+++ b/font/font/AG-CnMd+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 556 ; N Ccaron ; B 36 -12 525 932 ;
+C -1 ; WX 444 ; N ccaron ; B 34 -10 422 764 ;
+C -1 ; WX 611 ; N Dcaron ; B 70 0 574 932 ;
+C -1 ; WX 618 ; N dcaron ; B 34 -10 625 796 ;
+C -1 ; WX 500 ; N Ecaron ; B 70 0 434 932 ;
+C -1 ; WX 444 ; N ecaron ; B 34 -10 414 764 ;
+C -1 ; WX 444 ; N Lcaron ; B 70 0 430 796 ;
+C -1 ; WX 444 ; N Lacute ; B 70 0 430 932 ;
+C -1 ; WX 340 ; N lcaron ; B 63 0 344 796 ;
+C -1 ; WX 222 ; N lacute ; B 63 0 262 932 ;
+C -1 ; WX 611 ; N Ncaron ; B 76 0 534 932 ;
+C -1 ; WX 500 ; N ncaron ; B 60 0 440 764 ;
+C -1 ; WX 556 ; N Rcaron ; B 70 0 550 932 ;
+C -1 ; WX 556 ; N Racute ; B 70 0 550 932 ;
+C -1 ; WX 278 ; N rcaron ; B -6 0 284 764 ;
+C -1 ; WX 278 ; N racute ; B 60 0 290 764 ;
+C -1 ; WX 444 ; N Tcaron ; B 16 0 428 932 ;
+C -1 ; WX 340 ; N tcaron ; B 0 0 407 736 ;
+C -1 ; WX 556 ; N Uring ; B 56 -12 500 932 ;
+C -1 ; WX 500 ; N uring ; B 60 -10 440 840 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 216 168 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 130 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 194 168 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 430 60 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 139 168 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 111 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 152 60 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 111 168 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 149 60 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 20 168 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 194 168 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 139 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 167 168 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 205 168 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 28 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 48 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 111 168 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 212 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 167 92 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 139 0 ;
+EndBuildComposites
diff --git a/font/font/AG-Dm b/font/font/AG-Dm
new file mode 100644
index 0000000..69eebba
--- /dev/null
+++ b/font/font/AG-Dm
@@ -0,0 +1,576 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1990, 1991 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Mon Mar 4 13:46:34 1991
+Comment UniqueID 34370
+Comment VMusage 24954 31846
+FontName AvantGarde-Demi
+FullName ITC Avant Garde Gothic Demi
+FamilyName ITC Avant Garde Gothic
+Weight Demi
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -123 -251 1222 1021
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.007
+Notice Copyright (c) 1985, 1987, 1989, 1990, 1991 Adobe Systems Incorporated. All Rights Reserved.ITC Avant Garde Gothic is a registered trademark of International Typeface Corporation.
+EncodingScheme AdobeStandardEncoding
+CapHeight 740
+XHeight 555
+Ascender 740
+Descender -185
+StartCharMetrics 228
+C 32 ; WX 280 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 280 ; N exclam ; B 73 0 206 740 ;
+C 34 ; WX 360 ; N quotedbl ; B 19 444 341 740 ;
+C 35 ; WX 560 ; N numbersign ; B 29 0 525 700 ;
+C 36 ; WX 560 ; N dollar ; B 58 -86 501 857 ;
+C 37 ; WX 860 ; N percent ; B 36 -15 822 755 ;
+C 38 ; WX 680 ; N ampersand ; B 34 -15 665 755 ;
+C 39 ; WX 280 ; N quoteright ; B 72 466 205 740 ;
+C 40 ; WX 380 ; N parenleft ; B 74 -157 350 754 ;
+C 41 ; WX 380 ; N parenright ; B 37 -157 313 754 ;
+C 42 ; WX 440 ; N asterisk ; B 67 457 374 755 ;
+C 43 ; WX 600 ; N plus ; B 48 0 552 506 ;
+C 44 ; WX 280 ; N comma ; B 73 -141 206 133 ;
+C 45 ; WX 420 ; N hyphen ; B 71 230 349 348 ;
+C 46 ; WX 280 ; N period ; B 73 0 206 133 ;
+C 47 ; WX 460 ; N slash ; B 6 -100 454 740 ;
+C 48 ; WX 560 ; N zero ; B 32 -15 529 755 ;
+C 49 ; WX 560 ; N one ; B 137 0 363 740 ;
+C 50 ; WX 560 ; N two ; B 36 0 523 755 ;
+C 51 ; WX 560 ; N three ; B 28 -15 532 755 ;
+C 52 ; WX 560 ; N four ; B 15 0 545 740 ;
+C 53 ; WX 560 ; N five ; B 25 -15 535 740 ;
+C 54 ; WX 560 ; N six ; B 23 -15 536 739 ;
+C 55 ; WX 560 ; N seven ; B 62 0 498 740 ;
+C 56 ; WX 560 ; N eight ; B 33 -15 527 755 ;
+C 57 ; WX 560 ; N nine ; B 24 0 537 754 ;
+C 58 ; WX 280 ; N colon ; B 73 0 206 555 ;
+C 59 ; WX 280 ; N semicolon ; B 73 -141 206 555 ;
+C 60 ; WX 600 ; N less ; B 46 -8 554 514 ;
+C 61 ; WX 600 ; N equal ; B 48 81 552 425 ;
+C 62 ; WX 600 ; N greater ; B 46 -8 554 514 ;
+C 63 ; WX 560 ; N question ; B 38 0 491 755 ;
+C 64 ; WX 740 ; N at ; B 50 -12 750 712 ;
+C 65 ; WX 740 ; N A ; B 7 0 732 740 ;
+C 66 ; WX 580 ; N B ; B 70 0 551 740 ;
+C 67 ; WX 780 ; N C ; B 34 -15 766 755 ;
+C 68 ; WX 700 ; N D ; B 63 0 657 740 ;
+C 69 ; WX 520 ; N E ; B 61 0 459 740 ;
+C 70 ; WX 480 ; N F ; B 61 0 438 740 ;
+C 71 ; WX 840 ; N G ; B 27 -15 817 755 ;
+C 72 ; WX 680 ; N H ; B 71 0 610 740 ;
+C 73 ; WX 280 ; N I ; B 72 0 209 740 ;
+C 74 ; WX 480 ; N J ; B 2 -15 409 740 ;
+C 75 ; WX 620 ; N K ; B 89 0 620 740 ;
+C 76 ; WX 440 ; N L ; B 72 0 435 740 ;
+C 77 ; WX 900 ; N M ; B 63 0 837 740 ;
+C 78 ; WX 740 ; N N ; B 70 0 671 740 ;
+C 79 ; WX 840 ; N O ; B 33 -15 807 755 ;
+C 80 ; WX 560 ; N P ; B 72 0 545 740 ;
+C 81 ; WX 840 ; N Q ; B 32 -15 824 755 ;
+C 82 ; WX 580 ; N R ; B 64 0 565 740 ;
+C 83 ; WX 520 ; N S ; B 12 -15 493 755 ;
+C 84 ; WX 420 ; N T ; B 6 0 418 740 ;
+C 85 ; WX 640 ; N U ; B 55 -15 585 740 ;
+C 86 ; WX 700 ; N V ; B 8 0 695 740 ;
+C 87 ; WX 900 ; N W ; B 7 0 899 740 ;
+C 88 ; WX 680 ; N X ; B 4 0 676 740 ;
+C 89 ; WX 620 ; N Y ; B -2 0 622 740 ;
+C 90 ; WX 500 ; N Z ; B 19 0 481 740 ;
+C 91 ; WX 320 ; N bracketleft ; B 66 -157 284 754 ;
+C 92 ; WX 640 ; N backslash ; B 96 -100 544 740 ;
+C 93 ; WX 320 ; N bracketright ; B 36 -157 254 754 ;
+C 94 ; WX 600 ; N asciicircum ; B 73 375 527 740 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 280 ; N quoteleft ; B 72 466 205 740 ;
+C 97 ; WX 660 ; N a ; B 27 -18 613 574 ;
+C 98 ; WX 660 ; N b ; B 47 -18 632 740 ;
+C 99 ; WX 640 ; N c ; B 37 -18 610 574 ;
+C 100 ; WX 660 ; N d ; B 34 -18 618 740 ;
+C 101 ; WX 640 ; N e ; B 31 -18 610 577 ;
+C 102 ; WX 280 ; N f ; B 15 0 280 755 ; L i fi ; L l fl ;
+C 103 ; WX 660 ; N g ; B 32 -226 623 574 ;
+C 104 ; WX 600 ; N h ; B 54 0 546 740 ;
+C 105 ; WX 240 ; N i ; B 53 0 186 740 ;
+C 106 ; WX 260 ; N j ; B 16 -185 205 740 ;
+C 107 ; WX 580 ; N k ; B 80 0 571 740 ;
+C 108 ; WX 240 ; N l ; B 54 0 187 740 ;
+C 109 ; WX 940 ; N m ; B 54 0 887 574 ;
+C 110 ; WX 600 ; N n ; B 54 0 547 574 ;
+C 111 ; WX 640 ; N o ; B 25 -18 615 574 ;
+C 112 ; WX 660 ; N p ; B 47 -185 629 574 ;
+C 113 ; WX 660 ; N q ; B 31 -185 613 574 ;
+C 114 ; WX 320 ; N r ; B 63 0 317 574 ;
+C 115 ; WX 440 ; N s ; B 19 -18 421 574 ;
+C 116 ; WX 300 ; N t ; B 21 0 299 740 ;
+C 117 ; WX 600 ; N u ; B 50 -18 544 555 ;
+C 118 ; WX 560 ; N v ; B 3 0 556 555 ;
+C 119 ; WX 800 ; N w ; B 11 0 789 555 ;
+C 120 ; WX 560 ; N x ; B 3 0 556 555 ;
+C 121 ; WX 580 ; N y ; B 8 -185 571 555 ;
+C 122 ; WX 460 ; N z ; B 20 0 442 555 ;
+C 123 ; WX 340 ; N braceleft ; B -3 -191 317 747 ;
+C 124 ; WX 600 ; N bar ; B 233 -100 366 740 ;
+C 125 ; WX 340 ; N braceright ; B 23 -191 343 747 ;
+C 126 ; WX 600 ; N asciitilde ; B 67 160 533 347 ;
+C 161 ; WX 280 ; N exclamdown ; B 74 -185 207 555 ;
+C 162 ; WX 560 ; N cent ; B 43 39 517 715 ;
+C 163 ; WX 560 ; N sterling ; B -2 0 562 755 ;
+C 164 ; WX 160 ; N fraction ; B -123 0 282 740 ;
+C 165 ; WX 560 ; N yen ; B -10 0 570 740 ;
+C 166 ; WX 560 ; N florin ; B 0 -151 512 824 ;
+C 167 ; WX 560 ; N section ; B 28 -158 530 755 ;
+C 168 ; WX 560 ; N currency ; B 27 69 534 577 ;
+C 169 ; WX 220 ; N quotesingle ; B 44 444 177 740 ;
+C 170 ; WX 480 ; N quotedblleft ; B 70 466 410 740 ;
+C 171 ; WX 460 ; N guillemotleft ; B 61 108 400 469 ;
+C 172 ; WX 240 ; N guilsinglleft ; B 50 108 190 469 ;
+C 173 ; WX 240 ; N guilsinglright ; B 50 108 190 469 ;
+C 174 ; WX 520 ; N fi ; B 25 0 461 755 ;
+C 175 ; WX 520 ; N fl ; B 25 0 461 755 ;
+C 177 ; WX 500 ; N endash ; B 35 230 465 348 ;
+C 178 ; WX 560 ; N dagger ; B 51 -142 509 740 ;
+C 179 ; WX 560 ; N daggerdbl ; B 51 -142 509 740 ;
+C 180 ; WX 280 ; N periodcentered ; B 73 187 206 320 ;
+C 182 ; WX 600 ; N paragraph ; B -7 -103 607 740 ;
+C 183 ; WX 600 ; N bullet ; B 148 222 453 532 ;
+C 184 ; WX 280 ; N quotesinglbase ; B 72 -141 205 133 ;
+C 185 ; WX 480 ; N quotedblbase ; B 70 -141 410 133 ;
+C 186 ; WX 480 ; N quotedblright ; B 70 466 410 740 ;
+C 187 ; WX 460 ; N guillemotright ; B 61 108 400 469 ;
+C 188 ; WX 1000 ; N ellipsis ; B 100 0 899 133 ;
+C 189 ; WX 1280 ; N perthousand ; B 36 -15 1222 755 ;
+C 191 ; WX 560 ; N questiondown ; B 68 -200 521 555 ;
+C 193 ; WX 420 ; N grave ; B 50 624 329 851 ;
+C 194 ; WX 420 ; N acute ; B 91 624 370 849 ;
+C 195 ; WX 540 ; N circumflex ; B 71 636 470 774 ;
+C 196 ; WX 480 ; N tilde ; B 44 636 437 767 ;
+C 197 ; WX 420 ; N macron ; B 72 648 349 759 ;
+C 198 ; WX 480 ; N breve ; B 42 633 439 770 ;
+C 199 ; WX 280 ; N dotaccent ; B 74 636 207 769 ;
+C 200 ; WX 500 ; N dieresis ; B 78 636 422 769 ;
+C 202 ; WX 360 ; N ring ; B 73 619 288 834 ;
+C 203 ; WX 340 ; N cedilla ; B 98 -251 298 6 ;
+C 205 ; WX 700 ; N hungarumlaut ; B 132 610 609 862 ;
+C 206 ; WX 340 ; N ogonek ; B 79 -195 262 9 ;
+C 207 ; WX 540 ; N caron ; B 71 636 470 774 ;
+C 208 ; WX 1000 ; N emdash ; B 35 230 965 348 ;
+C 225 ; WX 900 ; N AE ; B -5 0 824 740 ;
+C 227 ; WX 360 ; N ordfeminine ; B 19 438 334 755 ;
+C 232 ; WX 480 ; N Lslash ; B 26 0 460 740 ;
+C 233 ; WX 840 ; N Oslash ; B 33 -71 807 814 ;
+C 234 ; WX 1060 ; N OE ; B 37 -15 1007 755 ;
+C 235 ; WX 360 ; N ordmasculine ; B 23 438 338 755 ;
+C 241 ; WX 1080 ; N ae ; B 29 -18 1048 574 ;
+C 245 ; WX 240 ; N dotlessi ; B 53 0 186 555 ;
+C 248 ; WX 320 ; N lslash ; B 34 0 305 740 ;
+C 249 ; WX 660 ; N oslash ; B 35 -50 625 608 ;
+C 250 ; WX 1080 ; N oe ; B 30 -18 1050 574 ;
+C 251 ; WX 600 ; N germandbls ; B 51 -18 585 755 ;
+C -1 ; WX 640 ; N ecircumflex ; B 31 -18 610 774 ;
+C -1 ; WX 640 ; N edieresis ; B 31 -18 610 769 ;
+C -1 ; WX 660 ; N aacute ; B 27 -18 613 849 ;
+C -1 ; WX 740 ; N registered ; B -12 -12 752 752 ;
+C -1 ; WX 240 ; N icircumflex ; B -79 0 320 774 ;
+C -1 ; WX 600 ; N udieresis ; B 50 -18 544 769 ;
+C -1 ; WX 640 ; N ograve ; B 25 -18 615 851 ;
+C -1 ; WX 600 ; N uacute ; B 50 -18 544 849 ;
+C -1 ; WX 600 ; N ucircumflex ; B 50 -18 544 774 ;
+C -1 ; WX 740 ; N Aacute ; B 7 0 732 1019 ;
+C -1 ; WX 240 ; N igrave ; B -65 0 214 851 ;
+C -1 ; WX 280 ; N Icircumflex ; B -59 0 340 944 ;
+C -1 ; WX 640 ; N ccedilla ; B 37 -251 610 574 ;
+C -1 ; WX 660 ; N adieresis ; B 27 -18 613 769 ;
+C -1 ; WX 520 ; N Ecircumflex ; B 61 0 460 944 ;
+C -1 ; WX 440 ; N scaron ; B 19 -18 421 774 ;
+C -1 ; WX 660 ; N thorn ; B 47 -185 629 740 ;
+C -1 ; WX 1000 ; N trademark ; B 9 296 821 740 ;
+C -1 ; WX 640 ; N egrave ; B 31 -18 610 851 ;
+C -1 ; WX 336 ; N threesuperior ; B 8 287 328 749 ;
+C -1 ; WX 460 ; N zcaron ; B 20 0 455 774 ;
+C -1 ; WX 660 ; N atilde ; B 27 -18 613 767 ;
+C -1 ; WX 660 ; N aring ; B 27 -18 613 834 ;
+C -1 ; WX 640 ; N ocircumflex ; B 25 -18 615 774 ;
+C -1 ; WX 520 ; N Edieresis ; B 61 0 459 939 ;
+C -1 ; WX 840 ; N threequarters ; B 18 0 803 749 ;
+C -1 ; WX 580 ; N ydieresis ; B 8 -185 571 769 ;
+C -1 ; WX 580 ; N yacute ; B 8 -185 571 849 ;
+C -1 ; WX 240 ; N iacute ; B 26 0 305 849 ;
+C -1 ; WX 740 ; N Acircumflex ; B 7 0 732 944 ;
+C -1 ; WX 640 ; N Uacute ; B 55 -15 585 1019 ;
+C -1 ; WX 640 ; N eacute ; B 31 -18 610 849 ;
+C -1 ; WX 840 ; N Ograve ; B 33 -15 807 1021 ;
+C -1 ; WX 660 ; N agrave ; B 27 -18 613 851 ;
+C -1 ; WX 640 ; N Udieresis ; B 55 -15 585 939 ;
+C -1 ; WX 660 ; N acircumflex ; B 27 -18 613 774 ;
+C -1 ; WX 280 ; N Igrave ; B -45 0 234 1021 ;
+C -1 ; WX 336 ; N twosuperior ; B 13 296 322 749 ;
+C -1 ; WX 640 ; N Ugrave ; B 55 -15 585 1021 ;
+C -1 ; WX 840 ; N onequarter ; B 92 0 746 740 ;
+C -1 ; WX 640 ; N Ucircumflex ; B 55 -15 585 944 ;
+C -1 ; WX 520 ; N Scaron ; B 12 -15 493 944 ;
+C -1 ; WX 280 ; N Idieresis ; B -32 0 312 939 ;
+C -1 ; WX 240 ; N idieresis ; B -52 0 292 769 ;
+C -1 ; WX 520 ; N Egrave ; B 61 0 459 1021 ;
+C -1 ; WX 840 ; N Oacute ; B 33 -15 807 1019 ;
+C -1 ; WX 600 ; N divide ; B 48 -20 552 526 ;
+C -1 ; WX 740 ; N Atilde ; B 7 0 732 937 ;
+C -1 ; WX 740 ; N Aring ; B 7 0 732 969 ;
+C -1 ; WX 840 ; N Odieresis ; B 33 -15 807 939 ;
+C -1 ; WX 740 ; N Adieresis ; B 7 0 732 939 ;
+C -1 ; WX 740 ; N Ntilde ; B 70 0 671 937 ;
+C -1 ; WX 500 ; N Zcaron ; B 19 0 481 944 ;
+C -1 ; WX 560 ; N Thorn ; B 72 0 545 740 ;
+C -1 ; WX 280 ; N Iacute ; B 46 0 325 1019 ;
+C -1 ; WX 600 ; N plusminus ; B 48 -62 552 556 ;
+C -1 ; WX 600 ; N multiply ; B 59 12 541 494 ;
+C -1 ; WX 520 ; N Eacute ; B 61 0 459 1019 ;
+C -1 ; WX 620 ; N Ydieresis ; B -2 0 622 939 ;
+C -1 ; WX 336 ; N onesuperior ; B 72 296 223 740 ;
+C -1 ; WX 600 ; N ugrave ; B 50 -18 544 851 ;
+C -1 ; WX 600 ; N logicalnot ; B 48 108 552 425 ;
+C -1 ; WX 600 ; N ntilde ; B 54 0 547 767 ;
+C -1 ; WX 840 ; N Otilde ; B 33 -15 807 937 ;
+C -1 ; WX 640 ; N otilde ; B 25 -18 615 767 ;
+C -1 ; WX 780 ; N Ccedilla ; B 34 -251 766 755 ;
+C -1 ; WX 740 ; N Agrave ; B 7 0 732 1021 ;
+C -1 ; WX 840 ; N onehalf ; B 62 0 771 740 ;
+C -1 ; WX 742 ; N Eth ; B 25 0 691 740 ;
+C -1 ; WX 400 ; N degree ; B 57 426 343 712 ;
+C -1 ; WX 620 ; N Yacute ; B -2 0 622 1019 ;
+C -1 ; WX 840 ; N Ocircumflex ; B 33 -15 807 944 ;
+C -1 ; WX 640 ; N oacute ; B 25 -18 615 849 ;
+C -1 ; WX 576 ; N mu ; B 38 -187 539 555 ;
+C -1 ; WX 600 ; N minus ; B 48 193 552 313 ;
+C -1 ; WX 640 ; N eth ; B 27 -18 616 754 ;
+C -1 ; WX 640 ; N odieresis ; B 25 -18 615 769 ;
+C -1 ; WX 740 ; N copyright ; B -12 -12 752 752 ;
+C -1 ; WX 600 ; N brokenbar ; B 233 -100 366 740 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 218
+
+KPX A y -50
+KPX A w -65
+KPX A v -70
+KPX A u -20
+KPX A quoteright -90
+KPX A Y -80
+KPX A W -60
+KPX A V -102
+KPX A U -40
+KPX A T -25
+KPX A Q -50
+KPX A O -50
+KPX A G -40
+KPX A C -40
+
+KPX B A -10
+
+KPX C A -40
+
+KPX D period -20
+KPX D comma -20
+KPX D Y -45
+KPX D W -25
+KPX D V -50
+KPX D A -50
+
+KPX F period -129
+KPX F e -20
+KPX F comma -162
+KPX F a -20
+KPX F A -75
+
+KPX G period -20
+KPX G comma -20
+KPX G Y -15
+
+KPX J period -15
+KPX J a -20
+KPX J A -30
+
+KPX K y -20
+KPX K u -15
+KPX K o -45
+KPX K e -40
+KPX K O -30
+
+KPX L y -23
+KPX L quoteright -30
+KPX L quotedblright -30
+KPX L Y -80
+KPX L W -55
+KPX L V -85
+KPX L T -46
+
+KPX O period -30
+KPX O comma -30
+KPX O Y -30
+KPX O X -30
+KPX O W -20
+KPX O V -45
+KPX O T -15
+KPX O A -60
+
+KPX P period -200
+KPX P o -20
+KPX P e -20
+KPX P comma -220
+KPX P a -20
+KPX P A -100
+
+KPX Q comma 20
+
+KPX R W 25
+KPX R V -10
+KPX R U 25
+KPX R T 40
+KPX R O 25
+
+KPX S comma 20
+
+KPX T y -10
+KPX T w -55
+KPX T u -46
+KPX T semicolon -29
+KPX T r -30
+KPX T period -91
+KPX T o -49
+KPX T hyphen -75
+KPX T e -49
+KPX T comma -82
+KPX T colon -15
+KPX T a -70
+KPX T O -15
+KPX T A -25
+
+KPX U period -20
+KPX U comma -20
+KPX U A -40
+
+KPX V u -55
+KPX V semicolon -33
+KPX V period -145
+KPX V o -101
+KPX V i -15
+KPX V hyphen -75
+KPX V e -101
+KPX V comma -145
+KPX V colon -18
+KPX V a -95
+KPX V O -45
+KPX V G -20
+KPX V A -102
+
+KPX W y -15
+KPX W u -30
+KPX W semicolon -33
+KPX W period -106
+KPX W o -46
+KPX W i -10
+KPX W hyphen -35
+KPX W e -47
+KPX W comma -106
+KPX W colon -15
+KPX W a -50
+KPX W O -20
+KPX W A -58
+
+KPX Y u -52
+KPX Y semicolon -23
+KPX Y period -145
+KPX Y o -89
+KPX Y hyphen -100
+KPX Y e -89
+KPX Y comma -145
+KPX Y colon -10
+KPX Y a -93
+KPX Y O -30
+KPX Y A -80
+
+KPX a t 5
+KPX a p 20
+KPX a b 5
+
+KPX b y -20
+KPX b v -20
+
+KPX c y -20
+KPX c l -15
+KPX c k -15
+
+KPX comma space -50
+KPX comma quoteright -70
+KPX comma quotedblright -70
+
+KPX e y -20
+KPX e x -20
+KPX e w -20
+KPX e v -20
+
+KPX f period -40
+KPX f o -20
+KPX f l -15
+KPX f i -15
+KPX f f -20
+KPX f dotlessi -15
+KPX f comma -40
+KPX f a -15
+
+KPX g i 25
+KPX g a 15
+
+KPX h y -30
+
+KPX k y -5
+KPX k o -30
+KPX k e -40
+
+KPX m y -20
+KPX m u -20
+
+KPX n y -15
+KPX n v -30
+
+KPX o y -20
+KPX o x -30
+KPX o w -20
+KPX o v -30
+
+KPX p y -20
+
+KPX period space -50
+KPX period quoteright -70
+KPX period quotedblright -70
+
+KPX quotedblleft A -50
+
+KPX quotedblright space -50
+
+KPX quoteleft quoteleft -80
+KPX quoteleft A -50
+
+KPX quoteright v -10
+KPX quoteright t 10
+KPX quoteright space -50
+KPX quoteright s -15
+KPX quoteright r -20
+KPX quoteright quoteright -80
+KPX quoteright d -50
+
+KPX r y 40
+KPX r v 40
+KPX r u 20
+KPX r t 20
+KPX r s 20
+KPX r q -8
+KPX r period -73
+KPX r p 20
+KPX r o -15
+KPX r n 21
+KPX r m 15
+KPX r l 20
+KPX r k 5
+KPX r i 20
+KPX r hyphen -60
+KPX r g 1
+KPX r e -4
+KPX r d -6
+KPX r comma -75
+KPX r c -7
+
+KPX s period 20
+KPX s comma 20
+
+KPX space quoteleft -50
+KPX space quotedblleft -50
+KPX space Y -60
+KPX space W -25
+KPX space V -80
+KPX space T -25
+KPX space A -20
+
+KPX v period -90
+KPX v o -20
+KPX v e -20
+KPX v comma -90
+KPX v a -30
+
+KPX w period -90
+KPX w o -30
+KPX w e -20
+KPX w comma -90
+KPX w a -30
+
+KPX x e -20
+
+KPX y period -100
+KPX y o -30
+KPX y e -20
+KPX y comma -100
+KPX y c -35
+KPX y a -30
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 160 170 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 100 170 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 120 170 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 160 170 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 190 135 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 130 170 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 50 170 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex -10 170 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 10 170 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 50 170 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute -45 170 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex -130 170 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis -110 170 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave -95 170 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 130 170 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 210 170 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 150 170 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 170 170 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 210 170 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 180 170 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron -10 170 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 145 170 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 50 170 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 70 170 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 75 170 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 135 170 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 60 170 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 5 170 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 120 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 60 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 80 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 120 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 150 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 90 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 110 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 50 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 70 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 110 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -65 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -150 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -130 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -115 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 60 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 110 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 50 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 70 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 110 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 80 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron -50 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 125 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 30 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 50 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 55 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 115 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 40 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron -15 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/AG-Dm+ b/font/font/AG-Dm+
new file mode 100644
index 0000000..ede2da9
--- /dev/null
+++ b/font/font/AG-Dm+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 780 ; N Ccaron ; B 34 -15 766 946 ;
+C -1 ; WX 640 ; N ccaron ; B 37 -18 610 774 ;
+C -1 ; WX 700 ; N Dcaron ; B 63 0 657 946 ;
+C -1 ; WX 753 ; N dcaron ; B 34 -18 764 814 ;
+C -1 ; WX 520 ; N Ecaron ; B 61 0 460 946 ;
+C -1 ; WX 640 ; N ecaron ; B 31 -18 610 774 ;
+C -1 ; WX 440 ; N Lcaron ; B 72 0 435 814 ;
+C -1 ; WX 440 ; N Lacute ; B 72 0 435 1033 ;
+C -1 ; WX 333 ; N lcaron ; B 54 0 333 814 ;
+C -1 ; WX 240 ; N lacute ; B 29 0 308 1033 ;
+C -1 ; WX 740 ; N Ncaron ; B 70 0 671 946 ;
+C -1 ; WX 600 ; N ncaron ; B 54 0 547 774 ;
+C -1 ; WX 580 ; N Rcaron ; B 64 0 565 946 ;
+C -1 ; WX 580 ; N Racute ; B 64 0 565 1033 ;
+C -1 ; WX 320 ; N rcaron ; B -39 0 360 774 ;
+C -1 ; WX 320 ; N racute ; B 63 0 348 849 ;
+C -1 ; WX 420 ; N Tcaron ; B 6 0 418 946 ;
+C -1 ; WX 393 ; N tcaron ; B 21 0 445 740 ;
+C -1 ; WX 640 ; N Uring ; B 55 -15 585 946 ;
+C -1 ; WX 600 ; N uring ; B 50 -18 544 834 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 193 172 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 79 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 80 172 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 559 74 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron -10 172 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 50 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 150 74 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 10 184 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 128 74 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute -62 184 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 100 172 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 30 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 20 172 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 133 184 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron -110 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute -22 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron -60 172 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 240 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 140 112 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 120 0 ;
+EndBuildComposites
diff --git a/font/font/AG-DmO b/font/font/AG-DmO
new file mode 100644
index 0000000..c348b11
--- /dev/null
+++ b/font/font/AG-DmO
@@ -0,0 +1,576 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1990, 1991 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Mon Mar 4 13:49:44 1991
+Comment UniqueID 34373
+Comment VMusage 6550 39938
+FontName AvantGarde-DemiOblique
+FullName ITC Avant Garde Gothic Demi Oblique
+FamilyName ITC Avant Garde Gothic
+Weight Demi
+ItalicAngle -10.5
+IsFixedPitch false
+FontBBox -123 -251 1256 1021
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.007
+Notice Copyright (c) 1985, 1987, 1989, 1990, 1991 Adobe Systems Incorporated. All Rights Reserved.ITC Avant Garde Gothic is a registered trademark of International Typeface Corporation.
+EncodingScheme AdobeStandardEncoding
+CapHeight 740
+XHeight 555
+Ascender 740
+Descender -185
+StartCharMetrics 228
+C 32 ; WX 280 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 280 ; N exclam ; B 73 0 343 740 ;
+C 34 ; WX 360 ; N quotedbl ; B 127 444 478 740 ;
+C 35 ; WX 560 ; N numbersign ; B 66 0 618 700 ;
+C 36 ; WX 560 ; N dollar ; B 99 -86 582 857 ;
+C 37 ; WX 860 ; N percent ; B 139 -15 856 755 ;
+C 38 ; WX 680 ; N ampersand ; B 71 -15 742 755 ;
+C 39 ; WX 280 ; N quoteright ; B 159 466 342 740 ;
+C 40 ; WX 380 ; N parenleft ; B 120 -157 490 754 ;
+C 41 ; WX 380 ; N parenright ; B 8 -157 378 754 ;
+C 42 ; WX 440 ; N asterisk ; B 174 457 492 755 ;
+C 43 ; WX 600 ; N plus ; B 84 0 610 506 ;
+C 44 ; WX 280 ; N comma ; B 48 -141 231 133 ;
+C 45 ; WX 420 ; N hyphen ; B 114 230 413 348 ;
+C 46 ; WX 280 ; N period ; B 73 0 231 133 ;
+C 47 ; WX 460 ; N slash ; B -13 -100 591 740 ;
+C 48 ; WX 560 ; N zero ; B 70 -15 628 755 ;
+C 49 ; WX 560 ; N one ; B 230 0 500 740 ;
+C 50 ; WX 560 ; N two ; B 44 0 622 755 ;
+C 51 ; WX 560 ; N three ; B 67 -15 585 755 ;
+C 52 ; WX 560 ; N four ; B 36 0 604 740 ;
+C 53 ; WX 560 ; N five ; B 64 -15 600 740 ;
+C 54 ; WX 560 ; N six ; B 64 -15 587 739 ;
+C 55 ; WX 560 ; N seven ; B 83 0 635 740 ;
+C 56 ; WX 560 ; N eight ; B 71 -15 590 755 ;
+C 57 ; WX 560 ; N nine ; B 110 0 633 754 ;
+C 58 ; WX 280 ; N colon ; B 73 0 309 555 ;
+C 59 ; WX 280 ; N semicolon ; B 48 -141 309 555 ;
+C 60 ; WX 600 ; N less ; B 84 -8 649 514 ;
+C 61 ; WX 600 ; N equal ; B 63 81 631 425 ;
+C 62 ; WX 600 ; N greater ; B 45 -8 610 514 ;
+C 63 ; WX 560 ; N question ; B 135 0 593 755 ;
+C 64 ; WX 740 ; N at ; B 109 -12 832 712 ;
+C 65 ; WX 740 ; N A ; B 7 0 732 740 ;
+C 66 ; WX 580 ; N B ; B 70 0 610 740 ;
+C 67 ; WX 780 ; N C ; B 97 -15 864 755 ;
+C 68 ; WX 700 ; N D ; B 63 0 732 740 ;
+C 69 ; WX 520 ; N E ; B 61 0 596 740 ;
+C 70 ; WX 480 ; N F ; B 61 0 575 740 ;
+C 71 ; WX 840 ; N G ; B 89 -15 887 755 ;
+C 72 ; WX 680 ; N H ; B 71 0 747 740 ;
+C 73 ; WX 280 ; N I ; B 72 0 346 740 ;
+C 74 ; WX 480 ; N J ; B 34 -15 546 740 ;
+C 75 ; WX 620 ; N K ; B 89 0 757 740 ;
+C 76 ; WX 440 ; N L ; B 72 0 459 740 ;
+C 77 ; WX 900 ; N M ; B 63 0 974 740 ;
+C 78 ; WX 740 ; N N ; B 70 0 808 740 ;
+C 79 ; WX 840 ; N O ; B 95 -15 882 755 ;
+C 80 ; WX 560 ; N P ; B 72 0 645 740 ;
+C 81 ; WX 840 ; N Q ; B 94 -15 882 755 ;
+C 82 ; WX 580 ; N R ; B 64 0 656 740 ;
+C 83 ; WX 520 ; N S ; B 49 -15 578 755 ;
+C 84 ; WX 420 ; N T ; B 119 0 555 740 ;
+C 85 ; WX 640 ; N U ; B 97 -15 722 740 ;
+C 86 ; WX 700 ; N V ; B 145 0 832 740 ;
+C 87 ; WX 900 ; N W ; B 144 0 1036 740 ;
+C 88 ; WX 680 ; N X ; B 4 0 813 740 ;
+C 89 ; WX 620 ; N Y ; B 135 0 759 740 ;
+C 90 ; WX 500 ; N Z ; B 19 0 599 740 ;
+C 91 ; WX 320 ; N bracketleft ; B 89 -157 424 754 ;
+C 92 ; WX 640 ; N backslash ; B 233 -100 525 740 ;
+C 93 ; WX 320 ; N bracketright ; B 7 -157 342 754 ;
+C 94 ; WX 600 ; N asciicircum ; B 142 375 596 740 ;
+C 95 ; WX 500 ; N underscore ; B -23 -125 486 -75 ;
+C 96 ; WX 280 ; N quoteleft ; B 158 466 341 740 ;
+C 97 ; WX 660 ; N a ; B 73 -18 716 574 ;
+C 98 ; WX 660 ; N b ; B 47 -18 689 740 ;
+C 99 ; WX 640 ; N c ; B 84 -18 679 574 ;
+C 100 ; WX 660 ; N d ; B 80 -18 755 740 ;
+C 101 ; WX 640 ; N e ; B 77 -18 667 577 ;
+C 102 ; WX 280 ; N f ; B 62 0 420 755 ; L i fi ; L l fl ;
+C 103 ; WX 660 ; N g ; B 33 -226 726 574 ;
+C 104 ; WX 600 ; N h ; B 54 0 614 740 ;
+C 105 ; WX 240 ; N i ; B 53 0 323 740 ;
+C 106 ; WX 260 ; N j ; B -18 -185 342 740 ;
+C 107 ; WX 580 ; N k ; B 80 0 648 740 ;
+C 108 ; WX 240 ; N l ; B 54 0 324 740 ;
+C 109 ; WX 940 ; N m ; B 54 0 954 574 ;
+C 110 ; WX 600 ; N n ; B 54 0 613 574 ;
+C 111 ; WX 640 ; N o ; B 71 -18 672 574 ;
+C 112 ; WX 660 ; N p ; B 13 -185 686 574 ;
+C 113 ; WX 660 ; N q ; B 78 -185 716 574 ;
+C 114 ; WX 320 ; N r ; B 63 0 423 574 ;
+C 115 ; WX 440 ; N s ; B 49 -18 483 574 ;
+C 116 ; WX 300 ; N t ; B 86 0 402 740 ;
+C 117 ; WX 600 ; N u ; B 87 -18 647 555 ;
+C 118 ; WX 560 ; N v ; B 106 0 659 555 ;
+C 119 ; WX 800 ; N w ; B 114 0 892 555 ;
+C 120 ; WX 560 ; N x ; B 3 0 632 555 ;
+C 121 ; WX 580 ; N y ; B 75 -185 674 555 ;
+C 122 ; WX 460 ; N z ; B 20 0 528 555 ;
+C 123 ; WX 340 ; N braceleft ; B 40 -191 455 747 ;
+C 124 ; WX 600 ; N bar ; B 214 -100 503 740 ;
+C 125 ; WX 340 ; N braceright ; B -12 -191 405 747 ;
+C 126 ; WX 600 ; N asciitilde ; B 114 160 579 347 ;
+C 161 ; WX 280 ; N exclamdown ; B 40 -185 310 555 ;
+C 162 ; WX 560 ; N cent ; B 110 39 599 715 ;
+C 163 ; WX 560 ; N sterling ; B 38 0 615 755 ;
+C 164 ; WX 160 ; N fraction ; B -123 0 419 740 ;
+C 165 ; WX 560 ; N yen ; B 83 0 707 740 ;
+C 166 ; WX 560 ; N florin ; B -27 -151 664 824 ;
+C 167 ; WX 560 ; N section ; B 65 -158 602 755 ;
+C 168 ; WX 560 ; N currency ; B 53 69 628 577 ;
+C 169 ; WX 220 ; N quotesingle ; B 152 444 314 740 ;
+C 170 ; WX 480 ; N quotedblleft ; B 156 466 546 740 ;
+C 171 ; WX 460 ; N guillemotleft ; B 105 108 487 469 ;
+C 172 ; WX 240 ; N guilsinglleft ; B 94 108 277 469 ;
+C 173 ; WX 240 ; N guilsinglright ; B 70 108 253 469 ;
+C 174 ; WX 520 ; N fi ; B 72 0 598 755 ;
+C 175 ; WX 520 ; N fl ; B 72 0 598 755 ;
+C 177 ; WX 500 ; N endash ; B 78 230 529 348 ;
+C 178 ; WX 560 ; N dagger ; B 133 -142 612 740 ;
+C 179 ; WX 560 ; N daggerdbl ; B 63 -142 618 740 ;
+C 180 ; WX 280 ; N periodcentered ; B 108 187 265 320 ;
+C 182 ; WX 600 ; N paragraph ; B 90 -103 744 740 ;
+C 183 ; WX 600 ; N bullet ; B 215 222 526 532 ;
+C 184 ; WX 280 ; N quotesinglbase ; B 47 -141 230 133 ;
+C 185 ; WX 480 ; N quotedblbase ; B 45 -141 435 133 ;
+C 186 ; WX 480 ; N quotedblright ; B 157 466 547 740 ;
+C 187 ; WX 460 ; N guillemotright ; B 81 108 463 469 ;
+C 188 ; WX 1000 ; N ellipsis ; B 100 0 924 133 ;
+C 189 ; WX 1280 ; N perthousand ; B 139 -15 1256 755 ;
+C 191 ; WX 560 ; N questiondown ; B 69 -200 527 555 ;
+C 193 ; WX 420 ; N grave ; B 189 624 462 851 ;
+C 194 ; WX 420 ; N acute ; B 224 624 508 849 ;
+C 195 ; WX 540 ; N circumflex ; B 189 636 588 774 ;
+C 196 ; WX 480 ; N tilde ; B 178 636 564 767 ;
+C 197 ; WX 420 ; N macron ; B 192 648 490 759 ;
+C 198 ; WX 480 ; N breve ; B 185 633 582 770 ;
+C 199 ; WX 280 ; N dotaccent ; B 192 636 350 769 ;
+C 200 ; WX 500 ; N dieresis ; B 196 636 565 769 ;
+C 202 ; WX 360 ; N ring ; B 206 619 424 834 ;
+C 203 ; WX 340 ; N cedilla ; B 67 -251 272 6 ;
+C 205 ; WX 700 ; N hungarumlaut ; B 258 610 754 862 ;
+C 206 ; WX 340 ; N ogonek ; B 59 -195 243 9 ;
+C 207 ; WX 540 ; N caron ; B 214 636 613 774 ;
+C 208 ; WX 1000 ; N emdash ; B 78 230 1029 348 ;
+C 225 ; WX 900 ; N AE ; B -5 0 961 740 ;
+C 227 ; WX 360 ; N ordfeminine ; B 127 438 472 755 ;
+C 232 ; WX 480 ; N Lslash ; B 68 0 484 740 ;
+C 233 ; WX 840 ; N Oslash ; B 94 -71 891 814 ;
+C 234 ; WX 1060 ; N OE ; B 98 -15 1144 755 ;
+C 235 ; WX 360 ; N ordmasculine ; B 131 438 451 755 ;
+C 241 ; WX 1080 ; N ae ; B 75 -18 1105 574 ;
+C 245 ; WX 240 ; N dotlessi ; B 53 0 289 555 ;
+C 248 ; WX 320 ; N lslash ; B 74 0 404 740 ;
+C 249 ; WX 660 ; N oslash ; B 81 -50 685 608 ;
+C 250 ; WX 1080 ; N oe ; B 76 -18 1108 574 ;
+C 251 ; WX 600 ; N germandbls ; B 51 -18 629 755 ;
+C -1 ; WX 640 ; N ecircumflex ; B 77 -18 667 774 ;
+C -1 ; WX 640 ; N edieresis ; B 77 -18 667 769 ;
+C -1 ; WX 660 ; N aacute ; B 73 -18 716 849 ;
+C -1 ; WX 740 ; N registered ; B 50 -12 827 752 ;
+C -1 ; WX 240 ; N icircumflex ; B 39 0 438 774 ;
+C -1 ; WX 600 ; N udieresis ; B 87 -18 647 769 ;
+C -1 ; WX 640 ; N ograve ; B 71 -18 672 851 ;
+C -1 ; WX 600 ; N uacute ; B 87 -18 647 849 ;
+C -1 ; WX 600 ; N ucircumflex ; B 87 -18 647 774 ;
+C -1 ; WX 740 ; N Aacute ; B 7 0 732 1019 ;
+C -1 ; WX 240 ; N igrave ; B 53 0 347 851 ;
+C -1 ; WX 280 ; N Icircumflex ; B 72 0 489 944 ;
+C -1 ; WX 640 ; N ccedilla ; B 83 -251 679 574 ;
+C -1 ; WX 660 ; N adieresis ; B 73 -18 716 769 ;
+C -1 ; WX 520 ; N Ecircumflex ; B 61 0 609 944 ;
+C -1 ; WX 440 ; N scaron ; B 49 -18 563 774 ;
+C -1 ; WX 660 ; N thorn ; B 13 -185 686 740 ;
+C -1 ; WX 1000 ; N trademark ; B 131 296 958 740 ;
+C -1 ; WX 640 ; N egrave ; B 77 -18 667 851 ;
+C -1 ; WX 336 ; N threesuperior ; B 87 287 413 749 ;
+C -1 ; WX 460 ; N zcaron ; B 20 0 598 774 ;
+C -1 ; WX 660 ; N atilde ; B 73 -18 716 767 ;
+C -1 ; WX 660 ; N aring ; B 73 -18 716 834 ;
+C -1 ; WX 640 ; N ocircumflex ; B 71 -18 672 774 ;
+C -1 ; WX 520 ; N Edieresis ; B 61 0 606 939 ;
+C -1 ; WX 840 ; N threequarters ; B 97 0 836 749 ;
+C -1 ; WX 580 ; N ydieresis ; B 75 -185 674 769 ;
+C -1 ; WX 580 ; N yacute ; B 75 -185 674 849 ;
+C -1 ; WX 240 ; N iacute ; B 53 0 443 849 ;
+C -1 ; WX 740 ; N Acircumflex ; B 7 0 732 944 ;
+C -1 ; WX 640 ; N Uacute ; B 97 -15 722 1019 ;
+C -1 ; WX 640 ; N eacute ; B 77 -18 667 849 ;
+C -1 ; WX 840 ; N Ograve ; B 95 -15 882 1021 ;
+C -1 ; WX 660 ; N agrave ; B 73 -18 716 851 ;
+C -1 ; WX 640 ; N Udieresis ; B 97 -15 722 939 ;
+C -1 ; WX 660 ; N acircumflex ; B 73 -18 716 774 ;
+C -1 ; WX 280 ; N Igrave ; B 72 0 398 1021 ;
+C -1 ; WX 336 ; N twosuperior ; B 73 296 436 749 ;
+C -1 ; WX 640 ; N Ugrave ; B 97 -15 722 1021 ;
+C -1 ; WX 840 ; N onequarter ; B 187 0 779 740 ;
+C -1 ; WX 640 ; N Ucircumflex ; B 97 -15 722 944 ;
+C -1 ; WX 520 ; N Scaron ; B 49 -15 635 944 ;
+C -1 ; WX 280 ; N Idieresis ; B 72 0 486 939 ;
+C -1 ; WX 240 ; N idieresis ; B 53 0 435 769 ;
+C -1 ; WX 520 ; N Egrave ; B 61 0 596 1021 ;
+C -1 ; WX 840 ; N Oacute ; B 95 -15 882 1019 ;
+C -1 ; WX 600 ; N divide ; B 84 -20 610 526 ;
+C -1 ; WX 740 ; N Atilde ; B 7 0 732 937 ;
+C -1 ; WX 740 ; N Aring ; B 7 0 732 969 ;
+C -1 ; WX 840 ; N Odieresis ; B 95 -15 882 939 ;
+C -1 ; WX 740 ; N Adieresis ; B 7 0 732 939 ;
+C -1 ; WX 740 ; N Ntilde ; B 70 0 808 937 ;
+C -1 ; WX 500 ; N Zcaron ; B 19 0 650 944 ;
+C -1 ; WX 560 ; N Thorn ; B 72 0 619 740 ;
+C -1 ; WX 280 ; N Iacute ; B 72 0 494 1019 ;
+C -1 ; WX 600 ; N plusminus ; B 37 -62 626 556 ;
+C -1 ; WX 600 ; N multiply ; B 76 12 617 494 ;
+C -1 ; WX 520 ; N Eacute ; B 61 0 596 1019 ;
+C -1 ; WX 620 ; N Ydieresis ; B 135 0 759 939 ;
+C -1 ; WX 336 ; N onesuperior ; B 182 296 360 740 ;
+C -1 ; WX 600 ; N ugrave ; B 87 -18 647 851 ;
+C -1 ; WX 600 ; N logicalnot ; B 105 108 631 425 ;
+C -1 ; WX 600 ; N ntilde ; B 54 0 624 767 ;
+C -1 ; WX 840 ; N Otilde ; B 95 -15 882 937 ;
+C -1 ; WX 640 ; N otilde ; B 71 -18 672 767 ;
+C -1 ; WX 780 ; N Ccedilla ; B 97 -251 864 755 ;
+C -1 ; WX 740 ; N Agrave ; B 7 0 732 1021 ;
+C -1 ; WX 840 ; N onehalf ; B 157 0 830 740 ;
+C -1 ; WX 742 ; N Eth ; B 83 0 766 740 ;
+C -1 ; WX 400 ; N degree ; B 160 426 451 712 ;
+C -1 ; WX 620 ; N Yacute ; B 135 0 759 1019 ;
+C -1 ; WX 840 ; N Ocircumflex ; B 95 -15 882 944 ;
+C -1 ; WX 640 ; N oacute ; B 71 -18 672 849 ;
+C -1 ; WX 576 ; N mu ; B 3 -187 642 555 ;
+C -1 ; WX 600 ; N minus ; B 84 193 610 313 ;
+C -1 ; WX 640 ; N eth ; B 73 -18 699 754 ;
+C -1 ; WX 640 ; N odieresis ; B 71 -18 672 769 ;
+C -1 ; WX 740 ; N copyright ; B 50 -12 827 752 ;
+C -1 ; WX 600 ; N brokenbar ; B 214 -100 503 740 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 218
+
+KPX A y -50
+KPX A w -65
+KPX A v -70
+KPX A u -20
+KPX A quoteright -90
+KPX A Y -80
+KPX A W -60
+KPX A V -102
+KPX A U -40
+KPX A T -25
+KPX A Q -50
+KPX A O -50
+KPX A G -40
+KPX A C -40
+
+KPX B A -10
+
+KPX C A -40
+
+KPX D period -20
+KPX D comma -20
+KPX D Y -45
+KPX D W -25
+KPX D V -50
+KPX D A -50
+
+KPX F period -129
+KPX F e -20
+KPX F comma -162
+KPX F a -20
+KPX F A -75
+
+KPX G period -20
+KPX G comma -20
+KPX G Y -15
+
+KPX J period -15
+KPX J a -20
+KPX J A -30
+
+KPX K y -20
+KPX K u -15
+KPX K o -45
+KPX K e -40
+KPX K O -30
+
+KPX L y -23
+KPX L quoteright -30
+KPX L quotedblright -30
+KPX L Y -80
+KPX L W -55
+KPX L V -85
+KPX L T -46
+
+KPX O period -30
+KPX O comma -30
+KPX O Y -30
+KPX O X -30
+KPX O W -20
+KPX O V -45
+KPX O T -15
+KPX O A -60
+
+KPX P period -200
+KPX P o -20
+KPX P e -20
+KPX P comma -220
+KPX P a -20
+KPX P A -100
+
+KPX Q comma 20
+
+KPX R W 25
+KPX R V -10
+KPX R U 25
+KPX R T 40
+KPX R O 25
+
+KPX S comma 20
+
+KPX T y -10
+KPX T w -55
+KPX T u -46
+KPX T semicolon -29
+KPX T r -30
+KPX T period -91
+KPX T o -49
+KPX T hyphen -75
+KPX T e -49
+KPX T comma -82
+KPX T colon -15
+KPX T a -70
+KPX T O -15
+KPX T A -25
+
+KPX U period -20
+KPX U comma -20
+KPX U A -40
+
+KPX V u -55
+KPX V semicolon -33
+KPX V period -145
+KPX V o -101
+KPX V i -15
+KPX V hyphen -75
+KPX V e -101
+KPX V comma -145
+KPX V colon -18
+KPX V a -95
+KPX V O -45
+KPX V G -20
+KPX V A -102
+
+KPX W y -15
+KPX W u -30
+KPX W semicolon -33
+KPX W period -106
+KPX W o -46
+KPX W i -10
+KPX W hyphen -35
+KPX W e -47
+KPX W comma -106
+KPX W colon -15
+KPX W a -50
+KPX W O -20
+KPX W A -58
+
+KPX Y u -52
+KPX Y semicolon -23
+KPX Y period -145
+KPX Y o -89
+KPX Y hyphen -100
+KPX Y e -89
+KPX Y comma -145
+KPX Y colon -10
+KPX Y a -93
+KPX Y O -30
+KPX Y A -80
+
+KPX a t 5
+KPX a p 20
+KPX a b 5
+
+KPX b y -20
+KPX b v -20
+
+KPX c y -20
+KPX c l -15
+KPX c k -15
+
+KPX comma space -50
+KPX comma quoteright -70
+KPX comma quotedblright -70
+
+KPX e y -20
+KPX e x -20
+KPX e w -20
+KPX e v -20
+
+KPX f period -40
+KPX f o -20
+KPX f l -15
+KPX f i -15
+KPX f f -20
+KPX f dotlessi -15
+KPX f comma -40
+KPX f a -15
+
+KPX g i 25
+KPX g a 15
+
+KPX h y -30
+
+KPX k y -5
+KPX k o -30
+KPX k e -40
+
+KPX m y -20
+KPX m u -20
+
+KPX n y -15
+KPX n v -30
+
+KPX o y -20
+KPX o x -30
+KPX o w -20
+KPX o v -30
+
+KPX p y -20
+
+KPX period space -50
+KPX period quoteright -70
+KPX period quotedblright -70
+
+KPX quotedblleft A -50
+
+KPX quotedblright space -50
+
+KPX quoteleft quoteleft -80
+KPX quoteleft A -50
+
+KPX quoteright v -10
+KPX quoteright t 10
+KPX quoteright space -50
+KPX quoteright s -15
+KPX quoteright r -20
+KPX quoteright quoteright -80
+KPX quoteright d -50
+
+KPX r y 40
+KPX r v 40
+KPX r u 20
+KPX r t 20
+KPX r s 20
+KPX r q -8
+KPX r period -73
+KPX r p 20
+KPX r o -15
+KPX r n 21
+KPX r m 15
+KPX r l 20
+KPX r k 5
+KPX r i 20
+KPX r hyphen -60
+KPX r g 1
+KPX r e -4
+KPX r d -6
+KPX r comma -75
+KPX r c -7
+
+KPX s period 20
+KPX s comma 20
+
+KPX space quoteleft -50
+KPX space quotedblleft -50
+KPX space Y -60
+KPX space W -25
+KPX space V -80
+KPX space T -25
+KPX space A -20
+
+KPX v period -90
+KPX v o -20
+KPX v e -20
+KPX v comma -90
+KPX v a -30
+
+KPX w period -90
+KPX w o -30
+KPX w e -20
+KPX w comma -90
+KPX w a -30
+
+KPX x e -20
+
+KPX y period -100
+KPX y o -30
+KPX y e -20
+KPX y comma -100
+KPX y c -35
+KPX y a -30
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 192 170 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 132 170 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 152 170 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 192 170 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 215 135 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 162 170 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 82 170 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 22 170 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 42 170 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 82 170 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute -13 170 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex -98 170 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis -78 170 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave -63 170 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 162 170 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 242 170 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 182 170 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 202 170 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 242 170 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 212 170 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 22 170 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 177 170 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 82 170 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 102 170 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 107 170 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 167 170 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 92 170 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 37 170 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 120 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 60 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 80 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 120 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 150 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 90 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 110 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 50 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 70 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 110 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -65 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -150 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -130 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -115 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 60 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 110 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 50 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 70 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 110 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 80 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron -50 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 125 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 30 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 50 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 55 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 115 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 40 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron -15 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/AG-DmO+ b/font/font/AG-DmO+
new file mode 100644
index 0000000..5920f33
--- /dev/null
+++ b/font/font/AG-DmO+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 780 ; N Ccaron ; B 97 -15 864 946 ;
+C -1 ; WX 640 ; N ccaron ; B 84 -18 693 774 ;
+C -1 ; WX 700 ; N Dcaron ; B 63 0 732 946 ;
+C -1 ; WX 788 ; N dcaron ; B 80 -18 956 814 ;
+C -1 ; WX 520 ; N Ecaron ; B 61 0 633 946 ;
+C -1 ; WX 640 ; N ecaron ; B 77 -18 667 774 ;
+C -1 ; WX 440 ; N Lcaron ; B 72 0 547 814 ;
+C -1 ; WX 440 ; N Lacute ; B 72 0 550 1033 ;
+C -1 ; WX 368 ; N lcaron ; B 54 0 525 814 ;
+C -1 ; WX 240 ; N lacute ; B 54 0 478 1033 ;
+C -1 ; WX 740 ; N Ncaron ; B 70 0 808 946 ;
+C -1 ; WX 600 ; N ncaron ; B 54 0 643 774 ;
+C -1 ; WX 580 ; N Rcaron ; B 64 0 663 946 ;
+C -1 ; WX 580 ; N Racute ; B 64 0 674 1033 ;
+C -1 ; WX 320 ; N rcaron ; B 63 0 503 774 ;
+C -1 ; WX 320 ; N racute ; B 63 0 486 849 ;
+C -1 ; WX 420 ; N Tcaron ; B 119 0 583 946 ;
+C -1 ; WX 428 ; N tcaron ; B 86 0 603 740 ;
+C -1 ; WX 640 ; N Uring ; B 97 -15 722 946 ;
+C -1 ; WX 600 ; N uring ; B 87 -18 647 834 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 227 172 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 80 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 110 172 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 614 74 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 20 172 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 50 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 205 74 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 42 184 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 183 74 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute -30 184 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 130 172 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 30 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 50 172 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 166 184 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron -110 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute -22 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron -30 172 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 261 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 159 112 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 120 0 ;
+EndBuildComposites
diff --git a/font/font/AG-ExLt b/font/font/AG-ExLt
new file mode 100644
index 0000000..3532238
--- /dev/null
+++ b/font/font/AG-ExLt
@@ -0,0 +1,532 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1991 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Tue Feb 19 17:51:09 1991
+Comment UniqueID 34220
+Comment VMusage 24528 31420
+FontName AvantGarde-ExtraLight
+FullName ITC Avant Garde Gothic Extra Light
+FamilyName ITC Avant Garde Gothic
+Weight ExtraLight
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -137 -274 1117 951
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.000
+Notice Copyright (c) 1991 Adobe Systems Incorporated. All Rights Reserved.ITC Avant Garde Gothic is a registered trademark of International Typeface Corporation.
+EncodingScheme AdobeStandardEncoding
+CapHeight 740
+XHeight 530
+Ascender 740
+Descender -213
+StartCharMetrics 228
+C 32 ; WX 277 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 259 ; N exclam ; B 115 0 145 740 ;
+C 34 ; WX 333 ; N quotedbl ; B 94 444 239 740 ;
+C 35 ; WX 555 ; N numbersign ; B 18 31 537 675 ;
+C 36 ; WX 555 ; N dollar ; B 83 -57 473 810 ;
+C 37 ; WX 719 ; N percent ; B 22 -13 697 753 ;
+C 38 ; WX 721 ; N ampersand ; B 55 -13 699 753 ;
+C 39 ; WX 277 ; N quoteright ; B 90 586 187 740 ;
+C 40 ; WX 425 ; N parenleft ; B 103 -274 393 753 ;
+C 41 ; WX 425 ; N parenright ; B 32 -274 322 753 ;
+C 42 ; WX 573 ; N asterisk ; B 151 444 423 740 ;
+C 43 ; WX 600 ; N plus ; B 50 0 550 501 ;
+C 44 ; WX 277 ; N comma ; B 61 -72 156 82 ;
+C 45 ; WX 266 ; N hyphen ; B 0 262 266 291 ;
+C 46 ; WX 277 ; N period ; B 124 0 154 81 ;
+C 47 ; WX 518 ; N slash ; B 67 -100 451 740 ;
+C 48 ; WX 555 ; N zero ; B 39 -13 515 753 ;
+C 49 ; WX 555 ; N one ; B 111 0 305 740 ;
+C 50 ; WX 555 ; N two ; B 57 0 504 753 ;
+C 51 ; WX 555 ; N three ; B 39 -13 492 753 ;
+C 52 ; WX 555 ; N four ; B 17 0 509 740 ;
+C 53 ; WX 555 ; N five ; B 21 -13 515 740 ;
+C 54 ; WX 555 ; N six ; B 33 -13 521 740 ;
+C 55 ; WX 555 ; N seven ; B 87 0 480 740 ;
+C 56 ; WX 555 ; N eight ; B 52 -13 502 753 ;
+C 57 ; WX 555 ; N nine ; B 34 0 522 753 ;
+C 58 ; WX 277 ; N colon ; B 124 0 154 530 ;
+C 59 ; WX 277 ; N semicolon ; B 61 -72 156 530 ;
+C 60 ; WX 600 ; N less ; B 50 0 550 502 ;
+C 61 ; WX 600 ; N equal ; B 50 139 550 361 ;
+C 62 ; WX 600 ; N greater ; B 50 0 550 502 ;
+C 63 ; WX 536 ; N question ; B 40 0 467 752 ;
+C 64 ; WX 796 ; N at ; B 41 -13 768 753 ;
+C 65 ; WX 687 ; N A ; B 7 0 680 740 ;
+C 66 ; WX 540 ; N B ; B 77 0 497 740 ;
+C 67 ; WX 786 ; N C ; B 41 -13 749 753 ;
+C 68 ; WX 701 ; N D ; B 77 0 659 740 ;
+C 69 ; WX 547 ; N E ; B 77 0 483 740 ;
+C 70 ; WX 477 ; N F ; B 77 0 440 740 ;
+C 71 ; WX 853 ; N G ; B 41 -13 819 753 ;
+C 72 ; WX 628 ; N H ; B 77 0 551 740 ;
+C 73 ; WX 185 ; N I ; B 77 0 107 740 ;
+C 74 ; WX 453 ; N J ; B 6 -13 377 740 ;
+C 75 ; WX 536 ; N K ; B 91 0 536 740 ;
+C 76 ; WX 423 ; N L ; B 77 0 420 740 ;
+C 77 ; WX 933 ; N M ; B 77 0 855 740 ;
+C 78 ; WX 738 ; N N ; B 77 0 661 740 ;
+C 79 ; WX 851 ; N O ; B 41 -13 809 753 ;
+C 80 ; WX 511 ; N P ; B 67 0 499 740 ;
+C 81 ; WX 882 ; N Q ; B 56 -13 885 753 ;
+C 82 ; WX 554 ; N R ; B 67 0 540 740 ;
+C 83 ; WX 518 ; N S ; B 45 -13 474 752 ;
+C 84 ; WX 443 ; N T ; B 5 0 437 740 ;
+C 85 ; WX 605 ; N U ; B 76 -13 529 740 ;
+C 86 ; WX 666 ; N V ; B 7 0 659 740 ;
+C 87 ; WX 888 ; N W ; B 12 0 876 740 ;
+C 88 ; WX 555 ; N X ; B 8 0 547 740 ;
+C 89 ; WX 554 ; N Y ; B 15 0 539 740 ;
+C 90 ; WX 499 ; N Z ; B 6 0 493 740 ;
+C 91 ; WX 425 ; N bracketleft ; B 178 -272 344 753 ;
+C 92 ; WX 518 ; N backslash ; B 67 -100 451 740 ;
+C 93 ; WX 425 ; N bracketright ; B 81 -272 247 753 ;
+C 94 ; WX 600 ; N asciicircum ; B 112 375 488 740 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 277 ; N quoteleft ; B 90 586 187 740 ;
+C 97 ; WX 674 ; N a ; B 41 -13 596 543 ;
+C 98 ; WX 674 ; N b ; B 78 -13 633 740 ;
+C 99 ; WX 619 ; N c ; B 41 -13 584 543 ;
+C 100 ; WX 677 ; N d ; B 41 -13 596 740 ;
+C 101 ; WX 619 ; N e ; B 31 -13 589 543 ;
+C 102 ; WX 263 ; N f ; B 7 0 260 753 ; L i fi ; L l fl ;
+C 103 ; WX 675 ; N g ; B 40 -226 598 543 ;
+C 104 ; WX 640 ; N h ; B 78 0 564 740 ;
+C 105 ; WX 184 ; N i ; B 78 0 106 740 ;
+C 106 ; WX 219 ; N j ; B -14 -213 123 740 ;
+C 107 ; WX 467 ; N k ; B 78 0 451 740 ;
+C 108 ; WX 183 ; N l ; B 78 0 106 740 ;
+C 109 ; WX 949 ; N m ; B 78 0 874 543 ;
+C 110 ; WX 641 ; N n ; B 78 0 564 543 ;
+C 111 ; WX 641 ; N o ; B 41 -13 599 543 ;
+C 112 ; WX 677 ; N p ; B 78 -213 633 543 ;
+C 113 ; WX 674 ; N q ; B 41 -213 596 543 ;
+C 114 ; WX 302 ; N r ; B 78 0 293 543 ;
+C 115 ; WX 426 ; N s ; B 48 -13 366 543 ;
+C 116 ; WX 296 ; N t ; B 7 0 288 740 ;
+C 117 ; WX 641 ; N u ; B 78 -13 564 530 ;
+C 118 ; WX 481 ; N v ; B 4 0 476 530 ;
+C 119 ; WX 758 ; N w ; B 10 0 749 530 ;
+C 120 ; WX 407 ; N x ; B 10 0 397 530 ;
+C 121 ; WX 481 ; N y ; B 11 -213 480 530 ;
+C 122 ; WX 407 ; N z ; B 12 0 394 530 ;
+C 123 ; WX 425 ; N braceleft ; B 115 -272 344 753 ;
+C 124 ; WX 555 ; N bar ; B 263 -100 293 740 ;
+C 125 ; WX 425 ; N braceright ; B 81 -272 310 753 ;
+C 126 ; WX 600 ; N asciitilde ; B 76 200 523 301 ;
+C 161 ; WX 259 ; N exclamdown ; B 115 -209 145 531 ;
+C 162 ; WX 555 ; N cent ; B 68 39 488 687 ;
+C 163 ; WX 555 ; N sterling ; B 6 0 545 752 ;
+C 164 ; WX 86 ; N fraction ; B -137 0 222 740 ;
+C 165 ; WX 555 ; N yen ; B 32 0 524 740 ;
+C 166 ; WX 555 ; N florin ; B 15 -152 542 813 ;
+C 167 ; WX 573 ; N section ; B 60 -223 513 753 ;
+C 168 ; WX 555 ; N currency ; B 39 105 515 579 ;
+C 169 ; WX 222 ; N quotesingle ; B 96 444 126 740 ;
+C 170 ; WX 370 ; N quotedblleft ; B 92 586 278 740 ;
+C 171 ; WX 351 ; N guillemotleft ; B 49 84 291 469 ;
+C 172 ; WX 248 ; N guilsinglleft ; B 53 84 184 469 ;
+C 173 ; WX 248 ; N guilsinglright ; B 64 84 195 469 ;
+C 174 ; WX 393 ; N fi ; B 7 0 315 753 ;
+C 175 ; WX 393 ; N fl ; B 7 0 315 753 ;
+C 177 ; WX 500 ; N endash ; B 35 262 465 291 ;
+C 178 ; WX 573 ; N dagger ; B 83 -100 491 740 ;
+C 179 ; WX 573 ; N daggerdbl ; B 83 -100 491 740 ;
+C 180 ; WX 277 ; N periodcentered ; B 124 215 154 296 ;
+C 182 ; WX 561 ; N paragraph ; B 12 -126 492 740 ;
+C 183 ; WX 375 ; N bullet ; B 35 222 340 532 ;
+C 184 ; WX 277 ; N quotesinglbase ; B 90 -72 187 82 ;
+C 185 ; WX 370 ; N quotedblbase ; B 92 -72 278 82 ;
+C 186 ; WX 370 ; N quotedblright ; B 92 586 278 740 ;
+C 187 ; WX 351 ; N guillemotright ; B 60 84 302 469 ;
+C 188 ; WX 1000 ; N ellipsis ; B 152 0 848 82 ;
+C 189 ; WX 1089 ; N perthousand ; B 20 -13 1070 753 ;
+C 191 ; WX 536 ; N questiondown ; B 69 -222 496 530 ;
+C 193 ; WX 555 ; N grave ; B 144 605 395 766 ;
+C 194 ; WX 555 ; N acute ; B 160 605 411 766 ;
+C 195 ; WX 555 ; N circumflex ; B 82 623 473 748 ;
+C 196 ; WX 555 ; N tilde ; B 96 633 458 714 ;
+C 197 ; WX 555 ; N macron ; B 99 660 455 690 ;
+C 198 ; WX 555 ; N breve ; B 86 634 469 716 ;
+C 199 ; WX 555 ; N dotaccent ; B 262 618 293 734 ;
+C 200 ; WX 555 ; N dieresis ; B 203 618 352 734 ;
+C 202 ; WX 555 ; N ring ; B 186 595 369 777 ;
+C 203 ; WX 555 ; N cedilla ; B 204 -201 351 0 ;
+C 205 ; WX 555 ; N hungarumlaut ; B 144 605 497 788 ;
+C 206 ; WX 555 ; N ogonek ; B 197 -206 357 0 ;
+C 207 ; WX 555 ; N caron ; B 82 623 473 748 ;
+C 208 ; WX 1000 ; N emdash ; B 35 262 965 291 ;
+C 225 ; WX 944 ; N AE ; B -8 0 870 740 ;
+C 227 ; WX 439 ; N ordfeminine ; B 26 404 388 753 ;
+C 232 ; WX 423 ; N Lslash ; B 0 0 424 740 ;
+C 233 ; WX 851 ; N Oslash ; B 41 -86 809 809 ;
+C 234 ; WX 1178 ; N OE ; B 41 -13 1117 753 ;
+C 235 ; WX 439 ; N ordmasculine ; B 44 404 395 753 ;
+C 241 ; WX 1154 ; N ae ; B 41 -13 1113 543 ;
+C 245 ; WX 184 ; N dotlessi ; B 78 0 106 530 ;
+C 248 ; WX 219 ; N lslash ; B 16 0 220 740 ;
+C 249 ; WX 641 ; N oslash ; B 41 -52 599 585 ;
+C 250 ; WX 1156 ; N oe ; B 41 -13 1116 543 ;
+C 251 ; WX 559 ; N germandbls ; B 76 -13 517 752 ;
+C -1 ; WX 619 ; N ecircumflex ; B 31 -13 589 748 ;
+C -1 ; WX 619 ; N edieresis ; B 31 -13 589 734 ;
+C -1 ; WX 674 ; N aacute ; B 41 -13 596 766 ;
+C -1 ; WX 800 ; N registered ; B 18 -11 781 751 ;
+C -1 ; WX 184 ; N icircumflex ; B -103 0 288 748 ;
+C -1 ; WX 641 ; N udieresis ; B 78 -13 564 734 ;
+C -1 ; WX 641 ; N ograve ; B 41 -13 599 766 ;
+C -1 ; WX 641 ; N uacute ; B 78 -13 564 766 ;
+C -1 ; WX 641 ; N ucircumflex ; B 78 -13 564 748 ;
+C -1 ; WX 687 ; N Aacute ; B 7 0 680 951 ;
+C -1 ; WX 184 ; N igrave ; B -61 0 190 766 ;
+C -1 ; WX 185 ; N Icircumflex ; B -103 0 288 933 ;
+C -1 ; WX 619 ; N ccedilla ; B 41 -201 584 543 ;
+C -1 ; WX 674 ; N adieresis ; B 41 -13 596 734 ;
+C -1 ; WX 547 ; N Ecircumflex ; B 77 0 483 933 ;
+C -1 ; WX 426 ; N scaron ; B 18 -13 409 748 ;
+C -1 ; WX 681 ; N thorn ; B 78 -213 639 740 ;
+C -1 ; WX 990 ; N trademark ; B 9 296 838 740 ;
+C -1 ; WX 619 ; N egrave ; B 31 -13 589 766 ;
+C -1 ; WX 351 ; N threesuperior ; B 33 288 311 748 ;
+C -1 ; WX 407 ; N zcaron ; B 8 0 399 748 ;
+C -1 ; WX 674 ; N atilde ; B 41 -13 596 714 ;
+C -1 ; WX 674 ; N aring ; B 41 -13 596 775 ;
+C -1 ; WX 641 ; N ocircumflex ; B 41 -13 599 748 ;
+C -1 ; WX 547 ; N Edieresis ; B 77 0 483 919 ;
+C -1 ; WX 807 ; N threequarters ; B 40 0 765 748 ;
+C -1 ; WX 481 ; N ydieresis ; B 11 -213 480 734 ;
+C -1 ; WX 481 ; N yacute ; B 11 -213 480 766 ;
+C -1 ; WX 184 ; N iacute ; B -5 0 246 766 ;
+C -1 ; WX 687 ; N Acircumflex ; B 7 0 680 933 ;
+C -1 ; WX 605 ; N Uacute ; B 76 -13 529 951 ;
+C -1 ; WX 619 ; N eacute ; B 31 -13 589 766 ;
+C -1 ; WX 851 ; N Ograve ; B 41 -13 809 951 ;
+C -1 ; WX 674 ; N agrave ; B 41 -13 596 766 ;
+C -1 ; WX 605 ; N Udieresis ; B 76 -13 529 919 ;
+C -1 ; WX 674 ; N acircumflex ; B 41 -13 596 748 ;
+C -1 ; WX 185 ; N Igrave ; B -61 0 190 951 ;
+C -1 ; WX 351 ; N twosuperior ; B 36 296 307 748 ;
+C -1 ; WX 605 ; N Ugrave ; B 76 -13 529 951 ;
+C -1 ; WX 700 ; N onequarter ; B 44 0 657 740 ;
+C -1 ; WX 605 ; N Ucircumflex ; B 76 -13 529 933 ;
+C -1 ; WX 518 ; N Scaron ; B 45 -13 474 933 ;
+C -1 ; WX 185 ; N Idieresis ; B 18 0 167 919 ;
+C -1 ; WX 184 ; N idieresis ; B 18 0 167 734 ;
+C -1 ; WX 547 ; N Egrave ; B 77 0 483 951 ;
+C -1 ; WX 851 ; N Oacute ; B 41 -13 809 951 ;
+C -1 ; WX 600 ; N divide ; B 50 0 550 500 ;
+C -1 ; WX 687 ; N Atilde ; B 7 0 680 909 ;
+C -1 ; WX 687 ; N Aring ; B 7 0 680 937 ;
+C -1 ; WX 851 ; N Odieresis ; B 41 -13 809 919 ;
+C -1 ; WX 687 ; N Adieresis ; B 7 0 680 919 ;
+C -1 ; WX 738 ; N Ntilde ; B 77 0 661 909 ;
+C -1 ; WX 499 ; N Zcaron ; B 6 0 493 933 ;
+C -1 ; WX 511 ; N Thorn ; B 67 0 499 740 ;
+C -1 ; WX 185 ; N Iacute ; B -5 0 246 951 ;
+C -1 ; WX 600 ; N plusminus ; B 48 0 552 506 ;
+C -1 ; WX 600 ; N multiply ; B 50 2 550 499 ;
+C -1 ; WX 547 ; N Eacute ; B 77 0 483 951 ;
+C -1 ; WX 554 ; N Ydieresis ; B 15 0 539 919 ;
+C -1 ; WX 351 ; N onesuperior ; B 74 296 197 740 ;
+C -1 ; WX 641 ; N ugrave ; B 78 -13 564 766 ;
+C -1 ; WX 600 ; N logicalnot ; B 50 139 550 361 ;
+C -1 ; WX 641 ; N ntilde ; B 78 0 564 714 ;
+C -1 ; WX 851 ; N Otilde ; B 41 -13 809 909 ;
+C -1 ; WX 641 ; N otilde ; B 41 -13 599 714 ;
+C -1 ; WX 786 ; N Ccedilla ; B 41 -201 749 753 ;
+C -1 ; WX 687 ; N Agrave ; B 7 0 680 951 ;
+C -1 ; WX 750 ; N onehalf ; B 44 0 707 740 ;
+C -1 ; WX 701 ; N Eth ; B 0 0 659 740 ;
+C -1 ; WX 400 ; N degree ; B 57 423 343 709 ;
+C -1 ; WX 554 ; N Yacute ; B 15 0 539 951 ;
+C -1 ; WX 851 ; N Ocircumflex ; B 41 -13 809 933 ;
+C -1 ; WX 641 ; N oacute ; B 41 -13 599 766 ;
+C -1 ; WX 561 ; N mu ; B 73 -181 484 530 ;
+C -1 ; WX 600 ; N minus ; B 50 236 550 264 ;
+C -1 ; WX 641 ; N eth ; B 41 -13 600 740 ;
+C -1 ; WX 641 ; N odieresis ; B 41 -13 599 734 ;
+C -1 ; WX 800 ; N copyright ; B 18 -11 781 751 ;
+C -1 ; WX 555 ; N brokenbar ; B 263 -100 293 740 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 181
+
+KPX A y -25
+KPX A w -30
+KPX A v -35
+KPX A quoteright -40
+KPX A quotedblright -40
+KPX A Y -92
+KPX A W -50
+KPX A V -90
+KPX A U -15
+KPX A T -71
+KPX A Q -15
+KPX A O -15
+KPX A G -18
+KPX A C -15
+
+KPX D period -70
+KPX D comma -80
+KPX D Y -30
+KPX D V -20
+KPX D A -35
+
+KPX F period -200
+KPX F o -15
+KPX F e -15
+KPX F comma -200
+KPX F a -15
+KPX F A -60
+
+KPX G period -30
+KPX G comma -40
+
+KPX J period -10
+KPX J comma -10
+
+KPX K y 5
+
+KPX L y -18
+KPX L quoteright -40
+KPX L quotedblright -40
+KPX L Y -91
+KPX L W -50
+KPX L V -113
+KPX L T -55
+
+KPX O period -40
+KPX O comma -30
+KPX O Y -30
+KPX O X -15
+KPX O V -30
+KPX O T -20
+KPX O A -30
+
+KPX P period -200
+KPX P comma -200
+KPX P A -74
+
+KPX R W 20
+KPX R V 10
+KPX R U 20
+KPX R T 6
+KPX R O 30
+
+KPX T y -10
+KPX T w -70
+KPX T u -100
+KPX T semicolon -100
+KPX T r -40
+KPX T period -122
+KPX T o -70
+KPX T hyphen -100
+KPX T h -10
+KPX T e -71
+KPX T comma -122
+KPX T colon -90
+KPX T a -85
+KPX T O -20
+KPX T A -81
+
+KPX U period -8
+KPX U comma -8
+KPX U A -10
+
+KPX V u -55
+KPX V semicolon -47
+KPX V period -160
+KPX V o -101
+KPX V i -10
+KPX V hyphen -85
+KPX V e -101
+KPX V comma -160
+KPX V colon -47
+KPX V a -104
+KPX V O -18
+KPX V G -15
+KPX V A -90
+
+KPX W y -2
+KPX W u -30
+KPX W semicolon -33
+KPX W period -106
+KPX W o -46
+KPX W hyphen -55
+KPX W e -47
+KPX W comma -106
+KPX W colon -1
+KPX W a -50
+KPX W A -50
+
+KPX Y u -79
+KPX Y semicolon -48
+KPX Y period -117
+KPX Y o -99
+KPX Y hyphen -135
+KPX Y e -99
+KPX Y comma -117
+KPX Y colon -24
+KPX Y a -100
+KPX Y O -30
+KPX Y A -92
+
+KPX a y 20
+KPX a b 6
+
+KPX b period -15
+KPX b comma -15
+
+KPX c y 15
+
+KPX comma space -30
+KPX comma quoteright -120
+KPX comma quotedblright -120
+
+KPX d y 15
+
+KPX f quoteright 10
+KPX f quotedblright 10
+KPX f period -30
+KPX f o -18
+KPX f l -50
+KPX f i -50
+KPX f f -50
+KPX f e -30
+KPX f dotlessi -50
+KPX f comma -30
+KPX f a -15
+
+KPX g period -10
+KPX g comma -10
+
+KPX m y -15
+KPX m u -20
+
+KPX n y -15
+KPX n u -20
+
+KPX o period -18
+KPX o comma -18
+
+KPX p period -18
+KPX p comma -18
+
+KPX period space -30
+KPX period quoteright -150
+KPX period quotedblright -120
+
+KPX quotedblleft A -40
+
+KPX quotedblright space -70
+
+KPX quoteleft quoteleft -188
+KPX quoteleft A -40
+
+KPX quoteright v -20
+KPX quoteright t 25
+KPX quoteright space -40
+KPX quoteright s -40
+KPX quoteright r -30
+KPX quoteright quoteright -188
+KPX quoteright d -60
+
+KPX r y 50
+KPX r v 20
+KPX r t 40
+KPX r q -15
+KPX r period -85
+KPX r o -55
+KPX r n 21
+KPX r l 10
+KPX r hyphen -45
+KPX r g -35
+KPX r e -50
+KPX r d -40
+KPX r comma -85
+KPX r c -55
+KPX r a -55
+
+KPX s w -12
+
+KPX space quoteleft -20
+KPX space quotedblleft -70
+KPX space Y -75
+KPX space W -40
+KPX space V -65
+KPX space T -50
+KPX space A -20
+
+KPX v period -75
+KPX v comma -75
+
+KPX w period -75
+KPX w comma -75
+
+KPX y period -75
+KPX y o -12
+KPX y e -12
+KPX y comma -75
+KPX y a -12
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 66 185 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 66 185 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 66 185 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 66 185 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 66 160 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 66 195 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute -4 185 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex -4 185 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis -4 185 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave -4 185 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute -165 185 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex -185 185 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis -185 185 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave -205 185 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 92 195 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 148 185 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 148 185 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 148 185 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 148 185 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 148 195 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron -18 185 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 25 185 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 25 185 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 25 185 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 25 185 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 0 185 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 0 185 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron -33 185 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 55 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 60 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 60 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 60 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 60 -2 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 60 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 27 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 32 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 27 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 32 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -165 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -185 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -185 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -205 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 43 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 38 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 43 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 43 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 43 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 43 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron -64 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 43 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 43 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 43 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 43 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute -37 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis -37 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron -74 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/AG-ExLt+ b/font/font/AG-ExLt+
new file mode 100644
index 0000000..d9e5c75
--- /dev/null
+++ b/font/font/AG-ExLt+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 786 ; N Ccaron ; B 41 -13 749 933 ;
+C -1 ; WX 619 ; N ccaron ; B 41 -13 584 748 ;
+C -1 ; WX 701 ; N Dcaron ; B 77 0 659 933 ;
+C -1 ; WX 745 ; N dcaron ; B 41 -13 703 814 ;
+C -1 ; WX 547 ; N Ecaron ; B 77 0 483 933 ;
+C -1 ; WX 619 ; N ecaron ; B 31 -13 589 748 ;
+C -1 ; WX 423 ; N Lcaron ; B 77 0 420 814 ;
+C -1 ; WX 423 ; N Lacute ; B 77 0 420 969 ;
+C -1 ; WX 251 ; N lcaron ; B 78 0 213 814 ;
+C -1 ; WX 183 ; N lacute ; B -1 0 250 969 ;
+C -1 ; WX 738 ; N Ncaron ; B 77 0 661 933 ;
+C -1 ; WX 641 ; N ncaron ; B 78 0 564 748 ;
+C -1 ; WX 554 ; N Rcaron ; B 67 0 540 933 ;
+C -1 ; WX 554 ; N Racute ; B 67 0 540 969 ;
+C -1 ; WX 302 ; N rcaron ; B -44 0 347 748 ;
+C -1 ; WX 302 ; N racute ; B 59 0 310 766 ;
+C -1 ; WX 443 ; N Tcaron ; B 5 0 437 933 ;
+C -1 ; WX 364 ; N tcaron ; B 7 0 395 740 ;
+C -1 ; WX 605 ; N Uring ; B 76 -13 529 933 ;
+C -1 ; WX 641 ; N uring ; B 78 -13 564 777 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 186 185 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 59 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 73 185 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 516 74 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron -4 185 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 32 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 27 74 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute -66 203 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 26 74 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute -161 203 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 91 185 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 43 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 0 185 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 48 203 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron -126 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute -101 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron -56 185 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 208 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 25 156 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 43 0 ;
+EndBuildComposites
diff --git a/font/font/AG-ExLtO b/font/font/AG-ExLtO
new file mode 100644
index 0000000..bb4cd36
--- /dev/null
+++ b/font/font/AG-ExLtO
@@ -0,0 +1,532 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1991 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Tue Feb 19 17:55:54 1991
+Comment UniqueID 34223
+Comment VMusage 6276 39140
+FontName AvantGarde-ExtraLightObl
+FullName ITC Avant Garde Gothic Extra Light Oblique
+FamilyName ITC Avant Garde Gothic
+Weight ExtraLight
+ItalicAngle -10.5
+IsFixedPitch false
+FontBBox -137 -274 1254 951
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.000
+Notice Copyright (c) 1991 Adobe Systems Incorporated. All Rights Reserved.ITC Avant Garde Gothic is a registered trademark of International Typeface Corporation.
+EncodingScheme AdobeStandardEncoding
+CapHeight 740
+XHeight 530
+Ascender 740
+Descender -213
+StartCharMetrics 228
+C 32 ; WX 277 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 259 ; N exclam ; B 115 0 282 740 ;
+C 34 ; WX 333 ; N quotedbl ; B 176 444 376 740 ;
+C 35 ; WX 555 ; N numbersign ; B 68 31 621 675 ;
+C 36 ; WX 555 ; N dollar ; B 123 -57 563 810 ;
+C 37 ; WX 719 ; N percent ; B 114 -13 740 753 ;
+C 38 ; WX 721 ; N ampersand ; B 88 -13 730 753 ;
+C 39 ; WX 277 ; N quoteright ; B 199 586 324 740 ;
+C 40 ; WX 425 ; N parenleft ; B 138 -274 533 753 ;
+C 41 ; WX 425 ; N parenright ; B -19 -274 376 753 ;
+C 42 ; WX 573 ; N asterisk ; B 249 444 542 740 ;
+C 43 ; WX 600 ; N plus ; B 94 0 599 501 ;
+C 44 ; WX 277 ; N comma ; B 48 -72 171 82 ;
+C 45 ; WX 266 ; N hyphen ; B 49 262 320 291 ;
+C 46 ; WX 277 ; N period ; B 124 0 169 81 ;
+C 47 ; WX 518 ; N slash ; B 48 -100 588 740 ;
+C 48 ; WX 555 ; N zero ; B 75 -13 615 753 ;
+C 49 ; WX 555 ; N one ; B 243 0 442 740 ;
+C 50 ; WX 555 ; N two ; B 57 0 607 753 ;
+C 51 ; WX 555 ; N three ; B 75 -13 554 753 ;
+C 52 ; WX 555 ; N four ; B 44 0 571 740 ;
+C 53 ; WX 555 ; N five ; B 60 -13 610 740 ;
+C 54 ; WX 555 ; N six ; B 71 -13 570 740 ;
+C 55 ; WX 555 ; N seven ; B 119 0 617 740 ;
+C 56 ; WX 555 ; N eight ; B 88 -13 565 753 ;
+C 57 ; WX 555 ; N nine ; B 122 0 621 753 ;
+C 58 ; WX 277 ; N colon ; B 124 0 252 530 ;
+C 59 ; WX 277 ; N semicolon ; B 48 -72 251 530 ;
+C 60 ; WX 600 ; N less ; B 94 0 643 502 ;
+C 61 ; WX 600 ; N equal ; B 76 139 617 361 ;
+C 62 ; WX 600 ; N greater ; B 50 0 599 502 ;
+C 63 ; WX 536 ; N question ; B 141 0 571 752 ;
+C 64 ; WX 796 ; N at ; B 102 -13 855 753 ;
+C 65 ; WX 687 ; N A ; B 7 0 680 740 ;
+C 66 ; WX 540 ; N B ; B 77 0 558 740 ;
+C 67 ; WX 786 ; N C ; B 103 -13 856 753 ;
+C 68 ; WX 701 ; N D ; B 77 0 736 740 ;
+C 69 ; WX 547 ; N E ; B 77 0 620 740 ;
+C 70 ; WX 477 ; N F ; B 77 0 577 740 ;
+C 71 ; WX 853 ; N G ; B 103 -13 877 753 ;
+C 72 ; WX 628 ; N H ; B 77 0 688 740 ;
+C 73 ; WX 185 ; N I ; B 77 0 244 740 ;
+C 74 ; WX 453 ; N J ; B 32 -13 514 740 ;
+C 75 ; WX 536 ; N K ; B 91 0 673 740 ;
+C 76 ; WX 423 ; N L ; B 77 0 425 740 ;
+C 77 ; WX 933 ; N M ; B 77 0 992 740 ;
+C 78 ; WX 738 ; N N ; B 77 0 798 740 ;
+C 79 ; WX 851 ; N O ; B 103 -13 885 753 ;
+C 80 ; WX 511 ; N P ; B 67 0 601 740 ;
+C 81 ; WX 882 ; N Q ; B 118 -13 900 753 ;
+C 82 ; WX 554 ; N R ; B 67 0 639 740 ;
+C 83 ; WX 518 ; N S ; B 78 -13 561 752 ;
+C 84 ; WX 443 ; N T ; B 137 0 574 740 ;
+C 85 ; WX 605 ; N U ; B 113 -13 666 740 ;
+C 86 ; WX 666 ; N V ; B 144 0 796 740 ;
+C 87 ; WX 888 ; N W ; B 149 0 1013 740 ;
+C 88 ; WX 555 ; N X ; B 8 0 673 740 ;
+C 89 ; WX 554 ; N Y ; B 152 0 676 740 ;
+C 90 ; WX 499 ; N Z ; B 20 0 609 740 ;
+C 91 ; WX 425 ; N bracketleft ; B 170 -272 484 753 ;
+C 92 ; WX 518 ; N backslash ; B 204 -100 432 740 ;
+C 93 ; WX 425 ; N bracketright ; B 31 -272 344 753 ;
+C 94 ; WX 600 ; N asciicircum ; B 181 375 557 740 ;
+C 95 ; WX 500 ; N underscore ; B -23 -125 486 -75 ;
+C 96 ; WX 277 ; N quoteleft ; B 227 586 296 740 ;
+C 97 ; WX 674 ; N a ; B 85 -13 694 543 ;
+C 98 ; WX 674 ; N b ; B 78 -13 687 740 ;
+C 99 ; WX 619 ; N c ; B 85 -13 650 543 ;
+C 100 ; WX 677 ; N d ; B 85 -13 733 740 ;
+C 101 ; WX 619 ; N e ; B 75 -13 643 543 ;
+C 102 ; WX 263 ; N f ; B 94 0 400 753 ; L i fi ; L l fl ;
+C 103 ; WX 675 ; N g ; B 56 -226 696 543 ;
+C 104 ; WX 640 ; N h ; B 78 0 624 740 ;
+C 105 ; WX 184 ; N i ; B 78 0 243 740 ;
+C 106 ; WX 219 ; N j ; B -53 -213 260 740 ;
+C 107 ; WX 467 ; N k ; B 78 0 532 740 ;
+C 108 ; WX 183 ; N l ; B 78 0 243 740 ;
+C 109 ; WX 949 ; N m ; B 78 0 937 543 ;
+C 110 ; WX 641 ; N n ; B 78 0 624 543 ;
+C 111 ; WX 641 ; N o ; B 85 -13 653 543 ;
+C 112 ; WX 677 ; N p ; B 39 -213 687 543 ;
+C 113 ; WX 674 ; N q ; B 85 -213 694 543 ;
+C 114 ; WX 302 ; N r ; B 78 0 394 543 ;
+C 115 ; WX 426 ; N s ; B 70 -13 429 543 ;
+C 116 ; WX 296 ; N t ; B 100 0 386 740 ;
+C 117 ; WX 641 ; N u ; B 117 -13 662 530 ;
+C 118 ; WX 481 ; N v ; B 102 0 574 530 ;
+C 119 ; WX 758 ; N w ; B 108 0 847 530 ;
+C 120 ; WX 407 ; N x ; B 10 0 495 530 ;
+C 121 ; WX 481 ; N y ; B 88 -213 578 530 ;
+C 122 ; WX 407 ; N z ; B 12 0 475 530 ;
+C 123 ; WX 425 ; N braceleft ; B 156 -272 484 753 ;
+C 124 ; WX 555 ; N bar ; B 244 -100 430 740 ;
+C 125 ; WX 425 ; N braceright ; B 31 -272 357 753 ;
+C 126 ; WX 600 ; N asciitilde ; B 118 200 573 301 ;
+C 161 ; WX 259 ; N exclamdown ; B 76 -209 243 531 ;
+C 162 ; WX 555 ; N cent ; B 133 39 574 687 ;
+C 163 ; WX 555 ; N sterling ; B 36 0 626 752 ;
+C 164 ; WX 86 ; N fraction ; B -137 0 359 740 ;
+C 165 ; WX 555 ; N yen ; B 93 0 661 740 ;
+C 166 ; WX 555 ; N florin ; B -12 -152 692 813 ;
+C 167 ; WX 573 ; N section ; B 67 -223 588 753 ;
+C 168 ; WX 555 ; N currency ; B 64 105 618 579 ;
+C 169 ; WX 222 ; N quotesingle ; B 178 444 263 740 ;
+C 170 ; WX 370 ; N quotedblleft ; B 229 586 387 740 ;
+C 171 ; WX 351 ; N guillemotleft ; B 100 84 373 469 ;
+C 172 ; WX 248 ; N guilsinglleft ; B 104 84 266 469 ;
+C 173 ; WX 248 ; N guilsinglright ; B 84 84 246 469 ;
+C 174 ; WX 393 ; N fi ; B 94 0 452 753 ;
+C 175 ; WX 393 ; N fl ; B 94 0 452 753 ;
+C 177 ; WX 500 ; N endash ; B 84 262 519 291 ;
+C 178 ; WX 573 ; N dagger ; B 175 -100 588 740 ;
+C 179 ; WX 573 ; N daggerdbl ; B 99 -100 594 740 ;
+C 180 ; WX 277 ; N periodcentered ; B 164 215 209 296 ;
+C 182 ; WX 561 ; N paragraph ; B 108 -126 629 740 ;
+C 183 ; WX 375 ; N bullet ; B 102 222 413 532 ;
+C 184 ; WX 277 ; N quotesinglbase ; B 77 -72 202 82 ;
+C 185 ; WX 370 ; N quotedblbase ; B 79 -72 293 82 ;
+C 186 ; WX 370 ; N quotedblright ; B 201 586 415 740 ;
+C 187 ; WX 351 ; N guillemotright ; B 80 84 353 469 ;
+C 188 ; WX 1000 ; N ellipsis ; B 152 0 863 82 ;
+C 189 ; WX 1089 ; N perthousand ; B 112 -13 1101 753 ;
+C 191 ; WX 536 ; N questiondown ; B 63 -222 494 530 ;
+C 193 ; WX 555 ; N grave ; B 282 605 511 766 ;
+C 194 ; WX 555 ; N acute ; B 276 605 549 766 ;
+C 195 ; WX 555 ; N circumflex ; B 200 623 591 748 ;
+C 196 ; WX 555 ; N tilde ; B 222 633 581 714 ;
+C 197 ; WX 555 ; N macron ; B 221 660 583 690 ;
+C 198 ; WX 555 ; N breve ; B 219 634 602 716 ;
+C 199 ; WX 555 ; N dotaccent ; B 377 618 429 734 ;
+C 200 ; WX 555 ; N dieresis ; B 318 618 488 734 ;
+C 202 ; WX 555 ; N ring ; B 312 595 498 777 ;
+C 203 ; WX 555 ; N cedilla ; B 178 -201 329 0 ;
+C 205 ; WX 555 ; N hungarumlaut ; B 260 605 639 788 ;
+C 206 ; WX 555 ; N ogonek ; B 175 -206 327 0 ;
+C 207 ; WX 555 ; N caron ; B 218 623 609 748 ;
+C 208 ; WX 1000 ; N emdash ; B 84 262 1019 291 ;
+C 225 ; WX 944 ; N AE ; B -8 0 1007 740 ;
+C 227 ; WX 439 ; N ordfeminine ; B 130 404 526 753 ;
+C 232 ; WX 423 ; N Lslash ; B 52 0 429 740 ;
+C 233 ; WX 851 ; N Oslash ; B 81 -86 903 809 ;
+C 234 ; WX 1178 ; N OE ; B 102 -13 1254 753 ;
+C 235 ; WX 439 ; N ordmasculine ; B 148 404 505 753 ;
+C 241 ; WX 1154 ; N ae ; B 85 -13 1166 543 ;
+C 245 ; WX 184 ; N dotlessi ; B 78 0 204 530 ;
+C 248 ; WX 219 ; N lslash ; B 76 0 312 740 ;
+C 249 ; WX 641 ; N oslash ; B 79 -52 661 585 ;
+C 250 ; WX 1156 ; N oe ; B 85 -13 1169 543 ;
+C 251 ; WX 559 ; N germandbls ; B 76 -13 570 752 ;
+C -1 ; WX 619 ; N ecircumflex ; B 75 -13 643 748 ;
+C -1 ; WX 619 ; N edieresis ; B 75 -13 643 734 ;
+C -1 ; WX 674 ; N aacute ; B 85 -13 694 766 ;
+C -1 ; WX 800 ; N registered ; B 80 -11 856 751 ;
+C -1 ; WX 184 ; N icircumflex ; B 15 0 406 748 ;
+C -1 ; WX 641 ; N udieresis ; B 117 -13 662 734 ;
+C -1 ; WX 641 ; N ograve ; B 85 -13 653 766 ;
+C -1 ; WX 641 ; N uacute ; B 117 -13 662 766 ;
+C -1 ; WX 641 ; N ucircumflex ; B 117 -13 662 748 ;
+C -1 ; WX 687 ; N Aacute ; B 7 0 680 951 ;
+C -1 ; WX 184 ; N igrave ; B 77 0 306 766 ;
+C -1 ; WX 185 ; N Icircumflex ; B 50 0 441 933 ;
+C -1 ; WX 619 ; N ccedilla ; B 85 -201 650 543 ;
+C -1 ; WX 674 ; N adieresis ; B 85 -13 694 734 ;
+C -1 ; WX 547 ; N Ecircumflex ; B 77 0 622 933 ;
+C -1 ; WX 426 ; N scaron ; B 70 -13 545 748 ;
+C -1 ; WX 681 ; N thorn ; B 39 -213 693 740 ;
+C -1 ; WX 990 ; N trademark ; B 142 296 975 740 ;
+C -1 ; WX 619 ; N egrave ; B 75 -13 643 766 ;
+C -1 ; WX 351 ; N threesuperior ; B 110 288 404 748 ;
+C -1 ; WX 407 ; N zcaron ; B 12 0 535 748 ;
+C -1 ; WX 674 ; N atilde ; B 85 -13 694 714 ;
+C -1 ; WX 674 ; N aring ; B 85 -13 694 775 ;
+C -1 ; WX 641 ; N ocircumflex ; B 85 -13 653 748 ;
+C -1 ; WX 547 ; N Edieresis ; B 77 0 620 919 ;
+C -1 ; WX 807 ; N threequarters ; B 117 0 805 748 ;
+C -1 ; WX 481 ; N ydieresis ; B 88 -213 578 734 ;
+C -1 ; WX 481 ; N yacute ; B 88 -213 578 766 ;
+C -1 ; WX 184 ; N iacute ; B 78 0 384 766 ;
+C -1 ; WX 687 ; N Acircumflex ; B 7 0 692 933 ;
+C -1 ; WX 605 ; N Uacute ; B 113 -13 666 951 ;
+C -1 ; WX 619 ; N eacute ; B 75 -13 643 766 ;
+C -1 ; WX 851 ; N Ograve ; B 103 -13 885 951 ;
+C -1 ; WX 674 ; N agrave ; B 85 -13 694 766 ;
+C -1 ; WX 605 ; N Udieresis ; B 113 -13 666 919 ;
+C -1 ; WX 674 ; N acircumflex ; B 85 -13 694 748 ;
+C -1 ; WX 185 ; N Igrave ; B 77 0 341 951 ;
+C -1 ; WX 351 ; N twosuperior ; B 91 296 421 748 ;
+C -1 ; WX 605 ; N Ugrave ; B 113 -13 666 951 ;
+C -1 ; WX 700 ; N onequarter ; B 143 0 697 740 ;
+C -1 ; WX 605 ; N Ucircumflex ; B 113 -13 666 933 ;
+C -1 ; WX 518 ; N Scaron ; B 78 -13 625 933 ;
+C -1 ; WX 185 ; N Idieresis ; B 77 0 337 919 ;
+C -1 ; WX 184 ; N idieresis ; B 78 0 303 734 ;
+C -1 ; WX 547 ; N Egrave ; B 77 0 620 951 ;
+C -1 ; WX 851 ; N Oacute ; B 103 -13 885 951 ;
+C -1 ; WX 600 ; N divide ; B 94 0 599 500 ;
+C -1 ; WX 687 ; N Atilde ; B 7 0 683 909 ;
+C -1 ; WX 687 ; N Aring ; B 7 0 680 937 ;
+C -1 ; WX 851 ; N Odieresis ; B 103 -13 885 919 ;
+C -1 ; WX 687 ; N Adieresis ; B 7 0 680 919 ;
+C -1 ; WX 738 ; N Ntilde ; B 77 0 798 909 ;
+C -1 ; WX 499 ; N Zcaron ; B 20 0 610 933 ;
+C -1 ; WX 511 ; N Thorn ; B 67 0 572 740 ;
+C -1 ; WX 185 ; N Iacute ; B 77 0 418 951 ;
+C -1 ; WX 600 ; N plusminus ; B 48 0 609 506 ;
+C -1 ; WX 600 ; N multiply ; B 54 2 638 499 ;
+C -1 ; WX 547 ; N Eacute ; B 77 0 620 951 ;
+C -1 ; WX 554 ; N Ydieresis ; B 152 0 676 919 ;
+C -1 ; WX 351 ; N onesuperior ; B 207 296 334 740 ;
+C -1 ; WX 641 ; N ugrave ; B 117 -13 662 766 ;
+C -1 ; WX 600 ; N logicalnot ; B 112 139 617 361 ;
+C -1 ; WX 641 ; N ntilde ; B 78 0 624 714 ;
+C -1 ; WX 851 ; N Otilde ; B 103 -13 885 909 ;
+C -1 ; WX 641 ; N otilde ; B 85 -13 653 714 ;
+C -1 ; WX 786 ; N Ccedilla ; B 102 -201 856 753 ;
+C -1 ; WX 687 ; N Agrave ; B 7 0 680 951 ;
+C -1 ; WX 750 ; N onehalf ; B 143 0 766 740 ;
+C -1 ; WX 701 ; N Eth ; B 67 0 736 740 ;
+C -1 ; WX 400 ; N degree ; B 159 423 450 709 ;
+C -1 ; WX 554 ; N Yacute ; B 152 0 676 951 ;
+C -1 ; WX 851 ; N Ocircumflex ; B 103 -13 885 933 ;
+C -1 ; WX 641 ; N oacute ; B 85 -13 653 766 ;
+C -1 ; WX 561 ; N mu ; B 39 -181 582 530 ;
+C -1 ; WX 600 ; N minus ; B 94 236 599 264 ;
+C -1 ; WX 641 ; N eth ; B 85 -13 657 740 ;
+C -1 ; WX 641 ; N odieresis ; B 85 -13 653 734 ;
+C -1 ; WX 800 ; N copyright ; B 80 -11 856 751 ;
+C -1 ; WX 555 ; N brokenbar ; B 244 -100 430 740 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 181
+
+KPX A y -25
+KPX A w -30
+KPX A v -35
+KPX A quoteright -40
+KPX A quotedblright -40
+KPX A Y -92
+KPX A W -50
+KPX A V -90
+KPX A U -15
+KPX A T -71
+KPX A Q -15
+KPX A O -15
+KPX A G -18
+KPX A C -15
+
+KPX D period -70
+KPX D comma -80
+KPX D Y -30
+KPX D V -20
+KPX D A -35
+
+KPX F period -200
+KPX F o -15
+KPX F e -15
+KPX F comma -200
+KPX F a -15
+KPX F A -60
+
+KPX G period -30
+KPX G comma -40
+
+KPX J period -10
+KPX J comma -10
+
+KPX K y 5
+
+KPX L y -18
+KPX L quoteright -40
+KPX L quotedblright -40
+KPX L Y -91
+KPX L W -50
+KPX L V -113
+KPX L T -55
+
+KPX O period -40
+KPX O comma -30
+KPX O Y -30
+KPX O X -15
+KPX O V -30
+KPX O T -20
+KPX O A -30
+
+KPX P period -200
+KPX P comma -200
+KPX P A -74
+
+KPX R W 20
+KPX R V 10
+KPX R U 20
+KPX R T 6
+KPX R O 30
+
+KPX T y -10
+KPX T w -70
+KPX T u -100
+KPX T semicolon -100
+KPX T r -40
+KPX T period -122
+KPX T o -70
+KPX T hyphen -100
+KPX T h -10
+KPX T e -71
+KPX T comma -122
+KPX T colon -90
+KPX T a -85
+KPX T O -20
+KPX T A -81
+
+KPX U period -8
+KPX U comma -8
+KPX U A -10
+
+KPX V u -55
+KPX V semicolon -47
+KPX V period -160
+KPX V o -101
+KPX V i -10
+KPX V hyphen -85
+KPX V e -101
+KPX V comma -160
+KPX V colon -47
+KPX V a -104
+KPX V O -18
+KPX V G -15
+KPX V A -90
+
+KPX W y -2
+KPX W u -30
+KPX W semicolon -33
+KPX W period -106
+KPX W o -46
+KPX W hyphen -55
+KPX W e -47
+KPX W comma -106
+KPX W colon -1
+KPX W a -50
+KPX W A -50
+
+KPX Y u -79
+KPX Y semicolon -48
+KPX Y period -117
+KPX Y o -99
+KPX Y hyphen -135
+KPX Y e -99
+KPX Y comma -117
+KPX Y colon -24
+KPX Y a -100
+KPX Y O -30
+KPX Y A -92
+
+KPX a y 20
+KPX a b 6
+
+KPX b period -15
+KPX b comma -15
+
+KPX c y 15
+
+KPX comma space -30
+KPX comma quoteright -120
+KPX comma quotedblright -120
+
+KPX d y 15
+
+KPX f quoteright 10
+KPX f quotedblright 10
+KPX f period -30
+KPX f o -18
+KPX f l -50
+KPX f i -50
+KPX f f -50
+KPX f e -30
+KPX f dotlessi -50
+KPX f comma -30
+KPX f a -15
+
+KPX g period -10
+KPX g comma -10
+
+KPX m y -15
+KPX m u -20
+
+KPX n y -15
+KPX n u -20
+
+KPX o period -18
+KPX o comma -18
+
+KPX p period -18
+KPX p comma -18
+
+KPX period space -30
+KPX period quoteright -150
+KPX period quotedblright -120
+
+KPX quotedblleft A -40
+
+KPX quotedblright space -70
+
+KPX quoteleft quoteleft -188
+KPX quoteleft A -40
+
+KPX quoteright v -20
+KPX quoteright t 25
+KPX quoteright space -40
+KPX quoteright s -40
+KPX quoteright r -30
+KPX quoteright quoteright -188
+KPX quoteright d -60
+
+KPX r y 50
+KPX r v 20
+KPX r t 40
+KPX r q -15
+KPX r period -85
+KPX r o -55
+KPX r n 21
+KPX r l 10
+KPX r hyphen -45
+KPX r g -35
+KPX r e -50
+KPX r d -40
+KPX r comma -85
+KPX r c -55
+KPX r a -55
+
+KPX s w -12
+
+KPX space quoteleft -20
+KPX space quotedblleft -70
+KPX space Y -75
+KPX space W -40
+KPX space V -65
+KPX space T -50
+KPX space A -20
+
+KPX v period -75
+KPX v comma -75
+
+KPX w period -75
+KPX w comma -75
+
+KPX y period -75
+KPX y o -12
+KPX y e -12
+KPX y comma -75
+KPX y a -12
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 100 185 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 100 185 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 100 185 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 100 185 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 96 160 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 102 195 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 30 185 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 30 185 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 30 185 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 30 185 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute -131 185 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex -151 185 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis -151 185 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave -171 185 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 128 195 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 182 185 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 182 185 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 182 185 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 182 185 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 184 195 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 16 185 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 59 185 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 59 185 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 59 185 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 59 185 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 34 185 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 34 185 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 1 185 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 55 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 60 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 60 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 60 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 60 -2 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 60 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 27 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 32 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 27 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 32 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -165 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -185 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -185 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -205 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 43 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 38 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 43 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 43 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 43 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 43 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron -64 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 43 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 43 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 43 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 43 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute -37 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis -37 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron -74 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/AG-ExLtO+ b/font/font/AG-ExLtO+
new file mode 100644
index 0000000..86dc557
--- /dev/null
+++ b/font/font/AG-ExLtO+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 786 ; N Ccaron ; B 103 -13 856 933 ;
+C -1 ; WX 619 ; N ccaron ; B 85 -13 669 748 ;
+C -1 ; WX 701 ; N Dcaron ; B 77 0 736 933 ;
+C -1 ; WX 765 ; N dcaron ; B 85 -13 871 814 ;
+C -1 ; WX 547 ; N Ecaron ; B 77 0 637 933 ;
+C -1 ; WX 619 ; N ecaron ; B 75 -13 643 748 ;
+C -1 ; WX 423 ; N Lcaron ; B 77 0 425 814 ;
+C -1 ; WX 423 ; N Lacute ; B 77 0 518 969 ;
+C -1 ; WX 271 ; N lcaron ; B 78 0 381 814 ;
+C -1 ; WX 183 ; N lacute ; B 78 0 425 969 ;
+C -1 ; WX 738 ; N Ncaron ; B 77 0 798 933 ;
+C -1 ; WX 641 ; N ncaron ; B 78 0 652 748 ;
+C -1 ; WX 554 ; N Rcaron ; B 67 0 641 933 ;
+C -1 ; WX 554 ; N Racute ; B 67 0 639 969 ;
+C -1 ; WX 302 ; N rcaron ; B 78 0 483 748 ;
+C -1 ; WX 302 ; N racute ; B 78 0 450 766 ;
+C -1 ; WX 443 ; N Tcaron ; B 137 0 585 933 ;
+C -1 ; WX 384 ; N tcaron ; B 100 0 524 740 ;
+C -1 ; WX 605 ; N Uring ; B 113 -13 666 933 ;
+C -1 ; WX 641 ; N uring ; B 117 -13 662 777 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 222 185 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 60 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 105 185 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 547 74 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 28 185 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 32 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 58 74 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute -31 203 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 57 74 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute -124 203 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 123 185 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 43 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 32 185 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 87 203 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron -126 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute -99 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron -24 185 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 200 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 52 156 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 43 0 ;
+EndBuildComposites
diff --git a/font/font/AG-Md b/font/font/AG-Md
new file mode 100644
index 0000000..4307a80
--- /dev/null
+++ b/font/font/AG-Md
@@ -0,0 +1,581 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1991 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Tue Feb 19 18:15:23 1991
+Comment UniqueID 34232
+Comment VMusage 24260 31152
+FontName AvantGarde-Medium
+FullName ITC Avant Garde Gothic Medium
+FamilyName ITC Avant Garde Gothic
+Weight Medium
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -98 -257 1175 982
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.000
+Notice Copyright (c) 1991 Adobe Systems Incorporated. All Rights Reserved.ITC Avant Garde Gothic is a registered trademark of International Typeface Corporation.
+EncodingScheme AdobeStandardEncoding
+CapHeight 740
+XHeight 554
+Ascender 740
+Descender -185
+StartCharMetrics 228
+C 32 ; WX 277 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 277 ; N exclam ; B 87 0 191 740 ;
+C 34 ; WX 325 ; N quotedbl ; B 20 444 306 740 ;
+C 35 ; WX 555 ; N numbersign ; B 30 0 524 700 ;
+C 36 ; WX 555 ; N dollar ; B 68 -82 487 823 ;
+C 37 ; WX 837 ; N percent ; B 52 -13 784 751 ;
+C 38 ; WX 684 ; N ampersand ; B 34 -14 676 754 ;
+C 39 ; WX 277 ; N quoteright ; B 87 490 191 740 ;
+C 40 ; WX 407 ; N parenleft ; B 55 -257 357 755 ;
+C 41 ; WX 407 ; N parenright ; B 50 -257 352 755 ;
+C 42 ; WX 573 ; N asterisk ; B 96 377 478 740 ;
+C 43 ; WX 600 ; N plus ; B 48 0 552 506 ;
+C 44 ; WX 277 ; N comma ; B 87 -127 191 122 ;
+C 45 ; WX 280 ; N hyphen ; B 0 237 280 341 ;
+C 46 ; WX 277 ; N period ; B 87 0 191 122 ;
+C 47 ; WX 499 ; N slash ; B 41 -100 443 740 ;
+C 48 ; WX 555 ; N zero ; B 38 -14 517 755 ;
+C 49 ; WX 555 ; N one ; B 148 0 361 740 ;
+C 50 ; WX 555 ; N two ; B 37 0 504 754 ;
+C 51 ; WX 555 ; N three ; B 22 -14 501 754 ;
+C 52 ; WX 555 ; N four ; B 12 0 532 740 ;
+C 53 ; WX 555 ; N five ; B 25 -14 530 740 ;
+C 54 ; WX 555 ; N six ; B 25 -14 537 740 ;
+C 55 ; WX 555 ; N seven ; B 71 0 500 740 ;
+C 56 ; WX 555 ; N eight ; B 43 -14 511 754 ;
+C 57 ; WX 555 ; N nine ; B 18 0 529 754 ;
+C 58 ; WX 277 ; N colon ; B 87 0 191 555 ;
+C 59 ; WX 277 ; N semicolon ; B 87 -127 191 555 ;
+C 60 ; WX 600 ; N less ; B 46 -8 554 514 ;
+C 61 ; WX 600 ; N equal ; B 48 92 552 414 ;
+C 62 ; WX 600 ; N greater ; B 46 -8 554 514 ;
+C 63 ; WX 518 ; N question ; B 32 0 478 754 ;
+C 64 ; WX 760 ; N at ; B 11 -13 749 753 ;
+C 65 ; WX 684 ; N A ; B 13 0 672 740 ;
+C 66 ; WX 580 ; N B ; B 75 0 542 740 ;
+C 67 ; WX 782 ; N C ; B 38 -14 759 754 ;
+C 68 ; WX 732 ; N D ; B 65 0 683 740 ;
+C 69 ; WX 520 ; N E ; B 65 0 464 740 ;
+C 70 ; WX 482 ; N F ; B 65 0 439 740 ;
+C 71 ; WX 831 ; N G ; B 38 -14 799 754 ;
+C 72 ; WX 670 ; N H ; B 75 0 596 740 ;
+C 73 ; WX 257 ; N I ; B 75 0 183 740 ;
+C 74 ; WX 487 ; N J ; B 0 -14 408 740 ;
+C 75 ; WX 618 ; N K ; B 90 0 614 740 ;
+C 76 ; WX 444 ; N L ; B 79 0 444 740 ;
+C 77 ; WX 934 ; N M ; B 75 0 860 740 ;
+C 78 ; WX 738 ; N N ; B 75 0 663 740 ;
+C 79 ; WX 846 ; N O ; B 38 -14 808 754 ;
+C 80 ; WX 559 ; N P ; B 65 0 540 740 ;
+C 81 ; WX 837 ; N Q ; B 38 -14 816 754 ;
+C 82 ; WX 594 ; N R ; B 65 0 559 740 ;
+C 83 ; WX 499 ; N S ; B 18 -14 473 754 ;
+C 84 ; WX 407 ; N T ; B 7 0 399 740 ;
+C 85 ; WX 643 ; N U ; B 73 -14 569 740 ;
+C 86 ; WX 684 ; N V ; B 12 0 672 740 ;
+C 87 ; WX 906 ; N W ; B 16 0 890 740 ;
+C 88 ; WX 648 ; N X ; B 11 0 636 740 ;
+C 89 ; WX 593 ; N Y ; B 13 0 579 740 ;
+C 90 ; WX 462 ; N Z ; B 4 0 459 740 ;
+C 91 ; WX 407 ; N bracketleft ; B 125 -257 329 755 ;
+C 92 ; WX 499 ; N backslash ; B 56 -100 458 740 ;
+C 93 ; WX 407 ; N bracketright ; B 78 -257 282 755 ;
+C 94 ; WX 600 ; N asciicircum ; B 66 355 534 740 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 277 ; N quoteleft ; B 86 490 190 740 ;
+C 97 ; WX 693 ; N a ; B 38 -14 626 569 ;
+C 98 ; WX 688 ; N b ; B 67 -14 650 740 ;
+C 99 ; WX 627 ; N c ; B 38 -14 595 569 ;
+C 100 ; WX 687 ; N d ; B 38 -14 620 740 ;
+C 101 ; WX 642 ; N e ; B 39 -14 605 569 ;
+C 102 ; WX 277 ; N f ; B 21 0 271 740 ; L i fi ; L l fl ;
+C 103 ; WX 697 ; N g ; B 38 -218 631 569 ;
+C 104 ; WX 622 ; N h ; B 66 0 558 740 ;
+C 105 ; WX 238 ; N i ; B 67 0 171 740 ;
+C 106 ; WX 249 ; N j ; B 11 -218 184 740 ;
+C 107 ; WX 546 ; N k ; B 77 0 535 740 ;
+C 108 ; WX 238 ; N l ; B 67 0 171 740 ;
+C 109 ; WX 971 ; N m ; B 67 0 905 569 ;
+C 110 ; WX 624 ; N n ; B 66 0 558 569 ;
+C 111 ; WX 675 ; N o ; B 38 -14 636 569 ;
+C 112 ; WX 686 ; N p ; B 67 -185 648 569 ;
+C 113 ; WX 687 ; N q ; B 39 -185 620 569 ;
+C 114 ; WX 320 ; N r ; B 67 0 307 569 ;
+C 115 ; WX 424 ; N s ; B 20 -14 402 569 ;
+C 116 ; WX 277 ; N t ; B 4 0 274 740 ;
+C 117 ; WX 624 ; N u ; B 66 -14 557 554 ;
+C 118 ; WX 537 ; N v ; B 13 0 524 554 ;
+C 119 ; WX 795 ; N w ; B 13 0 782 554 ;
+C 120 ; WX 518 ; N x ; B 2 0 516 554 ;
+C 121 ; WX 574 ; N y ; B 10 -185 564 554 ;
+C 122 ; WX 407 ; N z ; B 3 0 404 554 ;
+C 123 ; WX 333 ; N braceleft ; B 14 -198 308 740 ;
+C 124 ; WX 555 ; N bar ; B 221 -100 334 740 ;
+C 125 ; WX 333 ; N braceright ; B 25 -198 319 740 ;
+C 126 ; WX 600 ; N asciitilde ; B 69 167 531 339 ;
+C 161 ; WX 277 ; N exclamdown ; B 86 -185 190 555 ;
+C 162 ; WX 555 ; N cent ; B 38 69 517 740 ;
+C 163 ; WX 555 ; N sterling ; B 9 0 546 754 ;
+C 164 ; WX 186 ; N fraction ; B -98 0 283 740 ;
+C 165 ; WX 555 ; N yen ; B 0 0 555 740 ;
+C 166 ; WX 555 ; N florin ; B 15 -157 520 829 ;
+C 167 ; WX 573 ; N section ; B 41 -222 534 754 ;
+C 168 ; WX 555 ; N currency ; B 27 72 529 574 ;
+C 169 ; WX 218 ; N quotesingle ; B 54 444 164 740 ;
+C 170 ; WX 425 ; N quotedblleft ; B 83 490 343 740 ;
+C 171 ; WX 370 ; N guillemotleft ; B 33 102 337 475 ;
+C 172 ; WX 205 ; N guilsinglleft ; B 34 102 171 475 ;
+C 173 ; WX 205 ; N guilsinglright ; B 34 102 171 475 ;
+C 174 ; WX 486 ; N fi ; B 21 0 419 740 ;
+C 175 ; WX 486 ; N fl ; B 21 0 419 740 ;
+C 177 ; WX 500 ; N endash ; B 35 237 465 341 ;
+C 178 ; WX 573 ; N dagger ; B 65 -222 509 740 ;
+C 179 ; WX 573 ; N daggerdbl ; B 65 -222 509 740 ;
+C 180 ; WX 277 ; N periodcentered ; B 93 200 184 308 ;
+C 182 ; WX 638 ; N paragraph ; B 2 -191 535 700 ;
+C 183 ; WX 606 ; N bullet ; B 150 222 455 532 ;
+C 184 ; WX 277 ; N quotesinglbase ; B 87 -128 191 122 ;
+C 185 ; WX 425 ; N quotedblbase ; B 82 -128 342 122 ;
+C 186 ; WX 425 ; N quotedblright ; B 82 490 342 740 ;
+C 187 ; WX 370 ; N guillemotright ; B 33 102 337 475 ;
+C 188 ; WX 1000 ; N ellipsis ; B 115 0 885 122 ;
+C 189 ; WX 1228 ; N perthousand ; B 52 -13 1175 751 ;
+C 191 ; WX 518 ; N questiondown ; B 40 -199 486 555 ;
+C 193 ; WX 555 ; N grave ; B 124 611 391 814 ;
+C 194 ; WX 555 ; N acute ; B 164 611 431 814 ;
+C 195 ; WX 555 ; N circumflex ; B 88 632 467 767 ;
+C 196 ; WX 555 ; N tilde ; B 94 636 461 745 ;
+C 197 ; WX 555 ; N macron ; B 100 659 455 734 ;
+C 198 ; WX 555 ; N breve ; B 88 636 467 756 ;
+C 199 ; WX 555 ; N dotaccent ; B 225 636 329 758 ;
+C 200 ; WX 555 ; N dieresis ; B 148 636 407 758 ;
+C 202 ; WX 555 ; N ring ; B 167 610 388 831 ;
+C 203 ; WX 555 ; N cedilla ; B 182 -246 373 0 ;
+C 205 ; WX 555 ; N hungarumlaut ; B 97 632 498 767 ;
+C 206 ; WX 555 ; N ogonek ; B 187 -202 368 0 ;
+C 207 ; WX 555 ; N caron ; B 88 632 467 774 ;
+C 208 ; WX 1000 ; N emdash ; B 35 237 965 341 ;
+C 225 ; WX 930 ; N AE ; B 0 0 866 740 ;
+C 227 ; WX 385 ; N ordfeminine ; B 13 430 346 754 ;
+C 232 ; WX 444 ; N Lslash ; B 4 0 444 740 ;
+C 233 ; WX 846 ; N Oslash ; B 38 -65 808 802 ;
+C 234 ; WX 1094 ; N OE ; B 38 -14 1048 754 ;
+C 235 ; WX 385 ; N ordmasculine ; B 26 430 358 754 ;
+C 241 ; WX 1131 ; N ae ; B 38 -14 1093 569 ;
+C 245 ; WX 238 ; N dotlessi ; B 67 0 171 554 ;
+C 248 ; WX 284 ; N lslash ; B 21 0 273 740 ;
+C 249 ; WX 675 ; N oslash ; B 38 -69 636 623 ;
+C 250 ; WX 1144 ; N oe ; B 38 -14 1107 569 ;
+C 251 ; WX 640 ; N germandbls ; B 66 -14 602 754 ;
+C -1 ; WX 642 ; N ecircumflex ; B 39 -14 605 767 ;
+C -1 ; WX 642 ; N edieresis ; B 39 -14 605 758 ;
+C -1 ; WX 693 ; N aacute ; B 38 -14 626 814 ;
+C -1 ; WX 800 ; N registered ; B 18 -12 782 752 ;
+C -1 ; WX 238 ; N icircumflex ; B -70 0 309 767 ;
+C -1 ; WX 624 ; N udieresis ; B 66 -14 557 758 ;
+C -1 ; WX 675 ; N ograve ; B 38 -14 636 814 ;
+C -1 ; WX 624 ; N uacute ; B 66 -14 557 814 ;
+C -1 ; WX 624 ; N ucircumflex ; B 66 -14 557 767 ;
+C -1 ; WX 684 ; N Aacute ; B 13 0 672 975 ;
+C -1 ; WX 238 ; N igrave ; B -74 0 193 814 ;
+C -1 ; WX 257 ; N Icircumflex ; B -61 0 318 933 ;
+C -1 ; WX 627 ; N ccedilla ; B 38 -246 595 569 ;
+C -1 ; WX 693 ; N adieresis ; B 38 -14 626 758 ;
+C -1 ; WX 520 ; N Ecircumflex ; B 65 0 464 933 ;
+C -1 ; WX 424 ; N scaron ; B 20 -14 402 774 ;
+C -1 ; WX 686 ; N thorn ; B 67 -185 648 740 ;
+C -1 ; WX 990 ; N trademark ; B 0 288 903 700 ;
+C -1 ; WX 642 ; N egrave ; B 39 -14 605 814 ;
+C -1 ; WX 351 ; N threesuperior ; B 16 286 316 750 ;
+C -1 ; WX 407 ; N zcaron ; B 3 0 413 774 ;
+C -1 ; WX 693 ; N atilde ; B 38 -14 626 745 ;
+C -1 ; WX 693 ; N aring ; B 38 -14 626 831 ;
+C -1 ; WX 675 ; N ocircumflex ; B 38 -14 636 767 ;
+C -1 ; WX 520 ; N Edieresis ; B 65 0 464 924 ;
+C -1 ; WX 781 ; N threequarters ; B 16 0 765 750 ;
+C -1 ; WX 574 ; N ydieresis ; B 10 -185 564 758 ;
+C -1 ; WX 574 ; N yacute ; B 10 -185 564 814 ;
+C -1 ; WX 238 ; N iacute ; B 46 0 313 814 ;
+C -1 ; WX 684 ; N Acircumflex ; B 13 0 672 928 ;
+C -1 ; WX 643 ; N Uacute ; B 73 -14 569 980 ;
+C -1 ; WX 642 ; N eacute ; B 39 -14 605 814 ;
+C -1 ; WX 846 ; N Ograve ; B 38 -14 808 980 ;
+C -1 ; WX 693 ; N agrave ; B 38 -14 626 814 ;
+C -1 ; WX 643 ; N Udieresis ; B 73 -14 569 924 ;
+C -1 ; WX 693 ; N acircumflex ; B 38 -14 626 767 ;
+C -1 ; WX 257 ; N Igrave ; B -65 0 202 980 ;
+C -1 ; WX 351 ; N twosuperior ; B 25 296 318 750 ;
+C -1 ; WX 643 ; N Ugrave ; B 73 -14 569 980 ;
+C -1 ; WX 700 ; N onequarter ; B 16 0 684 740 ;
+C -1 ; WX 643 ; N Ucircumflex ; B 73 -14 569 933 ;
+C -1 ; WX 499 ; N Scaron ; B 18 -14 473 940 ;
+C -1 ; WX 257 ; N Idieresis ; B -1 0 258 924 ;
+C -1 ; WX 238 ; N idieresis ; B -10 0 249 758 ;
+C -1 ; WX 520 ; N Egrave ; B 65 0 464 980 ;
+C -1 ; WX 846 ; N Oacute ; B 38 -14 808 980 ;
+C -1 ; WX 600 ; N divide ; B 48 0 552 506 ;
+C -1 ; WX 684 ; N Atilde ; B 13 0 672 911 ;
+C -1 ; WX 684 ; N Aring ; B 13 0 672 982 ;
+C -1 ; WX 846 ; N Odieresis ; B 38 -14 808 924 ;
+C -1 ; WX 684 ; N Adieresis ; B 13 0 672 919 ;
+C -1 ; WX 738 ; N Ntilde ; B 75 0 663 911 ;
+C -1 ; WX 462 ; N Zcaron ; B 4 0 459 940 ;
+C -1 ; WX 559 ; N Thorn ; B 65 0 540 740 ;
+C -1 ; WX 257 ; N Iacute ; B 55 0 322 980 ;
+C -1 ; WX 600 ; N plusminus ; B 48 -52 552 546 ;
+C -1 ; WX 600 ; N multiply ; B 61 14 539 492 ;
+C -1 ; WX 520 ; N Eacute ; B 65 0 464 980 ;
+C -1 ; WX 593 ; N Ydieresis ; B 13 0 579 924 ;
+C -1 ; WX 351 ; N onesuperior ; B 97 296 239 740 ;
+C -1 ; WX 624 ; N ugrave ; B 66 -14 557 814 ;
+C -1 ; WX 600 ; N logicalnot ; B 48 108 552 414 ;
+C -1 ; WX 624 ; N ntilde ; B 66 0 558 745 ;
+C -1 ; WX 846 ; N Otilde ; B 38 -14 808 911 ;
+C -1 ; WX 675 ; N otilde ; B 38 -14 636 745 ;
+C -1 ; WX 782 ; N Ccedilla ; B 38 -246 759 754 ;
+C -1 ; WX 684 ; N Agrave ; B 13 0 672 975 ;
+C -1 ; WX 714 ; N onehalf ; B 16 0 698 740 ;
+C -1 ; WX 732 ; N Eth ; B 2 0 683 740 ;
+C -1 ; WX 400 ; N degree ; B 57 426 343 712 ;
+C -1 ; WX 593 ; N Yacute ; B 13 0 579 980 ;
+C -1 ; WX 846 ; N Ocircumflex ; B 38 -14 808 933 ;
+C -1 ; WX 675 ; N oacute ; B 38 -14 636 814 ;
+C -1 ; WX 624 ; N mu ; B 74 -185 550 554 ;
+C -1 ; WX 600 ; N minus ; B 48 201 552 305 ;
+C -1 ; WX 675 ; N eth ; B 38 -14 636 754 ;
+C -1 ; WX 675 ; N odieresis ; B 38 -14 636 758 ;
+C -1 ; WX 800 ; N copyright ; B 18 -12 782 752 ;
+C -1 ; WX 555 ; N brokenbar ; B 221 -100 334 740 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 223
+
+KPX A y -50
+KPX A w -65
+KPX A v -70
+KPX A u -20
+KPX A quoteright -85
+KPX A quotedblright -85
+KPX A Y -80
+KPX A W -60
+KPX A V -102
+KPX A U -40
+KPX A T -25
+KPX A Q -40
+KPX A O -50
+KPX A G -40
+KPX A C -40
+
+KPX B A -10
+
+KPX C A -40
+
+KPX D period -50
+KPX D comma -50
+KPX D Y -45
+KPX D W -30
+KPX D V -50
+KPX D A -50
+
+KPX F period -175
+KPX F e -20
+KPX F comma -175
+KPX F a -20
+KPX F A -75
+
+KPX G period -40
+KPX G comma -40
+KPX G Y -15
+
+KPX J period -15
+KPX J a -20
+KPX J A -30
+
+KPX K y -25
+KPX K u -35
+KPX K o -45
+KPX K e -20
+KPX K O -30
+
+KPX L y -23
+KPX L quoteright -100
+KPX L quotedblright -100
+KPX L Y -80
+KPX L W -55
+KPX L V -113
+KPX L T -46
+
+KPX O period -50
+KPX O comma -50
+KPX O Y -40
+KPX O X -30
+KPX O W -20
+KPX O V -45
+KPX O T -15
+KPX O A -60
+
+KPX P period -240
+KPX P o -20
+KPX P e -20
+KPX P comma -240
+KPX P a -20
+KPX P A -100
+
+KPX R Y -10
+KPX R W 10
+KPX R V -10
+KPX R T 15
+
+KPX T y -30
+KPX T w -55
+KPX T u -46
+KPX T semicolon -29
+KPX T r -30
+KPX T period -91
+KPX T o -49
+KPX T hyphen -75
+KPX T e -49
+KPX T comma -82
+KPX T colon -15
+KPX T a -70
+KPX T O -15
+KPX T A -25
+
+KPX U period -20
+KPX U comma -20
+KPX U A -40
+
+KPX V u -55
+KPX V semicolon -33
+KPX V period -145
+KPX V o -101
+KPX V i -35
+KPX V hyphen -90
+KPX V e -101
+KPX V comma -145
+KPX V colon -18
+KPX V a -104
+KPX V O -45
+KPX V G -20
+KPX V A -102
+
+KPX W y -20
+KPX W u -30
+KPX W semicolon -33
+KPX W period -106
+KPX W o -46
+KPX W i -10
+KPX W hyphen -50
+KPX W e -47
+KPX W comma -106
+KPX W colon -15
+KPX W a -50
+KPX W O -20
+KPX W A -58
+
+KPX Y u -85
+KPX Y semicolon -23
+KPX Y period -145
+KPX Y o -89
+KPX Y i -15
+KPX Y hyphen -105
+KPX Y e -89
+KPX Y comma -145
+KPX Y colon -10
+KPX Y a -93
+KPX Y O -40
+KPX Y A -80
+
+KPX a t 5
+KPX a p 20
+KPX a b 5
+
+KPX b y -20
+KPX b v -20
+KPX b u -10
+
+KPX c y -20
+KPX c k -15
+
+KPX comma space -70
+KPX comma quoteright -100
+KPX comma quotedblright -100
+
+KPX e y -20
+KPX e w -20
+KPX e v -20
+
+KPX f period -50
+KPX f o -20
+KPX f l -30
+KPX f i -30
+KPX f f -15
+KPX f dotlessi -30
+KPX f comma -50
+KPX f a -20
+
+KPX g a -15
+
+KPX h y -30
+
+KPX k y -25
+KPX k o -45
+KPX k e -35
+
+KPX l w -20
+
+KPX m y -20
+KPX m u -20
+
+KPX n y -15
+KPX n v -30
+KPX n u -15
+
+KPX o y -20
+KPX o x -15
+KPX o w -20
+KPX o v -30
+KPX o period -25
+KPX o comma -25
+
+KPX p y -20
+KPX p period -25
+KPX p comma -25
+
+KPX period space -70
+KPX period quoteright -100
+KPX period quotedblright -100
+
+KPX quotedblleft A -85
+
+KPX quotedblright space -100
+
+KPX quoteleft quoteleft -121
+KPX quoteleft A -85
+
+KPX quoteright v -20
+KPX quoteright t 10
+KPX quoteright space -100
+KPX quoteright s -15
+KPX quoteright r -20
+KPX quoteright quoteright -121
+KPX quoteright d -70
+
+KPX r y 40
+KPX r v 40
+KPX r u 20
+KPX r t 40
+KPX r s 20
+KPX r q -8
+KPX r period -73
+KPX r p 20
+KPX r o -20
+KPX r n 21
+KPX r m 28
+KPX r l 20
+KPX r k 20
+KPX r i 20
+KPX r hyphen -60
+KPX r g 1
+KPX r e -4
+KPX r d -6
+KPX r comma -75
+KPX r c -7
+
+KPX s t 15
+KPX s period 20
+KPX s comma 20
+
+KPX space quoteleft -100
+KPX space quotedblleft -100
+KPX space Y -60
+KPX space W -25
+KPX space V -80
+KPX space T -25
+KPX space A -20
+
+KPX u z 15
+
+KPX v period -90
+KPX v o -20
+KPX v e -20
+KPX v comma -90
+KPX v a -30
+
+KPX w period -90
+KPX w o -30
+KPX w h 15
+KPX w e -20
+KPX w comma -90
+KPX w a -30
+
+KPX x i 15
+
+KPX y period -85
+KPX y o -30
+KPX y e -20
+KPX y comma -100
+KPX y a -30
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 65 161 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 65 161 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 65 161 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 65 161 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 65 151 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 65 166 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute -17 166 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex -17 166 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis -17 166 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave -17 166 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute -109 166 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex -149 166 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis -149 166 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave -189 166 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 92 166 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 146 166 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 146 166 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 146 166 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 146 166 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 146 166 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron -28 166 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 69 166 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 44 166 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 44 166 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 19 166 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 44 166 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 19 166 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron -26 166 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 69 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 69 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 69 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 69 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 69 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 69 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 44 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 44 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 44 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 44 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -118 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -158 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -158 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -198 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 35 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 60 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 60 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 60 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 60 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 60 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron -65 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 60 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 35 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 35 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 10 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 35 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 10 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron -54 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/AG-Md+ b/font/font/AG-Md+
new file mode 100644
index 0000000..abba01c
--- /dev/null
+++ b/font/font/AG-Md+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 782 ; N Ccaron ; B 38 -14 759 950 ;
+C -1 ; WX 627 ; N ccaron ; B 38 -14 595 774 ;
+C -1 ; WX 732 ; N Dcaron ; B 65 0 683 950 ;
+C -1 ; WX 760 ; N dcaron ; B 38 -14 734 814 ;
+C -1 ; WX 520 ; N Ecaron ; B 65 0 464 950 ;
+C -1 ; WX 642 ; N ecaron ; B 39 -14 605 774 ;
+C -1 ; WX 444 ; N Lcaron ; B 79 0 444 814 ;
+C -1 ; WX 444 ; N Lacute ; B 79 0 444 1011 ;
+C -1 ; WX 311 ; N lcaron ; B 67 0 285 814 ;
+C -1 ; WX 238 ; N lacute ; B 33 0 300 1011 ;
+C -1 ; WX 738 ; N Ncaron ; B 75 0 663 950 ;
+C -1 ; WX 624 ; N ncaron ; B 66 0 558 774 ;
+C -1 ; WX 594 ; N Rcaron ; B 65 0 559 950 ;
+C -1 ; WX 594 ; N Racute ; B 65 0 559 1011 ;
+C -1 ; WX 320 ; N rcaron ; B -29 0 350 774 ;
+C -1 ; WX 320 ; N racute ; B 67 0 341 814 ;
+C -1 ; WX 407 ; N Tcaron ; B 7 0 399 950 ;
+C -1 ; WX 350 ; N tcaron ; B 4 0 388 740 ;
+C -1 ; WX 643 ; N Uring ; B 73 -14 569 950 ;
+C -1 ; WX 624 ; N uring ; B 66 -14 557 831 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 185 176 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 64 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 88 176 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 543 74 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron -17 176 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 43 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 106 74 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute -55 197 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 94 74 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute -131 197 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 91 176 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 34 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 19 176 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 70 197 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron -117 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute -90 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron -74 176 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 197 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 44 119 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 34 0 ;
+EndBuildComposites
diff --git a/font/font/AG-MdO b/font/font/AG-MdO
new file mode 100644
index 0000000..c2b0eb8
--- /dev/null
+++ b/font/font/AG-MdO
@@ -0,0 +1,581 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1991 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Tue Feb 19 18:22:11 1991
+Comment UniqueID 34235
+Comment VMusage 6123 38590
+FontName AvantGarde-MediumObl
+FullName ITC Avant Garde Gothic Medium Oblique
+FamilyName ITC Avant Garde Gothic
+Weight Medium
+ItalicAngle -10.5
+IsFixedPitch false
+FontBBox -98 -257 1209 982
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.000
+Notice Copyright (c) 1991 Adobe Systems Incorporated. All Rights Reserved.ITC Avant Garde Gothic is a registered trademark of International Typeface Corporation.
+EncodingScheme AdobeStandardEncoding
+CapHeight 740
+XHeight 554
+Ascender 740
+Descender -185
+StartCharMetrics 228
+C 32 ; WX 277 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 277 ; N exclam ; B 87 0 328 740 ;
+C 34 ; WX 325 ; N quotedbl ; B 121 444 443 740 ;
+C 35 ; WX 555 ; N numbersign ; B 68 0 616 700 ;
+C 36 ; WX 555 ; N dollar ; B 108 -82 579 823 ;
+C 37 ; WX 837 ; N percent ; B 155 -13 818 751 ;
+C 38 ; WX 684 ; N ampersand ; B 69 -14 732 754 ;
+C 39 ; WX 277 ; N quoteright ; B 178 490 328 740 ;
+C 40 ; WX 407 ; N parenleft ; B 92 -257 491 755 ;
+C 41 ; WX 407 ; N parenright ; B 8 -257 407 755 ;
+C 42 ; WX 573 ; N asterisk ; B 203 377 585 740 ;
+C 43 ; WX 600 ; N plus ; B 85 0 609 506 ;
+C 44 ; WX 277 ; N comma ; B 63 -127 214 122 ;
+C 45 ; WX 280 ; N hyphen ; B 44 237 343 341 ;
+C 46 ; WX 277 ; N period ; B 87 0 214 122 ;
+C 47 ; WX 499 ; N slash ; B 22 -100 580 740 ;
+C 48 ; WX 555 ; N zero ; B 76 -14 617 755 ;
+C 49 ; WX 555 ; N one ; B 257 0 498 740 ;
+C 50 ; WX 555 ; N two ; B 41 0 603 754 ;
+C 51 ; WX 555 ; N three ; B 59 -14 575 754 ;
+C 52 ; WX 555 ; N four ; B 33 0 591 740 ;
+C 53 ; WX 555 ; N five ; B 65 -14 596 740 ;
+C 54 ; WX 555 ; N six ; B 66 -14 588 740 ;
+C 55 ; WX 555 ; N seven ; B 113 0 637 740 ;
+C 56 ; WX 555 ; N eight ; B 79 -14 584 754 ;
+C 57 ; WX 555 ; N nine ; B 104 0 625 754 ;
+C 58 ; WX 277 ; N colon ; B 87 0 294 555 ;
+C 59 ; WX 277 ; N semicolon ; B 63 -127 294 555 ;
+C 60 ; WX 600 ; N less ; B 85 -8 649 514 ;
+C 61 ; WX 600 ; N equal ; B 65 92 629 414 ;
+C 62 ; WX 600 ; N greater ; B 45 -8 609 514 ;
+C 63 ; WX 518 ; N question ; B 130 0 580 754 ;
+C 64 ; WX 760 ; N at ; B 72 -13 834 753 ;
+C 65 ; WX 684 ; N A ; B 13 0 672 740 ;
+C 66 ; WX 580 ; N B ; B 75 0 600 740 ;
+C 67 ; WX 782 ; N C ; B 101 -14 861 754 ;
+C 68 ; WX 732 ; N D ; B 65 0 757 740 ;
+C 69 ; WX 520 ; N E ; B 65 0 601 740 ;
+C 70 ; WX 482 ; N F ; B 65 0 576 740 ;
+C 71 ; WX 831 ; N G ; B 100 -14 867 754 ;
+C 72 ; WX 670 ; N H ; B 75 0 733 740 ;
+C 73 ; WX 257 ; N I ; B 75 0 320 740 ;
+C 74 ; WX 487 ; N J ; B 27 -14 545 740 ;
+C 75 ; WX 618 ; N K ; B 90 0 751 740 ;
+C 76 ; WX 444 ; N L ; B 79 0 462 740 ;
+C 77 ; WX 934 ; N M ; B 75 0 997 740 ;
+C 78 ; WX 738 ; N N ; B 75 0 800 740 ;
+C 79 ; WX 846 ; N O ; B 100 -14 883 754 ;
+C 80 ; WX 559 ; N P ; B 65 0 640 740 ;
+C 81 ; WX 837 ; N Q ; B 100 -14 875 754 ;
+C 82 ; WX 594 ; N R ; B 65 0 657 740 ;
+C 83 ; WX 499 ; N S ; B 54 -14 564 754 ;
+C 84 ; WX 407 ; N T ; B 126 0 536 740 ;
+C 85 ; WX 643 ; N U ; B 112 -14 706 740 ;
+C 86 ; WX 684 ; N V ; B 149 0 809 740 ;
+C 87 ; WX 906 ; N W ; B 153 0 1027 740 ;
+C 88 ; WX 648 ; N X ; B 11 0 773 740 ;
+C 89 ; WX 593 ; N Y ; B 150 0 716 740 ;
+C 90 ; WX 462 ; N Z ; B 4 0 583 740 ;
+C 91 ; WX 407 ; N bracketleft ; B 124 -257 469 755 ;
+C 92 ; WX 499 ; N backslash ; B 193 -100 439 740 ;
+C 93 ; WX 407 ; N bracketright ; B 30 -257 374 755 ;
+C 94 ; WX 600 ; N asciicircum ; B 132 355 600 740 ;
+C 95 ; WX 500 ; N underscore ; B -23 -125 486 -75 ;
+C 96 ; WX 277 ; N quoteleft ; B 177 490 327 740 ;
+C 97 ; WX 693 ; N a ; B 84 -14 729 569 ;
+C 98 ; WX 688 ; N b ; B 67 -14 706 740 ;
+C 99 ; WX 627 ; N c ; B 84 -14 664 569 ;
+C 100 ; WX 687 ; N d ; B 84 -14 757 740 ;
+C 101 ; WX 642 ; N e ; B 86 -14 662 569 ;
+C 102 ; WX 277 ; N f ; B 70 0 408 740 ; L i fi ; L l fl ;
+C 103 ; WX 697 ; N g ; B 50 -218 734 569 ;
+C 104 ; WX 622 ; N h ; B 66 0 624 740 ;
+C 105 ; WX 238 ; N i ; B 67 0 308 740 ;
+C 106 ; WX 249 ; N j ; B -29 -218 321 740 ;
+C 107 ; WX 546 ; N k ; B 77 0 606 740 ;
+C 108 ; WX 238 ; N l ; B 67 0 308 740 ;
+C 109 ; WX 971 ; N m ; B 67 0 973 569 ;
+C 110 ; WX 624 ; N n ; B 66 0 624 569 ;
+C 111 ; WX 675 ; N o ; B 85 -14 692 569 ;
+C 112 ; WX 686 ; N p ; B 33 -185 704 569 ;
+C 113 ; WX 687 ; N q ; B 86 -185 723 569 ;
+C 114 ; WX 320 ; N r ; B 67 0 412 569 ;
+C 115 ; WX 424 ; N s ; B 50 -14 467 569 ;
+C 116 ; WX 277 ; N t ; B 79 0 377 740 ;
+C 117 ; WX 624 ; N u ; B 104 -14 660 554 ;
+C 118 ; WX 537 ; N v ; B 116 0 627 554 ;
+C 119 ; WX 795 ; N w ; B 116 0 885 554 ;
+C 120 ; WX 518 ; N x ; B 2 0 607 554 ;
+C 121 ; WX 574 ; N y ; B 113 -185 667 554 ;
+C 122 ; WX 407 ; N z ; B 3 0 486 554 ;
+C 123 ; WX 333 ; N braceleft ; B 57 -198 445 740 ;
+C 124 ; WX 555 ; N bar ; B 202 -100 471 740 ;
+C 125 ; WX 333 ; N braceright ; B -12 -198 377 740 ;
+C 126 ; WX 600 ; N asciitilde ; B 115 167 579 339 ;
+C 161 ; WX 277 ; N exclamdown ; B 52 -185 293 555 ;
+C 162 ; WX 555 ; N cent ; B 110 69 607 740 ;
+C 163 ; WX 555 ; N sterling ; B 42 0 617 754 ;
+C 164 ; WX 186 ; N fraction ; B -98 0 420 740 ;
+C 165 ; WX 555 ; N yen ; B 57 0 692 740 ;
+C 166 ; WX 555 ; N florin ; B -13 -157 673 829 ;
+C 167 ; WX 573 ; N section ; B 63 -222 596 754 ;
+C 168 ; WX 555 ; N currency ; B 52 72 624 574 ;
+C 169 ; WX 218 ; N quotesingle ; B 156 444 301 740 ;
+C 170 ; WX 425 ; N quotedblleft ; B 174 490 480 740 ;
+C 171 ; WX 370 ; N guillemotleft ; B 77 102 425 475 ;
+C 172 ; WX 205 ; N guilsinglleft ; B 78 102 259 475 ;
+C 173 ; WX 205 ; N guilsinglright ; B 53 102 234 475 ;
+C 174 ; WX 486 ; N fi ; B 70 0 556 740 ;
+C 175 ; WX 486 ; N fl ; B 70 0 556 740 ;
+C 177 ; WX 500 ; N endash ; B 79 237 528 341 ;
+C 178 ; WX 573 ; N dagger ; B 149 -222 610 740 ;
+C 179 ; WX 573 ; N daggerdbl ; B 71 -222 616 740 ;
+C 180 ; WX 277 ; N periodcentered ; B 130 200 241 308 ;
+C 182 ; WX 638 ; N paragraph ; B 95 -191 665 700 ;
+C 183 ; WX 606 ; N bullet ; B 217 222 528 532 ;
+C 184 ; WX 277 ; N quotesinglbase ; B 63 -128 214 122 ;
+C 185 ; WX 425 ; N quotedblbase ; B 58 -128 365 122 ;
+C 186 ; WX 425 ; N quotedblright ; B 173 490 479 740 ;
+C 187 ; WX 370 ; N guillemotright ; B 52 102 400 475 ;
+C 188 ; WX 1000 ; N ellipsis ; B 115 0 908 122 ;
+C 189 ; WX 1228 ; N perthousand ; B 155 -13 1209 751 ;
+C 191 ; WX 518 ; N questiondown ; B 41 -199 491 555 ;
+C 193 ; WX 555 ; N grave ; B 261 611 519 814 ;
+C 194 ; WX 555 ; N acute ; B 291 611 567 814 ;
+C 195 ; WX 555 ; N circumflex ; B 205 632 584 767 ;
+C 196 ; WX 555 ; N tilde ; B 225 636 587 745 ;
+C 197 ; WX 555 ; N macron ; B 222 659 591 734 ;
+C 198 ; WX 555 ; N breve ; B 228 636 607 756 ;
+C 199 ; WX 555 ; N dotaccent ; B 343 636 469 758 ;
+C 200 ; WX 555 ; N dieresis ; B 266 636 547 758 ;
+C 202 ; WX 555 ; N ring ; B 299 610 523 831 ;
+C 203 ; WX 555 ; N cedilla ; B 152 -246 347 0 ;
+C 205 ; WX 555 ; N hungarumlaut ; B 214 632 640 767 ;
+C 206 ; WX 555 ; N ogonek ; B 166 -202 345 0 ;
+C 207 ; WX 555 ; N caron ; B 231 632 610 774 ;
+C 208 ; WX 1000 ; N emdash ; B 79 237 1028 341 ;
+C 225 ; WX 930 ; N AE ; B 0 0 1003 740 ;
+C 227 ; WX 385 ; N ordfeminine ; B 120 430 484 754 ;
+C 232 ; WX 444 ; N Lslash ; B 50 0 462 740 ;
+C 233 ; WX 846 ; N Oslash ; B 88 -65 900 802 ;
+C 234 ; WX 1094 ; N OE ; B 99 -14 1185 754 ;
+C 235 ; WX 385 ; N ordmasculine ; B 134 430 471 754 ;
+C 241 ; WX 1131 ; N ae ; B 85 -14 1150 569 ;
+C 245 ; WX 238 ; N dotlessi ; B 67 0 274 554 ;
+C 248 ; WX 284 ; N lslash ; B 71 0 372 740 ;
+C 249 ; WX 675 ; N oslash ; B 84 -69 693 623 ;
+C 250 ; WX 1144 ; N oe ; B 85 -14 1164 569 ;
+C 251 ; WX 640 ; N germandbls ; B 66 -14 646 754 ;
+C -1 ; WX 642 ; N ecircumflex ; B 86 -14 662 767 ;
+C -1 ; WX 642 ; N edieresis ; B 86 -14 662 758 ;
+C -1 ; WX 693 ; N aacute ; B 84 -14 729 814 ;
+C -1 ; WX 800 ; N registered ; B 80 -12 857 752 ;
+C -1 ; WX 238 ; N icircumflex ; B 47 0 426 767 ;
+C -1 ; WX 624 ; N udieresis ; B 104 -14 660 758 ;
+C -1 ; WX 675 ; N ograve ; B 85 -14 692 814 ;
+C -1 ; WX 624 ; N uacute ; B 104 -14 660 814 ;
+C -1 ; WX 624 ; N ucircumflex ; B 104 -14 660 767 ;
+C -1 ; WX 684 ; N Aacute ; B 13 0 672 975 ;
+C -1 ; WX 238 ; N igrave ; B 63 0 321 814 ;
+C -1 ; WX 257 ; N Icircumflex ; B 75 0 466 933 ;
+C -1 ; WX 627 ; N ccedilla ; B 84 -246 664 569 ;
+C -1 ; WX 693 ; N adieresis ; B 84 -14 729 758 ;
+C -1 ; WX 520 ; N Ecircumflex ; B 65 0 601 933 ;
+C -1 ; WX 424 ; N scaron ; B 50 -14 545 774 ;
+C -1 ; WX 686 ; N thorn ; B 33 -185 704 740 ;
+C -1 ; WX 990 ; N trademark ; B 115 288 1033 700 ;
+C -1 ; WX 642 ; N egrave ; B 86 -14 662 814 ;
+C -1 ; WX 351 ; N threesuperior ; B 93 286 414 750 ;
+C -1 ; WX 407 ; N zcaron ; B 3 0 556 774 ;
+C -1 ; WX 693 ; N atilde ; B 84 -14 729 745 ;
+C -1 ; WX 693 ; N aring ; B 84 -14 729 831 ;
+C -1 ; WX 675 ; N ocircumflex ; B 85 -14 692 767 ;
+C -1 ; WX 520 ; N Edieresis ; B 65 0 601 924 ;
+C -1 ; WX 781 ; N threequarters ; B 93 0 799 750 ;
+C -1 ; WX 574 ; N ydieresis ; B 113 -185 667 758 ;
+C -1 ; WX 574 ; N yacute ; B 113 -185 667 814 ;
+C -1 ; WX 238 ; N iacute ; B 67 0 449 814 ;
+C -1 ; WX 684 ; N Acircumflex ; B 13 0 679 928 ;
+C -1 ; WX 643 ; N Uacute ; B 112 -14 706 980 ;
+C -1 ; WX 642 ; N eacute ; B 86 -14 662 814 ;
+C -1 ; WX 846 ; N Ograve ; B 100 -14 883 980 ;
+C -1 ; WX 693 ; N agrave ; B 84 -14 729 814 ;
+C -1 ; WX 643 ; N Udieresis ; B 112 -14 706 924 ;
+C -1 ; WX 693 ; N acircumflex ; B 84 -14 729 767 ;
+C -1 ; WX 257 ; N Igrave ; B 75 0 361 980 ;
+C -1 ; WX 351 ; N twosuperior ; B 83 296 431 750 ;
+C -1 ; WX 643 ; N Ugrave ; B 112 -14 706 980 ;
+C -1 ; WX 700 ; N onequarter ; B 127 0 718 740 ;
+C -1 ; WX 643 ; N Ucircumflex ; B 112 -14 706 933 ;
+C -1 ; WX 499 ; N Scaron ; B 54 -14 613 940 ;
+C -1 ; WX 257 ; N Idieresis ; B 75 0 429 924 ;
+C -1 ; WX 238 ; N idieresis ; B 67 0 389 758 ;
+C -1 ; WX 520 ; N Egrave ; B 65 0 601 980 ;
+C -1 ; WX 846 ; N Oacute ; B 100 -14 883 980 ;
+C -1 ; WX 600 ; N divide ; B 85 0 609 506 ;
+C -1 ; WX 684 ; N Atilde ; B 13 0 683 911 ;
+C -1 ; WX 684 ; N Aring ; B 13 0 672 982 ;
+C -1 ; WX 846 ; N Odieresis ; B 100 -14 883 924 ;
+C -1 ; WX 684 ; N Adieresis ; B 13 0 672 919 ;
+C -1 ; WX 738 ; N Ntilde ; B 75 0 800 911 ;
+C -1 ; WX 462 ; N Zcaron ; B 4 0 615 940 ;
+C -1 ; WX 559 ; N Thorn ; B 65 0 613 740 ;
+C -1 ; WX 257 ; N Iacute ; B 75 0 489 980 ;
+C -1 ; WX 600 ; N plusminus ; B 38 -52 623 546 ;
+C -1 ; WX 600 ; N multiply ; B 77 14 617 492 ;
+C -1 ; WX 520 ; N Eacute ; B 65 0 601 980 ;
+C -1 ; WX 593 ; N Ydieresis ; B 150 0 716 924 ;
+C -1 ; WX 351 ; N onesuperior ; B 214 296 376 740 ;
+C -1 ; WX 624 ; N ugrave ; B 104 -14 660 814 ;
+C -1 ; WX 600 ; N logicalnot ; B 105 108 629 414 ;
+C -1 ; WX 624 ; N ntilde ; B 66 0 624 745 ;
+C -1 ; WX 846 ; N Otilde ; B 100 -14 883 911 ;
+C -1 ; WX 675 ; N otilde ; B 85 -14 692 745 ;
+C -1 ; WX 782 ; N Ccedilla ; B 101 -246 861 754 ;
+C -1 ; WX 684 ; N Agrave ; B 13 0 672 975 ;
+C -1 ; WX 714 ; N onehalf ; B 101 0 757 740 ;
+C -1 ; WX 732 ; N Eth ; B 62 0 757 740 ;
+C -1 ; WX 400 ; N degree ; B 160 426 451 712 ;
+C -1 ; WX 593 ; N Yacute ; B 150 0 716 980 ;
+C -1 ; WX 846 ; N Ocircumflex ; B 100 -14 883 933 ;
+C -1 ; WX 675 ; N oacute ; B 85 -14 692 814 ;
+C -1 ; WX 624 ; N mu ; B 40 -185 653 554 ;
+C -1 ; WX 600 ; N minus ; B 85 201 609 305 ;
+C -1 ; WX 675 ; N eth ; B 85 -14 698 754 ;
+C -1 ; WX 675 ; N odieresis ; B 85 -14 692 758 ;
+C -1 ; WX 800 ; N copyright ; B 80 -12 857 752 ;
+C -1 ; WX 555 ; N brokenbar ; B 202 -100 471 740 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 223
+
+KPX A y -50
+KPX A w -65
+KPX A v -70
+KPX A u -20
+KPX A quoteright -85
+KPX A quotedblright -85
+KPX A Y -80
+KPX A W -60
+KPX A V -102
+KPX A U -40
+KPX A T -25
+KPX A Q -40
+KPX A O -50
+KPX A G -40
+KPX A C -40
+
+KPX B A -10
+
+KPX C A -40
+
+KPX D period -50
+KPX D comma -50
+KPX D Y -45
+KPX D W -30
+KPX D V -50
+KPX D A -50
+
+KPX F period -175
+KPX F e -20
+KPX F comma -175
+KPX F a -20
+KPX F A -75
+
+KPX G period -40
+KPX G comma -40
+KPX G Y -15
+
+KPX J period -15
+KPX J a -20
+KPX J A -30
+
+KPX K y -25
+KPX K u -35
+KPX K o -45
+KPX K e -20
+KPX K O -30
+
+KPX L y -23
+KPX L quoteright -100
+KPX L quotedblright -100
+KPX L Y -80
+KPX L W -55
+KPX L V -113
+KPX L T -46
+
+KPX O period -50
+KPX O comma -50
+KPX O Y -40
+KPX O X -30
+KPX O W -20
+KPX O V -45
+KPX O T -15
+KPX O A -60
+
+KPX P period -240
+KPX P o -20
+KPX P e -20
+KPX P comma -240
+KPX P a -20
+KPX P A -100
+
+KPX R Y -10
+KPX R W 10
+KPX R V -10
+KPX R T 15
+
+KPX T y -30
+KPX T w -55
+KPX T u -46
+KPX T semicolon -29
+KPX T r -30
+KPX T period -91
+KPX T o -49
+KPX T hyphen -75
+KPX T e -49
+KPX T comma -82
+KPX T colon -15
+KPX T a -70
+KPX T O -15
+KPX T A -25
+
+KPX U period -20
+KPX U comma -20
+KPX U A -40
+
+KPX V u -55
+KPX V semicolon -33
+KPX V period -145
+KPX V o -101
+KPX V i -35
+KPX V hyphen -90
+KPX V e -101
+KPX V comma -145
+KPX V colon -18
+KPX V a -104
+KPX V O -45
+KPX V G -20
+KPX V A -102
+
+KPX W y -20
+KPX W u -30
+KPX W semicolon -33
+KPX W period -106
+KPX W o -46
+KPX W i -10
+KPX W hyphen -50
+KPX W e -47
+KPX W comma -106
+KPX W colon -15
+KPX W a -50
+KPX W O -20
+KPX W A -58
+
+KPX Y u -85
+KPX Y semicolon -23
+KPX Y period -145
+KPX Y o -89
+KPX Y i -15
+KPX Y hyphen -105
+KPX Y e -89
+KPX Y comma -145
+KPX Y colon -10
+KPX Y a -93
+KPX Y O -40
+KPX Y A -80
+
+KPX a t 5
+KPX a p 20
+KPX a b 5
+
+KPX b y -20
+KPX b v -20
+KPX b u -10
+
+KPX c y -20
+KPX c k -15
+
+KPX comma space -70
+KPX comma quoteright -100
+KPX comma quotedblright -100
+
+KPX e y -20
+KPX e w -20
+KPX e v -20
+
+KPX f period -50
+KPX f o -20
+KPX f l -30
+KPX f i -30
+KPX f f -15
+KPX f dotlessi -30
+KPX f comma -50
+KPX f a -20
+
+KPX g a -15
+
+KPX h y -30
+
+KPX k y -25
+KPX k o -45
+KPX k e -35
+
+KPX l w -20
+
+KPX m y -20
+KPX m u -20
+
+KPX n y -15
+KPX n v -30
+KPX n u -15
+
+KPX o y -20
+KPX o x -15
+KPX o w -20
+KPX o v -30
+KPX o period -25
+KPX o comma -25
+
+KPX p y -20
+KPX p period -25
+KPX p comma -25
+
+KPX period space -70
+KPX period quoteright -100
+KPX period quotedblright -100
+
+KPX quotedblleft A -85
+
+KPX quotedblright space -100
+
+KPX quoteleft quoteleft -121
+KPX quoteleft A -85
+
+KPX quoteright v -20
+KPX quoteright t 10
+KPX quoteright space -100
+KPX quoteright s -15
+KPX quoteright r -20
+KPX quoteright quoteright -121
+KPX quoteright d -70
+
+KPX r y 40
+KPX r v 40
+KPX r u 20
+KPX r t 40
+KPX r s 20
+KPX r q -8
+KPX r period -73
+KPX r p 20
+KPX r o -20
+KPX r n 21
+KPX r m 28
+KPX r l 20
+KPX r k 20
+KPX r i 20
+KPX r hyphen -60
+KPX r g 1
+KPX r e -4
+KPX r d -6
+KPX r comma -75
+KPX r c -7
+
+KPX s t 15
+KPX s period 20
+KPX s comma 20
+
+KPX space quoteleft -100
+KPX space quotedblleft -100
+KPX space Y -60
+KPX space W -25
+KPX space V -80
+KPX space T -25
+KPX space A -20
+
+KPX u z 15
+
+KPX v period -90
+KPX v o -20
+KPX v e -20
+KPX v comma -90
+KPX v a -30
+
+KPX w period -90
+KPX w o -30
+KPX w h 15
+KPX w e -20
+KPX w comma -90
+KPX w a -30
+
+KPX x i 15
+
+KPX y period -85
+KPX y o -30
+KPX y e -20
+KPX y comma -100
+KPX y a -30
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 95 161 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 95 161 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 95 161 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 95 161 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 93 151 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 96 166 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 14 166 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 14 166 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 14 166 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 14 166 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute -78 166 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex -118 166 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis -118 166 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave -158 166 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 123 166 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 177 166 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 177 166 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 177 166 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 177 166 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 177 166 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 3 166 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 100 166 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 75 166 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 75 166 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 50 166 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 75 166 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 50 166 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 5 166 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 69 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 69 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 69 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 69 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 69 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 69 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 44 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 44 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 44 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 44 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -118 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -158 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -158 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -198 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 35 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 60 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 60 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 60 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 60 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 60 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron -65 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 60 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 35 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 35 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 10 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 35 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 10 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron -54 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/AG-MdO+ b/font/font/AG-MdO+
new file mode 100644
index 0000000..aa8b908
--- /dev/null
+++ b/font/font/AG-MdO+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 782 ; N Ccaron ; B 101 -14 861 950 ;
+C -1 ; WX 627 ; N ccaron ; B 84 -14 675 774 ;
+C -1 ; WX 732 ; N Dcaron ; B 65 0 757 950 ;
+C -1 ; WX 792 ; N dcaron ; B 84 -14 922 814 ;
+C -1 ; WX 520 ; N Ecaron ; B 65 0 624 950 ;
+C -1 ; WX 642 ; N ecaron ; B 86 -14 662 774 ;
+C -1 ; WX 444 ; N Lcaron ; B 79 0 485 814 ;
+C -1 ; WX 444 ; N Lacute ; B 79 0 546 1011 ;
+C -1 ; WX 343 ; N lcaron ; B 67 0 473 814 ;
+C -1 ; WX 238 ; N lacute ; B 67 0 471 1011 ;
+C -1 ; WX 738 ; N Ncaron ; B 75 0 800 950 ;
+C -1 ; WX 624 ; N ncaron ; B 66 0 644 774 ;
+C -1 ; WX 594 ; N Rcaron ; B 65 0 660 950 ;
+C -1 ; WX 594 ; N Racute ; B 65 0 672 1011 ;
+C -1 ; WX 320 ; N rcaron ; B 67 0 493 774 ;
+C -1 ; WX 320 ; N racute ; B 67 0 478 814 ;
+C -1 ; WX 407 ; N Tcaron ; B 126 0 567 950 ;
+C -1 ; WX 382 ; N tcaron ; B 79 0 542 740 ;
+C -1 ; WX 643 ; N Uring ; B 112 -14 706 950 ;
+C -1 ; WX 624 ; N uring ; B 104 -14 660 831 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 220 176 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 65 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 119 176 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 594 74 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 14 176 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 43 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 157 74 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute -21 197 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 145 74 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute -96 197 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 122 176 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 34 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 50 176 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 105 197 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron -117 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute -89 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron -43 176 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 214 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 64 119 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 34 0 ;
+EndBuildComposites
diff --git a/font/font/Bk-Bd b/font/font/Bk-Bd
new file mode 100644
index 0000000..f79b0e3
--- /dev/null
+++ b/font/font/Bk-Bd
@@ -0,0 +1,510 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1990 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Thu Jun 28 14:55:37 1990
+Comment UniqueID 31726
+Comment VMusage 31065 37957
+FontName Bookman-Bold
+FullName ITC Bookman Bold
+FamilyName ITC Bookman
+Weight Bold
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -169 -236 1221 968
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.000
+Notice Copyright (c) 1990 Adobe Systems Incorporated. All Rights Reserved.ITC Bookman is a trademark of International Typeface Corporation.
+EncodingScheme AdobeStandardEncoding
+CapHeight 681
+XHeight 490
+Ascender 706
+Descender -226
+StartCharMetrics 228
+C 32 ; WX 362 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 388 ; N exclam ; B 71 -13 317 681 ;
+C 34 ; WX 500 ; N quotedbl ; B 99 392 401 694 ;
+C 35 ; WX 724 ; N numbersign ; B 113 0 611 674 ;
+C 36 ; WX 724 ; N dollar ; B 71 -105 653 773 ;
+C 37 ; WX 870 ; N percent ; B 32 -16 838 690 ;
+C 38 ; WX 833 ; N ampersand ; B 30 -13 829 694 ;
+C 39 ; WX 278 ; N quoteright ; B 47 392 231 694 ;
+C 40 ; WX 332 ; N parenleft ; B 44 -214 270 688 ;
+C 41 ; WX 332 ; N parenright ; B 62 -214 288 688 ;
+C 42 ; WX 500 ; N asterisk ; B 55 254 445 694 ;
+C 43 ; WX 600 ; N plus ; B 47 0 553 506 ;
+C 44 ; WX 362 ; N comma ; B 64 -127 298 195 ;
+C 45 ; WX 388 ; N hyphen ; B 31 185 357 343 ;
+C 46 ; WX 362 ; N period ; B 64 -13 298 195 ;
+C 47 ; WX 278 ; N slash ; B -21 -13 299 694 ;
+C 48 ; WX 724 ; N zero ; B 33 -16 691 690 ;
+C 49 ; WX 724 ; N one ; B 144 0 603 674 ;
+C 50 ; WX 724 ; N two ; B 37 0 678 690 ;
+C 51 ; WX 724 ; N three ; B 26 -16 683 690 ;
+C 52 ; WX 724 ; N four ; B 29 0 695 674 ;
+C 53 ; WX 724 ; N five ; B 38 -16 671 712 ;
+C 54 ; WX 724 ; N six ; B 35 -16 689 690 ;
+C 55 ; WX 724 ; N seven ; B 64 0 686 674 ;
+C 56 ; WX 724 ; N eight ; B 42 -16 682 690 ;
+C 57 ; WX 724 ; N nine ; B 35 -16 689 690 ;
+C 58 ; WX 362 ; N colon ; B 64 -13 298 503 ;
+C 59 ; WX 362 ; N semicolon ; B 64 -127 298 503 ;
+C 60 ; WX 600 ; N less ; B 47 -8 553 514 ;
+C 61 ; WX 600 ; N equal ; B 47 76 553 430 ;
+C 62 ; WX 600 ; N greater ; B 47 -8 553 514 ;
+C 63 ; WX 667 ; N question ; B 39 -13 619 694 ;
+C 64 ; WX 800 ; N at ; B 47 -13 753 694 ;
+C 65 ; WX 778 ; N A ; B -10 0 788 681 ;
+C 66 ; WX 778 ; N B ; B 20 0 741 681 ;
+C 67 ; WX 724 ; N C ; B 36 -13 711 694 ;
+C 68 ; WX 833 ; N D ; B 29 0 797 681 ;
+C 69 ; WX 778 ; N E ; B 20 0 764 681 ;
+C 70 ; WX 724 ; N F ; B 20 0 721 681 ;
+C 71 ; WX 833 ; N G ; B 36 -13 810 694 ;
+C 72 ; WX 833 ; N H ; B 20 0 813 681 ;
+C 73 ; WX 444 ; N I ; B 36 0 408 681 ;
+C 74 ; WX 667 ; N J ; B 2 -13 647 681 ;
+C 75 ; WX 833 ; N K ; B 20 0 829 681 ;
+C 76 ; WX 724 ; N L ; B 20 0 708 681 ;
+C 77 ; WX 944 ; N M ; B 24 0 920 681 ;
+C 78 ; WX 778 ; N N ; B 20 0 758 681 ;
+C 79 ; WX 833 ; N O ; B 36 -13 797 694 ;
+C 80 ; WX 724 ; N P ; B 20 0 704 681 ;
+C 81 ; WX 833 ; N Q ; B 36 -226 797 694 ;
+C 82 ; WX 778 ; N R ; B 20 0 772 681 ;
+C 83 ; WX 724 ; N S ; B 34 -13 690 694 ;
+C 84 ; WX 778 ; N T ; B 6 0 772 681 ;
+C 85 ; WX 778 ; N U ; B 17 -13 761 681 ;
+C 86 ; WX 724 ; N V ; B -7 -6 731 681 ;
+C 87 ; WX 944 ; N W ; B -7 -6 951 681 ;
+C 88 ; WX 778 ; N X ; B 2 0 776 681 ;
+C 89 ; WX 724 ; N Y ; B 0 0 734 681 ;
+C 90 ; WX 724 ; N Z ; B 20 0 704 681 ;
+C 91 ; WX 332 ; N bracketleft ; B 61 -207 271 681 ;
+C 92 ; WX 278 ; N backslash ; B -21 -13 299 694 ;
+C 93 ; WX 332 ; N bracketright ; B 61 -207 271 681 ;
+C 94 ; WX 600 ; N asciicircum ; B 43 309 557 674 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 278 ; N quoteleft ; B 47 392 231 694 ;
+C 97 ; WX 612 ; N a ; B 28 -13 629 503 ;
+C 98 ; WX 667 ; N b ; B 13 -13 639 706 ;
+C 99 ; WX 556 ; N c ; B 28 -13 542 503 ;
+C 100 ; WX 667 ; N d ; B 28 -13 654 706 ;
+C 101 ; WX 556 ; N e ; B 28 -13 528 503 ;
+C 102 ; WX 388 ; N f ; B 18 0 445 714 ; L i fi ; L l fl ;
+C 103 ; WX 612 ; N g ; B 20 -236 616 600 ;
+C 104 ; WX 667 ; N h ; B 18 0 649 706 ;
+C 105 ; WX 388 ; N i ; B 34 0 354 706 ;
+C 106 ; WX 332 ; N j ; B -127 -226 280 706 ;
+C 107 ; WX 667 ; N k ; B 6 0 661 706 ;
+C 108 ; WX 332 ; N l ; B 6 0 326 706 ;
+C 109 ; WX 944 ; N m ; B 18 0 926 503 ;
+C 110 ; WX 667 ; N n ; B 18 0 649 503 ;
+C 111 ; WX 612 ; N o ; B 28 -13 584 503 ;
+C 112 ; WX 667 ; N p ; B 13 -226 639 503 ;
+C 113 ; WX 667 ; N q ; B 28 -226 654 503 ;
+C 114 ; WX 500 ; N r ; B 18 0 501 503 ;
+C 115 ; WX 556 ; N s ; B 30 -13 526 503 ;
+C 116 ; WX 444 ; N t ; B -4 -13 454 637 ;
+C 117 ; WX 667 ; N u ; B 18 -13 649 490 ;
+C 118 ; WX 556 ; N v ; B -2 0 558 490 ;
+C 119 ; WX 778 ; N w ; B 5 0 773 490 ;
+C 120 ; WX 612 ; N x ; B 3 0 609 490 ;
+C 121 ; WX 556 ; N y ; B -15 -226 562 490 ;
+C 122 ; WX 612 ; N z ; B 32 0 580 490 ;
+C 123 ; WX 332 ; N braceleft ; B 31 -207 301 681 ;
+C 124 ; WX 222 ; N bar ; B 41 -13 181 694 ;
+C 125 ; WX 332 ; N braceright ; B 31 -207 301 681 ;
+C 126 ; WX 600 ; N asciitilde ; B 69 148 531 358 ;
+C 161 ; WX 388 ; N exclamdown ; B 71 -191 317 503 ;
+C 162 ; WX 724 ; N cent ; B 111 -37 625 699 ;
+C 163 ; WX 724 ; N sterling ; B 16 -16 689 690 ;
+C 164 ; WX 167 ; N fraction ; B -169 -16 336 690 ;
+C 165 ; WX 724 ; N yen ; B 25 0 711 674 ;
+C 166 ; WX 724 ; N florin ; B 4 -236 701 690 ;
+C 167 ; WX 722 ; N section ; B 146 -13 576 694 ;
+C 168 ; WX 724 ; N currency ; B 81 58 643 616 ;
+C 169 ; WX 278 ; N quotesingle ; B 78 392 200 694 ;
+C 170 ; WX 500 ; N quotedblleft ; B 30 392 470 694 ;
+C 171 ; WX 556 ; N guillemotleft ; B 42 70 500 458 ;
+C 172 ; WX 332 ; N guilsinglleft ; B 36 70 288 458 ;
+C 173 ; WX 332 ; N guilsinglright ; B 44 70 296 458 ;
+C 174 ; WX 724 ; N fi ; B 18 0 690 714 ;
+C 175 ; WX 724 ; N fl ; B 18 0 690 714 ;
+C 177 ; WX 500 ; N endash ; B 0 191 500 337 ;
+C 178 ; WX 722 ; N dagger ; B 151 -13 571 694 ;
+C 179 ; WX 722 ; N daggerdbl ; B 165 -13 557 694 ;
+C 180 ; WX 362 ; N periodcentered ; B 73 151 289 367 ;
+C 182 ; WX 620 ; N paragraph ; B 38 0 567 681 ;
+C 183 ; WX 500 ; N bullet ; B 80 170 420 510 ;
+C 184 ; WX 278 ; N quotesinglbase ; B 47 -126 231 176 ;
+C 185 ; WX 500 ; N quotedblbase ; B 30 -126 470 176 ;
+C 186 ; WX 500 ; N quotedblright ; B 30 392 470 694 ;
+C 187 ; WX 556 ; N guillemotright ; B 56 70 514 458 ;
+C 188 ; WX 1000 ; N ellipsis ; B 50 -13 950 195 ;
+C 189 ; WX 1167 ; N perthousand ; B 0 -16 1221 690 ;
+C 191 ; WX 667 ; N questiondown ; B 48 -203 628 503 ;
+C 193 ; WX 332 ; N grave ; B -1 556 251 754 ;
+C 194 ; WX 332 ; N acute ; B 81 556 333 754 ;
+C 195 ; WX 332 ; N circumflex ; B -21 556 353 740 ;
+C 196 ; WX 332 ; N tilde ; B -33 576 365 728 ;
+C 197 ; WX 332 ; N macron ; B -10 594 342 686 ;
+C 198 ; WX 332 ; N breve ; B 4 556 328 726 ;
+C 199 ; WX 332 ; N dotaccent ; B 87 562 245 720 ;
+C 200 ; WX 332 ; N dieresis ; B -23 562 355 720 ;
+C 202 ; WX 332 ; N ring ; B 44 548 288 792 ;
+C 203 ; WX 332 ; N cedilla ; B 43 -226 289 0 ;
+C 205 ; WX 332 ; N hungarumlaut ; B -30 558 442 756 ;
+C 206 ; WX 332 ; N ogonek ; B 83 -226 327 0 ;
+C 207 ; WX 332 ; N caron ; B -21 556 353 740 ;
+C 208 ; WX 1000 ; N emdash ; B 0 191 1000 337 ;
+C 225 ; WX 1000 ; N AE ; B -30 0 986 681 ;
+C 227 ; WX 398 ; N ordfeminine ; B 8 378 420 690 ;
+C 232 ; WX 724 ; N Lslash ; B 20 0 708 681 ;
+C 233 ; WX 833 ; N Oslash ; B 36 -75 797 756 ;
+C 234 ; WX 1000 ; N OE ; B 10 -13 1009 694 ;
+C 235 ; WX 398 ; N ordmasculine ; B 8 378 390 690 ;
+C 241 ; WX 889 ; N ae ; B 31 -13 858 503 ;
+C 245 ; WX 388 ; N dotlessi ; B 34 0 354 490 ;
+C 248 ; WX 332 ; N lslash ; B 6 0 326 706 ;
+C 249 ; WX 612 ; N oslash ; B 28 -111 584 601 ;
+C 250 ; WX 944 ; N oe ; B 31 -13 913 503 ;
+C 251 ; WX 667 ; N germandbls ; B 8 -13 639 690 ;
+C -1 ; WX 724 ; N Zcaron ; B 20 0 704 911 ;
+C -1 ; WX 556 ; N ccedilla ; B 28 -226 542 503 ;
+C -1 ; WX 556 ; N ydieresis ; B -15 -226 562 720 ;
+C -1 ; WX 612 ; N atilde ; B 28 -13 629 728 ;
+C -1 ; WX 388 ; N icircumflex ; B 7 0 381 740 ;
+C -1 ; WX 481 ; N threesuperior ; B 15 268 466 690 ;
+C -1 ; WX 556 ; N ecircumflex ; B 28 -13 528 740 ;
+C -1 ; WX 667 ; N thorn ; B 13 -226 639 706 ;
+C -1 ; WX 556 ; N egrave ; B 28 -13 528 754 ;
+C -1 ; WX 481 ; N twosuperior ; B 21 274 460 690 ;
+C -1 ; WX 556 ; N eacute ; B 28 -13 528 754 ;
+C -1 ; WX 612 ; N otilde ; B 28 -13 584 728 ;
+C -1 ; WX 778 ; N Aacute ; B -10 0 788 925 ;
+C -1 ; WX 612 ; N ocircumflex ; B 28 -13 584 740 ;
+C -1 ; WX 556 ; N yacute ; B -15 -226 562 754 ;
+C -1 ; WX 667 ; N udieresis ; B 18 -13 649 720 ;
+C -1 ; WX 1083 ; N threequarters ; B 29 -16 1080 690 ;
+C -1 ; WX 612 ; N acircumflex ; B 28 -13 629 740 ;
+C -1 ; WX 833 ; N Eth ; B 29 0 797 681 ;
+C -1 ; WX 556 ; N edieresis ; B 28 -13 528 720 ;
+C -1 ; WX 667 ; N ugrave ; B 18 -13 649 754 ;
+C -1 ; WX 1000 ; N trademark ; B -6 281 986 681 ;
+C -1 ; WX 612 ; N ograve ; B 28 -13 584 754 ;
+C -1 ; WX 556 ; N scaron ; B 30 -13 526 740 ;
+C -1 ; WX 444 ; N Idieresis ; B 33 0 411 891 ;
+C -1 ; WX 667 ; N uacute ; B 18 -13 649 754 ;
+C -1 ; WX 612 ; N agrave ; B 28 -13 629 754 ;
+C -1 ; WX 667 ; N ntilde ; B 18 0 649 728 ;
+C -1 ; WX 612 ; N aring ; B 28 -13 629 792 ;
+C -1 ; WX 612 ; N zcaron ; B 32 0 580 740 ;
+C -1 ; WX 444 ; N Icircumflex ; B 35 0 409 911 ;
+C -1 ; WX 778 ; N Ntilde ; B 20 0 758 899 ;
+C -1 ; WX 667 ; N ucircumflex ; B 18 -13 649 740 ;
+C -1 ; WX 778 ; N Ecircumflex ; B 20 0 764 911 ;
+C -1 ; WX 444 ; N Iacute ; B 36 0 408 925 ;
+C -1 ; WX 724 ; N Ccedilla ; B 36 -226 711 694 ;
+C -1 ; WX 833 ; N Odieresis ; B 36 -13 797 891 ;
+C -1 ; WX 724 ; N Scaron ; B 34 -13 690 911 ;
+C -1 ; WX 778 ; N Edieresis ; B 20 0 764 891 ;
+C -1 ; WX 444 ; N Igrave ; B 36 0 408 925 ;
+C -1 ; WX 612 ; N adieresis ; B 28 -13 629 720 ;
+C -1 ; WX 833 ; N Ograve ; B 36 -13 797 925 ;
+C -1 ; WX 778 ; N Egrave ; B 20 0 764 925 ;
+C -1 ; WX 724 ; N Ydieresis ; B 0 0 734 891 ;
+C -1 ; WX 800 ; N registered ; B 47 -13 753 694 ;
+C -1 ; WX 833 ; N Otilde ; B 36 -13 797 899 ;
+C -1 ; WX 1083 ; N onequarter ; B 88 -16 1060 690 ;
+C -1 ; WX 778 ; N Ugrave ; B 17 -13 761 925 ;
+C -1 ; WX 778 ; N Ucircumflex ; B 17 -13 761 911 ;
+C -1 ; WX 724 ; N Thorn ; B 20 0 704 681 ;
+C -1 ; WX 600 ; N divide ; B 47 -62 553 568 ;
+C -1 ; WX 778 ; N Atilde ; B -10 0 788 899 ;
+C -1 ; WX 778 ; N Uacute ; B 17 -13 761 925 ;
+C -1 ; WX 833 ; N Ocircumflex ; B 36 -13 797 911 ;
+C -1 ; WX 600 ; N logicalnot ; B 47 102 553 430 ;
+C -1 ; WX 778 ; N Aring ; B -10 0 788 968 ;
+C -1 ; WX 388 ; N idieresis ; B 5 0 383 720 ;
+C -1 ; WX 388 ; N iacute ; B 34 0 361 754 ;
+C -1 ; WX 612 ; N aacute ; B 28 -13 629 754 ;
+C -1 ; WX 600 ; N plusminus ; B 47 0 553 506 ;
+C -1 ; WX 600 ; N multiply ; B 57 10 543 496 ;
+C -1 ; WX 778 ; N Udieresis ; B 17 -13 761 891 ;
+C -1 ; WX 600 ; N minus ; B 47 183 553 323 ;
+C -1 ; WX 481 ; N onesuperior ; B 93 274 405 684 ;
+C -1 ; WX 778 ; N Eacute ; B 20 0 764 925 ;
+C -1 ; WX 778 ; N Acircumflex ; B -10 0 788 911 ;
+C -1 ; WX 800 ; N copyright ; B 47 -13 753 694 ;
+C -1 ; WX 778 ; N Agrave ; B -10 0 788 925 ;
+C -1 ; WX 612 ; N odieresis ; B 28 -13 584 720 ;
+C -1 ; WX 612 ; N oacute ; B 28 -13 584 754 ;
+C -1 ; WX 400 ; N degree ; B 47 384 353 690 ;
+C -1 ; WX 388 ; N igrave ; B 27 0 354 754 ;
+C -1 ; WX 667 ; N mu ; B 18 -226 649 490 ;
+C -1 ; WX 833 ; N Oacute ; B 36 -13 797 925 ;
+C -1 ; WX 612 ; N eth ; B 28 -13 584 754 ;
+C -1 ; WX 778 ; N Adieresis ; B -10 0 788 891 ;
+C -1 ; WX 724 ; N Yacute ; B 0 0 734 925 ;
+C -1 ; WX 222 ; N brokenbar ; B 41 -13 181 694 ;
+C -1 ; WX 1083 ; N onehalf ; B 48 -16 1048 690 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 162
+
+KPX A y -37
+KPX A w -27
+KPX A v -37
+KPX A quoteright -92
+KPX A quotedblright -92
+KPX A Y -74
+KPX A W -55
+KPX A V -90
+KPX A U -37
+KPX A T -74
+KPX A Q -18
+KPX A O -18
+KPX A G -18
+KPX A C -18
+
+KPX B period -50
+KPX B comma -50
+KPX B U -18
+KPX B A -18
+
+KPX D period -70
+KPX D comma -70
+KPX D Y -70
+KPX D W -37
+KPX D V -37
+KPX D A -30
+
+KPX F r -30
+KPX F period -129
+KPX F o -70
+KPX F i -25
+KPX F e -70
+KPX F comma -129
+KPX F a -70
+KPX F A -120
+
+KPX G period -55
+KPX G comma -55
+
+KPX J u -18
+KPX J period -74
+KPX J o -18
+KPX J e -18
+KPX J comma -18
+KPX J a -18
+KPX J A -55
+
+KPX K y -40
+KPX K u -30
+KPX K o -18
+KPX K e -18
+KPX K O -37
+
+KPX L y -37
+KPX L quoteright -100
+KPX L quotedblright -74
+KPX L Y -120
+KPX L W -100
+KPX L V -120
+KPX L T -129
+
+KPX N period -70
+KPX N comma -70
+KPX N A -18
+
+KPX O period -70
+KPX O comma -70
+KPX O Y -37
+KPX O X -37
+KPX O W -18
+KPX O V -37
+KPX O T -37
+KPX O A -37
+
+KPX P period -129
+KPX P o -55
+KPX P e -55
+KPX P comma -129
+KPX P a -55
+KPX P A -74
+
+KPX Q period -18
+KPX Q comma -18
+
+KPX R Y -18
+KPX R W -18
+KPX R V -18
+KPX R T -18
+KPX R O -18
+
+KPX S period -62
+KPX S comma -62
+
+KPX T y -55
+KPX T w -55
+KPX T u -55
+KPX T semicolon -60
+KPX T r -55
+KPX T period -111
+KPX T o -74
+KPX T i -37
+KPX T hyphen -92
+KPX T e -74
+KPX T comma -111
+KPX T colon -60
+KPX T a -74
+KPX T O -37
+KPX T A -55
+
+KPX U period -75
+KPX U comma -75
+
+KPX V u -37
+KPX V semicolon -74
+KPX V period -129
+KPX V o -55
+KPX V i -18
+KPX V hyphen -74
+KPX V e -55
+KPX V comma -129
+KPX V colon -74
+KPX V a -55
+KPX V A -55
+
+KPX W u -18
+KPX W semicolon -55
+KPX W period -111
+KPX W o -37
+KPX W hyphen -55
+KPX W e -37
+KPX W comma -111
+KPX W colon -55
+KPX W a -37
+KPX W A -37
+
+KPX Y u -37
+KPX Y semicolon -55
+KPX Y period -92
+KPX Y o -55
+KPX Y i -18
+KPX Y hyphen -55
+KPX Y e -55
+KPX Y comma -92
+KPX Y colon -55
+KPX Y a -55
+KPX Y O -18
+KPX Y A -74
+
+KPX comma quoteright -55
+KPX comma quotedblright -55
+
+KPX e period -55
+KPX e comma -55
+
+KPX f quoteright 37
+KPX f quotedblright 45
+KPX f period -37
+KPX f comma -37
+
+KPX g period -37
+KPX g comma -37
+
+KPX period quoteright -55
+KPX period quotedblright -55
+
+KPX quotedblleft A -37
+
+KPX quoteleft quoteleft -22
+KPX quoteleft A -37
+
+KPX quoteright s -37
+KPX quoteright quoteright -22
+KPX quoteright d -55
+
+KPX r period -92
+KPX r hyphen -37
+KPX r comma -92
+
+KPX space quotedblleft -37
+KPX space Y -37
+KPX space W -37
+KPX space V -37
+KPX space T -37
+KPX space A -37
+
+KPX v period -74
+KPX v comma -74
+
+KPX w period -55
+KPX w comma -55
+
+KPX y period -74
+KPX y comma -74
+EndKernPairs
+EndKernData
+StartComposites 58
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 223 171 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 223 171 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 223 171 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 223 171 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 223 176 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 223 171 ;
+CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 196 0 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 223 171 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 223 171 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 223 171 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 223 171 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 56 171 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 56 171 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 56 171 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 56 171 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 223 171 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 251 171 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 251 171 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 251 171 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 251 171 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 251 171 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 196 171 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 223 171 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 223 171 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 223 171 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 223 171 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 196 171 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 216 171 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 196 171 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 140 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 140 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 140 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 140 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 140 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 140 0 ;
+CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 112 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 112 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 112 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 112 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 112 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute 28 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex 28 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis 28 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave 28 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 168 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 140 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 140 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 140 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 140 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 140 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 112 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 168 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 168 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 168 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 168 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 112 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 132 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 140 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/Bk-Bd+ b/font/font/Bk-Bd+
new file mode 100644
index 0000000..09d0984
--- /dev/null
+++ b/font/font/Bk-Bd+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 724 ; N Ccaron ; B 36 -13 711 927 ;
+C -1 ; WX 556 ; N ccaron ; B 28 -13 542 740 ;
+C -1 ; WX 833 ; N Dcaron ; B 29 0 797 927 ;
+C -1 ; WX 796 ; N dcaron ; B 28 -13 856 777 ;
+C -1 ; WX 778 ; N Ecaron ; B 20 0 764 927 ;
+C -1 ; WX 556 ; N ecaron ; B 28 -13 528 740 ;
+C -1 ; WX 724 ; N Lcaron ; B 20 0 708 749 ;
+C -1 ; WX 724 ; N Lacute ; B 20 0 708 941 ;
+C -1 ; WX 461 ; N lcaron ; B 6 0 528 777 ;
+C -1 ; WX 332 ; N lacute ; B 6 0 358 941 ;
+C -1 ; WX 778 ; N Ncaron ; B 20 0 758 927 ;
+C -1 ; WX 667 ; N ncaron ; B 18 0 649 740 ;
+C -1 ; WX 778 ; N Rcaron ; B 20 0 772 927 ;
+C -1 ; WX 778 ; N Racute ; B 20 0 772 941 ;
+C -1 ; WX 500 ; N rcaron ; B 18 0 501 740 ;
+C -1 ; WX 500 ; N racute ; B 18 0 501 754 ;
+C -1 ; WX 778 ; N Tcaron ; B 6 0 772 927 ;
+C -1 ; WX 573 ; N tcaron ; B -4 -13 656 694 ;
+C -1 ; WX 778 ; N Uring ; B 17 -13 761 927 ;
+C -1 ; WX 667 ; N uring ; B 18 -13 649 792 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 264 187 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 138 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 250 187 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 625 83 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 223 187 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 112 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 379 55 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 196 187 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 297 83 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 25 187 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 223 187 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 167 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 223 187 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 271 187 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 84 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 109 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 223 187 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 425 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 223 135 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 167 0 ;
+EndBuildComposites
diff --git a/font/font/Bk-BdIt b/font/font/Bk-BdIt
new file mode 100644
index 0000000..0c1c53d
--- /dev/null
+++ b/font/font/Bk-BdIt
@@ -0,0 +1,509 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1990 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Thu Jun 28 15:13:31 1990
+Comment UniqueID 31732
+Comment VMusage 30421 37313
+FontName Bookman-BoldItalic
+FullName ITC Bookman Bold Italic
+FamilyName ITC Bookman
+Weight Bold
+ItalicAngle -12
+IsFixedPitch false
+FontBBox -254 -236 1186 950
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.000
+Notice Copyright (c) 1990 Adobe Systems Incorporated. All Rights Reserved.ITC Bookman is a trademark of International Typeface Corporation.
+EncodingScheme AdobeStandardEncoding
+CapHeight 681
+XHeight 503
+Ascender 706
+Descender -226
+StartCharMetrics 228
+C 32 ; WX 362 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 444 ; N exclam ; B 77 -13 413 694 ;
+C 34 ; WX 556 ; N quotedbl ; B 165 371 496 694 ;
+C 35 ; WX 724 ; N numbersign ; B 127 0 657 674 ;
+C 36 ; WX 724 ; N dollar ; B 64 -98 674 778 ;
+C 37 ; WX 870 ; N percent ; B 50 -16 851 690 ;
+C 38 ; WX 944 ; N ampersand ; B 23 -13 954 694 ;
+C 39 ; WX 278 ; N quoteright ; B 98 371 314 694 ;
+C 40 ; WX 389 ; N parenleft ; B 67 -235 440 697 ;
+C 41 ; WX 389 ; N parenright ; B -41 -235 332 697 ;
+C 42 ; WX 500 ; N asterisk ; B 97 254 495 694 ;
+C 43 ; WX 600 ; N plus ; B 72 0 578 506 ;
+C 44 ; WX 362 ; N comma ; B 79 -116 295 207 ;
+C 45 ; WX 333 ; N hyphen ; B 22 191 333 337 ;
+C 46 ; WX 362 ; N period ; B 73 -13 295 207 ;
+C 47 ; WX 278 ; N slash ; B -4 -13 335 694 ;
+C 48 ; WX 724 ; N zero ; B 55 -16 724 690 ;
+C 49 ; WX 724 ; N one ; B 106 0 587 674 ;
+C 50 ; WX 724 ; N two ; B 66 0 687 690 ;
+C 51 ; WX 724 ; N three ; B 52 -16 681 690 ;
+C 52 ; WX 724 ; N four ; B 37 0 722 674 ;
+C 53 ; WX 724 ; N five ; B 78 -16 671 674 ;
+C 54 ; WX 724 ; N six ; B 77 -16 706 690 ;
+C 55 ; WX 724 ; N seven ; B 76 0 725 674 ;
+C 56 ; WX 724 ; N eight ; B 65 -16 684 690 ;
+C 57 ; WX 724 ; N nine ; B 59 -16 706 690 ;
+C 58 ; WX 362 ; N colon ; B 73 -13 336 503 ;
+C 59 ; WX 362 ; N semicolon ; B 79 -116 336 503 ;
+C 60 ; WX 600 ; N less ; B 72 -8 578 514 ;
+C 61 ; WX 600 ; N equal ; B 72 76 578 430 ;
+C 62 ; WX 600 ; N greater ; B 72 -8 578 514 ;
+C 63 ; WX 667 ; N question ; B 74 -13 662 694 ;
+C 64 ; WX 800 ; N at ; B 77 -13 783 694 ;
+C 65 ; WX 778 ; N A ; B -34 0 770 681 ;
+C 66 ; WX 778 ; N B ; B 12 0 785 681 ;
+C 67 ; WX 778 ; N C ; B 56 -13 751 694 ;
+C 68 ; WX 833 ; N D ; B -5 0 833 681 ;
+C 69 ; WX 778 ; N E ; B -5 0 791 681 ;
+C 70 ; WX 722 ; N F ; B -5 0 761 681 ;
+C 71 ; WX 833 ; N G ; B 56 -13 849 694 ;
+C 72 ; WX 833 ; N H ; B -5 0 885 681 ;
+C 73 ; WX 444 ; N I ; B 3 0 488 681 ;
+C 74 ; WX 667 ; N J ; B 32 -13 732 681 ;
+C 75 ; WX 833 ; N K ; B -5 0 855 681 ;
+C 76 ; WX 667 ; N L ; B -5 0 698 681 ;
+C 77 ; WX 889 ; N M ; B -9 0 946 681 ;
+C 78 ; WX 778 ; N N ; B -5 0 829 681 ;
+C 79 ; WX 833 ; N O ; B 56 -13 833 694 ;
+C 80 ; WX 722 ; N P ; B -5 0 743 681 ;
+C 81 ; WX 833 ; N Q ; B -43 -226 833 694 ;
+C 82 ; WX 778 ; N R ; B -5 0 773 681 ;
+C 83 ; WX 722 ; N S ; B 40 -13 705 694 ;
+C 84 ; WX 722 ; N T ; B 52 0 764 681 ;
+C 85 ; WX 722 ; N U ; B 76 -13 806 681 ;
+C 86 ; WX 722 ; N V ; B 60 -6 812 681 ;
+C 87 ; WX 944 ; N W ; B 70 -6 1023 681 ;
+C 88 ; WX 722 ; N X ; B -36 0 782 681 ;
+C 89 ; WX 722 ; N Y ; B 72 0 801 681 ;
+C 90 ; WX 722 ; N Z ; B 0 0 740 681 ;
+C 91 ; WX 389 ; N bracketleft ; B 37 -219 382 681 ;
+C 92 ; WX 278 ; N backslash ; B -4 -13 335 694 ;
+C 93 ; WX 389 ; N bracketright ; B 22 -219 367 681 ;
+C 94 ; WX 600 ; N asciicircum ; B 76 309 590 674 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 278 ; N quoteleft ; B 81 371 297 694 ;
+C 97 ; WX 722 ; N a ; B 46 -13 737 503 ;
+C 98 ; WX 667 ; N b ; B 38 -13 655 706 ;
+C 99 ; WX 611 ; N c ; B 33 -13 600 503 ;
+C 100 ; WX 722 ; N d ; B 33 -13 725 706 ;
+C 101 ; WX 611 ; N e ; B 33 -13 606 503 ;
+C 102 ; WX 389 ; N f ; B -254 -236 556 714 ; L i fi ; L l fl ;
+C 103 ; WX 667 ; N g ; B -34 -236 667 503 ;
+C 104 ; WX 722 ; N h ; B 53 -13 749 706 ;
+C 105 ; WX 389 ; N i ; B 51 -13 425 706 ;
+C 106 ; WX 389 ; N j ; B -197 -226 381 706 ;
+C 107 ; WX 722 ; N k ; B 38 -13 734 706 ;
+C 108 ; WX 389 ; N l ; B 64 -13 416 706 ;
+C 109 ; WX 944 ; N m ; B 53 -13 963 503 ;
+C 110 ; WX 722 ; N n ; B 53 -13 749 503 ;
+C 111 ; WX 667 ; N o ; B 33 -13 647 503 ;
+C 112 ; WX 667 ; N p ; B -52 -226 655 503 ;
+C 113 ; WX 667 ; N q ; B 33 -226 632 503 ;
+C 114 ; WX 500 ; N r ; B 49 0 562 503 ;
+C 115 ; WX 611 ; N s ; B 10 -13 575 503 ;
+C 116 ; WX 444 ; N t ; B 54 -13 461 637 ;
+C 117 ; WX 722 ; N u ; B 69 -13 741 490 ;
+C 118 ; WX 611 ; N v ; B 53 -13 592 503 ;
+C 119 ; WX 889 ; N w ; B 53 -13 875 503 ;
+C 120 ; WX 611 ; N x ; B -33 -13 637 503 ;
+C 121 ; WX 667 ; N y ; B 5 -226 652 503 ;
+C 122 ; WX 611 ; N z ; B 29 -13 596 503 ;
+C 123 ; WX 389 ; N braceleft ; B 52 -219 419 681 ;
+C 124 ; WX 222 ; N bar ; B 67 -13 207 694 ;
+C 125 ; WX 389 ; N braceright ; B -14 -219 353 681 ;
+C 126 ; WX 600 ; N asciitilde ; B 94 148 556 358 ;
+C 161 ; WX 444 ; N exclamdown ; B 41 -204 377 503 ;
+C 162 ; WX 724 ; N cent ; B 113 -36 680 699 ;
+C 163 ; WX 724 ; N sterling ; B -26 -16 761 690 ;
+C 164 ; WX 167 ; N fraction ; B -137 -16 368 690 ;
+C 165 ; WX 724 ; N yen ; B 93 0 780 674 ;
+C 166 ; WX 724 ; N florin ; B -24 -236 739 690 ;
+C 167 ; WX 611 ; N section ; B 85 -13 551 694 ;
+C 168 ; WX 724 ; N currency ; B 111 58 673 616 ;
+C 169 ; WX 278 ; N quotesingle ; B 134 371 262 694 ;
+C 170 ; WX 556 ; N quotedblleft ; B 89 371 587 694 ;
+C 171 ; WX 556 ; N guillemotleft ; B 37 74 527 454 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 41 74 323 454 ;
+C 173 ; WX 333 ; N guilsinglright ; B 23 74 305 454 ;
+C 174 ; WX 667 ; N fi ; B -225 -236 703 714 ;
+C 175 ; WX 667 ; N fl ; B -225 -236 703 714 ;
+C 177 ; WX 500 ; N endash ; B -2 197 526 331 ;
+C 178 ; WX 611 ; N dagger ; B 137 -13 553 694 ;
+C 179 ; WX 611 ; N daggerdbl ; B 111 -13 539 694 ;
+C 180 ; WX 362 ; N periodcentered ; B 76 151 292 367 ;
+C 182 ; WX 620 ; N paragraph ; B 65 0 647 681 ;
+C 183 ; WX 500 ; N bullet ; B 105 170 445 510 ;
+C 184 ; WX 278 ; N quotesinglbase ; B 13 -116 229 207 ;
+C 185 ; WX 556 ; N quotedblbase ; B 35 -116 530 207 ;
+C 186 ; WX 556 ; N quotedblright ; B 86 371 584 694 ;
+C 187 ; WX 556 ; N guillemotright ; B 52 74 535 454 ;
+C 188 ; WX 1000 ; N ellipsis ; B 73 -13 961 207 ;
+C 189 ; WX 1167 ; N perthousand ; B 33 -16 1186 690 ;
+C 191 ; WX 667 ; N questiondown ; B 15 -204 603 503 ;
+C 193 ; WX 333 ; N grave ; B 103 560 335 750 ;
+C 194 ; WX 333 ; N acute ; B 150 560 409 750 ;
+C 195 ; WX 333 ; N circumflex ; B 51 560 410 736 ;
+C 196 ; WX 333 ; N tilde ; B 55 580 444 714 ;
+C 197 ; WX 333 ; N macron ; B 60 604 431 690 ;
+C 198 ; WX 333 ; N breve ; B 94 560 425 727 ;
+C 199 ; WX 333 ; N dotaccent ; B 160 560 324 724 ;
+C 200 ; WX 333 ; N dieresis ; B 56 560 435 724 ;
+C 202 ; WX 333 ; N ring ; B 127 560 349 782 ;
+C 203 ; WX 333 ; N cedilla ; B 11 -226 269 2 ;
+C 205 ; WX 333 ; N hungarumlaut ; B 45 560 514 750 ;
+C 206 ; WX 333 ; N ogonek ; B 55 -226 299 0 ;
+C 207 ; WX 333 ; N caron ; B 87 560 442 736 ;
+C 208 ; WX 1000 ; N emdash ; B -2 197 1026 331 ;
+C 225 ; WX 1074 ; N AE ; B -61 0 1087 681 ;
+C 227 ; WX 469 ; N ordfeminine ; B 74 378 523 690 ;
+C 232 ; WX 667 ; N Lslash ; B -5 0 698 681 ;
+C 233 ; WX 833 ; N Oslash ; B 51 -84 838 758 ;
+C 234 ; WX 1130 ; N OE ; B 67 -13 1143 694 ;
+C 235 ; WX 434 ; N ordmasculine ; B 74 378 473 690 ;
+C 241 ; WX 889 ; N ae ; B 27 -13 892 503 ;
+C 245 ; WX 389 ; N dotlessi ; B 51 -13 425 490 ;
+C 248 ; WX 389 ; N lslash ; B 27 -13 419 706 ;
+C 249 ; WX 667 ; N oslash ; B 33 -128 647 604 ;
+C 250 ; WX 944 ; N oe ; B 33 -13 947 503 ;
+C 251 ; WX 722 ; N germandbls ; B -225 -236 702 714 ;
+C -1 ; WX 722 ; N Zcaron ; B 0 0 740 904 ;
+C -1 ; WX 611 ; N ccedilla ; B 33 -226 600 503 ;
+C -1 ; WX 667 ; N ydieresis ; B 5 -226 652 724 ;
+C -1 ; WX 722 ; N atilde ; B 46 -13 737 714 ;
+C -1 ; WX 389 ; N icircumflex ; B 51 -13 438 736 ;
+C -1 ; WX 471 ; N threesuperior ; B 64 268 472 690 ;
+C -1 ; WX 611 ; N ecircumflex ; B 33 -13 606 736 ;
+C -1 ; WX 667 ; N thorn ; B -52 -226 655 706 ;
+C -1 ; WX 611 ; N egrave ; B 33 -13 606 750 ;
+C -1 ; WX 471 ; N twosuperior ; B 64 274 468 690 ;
+C -1 ; WX 611 ; N eacute ; B 33 -13 606 750 ;
+C -1 ; WX 667 ; N otilde ; B 33 -13 647 714 ;
+C -1 ; WX 778 ; N Aacute ; B -34 0 770 918 ;
+C -1 ; WX 667 ; N ocircumflex ; B 33 -13 647 736 ;
+C -1 ; WX 667 ; N yacute ; B 5 -226 652 750 ;
+C -1 ; WX 722 ; N udieresis ; B 69 -13 741 724 ;
+C -1 ; WX 1083 ; N threequarters ; B 104 -16 1047 690 ;
+C -1 ; WX 722 ; N acircumflex ; B 46 -13 737 736 ;
+C -1 ; WX 833 ; N Eth ; B -5 0 833 681 ;
+C -1 ; WX 611 ; N edieresis ; B 33 -13 606 724 ;
+C -1 ; WX 722 ; N ugrave ; B 69 -13 741 750 ;
+C -1 ; WX 1000 ; N trademark ; B 61 281 1053 681 ;
+C -1 ; WX 667 ; N ograve ; B 33 -13 647 750 ;
+C -1 ; WX 611 ; N scaron ; B 10 -13 581 736 ;
+C -1 ; WX 444 ; N Idieresis ; B 3 0 511 892 ;
+C -1 ; WX 722 ; N uacute ; B 69 -13 741 750 ;
+C -1 ; WX 722 ; N agrave ; B 46 -13 737 750 ;
+C -1 ; WX 722 ; N ntilde ; B 53 -13 749 714 ;
+C -1 ; WX 722 ; N aring ; B 46 -13 737 782 ;
+C -1 ; WX 611 ; N zcaron ; B 29 -13 596 736 ;
+C -1 ; WX 444 ; N Icircumflex ; B 3 0 488 904 ;
+C -1 ; WX 778 ; N Ntilde ; B -5 0 829 882 ;
+C -1 ; WX 722 ; N ucircumflex ; B 69 -13 741 736 ;
+C -1 ; WX 778 ; N Ecircumflex ; B -5 0 791 904 ;
+C -1 ; WX 444 ; N Iacute ; B 3 0 488 918 ;
+C -1 ; WX 778 ; N Ccedilla ; B 56 -226 751 694 ;
+C -1 ; WX 833 ; N Odieresis ; B 56 -13 833 892 ;
+C -1 ; WX 722 ; N Scaron ; B 40 -13 705 904 ;
+C -1 ; WX 778 ; N Edieresis ; B -5 0 791 892 ;
+C -1 ; WX 444 ; N Igrave ; B 3 0 488 918 ;
+C -1 ; WX 722 ; N adieresis ; B 46 -13 737 724 ;
+C -1 ; WX 833 ; N Ograve ; B 56 -13 833 918 ;
+C -1 ; WX 778 ; N Egrave ; B -5 0 791 918 ;
+C -1 ; WX 722 ; N Ydieresis ; B 72 0 801 892 ;
+C -1 ; WX 800 ; N registered ; B 77 -13 783 694 ;
+C -1 ; WX 833 ; N Otilde ; B 56 -13 833 882 ;
+C -1 ; WX 1083 ; N onequarter ; B 104 -16 1047 690 ;
+C -1 ; WX 722 ; N Ugrave ; B 76 -13 806 918 ;
+C -1 ; WX 722 ; N Ucircumflex ; B 76 -13 806 904 ;
+C -1 ; WX 722 ; N Thorn ; B -5 0 725 681 ;
+C -1 ; WX 600 ; N divide ; B 72 -62 578 568 ;
+C -1 ; WX 778 ; N Atilde ; B -34 0 770 882 ;
+C -1 ; WX 722 ; N Uacute ; B 76 -13 806 918 ;
+C -1 ; WX 833 ; N Ocircumflex ; B 56 -13 833 904 ;
+C -1 ; WX 600 ; N logicalnot ; B 72 102 578 430 ;
+C -1 ; WX 778 ; N Aring ; B -34 0 770 950 ;
+C -1 ; WX 389 ; N idieresis ; B 51 -13 463 724 ;
+C -1 ; WX 389 ; N iacute ; B 51 -13 437 750 ;
+C -1 ; WX 722 ; N aacute ; B 46 -13 737 750 ;
+C -1 ; WX 600 ; N plusminus ; B 72 0 578 506 ;
+C -1 ; WX 600 ; N multiply ; B 82 10 568 496 ;
+C -1 ; WX 722 ; N Udieresis ; B 76 -13 806 892 ;
+C -1 ; WX 600 ; N minus ; B 72 183 578 323 ;
+C -1 ; WX 471 ; N onesuperior ; B 104 274 417 684 ;
+C -1 ; WX 778 ; N Eacute ; B -5 0 791 918 ;
+C -1 ; WX 778 ; N Acircumflex ; B -34 0 770 904 ;
+C -1 ; WX 800 ; N copyright ; B 77 -13 783 694 ;
+C -1 ; WX 778 ; N Agrave ; B -34 0 770 918 ;
+C -1 ; WX 667 ; N odieresis ; B 33 -13 647 724 ;
+C -1 ; WX 667 ; N oacute ; B 33 -13 647 750 ;
+C -1 ; WX 400 ; N degree ; B 107 384 413 690 ;
+C -1 ; WX 389 ; N igrave ; B 51 -13 425 750 ;
+C -1 ; WX 722 ; N mu ; B 6 -226 741 490 ;
+C -1 ; WX 833 ; N Oacute ; B 56 -13 833 918 ;
+C -1 ; WX 667 ; N eth ; B 33 -13 647 745 ;
+C -1 ; WX 778 ; N Adieresis ; B -34 0 770 892 ;
+C -1 ; WX 722 ; N Yacute ; B 72 0 801 918 ;
+C -1 ; WX 222 ; N brokenbar ; B 67 -13 207 694 ;
+C -1 ; WX 1083 ; N onehalf ; B 104 -16 1029 690 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 160
+
+KPX A y -18
+KPX A w -18
+KPX A v -18
+KPX A u -18
+KPX A quoteright -92
+KPX A quotedblright -92
+KPX A Y -55
+KPX A W -55
+KPX A V -74
+KPX A U -10
+KPX A T -55
+KPX A Q -10
+KPX A O -18
+KPX A G -18
+KPX A C -18
+
+KPX B period -74
+KPX B comma -74
+KPX B U 10
+
+KPX D period -74
+KPX D comma -74
+KPX D Y -18
+KPX D W -18
+KPX D V -18
+KPX D A -18
+
+KPX F r -15
+KPX F period -129
+KPX F o -54
+KPX F i -15
+KPX F e -54
+KPX F comma -129
+KPX F a -54
+KPX F A -55
+
+KPX G period -74
+KPX G comma -74
+
+KPX J period -100
+KPX J o -10
+KPX J e -10
+KPX J comma -100
+KPX J a -10
+
+KPX K u -25
+KPX K o -25
+KPX K e -25
+KPX K O -37
+
+KPX L y -18
+KPX L quoteright -111
+KPX L quotedblright -91
+KPX L Y -92
+KPX L W -92
+KPX L V -92
+KPX L T -92
+
+KPX N period -91
+KPX N comma -91
+
+KPX O period -74
+KPX O comma -74
+KPX O Y -37
+KPX O A -18
+
+KPX P period -129
+KPX P o -15
+KPX P e -15
+KPX P comma -129
+KPX P a -15
+KPX P A -55
+
+KPX Q period -37
+KPX Q comma -37
+
+KPX R Y -37
+KPX R W -18
+KPX R V -18
+KPX R T -18
+
+KPX T y -37
+KPX T w -55
+KPX T u -55
+KPX T semicolon -74
+KPX T r -55
+KPX T period -129
+KPX T o -74
+KPX T i -18
+KPX T hyphen -92
+KPX T e -74
+KPX T comma -129
+KPX T colon -74
+KPX T a -74
+KPX T A -55
+
+KPX U period -74
+KPX U comma -74
+
+KPX V u -37
+KPX V semicolon -74
+KPX V period -129
+KPX V o -55
+KPX V i -18
+KPX V hyphen -55
+KPX V e -55
+KPX V comma -129
+KPX V colon -74
+KPX V a -55
+KPX V A -37
+
+KPX W y -18
+KPX W u -18
+KPX W semicolon -74
+KPX W period -129
+KPX W o -37
+KPX W hyphen -55
+KPX W e -37
+KPX W comma -129
+KPX W colon -74
+KPX W a -37
+KPX W A -37
+
+KPX Y u -55
+KPX Y semicolon -92
+KPX Y period -129
+KPX Y o -74
+KPX Y i -37
+KPX Y hyphen -74
+KPX Y e -74
+KPX Y comma -129
+KPX Y colon -92
+KPX Y a -74
+KPX Y O -37
+KPX Y A -55
+
+KPX b period -37
+KPX b comma -37
+
+KPX c period -27
+KPX c comma -27
+
+KPX d w -10
+KPX d v -10
+KPX d period -18
+KPX d comma -18
+
+KPX e period -37
+KPX e comma -37
+
+KPX f quoteright 54
+KPX f quotedblright 54
+KPX f period -37
+KPX f comma -37
+
+KPX g period -74
+KPX g comma -74
+
+KPX period quoteright -37
+KPX period quotedblright -37
+
+KPX quoteleft quoteleft 4
+KPX quoteleft A -37
+
+KPX quoteright s -37
+KPX quoteright quoteright 4
+
+KPX r y 10
+KPX r period -129
+KPX r hyphen -37
+KPX r comma -129
+
+KPX s w -10
+
+KPX space quoteleft -37
+KPX space quotedblleft -37
+KPX space Y -37
+KPX space W -37
+KPX space V -37
+KPX space T -37
+KPX space A -37
+
+KPX v period -74
+KPX v comma -74
+
+KPX w period -74
+KPX w comma -74
+
+KPX y period -74
+KPX y o -18
+KPX y comma -74
+KPX y a -18
+EndKernPairs
+EndKernData
+StartComposites 58
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 223 168 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 223 168 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 233 168 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 223 168 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 253 168 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 223 168 ;
+CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 223 0 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 223 168 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 223 168 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 243 168 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 223 168 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 56 168 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 56 168 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 76 168 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 56 168 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 223 168 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 250 168 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 250 168 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 270 168 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 250 168 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 250 168 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 195 168 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 195 168 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 195 168 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 215 168 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 195 168 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 195 168 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 215 168 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 195 168 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 195 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 195 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 195 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 195 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 195 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 195 0 ;
+CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 139 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 139 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 139 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 139 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 139 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute 28 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex 28 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis 28 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave 28 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 195 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 167 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 167 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 167 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 167 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 167 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 139 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 195 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 195 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 195 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 195 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 167 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 167 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 139 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/Bk-BdIt+ b/font/font/Bk-BdIt+
new file mode 100644
index 0000000..bfecd39
--- /dev/null
+++ b/font/font/Bk-BdIt+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 778 ; N Ccaron ; B 56 -13 772 919 ;
+C -1 ; WX 611 ; N ccaron ; B 33 -13 609 736 ;
+C -1 ; WX 833 ; N Dcaron ; B -5 0 833 919 ;
+C -1 ; WX 873 ; N dcaron ; B 33 -13 963 777 ;
+C -1 ; WX 778 ; N Ecaron ; B -5 0 791 919 ;
+C -1 ; WX 611 ; N ecaron ; B 33 -13 606 736 ;
+C -1 ; WX 667 ; N Lcaron ; B -5 0 726 749 ;
+C -1 ; WX 667 ; N Lacute ; B -5 0 698 933 ;
+C -1 ; WX 540 ; N lcaron ; B 64 -13 654 777 ;
+C -1 ; WX 389 ; N lacute ; B 64 -13 501 933 ;
+C -1 ; WX 778 ; N Ncaron ; B -5 0 829 919 ;
+C -1 ; WX 722 ; N ncaron ; B 53 -13 749 736 ;
+C -1 ; WX 778 ; N Rcaron ; B -5 0 773 919 ;
+C -1 ; WX 778 ; N Racute ; B -5 0 773 933 ;
+C -1 ; WX 500 ; N rcaron ; B 49 0 562 736 ;
+C -1 ; WX 500 ; N racute ; B 49 0 562 750 ;
+C -1 ; WX 722 ; N Tcaron ; B 52 0 764 919 ;
+C -1 ; WX 595 ; N tcaron ; B 54 -13 699 694 ;
+C -1 ; WX 722 ; N Uring ; B 76 -13 806 919 ;
+C -1 ; WX 722 ; N uring ; B 69 -13 741 782 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 330 183 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 167 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 288 183 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 649 83 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 260 183 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 139 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 412 55 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 205 183 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 340 83 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 92 183 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 260 183 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 194 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 260 183 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 309 183 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 83 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 109 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 232 183 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 385 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 223 137 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 194 0 ;
+EndBuildComposites
diff --git a/font/font/Bk-Dm b/font/font/Bk-Dm
new file mode 100644
index 0000000..036be6d
--- /dev/null
+++ b/font/font/Bk-Dm
@@ -0,0 +1,415 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1992 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Tue Jan 21 16:13:29 1992
+Comment UniqueID 37831
+Comment VMusage 31983 38875
+FontName Bookman-Demi
+FullName ITC Bookman Demi
+FamilyName ITC Bookman
+Weight Demi
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -194 -250 1346 934
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.004
+Notice Copyright (c) 1985, 1987, 1989, 1992 Adobe Systems Incorporated. All Rights Reserved.ITC Bookman is a registered trademark of International Typeface Corporation.
+EncodingScheme AdobeStandardEncoding
+CapHeight 681
+XHeight 502
+Ascender 725
+Descender -212
+StartCharMetrics 228
+C 32 ; WX 340 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 360 ; N exclam ; B 82 -8 282 698 ;
+C 34 ; WX 420 ; N quotedbl ; B 11 379 369 698 ;
+C 35 ; WX 660 ; N numbersign ; B 84 0 576 681 ;
+C 36 ; WX 660 ; N dollar ; B 48 -119 620 805 ;
+C 37 ; WX 940 ; N percent ; B 12 -8 924 698 ;
+C 38 ; WX 800 ; N ampersand ; B 21 -17 772 698 ;
+C 39 ; WX 320 ; N quoteright ; B 82 440 242 698 ;
+C 40 ; WX 320 ; N parenleft ; B 48 -150 289 749 ;
+C 41 ; WX 320 ; N parenright ; B 20 -150 262 749 ;
+C 42 ; WX 460 ; N asterisk ; B 62 317 405 697 ;
+C 43 ; WX 600 ; N plus ; B 51 9 555 514 ;
+C 44 ; WX 340 ; N comma ; B 78 -124 257 162 ;
+C 45 ; WX 360 ; N hyphen ; B 20 210 340 318 ;
+C 46 ; WX 340 ; N period ; B 76 -8 258 172 ;
+C 47 ; WX 600 ; N slash ; B 50 -149 555 725 ;
+C 48 ; WX 660 ; N zero ; B 30 -17 639 698 ;
+C 49 ; WX 660 ; N one ; B 137 0 568 681 ;
+C 50 ; WX 660 ; N two ; B 41 0 628 698 ;
+C 51 ; WX 660 ; N three ; B 37 -17 631 698 ;
+C 52 ; WX 660 ; N four ; B 19 0 649 681 ;
+C 53 ; WX 660 ; N five ; B 44 -17 623 723 ;
+C 54 ; WX 660 ; N six ; B 34 -17 634 698 ;
+C 55 ; WX 660 ; N seven ; B 36 0 632 681 ;
+C 56 ; WX 660 ; N eight ; B 36 -17 633 698 ;
+C 57 ; WX 660 ; N nine ; B 33 -17 636 698 ;
+C 58 ; WX 340 ; N colon ; B 76 -8 258 515 ;
+C 59 ; WX 340 ; N semicolon ; B 75 -124 259 515 ;
+C 60 ; WX 600 ; N less ; B 49 -9 558 542 ;
+C 61 ; WX 600 ; N equal ; B 51 109 555 421 ;
+C 62 ; WX 600 ; N greater ; B 48 -9 557 542 ;
+C 63 ; WX 660 ; N question ; B 61 -8 608 698 ;
+C 64 ; WX 820 ; N at ; B 60 -17 758 698 ;
+C 65 ; WX 720 ; N A ; B -34 0 763 681 ;
+C 66 ; WX 720 ; N B ; B 20 0 693 681 ;
+C 67 ; WX 740 ; N C ; B 35 -17 724 698 ;
+C 68 ; WX 780 ; N D ; B 20 0 748 681 ;
+C 69 ; WX 720 ; N E ; B 20 0 724 681 ;
+C 70 ; WX 680 ; N F ; B 20 0 686 681 ;
+C 71 ; WX 780 ; N G ; B 35 -17 773 698 ;
+C 72 ; WX 820 ; N H ; B 20 0 800 681 ;
+C 73 ; WX 400 ; N I ; B 20 0 379 681 ;
+C 74 ; WX 640 ; N J ; B -12 -17 622 681 ;
+C 75 ; WX 800 ; N K ; B 20 0 796 681 ;
+C 76 ; WX 640 ; N L ; B 20 0 668 681 ;
+C 77 ; WX 940 ; N M ; B 20 0 924 681 ;
+C 78 ; WX 740 ; N N ; B 20 0 724 681 ;
+C 79 ; WX 800 ; N O ; B 35 -17 769 698 ;
+C 80 ; WX 660 ; N P ; B 20 0 658 681 ;
+C 81 ; WX 800 ; N Q ; B 35 -226 775 698 ;
+C 82 ; WX 780 ; N R ; B 20 0 783 681 ;
+C 83 ; WX 660 ; N S ; B 21 -17 639 698 ;
+C 84 ; WX 700 ; N T ; B -4 0 703 681 ;
+C 85 ; WX 740 ; N U ; B 15 -17 724 681 ;
+C 86 ; WX 720 ; N V ; B -20 0 730 681 ;
+C 87 ; WX 940 ; N W ; B -20 0 963 681 ;
+C 88 ; WX 780 ; N X ; B 1 0 770 681 ;
+C 89 ; WX 700 ; N Y ; B -20 0 718 681 ;
+C 90 ; WX 640 ; N Z ; B 6 0 635 681 ;
+C 91 ; WX 300 ; N bracketleft ; B 75 -138 285 725 ;
+C 92 ; WX 600 ; N backslash ; B 50 0 555 725 ;
+C 93 ; WX 300 ; N bracketright ; B 21 -138 231 725 ;
+C 94 ; WX 600 ; N asciicircum ; B 52 281 554 681 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 320 ; N quoteleft ; B 82 440 242 698 ;
+C 97 ; WX 580 ; N a ; B 28 -8 588 515 ;
+C 98 ; WX 600 ; N b ; B -20 -8 568 725 ;
+C 99 ; WX 580 ; N c ; B 31 -8 550 515 ;
+C 100 ; WX 640 ; N d ; B 31 -8 622 725 ;
+C 101 ; WX 580 ; N e ; B 31 -8 548 515 ;
+C 102 ; WX 380 ; N f ; B 22 0 461 741 ; L i fi ; L l fl ;
+C 103 ; WX 580 ; N g ; B 9 -243 583 595 ;
+C 104 ; WX 680 ; N h ; B 22 0 654 725 ;
+C 105 ; WX 360 ; N i ; B 22 0 335 729 ;
+C 106 ; WX 340 ; N j ; B -94 -221 278 729 ;
+C 107 ; WX 660 ; N k ; B 22 0 643 725 ;
+C 108 ; WX 340 ; N l ; B 9 0 322 725 ;
+C 109 ; WX 1000 ; N m ; B 22 0 980 515 ;
+C 110 ; WX 680 ; N n ; B 22 0 652 515 ;
+C 111 ; WX 620 ; N o ; B 31 -8 585 515 ;
+C 112 ; WX 640 ; N p ; B 22 -212 611 515 ;
+C 113 ; WX 620 ; N q ; B 31 -212 633 515 ;
+C 114 ; WX 460 ; N r ; B 22 0 462 502 ;
+C 115 ; WX 520 ; N s ; B 22 -8 492 515 ;
+C 116 ; WX 460 ; N t ; B 22 -8 445 660 ;
+C 117 ; WX 660 ; N u ; B 22 -8 653 502 ;
+C 118 ; WX 600 ; N v ; B -6 0 593 502 ;
+C 119 ; WX 800 ; N w ; B -6 0 810 502 ;
+C 120 ; WX 600 ; N x ; B 8 0 591 502 ;
+C 121 ; WX 620 ; N y ; B 6 -221 613 502 ;
+C 122 ; WX 560 ; N z ; B 22 0 547 502 ;
+C 123 ; WX 320 ; N braceleft ; B 14 -139 301 726 ;
+C 124 ; WX 600 ; N bar ; B 243 -250 362 750 ;
+C 125 ; WX 320 ; N braceright ; B 15 -140 302 725 ;
+C 126 ; WX 600 ; N asciitilde ; B 51 162 555 368 ;
+C 161 ; WX 360 ; N exclamdown ; B 84 -191 284 515 ;
+C 162 ; WX 660 ; N cent ; B 133 17 535 674 ;
+C 163 ; WX 660 ; N sterling ; B 10 -17 659 698 ;
+C 164 ; WX 120 ; N fraction ; B -194 0 312 681 ;
+C 165 ; WX 660 ; N yen ; B -28 0 696 681 ;
+C 166 ; WX 660 ; N florin ; B -46 -209 674 749 ;
+C 167 ; WX 600 ; N section ; B 36 -153 560 698 ;
+C 168 ; WX 660 ; N currency ; B 77 88 584 593 ;
+C 169 ; WX 240 ; N quotesingle ; B 42 379 178 698 ;
+C 170 ; WX 540 ; N quotedblleft ; B 82 439 449 698 ;
+C 171 ; WX 400 ; N guillemotleft ; B 34 101 360 457 ;
+C 172 ; WX 220 ; N guilsinglleft ; B 34 101 188 457 ;
+C 173 ; WX 220 ; N guilsinglright ; B 34 101 188 457 ;
+C 174 ; WX 740 ; N fi ; B 22 0 710 741 ;
+C 175 ; WX 740 ; N fl ; B 22 0 710 741 ;
+C 177 ; WX 500 ; N endash ; B -25 212 525 318 ;
+C 178 ; WX 440 ; N dagger ; B 33 -156 398 698 ;
+C 179 ; WX 380 ; N daggerdbl ; B 8 -156 380 698 ;
+C 180 ; WX 340 ; N periodcentered ; B 76 175 258 355 ;
+C 182 ; WX 800 ; N paragraph ; B 51 0 698 681 ;
+C 183 ; WX 460 ; N bullet ; B 60 170 404 511 ;
+C 184 ; WX 320 ; N quotesinglbase ; B 82 -114 242 144 ;
+C 185 ; WX 540 ; N quotedblbase ; B 82 -114 450 144 ;
+C 186 ; WX 540 ; N quotedblright ; B 82 440 449 698 ;
+C 187 ; WX 400 ; N guillemotright ; B 34 101 360 457 ;
+C 188 ; WX 1000 ; N ellipsis ; B 76 -8 924 172 ;
+C 189 ; WX 1360 ; N perthousand ; B 12 -8 1346 698 ;
+C 191 ; WX 660 ; N questiondown ; B 62 -191 609 515 ;
+C 193 ; WX 400 ; N grave ; B 68 547 327 730 ;
+C 194 ; WX 400 ; N acute ; B 68 547 327 731 ;
+C 195 ; WX 500 ; N circumflex ; B 68 555 430 731 ;
+C 196 ; WX 480 ; N tilde ; B 69 556 421 691 ;
+C 197 ; WX 460 ; N macron ; B 68 577 383 663 ;
+C 198 ; WX 500 ; N breve ; B 68 553 429 722 ;
+C 199 ; WX 320 ; N dotaccent ; B 68 536 259 730 ;
+C 200 ; WX 500 ; N dieresis ; B 68 560 441 698 ;
+C 202 ; WX 340 ; N ring ; B 68 552 275 755 ;
+C 203 ; WX 360 ; N cedilla ; B 68 -213 284 0 ;
+C 205 ; WX 440 ; N hungarumlaut ; B 68 554 365 741 ;
+C 206 ; WX 320 ; N ogonek ; B 68 -163 246 0 ;
+C 207 ; WX 500 ; N caron ; B 68 541 430 717 ;
+C 208 ; WX 1000 ; N emdash ; B -25 212 1025 318 ;
+C 225 ; WX 1140 ; N AE ; B -34 0 1149 681 ;
+C 227 ; WX 400 ; N ordfeminine ; B 27 383 396 698 ;
+C 232 ; WX 640 ; N Lslash ; B 20 0 668 681 ;
+C 233 ; WX 800 ; N Oslash ; B 35 -110 771 781 ;
+C 234 ; WX 1220 ; N OE ; B 35 -17 1219 698 ;
+C 235 ; WX 400 ; N ordmasculine ; B 17 383 383 698 ;
+C 241 ; WX 880 ; N ae ; B 28 -8 852 515 ;
+C 245 ; WX 360 ; N dotlessi ; B 22 0 335 502 ;
+C 248 ; WX 340 ; N lslash ; B 9 0 322 725 ;
+C 249 ; WX 620 ; N oslash ; B 31 -40 586 551 ;
+C 250 ; WX 940 ; N oe ; B 31 -8 908 515 ;
+C 251 ; WX 660 ; N germandbls ; B -61 -91 644 699 ;
+C -1 ; WX 580 ; N ecircumflex ; B 31 -8 548 731 ;
+C -1 ; WX 580 ; N edieresis ; B 31 -8 548 698 ;
+C -1 ; WX 580 ; N aacute ; B 28 -8 588 731 ;
+C -1 ; WX 740 ; N registered ; B 23 -17 723 698 ;
+C -1 ; WX 360 ; N icircumflex ; B -2 0 360 731 ;
+C -1 ; WX 660 ; N udieresis ; B 22 -8 653 698 ;
+C -1 ; WX 620 ; N ograve ; B 31 -8 585 730 ;
+C -1 ; WX 660 ; N uacute ; B 22 -8 653 731 ;
+C -1 ; WX 660 ; N ucircumflex ; B 22 -8 653 731 ;
+C -1 ; WX 720 ; N Aacute ; B -34 0 763 910 ;
+C -1 ; WX 360 ; N igrave ; B 22 0 335 730 ;
+C -1 ; WX 400 ; N Icircumflex ; B 18 0 380 910 ;
+C -1 ; WX 580 ; N ccedilla ; B 31 -213 550 515 ;
+C -1 ; WX 580 ; N adieresis ; B 28 -8 588 698 ;
+C -1 ; WX 720 ; N Ecircumflex ; B 20 0 724 910 ;
+C -1 ; WX 520 ; N scaron ; B 22 -8 492 717 ;
+C -1 ; WX 640 ; N thorn ; B 22 -212 611 725 ;
+C -1 ; WX 980 ; N trademark ; B 42 277 982 681 ;
+C -1 ; WX 580 ; N egrave ; B 31 -8 548 730 ;
+C -1 ; WX 396 ; N threesuperior ; B 5 269 391 698 ;
+C -1 ; WX 560 ; N zcaron ; B 22 0 547 717 ;
+C -1 ; WX 580 ; N atilde ; B 28 -8 588 691 ;
+C -1 ; WX 580 ; N aring ; B 28 -8 588 755 ;
+C -1 ; WX 620 ; N ocircumflex ; B 31 -8 585 731 ;
+C -1 ; WX 720 ; N Edieresis ; B 20 0 724 877 ;
+C -1 ; WX 990 ; N threequarters ; B 15 0 967 692 ;
+C -1 ; WX 620 ; N ydieresis ; B 6 -221 613 698 ;
+C -1 ; WX 620 ; N yacute ; B 6 -221 613 731 ;
+C -1 ; WX 360 ; N iacute ; B 22 0 335 731 ;
+C -1 ; WX 720 ; N Acircumflex ; B -34 0 763 910 ;
+C -1 ; WX 740 ; N Uacute ; B 15 -17 724 910 ;
+C -1 ; WX 580 ; N eacute ; B 31 -8 548 731 ;
+C -1 ; WX 800 ; N Ograve ; B 35 -17 769 909 ;
+C -1 ; WX 580 ; N agrave ; B 28 -8 588 730 ;
+C -1 ; WX 740 ; N Udieresis ; B 15 -17 724 877 ;
+C -1 ; WX 580 ; N acircumflex ; B 28 -8 588 731 ;
+C -1 ; WX 400 ; N Igrave ; B 20 0 379 909 ;
+C -1 ; WX 396 ; N twosuperior ; B 14 279 396 698 ;
+C -1 ; WX 740 ; N Ugrave ; B 15 -17 724 909 ;
+C -1 ; WX 990 ; N onequarter ; B 65 0 967 681 ;
+C -1 ; WX 740 ; N Ucircumflex ; B 15 -17 724 910 ;
+C -1 ; WX 660 ; N Scaron ; B 21 -17 639 896 ;
+C -1 ; WX 400 ; N Idieresis ; B 18 0 391 877 ;
+C -1 ; WX 360 ; N idieresis ; B -2 0 371 698 ;
+C -1 ; WX 720 ; N Egrave ; B 20 0 724 909 ;
+C -1 ; WX 800 ; N Oacute ; B 35 -17 769 910 ;
+C -1 ; WX 600 ; N divide ; B 51 9 555 521 ;
+C -1 ; WX 720 ; N Atilde ; B -34 0 763 870 ;
+C -1 ; WX 720 ; N Aring ; B -34 0 763 934 ;
+C -1 ; WX 800 ; N Odieresis ; B 35 -17 769 877 ;
+C -1 ; WX 720 ; N Adieresis ; B -34 0 763 877 ;
+C -1 ; WX 740 ; N Ntilde ; B 20 0 724 870 ;
+C -1 ; WX 640 ; N Zcaron ; B 6 0 635 896 ;
+C -1 ; WX 660 ; N Thorn ; B 20 0 658 681 ;
+C -1 ; WX 400 ; N Iacute ; B 20 0 379 910 ;
+C -1 ; WX 600 ; N plusminus ; B 51 0 555 514 ;
+C -1 ; WX 600 ; N multiply ; B 48 10 552 514 ;
+C -1 ; WX 720 ; N Eacute ; B 20 0 724 910 ;
+C -1 ; WX 700 ; N Ydieresis ; B -20 0 718 877 ;
+C -1 ; WX 396 ; N onesuperior ; B 65 279 345 687 ;
+C -1 ; WX 660 ; N ugrave ; B 22 -8 653 730 ;
+C -1 ; WX 600 ; N logicalnot ; B 51 129 555 421 ;
+C -1 ; WX 680 ; N ntilde ; B 22 0 652 691 ;
+C -1 ; WX 800 ; N Otilde ; B 35 -17 769 870 ;
+C -1 ; WX 620 ; N otilde ; B 31 -8 585 691 ;
+C -1 ; WX 740 ; N Ccedilla ; B 35 -213 724 698 ;
+C -1 ; WX 720 ; N Agrave ; B -34 0 763 909 ;
+C -1 ; WX 990 ; N onehalf ; B 65 0 980 681 ;
+C -1 ; WX 780 ; N Eth ; B 20 0 748 681 ;
+C -1 ; WX 400 ; N degree ; B 50 398 350 698 ;
+C -1 ; WX 700 ; N Yacute ; B -20 0 718 910 ;
+C -1 ; WX 800 ; N Ocircumflex ; B 35 -17 769 910 ;
+C -1 ; WX 620 ; N oacute ; B 31 -8 585 731 ;
+C -1 ; WX 660 ; N mu ; B 22 -221 653 502 ;
+C -1 ; WX 600 ; N minus ; B 51 207 555 323 ;
+C -1 ; WX 620 ; N eth ; B 31 -8 585 741 ;
+C -1 ; WX 620 ; N odieresis ; B 31 -8 585 698 ;
+C -1 ; WX 740 ; N copyright ; B 23 -17 723 698 ;
+C -1 ; WX 600 ; N brokenbar ; B 243 -175 362 675 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 90
+
+KPX A y -1
+KPX A w -9
+KPX A v -8
+KPX A Y -52
+KPX A W -20
+KPX A V -68
+KPX A T -40
+
+KPX F period -132
+KPX F comma -130
+KPX F A -59
+
+KPX L y 19
+KPX L Y -35
+KPX L W -41
+KPX L V -50
+KPX L T -4
+
+KPX P period -128
+KPX P comma -129
+KPX P A -46
+
+KPX R y -8
+KPX R Y -20
+KPX R W -24
+KPX R V -29
+KPX R T -4
+
+KPX T semicolon 5
+KPX T s -10
+KPX T r 27
+KPX T period -122
+KPX T o -28
+KPX T i 27
+KPX T hyphen -10
+KPX T e -29
+KPX T comma -122
+KPX T colon 7
+KPX T c -29
+KPX T a -24
+KPX T A -42
+
+KPX V y 12
+KPX V u -11
+KPX V semicolon -38
+KPX V r -15
+KPX V period -105
+KPX V o -79
+KPX V i 15
+KPX V hyphen -10
+KPX V e -80
+KPX V comma -103
+KPX V colon -37
+KPX V a -74
+KPX V A -88
+
+KPX W y 12
+KPX W u -11
+KPX W semicolon -38
+KPX W r -15
+KPX W period -105
+KPX W o -78
+KPX W i 15
+KPX W hyphen -10
+KPX W e -79
+KPX W comma -103
+KPX W colon -37
+KPX W a -73
+KPX W A -60
+
+KPX Y v 24
+KPX Y u -13
+KPX Y semicolon -34
+KPX Y q -66
+KPX Y period -105
+KPX Y p -23
+KPX Y o -66
+KPX Y i 2
+KPX Y hyphen -10
+KPX Y e -67
+KPX Y comma -103
+KPX Y colon -32
+KPX Y a -60
+KPX Y A -56
+
+KPX f f 21
+
+KPX r q -9
+KPX r period -102
+KPX r o -9
+KPX r n 20
+KPX r m 20
+KPX r hyphen -10
+KPX r h -23
+KPX r g -9
+KPX r f 20
+KPX r e -10
+KPX r d -10
+KPX r comma -101
+KPX r c -9
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 160 179 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 110 179 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 110 179 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 160 179 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 190 179 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 120 179 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 160 179 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 110 179 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 110 179 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 160 179 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 0 179 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex -50 179 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis -50 179 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 0 179 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 130 179 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 200 179 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 150 179 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 150 179 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 200 179 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 160 179 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 80 179 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 170 179 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 120 179 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 120 179 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 170 179 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 150 179 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 100 179 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 70 179 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 90 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 40 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 40 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 90 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 100 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 30 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 90 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 40 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 40 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 90 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -20 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -70 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -70 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -20 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 80 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 110 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 60 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 60 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 110 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 50 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 10 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 130 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 80 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 80 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 130 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 110 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 60 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 30 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/Bk-Dm+ b/font/font/Bk-Dm+
new file mode 100644
index 0000000..7c231e9
--- /dev/null
+++ b/font/font/Bk-Dm+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 740 ; N Ccaron ; B 35 -17 724 919 ;
+C -1 ; WX 580 ; N ccaron ; B 31 -8 550 717 ;
+C -1 ; WX 780 ; N Dcaron ; B 20 0 748 919 ;
+C -1 ; WX 752 ; N dcaron ; B 31 -8 798 798 ;
+C -1 ; WX 720 ; N Ecaron ; B 20 0 724 919 ;
+C -1 ; WX 580 ; N ecaron ; B 31 -8 548 717 ;
+C -1 ; WX 640 ; N Lcaron ; B 20 0 668 749 ;
+C -1 ; WX 640 ; N Lacute ; B 20 0 668 927 ;
+C -1 ; WX 452 ; N lcaron ; B 9 0 498 798 ;
+C -1 ; WX 340 ; N lacute ; B 9 0 323 927 ;
+C -1 ; WX 740 ; N Ncaron ; B 20 0 724 919 ;
+C -1 ; WX 680 ; N ncaron ; B 22 0 652 717 ;
+C -1 ; WX 780 ; N Rcaron ; B 20 0 783 919 ;
+C -1 ; WX 780 ; N Racute ; B 20 0 783 927 ;
+C -1 ; WX 460 ; N rcaron ; B 22 0 462 717 ;
+C -1 ; WX 460 ; N racute ; B 22 0 462 731 ;
+C -1 ; WX 700 ; N Tcaron ; B -4 0 703 919 ;
+C -1 ; WX 572 ; N tcaron ; B 22 -8 621 698 ;
+C -1 ; WX 740 ; N Uring ; B 15 -17 724 919 ;
+C -1 ; WX 660 ; N uring ; B 22 -8 653 755 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 189 202 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 66 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 140 202 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 556 100 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 110 202 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 40 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 313 51 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 120 196 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 256 100 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute -4 196 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 120 202 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 90 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 140 202 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 239 196 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron -20 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 56 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 100 202 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 379 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 200 164 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 160 0 ;
+EndBuildComposites
diff --git a/font/font/Bk-DmIt b/font/font/Bk-DmIt
new file mode 100644
index 0000000..c2da47a
--- /dev/null
+++ b/font/font/Bk-DmIt
@@ -0,0 +1,417 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1992 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Tue Jan 21 16:12:43 1992
+Comment UniqueID 37832
+Comment VMusage 32139 39031
+FontName Bookman-DemiItalic
+FullName ITC Bookman Demi Italic
+FamilyName ITC Bookman
+Weight Demi
+ItalicAngle -10
+IsFixedPitch false
+FontBBox -231 -250 1333 941
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.004
+Notice Copyright (c) 1985, 1987, 1989, 1992 Adobe Systems Incorporated. All Rights Reserved.ITC Bookman is a registered trademark of International Typeface Corporation.
+EncodingScheme AdobeStandardEncoding
+CapHeight 681
+XHeight 515
+Ascender 732
+Descender -213
+StartCharMetrics 228
+C 32 ; WX 340 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 320 ; N exclam ; B 86 -8 366 698 ;
+C 34 ; WX 380 ; N quotedbl ; B 140 371 507 697 ;
+C 35 ; WX 680 ; N numbersign ; B 157 0 649 681 ;
+C 36 ; WX 680 ; N dollar ; B 45 -164 697 790 ;
+C 37 ; WX 880 ; N percent ; B 106 -17 899 698 ;
+C 38 ; WX 980 ; N ampersand ; B 48 -17 1016 698 ;
+C 39 ; WX 320 ; N quoteright ; B 171 420 349 698 ;
+C 40 ; WX 260 ; N parenleft ; B 31 -134 388 741 ;
+C 41 ; WX 260 ; N parenright ; B -35 -134 322 741 ;
+C 42 ; WX 460 ; N asterisk ; B 126 346 508 698 ;
+C 43 ; WX 600 ; N plus ; B 91 9 595 514 ;
+C 44 ; WX 340 ; N comma ; B 100 -124 298 185 ;
+C 45 ; WX 280 ; N hyphen ; B 59 218 319 313 ;
+C 46 ; WX 340 ; N period ; B 106 -8 296 177 ;
+C 47 ; WX 360 ; N slash ; B 9 -106 502 742 ;
+C 48 ; WX 680 ; N zero ; B 87 -17 703 698 ;
+C 49 ; WX 680 ; N one ; B 123 0 565 681 ;
+C 50 ; WX 680 ; N two ; B 67 0 674 698 ;
+C 51 ; WX 680 ; N three ; B 72 -17 683 698 ;
+C 52 ; WX 680 ; N four ; B 63 0 708 681 ;
+C 53 ; WX 680 ; N five ; B 78 -17 669 681 ;
+C 54 ; WX 680 ; N six ; B 88 -17 704 698 ;
+C 55 ; WX 680 ; N seven ; B 123 0 739 681 ;
+C 56 ; WX 680 ; N eight ; B 68 -17 686 698 ;
+C 57 ; WX 680 ; N nine ; B 71 -17 712 698 ;
+C 58 ; WX 340 ; N colon ; B 106 -8 356 515 ;
+C 59 ; WX 340 ; N semicolon ; B 100 -124 352 515 ;
+C 60 ; WX 620 ; N less ; B 79 -9 588 540 ;
+C 61 ; WX 600 ; N equal ; B 91 109 595 421 ;
+C 62 ; WX 620 ; N greater ; B 89 -9 598 540 ;
+C 63 ; WX 620 ; N question ; B 145 -8 668 698 ;
+C 64 ; WX 780 ; N at ; B 80 -17 790 698 ;
+C 65 ; WX 720 ; N A ; B -27 0 769 681 ;
+C 66 ; WX 720 ; N B ; B 14 0 762 681 ;
+C 67 ; WX 700 ; N C ; B 78 -17 754 698 ;
+C 68 ; WX 760 ; N D ; B 14 0 805 681 ;
+C 69 ; WX 720 ; N E ; B 14 0 777 681 ;
+C 70 ; WX 660 ; N F ; B 14 0 763 681 ;
+C 71 ; WX 760 ; N G ; B 77 -17 828 698 ;
+C 72 ; WX 800 ; N H ; B 14 0 910 681 ;
+C 73 ; WX 380 ; N I ; B 14 0 485 681 ;
+C 74 ; WX 620 ; N J ; B 8 -17 721 681 ;
+C 75 ; WX 780 ; N K ; B 14 0 879 681 ;
+C 76 ; WX 640 ; N L ; B 14 0 725 681 ;
+C 77 ; WX 860 ; N M ; B 14 0 970 681 ;
+C 78 ; WX 740 ; N N ; B 14 0 845 681 ;
+C 79 ; WX 760 ; N O ; B 78 -17 806 698 ;
+C 80 ; WX 640 ; N P ; B -6 0 724 681 ;
+C 81 ; WX 760 ; N Q ; B 37 -213 805 698 ;
+C 82 ; WX 740 ; N R ; B 14 0 765 681 ;
+C 83 ; WX 700 ; N S ; B 59 -17 731 698 ;
+C 84 ; WX 700 ; N T ; B 70 0 802 681 ;
+C 85 ; WX 740 ; N U ; B 112 -17 855 681 ;
+C 86 ; WX 660 ; N V ; B 72 0 819 681 ;
+C 87 ; WX 1000 ; N W ; B 72 0 1090 681 ;
+C 88 ; WX 740 ; N X ; B -7 0 835 681 ;
+C 89 ; WX 660 ; N Y ; B 72 0 817 681 ;
+C 90 ; WX 680 ; N Z ; B 23 0 740 681 ;
+C 91 ; WX 260 ; N bracketleft ; B 9 -118 374 741 ;
+C 92 ; WX 580 ; N backslash ; B 73 0 575 741 ;
+C 93 ; WX 260 ; N bracketright ; B -18 -118 347 741 ;
+C 94 ; WX 620 ; N asciicircum ; B 92 281 594 681 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 320 ; N quoteleft ; B 155 420 333 698 ;
+C 97 ; WX 680 ; N a ; B 84 -8 735 515 ;
+C 98 ; WX 600 ; N b ; B 57 -8 633 732 ;
+C 99 ; WX 560 ; N c ; B 58 -8 597 515 ;
+C 100 ; WX 680 ; N d ; B 60 -8 714 732 ;
+C 101 ; WX 560 ; N e ; B 59 -8 596 515 ;
+C 102 ; WX 420 ; N f ; B -192 -213 641 741 ; L i fi ; L l fl ;
+C 103 ; WX 620 ; N g ; B 21 -213 669 515 ;
+C 104 ; WX 700 ; N h ; B 93 -8 736 732 ;
+C 105 ; WX 380 ; N i ; B 83 -8 420 755 ;
+C 106 ; WX 320 ; N j ; B -160 -213 392 755 ;
+C 107 ; WX 700 ; N k ; B 97 -8 732 732 ;
+C 108 ; WX 380 ; N l ; B 109 -8 410 732 ;
+C 109 ; WX 960 ; N m ; B 83 -8 996 515 ;
+C 110 ; WX 680 ; N n ; B 83 -8 715 515 ;
+C 111 ; WX 600 ; N o ; B 59 -8 627 515 ;
+C 112 ; WX 660 ; N p ; B -24 -213 682 515 ;
+C 113 ; WX 620 ; N q ; B 60 -213 640 515 ;
+C 114 ; WX 500 ; N r ; B 84 0 582 515 ;
+C 115 ; WX 540 ; N s ; B 32 -8 573 515 ;
+C 116 ; WX 440 ; N t ; B 106 -8 488 658 ;
+C 117 ; WX 680 ; N u ; B 83 -8 720 507 ;
+C 118 ; WX 540 ; N v ; B 56 -8 572 515 ;
+C 119 ; WX 860 ; N w ; B 56 -8 891 515 ;
+C 120 ; WX 620 ; N x ; B 10 -8 654 515 ;
+C 121 ; WX 600 ; N y ; B 25 -213 642 507 ;
+C 122 ; WX 560 ; N z ; B 36 -8 586 515 ;
+C 123 ; WX 300 ; N braceleft ; B 49 -123 413 742 ;
+C 124 ; WX 620 ; N bar ; B 303 -250 422 750 ;
+C 125 ; WX 300 ; N braceright ; B -8 -114 356 751 ;
+C 126 ; WX 620 ; N asciitilde ; B 101 162 605 368 ;
+C 161 ; WX 320 ; N exclamdown ; B 64 -191 344 515 ;
+C 162 ; WX 680 ; N cent ; B 161 25 616 718 ;
+C 163 ; WX 680 ; N sterling ; B 0 -17 787 698 ;
+C 164 ; WX 120 ; N fraction ; B -144 0 382 681 ;
+C 165 ; WX 680 ; N yen ; B 92 0 782 681 ;
+C 166 ; WX 680 ; N florin ; B -28 -199 743 741 ;
+C 167 ; WX 620 ; N section ; B 46 -137 638 698 ;
+C 168 ; WX 680 ; N currency ; B 148 85 637 571 ;
+C 169 ; WX 180 ; N quotesingle ; B 126 370 295 696 ;
+C 170 ; WX 520 ; N quotedblleft ; B 156 420 545 698 ;
+C 171 ; WX 380 ; N guillemotleft ; B 62 84 406 503 ;
+C 172 ; WX 220 ; N guilsinglleft ; B 62 84 249 503 ;
+C 173 ; WX 220 ; N guilsinglright ; B 62 84 249 503 ;
+C 174 ; WX 820 ; N fi ; B -191 -213 850 741 ;
+C 175 ; WX 820 ; N fl ; B -191 -213 850 741 ;
+C 177 ; WX 500 ; N endash ; B 40 219 573 311 ;
+C 178 ; WX 420 ; N dagger ; B 89 -137 466 698 ;
+C 179 ; WX 420 ; N daggerdbl ; B 79 -137 486 698 ;
+C 180 ; WX 340 ; N periodcentered ; B 126 173 316 358 ;
+C 182 ; WX 680 ; N paragraph ; B 137 0 715 681 ;
+C 183 ; WX 360 ; N bullet ; B 60 170 404 511 ;
+C 184 ; WX 300 ; N quotesinglbase ; B 106 -112 284 166 ;
+C 185 ; WX 520 ; N quotedblbase ; B 106 -112 495 166 ;
+C 186 ; WX 520 ; N quotedblright ; B 171 420 560 698 ;
+C 187 ; WX 380 ; N guillemotright ; B 62 84 406 503 ;
+C 188 ; WX 1000 ; N ellipsis ; B 86 -8 942 177 ;
+C 189 ; WX 1360 ; N perthousand ; B 106 -17 1333 698 ;
+C 191 ; WX 620 ; N questiondown ; B 83 -189 606 515 ;
+C 193 ; WX 380 ; N grave ; B 193 566 424 771 ;
+C 194 ; WX 340 ; N acute ; B 176 566 407 771 ;
+C 195 ; WX 480 ; N circumflex ; B 183 582 523 749 ;
+C 196 ; WX 480 ; N tilde ; B 178 587 533 709 ;
+C 197 ; WX 480 ; N macron ; B 177 603 531 691 ;
+C 198 ; WX 460 ; N breve ; B 177 577 516 707 ;
+C 199 ; WX 380 ; N dotaccent ; B 180 570 345 734 ;
+C 200 ; WX 520 ; N dieresis ; B 180 570 569 734 ;
+C 202 ; WX 360 ; N ring ; B 185 558 406 775 ;
+C 203 ; WX 360 ; N cedilla ; B 68 -220 289 -8 ;
+C 205 ; WX 560 ; N hungarumlaut ; B 181 560 616 775 ;
+C 206 ; WX 320 ; N ogonek ; B 68 -182 253 0 ;
+C 207 ; WX 480 ; N caron ; B 183 582 523 749 ;
+C 208 ; WX 1000 ; N emdash ; B 40 219 1073 311 ;
+C 225 ; WX 1140 ; N AE ; B -27 0 1207 681 ;
+C 227 ; WX 440 ; N ordfeminine ; B 118 400 495 685 ;
+C 232 ; WX 640 ; N Lslash ; B 14 0 724 681 ;
+C 233 ; WX 760 ; N Oslash ; B 21 -29 847 725 ;
+C 234 ; WX 1180 ; N OE ; B 94 -17 1245 698 ;
+C 235 ; WX 440 ; N ordmasculine ; B 127 400 455 685 ;
+C 241 ; WX 880 ; N ae ; B 39 -8 913 515 ;
+C 245 ; WX 380 ; N dotlessi ; B 83 -8 420 507 ;
+C 248 ; WX 380 ; N lslash ; B 63 -8 412 732 ;
+C 249 ; WX 600 ; N oslash ; B 17 -54 661 571 ;
+C 250 ; WX 920 ; N oe ; B 48 -8 961 515 ;
+C 251 ; WX 660 ; N germandbls ; B -231 -213 702 741 ;
+C -1 ; WX 560 ; N ecircumflex ; B 59 -8 596 749 ;
+C -1 ; WX 560 ; N edieresis ; B 59 -8 596 734 ;
+C -1 ; WX 680 ; N aacute ; B 84 -8 735 771 ;
+C -1 ; WX 780 ; N registered ; B 83 -17 783 698 ;
+C -1 ; WX 380 ; N icircumflex ; B 83 -8 433 749 ;
+C -1 ; WX 680 ; N udieresis ; B 83 -8 720 734 ;
+C -1 ; WX 600 ; N ograve ; B 59 -8 627 771 ;
+C -1 ; WX 680 ; N uacute ; B 83 -8 720 771 ;
+C -1 ; WX 680 ; N ucircumflex ; B 83 -8 720 749 ;
+C -1 ; WX 720 ; N Aacute ; B -27 0 769 937 ;
+C -1 ; WX 380 ; N igrave ; B 83 -8 424 771 ;
+C -1 ; WX 380 ; N Icircumflex ; B 14 0 493 915 ;
+C -1 ; WX 560 ; N ccedilla ; B 58 -220 597 515 ;
+C -1 ; WX 680 ; N adieresis ; B 84 -8 735 734 ;
+C -1 ; WX 720 ; N Ecircumflex ; B 14 0 777 915 ;
+C -1 ; WX 540 ; N scaron ; B 32 -8 573 749 ;
+C -1 ; WX 660 ; N thorn ; B -24 -213 682 732 ;
+C -1 ; WX 940 ; N trademark ; B 42 277 982 681 ;
+C -1 ; WX 560 ; N egrave ; B 59 -8 596 771 ;
+C -1 ; WX 408 ; N threesuperior ; B 86 269 483 698 ;
+C -1 ; WX 560 ; N zcaron ; B 36 -8 586 749 ;
+C -1 ; WX 680 ; N atilde ; B 84 -8 735 709 ;
+C -1 ; WX 680 ; N aring ; B 84 -8 735 775 ;
+C -1 ; WX 600 ; N ocircumflex ; B 59 -8 627 749 ;
+C -1 ; WX 720 ; N Edieresis ; B 14 0 777 900 ;
+C -1 ; WX 1020 ; N threequarters ; B 86 0 1054 691 ;
+C -1 ; WX 600 ; N ydieresis ; B 25 -213 642 734 ;
+C -1 ; WX 600 ; N yacute ; B 25 -213 642 771 ;
+C -1 ; WX 380 ; N iacute ; B 83 -8 420 771 ;
+C -1 ; WX 720 ; N Acircumflex ; B -27 0 769 915 ;
+C -1 ; WX 740 ; N Uacute ; B 112 -17 855 937 ;
+C -1 ; WX 560 ; N eacute ; B 59 -8 596 771 ;
+C -1 ; WX 760 ; N Ograve ; B 78 -17 806 937 ;
+C -1 ; WX 680 ; N agrave ; B 84 -8 735 771 ;
+C -1 ; WX 740 ; N Udieresis ; B 112 -17 855 900 ;
+C -1 ; WX 680 ; N acircumflex ; B 84 -8 735 749 ;
+C -1 ; WX 380 ; N Igrave ; B 14 0 485 937 ;
+C -1 ; WX 408 ; N twosuperior ; B 91 279 485 698 ;
+C -1 ; WX 740 ; N Ugrave ; B 112 -17 855 937 ;
+C -1 ; WX 1020 ; N onequarter ; B 118 0 1054 681 ;
+C -1 ; WX 740 ; N Ucircumflex ; B 112 -17 855 915 ;
+C -1 ; WX 700 ; N Scaron ; B 59 -17 731 915 ;
+C -1 ; WX 380 ; N Idieresis ; B 14 0 499 900 ;
+C -1 ; WX 380 ; N idieresis ; B 83 -8 479 734 ;
+C -1 ; WX 720 ; N Egrave ; B 14 0 777 937 ;
+C -1 ; WX 760 ; N Oacute ; B 78 -17 806 937 ;
+C -1 ; WX 600 ; N divide ; B 91 9 595 521 ;
+C -1 ; WX 720 ; N Atilde ; B -27 0 769 875 ;
+C -1 ; WX 720 ; N Aring ; B -27 0 769 941 ;
+C -1 ; WX 760 ; N Odieresis ; B 78 -17 806 900 ;
+C -1 ; WX 720 ; N Adieresis ; B -27 0 769 900 ;
+C -1 ; WX 740 ; N Ntilde ; B 14 0 845 875 ;
+C -1 ; WX 680 ; N Zcaron ; B 23 0 740 915 ;
+C -1 ; WX 640 ; N Thorn ; B -6 0 701 681 ;
+C -1 ; WX 380 ; N Iacute ; B 14 0 485 937 ;
+C -1 ; WX 600 ; N plusminus ; B 91 0 595 514 ;
+C -1 ; WX 600 ; N multiply ; B 91 10 595 514 ;
+C -1 ; WX 720 ; N Eacute ; B 14 0 777 937 ;
+C -1 ; WX 660 ; N Ydieresis ; B 72 0 817 900 ;
+C -1 ; WX 408 ; N onesuperior ; B 118 279 406 688 ;
+C -1 ; WX 680 ; N ugrave ; B 83 -8 720 771 ;
+C -1 ; WX 620 ; N logicalnot ; B 81 129 585 421 ;
+C -1 ; WX 680 ; N ntilde ; B 83 -8 715 709 ;
+C -1 ; WX 760 ; N Otilde ; B 78 -17 806 875 ;
+C -1 ; WX 600 ; N otilde ; B 59 -8 627 709 ;
+C -1 ; WX 700 ; N Ccedilla ; B 78 -220 754 698 ;
+C -1 ; WX 720 ; N Agrave ; B -27 0 769 937 ;
+C -1 ; WX 1020 ; N onehalf ; B 118 0 1036 681 ;
+C -1 ; WX 760 ; N Eth ; B 14 0 805 681 ;
+C -1 ; WX 400 ; N degree ; B 130 398 430 698 ;
+C -1 ; WX 660 ; N Yacute ; B 72 0 817 937 ;
+C -1 ; WX 760 ; N Ocircumflex ; B 78 -17 806 915 ;
+C -1 ; WX 600 ; N oacute ; B 59 -8 627 771 ;
+C -1 ; WX 680 ; N mu ; B 54 -213 720 507 ;
+C -1 ; WX 600 ; N minus ; B 91 207 595 323 ;
+C -1 ; WX 600 ; N eth ; B 59 -8 662 741 ;
+C -1 ; WX 600 ; N odieresis ; B 59 -8 627 734 ;
+C -1 ; WX 780 ; N copyright ; B 83 -17 783 698 ;
+C -1 ; WX 620 ; N brokenbar ; B 303 -175 422 675 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 92
+
+KPX A y 20
+KPX A w 20
+KPX A v 20
+KPX A Y -25
+KPX A W -35
+KPX A V -40
+KPX A T -17
+
+KPX F period -105
+KPX F comma -98
+KPX F A -35
+
+KPX L y 62
+KPX L Y -5
+KPX L W -15
+KPX L V -19
+KPX L T -26
+
+KPX P period -105
+KPX P comma -98
+KPX P A -31
+
+KPX R y 27
+KPX R Y 4
+KPX R W -4
+KPX R V -8
+KPX R T -3
+
+KPX T y 56
+KPX T w 69
+KPX T u 42
+KPX T semicolon 31
+KPX T s -1
+KPX T r 41
+KPX T period -107
+KPX T o -5
+KPX T i 42
+KPX T hyphen -20
+KPX T e -10
+KPX T comma -100
+KPX T colon 26
+KPX T c -8
+KPX T a -8
+KPX T A -42
+
+KPX V y 17
+KPX V u -1
+KPX V semicolon -22
+KPX V r 2
+KPX V period -115
+KPX V o -50
+KPX V i 32
+KPX V hyphen -20
+KPX V e -50
+KPX V comma -137
+KPX V colon -28
+KPX V a -50
+KPX V A -50
+
+KPX W y -51
+KPX W u -69
+KPX W semicolon -81
+KPX W r -66
+KPX W period -183
+KPX W o -100
+KPX W i -36
+KPX W hyphen -22
+KPX W e -100
+KPX W comma -201
+KPX W colon -86
+KPX W a -100
+KPX W A -77
+
+KPX Y v 26
+KPX Y u -1
+KPX Y semicolon -4
+KPX Y q -43
+KPX Y period -113
+KPX Y o -41
+KPX Y i 20
+KPX Y hyphen -20
+KPX Y e -46
+KPX Y comma -106
+KPX Y colon -9
+KPX Y a -45
+KPX Y A -30
+
+KPX f f 10
+
+KPX r q -3
+KPX r period -120
+KPX r o -1
+KPX r n 39
+KPX r m 39
+KPX r hyphen -20
+KPX r h -35
+KPX r g -23
+KPX r f 42
+KPX r e -6
+KPX r d -3
+KPX r comma -113
+KPX r c -5
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 190 166 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 120 166 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 100 166 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 170 166 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 200 166 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 120 166 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 190 166 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 120 166 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 100 166 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 170 166 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 20 166 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex -30 166 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis -70 166 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 0 166 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 130 166 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 210 166 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 140 166 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 140 166 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 190 166 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 140 166 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 110 166 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 200 166 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 130 166 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 130 166 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 180 166 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 160 166 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 70 166 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 100 166 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 170 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 100 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 80 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 150 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 160 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 100 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 110 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 60 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 20 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 90 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute 0 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -90 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -90 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave 0 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 60 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 130 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 60 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 40 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 110 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 60 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 30 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 170 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 100 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 80 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 150 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 130 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 40 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 40 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/Bk-DmIt+ b/font/font/Bk-DmIt+
new file mode 100644
index 0000000..c7ad35c
--- /dev/null
+++ b/font/font/Bk-DmIt+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 700 ; N Ccaron ; B 78 -17 754 910 ;
+C -1 ; WX 560 ; N ccaron ; B 58 -8 597 749 ;
+C -1 ; WX 760 ; N Dcaron ; B 14 0 805 910 ;
+C -1 ; WX 805 ; N dcaron ; B 60 -8 910 805 ;
+C -1 ; WX 720 ; N Ecaron ; B 14 0 777 910 ;
+C -1 ; WX 560 ; N ecaron ; B 59 -8 596 749 ;
+C -1 ; WX 640 ; N Lcaron ; B 14 0 725 749 ;
+C -1 ; WX 640 ; N Lacute ; B 14 0 725 948 ;
+C -1 ; WX 505 ; N lcaron ; B 109 -8 606 805 ;
+C -1 ; WX 380 ; N lacute ; B 109 -8 481 948 ;
+C -1 ; WX 740 ; N Ncaron ; B 14 0 845 910 ;
+C -1 ; WX 680 ; N ncaron ; B 83 -8 715 749 ;
+C -1 ; WX 740 ; N Rcaron ; B 14 0 765 910 ;
+C -1 ; WX 740 ; N Racute ; B 14 0 765 948 ;
+C -1 ; WX 500 ; N rcaron ; B 84 0 582 749 ;
+C -1 ; WX 500 ; N racute ; B 84 0 582 771 ;
+C -1 ; WX 700 ; N Tcaron ; B 70 0 802 910 ;
+C -1 ; WX 565 ; N tcaron ; B 106 -8 684 698 ;
+C -1 ; WX 740 ; N Uring ; B 112 -17 855 910 ;
+C -1 ; WX 680 ; N uring ; B 83 -8 720 775 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 206 161 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 67 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 168 161 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 561 107 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 148 161 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 40 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 332 51 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 181 177 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 257 107 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 74 177 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 158 161 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 100 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 158 161 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 275 177 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 10 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 103 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 138 161 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 335 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 213 135 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 160 0 ;
+EndBuildComposites
diff --git a/font/font/Bk-Lt b/font/font/Bk-Lt
new file mode 100644
index 0000000..8b79ea7
--- /dev/null
+++ b/font/font/Bk-Lt
@@ -0,0 +1,407 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1992 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Tue Jan 21 16:15:53 1992
+Comment UniqueID 37833
+Comment VMusage 32321 39213
+FontName Bookman-Light
+FullName ITC Bookman Light
+FamilyName ITC Bookman
+Weight Light
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -188 -251 1266 908
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.004
+Notice Copyright (c) 1985, 1987, 1989, 1992 Adobe Systems Incorporated. All Rights Reserved.ITC Bookman is a registered trademark of International Typeface Corporation.
+EncodingScheme AdobeStandardEncoding
+CapHeight 681
+XHeight 484
+Ascender 717
+Descender -228
+StartCharMetrics 228
+C 32 ; WX 320 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 300 ; N exclam ; B 75 -8 219 698 ;
+C 34 ; WX 380 ; N quotedbl ; B 56 458 323 698 ;
+C 35 ; WX 620 ; N numbersign ; B 65 0 556 681 ;
+C 36 ; WX 620 ; N dollar ; B 34 -109 593 791 ;
+C 37 ; WX 900 ; N percent ; B 22 -8 873 698 ;
+C 38 ; WX 800 ; N ampersand ; B 45 -17 787 698 ;
+C 39 ; WX 220 ; N quoteright ; B 46 480 178 698 ;
+C 40 ; WX 300 ; N parenleft ; B 76 -145 278 727 ;
+C 41 ; WX 300 ; N parenright ; B 17 -146 219 727 ;
+C 42 ; WX 440 ; N asterisk ; B 54 325 391 698 ;
+C 43 ; WX 600 ; N plus ; B 51 8 555 513 ;
+C 44 ; WX 320 ; N comma ; B 90 -114 223 114 ;
+C 45 ; WX 400 ; N hyphen ; B 50 232 350 292 ;
+C 46 ; WX 320 ; N period ; B 92 -8 220 123 ;
+C 47 ; WX 600 ; N slash ; B 74 -149 532 717 ;
+C 48 ; WX 620 ; N zero ; B 40 -17 586 698 ;
+C 49 ; WX 620 ; N one ; B 160 0 501 681 ;
+C 50 ; WX 620 ; N two ; B 42 0 576 698 ;
+C 51 ; WX 620 ; N three ; B 40 -17 576 698 ;
+C 52 ; WX 620 ; N four ; B 25 0 600 681 ;
+C 53 ; WX 620 ; N five ; B 60 -17 584 717 ;
+C 54 ; WX 620 ; N six ; B 45 -17 590 698 ;
+C 55 ; WX 620 ; N seven ; B 60 0 586 681 ;
+C 56 ; WX 620 ; N eight ; B 44 -17 583 698 ;
+C 57 ; WX 620 ; N nine ; B 37 -17 576 698 ;
+C 58 ; WX 320 ; N colon ; B 92 -8 220 494 ;
+C 59 ; WX 320 ; N semicolon ; B 90 -114 223 494 ;
+C 60 ; WX 600 ; N less ; B 49 -2 558 526 ;
+C 61 ; WX 600 ; N equal ; B 51 126 555 398 ;
+C 62 ; WX 600 ; N greater ; B 48 -2 557 526 ;
+C 63 ; WX 540 ; N question ; B 27 -8 514 698 ;
+C 64 ; WX 820 ; N at ; B 55 -17 755 698 ;
+C 65 ; WX 680 ; N A ; B -37 0 714 681 ;
+C 66 ; WX 740 ; N B ; B 31 0 702 681 ;
+C 67 ; WX 740 ; N C ; B 44 -17 702 698 ;
+C 68 ; WX 800 ; N D ; B 31 0 752 681 ;
+C 69 ; WX 720 ; N E ; B 31 0 705 681 ;
+C 70 ; WX 640 ; N F ; B 31 0 654 681 ;
+C 71 ; WX 800 ; N G ; B 44 -17 778 698 ;
+C 72 ; WX 800 ; N H ; B 31 0 769 681 ;
+C 73 ; WX 340 ; N I ; B 31 0 301 681 ;
+C 74 ; WX 600 ; N J ; B -23 -17 567 681 ;
+C 75 ; WX 720 ; N K ; B 31 0 750 681 ;
+C 76 ; WX 600 ; N L ; B 31 0 629 681 ;
+C 77 ; WX 920 ; N M ; B 26 0 894 681 ;
+C 78 ; WX 740 ; N N ; B 26 0 722 681 ;
+C 79 ; WX 800 ; N O ; B 44 -17 758 698 ;
+C 80 ; WX 620 ; N P ; B 31 0 613 681 ;
+C 81 ; WX 820 ; N Q ; B 44 -189 769 698 ;
+C 82 ; WX 720 ; N R ; B 31 0 757 681 ;
+C 83 ; WX 660 ; N S ; B 28 -17 634 698 ;
+C 84 ; WX 620 ; N T ; B -37 0 656 681 ;
+C 85 ; WX 780 ; N U ; B 25 -17 754 681 ;
+C 86 ; WX 700 ; N V ; B -30 0 725 681 ;
+C 87 ; WX 960 ; N W ; B -30 0 984 681 ;
+C 88 ; WX 720 ; N X ; B -30 0 755 681 ;
+C 89 ; WX 640 ; N Y ; B -30 0 666 681 ;
+C 90 ; WX 640 ; N Z ; B 10 0 656 681 ;
+C 91 ; WX 300 ; N bracketleft ; B 92 -136 258 717 ;
+C 92 ; WX 600 ; N backslash ; B 74 0 532 717 ;
+C 93 ; WX 300 ; N bracketright ; B 41 -136 207 717 ;
+C 94 ; WX 600 ; N asciicircum ; B 52 276 554 681 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 220 ; N quoteleft ; B 46 479 178 698 ;
+C 97 ; WX 580 ; N a ; B 35 -8 587 494 ;
+C 98 ; WX 620 ; N b ; B -2 -8 582 717 ;
+C 99 ; WX 520 ; N c ; B 37 -8 498 494 ;
+C 100 ; WX 620 ; N d ; B 37 -8 591 717 ;
+C 101 ; WX 520 ; N e ; B 37 -8 491 494 ;
+C 102 ; WX 320 ; N f ; B 20 0 414 734 ; L i fi ; L l fl ;
+C 103 ; WX 540 ; N g ; B 17 -243 542 567 ;
+C 104 ; WX 660 ; N h ; B 20 0 643 717 ;
+C 105 ; WX 300 ; N i ; B 20 0 288 654 ;
+C 106 ; WX 300 ; N j ; B -109 -251 214 654 ;
+C 107 ; WX 620 ; N k ; B 20 0 628 717 ;
+C 108 ; WX 300 ; N l ; B 20 0 286 717 ;
+C 109 ; WX 940 ; N m ; B 17 0 928 494 ;
+C 110 ; WX 660 ; N n ; B 20 0 649 494 ;
+C 111 ; WX 560 ; N o ; B 37 -8 526 494 ;
+C 112 ; WX 620 ; N p ; B 20 -228 583 494 ;
+C 113 ; WX 580 ; N q ; B 37 -228 589 494 ;
+C 114 ; WX 440 ; N r ; B 20 0 447 494 ;
+C 115 ; WX 520 ; N s ; B 40 -8 487 494 ;
+C 116 ; WX 380 ; N t ; B 20 -8 388 667 ;
+C 117 ; WX 680 ; N u ; B 20 -8 653 484 ;
+C 118 ; WX 520 ; N v ; B -23 0 534 484 ;
+C 119 ; WX 780 ; N w ; B -19 0 804 484 ;
+C 120 ; WX 560 ; N x ; B -16 0 576 484 ;
+C 121 ; WX 540 ; N y ; B -23 -236 549 484 ;
+C 122 ; WX 480 ; N z ; B 7 0 476 484 ;
+C 123 ; WX 280 ; N braceleft ; B 21 -136 260 717 ;
+C 124 ; WX 600 ; N bar ; B 264 -250 342 750 ;
+C 125 ; WX 280 ; N braceright ; B 21 -136 260 717 ;
+C 126 ; WX 600 ; N asciitilde ; B 52 173 556 352 ;
+C 161 ; WX 300 ; N exclamdown ; B 75 -214 219 494 ;
+C 162 ; WX 620 ; N cent ; B 116 20 511 651 ;
+C 163 ; WX 620 ; N sterling ; B 8 -17 631 698 ;
+C 164 ; WX 140 ; N fraction ; B -188 0 335 681 ;
+C 165 ; WX 620 ; N yen ; B -22 0 647 681 ;
+C 166 ; WX 620 ; N florin ; B -29 -155 633 749 ;
+C 167 ; WX 520 ; N section ; B 33 -178 486 698 ;
+C 168 ; WX 620 ; N currency ; B 58 89 563 591 ;
+C 169 ; WX 220 ; N quotesingle ; B 67 458 153 698 ;
+C 170 ; WX 400 ; N quotedblleft ; B 46 479 348 698 ;
+C 171 ; WX 360 ; N guillemotleft ; B 51 89 312 437 ;
+C 172 ; WX 240 ; N guilsinglleft ; B 51 89 189 437 ;
+C 173 ; WX 240 ; N guilsinglright ; B 51 89 189 437 ;
+C 174 ; WX 620 ; N fi ; B 20 0 608 734 ;
+C 175 ; WX 620 ; N fl ; B 20 0 606 734 ;
+C 177 ; WX 500 ; N endash ; B -15 232 515 292 ;
+C 178 ; WX 540 ; N dagger ; B 79 -156 455 698 ;
+C 179 ; WX 540 ; N daggerdbl ; B 79 -156 455 698 ;
+C 180 ; WX 320 ; N periodcentered ; B 92 196 220 327 ;
+C 182 ; WX 600 ; N paragraph ; B 14 0 577 681 ;
+C 183 ; WX 460 ; N bullet ; B 60 170 404 511 ;
+C 184 ; WX 220 ; N quotesinglbase ; B 46 -108 178 110 ;
+C 185 ; WX 400 ; N quotedblbase ; B 46 -108 348 110 ;
+C 186 ; WX 400 ; N quotedblright ; B 46 480 348 698 ;
+C 187 ; WX 360 ; N guillemotright ; B 51 89 312 437 ;
+C 188 ; WX 1000 ; N ellipsis ; B 101 -8 898 123 ;
+C 189 ; WX 1280 ; N perthousand ; B 22 -8 1266 698 ;
+C 191 ; WX 540 ; N questiondown ; B 23 -217 510 494 ;
+C 193 ; WX 340 ; N grave ; B 68 571 274 689 ;
+C 194 ; WX 340 ; N acute ; B 68 571 274 689 ;
+C 195 ; WX 420 ; N circumflex ; B 68 567 352 685 ;
+C 196 ; WX 440 ; N tilde ; B 68 572 375 661 ;
+C 197 ; WX 440 ; N macron ; B 68 587 364 635 ;
+C 198 ; WX 460 ; N breve ; B 68 568 396 687 ;
+C 199 ; WX 260 ; N dotaccent ; B 68 552 186 672 ;
+C 200 ; WX 420 ; N dieresis ; B 68 552 349 674 ;
+C 202 ; WX 320 ; N ring ; B 68 546 252 731 ;
+C 203 ; WX 320 ; N cedilla ; B 68 -200 257 0 ;
+C 205 ; WX 380 ; N hungarumlaut ; B 68 538 311 698 ;
+C 206 ; WX 320 ; N ogonek ; B 68 -145 245 0 ;
+C 207 ; WX 420 ; N caron ; B 68 554 352 672 ;
+C 208 ; WX 1000 ; N emdash ; B -15 232 1015 292 ;
+C 225 ; WX 1260 ; N AE ; B -36 0 1250 681 ;
+C 227 ; WX 420 ; N ordfeminine ; B 49 395 393 698 ;
+C 232 ; WX 600 ; N Lslash ; B 31 0 629 681 ;
+C 233 ; WX 800 ; N Oslash ; B 44 -53 758 733 ;
+C 234 ; WX 1240 ; N OE ; B 44 -17 1214 698 ;
+C 235 ; WX 420 ; N ordmasculine ; B 56 394 361 698 ;
+C 241 ; WX 860 ; N ae ; B 35 -8 832 494 ;
+C 245 ; WX 300 ; N dotlessi ; B 20 0 288 484 ;
+C 248 ; WX 320 ; N lslash ; B 20 0 291 717 ;
+C 249 ; WX 560 ; N oslash ; B 37 -40 526 534 ;
+C 250 ; WX 900 ; N oe ; B 37 -8 876 494 ;
+C 251 ; WX 660 ; N germandbls ; B -109 -110 614 698 ;
+C -1 ; WX 520 ; N ecircumflex ; B 37 -8 491 685 ;
+C -1 ; WX 520 ; N edieresis ; B 37 -8 491 674 ;
+C -1 ; WX 580 ; N aacute ; B 35 -8 587 689 ;
+C -1 ; WX 740 ; N registered ; B 23 -17 723 698 ;
+C -1 ; WX 300 ; N icircumflex ; B 8 0 292 685 ;
+C -1 ; WX 680 ; N udieresis ; B 20 -8 653 674 ;
+C -1 ; WX 560 ; N ograve ; B 37 -8 526 689 ;
+C -1 ; WX 680 ; N uacute ; B 20 -8 653 689 ;
+C -1 ; WX 680 ; N ucircumflex ; B 20 -8 653 685 ;
+C -1 ; WX 680 ; N Aacute ; B -37 0 714 866 ;
+C -1 ; WX 300 ; N igrave ; B 20 0 288 689 ;
+C -1 ; WX 340 ; N Icircumflex ; B 28 0 312 862 ;
+C -1 ; WX 520 ; N ccedilla ; B 37 -200 498 494 ;
+C -1 ; WX 580 ; N adieresis ; B 35 -8 587 674 ;
+C -1 ; WX 720 ; N Ecircumflex ; B 31 0 705 862 ;
+C -1 ; WX 520 ; N scaron ; B 40 -8 487 672 ;
+C -1 ; WX 620 ; N thorn ; B 20 -228 583 717 ;
+C -1 ; WX 980 ; N trademark ; B 34 277 930 681 ;
+C -1 ; WX 520 ; N egrave ; B 37 -8 491 689 ;
+C -1 ; WX 372 ; N threesuperior ; B 12 269 360 698 ;
+C -1 ; WX 480 ; N zcaron ; B 7 0 476 672 ;
+C -1 ; WX 580 ; N atilde ; B 35 -8 587 661 ;
+C -1 ; WX 580 ; N aring ; B 35 -8 587 731 ;
+C -1 ; WX 560 ; N ocircumflex ; B 37 -8 526 685 ;
+C -1 ; WX 720 ; N Edieresis ; B 31 0 705 851 ;
+C -1 ; WX 930 ; N threequarters ; B 52 0 889 691 ;
+C -1 ; WX 540 ; N ydieresis ; B -23 -236 549 674 ;
+C -1 ; WX 540 ; N yacute ; B -23 -236 549 689 ;
+C -1 ; WX 300 ; N iacute ; B 20 0 288 689 ;
+C -1 ; WX 680 ; N Acircumflex ; B -37 0 714 862 ;
+C -1 ; WX 780 ; N Uacute ; B 25 -17 754 866 ;
+C -1 ; WX 520 ; N eacute ; B 37 -8 491 689 ;
+C -1 ; WX 800 ; N Ograve ; B 44 -17 758 866 ;
+C -1 ; WX 580 ; N agrave ; B 35 -8 587 689 ;
+C -1 ; WX 780 ; N Udieresis ; B 25 -17 754 851 ;
+C -1 ; WX 580 ; N acircumflex ; B 35 -8 587 685 ;
+C -1 ; WX 340 ; N Igrave ; B 31 0 301 866 ;
+C -1 ; WX 372 ; N twosuperior ; B 20 279 367 698 ;
+C -1 ; WX 780 ; N Ugrave ; B 25 -17 754 866 ;
+C -1 ; WX 930 ; N onequarter ; B 80 0 869 681 ;
+C -1 ; WX 780 ; N Ucircumflex ; B 25 -17 754 862 ;
+C -1 ; WX 660 ; N Scaron ; B 28 -17 634 849 ;
+C -1 ; WX 340 ; N Idieresis ; B 28 0 309 851 ;
+C -1 ; WX 300 ; N idieresis ; B 8 0 289 674 ;
+C -1 ; WX 720 ; N Egrave ; B 31 0 705 866 ;
+C -1 ; WX 800 ; N Oacute ; B 44 -17 758 866 ;
+C -1 ; WX 600 ; N divide ; B 51 10 555 514 ;
+C -1 ; WX 680 ; N Atilde ; B -37 0 714 838 ;
+C -1 ; WX 680 ; N Aring ; B -37 0 714 908 ;
+C -1 ; WX 800 ; N Odieresis ; B 44 -17 758 851 ;
+C -1 ; WX 680 ; N Adieresis ; B -37 0 714 851 ;
+C -1 ; WX 740 ; N Ntilde ; B 26 0 722 838 ;
+C -1 ; WX 640 ; N Zcaron ; B 10 0 656 849 ;
+C -1 ; WX 620 ; N Thorn ; B 31 0 613 681 ;
+C -1 ; WX 340 ; N Iacute ; B 31 0 301 866 ;
+C -1 ; WX 600 ; N plusminus ; B 51 0 555 513 ;
+C -1 ; WX 600 ; N multiply ; B 51 9 555 513 ;
+C -1 ; WX 720 ; N Eacute ; B 31 0 705 866 ;
+C -1 ; WX 640 ; N Ydieresis ; B -30 0 666 851 ;
+C -1 ; WX 372 ; N onesuperior ; B 80 279 302 688 ;
+C -1 ; WX 680 ; N ugrave ; B 20 -8 653 689 ;
+C -1 ; WX 600 ; N logicalnot ; B 51 128 555 398 ;
+C -1 ; WX 660 ; N ntilde ; B 20 0 649 661 ;
+C -1 ; WX 800 ; N Otilde ; B 44 -17 758 838 ;
+C -1 ; WX 560 ; N otilde ; B 37 -8 526 661 ;
+C -1 ; WX 740 ; N Ccedilla ; B 44 -200 702 698 ;
+C -1 ; WX 680 ; N Agrave ; B -37 0 714 866 ;
+C -1 ; WX 930 ; N onehalf ; B 80 0 885 681 ;
+C -1 ; WX 800 ; N Eth ; B 31 0 752 681 ;
+C -1 ; WX 400 ; N degree ; B 50 398 350 698 ;
+C -1 ; WX 640 ; N Yacute ; B -30 0 666 866 ;
+C -1 ; WX 800 ; N Ocircumflex ; B 44 -17 758 862 ;
+C -1 ; WX 560 ; N oacute ; B 37 -8 526 689 ;
+C -1 ; WX 680 ; N mu ; B 20 -251 653 484 ;
+C -1 ; WX 600 ; N minus ; B 51 224 555 300 ;
+C -1 ; WX 560 ; N eth ; B 37 -8 526 734 ;
+C -1 ; WX 560 ; N odieresis ; B 37 -8 526 674 ;
+C -1 ; WX 740 ; N copyright ; B 24 -17 724 698 ;
+C -1 ; WX 600 ; N brokenbar ; B 264 -175 342 675 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 82
+
+KPX A y 32
+KPX A w 4
+KPX A v 7
+KPX A Y -35
+KPX A W -40
+KPX A V -56
+KPX A T 1
+
+KPX F period -46
+KPX F comma -41
+KPX F A -21
+
+KPX L y 79
+KPX L Y 13
+KPX L W 1
+KPX L V -4
+KPX L T 28
+
+KPX P period -60
+KPX P comma -55
+KPX P A -8
+
+KPX R y 59
+KPX R Y 26
+KPX R W 13
+KPX R V 8
+KPX R T 71
+
+KPX T s 16
+KPX T r 38
+KPX T period -33
+KPX T o 15
+KPX T i 42
+KPX T hyphen 90
+KPX T e 13
+KPX T comma -28
+KPX T c 14
+KPX T a 17
+KPX T A 1
+
+KPX V y 15
+KPX V u -38
+KPX V r -41
+KPX V period -40
+KPX V o -71
+KPX V i -20
+KPX V hyphen 11
+KPX V e -72
+KPX V comma -34
+KPX V a -69
+KPX V A -66
+
+KPX W y 15
+KPX W u -38
+KPX W r -41
+KPX W period -40
+KPX W o -68
+KPX W i -20
+KPX W hyphen 11
+KPX W e -69
+KPX W comma -34
+KPX W a -66
+KPX W A -64
+
+KPX Y v 15
+KPX Y u -38
+KPX Y q -55
+KPX Y period -40
+KPX Y p -31
+KPX Y o -57
+KPX Y i -37
+KPX Y hyphen 11
+KPX Y e -58
+KPX Y comma -34
+KPX Y a -54
+KPX Y A -53
+
+KPX f f 29
+
+KPX r q 9
+KPX r period -64
+KPX r o 8
+KPX r n 31
+KPX r m 31
+KPX r hyphen 70
+KPX r h -21
+KPX r g -4
+KPX r f 33
+KPX r e 7
+KPX r d 7
+KPX r comma -58
+KPX r c 7
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 200 177 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 130 177 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 130 177 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 140 177 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 180 177 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 120 177 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 220 177 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 150 177 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 150 177 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 160 177 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 20 177 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex -40 177 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis -40 177 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave -20 177 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 150 177 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 260 177 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 190 177 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 190 177 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 200 177 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 180 177 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 120 177 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 250 177 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 180 177 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 180 177 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 190 177 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 150 177 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 110 177 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 110 177 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 120 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 80 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 80 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 120 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 130 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 70 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 90 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 50 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 50 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 90 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -20 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -60 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -60 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -20 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 110 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 110 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 70 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 70 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 110 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 60 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 50 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 170 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 130 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 130 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 170 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 100 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 60 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 30 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/Bk-Lt+ b/font/font/Bk-Lt+
new file mode 100644
index 0000000..4aedf58
--- /dev/null
+++ b/font/font/Bk-Lt+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 740 ; N Ccaron ; B 44 -17 702 861 ;
+C -1 ; WX 520 ; N ccaron ; B 37 -8 498 672 ;
+C -1 ; WX 800 ; N Dcaron ; B 31 0 752 861 ;
+C -1 ; WX 712 ; N dcaron ; B 37 -8 736 789 ;
+C -1 ; WX 720 ; N Ecaron ; B 31 0 705 861 ;
+C -1 ; WX 520 ; N ecaron ; B 37 -8 491 672 ;
+C -1 ; WX 600 ; N Lcaron ; B 31 0 629 749 ;
+C -1 ; WX 600 ; N Lacute ; B 31 0 629 861 ;
+C -1 ; WX 392 ; N lcaron ; B 20 0 431 789 ;
+C -1 ; WX 300 ; N lacute ; B 20 0 286 861 ;
+C -1 ; WX 740 ; N Ncaron ; B 26 0 722 861 ;
+C -1 ; WX 660 ; N ncaron ; B 20 0 649 672 ;
+C -1 ; WX 720 ; N Rcaron ; B 31 0 757 861 ;
+C -1 ; WX 720 ; N Racute ; B 31 0 757 861 ;
+C -1 ; WX 440 ; N rcaron ; B 20 0 447 672 ;
+C -1 ; WX 440 ; N racute ; B 20 0 447 689 ;
+C -1 ; WX 620 ; N Tcaron ; B -37 0 656 861 ;
+C -1 ; WX 472 ; N tcaron ; B 20 -8 533 698 ;
+C -1 ; WX 780 ; N Uring ; B 25 -17 754 861 ;
+C -1 ; WX 680 ; N uring ; B 20 -8 653 731 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 226 189 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 73 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 190 189 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 558 91 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 150 189 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 50 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 268 51 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 130 172 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 253 91 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 1 172 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 160 189 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 120 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 150 189 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 229 172 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 10 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 71 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 100 189 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 355 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 230 130 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 180 0 ;
+EndBuildComposites
diff --git a/font/font/Bk-LtIt b/font/font/Bk-LtIt
new file mode 100644
index 0000000..419c319
--- /dev/null
+++ b/font/font/Bk-LtIt
@@ -0,0 +1,410 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1992 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Tue Jan 21 16:12:06 1992
+Comment UniqueID 37830
+Comment VMusage 33139 40031
+FontName Bookman-LightItalic
+FullName ITC Bookman Light Italic
+FamilyName ITC Bookman
+Weight Light
+ItalicAngle -10
+IsFixedPitch false
+FontBBox -228 -250 1269 883
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.004
+Notice Copyright (c) 1985, 1987, 1989, 1992 Adobe Systems Incorporated. All Rights Reserved.ITC Bookman is a registered trademark of International Typeface Corporation.
+EncodingScheme AdobeStandardEncoding
+CapHeight 681
+XHeight 494
+Ascender 717
+Descender -212
+StartCharMetrics 228
+C 32 ; WX 300 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 320 ; N exclam ; B 103 -8 342 698 ;
+C 34 ; WX 360 ; N quotedbl ; B 107 468 402 698 ;
+C 35 ; WX 620 ; N numbersign ; B 107 0 598 681 ;
+C 36 ; WX 620 ; N dollar ; B 78 -85 619 762 ;
+C 37 ; WX 800 ; N percent ; B 56 -8 811 691 ;
+C 38 ; WX 820 ; N ampersand ; B 65 -18 848 698 ;
+C 39 ; WX 280 ; N quoteright ; B 148 470 288 698 ;
+C 40 ; WX 280 ; N parenleft ; B 96 -146 383 727 ;
+C 41 ; WX 280 ; N parenright ; B -8 -146 279 727 ;
+C 42 ; WX 440 ; N asterisk ; B 139 324 505 698 ;
+C 43 ; WX 600 ; N plus ; B 91 43 595 548 ;
+C 44 ; WX 300 ; N comma ; B 88 -115 227 112 ;
+C 45 ; WX 320 ; N hyphen ; B 78 269 336 325 ;
+C 46 ; WX 300 ; N period ; B 96 -8 231 127 ;
+C 47 ; WX 600 ; N slash ; B 104 -149 562 717 ;
+C 48 ; WX 620 ; N zero ; B 86 -17 646 698 ;
+C 49 ; WX 620 ; N one ; B 154 0 500 681 ;
+C 50 ; WX 620 ; N two ; B 66 0 636 698 ;
+C 51 ; WX 620 ; N three ; B 55 -17 622 698 ;
+C 52 ; WX 620 ; N four ; B 69 0 634 681 ;
+C 53 ; WX 620 ; N five ; B 70 -17 614 681 ;
+C 54 ; WX 620 ; N six ; B 89 -17 657 698 ;
+C 55 ; WX 620 ; N seven ; B 143 0 672 681 ;
+C 56 ; WX 620 ; N eight ; B 61 -17 655 698 ;
+C 57 ; WX 620 ; N nine ; B 77 -17 649 698 ;
+C 58 ; WX 300 ; N colon ; B 96 -8 292 494 ;
+C 59 ; WX 300 ; N semicolon ; B 88 -114 292 494 ;
+C 60 ; WX 600 ; N less ; B 79 33 588 561 ;
+C 61 ; WX 600 ; N equal ; B 91 161 595 433 ;
+C 62 ; WX 600 ; N greater ; B 93 33 602 561 ;
+C 63 ; WX 540 ; N question ; B 114 -8 604 698 ;
+C 64 ; WX 780 ; N at ; B 102 -17 802 698 ;
+C 65 ; WX 700 ; N A ; B -25 0 720 681 ;
+C 66 ; WX 720 ; N B ; B 21 0 746 681 ;
+C 67 ; WX 720 ; N C ; B 88 -17 746 698 ;
+C 68 ; WX 740 ; N D ; B 21 0 782 681 ;
+C 69 ; WX 680 ; N E ; B 21 0 736 681 ;
+C 70 ; WX 620 ; N F ; B 21 0 743 681 ;
+C 71 ; WX 760 ; N G ; B 88 -17 813 698 ;
+C 72 ; WX 800 ; N H ; B 21 0 888 681 ;
+C 73 ; WX 320 ; N I ; B 21 0 412 681 ;
+C 74 ; WX 560 ; N J ; B -2 -17 666 681 ;
+C 75 ; WX 720 ; N K ; B 21 0 804 681 ;
+C 76 ; WX 580 ; N L ; B 21 0 656 681 ;
+C 77 ; WX 860 ; N M ; B 18 0 956 681 ;
+C 78 ; WX 720 ; N N ; B 18 0 823 681 ;
+C 79 ; WX 760 ; N O ; B 88 -17 799 698 ;
+C 80 ; WX 600 ; N P ; B 21 0 681 681 ;
+C 81 ; WX 780 ; N Q ; B 61 -191 812 698 ;
+C 82 ; WX 700 ; N R ; B 21 0 736 681 ;
+C 83 ; WX 640 ; N S ; B 61 -17 668 698 ;
+C 84 ; WX 600 ; N T ; B 50 0 725 681 ;
+C 85 ; WX 720 ; N U ; B 118 -17 842 681 ;
+C 86 ; WX 680 ; N V ; B 87 0 815 681 ;
+C 87 ; WX 960 ; N W ; B 87 0 1095 681 ;
+C 88 ; WX 700 ; N X ; B -25 0 815 681 ;
+C 89 ; WX 660 ; N Y ; B 87 0 809 681 ;
+C 90 ; WX 580 ; N Z ; B 8 0 695 681 ;
+C 91 ; WX 260 ; N bracketleft ; B 56 -136 351 717 ;
+C 92 ; WX 600 ; N backslash ; B 84 0 542 717 ;
+C 93 ; WX 260 ; N bracketright ; B 15 -136 309 717 ;
+C 94 ; WX 600 ; N asciicircum ; B 97 276 599 681 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 280 ; N quoteleft ; B 191 470 330 698 ;
+C 97 ; WX 620 ; N a ; B 71 -8 686 494 ;
+C 98 ; WX 600 ; N b ; B 88 -8 621 717 ;
+C 99 ; WX 480 ; N c ; B 65 -8 522 494 ;
+C 100 ; WX 640 ; N d ; B 65 -8 695 717 ;
+C 101 ; WX 540 ; N e ; B 65 -8 575 494 ;
+C 102 ; WX 340 ; N f ; B -160 -218 557 725 ; L i fi ; L l fl ;
+C 103 ; WX 560 ; N g ; B 4 -221 581 494 ;
+C 104 ; WX 620 ; N h ; B 88 -8 689 717 ;
+C 105 ; WX 280 ; N i ; B 88 -8 351 663 ;
+C 106 ; WX 280 ; N j ; B -200 -221 308 663 ;
+C 107 ; WX 600 ; N k ; B 88 -8 657 717 ;
+C 108 ; WX 280 ; N l ; B 100 -8 342 717 ;
+C 109 ; WX 880 ; N m ; B 88 -8 952 494 ;
+C 110 ; WX 620 ; N n ; B 88 -8 673 494 ;
+C 111 ; WX 540 ; N o ; B 65 -8 572 494 ;
+C 112 ; WX 600 ; N p ; B -24 -212 620 494 ;
+C 113 ; WX 560 ; N q ; B 65 -212 584 494 ;
+C 114 ; WX 400 ; N r ; B 88 0 481 494 ;
+C 115 ; WX 540 ; N s ; B 65 -8 547 494 ;
+C 116 ; WX 340 ; N t ; B 88 -8 411 664 ;
+C 117 ; WX 620 ; N u ; B 88 -8 686 484 ;
+C 118 ; WX 540 ; N v ; B 88 -8 562 494 ;
+C 119 ; WX 880 ; N w ; B 88 -8 893 494 ;
+C 120 ; WX 540 ; N x ; B 9 -8 626 494 ;
+C 121 ; WX 600 ; N y ; B 60 -221 609 484 ;
+C 122 ; WX 520 ; N z ; B 38 -8 561 494 ;
+C 123 ; WX 360 ; N braceleft ; B 122 -191 442 717 ;
+C 124 ; WX 600 ; N bar ; B 294 -250 372 750 ;
+C 125 ; WX 380 ; N braceright ; B 13 -191 333 717 ;
+C 126 ; WX 600 ; N asciitilde ; B 91 207 595 386 ;
+C 161 ; WX 320 ; N exclamdown ; B 73 -213 301 494 ;
+C 162 ; WX 620 ; N cent ; B 148 -29 596 715 ;
+C 163 ; WX 620 ; N sterling ; B 4 -17 702 698 ;
+C 164 ; WX 20 ; N fraction ; B -228 0 323 681 ;
+C 165 ; WX 620 ; N yen ; B 71 0 735 681 ;
+C 166 ; WX 620 ; N florin ; B -26 -218 692 725 ;
+C 167 ; WX 620 ; N section ; B 38 -178 638 698 ;
+C 168 ; WX 620 ; N currency ; B 100 89 605 591 ;
+C 169 ; WX 200 ; N quotesingle ; B 99 473 247 698 ;
+C 170 ; WX 440 ; N quotedblleft ; B 191 470 493 698 ;
+C 171 ; WX 300 ; N guillemotleft ; B 70 129 313 434 ;
+C 172 ; WX 180 ; N guilsinglleft ; B 75 129 208 434 ;
+C 173 ; WX 180 ; N guilsinglright ; B 70 129 203 434 ;
+C 174 ; WX 640 ; N fi ; B -159 -222 709 725 ;
+C 175 ; WX 660 ; N fl ; B -159 -218 713 725 ;
+C 177 ; WX 500 ; N endash ; B 33 269 561 325 ;
+C 178 ; WX 620 ; N dagger ; B 192 -130 570 698 ;
+C 179 ; WX 620 ; N daggerdbl ; B 144 -122 566 698 ;
+C 180 ; WX 300 ; N periodcentered ; B 137 229 272 364 ;
+C 182 ; WX 620 ; N paragraph ; B 112 0 718 681 ;
+C 183 ; WX 460 ; N bullet ; B 100 170 444 511 ;
+C 184 ; WX 320 ; N quotesinglbase ; B 87 -114 226 113 ;
+C 185 ; WX 480 ; N quotedblbase ; B 87 -114 390 113 ;
+C 186 ; WX 440 ; N quotedblright ; B 148 470 451 698 ;
+C 187 ; WX 300 ; N guillemotright ; B 60 129 303 434 ;
+C 188 ; WX 1000 ; N ellipsis ; B 99 -8 900 127 ;
+C 189 ; WX 1180 ; N perthousand ; B 56 -8 1199 691 ;
+C 191 ; WX 540 ; N questiondown ; B 18 -212 508 494 ;
+C 193 ; WX 340 ; N grave ; B 182 551 377 706 ;
+C 194 ; WX 320 ; N acute ; B 178 551 373 706 ;
+C 195 ; WX 440 ; N circumflex ; B 176 571 479 685 ;
+C 196 ; WX 440 ; N tilde ; B 180 586 488 671 ;
+C 197 ; WX 440 ; N macron ; B 178 599 484 658 ;
+C 198 ; WX 440 ; N breve ; B 191 577 500 680 ;
+C 199 ; WX 260 ; N dotaccent ; B 169 543 290 664 ;
+C 200 ; WX 420 ; N dieresis ; B 185 569 467 688 ;
+C 202 ; WX 300 ; N ring ; B 178 551 334 706 ;
+C 203 ; WX 320 ; N cedilla ; B 45 -178 240 0 ;
+C 205 ; WX 340 ; N hungarumlaut ; B 167 547 402 738 ;
+C 206 ; WX 260 ; N ogonek ; B 51 -173 184 0 ;
+C 207 ; WX 440 ; N caron ; B 178 571 481 684 ;
+C 208 ; WX 1000 ; N emdash ; B 33 269 1061 325 ;
+C 225 ; WX 1220 ; N AE ; B -45 0 1269 681 ;
+C 227 ; WX 440 ; N ordfeminine ; B 130 396 513 698 ;
+C 232 ; WX 580 ; N Lslash ; B 21 0 656 681 ;
+C 233 ; WX 760 ; N Oslash ; B 88 -95 799 777 ;
+C 234 ; WX 1180 ; N OE ; B 88 -17 1237 698 ;
+C 235 ; WX 400 ; N ordmasculine ; B 139 396 455 698 ;
+C 241 ; WX 880 ; N ae ; B 71 -8 918 494 ;
+C 245 ; WX 280 ; N dotlessi ; B 88 -8 351 484 ;
+C 248 ; WX 340 ; N lslash ; B 50 -8 398 717 ;
+C 249 ; WX 540 ; N oslash ; B 65 -49 571 532 ;
+C 250 ; WX 900 ; N oe ; B 65 -8 948 494 ;
+C 251 ; WX 620 ; N germandbls ; B -121 -111 653 698 ;
+C -1 ; WX 540 ; N ecircumflex ; B 65 -8 575 685 ;
+C -1 ; WX 540 ; N edieresis ; B 65 -8 575 688 ;
+C -1 ; WX 620 ; N aacute ; B 71 -8 686 706 ;
+C -1 ; WX 740 ; N registered ; B 84 -17 784 698 ;
+C -1 ; WX 280 ; N icircumflex ; B 76 -8 379 685 ;
+C -1 ; WX 620 ; N udieresis ; B 88 -8 686 688 ;
+C -1 ; WX 540 ; N ograve ; B 65 -8 572 706 ;
+C -1 ; WX 620 ; N uacute ; B 88 -8 686 706 ;
+C -1 ; WX 620 ; N ucircumflex ; B 88 -8 686 685 ;
+C -1 ; WX 700 ; N Aacute ; B -25 0 720 883 ;
+C -1 ; WX 280 ; N igrave ; B 88 -8 351 706 ;
+C -1 ; WX 320 ; N Icircumflex ; B 21 0 449 862 ;
+C -1 ; WX 480 ; N ccedilla ; B 65 -178 522 494 ;
+C -1 ; WX 620 ; N adieresis ; B 71 -8 686 688 ;
+C -1 ; WX 680 ; N Ecircumflex ; B 21 0 736 862 ;
+C -1 ; WX 540 ; N scaron ; B 65 -8 547 684 ;
+C -1 ; WX 600 ; N thorn ; B -24 -212 620 717 ;
+C -1 ; WX 980 ; N trademark ; B 69 277 965 681 ;
+C -1 ; WX 540 ; N egrave ; B 65 -8 575 706 ;
+C -1 ; WX 372 ; N threesuperior ; B 70 269 439 698 ;
+C -1 ; WX 520 ; N zcaron ; B 38 -8 561 684 ;
+C -1 ; WX 620 ; N atilde ; B 71 -8 686 671 ;
+C -1 ; WX 620 ; N aring ; B 71 -8 686 706 ;
+C -1 ; WX 540 ; N ocircumflex ; B 65 -8 572 685 ;
+C -1 ; WX 680 ; N Edieresis ; B 21 0 736 865 ;
+C -1 ; WX 930 ; N threequarters ; B 99 0 913 691 ;
+C -1 ; WX 600 ; N ydieresis ; B 60 -221 609 688 ;
+C -1 ; WX 600 ; N yacute ; B 60 -221 609 706 ;
+C -1 ; WX 280 ; N iacute ; B 88 -8 351 706 ;
+C -1 ; WX 700 ; N Acircumflex ; B -25 0 720 862 ;
+C -1 ; WX 720 ; N Uacute ; B 118 -17 842 883 ;
+C -1 ; WX 540 ; N eacute ; B 65 -8 575 706 ;
+C -1 ; WX 760 ; N Ograve ; B 88 -17 799 883 ;
+C -1 ; WX 620 ; N agrave ; B 71 -8 686 706 ;
+C -1 ; WX 720 ; N Udieresis ; B 118 -17 842 865 ;
+C -1 ; WX 620 ; N acircumflex ; B 71 -8 686 685 ;
+C -1 ; WX 320 ; N Igrave ; B 21 0 412 883 ;
+C -1 ; WX 372 ; N twosuperior ; B 68 279 439 698 ;
+C -1 ; WX 720 ; N Ugrave ; B 118 -17 842 883 ;
+C -1 ; WX 930 ; N onequarter ; B 91 0 913 681 ;
+C -1 ; WX 720 ; N Ucircumflex ; B 118 -17 842 862 ;
+C -1 ; WX 640 ; N Scaron ; B 61 -17 668 861 ;
+C -1 ; WX 320 ; N Idieresis ; B 21 0 447 865 ;
+C -1 ; WX 280 ; N idieresis ; B 88 -8 377 688 ;
+C -1 ; WX 680 ; N Egrave ; B 21 0 736 883 ;
+C -1 ; WX 760 ; N Oacute ; B 88 -17 799 883 ;
+C -1 ; WX 600 ; N divide ; B 91 46 595 548 ;
+C -1 ; WX 700 ; N Atilde ; B -25 0 720 848 ;
+C -1 ; WX 700 ; N Aring ; B -25 0 720 883 ;
+C -1 ; WX 760 ; N Odieresis ; B 88 -17 799 865 ;
+C -1 ; WX 700 ; N Adieresis ; B -25 0 720 865 ;
+C -1 ; WX 720 ; N Ntilde ; B 18 0 823 848 ;
+C -1 ; WX 580 ; N Zcaron ; B 8 0 695 861 ;
+C -1 ; WX 600 ; N Thorn ; B 21 0 656 681 ;
+C -1 ; WX 320 ; N Iacute ; B 21 0 412 883 ;
+C -1 ; WX 600 ; N plusminus ; B 91 0 595 548 ;
+C -1 ; WX 600 ; N multiply ; B 91 44 595 548 ;
+C -1 ; WX 680 ; N Eacute ; B 21 0 736 883 ;
+C -1 ; WX 660 ; N Ydieresis ; B 87 0 809 865 ;
+C -1 ; WX 372 ; N onesuperior ; B 114 279 339 688 ;
+C -1 ; WX 620 ; N ugrave ; B 88 -8 686 706 ;
+C -1 ; WX 600 ; N logicalnot ; B 91 163 595 433 ;
+C -1 ; WX 620 ; N ntilde ; B 88 -8 673 671 ;
+C -1 ; WX 760 ; N Otilde ; B 88 -17 799 848 ;
+C -1 ; WX 540 ; N otilde ; B 65 -8 572 671 ;
+C -1 ; WX 720 ; N Ccedilla ; B 88 -178 746 698 ;
+C -1 ; WX 700 ; N Agrave ; B -25 0 720 883 ;
+C -1 ; WX 930 ; N onehalf ; B 91 0 925 681 ;
+C -1 ; WX 740 ; N Eth ; B 21 0 782 681 ;
+C -1 ; WX 400 ; N degree ; B 120 398 420 698 ;
+C -1 ; WX 660 ; N Yacute ; B 87 0 809 883 ;
+C -1 ; WX 760 ; N Ocircumflex ; B 88 -17 799 862 ;
+C -1 ; WX 540 ; N oacute ; B 65 -8 572 706 ;
+C -1 ; WX 620 ; N mu ; B 53 -221 686 484 ;
+C -1 ; WX 600 ; N minus ; B 91 259 595 335 ;
+C -1 ; WX 540 ; N eth ; B 65 -8 642 725 ;
+C -1 ; WX 540 ; N odieresis ; B 65 -8 572 688 ;
+C -1 ; WX 740 ; N copyright ; B 84 -17 784 698 ;
+C -1 ; WX 600 ; N brokenbar ; B 294 -175 372 675 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 85
+
+KPX A Y -62
+KPX A W -73
+KPX A V -78
+KPX A T -5
+
+KPX F period -97
+KPX F comma -98
+KPX F A -16
+
+KPX L y 20
+KPX L Y 7
+KPX L W 9
+KPX L V 4
+
+KPX P period -105
+KPX P comma -106
+KPX P A -30
+
+KPX R Y 11
+KPX R W 2
+KPX R V 2
+KPX R T 65
+
+KPX T semicolon 48
+KPX T s -7
+KPX T r 67
+KPX T period -78
+KPX T o 14
+KPX T i 71
+KPX T hyphen 20
+KPX T e 10
+KPX T comma -79
+KPX T colon 48
+KPX T c 16
+KPX T a 9
+KPX T A -14
+
+KPX V y -14
+KPX V u -10
+KPX V semicolon -44
+KPX V r -20
+KPX V period -100
+KPX V o -70
+KPX V i 3
+KPX V hyphen 20
+KPX V e -70
+KPX V comma -109
+KPX V colon -35
+KPX V a -70
+KPX V A -70
+
+KPX W y -14
+KPX W u -20
+KPX W semicolon -42
+KPX W r -30
+KPX W period -100
+KPX W o -60
+KPX W i 3
+KPX W hyphen 20
+KPX W e -60
+KPX W comma -109
+KPX W colon -35
+KPX W a -60
+KPX W A -60
+
+KPX Y v -19
+KPX Y u -31
+KPX Y semicolon -40
+KPX Y q -72
+KPX Y period -100
+KPX Y p -37
+KPX Y o -75
+KPX Y i -11
+KPX Y hyphen 20
+KPX Y e -78
+KPX Y comma -109
+KPX Y colon -35
+KPX Y a -79
+KPX Y A -82
+
+KPX f f -19
+
+KPX r q -14
+KPX r period -134
+KPX r o -10
+KPX r n 38
+KPX r m 37
+KPX r hyphen 20
+KPX r h -20
+KPX r g -3
+KPX r f -9
+KPX r e -15
+KPX r d -9
+KPX r comma -143
+KPX r c -8
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 200 177 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 130 177 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 140 177 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 160 177 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 220 177 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 130 177 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 210 177 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 140 177 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 150 177 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 150 177 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 30 177 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex -30 177 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis -20 177 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave -30 177 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 130 177 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 250 177 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 190 177 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 200 177 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 210 177 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 190 177 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 100 177 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 230 177 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 170 177 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 180 177 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 170 177 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 200 177 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 140 177 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 70 177 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 120 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 70 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 80 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 110 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 140 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 60 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 90 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 30 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 40 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 80 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -40 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -100 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -90 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -60 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 60 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 80 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 20 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 40 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 80 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 30 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 30 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 120 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 60 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 70 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 110 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 140 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 70 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 20 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/Bk-LtIt+ b/font/font/Bk-LtIt+
new file mode 100644
index 0000000..4626e55
--- /dev/null
+++ b/font/font/Bk-LtIt+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 720 ; N Ccaron ; B 88 -17 746 856 ;
+C -1 ; WX 480 ; N ccaron ; B 65 -8 524 684 ;
+C -1 ; WX 740 ; N Dcaron ; B 21 0 782 856 ;
+C -1 ; WX 738 ; N dcaron ; B 65 -8 849 789 ;
+C -1 ; WX 680 ; N Ecaron ; B 21 0 736 856 ;
+C -1 ; WX 540 ; N ecaron ; B 65 -8 575 684 ;
+C -1 ; WX 580 ; N Lcaron ; B 21 0 656 749 ;
+C -1 ; WX 580 ; N Lacute ; B 21 0 656 898 ;
+C -1 ; WX 378 ; N lcaron ; B 100 -8 496 789 ;
+C -1 ; WX 280 ; N lacute ; B 100 -8 406 898 ;
+C -1 ; WX 720 ; N Ncaron ; B 18 0 823 856 ;
+C -1 ; WX 620 ; N ncaron ; B 88 -8 673 684 ;
+C -1 ; WX 700 ; N Rcaron ; B 21 0 736 856 ;
+C -1 ; WX 700 ; N Racute ; B 21 0 736 898 ;
+C -1 ; WX 400 ; N rcaron ; B 88 0 481 684 ;
+C -1 ; WX 400 ; N racute ; B 88 0 481 706 ;
+C -1 ; WX 600 ; N Tcaron ; B 50 0 725 856 ;
+C -1 ; WX 438 ; N tcaron ; B 88 -8 565 698 ;
+C -1 ; WX 720 ; N Uring ; B 118 -17 842 856 ;
+C -1 ; WX 620 ; N uring ; B 88 -8 686 706 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 236 172 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 43 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 180 172 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 561 91 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 150 172 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 50 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 278 51 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 163 192 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 208 91 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 33 192 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 170 172 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 90 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 160 172 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 260 192 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron -20 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 60 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 110 172 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 277 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 236 150 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 160 0 ;
+EndBuildComposites
diff --git a/font/font/Bk-Md b/font/font/Bk-Md
new file mode 100644
index 0000000..be50ac5
--- /dev/null
+++ b/font/font/Bk-Md
@@ -0,0 +1,451 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1990 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Thu Jun 28 14:46:06 1990
+Comment UniqueID 31723
+Comment VMusage 29459 36351
+FontName Bookman-Medium
+FullName ITC Bookman Medium
+FamilyName ITC Bookman
+Weight Medium
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -174 -236 1138 928
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.000
+Notice Copyright (c) 1990 Adobe Systems Incorporated. All Rights Reserved.ITC Bookman is a trademark of International Typeface Corporation.
+EncodingScheme AdobeStandardEncoding
+CapHeight 681
+XHeight 490
+Ascender 690
+Descender -226
+StartCharMetrics 228
+C 32 ; WX 306 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 334 ; N exclam ; B 82 -6 252 694 ;
+C 34 ; WX 500 ; N quotedbl ; B 118 423 382 694 ;
+C 35 ; WX 612 ; N numbersign ; B 56 0 556 674 ;
+C 36 ; WX 612 ; N dollar ; B 39 -91 573 750 ;
+C 37 ; WX 796 ; N percent ; B 35 -10 761 684 ;
+C 38 ; WX 833 ; N ampersand ; B 52 -13 781 688 ;
+C 39 ; WX 278 ; N quoteright ; B 60 423 218 694 ;
+C 40 ; WX 333 ; N parenleft ; B 83 -174 276 690 ;
+C 41 ; WX 333 ; N parenright ; B 57 -174 250 690 ;
+C 42 ; WX 556 ; N asterisk ; B 93 282 463 694 ;
+C 43 ; WX 600 ; N plus ; B 47 0 553 506 ;
+C 44 ; WX 306 ; N comma ; B 77 -118 229 146 ;
+C 45 ; WX 333 ; N hyphen ; B 20 212 313 316 ;
+C 46 ; WX 306 ; N period ; B 77 -6 229 146 ;
+C 47 ; WX 278 ; N slash ; B -22 -13 300 694 ;
+C 48 ; WX 612 ; N zero ; B 39 -10 573 684 ;
+C 49 ; WX 612 ; N one ; B 111 0 515 684 ;
+C 50 ; WX 612 ; N two ; B 44 0 560 684 ;
+C 51 ; WX 612 ; N three ; B 53 -10 559 684 ;
+C 52 ; WX 612 ; N four ; B 24 0 588 674 ;
+C 53 ; WX 612 ; N five ; B 50 -10 562 716 ;
+C 54 ; WX 612 ; N six ; B 43 -10 569 684 ;
+C 55 ; WX 612 ; N seven ; B 35 0 565 674 ;
+C 56 ; WX 612 ; N eight ; B 34 -10 578 684 ;
+C 57 ; WX 612 ; N nine ; B 43 -10 569 684 ;
+C 58 ; WX 306 ; N colon ; B 77 -6 229 441 ;
+C 59 ; WX 306 ; N semicolon ; B 77 -118 229 441 ;
+C 60 ; WX 600 ; N less ; B 47 -8 553 514 ;
+C 61 ; WX 600 ; N equal ; B 47 107 553 399 ;
+C 62 ; WX 600 ; N greater ; B 47 -8 553 514 ;
+C 63 ; WX 611 ; N question ; B 48 -6 563 694 ;
+C 64 ; WX 800 ; N at ; B 47 -13 753 694 ;
+C 65 ; WX 722 ; N A ; B -17 0 739 690 ;
+C 66 ; WX 722 ; N B ; B 14 0 676 681 ;
+C 67 ; WX 722 ; N C ; B 41 -13 681 694 ;
+C 68 ; WX 778 ; N D ; B 26 0 737 681 ;
+C 69 ; WX 722 ; N E ; B 26 0 686 681 ;
+C 70 ; WX 611 ; N F ; B 26 0 632 681 ;
+C 71 ; WX 778 ; N G ; B 41 -13 759 694 ;
+C 72 ; WX 778 ; N H ; B 26 0 752 681 ;
+C 73 ; WX 334 ; N I ; B 14 0 320 681 ;
+C 74 ; WX 611 ; N J ; B -12 -13 589 681 ;
+C 75 ; WX 778 ; N K ; B 26 0 783 681 ;
+C 76 ; WX 667 ; N L ; B 26 0 662 681 ;
+C 77 ; WX 889 ; N M ; B 26 0 863 681 ;
+C 78 ; WX 722 ; N N ; B 26 0 696 681 ;
+C 79 ; WX 778 ; N O ; B 41 -13 737 694 ;
+C 80 ; WX 667 ; N P ; B 26 0 630 681 ;
+C 81 ; WX 778 ; N Q ; B 41 -212 737 694 ;
+C 82 ; WX 722 ; N R ; B 26 0 724 681 ;
+C 83 ; WX 667 ; N S ; B 35 -13 632 694 ;
+C 84 ; WX 668 ; N T ; B 5 0 663 681 ;
+C 85 ; WX 722 ; N U ; B 14 -13 708 681 ;
+C 86 ; WX 667 ; N V ; B -15 -6 682 681 ;
+C 87 ; WX 944 ; N W ; B -5 -6 949 681 ;
+C 88 ; WX 722 ; N X ; B -4 0 726 681 ;
+C 89 ; WX 667 ; N Y ; B -4 0 671 681 ;
+C 90 ; WX 667 ; N Z ; B 26 0 641 681 ;
+C 91 ; WX 333 ; N bracketleft ; B 89 -165 254 681 ;
+C 92 ; WX 278 ; N backslash ; B -22 -13 300 694 ;
+C 93 ; WX 333 ; N bracketright ; B 79 -165 244 681 ;
+C 94 ; WX 600 ; N asciicircum ; B 82 309 518 674 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 278 ; N quoteleft ; B 60 423 218 694 ;
+C 97 ; WX 556 ; N a ; B 29 -10 561 500 ;
+C 98 ; WX 611 ; N b ; B 30 -10 572 690 ;
+C 99 ; WX 556 ; N c ; B 39 -10 535 500 ;
+C 100 ; WX 611 ; N d ; B 30 -10 588 690 ;
+C 101 ; WX 556 ; N e ; B 39 -10 526 500 ;
+C 102 ; WX 333 ; N f ; B 30 0 399 680 ; L i fi ; L l fl ;
+C 103 ; WX 556 ; N g ; B 13 -236 535 576 ;
+C 104 ; WX 666 ; N h ; B 36 0 630 690 ;
+C 105 ; WX 334 ; N i ; B 30 0 304 700 ;
+C 106 ; WX 334 ; N j ; B -92 -236 254 700 ;
+C 107 ; WX 667 ; N k ; B 30 0 619 690 ;
+C 108 ; WX 334 ; N l ; B 30 0 304 690 ;
+C 109 ; WX 944 ; N m ; B 30 0 914 500 ;
+C 110 ; WX 666 ; N n ; B 36 0 630 500 ;
+C 111 ; WX 612 ; N o ; B 39 -10 573 500 ;
+C 112 ; WX 611 ; N p ; B 30 -226 572 500 ;
+C 113 ; WX 611 ; N q ; B 39 -226 588 500 ;
+C 114 ; WX 444 ; N r ; B 36 0 450 500 ;
+C 115 ; WX 556 ; N s ; B 47 -10 509 500 ;
+C 116 ; WX 389 ; N t ; B 30 -10 414 647 ;
+C 117 ; WX 667 ; N u ; B 36 -10 631 490 ;
+C 118 ; WX 500 ; N v ; B -15 -6 515 490 ;
+C 119 ; WX 778 ; N w ; B 12 -6 766 490 ;
+C 120 ; WX 556 ; N x ; B 0 0 556 490 ;
+C 121 ; WX 556 ; N y ; B -4 -236 560 490 ;
+C 122 ; WX 556 ; N z ; B 27 0 529 490 ;
+C 123 ; WX 333 ; N braceleft ; B 41 -165 280 681 ;
+C 124 ; WX 222 ; N bar ; B 67 -13 155 694 ;
+C 125 ; WX 333 ; N braceright ; B 53 -165 292 681 ;
+C 126 ; WX 600 ; N asciitilde ; B 69 174 531 332 ;
+C 161 ; WX 334 ; N exclamdown ; B 82 -210 252 490 ;
+C 162 ; WX 612 ; N cent ; B 58 -37 554 698 ;
+C 163 ; WX 612 ; N sterling ; B 8 -10 590 690 ;
+C 164 ; WX 167 ; N fraction ; B -174 -10 341 684 ;
+C 165 ; WX 612 ; N yen ; B 2 0 610 674 ;
+C 166 ; WX 612 ; N florin ; B 10 -226 602 694 ;
+C 167 ; WX 556 ; N section ; B 52 -13 484 694 ;
+C 168 ; WX 612 ; N currency ; B 52 83 560 591 ;
+C 169 ; WX 278 ; N quotesingle ; B 92 423 186 694 ;
+C 170 ; WX 500 ; N quotedblleft ; B 66 423 434 694 ;
+C 171 ; WX 500 ; N guillemotleft ; B 42 77 458 451 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 51 77 282 451 ;
+C 173 ; WX 333 ; N guilsinglright ; B 51 77 282 451 ;
+C 174 ; WX 667 ; N fi ; B 30 0 637 680 ;
+C 175 ; WX 667 ; N fl ; B 30 0 637 680 ;
+C 177 ; WX 500 ; N endash ; B 0 226 500 302 ;
+C 178 ; WX 556 ; N dagger ; B 90 0 466 694 ;
+C 179 ; WX 556 ; N daggerdbl ; B 100 0 456 694 ;
+C 180 ; WX 306 ; N periodcentered ; B 77 223 229 375 ;
+C 182 ; WX 620 ; N paragraph ; B 64 0 556 681 ;
+C 183 ; WX 500 ; N bullet ; B 82 169 418 505 ;
+C 184 ; WX 278 ; N quotesinglbase ; B 60 -125 218 146 ;
+C 185 ; WX 500 ; N quotedblbase ; B 65 -125 435 146 ;
+C 186 ; WX 500 ; N quotedblright ; B 66 423 434 694 ;
+C 187 ; WX 500 ; N guillemotright ; B 42 77 458 451 ;
+C 188 ; WX 1000 ; N ellipsis ; B 91 -6 909 146 ;
+C 189 ; WX 1167 ; N perthousand ; B 29 -10 1138 684 ;
+C 191 ; WX 611 ; N questiondown ; B 48 -210 563 490 ;
+C 193 ; WX 334 ; N grave ; B 8 547 246 733 ;
+C 194 ; WX 334 ; N acute ; B 88 547 326 733 ;
+C 195 ; WX 334 ; N circumflex ; B -2 547 336 723 ;
+C 196 ; WX 334 ; N tilde ; B -16 564 350 690 ;
+C 197 ; WX 334 ; N macron ; B 1 584 333 654 ;
+C 198 ; WX 334 ; N breve ; B 15 547 319 711 ;
+C 199 ; WX 334 ; N dotaccent ; B 103 557 231 685 ;
+C 200 ; WX 334 ; N dieresis ; B -2 557 336 685 ;
+C 202 ; WX 334 ; N ring ; B 60 547 274 761 ;
+C 203 ; WX 334 ; N cedilla ; B 67 -218 295 0 ;
+C 205 ; WX 334 ; N hungarumlaut ; B -16 547 430 733 ;
+C 206 ; WX 334 ; N ogonek ; B 46 -218 278 0 ;
+C 207 ; WX 334 ; N caron ; B -2 547 336 723 ;
+C 208 ; WX 1000 ; N emdash ; B 0 226 1000 302 ;
+C 225 ; WX 1000 ; N AE ; B -34 0 975 681 ;
+C 227 ; WX 361 ; N ordfeminine ; B 15 372 369 684 ;
+C 232 ; WX 667 ; N Lslash ; B 26 0 662 681 ;
+C 233 ; WX 778 ; N Oslash ; B 41 -60 737 740 ;
+C 234 ; WX 1000 ; N OE ; B 19 -13 991 694 ;
+C 235 ; WX 398 ; N ordmasculine ; B 22 372 376 684 ;
+C 241 ; WX 833 ; N ae ; B 26 -10 807 500 ;
+C 245 ; WX 334 ; N dotlessi ; B 30 0 304 490 ;
+C 248 ; WX 334 ; N lslash ; B 30 0 304 690 ;
+C 249 ; WX 612 ; N oslash ; B 39 -95 573 597 ;
+C 250 ; WX 889 ; N oe ; B 33 -10 856 500 ;
+C 251 ; WX 667 ; N germandbls ; B 33 -10 632 680 ;
+C -1 ; WX 667 ; N Zcaron ; B 26 0 641 894 ;
+C -1 ; WX 556 ; N ccedilla ; B 39 -218 535 500 ;
+C -1 ; WX 556 ; N ydieresis ; B -4 -236 560 685 ;
+C -1 ; WX 556 ; N atilde ; B 29 -10 561 690 ;
+C -1 ; WX 334 ; N icircumflex ; B -2 0 336 723 ;
+C -1 ; WX 398 ; N threesuperior ; B 29 262 372 684 ;
+C -1 ; WX 556 ; N ecircumflex ; B 39 -10 526 723 ;
+C -1 ; WX 611 ; N thorn ; B 30 -226 572 690 ;
+C -1 ; WX 556 ; N egrave ; B 39 -10 526 733 ;
+C -1 ; WX 398 ; N twosuperior ; B 24 268 374 684 ;
+C -1 ; WX 556 ; N eacute ; B 39 -10 526 733 ;
+C -1 ; WX 612 ; N otilde ; B 39 -10 573 690 ;
+C -1 ; WX 722 ; N Aacute ; B -17 0 739 904 ;
+C -1 ; WX 612 ; N ocircumflex ; B 39 -10 573 723 ;
+C -1 ; WX 556 ; N yacute ; B -4 -236 560 733 ;
+C -1 ; WX 667 ; N udieresis ; B 36 -10 631 685 ;
+C -1 ; WX 916 ; N threequarters ; B 29 -10 900 684 ;
+C -1 ; WX 556 ; N acircumflex ; B 29 -10 561 723 ;
+C -1 ; WX 778 ; N Eth ; B 26 0 737 681 ;
+C -1 ; WX 556 ; N edieresis ; B 39 -10 526 685 ;
+C -1 ; WX 667 ; N ugrave ; B 36 -10 631 733 ;
+C -1 ; WX 1000 ; N trademark ; B 23 276 977 681 ;
+C -1 ; WX 612 ; N ograve ; B 39 -10 573 733 ;
+C -1 ; WX 556 ; N scaron ; B 47 -10 509 723 ;
+C -1 ; WX 334 ; N Idieresis ; B -2 0 336 856 ;
+C -1 ; WX 667 ; N uacute ; B 36 -10 631 733 ;
+C -1 ; WX 556 ; N agrave ; B 29 -10 561 733 ;
+C -1 ; WX 666 ; N ntilde ; B 36 0 630 690 ;
+C -1 ; WX 556 ; N aring ; B 29 -10 561 761 ;
+C -1 ; WX 556 ; N zcaron ; B 27 0 529 723 ;
+C -1 ; WX 334 ; N Icircumflex ; B -2 0 336 894 ;
+C -1 ; WX 722 ; N Ntilde ; B 26 0 696 861 ;
+C -1 ; WX 667 ; N ucircumflex ; B 36 -10 631 723 ;
+C -1 ; WX 722 ; N Ecircumflex ; B 26 0 686 894 ;
+C -1 ; WX 334 ; N Iacute ; B 14 0 326 904 ;
+C -1 ; WX 722 ; N Ccedilla ; B 41 -218 681 694 ;
+C -1 ; WX 778 ; N Odieresis ; B 41 -13 737 856 ;
+C -1 ; WX 667 ; N Scaron ; B 35 -13 632 894 ;
+C -1 ; WX 722 ; N Edieresis ; B 26 0 686 856 ;
+C -1 ; WX 334 ; N Igrave ; B 8 0 320 904 ;
+C -1 ; WX 556 ; N adieresis ; B 29 -10 561 685 ;
+C -1 ; WX 778 ; N Ograve ; B 41 -13 737 904 ;
+C -1 ; WX 722 ; N Egrave ; B 26 0 686 904 ;
+C -1 ; WX 667 ; N Ydieresis ; B -4 0 671 856 ;
+C -1 ; WX 800 ; N registered ; B 47 -13 753 694 ;
+C -1 ; WX 778 ; N Otilde ; B 41 -13 737 861 ;
+C -1 ; WX 916 ; N onequarter ; B 61 -10 900 684 ;
+C -1 ; WX 722 ; N Ugrave ; B 14 -13 708 904 ;
+C -1 ; WX 722 ; N Ucircumflex ; B 14 -13 708 894 ;
+C -1 ; WX 667 ; N Thorn ; B 26 0 630 681 ;
+C -1 ; WX 600 ; N divide ; B 47 -31 553 537 ;
+C -1 ; WX 722 ; N Atilde ; B -17 0 739 861 ;
+C -1 ; WX 722 ; N Uacute ; B 14 -13 708 904 ;
+C -1 ; WX 778 ; N Ocircumflex ; B 41 -13 737 894 ;
+C -1 ; WX 600 ; N logicalnot ; B 47 108 553 399 ;
+C -1 ; WX 722 ; N Aring ; B -17 0 739 928 ;
+C -1 ; WX 334 ; N idieresis ; B -2 0 336 685 ;
+C -1 ; WX 334 ; N iacute ; B 30 0 326 733 ;
+C -1 ; WX 556 ; N aacute ; B 29 -10 561 733 ;
+C -1 ; WX 600 ; N plusminus ; B 47 0 553 506 ;
+C -1 ; WX 600 ; N multiply ; B 69 22 531 484 ;
+C -1 ; WX 722 ; N Udieresis ; B 14 -13 708 856 ;
+C -1 ; WX 600 ; N minus ; B 47 209 553 297 ;
+C -1 ; WX 398 ; N onesuperior ; B 61 268 337 684 ;
+C -1 ; WX 722 ; N Eacute ; B 26 0 686 904 ;
+C -1 ; WX 722 ; N Acircumflex ; B -17 0 739 894 ;
+C -1 ; WX 800 ; N copyright ; B 47 -13 753 694 ;
+C -1 ; WX 722 ; N Agrave ; B -17 0 739 904 ;
+C -1 ; WX 612 ; N odieresis ; B 39 -10 573 685 ;
+C -1 ; WX 612 ; N oacute ; B 39 -10 573 733 ;
+C -1 ; WX 400 ; N degree ; B 57 398 343 684 ;
+C -1 ; WX 334 ; N igrave ; B 8 0 304 733 ;
+C -1 ; WX 667 ; N mu ; B 36 -226 631 490 ;
+C -1 ; WX 778 ; N Oacute ; B 41 -13 737 904 ;
+C -1 ; WX 612 ; N eth ; B 39 -10 573 720 ;
+C -1 ; WX 722 ; N Adieresis ; B -17 0 739 856 ;
+C -1 ; WX 667 ; N Yacute ; B -4 0 671 904 ;
+C -1 ; WX 222 ; N brokenbar ; B 67 -13 155 694 ;
+C -1 ; WX 916 ; N onehalf ; B 61 -10 892 684 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 111
+
+KPX A y -37
+KPX A w -37
+KPX A v -18
+KPX A quoteright -92
+KPX A quotedblright -92
+KPX A Y -74
+KPX A W -74
+KPX A V -74
+KPX A T -55
+
+KPX F period -111
+KPX F comma -111
+KPX F A -55
+
+KPX J period -37
+KPX J comma -37
+
+KPX L y -55
+KPX L quoteright -129
+KPX L quotedblright -92
+KPX L Y -92
+KPX L W -92
+KPX L V -92
+KPX L T -92
+
+KPX O period -18
+KPX O comma -18
+KPX O Y -18
+KPX O T -18
+
+KPX P period -129
+KPX P comma -129
+KPX P A -55
+
+KPX R Y -18
+KPX R W -18
+KPX R V -18
+KPX R T -18
+
+KPX T y -92
+KPX T w -111
+KPX T u -92
+KPX T semicolon -92
+KPX T r -92
+KPX T period -92
+KPX T o -92
+KPX T i -55
+KPX T hyphen -92
+KPX T e -92
+KPX T comma -92
+KPX T colon -92
+KPX T a -92
+KPX T O -18
+KPX T A -55
+
+KPX U period -18
+KPX U comma -18
+
+KPX V u -18
+KPX V semicolon -74
+KPX V period -92
+KPX V o -55
+KPX V i -18
+KPX V hyphen -55
+KPX V e -37
+KPX V comma -92
+KPX V colon -74
+KPX V a -37
+KPX V A -74
+
+KPX W y -18
+KPX W u -18
+KPX W semicolon -55
+KPX W period -74
+KPX W o -37
+KPX W i -18
+KPX W hyphen -55
+KPX W e -37
+KPX W comma -74
+KPX W colon -55
+KPX W a -37
+KPX W A -74
+
+KPX Y u -37
+KPX Y semicolon -74
+KPX Y period -92
+KPX Y o -74
+KPX Y i -18
+KPX Y hyphen -74
+KPX Y e -55
+KPX Y comma -92
+KPX Y colon -74
+KPX Y a -55
+KPX Y A -37
+
+KPX a w -18
+
+KPX f quoteright 37
+KPX f l 18
+KPX f i 18
+KPX f f 18
+KPX f e 18
+KPX f dotlessi 18
+KPX f a 18
+
+KPX k y -18
+KPX k o -25
+KPX k e -25
+
+KPX m u -18
+
+KPX n u -18
+
+KPX quotedblleft A -25
+
+KPX quoteleft quoteleft -68
+KPX quoteleft A -25
+
+KPX quoteright s -55
+KPX quoteright quoteright -68
+
+KPX r period -74
+KPX r hyphen -55
+KPX r comma -74
+
+KPX v period -55
+KPX v o 18
+KPX v comma -55
+
+KPX w period -37
+KPX w comma -55
+
+KPX y period -55
+KPX y comma -55
+EndKernPairs
+EndKernData
+StartComposites 58
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 194 171 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 194 171 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 194 171 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 194 171 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 194 167 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 194 171 ;
+CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 214 0 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 174 171 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 174 171 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 174 171 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 174 171 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 0 171 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 0 171 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 0 171 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 0 171 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 194 171 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 222 171 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 222 171 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 222 171 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 222 171 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 222 171 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 167 171 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 194 171 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 194 171 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 194 171 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 194 171 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 167 171 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 167 171 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 167 171 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 101 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 101 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 101 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 101 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 101 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 101 0 ;
+CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 111 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 121 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 121 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 121 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 121 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute 0 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex 0 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis 0 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave 0 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 166 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 139 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 139 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 139 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 139 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 139 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 111 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 167 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 167 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 167 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 167 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 111 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 111 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 111 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/Bk-Md+ b/font/font/Bk-Md+
new file mode 100644
index 0000000..658252b
--- /dev/null
+++ b/font/font/Bk-Md+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 722 ; N Ccaron ; B 41 -13 681 919 ;
+C -1 ; WX 556 ; N ccaron ; B 39 -10 535 723 ;
+C -1 ; WX 778 ; N Dcaron ; B 26 0 737 919 ;
+C -1 ; WX 722 ; N dcaron ; B 30 -10 762 759 ;
+C -1 ; WX 722 ; N Ecaron ; B 26 0 686 919 ;
+C -1 ; WX 556 ; N ecaron ; B 39 -10 526 723 ;
+C -1 ; WX 667 ; N Lcaron ; B 26 0 662 749 ;
+C -1 ; WX 667 ; N Lacute ; B 26 0 662 929 ;
+C -1 ; WX 445 ; N lcaron ; B 30 0 478 759 ;
+C -1 ; WX 334 ; N lacute ; B 30 0 350 929 ;
+C -1 ; WX 722 ; N Ncaron ; B 26 0 696 919 ;
+C -1 ; WX 666 ; N ncaron ; B 36 0 630 723 ;
+C -1 ; WX 722 ; N Rcaron ; B 26 0 724 919 ;
+C -1 ; WX 722 ; N Racute ; B 26 0 724 929 ;
+C -1 ; WX 444 ; N rcaron ; B 36 0 450 723 ;
+C -1 ; WX 444 ; N racute ; B 36 0 450 733 ;
+C -1 ; WX 668 ; N Tcaron ; B 5 0 663 919 ;
+C -1 ; WX 500 ; N tcaron ; B 30 -10 588 694 ;
+C -1 ; WX 722 ; N Uring ; B 14 -13 708 919 ;
+C -1 ; WX 667 ; N uring ; B 36 -10 631 761 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 258 196 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 136 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 222 196 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 544 65 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 194 196 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 111 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 276 55 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 166 196 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 260 65 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 24 196 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 194 196 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 166 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 194 196 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 239 196 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 55 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 79 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 167 196 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 370 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 194 158 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 166 0 ;
+EndBuildComposites
diff --git a/font/font/Bk-MdIt b/font/font/Bk-MdIt
new file mode 100644
index 0000000..1e5fd0b
--- /dev/null
+++ b/font/font/Bk-MdIt
@@ -0,0 +1,509 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1990 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Thu Jun 28 15:04:32 1990
+Comment UniqueID 31729
+Comment VMusage 31120 38012
+FontName Bookman-MediumItalic
+FullName ITC Bookman Medium Italic
+FamilyName ITC Bookman
+Weight Medium
+ItalicAngle -12
+IsFixedPitch false
+FontBBox -240 -236 1147 934
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.000
+Notice Copyright (c) 1990 Adobe Systems Incorporated. All Rights Reserved.ITC Bookman is a trademark of International Typeface Corporation.
+EncodingScheme AdobeStandardEncoding
+CapHeight 681
+XHeight 500
+Ascender 690
+Descender -226
+StartCharMetrics 228
+C 32 ; WX 305 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 333 ; N exclam ; B 86 -6 325 694 ;
+C 34 ; WX 333 ; N quotedbl ; B 102 417 352 694 ;
+C 35 ; WX 612 ; N numbersign ; B 75 0 575 674 ;
+C 36 ; WX 612 ; N dollar ; B 35 -89 604 750 ;
+C 37 ; WX 796 ; N percent ; B 52 -10 776 684 ;
+C 38 ; WX 944 ; N ampersand ; B 80 -13 917 694 ;
+C 39 ; WX 222 ; N quoteright ; B 95 417 247 694 ;
+C 40 ; WX 333 ; N parenleft ; B 31 -174 329 690 ;
+C 41 ; WX 333 ; N parenright ; B 10 -174 308 690 ;
+C 42 ; WX 500 ; N asterisk ; B 100 285 468 694 ;
+C 43 ; WX 600 ; N plus ; B 47 0 553 506 ;
+C 44 ; WX 306 ; N comma ; B 58 -125 210 152 ;
+C 45 ; WX 333 ; N hyphen ; B 32 217 322 311 ;
+C 46 ; WX 306 ; N period ; B 58 -6 210 152 ;
+C 47 ; WX 278 ; N slash ; B 7 -13 321 694 ;
+C 48 ; WX 612 ; N zero ; B 41 -10 602 684 ;
+C 49 ; WX 612 ; N one ; B 104 0 495 684 ;
+C 50 ; WX 612 ; N two ; B 37 0 584 684 ;
+C 51 ; WX 612 ; N three ; B 16 -10 583 684 ;
+C 52 ; WX 612 ; N four ; B 23 0 597 674 ;
+C 53 ; WX 612 ; N five ; B 35 -10 580 674 ;
+C 54 ; WX 612 ; N six ; B 48 -10 604 684 ;
+C 55 ; WX 612 ; N seven ; B 73 0 632 674 ;
+C 56 ; WX 612 ; N eight ; B 16 -10 590 684 ;
+C 57 ; WX 612 ; N nine ; B 44 -10 600 684 ;
+C 58 ; WX 306 ; N colon ; B 58 -6 261 429 ;
+C 59 ; WX 306 ; N semicolon ; B 58 -125 261 429 ;
+C 60 ; WX 600 ; N less ; B 47 -8 553 514 ;
+C 61 ; WX 600 ; N equal ; B 47 107 553 399 ;
+C 62 ; WX 600 ; N greater ; B 47 -8 553 514 ;
+C 63 ; WX 612 ; N question ; B 95 -6 590 694 ;
+C 64 ; WX 800 ; N at ; B 66 -13 772 694 ;
+C 65 ; WX 722 ; N A ; B -34 0 688 690 ;
+C 66 ; WX 722 ; N B ; B 2 0 701 681 ;
+C 67 ; WX 722 ; N C ; B 50 -13 714 694 ;
+C 68 ; WX 778 ; N D ; B 2 0 751 681 ;
+C 69 ; WX 722 ; N E ; B -6 0 709 681 ;
+C 70 ; WX 667 ; N F ; B -6 0 697 681 ;
+C 71 ; WX 778 ; N G ; B 38 -13 777 694 ;
+C 72 ; WX 778 ; N H ; B 2 0 820 681 ;
+C 73 ; WX 333 ; N I ; B -16 0 392 681 ;
+C 74 ; WX 611 ; N J ; B -2 -13 666 681 ;
+C 75 ; WX 722 ; N K ; B 2 0 802 681 ;
+C 76 ; WX 667 ; N L ; B 2 0 653 681 ;
+C 77 ; WX 889 ; N M ; B 2 0 920 681 ;
+C 78 ; WX 722 ; N N ; B 2 0 753 681 ;
+C 79 ; WX 778 ; N O ; B 50 -13 764 694 ;
+C 80 ; WX 667 ; N P ; B -6 0 688 681 ;
+C 81 ; WX 778 ; N Q ; B 8 -196 764 694 ;
+C 82 ; WX 722 ; N R ; B -6 0 704 681 ;
+C 83 ; WX 667 ; N S ; B 32 -13 625 694 ;
+C 84 ; WX 667 ; N T ; B 46 0 703 681 ;
+C 85 ; WX 778 ; N U ; B 105 -13 818 681 ;
+C 86 ; WX 667 ; N V ; B 35 -6 738 681 ;
+C 87 ; WX 944 ; N W ; B 56 -6 1023 681 ;
+C 88 ; WX 722 ; N X ; B -24 0 769 681 ;
+C 89 ; WX 611 ; N Y ; B 44 0 685 681 ;
+C 90 ; WX 667 ; N Z ; B 30 0 677 681 ;
+C 91 ; WX 333 ; N bracketleft ; B 21 -165 340 681 ;
+C 92 ; WX 278 ; N backslash ; B -4 -13 310 694 ;
+C 93 ; WX 333 ; N bracketright ; B 2 -165 321 681 ;
+C 94 ; WX 600 ; N asciicircum ; B 82 309 518 674 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 222 ; N quoteleft ; B 76 417 228 694 ;
+C 97 ; WX 667 ; N a ; B 41 -10 684 500 ;
+C 98 ; WX 611 ; N b ; B 57 -10 588 690 ;
+C 99 ; WX 556 ; N c ; B 41 -10 530 500 ;
+C 100 ; WX 611 ; N d ; B 41 -10 637 690 ;
+C 101 ; WX 556 ; N e ; B 41 -10 547 500 ;
+C 102 ; WX 333 ; N f ; B -222 -203 460 709 ; L i fi ; L l fl ;
+C 103 ; WX 611 ; N g ; B -20 -226 583 500 ;
+C 104 ; WX 667 ; N h ; B 57 -10 675 690 ;
+C 105 ; WX 333 ; N i ; B 51 -10 338 700 ;
+C 106 ; WX 333 ; N j ; B -181 -226 333 700 ;
+C 107 ; WX 611 ; N k ; B 41 -10 600 690 ;
+C 108 ; WX 333 ; N l ; B 74 -10 338 690 ;
+C 109 ; WX 944 ; N m ; B 78 -10 942 500 ;
+C 110 ; WX 667 ; N n ; B 68 -10 667 500 ;
+C 111 ; WX 611 ; N o ; B 41 -10 588 500 ;
+C 112 ; WX 611 ; N p ; B -42 -226 588 500 ;
+C 113 ; WX 611 ; N q ; B 41 -226 571 500 ;
+C 114 ; WX 444 ; N r ; B 67 0 466 500 ;
+C 115 ; WX 556 ; N s ; B 20 -10 527 500 ;
+C 116 ; WX 389 ; N t ; B 60 -10 387 648 ;
+C 117 ; WX 667 ; N u ; B 67 -10 671 490 ;
+C 118 ; WX 556 ; N v ; B 59 -10 543 500 ;
+C 119 ; WX 833 ; N w ; B 59 -10 800 500 ;
+C 120 ; WX 556 ; N x ; B -23 -10 583 500 ;
+C 121 ; WX 611 ; N y ; B 35 -236 575 490 ;
+C 122 ; WX 556 ; N z ; B 28 -10 536 500 ;
+C 123 ; WX 333 ; N braceleft ; B 53 -165 372 681 ;
+C 124 ; WX 222 ; N bar ; B 85 -13 173 694 ;
+C 125 ; WX 333 ; N braceright ; B -39 -165 280 681 ;
+C 126 ; WX 600 ; N asciitilde ; B 69 174 531 332 ;
+C 161 ; WX 333 ; N exclamdown ; B 8 -210 247 490 ;
+C 162 ; WX 612 ; N cent ; B 72 -31 561 690 ;
+C 163 ; WX 612 ; N sterling ; B -24 -10 637 690 ;
+C 164 ; WX 167 ; N fraction ; B -156 -10 356 684 ;
+C 165 ; WX 612 ; N yen ; B 34 0 691 674 ;
+C 166 ; WX 612 ; N florin ; B -31 -226 635 694 ;
+C 167 ; WX 556 ; N section ; B 25 -13 532 694 ;
+C 168 ; WX 612 ; N currency ; B 67 83 575 591 ;
+C 169 ; WX 222 ; N quotesingle ; B 127 417 215 694 ;
+C 170 ; WX 444 ; N quotedblleft ; B 76 417 450 694 ;
+C 171 ; WX 500 ; N guillemotleft ; B 51 77 464 451 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 58 77 290 451 ;
+C 173 ; WX 333 ; N guilsinglright ; B 54 77 286 451 ;
+C 174 ; WX 667 ; N fi ; B -240 -203 660 709 ;
+C 175 ; WX 667 ; N fl ; B -240 -203 660 709 ;
+C 177 ; WX 500 ; N endash ; B 3 220 517 308 ;
+C 178 ; WX 556 ; N dagger ; B 110 0 492 694 ;
+C 179 ; WX 556 ; N daggerdbl ; B 96 0 486 694 ;
+C 180 ; WX 306 ; N periodcentered ; B 91 223 243 375 ;
+C 182 ; WX 620 ; N paragraph ; B 128 0 657 681 ;
+C 183 ; WX 500 ; N bullet ; B 96 169 432 505 ;
+C 184 ; WX 222 ; N quotesinglbase ; B 28 -125 180 152 ;
+C 185 ; WX 444 ; N quotedblbase ; B 28 -125 403 152 ;
+C 186 ; WX 444 ; N quotedblright ; B 95 417 469 694 ;
+C 187 ; WX 500 ; N guillemotright ; B 47 77 460 451 ;
+C 188 ; WX 1000 ; N ellipsis ; B 71 -6 889 152 ;
+C 189 ; WX 1167 ; N perthousand ; B 52 -10 1147 684 ;
+C 191 ; WX 612 ; N questiondown ; B 22 -210 517 490 ;
+C 193 ; WX 333 ; N grave ; B 98 549 310 729 ;
+C 194 ; WX 333 ; N acute ; B 153 549 392 729 ;
+C 195 ; WX 333 ; N circumflex ; B 53 549 381 723 ;
+C 196 ; WX 333 ; N tilde ; B 61 570 420 690 ;
+C 197 ; WX 333 ; N macron ; B 65 586 406 656 ;
+C 198 ; WX 333 ; N breve ; B 84 549 400 711 ;
+C 199 ; WX 333 ; N dotaccent ; B 167 558 299 690 ;
+C 200 ; WX 333 ; N dieresis ; B 67 558 412 690 ;
+C 202 ; WX 333 ; N ring ; B 121 556 334 769 ;
+C 203 ; WX 333 ; N cedilla ; B -22 -218 213 0 ;
+C 205 ; WX 333 ; N hungarumlaut ; B 42 549 501 729 ;
+C 206 ; WX 333 ; N ogonek ; B -16 -218 234 0 ;
+C 207 ; WX 333 ; N caron ; B 93 549 425 723 ;
+C 208 ; WX 1000 ; N emdash ; B 3 220 1017 308 ;
+C 225 ; WX 944 ; N AE ; B -59 0 931 681 ;
+C 227 ; WX 434 ; N ordfeminine ; B 60 372 478 684 ;
+C 232 ; WX 667 ; N Lslash ; B 2 0 653 681 ;
+C 233 ; WX 778 ; N Oslash ; B 50 -112 764 790 ;
+C 234 ; WX 963 ; N OE ; B 35 -13 956 694 ;
+C 235 ; WX 397 ; N ordmasculine ; B 74 372 429 684 ;
+C 241 ; WX 889 ; N ae ; B 34 -10 880 500 ;
+C 245 ; WX 333 ; N dotlessi ; B 51 -10 338 500 ;
+C 248 ; WX 333 ; N lslash ; B 30 -10 342 690 ;
+C 249 ; WX 611 ; N oslash ; B 41 -115 588 597 ;
+C 250 ; WX 944 ; N oe ; B 41 -10 935 500 ;
+C 251 ; WX 667 ; N germandbls ; B -198 -203 644 709 ;
+C -1 ; WX 667 ; N Zcaron ; B 30 0 677 898 ;
+C -1 ; WX 556 ; N ccedilla ; B 41 -218 530 500 ;
+C -1 ; WX 611 ; N ydieresis ; B 35 -236 575 690 ;
+C -1 ; WX 667 ; N atilde ; B 41 -10 684 690 ;
+C -1 ; WX 333 ; N icircumflex ; B 51 -10 381 723 ;
+C -1 ; WX 398 ; N threesuperior ; B 35 262 404 684 ;
+C -1 ; WX 556 ; N ecircumflex ; B 41 -10 547 723 ;
+C -1 ; WX 611 ; N thorn ; B -42 -226 588 690 ;
+C -1 ; WX 556 ; N egrave ; B 41 -10 547 729 ;
+C -1 ; WX 398 ; N twosuperior ; B 41 268 403 684 ;
+C -1 ; WX 556 ; N eacute ; B 41 -10 547 729 ;
+C -1 ; WX 611 ; N otilde ; B 41 -10 588 690 ;
+C -1 ; WX 722 ; N Aacute ; B -34 0 688 904 ;
+C -1 ; WX 611 ; N ocircumflex ; B 41 -10 588 723 ;
+C -1 ; WX 611 ; N yacute ; B 35 -236 575 729 ;
+C -1 ; WX 667 ; N udieresis ; B 67 -10 671 690 ;
+C -1 ; WX 916 ; N threequarters ; B 55 -10 894 684 ;
+C -1 ; WX 667 ; N acircumflex ; B 41 -10 684 723 ;
+C -1 ; WX 778 ; N Eth ; B 2 0 751 681 ;
+C -1 ; WX 556 ; N edieresis ; B 41 -10 547 690 ;
+C -1 ; WX 667 ; N ugrave ; B 67 -10 671 729 ;
+C -1 ; WX 1000 ; N trademark ; B 94 275 1048 681 ;
+C -1 ; WX 611 ; N ograve ; B 41 -10 588 729 ;
+C -1 ; WX 556 ; N scaron ; B 20 -10 537 723 ;
+C -1 ; WX 333 ; N Idieresis ; B -16 0 422 865 ;
+C -1 ; WX 667 ; N uacute ; B 67 -10 671 729 ;
+C -1 ; WX 667 ; N agrave ; B 41 -10 684 729 ;
+C -1 ; WX 667 ; N ntilde ; B 68 -10 667 690 ;
+C -1 ; WX 667 ; N aring ; B 41 -10 684 769 ;
+C -1 ; WX 556 ; N zcaron ; B 28 -10 536 723 ;
+C -1 ; WX 333 ; N Icircumflex ; B -16 0 392 898 ;
+C -1 ; WX 722 ; N Ntilde ; B 2 0 753 865 ;
+C -1 ; WX 667 ; N ucircumflex ; B 67 -10 671 723 ;
+C -1 ; WX 722 ; N Ecircumflex ; B -6 0 709 898 ;
+C -1 ; WX 333 ; N Iacute ; B -16 0 402 904 ;
+C -1 ; WX 722 ; N Ccedilla ; B 50 -218 714 694 ;
+C -1 ; WX 778 ; N Odieresis ; B 50 -13 764 865 ;
+C -1 ; WX 667 ; N Scaron ; B 32 -13 625 898 ;
+C -1 ; WX 722 ; N Edieresis ; B -6 0 709 865 ;
+C -1 ; WX 333 ; N Igrave ; B -16 0 392 904 ;
+C -1 ; WX 667 ; N adieresis ; B 41 -10 684 690 ;
+C -1 ; WX 778 ; N Ograve ; B 50 -13 764 904 ;
+C -1 ; WX 722 ; N Egrave ; B -6 0 709 904 ;
+C -1 ; WX 611 ; N Ydieresis ; B 44 0 685 865 ;
+C -1 ; WX 800 ; N registered ; B 62 -13 768 694 ;
+C -1 ; WX 778 ; N Otilde ; B 50 -13 764 865 ;
+C -1 ; WX 916 ; N onequarter ; B 72 -10 894 684 ;
+C -1 ; WX 778 ; N Ugrave ; B 105 -13 818 904 ;
+C -1 ; WX 778 ; N Ucircumflex ; B 105 -13 818 898 ;
+C -1 ; WX 667 ; N Thorn ; B -6 0 660 681 ;
+C -1 ; WX 600 ; N divide ; B 47 -31 553 537 ;
+C -1 ; WX 722 ; N Atilde ; B -34 0 688 865 ;
+C -1 ; WX 778 ; N Uacute ; B 105 -13 818 904 ;
+C -1 ; WX 778 ; N Ocircumflex ; B 50 -13 764 898 ;
+C -1 ; WX 600 ; N logicalnot ; B 47 108 553 399 ;
+C -1 ; WX 722 ; N Aring ; B -34 0 688 934 ;
+C -1 ; WX 333 ; N idieresis ; B 51 -10 412 690 ;
+C -1 ; WX 333 ; N iacute ; B 51 -10 392 729 ;
+C -1 ; WX 667 ; N aacute ; B 41 -10 684 729 ;
+C -1 ; WX 600 ; N plusminus ; B 47 0 553 506 ;
+C -1 ; WX 600 ; N multiply ; B 69 22 531 484 ;
+C -1 ; WX 778 ; N Udieresis ; B 105 -13 818 865 ;
+C -1 ; WX 600 ; N minus ; B 47 209 553 297 ;
+C -1 ; WX 398 ; N onesuperior ; B 72 268 326 684 ;
+C -1 ; WX 722 ; N Eacute ; B -6 0 709 904 ;
+C -1 ; WX 722 ; N Acircumflex ; B -34 0 688 898 ;
+C -1 ; WX 800 ; N copyright ; B 62 -13 768 694 ;
+C -1 ; WX 722 ; N Agrave ; B -34 0 688 904 ;
+C -1 ; WX 611 ; N odieresis ; B 41 -10 588 690 ;
+C -1 ; WX 611 ; N oacute ; B 41 -10 588 729 ;
+C -1 ; WX 400 ; N degree ; B 111 398 397 684 ;
+C -1 ; WX 333 ; N igrave ; B 51 -10 338 729 ;
+C -1 ; WX 667 ; N mu ; B 32 -226 671 490 ;
+C -1 ; WX 778 ; N Oacute ; B 50 -13 764 904 ;
+C -1 ; WX 611 ; N eth ; B 61 -10 573 722 ;
+C -1 ; WX 722 ; N Adieresis ; B -34 0 688 865 ;
+C -1 ; WX 611 ; N Yacute ; B 44 0 685 904 ;
+C -1 ; WX 222 ; N brokenbar ; B 85 -13 173 694 ;
+C -1 ; WX 916 ; N onehalf ; B 72 -10 902 684 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 157
+
+KPX A y -18
+KPX A w -28
+KPX A v -18
+KPX A u -25
+KPX A quoteright -92
+KPX A quotedblright -92
+KPX A Y -55
+KPX A W -55
+KPX A V -55
+KPX A U -25
+KPX A T -55
+KPX A Q -25
+KPX A O -25
+KPX A G -25
+KPX A C -25
+
+KPX B period -60
+KPX B comma -60
+
+KPX D period -60
+KPX D comma -60
+
+KPX F r -18
+KPX F period -129
+KPX F o -55
+KPX F e -55
+KPX F comma -129
+KPX F a -55
+KPX F A -55
+
+KPX G period -60
+KPX G comma -60
+
+KPX J period -60
+KPX J comma -60
+
+KPX L y -18
+KPX L quoteright -111
+KPX L Y -92
+KPX L W -92
+KPX L V -92
+KPX L T -92
+
+KPX O period -60
+KPX O comma -60
+
+KPX P period -129
+KPX P comma -129
+KPX P A -55
+
+KPX Q period -60
+KPX Q comma -60
+
+KPX R Y -37
+KPX R W -37
+KPX R V -37
+KPX R T -18
+
+KPX S period -60
+KPX S comma -60
+
+KPX T y -37
+KPX T w -55
+KPX T u -55
+KPX T semicolon -92
+KPX T r -55
+KPX T period -129
+KPX T o -74
+KPX T i -18
+KPX T hyphen -92
+KPX T e -74
+KPX T comma -129
+KPX T colon -92
+KPX T a -74
+KPX T A -55
+
+KPX U period -60
+KPX U comma -60
+
+KPX V u -37
+KPX V semicolon -74
+KPX V period -129
+KPX V o -55
+KPX V i -18
+KPX V hyphen -55
+KPX V e -55
+KPX V comma -129
+KPX V colon -74
+KPX V a -55
+KPX V A -37
+
+KPX W y -37
+KPX W u -37
+KPX W semicolon -74
+KPX W period -111
+KPX W o -37
+KPX W hyphen -55
+KPX W e -37
+KPX W comma -111
+KPX W colon -74
+KPX W a -37
+KPX W A -37
+
+KPX Y u -55
+KPX Y semicolon -92
+KPX Y period -111
+KPX Y o -74
+KPX Y i -37
+KPX Y hyphen -74
+KPX Y e -74
+KPX Y comma -111
+KPX Y colon -92
+KPX Y a -74
+KPX Y A -55
+
+KPX b period -50
+KPX b comma -50
+
+KPX c period -50
+KPX c h -25
+KPX c comma -50
+
+KPX colon space -37
+
+KPX comma space -37
+KPX comma quoteright -37
+KPX comma quotedblright -37
+
+KPX d w -10
+KPX d period 10
+KPX d comma 10
+
+KPX e period -60
+KPX e comma -60
+
+KPX f quoteright 37
+KPX f quotedblright 37
+KPX f period -60
+KPX f comma -60
+
+KPX g period -60
+KPX g comma -60
+
+KPX period quoteright -37
+KPX period quotedblright -37
+
+KPX quotedblleft quoteleft 18
+KPX quotedblleft A -18
+
+KPX quotedblright space -37
+
+KPX quoteleft A -18
+
+KPX quoteright v -18
+KPX quoteright s -37
+KPX quoteright r -18
+KPX quoteright quotedblright 18
+KPX quoteright d -37
+
+KPX r s -18
+KPX r q -18
+KPX r period -92
+KPX r hyphen -37
+KPX r g -18
+KPX r e -18
+KPX r d -18
+KPX r comma -92
+KPX r c -18
+KPX r a -18
+
+KPX s w -18
+
+KPX space Y -37
+KPX space W -37
+KPX space V -37
+KPX space T -37
+KPX space A -37
+
+KPX v period -37
+KPX v o 18
+KPX v e 18
+KPX v comma -37
+KPX v a 18
+
+KPX w period -37
+KPX w o 18
+KPX w e 18
+KPX w comma -37
+KPX w a 18
+
+KPX y period -37
+KPX y comma -37
+EndKernPairs
+EndKernData
+StartComposites 58
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 195 175 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 195 175 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 195 175 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 195 175 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 220 165 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 195 175 ;
+CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 225 0 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 195 175 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 195 175 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 195 175 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 195 175 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 10 175 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 10 175 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 10 175 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 10 175 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 215 175 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 243 175 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 243 175 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 243 175 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 243 175 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 243 175 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 167 175 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 243 175 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 243 175 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 243 175 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 243 175 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 139 175 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 139 175 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 187 175 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 167 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 167 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 167 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 167 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 167 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 167 0 ;
+CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 132 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 112 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 112 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 112 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 112 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute 0 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex 0 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis 0 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave 0 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 167 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 139 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 139 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 139 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 139 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 139 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 112 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 167 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 167 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 167 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 167 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 139 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 139 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 97 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/Bk-MdIt+ b/font/font/Bk-MdIt+
new file mode 100644
index 0000000..a9d09ff
--- /dev/null
+++ b/font/font/Bk-MdIt+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 722 ; N Ccaron ; B 50 -13 726 917 ;
+C -1 ; WX 556 ; N ccaron ; B 41 -10 560 723 ;
+C -1 ; WX 778 ; N Dcaron ; B 2 0 751 917 ;
+C -1 ; WX 717 ; N dcaron ; B 41 -10 804 759 ;
+C -1 ; WX 722 ; N Ecaron ; B -6 0 709 917 ;
+C -1 ; WX 556 ; N ecaron ; B 41 -10 547 723 ;
+C -1 ; WX 667 ; N Lcaron ; B 2 0 653 749 ;
+C -1 ; WX 667 ; N Lacute ; B 2 0 653 923 ;
+C -1 ; WX 439 ; N lcaron ; B 74 -10 505 759 ;
+C -1 ; WX 333 ; N lacute ; B 74 -10 457 923 ;
+C -1 ; WX 722 ; N Ncaron ; B 2 0 753 917 ;
+C -1 ; WX 667 ; N ncaron ; B 68 -10 667 723 ;
+C -1 ; WX 722 ; N Rcaron ; B -6 0 704 917 ;
+C -1 ; WX 722 ; N Racute ; B -6 0 704 923 ;
+C -1 ; WX 444 ; N rcaron ; B 67 0 480 723 ;
+C -1 ; WX 444 ; N racute ; B 67 0 471 729 ;
+C -1 ; WX 667 ; N Tcaron ; B 46 0 703 917 ;
+C -1 ; WX 495 ; N tcaron ; B 60 -10 554 694 ;
+C -1 ; WX 778 ; N Uring ; B 105 -13 818 917 ;
+C -1 ; WX 667 ; N uring ; B 67 -10 671 769 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 301 194 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 135 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 263 194 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 557 65 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 235 194 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 111 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 312 55 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 208 194 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 258 65 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 65 194 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 235 194 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 167 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 235 194 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 280 194 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 55 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 79 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 208 194 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 307 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 253 148 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 167 0 ;
+EndBuildComposites
diff --git a/font/font/Cr b/font/font/Cr
new file mode 100644
index 0000000..383939f
--- /dev/null
+++ b/font/font/Cr
@@ -0,0 +1,345 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1989, 1990, 1991 Adobe Systems Incorporated. All rights reserved.
+Comment Creation Date: Tue Sep 17 07:47:21 1991
+Comment UniqueID 36347
+Comment VMusage 31037 39405
+Comment Modified by Jeff Kingston 4 July 1994 (removed erroneous ligatures)
+FontName Courier
+FullName Courier
+FamilyName Courier
+Weight Medium
+ItalicAngle 0
+IsFixedPitch true
+FontBBox -28 -250 628 805
+UnderlinePosition -100
+UnderlineThickness 50
+Version 002.004
+Notice Copyright (c) 1989, 1990, 1991 Adobe Systems Incorporated. All rights reserved.
+EncodingScheme AdobeStandardEncoding
+CapHeight 562
+XHeight 426
+Ascender 629
+Descender -157
+StartCharMetrics 260
+C 32 ; WX 600 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 600 ; N exclam ; B 236 -15 364 572 ;
+C 34 ; WX 600 ; N quotedbl ; B 187 328 413 562 ;
+C 35 ; WX 600 ; N numbersign ; B 93 -32 507 639 ;
+C 36 ; WX 600 ; N dollar ; B 105 -126 496 662 ;
+C 37 ; WX 600 ; N percent ; B 81 -15 518 622 ;
+C 38 ; WX 600 ; N ampersand ; B 63 -15 538 543 ;
+C 39 ; WX 600 ; N quoteright ; B 213 328 376 562 ;
+C 40 ; WX 600 ; N parenleft ; B 269 -108 440 622 ;
+C 41 ; WX 600 ; N parenright ; B 160 -108 331 622 ;
+C 42 ; WX 600 ; N asterisk ; B 116 257 484 607 ;
+C 43 ; WX 600 ; N plus ; B 80 44 520 470 ;
+C 44 ; WX 600 ; N comma ; B 181 -112 344 122 ;
+C 45 ; WX 600 ; N hyphen ; B 103 231 497 285 ;
+C 46 ; WX 600 ; N period ; B 229 -15 371 109 ;
+C 47 ; WX 600 ; N slash ; B 125 -80 475 629 ;
+C 48 ; WX 600 ; N zero ; B 106 -15 494 622 ;
+C 49 ; WX 600 ; N one ; B 96 0 505 622 ;
+C 50 ; WX 600 ; N two ; B 70 0 471 622 ;
+C 51 ; WX 600 ; N three ; B 75 -15 466 622 ;
+C 52 ; WX 600 ; N four ; B 78 0 500 622 ;
+C 53 ; WX 600 ; N five ; B 92 -15 497 607 ;
+C 54 ; WX 600 ; N six ; B 111 -15 497 622 ;
+C 55 ; WX 600 ; N seven ; B 82 0 483 607 ;
+C 56 ; WX 600 ; N eight ; B 102 -15 498 622 ;
+C 57 ; WX 600 ; N nine ; B 96 -15 489 622 ;
+C 58 ; WX 600 ; N colon ; B 229 -15 371 385 ;
+C 59 ; WX 600 ; N semicolon ; B 181 -112 371 385 ;
+C 60 ; WX 600 ; N less ; B 41 42 519 472 ;
+C 61 ; WX 600 ; N equal ; B 80 138 520 376 ;
+C 62 ; WX 600 ; N greater ; B 66 42 544 472 ;
+C 63 ; WX 600 ; N question ; B 129 -15 492 572 ;
+C 64 ; WX 600 ; N at ; B 77 -15 533 622 ;
+C 65 ; WX 600 ; N A ; B 3 0 597 562 ;
+C 66 ; WX 600 ; N B ; B 43 0 559 562 ;
+C 67 ; WX 600 ; N C ; B 41 -18 540 580 ;
+C 68 ; WX 600 ; N D ; B 43 0 574 562 ;
+C 69 ; WX 600 ; N E ; B 53 0 550 562 ;
+C 70 ; WX 600 ; N F ; B 53 0 545 562 ;
+C 71 ; WX 600 ; N G ; B 31 -18 575 580 ;
+C 72 ; WX 600 ; N H ; B 32 0 568 562 ;
+C 73 ; WX 600 ; N I ; B 96 0 504 562 ;
+C 74 ; WX 600 ; N J ; B 34 -18 566 562 ;
+C 75 ; WX 600 ; N K ; B 38 0 582 562 ;
+C 76 ; WX 600 ; N L ; B 47 0 554 562 ;
+C 77 ; WX 600 ; N M ; B 4 0 596 562 ;
+C 78 ; WX 600 ; N N ; B 7 -13 593 562 ;
+C 79 ; WX 600 ; N O ; B 43 -18 557 580 ;
+C 80 ; WX 600 ; N P ; B 79 0 558 562 ;
+C 81 ; WX 600 ; N Q ; B 43 -138 557 580 ;
+C 82 ; WX 600 ; N R ; B 38 0 588 562 ;
+C 83 ; WX 600 ; N S ; B 72 -20 529 580 ;
+C 84 ; WX 600 ; N T ; B 38 0 563 562 ;
+C 85 ; WX 600 ; N U ; B 17 -18 583 562 ;
+C 86 ; WX 600 ; N V ; B -4 -13 604 562 ;
+C 87 ; WX 600 ; N W ; B -3 -13 603 562 ;
+C 88 ; WX 600 ; N X ; B 23 0 577 562 ;
+C 89 ; WX 600 ; N Y ; B 24 0 576 562 ;
+C 90 ; WX 600 ; N Z ; B 86 0 514 562 ;
+C 91 ; WX 600 ; N bracketleft ; B 269 -108 442 622 ;
+C 92 ; WX 600 ; N backslash ; B 118 -80 482 629 ;
+C 93 ; WX 600 ; N bracketright ; B 158 -108 331 622 ;
+C 94 ; WX 600 ; N asciicircum ; B 94 354 506 622 ;
+C 95 ; WX 600 ; N underscore ; B 0 -125 600 -75 ;
+C 96 ; WX 600 ; N quoteleft ; B 224 328 387 562 ;
+C 97 ; WX 600 ; N a ; B 53 -15 559 441 ;
+C 98 ; WX 600 ; N b ; B 14 -15 575 629 ;
+C 99 ; WX 600 ; N c ; B 66 -15 529 441 ;
+C 100 ; WX 600 ; N d ; B 45 -15 591 629 ;
+C 101 ; WX 600 ; N e ; B 66 -15 548 441 ;
+C 102 ; WX 600 ; N f ; B 114 0 531 629 ;
+C 103 ; WX 600 ; N g ; B 45 -157 566 441 ;
+C 104 ; WX 600 ; N h ; B 18 0 582 629 ;
+C 105 ; WX 600 ; N i ; B 95 0 505 657 ;
+C 106 ; WX 600 ; N j ; B 82 -157 410 657 ;
+C 107 ; WX 600 ; N k ; B 43 0 580 629 ;
+C 108 ; WX 600 ; N l ; B 95 0 505 629 ;
+C 109 ; WX 600 ; N m ; B -5 0 605 441 ;
+C 110 ; WX 600 ; N n ; B 26 0 575 441 ;
+C 111 ; WX 600 ; N o ; B 62 -15 538 441 ;
+C 112 ; WX 600 ; N p ; B 9 -157 555 441 ;
+C 113 ; WX 600 ; N q ; B 45 -157 591 441 ;
+C 114 ; WX 600 ; N r ; B 60 0 559 441 ;
+C 115 ; WX 600 ; N s ; B 80 -15 513 441 ;
+C 116 ; WX 600 ; N t ; B 87 -15 530 561 ;
+C 117 ; WX 600 ; N u ; B 21 -15 562 426 ;
+C 118 ; WX 600 ; N v ; B 10 -10 590 426 ;
+C 119 ; WX 600 ; N w ; B -4 -10 604 426 ;
+C 120 ; WX 600 ; N x ; B 20 0 580 426 ;
+C 121 ; WX 600 ; N y ; B 7 -157 592 426 ;
+C 122 ; WX 600 ; N z ; B 99 0 502 426 ;
+C 123 ; WX 600 ; N braceleft ; B 182 -108 437 622 ;
+C 124 ; WX 600 ; N bar ; B 275 -250 326 750 ;
+C 125 ; WX 600 ; N braceright ; B 163 -108 418 622 ;
+C 126 ; WX 600 ; N asciitilde ; B 63 197 540 320 ;
+C 161 ; WX 600 ; N exclamdown ; B 236 -157 364 430 ;
+C 162 ; WX 600 ; N cent ; B 96 -49 500 614 ;
+C 163 ; WX 600 ; N sterling ; B 84 -21 521 611 ;
+C 164 ; WX 600 ; N fraction ; B 92 -57 509 665 ;
+C 165 ; WX 600 ; N yen ; B 26 0 574 562 ;
+C 166 ; WX 600 ; N florin ; B 4 -143 539 622 ;
+C 167 ; WX 600 ; N section ; B 113 -78 488 580 ;
+C 168 ; WX 600 ; N currency ; B 73 58 527 506 ;
+C 169 ; WX 600 ; N quotesingle ; B 259 328 341 562 ;
+C 170 ; WX 600 ; N quotedblleft ; B 143 328 471 562 ;
+C 171 ; WX 600 ; N guillemotleft ; B 37 70 563 446 ;
+C 172 ; WX 600 ; N guilsinglleft ; B 149 70 451 446 ;
+C 173 ; WX 600 ; N guilsinglright ; B 149 70 451 446 ;
+C 174 ; WX 600 ; N fi ; B 3 0 597 629 ;
+C 175 ; WX 600 ; N fl ; B 3 0 597 629 ;
+C 177 ; WX 600 ; N endash ; B 75 231 525 285 ;
+C 178 ; WX 600 ; N dagger ; B 141 -78 459 580 ;
+C 179 ; WX 600 ; N daggerdbl ; B 141 -78 459 580 ;
+C 180 ; WX 600 ; N periodcentered ; B 222 189 378 327 ;
+C 182 ; WX 600 ; N paragraph ; B 50 -78 511 562 ;
+C 183 ; WX 600 ; N bullet ; B 172 130 428 383 ;
+C 184 ; WX 600 ; N quotesinglbase ; B 213 -134 376 100 ;
+C 185 ; WX 600 ; N quotedblbase ; B 143 -134 457 100 ;
+C 186 ; WX 600 ; N quotedblright ; B 143 328 457 562 ;
+C 187 ; WX 600 ; N guillemotright ; B 37 70 563 446 ;
+C 188 ; WX 600 ; N ellipsis ; B 37 -15 563 111 ;
+C 189 ; WX 600 ; N perthousand ; B 3 -15 600 622 ;
+C 191 ; WX 600 ; N questiondown ; B 108 -157 471 430 ;
+C 193 ; WX 600 ; N grave ; B 151 497 378 672 ;
+C 194 ; WX 600 ; N acute ; B 242 497 469 672 ;
+C 195 ; WX 600 ; N circumflex ; B 124 477 476 654 ;
+C 196 ; WX 600 ; N tilde ; B 105 489 503 606 ;
+C 197 ; WX 600 ; N macron ; B 120 525 480 565 ;
+C 198 ; WX 600 ; N breve ; B 153 501 447 609 ;
+C 199 ; WX 600 ; N dotaccent ; B 249 477 352 580 ;
+C 200 ; WX 600 ; N dieresis ; B 148 492 453 595 ;
+C 202 ; WX 600 ; N ring ; B 218 463 382 627 ;
+C 203 ; WX 600 ; N cedilla ; B 224 -151 362 10 ;
+C 205 ; WX 600 ; N hungarumlaut ; B 133 497 540 672 ;
+C 206 ; WX 600 ; N ogonek ; B 227 -151 370 0 ;
+C 207 ; WX 600 ; N caron ; B 124 492 476 669 ;
+C 208 ; WX 600 ; N emdash ; B 0 231 600 285 ;
+C 225 ; WX 600 ; N AE ; B 3 0 550 562 ;
+C 227 ; WX 600 ; N ordfeminine ; B 156 249 442 580 ;
+C 232 ; WX 600 ; N Lslash ; B 47 0 554 562 ;
+C 233 ; WX 600 ; N Oslash ; B 43 -80 557 629 ;
+C 234 ; WX 600 ; N OE ; B 7 0 567 562 ;
+C 235 ; WX 600 ; N ordmasculine ; B 157 249 443 580 ;
+C 241 ; WX 600 ; N ae ; B 19 -15 570 441 ;
+C 245 ; WX 600 ; N dotlessi ; B 95 0 505 426 ;
+C 248 ; WX 600 ; N lslash ; B 95 0 505 629 ;
+C 249 ; WX 600 ; N oslash ; B 62 -80 538 506 ;
+C 250 ; WX 600 ; N oe ; B 19 -15 559 441 ;
+C 251 ; WX 600 ; N germandbls ; B 48 -15 588 629 ;
+C -1 ; WX 600 ; N Odieresis ; B 43 -18 557 731 ;
+C -1 ; WX 600 ; N logicalnot ; B 87 108 513 369 ;
+C -1 ; WX 600 ; N minus ; B 80 232 520 283 ;
+C -1 ; WX 600 ; N merge ; B 160 -15 440 436 ;
+C -1 ; WX 600 ; N degree ; B 123 269 477 622 ;
+C -1 ; WX 600 ; N dectab ; B 18 0 582 227 ;
+C -1 ; WX 600 ; N ll ; B 18 0 567 629 ;
+C -1 ; WX 600 ; N IJ ; B 32 -18 583 562 ;
+C -1 ; WX 600 ; N Eacute ; B 53 0 550 793 ;
+C -1 ; WX 600 ; N Ocircumflex ; B 43 -18 557 775 ;
+C -1 ; WX 600 ; N ucircumflex ; B 21 -15 562 654 ;
+C -1 ; WX 600 ; N left ; B 70 68 530 348 ;
+C -1 ; WX 600 ; N threesuperior ; B 155 240 406 622 ;
+C -1 ; WX 600 ; N up ; B 160 0 440 437 ;
+C -1 ; WX 600 ; N multiply ; B 87 43 515 470 ;
+C -1 ; WX 600 ; N Scaron ; B 72 -20 529 805 ;
+C -1 ; WX 600 ; N tab ; B 19 0 581 562 ;
+C -1 ; WX 600 ; N Ucircumflex ; B 17 -18 583 775 ;
+C -1 ; WX 600 ; N divide ; B 87 48 513 467 ;
+C -1 ; WX 600 ; N Acircumflex ; B 3 0 597 775 ;
+C -1 ; WX 600 ; N eacute ; B 66 -15 548 672 ;
+C -1 ; WX 600 ; N uacute ; B 21 -15 562 672 ;
+C -1 ; WX 600 ; N Aacute ; B 3 0 597 793 ;
+C -1 ; WX 600 ; N copyright ; B 0 -18 600 580 ;
+C -1 ; WX 600 ; N twosuperior ; B 177 249 424 622 ;
+C -1 ; WX 600 ; N Ecircumflex ; B 53 0 550 775 ;
+C -1 ; WX 600 ; N ntilde ; B 26 0 575 606 ;
+C -1 ; WX 600 ; N down ; B 160 -15 440 426 ;
+C -1 ; WX 600 ; N center ; B 40 14 560 580 ;
+C -1 ; WX 600 ; N onesuperior ; B 172 249 428 622 ;
+C -1 ; WX 600 ; N ij ; B 37 -157 490 657 ;
+C -1 ; WX 600 ; N edieresis ; B 66 -15 548 595 ;
+C -1 ; WX 600 ; N graybox ; B 76 0 525 599 ;
+C -1 ; WX 600 ; N odieresis ; B 62 -15 538 595 ;
+C -1 ; WX 600 ; N Ograve ; B 43 -18 557 793 ;
+C -1 ; WX 600 ; N threequarters ; B 8 -56 593 666 ;
+C -1 ; WX 600 ; N plusminus ; B 87 44 513 558 ;
+C -1 ; WX 600 ; N prescription ; B 27 -15 577 562 ;
+C -1 ; WX 600 ; N eth ; B 62 -15 538 629 ;
+C -1 ; WX 600 ; N largebullet ; B 261 220 339 297 ;
+C -1 ; WX 600 ; N egrave ; B 66 -15 548 672 ;
+C -1 ; WX 600 ; N ccedilla ; B 66 -151 529 441 ;
+C -1 ; WX 600 ; N notegraphic ; B 136 -15 464 572 ;
+C -1 ; WX 600 ; N Udieresis ; B 17 -18 583 731 ;
+C -1 ; WX 600 ; N Gcaron ; B 31 -18 575 805 ;
+C -1 ; WX 600 ; N arrowdown ; B 116 -15 484 608 ;
+C -1 ; WX 600 ; N format ; B 5 -157 56 607 ;
+C -1 ; WX 600 ; N Otilde ; B 43 -18 557 732 ;
+C -1 ; WX 600 ; N Idieresis ; B 96 0 504 731 ;
+C -1 ; WX 600 ; N adieresis ; B 53 -15 559 595 ;
+C -1 ; WX 600 ; N ecircumflex ; B 66 -15 548 654 ;
+C -1 ; WX 600 ; N Eth ; B 30 0 574 562 ;
+C -1 ; WX 600 ; N onequarter ; B 0 -57 600 665 ;
+C -1 ; WX 600 ; N LL ; B 8 0 592 562 ;
+C -1 ; WX 600 ; N agrave ; B 53 -15 559 672 ;
+C -1 ; WX 600 ; N Zcaron ; B 86 0 514 805 ;
+C -1 ; WX 600 ; N Scedilla ; B 72 -151 529 580 ;
+C -1 ; WX 600 ; N Idot ; B 96 0 504 716 ;
+C -1 ; WX 600 ; N Iacute ; B 96 0 504 793 ;
+C -1 ; WX 600 ; N indent ; B 70 68 530 348 ;
+C -1 ; WX 600 ; N Ugrave ; B 17 -18 583 793 ;
+C -1 ; WX 600 ; N scaron ; B 80 -15 513 669 ;
+C -1 ; WX 600 ; N overscore ; B 0 579 600 629 ;
+C -1 ; WX 600 ; N Aring ; B 3 0 597 753 ;
+C -1 ; WX 600 ; N Ccedilla ; B 41 -151 540 580 ;
+C -1 ; WX 600 ; N Igrave ; B 96 0 504 793 ;
+C -1 ; WX 600 ; N brokenbar ; B 275 -175 326 675 ;
+C -1 ; WX 600 ; N Oacute ; B 43 -18 557 793 ;
+C -1 ; WX 600 ; N otilde ; B 62 -15 538 606 ;
+C -1 ; WX 600 ; N Yacute ; B 24 0 576 793 ;
+C -1 ; WX 600 ; N lira ; B 73 -21 521 611 ;
+C -1 ; WX 600 ; N Icircumflex ; B 96 0 504 775 ;
+C -1 ; WX 600 ; N Atilde ; B 3 0 597 732 ;
+C -1 ; WX 600 ; N Uacute ; B 17 -18 583 793 ;
+C -1 ; WX 600 ; N Ydieresis ; B 24 0 576 731 ;
+C -1 ; WX 600 ; N ydieresis ; B 7 -157 592 595 ;
+C -1 ; WX 600 ; N idieresis ; B 95 0 505 595 ;
+C -1 ; WX 600 ; N Adieresis ; B 3 0 597 731 ;
+C -1 ; WX 600 ; N mu ; B 21 -157 562 426 ;
+C -1 ; WX 600 ; N trademark ; B -23 263 623 562 ;
+C -1 ; WX 600 ; N oacute ; B 62 -15 538 672 ;
+C -1 ; WX 600 ; N acircumflex ; B 53 -15 559 654 ;
+C -1 ; WX 600 ; N Agrave ; B 3 0 597 793 ;
+C -1 ; WX 600 ; N return ; B 19 0 581 562 ;
+C -1 ; WX 600 ; N atilde ; B 53 -15 559 606 ;
+C -1 ; WX 600 ; N square ; B 19 0 581 562 ;
+C -1 ; WX 600 ; N registered ; B 0 -18 600 580 ;
+C -1 ; WX 600 ; N stop ; B 19 0 581 562 ;
+C -1 ; WX 600 ; N udieresis ; B 21 -15 562 595 ;
+C -1 ; WX 600 ; N arrowup ; B 116 0 484 623 ;
+C -1 ; WX 600 ; N igrave ; B 95 0 505 672 ;
+C -1 ; WX 600 ; N Edieresis ; B 53 0 550 731 ;
+C -1 ; WX 600 ; N zcaron ; B 99 0 502 669 ;
+C -1 ; WX 600 ; N arrowboth ; B -28 115 628 483 ;
+C -1 ; WX 600 ; N gcaron ; B 45 -157 566 669 ;
+C -1 ; WX 600 ; N arrowleft ; B -24 115 624 483 ;
+C -1 ; WX 600 ; N aacute ; B 53 -15 559 672 ;
+C -1 ; WX 600 ; N ocircumflex ; B 62 -15 538 654 ;
+C -1 ; WX 600 ; N scedilla ; B 80 -151 513 441 ;
+C -1 ; WX 600 ; N ograve ; B 62 -15 538 672 ;
+C -1 ; WX 600 ; N onehalf ; B 0 -57 611 665 ;
+C -1 ; WX 600 ; N ugrave ; B 21 -15 562 672 ;
+C -1 ; WX 600 ; N Ntilde ; B 7 -13 593 732 ;
+C -1 ; WX 600 ; N iacute ; B 95 0 505 672 ;
+C -1 ; WX 600 ; N arrowright ; B -24 115 624 483 ;
+C -1 ; WX 600 ; N Thorn ; B 79 0 538 562 ;
+C -1 ; WX 600 ; N Egrave ; B 53 0 550 793 ;
+C -1 ; WX 600 ; N thorn ; B -6 -157 555 629 ;
+C -1 ; WX 600 ; N aring ; B 53 -15 559 627 ;
+C -1 ; WX 600 ; N yacute ; B 7 -157 592 672 ;
+C -1 ; WX 600 ; N icircumflex ; B 94 0 505 654 ;
+EndCharMetrics
+StartComposites 58
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 20 121 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex -30 121 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis -30 136 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave -30 121 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring -15 126 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 0 126 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 30 121 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 0 121 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 0 136 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 0 121 ;
+CC Gcaron 2 ; PCC G 0 0 ; PCC caron 0 136 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 0 121 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 0 121 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 0 136 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 0 121 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 0 126 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 0 121 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 0 121 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 0 136 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 0 121 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 0 126 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 30 136 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 30 121 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 0 121 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 0 136 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave -30 121 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 30 121 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 0 136 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 0 136 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 0 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 0 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 0 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 0 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 0 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 0 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 0 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 0 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 0 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 0 0 ;
+CC gcaron 2 ; PCC g 0 0 ; PCC caron -30 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute 0 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -30 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -30 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -30 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 0 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 0 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 0 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 0 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 0 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 0 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 0 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute -10 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex -10 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 0 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave -30 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute -20 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis -10 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 10 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/Cr+ b/font/font/Cr+
new file mode 100644
index 0000000..63b36ec
--- /dev/null
+++ b/font/font/Cr+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 600 ; N Ccaron ; B 41 -18 540 790 ;
+C -1 ; WX 600 ; N ccaron ; B 66 -15 529 669 ;
+C -1 ; WX 600 ; N Dcaron ; B 43 0 574 790 ;
+C -1 ; WX 600 ; N dcaron ; B 45 -15 770 692 ;
+C -1 ; WX 600 ; N Ecaron ; B 53 0 550 790 ;
+C -1 ; WX 600 ; N ecaron ; B 66 -15 548 669 ;
+C -1 ; WX 600 ; N Lcaron ; B 47 0 683 618 ;
+C -1 ; WX 600 ; N Lacute ; B 47 0 554 788 ;
+C -1 ; WX 600 ; N lcaron ; B 95 0 684 692 ;
+C -1 ; WX 600 ; N lacute ; B 95 0 505 788 ;
+C -1 ; WX 600 ; N Ncaron ; B 7 -13 593 790 ;
+C -1 ; WX 600 ; N ncaron ; B 26 0 575 669 ;
+C -1 ; WX 600 ; N Rcaron ; B 38 0 588 790 ;
+C -1 ; WX 600 ; N Racute ; B 38 0 588 788 ;
+C -1 ; WX 600 ; N rcaron ; B 60 0 559 669 ;
+C -1 ; WX 600 ; N racute ; B 60 0 559 672 ;
+C -1 ; WX 600 ; N Tcaron ; B 38 0 563 790 ;
+C -1 ; WX 600 ; N tcaron ; B 87 -15 709 562 ;
+C -1 ; WX 600 ; N Uring ; B 17 -18 583 790 ;
+C -1 ; WX 600 ; N uring ; B 21 -15 562 627 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 50 121 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 23 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 0 121 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 394 130 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 0 121 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 0 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 307 56 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 0 116 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 308 130 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 23 116 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 0 121 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 0 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 0 121 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 43 116 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 0 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 23 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 0 121 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 333 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 0 163 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 0 0 ;
+EndBuildComposites
diff --git a/font/font/Cr-Bd b/font/font/Cr-Bd
new file mode 100644
index 0000000..13cd303
--- /dev/null
+++ b/font/font/Cr-Bd
@@ -0,0 +1,345 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1989, 1990, 1991, Adobe Systems Incorporated. All rights reserved.
+Comment Creation Date: Tue Sep 17 14:02:41 1991
+Comment UniqueID 36384
+Comment VMusage 31992 40360
+Comment Modified by Jeff Kingston 4 July 1994 (removed erroneous ligatures)
+FontName Courier-Bold
+FullName Courier Bold
+FamilyName Courier
+Weight Bold
+ItalicAngle 0
+IsFixedPitch true
+FontBBox -113 -250 749 801
+UnderlinePosition -100
+UnderlineThickness 50
+Version 002.004
+Notice Copyright (c) 1989, 1990, 1991, Adobe Systems Incorporated. All rights reserved.
+EncodingScheme AdobeStandardEncoding
+CapHeight 562
+XHeight 439
+Ascender 626
+Descender -142
+StartCharMetrics 260
+C 32 ; WX 600 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 600 ; N exclam ; B 202 -15 398 572 ;
+C 34 ; WX 600 ; N quotedbl ; B 135 277 465 562 ;
+C 35 ; WX 600 ; N numbersign ; B 56 -45 544 651 ;
+C 36 ; WX 600 ; N dollar ; B 82 -126 519 666 ;
+C 37 ; WX 600 ; N percent ; B 5 -15 595 616 ;
+C 38 ; WX 600 ; N ampersand ; B 36 -15 546 543 ;
+C 39 ; WX 600 ; N quoteright ; B 171 277 423 562 ;
+C 40 ; WX 600 ; N parenleft ; B 219 -102 461 616 ;
+C 41 ; WX 600 ; N parenright ; B 139 -102 381 616 ;
+C 42 ; WX 600 ; N asterisk ; B 91 219 509 601 ;
+C 43 ; WX 600 ; N plus ; B 71 39 529 478 ;
+C 44 ; WX 600 ; N comma ; B 123 -111 393 174 ;
+C 45 ; WX 600 ; N hyphen ; B 100 203 500 313 ;
+C 46 ; WX 600 ; N period ; B 192 -15 408 171 ;
+C 47 ; WX 600 ; N slash ; B 98 -77 502 626 ;
+C 48 ; WX 600 ; N zero ; B 87 -15 513 616 ;
+C 49 ; WX 600 ; N one ; B 81 0 539 616 ;
+C 50 ; WX 600 ; N two ; B 61 0 499 616 ;
+C 51 ; WX 600 ; N three ; B 63 -15 501 616 ;
+C 52 ; WX 600 ; N four ; B 53 0 507 616 ;
+C 53 ; WX 600 ; N five ; B 70 -15 521 601 ;
+C 54 ; WX 600 ; N six ; B 90 -15 521 616 ;
+C 55 ; WX 600 ; N seven ; B 55 0 494 601 ;
+C 56 ; WX 600 ; N eight ; B 83 -15 517 616 ;
+C 57 ; WX 600 ; N nine ; B 79 -15 510 616 ;
+C 58 ; WX 600 ; N colon ; B 191 -15 407 425 ;
+C 59 ; WX 600 ; N semicolon ; B 123 -111 408 425 ;
+C 60 ; WX 600 ; N less ; B 66 15 523 501 ;
+C 61 ; WX 600 ; N equal ; B 71 118 529 398 ;
+C 62 ; WX 600 ; N greater ; B 77 15 534 501 ;
+C 63 ; WX 600 ; N question ; B 98 -14 501 580 ;
+C 64 ; WX 600 ; N at ; B 16 -15 584 616 ;
+C 65 ; WX 600 ; N A ; B -9 0 609 562 ;
+C 66 ; WX 600 ; N B ; B 30 0 573 562 ;
+C 67 ; WX 600 ; N C ; B 22 -18 560 580 ;
+C 68 ; WX 600 ; N D ; B 30 0 594 562 ;
+C 69 ; WX 600 ; N E ; B 25 0 560 562 ;
+C 70 ; WX 600 ; N F ; B 39 0 570 562 ;
+C 71 ; WX 600 ; N G ; B 22 -18 594 580 ;
+C 72 ; WX 600 ; N H ; B 20 0 580 562 ;
+C 73 ; WX 600 ; N I ; B 77 0 523 562 ;
+C 74 ; WX 600 ; N J ; B 37 -18 601 562 ;
+C 75 ; WX 600 ; N K ; B 21 0 599 562 ;
+C 76 ; WX 600 ; N L ; B 39 0 578 562 ;
+C 77 ; WX 600 ; N M ; B -2 0 602 562 ;
+C 78 ; WX 600 ; N N ; B 8 -12 610 562 ;
+C 79 ; WX 600 ; N O ; B 22 -18 578 580 ;
+C 80 ; WX 600 ; N P ; B 48 0 559 562 ;
+C 81 ; WX 600 ; N Q ; B 32 -138 578 580 ;
+C 82 ; WX 600 ; N R ; B 24 0 599 562 ;
+C 83 ; WX 600 ; N S ; B 47 -22 553 582 ;
+C 84 ; WX 600 ; N T ; B 21 0 579 562 ;
+C 85 ; WX 600 ; N U ; B 4 -18 596 562 ;
+C 86 ; WX 600 ; N V ; B -13 0 613 562 ;
+C 87 ; WX 600 ; N W ; B -18 0 618 562 ;
+C 88 ; WX 600 ; N X ; B 12 0 588 562 ;
+C 89 ; WX 600 ; N Y ; B 12 0 589 562 ;
+C 90 ; WX 600 ; N Z ; B 62 0 539 562 ;
+C 91 ; WX 600 ; N bracketleft ; B 245 -102 475 616 ;
+C 92 ; WX 600 ; N backslash ; B 99 -77 503 626 ;
+C 93 ; WX 600 ; N bracketright ; B 125 -102 355 616 ;
+C 94 ; WX 600 ; N asciicircum ; B 108 250 492 616 ;
+C 95 ; WX 600 ; N underscore ; B 0 -125 600 -75 ;
+C 96 ; WX 600 ; N quoteleft ; B 178 277 428 562 ;
+C 97 ; WX 600 ; N a ; B 35 -15 570 454 ;
+C 98 ; WX 600 ; N b ; B 0 -15 584 626 ;
+C 99 ; WX 600 ; N c ; B 40 -15 545 459 ;
+C 100 ; WX 600 ; N d ; B 20 -15 591 626 ;
+C 101 ; WX 600 ; N e ; B 40 -15 563 454 ;
+C 102 ; WX 600 ; N f ; B 83 0 547 626 ;
+C 103 ; WX 600 ; N g ; B 30 -146 580 454 ;
+C 104 ; WX 600 ; N h ; B 5 0 592 626 ;
+C 105 ; WX 600 ; N i ; B 77 0 523 658 ;
+C 106 ; WX 600 ; N j ; B 63 -146 440 658 ;
+C 107 ; WX 600 ; N k ; B 20 0 585 626 ;
+C 108 ; WX 600 ; N l ; B 77 0 523 626 ;
+C 109 ; WX 600 ; N m ; B -22 0 626 454 ;
+C 110 ; WX 600 ; N n ; B 18 0 592 454 ;
+C 111 ; WX 600 ; N o ; B 30 -15 570 454 ;
+C 112 ; WX 600 ; N p ; B -1 -142 570 454 ;
+C 113 ; WX 600 ; N q ; B 20 -142 591 454 ;
+C 114 ; WX 600 ; N r ; B 47 0 580 454 ;
+C 115 ; WX 600 ; N s ; B 68 -17 535 459 ;
+C 116 ; WX 600 ; N t ; B 47 -15 532 562 ;
+C 117 ; WX 600 ; N u ; B -1 -15 569 439 ;
+C 118 ; WX 600 ; N v ; B -1 0 601 439 ;
+C 119 ; WX 600 ; N w ; B -18 0 618 439 ;
+C 120 ; WX 600 ; N x ; B 6 0 594 439 ;
+C 121 ; WX 600 ; N y ; B -4 -142 601 439 ;
+C 122 ; WX 600 ; N z ; B 81 0 520 439 ;
+C 123 ; WX 600 ; N braceleft ; B 160 -102 464 616 ;
+C 124 ; WX 600 ; N bar ; B 255 -250 345 750 ;
+C 125 ; WX 600 ; N braceright ; B 136 -102 440 616 ;
+C 126 ; WX 600 ; N asciitilde ; B 71 153 530 356 ;
+C 161 ; WX 600 ; N exclamdown ; B 202 -146 398 449 ;
+C 162 ; WX 600 ; N cent ; B 66 -49 518 614 ;
+C 163 ; WX 600 ; N sterling ; B 72 -28 558 611 ;
+C 164 ; WX 600 ; N fraction ; B 25 -60 576 661 ;
+C 165 ; WX 600 ; N yen ; B 10 0 590 562 ;
+C 166 ; WX 600 ; N florin ; B -30 -131 572 616 ;
+C 167 ; WX 600 ; N section ; B 83 -70 517 580 ;
+C 168 ; WX 600 ; N currency ; B 54 49 546 517 ;
+C 169 ; WX 600 ; N quotesingle ; B 227 277 373 562 ;
+C 170 ; WX 600 ; N quotedblleft ; B 71 277 535 562 ;
+C 171 ; WX 600 ; N guillemotleft ; B 8 70 553 446 ;
+C 172 ; WX 600 ; N guilsinglleft ; B 141 70 459 446 ;
+C 173 ; WX 600 ; N guilsinglright ; B 141 70 459 446 ;
+C 174 ; WX 600 ; N fi ; B 12 0 593 626 ;
+C 175 ; WX 600 ; N fl ; B 12 0 593 626 ;
+C 177 ; WX 600 ; N endash ; B 65 203 535 313 ;
+C 178 ; WX 600 ; N dagger ; B 106 -70 494 580 ;
+C 179 ; WX 600 ; N daggerdbl ; B 106 -70 494 580 ;
+C 180 ; WX 600 ; N periodcentered ; B 196 165 404 351 ;
+C 182 ; WX 600 ; N paragraph ; B 6 -70 576 580 ;
+C 183 ; WX 600 ; N bullet ; B 140 132 460 430 ;
+C 184 ; WX 600 ; N quotesinglbase ; B 175 -142 427 143 ;
+C 185 ; WX 600 ; N quotedblbase ; B 65 -142 529 143 ;
+C 186 ; WX 600 ; N quotedblright ; B 61 277 525 562 ;
+C 187 ; WX 600 ; N guillemotright ; B 47 70 592 446 ;
+C 188 ; WX 600 ; N ellipsis ; B 26 -15 574 116 ;
+C 189 ; WX 600 ; N perthousand ; B -113 -15 713 616 ;
+C 191 ; WX 600 ; N questiondown ; B 99 -146 502 449 ;
+C 193 ; WX 600 ; N grave ; B 132 508 395 661 ;
+C 194 ; WX 600 ; N acute ; B 205 508 468 661 ;
+C 195 ; WX 600 ; N circumflex ; B 103 483 497 657 ;
+C 196 ; WX 600 ; N tilde ; B 89 493 512 636 ;
+C 197 ; WX 600 ; N macron ; B 88 505 512 585 ;
+C 198 ; WX 600 ; N breve ; B 83 468 517 631 ;
+C 199 ; WX 600 ; N dotaccent ; B 230 485 370 625 ;
+C 200 ; WX 600 ; N dieresis ; B 128 485 472 625 ;
+C 202 ; WX 600 ; N ring ; B 198 481 402 678 ;
+C 203 ; WX 600 ; N cedilla ; B 205 -206 387 0 ;
+C 205 ; WX 600 ; N hungarumlaut ; B 68 488 588 661 ;
+C 206 ; WX 600 ; N ogonek ; B 169 -199 367 0 ;
+C 207 ; WX 600 ; N caron ; B 103 493 497 667 ;
+C 208 ; WX 600 ; N emdash ; B -10 203 610 313 ;
+C 225 ; WX 600 ; N AE ; B -29 0 602 562 ;
+C 227 ; WX 600 ; N ordfeminine ; B 147 196 453 580 ;
+C 232 ; WX 600 ; N Lslash ; B 39 0 578 562 ;
+C 233 ; WX 600 ; N Oslash ; B 22 -22 578 584 ;
+C 234 ; WX 600 ; N OE ; B -25 0 595 562 ;
+C 235 ; WX 600 ; N ordmasculine ; B 147 196 453 580 ;
+C 241 ; WX 600 ; N ae ; B -4 -15 601 454 ;
+C 245 ; WX 600 ; N dotlessi ; B 77 0 523 439 ;
+C 248 ; WX 600 ; N lslash ; B 77 0 523 626 ;
+C 249 ; WX 600 ; N oslash ; B 30 -24 570 463 ;
+C 250 ; WX 600 ; N oe ; B -18 -15 611 454 ;
+C 251 ; WX 600 ; N germandbls ; B 22 -15 596 626 ;
+C -1 ; WX 600 ; N Odieresis ; B 22 -18 578 748 ;
+C -1 ; WX 600 ; N logicalnot ; B 71 103 529 413 ;
+C -1 ; WX 600 ; N minus ; B 71 203 529 313 ;
+C -1 ; WX 600 ; N merge ; B 137 -15 464 487 ;
+C -1 ; WX 600 ; N degree ; B 86 243 474 616 ;
+C -1 ; WX 600 ; N dectab ; B 8 0 592 320 ;
+C -1 ; WX 600 ; N ll ; B -12 0 600 626 ;
+C -1 ; WX 600 ; N IJ ; B -8 -18 622 562 ;
+C -1 ; WX 600 ; N Eacute ; B 25 0 560 784 ;
+C -1 ; WX 600 ; N Ocircumflex ; B 22 -18 578 780 ;
+C -1 ; WX 600 ; N ucircumflex ; B -1 -15 569 657 ;
+C -1 ; WX 600 ; N left ; B 65 44 535 371 ;
+C -1 ; WX 600 ; N threesuperior ; B 138 222 433 616 ;
+C -1 ; WX 600 ; N up ; B 136 0 463 447 ;
+C -1 ; WX 600 ; N multiply ; B 81 39 520 478 ;
+C -1 ; WX 600 ; N Scaron ; B 47 -22 553 790 ;
+C -1 ; WX 600 ; N tab ; B 19 0 581 562 ;
+C -1 ; WX 600 ; N Ucircumflex ; B 4 -18 596 780 ;
+C -1 ; WX 600 ; N divide ; B 71 16 529 500 ;
+C -1 ; WX 600 ; N Acircumflex ; B -9 0 609 780 ;
+C -1 ; WX 600 ; N eacute ; B 40 -15 563 661 ;
+C -1 ; WX 600 ; N uacute ; B -1 -15 569 661 ;
+C -1 ; WX 600 ; N Aacute ; B -9 0 609 784 ;
+C -1 ; WX 600 ; N copyright ; B 0 -18 600 580 ;
+C -1 ; WX 600 ; N twosuperior ; B 143 230 436 616 ;
+C -1 ; WX 600 ; N Ecircumflex ; B 25 0 560 780 ;
+C -1 ; WX 600 ; N ntilde ; B 18 0 592 636 ;
+C -1 ; WX 600 ; N down ; B 137 -15 464 439 ;
+C -1 ; WX 600 ; N center ; B 40 14 560 580 ;
+C -1 ; WX 600 ; N onesuperior ; B 153 230 447 616 ;
+C -1 ; WX 600 ; N ij ; B 6 -146 574 658 ;
+C -1 ; WX 600 ; N edieresis ; B 40 -15 563 625 ;
+C -1 ; WX 600 ; N graybox ; B 76 0 525 599 ;
+C -1 ; WX 600 ; N odieresis ; B 30 -15 570 625 ;
+C -1 ; WX 600 ; N Ograve ; B 22 -18 578 784 ;
+C -1 ; WX 600 ; N threequarters ; B -47 -60 648 661 ;
+C -1 ; WX 600 ; N plusminus ; B 71 24 529 515 ;
+C -1 ; WX 600 ; N prescription ; B 24 -15 599 562 ;
+C -1 ; WX 600 ; N eth ; B 58 -27 543 626 ;
+C -1 ; WX 600 ; N largebullet ; B 248 229 352 333 ;
+C -1 ; WX 600 ; N egrave ; B 40 -15 563 661 ;
+C -1 ; WX 600 ; N ccedilla ; B 40 -206 545 459 ;
+C -1 ; WX 600 ; N notegraphic ; B 77 -15 523 572 ;
+C -1 ; WX 600 ; N Udieresis ; B 4 -18 596 748 ;
+C -1 ; WX 600 ; N Gcaron ; B 22 -18 594 790 ;
+C -1 ; WX 600 ; N arrowdown ; B 144 -15 456 608 ;
+C -1 ; WX 600 ; N format ; B 5 -146 115 601 ;
+C -1 ; WX 600 ; N Otilde ; B 22 -18 578 759 ;
+C -1 ; WX 600 ; N Idieresis ; B 77 0 523 748 ;
+C -1 ; WX 600 ; N adieresis ; B 35 -15 570 625 ;
+C -1 ; WX 600 ; N ecircumflex ; B 40 -15 563 657 ;
+C -1 ; WX 600 ; N Eth ; B 30 0 594 562 ;
+C -1 ; WX 600 ; N onequarter ; B -56 -60 656 661 ;
+C -1 ; WX 600 ; N LL ; B -45 0 645 562 ;
+C -1 ; WX 600 ; N agrave ; B 35 -15 570 661 ;
+C -1 ; WX 600 ; N Zcaron ; B 62 0 539 790 ;
+C -1 ; WX 600 ; N Scedilla ; B 47 -206 553 582 ;
+C -1 ; WX 600 ; N Idot ; B 77 0 523 748 ;
+C -1 ; WX 600 ; N Iacute ; B 77 0 523 784 ;
+C -1 ; WX 600 ; N indent ; B 65 45 535 372 ;
+C -1 ; WX 600 ; N Ugrave ; B 4 -18 596 784 ;
+C -1 ; WX 600 ; N scaron ; B 68 -17 535 667 ;
+C -1 ; WX 600 ; N overscore ; B 0 579 600 629 ;
+C -1 ; WX 600 ; N Aring ; B -9 0 609 801 ;
+C -1 ; WX 600 ; N Ccedilla ; B 22 -206 560 580 ;
+C -1 ; WX 600 ; N Igrave ; B 77 0 523 784 ;
+C -1 ; WX 600 ; N brokenbar ; B 255 -175 345 675 ;
+C -1 ; WX 600 ; N Oacute ; B 22 -18 578 784 ;
+C -1 ; WX 600 ; N otilde ; B 30 -15 570 636 ;
+C -1 ; WX 600 ; N Yacute ; B 12 0 589 784 ;
+C -1 ; WX 600 ; N lira ; B 72 -28 558 611 ;
+C -1 ; WX 600 ; N Icircumflex ; B 77 0 523 780 ;
+C -1 ; WX 600 ; N Atilde ; B -9 0 609 759 ;
+C -1 ; WX 600 ; N Uacute ; B 4 -18 596 784 ;
+C -1 ; WX 600 ; N Ydieresis ; B 12 0 589 748 ;
+C -1 ; WX 600 ; N ydieresis ; B -4 -142 601 625 ;
+C -1 ; WX 600 ; N idieresis ; B 77 0 523 625 ;
+C -1 ; WX 600 ; N Adieresis ; B -9 0 609 748 ;
+C -1 ; WX 600 ; N mu ; B -1 -142 569 439 ;
+C -1 ; WX 600 ; N trademark ; B -9 230 749 562 ;
+C -1 ; WX 600 ; N oacute ; B 30 -15 570 661 ;
+C -1 ; WX 600 ; N acircumflex ; B 35 -15 570 657 ;
+C -1 ; WX 600 ; N Agrave ; B -9 0 609 784 ;
+C -1 ; WX 600 ; N return ; B 19 0 581 562 ;
+C -1 ; WX 600 ; N atilde ; B 35 -15 570 636 ;
+C -1 ; WX 600 ; N square ; B 19 0 581 562 ;
+C -1 ; WX 600 ; N registered ; B 0 -18 600 580 ;
+C -1 ; WX 600 ; N stop ; B 19 0 581 562 ;
+C -1 ; WX 600 ; N udieresis ; B -1 -15 569 625 ;
+C -1 ; WX 600 ; N arrowup ; B 144 3 456 626 ;
+C -1 ; WX 600 ; N igrave ; B 77 0 523 661 ;
+C -1 ; WX 600 ; N Edieresis ; B 25 0 560 748 ;
+C -1 ; WX 600 ; N zcaron ; B 81 0 520 667 ;
+C -1 ; WX 600 ; N arrowboth ; B -24 143 624 455 ;
+C -1 ; WX 600 ; N gcaron ; B 30 -146 580 667 ;
+C -1 ; WX 600 ; N arrowleft ; B -24 143 634 455 ;
+C -1 ; WX 600 ; N aacute ; B 35 -15 570 661 ;
+C -1 ; WX 600 ; N ocircumflex ; B 30 -15 570 657 ;
+C -1 ; WX 600 ; N scedilla ; B 68 -206 535 459 ;
+C -1 ; WX 600 ; N ograve ; B 30 -15 570 661 ;
+C -1 ; WX 600 ; N onehalf ; B -47 -60 648 661 ;
+C -1 ; WX 600 ; N ugrave ; B -1 -15 569 661 ;
+C -1 ; WX 600 ; N Ntilde ; B 8 -12 610 759 ;
+C -1 ; WX 600 ; N iacute ; B 77 0 523 661 ;
+C -1 ; WX 600 ; N arrowright ; B -34 143 624 455 ;
+C -1 ; WX 600 ; N Thorn ; B 48 0 557 562 ;
+C -1 ; WX 600 ; N Egrave ; B 25 0 560 784 ;
+C -1 ; WX 600 ; N thorn ; B -14 -142 570 626 ;
+C -1 ; WX 600 ; N aring ; B 35 -15 570 678 ;
+C -1 ; WX 600 ; N yacute ; B -4 -142 601 661 ;
+C -1 ; WX 600 ; N icircumflex ; B 63 0 523 657 ;
+EndCharMetrics
+StartComposites 58
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 30 123 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex -30 123 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis -20 123 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave -50 123 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring -10 123 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde -30 123 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 30 123 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 0 123 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 0 123 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 0 123 ;
+CC Gcaron 2 ; PCC G 0 0 ; PCC caron 10 123 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 0 123 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 0 123 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 0 123 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 0 123 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 0 123 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 0 123 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 0 123 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 0 123 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 0 123 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 0 123 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 0 123 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 30 123 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 0 123 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 0 123 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave -30 123 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 30 123 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 0 123 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 0 123 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 0 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex -20 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis -10 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave -30 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 0 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 0 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 0 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 0 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 0 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 0 0 ;
+CC gcaron 2 ; PCC g 0 0 ; PCC caron -40 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute 0 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -40 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -40 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave 0 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 0 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 0 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 0 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 0 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 0 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 0 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 0 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 0 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex -20 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis -20 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave -30 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 30 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 10 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 0 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/Cr-Bd+ b/font/font/Cr-Bd+
new file mode 100644
index 0000000..d8f718c
--- /dev/null
+++ b/font/font/Cr-Bd+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 600 ; N Ccaron ; B 22 -18 560 787 ;
+C -1 ; WX 600 ; N ccaron ; B 40 -15 545 667 ;
+C -1 ; WX 600 ; N Dcaron ; B 30 0 594 787 ;
+C -1 ; WX 600 ; N dcaron ; B 20 -15 868 689 ;
+C -1 ; WX 600 ; N Ecaron ; B 25 0 560 787 ;
+C -1 ; WX 600 ; N ecaron ; B 40 -15 563 667 ;
+C -1 ; WX 600 ; N Lcaron ; B 39 0 800 618 ;
+C -1 ; WX 600 ; N Lacute ; B 39 0 578 766 ;
+C -1 ; WX 600 ; N lcaron ; B 77 0 800 689 ;
+C -1 ; WX 600 ; N lacute ; B 77 0 523 766 ;
+C -1 ; WX 600 ; N Ncaron ; B 8 -12 610 787 ;
+C -1 ; WX 600 ; N ncaron ; B 18 0 592 667 ;
+C -1 ; WX 600 ; N Rcaron ; B 24 0 599 787 ;
+C -1 ; WX 600 ; N Racute ; B 24 0 599 766 ;
+C -1 ; WX 600 ; N rcaron ; B 47 0 580 667 ;
+C -1 ; WX 600 ; N racute ; B 47 0 580 661 ;
+C -1 ; WX 600 ; N Tcaron ; B 21 0 579 787 ;
+C -1 ; WX 600 ; N tcaron ; B 47 -15 809 562 ;
+C -1 ; WX 600 ; N Uring ; B 4 -18 596 787 ;
+C -1 ; WX 600 ; N uring ; B -1 -15 569 678 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 54 120 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 25 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 0 120 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 445 127 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 0 120 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 0 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 377 56 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 0 105 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 377 127 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 26 105 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 0 120 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 0 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 0 120 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 50 105 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 0 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 26 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 0 120 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 386 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 0 109 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 0 0 ;
+EndBuildComposites
diff --git a/font/font/Cr-BdO b/font/font/Cr-BdO
new file mode 100644
index 0000000..36fdd79
--- /dev/null
+++ b/font/font/Cr-BdO
@@ -0,0 +1,345 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1989, 1990, 1991, Adobe Systems Incorporated. All rights reserved.
+Comment Creation Date: Tue Sep 17 14:13:24 1991
+Comment UniqueID 36389
+Comment VMusage 10055 54684
+Comment Modified by Jeff Kingston 4 July 1994 (removed erroneous ligatures)
+FontName Courier-BoldOblique
+FullName Courier Bold Oblique
+FamilyName Courier
+Weight Bold
+ItalicAngle -12
+IsFixedPitch true
+FontBBox -56 -250 868 801
+UnderlinePosition -100
+UnderlineThickness 50
+Version 002.004
+Notice Copyright (c) 1989, 1990, 1991, Adobe Systems Incorporated. All rights reserved.
+EncodingScheme AdobeStandardEncoding
+CapHeight 562
+XHeight 439
+Ascender 626
+Descender -142
+StartCharMetrics 260
+C 32 ; WX 600 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 600 ; N exclam ; B 216 -15 495 572 ;
+C 34 ; WX 600 ; N quotedbl ; B 212 277 584 562 ;
+C 35 ; WX 600 ; N numbersign ; B 88 -45 640 651 ;
+C 36 ; WX 600 ; N dollar ; B 87 -126 629 666 ;
+C 37 ; WX 600 ; N percent ; B 102 -15 624 616 ;
+C 38 ; WX 600 ; N ampersand ; B 62 -15 594 543 ;
+C 39 ; WX 600 ; N quoteright ; B 230 277 542 562 ;
+C 40 ; WX 600 ; N parenleft ; B 266 -102 592 616 ;
+C 41 ; WX 600 ; N parenright ; B 117 -102 444 616 ;
+C 42 ; WX 600 ; N asterisk ; B 179 219 597 601 ;
+C 43 ; WX 600 ; N plus ; B 114 39 596 478 ;
+C 44 ; WX 600 ; N comma ; B 99 -111 430 174 ;
+C 45 ; WX 600 ; N hyphen ; B 143 203 567 313 ;
+C 46 ; WX 600 ; N period ; B 207 -15 426 171 ;
+C 47 ; WX 600 ; N slash ; B 91 -77 626 626 ;
+C 48 ; WX 600 ; N zero ; B 136 -15 592 616 ;
+C 49 ; WX 600 ; N one ; B 93 0 561 616 ;
+C 50 ; WX 600 ; N two ; B 61 0 593 616 ;
+C 51 ; WX 600 ; N three ; B 72 -15 571 616 ;
+C 52 ; WX 600 ; N four ; B 82 0 558 616 ;
+C 53 ; WX 600 ; N five ; B 77 -15 621 601 ;
+C 54 ; WX 600 ; N six ; B 136 -15 652 616 ;
+C 55 ; WX 600 ; N seven ; B 147 0 622 601 ;
+C 56 ; WX 600 ; N eight ; B 115 -15 604 616 ;
+C 57 ; WX 600 ; N nine ; B 76 -15 592 616 ;
+C 58 ; WX 600 ; N colon ; B 206 -15 479 425 ;
+C 59 ; WX 600 ; N semicolon ; B 99 -111 480 425 ;
+C 60 ; WX 600 ; N less ; B 121 15 612 501 ;
+C 61 ; WX 600 ; N equal ; B 96 118 614 398 ;
+C 62 ; WX 600 ; N greater ; B 97 15 589 501 ;
+C 63 ; WX 600 ; N question ; B 183 -14 591 580 ;
+C 64 ; WX 600 ; N at ; B 66 -15 641 616 ;
+C 65 ; WX 600 ; N A ; B -9 0 631 562 ;
+C 66 ; WX 600 ; N B ; B 30 0 629 562 ;
+C 67 ; WX 600 ; N C ; B 75 -18 674 580 ;
+C 68 ; WX 600 ; N D ; B 30 0 664 562 ;
+C 69 ; WX 600 ; N E ; B 25 0 669 562 ;
+C 70 ; WX 600 ; N F ; B 39 0 683 562 ;
+C 71 ; WX 600 ; N G ; B 75 -18 674 580 ;
+C 72 ; WX 600 ; N H ; B 20 0 699 562 ;
+C 73 ; WX 600 ; N I ; B 77 0 642 562 ;
+C 74 ; WX 600 ; N J ; B 59 -18 720 562 ;
+C 75 ; WX 600 ; N K ; B 21 0 691 562 ;
+C 76 ; WX 600 ; N L ; B 39 0 635 562 ;
+C 77 ; WX 600 ; N M ; B -2 0 721 562 ;
+C 78 ; WX 600 ; N N ; B 8 -12 729 562 ;
+C 79 ; WX 600 ; N O ; B 74 -18 645 580 ;
+C 80 ; WX 600 ; N P ; B 48 0 642 562 ;
+C 81 ; WX 600 ; N Q ; B 84 -138 636 580 ;
+C 82 ; WX 600 ; N R ; B 24 0 617 562 ;
+C 83 ; WX 600 ; N S ; B 54 -22 672 582 ;
+C 84 ; WX 600 ; N T ; B 86 0 678 562 ;
+C 85 ; WX 600 ; N U ; B 101 -18 715 562 ;
+C 86 ; WX 600 ; N V ; B 84 0 732 562 ;
+C 87 ; WX 600 ; N W ; B 84 0 737 562 ;
+C 88 ; WX 600 ; N X ; B 12 0 689 562 ;
+C 89 ; WX 600 ; N Y ; B 109 0 708 562 ;
+C 90 ; WX 600 ; N Z ; B 62 0 636 562 ;
+C 91 ; WX 600 ; N bracketleft ; B 223 -102 606 616 ;
+C 92 ; WX 600 ; N backslash ; B 223 -77 496 626 ;
+C 93 ; WX 600 ; N bracketright ; B 103 -102 486 616 ;
+C 94 ; WX 600 ; N asciicircum ; B 171 250 555 616 ;
+C 95 ; WX 600 ; N underscore ; B -27 -125 584 -75 ;
+C 96 ; WX 600 ; N quoteleft ; B 297 277 487 562 ;
+C 97 ; WX 600 ; N a ; B 62 -15 592 454 ;
+C 98 ; WX 600 ; N b ; B 13 -15 636 626 ;
+C 99 ; WX 600 ; N c ; B 81 -15 631 459 ;
+C 100 ; WX 600 ; N d ; B 61 -15 644 626 ;
+C 101 ; WX 600 ; N e ; B 81 -15 604 454 ;
+C 102 ; WX 600 ; N f ; B 83 0 677 626 ;
+C 103 ; WX 600 ; N g ; B 41 -146 673 454 ;
+C 104 ; WX 600 ; N h ; B 18 0 614 626 ;
+C 105 ; WX 600 ; N i ; B 77 0 545 658 ;
+C 106 ; WX 600 ; N j ; B 37 -146 580 658 ;
+C 107 ; WX 600 ; N k ; B 33 0 642 626 ;
+C 108 ; WX 600 ; N l ; B 77 0 545 626 ;
+C 109 ; WX 600 ; N m ; B -22 0 648 454 ;
+C 110 ; WX 600 ; N n ; B 18 0 614 454 ;
+C 111 ; WX 600 ; N o ; B 71 -15 622 454 ;
+C 112 ; WX 600 ; N p ; B -31 -142 622 454 ;
+C 113 ; WX 600 ; N q ; B 61 -142 684 454 ;
+C 114 ; WX 600 ; N r ; B 47 0 654 454 ;
+C 115 ; WX 600 ; N s ; B 67 -17 607 459 ;
+C 116 ; WX 600 ; N t ; B 118 -15 566 562 ;
+C 117 ; WX 600 ; N u ; B 70 -15 591 439 ;
+C 118 ; WX 600 ; N v ; B 70 0 694 439 ;
+C 119 ; WX 600 ; N w ; B 53 0 711 439 ;
+C 120 ; WX 600 ; N x ; B 6 0 670 439 ;
+C 121 ; WX 600 ; N y ; B -20 -142 694 439 ;
+C 122 ; WX 600 ; N z ; B 81 0 613 439 ;
+C 123 ; WX 600 ; N braceleft ; B 204 -102 595 616 ;
+C 124 ; WX 600 ; N bar ; B 202 -250 504 750 ;
+C 125 ; WX 600 ; N braceright ; B 114 -102 506 616 ;
+C 126 ; WX 600 ; N asciitilde ; B 120 153 589 356 ;
+C 161 ; WX 600 ; N exclamdown ; B 197 -146 477 449 ;
+C 162 ; WX 600 ; N cent ; B 121 -49 604 614 ;
+C 163 ; WX 600 ; N sterling ; B 107 -28 650 611 ;
+C 164 ; WX 600 ; N fraction ; B 22 -60 707 661 ;
+C 165 ; WX 600 ; N yen ; B 98 0 709 562 ;
+C 166 ; WX 600 ; N florin ; B -56 -131 701 616 ;
+C 167 ; WX 600 ; N section ; B 74 -70 619 580 ;
+C 168 ; WX 600 ; N currency ; B 77 49 643 517 ;
+C 169 ; WX 600 ; N quotesingle ; B 304 277 492 562 ;
+C 170 ; WX 600 ; N quotedblleft ; B 190 277 594 562 ;
+C 171 ; WX 600 ; N guillemotleft ; B 63 70 638 446 ;
+C 172 ; WX 600 ; N guilsinglleft ; B 196 70 544 446 ;
+C 173 ; WX 600 ; N guilsinglright ; B 166 70 514 446 ;
+C 174 ; WX 600 ; N fi ; B 12 0 643 626 ;
+C 175 ; WX 600 ; N fl ; B 12 0 643 626 ;
+C 177 ; WX 600 ; N endash ; B 108 203 602 313 ;
+C 178 ; WX 600 ; N dagger ; B 176 -70 586 580 ;
+C 179 ; WX 600 ; N daggerdbl ; B 122 -70 586 580 ;
+C 180 ; WX 600 ; N periodcentered ; B 249 165 461 351 ;
+C 182 ; WX 600 ; N paragraph ; B 61 -70 699 580 ;
+C 183 ; WX 600 ; N bullet ; B 197 132 523 430 ;
+C 184 ; WX 600 ; N quotesinglbase ; B 145 -142 457 143 ;
+C 185 ; WX 600 ; N quotedblbase ; B 35 -142 559 143 ;
+C 186 ; WX 600 ; N quotedblright ; B 120 277 644 562 ;
+C 187 ; WX 600 ; N guillemotright ; B 72 70 647 446 ;
+C 188 ; WX 600 ; N ellipsis ; B 35 -15 586 116 ;
+C 189 ; WX 600 ; N perthousand ; B -44 -15 742 616 ;
+C 191 ; WX 600 ; N questiondown ; B 101 -146 509 449 ;
+C 193 ; WX 600 ; N grave ; B 272 508 503 661 ;
+C 194 ; WX 600 ; N acute ; B 313 508 608 661 ;
+C 195 ; WX 600 ; N circumflex ; B 212 483 606 657 ;
+C 196 ; WX 600 ; N tilde ; B 200 493 642 636 ;
+C 197 ; WX 600 ; N macron ; B 195 505 636 585 ;
+C 198 ; WX 600 ; N breve ; B 217 468 651 631 ;
+C 199 ; WX 600 ; N dotaccent ; B 346 485 490 625 ;
+C 200 ; WX 600 ; N dieresis ; B 244 485 592 625 ;
+C 202 ; WX 600 ; N ring ; B 319 481 528 678 ;
+C 203 ; WX 600 ; N cedilla ; B 169 -206 367 0 ;
+C 205 ; WX 600 ; N hungarumlaut ; B 172 488 728 661 ;
+C 206 ; WX 600 ; N ogonek ; B 144 -199 350 0 ;
+C 207 ; WX 600 ; N caron ; B 238 493 632 667 ;
+C 208 ; WX 600 ; N emdash ; B 33 203 677 313 ;
+C 225 ; WX 600 ; N AE ; B -29 0 707 562 ;
+C 227 ; WX 600 ; N ordfeminine ; B 189 196 526 580 ;
+C 232 ; WX 600 ; N Lslash ; B 39 0 635 562 ;
+C 233 ; WX 600 ; N Oslash ; B 48 -22 672 584 ;
+C 234 ; WX 600 ; N OE ; B 26 0 700 562 ;
+C 235 ; WX 600 ; N ordmasculine ; B 189 196 542 580 ;
+C 241 ; WX 600 ; N ae ; B 21 -15 651 454 ;
+C 245 ; WX 600 ; N dotlessi ; B 77 0 545 439 ;
+C 248 ; WX 600 ; N lslash ; B 77 0 578 626 ;
+C 249 ; WX 600 ; N oslash ; B 55 -24 637 463 ;
+C 250 ; WX 600 ; N oe ; B 19 -15 661 454 ;
+C 251 ; WX 600 ; N germandbls ; B 22 -15 628 626 ;
+C -1 ; WX 600 ; N Odieresis ; B 74 -18 645 748 ;
+C -1 ; WX 600 ; N logicalnot ; B 135 103 617 413 ;
+C -1 ; WX 600 ; N minus ; B 114 203 596 313 ;
+C -1 ; WX 600 ; N merge ; B 168 -15 533 487 ;
+C -1 ; WX 600 ; N degree ; B 173 243 569 616 ;
+C -1 ; WX 600 ; N dectab ; B 8 0 615 320 ;
+C -1 ; WX 600 ; N ll ; B 1 0 653 626 ;
+C -1 ; WX 600 ; N IJ ; B -8 -18 741 562 ;
+C -1 ; WX 600 ; N Eacute ; B 25 0 669 784 ;
+C -1 ; WX 600 ; N Ocircumflex ; B 74 -18 645 780 ;
+C -1 ; WX 600 ; N ucircumflex ; B 70 -15 591 657 ;
+C -1 ; WX 600 ; N left ; B 109 44 589 371 ;
+C -1 ; WX 600 ; N threesuperior ; B 193 222 525 616 ;
+C -1 ; WX 600 ; N up ; B 196 0 523 447 ;
+C -1 ; WX 600 ; N multiply ; B 105 39 606 478 ;
+C -1 ; WX 600 ; N Scaron ; B 54 -22 672 790 ;
+C -1 ; WX 600 ; N tab ; B 19 0 641 562 ;
+C -1 ; WX 600 ; N Ucircumflex ; B 101 -18 715 780 ;
+C -1 ; WX 600 ; N divide ; B 114 16 596 500 ;
+C -1 ; WX 600 ; N Acircumflex ; B -9 0 631 780 ;
+C -1 ; WX 600 ; N eacute ; B 81 -15 608 661 ;
+C -1 ; WX 600 ; N uacute ; B 70 -15 608 661 ;
+C -1 ; WX 600 ; N Aacute ; B -9 0 665 784 ;
+C -1 ; WX 600 ; N copyright ; B 53 -18 667 580 ;
+C -1 ; WX 600 ; N twosuperior ; B 192 230 541 616 ;
+C -1 ; WX 600 ; N Ecircumflex ; B 25 0 669 780 ;
+C -1 ; WX 600 ; N ntilde ; B 18 0 642 636 ;
+C -1 ; WX 600 ; N down ; B 168 -15 496 439 ;
+C -1 ; WX 600 ; N center ; B 103 14 623 580 ;
+C -1 ; WX 600 ; N onesuperior ; B 213 230 514 616 ;
+C -1 ; WX 600 ; N ij ; B 6 -146 714 658 ;
+C -1 ; WX 600 ; N edieresis ; B 81 -15 604 625 ;
+C -1 ; WX 600 ; N graybox ; B 76 0 652 599 ;
+C -1 ; WX 600 ; N odieresis ; B 71 -15 622 625 ;
+C -1 ; WX 600 ; N Ograve ; B 74 -18 645 784 ;
+C -1 ; WX 600 ; N threequarters ; B 8 -60 698 661 ;
+C -1 ; WX 600 ; N plusminus ; B 76 24 614 515 ;
+C -1 ; WX 600 ; N prescription ; B 24 -15 632 562 ;
+C -1 ; WX 600 ; N eth ; B 93 -27 661 626 ;
+C -1 ; WX 600 ; N largebullet ; B 307 229 413 333 ;
+C -1 ; WX 600 ; N egrave ; B 81 -15 604 661 ;
+C -1 ; WX 600 ; N ccedilla ; B 81 -206 631 459 ;
+C -1 ; WX 600 ; N notegraphic ; B 91 -15 619 572 ;
+C -1 ; WX 600 ; N Udieresis ; B 101 -18 715 748 ;
+C -1 ; WX 600 ; N Gcaron ; B 75 -18 674 790 ;
+C -1 ; WX 600 ; N arrowdown ; B 174 -15 486 608 ;
+C -1 ; WX 600 ; N format ; B -26 -146 243 601 ;
+C -1 ; WX 600 ; N Otilde ; B 74 -18 668 759 ;
+C -1 ; WX 600 ; N Idieresis ; B 77 0 642 748 ;
+C -1 ; WX 600 ; N adieresis ; B 62 -15 592 625 ;
+C -1 ; WX 600 ; N ecircumflex ; B 81 -15 606 657 ;
+C -1 ; WX 600 ; N Eth ; B 30 0 664 562 ;
+C -1 ; WX 600 ; N onequarter ; B 14 -60 706 661 ;
+C -1 ; WX 600 ; N LL ; B -45 0 694 562 ;
+C -1 ; WX 600 ; N agrave ; B 62 -15 592 661 ;
+C -1 ; WX 600 ; N Zcaron ; B 62 0 659 790 ;
+C -1 ; WX 600 ; N Scedilla ; B 54 -206 672 582 ;
+C -1 ; WX 600 ; N Idot ; B 77 0 642 748 ;
+C -1 ; WX 600 ; N Iacute ; B 77 0 642 784 ;
+C -1 ; WX 600 ; N indent ; B 99 45 579 372 ;
+C -1 ; WX 600 ; N Ugrave ; B 101 -18 715 784 ;
+C -1 ; WX 600 ; N scaron ; B 67 -17 632 667 ;
+C -1 ; WX 600 ; N overscore ; B 123 579 734 629 ;
+C -1 ; WX 600 ; N Aring ; B -9 0 631 801 ;
+C -1 ; WX 600 ; N Ccedilla ; B 74 -206 674 580 ;
+C -1 ; WX 600 ; N Igrave ; B 77 0 642 784 ;
+C -1 ; WX 600 ; N brokenbar ; B 218 -175 488 675 ;
+C -1 ; WX 600 ; N Oacute ; B 74 -18 645 784 ;
+C -1 ; WX 600 ; N otilde ; B 71 -15 642 636 ;
+C -1 ; WX 600 ; N Yacute ; B 109 0 708 784 ;
+C -1 ; WX 600 ; N lira ; B 107 -28 650 611 ;
+C -1 ; WX 600 ; N Icircumflex ; B 77 0 642 780 ;
+C -1 ; WX 600 ; N Atilde ; B -9 0 638 759 ;
+C -1 ; WX 600 ; N Uacute ; B 101 -18 715 784 ;
+C -1 ; WX 600 ; N Ydieresis ; B 109 0 708 748 ;
+C -1 ; WX 600 ; N ydieresis ; B -20 -142 694 625 ;
+C -1 ; WX 600 ; N idieresis ; B 77 0 552 625 ;
+C -1 ; WX 600 ; N Adieresis ; B -9 0 631 748 ;
+C -1 ; WX 600 ; N mu ; B 50 -142 591 439 ;
+C -1 ; WX 600 ; N trademark ; B 86 230 868 562 ;
+C -1 ; WX 600 ; N oacute ; B 71 -15 622 661 ;
+C -1 ; WX 600 ; N acircumflex ; B 62 -15 592 657 ;
+C -1 ; WX 600 ; N Agrave ; B -9 0 631 784 ;
+C -1 ; WX 600 ; N return ; B 79 0 700 562 ;
+C -1 ; WX 600 ; N atilde ; B 62 -15 642 636 ;
+C -1 ; WX 600 ; N square ; B 19 0 700 562 ;
+C -1 ; WX 600 ; N registered ; B 53 -18 667 580 ;
+C -1 ; WX 600 ; N stop ; B 19 0 700 562 ;
+C -1 ; WX 600 ; N udieresis ; B 70 -15 591 625 ;
+C -1 ; WX 600 ; N arrowup ; B 244 3 556 626 ;
+C -1 ; WX 600 ; N igrave ; B 77 0 545 661 ;
+C -1 ; WX 600 ; N Edieresis ; B 25 0 669 748 ;
+C -1 ; WX 600 ; N zcaron ; B 81 0 632 667 ;
+C -1 ; WX 600 ; N arrowboth ; B 40 143 688 455 ;
+C -1 ; WX 600 ; N gcaron ; B 41 -146 673 667 ;
+C -1 ; WX 600 ; N arrowleft ; B 40 143 708 455 ;
+C -1 ; WX 600 ; N aacute ; B 62 -15 608 661 ;
+C -1 ; WX 600 ; N ocircumflex ; B 71 -15 622 657 ;
+C -1 ; WX 600 ; N scedilla ; B 67 -206 607 459 ;
+C -1 ; WX 600 ; N ograve ; B 71 -15 622 661 ;
+C -1 ; WX 600 ; N onehalf ; B 23 -60 715 661 ;
+C -1 ; WX 600 ; N ugrave ; B 70 -15 591 661 ;
+C -1 ; WX 600 ; N Ntilde ; B 8 -12 729 759 ;
+C -1 ; WX 600 ; N iacute ; B 77 0 608 661 ;
+C -1 ; WX 600 ; N arrowright ; B 20 143 688 455 ;
+C -1 ; WX 600 ; N Thorn ; B 48 0 619 562 ;
+C -1 ; WX 600 ; N Egrave ; B 25 0 669 784 ;
+C -1 ; WX 600 ; N thorn ; B -31 -142 622 626 ;
+C -1 ; WX 600 ; N aring ; B 62 -15 592 678 ;
+C -1 ; WX 600 ; N yacute ; B -20 -142 694 661 ;
+C -1 ; WX 600 ; N icircumflex ; B 77 0 566 657 ;
+EndCharMetrics
+StartComposites 58
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 56 123 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex -4 123 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 6 123 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave -24 123 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 16 123 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde -4 123 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 56 123 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 26 123 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 26 123 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 26 123 ;
+CC Gcaron 2 ; PCC G 0 0 ; PCC caron 36 123 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 26 123 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 26 123 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 26 123 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 26 123 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 26 123 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 26 123 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 26 123 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 26 123 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 26 123 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 26 123 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 26 123 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 56 123 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 26 123 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 26 123 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave -4 123 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 56 123 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 26 123 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 26 123 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 0 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex -20 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis -10 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave -30 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 0 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 0 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 0 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 0 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 0 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 0 0 ;
+CC gcaron 2 ; PCC g 0 0 ; PCC caron -40 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute 0 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -40 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -40 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave 0 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 0 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 0 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 0 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 0 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 0 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 0 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 0 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 0 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex -20 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis -20 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave -30 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 30 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 10 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 0 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/Cr-BdO+ b/font/font/Cr-BdO+
new file mode 100644
index 0000000..c08e041
--- /dev/null
+++ b/font/font/Cr-BdO+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 600 ; N Ccaron ; B 75 -18 717 787 ;
+C -1 ; WX 600 ; N ccaron ; B 81 -15 660 667 ;
+C -1 ; WX 600 ; N Dcaron ; B 30 0 664 787 ;
+C -1 ; WX 600 ; N dcaron ; B 61 -15 987 689 ;
+C -1 ; WX 600 ; N Ecaron ; B 25 0 669 787 ;
+C -1 ; WX 600 ; N ecaron ; B 81 -15 632 667 ;
+C -1 ; WX 600 ; N Lcaron ; B 39 0 985 618 ;
+C -1 ; WX 600 ; N Lacute ; B 39 0 635 766 ;
+C -1 ; WX 600 ; N lcaron ; B 77 0 888 689 ;
+C -1 ; WX 600 ; N lacute ; B 77 0 660 766 ;
+C -1 ; WX 600 ; N Ncaron ; B 8 -12 729 787 ;
+C -1 ; WX 600 ; N ncaron ; B 18 0 632 667 ;
+C -1 ; WX 600 ; N Rcaron ; B 24 0 657 787 ;
+C -1 ; WX 600 ; N Racute ; B 24 0 686 766 ;
+C -1 ; WX 600 ; N rcaron ; B 47 0 654 667 ;
+C -1 ; WX 600 ; N racute ; B 47 0 654 661 ;
+C -1 ; WX 600 ; N Tcaron ; B 86 0 678 787 ;
+C -1 ; WX 600 ; N tcaron ; B 118 -15 909 562 ;
+C -1 ; WX 600 ; N Uring ; B 101 -18 715 787 ;
+C -1 ; WX 600 ; N uring ; B 70 -15 591 678 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 85 120 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 28 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 25 120 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 445 127 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 25 120 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 0 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 443 56 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 22 105 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 346 127 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 52 105 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 25 120 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 0 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 25 120 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 78 105 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 0 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 30 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 25 120 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 367 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 23 109 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 0 0 ;
+EndBuildComposites
diff --git a/font/font/Cr-O b/font/font/Cr-O
new file mode 100644
index 0000000..5f80292
--- /dev/null
+++ b/font/font/Cr-O
@@ -0,0 +1,345 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1989, 1990, 1991 Adobe Systems Incorporated. All rights reserved.
+Comment Creation Date: Tue Sep 17 09:42:19 1991
+Comment UniqueID 36350
+Comment VMusage 9174 52297
+Comment Modified by Jeff Kingston 4 July 1994 (removed erroneous ligatures)
+FontName Courier-Oblique
+FullName Courier Oblique
+FamilyName Courier
+Weight Medium
+ItalicAngle -12
+IsFixedPitch true
+FontBBox -28 -250 742 805
+UnderlinePosition -100
+UnderlineThickness 50
+Version 002.004
+Notice Copyright (c) 1989, 1990, 1991 Adobe Systems Incorporated. All rights reserved.
+EncodingScheme AdobeStandardEncoding
+CapHeight 562
+XHeight 426
+Ascender 629
+Descender -157
+StartCharMetrics 260
+C 32 ; WX 600 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 600 ; N exclam ; B 243 -15 464 572 ;
+C 34 ; WX 600 ; N quotedbl ; B 273 328 532 562 ;
+C 35 ; WX 600 ; N numbersign ; B 133 -32 596 639 ;
+C 36 ; WX 600 ; N dollar ; B 108 -126 596 662 ;
+C 37 ; WX 600 ; N percent ; B 134 -15 599 622 ;
+C 38 ; WX 600 ; N ampersand ; B 87 -15 580 543 ;
+C 39 ; WX 600 ; N quoteright ; B 283 328 495 562 ;
+C 40 ; WX 600 ; N parenleft ; B 313 -108 572 622 ;
+C 41 ; WX 600 ; N parenright ; B 137 -108 396 622 ;
+C 42 ; WX 600 ; N asterisk ; B 212 257 580 607 ;
+C 43 ; WX 600 ; N plus ; B 129 44 580 470 ;
+C 44 ; WX 600 ; N comma ; B 157 -112 370 122 ;
+C 45 ; WX 600 ; N hyphen ; B 152 231 558 285 ;
+C 46 ; WX 600 ; N period ; B 238 -15 382 109 ;
+C 47 ; WX 600 ; N slash ; B 112 -80 604 629 ;
+C 48 ; WX 600 ; N zero ; B 154 -15 575 622 ;
+C 49 ; WX 600 ; N one ; B 98 0 515 622 ;
+C 50 ; WX 600 ; N two ; B 70 0 568 622 ;
+C 51 ; WX 600 ; N three ; B 82 -15 538 622 ;
+C 52 ; WX 600 ; N four ; B 108 0 541 622 ;
+C 53 ; WX 600 ; N five ; B 99 -15 589 607 ;
+C 54 ; WX 600 ; N six ; B 155 -15 629 622 ;
+C 55 ; WX 600 ; N seven ; B 182 0 612 607 ;
+C 56 ; WX 600 ; N eight ; B 132 -15 588 622 ;
+C 57 ; WX 600 ; N nine ; B 93 -15 574 622 ;
+C 58 ; WX 600 ; N colon ; B 238 -15 441 385 ;
+C 59 ; WX 600 ; N semicolon ; B 157 -112 441 385 ;
+C 60 ; WX 600 ; N less ; B 96 42 610 472 ;
+C 61 ; WX 600 ; N equal ; B 109 138 600 376 ;
+C 62 ; WX 600 ; N greater ; B 85 42 599 472 ;
+C 63 ; WX 600 ; N question ; B 222 -15 583 572 ;
+C 64 ; WX 600 ; N at ; B 127 -15 582 622 ;
+C 65 ; WX 600 ; N A ; B 3 0 607 562 ;
+C 66 ; WX 600 ; N B ; B 43 0 616 562 ;
+C 67 ; WX 600 ; N C ; B 93 -18 655 580 ;
+C 68 ; WX 600 ; N D ; B 43 0 645 562 ;
+C 69 ; WX 600 ; N E ; B 53 0 660 562 ;
+C 70 ; WX 600 ; N F ; B 53 0 660 562 ;
+C 71 ; WX 600 ; N G ; B 83 -18 645 580 ;
+C 72 ; WX 600 ; N H ; B 32 0 687 562 ;
+C 73 ; WX 600 ; N I ; B 96 0 623 562 ;
+C 74 ; WX 600 ; N J ; B 52 -18 685 562 ;
+C 75 ; WX 600 ; N K ; B 38 0 671 562 ;
+C 76 ; WX 600 ; N L ; B 47 0 607 562 ;
+C 77 ; WX 600 ; N M ; B 4 0 715 562 ;
+C 78 ; WX 600 ; N N ; B 7 -13 712 562 ;
+C 79 ; WX 600 ; N O ; B 94 -18 625 580 ;
+C 80 ; WX 600 ; N P ; B 79 0 644 562 ;
+C 81 ; WX 600 ; N Q ; B 95 -138 625 580 ;
+C 82 ; WX 600 ; N R ; B 38 0 598 562 ;
+C 83 ; WX 600 ; N S ; B 76 -20 650 580 ;
+C 84 ; WX 600 ; N T ; B 108 0 665 562 ;
+C 85 ; WX 600 ; N U ; B 125 -18 702 562 ;
+C 86 ; WX 600 ; N V ; B 105 -13 723 562 ;
+C 87 ; WX 600 ; N W ; B 106 -13 722 562 ;
+C 88 ; WX 600 ; N X ; B 23 0 675 562 ;
+C 89 ; WX 600 ; N Y ; B 133 0 695 562 ;
+C 90 ; WX 600 ; N Z ; B 86 0 610 562 ;
+C 91 ; WX 600 ; N bracketleft ; B 246 -108 574 622 ;
+C 92 ; WX 600 ; N backslash ; B 249 -80 468 629 ;
+C 93 ; WX 600 ; N bracketright ; B 135 -108 463 622 ;
+C 94 ; WX 600 ; N asciicircum ; B 175 354 587 622 ;
+C 95 ; WX 600 ; N underscore ; B -27 -125 584 -75 ;
+C 96 ; WX 600 ; N quoteleft ; B 343 328 457 562 ;
+C 97 ; WX 600 ; N a ; B 76 -15 569 441 ;
+C 98 ; WX 600 ; N b ; B 29 -15 625 629 ;
+C 99 ; WX 600 ; N c ; B 106 -15 608 441 ;
+C 100 ; WX 600 ; N d ; B 85 -15 640 629 ;
+C 101 ; WX 600 ; N e ; B 106 -15 598 441 ;
+C 102 ; WX 600 ; N f ; B 114 0 662 629 ;
+C 103 ; WX 600 ; N g ; B 61 -157 657 441 ;
+C 104 ; WX 600 ; N h ; B 33 0 592 629 ;
+C 105 ; WX 600 ; N i ; B 95 0 515 657 ;
+C 106 ; WX 600 ; N j ; B 52 -157 550 657 ;
+C 107 ; WX 600 ; N k ; B 58 0 633 629 ;
+C 108 ; WX 600 ; N l ; B 95 0 515 629 ;
+C 109 ; WX 600 ; N m ; B -5 0 615 441 ;
+C 110 ; WX 600 ; N n ; B 26 0 585 441 ;
+C 111 ; WX 600 ; N o ; B 102 -15 588 441 ;
+C 112 ; WX 600 ; N p ; B -24 -157 605 441 ;
+C 113 ; WX 600 ; N q ; B 85 -157 682 441 ;
+C 114 ; WX 600 ; N r ; B 60 0 636 441 ;
+C 115 ; WX 600 ; N s ; B 78 -15 584 441 ;
+C 116 ; WX 600 ; N t ; B 167 -15 561 561 ;
+C 117 ; WX 600 ; N u ; B 101 -15 572 426 ;
+C 118 ; WX 600 ; N v ; B 90 -10 681 426 ;
+C 119 ; WX 600 ; N w ; B 76 -10 695 426 ;
+C 120 ; WX 600 ; N x ; B 20 0 655 426 ;
+C 121 ; WX 600 ; N y ; B -4 -157 683 426 ;
+C 122 ; WX 600 ; N z ; B 99 0 593 426 ;
+C 123 ; WX 600 ; N braceleft ; B 233 -108 569 622 ;
+C 124 ; WX 600 ; N bar ; B 222 -250 485 750 ;
+C 125 ; WX 600 ; N braceright ; B 140 -108 477 622 ;
+C 126 ; WX 600 ; N asciitilde ; B 116 197 600 320 ;
+C 161 ; WX 600 ; N exclamdown ; B 225 -157 445 430 ;
+C 162 ; WX 600 ; N cent ; B 151 -49 588 614 ;
+C 163 ; WX 600 ; N sterling ; B 124 -21 621 611 ;
+C 164 ; WX 600 ; N fraction ; B 84 -57 646 665 ;
+C 165 ; WX 600 ; N yen ; B 120 0 693 562 ;
+C 166 ; WX 600 ; N florin ; B -26 -143 671 622 ;
+C 167 ; WX 600 ; N section ; B 104 -78 590 580 ;
+C 168 ; WX 600 ; N currency ; B 94 58 628 506 ;
+C 169 ; WX 600 ; N quotesingle ; B 345 328 460 562 ;
+C 170 ; WX 600 ; N quotedblleft ; B 262 328 541 562 ;
+C 171 ; WX 600 ; N guillemotleft ; B 92 70 652 446 ;
+C 172 ; WX 600 ; N guilsinglleft ; B 204 70 540 446 ;
+C 173 ; WX 600 ; N guilsinglright ; B 170 70 506 446 ;
+C 174 ; WX 600 ; N fi ; B 3 0 619 629 ;
+C 175 ; WX 600 ; N fl ; B 3 0 619 629 ;
+C 177 ; WX 600 ; N endash ; B 124 231 586 285 ;
+C 178 ; WX 600 ; N dagger ; B 217 -78 546 580 ;
+C 179 ; WX 600 ; N daggerdbl ; B 163 -78 546 580 ;
+C 180 ; WX 600 ; N periodcentered ; B 275 189 434 327 ;
+C 182 ; WX 600 ; N paragraph ; B 100 -78 630 562 ;
+C 183 ; WX 600 ; N bullet ; B 224 130 485 383 ;
+C 184 ; WX 600 ; N quotesinglbase ; B 185 -134 397 100 ;
+C 185 ; WX 600 ; N quotedblbase ; B 115 -134 478 100 ;
+C 186 ; WX 600 ; N quotedblright ; B 213 328 576 562 ;
+C 187 ; WX 600 ; N guillemotright ; B 58 70 618 446 ;
+C 188 ; WX 600 ; N ellipsis ; B 46 -15 575 111 ;
+C 189 ; WX 600 ; N perthousand ; B 59 -15 627 622 ;
+C 191 ; WX 600 ; N questiondown ; B 105 -157 466 430 ;
+C 193 ; WX 600 ; N grave ; B 294 497 484 672 ;
+C 194 ; WX 600 ; N acute ; B 348 497 612 672 ;
+C 195 ; WX 600 ; N circumflex ; B 229 477 581 654 ;
+C 196 ; WX 600 ; N tilde ; B 212 489 629 606 ;
+C 197 ; WX 600 ; N macron ; B 232 525 600 565 ;
+C 198 ; WX 600 ; N breve ; B 279 501 576 609 ;
+C 199 ; WX 600 ; N dotaccent ; B 360 477 466 580 ;
+C 200 ; WX 600 ; N dieresis ; B 262 492 570 595 ;
+C 202 ; WX 600 ; N ring ; B 332 463 500 627 ;
+C 203 ; WX 600 ; N cedilla ; B 197 -151 344 10 ;
+C 205 ; WX 600 ; N hungarumlaut ; B 239 497 683 672 ;
+C 206 ; WX 600 ; N ogonek ; B 207 -151 348 0 ;
+C 207 ; WX 600 ; N caron ; B 262 492 614 669 ;
+C 208 ; WX 600 ; N emdash ; B 49 231 661 285 ;
+C 225 ; WX 600 ; N AE ; B 3 0 655 562 ;
+C 227 ; WX 600 ; N ordfeminine ; B 209 249 512 580 ;
+C 232 ; WX 600 ; N Lslash ; B 47 0 607 562 ;
+C 233 ; WX 600 ; N Oslash ; B 94 -80 625 629 ;
+C 234 ; WX 600 ; N OE ; B 59 0 672 562 ;
+C 235 ; WX 600 ; N ordmasculine ; B 210 249 535 580 ;
+C 241 ; WX 600 ; N ae ; B 41 -15 626 441 ;
+C 245 ; WX 600 ; N dotlessi ; B 95 0 515 426 ;
+C 248 ; WX 600 ; N lslash ; B 95 0 583 629 ;
+C 249 ; WX 600 ; N oslash ; B 102 -80 588 506 ;
+C 250 ; WX 600 ; N oe ; B 54 -15 615 441 ;
+C 251 ; WX 600 ; N germandbls ; B 48 -15 617 629 ;
+C -1 ; WX 600 ; N Odieresis ; B 94 -18 625 731 ;
+C -1 ; WX 600 ; N logicalnot ; B 155 108 591 369 ;
+C -1 ; WX 600 ; N minus ; B 129 232 580 283 ;
+C -1 ; WX 600 ; N merge ; B 187 -15 503 436 ;
+C -1 ; WX 600 ; N degree ; B 214 269 576 622 ;
+C -1 ; WX 600 ; N dectab ; B 18 0 593 227 ;
+C -1 ; WX 600 ; N ll ; B 33 0 616 629 ;
+C -1 ; WX 600 ; N IJ ; B 32 -18 702 562 ;
+C -1 ; WX 600 ; N Eacute ; B 53 0 668 793 ;
+C -1 ; WX 600 ; N Ocircumflex ; B 94 -18 625 775 ;
+C -1 ; WX 600 ; N ucircumflex ; B 101 -15 572 654 ;
+C -1 ; WX 600 ; N left ; B 114 68 580 348 ;
+C -1 ; WX 600 ; N threesuperior ; B 213 240 501 622 ;
+C -1 ; WX 600 ; N up ; B 223 0 503 437 ;
+C -1 ; WX 600 ; N multiply ; B 103 43 607 470 ;
+C -1 ; WX 600 ; N Scaron ; B 76 -20 673 805 ;
+C -1 ; WX 600 ; N tab ; B 19 0 641 562 ;
+C -1 ; WX 600 ; N Ucircumflex ; B 125 -18 702 775 ;
+C -1 ; WX 600 ; N divide ; B 136 48 573 467 ;
+C -1 ; WX 600 ; N Acircumflex ; B 3 0 607 775 ;
+C -1 ; WX 600 ; N eacute ; B 106 -15 612 672 ;
+C -1 ; WX 600 ; N uacute ; B 101 -15 602 672 ;
+C -1 ; WX 600 ; N Aacute ; B 3 0 658 793 ;
+C -1 ; WX 600 ; N copyright ; B 53 -18 667 580 ;
+C -1 ; WX 600 ; N twosuperior ; B 230 249 535 622 ;
+C -1 ; WX 600 ; N Ecircumflex ; B 53 0 660 775 ;
+C -1 ; WX 600 ; N ntilde ; B 26 0 629 606 ;
+C -1 ; WX 600 ; N down ; B 187 -15 467 426 ;
+C -1 ; WX 600 ; N center ; B 103 14 623 580 ;
+C -1 ; WX 600 ; N onesuperior ; B 231 249 491 622 ;
+C -1 ; WX 600 ; N ij ; B 37 -157 630 657 ;
+C -1 ; WX 600 ; N edieresis ; B 106 -15 598 595 ;
+C -1 ; WX 600 ; N graybox ; B 76 0 652 599 ;
+C -1 ; WX 600 ; N odieresis ; B 102 -15 588 595 ;
+C -1 ; WX 600 ; N Ograve ; B 94 -18 625 793 ;
+C -1 ; WX 600 ; N threequarters ; B 73 -56 659 666 ;
+C -1 ; WX 600 ; N plusminus ; B 96 44 594 558 ;
+C -1 ; WX 600 ; N prescription ; B 27 -15 617 562 ;
+C -1 ; WX 600 ; N eth ; B 102 -15 639 629 ;
+C -1 ; WX 600 ; N largebullet ; B 315 220 395 297 ;
+C -1 ; WX 600 ; N egrave ; B 106 -15 598 672 ;
+C -1 ; WX 600 ; N ccedilla ; B 106 -151 614 441 ;
+C -1 ; WX 600 ; N notegraphic ; B 143 -15 564 572 ;
+C -1 ; WX 600 ; N Udieresis ; B 125 -18 702 731 ;
+C -1 ; WX 600 ; N Gcaron ; B 83 -18 645 805 ;
+C -1 ; WX 600 ; N arrowdown ; B 152 -15 520 608 ;
+C -1 ; WX 600 ; N format ; B -28 -157 185 607 ;
+C -1 ; WX 600 ; N Otilde ; B 94 -18 656 732 ;
+C -1 ; WX 600 ; N Idieresis ; B 96 0 623 731 ;
+C -1 ; WX 600 ; N adieresis ; B 76 -15 570 595 ;
+C -1 ; WX 600 ; N ecircumflex ; B 106 -15 598 654 ;
+C -1 ; WX 600 ; N Eth ; B 43 0 645 562 ;
+C -1 ; WX 600 ; N onequarter ; B 65 -57 674 665 ;
+C -1 ; WX 600 ; N LL ; B 8 0 647 562 ;
+C -1 ; WX 600 ; N agrave ; B 76 -15 569 672 ;
+C -1 ; WX 600 ; N Zcaron ; B 86 0 643 805 ;
+C -1 ; WX 600 ; N Scedilla ; B 76 -151 650 580 ;
+C -1 ; WX 600 ; N Idot ; B 96 0 623 716 ;
+C -1 ; WX 600 ; N Iacute ; B 96 0 638 793 ;
+C -1 ; WX 600 ; N indent ; B 108 68 574 348 ;
+C -1 ; WX 600 ; N Ugrave ; B 125 -18 702 793 ;
+C -1 ; WX 600 ; N scaron ; B 78 -15 614 669 ;
+C -1 ; WX 600 ; N overscore ; B 123 579 734 629 ;
+C -1 ; WX 600 ; N Aring ; B 3 0 607 753 ;
+C -1 ; WX 600 ; N Ccedilla ; B 93 -151 658 580 ;
+C -1 ; WX 600 ; N Igrave ; B 96 0 623 793 ;
+C -1 ; WX 600 ; N brokenbar ; B 238 -175 469 675 ;
+C -1 ; WX 600 ; N Oacute ; B 94 -18 638 793 ;
+C -1 ; WX 600 ; N otilde ; B 102 -15 629 606 ;
+C -1 ; WX 600 ; N Yacute ; B 133 0 695 793 ;
+C -1 ; WX 600 ; N lira ; B 118 -21 621 611 ;
+C -1 ; WX 600 ; N Icircumflex ; B 96 0 623 775 ;
+C -1 ; WX 600 ; N Atilde ; B 3 0 656 732 ;
+C -1 ; WX 600 ; N Uacute ; B 125 -18 702 793 ;
+C -1 ; WX 600 ; N Ydieresis ; B 133 0 695 731 ;
+C -1 ; WX 600 ; N ydieresis ; B -4 -157 683 595 ;
+C -1 ; WX 600 ; N idieresis ; B 95 0 540 595 ;
+C -1 ; WX 600 ; N Adieresis ; B 3 0 607 731 ;
+C -1 ; WX 600 ; N mu ; B 72 -157 572 426 ;
+C -1 ; WX 600 ; N trademark ; B 75 263 742 562 ;
+C -1 ; WX 600 ; N oacute ; B 102 -15 612 672 ;
+C -1 ; WX 600 ; N acircumflex ; B 76 -15 581 654 ;
+C -1 ; WX 600 ; N Agrave ; B 3 0 607 793 ;
+C -1 ; WX 600 ; N return ; B 79 0 700 562 ;
+C -1 ; WX 600 ; N atilde ; B 76 -15 629 606 ;
+C -1 ; WX 600 ; N square ; B 19 0 700 562 ;
+C -1 ; WX 600 ; N registered ; B 53 -18 667 580 ;
+C -1 ; WX 600 ; N stop ; B 19 0 700 562 ;
+C -1 ; WX 600 ; N udieresis ; B 101 -15 572 595 ;
+C -1 ; WX 600 ; N arrowup ; B 209 0 577 623 ;
+C -1 ; WX 600 ; N igrave ; B 95 0 515 672 ;
+C -1 ; WX 600 ; N Edieresis ; B 53 0 660 731 ;
+C -1 ; WX 600 ; N zcaron ; B 99 0 624 669 ;
+C -1 ; WX 600 ; N arrowboth ; B 36 115 692 483 ;
+C -1 ; WX 600 ; N gcaron ; B 61 -157 657 669 ;
+C -1 ; WX 600 ; N arrowleft ; B 40 115 693 483 ;
+C -1 ; WX 600 ; N aacute ; B 76 -15 612 672 ;
+C -1 ; WX 600 ; N ocircumflex ; B 102 -15 588 654 ;
+C -1 ; WX 600 ; N scedilla ; B 78 -151 584 441 ;
+C -1 ; WX 600 ; N ograve ; B 102 -15 588 672 ;
+C -1 ; WX 600 ; N onehalf ; B 65 -57 669 665 ;
+C -1 ; WX 600 ; N ugrave ; B 101 -15 572 672 ;
+C -1 ; WX 600 ; N Ntilde ; B 7 -13 712 732 ;
+C -1 ; WX 600 ; N iacute ; B 95 0 612 672 ;
+C -1 ; WX 600 ; N arrowright ; B 34 115 688 483 ;
+C -1 ; WX 600 ; N Thorn ; B 79 0 606 562 ;
+C -1 ; WX 600 ; N Egrave ; B 53 0 660 793 ;
+C -1 ; WX 600 ; N thorn ; B -24 -157 605 629 ;
+C -1 ; WX 600 ; N aring ; B 76 -15 569 627 ;
+C -1 ; WX 600 ; N yacute ; B -4 -157 683 672 ;
+C -1 ; WX 600 ; N icircumflex ; B 95 0 551 654 ;
+EndCharMetrics
+StartComposites 58
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 46 121 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex -4 121 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis -1 136 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave -4 121 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 12 126 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 27 126 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 56 121 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 26 121 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 29 136 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 26 121 ;
+CC Gcaron 2 ; PCC G 0 0 ; PCC caron 29 136 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 26 121 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 26 121 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 29 136 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 26 121 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 27 126 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 26 121 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 26 121 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 29 136 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 26 121 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 27 126 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 59 136 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 56 121 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 26 121 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 29 136 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave -4 121 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 56 121 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 29 136 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 29 136 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 0 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 0 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 0 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 0 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 0 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 0 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 0 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 0 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 0 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 0 0 ;
+CC gcaron 2 ; PCC g 0 0 ; PCC caron -30 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute 0 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -30 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -30 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -30 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 0 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 0 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 0 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 0 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 0 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 0 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 0 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute -10 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex -10 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 0 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave -30 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute -20 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis -10 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 10 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/Cr-O+ b/font/font/Cr-O+
new file mode 100644
index 0000000..267c38e
--- /dev/null
+++ b/font/font/Cr-O+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 600 ; N Ccaron ; B 93 -18 695 790 ;
+C -1 ; WX 600 ; N ccaron ; B 106 -15 639 669 ;
+C -1 ; WX 600 ; N Dcaron ; B 43 0 645 790 ;
+C -1 ; WX 600 ; N dcaron ; B 85 -15 873 692 ;
+C -1 ; WX 600 ; N Ecaron ; B 53 0 660 790 ;
+C -1 ; WX 600 ; N ecaron ; B 106 -15 614 669 ;
+C -1 ; WX 600 ; N Lcaron ; B 47 0 856 618 ;
+C -1 ; WX 600 ; N Lacute ; B 47 0 636 788 ;
+C -1 ; WX 600 ; N lcaron ; B 95 0 748 692 ;
+C -1 ; WX 600 ; N lacute ; B 95 0 662 788 ;
+C -1 ; WX 600 ; N Ncaron ; B 7 -13 712 790 ;
+C -1 ; WX 600 ; N ncaron ; B 26 0 614 669 ;
+C -1 ; WX 600 ; N Rcaron ; B 38 0 639 790 ;
+C -1 ; WX 600 ; N Racute ; B 38 0 686 788 ;
+C -1 ; WX 600 ; N rcaron ; B 60 0 636 669 ;
+C -1 ; WX 600 ; N racute ; B 60 0 638 672 ;
+C -1 ; WX 600 ; N Tcaron ; B 108 0 665 790 ;
+C -1 ; WX 600 ; N tcaron ; B 167 -15 794 562 ;
+C -1 ; WX 600 ; N Uring ; B 125 -18 702 790 ;
+C -1 ; WX 600 ; N uring ; B 101 -15 572 627 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 81 121 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 25 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 25 121 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 378 130 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 25 121 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 0 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 361 56 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 24 116 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 253 130 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 50 116 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 25 121 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 0 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 25 121 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 74 116 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 0 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 26 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 25 121 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 299 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 34 163 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 0 0 ;
+EndBuildComposites
diff --git a/font/font/He b/font/font/He
new file mode 100644
index 0000000..1eb3b44
--- /dev/null
+++ b/font/font/He
@@ -0,0 +1,612 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All rights reserved.
+Comment Creation Date: Thu Mar 15 08:58:00 1990
+Comment UniqueID 28352
+Comment VMusage 26389 33281
+FontName Helvetica
+FullName Helvetica
+FamilyName Helvetica
+Weight Medium
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -166 -225 1000 931
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.006
+Notice Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All rights reserved.Helvetica is a trademark of Linotype AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 718
+XHeight 523
+Ascender 718
+Descender -207
+StartCharMetrics 228
+C 32 ; WX 278 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 278 ; N exclam ; B 90 0 187 718 ;
+C 34 ; WX 355 ; N quotedbl ; B 70 463 285 718 ;
+C 35 ; WX 556 ; N numbersign ; B 28 0 529 688 ;
+C 36 ; WX 556 ; N dollar ; B 32 -115 520 775 ;
+C 37 ; WX 889 ; N percent ; B 39 -19 850 703 ;
+C 38 ; WX 667 ; N ampersand ; B 44 -15 645 718 ;
+C 39 ; WX 222 ; N quoteright ; B 53 463 157 718 ;
+C 40 ; WX 333 ; N parenleft ; B 68 -207 299 733 ;
+C 41 ; WX 333 ; N parenright ; B 34 -207 265 733 ;
+C 42 ; WX 389 ; N asterisk ; B 39 431 349 718 ;
+C 43 ; WX 584 ; N plus ; B 39 0 545 505 ;
+C 44 ; WX 278 ; N comma ; B 87 -147 191 106 ;
+C 45 ; WX 333 ; N hyphen ; B 44 232 289 322 ;
+C 46 ; WX 278 ; N period ; B 87 0 191 106 ;
+C 47 ; WX 278 ; N slash ; B -17 -19 295 737 ;
+C 48 ; WX 556 ; N zero ; B 37 -19 519 703 ;
+C 49 ; WX 556 ; N one ; B 101 0 359 703 ;
+C 50 ; WX 556 ; N two ; B 26 0 507 703 ;
+C 51 ; WX 556 ; N three ; B 34 -19 522 703 ;
+C 52 ; WX 556 ; N four ; B 25 0 523 703 ;
+C 53 ; WX 556 ; N five ; B 32 -19 514 688 ;
+C 54 ; WX 556 ; N six ; B 38 -19 518 703 ;
+C 55 ; WX 556 ; N seven ; B 37 0 523 688 ;
+C 56 ; WX 556 ; N eight ; B 38 -19 517 703 ;
+C 57 ; WX 556 ; N nine ; B 42 -19 514 703 ;
+C 58 ; WX 278 ; N colon ; B 87 0 191 516 ;
+C 59 ; WX 278 ; N semicolon ; B 87 -147 191 516 ;
+C 60 ; WX 584 ; N less ; B 48 11 536 495 ;
+C 61 ; WX 584 ; N equal ; B 39 115 545 390 ;
+C 62 ; WX 584 ; N greater ; B 48 11 536 495 ;
+C 63 ; WX 556 ; N question ; B 56 0 492 727 ;
+C 64 ; WX 1015 ; N at ; B 147 -19 868 737 ;
+C 65 ; WX 667 ; N A ; B 14 0 654 718 ;
+C 66 ; WX 667 ; N B ; B 74 0 627 718 ;
+C 67 ; WX 722 ; N C ; B 44 -19 681 737 ;
+C 68 ; WX 722 ; N D ; B 81 0 674 718 ;
+C 69 ; WX 667 ; N E ; B 86 0 616 718 ;
+C 70 ; WX 611 ; N F ; B 86 0 583 718 ;
+C 71 ; WX 778 ; N G ; B 48 -19 704 737 ;
+C 72 ; WX 722 ; N H ; B 77 0 646 718 ;
+C 73 ; WX 278 ; N I ; B 91 0 188 718 ;
+C 74 ; WX 500 ; N J ; B 17 -19 428 718 ;
+C 75 ; WX 667 ; N K ; B 76 0 663 718 ;
+C 76 ; WX 556 ; N L ; B 76 0 537 718 ;
+C 77 ; WX 833 ; N M ; B 73 0 761 718 ;
+C 78 ; WX 722 ; N N ; B 76 0 646 718 ;
+C 79 ; WX 778 ; N O ; B 39 -19 739 737 ;
+C 80 ; WX 667 ; N P ; B 86 0 622 718 ;
+C 81 ; WX 778 ; N Q ; B 39 -56 739 737 ;
+C 82 ; WX 722 ; N R ; B 88 0 684 718 ;
+C 83 ; WX 667 ; N S ; B 49 -19 620 737 ;
+C 84 ; WX 611 ; N T ; B 14 0 597 718 ;
+C 85 ; WX 722 ; N U ; B 79 -19 644 718 ;
+C 86 ; WX 667 ; N V ; B 20 0 647 718 ;
+C 87 ; WX 944 ; N W ; B 16 0 928 718 ;
+C 88 ; WX 667 ; N X ; B 19 0 648 718 ;
+C 89 ; WX 667 ; N Y ; B 14 0 653 718 ;
+C 90 ; WX 611 ; N Z ; B 23 0 588 718 ;
+C 91 ; WX 278 ; N bracketleft ; B 63 -196 250 722 ;
+C 92 ; WX 278 ; N backslash ; B -17 -19 295 737 ;
+C 93 ; WX 278 ; N bracketright ; B 28 -196 215 722 ;
+C 94 ; WX 469 ; N asciicircum ; B -14 264 483 688 ;
+C 95 ; WX 556 ; N underscore ; B 0 -125 556 -75 ;
+C 96 ; WX 222 ; N quoteleft ; B 65 470 169 725 ;
+C 97 ; WX 556 ; N a ; B 36 -15 530 538 ;
+C 98 ; WX 556 ; N b ; B 58 -15 517 718 ;
+C 99 ; WX 500 ; N c ; B 30 -15 477 538 ;
+C 100 ; WX 556 ; N d ; B 35 -15 499 718 ;
+C 101 ; WX 556 ; N e ; B 40 -15 516 538 ;
+C 102 ; WX 278 ; N f ; B 14 0 262 728 ; L i fi ; L l fl ;
+C 103 ; WX 556 ; N g ; B 40 -220 499 538 ;
+C 104 ; WX 556 ; N h ; B 65 0 491 718 ;
+C 105 ; WX 222 ; N i ; B 67 0 155 718 ;
+C 106 ; WX 222 ; N j ; B -16 -210 155 718 ;
+C 107 ; WX 500 ; N k ; B 67 0 501 718 ;
+C 108 ; WX 222 ; N l ; B 67 0 155 718 ;
+C 109 ; WX 833 ; N m ; B 65 0 769 538 ;
+C 110 ; WX 556 ; N n ; B 65 0 491 538 ;
+C 111 ; WX 556 ; N o ; B 35 -14 521 538 ;
+C 112 ; WX 556 ; N p ; B 58 -207 517 538 ;
+C 113 ; WX 556 ; N q ; B 35 -207 494 538 ;
+C 114 ; WX 333 ; N r ; B 77 0 332 538 ;
+C 115 ; WX 500 ; N s ; B 32 -15 464 538 ;
+C 116 ; WX 278 ; N t ; B 14 -7 257 669 ;
+C 117 ; WX 556 ; N u ; B 68 -15 489 523 ;
+C 118 ; WX 500 ; N v ; B 8 0 492 523 ;
+C 119 ; WX 722 ; N w ; B 14 0 709 523 ;
+C 120 ; WX 500 ; N x ; B 11 0 490 523 ;
+C 121 ; WX 500 ; N y ; B 11 -214 489 523 ;
+C 122 ; WX 500 ; N z ; B 31 0 469 523 ;
+C 123 ; WX 334 ; N braceleft ; B 42 -196 292 722 ;
+C 124 ; WX 260 ; N bar ; B 94 -19 167 737 ;
+C 125 ; WX 334 ; N braceright ; B 42 -196 292 722 ;
+C 126 ; WX 584 ; N asciitilde ; B 61 180 523 326 ;
+C 161 ; WX 333 ; N exclamdown ; B 118 -195 215 523 ;
+C 162 ; WX 556 ; N cent ; B 51 -115 513 623 ;
+C 163 ; WX 556 ; N sterling ; B 33 -16 539 718 ;
+C 164 ; WX 167 ; N fraction ; B -166 -19 333 703 ;
+C 165 ; WX 556 ; N yen ; B 3 0 553 688 ;
+C 166 ; WX 556 ; N florin ; B -11 -207 501 737 ;
+C 167 ; WX 556 ; N section ; B 43 -191 512 737 ;
+C 168 ; WX 556 ; N currency ; B 28 99 528 603 ;
+C 169 ; WX 191 ; N quotesingle ; B 59 463 132 718 ;
+C 170 ; WX 333 ; N quotedblleft ; B 38 470 307 725 ;
+C 171 ; WX 556 ; N guillemotleft ; B 97 108 459 446 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 88 108 245 446 ;
+C 173 ; WX 333 ; N guilsinglright ; B 88 108 245 446 ;
+C 174 ; WX 500 ; N fi ; B 14 0 434 728 ;
+C 175 ; WX 500 ; N fl ; B 14 0 432 728 ;
+C 177 ; WX 556 ; N endash ; B 0 240 556 313 ;
+C 178 ; WX 556 ; N dagger ; B 43 -159 514 718 ;
+C 179 ; WX 556 ; N daggerdbl ; B 43 -159 514 718 ;
+C 180 ; WX 278 ; N periodcentered ; B 77 190 202 315 ;
+C 182 ; WX 537 ; N paragraph ; B 18 -173 497 718 ;
+C 183 ; WX 350 ; N bullet ; B 18 202 333 517 ;
+C 184 ; WX 222 ; N quotesinglbase ; B 53 -149 157 106 ;
+C 185 ; WX 333 ; N quotedblbase ; B 26 -149 295 106 ;
+C 186 ; WX 333 ; N quotedblright ; B 26 463 295 718 ;
+C 187 ; WX 556 ; N guillemotright ; B 97 108 459 446 ;
+C 188 ; WX 1000 ; N ellipsis ; B 115 0 885 106 ;
+C 189 ; WX 1000 ; N perthousand ; B 7 -19 994 703 ;
+C 191 ; WX 611 ; N questiondown ; B 91 -201 527 525 ;
+C 193 ; WX 333 ; N grave ; B 14 593 211 734 ;
+C 194 ; WX 333 ; N acute ; B 122 593 319 734 ;
+C 195 ; WX 333 ; N circumflex ; B 21 593 312 734 ;
+C 196 ; WX 333 ; N tilde ; B -4 606 337 722 ;
+C 197 ; WX 333 ; N macron ; B 10 627 323 684 ;
+C 198 ; WX 333 ; N breve ; B 13 595 321 731 ;
+C 199 ; WX 333 ; N dotaccent ; B 121 604 212 706 ;
+C 200 ; WX 333 ; N dieresis ; B 40 604 293 706 ;
+C 202 ; WX 333 ; N ring ; B 75 572 259 756 ;
+C 203 ; WX 333 ; N cedilla ; B 45 -225 259 0 ;
+C 205 ; WX 333 ; N hungarumlaut ; B 31 593 409 734 ;
+C 206 ; WX 333 ; N ogonek ; B 73 -225 287 0 ;
+C 207 ; WX 333 ; N caron ; B 21 593 312 734 ;
+C 208 ; WX 1000 ; N emdash ; B 0 240 1000 313 ;
+C 225 ; WX 1000 ; N AE ; B 8 0 951 718 ;
+C 227 ; WX 370 ; N ordfeminine ; B 24 304 346 737 ;
+C 232 ; WX 556 ; N Lslash ; B -20 0 537 718 ;
+C 233 ; WX 778 ; N Oslash ; B 39 -19 740 737 ;
+C 234 ; WX 1000 ; N OE ; B 36 -19 965 737 ;
+C 235 ; WX 365 ; N ordmasculine ; B 25 304 341 737 ;
+C 241 ; WX 889 ; N ae ; B 36 -15 847 538 ;
+C 245 ; WX 278 ; N dotlessi ; B 95 0 183 523 ;
+C 248 ; WX 222 ; N lslash ; B -20 0 242 718 ;
+C 249 ; WX 611 ; N oslash ; B 28 -22 537 545 ;
+C 250 ; WX 944 ; N oe ; B 35 -15 902 538 ;
+C 251 ; WX 611 ; N germandbls ; B 67 -15 571 728 ;
+C -1 ; WX 611 ; N Zcaron ; B 23 0 588 929 ;
+C -1 ; WX 500 ; N ccedilla ; B 30 -225 477 538 ;
+C -1 ; WX 500 ; N ydieresis ; B 11 -214 489 706 ;
+C -1 ; WX 556 ; N atilde ; B 36 -15 530 722 ;
+C -1 ; WX 278 ; N icircumflex ; B -6 0 285 734 ;
+C -1 ; WX 333 ; N threesuperior ; B 5 270 325 703 ;
+C -1 ; WX 556 ; N ecircumflex ; B 40 -15 516 734 ;
+C -1 ; WX 556 ; N thorn ; B 58 -207 517 718 ;
+C -1 ; WX 556 ; N egrave ; B 40 -15 516 734 ;
+C -1 ; WX 333 ; N twosuperior ; B 4 281 323 703 ;
+C -1 ; WX 556 ; N eacute ; B 40 -15 516 734 ;
+C -1 ; WX 556 ; N otilde ; B 35 -14 521 722 ;
+C -1 ; WX 667 ; N Aacute ; B 14 0 654 929 ;
+C -1 ; WX 556 ; N ocircumflex ; B 35 -14 521 734 ;
+C -1 ; WX 500 ; N yacute ; B 11 -214 489 734 ;
+C -1 ; WX 556 ; N udieresis ; B 68 -15 489 706 ;
+C -1 ; WX 834 ; N threequarters ; B 45 -19 810 703 ;
+C -1 ; WX 556 ; N acircumflex ; B 36 -15 530 734 ;
+C -1 ; WX 722 ; N Eth ; B 0 0 674 718 ;
+C -1 ; WX 556 ; N edieresis ; B 40 -15 516 706 ;
+C -1 ; WX 556 ; N ugrave ; B 68 -15 489 734 ;
+C -1 ; WX 1000 ; N trademark ; B 46 306 903 718 ;
+C -1 ; WX 556 ; N ograve ; B 35 -14 521 734 ;
+C -1 ; WX 500 ; N scaron ; B 32 -15 464 734 ;
+C -1 ; WX 278 ; N Idieresis ; B 13 0 266 901 ;
+C -1 ; WX 556 ; N uacute ; B 68 -15 489 734 ;
+C -1 ; WX 556 ; N agrave ; B 36 -15 530 734 ;
+C -1 ; WX 556 ; N ntilde ; B 65 0 491 722 ;
+C -1 ; WX 556 ; N aring ; B 36 -15 530 756 ;
+C -1 ; WX 500 ; N zcaron ; B 31 0 469 734 ;
+C -1 ; WX 278 ; N Icircumflex ; B -6 0 285 929 ;
+C -1 ; WX 722 ; N Ntilde ; B 76 0 646 917 ;
+C -1 ; WX 556 ; N ucircumflex ; B 68 -15 489 734 ;
+C -1 ; WX 667 ; N Ecircumflex ; B 86 0 616 929 ;
+C -1 ; WX 278 ; N Iacute ; B 91 0 292 929 ;
+C -1 ; WX 722 ; N Ccedilla ; B 44 -225 681 737 ;
+C -1 ; WX 778 ; N Odieresis ; B 39 -19 739 901 ;
+C -1 ; WX 667 ; N Scaron ; B 49 -19 620 929 ;
+C -1 ; WX 667 ; N Edieresis ; B 86 0 616 901 ;
+C -1 ; WX 278 ; N Igrave ; B -13 0 188 929 ;
+C -1 ; WX 556 ; N adieresis ; B 36 -15 530 706 ;
+C -1 ; WX 778 ; N Ograve ; B 39 -19 739 929 ;
+C -1 ; WX 667 ; N Egrave ; B 86 0 616 929 ;
+C -1 ; WX 667 ; N Ydieresis ; B 14 0 653 901 ;
+C -1 ; WX 737 ; N registered ; B -14 -19 752 737 ;
+C -1 ; WX 778 ; N Otilde ; B 39 -19 739 917 ;
+C -1 ; WX 834 ; N onequarter ; B 73 -19 756 703 ;
+C -1 ; WX 722 ; N Ugrave ; B 79 -19 644 929 ;
+C -1 ; WX 722 ; N Ucircumflex ; B 79 -19 644 929 ;
+C -1 ; WX 667 ; N Thorn ; B 86 0 622 718 ;
+C -1 ; WX 584 ; N divide ; B 39 -19 545 524 ;
+C -1 ; WX 667 ; N Atilde ; B 14 0 654 917 ;
+C -1 ; WX 722 ; N Uacute ; B 79 -19 644 929 ;
+C -1 ; WX 778 ; N Ocircumflex ; B 39 -19 739 929 ;
+C -1 ; WX 584 ; N logicalnot ; B 39 108 545 390 ;
+C -1 ; WX 667 ; N Aring ; B 14 0 654 931 ;
+C -1 ; WX 278 ; N idieresis ; B 13 0 266 706 ;
+C -1 ; WX 278 ; N iacute ; B 95 0 292 734 ;
+C -1 ; WX 556 ; N aacute ; B 36 -15 530 734 ;
+C -1 ; WX 584 ; N plusminus ; B 39 0 545 506 ;
+C -1 ; WX 584 ; N multiply ; B 39 0 545 506 ;
+C -1 ; WX 722 ; N Udieresis ; B 79 -19 644 901 ;
+C -1 ; WX 584 ; N minus ; B 39 216 545 289 ;
+C -1 ; WX 333 ; N onesuperior ; B 43 281 222 703 ;
+C -1 ; WX 667 ; N Eacute ; B 86 0 616 929 ;
+C -1 ; WX 667 ; N Acircumflex ; B 14 0 654 929 ;
+C -1 ; WX 737 ; N copyright ; B -14 -19 752 737 ;
+C -1 ; WX 667 ; N Agrave ; B 14 0 654 929 ;
+C -1 ; WX 556 ; N odieresis ; B 35 -14 521 706 ;
+C -1 ; WX 556 ; N oacute ; B 35 -14 521 734 ;
+C -1 ; WX 400 ; N degree ; B 54 411 346 703 ;
+C -1 ; WX 278 ; N igrave ; B -13 0 184 734 ;
+C -1 ; WX 556 ; N mu ; B 68 -207 489 523 ;
+C -1 ; WX 778 ; N Oacute ; B 39 -19 739 929 ;
+C -1 ; WX 556 ; N eth ; B 35 -15 522 737 ;
+C -1 ; WX 667 ; N Adieresis ; B 14 0 654 901 ;
+C -1 ; WX 667 ; N Yacute ; B 14 0 653 929 ;
+C -1 ; WX 260 ; N brokenbar ; B 94 -19 167 737 ;
+C -1 ; WX 834 ; N onehalf ; B 43 -19 773 703 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 250
+
+KPX A y -40
+KPX A w -40
+KPX A v -40
+KPX A u -30
+KPX A Y -100
+KPX A W -50
+KPX A V -70
+KPX A U -50
+KPX A T -120
+KPX A Q -30
+KPX A O -30
+KPX A G -30
+KPX A C -30
+
+KPX B period -20
+KPX B comma -20
+KPX B U -10
+
+KPX C period -30
+KPX C comma -30
+
+KPX D period -70
+KPX D comma -70
+KPX D Y -90
+KPX D W -40
+KPX D V -70
+KPX D A -40
+
+KPX F r -45
+KPX F period -150
+KPX F o -30
+KPX F e -30
+KPX F comma -150
+KPX F a -50
+KPX F A -80
+
+KPX J u -20
+KPX J period -30
+KPX J comma -30
+KPX J a -20
+KPX J A -20
+
+KPX K y -50
+KPX K u -30
+KPX K o -40
+KPX K e -40
+KPX K O -50
+
+KPX L y -30
+KPX L quoteright -160
+KPX L quotedblright -140
+KPX L Y -140
+KPX L W -70
+KPX L V -110
+KPX L T -110
+
+KPX O period -40
+KPX O comma -40
+KPX O Y -70
+KPX O X -60
+KPX O W -30
+KPX O V -50
+KPX O T -40
+KPX O A -20
+
+KPX P period -180
+KPX P o -50
+KPX P e -50
+KPX P comma -180
+KPX P a -40
+KPX P A -120
+
+KPX Q U -10
+
+KPX R Y -50
+KPX R W -30
+KPX R V -50
+KPX R U -40
+KPX R T -30
+KPX R O -20
+
+KPX S period -20
+KPX S comma -20
+
+KPX T y -120
+KPX T w -120
+KPX T u -120
+KPX T semicolon -20
+KPX T r -120
+KPX T period -120
+KPX T o -120
+KPX T hyphen -140
+KPX T e -120
+KPX T comma -120
+KPX T colon -20
+KPX T a -120
+KPX T O -40
+KPX T A -120
+
+KPX U period -40
+KPX U comma -40
+KPX U A -40
+
+KPX V u -70
+KPX V semicolon -40
+KPX V period -125
+KPX V o -80
+KPX V hyphen -80
+KPX V e -80
+KPX V comma -125
+KPX V colon -40
+KPX V a -70
+KPX V O -40
+KPX V G -40
+KPX V A -80
+
+KPX W y -20
+KPX W u -30
+KPX W period -80
+KPX W o -30
+KPX W hyphen -40
+KPX W e -30
+KPX W comma -80
+KPX W a -40
+KPX W O -20
+KPX W A -50
+
+KPX Y u -110
+KPX Y semicolon -60
+KPX Y period -140
+KPX Y o -140
+KPX Y i -20
+KPX Y hyphen -140
+KPX Y e -140
+KPX Y comma -140
+KPX Y colon -60
+KPX Y a -140
+KPX Y O -85
+KPX Y A -110
+
+KPX a y -30
+KPX a w -20
+KPX a v -20
+
+KPX b y -20
+KPX b v -20
+KPX b u -20
+KPX b period -40
+KPX b l -20
+KPX b comma -40
+KPX b b -10
+
+KPX c k -20
+KPX c comma -15
+
+KPX colon space -50
+
+KPX comma quoteright -100
+KPX comma quotedblright -100
+
+KPX e y -20
+KPX e x -30
+KPX e w -20
+KPX e v -30
+KPX e period -15
+KPX e comma -15
+
+KPX f quoteright 50
+KPX f quotedblright 60
+KPX f period -30
+KPX f o -30
+KPX f e -30
+KPX f dotlessi -28
+KPX f comma -30
+KPX f a -30
+
+KPX g r -10
+
+KPX h y -30
+
+KPX k o -20
+KPX k e -20
+
+KPX m y -15
+KPX m u -10
+
+KPX n y -15
+KPX n v -20
+KPX n u -10
+
+KPX o y -30
+KPX o x -30
+KPX o w -15
+KPX o v -15
+KPX o period -40
+KPX o comma -40
+
+KPX oslash z -55
+KPX oslash y -70
+KPX oslash x -85
+KPX oslash w -70
+KPX oslash v -70
+KPX oslash u -55
+KPX oslash t -55
+KPX oslash s -55
+KPX oslash r -55
+KPX oslash q -55
+KPX oslash period -95
+KPX oslash p -55
+KPX oslash o -55
+KPX oslash n -55
+KPX oslash m -55
+KPX oslash l -55
+KPX oslash k -55
+KPX oslash j -55
+KPX oslash i -55
+KPX oslash h -55
+KPX oslash g -55
+KPX oslash f -55
+KPX oslash e -55
+KPX oslash d -55
+KPX oslash comma -95
+KPX oslash c -55
+KPX oslash b -55
+KPX oslash a -55
+
+KPX p y -30
+KPX p period -35
+KPX p comma -35
+
+KPX period space -60
+KPX period quoteright -100
+KPX period quotedblright -100
+
+KPX quotedblright space -40
+
+KPX quoteleft quoteleft -57
+
+KPX quoteright space -70
+KPX quoteright s -50
+KPX quoteright r -50
+KPX quoteright quoteright -57
+KPX quoteright d -50
+
+KPX r y 30
+KPX r v 30
+KPX r u 15
+KPX r t 40
+KPX r semicolon 30
+KPX r period -50
+KPX r p 30
+KPX r n 25
+KPX r m 25
+KPX r l 15
+KPX r k 15
+KPX r i 15
+KPX r comma -50
+KPX r colon 30
+KPX r a -10
+
+KPX s w -30
+KPX s period -15
+KPX s comma -15
+
+KPX semicolon space -50
+
+KPX space quoteleft -60
+KPX space quotedblleft -30
+KPX space Y -90
+KPX space W -40
+KPX space V -50
+KPX space T -50
+
+KPX v period -80
+KPX v o -25
+KPX v e -25
+KPX v comma -80
+KPX v a -25
+
+KPX w period -60
+KPX w o -10
+KPX w e -10
+KPX w comma -60
+KPX w a -15
+
+KPX x e -30
+
+KPX y period -100
+KPX y o -20
+KPX y e -20
+KPX y comma -100
+KPX y a -20
+
+KPX z o -15
+KPX z e -15
+EndKernPairs
+EndKernData
+StartComposites 58
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 167 195 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 167 195 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 167 195 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 167 195 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 167 175 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 167 195 ;
+CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 195 0 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 167 195 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 167 195 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 167 195 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 167 195 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute -27 195 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex -27 195 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis -27 195 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave -27 195 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 205 195 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 223 195 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 223 195 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 223 195 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 223 195 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 223 195 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 167 195 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 195 195 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 195 195 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 195 195 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 195 195 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 167 195 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 167 195 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 139 195 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 112 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 112 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 112 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 112 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 112 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 102 0 ;
+CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 84 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 112 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 112 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 112 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 112 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -27 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -27 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -27 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -27 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 102 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 112 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 112 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 112 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 112 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 112 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 84 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 112 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 112 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 112 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 112 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 84 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 84 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 84 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/He+ b/font/font/He+
new file mode 100644
index 0000000..df34ce4
--- /dev/null
+++ b/font/font/He+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 722 ; N Ccaron ; B 44 -19 681 925 ;
+C -1 ; WX 500 ; N ccaron ; B 30 -15 477 734 ;
+C -1 ; WX 722 ; N Dcaron ; B 81 0 674 925 ;
+C -1 ; WX 629 ; N dcaron ; B 35 -15 613 790 ;
+C -1 ; WX 667 ; N Ecaron ; B 86 0 616 925 ;
+C -1 ; WX 556 ; N ecaron ; B 40 -15 516 734 ;
+C -1 ; WX 556 ; N Lcaron ; B 76 0 537 790 ;
+C -1 ; WX 556 ; N Lacute ; B 76 0 537 925 ;
+C -1 ; WX 295 ; N lcaron ; B 67 0 269 790 ;
+C -1 ; WX 222 ; N lacute ; B 67 0 284 925 ;
+C -1 ; WX 722 ; N Ncaron ; B 76 0 646 925 ;
+C -1 ; WX 556 ; N ncaron ; B 65 0 491 734 ;
+C -1 ; WX 722 ; N Rcaron ; B 88 0 684 925 ;
+C -1 ; WX 722 ; N Racute ; B 88 0 684 925 ;
+C -1 ; WX 333 ; N rcaron ; B 21 0 332 734 ;
+C -1 ; WX 333 ; N racute ; B 77 0 339 734 ;
+C -1 ; WX 611 ; N Tcaron ; B 14 0 597 925 ;
+C -1 ; WX 351 ; N tcaron ; B 14 -7 371 718 ;
+C -1 ; WX 722 ; N Uring ; B 79 -19 644 925 ;
+C -1 ; WX 556 ; N uring ; B 68 -15 489 756 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 258 191 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 105 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 194 191 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 456 72 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 167 191 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 111 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 145 72 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 111 191 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 112 72 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute -35 191 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 194 191 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 111 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 194 191 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 231 191 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 0 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 20 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 139 191 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 214 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 194 169 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 111 0 ;
+EndBuildComposites
diff --git a/font/font/He-Bd b/font/font/He-Bd
new file mode 100644
index 0000000..a1e1b33
--- /dev/null
+++ b/font/font/He-Bd
@@ -0,0 +1,570 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Thu Mar 15 09:43:00 1990
+Comment UniqueID 28357
+Comment VMusage 26878 33770
+FontName Helvetica-Bold
+FullName Helvetica Bold
+FamilyName Helvetica
+Weight Bold
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -170 -228 1003 962
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.007
+Notice Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.Helvetica is a trademark of Linotype AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 718
+XHeight 532
+Ascender 718
+Descender -207
+StartCharMetrics 228
+C 32 ; WX 278 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 333 ; N exclam ; B 90 0 244 718 ;
+C 34 ; WX 474 ; N quotedbl ; B 98 447 376 718 ;
+C 35 ; WX 556 ; N numbersign ; B 18 0 538 698 ;
+C 36 ; WX 556 ; N dollar ; B 30 -115 523 775 ;
+C 37 ; WX 889 ; N percent ; B 28 -19 861 710 ;
+C 38 ; WX 722 ; N ampersand ; B 54 -19 701 718 ;
+C 39 ; WX 278 ; N quoteright ; B 69 445 209 718 ;
+C 40 ; WX 333 ; N parenleft ; B 35 -208 314 734 ;
+C 41 ; WX 333 ; N parenright ; B 19 -208 298 734 ;
+C 42 ; WX 389 ; N asterisk ; B 27 387 362 718 ;
+C 43 ; WX 584 ; N plus ; B 40 0 544 506 ;
+C 44 ; WX 278 ; N comma ; B 64 -168 214 146 ;
+C 45 ; WX 333 ; N hyphen ; B 27 215 306 345 ;
+C 46 ; WX 278 ; N period ; B 64 0 214 146 ;
+C 47 ; WX 278 ; N slash ; B -33 -19 311 737 ;
+C 48 ; WX 556 ; N zero ; B 32 -19 524 710 ;
+C 49 ; WX 556 ; N one ; B 69 0 378 710 ;
+C 50 ; WX 556 ; N two ; B 26 0 511 710 ;
+C 51 ; WX 556 ; N three ; B 27 -19 516 710 ;
+C 52 ; WX 556 ; N four ; B 27 0 526 710 ;
+C 53 ; WX 556 ; N five ; B 27 -19 516 698 ;
+C 54 ; WX 556 ; N six ; B 31 -19 520 710 ;
+C 55 ; WX 556 ; N seven ; B 25 0 528 698 ;
+C 56 ; WX 556 ; N eight ; B 32 -19 524 710 ;
+C 57 ; WX 556 ; N nine ; B 30 -19 522 710 ;
+C 58 ; WX 333 ; N colon ; B 92 0 242 512 ;
+C 59 ; WX 333 ; N semicolon ; B 92 -168 242 512 ;
+C 60 ; WX 584 ; N less ; B 38 -8 546 514 ;
+C 61 ; WX 584 ; N equal ; B 40 87 544 419 ;
+C 62 ; WX 584 ; N greater ; B 38 -8 546 514 ;
+C 63 ; WX 611 ; N question ; B 60 0 556 727 ;
+C 64 ; WX 975 ; N at ; B 118 -19 856 737 ;
+C 65 ; WX 722 ; N A ; B 20 0 702 718 ;
+C 66 ; WX 722 ; N B ; B 76 0 669 718 ;
+C 67 ; WX 722 ; N C ; B 44 -19 684 737 ;
+C 68 ; WX 722 ; N D ; B 76 0 685 718 ;
+C 69 ; WX 667 ; N E ; B 76 0 621 718 ;
+C 70 ; WX 611 ; N F ; B 76 0 587 718 ;
+C 71 ; WX 778 ; N G ; B 44 -19 713 737 ;
+C 72 ; WX 722 ; N H ; B 71 0 651 718 ;
+C 73 ; WX 278 ; N I ; B 64 0 214 718 ;
+C 74 ; WX 556 ; N J ; B 22 -18 484 718 ;
+C 75 ; WX 722 ; N K ; B 87 0 722 718 ;
+C 76 ; WX 611 ; N L ; B 76 0 583 718 ;
+C 77 ; WX 833 ; N M ; B 69 0 765 718 ;
+C 78 ; WX 722 ; N N ; B 69 0 654 718 ;
+C 79 ; WX 778 ; N O ; B 44 -19 734 737 ;
+C 80 ; WX 667 ; N P ; B 76 0 627 718 ;
+C 81 ; WX 778 ; N Q ; B 44 -52 737 737 ;
+C 82 ; WX 722 ; N R ; B 76 0 677 718 ;
+C 83 ; WX 667 ; N S ; B 39 -19 629 737 ;
+C 84 ; WX 611 ; N T ; B 14 0 598 718 ;
+C 85 ; WX 722 ; N U ; B 72 -19 651 718 ;
+C 86 ; WX 667 ; N V ; B 19 0 648 718 ;
+C 87 ; WX 944 ; N W ; B 16 0 929 718 ;
+C 88 ; WX 667 ; N X ; B 14 0 653 718 ;
+C 89 ; WX 667 ; N Y ; B 15 0 653 718 ;
+C 90 ; WX 611 ; N Z ; B 25 0 586 718 ;
+C 91 ; WX 333 ; N bracketleft ; B 63 -196 309 722 ;
+C 92 ; WX 278 ; N backslash ; B -33 -19 311 737 ;
+C 93 ; WX 333 ; N bracketright ; B 24 -196 270 722 ;
+C 94 ; WX 584 ; N asciicircum ; B 62 323 522 698 ;
+C 95 ; WX 556 ; N underscore ; B 0 -125 556 -75 ;
+C 96 ; WX 278 ; N quoteleft ; B 69 454 209 727 ;
+C 97 ; WX 556 ; N a ; B 29 -14 527 546 ;
+C 98 ; WX 611 ; N b ; B 61 -14 578 718 ;
+C 99 ; WX 556 ; N c ; B 34 -14 524 546 ;
+C 100 ; WX 611 ; N d ; B 34 -14 551 718 ;
+C 101 ; WX 556 ; N e ; B 23 -14 528 546 ;
+C 102 ; WX 333 ; N f ; B 10 0 318 727 ; L i fi ; L l fl ;
+C 103 ; WX 611 ; N g ; B 40 -217 553 546 ;
+C 104 ; WX 611 ; N h ; B 65 0 546 718 ;
+C 105 ; WX 278 ; N i ; B 69 0 209 725 ;
+C 106 ; WX 278 ; N j ; B 3 -214 209 725 ;
+C 107 ; WX 556 ; N k ; B 69 0 562 718 ;
+C 108 ; WX 278 ; N l ; B 69 0 209 718 ;
+C 109 ; WX 889 ; N m ; B 64 0 826 546 ;
+C 110 ; WX 611 ; N n ; B 65 0 546 546 ;
+C 111 ; WX 611 ; N o ; B 34 -14 578 546 ;
+C 112 ; WX 611 ; N p ; B 62 -207 578 546 ;
+C 113 ; WX 611 ; N q ; B 34 -207 552 546 ;
+C 114 ; WX 389 ; N r ; B 64 0 373 546 ;
+C 115 ; WX 556 ; N s ; B 30 -14 519 546 ;
+C 116 ; WX 333 ; N t ; B 10 -6 309 676 ;
+C 117 ; WX 611 ; N u ; B 66 -14 545 532 ;
+C 118 ; WX 556 ; N v ; B 13 0 543 532 ;
+C 119 ; WX 778 ; N w ; B 10 0 769 532 ;
+C 120 ; WX 556 ; N x ; B 15 0 541 532 ;
+C 121 ; WX 556 ; N y ; B 10 -214 539 532 ;
+C 122 ; WX 500 ; N z ; B 20 0 480 532 ;
+C 123 ; WX 389 ; N braceleft ; B 48 -196 365 722 ;
+C 124 ; WX 280 ; N bar ; B 84 -19 196 737 ;
+C 125 ; WX 389 ; N braceright ; B 24 -196 341 722 ;
+C 126 ; WX 584 ; N asciitilde ; B 61 163 523 343 ;
+C 161 ; WX 333 ; N exclamdown ; B 90 -186 244 532 ;
+C 162 ; WX 556 ; N cent ; B 34 -118 524 628 ;
+C 163 ; WX 556 ; N sterling ; B 28 -16 541 718 ;
+C 164 ; WX 167 ; N fraction ; B -170 -19 336 710 ;
+C 165 ; WX 556 ; N yen ; B -9 0 565 698 ;
+C 166 ; WX 556 ; N florin ; B -10 -210 516 737 ;
+C 167 ; WX 556 ; N section ; B 34 -184 522 727 ;
+C 168 ; WX 556 ; N currency ; B -3 76 559 636 ;
+C 169 ; WX 238 ; N quotesingle ; B 70 447 168 718 ;
+C 170 ; WX 500 ; N quotedblleft ; B 64 454 436 727 ;
+C 171 ; WX 556 ; N guillemotleft ; B 88 76 468 484 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 83 76 250 484 ;
+C 173 ; WX 333 ; N guilsinglright ; B 83 76 250 484 ;
+C 174 ; WX 611 ; N fi ; B 10 0 542 727 ;
+C 175 ; WX 611 ; N fl ; B 10 0 542 727 ;
+C 177 ; WX 556 ; N endash ; B 0 227 556 333 ;
+C 178 ; WX 556 ; N dagger ; B 36 -171 520 718 ;
+C 179 ; WX 556 ; N daggerdbl ; B 36 -171 520 718 ;
+C 180 ; WX 278 ; N periodcentered ; B 58 172 220 334 ;
+C 182 ; WX 556 ; N paragraph ; B -8 -191 539 700 ;
+C 183 ; WX 350 ; N bullet ; B 10 194 340 524 ;
+C 184 ; WX 278 ; N quotesinglbase ; B 69 -146 209 127 ;
+C 185 ; WX 500 ; N quotedblbase ; B 64 -146 436 127 ;
+C 186 ; WX 500 ; N quotedblright ; B 64 445 436 718 ;
+C 187 ; WX 556 ; N guillemotright ; B 88 76 468 484 ;
+C 188 ; WX 1000 ; N ellipsis ; B 92 0 908 146 ;
+C 189 ; WX 1000 ; N perthousand ; B -3 -19 1003 710 ;
+C 191 ; WX 611 ; N questiondown ; B 55 -195 551 532 ;
+C 193 ; WX 333 ; N grave ; B -23 604 225 750 ;
+C 194 ; WX 333 ; N acute ; B 108 604 356 750 ;
+C 195 ; WX 333 ; N circumflex ; B -10 604 343 750 ;
+C 196 ; WX 333 ; N tilde ; B -17 610 350 737 ;
+C 197 ; WX 333 ; N macron ; B -6 604 339 678 ;
+C 198 ; WX 333 ; N breve ; B -2 604 335 750 ;
+C 199 ; WX 333 ; N dotaccent ; B 104 614 230 729 ;
+C 200 ; WX 333 ; N dieresis ; B 6 614 327 729 ;
+C 202 ; WX 333 ; N ring ; B 59 568 275 776 ;
+C 203 ; WX 333 ; N cedilla ; B 6 -228 245 0 ;
+C 205 ; WX 333 ; N hungarumlaut ; B 9 604 486 750 ;
+C 206 ; WX 333 ; N ogonek ; B 71 -228 304 0 ;
+C 207 ; WX 333 ; N caron ; B -10 604 343 750 ;
+C 208 ; WX 1000 ; N emdash ; B 0 227 1000 333 ;
+C 225 ; WX 1000 ; N AE ; B 5 0 954 718 ;
+C 227 ; WX 370 ; N ordfeminine ; B 22 276 347 737 ;
+C 232 ; WX 611 ; N Lslash ; B -20 0 583 718 ;
+C 233 ; WX 778 ; N Oslash ; B 33 -27 744 745 ;
+C 234 ; WX 1000 ; N OE ; B 37 -19 961 737 ;
+C 235 ; WX 365 ; N ordmasculine ; B 6 276 360 737 ;
+C 241 ; WX 889 ; N ae ; B 29 -14 858 546 ;
+C 245 ; WX 278 ; N dotlessi ; B 69 0 209 532 ;
+C 248 ; WX 278 ; N lslash ; B -18 0 296 718 ;
+C 249 ; WX 611 ; N oslash ; B 22 -29 589 560 ;
+C 250 ; WX 944 ; N oe ; B 34 -14 912 546 ;
+C 251 ; WX 611 ; N germandbls ; B 69 -14 579 731 ;
+C -1 ; WX 611 ; N Zcaron ; B 25 0 586 936 ;
+C -1 ; WX 556 ; N ccedilla ; B 34 -228 524 546 ;
+C -1 ; WX 556 ; N ydieresis ; B 10 -214 539 729 ;
+C -1 ; WX 556 ; N atilde ; B 29 -14 527 737 ;
+C -1 ; WX 278 ; N icircumflex ; B -37 0 316 750 ;
+C -1 ; WX 333 ; N threesuperior ; B 8 271 326 710 ;
+C -1 ; WX 556 ; N ecircumflex ; B 23 -14 528 750 ;
+C -1 ; WX 611 ; N thorn ; B 62 -208 578 718 ;
+C -1 ; WX 556 ; N egrave ; B 23 -14 528 750 ;
+C -1 ; WX 333 ; N twosuperior ; B 9 283 324 710 ;
+C -1 ; WX 556 ; N eacute ; B 23 -14 528 750 ;
+C -1 ; WX 611 ; N otilde ; B 34 -14 578 737 ;
+C -1 ; WX 722 ; N Aacute ; B 20 0 702 936 ;
+C -1 ; WX 611 ; N ocircumflex ; B 34 -14 578 750 ;
+C -1 ; WX 556 ; N yacute ; B 10 -214 539 750 ;
+C -1 ; WX 611 ; N udieresis ; B 66 -14 545 729 ;
+C -1 ; WX 834 ; N threequarters ; B 16 -19 799 710 ;
+C -1 ; WX 556 ; N acircumflex ; B 29 -14 527 750 ;
+C -1 ; WX 722 ; N Eth ; B -5 0 685 718 ;
+C -1 ; WX 556 ; N edieresis ; B 23 -14 528 729 ;
+C -1 ; WX 611 ; N ugrave ; B 66 -14 545 750 ;
+C -1 ; WX 1000 ; N trademark ; B 44 306 956 718 ;
+C -1 ; WX 611 ; N ograve ; B 34 -14 578 750 ;
+C -1 ; WX 556 ; N scaron ; B 30 -14 519 750 ;
+C -1 ; WX 278 ; N Idieresis ; B -21 0 300 915 ;
+C -1 ; WX 611 ; N uacute ; B 66 -14 545 750 ;
+C -1 ; WX 556 ; N agrave ; B 29 -14 527 750 ;
+C -1 ; WX 611 ; N ntilde ; B 65 0 546 737 ;
+C -1 ; WX 556 ; N aring ; B 29 -14 527 776 ;
+C -1 ; WX 500 ; N zcaron ; B 20 0 480 750 ;
+C -1 ; WX 278 ; N Icircumflex ; B -37 0 316 936 ;
+C -1 ; WX 722 ; N Ntilde ; B 69 0 654 923 ;
+C -1 ; WX 611 ; N ucircumflex ; B 66 -14 545 750 ;
+C -1 ; WX 667 ; N Ecircumflex ; B 76 0 621 936 ;
+C -1 ; WX 278 ; N Iacute ; B 64 0 329 936 ;
+C -1 ; WX 722 ; N Ccedilla ; B 44 -228 684 737 ;
+C -1 ; WX 778 ; N Odieresis ; B 44 -19 734 915 ;
+C -1 ; WX 667 ; N Scaron ; B 39 -19 629 936 ;
+C -1 ; WX 667 ; N Edieresis ; B 76 0 621 915 ;
+C -1 ; WX 278 ; N Igrave ; B -50 0 214 936 ;
+C -1 ; WX 556 ; N adieresis ; B 29 -14 527 729 ;
+C -1 ; WX 778 ; N Ograve ; B 44 -19 734 936 ;
+C -1 ; WX 667 ; N Egrave ; B 76 0 621 936 ;
+C -1 ; WX 667 ; N Ydieresis ; B 15 0 653 915 ;
+C -1 ; WX 737 ; N registered ; B -11 -19 748 737 ;
+C -1 ; WX 778 ; N Otilde ; B 44 -19 734 923 ;
+C -1 ; WX 834 ; N onequarter ; B 26 -19 766 710 ;
+C -1 ; WX 722 ; N Ugrave ; B 72 -19 651 936 ;
+C -1 ; WX 722 ; N Ucircumflex ; B 72 -19 651 936 ;
+C -1 ; WX 667 ; N Thorn ; B 76 0 627 718 ;
+C -1 ; WX 584 ; N divide ; B 40 -42 544 548 ;
+C -1 ; WX 722 ; N Atilde ; B 20 0 702 923 ;
+C -1 ; WX 722 ; N Uacute ; B 72 -19 651 936 ;
+C -1 ; WX 778 ; N Ocircumflex ; B 44 -19 734 936 ;
+C -1 ; WX 584 ; N logicalnot ; B 40 108 544 419 ;
+C -1 ; WX 722 ; N Aring ; B 20 0 702 962 ;
+C -1 ; WX 278 ; N idieresis ; B -21 0 300 729 ;
+C -1 ; WX 278 ; N iacute ; B 69 0 329 750 ;
+C -1 ; WX 556 ; N aacute ; B 29 -14 527 750 ;
+C -1 ; WX 584 ; N plusminus ; B 40 0 544 506 ;
+C -1 ; WX 584 ; N multiply ; B 40 1 545 505 ;
+C -1 ; WX 722 ; N Udieresis ; B 72 -19 651 915 ;
+C -1 ; WX 584 ; N minus ; B 40 197 544 309 ;
+C -1 ; WX 333 ; N onesuperior ; B 26 283 237 710 ;
+C -1 ; WX 667 ; N Eacute ; B 76 0 621 936 ;
+C -1 ; WX 722 ; N Acircumflex ; B 20 0 702 936 ;
+C -1 ; WX 737 ; N copyright ; B -11 -19 749 737 ;
+C -1 ; WX 722 ; N Agrave ; B 20 0 702 936 ;
+C -1 ; WX 611 ; N odieresis ; B 34 -14 578 729 ;
+C -1 ; WX 611 ; N oacute ; B 34 -14 578 750 ;
+C -1 ; WX 400 ; N degree ; B 57 426 343 712 ;
+C -1 ; WX 278 ; N igrave ; B -50 0 209 750 ;
+C -1 ; WX 611 ; N mu ; B 66 -207 545 532 ;
+C -1 ; WX 778 ; N Oacute ; B 44 -19 734 936 ;
+C -1 ; WX 611 ; N eth ; B 34 -14 578 737 ;
+C -1 ; WX 722 ; N Adieresis ; B 20 0 702 915 ;
+C -1 ; WX 667 ; N Yacute ; B 15 0 653 936 ;
+C -1 ; WX 280 ; N brokenbar ; B 84 -19 196 737 ;
+C -1 ; WX 834 ; N onehalf ; B 26 -19 794 710 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 209
+
+KPX A y -30
+KPX A w -30
+KPX A v -40
+KPX A u -30
+KPX A Y -110
+KPX A W -60
+KPX A V -80
+KPX A U -50
+KPX A T -90
+KPX A Q -40
+KPX A O -40
+KPX A G -50
+KPX A C -40
+
+KPX B U -10
+KPX B A -30
+
+KPX D period -30
+KPX D comma -30
+KPX D Y -70
+KPX D W -40
+KPX D V -40
+KPX D A -40
+
+KPX F period -100
+KPX F comma -100
+KPX F a -20
+KPX F A -80
+
+KPX J u -20
+KPX J period -20
+KPX J comma -20
+KPX J A -20
+
+KPX K y -40
+KPX K u -30
+KPX K o -35
+KPX K e -15
+KPX K O -30
+
+KPX L y -30
+KPX L quoteright -140
+KPX L quotedblright -140
+KPX L Y -120
+KPX L W -80
+KPX L V -110
+KPX L T -90
+
+KPX O period -40
+KPX O comma -40
+KPX O Y -70
+KPX O X -50
+KPX O W -50
+KPX O V -50
+KPX O T -40
+KPX O A -50
+
+KPX P period -120
+KPX P o -40
+KPX P e -30
+KPX P comma -120
+KPX P a -30
+KPX P A -100
+
+KPX Q period 20
+KPX Q comma 20
+KPX Q U -10
+
+KPX R Y -50
+KPX R W -40
+KPX R V -50
+KPX R U -20
+KPX R T -20
+KPX R O -20
+
+KPX T y -60
+KPX T w -60
+KPX T u -90
+KPX T semicolon -40
+KPX T r -80
+KPX T period -80
+KPX T o -80
+KPX T hyphen -120
+KPX T e -60
+KPX T comma -80
+KPX T colon -40
+KPX T a -80
+KPX T O -40
+KPX T A -90
+
+KPX U period -30
+KPX U comma -30
+KPX U A -50
+
+KPX V u -60
+KPX V semicolon -40
+KPX V period -120
+KPX V o -90
+KPX V hyphen -80
+KPX V e -50
+KPX V comma -120
+KPX V colon -40
+KPX V a -60
+KPX V O -50
+KPX V G -50
+KPX V A -80
+
+KPX W y -20
+KPX W u -45
+KPX W semicolon -10
+KPX W period -80
+KPX W o -60
+KPX W hyphen -40
+KPX W e -35
+KPX W comma -80
+KPX W colon -10
+KPX W a -40
+KPX W O -20
+KPX W A -60
+
+KPX Y u -100
+KPX Y semicolon -50
+KPX Y period -100
+KPX Y o -100
+KPX Y e -80
+KPX Y comma -100
+KPX Y colon -50
+KPX Y a -90
+KPX Y O -70
+KPX Y A -110
+
+KPX a y -20
+KPX a w -15
+KPX a v -15
+KPX a g -10
+
+KPX b y -20
+KPX b v -20
+KPX b u -20
+KPX b l -10
+
+KPX c y -10
+KPX c l -20
+KPX c k -20
+KPX c h -10
+
+KPX colon space -40
+
+KPX comma space -40
+KPX comma quoteright -120
+KPX comma quotedblright -120
+
+KPX d y -15
+KPX d w -15
+KPX d v -15
+KPX d d -10
+
+KPX e y -15
+KPX e x -15
+KPX e w -15
+KPX e v -15
+KPX e period 20
+KPX e comma 10
+
+KPX f quoteright 30
+KPX f quotedblright 30
+KPX f period -10
+KPX f o -20
+KPX f e -10
+KPX f comma -10
+
+KPX g g -10
+KPX g e 10
+
+KPX h y -20
+
+KPX k o -15
+
+KPX l y -15
+KPX l w -15
+
+KPX m y -30
+KPX m u -20
+
+KPX n y -20
+KPX n v -40
+KPX n u -10
+
+KPX o y -20
+KPX o x -30
+KPX o w -15
+KPX o v -20
+
+KPX p y -15
+
+KPX period space -40
+KPX period quoteright -120
+KPX period quotedblright -120
+
+KPX quotedblright space -80
+
+KPX quoteleft quoteleft -46
+
+KPX quoteright v -20
+KPX quoteright space -80
+KPX quoteright s -60
+KPX quoteright r -40
+KPX quoteright quoteright -46
+KPX quoteright l -20
+KPX quoteright d -80
+
+KPX r y 10
+KPX r v 10
+KPX r t 20
+KPX r s -15
+KPX r q -20
+KPX r period -60
+KPX r o -20
+KPX r hyphen -20
+KPX r g -15
+KPX r d -20
+KPX r comma -60
+KPX r c -20
+
+KPX s w -15
+
+KPX semicolon space -40
+
+KPX space quoteleft -60
+KPX space quotedblleft -80
+KPX space Y -120
+KPX space W -80
+KPX space V -80
+KPX space T -100
+
+KPX v period -80
+KPX v o -30
+KPX v comma -80
+KPX v a -20
+
+KPX w period -40
+KPX w o -20
+KPX w comma -40
+
+KPX x e -10
+
+KPX y period -80
+KPX y o -25
+KPX y e -10
+KPX y comma -80
+KPX y a -30
+
+KPX z e 10
+EndKernPairs
+EndKernData
+StartComposites 58
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 195 186 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 195 186 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 195 186 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 195 186 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 195 186 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 195 186 ;
+CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 215 0 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 167 186 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 167 186 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 167 186 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 167 186 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute -27 186 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex -27 186 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis -27 186 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave -27 186 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 195 186 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 223 186 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 223 186 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 223 186 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 223 186 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 223 186 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 167 186 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 195 186 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 195 186 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 195 186 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 195 186 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 167 186 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 167 186 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 139 186 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 112 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 112 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 112 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 112 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 112 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 112 0 ;
+CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 132 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 112 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 112 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 112 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 112 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -27 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -27 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -27 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -27 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 139 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 139 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 139 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 139 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 139 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 139 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 112 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 139 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 139 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 139 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 139 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 112 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 112 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 84 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/He-Bd+ b/font/font/He-Bd+
new file mode 100644
index 0000000..1641465
--- /dev/null
+++ b/font/font/He-Bd+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 722 ; N Ccaron ; B 44 -19 684 930 ;
+C -1 ; WX 556 ; N ccaron ; B 34 -14 524 750 ;
+C -1 ; WX 722 ; N Dcaron ; B 76 0 685 930 ;
+C -1 ; WX 709 ; N dcaron ; B 34 -14 705 790 ;
+C -1 ; WX 667 ; N Ecaron ; B 76 0 621 930 ;
+C -1 ; WX 556 ; N ecaron ; B 23 -14 528 750 ;
+C -1 ; WX 611 ; N Lcaron ; B 76 0 583 790 ;
+C -1 ; WX 611 ; N Lacute ; B 76 0 583 930 ;
+C -1 ; WX 376 ; N lcaron ; B 69 0 363 790 ;
+C -1 ; WX 278 ; N lacute ; B 69 0 354 930 ;
+C -1 ; WX 722 ; N Ncaron ; B 69 0 654 930 ;
+C -1 ; WX 611 ; N ncaron ; B 65 0 546 750 ;
+C -1 ; WX 722 ; N Rcaron ; B 76 0 677 930 ;
+C -1 ; WX 722 ; N Racute ; B 76 0 677 930 ;
+C -1 ; WX 389 ; N rcaron ; B 18 0 373 750 ;
+C -1 ; WX 389 ; N racute ; B 64 0 409 750 ;
+C -1 ; WX 611 ; N Tcaron ; B 14 0 598 930 ;
+C -1 ; WX 431 ; N tcaron ; B 10 -6 463 718 ;
+C -1 ; WX 722 ; N Uring ; B 72 -19 651 930 ;
+C -1 ; WX 611 ; N uring ; B 66 -14 545 776 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 258 180 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 136 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 194 180 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 496 72 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 167 180 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 111 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 159 72 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 139 180 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 154 72 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute -2 180 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 194 180 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 139 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 194 180 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 241 180 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 28 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 53 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 139 180 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 254 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 194 154 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 139 0 ;
+EndBuildComposites
diff --git a/font/font/He-BdO b/font/font/He-BdO
new file mode 100644
index 0000000..b6cff41
--- /dev/null
+++ b/font/font/He-BdO
@@ -0,0 +1,570 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Thu Mar 15 10:44:33 1990
+Comment UniqueID 28371
+Comment VMusage 7614 43068
+FontName Helvetica-BoldOblique
+FullName Helvetica Bold Oblique
+FamilyName Helvetica
+Weight Bold
+ItalicAngle -12
+IsFixedPitch false
+FontBBox -174 -228 1114 962
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.007
+Notice Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.Helvetica is a trademark of Linotype AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 718
+XHeight 532
+Ascender 718
+Descender -207
+StartCharMetrics 228
+C 32 ; WX 278 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 333 ; N exclam ; B 94 0 397 718 ;
+C 34 ; WX 474 ; N quotedbl ; B 193 447 529 718 ;
+C 35 ; WX 556 ; N numbersign ; B 60 0 644 698 ;
+C 36 ; WX 556 ; N dollar ; B 67 -115 622 775 ;
+C 37 ; WX 889 ; N percent ; B 136 -19 901 710 ;
+C 38 ; WX 722 ; N ampersand ; B 89 -19 732 718 ;
+C 39 ; WX 278 ; N quoteright ; B 167 445 362 718 ;
+C 40 ; WX 333 ; N parenleft ; B 76 -208 470 734 ;
+C 41 ; WX 333 ; N parenright ; B -25 -208 369 734 ;
+C 42 ; WX 389 ; N asterisk ; B 146 387 481 718 ;
+C 43 ; WX 584 ; N plus ; B 82 0 610 506 ;
+C 44 ; WX 278 ; N comma ; B 28 -168 245 146 ;
+C 45 ; WX 333 ; N hyphen ; B 73 215 379 345 ;
+C 46 ; WX 278 ; N period ; B 64 0 245 146 ;
+C 47 ; WX 278 ; N slash ; B -37 -19 468 737 ;
+C 48 ; WX 556 ; N zero ; B 86 -19 617 710 ;
+C 49 ; WX 556 ; N one ; B 173 0 529 710 ;
+C 50 ; WX 556 ; N two ; B 26 0 619 710 ;
+C 51 ; WX 556 ; N three ; B 65 -19 608 710 ;
+C 52 ; WX 556 ; N four ; B 60 0 598 710 ;
+C 53 ; WX 556 ; N five ; B 64 -19 636 698 ;
+C 54 ; WX 556 ; N six ; B 85 -19 619 710 ;
+C 55 ; WX 556 ; N seven ; B 125 0 676 698 ;
+C 56 ; WX 556 ; N eight ; B 69 -19 616 710 ;
+C 57 ; WX 556 ; N nine ; B 78 -19 615 710 ;
+C 58 ; WX 333 ; N colon ; B 92 0 351 512 ;
+C 59 ; WX 333 ; N semicolon ; B 56 -168 351 512 ;
+C 60 ; WX 584 ; N less ; B 82 -8 655 514 ;
+C 61 ; WX 584 ; N equal ; B 58 87 633 419 ;
+C 62 ; WX 584 ; N greater ; B 36 -8 609 514 ;
+C 63 ; WX 611 ; N question ; B 165 0 671 727 ;
+C 64 ; WX 975 ; N at ; B 186 -19 954 737 ;
+C 65 ; WX 722 ; N A ; B 20 0 702 718 ;
+C 66 ; WX 722 ; N B ; B 76 0 764 718 ;
+C 67 ; WX 722 ; N C ; B 107 -19 789 737 ;
+C 68 ; WX 722 ; N D ; B 76 0 777 718 ;
+C 69 ; WX 667 ; N E ; B 76 0 757 718 ;
+C 70 ; WX 611 ; N F ; B 76 0 740 718 ;
+C 71 ; WX 778 ; N G ; B 108 -19 817 737 ;
+C 72 ; WX 722 ; N H ; B 71 0 804 718 ;
+C 73 ; WX 278 ; N I ; B 64 0 367 718 ;
+C 74 ; WX 556 ; N J ; B 60 -18 637 718 ;
+C 75 ; WX 722 ; N K ; B 87 0 858 718 ;
+C 76 ; WX 611 ; N L ; B 76 0 611 718 ;
+C 77 ; WX 833 ; N M ; B 69 0 918 718 ;
+C 78 ; WX 722 ; N N ; B 69 0 807 718 ;
+C 79 ; WX 778 ; N O ; B 107 -19 823 737 ;
+C 80 ; WX 667 ; N P ; B 76 0 738 718 ;
+C 81 ; WX 778 ; N Q ; B 107 -52 823 737 ;
+C 82 ; WX 722 ; N R ; B 76 0 778 718 ;
+C 83 ; WX 667 ; N S ; B 81 -19 718 737 ;
+C 84 ; WX 611 ; N T ; B 140 0 751 718 ;
+C 85 ; WX 722 ; N U ; B 116 -19 804 718 ;
+C 86 ; WX 667 ; N V ; B 172 0 801 718 ;
+C 87 ; WX 944 ; N W ; B 169 0 1082 718 ;
+C 88 ; WX 667 ; N X ; B 14 0 791 718 ;
+C 89 ; WX 667 ; N Y ; B 168 0 806 718 ;
+C 90 ; WX 611 ; N Z ; B 25 0 737 718 ;
+C 91 ; WX 333 ; N bracketleft ; B 21 -196 462 722 ;
+C 92 ; WX 278 ; N backslash ; B 124 -19 307 737 ;
+C 93 ; WX 333 ; N bracketright ; B -18 -196 423 722 ;
+C 94 ; WX 584 ; N asciicircum ; B 131 323 591 698 ;
+C 95 ; WX 556 ; N underscore ; B -27 -125 540 -75 ;
+C 96 ; WX 278 ; N quoteleft ; B 165 454 361 727 ;
+C 97 ; WX 556 ; N a ; B 55 -14 583 546 ;
+C 98 ; WX 611 ; N b ; B 61 -14 645 718 ;
+C 99 ; WX 556 ; N c ; B 79 -14 599 546 ;
+C 100 ; WX 611 ; N d ; B 82 -14 704 718 ;
+C 101 ; WX 556 ; N e ; B 70 -14 593 546 ;
+C 102 ; WX 333 ; N f ; B 87 0 469 727 ; L i fi ; L l fl ;
+C 103 ; WX 611 ; N g ; B 38 -217 666 546 ;
+C 104 ; WX 611 ; N h ; B 65 0 629 718 ;
+C 105 ; WX 278 ; N i ; B 69 0 363 725 ;
+C 106 ; WX 278 ; N j ; B -42 -214 363 725 ;
+C 107 ; WX 556 ; N k ; B 69 0 670 718 ;
+C 108 ; WX 278 ; N l ; B 69 0 362 718 ;
+C 109 ; WX 889 ; N m ; B 64 0 909 546 ;
+C 110 ; WX 611 ; N n ; B 65 0 629 546 ;
+C 111 ; WX 611 ; N o ; B 82 -14 643 546 ;
+C 112 ; WX 611 ; N p ; B 18 -207 645 546 ;
+C 113 ; WX 611 ; N q ; B 80 -207 665 546 ;
+C 114 ; WX 389 ; N r ; B 64 0 489 546 ;
+C 115 ; WX 556 ; N s ; B 63 -14 584 546 ;
+C 116 ; WX 333 ; N t ; B 100 -6 422 676 ;
+C 117 ; WX 611 ; N u ; B 98 -14 658 532 ;
+C 118 ; WX 556 ; N v ; B 126 0 656 532 ;
+C 119 ; WX 778 ; N w ; B 123 0 882 532 ;
+C 120 ; WX 556 ; N x ; B 15 0 648 532 ;
+C 121 ; WX 556 ; N y ; B 42 -214 652 532 ;
+C 122 ; WX 500 ; N z ; B 20 0 583 532 ;
+C 123 ; WX 389 ; N braceleft ; B 94 -196 518 722 ;
+C 124 ; WX 280 ; N bar ; B 80 -19 353 737 ;
+C 125 ; WX 389 ; N braceright ; B -18 -196 407 722 ;
+C 126 ; WX 584 ; N asciitilde ; B 115 163 577 343 ;
+C 161 ; WX 333 ; N exclamdown ; B 50 -186 353 532 ;
+C 162 ; WX 556 ; N cent ; B 79 -118 599 628 ;
+C 163 ; WX 556 ; N sterling ; B 50 -16 635 718 ;
+C 164 ; WX 167 ; N fraction ; B -174 -19 487 710 ;
+C 165 ; WX 556 ; N yen ; B 60 0 713 698 ;
+C 166 ; WX 556 ; N florin ; B -50 -210 669 737 ;
+C 167 ; WX 556 ; N section ; B 61 -184 598 727 ;
+C 168 ; WX 556 ; N currency ; B 27 76 680 636 ;
+C 169 ; WX 238 ; N quotesingle ; B 165 447 321 718 ;
+C 170 ; WX 500 ; N quotedblleft ; B 160 454 588 727 ;
+C 171 ; WX 556 ; N guillemotleft ; B 135 76 571 484 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 130 76 353 484 ;
+C 173 ; WX 333 ; N guilsinglright ; B 99 76 322 484 ;
+C 174 ; WX 611 ; N fi ; B 87 0 696 727 ;
+C 175 ; WX 611 ; N fl ; B 87 0 695 727 ;
+C 177 ; WX 556 ; N endash ; B 48 227 627 333 ;
+C 178 ; WX 556 ; N dagger ; B 118 -171 626 718 ;
+C 179 ; WX 556 ; N daggerdbl ; B 46 -171 628 718 ;
+C 180 ; WX 278 ; N periodcentered ; B 110 172 276 334 ;
+C 182 ; WX 556 ; N paragraph ; B 98 -191 688 700 ;
+C 183 ; WX 350 ; N bullet ; B 83 194 420 524 ;
+C 184 ; WX 278 ; N quotesinglbase ; B 41 -146 236 127 ;
+C 185 ; WX 500 ; N quotedblbase ; B 36 -146 463 127 ;
+C 186 ; WX 500 ; N quotedblright ; B 162 445 589 718 ;
+C 187 ; WX 556 ; N guillemotright ; B 104 76 540 484 ;
+C 188 ; WX 1000 ; N ellipsis ; B 92 0 939 146 ;
+C 189 ; WX 1000 ; N perthousand ; B 76 -19 1038 710 ;
+C 191 ; WX 611 ; N questiondown ; B 53 -195 559 532 ;
+C 193 ; WX 333 ; N grave ; B 136 604 353 750 ;
+C 194 ; WX 333 ; N acute ; B 236 604 515 750 ;
+C 195 ; WX 333 ; N circumflex ; B 118 604 471 750 ;
+C 196 ; WX 333 ; N tilde ; B 113 610 507 737 ;
+C 197 ; WX 333 ; N macron ; B 122 604 483 678 ;
+C 198 ; WX 333 ; N breve ; B 156 604 494 750 ;
+C 199 ; WX 333 ; N dotaccent ; B 235 614 385 729 ;
+C 200 ; WX 333 ; N dieresis ; B 137 614 482 729 ;
+C 202 ; WX 333 ; N ring ; B 200 568 420 776 ;
+C 203 ; WX 333 ; N cedilla ; B -37 -228 220 0 ;
+C 205 ; WX 333 ; N hungarumlaut ; B 137 604 645 750 ;
+C 206 ; WX 333 ; N ogonek ; B 41 -228 264 0 ;
+C 207 ; WX 333 ; N caron ; B 149 604 502 750 ;
+C 208 ; WX 1000 ; N emdash ; B 48 227 1071 333 ;
+C 225 ; WX 1000 ; N AE ; B 5 0 1100 718 ;
+C 227 ; WX 370 ; N ordfeminine ; B 92 276 465 737 ;
+C 232 ; WX 611 ; N Lslash ; B 34 0 611 718 ;
+C 233 ; WX 778 ; N Oslash ; B 35 -27 894 745 ;
+C 234 ; WX 1000 ; N OE ; B 99 -19 1114 737 ;
+C 235 ; WX 365 ; N ordmasculine ; B 92 276 485 737 ;
+C 241 ; WX 889 ; N ae ; B 56 -14 923 546 ;
+C 245 ; WX 278 ; N dotlessi ; B 69 0 322 532 ;
+C 248 ; WX 278 ; N lslash ; B 40 0 407 718 ;
+C 249 ; WX 611 ; N oslash ; B 22 -29 701 560 ;
+C 250 ; WX 944 ; N oe ; B 82 -14 977 546 ;
+C 251 ; WX 611 ; N germandbls ; B 69 -14 657 731 ;
+C -1 ; WX 611 ; N Zcaron ; B 25 0 737 936 ;
+C -1 ; WX 556 ; N ccedilla ; B 79 -228 599 546 ;
+C -1 ; WX 556 ; N ydieresis ; B 42 -214 652 729 ;
+C -1 ; WX 556 ; N atilde ; B 55 -14 619 737 ;
+C -1 ; WX 278 ; N icircumflex ; B 69 0 444 750 ;
+C -1 ; WX 333 ; N threesuperior ; B 91 271 441 710 ;
+C -1 ; WX 556 ; N ecircumflex ; B 70 -14 593 750 ;
+C -1 ; WX 611 ; N thorn ; B 18 -208 645 718 ;
+C -1 ; WX 556 ; N egrave ; B 70 -14 593 750 ;
+C -1 ; WX 333 ; N twosuperior ; B 69 283 449 710 ;
+C -1 ; WX 556 ; N eacute ; B 70 -14 627 750 ;
+C -1 ; WX 611 ; N otilde ; B 82 -14 646 737 ;
+C -1 ; WX 722 ; N Aacute ; B 20 0 750 936 ;
+C -1 ; WX 611 ; N ocircumflex ; B 82 -14 643 750 ;
+C -1 ; WX 556 ; N yacute ; B 42 -214 652 750 ;
+C -1 ; WX 611 ; N udieresis ; B 98 -14 658 729 ;
+C -1 ; WX 834 ; N threequarters ; B 99 -19 839 710 ;
+C -1 ; WX 556 ; N acircumflex ; B 55 -14 583 750 ;
+C -1 ; WX 722 ; N Eth ; B 62 0 777 718 ;
+C -1 ; WX 556 ; N edieresis ; B 70 -14 594 729 ;
+C -1 ; WX 611 ; N ugrave ; B 98 -14 658 750 ;
+C -1 ; WX 1000 ; N trademark ; B 179 306 1109 718 ;
+C -1 ; WX 611 ; N ograve ; B 82 -14 643 750 ;
+C -1 ; WX 556 ; N scaron ; B 63 -14 614 750 ;
+C -1 ; WX 278 ; N Idieresis ; B 64 0 494 915 ;
+C -1 ; WX 611 ; N uacute ; B 98 -14 658 750 ;
+C -1 ; WX 556 ; N agrave ; B 55 -14 583 750 ;
+C -1 ; WX 611 ; N ntilde ; B 65 0 646 737 ;
+C -1 ; WX 556 ; N aring ; B 55 -14 583 776 ;
+C -1 ; WX 500 ; N zcaron ; B 20 0 586 750 ;
+C -1 ; WX 278 ; N Icircumflex ; B 64 0 484 936 ;
+C -1 ; WX 722 ; N Ntilde ; B 69 0 807 923 ;
+C -1 ; WX 611 ; N ucircumflex ; B 98 -14 658 750 ;
+C -1 ; WX 667 ; N Ecircumflex ; B 76 0 757 936 ;
+C -1 ; WX 278 ; N Iacute ; B 64 0 528 936 ;
+C -1 ; WX 722 ; N Ccedilla ; B 107 -228 789 737 ;
+C -1 ; WX 778 ; N Odieresis ; B 107 -19 823 915 ;
+C -1 ; WX 667 ; N Scaron ; B 81 -19 718 936 ;
+C -1 ; WX 667 ; N Edieresis ; B 76 0 757 915 ;
+C -1 ; WX 278 ; N Igrave ; B 64 0 367 936 ;
+C -1 ; WX 556 ; N adieresis ; B 55 -14 594 729 ;
+C -1 ; WX 778 ; N Ograve ; B 107 -19 823 936 ;
+C -1 ; WX 667 ; N Egrave ; B 76 0 757 936 ;
+C -1 ; WX 667 ; N Ydieresis ; B 168 0 806 915 ;
+C -1 ; WX 737 ; N registered ; B 55 -19 834 737 ;
+C -1 ; WX 778 ; N Otilde ; B 107 -19 823 923 ;
+C -1 ; WX 834 ; N onequarter ; B 132 -19 806 710 ;
+C -1 ; WX 722 ; N Ugrave ; B 116 -19 804 936 ;
+C -1 ; WX 722 ; N Ucircumflex ; B 116 -19 804 936 ;
+C -1 ; WX 667 ; N Thorn ; B 76 0 716 718 ;
+C -1 ; WX 584 ; N divide ; B 82 -42 610 548 ;
+C -1 ; WX 722 ; N Atilde ; B 20 0 741 923 ;
+C -1 ; WX 722 ; N Uacute ; B 116 -19 804 936 ;
+C -1 ; WX 778 ; N Ocircumflex ; B 107 -19 823 936 ;
+C -1 ; WX 584 ; N logicalnot ; B 105 108 633 419 ;
+C -1 ; WX 722 ; N Aring ; B 20 0 702 962 ;
+C -1 ; WX 278 ; N idieresis ; B 69 0 455 729 ;
+C -1 ; WX 278 ; N iacute ; B 69 0 488 750 ;
+C -1 ; WX 556 ; N aacute ; B 55 -14 627 750 ;
+C -1 ; WX 584 ; N plusminus ; B 40 0 625 506 ;
+C -1 ; WX 584 ; N multiply ; B 57 1 635 505 ;
+C -1 ; WX 722 ; N Udieresis ; B 116 -19 804 915 ;
+C -1 ; WX 584 ; N minus ; B 82 197 610 309 ;
+C -1 ; WX 333 ; N onesuperior ; B 148 283 388 710 ;
+C -1 ; WX 667 ; N Eacute ; B 76 0 757 936 ;
+C -1 ; WX 722 ; N Acircumflex ; B 20 0 706 936 ;
+C -1 ; WX 737 ; N copyright ; B 56 -19 835 737 ;
+C -1 ; WX 722 ; N Agrave ; B 20 0 702 936 ;
+C -1 ; WX 611 ; N odieresis ; B 82 -14 643 729 ;
+C -1 ; WX 611 ; N oacute ; B 82 -14 654 750 ;
+C -1 ; WX 400 ; N degree ; B 175 426 467 712 ;
+C -1 ; WX 278 ; N igrave ; B 69 0 326 750 ;
+C -1 ; WX 611 ; N mu ; B 22 -207 658 532 ;
+C -1 ; WX 778 ; N Oacute ; B 107 -19 823 936 ;
+C -1 ; WX 611 ; N eth ; B 82 -14 670 737 ;
+C -1 ; WX 722 ; N Adieresis ; B 20 0 716 915 ;
+C -1 ; WX 667 ; N Yacute ; B 168 0 806 936 ;
+C -1 ; WX 280 ; N brokenbar ; B 80 -19 353 737 ;
+C -1 ; WX 834 ; N onehalf ; B 132 -19 858 710 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 209
+
+KPX A y -30
+KPX A w -30
+KPX A v -40
+KPX A u -30
+KPX A Y -110
+KPX A W -60
+KPX A V -80
+KPX A U -50
+KPX A T -90
+KPX A Q -40
+KPX A O -40
+KPX A G -50
+KPX A C -40
+
+KPX B U -10
+KPX B A -30
+
+KPX D period -30
+KPX D comma -30
+KPX D Y -70
+KPX D W -40
+KPX D V -40
+KPX D A -40
+
+KPX F period -100
+KPX F comma -100
+KPX F a -20
+KPX F A -80
+
+KPX J u -20
+KPX J period -20
+KPX J comma -20
+KPX J A -20
+
+KPX K y -40
+KPX K u -30
+KPX K o -35
+KPX K e -15
+KPX K O -30
+
+KPX L y -30
+KPX L quoteright -140
+KPX L quotedblright -140
+KPX L Y -120
+KPX L W -80
+KPX L V -110
+KPX L T -90
+
+KPX O period -40
+KPX O comma -40
+KPX O Y -70
+KPX O X -50
+KPX O W -50
+KPX O V -50
+KPX O T -40
+KPX O A -50
+
+KPX P period -120
+KPX P o -40
+KPX P e -30
+KPX P comma -120
+KPX P a -30
+KPX P A -100
+
+KPX Q period 20
+KPX Q comma 20
+KPX Q U -10
+
+KPX R Y -50
+KPX R W -40
+KPX R V -50
+KPX R U -20
+KPX R T -20
+KPX R O -20
+
+KPX T y -60
+KPX T w -60
+KPX T u -90
+KPX T semicolon -40
+KPX T r -80
+KPX T period -80
+KPX T o -80
+KPX T hyphen -120
+KPX T e -60
+KPX T comma -80
+KPX T colon -40
+KPX T a -80
+KPX T O -40
+KPX T A -90
+
+KPX U period -30
+KPX U comma -30
+KPX U A -50
+
+KPX V u -60
+KPX V semicolon -40
+KPX V period -120
+KPX V o -90
+KPX V hyphen -80
+KPX V e -50
+KPX V comma -120
+KPX V colon -40
+KPX V a -60
+KPX V O -50
+KPX V G -50
+KPX V A -80
+
+KPX W y -20
+KPX W u -45
+KPX W semicolon -10
+KPX W period -80
+KPX W o -60
+KPX W hyphen -40
+KPX W e -35
+KPX W comma -80
+KPX W colon -10
+KPX W a -40
+KPX W O -20
+KPX W A -60
+
+KPX Y u -100
+KPX Y semicolon -50
+KPX Y period -100
+KPX Y o -100
+KPX Y e -80
+KPX Y comma -100
+KPX Y colon -50
+KPX Y a -90
+KPX Y O -70
+KPX Y A -110
+
+KPX a y -20
+KPX a w -15
+KPX a v -15
+KPX a g -10
+
+KPX b y -20
+KPX b v -20
+KPX b u -20
+KPX b l -10
+
+KPX c y -10
+KPX c l -20
+KPX c k -20
+KPX c h -10
+
+KPX colon space -40
+
+KPX comma space -40
+KPX comma quoteright -120
+KPX comma quotedblright -120
+
+KPX d y -15
+KPX d w -15
+KPX d v -15
+KPX d d -10
+
+KPX e y -15
+KPX e x -15
+KPX e w -15
+KPX e v -15
+KPX e period 20
+KPX e comma 10
+
+KPX f quoteright 30
+KPX f quotedblright 30
+KPX f period -10
+KPX f o -20
+KPX f e -10
+KPX f comma -10
+
+KPX g g -10
+KPX g e 10
+
+KPX h y -20
+
+KPX k o -15
+
+KPX l y -15
+KPX l w -15
+
+KPX m y -30
+KPX m u -20
+
+KPX n y -20
+KPX n v -40
+KPX n u -10
+
+KPX o y -20
+KPX o x -30
+KPX o w -15
+KPX o v -20
+
+KPX p y -15
+
+KPX period space -40
+KPX period quoteright -120
+KPX period quotedblright -120
+
+KPX quotedblright space -80
+
+KPX quoteleft quoteleft -46
+
+KPX quoteright v -20
+KPX quoteright space -80
+KPX quoteright s -60
+KPX quoteright r -40
+KPX quoteright quoteright -46
+KPX quoteright l -20
+KPX quoteright d -80
+
+KPX r y 10
+KPX r v 10
+KPX r t 20
+KPX r s -15
+KPX r q -20
+KPX r period -60
+KPX r o -20
+KPX r hyphen -20
+KPX r g -15
+KPX r d -20
+KPX r comma -60
+KPX r c -20
+
+KPX s w -15
+
+KPX semicolon space -40
+
+KPX space quoteleft -60
+KPX space quotedblleft -80
+KPX space Y -120
+KPX space W -80
+KPX space V -80
+KPX space T -100
+
+KPX v period -80
+KPX v o -30
+KPX v comma -80
+KPX v a -20
+
+KPX w period -40
+KPX w o -20
+KPX w comma -40
+
+KPX x e -10
+
+KPX y period -80
+KPX y o -25
+KPX y e -10
+KPX y comma -80
+KPX y a -30
+
+KPX z e 10
+EndKernPairs
+EndKernData
+StartComposites 58
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 235 186 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 235 186 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 235 186 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 235 186 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 235 186 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 235 186 ;
+CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 215 0 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 207 186 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 207 186 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 207 186 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 207 186 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 13 186 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 13 186 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 13 186 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 13 186 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 235 186 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 263 186 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 263 186 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 263 186 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 263 186 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 263 186 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 207 186 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 235 186 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 235 186 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 235 186 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 235 186 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 207 186 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 207 186 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 179 186 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 112 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 112 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 112 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 112 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 112 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 112 0 ;
+CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 132 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 112 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 112 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 112 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 112 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -27 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -27 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -27 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -27 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 139 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 139 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 139 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 139 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 139 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 139 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 112 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 139 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 139 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 139 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 139 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 112 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 112 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 84 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/He-BdO+ b/font/font/He-BdO+
new file mode 100644
index 0000000..10e94dc
--- /dev/null
+++ b/font/font/He-BdO+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 722 ; N Ccaron ; B 107 -19 802 930 ;
+C -1 ; WX 556 ; N ccaron ; B 79 -14 639 750 ;
+C -1 ; WX 722 ; N Dcaron ; B 76 0 777 930 ;
+C -1 ; WX 748 ; N dcaron ; B 82 -14 919 790 ;
+C -1 ; WX 667 ; N Ecaron ; B 76 0 757 930 ;
+C -1 ; WX 556 ; N ecaron ; B 70 -14 613 750 ;
+C -1 ; WX 611 ; N Lcaron ; B 76 0 611 790 ;
+C -1 ; WX 611 ; N Lacute ; B 76 0 692 930 ;
+C -1 ; WX 415 ; N lcaron ; B 69 0 577 790 ;
+C -1 ; WX 278 ; N lacute ; B 69 0 554 930 ;
+C -1 ; WX 722 ; N Ncaron ; B 69 0 807 930 ;
+C -1 ; WX 611 ; N ncaron ; B 65 0 641 750 ;
+C -1 ; WX 722 ; N Rcaron ; B 76 0 778 930 ;
+C -1 ; WX 722 ; N Racute ; B 76 0 800 930 ;
+C -1 ; WX 389 ; N rcaron ; B 64 0 530 750 ;
+C -1 ; WX 389 ; N racute ; B 64 0 571 750 ;
+C -1 ; WX 611 ; N Tcaron ; B 140 0 751 930 ;
+C -1 ; WX 470 ; N tcaron ; B 100 -6 637 718 ;
+C -1 ; WX 722 ; N Uring ; B 116 -19 804 930 ;
+C -1 ; WX 611 ; N uring ; B 98 -14 658 776 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 300 180 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 137 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 232 180 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 557 72 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 205 180 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 111 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 220 72 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 177 180 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 215 72 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 39 180 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 232 180 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 139 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 232 180 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 285 180 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 28 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 56 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 177 180 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 275 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 226 154 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 139 0 ;
+EndBuildComposites
diff --git a/font/font/He-Bl b/font/font/He-Bl
new file mode 100644
index 0000000..c28daaf
--- /dev/null
+++ b/font/font/He-Bl
@@ -0,0 +1,445 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1984 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date:Thu Feb 12 17:25:06 PST 1987
+FontName Helvetica-Black
+EncodingScheme AdobeStandardEncoding
+FullName Helvetica Black
+FamilyName Helvetica
+Weight Black
+ItalicAngle 0.0
+IsFixedPitch false
+UnderlinePosition -90
+UnderlineThickness 58
+Version 001.001
+Notice Helvetica is a trademark of Allied Corporation.
+FontBBox -167 -232 1007 1013
+CapHeight 720
+XHeight 524
+Descender -178
+Ascender 720
+StartCharMetrics 228
+C 32 ; WX 333 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 333 ; N exclam ; B 60 0 273 720 ;
+C 34 ; WX 500 ; N quotedbl ; B 99 449 401 720 ;
+C 35 ; WX 660 ; N numbersign ; B 84 0 576 705 ;
+C 36 ; WX 667 ; N dollar ; B 23 -112 636 777 ;
+C 37 ; WX 1000 ; N percent ; B 6 -31 993 747 ;
+C 38 ; WX 889 ; N ampersand ; B 45 -19 844 720 ;
+C 39 ; WX 278 ; N quoteright ; B 42 359 225 720 ;
+C 40 ; WX 389 ; N parenleft ; B 47 -178 334 720 ;
+C 41 ; WX 389 ; N parenright ; B 55 -178 342 720 ;
+C 42 ; WX 556 ; N asterisk ; B 54 295 502 720 ;
+C 43 ; WX 660 ; N plus ; B 78 0 582 505 ;
+C 44 ; WX 333 ; N comma ; B 58 -176 270 206 ;
+C 45 ; WX 333 ; N hyphen ; B 32 165 300 347 ;
+C 46 ; WX 333 ; N period ; B 60 0 272 206 ;
+C 47 ; WX 278 ; N slash ; B -32 -90 310 720 ;
+C 48 ; WX 667 ; N zero ; B 28 -15 639 715 ;
+C 49 ; WX 667 ; N one ; B 98 0 469 715 ;
+C 50 ; WX 667 ; N two ; B 56 0 651 715 ;
+C 51 ; WX 667 ; N three ; B 35 -15 632 715 ;
+C 52 ; WX 667 ; N four ; B 25 0 636 705 ;
+C 53 ; WX 667 ; N five ; B 23 -15 633 705 ;
+C 54 ; WX 667 ; N six ; B 27 -15 640 715 ;
+C 55 ; WX 667 ; N seven ; B 56 0 623 705 ;
+C 56 ; WX 667 ; N eight ; B 29 -15 637 715 ;
+C 57 ; WX 667 ; N nine ; B 25 -15 638 715 ;
+C 58 ; WX 333 ; N colon ; B 60 0 272 524 ;
+C 59 ; WX 333 ; N semicolon ; B 58 -176 270 524 ;
+C 60 ; WX 660 ; N less ; B 75 -20 584 532 ;
+C 61 ; WX 660 ; N equal ; B 78 100 582 412 ;
+C 62 ; WX 660 ; N greater ; B 74 -20 583 532 ;
+C 63 ; WX 611 ; N question ; B 27 0 581 739 ;
+C 64 ; WX 740 ; N at ; B 5 -19 734 739 ;
+C 65 ; WX 778 ; N A ; B 11 0 767 720 ;
+C 66 ; WX 778 ; N B ; B 72 0 733 720 ;
+C 67 ; WX 778 ; N C ; B 22 -19 748 739 ;
+C 68 ; WX 778 ; N D ; B 65 0 757 720 ;
+C 69 ; WX 722 ; N E ; B 76 0 677 720 ;
+C 70 ; WX 667 ; N F ; B 74 0 634 720 ;
+C 71 ; WX 833 ; N G ; B 39 -19 766 739 ;
+C 72 ; WX 833 ; N H ; B 69 0 764 720 ;
+C 73 ; WX 389 ; N I ; B 76 0 312 720 ;
+C 74 ; WX 667 ; N J ; B 25 -19 595 720 ;
+C 75 ; WX 833 ; N K ; B 75 0 823 720 ;
+C 76 ; WX 667 ; N L ; B 76 0 636 720 ;
+C 77 ; WX 944 ; N M ; B 60 0 884 720 ;
+C 78 ; WX 833 ; N N ; B 69 0 764 720 ;
+C 79 ; WX 833 ; N O ; B 39 -19 794 739 ;
+C 80 ; WX 722 ; N P ; B 57 0 711 720 ;
+C 81 ; WX 833 ; N Q ; B 39 -81 794 739 ;
+C 82 ; WX 778 ; N R ; B 61 0 746 720 ;
+C 83 ; WX 722 ; N S ; B 33 -19 689 739 ;
+C 84 ; WX 722 ; N T ; B 31 0 691 720 ;
+C 85 ; WX 833 ; N U ; B 70 -19 763 720 ;
+C 86 ; WX 778 ; N V ; B 22 0 755 720 ;
+C 87 ; WX 1000 ; N W ; B 5 0 994 720 ;
+C 88 ; WX 778 ; N X ; B 8 0 770 720 ;
+C 89 ; WX 778 ; N Y ; B 3 0 775 720 ;
+C 90 ; WX 722 ; N Z ; B 36 0 685 720 ;
+C 91 ; WX 389 ; N bracketleft ; B 44 -178 356 720 ;
+C 92 ; WX 278 ; N backslash ; B -107 0 385 720 ;
+C 93 ; WX 389 ; N bracketright ; B 33 -178 345 720 ;
+C 94 ; WX 660 ; N asciicircum ; B 90 291 570 715 ;
+C 95 ; WX 500 ; N underscore ; B 0 -119 500 -61 ;
+C 96 ; WX 278 ; N quoteleft ; B 53 378 236 739 ;
+C 97 ; WX 667 ; N a ; B 25 -15 634 539 ;
+C 98 ; WX 667 ; N b ; B 48 -15 635 720 ;
+C 99 ; WX 667 ; N c ; B 32 -15 622 539 ;
+C 100 ; WX 667 ; N d ; B 33 -15 619 720 ;
+C 101 ; WX 667 ; N e ; B 31 -15 636 539 ;
+C 102 ; WX 389 ; N f ; B 9 0 373 739 ; L i fi ; L l fl ;
+C 103 ; WX 667 ; N g ; B 34 -178 610 539 ;
+C 104 ; WX 667 ; N h ; B 48 0 618 720 ;
+C 105 ; WX 333 ; N i ; B 62 0 270 739 ;
+C 106 ; WX 333 ; N j ; B -20 -178 282 739 ;
+C 107 ; WX 667 ; N k ; B 53 0 662 720 ;
+C 108 ; WX 333 ; N l ; B 62 0 270 720 ;
+C 109 ; WX 1000 ; N m ; B 45 0 955 539 ;
+C 110 ; WX 667 ; N n ; B 48 0 618 539 ;
+C 111 ; WX 667 ; N o ; B 35 -15 631 539 ;
+C 112 ; WX 667 ; N p ; B 44 -178 631 539 ;
+C 113 ; WX 667 ; N q ; B 27 -178 616 539 ;
+C 114 ; WX 444 ; N r ; B 52 0 431 538 ;
+C 115 ; WX 611 ; N s ; B 33 -15 578 539 ;
+C 116 ; WX 444 ; N t ; B 14 -4 396 687 ;
+C 117 ; WX 667 ; N u ; B 48 -15 618 524 ;
+C 118 ; WX 611 ; N v ; B 10 0 601 524 ;
+C 119 ; WX 944 ; N w ; B 21 0 923 524 ;
+C 120 ; WX 667 ; N x ; B 27 0 639 524 ;
+C 121 ; WX 611 ; N y ; B 6 -178 598 524 ;
+C 122 ; WX 556 ; N z ; B 26 0 530 524 ;
+C 123 ; WX 389 ; N braceleft ; B 25 -181 367 741 ;
+C 124 ; WX 278 ; N bar ; B 79 0 198 739 ;
+C 125 ; WX 389 ; N braceright ; B 22 -180 364 742 ;
+C 126 ; WX 660 ; N asciitilde ; B 78 153 582 359 ;
+C 161 ; WX 333 ; N exclamdown ; B 60 -193 273 524 ;
+C 162 ; WX 667 ; N cent ; B 35 -147 628 655 ;
+C 163 ; WX 667 ; N sterling ; B 33 -12 644 727 ;
+C 164 ; WX 167 ; N fraction ; B -167 -15 334 715 ;
+C 165 ; WX 667 ; N yen ; B -1 0 668 720 ;
+C 166 ; WX 667 ; N florin ; B 48 -184 622 747 ;
+C 167 ; WX 667 ; N section ; B 73 -171 593 739 ;
+C 168 ; WX 660 ; N currency ; B 76 58 583 563 ;
+C 169 ; WX 278 ; N quotesingle ; B 79 449 198 720 ;
+C 170 ; WX 500 ; N quotedblleft ; B 41 378 471 739 ;
+C 171 ; WX 667 ; N guillemotleft ; B 120 64 547 448 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 75 64 258 448 ;
+C 173 ; WX 333 ; N guilsinglright ; B 75 64 258 448 ;
+C 174 ; WX 667 ; N fi ; B 9 0 622 739 ;
+C 175 ; WX 667 ; N fl ; B 9 0 622 739 ;
+C 177 ; WX 500 ; N endash ; B 0 187 500 325 ;
+C 178 ; WX 667 ; N dagger ; B 82 -178 584 720 ;
+C 179 ; WX 667 ; N daggerdbl ; B 82 -178 584 720 ;
+C 180 ; WX 333 ; N periodcentered ; B 36 126 296 386 ;
+C 182 ; WX 850 ; N paragraph ; B 54 -178 707 720 ;
+C 183 ; WX 500 ; N bullet ; B 81 192 418 529 ;
+C 184 ; WX 278 ; N quotesinglbase ; B 42 -178 225 183 ;
+C 185 ; WX 500 ; N quotedblbase ; B 29 -178 459 183 ;
+C 186 ; WX 500 ; N quotedblright ; B 29 359 459 720 ;
+C 187 ; WX 667 ; N guillemotright ; B 120 64 547 448 ;
+C 188 ; WX 1000 ; N ellipsis ; B 61 0 939 206 ;
+C 189 ; WX 1000 ; N perthousand ; B -7 -32 1007 751 ;
+C 191 ; WX 611 ; N questiondown ; B 30 -216 584 524 ;
+C 193 ; WX 333 ; N grave ; B -36 591 272 739 ;
+C 194 ; WX 333 ; N acute ; B 66 591 375 739 ;
+C 195 ; WX 333 ; N circumflex ; B -34 591 373 739 ;
+C 196 ; WX 333 ; N tilde ; B -27 590 365 731 ;
+C 197 ; WX 333 ; N macron ; B -19 619 358 709 ;
+C 198 ; WX 333 ; N breve ; B -12 590 351 743 ;
+C 199 ; WX 333 ; N dotaccent ; B 82 596 251 726 ;
+C 200 ; WX 333 ; N dieresis ; B -29 596 368 726 ;
+C 202 ; WX 333 ; N ring ; B 54 593 279 817 ;
+C 203 ; WX 333 ; N cedilla ; B 28 -232 287 0 ;
+C 205 ; WX 333 ; N hungarumlaut ; B 66 591 627 739 ;
+C 206 ; WX 333 ; N ogonek ; B 73 -205 278 0 ;
+C 207 ; WX 333 ; N caron ; B -34 591 373 739 ;
+C 208 ; WX 1000 ; N emdash ; B 0 187 1000 325 ;
+C 225 ; WX 1000 ; N AE ; B 3 0 981 720 ;
+C 227 ; WX 400 ; N ordfeminine ; B 2 262 398 739 ;
+C 232 ; WX 667 ; N Lslash ; B -20 0 627 720 ;
+C 233 ; WX 833 ; N Oslash ; B 39 -76 794 784 ;
+C 234 ; WX 1000 ; N OE ; B 6 -19 981 739 ;
+C 235 ; WX 400 ; N ordmasculine ; B 6 262 394 739 ;
+C 241 ; WX 1000 ; N ae ; B 38 -15 957 539 ;
+C 245 ; WX 333 ; N dotlessi ; B 62 0 270 524 ;
+C 248 ; WX 333 ; N lslash ; B -1 0 333 720 ;
+C 249 ; WX 667 ; N oslash ; B 35 -72 631 581 ;
+C 250 ; WX 1000 ; N oe ; B 35 -15 961 539 ;
+C 251 ; WX 667 ; N germandbls ; B 48 -15 627 739 ;
+C -1 ; WX 778 ; N Aacute ; B 11 0 767 935 ;
+C -1 ; WX 778 ; N Acircumflex ; B 11 0 767 935 ;
+C -1 ; WX 778 ; N Adieresis ; B 11 0 767 922 ;
+C -1 ; WX 778 ; N Agrave ; B 11 0 767 935 ;
+C -1 ; WX 778 ; N Aring ; B 11 0 767 1013 ;
+C -1 ; WX 778 ; N Atilde ; B 11 0 767 927 ;
+C -1 ; WX 778 ; N Ccedilla ; B 22 -232 748 739 ;
+C -1 ; WX 722 ; N Eacute ; B 76 0 677 935 ;
+C -1 ; WX 722 ; N Ecircumflex ; B 76 0 677 935 ;
+C -1 ; WX 722 ; N Edieresis ; B 76 0 677 922 ;
+C -1 ; WX 722 ; N Egrave ; B 76 0 677 935 ;
+C -1 ; WX 778 ; N Eth ; B 0 0 757 720 ;
+C -1 ; WX 389 ; N Iacute ; B 76 0 403 935 ;
+C -1 ; WX 389 ; N Icircumflex ; B -6 0 401 935 ;
+C -1 ; WX 389 ; N Idieresis ; B -1 0 396 922 ;
+C -1 ; WX 389 ; N Igrave ; B -8 0 312 935 ;
+C -1 ; WX 833 ; N Ntilde ; B 69 0 764 927 ;
+C -1 ; WX 833 ; N Oacute ; B 39 -19 794 935 ;
+C -1 ; WX 833 ; N Ocircumflex ; B 39 -19 794 935 ;
+C -1 ; WX 833 ; N Odieresis ; B 39 -19 794 922 ;
+C -1 ; WX 833 ; N Ograve ; B 39 -19 794 935 ;
+C -1 ; WX 833 ; N Otilde ; B 39 -19 794 927 ;
+C -1 ; WX 722 ; N Scaron ; B 33 -19 689 935 ;
+C -1 ; WX 722 ; N Thorn ; B 57 0 711 720 ;
+C -1 ; WX 833 ; N Uacute ; B 70 -19 763 935 ;
+C -1 ; WX 833 ; N Ucircumflex ; B 70 -19 763 935 ;
+C -1 ; WX 833 ; N Udieresis ; B 70 -19 763 922 ;
+C -1 ; WX 833 ; N Ugrave ; B 70 -19 763 935 ;
+C -1 ; WX 778 ; N Yacute ; B 3 0 775 935 ;
+C -1 ; WX 778 ; N Ydieresis ; B 3 0 775 922 ;
+C -1 ; WX 722 ; N Zcaron ; B 36 0 685 935 ;
+C -1 ; WX 667 ; N aacute ; B 25 -15 634 739 ;
+C -1 ; WX 667 ; N acircumflex ; B 25 -15 634 739 ;
+C -1 ; WX 667 ; N adieresis ; B 25 -15 634 726 ;
+C -1 ; WX 667 ; N agrave ; B 25 -15 634 739 ;
+C -1 ; WX 667 ; N aring ; B 25 -15 634 817 ;
+C -1 ; WX 667 ; N atilde ; B 25 -15 634 731 ;
+C -1 ; WX 278 ; N brokenbar ; B 79 0 198 739 ;
+C -1 ; WX 667 ; N ccedilla ; B 32 -232 622 539 ;
+C -1 ; WX 800 ; N copyright ; B 21 -19 779 739 ;
+C -1 ; WX 400 ; N degree ; B 50 415 350 715 ;
+C -1 ; WX 660 ; N divide ; B 78 7 582 505 ;
+C -1 ; WX 667 ; N eacute ; B 31 -15 636 739 ;
+C -1 ; WX 667 ; N ecircumflex ; B 31 -15 636 739 ;
+C -1 ; WX 667 ; N edieresis ; B 31 -15 636 726 ;
+C -1 ; WX 667 ; N egrave ; B 31 -15 636 739 ;
+C -1 ; WX 667 ; N eth ; B 35 -15 631 739 ;
+C -1 ; WX 333 ; N iacute ; B 62 0 375 739 ;
+C -1 ; WX 333 ; N icircumflex ; B -34 0 373 739 ;
+C -1 ; WX 333 ; N idieresis ; B -29 0 368 726 ;
+C -1 ; WX 333 ; N igrave ; B -36 0 272 739 ;
+C -1 ; WX 660 ; N logicalnot ; B 78 120 582 412 ;
+C -1 ; WX 660 ; N minus ; B 78 198 582 314 ;
+C -1 ; WX 667 ; N mu ; B 48 -178 618 524 ;
+C -1 ; WX 660 ; N multiply ; B 79 3 581 505 ;
+C -1 ; WX 667 ; N ntilde ; B 48 0 618 731 ;
+C -1 ; WX 667 ; N oacute ; B 35 -15 631 739 ;
+C -1 ; WX 667 ; N ocircumflex ; B 35 -15 631 739 ;
+C -1 ; WX 667 ; N odieresis ; B 35 -15 631 726 ;
+C -1 ; WX 667 ; N ograve ; B 35 -15 631 739 ;
+C -1 ; WX 1000 ; N onehalf ; B 40 -15 960 739 ;
+C -1 ; WX 1000 ; N onequarter ; B 40 -15 960 739 ;
+C -1 ; WX 400 ; N onesuperior ; B 80 310 321 739 ;
+C -1 ; WX 667 ; N otilde ; B 35 -15 631 731 ;
+C -1 ; WX 660 ; N plusminus ; B 78 0 582 603 ;
+C -1 ; WX 800 ; N registered ; B 21 -19 779 739 ;
+C -1 ; WX 611 ; N scaron ; B 33 -15 578 739 ;
+C -1 ; WX 667 ; N thorn ; B 44 -178 631 739 ;
+C -1 ; WX 1000 ; N threequarters ; B 40 -15 960 715 ;
+C -1 ; WX 400 ; N threesuperior ; B 6 277 395 715 ;
+C -1 ; WX 950 ; N trademark ; B 28 316 886 720 ;
+C -1 ; WX 400 ; N twosuperior ; B 7 310 394 739 ;
+C -1 ; WX 667 ; N uacute ; B 48 -15 618 739 ;
+C -1 ; WX 667 ; N ucircumflex ; B 48 -15 618 739 ;
+C -1 ; WX 667 ; N udieresis ; B 48 -15 618 726 ;
+C -1 ; WX 667 ; N ugrave ; B 48 -15 618 739 ;
+C -1 ; WX 611 ; N yacute ; B 6 -178 598 739 ;
+C -1 ; WX 611 ; N ydieresis ; B 6 -178 598 726 ;
+C -1 ; WX 556 ; N zcaron ; B 26 0 530 739 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 115
+
+KPX A y -18
+KPX A w -18
+KPX A v -18
+KPX A quoteright -74
+KPX A Y -74
+KPX A W -37
+KPX A V -74
+KPX A T -92
+
+KPX F period -129
+KPX F comma -129
+KPX F A -55
+
+KPX L y -37
+KPX L quoteright -74
+KPX L Y -92
+KPX L W -55
+KPX L V -92
+KPX L T -92
+
+KPX P period -129
+KPX P comma -129
+KPX P A -74
+
+KPX R y 0
+KPX R Y -37
+KPX R W -18
+KPX R V -18
+KPX R T -18
+
+KPX T y -92
+KPX T w -92
+KPX T u -92
+KPX T semicolon -68
+KPX T s -111
+KPX T r -92
+KPX T period -111
+KPX T o -111
+KPX T i 0
+KPX T hyphen -100
+KPX T e -111
+KPX T comma -111
+KPX T colon -68
+KPX T c -111
+KPX T a -111
+KPX T A -74
+
+KPX V y -18
+KPX V u -37
+KPX V semicolon -74
+KPX V r -37
+KPX V period -129
+KPX V o -55
+KPX V i -18
+KPX V hyphen -55
+KPX V e -55
+KPX V comma -129
+KPX V colon -74
+KPX V a -55
+KPX V A -74
+
+KPX W y 0
+KPX W u -18
+KPX W semicolon -18
+KPX W r -18
+KPX W period -74
+KPX W o -18
+KPX W i 0
+KPX W hyphen 0
+KPX W e -18
+KPX W comma -74
+KPX W colon -18
+KPX W a -37
+KPX W A -37
+
+KPX Y v -55
+KPX Y u -74
+KPX Y semicolon -74
+KPX Y q -92
+KPX Y period -111
+KPX Y p -74
+KPX Y o -92
+KPX Y i -20
+KPX Y hyphen -92
+KPX Y e -92
+KPX Y comma -111
+KPX Y colon -74
+KPX Y a -92
+KPX Y A -74
+
+KPX f quoteright 24
+KPX f f -18
+
+KPX quoteleft quoteleft -18
+
+KPX quoteright t -18
+KPX quoteright s -62
+KPX quoteright quoteright -18
+
+KPX r z 0
+KPX r y 18
+KPX r x 0
+KPX r w 0
+KPX r v 18
+KPX r u 0
+KPX r t 18
+KPX r r 0
+KPX r quoteright 0
+KPX r q -18
+KPX r period -92
+KPX r o -18
+KPX r n 18
+KPX r m 18
+KPX r hyphen -12
+KPX r h 0
+KPX r g 18
+KPX r f 18
+KPX r e -18
+KPX r d -18
+KPX r comma -92
+KPX r c -18
+
+KPX v period -74
+KPX v comma -74
+
+KPX w period -55
+KPX w comma -55
+
+KPX y period -92
+KPX y comma -92
+EndKernPairs
+EndKernData
+StartComposites 58
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 194 196 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 111 0 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 194 196 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 139 0 ;
+CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 222 0 ;
+CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 167 0 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 222 196 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 139 0 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 222 196 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 139 0 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 250 196 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 250 196 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 250 196 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 250 196 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 167 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 167 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 167 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 167 0 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 28 196 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 28 196 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 28 196 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 28 196 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute 0 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex 0 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis 0 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave 0 0 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 194 196 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 194 196 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 194 196 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 194 196 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 167 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 167 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 167 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 167 0 ;
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 222 196 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 222 196 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 222 196 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 222 196 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 167 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 167 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 167 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 167 0 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 250 196 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 250 196 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 250 196 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 250 196 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 167 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 167 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 167 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 167 0 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 222 196 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 167 0 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 250 196 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 167 0 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 250 196 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 167 0 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 222 196 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 167 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/He-Bl+ b/font/font/He-Bl+
new file mode 100644
index 0000000..ca7ce67
--- /dev/null
+++ b/font/font/He-Bl+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 778 ; N Ccaron ; B 22 -19 748 934 ;
+C -1 ; WX 667 ; N ccaron ; B 32 -15 622 739 ;
+C -1 ; WX 778 ; N Dcaron ; B 65 0 757 934 ;
+C -1 ; WX 795 ; N dcaron ; B 33 -15 820 792 ;
+C -1 ; WX 722 ; N Ecaron ; B 76 0 677 934 ;
+C -1 ; WX 667 ; N ecaron ; B 31 -15 636 739 ;
+C -1 ; WX 667 ; N Lcaron ; B 76 0 636 792 ;
+C -1 ; WX 667 ; N Lacute ; B 76 0 636 934 ;
+C -1 ; WX 461 ; N lcaron ; B 62 0 471 792 ;
+C -1 ; WX 333 ; N lacute ; B 62 0 406 934 ;
+C -1 ; WX 833 ; N Ncaron ; B 69 0 764 934 ;
+C -1 ; WX 667 ; N ncaron ; B 48 0 618 739 ;
+C -1 ; WX 778 ; N Rcaron ; B 61 0 746 934 ;
+C -1 ; WX 778 ; N Racute ; B 61 0 746 934 ;
+C -1 ; WX 444 ; N rcaron ; B 21 0 431 739 ;
+C -1 ; WX 444 ; N racute ; B 52 0 461 739 ;
+C -1 ; WX 722 ; N Tcaron ; B 31 0 691 934 ;
+C -1 ; WX 572 ; N tcaron ; B 14 -4 597 720 ;
+C -1 ; WX 833 ; N Uring ; B 70 -19 763 934 ;
+C -1 ; WX 667 ; N uring ; B 48 -15 618 817 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 295 195 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 197 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 222 195 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 595 72 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 194 195 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 167 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 288 72 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 167 195 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 246 72 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 31 195 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 250 195 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 167 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 222 195 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 281 195 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 55 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 86 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 194 195 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 372 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 250 117 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 167 0 ;
+EndBuildComposites
diff --git a/font/font/He-BlO b/font/font/He-BlO
new file mode 100644
index 0000000..913d2cc
--- /dev/null
+++ b/font/font/He-BlO
@@ -0,0 +1,445 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1984 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date:Fri Feb 13 09:53:49 PST 1987
+FontName Helvetica-BlackOblique
+EncodingScheme AdobeStandardEncoding
+FullName Helvetica.Black Oblique
+FamilyName Helvetica
+Weight Black
+ItalicAngle -10.0
+IsFixedPitch false
+UnderlinePosition -90
+UnderlineThickness 58
+Version 001.001
+Notice Helvetica is a trademark of Allied Corporation.
+FontBBox -170 -232 1121 1013
+CapHeight 720
+XHeight 524
+Descender -178
+Ascender 720
+StartCharMetrics 228
+C 32 ; WX 333 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 333 ; N exclam ; B 61 0 400 720 ;
+C 34 ; WX 500 ; N quotedbl ; B 178 449 528 720 ;
+C 35 ; WX 660 ; N numbersign ; B 123 0 663 705 ;
+C 36 ; WX 667 ; N dollar ; B 59 -112 718 777 ;
+C 37 ; WX 1000 ; N percent ; B 95 -31 1031 747 ;
+C 38 ; WX 889 ; N ampersand ; B 74 -19 862 720 ;
+C 39 ; WX 278 ; N quoteright ; B 105 359 352 720 ;
+C 40 ; WX 389 ; N parenleft ; B 80 -178 461 720 ;
+C 41 ; WX 389 ; N parenright ; B 24 -178 405 720 ;
+C 42 ; WX 556 ; N asterisk ; B 145 295 595 720 ;
+C 43 ; WX 660 ; N plus ; B 113 0 637 505 ;
+C 44 ; WX 333 ; N comma ; B 27 -176 306 206 ;
+C 45 ; WX 333 ; N hyphen ; B 61 165 361 347 ;
+C 46 ; WX 333 ; N period ; B 60 0 308 206 ;
+C 47 ; WX 278 ; N slash ; B -48 -90 437 720 ;
+C 48 ; WX 667 ; N zero ; B 81 -15 711 715 ;
+C 49 ; WX 667 ; N one ; B 170 0 595 715 ;
+C 50 ; WX 667 ; N two ; B 56 0 741 715 ;
+C 51 ; WX 667 ; N three ; B 72 -15 707 715 ;
+C 52 ; WX 667 ; N four ; B 51 0 689 705 ;
+C 53 ; WX 667 ; N five ; B 55 -15 700 705 ;
+C 54 ; WX 667 ; N six ; B 79 -15 716 715 ;
+C 55 ; WX 667 ; N seven ; B 150 0 747 705 ;
+C 56 ; WX 667 ; N eight ; B 63 -15 706 715 ;
+C 57 ; WX 667 ; N nine ; B 72 -15 709 715 ;
+C 58 ; WX 333 ; N colon ; B 60 0 364 524 ;
+C 59 ; WX 333 ; N semicolon ; B 27 -176 362 524 ;
+C 60 ; WX 660 ; N less ; B 111 -20 678 532 ;
+C 61 ; WX 660 ; N equal ; B 96 100 655 412 ;
+C 62 ; WX 660 ; N greater ; B 70 -20 637 532 ;
+C 63 ; WX 611 ; N question ; B 116 0 678 739 ;
+C 64 ; WX 740 ; N at ; B 62 -19 814 739 ;
+C 65 ; WX 778 ; N A ; B 11 0 767 720 ;
+C 66 ; WX 778 ; N B ; B 72 0 805 720 ;
+C 67 ; WX 778 ; N C ; B 78 -19 823 739 ;
+C 68 ; WX 778 ; N D ; B 65 0 831 720 ;
+C 69 ; WX 722 ; N E ; B 76 0 790 720 ;
+C 70 ; WX 667 ; N F ; B 74 0 761 720 ;
+C 71 ; WX 833 ; N G ; B 93 -19 840 739 ;
+C 72 ; WX 833 ; N H ; B 69 0 891 720 ;
+C 73 ; WX 389 ; N I ; B 76 0 439 720 ;
+C 74 ; WX 667 ; N J ; B 64 -19 722 720 ;
+C 75 ; WX 833 ; N K ; B 75 0 922 720 ;
+C 76 ; WX 667 ; N L ; B 76 0 666 720 ;
+C 77 ; WX 944 ; N M ; B 60 0 1011 720 ;
+C 78 ; WX 833 ; N N ; B 69 0 891 720 ;
+C 79 ; WX 833 ; N O ; B 95 -19 865 739 ;
+C 80 ; WX 722 ; N P ; B 57 0 800 720 ;
+C 81 ; WX 833 ; N Q ; B 95 -81 865 739 ;
+C 82 ; WX 778 ; N R ; B 61 0 816 720 ;
+C 83 ; WX 722 ; N S ; B 70 -19 759 739 ;
+C 84 ; WX 722 ; N T ; B 125 0 818 720 ;
+C 85 ; WX 833 ; N U ; B 116 -19 890 720 ;
+C 86 ; WX 778 ; N V ; B 149 0 882 720 ;
+C 87 ; WX 1000 ; N W ; B 132 0 1121 720 ;
+C 88 ; WX 778 ; N X ; B 8 0 895 720 ;
+C 89 ; WX 778 ; N Y ; B 130 0 902 720 ;
+C 90 ; WX 722 ; N Z ; B 36 0 798 720 ;
+C 91 ; WX 389 ; N bracketleft ; B 13 -178 483 720 ;
+C 92 ; WX 278 ; N backslash ; B 20 0 385 720 ;
+C 93 ; WX 389 ; N bracketright ; B 2 -178 472 720 ;
+C 94 ; WX 660 ; N asciicircum ; B 150 291 630 715 ;
+C 95 ; WX 500 ; N underscore ; B -21 -119 489 -61 ;
+C 96 ; WX 278 ; N quoteleft ; B 120 378 366 739 ;
+C 97 ; WX 667 ; N a ; B 47 -15 672 539 ;
+C 98 ; WX 667 ; N b ; B 48 -15 688 720 ;
+C 99 ; WX 667 ; N c ; B 72 -15 676 539 ;
+C 100 ; WX 667 ; N d ; B 72 -15 746 720 ;
+C 101 ; WX 667 ; N e ; B 71 -15 682 539 ;
+C 102 ; WX 389 ; N f ; B 78 0 503 739 ; L i fi ; L l fl ;
+C 103 ; WX 667 ; N g ; B 56 -178 702 539 ;
+C 104 ; WX 667 ; N h ; B 48 0 680 720 ;
+C 105 ; WX 333 ; N i ; B 62 0 400 739 ;
+C 106 ; WX 333 ; N j ; B -51 -178 412 739 ;
+C 107 ; WX 667 ; N k ; B 53 0 729 720 ;
+C 108 ; WX 333 ; N l ; B 62 0 397 720 ;
+C 109 ; WX 1000 ; N m ; B 45 0 1017 539 ;
+C 110 ; WX 667 ; N n ; B 48 0 680 539 ;
+C 111 ; WX 667 ; N o ; B 75 -15 683 539 ;
+C 112 ; WX 667 ; N p ; B 13 -178 684 539 ;
+C 113 ; WX 667 ; N q ; B 68 -178 708 539 ;
+C 114 ; WX 444 ; N r ; B 52 0 525 538 ;
+C 115 ; WX 611 ; N s ; B 61 -15 624 539 ;
+C 116 ; WX 444 ; N t ; B 85 -4 488 687 ;
+C 117 ; WX 667 ; N u ; B 78 -15 710 524 ;
+C 118 ; WX 611 ; N v ; B 102 0 693 524 ;
+C 119 ; WX 944 ; N w ; B 113 0 1015 524 ;
+C 120 ; WX 667 ; N x ; B 27 0 729 524 ;
+C 121 ; WX 611 ; N y ; B 45 -178 690 524 ;
+C 122 ; WX 556 ; N z ; B 26 0 611 524 ;
+C 123 ; WX 389 ; N braceleft ; B 74 -181 497 741 ;
+C 124 ; WX 278 ; N bar ; B 79 0 328 739 ;
+C 125 ; WX 389 ; N braceright ; B -9 -180 414 742 ;
+C 126 ; WX 660 ; N asciitilde ; B 118 153 632 359 ;
+C 161 ; WX 333 ; N exclamdown ; B 26 -193 362 524 ;
+C 162 ; WX 667 ; N cent ; B 76 -147 707 655 ;
+C 163 ; WX 667 ; N sterling ; B 63 -12 719 727 ;
+C 164 ; WX 167 ; N fraction ; B -170 -15 460 715 ;
+C 165 ; WX 667 ; N yen ; B 33 0 795 720 ;
+C 166 ; WX 667 ; N florin ; B 19 -184 751 747 ;
+C 167 ; WX 667 ; N section ; B 106 -171 655 739 ;
+C 168 ; WX 660 ; N currency ; B 100 58 668 563 ;
+C 169 ; WX 278 ; N quotesingle ; B 158 449 325 720 ;
+C 170 ; WX 500 ; N quotedblleft ; B 108 378 601 739 ;
+C 171 ; WX 667 ; N guillemotleft ; B 152 64 626 448 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 107 64 337 448 ;
+C 173 ; WX 333 ; N guilsinglright ; B 86 64 316 448 ;
+C 174 ; WX 667 ; N fi ; B 78 0 752 739 ;
+C 175 ; WX 667 ; N fl ; B 78 0 749 739 ;
+C 177 ; WX 500 ; N endash ; B 33 187 557 325 ;
+C 178 ; WX 667 ; N dagger ; B 145 -178 675 720 ;
+C 179 ; WX 667 ; N daggerdbl ; B 83 -178 679 720 ;
+C 180 ; WX 333 ; N periodcentered ; B 79 126 343 386 ;
+C 182 ; WX 850 ; N paragraph ; B 146 -178 834 720 ;
+C 183 ; WX 500 ; N bullet ; B 142 192 484 529 ;
+C 184 ; WX 278 ; N quotesinglbase ; B 11 -178 257 183 ;
+C 185 ; WX 500 ; N quotedblbase ; B -2 -178 491 183 ;
+C 186 ; WX 500 ; N quotedblright ; B 92 359 586 720 ;
+C 187 ; WX 667 ; N guillemotright ; B 131 64 605 448 ;
+C 188 ; WX 1000 ; N ellipsis ; B 61 0 975 206 ;
+C 189 ; WX 1000 ; N perthousand ; B 57 -32 1033 751 ;
+C 191 ; WX 611 ; N questiondown ; B 25 -216 587 524 ;
+C 193 ; WX 333 ; N grave ; B 94 591 376 739 ;
+C 194 ; WX 333 ; N acute ; B 170 591 505 739 ;
+C 195 ; WX 333 ; N circumflex ; B 70 591 477 739 ;
+C 196 ; WX 333 ; N tilde ; B 77 590 494 731 ;
+C 197 ; WX 333 ; N macron ; B 90 619 483 709 ;
+C 198 ; WX 333 ; N breve ; B 118 590 482 743 ;
+C 199 ; WX 333 ; N dotaccent ; B 187 596 379 726 ;
+C 200 ; WX 333 ; N dieresis ; B 76 596 496 726 ;
+C 202 ; WX 333 ; N ring ; B 177 593 405 817 ;
+C 203 ; WX 333 ; N cedilla ; B -8 -232 264 0 ;
+C 205 ; WX 333 ; N hungarumlaut ; B 170 591 757 739 ;
+C 206 ; WX 333 ; N ogonek ; B 53 -205 260 0 ;
+C 207 ; WX 333 ; N caron ; B 96 591 503 739 ;
+C 208 ; WX 1000 ; N emdash ; B 33 187 1057 325 ;
+C 225 ; WX 1000 ; N AE ; B 3 0 1094 720 ;
+C 227 ; WX 400 ; N ordfeminine ; B 58 262 492 739 ;
+C 232 ; WX 667 ; N Lslash ; B 27 0 657 720 ;
+C 233 ; WX 833 ; N Oslash ; B 79 -76 879 784 ;
+C 234 ; WX 1000 ; N OE ; B 59 -19 1095 739 ;
+C 235 ; WX 400 ; N ordmasculine ; B 62 262 498 739 ;
+C 241 ; WX 1000 ; N ae ; B 61 -15 1005 539 ;
+C 245 ; WX 333 ; N dotlessi ; B 62 0 362 524 ;
+C 248 ; WX 333 ; N lslash ; B 40 0 432 720 ;
+C 249 ; WX 667 ; N oslash ; B 75 -72 683 581 ;
+C 250 ; WX 1000 ; N oe ; B 75 -15 1009 539 ;
+C 251 ; WX 667 ; N germandbls ; B 48 -15 685 739 ;
+C -1 ; WX 778 ; N Aacute ; B 11 0 767 935 ;
+C -1 ; WX 778 ; N Acircumflex ; B 11 0 767 935 ;
+C -1 ; WX 778 ; N Adieresis ; B 11 0 767 922 ;
+C -1 ; WX 778 ; N Agrave ; B 11 0 767 935 ;
+C -1 ; WX 778 ; N Aring ; B 11 0 767 1013 ;
+C -1 ; WX 778 ; N Atilde ; B 11 0 767 927 ;
+C -1 ; WX 778 ; N Ccedilla ; B 78 -232 823 739 ;
+C -1 ; WX 722 ; N Eacute ; B 76 0 790 935 ;
+C -1 ; WX 722 ; N Ecircumflex ; B 76 0 790 935 ;
+C -1 ; WX 722 ; N Edieresis ; B 76 0 790 922 ;
+C -1 ; WX 722 ; N Egrave ; B 76 0 790 935 ;
+C -1 ; WX 778 ; N Eth ; B 49 0 831 720 ;
+C -1 ; WX 389 ; N Iacute ; B 76 0 568 935 ;
+C -1 ; WX 389 ; N Icircumflex ; B 76 0 540 935 ;
+C -1 ; WX 389 ; N Idieresis ; B 76 0 559 922 ;
+C -1 ; WX 389 ; N Igrave ; B 76 0 439 935 ;
+C -1 ; WX 833 ; N Ntilde ; B 69 0 891 927 ;
+C -1 ; WX 833 ; N Oacute ; B 95 -19 865 935 ;
+C -1 ; WX 833 ; N Ocircumflex ; B 95 -19 865 935 ;
+C -1 ; WX 833 ; N Odieresis ; B 95 -19 865 922 ;
+C -1 ; WX 833 ; N Ograve ; B 95 -19 865 935 ;
+C -1 ; WX 833 ; N Otilde ; B 95 -19 865 927 ;
+C -1 ; WX 722 ; N Scaron ; B 70 -19 759 935 ;
+C -1 ; WX 722 ; N Thorn ; B 57 0 782 720 ;
+C -1 ; WX 833 ; N Uacute ; B 116 -19 890 935 ;
+C -1 ; WX 833 ; N Ucircumflex ; B 116 -19 890 935 ;
+C -1 ; WX 833 ; N Udieresis ; B 116 -19 890 922 ;
+C -1 ; WX 833 ; N Ugrave ; B 116 -19 890 935 ;
+C -1 ; WX 778 ; N Yacute ; B 130 0 902 935 ;
+C -1 ; WX 778 ; N Ydieresis ; B 130 0 902 922 ;
+C -1 ; WX 722 ; N Zcaron ; B 36 0 798 935 ;
+C -1 ; WX 667 ; N aacute ; B 47 -15 672 739 ;
+C -1 ; WX 667 ; N acircumflex ; B 47 -15 672 739 ;
+C -1 ; WX 667 ; N adieresis ; B 47 -15 672 726 ;
+C -1 ; WX 667 ; N agrave ; B 47 -15 672 739 ;
+C -1 ; WX 667 ; N aring ; B 47 -15 672 817 ;
+C -1 ; WX 667 ; N atilde ; B 47 -15 672 731 ;
+C -1 ; WX 278 ; N brokenbar ; B 79 0 328 739 ;
+C -1 ; WX 667 ; N ccedilla ; B 72 -232 676 539 ;
+C -1 ; WX 800 ; N copyright ; B 79 -19 848 739 ;
+C -1 ; WX 400 ; N degree ; B 147 415 452 715 ;
+C -1 ; WX 660 ; N divide ; B 113 7 637 505 ;
+C -1 ; WX 667 ; N eacute ; B 71 -15 682 739 ;
+C -1 ; WX 667 ; N ecircumflex ; B 71 -15 682 739 ;
+C -1 ; WX 667 ; N edieresis ; B 71 -15 682 726 ;
+C -1 ; WX 667 ; N egrave ; B 71 -15 682 739 ;
+C -1 ; WX 667 ; N eth ; B 75 -15 683 739 ;
+C -1 ; WX 333 ; N iacute ; B 62 0 505 739 ;
+C -1 ; WX 333 ; N icircumflex ; B 62 0 477 739 ;
+C -1 ; WX 333 ; N idieresis ; B 62 0 496 726 ;
+C -1 ; WX 333 ; N igrave ; B 62 0 376 739 ;
+C -1 ; WX 660 ; N logicalnot ; B 130 120 655 412 ;
+C -1 ; WX 660 ; N minus ; B 113 198 637 314 ;
+C -1 ; WX 667 ; N mu ; B 17 -178 710 524 ;
+C -1 ; WX 660 ; N multiply ; B 94 3 656 505 ;
+C -1 ; WX 667 ; N ntilde ; B 48 0 680 731 ;
+C -1 ; WX 667 ; N oacute ; B 75 -15 683 739 ;
+C -1 ; WX 667 ; N ocircumflex ; B 75 -15 683 739 ;
+C -1 ; WX 667 ; N odieresis ; B 75 -15 683 726 ;
+C -1 ; WX 667 ; N ograve ; B 75 -15 683 739 ;
+C -1 ; WX 1000 ; N onehalf ; B 138 -15 1014 739 ;
+C -1 ; WX 1000 ; N onequarter ; B 138 -15 992 739 ;
+C -1 ; WX 400 ; N onesuperior ; B 178 310 451 739 ;
+C -1 ; WX 667 ; N otilde ; B 75 -15 683 731 ;
+C -1 ; WX 660 ; N plusminus ; B 78 0 660 603 ;
+C -1 ; WX 800 ; N registered ; B 79 -19 848 739 ;
+C -1 ; WX 611 ; N scaron ; B 61 -15 642 739 ;
+C -1 ; WX 667 ; N thorn ; B 13 -178 684 739 ;
+C -1 ; WX 1000 ; N threequarters ; B 113 -15 992 715 ;
+C -1 ; WX 400 ; N threesuperior ; B 79 277 489 715 ;
+C -1 ; WX 950 ; N trademark ; B 141 316 1013 720 ;
+C -1 ; WX 400 ; N twosuperior ; B 62 310 502 739 ;
+C -1 ; WX 667 ; N uacute ; B 78 -15 710 739 ;
+C -1 ; WX 667 ; N ucircumflex ; B 78 -15 710 739 ;
+C -1 ; WX 667 ; N udieresis ; B 78 -15 710 726 ;
+C -1 ; WX 667 ; N ugrave ; B 78 -15 710 739 ;
+C -1 ; WX 611 ; N yacute ; B 45 -178 690 739 ;
+C -1 ; WX 611 ; N ydieresis ; B 45 -178 690 726 ;
+C -1 ; WX 556 ; N zcaron ; B 26 0 615 739 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 115
+
+KPX A y -18
+KPX A w -18
+KPX A v -18
+KPX A quoteright -74
+KPX A Y -74
+KPX A W -37
+KPX A V -74
+KPX A T -92
+
+KPX F period -129
+KPX F comma -129
+KPX F A -55
+
+KPX L y -37
+KPX L quoteright -74
+KPX L Y -92
+KPX L W -55
+KPX L V -92
+KPX L T -92
+
+KPX P period -129
+KPX P comma -129
+KPX P A -74
+
+KPX R y 0
+KPX R Y -37
+KPX R W -18
+KPX R V -18
+KPX R T -18
+
+KPX T y -92
+KPX T w -92
+KPX T u -92
+KPX T semicolon -68
+KPX T s -111
+KPX T r -92
+KPX T period -111
+KPX T o -111
+KPX T i 0
+KPX T hyphen -100
+KPX T e -111
+KPX T comma -111
+KPX T colon -68
+KPX T c -111
+KPX T a -111
+KPX T A -74
+
+KPX V y -18
+KPX V u -37
+KPX V semicolon -74
+KPX V r -37
+KPX V period -129
+KPX V o -55
+KPX V i -18
+KPX V hyphen -55
+KPX V e -55
+KPX V comma -129
+KPX V colon -74
+KPX V a -55
+KPX V A -74
+
+KPX W y 0
+KPX W u -18
+KPX W semicolon -18
+KPX W r -18
+KPX W period -74
+KPX W o -18
+KPX W i 0
+KPX W hyphen 0
+KPX W e -18
+KPX W comma -74
+KPX W colon -18
+KPX W a -37
+KPX W A -37
+
+KPX Y v -55
+KPX Y u -74
+KPX Y semicolon -74
+KPX Y q -92
+KPX Y period -111
+KPX Y p -74
+KPX Y o -92
+KPX Y i -20
+KPX Y hyphen -92
+KPX Y e -92
+KPX Y comma -111
+KPX Y colon -74
+KPX Y a -92
+KPX Y A -74
+
+KPX f quoteright 24
+KPX f f -18
+
+KPX quoteleft quoteleft -18
+
+KPX quoteright t -18
+KPX quoteright s -62
+KPX quoteright quoteright -18
+
+KPX r z 0
+KPX r y 18
+KPX r x 0
+KPX r w 0
+KPX r v 18
+KPX r u 0
+KPX r t 18
+KPX r r 0
+KPX r quoteright 0
+KPX r q -18
+KPX r period -92
+KPX r o -18
+KPX r n 18
+KPX r m 18
+KPX r hyphen -12
+KPX r h 0
+KPX r g 18
+KPX r f 18
+KPX r e -18
+KPX r d -18
+KPX r comma -92
+KPX r c -18
+
+KPX v period -74
+KPX v comma -74
+
+KPX w period -55
+KPX w comma -55
+
+KPX y period -92
+KPX y comma -92
+EndKernPairs
+EndKernData
+StartComposites 58
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 194 196 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 111 0 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 194 196 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 139 0 ;
+CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 222 0 ;
+CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 167 0 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 222 196 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 139 0 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 222 196 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 139 0 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 250 196 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 250 196 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 250 196 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 250 196 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 167 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 167 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 167 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 167 0 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 28 196 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 28 196 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 28 196 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 28 196 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute 0 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex 0 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis 0 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave 0 0 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 194 196 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 194 196 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 194 196 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 194 196 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 167 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 167 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 167 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 167 0 ;
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 222 196 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 222 196 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 222 196 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 222 196 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 167 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 167 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 167 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 167 0 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 250 196 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 250 196 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 250 196 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 250 196 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 167 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 167 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 167 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 167 0 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 222 196 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 167 0 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 250 196 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 167 0 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 250 196 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 167 0 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 222 196 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 167 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/He-BlO+ b/font/font/He-BlO+
new file mode 100644
index 0000000..806f7fb
--- /dev/null
+++ b/font/font/He-BlO+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 778 ; N Ccaron ; B 78 -19 834 934 ;
+C -1 ; WX 667 ; N ccaron ; B 72 -15 700 739 ;
+C -1 ; WX 778 ; N Dcaron ; B 65 0 831 934 ;
+C -1 ; WX 840 ; N dcaron ; B 72 -15 1018 792 ;
+C -1 ; WX 722 ; N Ecaron ; B 76 0 790 934 ;
+C -1 ; WX 667 ; N ecaron ; B 71 -15 682 739 ;
+C -1 ; WX 667 ; N Lcaron ; B 76 0 711 792 ;
+C -1 ; WX 667 ; N Lacute ; B 76 0 706 934 ;
+C -1 ; WX 506 ; N lcaron ; B 62 0 669 792 ;
+C -1 ; WX 333 ; N lacute ; B 62 0 573 934 ;
+C -1 ; WX 833 ; N Ncaron ; B 69 0 891 934 ;
+C -1 ; WX 667 ; N ncaron ; B 48 0 680 739 ;
+C -1 ; WX 778 ; N Rcaron ; B 61 0 816 934 ;
+C -1 ; WX 778 ; N Racute ; B 61 0 825 934 ;
+C -1 ; WX 444 ; N rcaron ; B 52 0 558 739 ;
+C -1 ; WX 444 ; N racute ; B 52 0 594 739 ;
+C -1 ; WX 722 ; N Tcaron ; B 125 0 818 934 ;
+C -1 ; WX 617 ; N tcaron ; B 85 -4 760 720 ;
+C -1 ; WX 833 ; N Uring ; B 116 -19 890 934 ;
+C -1 ; WX 667 ; N uring ; B 78 -15 710 817 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 331 195 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 197 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 256 195 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 666 72 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 228 195 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 167 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 359 72 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 201 195 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 317 72 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 68 195 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 284 195 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 167 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 256 195 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 320 195 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 55 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 89 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 228 195 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 408 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 270 117 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 167 0 ;
+EndBuildComposites
diff --git a/font/font/He-Cm b/font/font/He-Cm
new file mode 100644
index 0000000..117b492
--- /dev/null
+++ b/font/font/He-Cm
@@ -0,0 +1,418 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1988, 1990, 1991 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Fri Dec 13 16:12:38 1991
+Comment UniqueID 37154
+Comment VMusage 24500 31392
+FontName Helvetica-Compressed
+FullName Helvetica Compressed
+FamilyName Helvetica
+Weight Bold
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -120 -250 1000 990
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.002
+Notice Copyright (c) 1988, 1990, 1991 Adobe Systems Incorporated. All Rights Reserved.Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 712
+XHeight 572
+Ascender 712
+Descender -128
+StartCharMetrics 228
+C 32 ; WX 232 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 259 ; N exclam ; B 52 0 207 712 ;
+C 34 ; WX 333 ; N quotedbl ; B 15 441 318 712 ;
+C 35 ; WX 464 ; N numbersign ; B 21 0 442 712 ;
+C 36 ; WX 464 ; N dollar ; B 22 -74 443 775 ;
+C 37 ; WX 630 ; N percent ; B 17 -14 613 726 ;
+C 38 ; WX 593 ; N ampersand ; B 21 -14 590 726 ;
+C 39 ; WX 204 ; N quoteright ; B 12 461 192 712 ;
+C 40 ; WX 296 ; N parenleft ; B 14 -62 281 726 ;
+C 41 ; WX 296 ; N parenright ; B 15 -62 282 726 ;
+C 42 ; WX 464 ; N asterisk ; B 65 392 398 712 ;
+C 43 ; WX 600 ; N plus ; B 46 32 554 540 ;
+C 44 ; WX 232 ; N comma ; B 17 -128 214 168 ;
+C 45 ; WX 259 ; N hyphen ; B 18 259 240 377 ;
+C 46 ; WX 232 ; N period ; B 38 0 193 168 ;
+C 47 ; WX 259 ; N slash ; B 2 -14 257 726 ;
+C 48 ; WX 464 ; N zero ; B 21 -14 442 726 ;
+C 49 ; WX 464 ; N one ; B 44 0 327 712 ;
+C 50 ; WX 464 ; N two ; B 16 0 438 726 ;
+C 51 ; WX 464 ; N three ; B 23 -14 440 726 ;
+C 52 ; WX 464 ; N four ; B 3 0 453 712 ;
+C 53 ; WX 464 ; N five ; B 20 -14 443 712 ;
+C 54 ; WX 464 ; N six ; B 22 -14 441 726 ;
+C 55 ; WX 464 ; N seven ; B 9 0 447 712 ;
+C 56 ; WX 464 ; N eight ; B 17 -14 447 726 ;
+C 57 ; WX 464 ; N nine ; B 22 -14 441 726 ;
+C 58 ; WX 232 ; N colon ; B 38 0 193 572 ;
+C 59 ; WX 232 ; N semicolon ; B 17 -128 214 572 ;
+C 60 ; WX 600 ; N less ; B 75 54 525 518 ;
+C 61 ; WX 600 ; N equal ; B 46 98 554 474 ;
+C 62 ; WX 600 ; N greater ; B 75 54 525 518 ;
+C 63 ; WX 464 ; N question ; B 43 0 421 726 ;
+C 64 ; WX 800 ; N at ; B 44 -14 756 726 ;
+C 65 ; WX 464 ; N A ; B 11 0 452 712 ;
+C 66 ; WX 464 ; N B ; B 22 0 442 712 ;
+C 67 ; WX 464 ; N C ; B 22 -14 442 726 ;
+C 68 ; WX 464 ; N D ; B 22 0 442 712 ;
+C 69 ; WX 370 ; N E ; B 20 0 364 712 ;
+C 70 ; WX 370 ; N F ; B 20 0 364 712 ;
+C 71 ; WX 464 ; N G ; B 22 -14 443 726 ;
+C 72 ; WX 464 ; N H ; B 22 0 442 712 ;
+C 73 ; WX 204 ; N I ; B 19 0 185 712 ;
+C 74 ; WX 464 ; N J ; B 17 -14 435 712 ;
+C 75 ; WX 464 ; N K ; B 22 0 454 712 ;
+C 76 ; WX 370 ; N L ; B 20 0 366 712 ;
+C 77 ; WX 667 ; N M ; B 21 0 646 712 ;
+C 78 ; WX 500 ; N N ; B 16 0 484 712 ;
+C 79 ; WX 464 ; N O ; B 22 -14 442 726 ;
+C 80 ; WX 464 ; N P ; B 22 0 442 712 ;
+C 81 ; WX 464 ; N Q ; B 22 -128 442 726 ;
+C 82 ; WX 464 ; N R ; B 20 0 464 712 ;
+C 83 ; WX 464 ; N S ; B 22 -14 442 726 ;
+C 84 ; WX 426 ; N T ; B 14 0 412 712 ;
+C 85 ; WX 464 ; N U ; B 22 -14 442 712 ;
+C 86 ; WX 464 ; N V ; B 8 0 455 712 ;
+C 87 ; WX 704 ; N W ; B 3 0 700 712 ;
+C 88 ; WX 464 ; N X ; B 8 0 456 712 ;
+C 89 ; WX 464 ; N Y ; B 8 0 456 712 ;
+C 90 ; WX 370 ; N Z ; B 5 0 365 712 ;
+C 91 ; WX 296 ; N bracketleft ; B 28 -62 268 726 ;
+C 92 ; WX 278 ; N backslash ; B -48 -14 326 726 ;
+C 93 ; WX 296 ; N bracketright ; B 28 -62 268 726 ;
+C 94 ; WX 600 ; N asciicircum ; B 73 347 527 712 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 204 ; N quoteleft ; B 12 461 192 712 ;
+C 97 ; WX 426 ; N a ; B 22 -7 404 579 ;
+C 98 ; WX 426 ; N b ; B 22 -7 404 712 ;
+C 99 ; WX 426 ; N c ; B 22 -7 404 579 ;
+C 100 ; WX 426 ; N d ; B 22 -7 404 712 ;
+C 101 ; WX 426 ; N e ; B 22 -7 404 579 ;
+C 102 ; WX 259 ; N f ; B 7 0 245 712 ; L i fi ; L l fl ;
+C 103 ; WX 426 ; N g ; B 22 -128 404 579 ;
+C 104 ; WX 426 ; N h ; B 22 0 404 712 ;
+C 105 ; WX 204 ; N i ; B 23 0 181 712 ;
+C 106 ; WX 204 ; N j ; B -48 -128 181 712 ;
+C 107 ; WX 426 ; N k ; B 22 0 424 712 ;
+C 108 ; WX 204 ; N l ; B 23 0 181 712 ;
+C 109 ; WX 630 ; N m ; B 24 0 606 579 ;
+C 110 ; WX 426 ; N n ; B 22 0 404 579 ;
+C 111 ; WX 426 ; N o ; B 22 -7 404 579 ;
+C 112 ; WX 426 ; N p ; B 22 -128 404 579 ;
+C 113 ; WX 426 ; N q ; B 22 -128 404 579 ;
+C 114 ; WX 426 ; N r ; B 22 0 404 579 ;
+C 115 ; WX 426 ; N s ; B 22 -7 404 579 ;
+C 116 ; WX 296 ; N t ; B 8 0 288 675 ;
+C 117 ; WX 426 ; N u ; B 22 -7 404 572 ;
+C 118 ; WX 426 ; N v ; B 11 0 415 572 ;
+C 119 ; WX 667 ; N w ; B 5 0 661 572 ;
+C 120 ; WX 426 ; N x ; B 4 0 422 572 ;
+C 121 ; WX 426 ; N y ; B 12 -128 413 572 ;
+C 122 ; WX 333 ; N z ; B 3 0 330 572 ;
+C 123 ; WX 333 ; N braceleft ; B 28 -62 305 726 ;
+C 124 ; WX 222 ; N bar ; B 43 -250 179 750 ;
+C 125 ; WX 333 ; N braceright ; B 28 -62 305 726 ;
+C 126 ; WX 600 ; N asciitilde ; B 69 160 531 346 ;
+C 161 ; WX 259 ; N exclamdown ; B 52 -114 207 598 ;
+C 162 ; WX 464 ; N cent ; B 41 -128 423 674 ;
+C 163 ; WX 464 ; N sterling ; B 9 -14 455 726 ;
+C 164 ; WX 130 ; N fraction ; B -120 -14 250 726 ;
+C 165 ; WX 464 ; N yen ; B 8 0 456 712 ;
+C 166 ; WX 464 ; N florin ; B 9 -128 454 726 ;
+C 167 ; WX 426 ; N section ; B 28 -64 398 726 ;
+C 168 ; WX 464 ; N currency ; B 13 173 451 611 ;
+C 169 ; WX 222 ; N quotesingle ; B 51 441 171 712 ;
+C 170 ; WX 426 ; N quotedblleft ; B 33 461 417 712 ;
+C 171 ; WX 370 ; N guillemotleft ; B 15 99 355 537 ;
+C 172 ; WX 204 ; N guilsinglleft ; B 38 99 189 537 ;
+C 173 ; WX 204 ; N guilsinglright ; B 15 99 166 537 ;
+C 174 ; WX 463 ; N fi ; B 7 0 437 712 ;
+C 175 ; WX 463 ; N fl ; B 7 0 437 712 ;
+C 177 ; WX 500 ; N endash ; B 0 262 500 374 ;
+C 178 ; WX 426 ; N dagger ; B 20 -64 406 712 ;
+C 179 ; WX 426 ; N daggerdbl ; B 20 -64 406 712 ;
+C 180 ; WX 232 ; N periodcentered ; B 33 204 199 370 ;
+C 182 ; WX 620 ; N paragraph ; B 1 -179 619 712 ;
+C 183 ; WX 500 ; N bullet ; B 72 178 428 534 ;
+C 184 ; WX 204 ; N quotesinglbase ; B 12 -95 192 156 ;
+C 185 ; WX 426 ; N quotedblbase ; B 9 -95 393 156 ;
+C 186 ; WX 426 ; N quotedblright ; B 9 461 393 712 ;
+C 187 ; WX 370 ; N guillemotright ; B 15 99 355 537 ;
+C 188 ; WX 1000 ; N ellipsis ; B 89 0 910 168 ;
+C 189 ; WX 759 ; N perthousand ; B 14 -14 745 726 ;
+C 191 ; WX 464 ; N questiondown ; B 43 -128 421 598 ;
+C 193 ; WX 204 ; N grave ; B -39 639 174 780 ;
+C 194 ; WX 204 ; N acute ; B 30 639 243 780 ;
+C 195 ; WX 204 ; N circumflex ; B -48 639 251 780 ;
+C 196 ; WX 204 ; N tilde ; B -44 653 247 766 ;
+C 197 ; WX 204 ; N macron ; B -38 676 243 750 ;
+C 198 ; WX 204 ; N breve ; B -44 640 249 773 ;
+C 199 ; WX 204 ; N dotaccent ; B 46 650 158 773 ;
+C 200 ; WX 204 ; N dieresis ; B -37 650 241 773 ;
+C 202 ; WX 204 ; N ring ; B -4 650 236 875 ;
+C 203 ; WX 204 ; N cedilla ; B -18 -244 237 -4 ;
+C 205 ; WX 204 ; N hungarumlaut ; B -65 639 291 780 ;
+C 206 ; WX 204 ; N ogonek ; B -22 -244 229 0 ;
+C 207 ; WX 204 ; N caron ; B -47 639 252 780 ;
+C 208 ; WX 1000 ; N emdash ; B 0 262 1000 374 ;
+C 225 ; WX 667 ; N AE ; B 7 0 653 712 ;
+C 227 ; WX 256 ; N ordfeminine ; B 3 374 253 726 ;
+C 232 ; WX 370 ; N Lslash ; B -11 0 366 712 ;
+C 233 ; WX 464 ; N Oslash ; B 22 -41 442 759 ;
+C 234 ; WX 630 ; N OE ; B 22 -14 624 726 ;
+C 235 ; WX 256 ; N ordmasculine ; B 3 374 252 725 ;
+C 241 ; WX 630 ; N ae ; B 15 -7 615 579 ;
+C 245 ; WX 204 ; N dotlessi ; B 23 0 181 572 ;
+C 248 ; WX 204 ; N lslash ; B -12 0 217 712 ;
+C 249 ; WX 426 ; N oslash ; B 22 -52 404 616 ;
+C 250 ; WX 630 ; N oe ; B 15 -7 615 579 ;
+C 251 ; WX 426 ; N germandbls ; B 22 -7 404 726 ;
+C -1 ; WX 426 ; N ecircumflex ; B 22 -7 404 780 ;
+C -1 ; WX 426 ; N edieresis ; B 22 -7 404 773 ;
+C -1 ; WX 426 ; N aacute ; B 22 -7 404 780 ;
+C -1 ; WX 800 ; N registered ; B 13 -14 787 726 ;
+C -1 ; WX 204 ; N icircumflex ; B -48 0 251 780 ;
+C -1 ; WX 426 ; N udieresis ; B 22 -7 404 773 ;
+C -1 ; WX 426 ; N ograve ; B 22 -7 404 780 ;
+C -1 ; WX 426 ; N uacute ; B 22 -7 404 780 ;
+C -1 ; WX 426 ; N ucircumflex ; B 22 -7 404 780 ;
+C -1 ; WX 464 ; N Aacute ; B 11 0 452 895 ;
+C -1 ; WX 204 ; N igrave ; B -39 0 181 780 ;
+C -1 ; WX 204 ; N Icircumflex ; B -48 0 251 895 ;
+C -1 ; WX 426 ; N ccedilla ; B 22 -244 404 579 ;
+C -1 ; WX 426 ; N adieresis ; B 22 -7 404 773 ;
+C -1 ; WX 370 ; N Ecircumflex ; B 20 0 364 895 ;
+C -1 ; WX 426 ; N scaron ; B 22 -7 404 780 ;
+C -1 ; WX 426 ; N thorn ; B 22 -128 404 712 ;
+C -1 ; WX 1000 ; N trademark ; B 36 300 964 712 ;
+C -1 ; WX 426 ; N egrave ; B 22 -7 404 780 ;
+C -1 ; WX 277 ; N threesuperior ; B 3 281 274 726 ;
+C -1 ; WX 333 ; N zcaron ; B 3 0 330 780 ;
+C -1 ; WX 426 ; N atilde ; B 22 -7 404 766 ;
+C -1 ; WX 426 ; N aring ; B 22 -7 404 875 ;
+C -1 ; WX 426 ; N ocircumflex ; B 22 -7 404 780 ;
+C -1 ; WX 370 ; N Edieresis ; B 20 0 364 888 ;
+C -1 ; WX 694 ; N threequarters ; B 22 -14 672 726 ;
+C -1 ; WX 426 ; N ydieresis ; B 12 -128 413 773 ;
+C -1 ; WX 426 ; N yacute ; B 12 -128 413 780 ;
+C -1 ; WX 204 ; N iacute ; B 23 0 243 780 ;
+C -1 ; WX 464 ; N Acircumflex ; B 11 0 452 895 ;
+C -1 ; WX 464 ; N Uacute ; B 22 -14 442 895 ;
+C -1 ; WX 426 ; N eacute ; B 22 -7 404 780 ;
+C -1 ; WX 464 ; N Ograve ; B 22 -14 442 895 ;
+C -1 ; WX 426 ; N agrave ; B 22 -7 404 780 ;
+C -1 ; WX 464 ; N Udieresis ; B 22 -14 442 888 ;
+C -1 ; WX 426 ; N acircumflex ; B 22 -7 404 780 ;
+C -1 ; WX 204 ; N Igrave ; B -39 0 185 895 ;
+C -1 ; WX 277 ; N twosuperior ; B 1 290 276 726 ;
+C -1 ; WX 464 ; N Ugrave ; B 22 -14 442 895 ;
+C -1 ; WX 694 ; N onequarter ; B 22 -14 672 726 ;
+C -1 ; WX 464 ; N Ucircumflex ; B 22 -14 442 895 ;
+C -1 ; WX 464 ; N Scaron ; B 22 -14 442 895 ;
+C -1 ; WX 204 ; N Idieresis ; B -37 0 241 888 ;
+C -1 ; WX 204 ; N idieresis ; B -37 0 241 773 ;
+C -1 ; WX 370 ; N Egrave ; B 20 0 364 895 ;
+C -1 ; WX 464 ; N Oacute ; B 22 -14 442 895 ;
+C -1 ; WX 600 ; N divide ; B 46 -14 554 586 ;
+C -1 ; WX 464 ; N Atilde ; B 11 0 452 881 ;
+C -1 ; WX 464 ; N Aring ; B 11 0 452 990 ;
+C -1 ; WX 464 ; N Odieresis ; B 22 -14 442 888 ;
+C -1 ; WX 464 ; N Adieresis ; B 11 0 452 888 ;
+C -1 ; WX 500 ; N Ntilde ; B 16 0 484 881 ;
+C -1 ; WX 370 ; N Zcaron ; B 5 0 365 895 ;
+C -1 ; WX 464 ; N Thorn ; B 22 0 442 712 ;
+C -1 ; WX 204 ; N Iacute ; B 19 0 243 895 ;
+C -1 ; WX 600 ; N plusminus ; B 46 32 554 540 ;
+C -1 ; WX 600 ; N multiply ; B 46 5 554 511 ;
+C -1 ; WX 370 ; N Eacute ; B 20 0 364 895 ;
+C -1 ; WX 464 ; N Ydieresis ; B 8 0 456 888 ;
+C -1 ; WX 277 ; N onesuperior ; B 5 290 189 717 ;
+C -1 ; WX 426 ; N ugrave ; B 22 -7 404 780 ;
+C -1 ; WX 600 ; N logicalnot ; B 46 162 554 459 ;
+C -1 ; WX 426 ; N ntilde ; B 22 0 404 766 ;
+C -1 ; WX 464 ; N Otilde ; B 22 -14 442 881 ;
+C -1 ; WX 426 ; N otilde ; B 22 -7 404 766 ;
+C -1 ; WX 464 ; N Ccedilla ; B 22 -244 442 726 ;
+C -1 ; WX 464 ; N Agrave ; B 11 0 452 895 ;
+C -1 ; WX 694 ; N onehalf ; B 22 -14 673 726 ;
+C -1 ; WX 464 ; N Eth ; B -3 0 442 712 ;
+C -1 ; WX 400 ; N degree ; B 57 426 343 712 ;
+C -1 ; WX 464 ; N Yacute ; B 8 0 456 895 ;
+C -1 ; WX 464 ; N Ocircumflex ; B 22 -14 442 895 ;
+C -1 ; WX 426 ; N oacute ; B 22 -7 404 780 ;
+C -1 ; WX 426 ; N mu ; B 22 -128 404 572 ;
+C -1 ; WX 600 ; N minus ; B 46 218 554 354 ;
+C -1 ; WX 426 ; N eth ; B 22 -7 404 751 ;
+C -1 ; WX 426 ; N odieresis ; B 22 -7 404 773 ;
+C -1 ; WX 800 ; N copyright ; B 13 -14 787 726 ;
+C -1 ; WX 222 ; N brokenbar ; B 43 -175 179 675 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 90
+
+KPX A y -55
+KPX A w -37
+KPX A v -55
+KPX A quoteright -55
+KPX A Y -74
+KPX A W -55
+KPX A V -55
+KPX A T -74
+
+KPX F period -129
+KPX F comma -129
+KPX F A -37
+
+KPX L y -74
+KPX L quoteright -129
+KPX L Y -111
+KPX L W -74
+KPX L V -92
+KPX L T -92
+
+KPX P period -129
+KPX P comma -129
+KPX P A -55
+
+KPX R Y -18
+KPX R W -18
+KPX R V -18
+KPX R T -18
+
+KPX T y -92
+KPX T w -92
+KPX T u -92
+KPX T semicolon -111
+KPX T s -92
+KPX T r -92
+KPX T period -111
+KPX T o -92
+KPX T i -92
+KPX T hyphen -92
+KPX T e -92
+KPX T comma -111
+KPX T colon -111
+KPX T c -92
+KPX T a -92
+KPX T A -92
+
+KPX V y -18
+KPX V u -18
+KPX V semicolon -37
+KPX V r -18
+KPX V period -92
+KPX V o -37
+KPX V i -18
+KPX V hyphen -37
+KPX V e -37
+KPX V comma -92
+KPX V colon -55
+KPX V a -37
+KPX V A -74
+
+KPX W y -18
+KPX W u -18
+KPX W semicolon -37
+KPX W r -18
+KPX W period -74
+KPX W o -37
+KPX W i -18
+KPX W hyphen -37
+KPX W e -37
+KPX W comma -74
+KPX W colon -37
+KPX W a -37
+KPX W A -74
+
+KPX Y v -37
+KPX Y u -37
+KPX Y semicolon -55
+KPX Y q -55
+KPX Y period -111
+KPX Y p -37
+KPX Y o -55
+KPX Y i -37
+KPX Y hyphen -74
+KPX Y e -55
+KPX Y comma -111
+KPX Y colon -55
+KPX Y a -55
+KPX Y A -92
+
+KPX quoteright t -18
+KPX quoteright s -74
+
+KPX r period -129
+KPX r comma -129
+
+KPX v period -92
+KPX v comma -92
+
+KPX w period -74
+KPX w comma -74
+
+KPX y period -111
+KPX y comma -111
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 130 115 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 130 115 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 130 115 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 130 115 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 130 115 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 130 115 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 83 115 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 83 115 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 83 115 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 83 115 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 0 115 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 0 115 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 0 115 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 0 115 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 148 115 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 130 115 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 130 115 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 130 115 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 130 115 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 130 115 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 130 115 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 130 115 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 130 115 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 130 115 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 130 115 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 130 115 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 130 115 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 83 115 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 111 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 111 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 111 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 111 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 111 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 111 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 111 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 111 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 111 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 111 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute 0 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex 0 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis 0 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave 0 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 111 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 111 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 111 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 111 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 111 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 111 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 111 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 111 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 111 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 111 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 111 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 111 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 111 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 65 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/He-Cm+ b/font/font/He-Cm+
new file mode 100644
index 0000000..b45e5a8
--- /dev/null
+++ b/font/font/He-Cm+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 464 ; N Ccaron ; B 22 -14 442 918 ;
+C -1 ; WX 426 ; N ccaron ; B 22 -7 404 780 ;
+C -1 ; WX 464 ; N Dcaron ; B 22 0 442 918 ;
+C -1 ; WX 552 ; N dcaron ; B 22 -7 602 783 ;
+C -1 ; WX 370 ; N Ecaron ; B 20 0 364 918 ;
+C -1 ; WX 426 ; N ecaron ; B 22 -7 404 780 ;
+C -1 ; WX 370 ; N Lcaron ; B 20 0 383 783 ;
+C -1 ; WX 370 ; N Lacute ; B 20 0 366 918 ;
+C -1 ; WX 330 ; N lcaron ; B 23 0 379 783 ;
+C -1 ; WX 204 ; N lacute ; B 23 0 264 918 ;
+C -1 ; WX 500 ; N Ncaron ; B 16 0 484 918 ;
+C -1 ; WX 426 ; N ncaron ; B 22 0 404 780 ;
+C -1 ; WX 464 ; N Rcaron ; B 20 0 464 918 ;
+C -1 ; WX 464 ; N Racute ; B 20 0 464 918 ;
+C -1 ; WX 426 ; N rcaron ; B 22 0 404 780 ;
+C -1 ; WX 426 ; N racute ; B 22 0 404 780 ;
+C -1 ; WX 426 ; N Tcaron ; B 14 0 412 918 ;
+C -1 ; WX 422 ; N tcaron ; B 8 0 486 712 ;
+C -1 ; WX 464 ; N Uring ; B 22 -14 442 918 ;
+C -1 ; WX 426 ; N uring ; B 22 -7 404 875 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 172 138 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 130 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 130 138 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 410 71 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 83 138 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 111 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 191 71 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 83 138 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 187 71 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 21 138 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 148 138 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 111 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 130 138 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 170 138 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 111 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 132 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 111 138 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 294 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 130 43 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 111 0 ;
+EndBuildComposites
diff --git a/font/font/He-Cn b/font/font/He-Cn
new file mode 100644
index 0000000..954636a
--- /dev/null
+++ b/font/font/He-Cn
@@ -0,0 +1,447 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989 Adobe Systems Incorporated. All rights reserved.
+Comment Creation Date: Tue Dec 5 16:28:05 1989
+Comment UniqueID 26316
+Comment VMusage 25458 32350
+FontName Helvetica-Condensed
+FullName Helvetica Condensed Medium
+FamilyName Helvetica
+Weight MediumCondensed
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -174 -224 1071 990
+UnderlinePosition -90
+UnderlineThickness 58
+Version 001.002
+Notice Copyright (c) 1985, 1987, 1989 Adobe Systems Incorporated. All rights reserved.Helvetica is a trademark of Linotype AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 750
+XHeight 556
+Ascender 750
+Descender -188
+StartCharMetrics 228
+C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 333 ; N exclam ; B 121 0 212 750 ;
+C 34 ; WX 250 ; N quotedbl ; B 44 513 207 739 ;
+C 35 ; WX 500 ; N numbersign ; B 5 0 495 750 ;
+C 36 ; WX 500 ; N dollar ; B 35 -116 465 815 ;
+C 37 ; WX 833 ; N percent ; B 55 -15 756 750 ;
+C 38 ; WX 667 ; N ampersand ; B 75 -18 620 750 ;
+C 39 ; WX 222 ; N quoteright ; B 64 504 158 750 ;
+C 40 ; WX 333 ; N parenleft ; B 76 -215 289 750 ;
+C 41 ; WX 333 ; N parenright ; B 44 -215 257 750 ;
+C 42 ; WX 500 ; N asterisk ; B 96 455 405 750 ;
+C 43 ; WX 500 ; N plus ; B 44 0 457 505 ;
+C 44 ; WX 250 ; N comma ; B 80 -146 171 100 ;
+C 45 ; WX 333 ; N hyphen ; B 45 275 288 358 ;
+C 46 ; WX 250 ; N period ; B 80 0 171 100 ;
+C 47 ; WX 278 ; N slash ; B -13 -27 291 750 ;
+C 48 ; WX 500 ; N zero ; B 46 -15 455 750 ;
+C 49 ; WX 500 ; N one ; B 74 0 317 750 ;
+C 50 ; WX 500 ; N two ; B 44 0 447 750 ;
+C 51 ; WX 500 ; N three ; B 38 -15 447 750 ;
+C 52 ; WX 500 ; N four ; B 28 0 451 750 ;
+C 53 ; WX 500 ; N five ; B 43 -15 446 735 ;
+C 54 ; WX 500 ; N six ; B 43 -15 458 750 ;
+C 55 ; WX 500 ; N seven ; B 44 0 456 735 ;
+C 56 ; WX 500 ; N eight ; B 46 -15 454 750 ;
+C 57 ; WX 500 ; N nine ; B 43 -15 458 750 ;
+C 58 ; WX 250 ; N colon ; B 80 0 171 547 ;
+C 59 ; WX 250 ; N semicolon ; B 80 -146 171 547 ;
+C 60 ; WX 500 ; N less ; B 42 -10 459 518 ;
+C 61 ; WX 500 ; N equal ; B 44 124 457 384 ;
+C 62 ; WX 500 ; N greater ; B 42 -10 459 518 ;
+C 63 ; WX 500 ; N question ; B 60 0 462 750 ;
+C 64 ; WX 800 ; N at ; B 36 -15 764 750 ;
+C 65 ; WX 556 ; N A ; B 11 0 546 750 ;
+C 66 ; WX 556 ; N B ; B 80 0 503 750 ;
+C 67 ; WX 556 ; N C ; B 53 -18 503 765 ;
+C 68 ; WX 611 ; N D ; B 82 0 548 750 ;
+C 69 ; WX 500 ; N E ; B 74 0 451 750 ;
+C 70 ; WX 444 ; N F ; B 74 0 426 750 ;
+C 71 ; WX 611 ; N G ; B 54 -18 532 765 ;
+C 72 ; WX 611 ; N H ; B 79 0 532 750 ;
+C 73 ; WX 278 ; N I ; B 98 0 181 750 ;
+C 74 ; WX 444 ; N J ; B 21 -15 368 750 ;
+C 75 ; WX 556 ; N K ; B 79 0 546 750 ;
+C 76 ; WX 500 ; N L ; B 83 0 472 750 ;
+C 77 ; WX 778 ; N M ; B 76 0 702 750 ;
+C 78 ; WX 611 ; N N ; B 77 0 534 750 ;
+C 79 ; WX 611 ; N O ; B 59 -18 553 765 ;
+C 80 ; WX 556 ; N P ; B 86 0 519 750 ;
+C 81 ; WX 611 ; N Q ; B 59 -34 582 765 ;
+C 82 ; WX 611 ; N R ; B 86 0 565 750 ;
+C 83 ; WX 556 ; N S ; B 51 -18 505 765 ;
+C 84 ; WX 500 ; N T ; B 15 0 486 750 ;
+C 85 ; WX 611 ; N U ; B 81 -18 531 750 ;
+C 86 ; WX 556 ; N V ; B 11 0 545 750 ;
+C 87 ; WX 833 ; N W ; B 17 0 816 750 ;
+C 88 ; WX 556 ; N X ; B 17 0 539 750 ;
+C 89 ; WX 556 ; N Y ; B 11 0 546 750 ;
+C 90 ; WX 500 ; N Z ; B 28 0 473 750 ;
+C 91 ; WX 333 ; N bracketleft ; B 100 -209 275 750 ;
+C 92 ; WX 250 ; N backslash ; B -31 0 281 750 ;
+C 93 ; WX 333 ; N bracketright ; B 58 -209 233 750 ;
+C 94 ; WX 500 ; N asciicircum ; B 70 333 431 750 ;
+C 95 ; WX 500 ; N underscore ; B 0 -119 500 -61 ;
+C 96 ; WX 222 ; N quoteleft ; B 64 521 158 767 ;
+C 97 ; WX 444 ; N a ; B 31 -15 417 571 ;
+C 98 ; WX 500 ; N b ; B 75 -15 447 750 ;
+C 99 ; WX 444 ; N c ; B 44 -15 405 571 ;
+C 100 ; WX 500 ; N d ; B 48 -15 424 750 ;
+C 101 ; WX 444 ; N e ; B 43 -15 395 571 ;
+C 102 ; WX 278 ; N f ; B 12 0 259 752 ; L i fi ; L l fl ;
+C 103 ; WX 500 ; N g ; B 45 -189 426 571 ;
+C 104 ; WX 500 ; N h ; B 73 0 428 750 ;
+C 105 ; WX 222 ; N i ; B 72 0 151 750 ;
+C 106 ; WX 222 ; N j ; B 13 -190 154 750 ;
+C 107 ; WX 444 ; N k ; B 69 0 439 750 ;
+C 108 ; WX 222 ; N l ; B 72 0 151 750 ;
+C 109 ; WX 778 ; N m ; B 76 0 703 571 ;
+C 110 ; WX 500 ; N n ; B 73 0 428 571 ;
+C 111 ; WX 500 ; N o ; B 51 -15 449 571 ;
+C 112 ; WX 500 ; N p ; B 72 -188 447 571 ;
+C 113 ; WX 500 ; N q ; B 55 -184 426 571 ;
+C 114 ; WX 333 ; N r ; B 81 0 322 563 ;
+C 115 ; WX 444 ; N s ; B 43 -15 400 571 ;
+C 116 ; WX 278 ; N t ; B 9 0 257 707 ;
+C 117 ; WX 500 ; N u ; B 77 -15 424 556 ;
+C 118 ; WX 444 ; N v ; B 13 0 431 556 ;
+C 119 ; WX 667 ; N w ; B 19 0 649 556 ;
+C 120 ; WX 444 ; N x ; B 9 0 436 556 ;
+C 121 ; WX 444 ; N y ; B 5 -190 425 556 ;
+C 122 ; WX 389 ; N z ; B 24 0 366 556 ;
+C 123 ; WX 274 ; N braceleft ; B 7 -95 266 750 ;
+C 124 ; WX 250 ; N bar ; B 93 0 157 750 ;
+C 125 ; WX 274 ; N braceright ; B 8 -95 267 750 ;
+C 126 ; WX 500 ; N asciitilde ; B 44 166 457 345 ;
+C 161 ; WX 333 ; N exclamdown ; B 121 -179 212 571 ;
+C 162 ; WX 500 ; N cent ; B 58 -137 418 667 ;
+C 163 ; WX 500 ; N sterling ; B 30 -15 485 750 ;
+C 164 ; WX 167 ; N fraction ; B -174 0 341 750 ;
+C 165 ; WX 500 ; N yen ; B -17 0 518 750 ;
+C 166 ; WX 500 ; N florin ; B 10 -192 488 750 ;
+C 167 ; WX 500 ; N section ; B 35 -208 466 750 ;
+C 168 ; WX 500 ; N currency ; B 24 50 475 553 ;
+C 169 ; WX 250 ; N quotesingle ; B 99 513 151 739 ;
+C 170 ; WX 389 ; N quotedblleft ; B 62 521 327 767 ;
+C 171 ; WX 500 ; N guillemotleft ; B 85 125 415 495 ;
+C 172 ; WX 278 ; N guilsinglleft ; B 64 125 215 495 ;
+C 173 ; WX 278 ; N guilsinglright ; B 63 125 214 495 ;
+C 174 ; WX 500 ; N fi ; B 12 0 427 752 ;
+C 175 ; WX 500 ; N fl ; B 12 0 425 752 ;
+C 177 ; WX 500 ; N endash ; B 0 275 500 345 ;
+C 178 ; WX 500 ; N dagger ; B 40 -176 461 750 ;
+C 179 ; WX 500 ; N daggerdbl ; B 39 -176 462 750 ;
+C 180 ; WX 250 ; N periodcentered ; B 80 204 171 304 ;
+C 182 ; WX 440 ; N paragraph ; B 0 -116 391 750 ;
+C 183 ; WX 333 ; N bullet ; B 15 222 318 529 ;
+C 184 ; WX 222 ; N quotesinglbase ; B 64 -146 158 100 ;
+C 185 ; WX 389 ; N quotedblbase ; B 62 -146 327 100 ;
+C 186 ; WX 389 ; N quotedblright ; B 62 504 327 750 ;
+C 187 ; WX 500 ; N guillemotright ; B 85 125 415 495 ;
+C 188 ; WX 1000 ; N ellipsis ; B 121 0 878 100 ;
+C 189 ; WX 1111 ; N perthousand ; B 47 -16 1071 750 ;
+C 191 ; WX 500 ; N questiondown ; B 38 -190 440 559 ;
+C 193 ; WX 333 ; N grave ; B 35 624 233 765 ;
+C 194 ; WX 333 ; N acute ; B 100 624 298 765 ;
+C 195 ; WX 333 ; N circumflex ; B 21 624 313 765 ;
+C 196 ; WX 333 ; N tilde ; B -3 633 337 749 ;
+C 197 ; WX 333 ; N macron ; B 10 657 323 715 ;
+C 198 ; WX 333 ; N breve ; B 12 629 321 765 ;
+C 199 ; WX 250 ; N dotaccent ; B 86 650 165 750 ;
+C 200 ; WX 333 ; N dieresis ; B 52 650 281 750 ;
+C 202 ; WX 250 ; N ring ; B 23 593 227 796 ;
+C 203 ; WX 333 ; N cedilla ; B 66 -224 281 0 ;
+C 205 ; WX 333 ; N hungarumlaut ; B 61 624 440 765 ;
+C 206 ; WX 333 ; N ogonek ; B 0 -191 208 13 ;
+C 207 ; WX 333 ; N caron ; B 21 624 313 765 ;
+C 208 ; WX 1000 ; N emdash ; B 0 275 1000 345 ;
+C 225 ; WX 833 ; N AE ; B 0 0 785 750 ;
+C 227 ; WX 300 ; N ordfeminine ; B 25 305 276 765 ;
+C 232 ; WX 500 ; N Lslash ; B -13 0 472 750 ;
+C 233 ; WX 611 ; N Oslash ; B 29 -43 573 796 ;
+C 234 ; WX 833 ; N OE ; B 56 -18 787 765 ;
+C 235 ; WX 300 ; N ordmasculine ; B 20 305 279 765 ;
+C 241 ; WX 667 ; N ae ; B 26 -15 630 571 ;
+C 245 ; WX 222 ; N dotlessi ; B 72 0 151 556 ;
+C 248 ; WX 222 ; N lslash ; B -8 0 231 750 ;
+C 249 ; WX 500 ; N oslash ; B 25 -46 472 582 ;
+C 250 ; WX 722 ; N oe ; B 40 -15 676 571 ;
+C 251 ; WX 500 ; N germandbls ; B 71 -5 445 765 ;
+C -1 ; WX 500 ; N Zcaron ; B 28 0 473 959 ;
+C -1 ; WX 444 ; N ccedilla ; B 44 -224 405 571 ;
+C -1 ; WX 444 ; N ydieresis ; B 5 -190 425 750 ;
+C -1 ; WX 444 ; N atilde ; B 31 -15 417 749 ;
+C -1 ; WX 222 ; N icircumflex ; B -34 0 258 765 ;
+C -1 ; WX 300 ; N threesuperior ; B 17 291 283 750 ;
+C -1 ; WX 444 ; N ecircumflex ; B 43 -15 395 765 ;
+C -1 ; WX 500 ; N thorn ; B 72 -188 447 750 ;
+C -1 ; WX 444 ; N egrave ; B 43 -15 395 765 ;
+C -1 ; WX 300 ; N twosuperior ; B 19 300 281 750 ;
+C -1 ; WX 444 ; N eacute ; B 43 -15 395 765 ;
+C -1 ; WX 500 ; N otilde ; B 51 -15 449 749 ;
+C -1 ; WX 556 ; N Aacute ; B 11 0 546 959 ;
+C -1 ; WX 500 ; N ocircumflex ; B 51 -15 449 765 ;
+C -1 ; WX 444 ; N yacute ; B 5 -190 425 765 ;
+C -1 ; WX 500 ; N udieresis ; B 77 -15 424 750 ;
+C -1 ; WX 750 ; N threequarters ; B 21 0 730 750 ;
+C -1 ; WX 444 ; N acircumflex ; B 31 -15 417 765 ;
+C -1 ; WX 611 ; N Eth ; B -6 0 548 750 ;
+C -1 ; WX 444 ; N edieresis ; B 43 -15 395 750 ;
+C -1 ; WX 500 ; N ugrave ; B 77 -15 424 765 ;
+C -1 ; WX 750 ; N trademark ; B 0 329 719 750 ;
+C -1 ; WX 500 ; N ograve ; B 51 -15 449 765 ;
+C -1 ; WX 444 ; N scaron ; B 43 -15 400 765 ;
+C -1 ; WX 278 ; N Idieresis ; B 25 0 254 944 ;
+C -1 ; WX 500 ; N uacute ; B 77 -15 424 765 ;
+C -1 ; WX 444 ; N agrave ; B 31 -15 417 765 ;
+C -1 ; WX 500 ; N ntilde ; B 73 0 428 749 ;
+C -1 ; WX 444 ; N aring ; B 31 -15 417 796 ;
+C -1 ; WX 389 ; N zcaron ; B 24 0 366 765 ;
+C -1 ; WX 278 ; N Icircumflex ; B -6 0 286 959 ;
+C -1 ; WX 611 ; N Ntilde ; B 77 0 534 943 ;
+C -1 ; WX 500 ; N ucircumflex ; B 77 -15 424 765 ;
+C -1 ; WX 500 ; N Ecircumflex ; B 74 0 451 959 ;
+C -1 ; WX 278 ; N Iacute ; B 73 0 271 959 ;
+C -1 ; WX 556 ; N Ccedilla ; B 53 -224 503 765 ;
+C -1 ; WX 611 ; N Odieresis ; B 59 -18 553 944 ;
+C -1 ; WX 556 ; N Scaron ; B 51 -18 505 959 ;
+C -1 ; WX 500 ; N Edieresis ; B 74 0 451 944 ;
+C -1 ; WX 278 ; N Igrave ; B 8 0 206 959 ;
+C -1 ; WX 444 ; N adieresis ; B 31 -15 417 750 ;
+C -1 ; WX 611 ; N Ograve ; B 59 -18 553 959 ;
+C -1 ; WX 500 ; N Egrave ; B 74 0 451 959 ;
+C -1 ; WX 556 ; N Ydieresis ; B 11 0 546 944 ;
+C -1 ; WX 800 ; N registered ; B 8 -18 792 765 ;
+C -1 ; WX 611 ; N Otilde ; B 59 -18 553 943 ;
+C -1 ; WX 750 ; N onequarter ; B 34 0 716 750 ;
+C -1 ; WX 611 ; N Ugrave ; B 81 -18 531 959 ;
+C -1 ; WX 611 ; N Ucircumflex ; B 81 -18 531 959 ;
+C -1 ; WX 556 ; N Thorn ; B 86 0 519 750 ;
+C -1 ; WX 500 ; N divide ; B 44 3 457 505 ;
+C -1 ; WX 556 ; N Atilde ; B 11 0 546 943 ;
+C -1 ; WX 611 ; N Uacute ; B 81 -18 531 959 ;
+C -1 ; WX 611 ; N Ocircumflex ; B 59 -18 553 959 ;
+C -1 ; WX 500 ; N logicalnot ; B 44 117 457 384 ;
+C -1 ; WX 556 ; N Aring ; B 11 0 546 990 ;
+C -1 ; WX 222 ; N idieresis ; B -3 0 226 750 ;
+C -1 ; WX 222 ; N iacute ; B 45 0 243 765 ;
+C -1 ; WX 444 ; N aacute ; B 31 -15 417 765 ;
+C -1 ; WX 500 ; N plusminus ; B 44 0 457 505 ;
+C -1 ; WX 500 ; N multiply ; B 44 48 457 461 ;
+C -1 ; WX 611 ; N Udieresis ; B 81 -18 531 944 ;
+C -1 ; WX 500 ; N minus ; B 44 219 457 289 ;
+C -1 ; WX 300 ; N onesuperior ; B 67 300 233 750 ;
+C -1 ; WX 500 ; N Eacute ; B 74 0 451 959 ;
+C -1 ; WX 556 ; N Acircumflex ; B 11 0 546 959 ;
+C -1 ; WX 800 ; N copyright ; B 8 -18 792 765 ;
+C -1 ; WX 556 ; N Agrave ; B 11 0 546 959 ;
+C -1 ; WX 500 ; N odieresis ; B 51 -15 449 750 ;
+C -1 ; WX 500 ; N oacute ; B 51 -15 449 765 ;
+C -1 ; WX 400 ; N degree ; B 50 450 350 750 ;
+C -1 ; WX 222 ; N igrave ; B -20 0 178 765 ;
+C -1 ; WX 500 ; N mu ; B 75 -189 422 556 ;
+C -1 ; WX 611 ; N Oacute ; B 59 -18 553 959 ;
+C -1 ; WX 500 ; N eth ; B 42 -15 440 770 ;
+C -1 ; WX 556 ; N Adieresis ; B 11 0 546 944 ;
+C -1 ; WX 556 ; N Yacute ; B 11 0 546 959 ;
+C -1 ; WX 250 ; N brokenbar ; B 93 0 157 750 ;
+C -1 ; WX 750 ; N onehalf ; B 42 0 709 750 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 115
+
+KPX A y -18
+KPX A w -18
+KPX A v -18
+KPX A quoteright -55
+KPX A Y -55
+KPX A W -37
+KPX A V -37
+KPX A T -55
+
+KPX F period -111
+KPX F comma -111
+KPX F A -37
+
+KPX L y -37
+KPX L quoteright -92
+KPX L Y -92
+KPX L W -74
+KPX L V -74
+KPX L T -74
+
+KPX P period -129
+KPX P comma -129
+KPX P A -37
+
+KPX R y 0
+KPX R Y -18
+KPX R W 0
+KPX R V 0
+KPX R T -18
+
+KPX T y -55
+KPX T w -74
+KPX T u -74
+KPX T semicolon -74
+KPX T s -74
+KPX T r -74
+KPX T period -92
+KPX T o -74
+KPX T i -18
+KPX T hyphen -55
+KPX T e -74
+KPX T comma -92
+KPX T colon -74
+KPX T c -74
+KPX T a -74
+KPX T A -55
+
+KPX V y 0
+KPX V u -18
+KPX V semicolon -18
+KPX V r -18
+KPX V period -92
+KPX V o -18
+KPX V i 0
+KPX V hyphen -18
+KPX V e -18
+KPX V comma -92
+KPX V colon -18
+KPX V a -18
+KPX V A -37
+
+KPX W y 0
+KPX W u 0
+KPX W semicolon 0
+KPX W r 0
+KPX W period -74
+KPX W o -18
+KPX W i 0
+KPX W hyphen -18
+KPX W e -18
+KPX W comma -74
+KPX W colon 0
+KPX W a -18
+KPX W A -18
+
+KPX Y v -18
+KPX Y u -37
+KPX Y semicolon -37
+KPX Y q -55
+KPX Y period -111
+KPX Y p -37
+KPX Y o -55
+KPX Y i -18
+KPX Y hyphen -74
+KPX Y e -55
+KPX Y comma -111
+KPX Y colon -37
+KPX Y a -55
+KPX Y A -55
+
+KPX f quoteright 18
+KPX f f 0
+
+KPX quoteleft quoteleft -18
+
+KPX quoteright t 0
+KPX quoteright s -55
+KPX quoteright quoteright -18
+
+KPX r z 20
+KPX r y 18
+KPX r x 20
+KPX r w 18
+KPX r v 18
+KPX r u 0
+KPX r t 0
+KPX r r 0
+KPX r quoteright 0
+KPX r q 0
+KPX r period -74
+KPX r o 0
+KPX r n 0
+KPX r m 0
+KPX r hyphen -37
+KPX r h 0
+KPX r g 0
+KPX r f 20
+KPX r e 0
+KPX r d 0
+KPX r comma -74
+KPX r c -20
+
+KPX v period -55
+KPX v comma -55
+
+KPX w period -37
+KPX w comma -37
+
+KPX y period -55
+KPX y comma -55
+EndKernPairs
+EndKernData
+StartComposites 58
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 112 194 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 112 194 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 112 194 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 112 194 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 153 194 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 112 194 ;
+CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 112 0 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 84 194 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 84 194 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 84 194 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 84 194 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute -27 194 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex -27 194 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis -27 194 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave -27 194 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 139 194 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 139 194 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 139 194 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 139 194 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 139 194 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 139 194 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 112 194 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 139 194 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 139 194 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 139 194 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 139 194 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 112 194 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 112 194 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 84 194 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 56 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 56 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 56 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 56 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 97 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 56 0 ;
+CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 56 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 56 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 56 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 56 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 56 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -55 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -55 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -55 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -55 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 84 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 84 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 84 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 84 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 84 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 84 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 56 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 84 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 84 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 84 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 84 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 56 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 56 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 28 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/He-Cn+ b/font/font/He-Cn+
new file mode 100644
index 0000000..cadc803
--- /dev/null
+++ b/font/font/He-Cn+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 556 ; N Ccaron ; B 53 -18 503 960 ;
+C -1 ; WX 444 ; N ccaron ; B 44 -15 405 765 ;
+C -1 ; WX 611 ; N Dcaron ; B 82 0 548 960 ;
+C -1 ; WX 566 ; N dcaron ; B 48 -15 527 825 ;
+C -1 ; WX 500 ; N Ecaron ; B 74 0 451 960 ;
+C -1 ; WX 444 ; N ecaron ; B 43 -15 395 765 ;
+C -1 ; WX 500 ; N Lcaron ; B 83 0 472 825 ;
+C -1 ; WX 500 ; N Lacute ; B 83 0 472 960 ;
+C -1 ; WX 288 ; N lcaron ; B 72 0 254 825 ;
+C -1 ; WX 222 ; N lacute ; B 65 0 263 960 ;
+C -1 ; WX 611 ; N Ncaron ; B 77 0 534 960 ;
+C -1 ; WX 500 ; N ncaron ; B 73 0 428 765 ;
+C -1 ; WX 611 ; N Rcaron ; B 86 0 565 960 ;
+C -1 ; WX 611 ; N Racute ; B 86 0 565 960 ;
+C -1 ; WX 333 ; N rcaron ; B 21 0 322 765 ;
+C -1 ; WX 333 ; N racute ; B 81 0 322 765 ;
+C -1 ; WX 500 ; N Tcaron ; B 15 0 486 960 ;
+C -1 ; WX 344 ; N tcaron ; B 9 0 360 750 ;
+C -1 ; WX 611 ; N Uring ; B 81 -18 531 960 ;
+C -1 ; WX 500 ; N uring ; B 77 -15 424 796 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 156 195 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 73 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 139 195 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 369 75 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 83 195 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 55 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 126 75 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 83 195 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 96 75 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute -35 195 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 139 195 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 83 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 139 195 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 177 195 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 0 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 20 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 83 195 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 202 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 180 164 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 125 0 ;
+EndBuildComposites
diff --git a/font/font/He-CnBd b/font/font/He-CnBd
new file mode 100644
index 0000000..d194cbc
--- /dev/null
+++ b/font/font/He-CnBd
@@ -0,0 +1,447 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989 Adobe Systems Incorporated. All rights reserved.
+Comment Creation Date: Tue Dec 5 16:31:49 1989
+Comment UniqueID 26320
+Comment VMusage 26214 33106
+FontName Helvetica-Condensed-Bold
+FullName Helvetica Condensed Bold
+FamilyName Helvetica
+Weight BoldCondensed
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -169 -228 1091 971
+UnderlinePosition -90
+UnderlineThickness 58
+Version 001.003
+Notice Copyright (c) 1985, 1987, 1989 Adobe Systems Incorporated. All rights reserved.Helvetica is a trademark of Linotype AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 750
+XHeight 564
+Ascender 750
+Descender -189
+StartCharMetrics 228
+C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 333 ; N exclam ; B 101 0 232 750 ;
+C 34 ; WX 333 ; N quotedbl ; B 16 468 318 739 ;
+C 35 ; WX 500 ; N numbersign ; B 31 0 469 738 ;
+C 36 ; WX 500 ; N dollar ; B 35 -124 466 803 ;
+C 37 ; WX 833 ; N percent ; B 31 -15 803 750 ;
+C 38 ; WX 667 ; N ampersand ; B 63 -18 615 768 ;
+C 39 ; WX 278 ; N quoteright ; B 81 479 202 750 ;
+C 40 ; WX 333 ; N parenleft ; B 52 -198 281 768 ;
+C 41 ; WX 333 ; N parenright ; B 52 -198 281 768 ;
+C 42 ; WX 500 ; N asterisk ; B 79 412 422 738 ;
+C 43 ; WX 500 ; N plus ; B 26 0 475 492 ;
+C 44 ; WX 333 ; N comma ; B 101 -145 233 132 ;
+C 45 ; WX 333 ; N hyphen ; B 48 255 286 370 ;
+C 46 ; WX 333 ; N period ; B 101 0 233 132 ;
+C 47 ; WX 278 ; N slash ; B -11 -94 312 750 ;
+C 48 ; WX 500 ; N zero ; B 48 -15 453 753 ;
+C 49 ; WX 500 ; N one ; B 44 0 353 750 ;
+C 50 ; WX 500 ; N two ; B 32 0 453 753 ;
+C 51 ; WX 500 ; N three ; B 28 -15 453 753 ;
+C 52 ; WX 500 ; N four ; B 23 0 470 738 ;
+C 53 ; WX 500 ; N five ; B 37 -15 458 738 ;
+C 54 ; WX 500 ; N six ; B 42 -15 459 753 ;
+C 55 ; WX 500 ; N seven ; B 32 0 454 738 ;
+C 56 ; WX 500 ; N eight ; B 41 -15 460 753 ;
+C 57 ; WX 500 ; N nine ; B 42 -15 459 753 ;
+C 58 ; WX 278 ; N colon ; B 73 0 205 556 ;
+C 59 ; WX 278 ; N semicolon ; B 73 -145 205 556 ;
+C 60 ; WX 500 ; N less ; B 42 -24 459 527 ;
+C 61 ; WX 500 ; N equal ; B 26 96 475 401 ;
+C 62 ; WX 500 ; N greater ; B 42 -24 459 527 ;
+C 63 ; WX 500 ; N question ; B 51 0 440 768 ;
+C 64 ; WX 833 ; N at ; B 38 -18 795 768 ;
+C 65 ; WX 556 ; N A ; B 9 0 547 750 ;
+C 66 ; WX 556 ; N B ; B 65 0 506 750 ;
+C 67 ; WX 556 ; N C ; B 55 -18 512 768 ;
+C 68 ; WX 611 ; N D ; B 72 0 550 750 ;
+C 69 ; WX 500 ; N E ; B 64 0 458 750 ;
+C 70 ; WX 500 ; N F ; B 73 0 470 750 ;
+C 71 ; WX 611 ; N G ; B 55 -18 542 768 ;
+C 72 ; WX 611 ; N H ; B 68 0 544 750 ;
+C 73 ; WX 278 ; N I ; B 69 0 209 750 ;
+C 74 ; WX 444 ; N J ; B 7 -18 384 750 ;
+C 75 ; WX 556 ; N K ; B 68 0 547 750 ;
+C 76 ; WX 500 ; N L ; B 68 0 468 750 ;
+C 77 ; WX 778 ; N M ; B 67 0 712 750 ;
+C 78 ; WX 611 ; N N ; B 68 0 543 750 ;
+C 79 ; WX 611 ; N O ; B 61 -18 551 768 ;
+C 80 ; WX 556 ; N P ; B 68 0 529 750 ;
+C 81 ; WX 611 ; N Q ; B 61 -71 587 768 ;
+C 82 ; WX 611 ; N R ; B 66 0 567 750 ;
+C 83 ; WX 556 ; N S ; B 49 -18 508 768 ;
+C 84 ; WX 500 ; N T ; B 17 0 484 750 ;
+C 85 ; WX 611 ; N U ; B 68 -18 544 750 ;
+C 86 ; WX 556 ; N V ; B 21 0 536 750 ;
+C 87 ; WX 833 ; N W ; B 24 0 810 750 ;
+C 88 ; WX 556 ; N X ; B 11 0 545 750 ;
+C 89 ; WX 556 ; N Y ; B 12 0 545 750 ;
+C 90 ; WX 500 ; N Z ; B 33 0 468 750 ;
+C 91 ; WX 333 ; N bracketleft ; B 81 -94 280 750 ;
+C 92 ; WX 250 ; N backslash ; B -89 0 340 750 ;
+C 93 ; WX 333 ; N bracketright ; B 53 -94 252 750 ;
+C 94 ; WX 500 ; N asciicircum ; B 10 326 490 750 ;
+C 95 ; WX 500 ; N underscore ; B 0 -119 500 -61 ;
+C 96 ; WX 278 ; N quoteleft ; B 76 495 197 766 ;
+C 97 ; WX 500 ; N a ; B 42 -15 440 579 ;
+C 98 ; WX 500 ; N b ; B 64 -15 444 750 ;
+C 99 ; WX 444 ; N c ; B 49 -15 403 579 ;
+C 100 ; WX 500 ; N d ; B 53 -15 433 750 ;
+C 101 ; WX 500 ; N e ; B 53 -15 443 579 ;
+C 102 ; WX 278 ; N f ; B 21 0 257 750 ; L i fi ; L l fl ;
+C 103 ; WX 500 ; N g ; B 53 -190 433 579 ;
+C 104 ; WX 500 ; N h ; B 61 0 440 750 ;
+C 105 ; WX 278 ; N i ; B 74 0 204 750 ;
+C 106 ; WX 278 ; N j ; B 31 -192 210 750 ;
+C 107 ; WX 444 ; N k ; B 48 0 443 750 ;
+C 108 ; WX 278 ; N l ; B 74 0 204 750 ;
+C 109 ; WX 778 ; N m ; B 66 0 712 579 ;
+C 110 ; WX 500 ; N n ; B 61 0 440 579 ;
+C 111 ; WX 500 ; N o ; B 53 -15 447 579 ;
+C 112 ; WX 500 ; N p ; B 58 -189 438 579 ;
+C 113 ; WX 500 ; N q ; B 50 -188 430 579 ;
+C 114 ; WX 333 ; N r ; B 60 0 319 574 ;
+C 115 ; WX 444 ; N s ; B 28 -15 407 579 ;
+C 116 ; WX 278 ; N t ; B 14 -7 252 719 ;
+C 117 ; WX 500 ; N u ; B 58 -15 431 564 ;
+C 118 ; WX 444 ; N v ; B 10 0 434 564 ;
+C 119 ; WX 667 ; N w ; B 11 0 645 564 ;
+C 120 ; WX 444 ; N x ; B 8 0 436 564 ;
+C 121 ; WX 444 ; N y ; B 5 -195 429 564 ;
+C 122 ; WX 389 ; N z ; B 23 0 367 564 ;
+C 123 ; WX 274 ; N braceleft ; B -32 -92 240 750 ;
+C 124 ; WX 250 ; N bar ; B 75 0 175 750 ;
+C 125 ; WX 274 ; N braceright ; B 34 -94 306 750 ;
+C 126 ; WX 500 ; N asciitilde ; B 26 153 475 359 ;
+C 161 ; WX 333 ; N exclamdown ; B 102 -170 232 579 ;
+C 162 ; WX 500 ; N cent ; B 72 -122 428 671 ;
+C 163 ; WX 500 ; N sterling ; B 35 -15 487 768 ;
+C 164 ; WX 167 ; N fraction ; B -169 0 331 738 ;
+C 165 ; WX 500 ; N yen ; B -18 0 518 750 ;
+C 166 ; WX 500 ; N florin ; B 9 -185 492 763 ;
+C 167 ; WX 500 ; N section ; B 37 -183 463 768 ;
+C 168 ; WX 500 ; N currency ; B 9 58 492 560 ;
+C 169 ; WX 250 ; N quotesingle ; B 66 468 185 739 ;
+C 170 ; WX 500 ; N quotedblleft ; B 87 495 405 766 ;
+C 171 ; WX 500 ; N guillemotleft ; B 74 62 419 447 ;
+C 172 ; WX 278 ; N guilsinglleft ; B 58 62 215 447 ;
+C 173 ; WX 278 ; N guilsinglright ; B 63 62 220 447 ;
+C 174 ; WX 500 ; N fi ; B 10 0 446 750 ;
+C 175 ; WX 500 ; N fl ; B 10 0 443 750 ;
+C 177 ; WX 500 ; N endash ; B 0 259 500 369 ;
+C 178 ; WX 500 ; N dagger ; B 37 -155 463 768 ;
+C 179 ; WX 500 ; N daggerdbl ; B 35 -161 466 768 ;
+C 180 ; WX 333 ; N periodcentered ; B 101 183 233 315 ;
+C 182 ; WX 550 ; N paragraph ; B 23 -116 526 750 ;
+C 183 ; WX 420 ; N bullet ; B 22 186 398 562 ;
+C 184 ; WX 278 ; N quotesinglbase ; B 87 -138 207 132 ;
+C 185 ; WX 500 ; N quotedblbase ; B 96 -138 413 132 ;
+C 186 ; WX 500 ; N quotedblright ; B 95 479 413 750 ;
+C 187 ; WX 500 ; N guillemotright ; B 81 62 426 447 ;
+C 188 ; WX 1000 ; N ellipsis ; B 101 0 899 132 ;
+C 189 ; WX 1111 ; N perthousand ; B 21 -18 1091 748 ;
+C 191 ; WX 500 ; N questiondown ; B 60 -190 449 579 ;
+C 193 ; WX 333 ; N grave ; B 1 629 250 775 ;
+C 194 ; WX 333 ; N acute ; B 83 629 332 775 ;
+C 195 ; WX 333 ; N circumflex ; B -10 644 343 790 ;
+C 196 ; WX 333 ; N tilde ; B -16 636 350 764 ;
+C 197 ; WX 333 ; N macron ; B -6 666 340 740 ;
+C 198 ; WX 333 ; N breve ; B -1 635 335 780 ;
+C 199 ; WX 333 ; N dotaccent ; B 103 644 230 759 ;
+C 200 ; WX 333 ; N dieresis ; B 5 644 328 759 ;
+C 202 ; WX 333 ; N ring ; B 60 632 273 845 ;
+C 203 ; WX 333 ; N cedilla ; B 39 -228 275 0 ;
+C 205 ; WX 333 ; N hungarumlaut ; B -17 634 447 780 ;
+C 206 ; WX 333 ; N ogonek ; B 88 -205 278 0 ;
+C 207 ; WX 333 ; N caron ; B -10 634 343 780 ;
+C 208 ; WX 1000 ; N emdash ; B 0 259 1000 369 ;
+C 225 ; WX 778 ; N AE ; B -22 0 750 750 ;
+C 227 ; WX 300 ; N ordfeminine ; B 20 291 281 768 ;
+C 232 ; WX 500 ; N Lslash ; B 0 0 474 750 ;
+C 233 ; WX 611 ; N Oslash ; B 36 -38 578 779 ;
+C 234 ; WX 833 ; N OE ; B 61 -18 792 768 ;
+C 235 ; WX 300 ; N ordmasculine ; B 22 291 278 768 ;
+C 241 ; WX 722 ; N ae ; B 44 -15 672 579 ;
+C 245 ; WX 278 ; N dotlessi ; B 74 0 204 564 ;
+C 248 ; WX 278 ; N lslash ; B 2 0 272 750 ;
+C 249 ; WX 500 ; N oslash ; B 7 -58 492 617 ;
+C 250 ; WX 722 ; N oe ; B 46 -15 678 579 ;
+C 251 ; WX 500 ; N germandbls ; B 60 -15 445 768 ;
+C -1 ; WX 500 ; N Zcaron ; B 33 0 468 946 ;
+C -1 ; WX 444 ; N ccedilla ; B 49 -228 403 579 ;
+C -1 ; WX 444 ; N ydieresis ; B 5 -195 429 759 ;
+C -1 ; WX 500 ; N atilde ; B 42 -15 440 744 ;
+C -1 ; WX 278 ; N icircumflex ; B -47 0 306 770 ;
+C -1 ; WX 300 ; N threesuperior ; B 12 290 288 751 ;
+C -1 ; WX 500 ; N ecircumflex ; B 53 -15 443 770 ;
+C -1 ; WX 500 ; N thorn ; B 58 -189 438 750 ;
+C -1 ; WX 500 ; N egrave ; B 53 -15 443 775 ;
+C -1 ; WX 300 ; N twosuperior ; B 13 300 287 752 ;
+C -1 ; WX 500 ; N eacute ; B 53 -15 443 775 ;
+C -1 ; WX 500 ; N otilde ; B 53 -15 447 744 ;
+C -1 ; WX 556 ; N Aacute ; B 9 0 547 961 ;
+C -1 ; WX 500 ; N ocircumflex ; B 53 -15 447 770 ;
+C -1 ; WX 444 ; N yacute ; B 5 -195 429 775 ;
+C -1 ; WX 500 ; N udieresis ; B 58 -15 431 759 ;
+C -1 ; WX 750 ; N threequarters ; B 12 0 739 751 ;
+C -1 ; WX 500 ; N acircumflex ; B 42 -15 440 770 ;
+C -1 ; WX 611 ; N Eth ; B -6 0 550 750 ;
+C -1 ; WX 500 ; N edieresis ; B 53 -15 443 759 ;
+C -1 ; WX 500 ; N ugrave ; B 58 -15 431 775 ;
+C -1 ; WX 860 ; N trademark ; B 1 346 774 750 ;
+C -1 ; WX 500 ; N ograve ; B 53 -15 447 775 ;
+C -1 ; WX 444 ; N scaron ; B 28 -15 407 760 ;
+C -1 ; WX 278 ; N Idieresis ; B -22 0 301 945 ;
+C -1 ; WX 500 ; N uacute ; B 58 -15 431 775 ;
+C -1 ; WX 500 ; N agrave ; B 42 -15 440 775 ;
+C -1 ; WX 500 ; N ntilde ; B 61 0 440 744 ;
+C -1 ; WX 500 ; N aring ; B 42 -15 440 845 ;
+C -1 ; WX 389 ; N zcaron ; B 18 0 371 760 ;
+C -1 ; WX 278 ; N Icircumflex ; B -37 0 316 956 ;
+C -1 ; WX 611 ; N Ntilde ; B 68 0 543 930 ;
+C -1 ; WX 500 ; N ucircumflex ; B 58 -15 431 780 ;
+C -1 ; WX 500 ; N Ecircumflex ; B 64 0 458 956 ;
+C -1 ; WX 278 ; N Iacute ; B 56 0 305 961 ;
+C -1 ; WX 556 ; N Ccedilla ; B 55 -228 512 768 ;
+C -1 ; WX 611 ; N Odieresis ; B 61 -18 551 945 ;
+C -1 ; WX 556 ; N Scaron ; B 49 -18 508 946 ;
+C -1 ; WX 500 ; N Edieresis ; B 64 0 458 945 ;
+C -1 ; WX 278 ; N Igrave ; B -26 0 223 961 ;
+C -1 ; WX 500 ; N adieresis ; B 42 -15 440 759 ;
+C -1 ; WX 611 ; N Ograve ; B 61 -18 551 961 ;
+C -1 ; WX 500 ; N Egrave ; B 64 0 458 961 ;
+C -1 ; WX 556 ; N Ydieresis ; B 12 0 545 945 ;
+C -1 ; WX 830 ; N registered ; B 22 -18 808 768 ;
+C -1 ; WX 611 ; N Otilde ; B 61 -18 551 930 ;
+C -1 ; WX 750 ; N onequarter ; B 20 0 729 750 ;
+C -1 ; WX 611 ; N Ugrave ; B 68 -18 544 961 ;
+C -1 ; WX 611 ; N Ucircumflex ; B 68 -18 544 956 ;
+C -1 ; WX 556 ; N Thorn ; B 68 0 529 750 ;
+C -1 ; WX 500 ; N divide ; B 26 6 475 492 ;
+C -1 ; WX 556 ; N Atilde ; B 9 0 547 930 ;
+C -1 ; WX 611 ; N Uacute ; B 68 -18 544 961 ;
+C -1 ; WX 611 ; N Ocircumflex ; B 61 -18 551 956 ;
+C -1 ; WX 500 ; N logicalnot ; B 26 105 475 401 ;
+C -1 ; WX 556 ; N Aring ; B 9 0 547 971 ;
+C -1 ; WX 278 ; N idieresis ; B -22 0 301 759 ;
+C -1 ; WX 278 ; N iacute ; B 56 0 305 775 ;
+C -1 ; WX 500 ; N aacute ; B 42 -15 440 775 ;
+C -1 ; WX 500 ; N plusminus ; B 26 -15 475 513 ;
+C -1 ; WX 500 ; N multiply ; B 26 22 475 476 ;
+C -1 ; WX 611 ; N Udieresis ; B 68 -18 544 945 ;
+C -1 ; WX 500 ; N minus ; B 26 194 475 304 ;
+C -1 ; WX 300 ; N onesuperior ; B 50 300 251 750 ;
+C -1 ; WX 500 ; N Eacute ; B 64 0 458 961 ;
+C -1 ; WX 556 ; N Acircumflex ; B 9 0 547 956 ;
+C -1 ; WX 830 ; N copyright ; B 22 -18 808 768 ;
+C -1 ; WX 556 ; N Agrave ; B 9 0 547 961 ;
+C -1 ; WX 500 ; N odieresis ; B 53 -15 447 759 ;
+C -1 ; WX 500 ; N oacute ; B 53 -15 447 775 ;
+C -1 ; WX 400 ; N degree ; B 50 450 350 750 ;
+C -1 ; WX 278 ; N igrave ; B -26 0 223 775 ;
+C -1 ; WX 500 ; N mu ; B 58 -189 431 564 ;
+C -1 ; WX 611 ; N Oacute ; B 61 -18 551 961 ;
+C -1 ; WX 500 ; N eth ; B 46 -15 443 776 ;
+C -1 ; WX 556 ; N Adieresis ; B 9 0 547 945 ;
+C -1 ; WX 556 ; N Yacute ; B 12 0 545 961 ;
+C -1 ; WX 250 ; N brokenbar ; B 75 0 175 750 ;
+C -1 ; WX 750 ; N onehalf ; B 12 0 739 750 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 115
+
+KPX A y -18
+KPX A w -18
+KPX A v -18
+KPX A quoteright -55
+KPX A Y -55
+KPX A W -37
+KPX A V -37
+KPX A T -55
+
+KPX F period -111
+KPX F comma -111
+KPX F A -37
+
+KPX L y -37
+KPX L quoteright -92
+KPX L Y -92
+KPX L W -74
+KPX L V -74
+KPX L T -74
+
+KPX P period -129
+KPX P comma -129
+KPX P A -37
+
+KPX R y 0
+KPX R Y -18
+KPX R W 0
+KPX R V 0
+KPX R T -18
+
+KPX T y -55
+KPX T w -74
+KPX T u -74
+KPX T semicolon -74
+KPX T s -74
+KPX T r -74
+KPX T period -92
+KPX T o -74
+KPX T i -18
+KPX T hyphen -55
+KPX T e -74
+KPX T comma -92
+KPX T colon -74
+KPX T c -74
+KPX T a -74
+KPX T A -55
+
+KPX V y 0
+KPX V u -18
+KPX V semicolon -18
+KPX V r -18
+KPX V period -92
+KPX V o -18
+KPX V i 0
+KPX V hyphen -18
+KPX V e -18
+KPX V comma -92
+KPX V colon -18
+KPX V a -18
+KPX V A -37
+
+KPX W y 0
+KPX W u 0
+KPX W semicolon 0
+KPX W r 0
+KPX W period -74
+KPX W o -18
+KPX W i 0
+KPX W hyphen -18
+KPX W e -18
+KPX W comma -74
+KPX W colon 0
+KPX W a -18
+KPX W A -18
+
+KPX Y v -18
+KPX Y u -37
+KPX Y semicolon -37
+KPX Y q -55
+KPX Y period -111
+KPX Y p -37
+KPX Y o -55
+KPX Y i -18
+KPX Y hyphen -74
+KPX Y e -55
+KPX Y comma -111
+KPX Y colon -37
+KPX Y a -55
+KPX Y A -55
+
+KPX f quoteright 18
+KPX f f 0
+
+KPX quoteleft quoteleft -18
+
+KPX quoteright t 0
+KPX quoteright s -55
+KPX quoteright quoteright -18
+
+KPX r z 20
+KPX r y 18
+KPX r x 20
+KPX r w 18
+KPX r v 18
+KPX r u 0
+KPX r t 0
+KPX r r 0
+KPX r quoteright 0
+KPX r q 0
+KPX r period -74
+KPX r o 0
+KPX r n 0
+KPX r m 0
+KPX r hyphen -37
+KPX r h 0
+KPX r g 0
+KPX r f 0
+KPX r e 0
+KPX r d 0
+KPX r comma -74
+KPX r c 0
+
+KPX v period -55
+KPX v comma -55
+
+KPX w period -37
+KPX w comma -37
+
+KPX y period -55
+KPX y comma -55
+EndKernPairs
+EndKernData
+StartComposites 58
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 112 186 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 102 166 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 112 186 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 112 186 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 112 126 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 112 166 ;
+CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 112 0 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 84 186 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 84 166 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 84 186 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 84 186 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute -27 186 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex -27 166 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis -27 186 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave -27 186 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 139 166 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 139 186 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 139 166 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 139 186 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 139 186 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 139 166 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 112 166 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 139 186 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 139 166 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 139 186 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 139 186 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 112 186 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 112 186 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 84 166 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 84 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 84 -20 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 84 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 84 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 84 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 84 -20 ;
+CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 56 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 84 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 84 -20 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 84 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 84 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -27 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -37 -20 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -27 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -27 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 84 -20 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 84 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 84 -20 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 84 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 84 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 84 -20 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 46 -20 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 84 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 84 -10 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 84 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 84 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 56 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 56 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 28 -20 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/He-CnBd+ b/font/font/He-CnBd+
new file mode 100644
index 0000000..9af1668
--- /dev/null
+++ b/font/font/He-CnBd+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 556 ; N Ccaron ; B 55 -18 512 965 ;
+C -1 ; WX 444 ; N ccaron ; B 49 -15 416 780 ;
+C -1 ; WX 611 ; N Dcaron ; B 72 0 550 965 ;
+C -1 ; WX 585 ; N dcaron ; B 53 -15 566 825 ;
+C -1 ; WX 500 ; N Ecaron ; B 64 0 458 965 ;
+C -1 ; WX 500 ; N ecaron ; B 53 -15 443 780 ;
+C -1 ; WX 500 ; N Lcaron ; B 68 0 468 825 ;
+C -1 ; WX 500 ; N Lacute ; B 68 0 468 965 ;
+C -1 ; WX 363 ; N lcaron ; B 74 0 337 825 ;
+C -1 ; WX 278 ; N lacute ; B 74 0 330 965 ;
+C -1 ; WX 611 ; N Ncaron ; B 68 0 543 965 ;
+C -1 ; WX 500 ; N ncaron ; B 61 0 440 780 ;
+C -1 ; WX 611 ; N Rcaron ; B 66 0 567 965 ;
+C -1 ; WX 611 ; N Racute ; B 66 0 567 965 ;
+C -1 ; WX 333 ; N rcaron ; B -10 0 343 780 ;
+C -1 ; WX 333 ; N racute ; B 60 0 357 775 ;
+C -1 ; WX 500 ; N Tcaron ; B 17 0 484 965 ;
+C -1 ; WX 363 ; N tcaron ; B 14 -7 385 750 ;
+C -1 ; WX 611 ; N Uring ; B 68 -18 544 965 ;
+C -1 ; WX 500 ; N uring ; B 58 -15 431 845 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 157 185 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 73 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 139 185 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 364 75 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 83 185 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 83 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 140 75 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 83 190 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 135 75 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute -2 190 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 139 185 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 83 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 139 185 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 186 190 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 0 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 25 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 83 185 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 183 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 139 120 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 83 0 ;
+EndBuildComposites
diff --git a/font/font/He-CnBdO b/font/font/He-CnBdO
new file mode 100644
index 0000000..3512c9d
--- /dev/null
+++ b/font/font/He-CnBdO
@@ -0,0 +1,447 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989 Adobe Systems Incorporated. All rights reserved.
+Comment Creation Date: Tue Dec 5 16:32:56 1989
+Comment UniqueID 26321
+Comment VMusage 6334 40142
+FontName Helvetica-Condensed-BoldObl
+FullName Helvetica Condensed Bold Oblique
+FamilyName Helvetica
+Weight BoldCondensed
+ItalicAngle -12
+IsFixedPitch false
+FontBBox -169 -228 1141 971
+UnderlinePosition -90
+UnderlineThickness 58
+Version 001.003
+Notice Copyright (c) 1985, 1987, 1989 Adobe Systems Incorporated. All rights reserved.Helvetica is a trademark of Linotype AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 750
+XHeight 564
+Ascender 750
+Descender -189
+StartCharMetrics 228
+C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 333 ; N exclam ; B 102 0 390 750 ;
+C 34 ; WX 333 ; N quotedbl ; B 115 468 475 739 ;
+C 35 ; WX 500 ; N numbersign ; B 81 0 580 738 ;
+C 36 ; WX 500 ; N dollar ; B 68 -124 576 803 ;
+C 37 ; WX 833 ; N percent ; B 138 -15 853 750 ;
+C 38 ; WX 667 ; N ampersand ; B 101 -18 676 768 ;
+C 39 ; WX 278 ; N quoteright ; B 183 479 361 750 ;
+C 40 ; WX 333 ; N parenleft ; B 91 -198 442 768 ;
+C 41 ; WX 333 ; N parenright ; B 12 -198 363 768 ;
+C 42 ; WX 500 ; N asterisk ; B 203 412 546 738 ;
+C 43 ; WX 500 ; N plus ; B 67 0 540 492 ;
+C 44 ; WX 333 ; N comma ; B 70 -145 261 132 ;
+C 45 ; WX 333 ; N hyphen ; B 102 255 365 370 ;
+C 46 ; WX 333 ; N period ; B 101 0 261 132 ;
+C 47 ; WX 278 ; N slash ; B -31 -94 471 750 ;
+C 48 ; WX 500 ; N zero ; B 82 -15 576 753 ;
+C 49 ; WX 500 ; N one ; B 155 0 512 750 ;
+C 50 ; WX 500 ; N two ; B 32 0 577 753 ;
+C 51 ; WX 500 ; N three ; B 61 -15 563 753 ;
+C 52 ; WX 500 ; N four ; B 55 0 563 738 ;
+C 53 ; WX 500 ; N five ; B 72 -15 581 738 ;
+C 54 ; WX 500 ; N six ; B 83 -15 575 753 ;
+C 55 ; WX 500 ; N seven ; B 126 0 611 738 ;
+C 56 ; WX 500 ; N eight ; B 76 -15 570 753 ;
+C 57 ; WX 500 ; N nine ; B 84 -15 575 753 ;
+C 58 ; WX 278 ; N colon ; B 73 0 323 556 ;
+C 59 ; WX 278 ; N semicolon ; B 42 -145 323 556 ;
+C 60 ; WX 500 ; N less ; B 85 -24 571 527 ;
+C 61 ; WX 500 ; N equal ; B 46 96 560 401 ;
+C 62 ; WX 500 ; N greater ; B 37 -24 523 527 ;
+C 63 ; WX 500 ; N question ; B 147 0 569 768 ;
+C 64 ; WX 833 ; N at ; B 109 -18 897 768 ;
+C 65 ; WX 556 ; N A ; B 9 0 547 750 ;
+C 66 ; WX 556 ; N B ; B 65 0 615 750 ;
+C 67 ; WX 556 ; N C ; B 99 -18 630 768 ;
+C 68 ; WX 611 ; N D ; B 72 0 662 750 ;
+C 69 ; WX 500 ; N E ; B 64 0 617 750 ;
+C 70 ; WX 500 ; N F ; B 73 0 629 750 ;
+C 71 ; WX 611 ; N G ; B 99 -18 664 768 ;
+C 72 ; WX 611 ; N H ; B 68 0 703 750 ;
+C 73 ; WX 278 ; N I ; B 69 0 368 750 ;
+C 74 ; WX 444 ; N J ; B 36 -18 543 750 ;
+C 75 ; WX 556 ; N K ; B 68 0 697 750 ;
+C 76 ; WX 500 ; N L ; B 68 0 491 750 ;
+C 77 ; WX 778 ; N M ; B 67 0 871 750 ;
+C 78 ; WX 611 ; N N ; B 68 0 702 750 ;
+C 79 ; WX 611 ; N O ; B 105 -18 664 768 ;
+C 80 ; WX 556 ; N P ; B 68 0 651 750 ;
+C 81 ; WX 611 ; N Q ; B 105 -71 664 768 ;
+C 82 ; WX 611 ; N R ; B 66 0 671 750 ;
+C 83 ; WX 556 ; N S ; B 85 -18 613 768 ;
+C 84 ; WX 500 ; N T ; B 153 0 643 750 ;
+C 85 ; WX 611 ; N U ; B 105 -18 703 750 ;
+C 86 ; WX 556 ; N V ; B 180 0 695 750 ;
+C 87 ; WX 833 ; N W ; B 167 0 969 750 ;
+C 88 ; WX 556 ; N X ; B 11 0 698 750 ;
+C 89 ; WX 556 ; N Y ; B 171 0 704 750 ;
+C 90 ; WX 500 ; N Z ; B 33 0 618 750 ;
+C 91 ; WX 333 ; N bracketleft ; B 61 -94 439 750 ;
+C 92 ; WX 250 ; N backslash ; B 70 0 340 750 ;
+C 93 ; WX 333 ; N bracketright ; B 33 -94 411 750 ;
+C 94 ; WX 500 ; N asciicircum ; B 89 326 569 750 ;
+C 95 ; WX 500 ; N underscore ; B -25 -119 487 -61 ;
+C 96 ; WX 278 ; N quoteleft ; B 181 495 360 766 ;
+C 97 ; WX 500 ; N a ; B 68 -15 525 579 ;
+C 98 ; WX 500 ; N b ; B 64 -15 534 750 ;
+C 99 ; WX 444 ; N c ; B 79 -15 496 579 ;
+C 100 ; WX 500 ; N d ; B 83 -15 592 750 ;
+C 101 ; WX 500 ; N e ; B 88 -15 530 579 ;
+C 102 ; WX 278 ; N f ; B 71 0 416 750 ; L i fi ; L l fl ;
+C 103 ; WX 500 ; N g ; B 44 -190 553 579 ;
+C 104 ; WX 500 ; N h ; B 61 0 539 750 ;
+C 105 ; WX 278 ; N i ; B 74 0 363 750 ;
+C 106 ; WX 278 ; N j ; B -9 -192 368 750 ;
+C 107 ; WX 444 ; N k ; B 48 0 563 750 ;
+C 108 ; WX 278 ; N l ; B 74 0 363 750 ;
+C 109 ; WX 778 ; N m ; B 66 0 812 579 ;
+C 110 ; WX 500 ; N n ; B 61 0 539 579 ;
+C 111 ; WX 500 ; N o ; B 88 -15 531 579 ;
+C 112 ; WX 500 ; N p ; B 18 -189 528 579 ;
+C 113 ; WX 500 ; N q ; B 80 -188 550 579 ;
+C 114 ; WX 333 ; N r ; B 60 0 441 574 ;
+C 115 ; WX 444 ; N s ; B 56 -15 498 579 ;
+C 116 ; WX 278 ; N t ; B 83 -7 372 719 ;
+C 117 ; WX 500 ; N u ; B 78 -15 551 564 ;
+C 118 ; WX 444 ; N v ; B 130 0 554 564 ;
+C 119 ; WX 667 ; N w ; B 127 0 765 564 ;
+C 120 ; WX 444 ; N x ; B 8 0 553 564 ;
+C 121 ; WX 444 ; N y ; B 36 -195 549 564 ;
+C 122 ; WX 389 ; N z ; B 23 0 487 564 ;
+C 123 ; WX 274 ; N braceleft ; B 37 -92 399 750 ;
+C 124 ; WX 250 ; N bar ; B 75 0 334 750 ;
+C 125 ; WX 274 ; N braceright ; B 14 -94 375 750 ;
+C 126 ; WX 500 ; N asciitilde ; B 74 153 536 359 ;
+C 161 ; WX 333 ; N exclamdown ; B 66 -170 355 579 ;
+C 162 ; WX 500 ; N cent ; B 103 -122 521 671 ;
+C 163 ; WX 500 ; N sterling ; B 52 -15 603 768 ;
+C 164 ; WX 167 ; N fraction ; B -169 0 488 738 ;
+C 165 ; WX 500 ; N yen ; B 89 0 677 750 ;
+C 166 ; WX 500 ; N florin ; B -28 -185 651 763 ;
+C 167 ; WX 500 ; N section ; B 48 -183 572 768 ;
+C 168 ; WX 500 ; N currency ; B 38 58 594 560 ;
+C 169 ; WX 250 ; N quotesingle ; B 165 468 342 739 ;
+C 170 ; WX 500 ; N quotedblleft ; B 192 495 568 766 ;
+C 171 ; WX 500 ; N guillemotleft ; B 117 62 514 447 ;
+C 172 ; WX 278 ; N guilsinglleft ; B 101 62 310 447 ;
+C 173 ; WX 278 ; N guilsinglright ; B 76 62 285 447 ;
+C 174 ; WX 500 ; N fi ; B 60 0 605 750 ;
+C 175 ; WX 500 ; N fl ; B 60 0 602 750 ;
+C 177 ; WX 500 ; N endash ; B 55 259 578 369 ;
+C 178 ; WX 500 ; N dagger ; B 127 -155 577 768 ;
+C 179 ; WX 500 ; N daggerdbl ; B 51 -161 579 768 ;
+C 180 ; WX 333 ; N periodcentered ; B 140 183 300 315 ;
+C 182 ; WX 550 ; N paragraph ; B 139 -116 685 750 ;
+C 183 ; WX 420 ; N bullet ; B 97 186 482 562 ;
+C 184 ; WX 278 ; N quotesinglbase ; B 58 -138 235 132 ;
+C 185 ; WX 500 ; N quotedblbase ; B 67 -138 441 132 ;
+C 186 ; WX 500 ; N quotedblright ; B 197 479 572 750 ;
+C 187 ; WX 500 ; N guillemotright ; B 94 62 491 447 ;
+C 188 ; WX 1000 ; N ellipsis ; B 101 0 927 132 ;
+C 189 ; WX 1111 ; N perthousand ; B 128 -18 1141 748 ;
+C 191 ; WX 500 ; N questiondown ; B 54 -190 476 579 ;
+C 193 ; WX 333 ; N grave ; B 166 629 384 775 ;
+C 194 ; WX 333 ; N acute ; B 217 629 497 775 ;
+C 195 ; WX 333 ; N circumflex ; B 127 644 480 790 ;
+C 196 ; WX 333 ; N tilde ; B 119 636 512 764 ;
+C 197 ; WX 333 ; N macron ; B 136 666 497 740 ;
+C 198 ; WX 333 ; N breve ; B 161 635 501 780 ;
+C 199 ; WX 333 ; N dotaccent ; B 240 644 391 759 ;
+C 200 ; WX 333 ; N dieresis ; B 142 644 489 759 ;
+C 202 ; WX 333 ; N ring ; B 215 632 432 845 ;
+C 203 ; WX 333 ; N cedilla ; B -4 -228 248 0 ;
+C 205 ; WX 333 ; N hungarumlaut ; B 118 634 613 780 ;
+C 206 ; WX 333 ; N ogonek ; B 63 -205 256 0 ;
+C 207 ; WX 333 ; N caron ; B 156 634 509 780 ;
+C 208 ; WX 1000 ; N emdash ; B 55 259 1078 369 ;
+C 225 ; WX 778 ; N AE ; B -22 0 909 750 ;
+C 227 ; WX 300 ; N ordfeminine ; B 82 291 421 768 ;
+C 232 ; WX 500 ; N Lslash ; B 49 0 497 750 ;
+C 233 ; WX 611 ; N Oslash ; B 34 -38 736 779 ;
+C 234 ; WX 833 ; N OE ; B 111 -18 951 768 ;
+C 235 ; WX 300 ; N ordmasculine ; B 84 291 417 768 ;
+C 241 ; WX 722 ; N ae ; B 69 -15 762 579 ;
+C 245 ; WX 278 ; N dotlessi ; B 74 0 324 564 ;
+C 248 ; WX 278 ; N lslash ; B 68 0 391 750 ;
+C 249 ; WX 500 ; N oslash ; B 2 -58 616 617 ;
+C 250 ; WX 722 ; N oe ; B 81 -15 763 579 ;
+C 251 ; WX 500 ; N germandbls ; B 60 -15 561 768 ;
+C -1 ; WX 500 ; N Zcaron ; B 33 0 628 946 ;
+C -1 ; WX 444 ; N ccedilla ; B 52 -228 496 579 ;
+C -1 ; WX 444 ; N ydieresis ; B 36 -195 549 759 ;
+C -1 ; WX 500 ; N atilde ; B 68 -15 592 744 ;
+C -1 ; WX 278 ; N icircumflex ; B 74 0 439 770 ;
+C -1 ; WX 300 ; N threesuperior ; B 96 290 416 751 ;
+C -1 ; WX 500 ; N ecircumflex ; B 88 -15 560 770 ;
+C -1 ; WX 500 ; N thorn ; B 18 -189 528 750 ;
+C -1 ; WX 500 ; N egrave ; B 88 -15 530 775 ;
+C -1 ; WX 300 ; N twosuperior ; B 77 300 425 752 ;
+C -1 ; WX 500 ; N eacute ; B 88 -15 581 775 ;
+C -1 ; WX 500 ; N otilde ; B 88 -15 592 744 ;
+C -1 ; WX 556 ; N Aacute ; B 9 0 648 961 ;
+C -1 ; WX 500 ; N ocircumflex ; B 88 -15 560 770 ;
+C -1 ; WX 444 ; N yacute ; B 36 -195 553 775 ;
+C -1 ; WX 500 ; N udieresis ; B 78 -15 573 759 ;
+C -1 ; WX 750 ; N threequarters ; B 96 0 816 751 ;
+C -1 ; WX 500 ; N acircumflex ; B 68 -15 560 770 ;
+C -1 ; WX 611 ; N Eth ; B 64 0 662 750 ;
+C -1 ; WX 500 ; N edieresis ; B 88 -15 573 759 ;
+C -1 ; WX 500 ; N ugrave ; B 78 -15 551 775 ;
+C -1 ; WX 860 ; N trademark ; B 144 346 933 750 ;
+C -1 ; WX 500 ; N ograve ; B 88 -15 531 775 ;
+C -1 ; WX 444 ; N scaron ; B 56 -15 551 760 ;
+C -1 ; WX 278 ; N Idieresis ; B 69 0 502 945 ;
+C -1 ; WX 500 ; N uacute ; B 78 -15 581 775 ;
+C -1 ; WX 500 ; N agrave ; B 68 -15 525 775 ;
+C -1 ; WX 500 ; N ntilde ; B 61 0 592 744 ;
+C -1 ; WX 500 ; N aring ; B 68 -15 525 845 ;
+C -1 ; WX 389 ; N zcaron ; B 23 0 533 760 ;
+C -1 ; WX 278 ; N Icircumflex ; B 69 0 488 956 ;
+C -1 ; WX 611 ; N Ntilde ; B 68 0 702 930 ;
+C -1 ; WX 500 ; N ucircumflex ; B 78 -15 562 780 ;
+C -1 ; WX 500 ; N Ecircumflex ; B 64 0 617 956 ;
+C -1 ; WX 278 ; N Iacute ; B 69 0 509 961 ;
+C -1 ; WX 556 ; N Ccedilla ; B 99 -228 630 768 ;
+C -1 ; WX 611 ; N Odieresis ; B 105 -18 668 945 ;
+C -1 ; WX 556 ; N Scaron ; B 85 -18 656 946 ;
+C -1 ; WX 500 ; N Edieresis ; B 64 0 617 945 ;
+C -1 ; WX 278 ; N Igrave ; B 69 0 396 961 ;
+C -1 ; WX 500 ; N adieresis ; B 68 -15 573 759 ;
+C -1 ; WX 611 ; N Ograve ; B 105 -18 664 961 ;
+C -1 ; WX 500 ; N Egrave ; B 64 0 617 961 ;
+C -1 ; WX 556 ; N Ydieresis ; B 171 0 704 945 ;
+C -1 ; WX 830 ; N registered ; B 93 -18 897 768 ;
+C -1 ; WX 611 ; N Otilde ; B 105 -18 687 930 ;
+C -1 ; WX 750 ; N onequarter ; B 131 0 788 750 ;
+C -1 ; WX 611 ; N Ugrave ; B 105 -18 703 961 ;
+C -1 ; WX 611 ; N Ucircumflex ; B 105 -18 703 956 ;
+C -1 ; WX 556 ; N Thorn ; B 68 0 618 750 ;
+C -1 ; WX 500 ; N divide ; B 67 6 540 492 ;
+C -1 ; WX 556 ; N Atilde ; B 9 0 660 930 ;
+C -1 ; WX 611 ; N Uacute ; B 105 -18 703 961 ;
+C -1 ; WX 611 ; N Ocircumflex ; B 105 -18 664 956 ;
+C -1 ; WX 500 ; N logicalnot ; B 88 105 560 401 ;
+C -1 ; WX 556 ; N Aring ; B 9 0 571 971 ;
+C -1 ; WX 278 ; N idieresis ; B 74 0 462 759 ;
+C -1 ; WX 278 ; N iacute ; B 74 0 470 775 ;
+C -1 ; WX 500 ; N aacute ; B 68 -15 581 775 ;
+C -1 ; WX 500 ; N plusminus ; B 23 -15 556 513 ;
+C -1 ; WX 500 ; N multiply ; B 48 22 560 476 ;
+C -1 ; WX 611 ; N Udieresis ; B 105 -18 703 945 ;
+C -1 ; WX 500 ; N minus ; B 67 194 540 304 ;
+C -1 ; WX 300 ; N onesuperior ; B 180 300 410 750 ;
+C -1 ; WX 500 ; N Eacute ; B 64 0 620 961 ;
+C -1 ; WX 556 ; N Acircumflex ; B 9 0 617 956 ;
+C -1 ; WX 830 ; N copyright ; B 93 -18 897 768 ;
+C -1 ; WX 556 ; N Agrave ; B 9 0 547 961 ;
+C -1 ; WX 500 ; N odieresis ; B 88 -15 573 759 ;
+C -1 ; WX 500 ; N oacute ; B 88 -15 581 775 ;
+C -1 ; WX 400 ; N degree ; B 174 450 481 750 ;
+C -1 ; WX 278 ; N igrave ; B 74 0 357 775 ;
+C -1 ; WX 500 ; N mu ; B 18 -189 551 564 ;
+C -1 ; WX 611 ; N Oacute ; B 105 -18 675 961 ;
+C -1 ; WX 500 ; N eth ; B 81 -15 538 776 ;
+C -1 ; WX 556 ; N Adieresis ; B 9 0 641 945 ;
+C -1 ; WX 556 ; N Yacute ; B 171 0 704 961 ;
+C -1 ; WX 250 ; N brokenbar ; B 75 0 334 750 ;
+C -1 ; WX 750 ; N onehalf ; B 108 0 813 750 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 115
+
+KPX A y -18
+KPX A w -18
+KPX A v -18
+KPX A quoteright -55
+KPX A Y -55
+KPX A W -37
+KPX A V -37
+KPX A T -55
+
+KPX F period -111
+KPX F comma -111
+KPX F A -37
+
+KPX L y -37
+KPX L quoteright -92
+KPX L Y -92
+KPX L W -74
+KPX L V -74
+KPX L T -74
+
+KPX P period -129
+KPX P comma -129
+KPX P A -37
+
+KPX R y 0
+KPX R Y -18
+KPX R W 0
+KPX R V 0
+KPX R T -18
+
+KPX T y -55
+KPX T w -74
+KPX T u -74
+KPX T semicolon -74
+KPX T s -74
+KPX T r -74
+KPX T period -92
+KPX T o -74
+KPX T i -18
+KPX T hyphen -55
+KPX T e -74
+KPX T comma -92
+KPX T colon -74
+KPX T c -74
+KPX T a -74
+KPX T A -55
+
+KPX V y 0
+KPX V u -18
+KPX V semicolon -18
+KPX V r -18
+KPX V period -92
+KPX V o -18
+KPX V i 0
+KPX V hyphen -18
+KPX V e -18
+KPX V comma -92
+KPX V colon -18
+KPX V a -18
+KPX V A -37
+
+KPX W y 0
+KPX W u 0
+KPX W semicolon 0
+KPX W r 0
+KPX W period -74
+KPX W o -18
+KPX W i 0
+KPX W hyphen -18
+KPX W e -18
+KPX W comma -74
+KPX W colon 0
+KPX W a -18
+KPX W A -18
+
+KPX Y v -18
+KPX Y u -37
+KPX Y semicolon -37
+KPX Y q -55
+KPX Y period -111
+KPX Y p -37
+KPX Y o -55
+KPX Y i -18
+KPX Y hyphen -74
+KPX Y e -55
+KPX Y comma -111
+KPX Y colon -37
+KPX Y a -55
+KPX Y A -55
+
+KPX f quoteright 18
+KPX f f 0
+
+KPX quoteleft quoteleft -18
+
+KPX quoteright t 0
+KPX quoteright s -55
+KPX quoteright quoteright -18
+
+KPX r z 20
+KPX r y 18
+KPX r x 20
+KPX r w 18
+KPX r v 18
+KPX r u 0
+KPX r t 0
+KPX r r 0
+KPX r quoteright 0
+KPX r q 0
+KPX r period -74
+KPX r o 0
+KPX r n 0
+KPX r m 0
+KPX r hyphen -37
+KPX r h 0
+KPX r g 0
+KPX r f 0
+KPX r e 0
+KPX r d 0
+KPX r comma -74
+KPX r c 0
+
+KPX v period -55
+KPX v comma -55
+
+KPX w period -37
+KPX w comma -37
+
+KPX y period -55
+KPX y comma -55
+EndKernPairs
+EndKernData
+StartComposites 58
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 152 186 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 137 166 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 152 186 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 152 186 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 139 126 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 147 166 ;
+CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 112 0 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 124 186 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 119 166 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 124 186 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 124 186 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 13 186 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 8 166 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 13 186 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 13 186 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 174 166 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 179 186 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 174 166 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 179 186 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 179 186 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 174 166 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 147 166 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 179 186 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 174 166 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 179 186 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 179 186 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 152 186 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 152 186 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 119 166 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 84 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 80 -20 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 84 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 84 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 84 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 80 -20 ;
+CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 56 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 84 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 80 -20 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 84 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 84 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -27 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -41 -20 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -27 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -27 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 80 -20 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 84 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 80 -20 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 84 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 84 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 80 -20 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 42 -20 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 84 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 82 -10 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 84 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 84 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 56 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 56 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 24 -20 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/He-CnBdO+ b/font/font/He-CnBdO+
new file mode 100644
index 0000000..cdafb94
--- /dev/null
+++ b/font/font/He-CnBdO+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 556 ; N Ccaron ; B 99 -18 712 965 ;
+C -1 ; WX 444 ; N ccaron ; B 79 -15 585 780 ;
+C -1 ; WX 611 ; N Dcaron ; B 72 0 687 965 ;
+C -1 ; WX 625 ; N dcaron ; B 83 -15 788 825 ;
+C -1 ; WX 500 ; N Ecaron ; B 64 0 631 965 ;
+C -1 ; WX 500 ; N ecaron ; B 88 -15 592 780 ;
+C -1 ; WX 500 ; N Lcaron ; B 68 0 564 825 ;
+C -1 ; WX 500 ; N Lacute ; B 68 0 620 965 ;
+C -1 ; WX 403 ; N lcaron ; B 74 0 559 825 ;
+C -1 ; WX 278 ; N lacute ; B 74 0 538 965 ;
+C -1 ; WX 611 ; N Ncaron ; B 68 0 702 965 ;
+C -1 ; WX 500 ; N ncaron ; B 61 0 592 780 ;
+C -1 ; WX 611 ; N Rcaron ; B 66 0 687 965 ;
+C -1 ; WX 611 ; N Racute ; B 66 0 729 965 ;
+C -1 ; WX 333 ; N rcaron ; B 60 0 509 780 ;
+C -1 ; WX 333 ; N racute ; B 60 0 525 775 ;
+C -1 ; WX 500 ; N Tcaron ; B 153 0 643 965 ;
+C -1 ; WX 403 ; N tcaron ; B 83 -7 568 750 ;
+C -1 ; WX 611 ; N Uring ; B 105 -18 703 965 ;
+C -1 ; WX 500 ; N uring ; B 78 -15 551 845 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 203 185 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 76 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 178 185 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 427 75 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 122 185 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 83 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 203 75 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 123 190 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 198 75 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 41 190 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 178 185 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 83 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 178 185 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 232 190 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 0 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 28 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 122 185 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 207 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 164 120 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 83 0 ;
+EndBuildComposites
diff --git a/font/font/He-CnBl b/font/font/He-CnBl
new file mode 100644
index 0000000..ba31b18
--- /dev/null
+++ b/font/font/He-CnBl
@@ -0,0 +1,445 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987 Adobe Systems Incorporated. All rights reserved.
+Comment Creation Date:Thu Aug 13 17:02:44 PDT 1987
+FontName Helvetica-Condensed-Black
+EncodingScheme AdobeStandardEncoding
+FullName Helvetica Condensed Black
+FamilyName Helvetica
+Weight BlackCondensed
+ItalicAngle 0.0
+IsFixedPitch false
+UnderlinePosition -90
+UnderlineThickness 58
+Version 001.002
+Notice Copyright (c) 1985, 1987 Adobe Systems Incorporated. All rights reserved. Helvetica is a trademark of Allied Corporation.
+FontBBox -168 -232 1113 990
+CapHeight 750
+XHeight 560
+Descender -189
+Ascender 750
+StartCharMetrics 228
+C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 333 ; N exclam ; B 79 0 255 750 ;
+C 34 ; WX 333 ; N quotedbl ; B 16 468 318 739 ;
+C 35 ; WX 500 ; N numbersign ; B 9 0 491 750 ;
+C 36 ; WX 500 ; N dollar ; B 14 -126 484 786 ;
+C 37 ; WX 833 ; N percent ; B 24 -18 810 750 ;
+C 38 ; WX 667 ; N ampersand ; B 47 -18 645 768 ;
+C 39 ; WX 278 ; N quoteright ; B 58 437 216 750 ;
+C 40 ; WX 278 ; N parenleft ; B 24 -187 262 750 ;
+C 41 ; WX 278 ; N parenright ; B 16 -187 254 750 ;
+C 42 ; WX 500 ; N asterisk ; B 64 393 437 750 ;
+C 43 ; WX 500 ; N plus ; B 26 0 475 492 ;
+C 44 ; WX 333 ; N comma ; B 82 -156 251 171 ;
+C 45 ; WX 333 ; N hyphen ; B 43 237 291 387 ;
+C 46 ; WX 333 ; N period ; B 82 0 251 171 ;
+C 47 ; WX 278 ; N slash ; B -28 -94 307 750 ;
+C 48 ; WX 500 ; N zero ; B 28 -18 472 750 ;
+C 49 ; WX 500 ; N one ; B 37 0 349 734 ;
+C 50 ; WX 500 ; N two ; B 23 0 472 750 ;
+C 51 ; WX 500 ; N three ; B 19 -18 469 750 ;
+C 52 ; WX 500 ; N four ; B 9 0 484 734 ;
+C 53 ; WX 500 ; N five ; B 30 -18 473 734 ;
+C 54 ; WX 500 ; N six ; B 27 -18 474 750 ;
+C 55 ; WX 500 ; N seven ; B 24 0 456 734 ;
+C 56 ; WX 500 ; N eight ; B 29 -18 471 750 ;
+C 57 ; WX 500 ; N nine ; B 27 -18 474 750 ;
+C 58 ; WX 278 ; N colon ; B 55 0 224 555 ;
+C 59 ; WX 278 ; N semicolon ; B 55 -156 224 555 ;
+C 60 ; WX 500 ; N less ; B 42 -23 459 528 ;
+C 61 ; WX 500 ; N equal ; B 26 95 475 405 ;
+C 62 ; WX 500 ; N greater ; B 42 -23 459 528 ;
+C 63 ; WX 500 ; N question ; B 20 0 471 768 ;
+C 64 ; WX 830 ; N at ; B 37 -18 794 768 ;
+C 65 ; WX 556 ; N A ; B 9 0 548 750 ;
+C 66 ; WX 556 ; N B ; B 44 0 521 750 ;
+C 67 ; WX 556 ; N C ; B 39 -18 518 768 ;
+C 68 ; WX 556 ; N D ; B 46 0 514 750 ;
+C 69 ; WX 500 ; N E ; B 46 0 461 750 ;
+C 70 ; WX 500 ; N F ; B 49 0 463 750 ;
+C 71 ; WX 556 ; N G ; B 33 -18 512 768 ;
+C 72 ; WX 556 ; N H ; B 41 0 515 750 ;
+C 73 ; WX 278 ; N I ; B 51 0 227 750 ;
+C 74 ; WX 444 ; N J ; B 7 -18 395 750 ;
+C 75 ; WX 556 ; N K ; B 44 0 542 750 ;
+C 76 ; WX 444 ; N L ; B 37 0 428 750 ;
+C 77 ; WX 778 ; N M ; B 49 0 730 750 ;
+C 78 ; WX 556 ; N N ; B 43 0 513 750 ;
+C 79 ; WX 556 ; N O ; B 40 -18 517 768 ;
+C 80 ; WX 556 ; N P ; B 53 0 526 750 ;
+C 81 ; WX 556 ; N Q ; B 40 -123 550 768 ;
+C 82 ; WX 556 ; N R ; B 42 0 542 750 ;
+C 83 ; WX 500 ; N S ; B 16 -18 471 768 ;
+C 84 ; WX 500 ; N T ; B 22 0 478 750 ;
+C 85 ; WX 556 ; N U ; B 42 -18 515 750 ;
+C 86 ; WX 556 ; N V ; B 11 0 545 750 ;
+C 87 ; WX 778 ; N W ; B 10 0 768 750 ;
+C 88 ; WX 556 ; N X ; B 13 0 544 750 ;
+C 89 ; WX 556 ; N Y ; B 11 0 545 750 ;
+C 90 ; WX 444 ; N Z ; B 10 0 434 750 ;
+C 91 ; WX 278 ; N bracketleft ; B 42 -187 262 750 ;
+C 92 ; WX 250 ; N backslash ; B -99 0 350 750 ;
+C 93 ; WX 278 ; N bracketright ; B 16 -187 236 750 ;
+C 94 ; WX 500 ; N asciicircum ; B 15 326 485 750 ;
+C 95 ; WX 500 ; N underscore ; B 0 -119 500 -61 ;
+C 96 ; WX 278 ; N quoteleft ; B 62 455 220 768 ;
+C 97 ; WX 500 ; N a ; B 24 -18 473 576 ;
+C 98 ; WX 500 ; N b ; B 48 -18 464 750 ;
+C 99 ; WX 500 ; N c ; B 49 -18 462 576 ;
+C 100 ; WX 500 ; N d ; B 41 -18 454 750 ;
+C 101 ; WX 500 ; N e ; B 38 -18 466 576 ;
+C 102 ; WX 333 ; N f ; B 19 0 310 750 ; L i fi ; L l fl ;
+C 103 ; WX 500 ; N g ; B 36 -189 453 576 ;
+C 104 ; WX 500 ; N h ; B 46 0 455 750 ;
+C 105 ; WX 278 ; N i ; B 60 0 219 750 ;
+C 106 ; WX 278 ; N j ; B 14 -189 223 750 ;
+C 107 ; WX 500 ; N k ; B 40 0 486 750 ;
+C 108 ; WX 278 ; N l ; B 60 0 219 750 ;
+C 109 ; WX 722 ; N m ; B 38 0 685 576 ;
+C 110 ; WX 500 ; N n ; B 49 0 452 576 ;
+C 111 ; WX 500 ; N o ; B 42 -18 458 576 ;
+C 112 ; WX 500 ; N p ; B 42 -189 458 576 ;
+C 113 ; WX 500 ; N q ; B 35 -188 451 576 ;
+C 114 ; WX 333 ; N r ; B 42 0 315 576 ;
+C 115 ; WX 444 ; N s ; B 11 -18 431 576 ;
+C 116 ; WX 333 ; N t ; B 12 -8 310 720 ;
+C 117 ; WX 500 ; N u ; B 46 -18 449 560 ;
+C 118 ; WX 444 ; N v ; B 9 0 436 560 ;
+C 119 ; WX 667 ; N w ; B 9 0 659 560 ;
+C 120 ; WX 444 ; N x ; B 9 0 435 560 ;
+C 121 ; WX 444 ; N y ; B 6 -189 433 560 ;
+C 122 ; WX 389 ; N z ; B 14 0 375 560 ;
+C 123 ; WX 274 ; N braceleft ; B -9 -95 283 750 ;
+C 124 ; WX 250 ; N bar ; B 54 0 196 750 ;
+C 125 ; WX 274 ; N braceright ; B -9 -95 283 750 ;
+C 126 ; WX 500 ; N asciitilde ; B 26 153 475 359 ;
+C 161 ; WX 333 ; N exclamdown ; B 79 -189 255 560 ;
+C 162 ; WX 500 ; N cent ; B 46 -147 462 685 ;
+C 163 ; WX 500 ; N sterling ; B 0 -18 473 768 ;
+C 164 ; WX 167 ; N fraction ; B -168 0 326 750 ;
+C 165 ; WX 500 ; N yen ; B -17 0 517 750 ;
+C 166 ; WX 500 ; N florin ; B 4 -193 488 763 ;
+C 167 ; WX 500 ; N section ; B 27 -184 474 768 ;
+C 168 ; WX 500 ; N currency ; B 0 58 509 563 ;
+C 169 ; WX 250 ; N quotesingle ; B 66 468 185 739 ;
+C 170 ; WX 500 ; N quotedblleft ; B 53 455 451 768 ;
+C 171 ; WX 500 ; N guillemotleft ; B 37 123 457 505 ;
+C 172 ; WX 278 ; N guilsinglleft ; B 53 123 234 505 ;
+C 173 ; WX 278 ; N guilsinglright ; B 44 123 225 505 ;
+C 174 ; WX 556 ; N fi ; B 19 0 503 750 ;
+C 175 ; WX 556 ; N fl ; B 19 0 503 750 ;
+C 177 ; WX 500 ; N endash ; B 0 253 500 368 ;
+C 178 ; WX 500 ; N dagger ; B 29 -173 472 750 ;
+C 179 ; WX 500 ; N daggerdbl ; B 27 -171 474 750 ;
+C 180 ; WX 333 ; N periodcentered ; B 82 164 251 335 ;
+C 182 ; WX 550 ; N paragraph ; B 11 -116 553 750 ;
+C 183 ; WX 420 ; N bullet ; B 22 186 398 562 ;
+C 184 ; WX 278 ; N quotesinglbase ; B 60 -152 218 161 ;
+C 185 ; WX 500 ; N quotedblbase ; B 51 -152 450 161 ;
+C 186 ; WX 500 ; N quotedblright ; B 49 437 447 750 ;
+C 187 ; WX 500 ; N guillemotright ; B 43 123 463 505 ;
+C 188 ; WX 1000 ; N ellipsis ; B 82 0 918 171 ;
+C 189 ; WX 1111 ; N perthousand ; B -1 -18 1113 752 ;
+C 191 ; WX 500 ; N questiondown ; B 28 -189 479 576 ;
+C 193 ; WX 333 ; N grave ; B -38 634 270 782 ;
+C 194 ; WX 333 ; N acute ; B 63 634 371 782 ;
+C 195 ; WX 333 ; N circumflex ; B -36 634 370 782 ;
+C 196 ; WX 333 ; N tilde ; B -29 634 362 775 ;
+C 197 ; WX 333 ; N macron ; B -21 663 355 753 ;
+C 198 ; WX 333 ; N breve ; B -14 634 348 787 ;
+C 199 ; WX 333 ; N dotaccent ; B 87 640 246 770 ;
+C 200 ; WX 333 ; N dieresis ; B -20 640 354 770 ;
+C 202 ; WX 333 ; N ring ; B 54 635 279 860 ;
+C 203 ; WX 333 ; N cedilla ; B 38 -232 296 0 ;
+C 205 ; WX 333 ; N hungarumlaut ; B -86 634 521 782 ;
+C 206 ; WX 333 ; N ogonek ; B 73 -205 278 0 ;
+C 207 ; WX 333 ; N caron ; B -36 634 370 782 ;
+C 208 ; WX 1000 ; N emdash ; B 0 253 1000 368 ;
+C 225 ; WX 778 ; N AE ; B -23 0 745 750 ;
+C 227 ; WX 300 ; N ordfeminine ; B 10 277 291 768 ;
+C 232 ; WX 444 ; N Lslash ; B -22 0 428 750 ;
+C 233 ; WX 556 ; N Oslash ; B 5 -85 578 819 ;
+C 234 ; WX 778 ; N OE ; B 33 -18 743 768 ;
+C 235 ; WX 300 ; N ordmasculine ; B 15 277 285 768 ;
+C 241 ; WX 722 ; N ae ; B 20 -18 718 576 ;
+C 245 ; WX 278 ; N dotlessi ; B 60 0 219 560 ;
+C 248 ; WX 278 ; N lslash ; B -7 0 282 750 ;
+C 249 ; WX 500 ; N oslash ; B -11 -74 503 633 ;
+C 250 ; WX 722 ; N oe ; B 35 -18 716 576 ;
+C 251 ; WX 500 ; N germandbls ; B 44 -18 461 768 ;
+C -1 ; WX 556 ; N Aacute ; B 9 0 548 972 ;
+C -1 ; WX 556 ; N Acircumflex ; B 9 0 548 952 ;
+C -1 ; WX 556 ; N Adieresis ; B 9 0 548 960 ;
+C -1 ; WX 556 ; N Agrave ; B 9 0 548 972 ;
+C -1 ; WX 556 ; N Aring ; B 9 0 548 990 ;
+C -1 ; WX 556 ; N Atilde ; B 9 0 548 945 ;
+C -1 ; WX 556 ; N Ccedilla ; B 39 -232 518 768 ;
+C -1 ; WX 500 ; N Eacute ; B 46 0 461 972 ;
+C -1 ; WX 500 ; N Ecircumflex ; B 46 0 461 952 ;
+C -1 ; WX 500 ; N Edieresis ; B 46 0 461 960 ;
+C -1 ; WX 500 ; N Egrave ; B 46 0 461 972 ;
+C -1 ; WX 556 ; N Eth ; B 10 0 534 750 ;
+C -1 ; WX 278 ; N Iacute ; B 36 0 344 972 ;
+C -1 ; WX 278 ; N Icircumflex ; B -63 0 343 952 ;
+C -1 ; WX 278 ; N Idieresis ; B -47 0 327 960 ;
+C -1 ; WX 278 ; N Igrave ; B -65 0 243 972 ;
+C -1 ; WX 556 ; N Ntilde ; B 43 0 513 945 ;
+C -1 ; WX 556 ; N Oacute ; B 40 -18 517 972 ;
+C -1 ; WX 556 ; N Ocircumflex ; B 40 -18 517 952 ;
+C -1 ; WX 556 ; N Odieresis ; B 40 -18 517 960 ;
+C -1 ; WX 556 ; N Ograve ; B 40 -18 517 972 ;
+C -1 ; WX 556 ; N Otilde ; B 40 -18 517 945 ;
+C -1 ; WX 500 ; N Scaron ; B 16 -18 471 952 ;
+C -1 ; WX 556 ; N Thorn ; B 53 0 526 750 ;
+C -1 ; WX 556 ; N Uacute ; B 42 -18 515 972 ;
+C -1 ; WX 556 ; N Ucircumflex ; B 42 -18 515 952 ;
+C -1 ; WX 556 ; N Udieresis ; B 42 -18 515 960 ;
+C -1 ; WX 556 ; N Ugrave ; B 42 -18 515 972 ;
+C -1 ; WX 556 ; N Yacute ; B 11 0 545 972 ;
+C -1 ; WX 556 ; N Ydieresis ; B 11 0 545 960 ;
+C -1 ; WX 444 ; N Zcaron ; B 10 0 434 952 ;
+C -1 ; WX 500 ; N aacute ; B 24 -18 473 782 ;
+C -1 ; WX 500 ; N acircumflex ; B 24 -18 473 762 ;
+C -1 ; WX 500 ; N adieresis ; B 24 -18 473 770 ;
+C -1 ; WX 500 ; N agrave ; B 24 -18 473 782 ;
+C -1 ; WX 500 ; N aring ; B 24 -18 473 860 ;
+C -1 ; WX 500 ; N atilde ; B 24 -18 473 755 ;
+C -1 ; WX 250 ; N brokenbar ; B 54 0 196 750 ;
+C -1 ; WX 500 ; N ccedilla ; B 49 -232 462 576 ;
+C -1 ; WX 830 ; N copyright ; B 21 -18 809 768 ;
+C -1 ; WX 400 ; N degree ; B 50 450 350 750 ;
+C -1 ; WX 500 ; N divide ; B 26 7 475 492 ;
+C -1 ; WX 500 ; N eacute ; B 38 -18 466 782 ;
+C -1 ; WX 500 ; N ecircumflex ; B 38 -18 466 762 ;
+C -1 ; WX 500 ; N edieresis ; B 38 -18 466 770 ;
+C -1 ; WX 500 ; N egrave ; B 38 -18 466 782 ;
+C -1 ; WX 500 ; N eth ; B 38 -18 454 776 ;
+C -1 ; WX 278 ; N iacute ; B 36 0 344 782 ;
+C -1 ; WX 278 ; N icircumflex ; B -73 0 333 762 ;
+C -1 ; WX 278 ; N idieresis ; B -47 0 327 770 ;
+C -1 ; WX 278 ; N igrave ; B -65 0 243 782 ;
+C -1 ; WX 500 ; N logicalnot ; B 26 115 475 405 ;
+C -1 ; WX 500 ; N minus ; B 26 192 475 307 ;
+C -1 ; WX 500 ; N mu ; B 46 -189 449 560 ;
+C -1 ; WX 500 ; N multiply ; B 33 38 467 472 ;
+C -1 ; WX 500 ; N ntilde ; B 49 0 452 755 ;
+C -1 ; WX 500 ; N oacute ; B 42 -18 458 782 ;
+C -1 ; WX 500 ; N ocircumflex ; B 42 -18 458 762 ;
+C -1 ; WX 500 ; N odieresis ; B 42 -18 458 770 ;
+C -1 ; WX 500 ; N ograve ; B 42 -18 458 782 ;
+C -1 ; WX 750 ; N onehalf ; B 10 0 740 750 ;
+C -1 ; WX 750 ; N onequarter ; B 14 0 736 750 ;
+C -1 ; WX 300 ; N onesuperior ; B 49 310 251 750 ;
+C -1 ; WX 500 ; N otilde ; B 42 -18 458 755 ;
+C -1 ; WX 500 ; N plusminus ; B 26 -12 475 510 ;
+C -1 ; WX 830 ; N registered ; B 21 -18 809 768 ;
+C -1 ; WX 444 ; N scaron ; B 10 -18 431 762 ;
+C -1 ; WX 500 ; N thorn ; B 42 -189 458 750 ;
+C -1 ; WX 750 ; N threequarters ; B 1 0 743 750 ;
+C -1 ; WX 300 ; N threesuperior ; B 4 289 296 750 ;
+C -1 ; WX 860 ; N trademark ; B 3 346 858 750 ;
+C -1 ; WX 300 ; N twosuperior ; B 4 300 296 750 ;
+C -1 ; WX 500 ; N uacute ; B 46 -18 455 782 ;
+C -1 ; WX 500 ; N ucircumflex ; B 46 -18 454 772 ;
+C -1 ; WX 500 ; N udieresis ; B 46 -18 449 770 ;
+C -1 ; WX 500 ; N ugrave ; B 46 -18 449 782 ;
+C -1 ; WX 444 ; N yacute ; B 6 -189 433 782 ;
+C -1 ; WX 444 ; N ydieresis ; B 6 -189 433 770 ;
+C -1 ; WX 389 ; N zcaron ; B -8 0 398 762 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 115
+
+KPX A y -18
+KPX A w -18
+KPX A v -18
+KPX A quoteright -55
+KPX A Y -55
+KPX A W -37
+KPX A V -37
+KPX A T -55
+
+KPX F period -111
+KPX F comma -111
+KPX F A -37
+
+KPX L y -37
+KPX L quoteright -92
+KPX L Y -92
+KPX L W -74
+KPX L V -74
+KPX L T -74
+
+KPX P period -129
+KPX P comma -129
+KPX P A -37
+
+KPX R y 0
+KPX R Y -18
+KPX R W 0
+KPX R V 0
+KPX R T -18
+
+KPX T y -55
+KPX T w -74
+KPX T u -74
+KPX T semicolon -74
+KPX T s -74
+KPX T r -74
+KPX T period -92
+KPX T o -74
+KPX T i -18
+KPX T hyphen -55
+KPX T e -74
+KPX T comma -92
+KPX T colon -74
+KPX T c -74
+KPX T a -74
+KPX T A -55
+
+KPX V y 0
+KPX V u -18
+KPX V semicolon -18
+KPX V r -18
+KPX V period -92
+KPX V o -18
+KPX V i 0
+KPX V hyphen -18
+KPX V e -18
+KPX V comma -92
+KPX V colon -18
+KPX V a -18
+KPX V A -37
+
+KPX W y 0
+KPX W u 0
+KPX W semicolon 0
+KPX W r 0
+KPX W period -74
+KPX W o -18
+KPX W i 0
+KPX W hyphen -18
+KPX W e -18
+KPX W comma -74
+KPX W colon 0
+KPX W a -18
+KPX W A -18
+
+KPX Y v -18
+KPX Y u -37
+KPX Y semicolon -37
+KPX Y q -75
+KPX Y period -111
+KPX Y p -37
+KPX Y o -55
+KPX Y i -18
+KPX Y hyphen -74
+KPX Y e -55
+KPX Y comma -111
+KPX Y colon -37
+KPX Y a -55
+KPX Y A -55
+
+KPX f quoteright 18
+KPX f f 0
+
+KPX quoteleft quoteleft -18
+
+KPX quoteright t 0
+KPX quoteright s -55
+KPX quoteright quoteright -18
+
+KPX r z 0
+KPX r y 18
+KPX r x 0
+KPX r w 18
+KPX r v 18
+KPX r u 0
+KPX r t 0
+KPX r r 0
+KPX r quoteright 0
+KPX r q 0
+KPX r period -74
+KPX r o 0
+KPX r n 0
+KPX r m 0
+KPX r hyphen -37
+KPX r h 0
+KPX r g 0
+KPX r f 0
+KPX r e 0
+KPX r d 0
+KPX r comma -74
+KPX r c 0
+
+KPX v period -55
+KPX v comma -55
+
+KPX w period -37
+KPX w comma -37
+
+KPX y period -55
+KPX y comma -55
+EndKernPairs
+EndKernData
+StartComposites 58
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 55 170 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 28 -20 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 83 170 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 45 -20 ;
+CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 111 0 ;
+CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 83 0 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 111 190 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 55 0 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 111 190 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 55 0 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 111 190 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 111 170 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 111 190 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 111 190 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 83 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 83 -10 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 83 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 83 0 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute -27 190 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex -27 170 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis -27 190 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave -27 190 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -27 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -37 -20 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -27 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -27 0 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 83 190 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 83 170 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 83 190 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 83 190 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 83 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 83 -20 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 83 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 83 0 ;
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 111 190 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 101 170 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 111 190 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 111 190 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 83 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 83 -20 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 83 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 83 0 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 111 190 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 111 170 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 111 190 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 111 190 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 83 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 83 -20 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 83 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 83 0 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 111 170 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 83 -20 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 111 170 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 83 -20 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 111 170 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 83 -20 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 111 130 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 83 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/He-CnBl+ b/font/font/He-CnBl+
new file mode 100644
index 0000000..1bfc2f4
--- /dev/null
+++ b/font/font/He-CnBl+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 556 ; N Ccaron ; B 39 -18 529 967 ;
+C -1 ; WX 500 ; N ccaron ; B 49 -18 474 782 ;
+C -1 ; WX 556 ; N Dcaron ; B 46 0 514 967 ;
+C -1 ; WX 611 ; N dcaron ; B 41 -18 628 825 ;
+C -1 ; WX 500 ; N Ecaron ; B 46 0 461 967 ;
+C -1 ; WX 500 ; N ecaron ; B 38 -18 466 782 ;
+C -1 ; WX 444 ; N Lcaron ; B 37 0 428 825 ;
+C -1 ; WX 444 ; N Lacute ; B 37 0 428 967 ;
+C -1 ; WX 389 ; N lcaron ; B 60 0 393 825 ;
+C -1 ; WX 278 ; N lacute ; B 60 0 375 967 ;
+C -1 ; WX 556 ; N Ncaron ; B 43 0 513 967 ;
+C -1 ; WX 500 ; N ncaron ; B 47 0 453 782 ;
+C -1 ; WX 556 ; N Rcaron ; B 42 0 542 967 ;
+C -1 ; WX 556 ; N Racute ; B 42 0 542 967 ;
+C -1 ; WX 333 ; N rcaron ; B -36 0 370 782 ;
+C -1 ; WX 333 ; N racute ; B 42 0 402 782 ;
+C -1 ; WX 500 ; N Tcaron ; B 22 0 478 967 ;
+C -1 ; WX 444 ; N tcaron ; B 12 -8 484 750 ;
+C -1 ; WX 556 ; N Uring ; B 42 -18 515 967 ;
+C -1 ; WX 500 ; N uring ; B 46 -18 449 860 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 159 185 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 104 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 111 185 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 412 75 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 83 185 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 83 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 185 75 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 55 185 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 177 75 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 4 185 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 111 185 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 83 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 111 185 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 170 185 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 0 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 31 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 83 185 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 268 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 111 107 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 83 0 ;
+EndBuildComposites
diff --git a/font/font/He-CnBlO b/font/font/He-CnBlO
new file mode 100644
index 0000000..db91ef3
--- /dev/null
+++ b/font/font/He-CnBlO
@@ -0,0 +1,445 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987 Adobe Systems Incorporated. All rights reserved.
+Comment Creation Date:Thu Aug 13 18:13:24 PDT 1987
+FontName Helvetica-Condensed-BlackObl
+EncodingScheme AdobeStandardEncoding
+FullName Helvetica.Condensed Black Oblique
+FamilyName Helvetica
+Weight BlackCondensed
+ItalicAngle -12.0
+IsFixedPitch false
+UnderlinePosition -90
+UnderlineThickness 58
+Version 001.002
+Notice Copyright (c) 1985, 1987 Adobe Systems Incorporated. All rights reserved. Helvetica is a trademark of Allied Corporation.
+FontBBox -168 -232 1161 990
+CapHeight 750
+XHeight 560
+Descender -189
+Ascender 750
+StartCharMetrics 228
+C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 333 ; N exclam ; B 83 0 414 750 ;
+C 34 ; WX 333 ; N quotedbl ; B 115 468 475 739 ;
+C 35 ; WX 500 ; N numbersign ; B 56 0 607 750 ;
+C 36 ; WX 500 ; N dollar ; B 50 -126 596 786 ;
+C 37 ; WX 833 ; N percent ; B 131 -18 858 750 ;
+C 38 ; WX 667 ; N ampersand ; B 84 -18 694 768 ;
+C 39 ; WX 278 ; N quoteright ; B 151 437 375 750 ;
+C 40 ; WX 278 ; N parenleft ; B 61 -187 417 750 ;
+C 41 ; WX 278 ; N parenright ; B -20 -187 337 750 ;
+C 42 ; WX 500 ; N asterisk ; B 188 393 562 750 ;
+C 43 ; WX 500 ; N plus ; B 67 0 540 492 ;
+C 44 ; WX 333 ; N comma ; B 49 -156 287 171 ;
+C 45 ; WX 333 ; N hyphen ; B 93 237 373 387 ;
+C 46 ; WX 333 ; N period ; B 82 0 287 171 ;
+C 47 ; WX 278 ; N slash ; B -48 -94 466 750 ;
+C 48 ; WX 500 ; N zero ; B 61 -18 593 750 ;
+C 49 ; WX 500 ; N one ; B 145 0 505 734 ;
+C 50 ; WX 500 ; N two ; B 23 0 593 750 ;
+C 51 ; WX 500 ; N three ; B 56 -18 576 750 ;
+C 52 ; WX 500 ; N four ; B 39 0 574 734 ;
+C 53 ; WX 500 ; N five ; B 65 -18 598 734 ;
+C 54 ; WX 500 ; N six ; B 67 -18 587 750 ;
+C 55 ; WX 500 ; N seven ; B 104 0 612 734 ;
+C 56 ; WX 500 ; N eight ; B 66 -18 591 750 ;
+C 57 ; WX 500 ; N nine ; B 70 -18 589 750 ;
+C 58 ; WX 278 ; N colon ; B 55 0 342 555 ;
+C 59 ; WX 278 ; N semicolon ; B 22 -156 342 555 ;
+C 60 ; WX 500 ; N less ; B 85 -23 571 528 ;
+C 61 ; WX 500 ; N equal ; B 46 95 561 405 ;
+C 62 ; WX 500 ; N greater ; B 37 -23 523 528 ;
+C 63 ; WX 500 ; N question ; B 133 0 599 768 ;
+C 64 ; WX 830 ; N at ; B 108 -18 896 768 ;
+C 65 ; WX 556 ; N A ; B 9 0 548 750 ;
+C 66 ; WX 556 ; N B ; B 44 0 633 750 ;
+C 67 ; WX 556 ; N C ; B 76 -18 639 768 ;
+C 68 ; WX 556 ; N D ; B 46 0 637 750 ;
+C 69 ; WX 500 ; N E ; B 46 0 608 750 ;
+C 70 ; WX 500 ; N F ; B 49 0 622 750 ;
+C 71 ; WX 556 ; N G ; B 70 -18 632 768 ;
+C 72 ; WX 556 ; N H ; B 41 0 674 750 ;
+C 73 ; WX 278 ; N I ; B 51 0 386 750 ;
+C 74 ; WX 444 ; N J ; B 38 -18 554 750 ;
+C 75 ; WX 556 ; N K ; B 44 0 691 750 ;
+C 76 ; WX 444 ; N L ; B 37 0 460 750 ;
+C 77 ; WX 778 ; N M ; B 49 0 889 750 ;
+C 78 ; WX 556 ; N N ; B 43 0 672 750 ;
+C 79 ; WX 556 ; N O ; B 79 -18 640 768 ;
+C 80 ; WX 556 ; N P ; B 53 0 647 750 ;
+C 81 ; WX 556 ; N Q ; B 79 -123 640 768 ;
+C 82 ; WX 556 ; N R ; B 42 0 639 750 ;
+C 83 ; WX 500 ; N S ; B 48 -18 593 768 ;
+C 84 ; WX 500 ; N T ; B 150 0 637 750 ;
+C 85 ; WX 556 ; N U ; B 78 -18 674 750 ;
+C 86 ; WX 556 ; N V ; B 170 0 704 750 ;
+C 87 ; WX 778 ; N W ; B 136 0 927 750 ;
+C 88 ; WX 556 ; N X ; B 13 0 696 750 ;
+C 89 ; WX 556 ; N Y ; B 170 0 704 750 ;
+C 90 ; WX 444 ; N Z ; B 10 0 583 750 ;
+C 91 ; WX 278 ; N bracketleft ; B 2 -187 421 750 ;
+C 92 ; WX 250 ; N backslash ; B 60 0 350 750 ;
+C 93 ; WX 278 ; N bracketright ; B -24 -187 395 750 ;
+C 94 ; WX 500 ; N asciicircum ; B 94 326 564 750 ;
+C 95 ; WX 500 ; N underscore ; B -25 -119 487 -61 ;
+C 96 ; WX 278 ; N quoteleft ; B 159 455 383 768 ;
+C 97 ; WX 500 ; N a ; B 48 -18 553 576 ;
+C 98 ; WX 500 ; N b ; B 48 -18 553 750 ;
+C 99 ; WX 500 ; N c ; B 77 -18 545 576 ;
+C 100 ; WX 500 ; N d ; B 71 -18 613 750 ;
+C 101 ; WX 500 ; N e ; B 66 -18 558 576 ;
+C 102 ; WX 333 ; N f ; B 83 0 469 750 ; L i fi ; L l fl ;
+C 103 ; WX 500 ; N g ; B 25 -189 572 576 ;
+C 104 ; WX 500 ; N h ; B 46 0 554 750 ;
+C 105 ; WX 278 ; N i ; B 60 0 378 750 ;
+C 106 ; WX 278 ; N j ; B -26 -189 382 750 ;
+C 107 ; WX 500 ; N k ; B 40 0 603 750 ;
+C 108 ; WX 278 ; N l ; B 60 0 378 750 ;
+C 109 ; WX 722 ; N m ; B 38 0 785 576 ;
+C 110 ; WX 500 ; N n ; B 49 0 552 576 ;
+C 111 ; WX 500 ; N o ; B 70 -18 546 576 ;
+C 112 ; WX 500 ; N p ; B 2 -189 547 576 ;
+C 113 ; WX 500 ; N q ; B 65 -188 570 576 ;
+C 114 ; WX 333 ; N r ; B 42 0 437 576 ;
+C 115 ; WX 444 ; N s ; B 39 -18 514 576 ;
+C 116 ; WX 333 ; N t ; B 96 -8 429 720 ;
+C 117 ; WX 500 ; N u ; B 64 -18 568 560 ;
+C 118 ; WX 444 ; N v ; B 128 0 555 560 ;
+C 119 ; WX 667 ; N w ; B 116 0 778 560 ;
+C 120 ; WX 444 ; N x ; B 9 0 550 560 ;
+C 121 ; WX 444 ; N y ; B 17 -189 552 560 ;
+C 122 ; WX 389 ; N z ; B 14 0 494 560 ;
+C 123 ; WX 274 ; N braceleft ; B 60 -95 442 750 ;
+C 124 ; WX 250 ; N bar ; B 54 0 355 750 ;
+C 125 ; WX 274 ; N braceright ; B -29 -95 352 750 ;
+C 126 ; WX 500 ; N asciitilde ; B 74 153 536 359 ;
+C 161 ; WX 333 ; N exclamdown ; B 39 -189 370 560 ;
+C 162 ; WX 500 ; N cent ; B 77 -147 545 685 ;
+C 163 ; WX 500 ; N sterling ; B 19 -18 586 768 ;
+C 164 ; WX 167 ; N fraction ; B -168 0 485 750 ;
+C 165 ; WX 500 ; N yen ; B 92 0 676 750 ;
+C 166 ; WX 500 ; N florin ; B -33 -193 647 763 ;
+C 167 ; WX 500 ; N section ; B 37 -184 580 768 ;
+C 168 ; WX 500 ; N currency ; B 29 58 612 563 ;
+C 169 ; WX 250 ; N quotesingle ; B 165 468 342 739 ;
+C 170 ; WX 500 ; N quotedblleft ; B 150 455 614 768 ;
+C 171 ; WX 500 ; N guillemotleft ; B 88 123 564 505 ;
+C 172 ; WX 278 ; N guilsinglleft ; B 104 123 341 505 ;
+C 173 ; WX 278 ; N guilsinglright ; B 70 123 307 505 ;
+C 174 ; WX 556 ; N fi ; B 83 0 662 750 ;
+C 175 ; WX 556 ; N fl ; B 83 0 662 750 ;
+C 177 ; WX 500 ; N endash ; B 54 253 578 368 ;
+C 178 ; WX 500 ; N dagger ; B 111 -173 583 750 ;
+C 179 ; WX 500 ; N daggerdbl ; B 35 -171 585 750 ;
+C 180 ; WX 333 ; N periodcentered ; B 117 164 322 335 ;
+C 182 ; WX 550 ; N paragraph ; B 128 -116 712 750 ;
+C 183 ; WX 420 ; N bullet ; B 97 186 482 562 ;
+C 184 ; WX 278 ; N quotesinglbase ; B 28 -152 252 161 ;
+C 185 ; WX 500 ; N quotedblbase ; B 19 -152 484 161 ;
+C 186 ; WX 500 ; N quotedblright ; B 142 437 606 750 ;
+C 187 ; WX 500 ; N guillemotright ; B 69 123 545 505 ;
+C 188 ; WX 1000 ; N ellipsis ; B 82 0 954 171 ;
+C 189 ; WX 1111 ; N perthousand ; B 110 -18 1161 752 ;
+C 191 ; WX 500 ; N questiondown ; B 23 -189 489 576 ;
+C 193 ; WX 333 ; N grave ; B 128 634 405 782 ;
+C 194 ; WX 333 ; N acute ; B 198 634 537 782 ;
+C 195 ; WX 333 ; N circumflex ; B 99 634 505 782 ;
+C 196 ; WX 333 ; N tilde ; B 106 634 526 775 ;
+C 197 ; WX 333 ; N macron ; B 120 663 515 753 ;
+C 198 ; WX 333 ; N breve ; B 151 634 515 787 ;
+C 199 ; WX 333 ; N dotaccent ; B 223 640 410 770 ;
+C 200 ; WX 333 ; N dieresis ; B 116 640 518 770 ;
+C 202 ; WX 333 ; N ring ; B 210 635 440 860 ;
+C 203 ; WX 333 ; N cedilla ; B -5 -232 269 0 ;
+C 205 ; WX 333 ; N hungarumlaut ; B 49 634 687 782 ;
+C 206 ; WX 333 ; N ogonek ; B 48 -205 256 0 ;
+C 207 ; WX 333 ; N caron ; B 130 634 536 782 ;
+C 208 ; WX 1000 ; N emdash ; B 54 253 1078 368 ;
+C 225 ; WX 778 ; N AE ; B -23 0 897 750 ;
+C 227 ; WX 300 ; N ordfeminine ; B 77 277 429 768 ;
+C 232 ; WX 444 ; N Lslash ; B 30 0 460 750 ;
+C 233 ; WX 556 ; N Oslash ; B -3 -85 742 819 ;
+C 234 ; WX 778 ; N OE ; B 72 -18 895 768 ;
+C 235 ; WX 300 ; N ordmasculine ; B 74 277 427 768 ;
+C 241 ; WX 722 ; N ae ; B 45 -18 804 576 ;
+C 245 ; WX 278 ; N dotlessi ; B 60 0 338 560 ;
+C 248 ; WX 278 ; N lslash ; B 50 0 396 750 ;
+C 249 ; WX 500 ; N oslash ; B -17 -74 628 633 ;
+C 250 ; WX 722 ; N oe ; B 67 -18 806 576 ;
+C 251 ; WX 500 ; N germandbls ; B 44 -18 577 768 ;
+C -1 ; WX 556 ; N Aacute ; B 9 0 689 972 ;
+C -1 ; WX 556 ; N Acircumflex ; B 9 0 643 952 ;
+C -1 ; WX 556 ; N Adieresis ; B 9 0 670 960 ;
+C -1 ; WX 556 ; N Agrave ; B 9 0 557 972 ;
+C -1 ; WX 556 ; N Aring ; B 9 0 580 990 ;
+C -1 ; WX 556 ; N Atilde ; B 9 0 674 945 ;
+C -1 ; WX 556 ; N Ccedilla ; B 76 -232 639 768 ;
+C -1 ; WX 500 ; N Eacute ; B 46 0 661 972 ;
+C -1 ; WX 500 ; N Ecircumflex ; B 46 0 625 952 ;
+C -1 ; WX 500 ; N Edieresis ; B 46 0 642 960 ;
+C -1 ; WX 500 ; N Egrave ; B 46 0 608 972 ;
+C -1 ; WX 556 ; N Eth ; B 66 0 657 750 ;
+C -1 ; WX 278 ; N Iacute ; B 51 0 550 972 ;
+C -1 ; WX 278 ; N Icircumflex ; B 51 0 514 952 ;
+C -1 ; WX 278 ; N Idieresis ; B 51 0 531 960 ;
+C -1 ; WX 278 ; N Igrave ; B 51 0 418 972 ;
+C -1 ; WX 556 ; N Ntilde ; B 43 0 674 945 ;
+C -1 ; WX 556 ; N Oacute ; B 79 -18 689 972 ;
+C -1 ; WX 556 ; N Ocircumflex ; B 79 -18 653 952 ;
+C -1 ; WX 556 ; N Odieresis ; B 79 -18 670 960 ;
+C -1 ; WX 556 ; N Ograve ; B 79 -18 640 972 ;
+C -1 ; WX 556 ; N Otilde ; B 79 -18 674 945 ;
+C -1 ; WX 500 ; N Scaron ; B 48 -18 656 952 ;
+C -1 ; WX 556 ; N Thorn ; B 53 0 616 750 ;
+C -1 ; WX 556 ; N Uacute ; B 78 -18 689 972 ;
+C -1 ; WX 556 ; N Ucircumflex ; B 78 -18 674 952 ;
+C -1 ; WX 556 ; N Udieresis ; B 78 -18 674 960 ;
+C -1 ; WX 556 ; N Ugrave ; B 78 -18 674 972 ;
+C -1 ; WX 556 ; N Yacute ; B 170 0 704 972 ;
+C -1 ; WX 556 ; N Ydieresis ; B 170 0 704 960 ;
+C -1 ; WX 444 ; N Zcaron ; B 10 0 628 952 ;
+C -1 ; WX 500 ; N aacute ; B 48 -18 621 782 ;
+C -1 ; WX 500 ; N acircumflex ; B 48 -18 585 762 ;
+C -1 ; WX 500 ; N adieresis ; B 48 -18 602 770 ;
+C -1 ; WX 500 ; N agrave ; B 48 -18 553 782 ;
+C -1 ; WX 500 ; N aring ; B 48 -18 553 860 ;
+C -1 ; WX 500 ; N atilde ; B 48 -18 606 755 ;
+C -1 ; WX 250 ; N brokenbar ; B 54 0 355 750 ;
+C -1 ; WX 500 ; N ccedilla ; B 77 -232 545 576 ;
+C -1 ; WX 830 ; N copyright ; B 91 -18 899 768 ;
+C -1 ; WX 400 ; N degree ; B 174 450 481 750 ;
+C -1 ; WX 500 ; N divide ; B 67 7 540 492 ;
+C -1 ; WX 500 ; N eacute ; B 66 -18 621 782 ;
+C -1 ; WX 500 ; N ecircumflex ; B 66 -18 585 762 ;
+C -1 ; WX 500 ; N edieresis ; B 66 -18 602 770 ;
+C -1 ; WX 500 ; N egrave ; B 66 -18 558 782 ;
+C -1 ; WX 500 ; N eth ; B 66 -18 553 776 ;
+C -1 ; WX 278 ; N iacute ; B 60 0 510 782 ;
+C -1 ; WX 278 ; N icircumflex ; B 58 0 464 762 ;
+C -1 ; WX 278 ; N idieresis ; B 60 0 491 770 ;
+C -1 ; WX 278 ; N igrave ; B 60 0 378 782 ;
+C -1 ; WX 500 ; N logicalnot ; B 88 115 561 405 ;
+C -1 ; WX 500 ; N minus ; B 67 192 540 307 ;
+C -1 ; WX 500 ; N mu ; B 6 -189 568 560 ;
+C -1 ; WX 500 ; N multiply ; B 58 38 550 472 ;
+C -1 ; WX 500 ; N ntilde ; B 49 0 606 755 ;
+C -1 ; WX 500 ; N oacute ; B 70 -18 621 782 ;
+C -1 ; WX 500 ; N ocircumflex ; B 70 -18 585 762 ;
+C -1 ; WX 500 ; N odieresis ; B 70 -18 602 770 ;
+C -1 ; WX 500 ; N ograve ; B 70 -18 546 782 ;
+C -1 ; WX 750 ; N onehalf ; B 108 0 812 750 ;
+C -1 ; WX 750 ; N onequarter ; B 130 0 787 750 ;
+C -1 ; WX 300 ; N onesuperior ; B 180 310 410 750 ;
+C -1 ; WX 500 ; N otilde ; B 70 -18 606 755 ;
+C -1 ; WX 500 ; N plusminus ; B 23 -12 558 510 ;
+C -1 ; WX 830 ; N registered ; B 91 -18 899 768 ;
+C -1 ; WX 444 ; N scaron ; B 39 -18 578 762 ;
+C -1 ; WX 500 ; N thorn ; B 2 -189 547 750 ;
+C -1 ; WX 750 ; N threequarters ; B 85 0 813 750 ;
+C -1 ; WX 300 ; N threesuperior ; B 88 289 423 750 ;
+C -1 ; WX 860 ; N trademark ; B 144 346 1017 750 ;
+C -1 ; WX 300 ; N twosuperior ; B 68 300 432 750 ;
+C -1 ; WX 500 ; N uacute ; B 64 -18 621 782 ;
+C -1 ; WX 500 ; N ucircumflex ; B 64 -18 587 772 ;
+C -1 ; WX 500 ; N udieresis ; B 64 -18 602 770 ;
+C -1 ; WX 500 ; N ugrave ; B 64 -18 568 782 ;
+C -1 ; WX 444 ; N yacute ; B 17 -189 593 782 ;
+C -1 ; WX 444 ; N ydieresis ; B 17 -189 574 770 ;
+C -1 ; WX 389 ; N zcaron ; B 14 0 560 762 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 115
+
+KPX A y -18
+KPX A w -18
+KPX A v -18
+KPX A quoteright -55
+KPX A Y -55
+KPX A W -37
+KPX A V -37
+KPX A T -55
+
+KPX F period -111
+KPX F comma -111
+KPX F A -37
+
+KPX L y -37
+KPX L quoteright -92
+KPX L Y -92
+KPX L W -74
+KPX L V -74
+KPX L T -74
+
+KPX P period -129
+KPX P comma -129
+KPX P A -37
+
+KPX R y 0
+KPX R Y -18
+KPX R W 0
+KPX R V 0
+KPX R T -18
+
+KPX T y -55
+KPX T w -74
+KPX T u -74
+KPX T semicolon -74
+KPX T s -74
+KPX T r -74
+KPX T period -92
+KPX T o -74
+KPX T i -18
+KPX T hyphen -55
+KPX T e -74
+KPX T comma -92
+KPX T colon -74
+KPX T c -74
+KPX T a -74
+KPX T A -55
+
+KPX V y 0
+KPX V u -18
+KPX V semicolon -18
+KPX V r -18
+KPX V period -92
+KPX V o -18
+KPX V i 0
+KPX V hyphen -18
+KPX V e -18
+KPX V comma -92
+KPX V colon -18
+KPX V a -18
+KPX V A -37
+
+KPX W y 0
+KPX W u 0
+KPX W semicolon 0
+KPX W r 0
+KPX W period -74
+KPX W o -18
+KPX W i 0
+KPX W hyphen -18
+KPX W e -18
+KPX W comma -74
+KPX W colon 0
+KPX W a -18
+KPX W A -18
+
+KPX Y v -18
+KPX Y u -37
+KPX Y semicolon -37
+KPX Y q -75
+KPX Y period -111
+KPX Y p -37
+KPX Y o -55
+KPX Y i -18
+KPX Y hyphen -74
+KPX Y e -55
+KPX Y comma -111
+KPX Y colon -37
+KPX Y a -55
+KPX Y A -55
+
+KPX f quoteright 18
+KPX f f 0
+
+KPX quoteleft quoteleft -18
+
+KPX quoteright t 0
+KPX quoteright s -55
+KPX quoteright quoteright -18
+
+KPX r z 0
+KPX r y 18
+KPX r x 0
+KPX r w 18
+KPX r v 18
+KPX r u 0
+KPX r t 0
+KPX r r 0
+KPX r quoteright 0
+KPX r q 0
+KPX r period -74
+KPX r o 0
+KPX r n 0
+KPX r m 0
+KPX r hyphen -37
+KPX r h 0
+KPX r g 0
+KPX r f 0
+KPX r e 0
+KPX r d 0
+KPX r comma -74
+KPX r c 0
+
+KPX v period -55
+KPX v comma -55
+
+KPX w period -37
+KPX w comma -37
+
+KPX y period -55
+KPX y comma -55
+EndKernPairs
+EndKernData
+StartComposites 58
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 55 170 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 28 -20 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 83 170 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 45 -20 ;
+CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 111 0 ;
+CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 83 0 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 111 190 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 55 0 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 111 190 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 55 0 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 111 190 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 111 170 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 111 190 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 111 190 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 83 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 83 -10 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 83 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 83 0 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute -27 190 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex -27 170 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis -27 190 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave -27 190 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -27 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -37 -20 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -27 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -27 0 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 83 190 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 83 170 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 83 190 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 83 190 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 83 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 83 -20 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 83 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 83 0 ;
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 111 190 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 101 170 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 111 190 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 111 190 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 83 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 83 -20 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 83 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 83 0 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 111 190 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 111 170 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 111 190 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 111 190 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 83 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 83 -20 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 83 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 83 0 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 111 170 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 83 -20 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 111 170 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 83 -20 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 111 170 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 83 -20 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 111 130 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 83 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/He-CnBlO+ b/font/font/He-CnBlO+
new file mode 100644
index 0000000..057f767
--- /dev/null
+++ b/font/font/He-CnBlO+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 556 ; N Ccaron ; B 76 -18 742 967 ;
+C -1 ; WX 500 ; N ccaron ; B 77 -18 642 782 ;
+C -1 ; WX 556 ; N Dcaron ; B 46 0 686 967 ;
+C -1 ; WX 657 ; N dcaron ; B 71 -18 859 825 ;
+C -1 ; WX 500 ; N Ecaron ; B 46 0 658 967 ;
+C -1 ; WX 500 ; N ecaron ; B 66 -18 619 782 ;
+C -1 ; WX 444 ; N Lcaron ; B 37 0 632 825 ;
+C -1 ; WX 444 ; N Lacute ; B 37 0 631 967 ;
+C -1 ; WX 435 ; N lcaron ; B 60 0 624 825 ;
+C -1 ; WX 278 ; N lacute ; B 60 0 583 967 ;
+C -1 ; WX 556 ; N Ncaron ; B 43 0 686 967 ;
+C -1 ; WX 500 ; N ncaron ; B 49 0 619 782 ;
+C -1 ; WX 556 ; N Rcaron ; B 42 0 686 967 ;
+C -1 ; WX 556 ; N Racute ; B 42 0 751 967 ;
+C -1 ; WX 333 ; N rcaron ; B 42 0 536 782 ;
+C -1 ; WX 333 ; N racute ; B 42 0 571 782 ;
+C -1 ; WX 500 ; N Tcaron ; B 150 0 658 967 ;
+C -1 ; WX 490 ; N tcaron ; B 96 -8 675 750 ;
+C -1 ; WX 556 ; N Uring ; B 78 -18 674 967 ;
+C -1 ; WX 500 ; N uring ; B 64 -18 568 860 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 206 185 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 106 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 150 185 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 484 75 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 122 185 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 83 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 257 75 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 94 185 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 249 75 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 46 185 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 150 185 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 83 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 150 185 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 214 185 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 0 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 34 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 122 185 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 300 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 133 107 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 83 0 ;
+EndBuildComposites
diff --git a/font/font/He-CnLi b/font/font/He-CnLi
new file mode 100644
index 0000000..3655ad4
--- /dev/null
+++ b/font/font/He-CnLi
@@ -0,0 +1,445 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1984 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date:Mon Mar 30 18:00:00 PST 1987
+FontName Helvetica-Condensed-Light
+EncodingScheme AdobeStandardEncoding
+FullName Helvetica Condensed Light
+FamilyName Helvetica
+Weight LightCondensed
+ItalicAngle 0.0
+IsFixedPitch false
+UnderlinePosition -90
+UnderlineThickness 58
+Version 001.001
+Notice Helvetica is a trademark of Allied Corporation.
+FontBBox -170 -207 1000 944
+CapHeight 750
+XHeight 552
+Descender -190
+Ascender 750
+StartCharMetrics 228
+C 32 ; WX 222 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 222 ; N exclam ; B 77 13 146 750 ;
+C 34 ; WX 309 ; N quotedbl ; B 73 524 236 750 ;
+C 35 ; WX 444 ; N numbersign ; B 13 0 431 744 ;
+C 36 ; WX 444 ; N dollar ; B 26 -96 420 778 ;
+C 37 ; WX 778 ; N percent ; B 73 -15 706 741 ;
+C 38 ; WX 611 ; N ampersand ; B 63 -18 573 768 ;
+C 39 ; WX 160 ; N quoteright ; B 49 526 118 750 ;
+C 40 ; WX 278 ; N parenleft ; B 52 -191 244 768 ;
+C 41 ; WX 278 ; N parenright ; B 34 -191 226 768 ;
+C 42 ; WX 389 ; N asterisk ; B 48 462 342 744 ;
+C 43 ; WX 444 ; N plus ; B 21 0 424 490 ;
+C 44 ; WX 222 ; N comma ; B 77 -136 146 88 ;
+C 45 ; WX 333 ; N hyphen ; B 35 269 294 327 ;
+C 46 ; WX 222 ; N period ; B 77 0 146 88 ;
+C 47 ; WX 278 ; N slash ; B -10 -94 289 750 ;
+C 48 ; WX 444 ; N zero ; B 37 -14 407 744 ;
+C 49 ; WX 444 ; N one ; B 60 0 284 744 ;
+C 50 ; WX 444 ; N two ; B 34 0 396 744 ;
+C 51 ; WX 444 ; N three ; B 30 -14 401 744 ;
+C 52 ; WX 444 ; N four ; B 28 0 412 744 ;
+C 53 ; WX 444 ; N five ; B 27 -14 398 730 ;
+C 54 ; WX 444 ; N six ; B 37 -14 408 744 ;
+C 55 ; WX 444 ; N seven ; B 51 0 412 730 ;
+C 56 ; WX 444 ; N eight ; B 36 -14 409 744 ;
+C 57 ; WX 444 ; N nine ; B 40 -14 405 744 ;
+C 58 ; WX 222 ; N colon ; B 77 0 146 521 ;
+C 59 ; WX 222 ; N semicolon ; B 77 -136 146 521 ;
+C 60 ; WX 444 ; N less ; B 19 -12 426 501 ;
+C 61 ; WX 444 ; N equal ; B 21 131 424 360 ;
+C 62 ; WX 444 ; N greater ; B 19 -11 426 502 ;
+C 63 ; WX 389 ; N question ; B 20 0 361 750 ;
+C 64 ; WX 800 ; N at ; B 26 -18 774 768 ;
+C 65 ; WX 500 ; N A ; B 12 0 489 750 ;
+C 66 ; WX 500 ; N B ; B 62 0 454 750 ;
+C 67 ; WX 556 ; N C ; B 63 -18 492 768 ;
+C 68 ; WX 556 ; N D ; B 72 0 500 750 ;
+C 69 ; WX 444 ; N E ; B 67 0 412 750 ;
+C 70 ; WX 444 ; N F ; B 69 0 414 750 ;
+C 71 ; WX 556 ; N G ; B 46 -18 483 768 ;
+C 72 ; WX 556 ; N H ; B 68 0 488 750 ;
+C 73 ; WX 222 ; N I ; B 79 0 144 750 ;
+C 74 ; WX 389 ; N J ; B 12 -18 316 750 ;
+C 75 ; WX 500 ; N K ; B 67 0 491 750 ;
+C 76 ; WX 444 ; N L ; B 74 0 417 750 ;
+C 77 ; WX 722 ; N M ; B 73 0 650 750 ;
+C 78 ; WX 556 ; N N ; B 66 0 490 750 ;
+C 79 ; WX 556 ; N O ; B 58 -18 499 768 ;
+C 80 ; WX 500 ; N P ; B 76 0 462 750 ;
+C 81 ; WX 556 ; N Q ; B 58 -42 527 768 ;
+C 82 ; WX 500 ; N R ; B 63 0 463 750 ;
+C 83 ; WX 500 ; N S ; B 40 -18 461 768 ;
+C 84 ; WX 444 ; N T ; B 20 0 425 750 ;
+C 85 ; WX 556 ; N U ; B 73 -18 483 750 ;
+C 86 ; WX 500 ; N V ; B 14 0 487 750 ;
+C 87 ; WX 722 ; N W ; B 17 0 705 750 ;
+C 88 ; WX 500 ; N X ; B 18 0 482 750 ;
+C 89 ; WX 500 ; N Y ; B 19 0 482 750 ;
+C 90 ; WX 444 ; N Z ; B 34 0 411 750 ;
+C 91 ; WX 278 ; N bracketleft ; B 74 -104 229 768 ;
+C 92 ; WX 222 ; N backslash ; B -40 0 262 750 ;
+C 93 ; WX 278 ; N bracketright ; B 49 -104 204 768 ;
+C 94 ; WX 444 ; N asciicircum ; B 66 340 377 750 ;
+C 95 ; WX 500 ; N underscore ; B 0 -119 500 -61 ;
+C 96 ; WX 160 ; N quoteleft ; B 42 526 111 750 ;
+C 97 ; WX 389 ; N a ; B 26 -14 369 566 ;
+C 98 ; WX 444 ; N b ; B 64 -14 402 750 ;
+C 99 ; WX 389 ; N c ; B 37 -14 358 566 ;
+C 100 ; WX 444 ; N d ; B 44 -14 382 750 ;
+C 101 ; WX 389 ; N e ; B 35 -14 352 566 ;
+C 102 ; WX 222 ; N f ; B 18 0 206 750 ; L i fi ; L l fl ;
+C 103 ; WX 444 ; N g ; B 46 -189 382 566 ;
+C 104 ; WX 444 ; N h ; B 63 0 381 750 ;
+C 105 ; WX 222 ; N i ; B 78 0 145 750 ;
+C 106 ; WX 222 ; N j ; B 21 -189 150 750 ;
+C 107 ; WX 389 ; N k ; B 62 0 375 750 ;
+C 108 ; WX 222 ; N l ; B 82 0 140 750 ;
+C 109 ; WX 667 ; N m ; B 58 0 610 566 ;
+C 110 ; WX 444 ; N n ; B 65 0 379 566 ;
+C 111 ; WX 444 ; N o ; B 49 -14 396 566 ;
+C 112 ; WX 444 ; N p ; B 58 -190 394 566 ;
+C 113 ; WX 444 ; N q ; B 46 -189 382 566 ;
+C 114 ; WX 278 ; N r ; B 69 0 257 566 ;
+C 115 ; WX 389 ; N s ; B 32 -14 350 566 ;
+C 116 ; WX 222 ; N t ; B 16 -10 201 714 ;
+C 117 ; WX 444 ; N u ; B 60 -14 379 552 ;
+C 118 ; WX 389 ; N v ; B 17 0 373 552 ;
+C 119 ; WX 556 ; N w ; B 11 0 545 552 ;
+C 120 ; WX 389 ; N x ; B 13 0 376 552 ;
+C 121 ; WX 389 ; N y ; B 17 -191 373 552 ;
+C 122 ; WX 333 ; N z ; B 18 0 315 552 ;
+C 123 ; WX 351 ; N braceleft ; B 48 -93 277 768 ;
+C 124 ; WX 222 ; N bar ; B 85 0 137 750 ;
+C 125 ; WX 351 ; N braceright ; B 74 -93 303 768 ;
+C 126 ; WX 444 ; N asciitilde ; B 21 179 424 309 ;
+C 161 ; WX 222 ; N exclamdown ; B 77 -185 146 552 ;
+C 162 ; WX 444 ; N cent ; B 62 -143 384 671 ;
+C 163 ; WX 444 ; N sterling ; B 19 -21 428 737 ;
+C 164 ; WX 167 ; N fraction ; B -170 0 332 744 ;
+C 165 ; WX 444 ; N yen ; B -9 0 454 738 ;
+C 166 ; WX 444 ; N florin ; B 12 -189 435 744 ;
+C 167 ; WX 444 ; N section ; B 26 -147 419 768 ;
+C 168 ; WX 444 ; N currency ; B -3 50 448 503 ;
+C 169 ; WX 198 ; N quotesingle ; B 73 524 125 750 ;
+C 170 ; WX 333 ; N quotedblleft ; B 85 526 284 750 ;
+C 171 ; WX 500 ; N guillemotleft ; B 83 130 411 412 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 90 130 231 412 ;
+C 173 ; WX 333 ; N guilsinglright ; B 102 130 243 412 ;
+C 174 ; WX 444 ; N fi ; B 25 0 376 750 ;
+C 175 ; WX 444 ; N fl ; B 25 0 372 750 ;
+C 177 ; WX 500 ; N endash ; B 0 273 500 324 ;
+C 178 ; WX 444 ; N dagger ; B 32 -117 412 768 ;
+C 179 ; WX 444 ; N daggerdbl ; B 31 -117 413 768 ;
+C 180 ; WX 222 ; N periodcentered ; B 77 201 146 289 ;
+C 182 ; WX 564 ; N paragraph ; B 53 -116 443 750 ;
+C 183 ; WX 606 ; N bullet ; B 116 189 490 563 ;
+C 184 ; WX 222 ; N quotesinglbase ; B 77 -136 146 88 ;
+C 185 ; WX 330 ; N quotedblbase ; B 66 -136 265 88 ;
+C 186 ; WX 333 ; N quotedblright ; B 49 526 248 750 ;
+C 187 ; WX 500 ; N guillemotright ; B 89 130 417 412 ;
+C 188 ; WX 1000 ; N ellipsis ; B 133 0 868 88 ;
+C 189 ; WX 1000 ; N perthousand ; B 34 -15 966 741 ;
+C 191 ; WX 389 ; N questiondown ; B 20 -202 361 552 ;
+C 193 ; WX 333 ; N grave ; B 40 605 229 744 ;
+C 194 ; WX 333 ; N acute ; B 104 605 293 744 ;
+C 195 ; WX 333 ; N circumflex ; B 20 605 314 744 ;
+C 196 ; WX 333 ; N tilde ; B 10 618 324 720 ;
+C 197 ; WX 333 ; N macron ; B 19 645 315 690 ;
+C 198 ; WX 333 ; N breve ; B 23 612 311 738 ;
+C 199 ; WX 333 ; N dotaccent ; B 135 617 199 719 ;
+C 200 ; WX 333 ; N dieresis ; B 56 617 278 719 ;
+C 202 ; WX 333 ; N ring ; B 67 596 266 796 ;
+C 203 ; WX 333 ; N cedilla ; B 57 -207 259 0 ;
+C 205 ; WX 333 ; N hungarumlaut ; B 64 605 382 744 ;
+C 206 ; WX 333 ; N ogonek ; B 0 -191 208 13 ;
+C 207 ; WX 333 ; N caron ; B 20 606 314 745 ;
+C 208 ; WX 1000 ; N emdash ; B 0 273 1000 324 ;
+C 225 ; WX 722 ; N AE ; B 6 0 688 750 ;
+C 227 ; WX 266 ; N ordfeminine ; B 21 334 245 768 ;
+C 232 ; WX 444 ; N Lslash ; B -13 0 417 750 ;
+C 233 ; WX 556 ; N Oslash ; B 26 -29 529 770 ;
+C 234 ; WX 778 ; N OE ; B 56 -18 738 768 ;
+C 235 ; WX 266 ; N ordmasculine ; B 19 333 246 768 ;
+C 241 ; WX 611 ; N ae ; B 24 -14 583 566 ;
+C 245 ; WX 200 ; N dotlessi ; B 71 0 129 552 ;
+C 248 ; WX 222 ; N lslash ; B 6 0 213 750 ;
+C 249 ; WX 444 ; N oslash ; B -3 -42 429 578 ;
+C 250 ; WX 667 ; N oe ; B 37 -14 625 566 ;
+C 251 ; WX 444 ; N germandbls ; B 66 -14 394 768 ;
+C -1 ; WX 500 ; N Aacute ; B 12 0 489 942 ;
+C -1 ; WX 500 ; N Acircumflex ; B 12 0 489 942 ;
+C -1 ; WX 500 ; N Adieresis ; B 12 0 489 917 ;
+C -1 ; WX 500 ; N Agrave ; B 12 0 489 942 ;
+C -1 ; WX 500 ; N Aring ; B 12 0 489 944 ;
+C -1 ; WX 500 ; N Atilde ; B 12 0 489 918 ;
+C -1 ; WX 556 ; N Ccedilla ; B 63 -207 492 768 ;
+C -1 ; WX 444 ; N Eacute ; B 67 0 412 942 ;
+C -1 ; WX 444 ; N Ecircumflex ; B 67 0 412 942 ;
+C -1 ; WX 444 ; N Edieresis ; B 67 0 412 917 ;
+C -1 ; WX 444 ; N Egrave ; B 67 0 412 942 ;
+C -1 ; WX 556 ; N Eth ; B -22 0 500 750 ;
+C -1 ; WX 222 ; N Iacute ; B 49 0 238 942 ;
+C -1 ; WX 222 ; N Icircumflex ; B -35 0 259 942 ;
+C -1 ; WX 222 ; N Idieresis ; B 1 0 223 917 ;
+C -1 ; WX 222 ; N Igrave ; B -15 0 174 942 ;
+C -1 ; WX 556 ; N Ntilde ; B 66 0 490 918 ;
+C -1 ; WX 556 ; N Oacute ; B 58 -18 499 942 ;
+C -1 ; WX 556 ; N Ocircumflex ; B 58 -18 499 942 ;
+C -1 ; WX 556 ; N Odieresis ; B 58 -18 499 917 ;
+C -1 ; WX 556 ; N Ograve ; B 58 -18 499 942 ;
+C -1 ; WX 556 ; N Otilde ; B 58 -18 499 918 ;
+C -1 ; WX 500 ; N Scaron ; B 40 -18 461 923 ;
+C -1 ; WX 500 ; N Thorn ; B 76 0 462 750 ;
+C -1 ; WX 556 ; N Uacute ; B 73 -18 483 942 ;
+C -1 ; WX 556 ; N Ucircumflex ; B 73 -18 483 942 ;
+C -1 ; WX 556 ; N Udieresis ; B 73 -18 483 917 ;
+C -1 ; WX 556 ; N Ugrave ; B 73 -18 483 942 ;
+C -1 ; WX 500 ; N Yacute ; B 19 0 482 942 ;
+C -1 ; WX 500 ; N Ydieresis ; B 19 0 482 917 ;
+C -1 ; WX 444 ; N Zcaron ; B 34 0 411 923 ;
+C -1 ; WX 389 ; N aacute ; B 26 -14 369 744 ;
+C -1 ; WX 389 ; N acircumflex ; B 26 -14 369 744 ;
+C -1 ; WX 389 ; N adieresis ; B 26 -14 369 719 ;
+C -1 ; WX 389 ; N agrave ; B 26 -14 369 744 ;
+C -1 ; WX 389 ; N aring ; B 26 -14 369 796 ;
+C -1 ; WX 389 ; N atilde ; B 26 -14 369 720 ;
+C -1 ; WX 222 ; N brokenbar ; B 85 0 137 750 ;
+C -1 ; WX 389 ; N ccedilla ; B 37 -207 358 566 ;
+C -1 ; WX 800 ; N copyright ; B 17 -18 783 768 ;
+C -1 ; WX 400 ; N degree ; B 50 444 350 744 ;
+C -1 ; WX 444 ; N divide ; B 21 0 424 491 ;
+C -1 ; WX 389 ; N eacute ; B 35 -14 352 744 ;
+C -1 ; WX 389 ; N ecircumflex ; B 35 -14 352 744 ;
+C -1 ; WX 389 ; N edieresis ; B 35 -14 352 719 ;
+C -1 ; WX 389 ; N egrave ; B 35 -14 352 744 ;
+C -1 ; WX 444 ; N eth ; B 48 -14 397 765 ;
+C -1 ; WX 200 ; N iacute ; B 38 0 227 744 ;
+C -1 ; WX 200 ; N icircumflex ; B -56 0 238 744 ;
+C -1 ; WX 200 ; N idieresis ; B -10 0 212 719 ;
+C -1 ; WX 200 ; N igrave ; B -26 0 163 744 ;
+C -1 ; WX 444 ; N logicalnot ; B 21 93 424 360 ;
+C -1 ; WX 444 ; N minus ; B 21 220 424 271 ;
+C -1 ; WX 444 ; N mu ; B 60 -189 379 552 ;
+C -1 ; WX 444 ; N multiply ; B 21 38 424 441 ;
+C -1 ; WX 444 ; N ntilde ; B 65 0 380 720 ;
+C -1 ; WX 444 ; N oacute ; B 49 -14 396 744 ;
+C -1 ; WX 444 ; N ocircumflex ; B 49 -14 396 744 ;
+C -1 ; WX 444 ; N odieresis ; B 49 -14 396 719 ;
+C -1 ; WX 444 ; N ograve ; B 49 -14 396 744 ;
+C -1 ; WX 666 ; N onehalf ; B 2 0 664 744 ;
+C -1 ; WX 666 ; N onequarter ; B 19 0 648 744 ;
+C -1 ; WX 266 ; N onesuperior ; B 57 298 210 744 ;
+C -1 ; WX 444 ; N otilde ; B 49 -14 396 720 ;
+C -1 ; WX 444 ; N plusminus ; B 21 0 424 490 ;
+C -1 ; WX 800 ; N registered ; B 17 -18 783 768 ;
+C -1 ; WX 389 ; N scaron ; B 32 -14 350 725 ;
+C -1 ; WX 444 ; N thorn ; B 58 -190 394 750 ;
+C -1 ; WX 666 ; N threequarters ; B 16 0 650 744 ;
+C -1 ; WX 266 ; N threesuperior ; B 12 290 254 744 ;
+C -1 ; WX 722 ; N trademark ; B 57 329 666 750 ;
+C -1 ; WX 266 ; N twosuperior ; B 16 298 251 744 ;
+C -1 ; WX 444 ; N uacute ; B 60 -14 379 744 ;
+C -1 ; WX 444 ; N ucircumflex ; B 60 -14 379 734 ;
+C -1 ; WX 444 ; N udieresis ; B 60 -14 379 719 ;
+C -1 ; WX 444 ; N ugrave ; B 60 -14 379 744 ;
+C -1 ; WX 389 ; N yacute ; B 17 -191 373 744 ;
+C -1 ; WX 389 ; N ydieresis ; B 17 -191 373 719 ;
+C -1 ; WX 333 ; N zcaron ; B 18 0 315 725 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 115
+
+KPX A y -18
+KPX A w -18
+KPX A v -18
+KPX A quoteright -55
+KPX A Y -55
+KPX A W -37
+KPX A V -37
+KPX A T -55
+
+KPX F period -111
+KPX F comma -111
+KPX F A -37
+
+KPX L y -37
+KPX L quoteright -92
+KPX L Y -92
+KPX L W -74
+KPX L V -74
+KPX L T -74
+
+KPX P period -129
+KPX P comma -129
+KPX P A -37
+
+KPX R y 0
+KPX R Y -18
+KPX R W 0
+KPX R V 0
+KPX R T -18
+
+KPX T y -55
+KPX T w -74
+KPX T u -74
+KPX T semicolon -74
+KPX T s -74
+KPX T r -74
+KPX T period -92
+KPX T o -74
+KPX T i -18
+KPX T hyphen -55
+KPX T e -74
+KPX T comma -92
+KPX T colon -74
+KPX T c -74
+KPX T a -74
+KPX T A -55
+
+KPX V y 0
+KPX V u -18
+KPX V semicolon -18
+KPX V r -18
+KPX V period -92
+KPX V o -18
+KPX V i 0
+KPX V hyphen -18
+KPX V e -18
+KPX V comma -92
+KPX V colon -18
+KPX V a -18
+KPX V A -37
+
+KPX W y 0
+KPX W u 0
+KPX W semicolon 0
+KPX W r 0
+KPX W period -74
+KPX W o -18
+KPX W i 0
+KPX W hyphen -18
+KPX W e -18
+KPX W comma -74
+KPX W colon 0
+KPX W a -18
+KPX W A -18
+
+KPX Y v -18
+KPX Y u -37
+KPX Y semicolon -37
+KPX Y q -55
+KPX Y period -111
+KPX Y p -37
+KPX Y o -55
+KPX Y i -18
+KPX Y hyphen -74
+KPX Y e -55
+KPX Y comma -111
+KPX Y colon -37
+KPX Y a -55
+KPX Y A -55
+
+KPX f quoteright 28
+KPX f f 0
+
+KPX quoteleft quoteleft -18
+
+KPX quoteright t 0
+KPX quoteright s -55
+KPX quoteright quoteright -18
+
+KPX r z 0
+KPX r y 18
+KPX r x 0
+KPX r w 18
+KPX r v 18
+KPX r u 0
+KPX r t 0
+KPX r r 0
+KPX r quoteright 0
+KPX r q 0
+KPX r period -74
+KPX r o 0
+KPX r n 0
+KPX r m 0
+KPX r hyphen -37
+KPX r h 0
+KPX r g 0
+KPX r f 0
+KPX r e 0
+KPX r d 0
+KPX r comma -74
+KPX r c 0
+
+KPX v period -55
+KPX v comma -55
+
+KPX w period -37
+KPX w comma -37
+
+KPX y period -55
+KPX y comma -55
+EndKernPairs
+EndKernData
+StartComposites 58
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 55 178 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 0 -20 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 83 178 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 18 -20 ;
+CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 111 0 ;
+CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 28 0 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 83 198 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 28 0 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 83 198 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 28 0 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 111 198 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 111 198 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 111 198 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 111 198 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 55 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 55 -10 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 55 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 55 0 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute -55 198 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex -55 198 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis -55 198 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave -55 198 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -66 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -76 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -66 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -66 0 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 55 198 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 55 198 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 55 198 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 55 198 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 28 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 28 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 28 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 28 0 ;
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 83 198 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 73 198 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 83 198 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 83 198 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 28 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 28 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 28 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 28 0 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 111 198 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 111 198 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 111 198 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 111 198 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 55 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 55 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 55 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 55 0 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 83 198 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 28 0 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 111 198 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 55 0 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 111 198 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 55 0 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 83 148 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 28 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/He-CnLi+ b/font/font/He-CnLi+
new file mode 100644
index 0000000..094a7c6
--- /dev/null
+++ b/font/font/He-CnLi+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 556 ; N Ccaron ; B 63 -18 492 958 ;
+C -1 ; WX 389 ; N ccaron ; B 37 -14 358 745 ;
+C -1 ; WX 556 ; N Dcaron ; B 72 0 500 958 ;
+C -1 ; WX 492 ; N dcaron ; B 44 -14 458 825 ;
+C -1 ; WX 444 ; N Ecaron ; B 67 0 412 958 ;
+C -1 ; WX 389 ; N ecaron ; B 35 -14 352 745 ;
+C -1 ; WX 444 ; N Lcaron ; B 74 0 417 825 ;
+C -1 ; WX 444 ; N Lacute ; B 74 0 417 958 ;
+C -1 ; WX 270 ; N lcaron ; B 82 0 216 825 ;
+C -1 ; WX 222 ; N lacute ; B 68 0 257 958 ;
+C -1 ; WX 556 ; N Ncaron ; B 66 0 490 958 ;
+C -1 ; WX 444 ; N ncaron ; B 65 0 379 745 ;
+C -1 ; WX 500 ; N Rcaron ; B 63 0 463 958 ;
+C -1 ; WX 500 ; N Racute ; B 63 0 463 958 ;
+C -1 ; WX 278 ; N rcaron ; B -7 0 287 745 ;
+C -1 ; WX 278 ; N racute ; B 69 0 285 744 ;
+C -1 ; WX 444 ; N Tcaron ; B 20 0 425 958 ;
+C -1 ; WX 270 ; N tcaron ; B 16 -10 277 750 ;
+C -1 ; WX 556 ; N Uring ; B 73 -18 483 958 ;
+C -1 ; WX 444 ; N uring ; B 60 -14 379 796 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 154 213 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 44 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 111 213 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 340 75 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 55 213 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 28 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 102 75 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 55 214 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 98 75 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute -36 214 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 111 213 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 55 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 83 213 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 119 214 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron -27 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute -8 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 55 213 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 159 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 111 162 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 55 0 ;
+EndBuildComposites
diff --git a/font/font/He-CnLiO b/font/font/He-CnLiO
new file mode 100644
index 0000000..55dc321
--- /dev/null
+++ b/font/font/He-CnLiO
@@ -0,0 +1,445 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1984 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date:Tue Mar 31 08:44:31 PST 1987
+FontName Helvetica-Condensed-LightObl
+EncodingScheme AdobeStandardEncoding
+FullName Helvetica.Condensed Light Oblique
+FamilyName Helvetica
+Weight LightCondensed
+ItalicAngle -12.0
+IsFixedPitch false
+UnderlinePosition -90
+UnderlineThickness 58
+Version 001.001
+Notice Helvetica is a trademark of Allied Corporation.
+FontBBox -170 -207 1069 944
+CapHeight 750
+XHeight 552
+Descender -190
+Ascender 750
+StartCharMetrics 228
+C 32 ; WX 222 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 222 ; N exclam ; B 80 13 304 750 ;
+C 34 ; WX 309 ; N quotedbl ; B 184 524 395 750 ;
+C 35 ; WX 444 ; N numbersign ; B 49 0 558 744 ;
+C 36 ; WX 444 ; N dollar ; B 59 -96 516 778 ;
+C 37 ; WX 778 ; N percent ; B 180 -15 752 741 ;
+C 38 ; WX 611 ; N ampersand ; B 98 -18 613 768 ;
+C 39 ; WX 160 ; N quoteright ; B 161 526 277 750 ;
+C 40 ; WX 278 ; N parenleft ; B 94 -191 407 768 ;
+C 41 ; WX 278 ; N parenright ; B -7 -191 307 768 ;
+C 42 ; WX 389 ; N asterisk ; B 182 462 475 744 ;
+C 43 ; WX 444 ; N plus ; B 68 0 482 490 ;
+C 44 ; WX 222 ; N comma ; B 48 -136 165 88 ;
+C 45 ; WX 333 ; N hyphen ; B 92 269 364 327 ;
+C 46 ; WX 222 ; N period ; B 77 0 165 88 ;
+C 47 ; WX 278 ; N slash ; B -30 -94 448 750 ;
+C 48 ; WX 444 ; N zero ; B 85 -14 515 744 ;
+C 49 ; WX 444 ; N one ; B 179 0 442 744 ;
+C 50 ; WX 444 ; N two ; B 34 0 518 744 ;
+C 51 ; WX 444 ; N three ; B 63 -14 505 744 ;
+C 52 ; WX 444 ; N four ; B 71 0 504 744 ;
+C 53 ; WX 444 ; N five ; B 60 -14 523 730 ;
+C 54 ; WX 444 ; N six ; B 85 -14 521 744 ;
+C 55 ; WX 444 ; N seven ; B 112 0 567 730 ;
+C 56 ; WX 444 ; N eight ; B 72 -14 508 744 ;
+C 57 ; WX 444 ; N nine ; B 81 -14 514 744 ;
+C 58 ; WX 222 ; N colon ; B 77 0 257 521 ;
+C 59 ; WX 222 ; N semicolon ; B 48 -136 257 521 ;
+C 60 ; WX 444 ; N less ; B 66 -12 532 501 ;
+C 61 ; WX 444 ; N equal ; B 49 131 501 360 ;
+C 62 ; WX 444 ; N greater ; B 17 -11 483 502 ;
+C 63 ; WX 389 ; N question ; B 134 0 488 750 ;
+C 64 ; WX 800 ; N at ; B 97 -18 875 768 ;
+C 65 ; WX 500 ; N A ; B 12 0 489 750 ;
+C 66 ; WX 500 ; N B ; B 62 0 559 750 ;
+C 67 ; WX 556 ; N C ; B 116 -18 606 768 ;
+C 68 ; WX 556 ; N D ; B 72 0 602 750 ;
+C 69 ; WX 444 ; N E ; B 67 0 566 750 ;
+C 70 ; WX 444 ; N F ; B 69 0 573 750 ;
+C 71 ; WX 556 ; N G ; B 99 -18 594 768 ;
+C 72 ; WX 556 ; N H ; B 68 0 647 750 ;
+C 73 ; WX 222 ; N I ; B 79 0 303 750 ;
+C 74 ; WX 389 ; N J ; B 41 -18 475 750 ;
+C 75 ; WX 500 ; N K ; B 67 0 639 750 ;
+C 76 ; WX 444 ; N L ; B 74 0 429 750 ;
+C 77 ; WX 722 ; N M ; B 73 0 809 750 ;
+C 78 ; WX 556 ; N N ; B 66 0 649 750 ;
+C 79 ; WX 556 ; N O ; B 111 -18 606 768 ;
+C 80 ; WX 500 ; N P ; B 76 0 587 750 ;
+C 81 ; WX 556 ; N Q ; B 111 -42 606 768 ;
+C 82 ; WX 500 ; N R ; B 63 0 564 750 ;
+C 83 ; WX 500 ; N S ; B 76 -18 569 768 ;
+C 84 ; WX 444 ; N T ; B 167 0 584 750 ;
+C 85 ; WX 556 ; N U ; B 107 -18 642 750 ;
+C 86 ; WX 500 ; N V ; B 173 0 646 750 ;
+C 87 ; WX 722 ; N W ; B 162 0 864 750 ;
+C 88 ; WX 500 ; N X ; B 18 0 633 750 ;
+C 89 ; WX 500 ; N Y ; B 178 0 641 750 ;
+C 90 ; WX 444 ; N Z ; B 34 0 570 750 ;
+C 91 ; WX 278 ; N bracketleft ; B 52 -104 390 768 ;
+C 92 ; WX 222 ; N backslash ; B 119 0 262 750 ;
+C 93 ; WX 278 ; N bracketright ; B 27 -104 367 768 ;
+C 94 ; WX 444 ; N asciicircum ; B 138 340 449 750 ;
+C 95 ; WX 500 ; N underscore ; B -25 -119 487 -61 ;
+C 96 ; WX 160 ; N quoteleft ; B 154 526 270 750 ;
+C 97 ; WX 389 ; N a ; B 49 -14 425 566 ;
+C 98 ; WX 444 ; N b ; B 64 -14 478 750 ;
+C 99 ; WX 389 ; N c ; B 75 -14 441 566 ;
+C 100 ; WX 444 ; N d ; B 84 -14 541 750 ;
+C 101 ; WX 389 ; N e ; B 74 -14 434 566 ;
+C 102 ; WX 222 ; N f ; B 77 0 365 750 ; L i fi ; L l fl ;
+C 103 ; WX 444 ; N g ; B 42 -189 499 566 ;
+C 104 ; WX 444 ; N h ; B 63 0 476 750 ;
+C 105 ; WX 222 ; N i ; B 82 0 304 750 ;
+C 106 ; WX 222 ; N j ; B -19 -189 309 750 ;
+C 107 ; WX 389 ; N k ; B 62 0 489 750 ;
+C 108 ; WX 222 ; N l ; B 82 0 299 750 ;
+C 109 ; WX 667 ; N m ; B 58 0 705 566 ;
+C 110 ; WX 444 ; N n ; B 65 0 476 566 ;
+C 111 ; WX 444 ; N o ; B 88 -14 472 566 ;
+C 112 ; WX 444 ; N p ; B 18 -190 473 566 ;
+C 113 ; WX 444 ; N q ; B 84 -189 499 566 ;
+C 114 ; WX 278 ; N r ; B 69 0 377 566 ;
+C 115 ; WX 389 ; N s ; B 58 -14 428 566 ;
+C 116 ; WX 222 ; N t ; B 80 -10 318 714 ;
+C 117 ; WX 444 ; N u ; B 83 -14 496 552 ;
+C 118 ; WX 389 ; N v ; B 134 0 490 552 ;
+C 119 ; WX 556 ; N w ; B 128 0 662 552 ;
+C 120 ; WX 389 ; N x ; B 13 0 484 552 ;
+C 121 ; WX 389 ; N y ; B -12 -191 490 552 ;
+C 122 ; WX 333 ; N z ; B 18 0 427 552 ;
+C 123 ; WX 351 ; N braceleft ; B 119 -93 440 768 ;
+C 124 ; WX 222 ; N bar ; B 85 0 296 750 ;
+C 125 ; WX 351 ; N braceright ; B 54 -93 375 768 ;
+C 126 ; WX 444 ; N asciitilde ; B 66 179 482 309 ;
+C 161 ; WX 222 ; N exclamdown ; B 38 -185 263 552 ;
+C 162 ; WX 444 ; N cent ; B 87 -143 479 671 ;
+C 163 ; WX 444 ; N sterling ; B 28 -21 528 737 ;
+C 164 ; WX 167 ; N fraction ; B -170 0 490 744 ;
+C 165 ; WX 444 ; N yen ; B 80 0 611 738 ;
+C 166 ; WX 444 ; N florin ; B -26 -189 590 744 ;
+C 167 ; WX 444 ; N section ; B 65 -147 511 768 ;
+C 168 ; WX 444 ; N currency ; B 23 50 540 503 ;
+C 169 ; WX 198 ; N quotesingle ; B 184 524 284 750 ;
+C 170 ; WX 333 ; N quotedblleft ; B 197 526 443 750 ;
+C 171 ; WX 500 ; N guillemotleft ; B 133 130 499 412 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 140 130 319 412 ;
+C 173 ; WX 333 ; N guilsinglright ; B 130 130 308 412 ;
+C 174 ; WX 444 ; N fi ; B 84 0 535 750 ;
+C 175 ; WX 444 ; N fl ; B 84 0 531 750 ;
+C 177 ; WX 500 ; N endash ; B 58 273 569 324 ;
+C 178 ; WX 444 ; N dagger ; B 136 -117 527 768 ;
+C 179 ; WX 444 ; N daggerdbl ; B 54 -117 529 768 ;
+C 180 ; WX 222 ; N periodcentered ; B 120 201 207 289 ;
+C 182 ; WX 564 ; N paragraph ; B 167 -116 602 750 ;
+C 183 ; WX 606 ; N bullet ; B 192 189 574 563 ;
+C 184 ; WX 222 ; N quotesinglbase ; B 48 -136 165 88 ;
+C 185 ; WX 330 ; N quotedblbase ; B 37 -136 284 88 ;
+C 186 ; WX 333 ; N quotedblright ; B 161 526 407 750 ;
+C 187 ; WX 500 ; N guillemotright ; B 117 130 482 412 ;
+C 188 ; WX 1000 ; N ellipsis ; B 133 0 887 88 ;
+C 189 ; WX 1000 ; N perthousand ; B 141 -15 1012 741 ;
+C 191 ; WX 389 ; N questiondown ; B 9 -202 364 552 ;
+C 193 ; WX 333 ; N grave ; B 198 605 358 744 ;
+C 194 ; WX 333 ; N acute ; B 233 605 451 744 ;
+C 195 ; WX 333 ; N circumflex ; B 149 605 443 744 ;
+C 196 ; WX 333 ; N tilde ; B 141 618 477 720 ;
+C 197 ; WX 333 ; N macron ; B 156 645 462 690 ;
+C 198 ; WX 333 ; N breve ; B 179 612 468 738 ;
+C 199 ; WX 333 ; N dotaccent ; B 266 617 352 719 ;
+C 200 ; WX 333 ; N dieresis ; B 187 617 431 719 ;
+C 202 ; WX 333 ; N ring ; B 213 596 416 796 ;
+C 203 ; WX 333 ; N cedilla ; B 17 -207 234 0 ;
+C 205 ; WX 333 ; N hungarumlaut ; B 193 605 540 744 ;
+C 206 ; WX 333 ; N ogonek ; B -23 -191 184 13 ;
+C 207 ; WX 333 ; N caron ; B 178 606 472 745 ;
+C 208 ; WX 1000 ; N emdash ; B 58 273 1069 324 ;
+C 225 ; WX 722 ; N AE ; B 6 0 844 750 ;
+C 227 ; WX 266 ; N ordfeminine ; B 113 334 367 768 ;
+C 232 ; WX 444 ; N Lslash ; B 49 0 429 750 ;
+C 233 ; WX 556 ; N Oslash ; B 26 -29 688 770 ;
+C 234 ; WX 778 ; N OE ; B 109 -18 893 768 ;
+C 235 ; WX 266 ; N ordmasculine ; B 103 333 382 768 ;
+C 241 ; WX 611 ; N ae ; B 46 -14 665 566 ;
+C 245 ; WX 200 ; N dotlessi ; B 71 0 246 552 ;
+C 248 ; WX 222 ; N lslash ; B 77 0 324 750 ;
+C 249 ; WX 444 ; N oslash ; B -7 -42 547 578 ;
+C 250 ; WX 667 ; N oe ; B 75 -14 708 566 ;
+C 251 ; WX 444 ; N germandbls ; B 66 -14 505 768 ;
+C -1 ; WX 500 ; N Aacute ; B 12 0 577 942 ;
+C -1 ; WX 500 ; N Acircumflex ; B 12 0 559 942 ;
+C -1 ; WX 500 ; N Adieresis ; B 12 0 557 917 ;
+C -1 ; WX 500 ; N Agrave ; B 12 0 489 942 ;
+C -1 ; WX 500 ; N Aring ; B 12 0 531 944 ;
+C -1 ; WX 500 ; N Atilde ; B 12 0 603 918 ;
+C -1 ; WX 556 ; N Ccedilla ; B 116 -207 606 768 ;
+C -1 ; WX 444 ; N Eacute ; B 67 0 566 942 ;
+C -1 ; WX 444 ; N Ecircumflex ; B 67 0 566 942 ;
+C -1 ; WX 444 ; N Edieresis ; B 67 0 566 917 ;
+C -1 ; WX 444 ; N Egrave ; B 67 0 566 942 ;
+C -1 ; WX 556 ; N Eth ; B 54 0 602 750 ;
+C -1 ; WX 222 ; N Iacute ; B 79 0 438 942 ;
+C -1 ; WX 222 ; N Icircumflex ; B 79 0 430 942 ;
+C -1 ; WX 222 ; N Idieresis ; B 79 0 418 917 ;
+C -1 ; WX 222 ; N Igrave ; B 79 0 345 942 ;
+C -1 ; WX 556 ; N Ntilde ; B 66 0 649 918 ;
+C -1 ; WX 556 ; N Oacute ; B 111 -18 606 942 ;
+C -1 ; WX 556 ; N Ocircumflex ; B 111 -18 606 942 ;
+C -1 ; WX 556 ; N Odieresis ; B 111 -18 606 917 ;
+C -1 ; WX 556 ; N Ograve ; B 111 -18 606 942 ;
+C -1 ; WX 556 ; N Otilde ; B 111 -18 631 918 ;
+C -1 ; WX 500 ; N Scaron ; B 76 -18 594 923 ;
+C -1 ; WX 500 ; N Thorn ; B 76 0 551 750 ;
+C -1 ; WX 556 ; N Uacute ; B 107 -18 642 942 ;
+C -1 ; WX 556 ; N Ucircumflex ; B 107 -18 642 942 ;
+C -1 ; WX 556 ; N Udieresis ; B 107 -18 642 917 ;
+C -1 ; WX 556 ; N Ugrave ; B 107 -18 642 942 ;
+C -1 ; WX 500 ; N Yacute ; B 178 0 641 942 ;
+C -1 ; WX 500 ; N Ydieresis ; B 178 0 641 917 ;
+C -1 ; WX 444 ; N Zcaron ; B 34 0 570 923 ;
+C -1 ; WX 389 ; N aacute ; B 49 -14 479 744 ;
+C -1 ; WX 389 ; N acircumflex ; B 49 -14 471 744 ;
+C -1 ; WX 389 ; N adieresis ; B 49 -14 459 719 ;
+C -1 ; WX 389 ; N agrave ; B 49 -14 425 744 ;
+C -1 ; WX 389 ; N aring ; B 49 -14 444 796 ;
+C -1 ; WX 389 ; N atilde ; B 49 -14 505 720 ;
+C -1 ; WX 222 ; N brokenbar ; B 85 0 296 750 ;
+C -1 ; WX 389 ; N ccedilla ; B 45 -207 441 566 ;
+C -1 ; WX 800 ; N copyright ; B 88 -18 872 768 ;
+C -1 ; WX 400 ; N degree ; B 173 444 480 744 ;
+C -1 ; WX 444 ; N divide ; B 68 0 482 491 ;
+C -1 ; WX 389 ; N eacute ; B 74 -14 479 744 ;
+C -1 ; WX 389 ; N ecircumflex ; B 74 -14 471 744 ;
+C -1 ; WX 389 ; N edieresis ; B 74 -14 459 719 ;
+C -1 ; WX 389 ; N egrave ; B 74 -14 434 744 ;
+C -1 ; WX 444 ; N eth ; B 87 -14 504 765 ;
+C -1 ; WX 200 ; N iacute ; B 71 0 385 744 ;
+C -1 ; WX 200 ; N icircumflex ; B 71 0 367 744 ;
+C -1 ; WX 200 ; N idieresis ; B 71 0 365 719 ;
+C -1 ; WX 200 ; N igrave ; B 71 0 292 744 ;
+C -1 ; WX 444 ; N logicalnot ; B 87 93 501 360 ;
+C -1 ; WX 444 ; N minus ; B 68 220 482 271 ;
+C -1 ; WX 444 ; N mu ; B 20 -189 496 552 ;
+C -1 ; WX 444 ; N multiply ; B 37 38 510 441 ;
+C -1 ; WX 444 ; N ntilde ; B 65 0 533 720 ;
+C -1 ; WX 444 ; N oacute ; B 88 -14 507 744 ;
+C -1 ; WX 444 ; N ocircumflex ; B 88 -14 499 744 ;
+C -1 ; WX 444 ; N odieresis ; B 88 -14 487 719 ;
+C -1 ; WX 444 ; N ograve ; B 88 -14 472 744 ;
+C -1 ; WX 666 ; N onehalf ; B 75 0 737 744 ;
+C -1 ; WX 666 ; N onequarter ; B 92 0 752 744 ;
+C -1 ; WX 266 ; N onesuperior ; B 192 298 368 744 ;
+C -1 ; WX 444 ; N otilde ; B 88 -14 533 720 ;
+C -1 ; WX 444 ; N plusminus ; B 21 0 492 490 ;
+C -1 ; WX 800 ; N registered ; B 88 -18 872 768 ;
+C -1 ; WX 389 ; N scaron ; B 58 -14 486 725 ;
+C -1 ; WX 444 ; N thorn ; B 18 -190 473 750 ;
+C -1 ; WX 666 ; N threequarters ; B 99 0 784 744 ;
+C -1 ; WX 266 ; N threesuperior ; B 95 290 378 744 ;
+C -1 ; WX 722 ; N trademark ; B 206 329 825 750 ;
+C -1 ; WX 266 ; N twosuperior ; B 79 298 387 744 ;
+C -1 ; WX 444 ; N uacute ; B 83 -14 507 744 ;
+C -1 ; WX 444 ; N ucircumflex ; B 83 -14 497 734 ;
+C -1 ; WX 444 ; N udieresis ; B 83 -14 496 719 ;
+C -1 ; WX 444 ; N ugrave ; B 83 -14 496 744 ;
+C -1 ; WX 389 ; N yacute ; B -12 -191 490 744 ;
+C -1 ; WX 389 ; N ydieresis ; B -12 -191 490 719 ;
+C -1 ; WX 333 ; N zcaron ; B 18 0 468 725 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 115
+
+KPX A y -18
+KPX A w -18
+KPX A v -18
+KPX A quoteright -55
+KPX A Y -55
+KPX A W -37
+KPX A V -37
+KPX A T -55
+
+KPX F period -111
+KPX F comma -111
+KPX F A -37
+
+KPX L y -37
+KPX L quoteright -92
+KPX L Y -92
+KPX L W -74
+KPX L V -74
+KPX L T -74
+
+KPX P period -129
+KPX P comma -129
+KPX P A -37
+
+KPX R y 0
+KPX R Y -18
+KPX R W 0
+KPX R V 0
+KPX R T -18
+
+KPX T y -55
+KPX T w -74
+KPX T u -74
+KPX T semicolon -74
+KPX T s -74
+KPX T r -74
+KPX T period -92
+KPX T o -74
+KPX T i -18
+KPX T hyphen -55
+KPX T e -74
+KPX T comma -92
+KPX T colon -74
+KPX T c -74
+KPX T a -74
+KPX T A -55
+
+KPX V y 0
+KPX V u -18
+KPX V semicolon -18
+KPX V r -18
+KPX V period -92
+KPX V o -18
+KPX V i 0
+KPX V hyphen -18
+KPX V e -18
+KPX V comma -92
+KPX V colon -18
+KPX V a -18
+KPX V A -37
+
+KPX W y 0
+KPX W u 0
+KPX W semicolon 0
+KPX W r 0
+KPX W period -74
+KPX W o -18
+KPX W i 0
+KPX W hyphen -18
+KPX W e -18
+KPX W comma -74
+KPX W colon 0
+KPX W a -18
+KPX W A -18
+
+KPX Y v -18
+KPX Y u -37
+KPX Y semicolon -37
+KPX Y q -55
+KPX Y period -111
+KPX Y p -37
+KPX Y o -55
+KPX Y i -18
+KPX Y hyphen -74
+KPX Y e -55
+KPX Y comma -111
+KPX Y colon -37
+KPX Y a -55
+KPX Y A -55
+
+KPX f quoteright 28
+KPX f f 0
+
+KPX quoteleft quoteleft -18
+
+KPX quoteright t 0
+KPX quoteright s -55
+KPX quoteright quoteright -18
+
+KPX r z 0
+KPX r y 18
+KPX r x 0
+KPX r w 18
+KPX r v 18
+KPX r u 0
+KPX r t 0
+KPX r r 0
+KPX r quoteright 0
+KPX r q 0
+KPX r period -74
+KPX r o 0
+KPX r n 0
+KPX r m 0
+KPX r hyphen -37
+KPX r h 0
+KPX r g 0
+KPX r f 0
+KPX r e 0
+KPX r d 0
+KPX r comma -74
+KPX r c 0
+
+KPX v period -55
+KPX v comma -55
+
+KPX w period -37
+KPX w comma -37
+
+KPX y period -55
+KPX y comma -55
+EndKernPairs
+EndKernData
+StartComposites 58
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 55 178 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 0 -20 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 83 178 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 18 -20 ;
+CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 111 0 ;
+CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 28 0 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 83 198 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 28 0 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 83 198 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 28 0 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 111 198 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 111 198 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 111 198 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 111 198 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 55 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 55 -10 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 55 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 55 0 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute -55 198 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex -55 198 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis -55 198 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave -55 198 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -66 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -76 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -66 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -66 0 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 55 198 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 55 198 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 55 198 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 55 198 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 28 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 28 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 28 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 28 0 ;
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 83 198 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 73 198 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 83 198 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 83 198 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 28 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 28 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 28 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 28 0 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 111 198 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 111 198 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 111 198 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 111 198 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 55 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 55 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 55 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 55 0 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 83 198 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 28 0 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 111 198 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 55 0 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 111 198 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 55 0 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 83 148 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 28 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/He-CnLiO+ b/font/font/He-CnLiO+
new file mode 100644
index 0000000..ffd0483
--- /dev/null
+++ b/font/font/He-CnLiO+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 556 ; N Ccaron ; B 116 -18 677 958 ;
+C -1 ; WX 389 ; N ccaron ; B 75 -14 518 745 ;
+C -1 ; WX 556 ; N Dcaron ; B 72 0 628 958 ;
+C -1 ; WX 525 ; N dcaron ; B 84 -14 669 825 ;
+C -1 ; WX 444 ; N Ecaron ; B 67 0 572 958 ;
+C -1 ; WX 389 ; N ecaron ; B 74 -14 500 745 ;
+C -1 ; WX 444 ; N Lcaron ; B 74 0 431 825 ;
+C -1 ; WX 444 ; N Lacute ; B 74 0 551 958 ;
+C -1 ; WX 303 ; N lcaron ; B 82 0 427 825 ;
+C -1 ; WX 222 ; N lacute ; B 82 0 463 958 ;
+C -1 ; WX 556 ; N Ncaron ; B 66 0 649 958 ;
+C -1 ; WX 444 ; N ncaron ; B 65 0 527 745 ;
+C -1 ; WX 500 ; N Rcaron ; B 63 0 600 958 ;
+C -1 ; WX 500 ; N Racute ; B 63 0 620 958 ;
+C -1 ; WX 278 ; N rcaron ; B 69 0 445 745 ;
+C -1 ; WX 278 ; N racute ; B 69 0 446 744 ;
+C -1 ; WX 444 ; N Tcaron ; B 167 0 584 958 ;
+C -1 ; WX 303 ; N tcaron ; B 80 -10 446 750 ;
+C -1 ; WX 556 ; N Uring ; B 107 -18 642 958 ;
+C -1 ; WX 444 ; N uring ; B 83 -14 496 796 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 205 213 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 46 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 156 213 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 392 75 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 100 213 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 28 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 154 75 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 100 214 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 150 75 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 12 214 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 156 213 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 55 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 128 213 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 169 214 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron -27 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute -5 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 100 213 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 169 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 145 162 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 55 0 ;
+EndBuildComposites
diff --git a/font/font/He-CnO b/font/font/He-CnO
new file mode 100644
index 0000000..b6d0218
--- /dev/null
+++ b/font/font/He-CnO
@@ -0,0 +1,447 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989 Adobe Systems Incorporated. All rights reserved.
+Comment Creation Date: Tue Dec 5 16:29:02 1989
+Comment UniqueID 26319
+Comment VMusage 6239 39252
+FontName Helvetica-Condensed-Oblique
+FullName Helvetica Condensed Oblique
+FamilyName Helvetica
+Weight MediumCondensed
+ItalicAngle -12
+IsFixedPitch false
+FontBBox -174 -224 1118 990
+UnderlinePosition -90
+UnderlineThickness 58
+Version 001.002
+Notice Copyright (c) 1985, 1987, 1989 Adobe Systems Incorporated. All rights reserved.Helvetica is a trademark of Linotype AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 750
+XHeight 556
+Ascender 750
+Descender -188
+StartCharMetrics 228
+C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 333 ; N exclam ; B 121 0 371 750 ;
+C 34 ; WX 250 ; N quotedbl ; B 153 513 364 739 ;
+C 35 ; WX 500 ; N numbersign ; B 33 0 621 750 ;
+C 36 ; WX 500 ; N dollar ; B 69 -116 569 815 ;
+C 37 ; WX 833 ; N percent ; B 164 -15 803 750 ;
+C 38 ; WX 667 ; N ampersand ; B 111 -18 648 750 ;
+C 39 ; WX 222 ; N quoteright ; B 171 504 317 750 ;
+C 40 ; WX 333 ; N parenleft ; B 115 -215 443 750 ;
+C 41 ; WX 333 ; N parenright ; B 3 -215 331 750 ;
+C 42 ; WX 500 ; N asterisk ; B 229 455 537 750 ;
+C 43 ; WX 500 ; N plus ; B 91 0 518 505 ;
+C 44 ; WX 250 ; N comma ; B 49 -146 192 100 ;
+C 45 ; WX 333 ; N hyphen ; B 103 275 364 358 ;
+C 46 ; WX 250 ; N period ; B 80 0 192 100 ;
+C 47 ; WX 278 ; N slash ; B -19 -27 450 750 ;
+C 48 ; WX 500 ; N zero ; B 98 -15 563 750 ;
+C 49 ; WX 500 ; N one ; B 190 0 476 750 ;
+C 50 ; WX 500 ; N two ; B 44 0 562 750 ;
+C 51 ; WX 500 ; N three ; B 73 -15 552 750 ;
+C 52 ; WX 500 ; N four ; B 68 0 543 750 ;
+C 53 ; WX 500 ; N five ; B 75 -15 575 735 ;
+C 54 ; WX 500 ; N six ; B 91 -15 566 750 ;
+C 55 ; WX 500 ; N seven ; B 116 0 612 735 ;
+C 56 ; WX 500 ; N eight ; B 83 -15 559 750 ;
+C 57 ; WX 500 ; N nine ; B 91 -15 566 750 ;
+C 58 ; WX 250 ; N colon ; B 80 0 287 547 ;
+C 59 ; WX 250 ; N semicolon ; B 49 -146 287 547 ;
+C 60 ; WX 500 ; N less ; B 89 -10 569 518 ;
+C 61 ; WX 500 ; N equal ; B 70 124 539 384 ;
+C 62 ; WX 500 ; N greater ; B 40 -10 520 518 ;
+C 63 ; WX 500 ; N question ; B 169 0 586 750 ;
+C 64 ; WX 800 ; N at ; B 106 -15 863 750 ;
+C 65 ; WX 556 ; N A ; B 11 0 546 750 ;
+C 66 ; WX 556 ; N B ; B 80 0 610 750 ;
+C 67 ; WX 556 ; N C ; B 106 -18 624 765 ;
+C 68 ; WX 611 ; N D ; B 82 0 653 750 ;
+C 69 ; WX 500 ; N E ; B 74 0 608 750 ;
+C 70 ; WX 444 ; N F ; B 74 0 585 750 ;
+C 71 ; WX 611 ; N G ; B 109 -18 646 765 ;
+C 72 ; WX 611 ; N H ; B 79 0 691 750 ;
+C 73 ; WX 278 ; N I ; B 98 0 340 750 ;
+C 74 ; WX 444 ; N J ; B 52 -15 527 750 ;
+C 75 ; WX 556 ; N K ; B 79 0 698 750 ;
+C 76 ; WX 500 ; N L ; B 83 0 488 750 ;
+C 77 ; WX 778 ; N M ; B 76 0 861 750 ;
+C 78 ; WX 611 ; N N ; B 77 0 693 750 ;
+C 79 ; WX 611 ; N O ; B 116 -18 658 765 ;
+C 80 ; WX 556 ; N P ; B 86 0 641 750 ;
+C 81 ; WX 611 ; N Q ; B 116 -34 659 765 ;
+C 82 ; WX 611 ; N R ; B 86 0 655 750 ;
+C 83 ; WX 556 ; N S ; B 86 -18 611 765 ;
+C 84 ; WX 500 ; N T ; B 158 0 645 750 ;
+C 85 ; WX 611 ; N U ; B 114 -18 690 750 ;
+C 86 ; WX 556 ; N V ; B 170 0 704 750 ;
+C 87 ; WX 833 ; N W ; B 176 0 975 750 ;
+C 88 ; WX 556 ; N X ; B 17 0 692 750 ;
+C 89 ; WX 556 ; N Y ; B 170 0 705 750 ;
+C 90 ; WX 500 ; N Z ; B 28 0 627 750 ;
+C 91 ; WX 333 ; N bracketleft ; B 56 -209 434 750 ;
+C 92 ; WX 250 ; N backslash ; B 128 0 281 750 ;
+C 93 ; WX 333 ; N bracketright ; B 14 -209 392 750 ;
+C 94 ; WX 500 ; N asciicircum ; B 141 333 502 750 ;
+C 95 ; WX 500 ; N underscore ; B -25 -119 487 -61 ;
+C 96 ; WX 222 ; N quoteleft ; B 175 521 321 767 ;
+C 97 ; WX 444 ; N a ; B 55 -15 465 571 ;
+C 98 ; WX 500 ; N b ; B 75 -15 525 750 ;
+C 99 ; WX 444 ; N c ; B 85 -15 488 571 ;
+C 100 ; WX 500 ; N d ; B 88 -15 583 750 ;
+C 101 ; WX 444 ; N e ; B 86 -15 476 571 ;
+C 102 ; WX 278 ; N f ; B 93 0 418 752 ; L i fi ; L l fl ;
+C 103 ; WX 500 ; N g ; B 53 -189 544 571 ;
+C 104 ; WX 500 ; N h ; B 73 0 524 750 ;
+C 105 ; WX 222 ; N i ; B 72 0 310 750 ;
+C 106 ; WX 222 ; N j ; B -27 -190 313 750 ;
+C 107 ; WX 444 ; N k ; B 69 0 552 750 ;
+C 108 ; WX 222 ; N l ; B 72 0 310 750 ;
+C 109 ; WX 778 ; N m ; B 76 0 799 571 ;
+C 110 ; WX 500 ; N n ; B 73 0 524 571 ;
+C 111 ; WX 500 ; N o ; B 96 -15 524 571 ;
+C 112 ; WX 500 ; N p ; B 32 -188 524 571 ;
+C 113 ; WX 500 ; N q ; B 100 -184 544 571 ;
+C 114 ; WX 333 ; N r ; B 81 0 441 563 ;
+C 115 ; WX 444 ; N s ; B 68 -15 473 571 ;
+C 116 ; WX 278 ; N t ; B 101 0 375 707 ;
+C 117 ; WX 500 ; N u ; B 99 -15 542 556 ;
+C 118 ; WX 444 ; N v ; B 131 0 549 556 ;
+C 119 ; WX 667 ; N w ; B 137 0 767 556 ;
+C 120 ; WX 444 ; N x ; B 9 0 548 556 ;
+C 121 ; WX 444 ; N y ; B -13 -190 543 556 ;
+C 122 ; WX 389 ; N z ; B 24 0 482 556 ;
+C 123 ; WX 274 ; N braceleft ; B 77 -95 425 750 ;
+C 124 ; WX 250 ; N bar ; B 93 0 316 750 ;
+C 125 ; WX 274 ; N braceright ; B -12 -95 337 750 ;
+C 126 ; WX 500 ; N asciitilde ; B 89 166 520 345 ;
+C 161 ; WX 333 ; N exclamdown ; B 83 -179 333 571 ;
+C 162 ; WX 500 ; N cent ; B 94 -137 499 667 ;
+C 163 ; WX 500 ; N sterling ; B 40 -15 589 750 ;
+C 164 ; WX 167 ; N fraction ; B -174 0 500 750 ;
+C 165 ; WX 500 ; N yen ; B 88 0 677 750 ;
+C 166 ; WX 500 ; N florin ; B -28 -192 645 750 ;
+C 167 ; WX 500 ; N section ; B 51 -208 552 750 ;
+C 168 ; WX 500 ; N currency ; B 51 50 576 553 ;
+C 169 ; WX 250 ; N quotesingle ; B 208 513 308 739 ;
+C 170 ; WX 389 ; N quotedblleft ; B 173 521 490 767 ;
+C 171 ; WX 500 ; N guillemotleft ; B 145 125 520 495 ;
+C 172 ; WX 278 ; N guilsinglleft ; B 124 125 320 495 ;
+C 173 ; WX 278 ; N guilsinglright ; B 90 125 286 495 ;
+C 174 ; WX 500 ; N fi ; B 93 0 584 752 ;
+C 175 ; WX 500 ; N fl ; B 93 0 584 752 ;
+C 177 ; WX 500 ; N endash ; B 58 275 573 345 ;
+C 178 ; WX 500 ; N dagger ; B 137 -176 573 750 ;
+C 179 ; WX 500 ; N daggerdbl ; B 50 -176 572 750 ;
+C 180 ; WX 250 ; N periodcentered ; B 123 204 236 304 ;
+C 182 ; WX 440 ; N paragraph ; B 113 -116 550 750 ;
+C 183 ; WX 333 ; N bullet ; B 91 222 401 529 ;
+C 184 ; WX 222 ; N quotesinglbase ; B 33 -146 179 100 ;
+C 185 ; WX 389 ; N quotedblbase ; B 31 -146 348 100 ;
+C 186 ; WX 389 ; N quotedblright ; B 169 504 486 750 ;
+C 187 ; WX 500 ; N guillemotright ; B 112 125 487 495 ;
+C 188 ; WX 1000 ; N ellipsis ; B 121 0 899 100 ;
+C 189 ; WX 1111 ; N perthousand ; B 157 -16 1118 750 ;
+C 191 ; WX 500 ; N questiondown ; B 33 -190 450 559 ;
+C 193 ; WX 333 ; N grave ; B 198 624 366 765 ;
+C 194 ; WX 333 ; N acute ; B 233 624 461 765 ;
+C 195 ; WX 333 ; N circumflex ; B 154 624 446 765 ;
+C 196 ; WX 333 ; N tilde ; B 132 633 496 749 ;
+C 197 ; WX 333 ; N macron ; B 150 657 475 715 ;
+C 198 ; WX 333 ; N breve ; B 172 629 484 765 ;
+C 199 ; WX 250 ; N dotaccent ; B 224 650 324 750 ;
+C 200 ; WX 333 ; N dieresis ; B 190 650 440 750 ;
+C 202 ; WX 250 ; N ring ; B 169 593 377 796 ;
+C 203 ; WX 333 ; N cedilla ; B 23 -224 255 0 ;
+C 205 ; WX 333 ; N hungarumlaut ; B 194 624 603 765 ;
+C 206 ; WX 333 ; N ogonek ; B -23 -191 188 13 ;
+C 207 ; WX 333 ; N caron ; B 184 624 476 765 ;
+C 208 ; WX 1000 ; N emdash ; B 58 275 1073 345 ;
+C 225 ; WX 833 ; N AE ; B 0 0 944 750 ;
+C 227 ; WX 300 ; N ordfeminine ; B 90 305 392 765 ;
+C 232 ; WX 500 ; N Lslash ; B 39 0 488 750 ;
+C 233 ; WX 611 ; N Oslash ; B 25 -43 738 796 ;
+C 234 ; WX 833 ; N OE ; B 113 -18 946 765 ;
+C 235 ; WX 300 ; N ordmasculine ; B 85 305 413 765 ;
+C 241 ; WX 667 ; N ae ; B 50 -15 711 571 ;
+C 245 ; WX 222 ; N dotlessi ; B 72 0 269 556 ;
+C 248 ; WX 222 ; N lslash ; B 59 0 347 750 ;
+C 249 ; WX 500 ; N oslash ; B 19 -46 591 582 ;
+C 250 ; WX 722 ; N oe ; B 81 -15 758 571 ;
+C 251 ; WX 500 ; N germandbls ; B 71 -5 548 765 ;
+C -1 ; WX 500 ; N Zcaron ; B 28 0 627 959 ;
+C -1 ; WX 444 ; N ccedilla ; B 79 -224 488 571 ;
+C -1 ; WX 444 ; N ydieresis ; B -13 -190 543 750 ;
+C -1 ; WX 444 ; N atilde ; B 55 -15 552 749 ;
+C -1 ; WX 222 ; N icircumflex ; B 72 0 391 765 ;
+C -1 ; WX 300 ; N threesuperior ; B 102 291 409 750 ;
+C -1 ; WX 444 ; N ecircumflex ; B 86 -15 502 765 ;
+C -1 ; WX 500 ; N thorn ; B 32 -188 524 750 ;
+C -1 ; WX 444 ; N egrave ; B 86 -15 476 765 ;
+C -1 ; WX 300 ; N twosuperior ; B 83 300 413 750 ;
+C -1 ; WX 444 ; N eacute ; B 86 -15 517 765 ;
+C -1 ; WX 500 ; N otilde ; B 96 -15 580 749 ;
+C -1 ; WX 556 ; N Aacute ; B 11 0 614 959 ;
+C -1 ; WX 500 ; N ocircumflex ; B 96 -15 530 765 ;
+C -1 ; WX 444 ; N yacute ; B -13 -190 543 765 ;
+C -1 ; WX 500 ; N udieresis ; B 99 -15 542 750 ;
+C -1 ; WX 750 ; N threequarters ; B 106 0 831 750 ;
+C -1 ; WX 444 ; N acircumflex ; B 55 -15 502 765 ;
+C -1 ; WX 611 ; N Eth ; B 67 0 653 750 ;
+C -1 ; WX 444 ; N edieresis ; B 86 -15 496 750 ;
+C -1 ; WX 500 ; N ugrave ; B 99 -15 542 765 ;
+C -1 ; WX 750 ; N trademark ; B 147 329 878 750 ;
+C -1 ; WX 500 ; N ograve ; B 96 -15 524 765 ;
+C -1 ; WX 444 ; N scaron ; B 68 -15 532 765 ;
+C -1 ; WX 278 ; N Idieresis ; B 98 0 455 944 ;
+C -1 ; WX 500 ; N uacute ; B 99 -15 545 765 ;
+C -1 ; WX 444 ; N agrave ; B 55 -15 465 765 ;
+C -1 ; WX 500 ; N ntilde ; B 73 0 580 749 ;
+C -1 ; WX 444 ; N aring ; B 55 -15 474 796 ;
+C -1 ; WX 389 ; N zcaron ; B 24 0 504 765 ;
+C -1 ; WX 278 ; N Icircumflex ; B 98 0 460 959 ;
+C -1 ; WX 611 ; N Ntilde ; B 77 0 693 943 ;
+C -1 ; WX 500 ; N ucircumflex ; B 99 -15 542 765 ;
+C -1 ; WX 500 ; N Ecircumflex ; B 74 0 608 959 ;
+C -1 ; WX 278 ; N Iacute ; B 98 0 475 959 ;
+C -1 ; WX 556 ; N Ccedilla ; B 106 -224 624 765 ;
+C -1 ; WX 611 ; N Odieresis ; B 116 -18 658 944 ;
+C -1 ; WX 556 ; N Scaron ; B 86 -18 629 959 ;
+C -1 ; WX 500 ; N Edieresis ; B 74 0 608 944 ;
+C -1 ; WX 278 ; N Igrave ; B 98 0 380 959 ;
+C -1 ; WX 444 ; N adieresis ; B 55 -15 496 750 ;
+C -1 ; WX 611 ; N Ograve ; B 116 -18 658 959 ;
+C -1 ; WX 500 ; N Egrave ; B 74 0 608 959 ;
+C -1 ; WX 556 ; N Ydieresis ; B 170 0 705 944 ;
+C -1 ; WX 800 ; N registered ; B 79 -18 881 765 ;
+C -1 ; WX 611 ; N Otilde ; B 116 -18 676 943 ;
+C -1 ; WX 750 ; N onequarter ; B 143 0 817 750 ;
+C -1 ; WX 611 ; N Ugrave ; B 114 -18 690 959 ;
+C -1 ; WX 611 ; N Ucircumflex ; B 114 -18 690 959 ;
+C -1 ; WX 556 ; N Thorn ; B 86 0 607 750 ;
+C -1 ; WX 500 ; N divide ; B 91 3 518 505 ;
+C -1 ; WX 556 ; N Atilde ; B 11 0 649 943 ;
+C -1 ; WX 611 ; N Uacute ; B 114 -18 690 959 ;
+C -1 ; WX 611 ; N Ocircumflex ; B 116 -18 658 959 ;
+C -1 ; WX 500 ; N logicalnot ; B 111 117 539 384 ;
+C -1 ; WX 556 ; N Aring ; B 11 0 571 990 ;
+C -1 ; WX 222 ; N idieresis ; B 72 0 385 750 ;
+C -1 ; WX 222 ; N iacute ; B 72 0 406 765 ;
+C -1 ; WX 444 ; N aacute ; B 55 -15 517 765 ;
+C -1 ; WX 500 ; N plusminus ; B 44 0 531 505 ;
+C -1 ; WX 500 ; N multiply ; B 65 48 544 461 ;
+C -1 ; WX 611 ; N Udieresis ; B 114 -18 690 944 ;
+C -1 ; WX 500 ; N minus ; B 91 219 518 289 ;
+C -1 ; WX 300 ; N onesuperior ; B 200 300 392 750 ;
+C -1 ; WX 500 ; N Eacute ; B 74 0 608 959 ;
+C -1 ; WX 556 ; N Acircumflex ; B 11 0 599 959 ;
+C -1 ; WX 800 ; N copyright ; B 79 -18 880 765 ;
+C -1 ; WX 556 ; N Agrave ; B 11 0 546 959 ;
+C -1 ; WX 500 ; N odieresis ; B 96 -15 524 750 ;
+C -1 ; WX 500 ; N oacute ; B 96 -15 545 765 ;
+C -1 ; WX 400 ; N degree ; B 174 450 481 750 ;
+C -1 ; WX 222 ; N igrave ; B 72 0 311 765 ;
+C -1 ; WX 500 ; N mu ; B 35 -189 540 556 ;
+C -1 ; WX 611 ; N Oacute ; B 116 -18 658 959 ;
+C -1 ; WX 500 ; N eth ; B 87 -15 548 770 ;
+C -1 ; WX 556 ; N Adieresis ; B 11 0 594 944 ;
+C -1 ; WX 556 ; N Yacute ; B 170 0 705 959 ;
+C -1 ; WX 250 ; N brokenbar ; B 93 0 316 750 ;
+C -1 ; WX 750 ; N onehalf ; B 91 0 777 750 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 115
+
+KPX A y -18
+KPX A w -18
+KPX A v -18
+KPX A quoteright -55
+KPX A Y -55
+KPX A W -37
+KPX A V -37
+KPX A T -55
+
+KPX F period -111
+KPX F comma -111
+KPX F A -37
+
+KPX L y -37
+KPX L quoteright -92
+KPX L Y -92
+KPX L W -74
+KPX L V -74
+KPX L T -74
+
+KPX P period -129
+KPX P comma -129
+KPX P A -37
+
+KPX R y 0
+KPX R Y -18
+KPX R W 0
+KPX R V 0
+KPX R T -18
+
+KPX T y -55
+KPX T w -74
+KPX T u -74
+KPX T semicolon -74
+KPX T s -74
+KPX T r -74
+KPX T period -92
+KPX T o -74
+KPX T i -18
+KPX T hyphen -55
+KPX T e -74
+KPX T comma -92
+KPX T colon -74
+KPX T c -74
+KPX T a -74
+KPX T A -55
+
+KPX V y 0
+KPX V u -18
+KPX V semicolon -18
+KPX V r -18
+KPX V period -92
+KPX V o -18
+KPX V i 0
+KPX V hyphen -18
+KPX V e -18
+KPX V comma -92
+KPX V colon -18
+KPX V a -18
+KPX V A -37
+
+KPX W y 0
+KPX W u 0
+KPX W semicolon 0
+KPX W r 0
+KPX W period -74
+KPX W o -18
+KPX W i 0
+KPX W hyphen -18
+KPX W e -18
+KPX W comma -74
+KPX W colon 0
+KPX W a -18
+KPX W A -18
+
+KPX Y v -18
+KPX Y u -37
+KPX Y semicolon -37
+KPX Y q -55
+KPX Y period -111
+KPX Y p -37
+KPX Y o -55
+KPX Y i -18
+KPX Y hyphen -74
+KPX Y e -55
+KPX Y comma -111
+KPX Y colon -37
+KPX Y a -55
+KPX Y A -55
+
+KPX f quoteright 18
+KPX f f 0
+
+KPX quoteleft quoteleft -18
+
+KPX quoteright t 0
+KPX quoteright s -55
+KPX quoteright quoteright -18
+
+KPX r z 20
+KPX r y 18
+KPX r x 20
+KPX r w 18
+KPX r v 18
+KPX r u 0
+KPX r t 0
+KPX r r 0
+KPX r quoteright 0
+KPX r q 0
+KPX r period -74
+KPX r o 0
+KPX r n 0
+KPX r m 0
+KPX r hyphen -37
+KPX r h 0
+KPX r g 0
+KPX r f 20
+KPX r e 0
+KPX r d 0
+KPX r comma -74
+KPX r c -20
+
+KPX v period -55
+KPX v comma -55
+
+KPX w period -37
+KPX w comma -37
+
+KPX y period -55
+KPX y comma -55
+EndKernPairs
+EndKernData
+StartComposites 58
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 153 194 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 153 194 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 153 194 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 153 194 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 194 194 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 153 194 ;
+CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 112 0 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 125 194 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 125 194 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 125 194 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 125 194 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 14 194 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 14 194 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 14 194 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 14 194 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 180 194 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 180 194 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 180 194 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 180 194 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 180 194 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 180 194 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 153 194 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 180 194 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 180 194 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 180 194 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 180 194 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 153 194 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 153 194 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 125 194 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 56 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 56 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 56 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 56 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 97 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 56 0 ;
+CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 56 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 56 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 56 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 56 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 56 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -55 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -55 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -55 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -55 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 84 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 84 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 84 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 84 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 84 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 84 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 56 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 84 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 84 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 84 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 84 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 56 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 56 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 28 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/He-CnO+ b/font/font/He-CnO+
new file mode 100644
index 0000000..e2306a0
--- /dev/null
+++ b/font/font/He-CnO+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 556 ; N Ccaron ; B 106 -18 680 960 ;
+C -1 ; WX 444 ; N ccaron ; B 85 -15 551 765 ;
+C -1 ; WX 611 ; N Dcaron ; B 82 0 656 960 ;
+C -1 ; WX 602 ; N dcaron ; B 88 -15 744 825 ;
+C -1 ; WX 500 ; N Ecaron ; B 74 0 608 960 ;
+C -1 ; WX 444 ; N ecaron ; B 86 -15 531 765 ;
+C -1 ; WX 500 ; N Lcaron ; B 83 0 501 825 ;
+C -1 ; WX 500 ; N Lacute ; B 83 0 585 960 ;
+C -1 ; WX 324 ; N lcaron ; B 72 0 471 825 ;
+C -1 ; WX 222 ; N lacute ; B 72 0 470 960 ;
+C -1 ; WX 611 ; N Ncaron ; B 77 0 693 960 ;
+C -1 ; WX 500 ; N ncaron ; B 73 0 559 765 ;
+C -1 ; WX 611 ; N Rcaron ; B 86 0 656 960 ;
+C -1 ; WX 611 ; N Racute ; B 86 0 684 960 ;
+C -1 ; WX 333 ; N rcaron ; B 81 0 476 765 ;
+C -1 ; WX 333 ; N racute ; B 81 0 484 765 ;
+C -1 ; WX 500 ; N Tcaron ; B 158 0 645 960 ;
+C -1 ; WX 380 ; N tcaron ; B 101 0 536 750 ;
+C -1 ; WX 611 ; N Uring ; B 114 -18 690 960 ;
+C -1 ; WX 500 ; N uring ; B 99 -15 542 796 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 204 195 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 75 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 180 195 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 427 75 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 124 195 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 55 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 184 75 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 124 195 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 154 75 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 9 195 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 180 195 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 83 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 180 195 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 223 195 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 0 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 23 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 124 195 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 219 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 214 164 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 125 0 ;
+EndBuildComposites
diff --git a/font/font/He-ExtC b/font/font/He-ExtC
new file mode 100644
index 0000000..4e14e98
--- /dev/null
+++ b/font/font/He-ExtC
@@ -0,0 +1,415 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1988, 1990, 1991 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Fri Dec 13 16:18:46 1991
+Comment UniqueID 37157
+Comment VMusage 24443 31335
+FontName Helvetica-ExtraCompressed
+FullName Helvetica Extra Compressed
+FamilyName Helvetica
+Weight Bold
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -123 -250 1000 956
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.002
+Notice Copyright (c) 1988, 1990, 1991 Adobe Systems Incorporated. All Rights Reserved.Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 712
+XHeight 572
+Ascender 712
+Descender -128
+StartCharMetrics 228
+C 32 ; WX 185 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 259 ; N exclam ; B 66 0 193 712 ;
+C 34 ; WX 333 ; N quotedbl ; B 15 441 318 712 ;
+C 35 ; WX 370 ; N numbersign ; B 12 0 358 712 ;
+C 36 ; WX 370 ; N dollar ; B 17 -66 354 778 ;
+C 37 ; WX 537 ; N percent ; B 19 -14 518 726 ;
+C 38 ; WX 426 ; N ampersand ; B 14 -14 424 726 ;
+C 39 ; WX 167 ; N quoteright ; B 9 457 158 712 ;
+C 40 ; WX 296 ; N parenleft ; B 26 -94 270 726 ;
+C 41 ; WX 296 ; N parenright ; B 26 -94 270 726 ;
+C 42 ; WX 370 ; N asterisk ; B 22 399 347 712 ;
+C 43 ; WX 556 ; N plus ; B 33 40 523 532 ;
+C 44 ; WX 185 ; N comma ; B 9 -126 175 148 ;
+C 45 ; WX 259 ; N hyphen ; B 43 264 216 356 ;
+C 46 ; WX 185 ; N period ; B 29 0 156 148 ;
+C 47 ; WX 204 ; N slash ; B -5 -14 210 726 ;
+C 48 ; WX 370 ; N zero ; B 19 -14 351 726 ;
+C 49 ; WX 370 ; N one ; B 39 0 260 712 ;
+C 50 ; WX 370 ; N two ; B 19 0 351 726 ;
+C 51 ; WX 370 ; N three ; B 19 -14 351 726 ;
+C 52 ; WX 370 ; N four ; B -3 0 369 712 ;
+C 53 ; WX 370 ; N five ; B 19 -14 351 712 ;
+C 54 ; WX 370 ; N six ; B 19 -14 351 726 ;
+C 55 ; WX 370 ; N seven ; B 9 0 366 712 ;
+C 56 ; WX 370 ; N eight ; B 19 -14 351 726 ;
+C 57 ; WX 370 ; N nine ; B 19 -14 351 726 ;
+C 58 ; WX 185 ; N colon ; B 29 0 156 572 ;
+C 59 ; WX 185 ; N semicolon ; B 9 -126 175 572 ;
+C 60 ; WX 556 ; N less ; B 60 62 497 510 ;
+C 61 ; WX 556 ; N equal ; B 33 112 523 460 ;
+C 62 ; WX 556 ; N greater ; B 59 62 496 510 ;
+C 63 ; WX 426 ; N question ; B 63 0 363 726 ;
+C 64 ; WX 800 ; N at ; B 36 -14 764 726 ;
+C 65 ; WX 370 ; N A ; B -4 0 374 712 ;
+C 66 ; WX 370 ; N B ; B 19 0 351 712 ;
+C 67 ; WX 370 ; N C ; B 19 -14 351 726 ;
+C 68 ; WX 370 ; N D ; B 19 0 351 712 ;
+C 69 ; WX 296 ; N E ; B 23 0 287 712 ;
+C 70 ; WX 296 ; N F ; B 23 0 287 712 ;
+C 71 ; WX 370 ; N G ; B 19 -14 351 726 ;
+C 72 ; WX 370 ; N H ; B 19 0 351 712 ;
+C 73 ; WX 204 ; N I ; B 31 0 172 712 ;
+C 74 ; WX 370 ; N J ; B 19 -14 351 712 ;
+C 75 ; WX 370 ; N K ; B 13 0 367 712 ;
+C 76 ; WX 296 ; N L ; B 19 0 285 712 ;
+C 77 ; WX 593 ; N M ; B 23 0 570 712 ;
+C 78 ; WX 426 ; N N ; B 23 0 403 712 ;
+C 79 ; WX 370 ; N O ; B 19 -14 351 726 ;
+C 80 ; WX 370 ; N P ; B 19 0 351 712 ;
+C 81 ; WX 370 ; N Q ; B 19 -128 351 726 ;
+C 82 ; WX 370 ; N R ; B 19 0 372 712 ;
+C 83 ; WX 370 ; N S ; B 17 -14 354 726 ;
+C 84 ; WX 333 ; N T ; B 1 0 332 712 ;
+C 85 ; WX 370 ; N U ; B 19 -14 351 712 ;
+C 86 ; WX 370 ; N V ; B 2 0 368 712 ;
+C 87 ; WX 593 ; N W ; B -1 0 594 712 ;
+C 88 ; WX 370 ; N X ; B -5 0 374 712 ;
+C 89 ; WX 370 ; N Y ; B 2 0 368 712 ;
+C 90 ; WX 296 ; N Z ; B 4 0 291 712 ;
+C 91 ; WX 296 ; N bracketleft ; B 38 -95 258 726 ;
+C 92 ; WX 278 ; N backslash ; B -54 -14 332 726 ;
+C 93 ; WX 296 ; N bracketright ; B 38 -95 258 726 ;
+C 94 ; WX 556 ; N asciicircum ; B 51 347 505 712 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 167 ; N quoteleft ; B 9 457 158 712 ;
+C 97 ; WX 333 ; N a ; B 17 -7 325 579 ;
+C 98 ; WX 333 ; N b ; B 17 -7 316 712 ;
+C 99 ; WX 333 ; N c ; B 17 -7 316 579 ;
+C 100 ; WX 333 ; N d ; B 17 -7 316 712 ;
+C 101 ; WX 333 ; N e ; B 17 -7 316 579 ;
+C 102 ; WX 204 ; N f ; B 6 0 202 712 ; L i fi ; L l fl ;
+C 103 ; WX 333 ; N g ; B 17 -128 316 579 ;
+C 104 ; WX 333 ; N h ; B 17 0 316 712 ;
+C 105 ; WX 167 ; N i ; B 20 0 147 712 ;
+C 106 ; WX 167 ; N j ; B -28 -128 152 712 ;
+C 107 ; WX 333 ; N k ; B 19 0 331 712 ;
+C 108 ; WX 167 ; N l ; B 20 0 147 712 ;
+C 109 ; WX 500 ; N m ; B 14 0 485 579 ;
+C 110 ; WX 333 ; N n ; B 17 0 316 579 ;
+C 111 ; WX 333 ; N o ; B 17 -7 316 579 ;
+C 112 ; WX 333 ; N p ; B 19 -128 318 579 ;
+C 113 ; WX 333 ; N q ; B 17 -128 316 579 ;
+C 114 ; WX 333 ; N r ; B 17 0 316 579 ;
+C 115 ; WX 333 ; N s ; B 14 -7 319 579 ;
+C 116 ; WX 204 ; N t ; B 3 0 201 676 ;
+C 117 ; WX 333 ; N u ; B 17 -7 316 572 ;
+C 118 ; WX 333 ; N v ; B 5 0 327 572 ;
+C 119 ; WX 537 ; N w ; B 3 0 535 572 ;
+C 120 ; WX 333 ; N x ; B 1 0 332 572 ;
+C 121 ; WX 333 ; N y ; B 4 -128 328 572 ;
+C 122 ; WX 259 ; N z ; B 9 0 250 572 ;
+C 123 ; WX 333 ; N braceleft ; B 38 -95 295 726 ;
+C 124 ; WX 222 ; N bar ; B 53 -250 169 750 ;
+C 125 ; WX 333 ; N braceright ; B 38 -102 295 719 ;
+C 126 ; WX 556 ; N asciitilde ; B 47 200 509 386 ;
+C 161 ; WX 259 ; N exclamdown ; B 66 -114 193 598 ;
+C 162 ; WX 370 ; N cent ; B 34 -68 333 630 ;
+C 163 ; WX 370 ; N sterling ; B 7 -14 362 726 ;
+C 164 ; WX 130 ; N fraction ; B -123 -14 266 726 ;
+C 165 ; WX 370 ; N yen ; B 2 0 368 712 ;
+C 166 ; WX 370 ; N florin ; B -13 -128 383 726 ;
+C 167 ; WX 426 ; N section ; B 24 -62 401 726 ;
+C 168 ; WX 370 ; N currency ; B 4 113 366 477 ;
+C 169 ; WX 222 ; N quotesingle ; B 51 441 171 712 ;
+C 170 ; WX 333 ; N quotedblleft ; B 8 457 324 712 ;
+C 171 ; WX 333 ; N guillemotleft ; B 12 85 316 535 ;
+C 172 ; WX 167 ; N guilsinglleft ; B 13 85 154 535 ;
+C 173 ; WX 167 ; N guilsinglright ; B 13 85 154 535 ;
+C 174 ; WX 370 ; N fi ; B 9 0 360 712 ;
+C 175 ; WX 370 ; N fl ; B 9 0 360 712 ;
+C 177 ; WX 500 ; N endash ; B 0 266 500 354 ;
+C 178 ; WX 426 ; N dagger ; B 20 -73 406 712 ;
+C 179 ; WX 426 ; N daggerdbl ; B 20 -62 406 712 ;
+C 180 ; WX 185 ; N periodcentered ; B 8 200 176 367 ;
+C 182 ; WX 620 ; N paragraph ; B 75 -179 604 712 ;
+C 183 ; WX 500 ; N bullet ; B 75 181 425 531 ;
+C 184 ; WX 167 ; N quotesinglbase ; B 9 -107 158 148 ;
+C 185 ; WX 333 ; N quotedblbase ; B 9 -107 325 148 ;
+C 186 ; WX 333 ; N quotedblright ; B 9 457 325 712 ;
+C 187 ; WX 333 ; N guillemotright ; B 17 85 321 535 ;
+C 188 ; WX 1000 ; N ellipsis ; B 103 0 896 148 ;
+C 189 ; WX 759 ; N perthousand ; B 11 -14 747 726 ;
+C 191 ; WX 426 ; N questiondown ; B 63 -128 363 598 ;
+C 193 ; WX 167 ; N grave ; B -45 620 147 755 ;
+C 194 ; WX 167 ; N acute ; B 41 620 233 755 ;
+C 195 ; WX 167 ; N circumflex ; B -60 620 226 755 ;
+C 196 ; WX 167 ; N tilde ; B -52 632 220 738 ;
+C 197 ; WX 167 ; N macron ; B -48 653 220 718 ;
+C 198 ; WX 167 ; N breve ; B -56 623 227 752 ;
+C 199 ; WX 167 ; N dotaccent ; B 36 632 130 741 ;
+C 200 ; WX 167 ; N dieresis ; B -46 632 213 741 ;
+C 202 ; WX 167 ; N ring ; B -9 633 176 822 ;
+C 203 ; WX 167 ; N cedilla ; B -38 -235 211 0 ;
+C 205 ; WX 167 ; N hungarumlaut ; B -36 620 307 755 ;
+C 206 ; WX 167 ; N ogonek ; B -48 -188 140 0 ;
+C 207 ; WX 167 ; N caron ; B -58 620 231 755 ;
+C 208 ; WX 1000 ; N emdash ; B 0 266 1000 354 ;
+C 225 ; WX 500 ; N AE ; B -2 0 491 712 ;
+C 227 ; WX 200 ; N ordfeminine ; B 7 375 194 726 ;
+C 232 ; WX 296 ; N Lslash ; B -12 0 285 712 ;
+C 233 ; WX 370 ; N Oslash ; B 6 -62 360 745 ;
+C 234 ; WX 463 ; N OE ; B 18 -14 454 726 ;
+C 235 ; WX 200 ; N ordmasculine ; B 10 375 179 726 ;
+C 241 ; WX 500 ; N ae ; B 14 -7 485 579 ;
+C 245 ; WX 167 ; N dotlessi ; B 20 0 147 572 ;
+C 248 ; WX 167 ; N lslash ; B -12 0 182 712 ;
+C 249 ; WX 333 ; N oslash ; B 3 -68 324 641 ;
+C 250 ; WX 500 ; N oe ; B 14 -7 485 579 ;
+C 251 ; WX 333 ; N germandbls ; B 17 -7 316 726 ;
+C -1 ; WX 333 ; N ecircumflex ; B 17 -7 316 755 ;
+C -1 ; WX 333 ; N edieresis ; B 17 -7 316 741 ;
+C -1 ; WX 333 ; N aacute ; B 17 -7 325 755 ;
+C -1 ; WX 800 ; N registered ; B 16 -14 784 726 ;
+C -1 ; WX 167 ; N icircumflex ; B -60 0 226 755 ;
+C -1 ; WX 333 ; N udieresis ; B 17 -7 316 741 ;
+C -1 ; WX 333 ; N ograve ; B 17 -7 316 755 ;
+C -1 ; WX 333 ; N uacute ; B 17 -7 316 755 ;
+C -1 ; WX 333 ; N ucircumflex ; B 17 -7 316 755 ;
+C -1 ; WX 370 ; N Aacute ; B -4 0 374 889 ;
+C -1 ; WX 167 ; N igrave ; B -45 0 147 755 ;
+C -1 ; WX 204 ; N Icircumflex ; B -41 0 245 889 ;
+C -1 ; WX 333 ; N ccedilla ; B 17 -235 316 579 ;
+C -1 ; WX 333 ; N adieresis ; B 17 -7 325 741 ;
+C -1 ; WX 296 ; N Ecircumflex ; B 5 0 291 889 ;
+C -1 ; WX 333 ; N scaron ; B 14 -7 319 755 ;
+C -1 ; WX 333 ; N thorn ; B 19 -128 318 712 ;
+C -1 ; WX 1000 ; N trademark ; B 36 300 964 712 ;
+C -1 ; WX 333 ; N egrave ; B 17 -7 316 755 ;
+C -1 ; WX 240 ; N threesuperior ; B 12 282 228 726 ;
+C -1 ; WX 259 ; N zcaron ; B -12 0 277 755 ;
+C -1 ; WX 333 ; N atilde ; B 17 -7 325 738 ;
+C -1 ; WX 333 ; N aring ; B 17 -7 325 822 ;
+C -1 ; WX 333 ; N ocircumflex ; B 17 -7 316 755 ;
+C -1 ; WX 296 ; N Edieresis ; B 19 0 287 875 ;
+C -1 ; WX 555 ; N threequarters ; B 7 -14 547 726 ;
+C -1 ; WX 333 ; N ydieresis ; B 4 -128 328 741 ;
+C -1 ; WX 333 ; N yacute ; B 4 -128 328 755 ;
+C -1 ; WX 167 ; N iacute ; B 20 0 233 755 ;
+C -1 ; WX 370 ; N Acircumflex ; B -4 0 374 889 ;
+C -1 ; WX 370 ; N Uacute ; B 19 -14 351 889 ;
+C -1 ; WX 333 ; N eacute ; B 17 -7 316 755 ;
+C -1 ; WX 370 ; N Ograve ; B 19 -14 351 889 ;
+C -1 ; WX 333 ; N agrave ; B 17 -7 325 755 ;
+C -1 ; WX 370 ; N Udieresis ; B 19 -14 351 875 ;
+C -1 ; WX 333 ; N acircumflex ; B 17 -7 325 755 ;
+C -1 ; WX 204 ; N Igrave ; B -26 0 172 889 ;
+C -1 ; WX 240 ; N twosuperior ; B 12 290 228 726 ;
+C -1 ; WX 370 ; N Ugrave ; B 19 -14 351 889 ;
+C -1 ; WX 555 ; N onequarter ; B 20 -14 547 726 ;
+C -1 ; WX 370 ; N Ucircumflex ; B 19 -14 351 889 ;
+C -1 ; WX 370 ; N Scaron ; B 17 -14 354 889 ;
+C -1 ; WX 204 ; N Idieresis ; B -27 0 232 875 ;
+C -1 ; WX 167 ; N idieresis ; B -46 0 213 741 ;
+C -1 ; WX 296 ; N Egrave ; B 20 0 287 889 ;
+C -1 ; WX 370 ; N Oacute ; B 19 -14 351 889 ;
+C -1 ; WX 556 ; N divide ; B 33 16 523 556 ;
+C -1 ; WX 370 ; N Atilde ; B -4 0 374 872 ;
+C -1 ; WX 370 ; N Aring ; B -4 0 374 956 ;
+C -1 ; WX 370 ; N Odieresis ; B 19 -14 351 875 ;
+C -1 ; WX 370 ; N Adieresis ; B -4 0 374 875 ;
+C -1 ; WX 426 ; N Ntilde ; B 23 0 403 872 ;
+C -1 ; WX 296 ; N Zcaron ; B 4 0 296 889 ;
+C -1 ; WX 370 ; N Thorn ; B 19 0 351 712 ;
+C -1 ; WX 204 ; N Iacute ; B 31 0 252 889 ;
+C -1 ; WX 556 ; N plusminus ; B 33 40 523 532 ;
+C -1 ; WX 556 ; N multiply ; B 33 40 523 532 ;
+C -1 ; WX 296 ; N Eacute ; B 23 0 298 889 ;
+C -1 ; WX 370 ; N Ydieresis ; B 2 0 368 875 ;
+C -1 ; WX 240 ; N onesuperior ; B 49 290 193 717 ;
+C -1 ; WX 333 ; N ugrave ; B 17 -7 316 755 ;
+C -1 ; WX 556 ; N logicalnot ; B 33 149 523 460 ;
+C -1 ; WX 333 ; N ntilde ; B 17 0 316 738 ;
+C -1 ; WX 370 ; N Otilde ; B 19 -14 351 872 ;
+C -1 ; WX 333 ; N otilde ; B 17 -7 316 738 ;
+C -1 ; WX 370 ; N Ccedilla ; B 19 -235 351 726 ;
+C -1 ; WX 370 ; N Agrave ; B -4 0 374 889 ;
+C -1 ; WX 555 ; N onehalf ; B 20 -14 547 726 ;
+C -1 ; WX 370 ; N Eth ; B -10 0 351 712 ;
+C -1 ; WX 400 ; N degree ; B 57 426 343 712 ;
+C -1 ; WX 370 ; N Yacute ; B 2 0 368 889 ;
+C -1 ; WX 370 ; N Ocircumflex ; B 19 -14 351 889 ;
+C -1 ; WX 333 ; N oacute ; B 17 -7 316 755 ;
+C -1 ; WX 333 ; N mu ; B 17 -128 316 572 ;
+C -1 ; WX 556 ; N minus ; B 33 228 523 344 ;
+C -1 ; WX 333 ; N eth ; B 17 -7 316 751 ;
+C -1 ; WX 333 ; N odieresis ; B 17 -7 316 741 ;
+C -1 ; WX 800 ; N copyright ; B 16 -14 784 726 ;
+C -1 ; WX 222 ; N brokenbar ; B 53 -175 169 675 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 87
+
+KPX A y -37
+KPX A w -37
+KPX A v -37
+KPX A quoteright -37
+KPX A Y -55
+KPX A W -37
+KPX A V -37
+KPX A T -55
+
+KPX F period -92
+KPX F comma -111
+KPX F A -37
+
+KPX L y -55
+KPX L quoteright -92
+KPX L Y -92
+KPX L W -55
+KPX L V -55
+KPX L T -74
+
+KPX P period -129
+KPX P comma -150
+KPX P A -37
+
+KPX R Y -18
+KPX R W -18
+KPX R V -18
+KPX R T -18
+
+KPX T y -74
+KPX T w -74
+KPX T u -74
+KPX T semicolon -74
+KPX T s -74
+KPX T r -74
+KPX T period -74
+KPX T o -74
+KPX T i -74
+KPX T hyphen -92
+KPX T e -74
+KPX T comma -74
+KPX T colon -74
+KPX T c -74
+KPX T a -74
+KPX T A -74
+
+KPX V y -18
+KPX V u -18
+KPX V semicolon -18
+KPX V r -18
+KPX V period -55
+KPX V o -18
+KPX V i -18
+KPX V hyphen -55
+KPX V e -18
+KPX V comma -74
+KPX V colon -18
+KPX V a -18
+KPX V A -55
+
+KPX W semicolon -18
+KPX W period -37
+KPX W o -18
+KPX W hyphen -55
+KPX W e -18
+KPX W comma -55
+KPX W colon -18
+KPX W a -18
+KPX W A -55
+
+KPX Y v -18
+KPX Y u -18
+KPX Y semicolon -37
+KPX Y q -55
+KPX Y period -74
+KPX Y p -18
+KPX Y o -55
+KPX Y i -18
+KPX Y hyphen -92
+KPX Y e -55
+KPX Y comma -92
+KPX Y colon -37
+KPX Y a -55
+KPX Y A -55
+
+KPX quoteright t -18
+KPX quoteright s -55
+
+KPX r period -129
+KPX r hyphen -18
+KPX r comma -129
+
+KPX v period -55
+KPX v comma -55
+
+KPX w period -55
+KPX w comma -55
+
+KPX y period -55
+KPX y comma -55
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 102 134 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 102 134 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 102 134 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 102 134 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 102 134 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 102 134 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 65 134 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 65 134 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 65 134 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 65 134 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 19 134 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 19 134 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 19 134 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 19 134 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 130 134 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 102 134 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 102 134 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 102 134 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 102 134 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 102 134 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 102 134 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 102 134 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 102 134 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 102 134 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 102 134 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 102 134 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 102 134 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 65 134 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 83 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 83 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 83 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 83 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 83 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 83 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 83 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 83 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 83 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 83 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute 0 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex 0 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis 0 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave 0 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 83 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 83 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 83 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 83 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 83 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 83 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 83 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 83 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 83 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 83 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 83 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 83 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 83 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 46 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/He-ExtC+ b/font/font/He-ExtC+
new file mode 100644
index 0000000..f3610ca
--- /dev/null
+++ b/font/font/He-ExtC+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 370 ; N Ccaron ; B 19 -14 365 912 ;
+C -1 ; WX 333 ; N ccaron ; B 17 -7 329 755 ;
+C -1 ; WX 370 ; N Dcaron ; B 19 0 351 912 ;
+C -1 ; WX 437 ; N dcaron ; B 17 -7 480 783 ;
+C -1 ; WX 296 ; N Ecaron ; B 6 0 295 912 ;
+C -1 ; WX 333 ; N ecaron ; B 17 -7 316 755 ;
+C -1 ; WX 296 ; N Lcaron ; B 19 0 336 783 ;
+C -1 ; WX 296 ; N Lacute ; B 19 0 297 912 ;
+C -1 ; WX 271 ; N lcaron ; B 20 0 311 783 ;
+C -1 ; WX 167 ; N lacute ; B 20 0 252 912 ;
+C -1 ; WX 426 ; N Ncaron ; B 23 0 403 912 ;
+C -1 ; WX 333 ; N ncaron ; B 17 0 316 755 ;
+C -1 ; WX 370 ; N Rcaron ; B 19 0 372 912 ;
+C -1 ; WX 370 ; N Racute ; B 19 0 372 912 ;
+C -1 ; WX 333 ; N rcaron ; B 17 0 316 755 ;
+C -1 ; WX 333 ; N racute ; B 17 0 335 755 ;
+C -1 ; WX 333 ; N Tcaron ; B 1 0 332 912 ;
+C -1 ; WX 308 ; N tcaron ; B 3 0 365 712 ;
+C -1 ; WX 370 ; N Uring ; B 19 -14 351 912 ;
+C -1 ; WX 333 ; N uring ; B 17 -7 316 822 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 134 157 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 98 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 101 157 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 322 71 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 64 157 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 83 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 178 71 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 64 157 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 153 71 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 19 157 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 129 157 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 83 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 101 157 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 137 157 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 83 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 102 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 83 157 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 207 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 101 90 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 83 0 ;
+EndBuildComposites
diff --git a/font/font/He-Lt b/font/font/He-Lt
new file mode 100644
index 0000000..b02ffac
--- /dev/null
+++ b/font/font/He-Lt
@@ -0,0 +1,445 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1988 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date:Mon Jan 11 16:46:06 PST 1988
+FontName Helvetica-Light
+EncodingScheme AdobeStandardEncoding
+FullName Helvetica Light
+FamilyName Helvetica
+Weight Light
+ItalicAngle 0.0
+IsFixedPitch false
+UnderlinePosition -90
+UnderlineThickness 58
+Version 001.002
+Notice Copyright (c) 1985, 1987, 1988 Adobe Systems Incorporated. All Rights Reserved.Helvetica is a trademark of Linotype Company.
+FontBBox -164 -212 1000 979
+CapHeight 720
+XHeight 518
+Descender -204
+Ascender 720
+StartCharMetrics 228
+C 32 ; WX 278 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 333 ; N exclam ; B 130 0 203 720 ;
+C 34 ; WX 278 ; N quotedbl ; B 57 494 220 720 ;
+C 35 ; WX 556 ; N numbersign ; B 27 0 530 698 ;
+C 36 ; WX 556 ; N dollar ; B 37 -95 518 766 ;
+C 37 ; WX 889 ; N percent ; B 67 -14 821 705 ;
+C 38 ; WX 667 ; N ampersand ; B 41 -19 644 720 ;
+C 39 ; WX 222 ; N quoteright ; B 80 495 153 720 ;
+C 40 ; WX 333 ; N parenleft ; B 55 -191 277 739 ;
+C 41 ; WX 333 ; N parenright ; B 56 -191 278 739 ;
+C 42 ; WX 389 ; N asterisk ; B 44 434 344 720 ;
+C 43 ; WX 660 ; N plus ; B 80 0 580 500 ;
+C 44 ; WX 278 ; N comma ; B 102 -137 175 88 ;
+C 45 ; WX 333 ; N hyphen ; B 40 229 293 291 ;
+C 46 ; WX 278 ; N period ; B 102 0 175 88 ;
+C 47 ; WX 278 ; N slash ; B -3 -90 288 739 ;
+C 48 ; WX 556 ; N zero ; B 39 -14 516 705 ;
+C 49 ; WX 556 ; N one ; B 120 0 366 705 ;
+C 50 ; WX 556 ; N two ; B 48 0 515 705 ;
+C 51 ; WX 556 ; N three ; B 34 -14 512 705 ;
+C 52 ; WX 556 ; N four ; B 36 0 520 698 ;
+C 53 ; WX 556 ; N five ; B 35 -14 506 698 ;
+C 54 ; WX 556 ; N six ; B 41 -14 514 705 ;
+C 55 ; WX 556 ; N seven ; B 59 0 508 698 ;
+C 56 ; WX 556 ; N eight ; B 44 -14 512 705 ;
+C 57 ; WX 556 ; N nine ; B 41 -14 515 705 ;
+C 58 ; WX 278 ; N colon ; B 102 0 175 492 ;
+C 59 ; WX 278 ; N semicolon ; B 102 -137 175 492 ;
+C 60 ; WX 660 ; N less ; B 80 -6 580 505 ;
+C 61 ; WX 660 ; N equal ; B 80 124 580 378 ;
+C 62 ; WX 660 ; N greater ; B 80 -6 580 505 ;
+C 63 ; WX 500 ; N question ; B 37 0 472 739 ;
+C 64 ; WX 800 ; N at ; B 40 -19 760 739 ;
+C 65 ; WX 667 ; N A ; B 15 0 651 720 ;
+C 66 ; WX 667 ; N B ; B 81 0 610 720 ;
+C 67 ; WX 722 ; N C ; B 48 -19 670 739 ;
+C 68 ; WX 722 ; N D ; B 81 0 669 720 ;
+C 69 ; WX 611 ; N E ; B 81 0 570 720 ;
+C 70 ; WX 556 ; N F ; B 74 0 538 720 ;
+C 71 ; WX 778 ; N G ; B 53 -19 695 739 ;
+C 72 ; WX 722 ; N H ; B 80 0 642 720 ;
+C 73 ; WX 278 ; N I ; B 105 0 173 720 ;
+C 74 ; WX 500 ; N J ; B 22 -19 415 720 ;
+C 75 ; WX 667 ; N K ; B 85 0 649 720 ;
+C 76 ; WX 556 ; N L ; B 81 0 535 720 ;
+C 77 ; WX 833 ; N M ; B 78 0 755 720 ;
+C 78 ; WX 722 ; N N ; B 79 0 642 720 ;
+C 79 ; WX 778 ; N O ; B 53 -19 724 739 ;
+C 80 ; WX 611 ; N P ; B 78 0 576 720 ;
+C 81 ; WX 778 ; N Q ; B 48 -52 719 739 ;
+C 82 ; WX 667 ; N R ; B 80 0 612 720 ;
+C 83 ; WX 611 ; N S ; B 43 -19 567 739 ;
+C 84 ; WX 556 ; N T ; B 16 0 540 720 ;
+C 85 ; WX 722 ; N U ; B 82 -19 640 720 ;
+C 86 ; WX 611 ; N V ; B 18 0 593 720 ;
+C 87 ; WX 889 ; N W ; B 14 0 875 720 ;
+C 88 ; WX 611 ; N X ; B 18 0 592 720 ;
+C 89 ; WX 611 ; N Y ; B 12 0 598 720 ;
+C 90 ; WX 611 ; N Z ; B 31 0 579 720 ;
+C 91 ; WX 333 ; N bracketleft ; B 91 -191 282 739 ;
+C 92 ; WX 278 ; N backslash ; B -46 0 324 739 ;
+C 93 ; WX 333 ; N bracketright ; B 51 -191 242 739 ;
+C 94 ; WX 660 ; N asciicircum ; B 73 245 586 698 ;
+C 95 ; WX 500 ; N underscore ; B 0 -119 500 -61 ;
+C 96 ; WX 222 ; N quoteleft ; B 69 495 142 720 ;
+C 97 ; WX 556 ; N a ; B 46 -14 534 532 ;
+C 98 ; WX 611 ; N b ; B 79 -14 555 720 ;
+C 99 ; WX 556 ; N c ; B 47 -14 508 532 ;
+C 100 ; WX 611 ; N d ; B 56 -14 532 720 ;
+C 101 ; WX 556 ; N e ; B 45 -14 511 532 ;
+C 102 ; WX 278 ; N f ; B 20 0 257 734 ; L i fi ; L l fl ;
+C 103 ; WX 611 ; N g ; B 56 -212 532 532 ;
+C 104 ; WX 556 ; N h ; B 72 0 483 720 ;
+C 105 ; WX 222 ; N i ; B 78 0 144 720 ;
+C 106 ; WX 222 ; N j ; B 5 -204 151 720 ;
+C 107 ; WX 500 ; N k ; B 68 0 487 720 ;
+C 108 ; WX 222 ; N l ; B 81 0 141 720 ;
+C 109 ; WX 833 ; N m ; B 64 0 768 532 ;
+C 110 ; WX 556 ; N n ; B 72 0 483 532 ;
+C 111 ; WX 556 ; N o ; B 38 -14 518 532 ;
+C 112 ; WX 611 ; N p ; B 79 -204 555 532 ;
+C 113 ; WX 611 ; N q ; B 56 -204 532 532 ;
+C 114 ; WX 333 ; N r ; B 75 0 306 532 ;
+C 115 ; WX 500 ; N s ; B 46 -14 454 532 ;
+C 116 ; WX 278 ; N t ; B 20 -14 254 662 ;
+C 117 ; WX 556 ; N u ; B 72 -14 483 518 ;
+C 118 ; WX 500 ; N v ; B 17 0 483 518 ;
+C 119 ; WX 722 ; N w ; B 15 0 707 518 ;
+C 120 ; WX 500 ; N x ; B 18 0 481 518 ;
+C 121 ; WX 500 ; N y ; B 18 -204 482 518 ;
+C 122 ; WX 500 ; N z ; B 33 0 467 518 ;
+C 123 ; WX 333 ; N braceleft ; B 45 -191 279 739 ;
+C 124 ; WX 222 ; N bar ; B 81 0 141 739 ;
+C 125 ; WX 333 ; N braceright ; B 51 -187 285 743 ;
+C 126 ; WX 660 ; N asciitilde ; B 80 174 580 339 ;
+C 161 ; WX 333 ; N exclamdown ; B 130 -187 203 532 ;
+C 162 ; WX 556 ; N cent ; B 45 -141 506 647 ;
+C 163 ; WX 556 ; N sterling ; B 25 -14 530 705 ;
+C 164 ; WX 167 ; N fraction ; B -164 -14 331 705 ;
+C 165 ; WX 556 ; N yen ; B 4 0 552 720 ;
+C 166 ; WX 556 ; N florin ; B 13 -196 539 734 ;
+C 167 ; WX 556 ; N section ; B 48 -181 508 739 ;
+C 168 ; WX 556 ; N currency ; B 27 50 529 553 ;
+C 169 ; WX 222 ; N quotesingle ; B 85 494 137 720 ;
+C 170 ; WX 389 ; N quotedblleft ; B 86 495 310 720 ;
+C 171 ; WX 556 ; N guillemotleft ; B 113 117 443 404 ;
+C 172 ; WX 389 ; N guilsinglleft ; B 121 117 267 404 ;
+C 173 ; WX 389 ; N guilsinglright ; B 122 117 268 404 ;
+C 174 ; WX 500 ; N fi ; B 13 0 435 734 ;
+C 175 ; WX 500 ; N fl ; B 13 0 432 734 ;
+C 177 ; WX 500 ; N endash ; B 0 238 500 282 ;
+C 178 ; WX 556 ; N dagger ; B 37 -166 519 720 ;
+C 179 ; WX 556 ; N daggerdbl ; B 37 -166 519 720 ;
+C 180 ; WX 278 ; N periodcentered ; B 90 301 187 398 ;
+C 182 ; WX 650 ; N paragraph ; B 66 -146 506 720 ;
+C 183 ; WX 500 ; N bullet ; B 70 180 430 540 ;
+C 184 ; WX 222 ; N quotesinglbase ; B 80 -137 153 88 ;
+C 185 ; WX 389 ; N quotedblbase ; B 79 -137 303 88 ;
+C 186 ; WX 389 ; N quotedblright ; B 79 495 303 720 ;
+C 187 ; WX 556 ; N guillemotright ; B 113 117 443 404 ;
+C 188 ; WX 1000 ; N ellipsis ; B 131 0 870 88 ;
+C 189 ; WX 1000 ; N perthousand ; B 14 -14 985 705 ;
+C 191 ; WX 500 ; N questiondown ; B 28 -207 463 532 ;
+C 193 ; WX 333 ; N grave ; B 45 574 234 713 ;
+C 194 ; WX 333 ; N acute ; B 109 574 297 713 ;
+C 195 ; WX 333 ; N circumflex ; B 24 574 318 713 ;
+C 196 ; WX 333 ; N tilde ; B 16 586 329 688 ;
+C 197 ; WX 333 ; N macron ; B 23 612 319 657 ;
+C 198 ; WX 333 ; N breve ; B 28 580 316 706 ;
+C 199 ; WX 333 ; N dotaccent ; B 134 584 199 686 ;
+C 200 ; WX 333 ; N dieresis ; B 60 584 284 686 ;
+C 202 ; WX 333 ; N ring ; B 67 578 266 777 ;
+C 203 ; WX 333 ; N cedilla ; B 54 -207 257 0 ;
+C 205 ; WX 333 ; N hungarumlaut ; B 109 574 459 713 ;
+C 206 ; WX 333 ; N ogonek ; B 74 -190 228 0 ;
+C 207 ; WX 333 ; N caron ; B 24 574 318 713 ;
+C 208 ; WX 1000 ; N emdash ; B 0 238 1000 282 ;
+C 225 ; WX 1000 ; N AE ; B 5 0 960 720 ;
+C 227 ; WX 334 ; N ordfeminine ; B 8 307 325 739 ;
+C 232 ; WX 556 ; N Lslash ; B 0 0 535 720 ;
+C 233 ; WX 778 ; N Oslash ; B 42 -37 736 747 ;
+C 234 ; WX 1000 ; N OE ; B 41 -19 967 739 ;
+C 235 ; WX 334 ; N ordmasculine ; B 11 307 323 739 ;
+C 241 ; WX 889 ; N ae ; B 39 -14 847 532 ;
+C 245 ; WX 222 ; N dotlessi ; B 78 0 138 518 ;
+C 248 ; WX 222 ; N lslash ; B 10 0 212 720 ;
+C 249 ; WX 556 ; N oslash ; B 35 -23 521 541 ;
+C 250 ; WX 944 ; N oe ; B 36 -14 904 532 ;
+C 251 ; WX 500 ; N germandbls ; B 52 -14 459 734 ;
+C -1 ; WX 667 ; N Aacute ; B 15 0 651 915 ;
+C -1 ; WX 667 ; N Acircumflex ; B 15 0 651 915 ;
+C -1 ; WX 667 ; N Adieresis ; B 15 0 651 888 ;
+C -1 ; WX 667 ; N Agrave ; B 15 0 651 915 ;
+C -1 ; WX 667 ; N Aring ; B 15 0 651 979 ;
+C -1 ; WX 667 ; N Atilde ; B 15 0 651 890 ;
+C -1 ; WX 722 ; N Ccedilla ; B 48 -207 670 739 ;
+C -1 ; WX 611 ; N Eacute ; B 81 0 570 915 ;
+C -1 ; WX 611 ; N Ecircumflex ; B 81 0 570 915 ;
+C -1 ; WX 611 ; N Edieresis ; B 81 0 570 888 ;
+C -1 ; WX 611 ; N Egrave ; B 81 0 570 915 ;
+C -1 ; WX 722 ; N Eth ; B 10 0 669 720 ;
+C -1 ; WX 278 ; N Iacute ; B 62 0 250 915 ;
+C -1 ; WX 278 ; N Icircumflex ; B -23 0 271 915 ;
+C -1 ; WX 278 ; N Idieresis ; B 13 0 237 888 ;
+C -1 ; WX 278 ; N Igrave ; B 18 0 207 915 ;
+C -1 ; WX 722 ; N Ntilde ; B 79 0 642 890 ;
+C -1 ; WX 778 ; N Oacute ; B 53 -19 724 915 ;
+C -1 ; WX 778 ; N Ocircumflex ; B 53 -19 724 915 ;
+C -1 ; WX 778 ; N Odieresis ; B 53 -19 724 888 ;
+C -1 ; WX 778 ; N Ograve ; B 53 -19 724 915 ;
+C -1 ; WX 778 ; N Otilde ; B 53 -19 724 890 ;
+C -1 ; WX 611 ; N Scaron ; B 43 -19 567 915 ;
+C -1 ; WX 611 ; N Thorn ; B 78 0 576 720 ;
+C -1 ; WX 722 ; N Uacute ; B 82 -19 640 915 ;
+C -1 ; WX 722 ; N Ucircumflex ; B 82 -19 640 915 ;
+C -1 ; WX 722 ; N Udieresis ; B 82 -19 640 888 ;
+C -1 ; WX 722 ; N Ugrave ; B 82 -19 640 915 ;
+C -1 ; WX 611 ; N Yacute ; B 12 0 598 915 ;
+C -1 ; WX 611 ; N Ydieresis ; B 12 0 598 888 ;
+C -1 ; WX 611 ; N Zcaron ; B 31 0 579 915 ;
+C -1 ; WX 556 ; N aacute ; B 46 -14 534 713 ;
+C -1 ; WX 556 ; N acircumflex ; B 46 -14 534 713 ;
+C -1 ; WX 556 ; N adieresis ; B 46 -14 534 686 ;
+C -1 ; WX 556 ; N agrave ; B 46 -14 534 713 ;
+C -1 ; WX 556 ; N aring ; B 46 -14 534 777 ;
+C -1 ; WX 556 ; N atilde ; B 46 -14 534 688 ;
+C -1 ; WX 222 ; N brokenbar ; B 81 0 141 739 ;
+C -1 ; WX 556 ; N ccedilla ; B 47 -207 508 532 ;
+C -1 ; WX 800 ; N copyright ; B 21 -19 779 739 ;
+C -1 ; WX 400 ; N degree ; B 50 405 350 705 ;
+C -1 ; WX 660 ; N divide ; B 80 0 580 500 ;
+C -1 ; WX 556 ; N eacute ; B 45 -14 511 713 ;
+C -1 ; WX 556 ; N ecircumflex ; B 45 -14 511 713 ;
+C -1 ; WX 556 ; N edieresis ; B 45 -14 511 686 ;
+C -1 ; WX 556 ; N egrave ; B 45 -14 511 713 ;
+C -1 ; WX 556 ; N eth ; B 38 -14 518 739 ;
+C -1 ; WX 222 ; N iacute ; B 34 0 222 713 ;
+C -1 ; WX 222 ; N icircumflex ; B -51 0 243 713 ;
+C -1 ; WX 222 ; N idieresis ; B -15 0 209 686 ;
+C -1 ; WX 222 ; N igrave ; B -10 0 179 713 ;
+C -1 ; WX 660 ; N logicalnot ; B 80 112 580 378 ;
+C -1 ; WX 660 ; N minus ; B 80 220 580 280 ;
+C -1 ; WX 556 ; N mu ; B 72 -204 483 518 ;
+C -1 ; WX 660 ; N multiply ; B 83 6 578 500 ;
+C -1 ; WX 556 ; N ntilde ; B 72 0 483 688 ;
+C -1 ; WX 556 ; N oacute ; B 38 -14 518 713 ;
+C -1 ; WX 556 ; N ocircumflex ; B 38 -14 518 713 ;
+C -1 ; WX 556 ; N odieresis ; B 38 -14 518 686 ;
+C -1 ; WX 556 ; N ograve ; B 38 -14 518 713 ;
+C -1 ; WX 834 ; N onehalf ; B 40 -14 794 739 ;
+C -1 ; WX 834 ; N onequarter ; B 40 -14 794 739 ;
+C -1 ; WX 333 ; N onesuperior ; B 87 316 247 739 ;
+C -1 ; WX 556 ; N otilde ; B 38 -14 518 688 ;
+C -1 ; WX 660 ; N plusminus ; B 80 0 580 500 ;
+C -1 ; WX 800 ; N registered ; B 21 -19 779 739 ;
+C -1 ; WX 500 ; N scaron ; B 46 -14 454 713 ;
+C -1 ; WX 611 ; N thorn ; B 79 -204 555 720 ;
+C -1 ; WX 834 ; N threequarters ; B 40 -14 794 739 ;
+C -1 ; WX 333 ; N threesuperior ; B 11 308 322 739 ;
+C -1 ; WX 940 ; N trademark ; B 29 299 859 720 ;
+C -1 ; WX 333 ; N twosuperior ; B 15 316 318 739 ;
+C -1 ; WX 556 ; N uacute ; B 72 -14 483 713 ;
+C -1 ; WX 556 ; N ucircumflex ; B 72 -14 483 713 ;
+C -1 ; WX 556 ; N udieresis ; B 72 -14 483 686 ;
+C -1 ; WX 556 ; N ugrave ; B 72 -14 483 713 ;
+C -1 ; WX 500 ; N yacute ; B 18 -204 482 713 ;
+C -1 ; WX 500 ; N ydieresis ; B 18 -204 482 686 ;
+C -1 ; WX 500 ; N zcaron ; B 33 0 467 713 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 115
+
+KPX A y -18
+KPX A w -18
+KPX A v -18
+KPX A quoteright -74
+KPX A Y -74
+KPX A W -37
+KPX A V -74
+KPX A T -92
+
+KPX F period -129
+KPX F comma -129
+KPX F A -55
+
+KPX L y -37
+KPX L quoteright -74
+KPX L Y -111
+KPX L W -55
+KPX L V -92
+KPX L T -92
+
+KPX P period -129
+KPX P comma -129
+KPX P A -74
+
+KPX R y 0
+KPX R Y -37
+KPX R W -18
+KPX R V -18
+KPX R T -18
+
+KPX T y -84
+KPX T w -84
+KPX T u -92
+KPX T semicolon -111
+KPX T s -111
+KPX T r -92
+KPX T period -111
+KPX T o -111
+KPX T i 0
+KPX T hyphen -129
+KPX T e -111
+KPX T comma -111
+KPX T colon -111
+KPX T c -111
+KPX T a -111
+KPX T A -92
+
+KPX V y -18
+KPX V u -37
+KPX V semicolon -74
+KPX V r -37
+KPX V period -129
+KPX V o -55
+KPX V i -18
+KPX V hyphen -55
+KPX V e -55
+KPX V comma -129
+KPX V colon -74
+KPX V a -55
+KPX V A -74
+
+KPX W y 0
+KPX W u -18
+KPX W semicolon -18
+KPX W r -18
+KPX W period -74
+KPX W o -18
+KPX W i 0
+KPX W hyphen 0
+KPX W e -18
+KPX W comma -74
+KPX W colon -18
+KPX W a -37
+KPX W A -37
+
+KPX Y v -40
+KPX Y u -37
+KPX Y semicolon -92
+KPX Y q -92
+KPX Y period -111
+KPX Y p -37
+KPX Y o -92
+KPX Y i -20
+KPX Y hyphen -111
+KPX Y e -92
+KPX Y comma -111
+KPX Y colon -92
+KPX Y a -92
+KPX Y A -74
+
+KPX f quoteright 18
+KPX f f -18
+
+KPX quoteleft quoteleft -18
+
+KPX quoteright t -18
+KPX quoteright s -74
+KPX quoteright quoteright -18
+
+KPX r z 0
+KPX r y 18
+KPX r x 0
+KPX r w 0
+KPX r v 0
+KPX r u 0
+KPX r t 18
+KPX r r 0
+KPX r quoteright 0
+KPX r q -18
+KPX r period -92
+KPX r o -18
+KPX r n 18
+KPX r m 18
+KPX r hyphen -55
+KPX r h 0
+KPX r g 0
+KPX r f 18
+KPX r e -18
+KPX r d -18
+KPX r comma -92
+KPX r c -18
+
+KPX v period -74
+KPX v comma -74
+
+KPX w period -55
+KPX w comma -55
+
+KPX y period -92
+KPX y comma -92
+EndKernPairs
+EndKernData
+StartComposites 58
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 139 202 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 83 0 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 139 202 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 83 0 ;
+CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 194 0 ;
+CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 111 0 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 139 202 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 83 0 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 139 202 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 83 0 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 194 202 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 194 202 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 194 202 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 194 202 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 111 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 111 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 111 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 111 0 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute -47 202 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex -47 202 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis -47 202 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave -27 202 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -75 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -75 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -75 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -55 0 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 139 202 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 139 202 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 139 202 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 139 202 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 111 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 111 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 111 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 111 0 ;
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 167 202 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 167 202 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 167 202 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 167 202 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 111 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 111 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 111 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 111 0 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 222 202 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 222 202 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 222 202 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 222 202 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 111 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 111 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 111 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 111 0 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 167 202 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 111 0 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 194 202 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 111 0 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 222 202 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 111 0 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 187 202 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 111 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/He-Lt+ b/font/font/He-Lt+
new file mode 100644
index 0000000..49e014c
--- /dev/null
+++ b/font/font/He-Lt+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 722 ; N Ccaron ; B 48 -19 670 925 ;
+C -1 ; WX 556 ; N ccaron ; B 47 -14 508 713 ;
+C -1 ; WX 722 ; N Dcaron ; B 81 0 669 925 ;
+C -1 ; WX 662 ; N dcaron ; B 56 -14 612 792 ;
+C -1 ; WX 611 ; N Ecaron ; B 81 0 570 925 ;
+C -1 ; WX 556 ; N ecaron ; B 45 -14 511 713 ;
+C -1 ; WX 556 ; N Lcaron ; B 81 0 535 792 ;
+C -1 ; WX 556 ; N Lacute ; B 81 0 535 925 ;
+C -1 ; WX 273 ; N lcaron ; B 81 0 221 792 ;
+C -1 ; WX 222 ; N lacute ; B 73 0 261 925 ;
+C -1 ; WX 722 ; N Ncaron ; B 79 0 642 925 ;
+C -1 ; WX 556 ; N ncaron ; B 72 0 483 713 ;
+C -1 ; WX 667 ; N Rcaron ; B 80 0 612 925 ;
+C -1 ; WX 667 ; N Racute ; B 80 0 612 925 ;
+C -1 ; WX 333 ; N rcaron ; B 24 0 318 713 ;
+C -1 ; WX 333 ; N racute ; B 75 0 316 713 ;
+C -1 ; WX 556 ; N Tcaron ; B 16 0 540 925 ;
+C -1 ; WX 329 ; N tcaron ; B 20 -14 334 720 ;
+C -1 ; WX 722 ; N Uring ; B 82 -19 640 925 ;
+C -1 ; WX 556 ; N uring ; B 72 -14 483 777 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 256 212 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 134 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 194 212 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 459 72 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 139 212 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 111 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 100 72 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 111 212 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 68 72 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute -36 212 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 194 212 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 111 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 167 212 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 203 212 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 0 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 19 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 111 212 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 181 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 194 148 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 111 0 ;
+EndBuildComposites
diff --git a/font/font/He-LtO b/font/font/He-LtO
new file mode 100644
index 0000000..96612d1
--- /dev/null
+++ b/font/font/He-LtO
@@ -0,0 +1,445 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1988 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date:Mon Jan 11 17:38:44 PST 1988
+FontName Helvetica-LightOblique
+EncodingScheme AdobeStandardEncoding
+FullName Helvetica Light Oblique
+FamilyName Helvetica
+Weight Light
+ItalicAngle -12.0
+IsFixedPitch false
+UnderlinePosition -90
+UnderlineThickness 58
+Version 001.002
+Notice Copyright (c) 1985, 1987, 1988 Adobe Systems Incorporated. All Rights Reserved.Helvetica is a trademark of Linotype Company.
+FontBBox -167 -212 1110 979
+CapHeight 720
+XHeight 518
+Descender -204
+Ascender 720
+StartCharMetrics 228
+C 32 ; WX 278 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 333 ; N exclam ; B 130 0 356 720 ;
+C 34 ; WX 278 ; N quotedbl ; B 162 494 373 720 ;
+C 35 ; WX 556 ; N numbersign ; B 75 0 633 698 ;
+C 36 ; WX 556 ; N dollar ; B 75 -95 613 766 ;
+C 37 ; WX 889 ; N percent ; B 176 -14 860 705 ;
+C 38 ; WX 667 ; N ampersand ; B 77 -19 646 720 ;
+C 39 ; WX 222 ; N quoteright ; B 185 495 306 720 ;
+C 40 ; WX 333 ; N parenleft ; B 97 -191 434 739 ;
+C 41 ; WX 333 ; N parenright ; B 15 -191 353 739 ;
+C 42 ; WX 389 ; N asterisk ; B 172 434 472 720 ;
+C 43 ; WX 660 ; N plus ; B 127 0 640 500 ;
+C 44 ; WX 278 ; N comma ; B 73 -137 194 88 ;
+C 45 ; WX 333 ; N hyphen ; B 89 229 355 291 ;
+C 46 ; WX 278 ; N period ; B 102 0 194 88 ;
+C 47 ; WX 278 ; N slash ; B -22 -90 445 739 ;
+C 48 ; WX 556 ; N zero ; B 93 -14 609 705 ;
+C 49 ; WX 556 ; N one ; B 231 0 516 705 ;
+C 50 ; WX 556 ; N two ; B 48 0 628 705 ;
+C 51 ; WX 556 ; N three ; B 74 -14 605 705 ;
+C 52 ; WX 556 ; N four ; B 73 0 570 698 ;
+C 53 ; WX 556 ; N five ; B 71 -14 616 698 ;
+C 54 ; WX 556 ; N six ; B 94 -14 617 705 ;
+C 55 ; WX 556 ; N seven ; B 152 0 656 698 ;
+C 56 ; WX 556 ; N eight ; B 80 -14 601 705 ;
+C 57 ; WX 556 ; N nine ; B 84 -14 607 705 ;
+C 58 ; WX 278 ; N colon ; B 102 0 280 492 ;
+C 59 ; WX 278 ; N semicolon ; B 73 -137 280 492 ;
+C 60 ; WX 660 ; N less ; B 129 -6 687 505 ;
+C 61 ; WX 660 ; N equal ; B 106 124 660 378 ;
+C 62 ; WX 660 ; N greater ; B 79 -6 640 505 ;
+C 63 ; WX 500 ; N question ; B 148 0 594 739 ;
+C 64 ; WX 800 ; N at ; B 108 -19 857 739 ;
+C 65 ; WX 667 ; N A ; B 15 0 651 720 ;
+C 66 ; WX 667 ; N B ; B 81 0 697 720 ;
+C 67 ; WX 722 ; N C ; B 111 -19 771 739 ;
+C 68 ; WX 722 ; N D ; B 81 0 758 720 ;
+C 69 ; WX 611 ; N E ; B 81 0 713 720 ;
+C 70 ; WX 556 ; N F ; B 74 0 691 720 ;
+C 71 ; WX 778 ; N G ; B 116 -19 796 739 ;
+C 72 ; WX 722 ; N H ; B 80 0 795 720 ;
+C 73 ; WX 278 ; N I ; B 105 0 326 720 ;
+C 74 ; WX 500 ; N J ; B 58 -19 568 720 ;
+C 75 ; WX 667 ; N K ; B 85 0 752 720 ;
+C 76 ; WX 556 ; N L ; B 81 0 547 720 ;
+C 77 ; WX 833 ; N M ; B 78 0 908 720 ;
+C 78 ; WX 722 ; N N ; B 79 0 795 720 ;
+C 79 ; WX 778 ; N O ; B 117 -19 812 739 ;
+C 80 ; WX 611 ; N P ; B 78 0 693 720 ;
+C 81 ; WX 778 ; N Q ; B 112 -52 808 739 ;
+C 82 ; WX 667 ; N R ; B 80 0 726 720 ;
+C 83 ; WX 611 ; N S ; B 82 -19 663 739 ;
+C 84 ; WX 556 ; N T ; B 157 0 693 720 ;
+C 85 ; WX 722 ; N U ; B 129 -19 793 720 ;
+C 86 ; WX 611 ; N V ; B 171 0 746 720 ;
+C 87 ; WX 889 ; N W ; B 167 0 1028 720 ;
+C 88 ; WX 611 ; N X ; B 18 0 734 720 ;
+C 89 ; WX 611 ; N Y ; B 165 0 751 720 ;
+C 90 ; WX 611 ; N Z ; B 31 0 729 720 ;
+C 91 ; WX 333 ; N bracketleft ; B 50 -191 439 739 ;
+C 92 ; WX 278 ; N backslash ; B 111 0 324 739 ;
+C 93 ; WX 333 ; N bracketright ; B 10 -191 399 739 ;
+C 94 ; WX 660 ; N asciicircum ; B 125 245 638 698 ;
+C 95 ; WX 500 ; N underscore ; B -25 -119 487 -61 ;
+C 96 ; WX 222 ; N quoteleft ; B 174 495 295 720 ;
+C 97 ; WX 556 ; N a ; B 71 -14 555 532 ;
+C 98 ; WX 611 ; N b ; B 79 -14 619 720 ;
+C 99 ; WX 556 ; N c ; B 92 -14 576 532 ;
+C 100 ; WX 611 ; N d ; B 101 -14 685 720 ;
+C 101 ; WX 556 ; N e ; B 90 -14 575 532 ;
+C 102 ; WX 278 ; N f ; B 97 0 412 734 ; L i fi ; L l fl ;
+C 103 ; WX 611 ; N g ; B 56 -212 642 532 ;
+C 104 ; WX 556 ; N h ; B 72 0 565 720 ;
+C 105 ; WX 222 ; N i ; B 81 0 297 720 ;
+C 106 ; WX 222 ; N j ; B -38 -204 304 720 ;
+C 107 ; WX 500 ; N k ; B 68 0 574 720 ;
+C 108 ; WX 222 ; N l ; B 81 0 294 720 ;
+C 109 ; WX 833 ; N m ; B 64 0 848 532 ;
+C 110 ; WX 556 ; N n ; B 72 0 565 532 ;
+C 111 ; WX 556 ; N o ; B 84 -14 582 532 ;
+C 112 ; WX 611 ; N p ; B 36 -204 620 532 ;
+C 113 ; WX 611 ; N q ; B 102 -204 642 532 ;
+C 114 ; WX 333 ; N r ; B 75 0 419 532 ;
+C 115 ; WX 500 ; N s ; B 78 -14 519 532 ;
+C 116 ; WX 278 ; N t ; B 108 -14 360 662 ;
+C 117 ; WX 556 ; N u ; B 103 -14 593 518 ;
+C 118 ; WX 500 ; N v ; B 127 0 593 518 ;
+C 119 ; WX 722 ; N w ; B 125 0 817 518 ;
+C 120 ; WX 500 ; N x ; B 18 0 584 518 ;
+C 121 ; WX 500 ; N y ; B 26 -204 592 518 ;
+C 122 ; WX 500 ; N z ; B 33 0 564 518 ;
+C 123 ; WX 333 ; N braceleft ; B 103 -191 436 739 ;
+C 124 ; WX 222 ; N bar ; B 81 0 298 739 ;
+C 125 ; WX 333 ; N braceright ; B 12 -187 344 743 ;
+C 126 ; WX 660 ; N asciitilde ; B 127 174 645 339 ;
+C 161 ; WX 333 ; N exclamdown ; B 90 -187 316 532 ;
+C 162 ; WX 556 ; N cent ; B 90 -141 574 647 ;
+C 163 ; WX 556 ; N sterling ; B 51 -14 613 705 ;
+C 164 ; WX 167 ; N fraction ; B -167 -14 481 705 ;
+C 165 ; WX 556 ; N yen ; B 110 0 705 720 ;
+C 166 ; WX 556 ; N florin ; B -26 -196 691 734 ;
+C 167 ; WX 556 ; N section ; B 91 -181 581 739 ;
+C 168 ; WX 556 ; N currency ; B 55 50 629 553 ;
+C 169 ; WX 222 ; N quotesingle ; B 190 494 290 720 ;
+C 170 ; WX 389 ; N quotedblleft ; B 191 495 463 720 ;
+C 171 ; WX 556 ; N guillemotleft ; B 161 117 529 404 ;
+C 172 ; WX 389 ; N guilsinglleft ; B 169 117 353 404 ;
+C 173 ; WX 389 ; N guilsinglright ; B 147 117 330 404 ;
+C 174 ; WX 500 ; N fi ; B 92 0 588 734 ;
+C 175 ; WX 500 ; N fl ; B 92 0 585 734 ;
+C 177 ; WX 500 ; N endash ; B 51 238 560 282 ;
+C 178 ; WX 556 ; N dagger ; B 130 -166 623 720 ;
+C 179 ; WX 556 ; N daggerdbl ; B 49 -166 625 720 ;
+C 180 ; WX 278 ; N periodcentered ; B 163 301 262 398 ;
+C 182 ; WX 650 ; N paragraph ; B 174 -146 659 720 ;
+C 183 ; WX 500 ; N bullet ; B 142 180 510 540 ;
+C 184 ; WX 222 ; N quotesinglbase ; B 51 -137 172 88 ;
+C 185 ; WX 389 ; N quotedblbase ; B 50 -137 322 88 ;
+C 186 ; WX 389 ; N quotedblright ; B 184 495 456 720 ;
+C 187 ; WX 556 ; N guillemotright ; B 138 117 505 404 ;
+C 188 ; WX 1000 ; N ellipsis ; B 131 0 889 88 ;
+C 189 ; WX 1000 ; N perthousand ; B 83 -14 1020 705 ;
+C 191 ; WX 500 ; N questiondown ; B 19 -207 465 532 ;
+C 193 ; WX 333 ; N grave ; B 197 574 356 713 ;
+C 194 ; WX 333 ; N acute ; B 231 574 449 713 ;
+C 195 ; WX 333 ; N circumflex ; B 146 574 440 713 ;
+C 196 ; WX 333 ; N tilde ; B 141 586 475 688 ;
+C 197 ; WX 333 ; N macron ; B 153 612 459 657 ;
+C 198 ; WX 333 ; N breve ; B 177 580 466 706 ;
+C 199 ; WX 333 ; N dotaccent ; B 258 584 345 686 ;
+C 200 ; WX 333 ; N dieresis ; B 184 584 430 686 ;
+C 202 ; WX 333 ; N ring ; B 209 578 412 777 ;
+C 203 ; WX 333 ; N cedilla ; B 14 -207 233 0 ;
+C 205 ; WX 333 ; N hungarumlaut ; B 231 574 611 713 ;
+C 206 ; WX 333 ; N ogonek ; B 50 -190 199 0 ;
+C 207 ; WX 333 ; N caron ; B 176 574 470 713 ;
+C 208 ; WX 1000 ; N emdash ; B 51 238 1060 282 ;
+C 225 ; WX 1000 ; N AE ; B 5 0 1101 720 ;
+C 227 ; WX 334 ; N ordfeminine ; B 73 307 423 739 ;
+C 232 ; WX 556 ; N Lslash ; B 68 0 547 720 ;
+C 233 ; WX 778 ; N Oslash ; B 41 -37 887 747 ;
+C 234 ; WX 1000 ; N OE ; B 104 -19 1110 739 ;
+C 235 ; WX 334 ; N ordmasculine ; B 76 307 450 739 ;
+C 241 ; WX 889 ; N ae ; B 63 -14 913 532 ;
+C 245 ; WX 222 ; N dotlessi ; B 78 0 248 518 ;
+C 248 ; WX 222 ; N lslash ; B 74 0 316 720 ;
+C 249 ; WX 556 ; N oslash ; B 36 -23 629 541 ;
+C 250 ; WX 944 ; N oe ; B 82 -14 970 532 ;
+C 251 ; WX 500 ; N germandbls ; B 52 -14 554 734 ;
+C -1 ; WX 667 ; N Aacute ; B 15 0 659 915 ;
+C -1 ; WX 667 ; N Acircumflex ; B 15 0 651 915 ;
+C -1 ; WX 667 ; N Adieresis ; B 15 0 651 888 ;
+C -1 ; WX 667 ; N Agrave ; B 15 0 651 915 ;
+C -1 ; WX 667 ; N Aring ; B 15 0 651 979 ;
+C -1 ; WX 667 ; N Atilde ; B 15 0 685 890 ;
+C -1 ; WX 722 ; N Ccedilla ; B 111 -207 771 739 ;
+C -1 ; WX 611 ; N Eacute ; B 81 0 713 915 ;
+C -1 ; WX 611 ; N Ecircumflex ; B 81 0 713 915 ;
+C -1 ; WX 611 ; N Edieresis ; B 81 0 713 888 ;
+C -1 ; WX 611 ; N Egrave ; B 81 0 713 915 ;
+C -1 ; WX 722 ; N Eth ; B 81 0 758 720 ;
+C -1 ; WX 278 ; N Iacute ; B 105 0 445 915 ;
+C -1 ; WX 278 ; N Icircumflex ; B 105 0 436 915 ;
+C -1 ; WX 278 ; N Idieresis ; B 105 0 426 888 ;
+C -1 ; WX 278 ; N Igrave ; B 105 0 372 915 ;
+C -1 ; WX 722 ; N Ntilde ; B 79 0 795 890 ;
+C -1 ; WX 778 ; N Oacute ; B 117 -19 812 915 ;
+C -1 ; WX 778 ; N Ocircumflex ; B 117 -19 812 915 ;
+C -1 ; WX 778 ; N Odieresis ; B 117 -19 812 888 ;
+C -1 ; WX 778 ; N Ograve ; B 117 -19 812 915 ;
+C -1 ; WX 778 ; N Otilde ; B 117 -19 812 890 ;
+C -1 ; WX 611 ; N Scaron ; B 82 -19 663 915 ;
+C -1 ; WX 611 ; N Thorn ; B 78 0 661 720 ;
+C -1 ; WX 722 ; N Uacute ; B 129 -19 793 915 ;
+C -1 ; WX 722 ; N Ucircumflex ; B 129 -19 793 915 ;
+C -1 ; WX 722 ; N Udieresis ; B 129 -19 793 888 ;
+C -1 ; WX 722 ; N Ugrave ; B 129 -19 793 915 ;
+C -1 ; WX 611 ; N Yacute ; B 165 0 751 915 ;
+C -1 ; WX 611 ; N Ydieresis ; B 165 0 751 888 ;
+C -1 ; WX 611 ; N Zcaron ; B 31 0 729 915 ;
+C -1 ; WX 556 ; N aacute ; B 71 -14 561 713 ;
+C -1 ; WX 556 ; N acircumflex ; B 71 -14 555 713 ;
+C -1 ; WX 556 ; N adieresis ; B 71 -14 555 686 ;
+C -1 ; WX 556 ; N agrave ; B 71 -14 555 713 ;
+C -1 ; WX 556 ; N aring ; B 71 -14 555 777 ;
+C -1 ; WX 556 ; N atilde ; B 71 -14 587 688 ;
+C -1 ; WX 222 ; N brokenbar ; B 81 0 298 739 ;
+C -1 ; WX 556 ; N ccedilla ; B 92 -207 576 532 ;
+C -1 ; WX 800 ; N copyright ; B 89 -19 864 739 ;
+C -1 ; WX 400 ; N degree ; B 165 405 471 705 ;
+C -1 ; WX 660 ; N divide ; B 127 0 640 500 ;
+C -1 ; WX 556 ; N eacute ; B 90 -14 575 713 ;
+C -1 ; WX 556 ; N ecircumflex ; B 90 -14 575 713 ;
+C -1 ; WX 556 ; N edieresis ; B 90 -14 575 686 ;
+C -1 ; WX 556 ; N egrave ; B 90 -14 575 713 ;
+C -1 ; WX 556 ; N eth ; B 84 -14 582 739 ;
+C -1 ; WX 222 ; N iacute ; B 78 0 374 713 ;
+C -1 ; WX 222 ; N icircumflex ; B 71 0 365 713 ;
+C -1 ; WX 222 ; N idieresis ; B 78 0 355 686 ;
+C -1 ; WX 222 ; N igrave ; B 78 0 301 713 ;
+C -1 ; WX 660 ; N logicalnot ; B 148 112 660 378 ;
+C -1 ; WX 660 ; N minus ; B 127 220 640 280 ;
+C -1 ; WX 556 ; N mu ; B 29 -204 593 518 ;
+C -1 ; WX 660 ; N multiply ; B 92 6 677 500 ;
+C -1 ; WX 556 ; N ntilde ; B 72 0 587 688 ;
+C -1 ; WX 556 ; N oacute ; B 84 -14 582 713 ;
+C -1 ; WX 556 ; N ocircumflex ; B 84 -14 582 713 ;
+C -1 ; WX 556 ; N odieresis ; B 84 -14 582 686 ;
+C -1 ; WX 556 ; N ograve ; B 84 -14 582 713 ;
+C -1 ; WX 834 ; N onehalf ; B 125 -14 862 739 ;
+C -1 ; WX 834 ; N onequarter ; B 165 -14 823 739 ;
+C -1 ; WX 333 ; N onesuperior ; B 221 316 404 739 ;
+C -1 ; WX 556 ; N otilde ; B 84 -14 587 688 ;
+C -1 ; WX 660 ; N plusminus ; B 80 0 650 500 ;
+C -1 ; WX 800 ; N registered ; B 89 -19 864 739 ;
+C -1 ; WX 500 ; N scaron ; B 78 -14 554 713 ;
+C -1 ; WX 611 ; N thorn ; B 36 -204 620 720 ;
+C -1 ; WX 834 ; N threequarters ; B 131 -14 853 739 ;
+C -1 ; WX 333 ; N threesuperior ; B 102 308 444 739 ;
+C -1 ; WX 940 ; N trademark ; B 174 299 1012 720 ;
+C -1 ; WX 333 ; N twosuperior ; B 82 316 453 739 ;
+C -1 ; WX 556 ; N uacute ; B 103 -14 593 713 ;
+C -1 ; WX 556 ; N ucircumflex ; B 103 -14 593 713 ;
+C -1 ; WX 556 ; N udieresis ; B 103 -14 593 686 ;
+C -1 ; WX 556 ; N ugrave ; B 103 -14 593 713 ;
+C -1 ; WX 500 ; N yacute ; B 26 -204 592 713 ;
+C -1 ; WX 500 ; N ydieresis ; B 26 -204 592 686 ;
+C -1 ; WX 500 ; N zcaron ; B 33 0 564 713 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 115
+
+KPX A y -18
+KPX A w -18
+KPX A v -18
+KPX A quoteright -74
+KPX A Y -74
+KPX A W -37
+KPX A V -74
+KPX A T -92
+
+KPX F period -129
+KPX F comma -129
+KPX F A -55
+
+KPX L y -37
+KPX L quoteright -74
+KPX L Y -111
+KPX L W -55
+KPX L V -92
+KPX L T -92
+
+KPX P period -129
+KPX P comma -129
+KPX P A -74
+
+KPX R y 0
+KPX R Y -37
+KPX R W -18
+KPX R V -18
+KPX R T -18
+
+KPX T y -84
+KPX T w -84
+KPX T u -92
+KPX T semicolon -111
+KPX T s -111
+KPX T r -92
+KPX T period -111
+KPX T o -111
+KPX T i 0
+KPX T hyphen -129
+KPX T e -111
+KPX T comma -111
+KPX T colon -111
+KPX T c -111
+KPX T a -111
+KPX T A -92
+
+KPX V y -18
+KPX V u -37
+KPX V semicolon -74
+KPX V r -37
+KPX V period -129
+KPX V o -55
+KPX V i -18
+KPX V hyphen -55
+KPX V e -55
+KPX V comma -129
+KPX V colon -74
+KPX V a -55
+KPX V A -74
+
+KPX W y 0
+KPX W u -18
+KPX W semicolon -18
+KPX W r -18
+KPX W period -74
+KPX W o -18
+KPX W i 0
+KPX W hyphen 0
+KPX W e -18
+KPX W comma -74
+KPX W colon -18
+KPX W a -37
+KPX W A -37
+
+KPX Y v -40
+KPX Y u -37
+KPX Y semicolon -92
+KPX Y q -92
+KPX Y period -111
+KPX Y p -37
+KPX Y o -92
+KPX Y i -20
+KPX Y hyphen -111
+KPX Y e -92
+KPX Y comma -111
+KPX Y colon -92
+KPX Y a -92
+KPX Y A -74
+
+KPX f quoteright 18
+KPX f f -18
+
+KPX quoteleft quoteleft -18
+
+KPX quoteright t -18
+KPX quoteright s -74
+KPX quoteright quoteright -18
+
+KPX r z 0
+KPX r y 18
+KPX r x 0
+KPX r w 0
+KPX r v 0
+KPX r u 0
+KPX r t 18
+KPX r r 0
+KPX r quoteright 0
+KPX r q -18
+KPX r period -92
+KPX r o -18
+KPX r n 18
+KPX r m 18
+KPX r hyphen -55
+KPX r h 0
+KPX r g 0
+KPX r f 18
+KPX r e -18
+KPX r d -18
+KPX r comma -92
+KPX r c -18
+
+KPX v period -74
+KPX v comma -74
+
+KPX w period -55
+KPX w comma -55
+
+KPX y period -92
+KPX y comma -92
+EndKernPairs
+EndKernData
+StartComposites 58
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 139 202 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 83 0 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 139 202 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 83 0 ;
+CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 194 0 ;
+CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 111 0 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 139 202 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 83 0 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 139 202 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 83 0 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 194 202 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 194 202 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 194 202 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 194 202 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 111 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 111 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 111 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 111 0 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute -47 202 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex -47 202 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis -47 202 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave -27 202 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -75 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -75 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -75 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -55 0 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 139 202 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 139 202 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 139 202 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 139 202 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 111 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 111 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 111 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 111 0 ;
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 167 202 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 167 202 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 167 202 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 167 202 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 111 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 111 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 111 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 111 0 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 222 202 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 222 202 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 222 202 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 222 202 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 111 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 111 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 111 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 111 0 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 167 202 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 111 0 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 194 202 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 111 0 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 222 202 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 111 0 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 187 202 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 111 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/He-LtO+ b/font/font/He-LtO+
new file mode 100644
index 0000000..49c6ac2
--- /dev/null
+++ b/font/font/He-LtO+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 722 ; N Ccaron ; B 111 -19 775 925 ;
+C -1 ; WX 556 ; N ccaron ; B 92 -14 605 713 ;
+C -1 ; WX 722 ; N Dcaron ; B 81 0 758 925 ;
+C -1 ; WX 696 ; N dcaron ; B 101 -14 818 792 ;
+C -1 ; WX 611 ; N Ecaron ; B 81 0 713 925 ;
+C -1 ; WX 556 ; N ecaron ; B 90 -14 581 713 ;
+C -1 ; WX 556 ; N Lcaron ; B 81 0 547 792 ;
+C -1 ; WX 556 ; N Lacute ; B 81 0 605 925 ;
+C -1 ; WX 307 ; N lcaron ; B 81 0 427 792 ;
+C -1 ; WX 222 ; N lacute ; B 81 0 461 925 ;
+C -1 ; WX 722 ; N Ncaron ; B 79 0 795 925 ;
+C -1 ; WX 556 ; N ncaron ; B 72 0 581 713 ;
+C -1 ; WX 667 ; N Rcaron ; B 80 0 726 925 ;
+C -1 ; WX 667 ; N Racute ; B 80 0 726 925 ;
+C -1 ; WX 333 ; N rcaron ; B 75 0 470 713 ;
+C -1 ; WX 333 ; N racute ; B 75 0 471 713 ;
+C -1 ; WX 556 ; N Tcaron ; B 157 0 693 925 ;
+C -1 ; WX 363 ; N tcaron ; B 108 -14 493 720 ;
+C -1 ; WX 722 ; N Uring ; B 129 -19 793 925 ;
+C -1 ; WX 556 ; N uring ; B 103 -14 593 777 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 305 212 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 135 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 239 212 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 512 72 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 184 212 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 111 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 153 72 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 156 212 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 121 72 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 12 212 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 239 212 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 111 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 212 212 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 253 212 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 0 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 22 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 156 212 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 187 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 225 148 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 111 0 ;
+EndBuildComposites
diff --git a/font/font/He-Nr b/font/font/He-Nr
new file mode 100644
index 0000000..5a08aa8
--- /dev/null
+++ b/font/font/He-Nr
@@ -0,0 +1,612 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All rights reserved.
+Comment Creation Date: Thu Mar 15 11:04:57 1990
+Comment UniqueID 28380
+Comment VMusage 7572 42473
+FontName Helvetica-Narrow
+FullName Helvetica Narrow
+FamilyName Helvetica
+Weight Medium
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -136 -225 820 931
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.006
+Notice Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All rights reserved.Helvetica is a trademark of Linotype AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 718
+XHeight 523
+Ascender 718
+Descender -207
+StartCharMetrics 228
+C 32 ; WX 228 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 228 ; N exclam ; B 74 0 153 718 ;
+C 34 ; WX 291 ; N quotedbl ; B 57 463 234 718 ;
+C 35 ; WX 456 ; N numbersign ; B 23 0 434 688 ;
+C 36 ; WX 456 ; N dollar ; B 26 -115 426 775 ;
+C 37 ; WX 729 ; N percent ; B 32 -19 697 703 ;
+C 38 ; WX 547 ; N ampersand ; B 36 -15 529 718 ;
+C 39 ; WX 182 ; N quoteright ; B 43 463 129 718 ;
+C 40 ; WX 273 ; N parenleft ; B 56 -207 245 733 ;
+C 41 ; WX 273 ; N parenright ; B 28 -207 217 733 ;
+C 42 ; WX 319 ; N asterisk ; B 32 431 286 718 ;
+C 43 ; WX 479 ; N plus ; B 32 0 447 505 ;
+C 44 ; WX 228 ; N comma ; B 71 -147 157 106 ;
+C 45 ; WX 273 ; N hyphen ; B 36 232 237 322 ;
+C 46 ; WX 228 ; N period ; B 71 0 157 106 ;
+C 47 ; WX 228 ; N slash ; B -14 -19 242 737 ;
+C 48 ; WX 456 ; N zero ; B 30 -19 426 703 ;
+C 49 ; WX 456 ; N one ; B 83 0 294 703 ;
+C 50 ; WX 456 ; N two ; B 21 0 416 703 ;
+C 51 ; WX 456 ; N three ; B 28 -19 428 703 ;
+C 52 ; WX 456 ; N four ; B 20 0 429 703 ;
+C 53 ; WX 456 ; N five ; B 26 -19 421 688 ;
+C 54 ; WX 456 ; N six ; B 31 -19 425 703 ;
+C 55 ; WX 456 ; N seven ; B 30 0 429 688 ;
+C 56 ; WX 456 ; N eight ; B 31 -19 424 703 ;
+C 57 ; WX 456 ; N nine ; B 34 -19 421 703 ;
+C 58 ; WX 228 ; N colon ; B 71 0 157 516 ;
+C 59 ; WX 228 ; N semicolon ; B 71 -147 157 516 ;
+C 60 ; WX 479 ; N less ; B 39 11 440 495 ;
+C 61 ; WX 479 ; N equal ; B 32 115 447 390 ;
+C 62 ; WX 479 ; N greater ; B 39 11 440 495 ;
+C 63 ; WX 456 ; N question ; B 46 0 403 727 ;
+C 64 ; WX 832 ; N at ; B 121 -19 712 737 ;
+C 65 ; WX 547 ; N A ; B 11 0 536 718 ;
+C 66 ; WX 547 ; N B ; B 61 0 514 718 ;
+C 67 ; WX 592 ; N C ; B 36 -19 558 737 ;
+C 68 ; WX 592 ; N D ; B 66 0 553 718 ;
+C 69 ; WX 547 ; N E ; B 71 0 505 718 ;
+C 70 ; WX 501 ; N F ; B 71 0 478 718 ;
+C 71 ; WX 638 ; N G ; B 39 -19 577 737 ;
+C 72 ; WX 592 ; N H ; B 63 0 530 718 ;
+C 73 ; WX 228 ; N I ; B 75 0 154 718 ;
+C 74 ; WX 410 ; N J ; B 14 -19 351 718 ;
+C 75 ; WX 547 ; N K ; B 62 0 544 718 ;
+C 76 ; WX 456 ; N L ; B 62 0 440 718 ;
+C 77 ; WX 683 ; N M ; B 60 0 624 718 ;
+C 78 ; WX 592 ; N N ; B 62 0 530 718 ;
+C 79 ; WX 638 ; N O ; B 32 -19 606 737 ;
+C 80 ; WX 547 ; N P ; B 71 0 510 718 ;
+C 81 ; WX 638 ; N Q ; B 32 -56 606 737 ;
+C 82 ; WX 592 ; N R ; B 72 0 561 718 ;
+C 83 ; WX 547 ; N S ; B 40 -19 508 737 ;
+C 84 ; WX 501 ; N T ; B 11 0 490 718 ;
+C 85 ; WX 592 ; N U ; B 65 -19 528 718 ;
+C 86 ; WX 547 ; N V ; B 16 0 531 718 ;
+C 87 ; WX 774 ; N W ; B 13 0 761 718 ;
+C 88 ; WX 547 ; N X ; B 16 0 531 718 ;
+C 89 ; WX 547 ; N Y ; B 11 0 535 718 ;
+C 90 ; WX 501 ; N Z ; B 19 0 482 718 ;
+C 91 ; WX 228 ; N bracketleft ; B 52 -196 205 722 ;
+C 92 ; WX 228 ; N backslash ; B -14 -19 242 737 ;
+C 93 ; WX 228 ; N bracketright ; B 23 -196 176 722 ;
+C 94 ; WX 385 ; N asciicircum ; B -11 264 396 688 ;
+C 95 ; WX 456 ; N underscore ; B 0 -125 456 -75 ;
+C 96 ; WX 182 ; N quoteleft ; B 53 470 139 725 ;
+C 97 ; WX 456 ; N a ; B 30 -15 435 538 ;
+C 98 ; WX 456 ; N b ; B 48 -15 424 718 ;
+C 99 ; WX 410 ; N c ; B 25 -15 391 538 ;
+C 100 ; WX 456 ; N d ; B 29 -15 409 718 ;
+C 101 ; WX 456 ; N e ; B 33 -15 423 538 ;
+C 102 ; WX 228 ; N f ; B 11 0 215 728 ; L i fi ; L l fl ;
+C 103 ; WX 456 ; N g ; B 33 -220 409 538 ;
+C 104 ; WX 456 ; N h ; B 53 0 403 718 ;
+C 105 ; WX 182 ; N i ; B 55 0 127 718 ;
+C 106 ; WX 182 ; N j ; B -13 -210 127 718 ;
+C 107 ; WX 410 ; N k ; B 55 0 411 718 ;
+C 108 ; WX 182 ; N l ; B 55 0 127 718 ;
+C 109 ; WX 683 ; N m ; B 53 0 631 538 ;
+C 110 ; WX 456 ; N n ; B 53 0 403 538 ;
+C 111 ; WX 456 ; N o ; B 29 -14 427 538 ;
+C 112 ; WX 456 ; N p ; B 48 -207 424 538 ;
+C 113 ; WX 456 ; N q ; B 29 -207 405 538 ;
+C 114 ; WX 273 ; N r ; B 63 0 272 538 ;
+C 115 ; WX 410 ; N s ; B 26 -15 380 538 ;
+C 116 ; WX 228 ; N t ; B 11 -7 211 669 ;
+C 117 ; WX 456 ; N u ; B 56 -15 401 523 ;
+C 118 ; WX 410 ; N v ; B 7 0 403 523 ;
+C 119 ; WX 592 ; N w ; B 11 0 581 523 ;
+C 120 ; WX 410 ; N x ; B 9 0 402 523 ;
+C 121 ; WX 410 ; N y ; B 9 -214 401 523 ;
+C 122 ; WX 410 ; N z ; B 25 0 385 523 ;
+C 123 ; WX 274 ; N braceleft ; B 34 -196 239 722 ;
+C 124 ; WX 213 ; N bar ; B 77 -19 137 737 ;
+C 125 ; WX 274 ; N braceright ; B 34 -196 239 722 ;
+C 126 ; WX 479 ; N asciitilde ; B 50 180 429 326 ;
+C 161 ; WX 273 ; N exclamdown ; B 97 -195 176 523 ;
+C 162 ; WX 456 ; N cent ; B 42 -115 421 623 ;
+C 163 ; WX 456 ; N sterling ; B 27 -16 442 718 ;
+C 164 ; WX 137 ; N fraction ; B -136 -19 273 703 ;
+C 165 ; WX 456 ; N yen ; B 2 0 453 688 ;
+C 166 ; WX 456 ; N florin ; B -9 -207 411 737 ;
+C 167 ; WX 456 ; N section ; B 35 -191 420 737 ;
+C 168 ; WX 456 ; N currency ; B 23 99 433 603 ;
+C 169 ; WX 157 ; N quotesingle ; B 48 463 108 718 ;
+C 170 ; WX 273 ; N quotedblleft ; B 31 470 252 725 ;
+C 171 ; WX 456 ; N guillemotleft ; B 80 108 376 446 ;
+C 172 ; WX 273 ; N guilsinglleft ; B 72 108 201 446 ;
+C 173 ; WX 273 ; N guilsinglright ; B 72 108 201 446 ;
+C 174 ; WX 410 ; N fi ; B 11 0 356 728 ;
+C 175 ; WX 410 ; N fl ; B 11 0 354 728 ;
+C 177 ; WX 456 ; N endash ; B 0 240 456 313 ;
+C 178 ; WX 456 ; N dagger ; B 35 -159 421 718 ;
+C 179 ; WX 456 ; N daggerdbl ; B 35 -159 421 718 ;
+C 180 ; WX 228 ; N periodcentered ; B 63 190 166 315 ;
+C 182 ; WX 440 ; N paragraph ; B 15 -173 408 718 ;
+C 183 ; WX 287 ; N bullet ; B 15 202 273 517 ;
+C 184 ; WX 182 ; N quotesinglbase ; B 43 -149 129 106 ;
+C 185 ; WX 273 ; N quotedblbase ; B 21 -149 242 106 ;
+C 186 ; WX 273 ; N quotedblright ; B 21 463 242 718 ;
+C 187 ; WX 456 ; N guillemotright ; B 80 108 376 446 ;
+C 188 ; WX 820 ; N ellipsis ; B 94 0 726 106 ;
+C 189 ; WX 820 ; N perthousand ; B 6 -19 815 703 ;
+C 191 ; WX 501 ; N questiondown ; B 75 -201 432 525 ;
+C 193 ; WX 273 ; N grave ; B 11 593 173 734 ;
+C 194 ; WX 273 ; N acute ; B 100 593 262 734 ;
+C 195 ; WX 273 ; N circumflex ; B 17 593 256 734 ;
+C 196 ; WX 273 ; N tilde ; B -3 606 276 722 ;
+C 197 ; WX 273 ; N macron ; B 8 627 265 684 ;
+C 198 ; WX 273 ; N breve ; B 11 595 263 731 ;
+C 199 ; WX 273 ; N dotaccent ; B 99 604 174 706 ;
+C 200 ; WX 273 ; N dieresis ; B 33 604 240 706 ;
+C 202 ; WX 273 ; N ring ; B 61 572 212 756 ;
+C 203 ; WX 273 ; N cedilla ; B 37 -225 212 0 ;
+C 205 ; WX 273 ; N hungarumlaut ; B 25 593 335 734 ;
+C 206 ; WX 273 ; N ogonek ; B 60 -225 235 0 ;
+C 207 ; WX 273 ; N caron ; B 17 593 256 734 ;
+C 208 ; WX 820 ; N emdash ; B 0 240 820 313 ;
+C 225 ; WX 820 ; N AE ; B 7 0 780 718 ;
+C 227 ; WX 303 ; N ordfeminine ; B 20 304 284 737 ;
+C 232 ; WX 456 ; N Lslash ; B -16 0 440 718 ;
+C 233 ; WX 638 ; N Oslash ; B 32 -19 607 737 ;
+C 234 ; WX 820 ; N OE ; B 30 -19 791 737 ;
+C 235 ; WX 299 ; N ordmasculine ; B 20 304 280 737 ;
+C 241 ; WX 729 ; N ae ; B 30 -15 695 538 ;
+C 245 ; WX 228 ; N dotlessi ; B 78 0 150 523 ;
+C 248 ; WX 182 ; N lslash ; B -16 0 198 718 ;
+C 249 ; WX 501 ; N oslash ; B 23 -22 440 545 ;
+C 250 ; WX 774 ; N oe ; B 29 -15 740 538 ;
+C 251 ; WX 501 ; N germandbls ; B 55 -15 468 728 ;
+C -1 ; WX 501 ; N Zcaron ; B 19 0 482 929 ;
+C -1 ; WX 410 ; N ccedilla ; B 25 -225 391 538 ;
+C -1 ; WX 410 ; N ydieresis ; B 9 -214 401 706 ;
+C -1 ; WX 456 ; N atilde ; B 30 -15 435 722 ;
+C -1 ; WX 228 ; N icircumflex ; B -5 0 234 734 ;
+C -1 ; WX 273 ; N threesuperior ; B 4 270 266 703 ;
+C -1 ; WX 456 ; N ecircumflex ; B 33 -15 423 734 ;
+C -1 ; WX 456 ; N thorn ; B 48 -207 424 718 ;
+C -1 ; WX 456 ; N egrave ; B 33 -15 423 734 ;
+C -1 ; WX 273 ; N twosuperior ; B 3 281 265 703 ;
+C -1 ; WX 456 ; N eacute ; B 33 -15 423 734 ;
+C -1 ; WX 456 ; N otilde ; B 29 -14 427 722 ;
+C -1 ; WX 547 ; N Aacute ; B 11 0 536 929 ;
+C -1 ; WX 456 ; N ocircumflex ; B 29 -14 427 734 ;
+C -1 ; WX 410 ; N yacute ; B 9 -214 401 734 ;
+C -1 ; WX 456 ; N udieresis ; B 56 -15 401 706 ;
+C -1 ; WX 684 ; N threequarters ; B 37 -19 664 703 ;
+C -1 ; WX 456 ; N acircumflex ; B 30 -15 435 734 ;
+C -1 ; WX 592 ; N Eth ; B 0 0 553 718 ;
+C -1 ; WX 456 ; N edieresis ; B 33 -15 423 706 ;
+C -1 ; WX 456 ; N ugrave ; B 56 -15 401 734 ;
+C -1 ; WX 820 ; N trademark ; B 38 306 740 718 ;
+C -1 ; WX 456 ; N ograve ; B 29 -14 427 734 ;
+C -1 ; WX 410 ; N scaron ; B 26 -15 380 734 ;
+C -1 ; WX 228 ; N Idieresis ; B 11 0 218 901 ;
+C -1 ; WX 456 ; N uacute ; B 56 -15 401 734 ;
+C -1 ; WX 456 ; N agrave ; B 30 -15 435 734 ;
+C -1 ; WX 456 ; N ntilde ; B 53 0 403 722 ;
+C -1 ; WX 456 ; N aring ; B 30 -15 435 756 ;
+C -1 ; WX 410 ; N zcaron ; B 25 0 385 734 ;
+C -1 ; WX 228 ; N Icircumflex ; B -5 0 234 929 ;
+C -1 ; WX 592 ; N Ntilde ; B 62 0 530 917 ;
+C -1 ; WX 456 ; N ucircumflex ; B 56 -15 401 734 ;
+C -1 ; WX 547 ; N Ecircumflex ; B 71 0 505 929 ;
+C -1 ; WX 228 ; N Iacute ; B 75 0 239 929 ;
+C -1 ; WX 592 ; N Ccedilla ; B 36 -225 558 737 ;
+C -1 ; WX 638 ; N Odieresis ; B 32 -19 606 901 ;
+C -1 ; WX 547 ; N Scaron ; B 40 -19 508 929 ;
+C -1 ; WX 547 ; N Edieresis ; B 71 0 505 901 ;
+C -1 ; WX 228 ; N Igrave ; B -11 0 154 929 ;
+C -1 ; WX 456 ; N adieresis ; B 30 -15 435 706 ;
+C -1 ; WX 638 ; N Ograve ; B 32 -19 606 929 ;
+C -1 ; WX 547 ; N Egrave ; B 71 0 505 929 ;
+C -1 ; WX 547 ; N Ydieresis ; B 11 0 535 901 ;
+C -1 ; WX 604 ; N registered ; B -11 -19 617 737 ;
+C -1 ; WX 638 ; N Otilde ; B 32 -19 606 917 ;
+C -1 ; WX 684 ; N onequarter ; B 60 -19 620 703 ;
+C -1 ; WX 592 ; N Ugrave ; B 65 -19 528 929 ;
+C -1 ; WX 592 ; N Ucircumflex ; B 65 -19 528 929 ;
+C -1 ; WX 547 ; N Thorn ; B 71 0 510 718 ;
+C -1 ; WX 479 ; N divide ; B 32 -19 447 524 ;
+C -1 ; WX 547 ; N Atilde ; B 11 0 536 917 ;
+C -1 ; WX 592 ; N Uacute ; B 65 -19 528 929 ;
+C -1 ; WX 638 ; N Ocircumflex ; B 32 -19 606 929 ;
+C -1 ; WX 479 ; N logicalnot ; B 32 108 447 390 ;
+C -1 ; WX 547 ; N Aring ; B 11 0 536 931 ;
+C -1 ; WX 228 ; N idieresis ; B 11 0 218 706 ;
+C -1 ; WX 228 ; N iacute ; B 78 0 239 734 ;
+C -1 ; WX 456 ; N aacute ; B 30 -15 435 734 ;
+C -1 ; WX 479 ; N plusminus ; B 32 0 447 506 ;
+C -1 ; WX 479 ; N multiply ; B 32 0 447 506 ;
+C -1 ; WX 592 ; N Udieresis ; B 65 -19 528 901 ;
+C -1 ; WX 479 ; N minus ; B 32 216 447 289 ;
+C -1 ; WX 273 ; N onesuperior ; B 35 281 182 703 ;
+C -1 ; WX 547 ; N Eacute ; B 71 0 505 929 ;
+C -1 ; WX 547 ; N Acircumflex ; B 11 0 536 929 ;
+C -1 ; WX 604 ; N copyright ; B -11 -19 617 737 ;
+C -1 ; WX 547 ; N Agrave ; B 11 0 536 929 ;
+C -1 ; WX 456 ; N odieresis ; B 29 -14 427 706 ;
+C -1 ; WX 456 ; N oacute ; B 29 -14 427 734 ;
+C -1 ; WX 328 ; N degree ; B 44 411 284 703 ;
+C -1 ; WX 228 ; N igrave ; B -11 0 151 734 ;
+C -1 ; WX 456 ; N mu ; B 56 -207 401 523 ;
+C -1 ; WX 638 ; N Oacute ; B 32 -19 606 929 ;
+C -1 ; WX 456 ; N eth ; B 29 -15 428 737 ;
+C -1 ; WX 547 ; N Adieresis ; B 11 0 536 901 ;
+C -1 ; WX 547 ; N Yacute ; B 11 0 535 929 ;
+C -1 ; WX 213 ; N brokenbar ; B 77 -19 137 737 ;
+C -1 ; WX 684 ; N onehalf ; B 35 -19 634 703 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 250
+
+KPX A y -32
+KPX A w -32
+KPX A v -32
+KPX A u -24
+KPX A Y -81
+KPX A W -40
+KPX A V -56
+KPX A U -40
+KPX A T -97
+KPX A Q -24
+KPX A O -24
+KPX A G -24
+KPX A C -24
+
+KPX B period -15
+KPX B comma -15
+KPX B U -7
+
+KPX C period -24
+KPX C comma -24
+
+KPX D period -56
+KPX D comma -56
+KPX D Y -73
+KPX D W -32
+KPX D V -56
+KPX D A -32
+
+KPX F r -36
+KPX F period -122
+KPX F o -24
+KPX F e -24
+KPX F comma -122
+KPX F a -40
+KPX F A -65
+
+KPX J u -15
+KPX J period -24
+KPX J comma -24
+KPX J a -15
+KPX J A -15
+
+KPX K y -40
+KPX K u -24
+KPX K o -32
+KPX K e -32
+KPX K O -40
+
+KPX L y -24
+KPX L quoteright -130
+KPX L quotedblright -114
+KPX L Y -114
+KPX L W -56
+KPX L V -89
+KPX L T -89
+
+KPX O period -32
+KPX O comma -32
+KPX O Y -56
+KPX O X -48
+KPX O W -24
+KPX O V -40
+KPX O T -32
+KPX O A -15
+
+KPX P period -147
+KPX P o -40
+KPX P e -40
+KPX P comma -147
+KPX P a -32
+KPX P A -97
+
+KPX Q U -7
+
+KPX R Y -40
+KPX R W -24
+KPX R V -40
+KPX R U -32
+KPX R T -24
+KPX R O -15
+
+KPX S period -15
+KPX S comma -15
+
+KPX T y -97
+KPX T w -97
+KPX T u -97
+KPX T semicolon -15
+KPX T r -97
+KPX T period -97
+KPX T o -97
+KPX T hyphen -114
+KPX T e -97
+KPX T comma -97
+KPX T colon -15
+KPX T a -97
+KPX T O -32
+KPX T A -97
+
+KPX U period -32
+KPX U comma -32
+KPX U A -32
+
+KPX V u -56
+KPX V semicolon -32
+KPX V period -102
+KPX V o -65
+KPX V hyphen -65
+KPX V e -65
+KPX V comma -102
+KPX V colon -32
+KPX V a -56
+KPX V O -32
+KPX V G -32
+KPX V A -65
+
+KPX W y -15
+KPX W u -24
+KPX W period -65
+KPX W o -24
+KPX W hyphen -32
+KPX W e -24
+KPX W comma -65
+KPX W a -32
+KPX W O -15
+KPX W A -40
+
+KPX Y u -89
+KPX Y semicolon -48
+KPX Y period -114
+KPX Y o -114
+KPX Y i -15
+KPX Y hyphen -114
+KPX Y e -114
+KPX Y comma -114
+KPX Y colon -48
+KPX Y a -114
+KPX Y O -69
+KPX Y A -89
+
+KPX a y -24
+KPX a w -15
+KPX a v -15
+
+KPX b y -15
+KPX b v -15
+KPX b u -15
+KPX b period -32
+KPX b l -15
+KPX b comma -32
+KPX b b -7
+
+KPX c k -15
+KPX c comma -11
+
+KPX colon space -40
+
+KPX comma quoteright -81
+KPX comma quotedblright -81
+
+KPX e y -15
+KPX e x -24
+KPX e w -15
+KPX e v -24
+KPX e period -11
+KPX e comma -11
+
+KPX f quoteright 41
+KPX f quotedblright 49
+KPX f period -24
+KPX f o -24
+KPX f e -24
+KPX f dotlessi -22
+KPX f comma -24
+KPX f a -24
+
+KPX g r -7
+
+KPX h y -24
+
+KPX k o -15
+KPX k e -15
+
+KPX m y -11
+KPX m u -7
+
+KPX n y -11
+KPX n v -15
+KPX n u -7
+
+KPX o y -24
+KPX o x -24
+KPX o w -11
+KPX o v -11
+KPX o period -32
+KPX o comma -32
+
+KPX oslash z -44
+KPX oslash y -56
+KPX oslash x -69
+KPX oslash w -56
+KPX oslash v -56
+KPX oslash u -44
+KPX oslash t -44
+KPX oslash s -44
+KPX oslash r -44
+KPX oslash q -44
+KPX oslash period -77
+KPX oslash p -44
+KPX oslash o -44
+KPX oslash n -44
+KPX oslash m -44
+KPX oslash l -44
+KPX oslash k -44
+KPX oslash j -44
+KPX oslash i -44
+KPX oslash h -44
+KPX oslash g -44
+KPX oslash f -44
+KPX oslash e -44
+KPX oslash d -44
+KPX oslash comma -77
+KPX oslash c -44
+KPX oslash b -44
+KPX oslash a -44
+
+KPX p y -24
+KPX p period -28
+KPX p comma -28
+
+KPX period space -48
+KPX period quoteright -81
+KPX period quotedblright -81
+
+KPX quotedblright space -32
+
+KPX quoteleft quoteleft -46
+
+KPX quoteright space -56
+KPX quoteright s -40
+KPX quoteright r -40
+KPX quoteright quoteright -46
+KPX quoteright d -40
+
+KPX r y 25
+KPX r v 25
+KPX r u 12
+KPX r t 33
+KPX r semicolon 25
+KPX r period -40
+KPX r p 25
+KPX r n 21
+KPX r m 21
+KPX r l 12
+KPX r k 12
+KPX r i 12
+KPX r comma -40
+KPX r colon 25
+KPX r a -7
+
+KPX s w -24
+KPX s period -11
+KPX s comma -11
+
+KPX semicolon space -40
+
+KPX space quoteleft -48
+KPX space quotedblleft -24
+KPX space Y -73
+KPX space W -32
+KPX space V -40
+KPX space T -40
+
+KPX v period -65
+KPX v o -20
+KPX v e -20
+KPX v comma -65
+KPX v a -20
+
+KPX w period -48
+KPX w o -7
+KPX w e -7
+KPX w comma -48
+KPX w a -11
+
+KPX x e -24
+
+KPX y period -81
+KPX y o -15
+KPX y e -15
+KPX y comma -81
+KPX y a -15
+
+KPX z o -11
+KPX z e -11
+EndKernPairs
+EndKernData
+StartComposites 58
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 137 195 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 137 195 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 137 195 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 137 195 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 137 175 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 137 195 ;
+CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 160 0 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 137 195 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 137 195 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 137 195 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 137 195 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute -22 195 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex -22 195 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis -22 195 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave -22 195 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 168 195 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 183 195 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 183 195 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 183 195 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 183 195 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 183 195 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 137 195 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 160 195 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 160 195 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 160 195 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 160 195 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 137 195 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 137 195 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 114 195 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 92 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 92 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 92 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 92 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 92 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 84 0 ;
+CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 69 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 92 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 92 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 92 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 92 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -22 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -22 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -22 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -22 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 84 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 92 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 92 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 92 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 92 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 92 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 69 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 92 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 92 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 92 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 92 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 69 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 69 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 69 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/He-Nr+ b/font/font/He-Nr+
new file mode 100644
index 0000000..5a34333
--- /dev/null
+++ b/font/font/He-Nr+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 592 ; N Ccaron ; B 36 -19 558 925 ;
+C -1 ; WX 410 ; N ccaron ; B 25 -15 391 734 ;
+C -1 ; WX 592 ; N Dcaron ; B 66 0 553 925 ;
+C -1 ; WX 516 ; N dcaron ; B 29 -15 504 790 ;
+C -1 ; WX 547 ; N Ecaron ; B 71 0 505 925 ;
+C -1 ; WX 456 ; N ecaron ; B 33 -15 423 734 ;
+C -1 ; WX 456 ; N Lcaron ; B 62 0 440 790 ;
+C -1 ; WX 456 ; N Lacute ; B 62 0 440 925 ;
+C -1 ; WX 242 ; N lcaron ; B 55 0 222 790 ;
+C -1 ; WX 182 ; N lacute ; B 55 0 233 925 ;
+C -1 ; WX 592 ; N Ncaron ; B 62 0 530 925 ;
+C -1 ; WX 456 ; N ncaron ; B 53 0 403 734 ;
+C -1 ; WX 592 ; N Rcaron ; B 72 0 561 925 ;
+C -1 ; WX 592 ; N Racute ; B 72 0 561 925 ;
+C -1 ; WX 273 ; N rcaron ; B 17 0 272 734 ;
+C -1 ; WX 273 ; N racute ; B 63 0 278 734 ;
+C -1 ; WX 501 ; N Tcaron ; B 11 0 490 925 ;
+C -1 ; WX 288 ; N tcaron ; B 11 -7 306 718 ;
+C -1 ; WX 592 ; N Uring ; B 65 -19 528 925 ;
+C -1 ; WX 456 ; N uring ; B 56 -15 401 756 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 211 191 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 86 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 159 191 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 375 72 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 137 191 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 91 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 120 72 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 91 191 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 93 72 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute -29 191 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 159 191 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 91 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 159 191 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 190 191 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 0 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 16 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 114 191 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 177 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 159 169 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 91 0 ;
+EndBuildComposites
diff --git a/font/font/He-NrBd b/font/font/He-NrBd
new file mode 100644
index 0000000..b7c6969
--- /dev/null
+++ b/font/font/He-NrBd
@@ -0,0 +1,570 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Thu Mar 15 11:47:27 1990
+Comment UniqueID 28398
+Comment VMusage 7614 43068
+FontName Helvetica-Narrow-Bold
+FullName Helvetica Narrow Bold
+FamilyName Helvetica
+Weight Bold
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -139 -228 822 962
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.007
+Notice Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.Helvetica is a trademark of Linotype AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 718
+XHeight 532
+Ascender 718
+Descender -207
+StartCharMetrics 228
+C 32 ; WX 228 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 273 ; N exclam ; B 74 0 200 718 ;
+C 34 ; WX 389 ; N quotedbl ; B 80 447 308 718 ;
+C 35 ; WX 456 ; N numbersign ; B 15 0 441 698 ;
+C 36 ; WX 456 ; N dollar ; B 25 -115 429 775 ;
+C 37 ; WX 729 ; N percent ; B 23 -19 706 710 ;
+C 38 ; WX 592 ; N ampersand ; B 44 -19 575 718 ;
+C 39 ; WX 228 ; N quoteright ; B 57 445 171 718 ;
+C 40 ; WX 273 ; N parenleft ; B 29 -208 257 734 ;
+C 41 ; WX 273 ; N parenright ; B 16 -208 244 734 ;
+C 42 ; WX 319 ; N asterisk ; B 22 387 297 718 ;
+C 43 ; WX 479 ; N plus ; B 33 0 446 506 ;
+C 44 ; WX 228 ; N comma ; B 52 -168 175 146 ;
+C 45 ; WX 273 ; N hyphen ; B 22 215 251 345 ;
+C 46 ; WX 228 ; N period ; B 52 0 175 146 ;
+C 47 ; WX 228 ; N slash ; B -27 -19 255 737 ;
+C 48 ; WX 456 ; N zero ; B 26 -19 430 710 ;
+C 49 ; WX 456 ; N one ; B 57 0 310 710 ;
+C 50 ; WX 456 ; N two ; B 21 0 419 710 ;
+C 51 ; WX 456 ; N three ; B 22 -19 423 710 ;
+C 52 ; WX 456 ; N four ; B 22 0 431 710 ;
+C 53 ; WX 456 ; N five ; B 22 -19 423 698 ;
+C 54 ; WX 456 ; N six ; B 25 -19 426 710 ;
+C 55 ; WX 456 ; N seven ; B 20 0 433 698 ;
+C 56 ; WX 456 ; N eight ; B 26 -19 430 710 ;
+C 57 ; WX 456 ; N nine ; B 25 -19 428 710 ;
+C 58 ; WX 273 ; N colon ; B 75 0 198 512 ;
+C 59 ; WX 273 ; N semicolon ; B 75 -168 198 512 ;
+C 60 ; WX 479 ; N less ; B 31 -8 448 514 ;
+C 61 ; WX 479 ; N equal ; B 33 87 446 419 ;
+C 62 ; WX 479 ; N greater ; B 31 -8 448 514 ;
+C 63 ; WX 501 ; N question ; B 49 0 456 727 ;
+C 64 ; WX 800 ; N at ; B 97 -19 702 737 ;
+C 65 ; WX 592 ; N A ; B 16 0 576 718 ;
+C 66 ; WX 592 ; N B ; B 62 0 549 718 ;
+C 67 ; WX 592 ; N C ; B 36 -19 561 737 ;
+C 68 ; WX 592 ; N D ; B 62 0 562 718 ;
+C 69 ; WX 547 ; N E ; B 62 0 509 718 ;
+C 70 ; WX 501 ; N F ; B 62 0 481 718 ;
+C 71 ; WX 638 ; N G ; B 36 -19 585 737 ;
+C 72 ; WX 592 ; N H ; B 58 0 534 718 ;
+C 73 ; WX 228 ; N I ; B 52 0 175 718 ;
+C 74 ; WX 456 ; N J ; B 18 -18 397 718 ;
+C 75 ; WX 592 ; N K ; B 71 0 592 718 ;
+C 76 ; WX 501 ; N L ; B 62 0 478 718 ;
+C 77 ; WX 683 ; N M ; B 57 0 627 718 ;
+C 78 ; WX 592 ; N N ; B 57 0 536 718 ;
+C 79 ; WX 638 ; N O ; B 36 -19 602 737 ;
+C 80 ; WX 547 ; N P ; B 62 0 514 718 ;
+C 81 ; WX 638 ; N Q ; B 36 -52 604 737 ;
+C 82 ; WX 592 ; N R ; B 62 0 555 718 ;
+C 83 ; WX 547 ; N S ; B 32 -19 516 737 ;
+C 84 ; WX 501 ; N T ; B 11 0 490 718 ;
+C 85 ; WX 592 ; N U ; B 59 -19 534 718 ;
+C 86 ; WX 547 ; N V ; B 16 0 531 718 ;
+C 87 ; WX 774 ; N W ; B 13 0 762 718 ;
+C 88 ; WX 547 ; N X ; B 11 0 535 718 ;
+C 89 ; WX 547 ; N Y ; B 12 0 535 718 ;
+C 90 ; WX 501 ; N Z ; B 20 0 481 718 ;
+C 91 ; WX 273 ; N bracketleft ; B 52 -196 253 722 ;
+C 92 ; WX 228 ; N backslash ; B -27 -19 255 737 ;
+C 93 ; WX 273 ; N bracketright ; B 20 -196 221 722 ;
+C 94 ; WX 479 ; N asciicircum ; B 51 323 428 698 ;
+C 95 ; WX 456 ; N underscore ; B 0 -125 456 -75 ;
+C 96 ; WX 228 ; N quoteleft ; B 57 454 171 727 ;
+C 97 ; WX 456 ; N a ; B 24 -14 432 546 ;
+C 98 ; WX 501 ; N b ; B 50 -14 474 718 ;
+C 99 ; WX 456 ; N c ; B 28 -14 430 546 ;
+C 100 ; WX 501 ; N d ; B 28 -14 452 718 ;
+C 101 ; WX 456 ; N e ; B 19 -14 433 546 ;
+C 102 ; WX 273 ; N f ; B 8 0 261 727 ; L i fi ; L l fl ;
+C 103 ; WX 501 ; N g ; B 33 -217 453 546 ;
+C 104 ; WX 501 ; N h ; B 53 0 448 718 ;
+C 105 ; WX 228 ; N i ; B 57 0 171 725 ;
+C 106 ; WX 228 ; N j ; B 2 -214 171 725 ;
+C 107 ; WX 456 ; N k ; B 57 0 461 718 ;
+C 108 ; WX 228 ; N l ; B 57 0 171 718 ;
+C 109 ; WX 729 ; N m ; B 52 0 677 546 ;
+C 110 ; WX 501 ; N n ; B 53 0 448 546 ;
+C 111 ; WX 501 ; N o ; B 28 -14 474 546 ;
+C 112 ; WX 501 ; N p ; B 51 -207 474 546 ;
+C 113 ; WX 501 ; N q ; B 28 -207 453 546 ;
+C 114 ; WX 319 ; N r ; B 52 0 306 546 ;
+C 115 ; WX 456 ; N s ; B 25 -14 426 546 ;
+C 116 ; WX 273 ; N t ; B 8 -6 253 676 ;
+C 117 ; WX 501 ; N u ; B 54 -14 447 532 ;
+C 118 ; WX 456 ; N v ; B 11 0 445 532 ;
+C 119 ; WX 638 ; N w ; B 8 0 631 532 ;
+C 120 ; WX 456 ; N x ; B 12 0 444 532 ;
+C 121 ; WX 456 ; N y ; B 8 -214 442 532 ;
+C 122 ; WX 410 ; N z ; B 16 0 394 532 ;
+C 123 ; WX 319 ; N braceleft ; B 39 -196 299 722 ;
+C 124 ; WX 230 ; N bar ; B 69 -19 161 737 ;
+C 125 ; WX 319 ; N braceright ; B 20 -196 280 722 ;
+C 126 ; WX 479 ; N asciitilde ; B 50 163 429 343 ;
+C 161 ; WX 273 ; N exclamdown ; B 74 -186 200 532 ;
+C 162 ; WX 456 ; N cent ; B 28 -118 430 628 ;
+C 163 ; WX 456 ; N sterling ; B 23 -16 444 718 ;
+C 164 ; WX 137 ; N fraction ; B -139 -19 276 710 ;
+C 165 ; WX 456 ; N yen ; B -7 0 463 698 ;
+C 166 ; WX 456 ; N florin ; B -8 -210 423 737 ;
+C 167 ; WX 456 ; N section ; B 28 -184 428 727 ;
+C 168 ; WX 456 ; N currency ; B -2 76 458 636 ;
+C 169 ; WX 195 ; N quotesingle ; B 57 447 138 718 ;
+C 170 ; WX 410 ; N quotedblleft ; B 52 454 358 727 ;
+C 171 ; WX 456 ; N guillemotleft ; B 72 76 384 484 ;
+C 172 ; WX 273 ; N guilsinglleft ; B 68 76 205 484 ;
+C 173 ; WX 273 ; N guilsinglright ; B 68 76 205 484 ;
+C 174 ; WX 501 ; N fi ; B 8 0 444 727 ;
+C 175 ; WX 501 ; N fl ; B 8 0 444 727 ;
+C 177 ; WX 456 ; N endash ; B 0 227 456 333 ;
+C 178 ; WX 456 ; N dagger ; B 30 -171 426 718 ;
+C 179 ; WX 456 ; N daggerdbl ; B 30 -171 426 718 ;
+C 180 ; WX 228 ; N periodcentered ; B 48 172 180 334 ;
+C 182 ; WX 456 ; N paragraph ; B -7 -191 442 700 ;
+C 183 ; WX 287 ; N bullet ; B 8 194 279 524 ;
+C 184 ; WX 228 ; N quotesinglbase ; B 57 -146 171 127 ;
+C 185 ; WX 410 ; N quotedblbase ; B 52 -146 358 127 ;
+C 186 ; WX 410 ; N quotedblright ; B 52 445 358 718 ;
+C 187 ; WX 456 ; N guillemotright ; B 72 76 384 484 ;
+C 188 ; WX 820 ; N ellipsis ; B 75 0 745 146 ;
+C 189 ; WX 820 ; N perthousand ; B -2 -19 822 710 ;
+C 191 ; WX 501 ; N questiondown ; B 45 -195 452 532 ;
+C 193 ; WX 273 ; N grave ; B -19 604 184 750 ;
+C 194 ; WX 273 ; N acute ; B 89 604 292 750 ;
+C 195 ; WX 273 ; N circumflex ; B -8 604 281 750 ;
+C 196 ; WX 273 ; N tilde ; B -14 610 287 737 ;
+C 197 ; WX 273 ; N macron ; B -5 604 278 678 ;
+C 198 ; WX 273 ; N breve ; B -2 604 275 750 ;
+C 199 ; WX 273 ; N dotaccent ; B 85 614 189 729 ;
+C 200 ; WX 273 ; N dieresis ; B 5 614 268 729 ;
+C 202 ; WX 273 ; N ring ; B 48 568 225 776 ;
+C 203 ; WX 273 ; N cedilla ; B 5 -228 201 0 ;
+C 205 ; WX 273 ; N hungarumlaut ; B 7 604 399 750 ;
+C 206 ; WX 273 ; N ogonek ; B 58 -228 249 0 ;
+C 207 ; WX 273 ; N caron ; B -8 604 281 750 ;
+C 208 ; WX 820 ; N emdash ; B 0 227 820 333 ;
+C 225 ; WX 820 ; N AE ; B 4 0 782 718 ;
+C 227 ; WX 303 ; N ordfeminine ; B 18 276 285 737 ;
+C 232 ; WX 501 ; N Lslash ; B -16 0 478 718 ;
+C 233 ; WX 638 ; N Oslash ; B 27 -27 610 745 ;
+C 234 ; WX 820 ; N OE ; B 30 -19 788 737 ;
+C 235 ; WX 299 ; N ordmasculine ; B 5 276 295 737 ;
+C 241 ; WX 729 ; N ae ; B 24 -14 704 546 ;
+C 245 ; WX 228 ; N dotlessi ; B 57 0 171 532 ;
+C 248 ; WX 228 ; N lslash ; B -15 0 243 718 ;
+C 249 ; WX 501 ; N oslash ; B 18 -29 483 560 ;
+C 250 ; WX 774 ; N oe ; B 28 -14 748 546 ;
+C 251 ; WX 501 ; N germandbls ; B 57 -14 475 731 ;
+C -1 ; WX 501 ; N Zcaron ; B 20 0 481 936 ;
+C -1 ; WX 456 ; N ccedilla ; B 28 -228 430 546 ;
+C -1 ; WX 456 ; N ydieresis ; B 8 -214 442 729 ;
+C -1 ; WX 456 ; N atilde ; B 24 -14 432 737 ;
+C -1 ; WX 228 ; N icircumflex ; B -30 0 259 750 ;
+C -1 ; WX 273 ; N threesuperior ; B 7 271 267 710 ;
+C -1 ; WX 456 ; N ecircumflex ; B 19 -14 433 750 ;
+C -1 ; WX 501 ; N thorn ; B 51 -208 474 718 ;
+C -1 ; WX 456 ; N egrave ; B 19 -14 433 750 ;
+C -1 ; WX 273 ; N twosuperior ; B 7 283 266 710 ;
+C -1 ; WX 456 ; N eacute ; B 19 -14 433 750 ;
+C -1 ; WX 501 ; N otilde ; B 28 -14 474 737 ;
+C -1 ; WX 592 ; N Aacute ; B 16 0 576 936 ;
+C -1 ; WX 501 ; N ocircumflex ; B 28 -14 474 750 ;
+C -1 ; WX 456 ; N yacute ; B 8 -214 442 750 ;
+C -1 ; WX 501 ; N udieresis ; B 54 -14 447 729 ;
+C -1 ; WX 684 ; N threequarters ; B 13 -19 655 710 ;
+C -1 ; WX 456 ; N acircumflex ; B 24 -14 432 750 ;
+C -1 ; WX 592 ; N Eth ; B -4 0 562 718 ;
+C -1 ; WX 456 ; N edieresis ; B 19 -14 433 729 ;
+C -1 ; WX 501 ; N ugrave ; B 54 -14 447 750 ;
+C -1 ; WX 820 ; N trademark ; B 36 306 784 718 ;
+C -1 ; WX 501 ; N ograve ; B 28 -14 474 750 ;
+C -1 ; WX 456 ; N scaron ; B 25 -14 426 750 ;
+C -1 ; WX 228 ; N Idieresis ; B -17 0 246 915 ;
+C -1 ; WX 501 ; N uacute ; B 54 -14 447 750 ;
+C -1 ; WX 456 ; N agrave ; B 24 -14 432 750 ;
+C -1 ; WX 501 ; N ntilde ; B 53 0 448 737 ;
+C -1 ; WX 456 ; N aring ; B 24 -14 432 776 ;
+C -1 ; WX 410 ; N zcaron ; B 16 0 394 750 ;
+C -1 ; WX 228 ; N Icircumflex ; B -30 0 259 936 ;
+C -1 ; WX 592 ; N Ntilde ; B 57 0 536 923 ;
+C -1 ; WX 501 ; N ucircumflex ; B 54 -14 447 750 ;
+C -1 ; WX 547 ; N Ecircumflex ; B 62 0 509 936 ;
+C -1 ; WX 228 ; N Iacute ; B 52 0 270 936 ;
+C -1 ; WX 592 ; N Ccedilla ; B 36 -228 561 737 ;
+C -1 ; WX 638 ; N Odieresis ; B 36 -19 602 915 ;
+C -1 ; WX 547 ; N Scaron ; B 32 -19 516 936 ;
+C -1 ; WX 547 ; N Edieresis ; B 62 0 509 915 ;
+C -1 ; WX 228 ; N Igrave ; B -41 0 175 936 ;
+C -1 ; WX 456 ; N adieresis ; B 24 -14 432 729 ;
+C -1 ; WX 638 ; N Ograve ; B 36 -19 602 936 ;
+C -1 ; WX 547 ; N Egrave ; B 62 0 509 936 ;
+C -1 ; WX 547 ; N Ydieresis ; B 12 0 535 915 ;
+C -1 ; WX 604 ; N registered ; B -9 -19 613 737 ;
+C -1 ; WX 638 ; N Otilde ; B 36 -19 602 923 ;
+C -1 ; WX 684 ; N onequarter ; B 21 -19 628 710 ;
+C -1 ; WX 592 ; N Ugrave ; B 59 -19 534 936 ;
+C -1 ; WX 592 ; N Ucircumflex ; B 59 -19 534 936 ;
+C -1 ; WX 547 ; N Thorn ; B 62 0 514 718 ;
+C -1 ; WX 479 ; N divide ; B 33 -42 446 548 ;
+C -1 ; WX 592 ; N Atilde ; B 16 0 576 923 ;
+C -1 ; WX 592 ; N Uacute ; B 59 -19 534 936 ;
+C -1 ; WX 638 ; N Ocircumflex ; B 36 -19 602 936 ;
+C -1 ; WX 479 ; N logicalnot ; B 33 108 446 419 ;
+C -1 ; WX 592 ; N Aring ; B 16 0 576 962 ;
+C -1 ; WX 228 ; N idieresis ; B -17 0 246 729 ;
+C -1 ; WX 228 ; N iacute ; B 57 0 270 750 ;
+C -1 ; WX 456 ; N aacute ; B 24 -14 432 750 ;
+C -1 ; WX 479 ; N plusminus ; B 33 0 446 506 ;
+C -1 ; WX 479 ; N multiply ; B 33 1 447 505 ;
+C -1 ; WX 592 ; N Udieresis ; B 59 -19 534 915 ;
+C -1 ; WX 479 ; N minus ; B 33 197 446 309 ;
+C -1 ; WX 273 ; N onesuperior ; B 21 283 194 710 ;
+C -1 ; WX 547 ; N Eacute ; B 62 0 509 936 ;
+C -1 ; WX 592 ; N Acircumflex ; B 16 0 576 936 ;
+C -1 ; WX 604 ; N copyright ; B -9 -19 614 737 ;
+C -1 ; WX 592 ; N Agrave ; B 16 0 576 936 ;
+C -1 ; WX 501 ; N odieresis ; B 28 -14 474 729 ;
+C -1 ; WX 501 ; N oacute ; B 28 -14 474 750 ;
+C -1 ; WX 328 ; N degree ; B 47 426 281 712 ;
+C -1 ; WX 228 ; N igrave ; B -41 0 171 750 ;
+C -1 ; WX 501 ; N mu ; B 54 -207 447 532 ;
+C -1 ; WX 638 ; N Oacute ; B 36 -19 602 936 ;
+C -1 ; WX 501 ; N eth ; B 28 -14 474 737 ;
+C -1 ; WX 592 ; N Adieresis ; B 16 0 576 915 ;
+C -1 ; WX 547 ; N Yacute ; B 12 0 535 936 ;
+C -1 ; WX 230 ; N brokenbar ; B 69 -19 161 737 ;
+C -1 ; WX 684 ; N onehalf ; B 21 -19 651 710 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 209
+
+KPX A y -24
+KPX A w -24
+KPX A v -32
+KPX A u -24
+KPX A Y -89
+KPX A W -48
+KPX A V -65
+KPX A U -40
+KPX A T -73
+KPX A Q -32
+KPX A O -32
+KPX A G -40
+KPX A C -32
+
+KPX B U -7
+KPX B A -24
+
+KPX D period -24
+KPX D comma -24
+KPX D Y -56
+KPX D W -32
+KPX D V -32
+KPX D A -32
+
+KPX F period -81
+KPX F comma -81
+KPX F a -15
+KPX F A -65
+
+KPX J u -15
+KPX J period -15
+KPX J comma -15
+KPX J A -15
+
+KPX K y -32
+KPX K u -24
+KPX K o -28
+KPX K e -11
+KPX K O -24
+
+KPX L y -24
+KPX L quoteright -114
+KPX L quotedblright -114
+KPX L Y -97
+KPX L W -65
+KPX L V -89
+KPX L T -73
+
+KPX O period -32
+KPX O comma -32
+KPX O Y -56
+KPX O X -40
+KPX O W -40
+KPX O V -40
+KPX O T -32
+KPX O A -40
+
+KPX P period -97
+KPX P o -32
+KPX P e -24
+KPX P comma -97
+KPX P a -24
+KPX P A -81
+
+KPX Q period 16
+KPX Q comma 16
+KPX Q U -7
+
+KPX R Y -40
+KPX R W -32
+KPX R V -40
+KPX R U -15
+KPX R T -15
+KPX R O -15
+
+KPX T y -48
+KPX T w -48
+KPX T u -73
+KPX T semicolon -32
+KPX T r -65
+KPX T period -65
+KPX T o -65
+KPX T hyphen -97
+KPX T e -48
+KPX T comma -65
+KPX T colon -32
+KPX T a -65
+KPX T O -32
+KPX T A -73
+
+KPX U period -24
+KPX U comma -24
+KPX U A -40
+
+KPX V u -48
+KPX V semicolon -32
+KPX V period -97
+KPX V o -73
+KPX V hyphen -65
+KPX V e -40
+KPX V comma -97
+KPX V colon -32
+KPX V a -48
+KPX V O -40
+KPX V G -40
+KPX V A -65
+
+KPX W y -15
+KPX W u -36
+KPX W semicolon -7
+KPX W period -65
+KPX W o -48
+KPX W hyphen -32
+KPX W e -28
+KPX W comma -65
+KPX W colon -7
+KPX W a -32
+KPX W O -15
+KPX W A -48
+
+KPX Y u -81
+KPX Y semicolon -40
+KPX Y period -81
+KPX Y o -81
+KPX Y e -65
+KPX Y comma -81
+KPX Y colon -40
+KPX Y a -73
+KPX Y O -56
+KPX Y A -89
+
+KPX a y -15
+KPX a w -11
+KPX a v -11
+KPX a g -7
+
+KPX b y -15
+KPX b v -15
+KPX b u -15
+KPX b l -7
+
+KPX c y -7
+KPX c l -15
+KPX c k -15
+KPX c h -7
+
+KPX colon space -32
+
+KPX comma space -32
+KPX comma quoteright -97
+KPX comma quotedblright -97
+
+KPX d y -11
+KPX d w -11
+KPX d v -11
+KPX d d -7
+
+KPX e y -11
+KPX e x -11
+KPX e w -11
+KPX e v -11
+KPX e period 16
+KPX e comma 8
+
+KPX f quoteright 25
+KPX f quotedblright 25
+KPX f period -7
+KPX f o -15
+KPX f e -7
+KPX f comma -7
+
+KPX g g -7
+KPX g e 8
+
+KPX h y -15
+
+KPX k o -11
+
+KPX l y -11
+KPX l w -11
+
+KPX m y -24
+KPX m u -15
+
+KPX n y -15
+KPX n v -32
+KPX n u -7
+
+KPX o y -15
+KPX o x -24
+KPX o w -11
+KPX o v -15
+
+KPX p y -11
+
+KPX period space -32
+KPX period quoteright -97
+KPX period quotedblright -97
+
+KPX quotedblright space -65
+
+KPX quoteleft quoteleft -37
+
+KPX quoteright v -15
+KPX quoteright space -65
+KPX quoteright s -48
+KPX quoteright r -32
+KPX quoteright quoteright -37
+KPX quoteright l -15
+KPX quoteright d -65
+
+KPX r y 8
+KPX r v 8
+KPX r t 16
+KPX r s -11
+KPX r q -15
+KPX r period -48
+KPX r o -15
+KPX r hyphen -15
+KPX r g -11
+KPX r d -15
+KPX r comma -48
+KPX r c -15
+
+KPX s w -11
+
+KPX semicolon space -32
+
+KPX space quoteleft -48
+KPX space quotedblleft -65
+KPX space Y -97
+KPX space W -65
+KPX space V -65
+KPX space T -81
+
+KPX v period -65
+KPX v o -24
+KPX v comma -65
+KPX v a -15
+
+KPX w period -32
+KPX w o -15
+KPX w comma -32
+
+KPX x e -7
+
+KPX y period -65
+KPX y o -20
+KPX y e -7
+KPX y comma -65
+KPX y a -24
+
+KPX z e 8
+EndKernPairs
+EndKernData
+StartComposites 58
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 160 186 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 160 186 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 160 186 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 160 186 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 160 186 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 160 186 ;
+CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 176 0 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 137 186 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 137 186 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 137 186 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 137 186 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute -22 186 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex -22 186 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis -22 186 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave -22 186 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 160 186 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 183 186 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 183 186 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 183 186 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 183 186 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 183 186 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 137 186 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 160 186 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 160 186 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 160 186 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 160 186 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 137 186 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 137 186 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 114 186 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 92 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 92 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 92 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 92 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 92 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 92 0 ;
+CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 108 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 92 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 92 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 92 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 92 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -22 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -22 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -22 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -22 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 114 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 114 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 114 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 114 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 114 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 114 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 92 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 114 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 114 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 114 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 114 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 92 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 92 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 69 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/He-NrBd+ b/font/font/He-NrBd+
new file mode 100644
index 0000000..41f7f8e
--- /dev/null
+++ b/font/font/He-NrBd+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 592 ; N Ccaron ; B 36 -19 561 930 ;
+C -1 ; WX 456 ; N ccaron ; B 28 -14 430 750 ;
+C -1 ; WX 592 ; N Dcaron ; B 62 0 562 930 ;
+C -1 ; WX 581 ; N dcaron ; B 28 -14 577 790 ;
+C -1 ; WX 547 ; N Ecaron ; B 62 0 509 930 ;
+C -1 ; WX 456 ; N ecaron ; B 19 -14 433 750 ;
+C -1 ; WX 501 ; N Lcaron ; B 62 0 478 790 ;
+C -1 ; WX 501 ; N Lacute ; B 62 0 478 930 ;
+C -1 ; WX 308 ; N lcaron ; B 57 0 296 790 ;
+C -1 ; WX 228 ; N lacute ; B 57 0 290 930 ;
+C -1 ; WX 592 ; N Ncaron ; B 57 0 536 930 ;
+C -1 ; WX 501 ; N ncaron ; B 53 0 448 750 ;
+C -1 ; WX 592 ; N Rcaron ; B 62 0 555 930 ;
+C -1 ; WX 592 ; N Racute ; B 62 0 555 930 ;
+C -1 ; WX 319 ; N rcaron ; B 15 0 306 750 ;
+C -1 ; WX 319 ; N racute ; B 52 0 335 750 ;
+C -1 ; WX 501 ; N Tcaron ; B 11 0 490 930 ;
+C -1 ; WX 353 ; N tcaron ; B 8 -6 378 718 ;
+C -1 ; WX 592 ; N Uring ; B 59 -19 534 930 ;
+C -1 ; WX 501 ; N uring ; B 54 -14 447 776 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 212 180 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 111 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 159 180 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 406 72 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 137 180 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 91 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 129 72 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 114 180 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 125 72 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute -2 180 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 159 180 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 114 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 159 180 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 198 180 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 23 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 43 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 114 180 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 207 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 159 154 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 114 0 ;
+EndBuildComposites
diff --git a/font/font/He-NrBdO b/font/font/He-NrBdO
new file mode 100644
index 0000000..1a38001
--- /dev/null
+++ b/font/font/He-NrBdO
@@ -0,0 +1,570 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Thu Mar 15 12:08:57 1990
+Comment UniqueID 28407
+Comment VMusage 7614 43068
+FontName Helvetica-Narrow-BoldOblique
+FullName Helvetica Narrow Bold Oblique
+FamilyName Helvetica
+Weight Bold
+ItalicAngle -12
+IsFixedPitch false
+FontBBox -143 -228 913 962
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.007
+Notice Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.Helvetica is a trademark of Linotype AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 718
+XHeight 532
+Ascender 718
+Descender -207
+StartCharMetrics 228
+C 32 ; WX 228 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 273 ; N exclam ; B 77 0 325 718 ;
+C 34 ; WX 389 ; N quotedbl ; B 158 447 433 718 ;
+C 35 ; WX 456 ; N numbersign ; B 49 0 528 698 ;
+C 36 ; WX 456 ; N dollar ; B 55 -115 510 775 ;
+C 37 ; WX 729 ; N percent ; B 112 -19 739 710 ;
+C 38 ; WX 592 ; N ampersand ; B 73 -19 600 718 ;
+C 39 ; WX 228 ; N quoteright ; B 137 445 297 718 ;
+C 40 ; WX 273 ; N parenleft ; B 62 -208 385 734 ;
+C 41 ; WX 273 ; N parenright ; B -21 -208 302 734 ;
+C 42 ; WX 319 ; N asterisk ; B 120 387 394 718 ;
+C 43 ; WX 479 ; N plus ; B 67 0 500 506 ;
+C 44 ; WX 228 ; N comma ; B 23 -168 201 146 ;
+C 45 ; WX 273 ; N hyphen ; B 60 215 311 345 ;
+C 46 ; WX 228 ; N period ; B 52 0 201 146 ;
+C 47 ; WX 228 ; N slash ; B -30 -19 383 737 ;
+C 48 ; WX 456 ; N zero ; B 71 -19 506 710 ;
+C 49 ; WX 456 ; N one ; B 142 0 434 710 ;
+C 50 ; WX 456 ; N two ; B 21 0 508 710 ;
+C 51 ; WX 456 ; N three ; B 54 -19 499 710 ;
+C 52 ; WX 456 ; N four ; B 50 0 490 710 ;
+C 53 ; WX 456 ; N five ; B 53 -19 522 698 ;
+C 54 ; WX 456 ; N six ; B 70 -19 507 710 ;
+C 55 ; WX 456 ; N seven ; B 102 0 555 698 ;
+C 56 ; WX 456 ; N eight ; B 57 -19 505 710 ;
+C 57 ; WX 456 ; N nine ; B 64 -19 504 710 ;
+C 58 ; WX 273 ; N colon ; B 75 0 288 512 ;
+C 59 ; WX 273 ; N semicolon ; B 46 -168 288 512 ;
+C 60 ; WX 479 ; N less ; B 67 -8 537 514 ;
+C 61 ; WX 479 ; N equal ; B 48 87 519 419 ;
+C 62 ; WX 479 ; N greater ; B 30 -8 500 514 ;
+C 63 ; WX 501 ; N question ; B 135 0 550 727 ;
+C 64 ; WX 800 ; N at ; B 152 -19 782 737 ;
+C 65 ; WX 592 ; N A ; B 16 0 576 718 ;
+C 66 ; WX 592 ; N B ; B 62 0 626 718 ;
+C 67 ; WX 592 ; N C ; B 88 -19 647 737 ;
+C 68 ; WX 592 ; N D ; B 62 0 637 718 ;
+C 69 ; WX 547 ; N E ; B 62 0 620 718 ;
+C 70 ; WX 501 ; N F ; B 62 0 606 718 ;
+C 71 ; WX 638 ; N G ; B 89 -19 670 737 ;
+C 72 ; WX 592 ; N H ; B 58 0 659 718 ;
+C 73 ; WX 228 ; N I ; B 52 0 301 718 ;
+C 74 ; WX 456 ; N J ; B 49 -18 522 718 ;
+C 75 ; WX 592 ; N K ; B 71 0 703 718 ;
+C 76 ; WX 501 ; N L ; B 62 0 501 718 ;
+C 77 ; WX 683 ; N M ; B 57 0 752 718 ;
+C 78 ; WX 592 ; N N ; B 57 0 661 718 ;
+C 79 ; WX 638 ; N O ; B 88 -19 675 737 ;
+C 80 ; WX 547 ; N P ; B 62 0 605 718 ;
+C 81 ; WX 638 ; N Q ; B 88 -52 675 737 ;
+C 82 ; WX 592 ; N R ; B 62 0 638 718 ;
+C 83 ; WX 547 ; N S ; B 66 -19 588 737 ;
+C 84 ; WX 501 ; N T ; B 114 0 615 718 ;
+C 85 ; WX 592 ; N U ; B 96 -19 659 718 ;
+C 86 ; WX 547 ; N V ; B 141 0 656 718 ;
+C 87 ; WX 774 ; N W ; B 138 0 887 718 ;
+C 88 ; WX 547 ; N X ; B 11 0 648 718 ;
+C 89 ; WX 547 ; N Y ; B 137 0 661 718 ;
+C 90 ; WX 501 ; N Z ; B 20 0 604 718 ;
+C 91 ; WX 273 ; N bracketleft ; B 17 -196 379 722 ;
+C 92 ; WX 228 ; N backslash ; B 101 -19 252 737 ;
+C 93 ; WX 273 ; N bracketright ; B -14 -196 347 722 ;
+C 94 ; WX 479 ; N asciicircum ; B 107 323 484 698 ;
+C 95 ; WX 456 ; N underscore ; B -22 -125 443 -75 ;
+C 96 ; WX 228 ; N quoteleft ; B 136 454 296 727 ;
+C 97 ; WX 456 ; N a ; B 45 -14 478 546 ;
+C 98 ; WX 501 ; N b ; B 50 -14 529 718 ;
+C 99 ; WX 456 ; N c ; B 65 -14 491 546 ;
+C 100 ; WX 501 ; N d ; B 67 -14 577 718 ;
+C 101 ; WX 456 ; N e ; B 58 -14 486 546 ;
+C 102 ; WX 273 ; N f ; B 71 0 385 727 ; L i fi ; L l fl ;
+C 103 ; WX 501 ; N g ; B 31 -217 546 546 ;
+C 104 ; WX 501 ; N h ; B 53 0 516 718 ;
+C 105 ; WX 228 ; N i ; B 57 0 298 725 ;
+C 106 ; WX 228 ; N j ; B -35 -214 298 725 ;
+C 107 ; WX 456 ; N k ; B 57 0 549 718 ;
+C 108 ; WX 228 ; N l ; B 57 0 297 718 ;
+C 109 ; WX 729 ; N m ; B 52 0 746 546 ;
+C 110 ; WX 501 ; N n ; B 53 0 516 546 ;
+C 111 ; WX 501 ; N o ; B 67 -14 527 546 ;
+C 112 ; WX 501 ; N p ; B 15 -207 529 546 ;
+C 113 ; WX 501 ; N q ; B 66 -207 545 546 ;
+C 114 ; WX 319 ; N r ; B 52 0 401 546 ;
+C 115 ; WX 456 ; N s ; B 52 -14 479 546 ;
+C 116 ; WX 273 ; N t ; B 82 -6 346 676 ;
+C 117 ; WX 501 ; N u ; B 80 -14 540 532 ;
+C 118 ; WX 456 ; N v ; B 103 0 538 532 ;
+C 119 ; WX 638 ; N w ; B 101 0 723 532 ;
+C 120 ; WX 456 ; N x ; B 12 0 531 532 ;
+C 121 ; WX 456 ; N y ; B 34 -214 535 532 ;
+C 122 ; WX 410 ; N z ; B 16 0 478 532 ;
+C 123 ; WX 319 ; N braceleft ; B 77 -196 425 722 ;
+C 124 ; WX 230 ; N bar ; B 66 -19 289 737 ;
+C 125 ; WX 319 ; N braceright ; B -14 -196 333 722 ;
+C 126 ; WX 479 ; N asciitilde ; B 94 163 473 343 ;
+C 161 ; WX 273 ; N exclamdown ; B 41 -186 290 532 ;
+C 162 ; WX 456 ; N cent ; B 65 -118 491 628 ;
+C 163 ; WX 456 ; N sterling ; B 41 -16 520 718 ;
+C 164 ; WX 137 ; N fraction ; B -143 -19 399 710 ;
+C 165 ; WX 456 ; N yen ; B 49 0 585 698 ;
+C 166 ; WX 456 ; N florin ; B -41 -210 548 737 ;
+C 167 ; WX 456 ; N section ; B 50 -184 491 727 ;
+C 168 ; WX 456 ; N currency ; B 22 76 558 636 ;
+C 169 ; WX 195 ; N quotesingle ; B 135 447 263 718 ;
+C 170 ; WX 410 ; N quotedblleft ; B 132 454 482 727 ;
+C 171 ; WX 456 ; N guillemotleft ; B 111 76 468 484 ;
+C 172 ; WX 273 ; N guilsinglleft ; B 106 76 289 484 ;
+C 173 ; WX 273 ; N guilsinglright ; B 81 76 264 484 ;
+C 174 ; WX 501 ; N fi ; B 71 0 571 727 ;
+C 175 ; WX 501 ; N fl ; B 71 0 570 727 ;
+C 177 ; WX 456 ; N endash ; B 40 227 514 333 ;
+C 178 ; WX 456 ; N dagger ; B 97 -171 513 718 ;
+C 179 ; WX 456 ; N daggerdbl ; B 38 -171 515 718 ;
+C 180 ; WX 228 ; N periodcentered ; B 90 172 226 334 ;
+C 182 ; WX 456 ; N paragraph ; B 80 -191 564 700 ;
+C 183 ; WX 287 ; N bullet ; B 68 194 345 524 ;
+C 184 ; WX 228 ; N quotesinglbase ; B 34 -146 194 127 ;
+C 185 ; WX 410 ; N quotedblbase ; B 29 -146 380 127 ;
+C 186 ; WX 410 ; N quotedblright ; B 132 445 483 718 ;
+C 187 ; WX 456 ; N guillemotright ; B 85 76 443 484 ;
+C 188 ; WX 820 ; N ellipsis ; B 75 0 770 146 ;
+C 189 ; WX 820 ; N perthousand ; B 62 -19 851 710 ;
+C 191 ; WX 501 ; N questiondown ; B 44 -195 459 532 ;
+C 193 ; WX 273 ; N grave ; B 112 604 290 750 ;
+C 194 ; WX 273 ; N acute ; B 194 604 423 750 ;
+C 195 ; WX 273 ; N circumflex ; B 97 604 387 750 ;
+C 196 ; WX 273 ; N tilde ; B 92 610 415 737 ;
+C 197 ; WX 273 ; N macron ; B 100 604 396 678 ;
+C 198 ; WX 273 ; N breve ; B 128 604 405 750 ;
+C 199 ; WX 273 ; N dotaccent ; B 192 614 316 729 ;
+C 200 ; WX 273 ; N dieresis ; B 112 614 395 729 ;
+C 202 ; WX 273 ; N ring ; B 164 568 344 776 ;
+C 203 ; WX 273 ; N cedilla ; B -30 -228 180 0 ;
+C 205 ; WX 273 ; N hungarumlaut ; B 113 604 529 750 ;
+C 206 ; WX 273 ; N ogonek ; B 33 -228 216 0 ;
+C 207 ; WX 273 ; N caron ; B 123 604 412 750 ;
+C 208 ; WX 820 ; N emdash ; B 40 227 878 333 ;
+C 225 ; WX 820 ; N AE ; B 4 0 902 718 ;
+C 227 ; WX 303 ; N ordfeminine ; B 75 276 381 737 ;
+C 232 ; WX 501 ; N Lslash ; B 28 0 501 718 ;
+C 233 ; WX 638 ; N Oslash ; B 29 -27 733 745 ;
+C 234 ; WX 820 ; N OE ; B 81 -19 913 737 ;
+C 235 ; WX 299 ; N ordmasculine ; B 75 276 398 737 ;
+C 241 ; WX 729 ; N ae ; B 46 -14 757 546 ;
+C 245 ; WX 228 ; N dotlessi ; B 57 0 264 532 ;
+C 248 ; WX 228 ; N lslash ; B 33 0 334 718 ;
+C 249 ; WX 501 ; N oslash ; B 18 -29 575 560 ;
+C 250 ; WX 774 ; N oe ; B 67 -14 801 546 ;
+C 251 ; WX 501 ; N germandbls ; B 57 -14 539 731 ;
+C -1 ; WX 501 ; N Zcaron ; B 20 0 604 936 ;
+C -1 ; WX 456 ; N ccedilla ; B 65 -228 491 546 ;
+C -1 ; WX 456 ; N ydieresis ; B 34 -214 535 729 ;
+C -1 ; WX 456 ; N atilde ; B 45 -14 507 737 ;
+C -1 ; WX 228 ; N icircumflex ; B 57 0 364 750 ;
+C -1 ; WX 273 ; N threesuperior ; B 75 271 361 710 ;
+C -1 ; WX 456 ; N ecircumflex ; B 58 -14 486 750 ;
+C -1 ; WX 501 ; N thorn ; B 15 -208 529 718 ;
+C -1 ; WX 456 ; N egrave ; B 58 -14 486 750 ;
+C -1 ; WX 273 ; N twosuperior ; B 57 283 368 710 ;
+C -1 ; WX 456 ; N eacute ; B 58 -14 514 750 ;
+C -1 ; WX 501 ; N otilde ; B 67 -14 529 737 ;
+C -1 ; WX 592 ; N Aacute ; B 16 0 615 936 ;
+C -1 ; WX 501 ; N ocircumflex ; B 67 -14 527 750 ;
+C -1 ; WX 456 ; N yacute ; B 34 -214 535 750 ;
+C -1 ; WX 501 ; N udieresis ; B 80 -14 540 729 ;
+C -1 ; WX 684 ; N threequarters ; B 82 -19 688 710 ;
+C -1 ; WX 456 ; N acircumflex ; B 45 -14 478 750 ;
+C -1 ; WX 592 ; N Eth ; B 51 0 637 718 ;
+C -1 ; WX 456 ; N edieresis ; B 58 -14 487 729 ;
+C -1 ; WX 501 ; N ugrave ; B 80 -14 540 750 ;
+C -1 ; WX 820 ; N trademark ; B 146 306 909 718 ;
+C -1 ; WX 501 ; N ograve ; B 67 -14 527 750 ;
+C -1 ; WX 456 ; N scaron ; B 52 -14 504 750 ;
+C -1 ; WX 228 ; N Idieresis ; B 52 0 405 915 ;
+C -1 ; WX 501 ; N uacute ; B 80 -14 540 750 ;
+C -1 ; WX 456 ; N agrave ; B 45 -14 478 750 ;
+C -1 ; WX 501 ; N ntilde ; B 53 0 529 737 ;
+C -1 ; WX 456 ; N aring ; B 45 -14 478 776 ;
+C -1 ; WX 410 ; N zcaron ; B 16 0 481 750 ;
+C -1 ; WX 228 ; N Icircumflex ; B 52 0 397 936 ;
+C -1 ; WX 592 ; N Ntilde ; B 57 0 661 923 ;
+C -1 ; WX 501 ; N ucircumflex ; B 80 -14 540 750 ;
+C -1 ; WX 547 ; N Ecircumflex ; B 62 0 620 936 ;
+C -1 ; WX 228 ; N Iacute ; B 52 0 433 936 ;
+C -1 ; WX 592 ; N Ccedilla ; B 88 -228 647 737 ;
+C -1 ; WX 638 ; N Odieresis ; B 88 -19 675 915 ;
+C -1 ; WX 547 ; N Scaron ; B 66 -19 588 936 ;
+C -1 ; WX 547 ; N Edieresis ; B 62 0 620 915 ;
+C -1 ; WX 228 ; N Igrave ; B 52 0 301 936 ;
+C -1 ; WX 456 ; N adieresis ; B 45 -14 487 729 ;
+C -1 ; WX 638 ; N Ograve ; B 88 -19 675 936 ;
+C -1 ; WX 547 ; N Egrave ; B 62 0 620 936 ;
+C -1 ; WX 547 ; N Ydieresis ; B 137 0 661 915 ;
+C -1 ; WX 604 ; N registered ; B 45 -19 684 737 ;
+C -1 ; WX 638 ; N Otilde ; B 88 -19 675 923 ;
+C -1 ; WX 684 ; N onequarter ; B 108 -19 661 710 ;
+C -1 ; WX 592 ; N Ugrave ; B 96 -19 659 936 ;
+C -1 ; WX 592 ; N Ucircumflex ; B 96 -19 659 936 ;
+C -1 ; WX 547 ; N Thorn ; B 62 0 588 718 ;
+C -1 ; WX 479 ; N divide ; B 67 -42 500 548 ;
+C -1 ; WX 592 ; N Atilde ; B 16 0 608 923 ;
+C -1 ; WX 592 ; N Uacute ; B 96 -19 659 936 ;
+C -1 ; WX 638 ; N Ocircumflex ; B 88 -19 675 936 ;
+C -1 ; WX 479 ; N logicalnot ; B 86 108 519 419 ;
+C -1 ; WX 592 ; N Aring ; B 16 0 576 962 ;
+C -1 ; WX 228 ; N idieresis ; B 57 0 373 729 ;
+C -1 ; WX 228 ; N iacute ; B 57 0 400 750 ;
+C -1 ; WX 456 ; N aacute ; B 45 -14 514 750 ;
+C -1 ; WX 479 ; N plusminus ; B 33 0 512 506 ;
+C -1 ; WX 479 ; N multiply ; B 47 1 520 505 ;
+C -1 ; WX 592 ; N Udieresis ; B 96 -19 659 915 ;
+C -1 ; WX 479 ; N minus ; B 67 197 500 309 ;
+C -1 ; WX 273 ; N onesuperior ; B 121 283 318 710 ;
+C -1 ; WX 547 ; N Eacute ; B 62 0 620 936 ;
+C -1 ; WX 592 ; N Acircumflex ; B 16 0 579 936 ;
+C -1 ; WX 604 ; N copyright ; B 46 -19 685 737 ;
+C -1 ; WX 592 ; N Agrave ; B 16 0 576 936 ;
+C -1 ; WX 501 ; N odieresis ; B 67 -14 527 729 ;
+C -1 ; WX 501 ; N oacute ; B 67 -14 537 750 ;
+C -1 ; WX 328 ; N degree ; B 143 426 383 712 ;
+C -1 ; WX 228 ; N igrave ; B 57 0 268 750 ;
+C -1 ; WX 501 ; N mu ; B 18 -207 540 532 ;
+C -1 ; WX 638 ; N Oacute ; B 88 -19 675 936 ;
+C -1 ; WX 501 ; N eth ; B 67 -14 549 737 ;
+C -1 ; WX 592 ; N Adieresis ; B 16 0 588 915 ;
+C -1 ; WX 547 ; N Yacute ; B 137 0 661 936 ;
+C -1 ; WX 230 ; N brokenbar ; B 66 -19 289 737 ;
+C -1 ; WX 684 ; N onehalf ; B 108 -19 704 710 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 209
+
+KPX A y -30
+KPX A w -30
+KPX A v -40
+KPX A u -30
+KPX A Y -110
+KPX A W -60
+KPX A V -80
+KPX A U -50
+KPX A T -90
+KPX A Q -40
+KPX A O -40
+KPX A G -50
+KPX A C -40
+
+KPX B U -10
+KPX B A -30
+
+KPX D period -30
+KPX D comma -30
+KPX D Y -70
+KPX D W -40
+KPX D V -40
+KPX D A -40
+
+KPX F period -100
+KPX F comma -100
+KPX F a -20
+KPX F A -80
+
+KPX J u -20
+KPX J period -20
+KPX J comma -20
+KPX J A -20
+
+KPX K y -40
+KPX K u -30
+KPX K o -35
+KPX K e -15
+KPX K O -30
+
+KPX L y -30
+KPX L quoteright -140
+KPX L quotedblright -140
+KPX L Y -120
+KPX L W -80
+KPX L V -110
+KPX L T -90
+
+KPX O period -40
+KPX O comma -40
+KPX O Y -70
+KPX O X -50
+KPX O W -50
+KPX O V -50
+KPX O T -40
+KPX O A -50
+
+KPX P period -120
+KPX P o -40
+KPX P e -30
+KPX P comma -120
+KPX P a -30
+KPX P A -100
+
+KPX Q period 20
+KPX Q comma 20
+KPX Q U -10
+
+KPX R Y -50
+KPX R W -40
+KPX R V -50
+KPX R U -20
+KPX R T -20
+KPX R O -20
+
+KPX T y -60
+KPX T w -60
+KPX T u -90
+KPX T semicolon -40
+KPX T r -80
+KPX T period -80
+KPX T o -80
+KPX T hyphen -120
+KPX T e -60
+KPX T comma -80
+KPX T colon -40
+KPX T a -80
+KPX T O -40
+KPX T A -90
+
+KPX U period -30
+KPX U comma -30
+KPX U A -50
+
+KPX V u -60
+KPX V semicolon -40
+KPX V period -120
+KPX V o -90
+KPX V hyphen -80
+KPX V e -50
+KPX V comma -120
+KPX V colon -40
+KPX V a -60
+KPX V O -50
+KPX V G -50
+KPX V A -80
+
+KPX W y -20
+KPX W u -45
+KPX W semicolon -10
+KPX W period -80
+KPX W o -60
+KPX W hyphen -40
+KPX W e -35
+KPX W comma -80
+KPX W colon -10
+KPX W a -40
+KPX W O -20
+KPX W A -60
+
+KPX Y u -100
+KPX Y semicolon -50
+KPX Y period -100
+KPX Y o -100
+KPX Y e -80
+KPX Y comma -100
+KPX Y colon -50
+KPX Y a -90
+KPX Y O -70
+KPX Y A -110
+
+KPX a y -20
+KPX a w -15
+KPX a v -15
+KPX a g -10
+
+KPX b y -20
+KPX b v -20
+KPX b u -20
+KPX b l -10
+
+KPX c y -10
+KPX c l -20
+KPX c k -20
+KPX c h -10
+
+KPX colon space -40
+
+KPX comma space -40
+KPX comma quoteright -120
+KPX comma quotedblright -120
+
+KPX d y -15
+KPX d w -15
+KPX d v -15
+KPX d d -10
+
+KPX e y -15
+KPX e x -15
+KPX e w -15
+KPX e v -15
+KPX e period 20
+KPX e comma 10
+
+KPX f quoteright 30
+KPX f quotedblright 30
+KPX f period -10
+KPX f o -20
+KPX f e -10
+KPX f comma -10
+
+KPX g g -10
+KPX g e 10
+
+KPX h y -20
+
+KPX k o -15
+
+KPX l y -15
+KPX l w -15
+
+KPX m y -30
+KPX m u -20
+
+KPX n y -20
+KPX n v -40
+KPX n u -10
+
+KPX o y -20
+KPX o x -30
+KPX o w -15
+KPX o v -20
+
+KPX p y -15
+
+KPX period space -40
+KPX period quoteright -120
+KPX period quotedblright -120
+
+KPX quotedblright space -80
+
+KPX quoteleft quoteleft -46
+
+KPX quoteright v -20
+KPX quoteright space -80
+KPX quoteright s -60
+KPX quoteright r -40
+KPX quoteright quoteright -46
+KPX quoteright l -20
+KPX quoteright d -80
+
+KPX r y 10
+KPX r v 10
+KPX r t 20
+KPX r s -15
+KPX r q -20
+KPX r period -60
+KPX r o -20
+KPX r hyphen -20
+KPX r g -15
+KPX r d -20
+KPX r comma -60
+KPX r c -20
+
+KPX s w -15
+
+KPX semicolon space -40
+
+KPX space quoteleft -60
+KPX space quotedblleft -80
+KPX space Y -120
+KPX space W -80
+KPX space V -80
+KPX space T -100
+
+KPX v period -80
+KPX v o -30
+KPX v comma -80
+KPX v a -20
+
+KPX w period -40
+KPX w o -20
+KPX w comma -40
+
+KPX x e -10
+
+KPX y period -80
+KPX y o -25
+KPX y e -10
+KPX y comma -80
+KPX y a -30
+
+KPX z e 10
+EndKernPairs
+EndKernData
+StartComposites 58
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 192 186 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 192 186 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 192 186 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 192 186 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 192 186 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 192 186 ;
+CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 176 0 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 169 186 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 169 186 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 169 186 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 169 186 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 10 186 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 10 186 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 10 186 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 10 186 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 192 186 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 215 186 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 215 186 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 215 186 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 215 186 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 215 186 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 169 186 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 192 186 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 192 186 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 192 186 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 192 186 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 169 186 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 169 186 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 146 186 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 92 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 92 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 92 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 92 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 92 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 92 0 ;
+CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 108 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 92 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 92 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 92 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 92 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -22 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -22 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -22 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -22 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 114 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 114 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 114 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 114 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 114 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 114 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 92 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 114 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 114 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 114 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 114 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 92 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 92 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 69 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/He-NrBdO+ b/font/font/He-NrBdO+
new file mode 100644
index 0000000..12e78ce
--- /dev/null
+++ b/font/font/He-NrBdO+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 592 ; N Ccaron ; B 88 -19 665 930 ;
+C -1 ; WX 456 ; N ccaron ; B 65 -14 524 750 ;
+C -1 ; WX 592 ; N Dcaron ; B 62 0 637 930 ;
+C -1 ; WX 613 ; N dcaron ; B 67 -14 753 790 ;
+C -1 ; WX 547 ; N Ecaron ; B 62 0 620 930 ;
+C -1 ; WX 456 ; N ecaron ; B 58 -14 503 750 ;
+C -1 ; WX 501 ; N Lcaron ; B 62 0 501 790 ;
+C -1 ; WX 501 ; N Lacute ; B 62 0 575 930 ;
+C -1 ; WX 340 ; N lcaron ; B 57 0 473 790 ;
+C -1 ; WX 228 ; N lacute ; B 57 0 462 930 ;
+C -1 ; WX 592 ; N Ncaron ; B 57 0 661 930 ;
+C -1 ; WX 501 ; N ncaron ; B 53 0 526 750 ;
+C -1 ; WX 592 ; N Rcaron ; B 62 0 638 930 ;
+C -1 ; WX 592 ; N Racute ; B 62 0 664 930 ;
+C -1 ; WX 319 ; N rcaron ; B 52 0 435 750 ;
+C -1 ; WX 319 ; N racute ; B 52 0 469 750 ;
+C -1 ; WX 501 ; N Tcaron ; B 114 0 615 930 ;
+C -1 ; WX 385 ; N tcaron ; B 82 -6 522 718 ;
+C -1 ; WX 592 ; N Uring ; B 96 -19 659 930 ;
+C -1 ; WX 501 ; N uring ; B 80 -14 540 776 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 253 180 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 112 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 197 180 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 456 72 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 175 180 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 91 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 180 72 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 152 180 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 176 72 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 39 180 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 197 180 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 114 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 197 180 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 241 180 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 23 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 46 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 152 180 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 225 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 191 154 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 114 0 ;
+EndBuildComposites
diff --git a/font/font/He-NrO b/font/font/He-NrO
new file mode 100644
index 0000000..f757319
--- /dev/null
+++ b/font/font/He-NrO
@@ -0,0 +1,612 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All rights reserved.
+Comment Creation Date: Thu Mar 15 11:25:48 1990
+Comment UniqueID 28389
+Comment VMusage 7572 42473
+FontName Helvetica-Narrow-Oblique
+FullName Helvetica Narrow Oblique
+FamilyName Helvetica
+Weight Medium
+ItalicAngle -12
+IsFixedPitch false
+FontBBox -139 -225 915 931
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.006
+Notice Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All rights reserved.Helvetica is a trademark of Linotype AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 718
+XHeight 523
+Ascender 718
+Descender -207
+StartCharMetrics 228
+C 32 ; WX 228 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 228 ; N exclam ; B 74 0 278 718 ;
+C 34 ; WX 291 ; N quotedbl ; B 138 463 359 718 ;
+C 35 ; WX 456 ; N numbersign ; B 60 0 517 688 ;
+C 36 ; WX 456 ; N dollar ; B 57 -115 506 775 ;
+C 37 ; WX 729 ; N percent ; B 120 -19 729 703 ;
+C 38 ; WX 547 ; N ampersand ; B 63 -15 530 718 ;
+C 39 ; WX 182 ; N quoteright ; B 124 463 254 718 ;
+C 40 ; WX 273 ; N parenleft ; B 89 -207 372 733 ;
+C 41 ; WX 273 ; N parenright ; B -7 -207 276 733 ;
+C 42 ; WX 319 ; N asterisk ; B 135 431 389 718 ;
+C 43 ; WX 479 ; N plus ; B 70 0 497 505 ;
+C 44 ; WX 228 ; N comma ; B 46 -147 175 106 ;
+C 45 ; WX 273 ; N hyphen ; B 77 232 293 322 ;
+C 46 ; WX 228 ; N period ; B 71 0 175 106 ;
+C 47 ; WX 228 ; N slash ; B -17 -19 370 737 ;
+C 48 ; WX 456 ; N zero ; B 77 -19 499 703 ;
+C 49 ; WX 456 ; N one ; B 170 0 417 703 ;
+C 50 ; WX 456 ; N two ; B 21 0 506 703 ;
+C 51 ; WX 456 ; N three ; B 61 -19 500 703 ;
+C 52 ; WX 456 ; N four ; B 50 0 472 703 ;
+C 53 ; WX 456 ; N five ; B 55 -19 509 688 ;
+C 54 ; WX 456 ; N six ; B 74 -19 504 703 ;
+C 55 ; WX 456 ; N seven ; B 112 0 549 688 ;
+C 56 ; WX 456 ; N eight ; B 60 -19 497 703 ;
+C 57 ; WX 456 ; N nine ; B 67 -19 499 703 ;
+C 58 ; WX 228 ; N colon ; B 71 0 247 516 ;
+C 59 ; WX 228 ; N semicolon ; B 46 -147 247 516 ;
+C 60 ; WX 479 ; N less ; B 77 11 526 495 ;
+C 61 ; WX 479 ; N equal ; B 52 115 515 390 ;
+C 62 ; WX 479 ; N greater ; B 41 11 490 495 ;
+C 63 ; WX 456 ; N question ; B 132 0 500 727 ;
+C 64 ; WX 832 ; N at ; B 176 -19 791 737 ;
+C 65 ; WX 547 ; N A ; B 11 0 536 718 ;
+C 66 ; WX 547 ; N B ; B 61 0 583 718 ;
+C 67 ; WX 592 ; N C ; B 88 -19 640 737 ;
+C 68 ; WX 592 ; N D ; B 66 0 626 718 ;
+C 69 ; WX 547 ; N E ; B 71 0 625 718 ;
+C 70 ; WX 501 ; N F ; B 71 0 603 718 ;
+C 71 ; WX 638 ; N G ; B 91 -19 655 737 ;
+C 72 ; WX 592 ; N H ; B 63 0 655 718 ;
+C 73 ; WX 228 ; N I ; B 75 0 279 718 ;
+C 74 ; WX 410 ; N J ; B 39 -19 476 718 ;
+C 75 ; WX 547 ; N K ; B 62 0 662 718 ;
+C 76 ; WX 456 ; N L ; B 62 0 455 718 ;
+C 77 ; WX 683 ; N M ; B 60 0 749 718 ;
+C 78 ; WX 592 ; N N ; B 62 0 655 718 ;
+C 79 ; WX 638 ; N O ; B 86 -19 677 737 ;
+C 80 ; WX 547 ; N P ; B 71 0 604 718 ;
+C 81 ; WX 638 ; N Q ; B 86 -56 677 737 ;
+C 82 ; WX 592 ; N R ; B 72 0 634 718 ;
+C 83 ; WX 547 ; N S ; B 74 -19 584 737 ;
+C 84 ; WX 501 ; N T ; B 122 0 615 718 ;
+C 85 ; WX 592 ; N U ; B 101 -19 653 718 ;
+C 86 ; WX 547 ; N V ; B 142 0 656 718 ;
+C 87 ; WX 774 ; N W ; B 138 0 886 718 ;
+C 88 ; WX 547 ; N X ; B 16 0 647 718 ;
+C 89 ; WX 547 ; N Y ; B 137 0 661 718 ;
+C 90 ; WX 501 ; N Z ; B 19 0 607 718 ;
+C 91 ; WX 228 ; N bracketleft ; B 17 -196 331 722 ;
+C 92 ; WX 228 ; N backslash ; B 115 -19 239 737 ;
+C 93 ; WX 228 ; N bracketright ; B -11 -196 302 722 ;
+C 94 ; WX 385 ; N asciicircum ; B 35 264 442 688 ;
+C 95 ; WX 456 ; N underscore ; B -22 -125 443 -75 ;
+C 96 ; WX 182 ; N quoteleft ; B 135 470 265 725 ;
+C 97 ; WX 456 ; N a ; B 50 -15 458 538 ;
+C 98 ; WX 456 ; N b ; B 48 -15 479 718 ;
+C 99 ; WX 410 ; N c ; B 61 -15 454 538 ;
+C 100 ; WX 456 ; N d ; B 69 -15 534 718 ;
+C 101 ; WX 456 ; N e ; B 69 -15 474 538 ;
+C 102 ; WX 228 ; N f ; B 71 0 341 728 ; L i fi ; L l fl ;
+C 103 ; WX 456 ; N g ; B 34 -220 500 538 ;
+C 104 ; WX 456 ; N h ; B 53 0 470 718 ;
+C 105 ; WX 182 ; N i ; B 55 0 252 718 ;
+C 106 ; WX 182 ; N j ; B -49 -210 252 718 ;
+C 107 ; WX 410 ; N k ; B 55 0 492 718 ;
+C 108 ; WX 182 ; N l ; B 55 0 252 718 ;
+C 109 ; WX 683 ; N m ; B 53 0 699 538 ;
+C 110 ; WX 456 ; N n ; B 53 0 470 538 ;
+C 111 ; WX 456 ; N o ; B 68 -14 479 538 ;
+C 112 ; WX 456 ; N p ; B 11 -207 479 538 ;
+C 113 ; WX 456 ; N q ; B 69 -207 496 538 ;
+C 114 ; WX 273 ; N r ; B 63 0 365 538 ;
+C 115 ; WX 410 ; N s ; B 52 -15 434 538 ;
+C 116 ; WX 228 ; N t ; B 84 -7 302 669 ;
+C 117 ; WX 456 ; N u ; B 77 -15 492 523 ;
+C 118 ; WX 410 ; N v ; B 98 0 495 523 ;
+C 119 ; WX 592 ; N w ; B 103 0 673 523 ;
+C 120 ; WX 410 ; N x ; B 9 0 487 523 ;
+C 121 ; WX 410 ; N y ; B 12 -214 492 523 ;
+C 122 ; WX 410 ; N z ; B 25 0 468 523 ;
+C 123 ; WX 274 ; N braceleft ; B 75 -196 365 722 ;
+C 124 ; WX 213 ; N bar ; B 74 -19 265 737 ;
+C 125 ; WX 274 ; N braceright ; B 0 -196 291 722 ;
+C 126 ; WX 479 ; N asciitilde ; B 91 180 476 326 ;
+C 161 ; WX 273 ; N exclamdown ; B 63 -195 267 523 ;
+C 162 ; WX 456 ; N cent ; B 78 -115 479 623 ;
+C 163 ; WX 456 ; N sterling ; B 40 -16 520 718 ;
+C 164 ; WX 137 ; N fraction ; B -139 -19 396 703 ;
+C 165 ; WX 456 ; N yen ; B 67 0 573 688 ;
+C 166 ; WX 456 ; N florin ; B -43 -207 537 737 ;
+C 167 ; WX 456 ; N section ; B 63 -191 479 737 ;
+C 168 ; WX 456 ; N currency ; B 49 99 530 603 ;
+C 169 ; WX 157 ; N quotesingle ; B 129 463 233 718 ;
+C 170 ; WX 273 ; N quotedblleft ; B 113 470 378 725 ;
+C 171 ; WX 456 ; N guillemotleft ; B 120 108 454 446 ;
+C 172 ; WX 273 ; N guilsinglleft ; B 112 108 279 446 ;
+C 173 ; WX 273 ; N guilsinglright ; B 91 108 257 446 ;
+C 174 ; WX 410 ; N fi ; B 71 0 481 728 ;
+C 175 ; WX 410 ; N fl ; B 71 0 479 728 ;
+C 177 ; WX 456 ; N endash ; B 42 240 510 313 ;
+C 178 ; WX 456 ; N dagger ; B 110 -159 510 718 ;
+C 179 ; WX 456 ; N daggerdbl ; B 43 -159 511 718 ;
+C 180 ; WX 228 ; N periodcentered ; B 106 190 211 315 ;
+C 182 ; WX 440 ; N paragraph ; B 103 -173 533 718 ;
+C 183 ; WX 287 ; N bullet ; B 74 202 339 517 ;
+C 184 ; WX 182 ; N quotesinglbase ; B 17 -149 147 106 ;
+C 185 ; WX 273 ; N quotedblbase ; B -5 -149 260 106 ;
+C 186 ; WX 273 ; N quotedblright ; B 102 463 367 718 ;
+C 187 ; WX 456 ; N guillemotright ; B 98 108 433 446 ;
+C 188 ; WX 820 ; N ellipsis ; B 94 0 744 106 ;
+C 189 ; WX 820 ; N perthousand ; B 72 -19 844 703 ;
+C 191 ; WX 501 ; N questiondown ; B 70 -201 438 525 ;
+C 193 ; WX 273 ; N grave ; B 139 593 276 734 ;
+C 194 ; WX 273 ; N acute ; B 203 593 390 734 ;
+C 195 ; WX 273 ; N circumflex ; B 121 593 359 734 ;
+C 196 ; WX 273 ; N tilde ; B 102 606 402 722 ;
+C 197 ; WX 273 ; N macron ; B 117 627 384 684 ;
+C 198 ; WX 273 ; N breve ; B 137 595 391 731 ;
+C 199 ; WX 273 ; N dotaccent ; B 204 604 297 706 ;
+C 200 ; WX 273 ; N dieresis ; B 138 604 363 706 ;
+C 202 ; WX 273 ; N ring ; B 175 572 330 756 ;
+C 203 ; WX 273 ; N cedilla ; B 2 -225 191 0 ;
+C 205 ; WX 273 ; N hungarumlaut ; B 129 593 463 734 ;
+C 206 ; WX 273 ; N ogonek ; B 35 -225 204 0 ;
+C 207 ; WX 273 ; N caron ; B 145 593 384 734 ;
+C 208 ; WX 820 ; N emdash ; B 42 240 875 313 ;
+C 225 ; WX 820 ; N AE ; B 7 0 899 718 ;
+C 227 ; WX 303 ; N ordfeminine ; B 82 304 368 737 ;
+C 232 ; WX 456 ; N Lslash ; B 34 0 455 718 ;
+C 233 ; WX 638 ; N Oslash ; B 35 -19 730 737 ;
+C 234 ; WX 820 ; N OE ; B 80 -19 915 737 ;
+C 235 ; WX 299 ; N ordmasculine ; B 82 304 384 737 ;
+C 241 ; WX 729 ; N ae ; B 50 -15 746 538 ;
+C 245 ; WX 228 ; N dotlessi ; B 78 0 241 523 ;
+C 248 ; WX 182 ; N lslash ; B 34 0 284 718 ;
+C 249 ; WX 501 ; N oslash ; B 24 -22 531 545 ;
+C 250 ; WX 774 ; N oe ; B 68 -15 791 538 ;
+C 251 ; WX 501 ; N germandbls ; B 55 -15 539 728 ;
+C -1 ; WX 501 ; N Zcaron ; B 19 0 607 929 ;
+C -1 ; WX 410 ; N ccedilla ; B 61 -225 454 538 ;
+C -1 ; WX 410 ; N ydieresis ; B 12 -214 492 706 ;
+C -1 ; WX 456 ; N atilde ; B 50 -15 486 722 ;
+C -1 ; WX 228 ; N icircumflex ; B 78 0 337 734 ;
+C -1 ; WX 273 ; N threesuperior ; B 74 270 358 703 ;
+C -1 ; WX 456 ; N ecircumflex ; B 69 -15 474 734 ;
+C -1 ; WX 456 ; N thorn ; B 11 -207 479 718 ;
+C -1 ; WX 456 ; N egrave ; B 69 -15 474 734 ;
+C -1 ; WX 273 ; N twosuperior ; B 52 281 368 703 ;
+C -1 ; WX 456 ; N eacute ; B 69 -15 481 734 ;
+C -1 ; WX 456 ; N otilde ; B 68 -14 494 722 ;
+C -1 ; WX 547 ; N Aacute ; B 11 0 560 929 ;
+C -1 ; WX 456 ; N ocircumflex ; B 68 -14 479 734 ;
+C -1 ; WX 410 ; N yacute ; B 12 -214 492 734 ;
+C -1 ; WX 456 ; N udieresis ; B 77 -15 492 706 ;
+C -1 ; WX 684 ; N threequarters ; B 106 -19 706 703 ;
+C -1 ; WX 456 ; N acircumflex ; B 50 -15 458 734 ;
+C -1 ; WX 592 ; N Eth ; B 57 0 626 718 ;
+C -1 ; WX 456 ; N edieresis ; B 69 -15 474 706 ;
+C -1 ; WX 456 ; N ugrave ; B 77 -15 492 734 ;
+C -1 ; WX 820 ; N trademark ; B 152 306 866 718 ;
+C -1 ; WX 456 ; N ograve ; B 68 -14 479 734 ;
+C -1 ; WX 410 ; N scaron ; B 52 -15 453 734 ;
+C -1 ; WX 228 ; N Idieresis ; B 75 0 375 901 ;
+C -1 ; WX 456 ; N uacute ; B 77 -15 492 734 ;
+C -1 ; WX 456 ; N agrave ; B 50 -15 458 734 ;
+C -1 ; WX 456 ; N ntilde ; B 53 0 486 722 ;
+C -1 ; WX 456 ; N aring ; B 50 -15 458 756 ;
+C -1 ; WX 410 ; N zcaron ; B 25 0 468 734 ;
+C -1 ; WX 228 ; N Icircumflex ; B 75 0 371 929 ;
+C -1 ; WX 592 ; N Ntilde ; B 62 0 655 917 ;
+C -1 ; WX 456 ; N ucircumflex ; B 77 -15 492 734 ;
+C -1 ; WX 547 ; N Ecircumflex ; B 71 0 625 929 ;
+C -1 ; WX 228 ; N Iacute ; B 75 0 401 929 ;
+C -1 ; WX 592 ; N Ccedilla ; B 88 -225 640 737 ;
+C -1 ; WX 638 ; N Odieresis ; B 86 -19 677 901 ;
+C -1 ; WX 547 ; N Scaron ; B 74 -19 584 929 ;
+C -1 ; WX 547 ; N Edieresis ; B 71 0 625 901 ;
+C -1 ; WX 228 ; N Igrave ; B 75 0 288 929 ;
+C -1 ; WX 456 ; N adieresis ; B 50 -15 458 706 ;
+C -1 ; WX 638 ; N Ograve ; B 86 -19 677 929 ;
+C -1 ; WX 547 ; N Egrave ; B 71 0 625 929 ;
+C -1 ; WX 547 ; N Ydieresis ; B 137 0 661 901 ;
+C -1 ; WX 604 ; N registered ; B 44 -19 687 737 ;
+C -1 ; WX 638 ; N Otilde ; B 86 -19 677 917 ;
+C -1 ; WX 684 ; N onequarter ; B 123 -19 658 703 ;
+C -1 ; WX 592 ; N Ugrave ; B 101 -19 653 929 ;
+C -1 ; WX 592 ; N Ucircumflex ; B 101 -19 653 929 ;
+C -1 ; WX 547 ; N Thorn ; B 71 0 584 718 ;
+C -1 ; WX 479 ; N divide ; B 70 -19 497 524 ;
+C -1 ; WX 547 ; N Atilde ; B 11 0 573 917 ;
+C -1 ; WX 592 ; N Uacute ; B 101 -19 653 929 ;
+C -1 ; WX 638 ; N Ocircumflex ; B 86 -19 677 929 ;
+C -1 ; WX 479 ; N logicalnot ; B 87 108 515 390 ;
+C -1 ; WX 547 ; N Aring ; B 11 0 536 931 ;
+C -1 ; WX 228 ; N idieresis ; B 78 0 341 706 ;
+C -1 ; WX 228 ; N iacute ; B 78 0 367 734 ;
+C -1 ; WX 456 ; N aacute ; B 50 -15 481 734 ;
+C -1 ; WX 479 ; N plusminus ; B 32 0 507 506 ;
+C -1 ; WX 479 ; N multiply ; B 41 0 526 506 ;
+C -1 ; WX 592 ; N Udieresis ; B 101 -19 653 901 ;
+C -1 ; WX 479 ; N minus ; B 70 216 497 289 ;
+C -1 ; WX 273 ; N onesuperior ; B 136 281 305 703 ;
+C -1 ; WX 547 ; N Eacute ; B 71 0 625 929 ;
+C -1 ; WX 547 ; N Acircumflex ; B 11 0 536 929 ;
+C -1 ; WX 604 ; N copyright ; B 44 -19 687 737 ;
+C -1 ; WX 547 ; N Agrave ; B 11 0 536 929 ;
+C -1 ; WX 456 ; N odieresis ; B 68 -14 479 706 ;
+C -1 ; WX 456 ; N oacute ; B 68 -14 481 734 ;
+C -1 ; WX 328 ; N degree ; B 138 411 384 703 ;
+C -1 ; WX 228 ; N igrave ; B 78 0 254 734 ;
+C -1 ; WX 456 ; N mu ; B 20 -207 492 523 ;
+C -1 ; WX 638 ; N Oacute ; B 86 -19 677 929 ;
+C -1 ; WX 456 ; N eth ; B 67 -15 506 737 ;
+C -1 ; WX 547 ; N Adieresis ; B 11 0 536 901 ;
+C -1 ; WX 547 ; N Yacute ; B 137 0 661 929 ;
+C -1 ; WX 213 ; N brokenbar ; B 74 -19 265 737 ;
+C -1 ; WX 684 ; N onehalf ; B 93 -19 688 703 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 250
+
+KPX A y -40
+KPX A w -40
+KPX A v -40
+KPX A u -30
+KPX A Y -100
+KPX A W -50
+KPX A V -70
+KPX A U -50
+KPX A T -120
+KPX A Q -30
+KPX A O -30
+KPX A G -30
+KPX A C -30
+
+KPX B period -20
+KPX B comma -20
+KPX B U -10
+
+KPX C period -30
+KPX C comma -30
+
+KPX D period -70
+KPX D comma -70
+KPX D Y -90
+KPX D W -40
+KPX D V -70
+KPX D A -40
+
+KPX F r -45
+KPX F period -150
+KPX F o -30
+KPX F e -30
+KPX F comma -150
+KPX F a -50
+KPX F A -80
+
+KPX J u -20
+KPX J period -30
+KPX J comma -30
+KPX J a -20
+KPX J A -20
+
+KPX K y -50
+KPX K u -30
+KPX K o -40
+KPX K e -40
+KPX K O -50
+
+KPX L y -30
+KPX L quoteright -160
+KPX L quotedblright -140
+KPX L Y -140
+KPX L W -70
+KPX L V -110
+KPX L T -110
+
+KPX O period -40
+KPX O comma -40
+KPX O Y -70
+KPX O X -60
+KPX O W -30
+KPX O V -50
+KPX O T -40
+KPX O A -20
+
+KPX P period -180
+KPX P o -50
+KPX P e -50
+KPX P comma -180
+KPX P a -40
+KPX P A -120
+
+KPX Q U -10
+
+KPX R Y -50
+KPX R W -30
+KPX R V -50
+KPX R U -40
+KPX R T -30
+KPX R O -20
+
+KPX S period -20
+KPX S comma -20
+
+KPX T y -120
+KPX T w -120
+KPX T u -120
+KPX T semicolon -20
+KPX T r -120
+KPX T period -120
+KPX T o -120
+KPX T hyphen -140
+KPX T e -120
+KPX T comma -120
+KPX T colon -20
+KPX T a -120
+KPX T O -40
+KPX T A -120
+
+KPX U period -40
+KPX U comma -40
+KPX U A -40
+
+KPX V u -70
+KPX V semicolon -40
+KPX V period -125
+KPX V o -80
+KPX V hyphen -80
+KPX V e -80
+KPX V comma -125
+KPX V colon -40
+KPX V a -70
+KPX V O -40
+KPX V G -40
+KPX V A -80
+
+KPX W y -20
+KPX W u -30
+KPX W period -80
+KPX W o -30
+KPX W hyphen -40
+KPX W e -30
+KPX W comma -80
+KPX W a -40
+KPX W O -20
+KPX W A -50
+
+KPX Y u -110
+KPX Y semicolon -60
+KPX Y period -140
+KPX Y o -140
+KPX Y i -20
+KPX Y hyphen -140
+KPX Y e -140
+KPX Y comma -140
+KPX Y colon -60
+KPX Y a -140
+KPX Y O -85
+KPX Y A -110
+
+KPX a y -30
+KPX a w -20
+KPX a v -20
+
+KPX b y -20
+KPX b v -20
+KPX b u -20
+KPX b period -40
+KPX b l -20
+KPX b comma -40
+KPX b b -10
+
+KPX c k -20
+KPX c comma -15
+
+KPX colon space -50
+
+KPX comma quoteright -100
+KPX comma quotedblright -100
+
+KPX e y -20
+KPX e x -30
+KPX e w -20
+KPX e v -30
+KPX e period -15
+KPX e comma -15
+
+KPX f quoteright 50
+KPX f quotedblright 60
+KPX f period -30
+KPX f o -30
+KPX f e -30
+KPX f dotlessi -28
+KPX f comma -30
+KPX f a -30
+
+KPX g r -10
+
+KPX h y -30
+
+KPX k o -20
+KPX k e -20
+
+KPX m y -15
+KPX m u -10
+
+KPX n y -15
+KPX n v -20
+KPX n u -10
+
+KPX o y -30
+KPX o x -30
+KPX o w -15
+KPX o v -15
+KPX o period -40
+KPX o comma -40
+
+KPX oslash z -55
+KPX oslash y -70
+KPX oslash x -85
+KPX oslash w -70
+KPX oslash v -70
+KPX oslash u -55
+KPX oslash t -55
+KPX oslash s -55
+KPX oslash r -55
+KPX oslash q -55
+KPX oslash period -95
+KPX oslash p -55
+KPX oslash o -55
+KPX oslash n -55
+KPX oslash m -55
+KPX oslash l -55
+KPX oslash k -55
+KPX oslash j -55
+KPX oslash i -55
+KPX oslash h -55
+KPX oslash g -55
+KPX oslash f -55
+KPX oslash e -55
+KPX oslash d -55
+KPX oslash comma -95
+KPX oslash c -55
+KPX oslash b -55
+KPX oslash a -55
+
+KPX p y -30
+KPX p period -35
+KPX p comma -35
+
+KPX period space -60
+KPX period quoteright -100
+KPX period quotedblright -100
+
+KPX quotedblright space -40
+
+KPX quoteleft quoteleft -57
+
+KPX quoteright space -70
+KPX quoteright s -50
+KPX quoteright r -50
+KPX quoteright quoteright -57
+KPX quoteright d -50
+
+KPX r y 30
+KPX r v 30
+KPX r u 15
+KPX r t 40
+KPX r semicolon 30
+KPX r period -50
+KPX r p 30
+KPX r n 25
+KPX r m 25
+KPX r l 15
+KPX r k 15
+KPX r i 15
+KPX r comma -50
+KPX r colon 30
+KPX r a -10
+
+KPX s w -30
+KPX s period -15
+KPX s comma -15
+
+KPX semicolon space -50
+
+KPX space quoteleft -60
+KPX space quotedblleft -30
+KPX space Y -90
+KPX space W -40
+KPX space V -50
+KPX space T -50
+
+KPX v period -80
+KPX v o -25
+KPX v e -25
+KPX v comma -80
+KPX v a -25
+
+KPX w period -60
+KPX w o -10
+KPX w e -10
+KPX w comma -60
+KPX w a -15
+
+KPX x e -30
+
+KPX y period -100
+KPX y o -20
+KPX y e -20
+KPX y comma -100
+KPX y a -20
+
+KPX z o -15
+KPX z e -15
+EndKernPairs
+EndKernData
+StartComposites 58
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 171 195 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 171 195 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 171 195 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 171 195 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 167 175 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 171 195 ;
+CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 160 0 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 171 195 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 171 195 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 171 195 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 171 195 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 12 195 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 12 195 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 12 195 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 12 195 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 202 195 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 217 195 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 217 195 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 217 195 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 217 195 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 217 195 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 171 195 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 194 195 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 194 195 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 194 195 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 194 195 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 171 195 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 171 195 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 148 195 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 92 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 92 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 92 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 92 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 92 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 84 0 ;
+CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 69 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 92 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 92 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 92 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 92 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -22 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -22 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -22 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -22 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 84 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 92 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 92 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 92 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 92 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 92 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 69 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 92 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 92 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 92 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 92 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 69 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 69 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 69 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/He-NrO+ b/font/font/He-NrO+
new file mode 100644
index 0000000..3695c9b
--- /dev/null
+++ b/font/font/He-NrO+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 592 ; N Ccaron ; B 88 -19 640 925 ;
+C -1 ; WX 410 ; N ccaron ; B 61 -15 472 734 ;
+C -1 ; WX 592 ; N Dcaron ; B 66 0 626 925 ;
+C -1 ; WX 547 ; N dcaron ; B 69 -15 677 790 ;
+C -1 ; WX 547 ; N Ecaron ; B 71 0 625 925 ;
+C -1 ; WX 456 ; N ecaron ; B 69 -15 475 734 ;
+C -1 ; WX 456 ; N Lcaron ; B 62 0 455 790 ;
+C -1 ; WX 456 ; N Lacute ; B 62 0 521 925 ;
+C -1 ; WX 273 ; N lcaron ; B 55 0 395 790 ;
+C -1 ; WX 182 ; N lacute ; B 55 0 404 925 ;
+C -1 ; WX 592 ; N Ncaron ; B 62 0 655 925 ;
+C -1 ; WX 456 ; N ncaron ; B 53 0 475 734 ;
+C -1 ; WX 592 ; N Rcaron ; B 72 0 634 925 ;
+C -1 ; WX 592 ; N Racute ; B 72 0 634 925 ;
+C -1 ; WX 273 ; N rcaron ; B 63 0 384 734 ;
+C -1 ; WX 273 ; N racute ; B 63 0 409 734 ;
+C -1 ; WX 501 ; N Tcaron ; B 122 0 615 925 ;
+C -1 ; WX 319 ; N tcaron ; B 84 -7 445 718 ;
+C -1 ; WX 592 ; N Uring ; B 101 -19 653 925 ;
+C -1 ; WX 456 ; N uring ; B 77 -15 492 756 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 254 191 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 88 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 199 191 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 423 72 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 177 191 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 91 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 168 72 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 131 191 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 141 72 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 14 191 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 199 191 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 91 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 199 191 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 235 191 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 0 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 19 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 154 191 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 191 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 194 169 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 91 0 ;
+EndBuildComposites
diff --git a/font/font/He-O b/font/font/He-O
new file mode 100644
index 0000000..3d69eb7
--- /dev/null
+++ b/font/font/He-O
@@ -0,0 +1,612 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All rights reserved.
+Comment Creation Date: Thu Mar 15 10:24:18 1990
+Comment UniqueID 28362
+Comment VMusage 7572 42473
+FontName Helvetica-Oblique
+FullName Helvetica Oblique
+FamilyName Helvetica
+Weight Medium
+ItalicAngle -12
+IsFixedPitch false
+FontBBox -170 -225 1116 931
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.006
+Notice Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All rights reserved.Helvetica is a trademark of Linotype AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 718
+XHeight 523
+Ascender 718
+Descender -207
+StartCharMetrics 228
+C 32 ; WX 278 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 278 ; N exclam ; B 90 0 340 718 ;
+C 34 ; WX 355 ; N quotedbl ; B 168 463 438 718 ;
+C 35 ; WX 556 ; N numbersign ; B 73 0 631 688 ;
+C 36 ; WX 556 ; N dollar ; B 69 -115 617 775 ;
+C 37 ; WX 889 ; N percent ; B 147 -19 889 703 ;
+C 38 ; WX 667 ; N ampersand ; B 77 -15 647 718 ;
+C 39 ; WX 222 ; N quoteright ; B 151 463 310 718 ;
+C 40 ; WX 333 ; N parenleft ; B 108 -207 454 733 ;
+C 41 ; WX 333 ; N parenright ; B -9 -207 337 733 ;
+C 42 ; WX 389 ; N asterisk ; B 165 431 475 718 ;
+C 43 ; WX 584 ; N plus ; B 85 0 606 505 ;
+C 44 ; WX 278 ; N comma ; B 56 -147 214 106 ;
+C 45 ; WX 333 ; N hyphen ; B 93 232 357 322 ;
+C 46 ; WX 278 ; N period ; B 87 0 214 106 ;
+C 47 ; WX 278 ; N slash ; B -21 -19 452 737 ;
+C 48 ; WX 556 ; N zero ; B 93 -19 608 703 ;
+C 49 ; WX 556 ; N one ; B 207 0 508 703 ;
+C 50 ; WX 556 ; N two ; B 26 0 617 703 ;
+C 51 ; WX 556 ; N three ; B 75 -19 610 703 ;
+C 52 ; WX 556 ; N four ; B 61 0 576 703 ;
+C 53 ; WX 556 ; N five ; B 68 -19 621 688 ;
+C 54 ; WX 556 ; N six ; B 91 -19 615 703 ;
+C 55 ; WX 556 ; N seven ; B 137 0 669 688 ;
+C 56 ; WX 556 ; N eight ; B 74 -19 607 703 ;
+C 57 ; WX 556 ; N nine ; B 82 -19 609 703 ;
+C 58 ; WX 278 ; N colon ; B 87 0 301 516 ;
+C 59 ; WX 278 ; N semicolon ; B 56 -147 301 516 ;
+C 60 ; WX 584 ; N less ; B 94 11 641 495 ;
+C 61 ; WX 584 ; N equal ; B 63 115 628 390 ;
+C 62 ; WX 584 ; N greater ; B 50 11 597 495 ;
+C 63 ; WX 556 ; N question ; B 161 0 610 727 ;
+C 64 ; WX 1015 ; N at ; B 215 -19 965 737 ;
+C 65 ; WX 667 ; N A ; B 14 0 654 718 ;
+C 66 ; WX 667 ; N B ; B 74 0 712 718 ;
+C 67 ; WX 722 ; N C ; B 108 -19 782 737 ;
+C 68 ; WX 722 ; N D ; B 81 0 764 718 ;
+C 69 ; WX 667 ; N E ; B 86 0 762 718 ;
+C 70 ; WX 611 ; N F ; B 86 0 736 718 ;
+C 71 ; WX 778 ; N G ; B 111 -19 799 737 ;
+C 72 ; WX 722 ; N H ; B 77 0 799 718 ;
+C 73 ; WX 278 ; N I ; B 91 0 341 718 ;
+C 74 ; WX 500 ; N J ; B 47 -19 581 718 ;
+C 75 ; WX 667 ; N K ; B 76 0 808 718 ;
+C 76 ; WX 556 ; N L ; B 76 0 555 718 ;
+C 77 ; WX 833 ; N M ; B 73 0 914 718 ;
+C 78 ; WX 722 ; N N ; B 76 0 799 718 ;
+C 79 ; WX 778 ; N O ; B 105 -19 826 737 ;
+C 80 ; WX 667 ; N P ; B 86 0 737 718 ;
+C 81 ; WX 778 ; N Q ; B 105 -56 826 737 ;
+C 82 ; WX 722 ; N R ; B 88 0 773 718 ;
+C 83 ; WX 667 ; N S ; B 90 -19 713 737 ;
+C 84 ; WX 611 ; N T ; B 148 0 750 718 ;
+C 85 ; WX 722 ; N U ; B 123 -19 797 718 ;
+C 86 ; WX 667 ; N V ; B 173 0 800 718 ;
+C 87 ; WX 944 ; N W ; B 169 0 1081 718 ;
+C 88 ; WX 667 ; N X ; B 19 0 790 718 ;
+C 89 ; WX 667 ; N Y ; B 167 0 806 718 ;
+C 90 ; WX 611 ; N Z ; B 23 0 741 718 ;
+C 91 ; WX 278 ; N bracketleft ; B 21 -196 403 722 ;
+C 92 ; WX 278 ; N backslash ; B 140 -19 291 737 ;
+C 93 ; WX 278 ; N bracketright ; B -14 -196 368 722 ;
+C 94 ; WX 469 ; N asciicircum ; B 42 264 539 688 ;
+C 95 ; WX 556 ; N underscore ; B -27 -125 540 -75 ;
+C 96 ; WX 222 ; N quoteleft ; B 165 470 323 725 ;
+C 97 ; WX 556 ; N a ; B 61 -15 559 538 ;
+C 98 ; WX 556 ; N b ; B 58 -15 584 718 ;
+C 99 ; WX 500 ; N c ; B 74 -15 553 538 ;
+C 100 ; WX 556 ; N d ; B 84 -15 652 718 ;
+C 101 ; WX 556 ; N e ; B 84 -15 578 538 ;
+C 102 ; WX 278 ; N f ; B 86 0 416 728 ; L i fi ; L l fl ;
+C 103 ; WX 556 ; N g ; B 42 -220 610 538 ;
+C 104 ; WX 556 ; N h ; B 65 0 573 718 ;
+C 105 ; WX 222 ; N i ; B 67 0 308 718 ;
+C 106 ; WX 222 ; N j ; B -60 -210 308 718 ;
+C 107 ; WX 500 ; N k ; B 67 0 600 718 ;
+C 108 ; WX 222 ; N l ; B 67 0 308 718 ;
+C 109 ; WX 833 ; N m ; B 65 0 852 538 ;
+C 110 ; WX 556 ; N n ; B 65 0 573 538 ;
+C 111 ; WX 556 ; N o ; B 83 -14 585 538 ;
+C 112 ; WX 556 ; N p ; B 14 -207 584 538 ;
+C 113 ; WX 556 ; N q ; B 84 -207 605 538 ;
+C 114 ; WX 333 ; N r ; B 77 0 446 538 ;
+C 115 ; WX 500 ; N s ; B 63 -15 529 538 ;
+C 116 ; WX 278 ; N t ; B 102 -7 368 669 ;
+C 117 ; WX 556 ; N u ; B 94 -15 600 523 ;
+C 118 ; WX 500 ; N v ; B 119 0 603 523 ;
+C 119 ; WX 722 ; N w ; B 125 0 820 523 ;
+C 120 ; WX 500 ; N x ; B 11 0 594 523 ;
+C 121 ; WX 500 ; N y ; B 15 -214 600 523 ;
+C 122 ; WX 500 ; N z ; B 31 0 571 523 ;
+C 123 ; WX 334 ; N braceleft ; B 92 -196 445 722 ;
+C 124 ; WX 260 ; N bar ; B 90 -19 324 737 ;
+C 125 ; WX 334 ; N braceright ; B 0 -196 354 722 ;
+C 126 ; WX 584 ; N asciitilde ; B 111 180 580 326 ;
+C 161 ; WX 333 ; N exclamdown ; B 77 -195 326 523 ;
+C 162 ; WX 556 ; N cent ; B 95 -115 584 623 ;
+C 163 ; WX 556 ; N sterling ; B 49 -16 634 718 ;
+C 164 ; WX 167 ; N fraction ; B -170 -19 482 703 ;
+C 165 ; WX 556 ; N yen ; B 81 0 699 688 ;
+C 166 ; WX 556 ; N florin ; B -52 -207 654 737 ;
+C 167 ; WX 556 ; N section ; B 76 -191 584 737 ;
+C 168 ; WX 556 ; N currency ; B 60 99 646 603 ;
+C 169 ; WX 191 ; N quotesingle ; B 157 463 285 718 ;
+C 170 ; WX 333 ; N quotedblleft ; B 138 470 461 725 ;
+C 171 ; WX 556 ; N guillemotleft ; B 146 108 554 446 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 137 108 340 446 ;
+C 173 ; WX 333 ; N guilsinglright ; B 111 108 314 446 ;
+C 174 ; WX 500 ; N fi ; B 86 0 587 728 ;
+C 175 ; WX 500 ; N fl ; B 86 0 585 728 ;
+C 177 ; WX 556 ; N endash ; B 51 240 623 313 ;
+C 178 ; WX 556 ; N dagger ; B 135 -159 622 718 ;
+C 179 ; WX 556 ; N daggerdbl ; B 52 -159 623 718 ;
+C 180 ; WX 278 ; N periodcentered ; B 129 190 257 315 ;
+C 182 ; WX 537 ; N paragraph ; B 126 -173 650 718 ;
+C 183 ; WX 350 ; N bullet ; B 91 202 413 517 ;
+C 184 ; WX 222 ; N quotesinglbase ; B 21 -149 180 106 ;
+C 185 ; WX 333 ; N quotedblbase ; B -6 -149 318 106 ;
+C 186 ; WX 333 ; N quotedblright ; B 124 463 448 718 ;
+C 187 ; WX 556 ; N guillemotright ; B 120 108 528 446 ;
+C 188 ; WX 1000 ; N ellipsis ; B 115 0 908 106 ;
+C 189 ; WX 1000 ; N perthousand ; B 88 -19 1029 703 ;
+C 191 ; WX 611 ; N questiondown ; B 85 -201 534 525 ;
+C 193 ; WX 333 ; N grave ; B 170 593 337 734 ;
+C 194 ; WX 333 ; N acute ; B 248 593 475 734 ;
+C 195 ; WX 333 ; N circumflex ; B 147 593 438 734 ;
+C 196 ; WX 333 ; N tilde ; B 125 606 490 722 ;
+C 197 ; WX 333 ; N macron ; B 143 627 468 684 ;
+C 198 ; WX 333 ; N breve ; B 167 595 476 731 ;
+C 199 ; WX 333 ; N dotaccent ; B 249 604 362 706 ;
+C 200 ; WX 333 ; N dieresis ; B 168 604 443 706 ;
+C 202 ; WX 333 ; N ring ; B 214 572 402 756 ;
+C 203 ; WX 333 ; N cedilla ; B 2 -225 232 0 ;
+C 205 ; WX 333 ; N hungarumlaut ; B 157 593 565 734 ;
+C 206 ; WX 333 ; N ogonek ; B 43 -225 249 0 ;
+C 207 ; WX 333 ; N caron ; B 177 593 468 734 ;
+C 208 ; WX 1000 ; N emdash ; B 51 240 1067 313 ;
+C 225 ; WX 1000 ; N AE ; B 8 0 1097 718 ;
+C 227 ; WX 370 ; N ordfeminine ; B 100 304 449 737 ;
+C 232 ; WX 556 ; N Lslash ; B 41 0 555 718 ;
+C 233 ; WX 778 ; N Oslash ; B 43 -19 890 737 ;
+C 234 ; WX 1000 ; N OE ; B 98 -19 1116 737 ;
+C 235 ; WX 365 ; N ordmasculine ; B 100 304 468 737 ;
+C 241 ; WX 889 ; N ae ; B 61 -15 909 538 ;
+C 245 ; WX 278 ; N dotlessi ; B 95 0 294 523 ;
+C 248 ; WX 222 ; N lslash ; B 41 0 347 718 ;
+C 249 ; WX 611 ; N oslash ; B 29 -22 647 545 ;
+C 250 ; WX 944 ; N oe ; B 83 -15 964 538 ;
+C 251 ; WX 611 ; N germandbls ; B 67 -15 658 728 ;
+C -1 ; WX 611 ; N Zcaron ; B 23 0 741 929 ;
+C -1 ; WX 500 ; N ccedilla ; B 74 -225 553 538 ;
+C -1 ; WX 500 ; N ydieresis ; B 15 -214 600 706 ;
+C -1 ; WX 556 ; N atilde ; B 61 -15 592 722 ;
+C -1 ; WX 278 ; N icircumflex ; B 95 0 411 734 ;
+C -1 ; WX 333 ; N threesuperior ; B 90 270 436 703 ;
+C -1 ; WX 556 ; N ecircumflex ; B 84 -15 578 734 ;
+C -1 ; WX 556 ; N thorn ; B 14 -207 584 718 ;
+C -1 ; WX 556 ; N egrave ; B 84 -15 578 734 ;
+C -1 ; WX 333 ; N twosuperior ; B 64 281 449 703 ;
+C -1 ; WX 556 ; N eacute ; B 84 -15 587 734 ;
+C -1 ; WX 556 ; N otilde ; B 83 -14 602 722 ;
+C -1 ; WX 667 ; N Aacute ; B 14 0 683 929 ;
+C -1 ; WX 556 ; N ocircumflex ; B 83 -14 585 734 ;
+C -1 ; WX 500 ; N yacute ; B 15 -214 600 734 ;
+C -1 ; WX 556 ; N udieresis ; B 94 -15 600 706 ;
+C -1 ; WX 834 ; N threequarters ; B 130 -19 861 703 ;
+C -1 ; WX 556 ; N acircumflex ; B 61 -15 559 734 ;
+C -1 ; WX 722 ; N Eth ; B 69 0 764 718 ;
+C -1 ; WX 556 ; N edieresis ; B 84 -15 578 706 ;
+C -1 ; WX 556 ; N ugrave ; B 94 -15 600 734 ;
+C -1 ; WX 1000 ; N trademark ; B 186 306 1056 718 ;
+C -1 ; WX 556 ; N ograve ; B 83 -14 585 734 ;
+C -1 ; WX 500 ; N scaron ; B 63 -15 552 734 ;
+C -1 ; WX 278 ; N Idieresis ; B 91 0 458 901 ;
+C -1 ; WX 556 ; N uacute ; B 94 -15 600 734 ;
+C -1 ; WX 556 ; N agrave ; B 61 -15 559 734 ;
+C -1 ; WX 556 ; N ntilde ; B 65 0 592 722 ;
+C -1 ; WX 556 ; N aring ; B 61 -15 559 756 ;
+C -1 ; WX 500 ; N zcaron ; B 31 0 571 734 ;
+C -1 ; WX 278 ; N Icircumflex ; B 91 0 452 929 ;
+C -1 ; WX 722 ; N Ntilde ; B 76 0 799 917 ;
+C -1 ; WX 556 ; N ucircumflex ; B 94 -15 600 734 ;
+C -1 ; WX 667 ; N Ecircumflex ; B 86 0 762 929 ;
+C -1 ; WX 278 ; N Iacute ; B 91 0 489 929 ;
+C -1 ; WX 722 ; N Ccedilla ; B 108 -225 782 737 ;
+C -1 ; WX 778 ; N Odieresis ; B 105 -19 826 901 ;
+C -1 ; WX 667 ; N Scaron ; B 90 -19 713 929 ;
+C -1 ; WX 667 ; N Edieresis ; B 86 0 762 901 ;
+C -1 ; WX 278 ; N Igrave ; B 91 0 351 929 ;
+C -1 ; WX 556 ; N adieresis ; B 61 -15 559 706 ;
+C -1 ; WX 778 ; N Ograve ; B 105 -19 826 929 ;
+C -1 ; WX 667 ; N Egrave ; B 86 0 762 929 ;
+C -1 ; WX 667 ; N Ydieresis ; B 167 0 806 901 ;
+C -1 ; WX 737 ; N registered ; B 54 -19 837 737 ;
+C -1 ; WX 778 ; N Otilde ; B 105 -19 826 917 ;
+C -1 ; WX 834 ; N onequarter ; B 150 -19 802 703 ;
+C -1 ; WX 722 ; N Ugrave ; B 123 -19 797 929 ;
+C -1 ; WX 722 ; N Ucircumflex ; B 123 -19 797 929 ;
+C -1 ; WX 667 ; N Thorn ; B 86 0 712 718 ;
+C -1 ; WX 584 ; N divide ; B 85 -19 606 524 ;
+C -1 ; WX 667 ; N Atilde ; B 14 0 699 917 ;
+C -1 ; WX 722 ; N Uacute ; B 123 -19 797 929 ;
+C -1 ; WX 778 ; N Ocircumflex ; B 105 -19 826 929 ;
+C -1 ; WX 584 ; N logicalnot ; B 106 108 628 390 ;
+C -1 ; WX 667 ; N Aring ; B 14 0 654 931 ;
+C -1 ; WX 278 ; N idieresis ; B 95 0 416 706 ;
+C -1 ; WX 278 ; N iacute ; B 95 0 448 734 ;
+C -1 ; WX 556 ; N aacute ; B 61 -15 587 734 ;
+C -1 ; WX 584 ; N plusminus ; B 39 0 618 506 ;
+C -1 ; WX 584 ; N multiply ; B 50 0 642 506 ;
+C -1 ; WX 722 ; N Udieresis ; B 123 -19 797 901 ;
+C -1 ; WX 584 ; N minus ; B 85 216 606 289 ;
+C -1 ; WX 333 ; N onesuperior ; B 166 281 371 703 ;
+C -1 ; WX 667 ; N Eacute ; B 86 0 762 929 ;
+C -1 ; WX 667 ; N Acircumflex ; B 14 0 654 929 ;
+C -1 ; WX 737 ; N copyright ; B 54 -19 837 737 ;
+C -1 ; WX 667 ; N Agrave ; B 14 0 654 929 ;
+C -1 ; WX 556 ; N odieresis ; B 83 -14 585 706 ;
+C -1 ; WX 556 ; N oacute ; B 83 -14 587 734 ;
+C -1 ; WX 400 ; N degree ; B 169 411 468 703 ;
+C -1 ; WX 278 ; N igrave ; B 95 0 310 734 ;
+C -1 ; WX 556 ; N mu ; B 24 -207 600 523 ;
+C -1 ; WX 778 ; N Oacute ; B 105 -19 826 929 ;
+C -1 ; WX 556 ; N eth ; B 81 -15 617 737 ;
+C -1 ; WX 667 ; N Adieresis ; B 14 0 654 901 ;
+C -1 ; WX 667 ; N Yacute ; B 167 0 806 929 ;
+C -1 ; WX 260 ; N brokenbar ; B 90 -19 324 737 ;
+C -1 ; WX 834 ; N onehalf ; B 114 -19 839 703 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 250
+
+KPX A y -40
+KPX A w -40
+KPX A v -40
+KPX A u -30
+KPX A Y -100
+KPX A W -50
+KPX A V -70
+KPX A U -50
+KPX A T -120
+KPX A Q -30
+KPX A O -30
+KPX A G -30
+KPX A C -30
+
+KPX B period -20
+KPX B comma -20
+KPX B U -10
+
+KPX C period -30
+KPX C comma -30
+
+KPX D period -70
+KPX D comma -70
+KPX D Y -90
+KPX D W -40
+KPX D V -70
+KPX D A -40
+
+KPX F r -45
+KPX F period -150
+KPX F o -30
+KPX F e -30
+KPX F comma -150
+KPX F a -50
+KPX F A -80
+
+KPX J u -20
+KPX J period -30
+KPX J comma -30
+KPX J a -20
+KPX J A -20
+
+KPX K y -50
+KPX K u -30
+KPX K o -40
+KPX K e -40
+KPX K O -50
+
+KPX L y -30
+KPX L quoteright -160
+KPX L quotedblright -140
+KPX L Y -140
+KPX L W -70
+KPX L V -110
+KPX L T -110
+
+KPX O period -40
+KPX O comma -40
+KPX O Y -70
+KPX O X -60
+KPX O W -30
+KPX O V -50
+KPX O T -40
+KPX O A -20
+
+KPX P period -180
+KPX P o -50
+KPX P e -50
+KPX P comma -180
+KPX P a -40
+KPX P A -120
+
+KPX Q U -10
+
+KPX R Y -50
+KPX R W -30
+KPX R V -50
+KPX R U -40
+KPX R T -30
+KPX R O -20
+
+KPX S period -20
+KPX S comma -20
+
+KPX T y -120
+KPX T w -120
+KPX T u -120
+KPX T semicolon -20
+KPX T r -120
+KPX T period -120
+KPX T o -120
+KPX T hyphen -140
+KPX T e -120
+KPX T comma -120
+KPX T colon -20
+KPX T a -120
+KPX T O -40
+KPX T A -120
+
+KPX U period -40
+KPX U comma -40
+KPX U A -40
+
+KPX V u -70
+KPX V semicolon -40
+KPX V period -125
+KPX V o -80
+KPX V hyphen -80
+KPX V e -80
+KPX V comma -125
+KPX V colon -40
+KPX V a -70
+KPX V O -40
+KPX V G -40
+KPX V A -80
+
+KPX W y -20
+KPX W u -30
+KPX W period -80
+KPX W o -30
+KPX W hyphen -40
+KPX W e -30
+KPX W comma -80
+KPX W a -40
+KPX W O -20
+KPX W A -50
+
+KPX Y u -110
+KPX Y semicolon -60
+KPX Y period -140
+KPX Y o -140
+KPX Y i -20
+KPX Y hyphen -140
+KPX Y e -140
+KPX Y comma -140
+KPX Y colon -60
+KPX Y a -140
+KPX Y O -85
+KPX Y A -110
+
+KPX a y -30
+KPX a w -20
+KPX a v -20
+
+KPX b y -20
+KPX b v -20
+KPX b u -20
+KPX b period -40
+KPX b l -20
+KPX b comma -40
+KPX b b -10
+
+KPX c k -20
+KPX c comma -15
+
+KPX colon space -50
+
+KPX comma quoteright -100
+KPX comma quotedblright -100
+
+KPX e y -20
+KPX e x -30
+KPX e w -20
+KPX e v -30
+KPX e period -15
+KPX e comma -15
+
+KPX f quoteright 50
+KPX f quotedblright 60
+KPX f period -30
+KPX f o -30
+KPX f e -30
+KPX f dotlessi -28
+KPX f comma -30
+KPX f a -30
+
+KPX g r -10
+
+KPX h y -30
+
+KPX k o -20
+KPX k e -20
+
+KPX m y -15
+KPX m u -10
+
+KPX n y -15
+KPX n v -20
+KPX n u -10
+
+KPX o y -30
+KPX o x -30
+KPX o w -15
+KPX o v -15
+KPX o period -40
+KPX o comma -40
+
+KPX oslash z -55
+KPX oslash y -70
+KPX oslash x -85
+KPX oslash w -70
+KPX oslash v -70
+KPX oslash u -55
+KPX oslash t -55
+KPX oslash s -55
+KPX oslash r -55
+KPX oslash q -55
+KPX oslash period -95
+KPX oslash p -55
+KPX oslash o -55
+KPX oslash n -55
+KPX oslash m -55
+KPX oslash l -55
+KPX oslash k -55
+KPX oslash j -55
+KPX oslash i -55
+KPX oslash h -55
+KPX oslash g -55
+KPX oslash f -55
+KPX oslash e -55
+KPX oslash d -55
+KPX oslash comma -95
+KPX oslash c -55
+KPX oslash b -55
+KPX oslash a -55
+
+KPX p y -30
+KPX p period -35
+KPX p comma -35
+
+KPX period space -60
+KPX period quoteright -100
+KPX period quotedblright -100
+
+KPX quotedblright space -40
+
+KPX quoteleft quoteleft -57
+
+KPX quoteright space -70
+KPX quoteright s -50
+KPX quoteright r -50
+KPX quoteright quoteright -57
+KPX quoteright d -50
+
+KPX r y 30
+KPX r v 30
+KPX r u 15
+KPX r t 40
+KPX r semicolon 30
+KPX r period -50
+KPX r p 30
+KPX r n 25
+KPX r m 25
+KPX r l 15
+KPX r k 15
+KPX r i 15
+KPX r comma -50
+KPX r colon 30
+KPX r a -10
+
+KPX s w -30
+KPX s period -15
+KPX s comma -15
+
+KPX semicolon space -50
+
+KPX space quoteleft -60
+KPX space quotedblleft -30
+KPX space Y -90
+KPX space W -40
+KPX space V -50
+KPX space T -50
+
+KPX v period -80
+KPX v o -25
+KPX v e -25
+KPX v comma -80
+KPX v a -25
+
+KPX w period -60
+KPX w o -10
+KPX w e -10
+KPX w comma -60
+KPX w a -15
+
+KPX x e -30
+
+KPX y period -100
+KPX y o -20
+KPX y e -20
+KPX y comma -100
+KPX y a -20
+
+KPX z o -15
+KPX z e -15
+EndKernPairs
+EndKernData
+StartComposites 58
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 208 195 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 208 195 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 208 195 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 208 195 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 204 175 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 208 195 ;
+CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 195 0 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 208 195 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 208 195 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 208 195 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 208 195 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 14 195 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 14 195 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 14 195 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 14 195 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 246 195 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 264 195 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 264 195 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 264 195 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 264 195 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 264 195 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 208 195 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 236 195 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 236 195 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 236 195 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 236 195 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 208 195 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 208 195 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 180 195 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 112 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 112 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 112 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 112 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 112 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 102 0 ;
+CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 84 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 112 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 112 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 112 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 112 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -27 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -27 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -27 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -27 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 102 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 112 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 112 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 112 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 112 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 112 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 84 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 112 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 112 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 112 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 112 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 84 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 84 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 84 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/He-O+ b/font/font/He-O+
new file mode 100644
index 0000000..ca1a52a
--- /dev/null
+++ b/font/font/He-O+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 722 ; N Ccaron ; B 108 -19 782 925 ;
+C -1 ; WX 500 ; N ccaron ; B 74 -15 575 734 ;
+C -1 ; WX 722 ; N Dcaron ; B 81 0 764 925 ;
+C -1 ; WX 667 ; N dcaron ; B 84 -15 827 790 ;
+C -1 ; WX 667 ; N Ecaron ; B 86 0 762 925 ;
+C -1 ; WX 556 ; N ecaron ; B 84 -15 579 734 ;
+C -1 ; WX 556 ; N Lcaron ; B 76 0 555 790 ;
+C -1 ; WX 556 ; N Lacute ; B 76 0 626 925 ;
+C -1 ; WX 333 ; N lcaron ; B 67 0 483 790 ;
+C -1 ; WX 222 ; N lacute ; B 67 0 483 925 ;
+C -1 ; WX 722 ; N Ncaron ; B 76 0 799 925 ;
+C -1 ; WX 556 ; N ncaron ; B 65 0 579 734 ;
+C -1 ; WX 722 ; N Rcaron ; B 88 0 773 925 ;
+C -1 ; WX 722 ; N Racute ; B 88 0 773 925 ;
+C -1 ; WX 333 ; N rcaron ; B 77 0 468 734 ;
+C -1 ; WX 333 ; N racute ; B 77 0 498 734 ;
+C -1 ; WX 611 ; N Tcaron ; B 148 0 750 925 ;
+C -1 ; WX 389 ; N tcaron ; B 102 -7 543 718 ;
+C -1 ; WX 722 ; N Uring ; B 123 -19 797 925 ;
+C -1 ; WX 556 ; N uring ; B 94 -15 600 756 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 301 191 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 107 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 234 191 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 517 72 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 207 191 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 111 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 206 72 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 151 191 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 173 72 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 8 191 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 234 191 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 111 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 234 191 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 277 191 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 0 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 23 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 179 191 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 233 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 229 169 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 111 0 ;
+EndBuildComposites
diff --git a/font/font/He-UlCm b/font/font/He-UlCm
new file mode 100644
index 0000000..4dd03b4
--- /dev/null
+++ b/font/font/He-UlCm
@@ -0,0 +1,417 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1988, 1990, 1991 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Fri Dec 13 16:24:33 1991
+Comment UniqueID 37160
+Comment VMusage 24329 31221
+FontName Helvetica-UltraCompressed
+FullName Helvetica Ultra Compressed
+FamilyName Helvetica
+Weight Bold
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -167 -250 1000 925
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.002
+Notice Copyright (c) 1988, 1990, 1991 Adobe Systems Incorporated. All Rights Reserved.Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 712
+XHeight 572
+Ascender 712
+Descender -128
+StartCharMetrics 228
+C 32 ; WX 166 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 204 ; N exclam ; B 52 0 152 712 ;
+C 34 ; WX 333 ; N quotedbl ; B 47 441 285 712 ;
+C 35 ; WX 333 ; N numbersign ; B -34 0 367 712 ;
+C 36 ; WX 333 ; N dollar ; B 26 -51 306 740 ;
+C 37 ; WX 500 ; N percent ; B 16 -8 484 720 ;
+C 38 ; WX 389 ; N ampersand ; B 32 -14 380 726 ;
+C 39 ; WX 167 ; N quoteright ; B 28 503 154 712 ;
+C 40 ; WX 167 ; N parenleft ; B 13 -97 190 712 ;
+C 41 ; WX 167 ; N parenright ; B -23 -97 154 712 ;
+C 42 ; WX 315 ; N asterisk ; B 15 454 300 712 ;
+C 43 ; WX 500 ; N plus ; B 5 41 495 531 ;
+C 44 ; WX 166 ; N comma ; B 15 -125 147 111 ;
+C 45 ; WX 166 ; N hyphen ; B 20 264 147 336 ;
+C 46 ; WX 166 ; N period ; B 33 0 133 111 ;
+C 47 ; WX 278 ; N slash ; B -10 -14 287 726 ;
+C 48 ; WX 333 ; N zero ; B 28 -8 305 720 ;
+C 49 ; WX 333 ; N one ; B 48 0 232 712 ;
+C 50 ; WX 333 ; N two ; B 28 0 305 720 ;
+C 51 ; WX 333 ; N three ; B 28 -8 305 720 ;
+C 52 ; WX 333 ; N four ; B 6 0 327 712 ;
+C 53 ; WX 333 ; N five ; B 28 -8 305 712 ;
+C 54 ; WX 333 ; N six ; B 28 -8 305 720 ;
+C 55 ; WX 333 ; N seven ; B 20 0 314 712 ;
+C 56 ; WX 333 ; N eight ; B 28 -8 305 720 ;
+C 57 ; WX 333 ; N nine ; B 28 -2 305 726 ;
+C 58 ; WX 166 ; N colon ; B 33 0 133 521 ;
+C 59 ; WX 166 ; N semicolon ; B 8 -125 140 521 ;
+C 60 ; WX 500 ; N less ; B 32 62 469 510 ;
+C 61 ; WX 500 ; N equal ; B 5 140 495 432 ;
+C 62 ; WX 500 ; N greater ; B 31 61 468 510 ;
+C 63 ; WX 333 ; N question ; B 44 0 289 726 ;
+C 64 ; WX 800 ; N at ; B 42 -14 757 726 ;
+C 65 ; WX 333 ; N A ; B 6 0 327 712 ;
+C 66 ; WX 333 ; N B ; B 28 0 305 712 ;
+C 67 ; WX 333 ; N C ; B 28 -14 305 726 ;
+C 68 ; WX 333 ; N D ; B 28 0 305 712 ;
+C 69 ; WX 278 ; N E ; B 31 0 269 712 ;
+C 70 ; WX 278 ; N F ; B 31 0 269 712 ;
+C 71 ; WX 333 ; N G ; B 28 -14 305 726 ;
+C 72 ; WX 333 ; N H ; B 31 0 302 712 ;
+C 73 ; WX 167 ; N I ; B 30 0 136 712 ;
+C 74 ; WX 333 ; N J ; B 31 -14 302 712 ;
+C 75 ; WX 333 ; N K ; B 31 0 326 712 ;
+C 76 ; WX 278 ; N L ; B 31 0 272 712 ;
+C 77 ; WX 481 ; N M ; B 36 0 445 712 ;
+C 78 ; WX 389 ; N N ; B 31 0 358 712 ;
+C 79 ; WX 333 ; N O ; B 28 -14 305 726 ;
+C 80 ; WX 333 ; N P ; B 28 0 305 712 ;
+C 81 ; WX 333 ; N Q ; B 28 -79 315 726 ;
+C 82 ; WX 333 ; N R ; B 28 0 318 712 ;
+C 83 ; WX 333 ; N S ; B 28 -14 305 726 ;
+C 84 ; WX 315 ; N T ; B 12 0 303 712 ;
+C 85 ; WX 333 ; N U ; B 28 -14 305 712 ;
+C 86 ; WX 333 ; N V ; B 4 0 328 712 ;
+C 87 ; WX 481 ; N W ; B 10 0 470 712 ;
+C 88 ; WX 333 ; N X ; B 1 0 332 712 ;
+C 89 ; WX 333 ; N Y ; B 4 0 328 712 ;
+C 90 ; WX 259 ; N Z ; B 11 0 247 712 ;
+C 91 ; WX 222 ; N bracketleft ; B 30 -97 208 712 ;
+C 92 ; WX 278 ; N backslash ; B -57 -14 335 726 ;
+C 93 ; WX 222 ; N bracketright ; B 14 -97 192 712 ;
+C 94 ; WX 500 ; N asciicircum ; B 10 308 490 712 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 167 ; N quoteleft ; B 13 503 139 712 ;
+C 97 ; WX 278 ; N a ; B 20 -7 258 579 ;
+C 98 ; WX 278 ; N b ; B 20 -7 258 712 ;
+C 99 ; WX 278 ; N c ; B 20 -7 258 579 ;
+C 100 ; WX 278 ; N d ; B 20 -7 258 712 ;
+C 101 ; WX 278 ; N e ; B 20 -7 258 579 ;
+C 102 ; WX 167 ; N f ; B 5 0 161 712 ; L i fi ; L l fl ;
+C 103 ; WX 278 ; N g ; B 20 -128 258 579 ;
+C 104 ; WX 278 ; N h ; B 20 0 258 712 ;
+C 105 ; WX 148 ; N i ; B 26 0 122 712 ;
+C 106 ; WX 148 ; N j ; B -17 -128 122 712 ;
+C 107 ; WX 278 ; N k ; B 22 0 273 712 ;
+C 108 ; WX 148 ; N l ; B 26 0 122 712 ;
+C 109 ; WX 426 ; N m ; B 25 0 401 579 ;
+C 110 ; WX 278 ; N n ; B 20 0 258 579 ;
+C 111 ; WX 278 ; N o ; B 20 -7 258 579 ;
+C 112 ; WX 278 ; N p ; B 20 -128 258 579 ;
+C 113 ; WX 278 ; N q ; B 20 -128 258 579 ;
+C 114 ; WX 278 ; N r ; B 20 0 258 579 ;
+C 115 ; WX 278 ; N s ; B 20 -7 258 579 ;
+C 116 ; WX 167 ; N t ; B 6 0 161 675 ;
+C 117 ; WX 278 ; N u ; B 20 -7 258 572 ;
+C 118 ; WX 278 ; N v ; B 2 0 275 572 ;
+C 119 ; WX 444 ; N w ; B 3 0 440 572 ;
+C 120 ; WX 259 ; N x ; B 4 0 255 572 ;
+C 121 ; WX 278 ; N y ; B 4 -128 273 572 ;
+C 122 ; WX 222 ; N z ; B 4 0 217 572 ;
+C 123 ; WX 333 ; N braceleft ; B 37 -97 314 712 ;
+C 124 ; WX 222 ; N bar ; B 67 -250 155 750 ;
+C 125 ; WX 333 ; N braceright ; B 19 -97 296 712 ;
+C 126 ; WX 500 ; N asciitilde ; B 19 205 481 365 ;
+C 161 ; WX 204 ; N exclamdown ; B 52 -112 152 598 ;
+C 162 ; WX 333 ; N cent ; B 51 -83 289 648 ;
+C 163 ; WX 333 ; N sterling ; B 19 -4 322 720 ;
+C 164 ; WX 167 ; N fraction ; B -167 -8 334 720 ;
+C 165 ; WX 333 ; N yen ; B 4 0 328 712 ;
+C 166 ; WX 333 ; N florin ; B -1 -128 334 720 ;
+C 167 ; WX 333 ; N section ; B 23 -128 310 726 ;
+C 168 ; WX 333 ; N currency ; B 25 253 309 536 ;
+C 169 ; WX 222 ; N quotesingle ; B 67 441 155 712 ;
+C 170 ; WX 315 ; N quotedblleft ; B 20 503 276 712 ;
+C 171 ; WX 333 ; N guillemotleft ; B 16 68 316 501 ;
+C 172 ; WX 185 ; N guilsinglleft ; B 24 68 161 501 ;
+C 173 ; WX 185 ; N guilsinglright ; B 24 68 161 501 ;
+C 174 ; WX 315 ; N fi ; B 5 0 296 712 ;
+C 175 ; WX 315 ; N fl ; B 5 0 296 712 ;
+C 177 ; WX 500 ; N endash ; B 0 266 500 333 ;
+C 178 ; WX 333 ; N dagger ; B 10 -116 323 712 ;
+C 179 ; WX 333 ; N daggerdbl ; B 10 -116 323 712 ;
+C 180 ; WX 166 ; N periodcentered ; B 30 232 137 339 ;
+C 182 ; WX 600 ; N paragraph ; B 27 -179 566 712 ;
+C 183 ; WX 500 ; N bullet ; B 75 175 425 525 ;
+C 184 ; WX 167 ; N quotesinglbase ; B 28 -98 154 111 ;
+C 185 ; WX 315 ; N quotedblbase ; B 39 -98 295 111 ;
+C 186 ; WX 315 ; N quotedblright ; B 39 503 295 712 ;
+C 187 ; WX 333 ; N guillemotright ; B 16 68 316 501 ;
+C 188 ; WX 1000 ; N ellipsis ; B 116 0 884 111 ;
+C 189 ; WX 778 ; N perthousand ; B 33 -8 753 720 ;
+C 191 ; WX 333 ; N questiondown ; B 44 -128 289 598 ;
+C 193 ; WX 148 ; N grave ; B -51 633 141 804 ;
+C 194 ; WX 148 ; N acute ; B 7 633 199 804 ;
+C 195 ; WX 148 ; N circumflex ; B -53 633 201 804 ;
+C 196 ; WX 148 ; N tilde ; B -55 656 211 774 ;
+C 197 ; WX 148 ; N macron ; B -40 677 189 741 ;
+C 198 ; WX 148 ; N breve ; B -50 652 199 778 ;
+C 199 ; WX 148 ; N dotaccent ; B 29 666 119 763 ;
+C 200 ; WX 148 ; N dieresis ; B -41 666 189 763 ;
+C 202 ; WX 148 ; N ring ; B -9 626 157 796 ;
+C 203 ; WX 148 ; N cedilla ; B -34 -207 176 -6 ;
+C 205 ; WX 148 ; N hungarumlaut ; B -57 633 262 804 ;
+C 206 ; WX 148 ; N ogonek ; B -24 -207 187 0 ;
+C 207 ; WX 148 ; N caron ; B -53 633 201 804 ;
+C 208 ; WX 1000 ; N emdash ; B 0 266 1000 333 ;
+C 225 ; WX 481 ; N AE ; B 0 0 472 712 ;
+C 227 ; WX 167 ; N ordfeminine ; B 6 375 160 726 ;
+C 232 ; WX 278 ; N Lslash ; B -6 0 272 712 ;
+C 233 ; WX 333 ; N Oslash ; B -2 -45 335 748 ;
+C 234 ; WX 444 ; N OE ; B 27 -14 442 726 ;
+C 235 ; WX 167 ; N ordmasculine ; B 6 375 160 726 ;
+C 241 ; WX 426 ; N ae ; B 23 -7 403 579 ;
+C 245 ; WX 148 ; N dotlessi ; B 26 0 122 572 ;
+C 248 ; WX 148 ; N lslash ; B -10 0 158 712 ;
+C 249 ; WX 278 ; N oslash ; B 1 -36 280 609 ;
+C 250 ; WX 426 ; N oe ; B 23 -7 403 579 ;
+C 251 ; WX 278 ; N germandbls ; B 20 -8 262 712 ;
+C -1 ; WX 278 ; N ecircumflex ; B 12 -7 266 804 ;
+C -1 ; WX 278 ; N edieresis ; B 20 -7 258 763 ;
+C -1 ; WX 278 ; N aacute ; B 20 -7 264 804 ;
+C -1 ; WX 800 ; N registered ; B 22 -14 778 726 ;
+C -1 ; WX 148 ; N icircumflex ; B -53 0 201 804 ;
+C -1 ; WX 278 ; N udieresis ; B 20 -7 258 763 ;
+C -1 ; WX 278 ; N ograve ; B 14 -7 258 804 ;
+C -1 ; WX 278 ; N uacute ; B 20 -7 264 804 ;
+C -1 ; WX 278 ; N ucircumflex ; B 12 -7 266 804 ;
+C -1 ; WX 333 ; N Aacute ; B 6 0 327 925 ;
+C -1 ; WX 148 ; N igrave ; B -51 0 141 804 ;
+C -1 ; WX 167 ; N Icircumflex ; B -43 0 211 925 ;
+C -1 ; WX 278 ; N ccedilla ; B 20 -207 258 579 ;
+C -1 ; WX 278 ; N adieresis ; B 20 -7 258 763 ;
+C -1 ; WX 278 ; N Ecircumflex ; B 12 0 269 925 ;
+C -1 ; WX 278 ; N scaron ; B 12 -7 266 804 ;
+C -1 ; WX 278 ; N thorn ; B 20 -128 258 712 ;
+C -1 ; WX 990 ; N trademark ; B 51 300 939 712 ;
+C -1 ; WX 278 ; N egrave ; B 14 -7 258 804 ;
+C -1 ; WX 199 ; N threesuperior ; B 11 283 191 720 ;
+C -1 ; WX 222 ; N zcaron ; B -16 0 238 804 ;
+C -1 ; WX 278 ; N atilde ; B 10 -7 276 774 ;
+C -1 ; WX 278 ; N aring ; B 20 -7 258 796 ;
+C -1 ; WX 278 ; N ocircumflex ; B 12 -7 266 804 ;
+C -1 ; WX 278 ; N Edieresis ; B 24 0 269 884 ;
+C -1 ; WX 499 ; N threequarters ; B 16 -8 485 720 ;
+C -1 ; WX 278 ; N ydieresis ; B 4 -128 273 763 ;
+C -1 ; WX 278 ; N yacute ; B 4 -128 273 804 ;
+C -1 ; WX 148 ; N iacute ; B 7 0 199 804 ;
+C -1 ; WX 333 ; N Acircumflex ; B 6 0 327 925 ;
+C -1 ; WX 333 ; N Uacute ; B 28 -14 305 925 ;
+C -1 ; WX 278 ; N eacute ; B 20 -7 264 804 ;
+C -1 ; WX 333 ; N Ograve ; B 28 -14 305 925 ;
+C -1 ; WX 278 ; N agrave ; B 14 -7 258 804 ;
+C -1 ; WX 333 ; N Udieresis ; B 28 -14 305 884 ;
+C -1 ; WX 278 ; N acircumflex ; B 12 -7 266 804 ;
+C -1 ; WX 167 ; N Igrave ; B -41 0 151 925 ;
+C -1 ; WX 199 ; N twosuperior ; B 11 288 191 720 ;
+C -1 ; WX 333 ; N Ugrave ; B 28 -14 305 925 ;
+C -1 ; WX 499 ; N onequarter ; B 24 -8 475 720 ;
+C -1 ; WX 333 ; N Ucircumflex ; B 28 -14 305 925 ;
+C -1 ; WX 333 ; N Scaron ; B 28 -14 305 925 ;
+C -1 ; WX 167 ; N Idieresis ; B -31 0 199 884 ;
+C -1 ; WX 148 ; N idieresis ; B -41 0 189 763 ;
+C -1 ; WX 278 ; N Egrave ; B 14 0 269 925 ;
+C -1 ; WX 333 ; N Oacute ; B 28 -14 305 925 ;
+C -1 ; WX 500 ; N divide ; B 5 0 495 572 ;
+C -1 ; WX 333 ; N Atilde ; B 6 0 327 895 ;
+C -1 ; WX 333 ; N Aring ; B 6 0 327 917 ;
+C -1 ; WX 333 ; N Odieresis ; B 28 -14 305 884 ;
+C -1 ; WX 333 ; N Adieresis ; B 6 0 327 884 ;
+C -1 ; WX 389 ; N Ntilde ; B 31 0 358 895 ;
+C -1 ; WX 259 ; N Zcaron ; B 3 0 257 925 ;
+C -1 ; WX 333 ; N Thorn ; B 28 0 305 712 ;
+C -1 ; WX 167 ; N Iacute ; B 17 0 209 925 ;
+C -1 ; WX 500 ; N plusminus ; B 5 41 495 531 ;
+C -1 ; WX 500 ; N multiply ; B 5 21 495 514 ;
+C -1 ; WX 278 ; N Eacute ; B 31 0 269 925 ;
+C -1 ; WX 333 ; N Ydieresis ; B 4 0 328 884 ;
+C -1 ; WX 199 ; N onesuperior ; B 19 288 139 715 ;
+C -1 ; WX 278 ; N ugrave ; B 14 -7 258 804 ;
+C -1 ; WX 500 ; N logicalnot ; B 5 154 495 432 ;
+C -1 ; WX 278 ; N ntilde ; B 10 0 276 774 ;
+C -1 ; WX 333 ; N Otilde ; B 28 -14 305 895 ;
+C -1 ; WX 278 ; N otilde ; B 10 -7 276 774 ;
+C -1 ; WX 333 ; N Ccedilla ; B 28 -207 305 726 ;
+C -1 ; WX 333 ; N Agrave ; B 6 0 327 925 ;
+C -1 ; WX 499 ; N onehalf ; B 18 -8 481 720 ;
+C -1 ; WX 333 ; N Eth ; B -6 0 305 712 ;
+C -1 ; WX 400 ; N degree ; B 54 420 346 712 ;
+C -1 ; WX 333 ; N Yacute ; B 4 0 328 925 ;
+C -1 ; WX 333 ; N Ocircumflex ; B 28 -14 305 925 ;
+C -1 ; WX 278 ; N oacute ; B 20 -7 264 804 ;
+C -1 ; WX 278 ; N mu ; B 20 -128 258 572 ;
+C -1 ; WX 500 ; N minus ; B 5 242 495 330 ;
+C -1 ; WX 278 ; N eth ; B 20 -7 258 751 ;
+C -1 ; WX 278 ; N odieresis ; B 20 -7 258 763 ;
+C -1 ; WX 800 ; N copyright ; B 22 -14 778 726 ;
+C -1 ; WX 222 ; N brokenbar ; B 67 -175 155 675 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 88
+
+KPX A y -37
+KPX A w -37
+KPX A v -37
+KPX A quoteright -74
+KPX A Y -55
+KPX A W -37
+KPX A V -37
+KPX A T -55
+
+KPX F period -129
+KPX F comma -129
+KPX F A -37
+
+KPX L y -37
+KPX L quoteright -129
+KPX L Y -74
+KPX L W -55
+KPX L V -55
+KPX L T -74
+
+KPX P period -129
+KPX P comma -129
+KPX P A -37
+
+KPX R Y -18
+KPX R W -18
+KPX R V -18
+KPX R T -18
+
+KPX T y -92
+KPX T w -92
+KPX T u -92
+KPX T semicolon -92
+KPX T s -92
+KPX T r -92
+KPX T period -92
+KPX T o -92
+KPX T i -92
+KPX T hyphen -92
+KPX T e -92
+KPX T comma -92
+KPX T colon -92
+KPX T c -92
+KPX T a -92
+KPX T A -55
+
+KPX V u -18
+KPX V semicolon -18
+KPX V r -18
+KPX V period -74
+KPX V o -18
+KPX V i -18
+KPX V hyphen -37
+KPX V e -18
+KPX V comma -74
+KPX V colon -18
+KPX V a -18
+KPX V A -37
+
+KPX W semicolon -18
+KPX W period -74
+KPX W o -18
+KPX W hyphen -37
+KPX W e -18
+KPX W comma -74
+KPX W colon -18
+KPX W a -18
+KPX W A -37
+
+KPX Y v -37
+KPX Y u -37
+KPX Y semicolon -55
+KPX Y q -37
+KPX Y period -111
+KPX Y p -37
+KPX Y o -55
+KPX Y i -18
+KPX Y hyphen -92
+KPX Y e -55
+KPX Y comma -92
+KPX Y colon -55
+KPX Y a -37
+KPX Y A -55
+
+KPX quoteleft quoteleft -37
+
+KPX quoteright t -18
+KPX quoteright s -74
+KPX quoteright quoteright -37
+
+KPX r period -129
+KPX r hyphen -18
+KPX r comma -129
+
+KPX v period -55
+KPX v comma -55
+
+KPX w period -55
+KPX w comma -55
+
+KPX y period -74
+KPX y comma -74
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 93 121 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 93 121 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 93 121 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 93 121 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 93 121 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 93 121 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 65 121 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 65 121 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 65 121 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 65 121 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 10 121 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 10 121 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 10 121 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 10 121 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 121 121 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 93 121 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 93 121 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 93 121 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 93 121 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 93 121 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 93 121 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 93 121 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 93 121 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 93 121 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 93 121 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 93 121 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 93 121 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 56 121 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 65 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 65 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 65 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 65 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 65 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 65 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 65 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 65 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 65 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 65 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute 0 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex 0 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis 0 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave 0 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 65 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 65 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 65 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 65 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 65 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 65 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 65 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 65 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 65 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 65 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 65 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 65 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 65 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 37 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/He-UlCm+ b/font/font/He-UlCm+
new file mode 100644
index 0000000..ad55e63
--- /dev/null
+++ b/font/font/He-UlCm+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 333 ; N Ccaron ; B 28 -14 321 948 ;
+C -1 ; WX 278 ; N ccaron ; B 20 -7 278 804 ;
+C -1 ; WX 333 ; N Dcaron ; B 28 0 305 948 ;
+C -1 ; WX 366 ; N dcaron ; B 20 -7 397 783 ;
+C -1 ; WX 278 ; N Ecaron ; B 12 0 269 948 ;
+C -1 ; WX 278 ; N ecaron ; B 12 -7 266 804 ;
+C -1 ; WX 278 ; N Lcaron ; B 31 0 275 783 ;
+C -1 ; WX 278 ; N Lacute ; B 31 0 272 948 ;
+C -1 ; WX 236 ; N lcaron ; B 26 0 261 783 ;
+C -1 ; WX 148 ; N lacute ; B 26 0 218 948 ;
+C -1 ; WX 389 ; N Ncaron ; B 31 0 358 948 ;
+C -1 ; WX 278 ; N ncaron ; B 12 0 266 804 ;
+C -1 ; WX 333 ; N Rcaron ; B 28 0 318 948 ;
+C -1 ; WX 333 ; N Racute ; B 28 0 327 948 ;
+C -1 ; WX 278 ; N rcaron ; B 12 0 266 804 ;
+C -1 ; WX 278 ; N racute ; B 20 0 283 804 ;
+C -1 ; WX 315 ; N Tcaron ; B 12 0 303 948 ;
+C -1 ; WX 255 ; N tcaron ; B 6 0 300 712 ;
+C -1 ; WX 333 ; N Uring ; B 28 -14 305 948 ;
+C -1 ; WX 278 ; N uring ; B 20 -7 258 796 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 120 144 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 77 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 92 144 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 243 71 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 65 144 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 65 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 121 71 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 65 144 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 107 71 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 19 144 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 120 144 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 65 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 92 144 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 128 144 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 65 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 84 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 83 144 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 146 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 92 152 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 65 0 ;
+EndBuildComposites
diff --git a/font/font/NCS-Bd b/font/font/NCS-Bd
new file mode 100644
index 0000000..ba1fed6
--- /dev/null
+++ b/font/font/NCS-Bd
@@ -0,0 +1,472 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1988, 1991 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Tue May 28 16:48:12 1991
+Comment UniqueID 35031
+Comment VMusage 30773 37665
+FontName NewCenturySchlbk-Bold
+FullName New Century Schoolbook Bold
+FamilyName New Century Schoolbook
+Weight Bold
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -165 -250 1000 988
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.009
+Notice Copyright (c) 1985, 1987, 1988, 1991 Adobe Systems Incorporated. All Rights Reserved.
+EncodingScheme AdobeStandardEncoding
+CapHeight 722
+XHeight 475
+Ascender 737
+Descender -205
+StartCharMetrics 228
+C 32 ; WX 287 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 296 ; N exclam ; B 53 -15 243 737 ;
+C 34 ; WX 333 ; N quotedbl ; B 0 378 333 737 ;
+C 35 ; WX 574 ; N numbersign ; B 36 0 538 690 ;
+C 36 ; WX 574 ; N dollar ; B 25 -141 549 810 ;
+C 37 ; WX 833 ; N percent ; B 14 -15 819 705 ;
+C 38 ; WX 852 ; N ampersand ; B 34 -15 818 737 ;
+C 39 ; WX 241 ; N quoteright ; B 22 378 220 737 ;
+C 40 ; WX 389 ; N parenleft ; B 77 -117 345 745 ;
+C 41 ; WX 389 ; N parenright ; B 44 -117 312 745 ;
+C 42 ; WX 500 ; N asterisk ; B 54 302 446 737 ;
+C 43 ; WX 606 ; N plus ; B 50 0 556 506 ;
+C 44 ; WX 278 ; N comma ; B 40 -184 238 175 ;
+C 45 ; WX 333 ; N hyphen ; B 42 174 291 302 ;
+C 46 ; WX 278 ; N period ; B 44 -15 234 175 ;
+C 47 ; WX 278 ; N slash ; B -42 -15 320 737 ;
+C 48 ; WX 574 ; N zero ; B 27 -15 547 705 ;
+C 49 ; WX 574 ; N one ; B 83 0 491 705 ;
+C 50 ; WX 574 ; N two ; B 19 0 531 705 ;
+C 51 ; WX 574 ; N three ; B 23 -15 531 705 ;
+C 52 ; WX 574 ; N four ; B 19 0 547 705 ;
+C 53 ; WX 574 ; N five ; B 32 -15 534 705 ;
+C 54 ; WX 574 ; N six ; B 27 -15 547 705 ;
+C 55 ; WX 574 ; N seven ; B 45 -15 547 705 ;
+C 56 ; WX 574 ; N eight ; B 27 -15 548 705 ;
+C 57 ; WX 574 ; N nine ; B 27 -15 547 705 ;
+C 58 ; WX 278 ; N colon ; B 44 -15 234 485 ;
+C 59 ; WX 278 ; N semicolon ; B 40 -184 238 485 ;
+C 60 ; WX 606 ; N less ; B 50 -9 556 515 ;
+C 61 ; WX 606 ; N equal ; B 50 103 556 403 ;
+C 62 ; WX 606 ; N greater ; B 50 -9 556 515 ;
+C 63 ; WX 500 ; N question ; B 23 -15 477 737 ;
+C 64 ; WX 747 ; N at ; B -2 -15 750 737 ;
+C 65 ; WX 759 ; N A ; B -19 0 778 737 ;
+C 66 ; WX 778 ; N B ; B 19 0 739 722 ;
+C 67 ; WX 778 ; N C ; B 39 -15 723 737 ;
+C 68 ; WX 833 ; N D ; B 19 0 794 722 ;
+C 69 ; WX 759 ; N E ; B 19 0 708 722 ;
+C 70 ; WX 722 ; N F ; B 19 0 697 722 ;
+C 71 ; WX 833 ; N G ; B 39 -15 818 737 ;
+C 72 ; WX 870 ; N H ; B 19 0 851 722 ;
+C 73 ; WX 444 ; N I ; B 29 0 415 722 ;
+C 74 ; WX 648 ; N J ; B 6 -15 642 722 ;
+C 75 ; WX 815 ; N K ; B 19 0 822 722 ;
+C 76 ; WX 722 ; N L ; B 19 0 703 722 ;
+C 77 ; WX 981 ; N M ; B 10 0 971 722 ;
+C 78 ; WX 833 ; N N ; B 5 -10 828 722 ;
+C 79 ; WX 833 ; N O ; B 39 -15 794 737 ;
+C 80 ; WX 759 ; N P ; B 24 0 735 722 ;
+C 81 ; WX 833 ; N Q ; B 39 -189 808 737 ;
+C 82 ; WX 815 ; N R ; B 19 -15 815 722 ;
+C 83 ; WX 667 ; N S ; B 51 -15 634 737 ;
+C 84 ; WX 722 ; N T ; B 16 0 706 722 ;
+C 85 ; WX 833 ; N U ; B 14 -15 825 722 ;
+C 86 ; WX 759 ; N V ; B -19 -10 778 722 ;
+C 87 ; WX 981 ; N W ; B 7 -10 974 722 ;
+C 88 ; WX 722 ; N X ; B -12 0 734 722 ;
+C 89 ; WX 722 ; N Y ; B -12 0 734 722 ;
+C 90 ; WX 667 ; N Z ; B 28 0 639 722 ;
+C 91 ; WX 389 ; N bracketleft ; B 84 -109 339 737 ;
+C 92 ; WX 606 ; N backslash ; B 122 -15 484 737 ;
+C 93 ; WX 389 ; N bracketright ; B 50 -109 305 737 ;
+C 94 ; WX 606 ; N asciicircum ; B 66 325 540 690 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 241 ; N quoteleft ; B 22 378 220 737 ;
+C 97 ; WX 611 ; N a ; B 40 -15 601 485 ;
+C 98 ; WX 648 ; N b ; B 4 -15 616 737 ;
+C 99 ; WX 556 ; N c ; B 32 -15 524 485 ;
+C 100 ; WX 667 ; N d ; B 32 -15 644 737 ;
+C 101 ; WX 574 ; N e ; B 32 -15 542 485 ;
+C 102 ; WX 389 ; N f ; B 11 0 461 737 ; L i fi ; L l fl ;
+C 103 ; WX 611 ; N g ; B 30 -205 623 535 ;
+C 104 ; WX 685 ; N h ; B 17 0 662 737 ;
+C 105 ; WX 370 ; N i ; B 26 0 338 737 ;
+C 106 ; WX 352 ; N j ; B -86 -205 271 737 ;
+C 107 ; WX 667 ; N k ; B 17 0 662 737 ;
+C 108 ; WX 352 ; N l ; B 17 0 329 737 ;
+C 109 ; WX 963 ; N m ; B 17 0 940 485 ;
+C 110 ; WX 685 ; N n ; B 17 0 662 485 ;
+C 111 ; WX 611 ; N o ; B 32 -15 579 485 ;
+C 112 ; WX 667 ; N p ; B 17 -205 629 485 ;
+C 113 ; WX 648 ; N q ; B 32 -205 638 485 ;
+C 114 ; WX 519 ; N r ; B 17 0 516 485 ;
+C 115 ; WX 500 ; N s ; B 48 -15 476 485 ;
+C 116 ; WX 426 ; N t ; B 21 -15 405 675 ;
+C 117 ; WX 685 ; N u ; B 17 -15 668 475 ;
+C 118 ; WX 611 ; N v ; B 12 -10 599 475 ;
+C 119 ; WX 889 ; N w ; B 16 -10 873 475 ;
+C 120 ; WX 611 ; N x ; B 12 0 599 475 ;
+C 121 ; WX 611 ; N y ; B 12 -205 599 475 ;
+C 122 ; WX 537 ; N z ; B 38 0 499 475 ;
+C 123 ; WX 389 ; N braceleft ; B 36 -109 313 737 ;
+C 124 ; WX 606 ; N bar ; B 249 -250 357 750 ;
+C 125 ; WX 389 ; N braceright ; B 76 -109 353 737 ;
+C 126 ; WX 606 ; N asciitilde ; B 72 160 534 346 ;
+C 161 ; WX 296 ; N exclamdown ; B 53 -205 243 547 ;
+C 162 ; WX 574 ; N cent ; B 32 -102 528 572 ;
+C 163 ; WX 574 ; N sterling ; B 16 -15 558 705 ;
+C 164 ; WX 167 ; N fraction ; B -165 -15 332 705 ;
+C 165 ; WX 574 ; N yen ; B -10 0 584 690 ;
+C 166 ; WX 574 ; N florin ; B 14 -205 548 737 ;
+C 167 ; WX 500 ; N section ; B 62 -86 438 737 ;
+C 168 ; WX 574 ; N currency ; B 27 84 547 605 ;
+C 169 ; WX 241 ; N quotesingle ; B 53 378 189 737 ;
+C 170 ; WX 481 ; N quotedblleft ; B 22 378 459 737 ;
+C 171 ; WX 500 ; N guillemotleft ; B 46 79 454 397 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 62 79 271 397 ;
+C 173 ; WX 333 ; N guilsinglright ; B 62 79 271 397 ;
+C 174 ; WX 685 ; N fi ; B 11 0 666 737 ;
+C 175 ; WX 685 ; N fl ; B 11 0 666 737 ;
+C 177 ; WX 500 ; N endash ; B 0 184 500 292 ;
+C 178 ; WX 500 ; N dagger ; B 39 -101 461 737 ;
+C 179 ; WX 500 ; N daggerdbl ; B 39 -89 461 737 ;
+C 180 ; WX 278 ; N periodcentered ; B 53 200 225 372 ;
+C 182 ; WX 747 ; N paragraph ; B 96 -71 631 722 ;
+C 183 ; WX 606 ; N bullet ; B 122 180 484 542 ;
+C 184 ; WX 241 ; N quotesinglbase ; B 22 -184 220 175 ;
+C 185 ; WX 481 ; N quotedblbase ; B 22 -184 459 175 ;
+C 186 ; WX 481 ; N quotedblright ; B 22 378 459 737 ;
+C 187 ; WX 500 ; N guillemotright ; B 46 79 454 397 ;
+C 188 ; WX 1000 ; N ellipsis ; B 72 -15 928 175 ;
+C 189 ; WX 1000 ; N perthousand ; B 7 -15 993 705 ;
+C 191 ; WX 500 ; N questiondown ; B 23 -205 477 547 ;
+C 193 ; WX 333 ; N grave ; B 2 547 249 737 ;
+C 194 ; WX 333 ; N acute ; B 84 547 331 737 ;
+C 195 ; WX 333 ; N circumflex ; B -10 547 344 725 ;
+C 196 ; WX 333 ; N tilde ; B -24 563 357 705 ;
+C 197 ; WX 333 ; N macron ; B -6 582 339 664 ;
+C 198 ; WX 333 ; N breve ; B 9 547 324 714 ;
+C 199 ; WX 333 ; N dotaccent ; B 95 552 237 694 ;
+C 200 ; WX 333 ; N dieresis ; B -12 552 345 694 ;
+C 202 ; WX 333 ; N ring ; B 58 545 274 761 ;
+C 203 ; WX 333 ; N cedilla ; B 17 -224 248 0 ;
+C 205 ; WX 333 ; N hungarumlaut ; B -16 547 431 737 ;
+C 206 ; WX 333 ; N ogonek ; B 168 -163 346 3 ;
+C 207 ; WX 333 ; N caron ; B -10 547 344 725 ;
+C 208 ; WX 1000 ; N emdash ; B 0 184 1000 292 ;
+C 225 ; WX 981 ; N AE ; B -29 0 963 722 ;
+C 227 ; WX 367 ; N ordfeminine ; B 1 407 393 705 ;
+C 232 ; WX 722 ; N Lslash ; B 19 0 703 722 ;
+C 233 ; WX 833 ; N Oslash ; B 39 -53 794 775 ;
+C 234 ; WX 1000 ; N OE ; B 0 0 982 722 ;
+C 235 ; WX 367 ; N ordmasculine ; B 1 407 366 705 ;
+C 241 ; WX 870 ; N ae ; B 32 -15 838 485 ;
+C 245 ; WX 370 ; N dotlessi ; B 26 0 338 475 ;
+C 248 ; WX 352 ; N lslash ; B 17 0 329 737 ;
+C 249 ; WX 611 ; N oslash ; B 32 -103 579 573 ;
+C 250 ; WX 907 ; N oe ; B 32 -15 875 485 ;
+C 251 ; WX 611 ; N germandbls ; B -2 -15 580 737 ;
+C -1 ; WX 574 ; N ecircumflex ; B 32 -15 542 725 ;
+C -1 ; WX 574 ; N edieresis ; B 32 -15 542 694 ;
+C -1 ; WX 611 ; N aacute ; B 40 -15 601 737 ;
+C -1 ; WX 747 ; N registered ; B -2 -15 750 737 ;
+C -1 ; WX 370 ; N icircumflex ; B 9 0 363 725 ;
+C -1 ; WX 685 ; N udieresis ; B 17 -15 668 694 ;
+C -1 ; WX 611 ; N ograve ; B 32 -15 579 737 ;
+C -1 ; WX 685 ; N uacute ; B 17 -15 668 737 ;
+C -1 ; WX 685 ; N ucircumflex ; B 17 -15 668 725 ;
+C -1 ; WX 759 ; N Aacute ; B -19 0 778 964 ;
+C -1 ; WX 370 ; N igrave ; B 21 0 338 737 ;
+C -1 ; WX 444 ; N Icircumflex ; B 29 0 415 952 ;
+C -1 ; WX 556 ; N ccedilla ; B 32 -224 524 485 ;
+C -1 ; WX 611 ; N adieresis ; B 40 -15 601 694 ;
+C -1 ; WX 759 ; N Ecircumflex ; B 19 0 708 952 ;
+C -1 ; WX 500 ; N scaron ; B 48 -15 476 725 ;
+C -1 ; WX 667 ; N thorn ; B 17 -205 629 737 ;
+C -1 ; WX 1000 ; N trademark ; B 6 317 982 722 ;
+C -1 ; WX 574 ; N egrave ; B 32 -15 542 737 ;
+C -1 ; WX 344 ; N threesuperior ; B -3 273 355 705 ;
+C -1 ; WX 537 ; N zcaron ; B 38 0 499 725 ;
+C -1 ; WX 611 ; N atilde ; B 40 -15 601 705 ;
+C -1 ; WX 611 ; N aring ; B 40 -15 601 761 ;
+C -1 ; WX 611 ; N ocircumflex ; B 32 -15 579 725 ;
+C -1 ; WX 759 ; N Edieresis ; B 19 0 708 921 ;
+C -1 ; WX 861 ; N threequarters ; B 15 -15 838 705 ;
+C -1 ; WX 611 ; N ydieresis ; B 12 -205 599 694 ;
+C -1 ; WX 611 ; N yacute ; B 12 -205 599 737 ;
+C -1 ; WX 370 ; N iacute ; B 26 0 350 737 ;
+C -1 ; WX 759 ; N Acircumflex ; B -19 0 778 952 ;
+C -1 ; WX 833 ; N Uacute ; B 14 -15 825 964 ;
+C -1 ; WX 574 ; N eacute ; B 32 -15 542 737 ;
+C -1 ; WX 833 ; N Ograve ; B 39 -15 794 964 ;
+C -1 ; WX 611 ; N agrave ; B 40 -15 601 737 ;
+C -1 ; WX 833 ; N Udieresis ; B 14 -15 825 921 ;
+C -1 ; WX 611 ; N acircumflex ; B 40 -15 601 725 ;
+C -1 ; WX 444 ; N Igrave ; B 29 0 415 964 ;
+C -1 ; WX 344 ; N twosuperior ; B -3 282 350 705 ;
+C -1 ; WX 833 ; N Ugrave ; B 14 -15 825 964 ;
+C -1 ; WX 861 ; N onequarter ; B 31 -15 838 705 ;
+C -1 ; WX 833 ; N Ucircumflex ; B 14 -15 825 952 ;
+C -1 ; WX 667 ; N Scaron ; B 51 -15 634 952 ;
+C -1 ; WX 444 ; N Idieresis ; B 29 0 415 921 ;
+C -1 ; WX 370 ; N idieresis ; B 7 0 364 694 ;
+C -1 ; WX 759 ; N Egrave ; B 19 0 708 964 ;
+C -1 ; WX 833 ; N Oacute ; B 39 -15 794 964 ;
+C -1 ; WX 606 ; N divide ; B 50 -40 556 546 ;
+C -1 ; WX 759 ; N Atilde ; B -19 0 778 932 ;
+C -1 ; WX 759 ; N Aring ; B -19 0 778 988 ;
+C -1 ; WX 833 ; N Odieresis ; B 39 -15 794 921 ;
+C -1 ; WX 759 ; N Adieresis ; B -19 0 778 921 ;
+C -1 ; WX 833 ; N Ntilde ; B 5 -10 828 932 ;
+C -1 ; WX 667 ; N Zcaron ; B 28 0 639 952 ;
+C -1 ; WX 759 ; N Thorn ; B 24 0 735 722 ;
+C -1 ; WX 444 ; N Iacute ; B 29 0 415 964 ;
+C -1 ; WX 606 ; N plusminus ; B 50 0 556 506 ;
+C -1 ; WX 606 ; N multiply ; B 65 15 541 491 ;
+C -1 ; WX 759 ; N Eacute ; B 19 0 708 964 ;
+C -1 ; WX 722 ; N Ydieresis ; B -12 0 734 921 ;
+C -1 ; WX 344 ; N onesuperior ; B 31 282 309 705 ;
+C -1 ; WX 685 ; N ugrave ; B 17 -15 668 737 ;
+C -1 ; WX 606 ; N logicalnot ; B 50 103 556 403 ;
+C -1 ; WX 685 ; N ntilde ; B 17 0 662 705 ;
+C -1 ; WX 833 ; N Otilde ; B 39 -15 794 932 ;
+C -1 ; WX 611 ; N otilde ; B 32 -15 579 705 ;
+C -1 ; WX 778 ; N Ccedilla ; B 39 -224 723 737 ;
+C -1 ; WX 759 ; N Agrave ; B -19 0 778 964 ;
+C -1 ; WX 861 ; N onehalf ; B 31 -15 838 705 ;
+C -1 ; WX 833 ; N Eth ; B 19 0 794 722 ;
+C -1 ; WX 400 ; N degree ; B 57 419 343 705 ;
+C -1 ; WX 722 ; N Yacute ; B -12 0 734 964 ;
+C -1 ; WX 833 ; N Ocircumflex ; B 39 -15 794 952 ;
+C -1 ; WX 611 ; N oacute ; B 32 -15 579 737 ;
+C -1 ; WX 685 ; N mu ; B 17 -205 668 475 ;
+C -1 ; WX 606 ; N minus ; B 50 199 556 307 ;
+C -1 ; WX 611 ; N eth ; B 32 -15 579 737 ;
+C -1 ; WX 611 ; N odieresis ; B 32 -15 579 694 ;
+C -1 ; WX 747 ; N copyright ; B -2 -15 750 737 ;
+C -1 ; WX 606 ; N brokenbar ; B 249 -175 357 675 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 128
+
+KPX A y -18
+KPX A w -18
+KPX A v -18
+KPX A quoteright -74
+KPX A quotedblright -74
+KPX A Y -91
+KPX A W -74
+KPX A V -74
+KPX A U -18
+KPX A T -55
+
+KPX C period -18
+KPX C comma -18
+
+KPX D period -25
+KPX D comma -25
+
+KPX F r -18
+KPX F period -125
+KPX F o -55
+KPX F i -18
+KPX F e -55
+KPX F comma -125
+KPX F a -74
+
+KPX J u -18
+KPX J period -55
+KPX J o -18
+KPX J e -18
+KPX J comma -55
+KPX J a -18
+KPX J A -18
+
+KPX K y -25
+KPX K u -18
+
+KPX L y -25
+KPX L quoteright -100
+KPX L quotedblright -100
+KPX L Y -74
+KPX L W -74
+KPX L V -100
+KPX L T -100
+
+KPX N period -18
+KPX N comma -18
+
+KPX O period -25
+KPX O comma -25
+KPX O T 10
+
+KPX P period -150
+KPX P o -55
+KPX P e -55
+KPX P comma -150
+KPX P a -55
+KPX P A -74
+
+KPX S period -18
+KPX S comma -18
+
+KPX T u -18
+KPX T r -18
+KPX T period -100
+KPX T o -74
+KPX T i -18
+KPX T hyphen -125
+KPX T e -74
+KPX T comma -100
+KPX T a -74
+KPX T O 10
+KPX T A -55
+
+KPX U period -25
+KPX U comma -25
+KPX U A -18
+
+KPX V u -55
+KPX V semicolon -37
+KPX V period -125
+KPX V o -74
+KPX V i -18
+KPX V hyphen -100
+KPX V e -74
+KPX V comma -125
+KPX V colon -37
+KPX V a -74
+KPX V A -74
+
+KPX W y -25
+KPX W u -37
+KPX W semicolon -55
+KPX W period -100
+KPX W o -74
+KPX W i -18
+KPX W hyphen -100
+KPX W e -74
+KPX W comma -100
+KPX W colon -55
+KPX W a -74
+KPX W A -74
+
+KPX Y u -55
+KPX Y semicolon -25
+KPX Y period -100
+KPX Y o -100
+KPX Y i -18
+KPX Y hyphen -125
+KPX Y e -100
+KPX Y comma -100
+KPX Y colon -25
+KPX Y a -100
+KPX Y A -91
+
+KPX colon space -18
+
+KPX comma space -18
+KPX comma quoteright -18
+KPX comma quotedblright -18
+
+KPX f quoteright 75
+KPX f quotedblright 75
+
+KPX period space -18
+KPX period quoteright -18
+KPX period quotedblright -18
+
+KPX quotedblleft A -74
+
+KPX quotedblright space -18
+
+KPX quoteleft A -74
+
+KPX quoteright s -25
+KPX quoteright d -25
+
+KPX r period -74
+KPX r comma -74
+
+KPX semicolon space -18
+
+KPX space quoteleft -18
+KPX space quotedblleft -18
+KPX space Y -18
+KPX space W -18
+KPX space V -18
+KPX space T -18
+KPX space A -18
+
+KPX v period -100
+KPX v comma -100
+
+KPX w period -100
+KPX w comma -100
+
+KPX y period -100
+KPX y comma -100
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 213 227 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 213 227 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 213 227 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 213 227 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 213 227 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 213 227 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 213 227 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 213 227 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 213 227 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 213 227 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 56 227 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 56 227 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 56 227 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 56 227 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 250 227 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 250 227 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 250 227 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 250 227 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 250 227 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 250 227 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 167 227 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 250 227 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 250 227 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 250 227 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 250 227 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 195 227 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 195 227 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 167 227 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 139 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 139 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 139 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 139 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 139 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 139 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 121 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 121 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 121 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 121 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute 19 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex 19 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis 19 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave 19 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 176 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 139 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 139 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 139 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 139 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 139 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 84 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 176 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 176 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 176 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 176 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 139 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 139 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 102 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/NCS-Bd+ b/font/font/NCS-Bd+
new file mode 100644
index 0000000..d5e3a42
--- /dev/null
+++ b/font/font/NCS-Bd+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 778 ; N Ccaron ; B 39 -15 723 966 ;
+C -1 ; WX 556 ; N ccaron ; B 32 -15 524 725 ;
+C -1 ; WX 833 ; N Dcaron ; B 19 0 794 966 ;
+C -1 ; WX 806 ; N dcaron ; B 32 -15 862 811 ;
+C -1 ; WX 759 ; N Ecaron ; B 19 0 708 966 ;
+C -1 ; WX 574 ; N ecaron ; B 32 -15 542 725 ;
+C -1 ; WX 722 ; N Lcaron ; B 19 0 703 794 ;
+C -1 ; WX 722 ; N Lacute ; B 19 0 703 978 ;
+C -1 ; WX 491 ; N lcaron ; B 17 0 547 811 ;
+C -1 ; WX 352 ; N lacute ; B 17 0 365 978 ;
+C -1 ; WX 833 ; N Ncaron ; B 5 -10 828 966 ;
+C -1 ; WX 685 ; N ncaron ; B 17 0 662 725 ;
+C -1 ; WX 815 ; N Rcaron ; B 19 -15 815 966 ;
+C -1 ; WX 815 ; N Racute ; B 19 -15 815 978 ;
+C -1 ; WX 519 ; N rcaron ; B 17 0 516 725 ;
+C -1 ; WX 519 ; N racute ; B 17 0 516 737 ;
+C -1 ; WX 722 ; N Tcaron ; B 16 0 706 966 ;
+C -1 ; WX 565 ; N tcaron ; B 21 -15 623 737 ;
+C -1 ; WX 833 ; N Uring ; B 14 -15 825 966 ;
+C -1 ; WX 685 ; N uring ; B 17 -15 668 761 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 290 241 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 136 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 250 241 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 642 74 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 213 241 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 120 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 413 57 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 194 241 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 327 74 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 34 241 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 250 241 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 176 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 241 241 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 288 241 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 93 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 118 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 194 241 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 403 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 250 205 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 176 0 ;
+EndBuildComposites
diff --git a/font/font/NCS-BdIt b/font/font/NCS-BdIt
new file mode 100644
index 0000000..7871147
--- /dev/null
+++ b/font/font/NCS-BdIt
@@ -0,0 +1,602 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1991 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Tue May 28 16:56:07 1991
+Comment UniqueID 35034
+Comment VMusage 31030 37922
+FontName NewCenturySchlbk-BoldItalic
+FullName New Century Schoolbook Bold Italic
+FamilyName New Century Schoolbook
+Weight Bold
+ItalicAngle -16
+IsFixedPitch false
+FontBBox -205 -250 1147 991
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.007
+Notice Copyright (c) 1985, 1987, 1989, 1991 Adobe Systems Incorporated. All Rights Reserved.
+EncodingScheme AdobeStandardEncoding
+CapHeight 722
+XHeight 477
+Ascender 737
+Descender -205
+StartCharMetrics 228
+C 32 ; WX 287 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 333 ; N exclam ; B 0 -15 333 737 ;
+C 34 ; WX 400 ; N quotedbl ; B 66 388 428 737 ;
+C 35 ; WX 574 ; N numbersign ; B 30 0 544 690 ;
+C 36 ; WX 574 ; N dollar ; B 9 -120 565 810 ;
+C 37 ; WX 889 ; N percent ; B 54 -28 835 727 ;
+C 38 ; WX 889 ; N ampersand ; B 32 -15 823 737 ;
+C 39 ; WX 259 ; N quoteright ; B 48 388 275 737 ;
+C 40 ; WX 407 ; N parenleft ; B 72 -117 454 745 ;
+C 41 ; WX 407 ; N parenright ; B -70 -117 310 745 ;
+C 42 ; WX 500 ; N asterisk ; B 58 301 498 737 ;
+C 43 ; WX 606 ; N plus ; B 50 0 556 506 ;
+C 44 ; WX 287 ; N comma ; B -57 -192 170 157 ;
+C 45 ; WX 333 ; N hyphen ; B 2 177 263 299 ;
+C 46 ; WX 287 ; N period ; B -20 -15 152 157 ;
+C 47 ; WX 278 ; N slash ; B -41 -15 320 737 ;
+C 48 ; WX 574 ; N zero ; B 21 -15 553 705 ;
+C 49 ; WX 574 ; N one ; B 25 0 489 705 ;
+C 50 ; WX 574 ; N two ; B -38 -3 538 705 ;
+C 51 ; WX 574 ; N three ; B -7 -15 536 705 ;
+C 52 ; WX 574 ; N four ; B -13 0 544 705 ;
+C 53 ; WX 574 ; N five ; B 0 -15 574 705 ;
+C 54 ; WX 574 ; N six ; B 31 -15 574 705 ;
+C 55 ; WX 574 ; N seven ; B 64 -15 593 705 ;
+C 56 ; WX 574 ; N eight ; B 0 -15 552 705 ;
+C 57 ; WX 574 ; N nine ; B 0 -15 543 705 ;
+C 58 ; WX 287 ; N colon ; B -20 -15 237 477 ;
+C 59 ; WX 287 ; N semicolon ; B -57 -192 237 477 ;
+C 60 ; WX 606 ; N less ; B 50 -9 556 515 ;
+C 61 ; WX 606 ; N equal ; B 50 103 556 403 ;
+C 62 ; WX 606 ; N greater ; B 50 -8 556 514 ;
+C 63 ; WX 481 ; N question ; B 79 -15 451 737 ;
+C 64 ; WX 747 ; N at ; B -4 -15 751 737 ;
+C 65 ; WX 741 ; N A ; B -75 0 716 737 ;
+C 66 ; WX 759 ; N B ; B -50 0 721 722 ;
+C 67 ; WX 759 ; N C ; B 37 -15 759 737 ;
+C 68 ; WX 833 ; N D ; B -47 0 796 722 ;
+C 69 ; WX 741 ; N E ; B -41 0 730 722 ;
+C 70 ; WX 704 ; N F ; B -41 0 730 722 ;
+C 71 ; WX 815 ; N G ; B 37 -15 805 737 ;
+C 72 ; WX 870 ; N H ; B -41 0 911 722 ;
+C 73 ; WX 444 ; N I ; B -41 0 485 722 ;
+C 74 ; WX 667 ; N J ; B -20 -15 708 722 ;
+C 75 ; WX 778 ; N K ; B -41 0 832 722 ;
+C 76 ; WX 704 ; N L ; B -41 0 670 722 ;
+C 77 ; WX 944 ; N M ; B -44 0 988 722 ;
+C 78 ; WX 852 ; N N ; B -61 -10 913 722 ;
+C 79 ; WX 833 ; N O ; B 37 -15 796 737 ;
+C 80 ; WX 741 ; N P ; B -41 0 730 722 ;
+C 81 ; WX 833 ; N Q ; B 37 -189 796 737 ;
+C 82 ; WX 796 ; N R ; B -41 -15 749 722 ;
+C 83 ; WX 685 ; N S ; B 1 -15 666 737 ;
+C 84 ; WX 722 ; N T ; B 41 0 759 722 ;
+C 85 ; WX 833 ; N U ; B 88 -15 900 722 ;
+C 86 ; WX 741 ; N V ; B 32 -10 802 722 ;
+C 87 ; WX 944 ; N W ; B 40 -10 1000 722 ;
+C 88 ; WX 741 ; N X ; B -82 0 801 722 ;
+C 89 ; WX 704 ; N Y ; B 13 0 775 722 ;
+C 90 ; WX 704 ; N Z ; B -33 0 711 722 ;
+C 91 ; WX 407 ; N bracketleft ; B 1 -109 464 737 ;
+C 92 ; WX 606 ; N backslash ; B 161 -15 445 737 ;
+C 93 ; WX 407 ; N bracketright ; B -101 -109 362 737 ;
+C 94 ; WX 606 ; N asciicircum ; B 66 325 540 690 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 259 ; N quoteleft ; B 47 388 274 737 ;
+C 97 ; WX 667 ; N a ; B 6 -15 636 477 ;
+C 98 ; WX 611 ; N b ; B 29 -15 557 737 ;
+C 99 ; WX 537 ; N c ; B 0 -15 482 477 ;
+C 100 ; WX 667 ; N d ; B 0 -15 660 737 ;
+C 101 ; WX 519 ; N e ; B 0 -15 479 477 ;
+C 102 ; WX 389 ; N f ; B -48 -205 550 737 ; L i fi ; L l fl ;
+C 103 ; WX 611 ; N g ; B -63 -205 604 528 ;
+C 104 ; WX 685 ; N h ; B 0 -15 639 737 ;
+C 105 ; WX 389 ; N i ; B 32 -15 345 737 ;
+C 106 ; WX 370 ; N j ; B -205 -205 347 737 ;
+C 107 ; WX 648 ; N k ; B -11 -15 578 737 ;
+C 108 ; WX 389 ; N l ; B 32 -15 375 737 ;
+C 109 ; WX 944 ; N m ; B 0 -15 909 477 ;
+C 110 ; WX 685 ; N n ; B 0 -15 639 477 ;
+C 111 ; WX 574 ; N o ; B 0 -15 530 477 ;
+C 112 ; WX 648 ; N p ; B -119 -205 590 477 ;
+C 113 ; WX 630 ; N q ; B 0 -205 587 477 ;
+C 114 ; WX 519 ; N r ; B 0 0 527 486 ;
+C 115 ; WX 481 ; N s ; B 0 -15 435 477 ;
+C 116 ; WX 407 ; N t ; B 24 -15 403 650 ;
+C 117 ; WX 685 ; N u ; B 30 -15 635 477 ;
+C 118 ; WX 556 ; N v ; B 30 -15 496 477 ;
+C 119 ; WX 833 ; N w ; B 30 -15 773 477 ;
+C 120 ; WX 574 ; N x ; B -46 -15 574 477 ;
+C 121 ; WX 519 ; N y ; B -66 -205 493 477 ;
+C 122 ; WX 519 ; N z ; B -19 -15 473 477 ;
+C 123 ; WX 407 ; N braceleft ; B 52 -109 408 737 ;
+C 124 ; WX 606 ; N bar ; B 249 -250 357 750 ;
+C 125 ; WX 407 ; N braceright ; B -25 -109 331 737 ;
+C 126 ; WX 606 ; N asciitilde ; B 72 160 534 346 ;
+C 161 ; WX 333 ; N exclamdown ; B -44 -205 289 547 ;
+C 162 ; WX 574 ; N cent ; B 30 -144 512 578 ;
+C 163 ; WX 574 ; N sterling ; B -18 -15 566 705 ;
+C 164 ; WX 167 ; N fraction ; B -166 -15 333 705 ;
+C 165 ; WX 574 ; N yen ; B 17 0 629 690 ;
+C 166 ; WX 574 ; N florin ; B -43 -205 575 737 ;
+C 167 ; WX 500 ; N section ; B -30 -146 515 737 ;
+C 168 ; WX 574 ; N currency ; B 27 84 547 605 ;
+C 169 ; WX 287 ; N quotesingle ; B 112 388 250 737 ;
+C 170 ; WX 481 ; N quotedblleft ; B 54 388 521 737 ;
+C 171 ; WX 481 ; N guillemotleft ; B -35 69 449 407 ;
+C 172 ; WX 278 ; N guilsinglleft ; B -25 69 244 407 ;
+C 173 ; WX 278 ; N guilsinglright ; B -26 69 243 407 ;
+C 174 ; WX 685 ; N fi ; B -70 -205 641 737 ;
+C 175 ; WX 685 ; N fl ; B -70 -205 671 737 ;
+C 177 ; WX 500 ; N endash ; B -47 189 479 287 ;
+C 178 ; WX 500 ; N dagger ; B 48 -146 508 737 ;
+C 179 ; WX 500 ; N daggerdbl ; B -60 -150 508 737 ;
+C 180 ; WX 287 ; N periodcentered ; B 57 200 229 372 ;
+C 182 ; WX 650 ; N paragraph ; B 25 -131 681 722 ;
+C 183 ; WX 606 ; N bullet ; B 122 180 484 542 ;
+C 184 ; WX 259 ; N quotesinglbase ; B -57 -192 170 157 ;
+C 185 ; WX 481 ; N quotedblbase ; B -57 -192 412 157 ;
+C 186 ; WX 481 ; N quotedblright ; B 43 388 510 737 ;
+C 187 ; WX 481 ; N guillemotright ; B -31 69 453 407 ;
+C 188 ; WX 1000 ; N ellipsis ; B 81 -15 919 157 ;
+C 189 ; WX 1167 ; N perthousand ; B 20 -28 1147 727 ;
+C 191 ; WX 481 ; N questiondown ; B 0 -205 372 547 ;
+C 193 ; WX 333 ; N grave ; B 74 538 294 722 ;
+C 194 ; WX 333 ; N acute ; B 123 538 372 722 ;
+C 195 ; WX 333 ; N circumflex ; B 23 533 365 705 ;
+C 196 ; WX 333 ; N tilde ; B 28 561 398 690 ;
+C 197 ; WX 333 ; N macron ; B 47 573 404 649 ;
+C 198 ; WX 333 ; N breve ; B 67 535 390 698 ;
+C 199 ; WX 333 ; N dotaccent ; B 145 546 289 690 ;
+C 200 ; WX 333 ; N dieresis ; B 33 546 393 690 ;
+C 202 ; WX 333 ; N ring ; B 111 522 335 746 ;
+C 203 ; WX 333 ; N cedilla ; B -21 -220 225 3 ;
+C 205 ; WX 333 ; N hungarumlaut ; B 15 538 480 722 ;
+C 206 ; WX 333 ; N ogonek ; B 68 -155 246 -10 ;
+C 207 ; WX 333 ; N caron ; B 60 531 403 705 ;
+C 208 ; WX 1000 ; N emdash ; B -47 189 979 287 ;
+C 225 ; WX 889 ; N AE ; B -86 0 915 722 ;
+C 227 ; WX 412 ; N ordfeminine ; B 47 407 460 705 ;
+C 232 ; WX 704 ; N Lslash ; B -41 0 670 722 ;
+C 233 ; WX 833 ; N Oslash ; B 35 -68 798 790 ;
+C 234 ; WX 963 ; N OE ; B 29 0 989 722 ;
+C 235 ; WX 356 ; N ordmasculine ; B 42 407 394 705 ;
+C 241 ; WX 815 ; N ae ; B -18 -15 775 477 ;
+C 245 ; WX 389 ; N dotlessi ; B 32 -15 345 477 ;
+C 248 ; WX 389 ; N lslash ; B 5 -15 390 737 ;
+C 249 ; WX 574 ; N oslash ; B 0 -121 530 583 ;
+C 250 ; WX 852 ; N oe ; B -6 -15 812 477 ;
+C 251 ; WX 574 ; N germandbls ; B -91 -205 540 737 ;
+C -1 ; WX 519 ; N ecircumflex ; B 0 -15 479 705 ;
+C -1 ; WX 519 ; N edieresis ; B 0 -15 486 690 ;
+C -1 ; WX 667 ; N aacute ; B 6 -15 636 722 ;
+C -1 ; WX 747 ; N registered ; B -2 -15 750 737 ;
+C -1 ; WX 389 ; N icircumflex ; B 21 -15 363 698 ;
+C -1 ; WX 685 ; N udieresis ; B 30 -15 635 690 ;
+C -1 ; WX 574 ; N ograve ; B 0 -15 530 722 ;
+C -1 ; WX 685 ; N uacute ; B 30 -15 635 722 ;
+C -1 ; WX 685 ; N ucircumflex ; B 30 -15 635 705 ;
+C -1 ; WX 741 ; N Aacute ; B -75 0 716 947 ;
+C -1 ; WX 389 ; N igrave ; B 32 -15 345 715 ;
+C -1 ; WX 444 ; N Icircumflex ; B -41 0 485 930 ;
+C -1 ; WX 537 ; N ccedilla ; B 0 -220 482 477 ;
+C -1 ; WX 667 ; N adieresis ; B 6 -15 636 690 ;
+C -1 ; WX 741 ; N Ecircumflex ; B -41 0 730 930 ;
+C -1 ; WX 481 ; N scaron ; B 0 -15 477 705 ;
+C -1 ; WX 648 ; N thorn ; B -119 -205 590 737 ;
+C -1 ; WX 950 ; N trademark ; B 42 317 1017 722 ;
+C -1 ; WX 519 ; N egrave ; B 0 -15 479 722 ;
+C -1 ; WX 344 ; N threesuperior ; B 3 273 361 705 ;
+C -1 ; WX 519 ; N zcaron ; B -19 -15 473 695 ;
+C -1 ; WX 667 ; N atilde ; B 6 -15 636 690 ;
+C -1 ; WX 667 ; N aring ; B 6 -15 636 746 ;
+C -1 ; WX 574 ; N ocircumflex ; B 0 -15 530 705 ;
+C -1 ; WX 741 ; N Edieresis ; B -41 0 730 915 ;
+C -1 ; WX 861 ; N threequarters ; B 35 -15 789 705 ;
+C -1 ; WX 519 ; N ydieresis ; B -66 -205 493 690 ;
+C -1 ; WX 519 ; N yacute ; B -66 -205 493 722 ;
+C -1 ; WX 389 ; N iacute ; B 32 -15 370 715 ;
+C -1 ; WX 741 ; N Acircumflex ; B -75 0 716 930 ;
+C -1 ; WX 833 ; N Uacute ; B 88 -15 900 947 ;
+C -1 ; WX 519 ; N eacute ; B 0 -15 479 722 ;
+C -1 ; WX 833 ; N Ograve ; B 37 -15 796 947 ;
+C -1 ; WX 667 ; N agrave ; B 6 -15 636 722 ;
+C -1 ; WX 833 ; N Udieresis ; B 88 -15 900 915 ;
+C -1 ; WX 667 ; N acircumflex ; B 6 -15 636 705 ;
+C -1 ; WX 444 ; N Igrave ; B -41 0 485 947 ;
+C -1 ; WX 344 ; N twosuperior ; B -17 280 362 705 ;
+C -1 ; WX 833 ; N Ugrave ; B 88 -15 900 947 ;
+C -1 ; WX 861 ; N onequarter ; B 17 -15 789 705 ;
+C -1 ; WX 833 ; N Ucircumflex ; B 88 -15 900 930 ;
+C -1 ; WX 685 ; N Scaron ; B 1 -15 666 930 ;
+C -1 ; WX 444 ; N Idieresis ; B -41 0 509 915 ;
+C -1 ; WX 389 ; N idieresis ; B 31 -15 391 683 ;
+C -1 ; WX 741 ; N Egrave ; B -41 0 730 947 ;
+C -1 ; WX 833 ; N Oacute ; B 37 -15 796 947 ;
+C -1 ; WX 606 ; N divide ; B 50 -40 556 546 ;
+C -1 ; WX 741 ; N Atilde ; B -75 0 716 915 ;
+C -1 ; WX 741 ; N Aring ; B -75 0 716 991 ;
+C -1 ; WX 833 ; N Odieresis ; B 37 -15 796 915 ;
+C -1 ; WX 741 ; N Adieresis ; B -75 0 716 915 ;
+C -1 ; WX 852 ; N Ntilde ; B -61 -10 913 915 ;
+C -1 ; WX 704 ; N Zcaron ; B -33 0 711 930 ;
+C -1 ; WX 741 ; N Thorn ; B -41 0 690 722 ;
+C -1 ; WX 444 ; N Iacute ; B -41 0 488 947 ;
+C -1 ; WX 606 ; N plusminus ; B 50 0 556 506 ;
+C -1 ; WX 606 ; N multiply ; B 65 15 541 491 ;
+C -1 ; WX 741 ; N Eacute ; B -41 0 730 947 ;
+C -1 ; WX 704 ; N Ydieresis ; B 13 0 775 915 ;
+C -1 ; WX 344 ; N onesuperior ; B 19 282 326 705 ;
+C -1 ; WX 685 ; N ugrave ; B 30 -15 635 722 ;
+C -1 ; WX 606 ; N logicalnot ; B 50 103 556 403 ;
+C -1 ; WX 685 ; N ntilde ; B 0 -15 639 690 ;
+C -1 ; WX 833 ; N Otilde ; B 37 -15 796 915 ;
+C -1 ; WX 574 ; N otilde ; B 0 -15 530 690 ;
+C -1 ; WX 759 ; N Ccedilla ; B 37 -220 759 737 ;
+C -1 ; WX 741 ; N Agrave ; B -75 0 716 947 ;
+C -1 ; WX 861 ; N onehalf ; B 17 -15 798 705 ;
+C -1 ; WX 833 ; N Eth ; B -47 0 796 722 ;
+C -1 ; WX 400 ; N degree ; B 86 419 372 705 ;
+C -1 ; WX 704 ; N Yacute ; B 13 0 775 947 ;
+C -1 ; WX 833 ; N Ocircumflex ; B 37 -15 796 930 ;
+C -1 ; WX 574 ; N oacute ; B 0 -15 530 722 ;
+C -1 ; WX 685 ; N mu ; B -89 -205 635 477 ;
+C -1 ; WX 606 ; N minus ; B 50 199 556 307 ;
+C -1 ; WX 574 ; N eth ; B 0 -15 530 752 ;
+C -1 ; WX 574 ; N odieresis ; B 0 -15 530 690 ;
+C -1 ; WX 747 ; N copyright ; B -2 -15 750 737 ;
+C -1 ; WX 606 ; N brokenbar ; B 249 -175 357 675 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 239
+
+KPX A y -33
+KPX A w -25
+KPX A v -10
+KPX A u -15
+KPX A quoteright -95
+KPX A quotedblright -95
+KPX A Y -70
+KPX A W -84
+KPX A V -100
+KPX A U -32
+KPX A T 5
+KPX A Q 5
+KPX A O 5
+KPX A G 5
+KPX A C 5
+
+KPX B period 15
+KPX B comma 15
+KPX B U 15
+KPX B A -11
+
+KPX C A -5
+
+KPX D period -11
+KPX D comma -11
+KPX D Y 6
+KPX D W -11
+KPX D V -18
+
+KPX F r -27
+KPX F period -91
+KPX F o -47
+KPX F i -41
+KPX F e -41
+KPX F comma -91
+KPX F a -47
+KPX F A -79
+
+KPX J u -39
+KPX J period -74
+KPX J o -40
+KPX J e -33
+KPX J comma -74
+KPX J a -40
+KPX J A -30
+
+KPX K y -48
+KPX K u -4
+KPX K o -4
+KPX K e 18
+
+KPX L y -30
+KPX L quoteright -100
+KPX L quotedblright -100
+KPX L Y -55
+KPX L W -69
+KPX L V -97
+KPX L T -75
+
+KPX N period -49
+KPX N comma -49
+
+KPX O period -18
+KPX O comma -18
+KPX O X -18
+KPX O W -15
+KPX O V -24
+KPX O A -5
+
+KPX P period -100
+KPX P o -40
+KPX P e -33
+KPX P comma -100
+KPX P a -40
+KPX P A -80
+
+KPX R W -14
+KPX R V -24
+
+KPX S period -18
+KPX S comma -18
+
+KPX T y -30
+KPX T w -30
+KPX T u -22
+KPX T r -9
+KPX T period -55
+KPX T o -40
+KPX T i -22
+KPX T hyphen -75
+KPX T h -9
+KPX T e -33
+KPX T comma -55
+KPX T a -40
+KPX T O 11
+KPX T A -60
+
+KPX U period -25
+KPX U comma -25
+KPX U A -42
+
+KPX V u -70
+KPX V semicolon 6
+KPX V period -94
+KPX V o -71
+KPX V i -35
+KPX V hyphen -94
+KPX V e -66
+KPX V comma -94
+KPX V colon -49
+KPX V a -55
+KPX V O -19
+KPX V G -12
+KPX V A -100
+
+KPX W y -41
+KPX W u -25
+KPX W semicolon -22
+KPX W period -86
+KPX W o -33
+KPX W i -27
+KPX W hyphen -61
+KPX W h 5
+KPX W e -39
+KPX W comma -86
+KPX W colon -22
+KPX W a -33
+KPX W O -11
+KPX W A -66
+
+KPX Y u -58
+KPX Y semicolon -55
+KPX Y period -91
+KPX Y o -77
+KPX Y i -22
+KPX Y hyphen -91
+KPX Y e -71
+KPX Y comma -91
+KPX Y colon -55
+KPX Y a -77
+KPX Y A -79
+
+KPX a y -8
+KPX a w -8
+KPX a v 6
+
+KPX b y -6
+KPX b v 8
+KPX b period 6
+KPX b comma 6
+
+KPX c y -20
+KPX c period -8
+KPX c l -13
+KPX c k -8
+KPX c h -18
+KPX c comma -8
+
+KPX colon space -18
+
+KPX comma space -18
+KPX comma quoteright -18
+KPX comma quotedblright -18
+
+KPX d y -15
+KPX d w -15
+
+KPX e y -15
+KPX e x -5
+KPX e w -15
+KPX e p -11
+KPX e g -4
+KPX e b -8
+
+KPX f quoteright 105
+KPX f quotedblright 105
+KPX f period -28
+KPX f o 7
+KPX f l 7
+KPX f i 7
+KPX f e 14
+KPX f dotlessi 7
+KPX f comma -28
+KPX f a 8
+
+KPX g y -11
+KPX g r 11
+KPX g period -5
+KPX g comma -5
+
+KPX h y -20
+
+KPX i v 7
+
+KPX k y -15
+KPX k o -22
+KPX k e -16
+
+KPX l y -7
+KPX l w -7
+
+KPX m y -20
+KPX m u -11
+
+KPX n y -20
+KPX n v -7
+KPX n u -11
+
+KPX o y -11
+KPX o w -8
+KPX o v 6
+
+KPX p y -4
+KPX p period 8
+KPX p comma 8
+
+KPX period space -18
+KPX period quoteright -18
+KPX period quotedblright -18
+
+KPX quotedblleft quoteleft 20
+KPX quotedblleft A -60
+
+KPX quotedblright space -18
+
+KPX quoteleft A -80
+
+KPX quoteright v -16
+KPX quoteright t -22
+KPX quoteright s -46
+KPX quoteright r -9
+KPX quoteright l -22
+KPX quoteright d -41
+
+KPX r y -20
+KPX r v -7
+KPX r u -11
+KPX r t -11
+KPX r semicolon 9
+KPX r s -20
+KPX r quoteright 9
+KPX r period -90
+KPX r p -17
+KPX r o -11
+KPX r l -14
+KPX r k 9
+KPX r i -14
+KPX r hyphen -16
+KPX r g -11
+KPX r e -7
+KPX r d -7
+KPX r comma -90
+KPX r colon 9
+KPX r a -11
+
+KPX s period 11
+KPX s comma 11
+
+KPX semicolon space -18
+
+KPX space quotedblleft -18
+KPX space Y -18
+KPX space W -33
+KPX space V -24
+KPX space T -18
+KPX space A -22
+
+KPX v period -11
+KPX v o -6
+KPX v comma -11
+KPX v a -6
+
+KPX w period -17
+KPX w o -14
+KPX w e -8
+KPX w comma -17
+KPX w a -14
+
+KPX x e 5
+
+KPX y period -25
+KPX y o 8
+KPX y e 15
+KPX y comma -25
+KPX y a 8
+
+KPX z e 4
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 259 225 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 259 225 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 259 225 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 259 225 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 229 245 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 259 225 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 296 225 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 296 225 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 296 225 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 296 225 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 116 225 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 116 225 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 116 225 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 116 225 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 326 225 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 315 225 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 315 225 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 315 225 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 315 225 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 315 225 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 206 225 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 340 225 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 340 225 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 340 225 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 340 225 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 246 225 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 236 225 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 226 225 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 167 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 167 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 167 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 167 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 167 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 167 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 93 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 93 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 93 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 93 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -2 -7 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -2 -7 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -2 -7 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -2 -7 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 176 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 121 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 121 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 121 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 121 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 121 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 74 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 176 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 176 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 176 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 176 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 93 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 93 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 63 -10 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/NCS-BdIt+ b/font/font/NCS-BdIt+
new file mode 100644
index 0000000..bb4b48c
--- /dev/null
+++ b/font/font/NCS-BdIt+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 759 ; N Ccaron ; B 37 -15 761 962 ;
+C -1 ; WX 537 ; N ccaron ; B 0 -15 529 705 ;
+C -1 ; WX 833 ; N Dcaron ; B -47 0 796 962 ;
+C -1 ; WX 826 ; N dcaron ; B 0 -15 910 811 ;
+C -1 ; WX 741 ; N Ecaron ; B -41 0 730 962 ;
+C -1 ; WX 519 ; N ecaron ; B 0 -15 496 705 ;
+C -1 ; WX 704 ; N Lcaron ; B -41 0 735 794 ;
+C -1 ; WX 704 ; N Lacute ; B -41 0 670 972 ;
+C -1 ; WX 548 ; N lcaron ; B 32 -15 625 811 ;
+C -1 ; WX 389 ; N lacute ; B 32 -15 496 972 ;
+C -1 ; WX 852 ; N Ncaron ; B -61 -10 913 962 ;
+C -1 ; WX 685 ; N ncaron ; B 0 -15 639 705 ;
+C -1 ; WX 796 ; N Rcaron ; B -41 -15 749 962 ;
+C -1 ; WX 796 ; N Racute ; B -41 -15 749 972 ;
+C -1 ; WX 519 ; N rcaron ; B 0 0 527 705 ;
+C -1 ; WX 519 ; N racute ; B 0 0 527 722 ;
+C -1 ; WX 722 ; N Tcaron ; B 41 0 759 962 ;
+C -1 ; WX 566 ; N tcaron ; B 24 -15 653 737 ;
+C -1 ; WX 833 ; N Uring ; B 88 -15 900 962 ;
+C -1 ; WX 685 ; N uring ; B 30 -15 635 746 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 358 257 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 126 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 323 257 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 635 74 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 277 257 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 93 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 460 57 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 256 250 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 350 74 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 124 250 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 332 257 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 176 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 304 257 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 349 250 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 93 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 118 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 267 257 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 378 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 311 216 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 176 0 ;
+EndBuildComposites
diff --git a/font/font/NCS-It b/font/font/NCS-It
new file mode 100644
index 0000000..6dfd6a2
--- /dev/null
+++ b/font/font/NCS-It
@@ -0,0 +1,536 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1991 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Tue May 28 16:40:04 1991
+Comment UniqueID 35028
+Comment VMusage 31423 38315
+FontName NewCenturySchlbk-Italic
+FullName New Century Schoolbook Italic
+FamilyName New Century Schoolbook
+Weight Medium
+ItalicAngle -16
+IsFixedPitch false
+FontBBox -166 -250 994 958
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.006
+Notice Copyright (c) 1985, 1987, 1989, 1991 Adobe Systems Incorporated. All Rights Reserved.
+EncodingScheme AdobeStandardEncoding
+CapHeight 722
+XHeight 466
+Ascender 737
+Descender -205
+StartCharMetrics 228
+C 32 ; WX 278 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 333 ; N exclam ; B 17 -15 303 737 ;
+C 34 ; WX 400 ; N quotedbl ; B 127 463 363 737 ;
+C 35 ; WX 556 ; N numbersign ; B 28 0 528 690 ;
+C 36 ; WX 556 ; N dollar ; B 4 -142 536 808 ;
+C 37 ; WX 833 ; N percent ; B 43 -15 790 705 ;
+C 38 ; WX 852 ; N ampersand ; B 24 -15 773 737 ;
+C 39 ; WX 204 ; N quoteright ; B 39 463 229 737 ;
+C 40 ; WX 333 ; N parenleft ; B 53 -117 411 745 ;
+C 41 ; WX 333 ; N parenright ; B -93 -117 265 745 ;
+C 42 ; WX 500 ; N asterisk ; B 80 318 500 737 ;
+C 43 ; WX 606 ; N plus ; B 50 0 556 506 ;
+C 44 ; WX 278 ; N comma ; B -39 -165 151 109 ;
+C 45 ; WX 333 ; N hyphen ; B 32 202 259 274 ;
+C 46 ; WX 278 ; N period ; B 17 -15 141 109 ;
+C 47 ; WX 606 ; N slash ; B 132 -15 474 737 ;
+C 48 ; WX 556 ; N zero ; B 30 -15 526 705 ;
+C 49 ; WX 556 ; N one ; B 50 0 459 705 ;
+C 50 ; WX 556 ; N two ; B -37 0 506 705 ;
+C 51 ; WX 556 ; N three ; B -2 -15 506 705 ;
+C 52 ; WX 556 ; N four ; B -8 0 512 705 ;
+C 53 ; WX 556 ; N five ; B 4 -15 540 705 ;
+C 54 ; WX 556 ; N six ; B 36 -15 548 705 ;
+C 55 ; WX 556 ; N seven ; B 69 -15 561 705 ;
+C 56 ; WX 556 ; N eight ; B 6 -15 526 705 ;
+C 57 ; WX 556 ; N nine ; B 8 -15 520 705 ;
+C 58 ; WX 278 ; N colon ; B 17 -15 229 466 ;
+C 59 ; WX 278 ; N semicolon ; B -39 -165 229 466 ;
+C 60 ; WX 606 ; N less ; B 36 -8 542 514 ;
+C 61 ; WX 606 ; N equal ; B 50 117 556 389 ;
+C 62 ; WX 606 ; N greater ; B 64 -8 570 514 ;
+C 63 ; WX 444 ; N question ; B 102 -15 417 737 ;
+C 64 ; WX 747 ; N at ; B -2 -15 750 737 ;
+C 65 ; WX 704 ; N A ; B -87 0 668 737 ;
+C 66 ; WX 722 ; N B ; B -33 0 670 722 ;
+C 67 ; WX 722 ; N C ; B 40 -15 712 737 ;
+C 68 ; WX 778 ; N D ; B -33 0 738 722 ;
+C 69 ; WX 722 ; N E ; B -33 0 700 722 ;
+C 70 ; WX 667 ; N F ; B -33 0 700 722 ;
+C 71 ; WX 778 ; N G ; B 40 -15 763 737 ;
+C 72 ; WX 833 ; N H ; B -33 0 866 722 ;
+C 73 ; WX 407 ; N I ; B -33 0 435 722 ;
+C 74 ; WX 611 ; N J ; B -14 -15 651 722 ;
+C 75 ; WX 741 ; N K ; B -33 0 816 722 ;
+C 76 ; WX 667 ; N L ; B -33 0 627 722 ;
+C 77 ; WX 944 ; N M ; B -33 0 977 722 ;
+C 78 ; WX 815 ; N N ; B -51 -15 866 722 ;
+C 79 ; WX 778 ; N O ; B 40 -15 738 737 ;
+C 80 ; WX 667 ; N P ; B -33 0 667 722 ;
+C 81 ; WX 778 ; N Q ; B 40 -190 738 737 ;
+C 82 ; WX 741 ; N R ; B -45 -15 692 722 ;
+C 83 ; WX 667 ; N S ; B -6 -15 638 737 ;
+C 84 ; WX 685 ; N T ; B 40 0 725 722 ;
+C 85 ; WX 815 ; N U ; B 93 -15 867 722 ;
+C 86 ; WX 704 ; N V ; B 36 -10 779 722 ;
+C 87 ; WX 926 ; N W ; B 53 -10 978 722 ;
+C 88 ; WX 704 ; N X ; B -75 0 779 722 ;
+C 89 ; WX 685 ; N Y ; B 31 0 760 722 ;
+C 90 ; WX 667 ; N Z ; B -25 0 667 722 ;
+C 91 ; WX 333 ; N bracketleft ; B -55 -109 388 737 ;
+C 92 ; WX 606 ; N backslash ; B 132 -15 474 737 ;
+C 93 ; WX 333 ; N bracketright ; B -77 -109 366 737 ;
+C 94 ; WX 606 ; N asciicircum ; B 89 325 517 690 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 204 ; N quoteleft ; B 39 463 229 737 ;
+C 97 ; WX 574 ; N a ; B 2 -15 524 466 ;
+C 98 ; WX 556 ; N b ; B 32 -15 488 737 ;
+C 99 ; WX 444 ; N c ; B 2 -15 394 466 ;
+C 100 ; WX 611 ; N d ; B 2 -15 585 737 ;
+C 101 ; WX 444 ; N e ; B -6 -15 388 466 ;
+C 102 ; WX 333 ; N f ; B -68 -205 470 737 ; L i fi ; L l fl ;
+C 103 ; WX 537 ; N g ; B -79 -205 523 497 ;
+C 104 ; WX 611 ; N h ; B 14 -15 562 737 ;
+C 105 ; WX 333 ; N i ; B 29 -15 282 715 ;
+C 106 ; WX 315 ; N j ; B -166 -205 318 715 ;
+C 107 ; WX 556 ; N k ; B 0 -15 497 737 ;
+C 108 ; WX 333 ; N l ; B 14 -15 292 737 ;
+C 109 ; WX 889 ; N m ; B 14 -15 840 466 ;
+C 110 ; WX 611 ; N n ; B 14 -15 562 466 ;
+C 111 ; WX 500 ; N o ; B 2 -15 450 466 ;
+C 112 ; WX 574 ; N p ; B -101 -205 506 466 ;
+C 113 ; WX 556 ; N q ; B 2 -205 500 466 ;
+C 114 ; WX 444 ; N r ; B 10 0 434 466 ;
+C 115 ; WX 444 ; N s ; B 2 -15 394 466 ;
+C 116 ; WX 352 ; N t ; B 24 -15 328 619 ;
+C 117 ; WX 611 ; N u ; B 44 -15 556 466 ;
+C 118 ; WX 519 ; N v ; B 31 -15 447 466 ;
+C 119 ; WX 778 ; N w ; B 31 -15 706 466 ;
+C 120 ; WX 500 ; N x ; B -33 -15 471 466 ;
+C 121 ; WX 500 ; N y ; B -83 -205 450 466 ;
+C 122 ; WX 463 ; N z ; B -33 -15 416 466 ;
+C 123 ; WX 333 ; N braceleft ; B 38 -109 394 737 ;
+C 124 ; WX 606 ; N bar ; B 267 -250 339 750 ;
+C 125 ; WX 333 ; N braceright ; B -87 -109 269 737 ;
+C 126 ; WX 606 ; N asciitilde ; B 72 184 534 322 ;
+C 161 ; WX 333 ; N exclamdown ; B -22 -205 264 547 ;
+C 162 ; WX 556 ; N cent ; B 62 -144 486 580 ;
+C 163 ; WX 556 ; N sterling ; B -13 -15 544 705 ;
+C 164 ; WX 167 ; N fraction ; B -134 -15 301 705 ;
+C 165 ; WX 556 ; N yen ; B 40 0 624 690 ;
+C 166 ; WX 556 ; N florin ; B -58 -205 569 737 ;
+C 167 ; WX 500 ; N section ; B -10 -147 480 737 ;
+C 168 ; WX 556 ; N currency ; B 26 93 530 597 ;
+C 169 ; WX 278 ; N quotesingle ; B 151 463 237 737 ;
+C 170 ; WX 389 ; N quotedblleft ; B 39 463 406 737 ;
+C 171 ; WX 426 ; N guillemotleft ; B -15 74 402 402 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 40 74 259 402 ;
+C 173 ; WX 333 ; N guilsinglright ; B 40 74 259 402 ;
+C 174 ; WX 611 ; N fi ; B -68 -205 555 737 ;
+C 175 ; WX 611 ; N fl ; B -68 -205 587 737 ;
+C 177 ; WX 500 ; N endash ; B -27 208 487 268 ;
+C 178 ; WX 500 ; N dagger ; B 51 -147 506 737 ;
+C 179 ; WX 500 ; N daggerdbl ; B -54 -147 506 737 ;
+C 180 ; WX 278 ; N periodcentered ; B 71 238 207 374 ;
+C 182 ; WX 650 ; N paragraph ; B 48 -132 665 722 ;
+C 183 ; WX 606 ; N bullet ; B 122 180 484 542 ;
+C 184 ; WX 204 ; N quotesinglbase ; B -78 -165 112 109 ;
+C 185 ; WX 389 ; N quotedblbase ; B -78 -165 289 109 ;
+C 186 ; WX 389 ; N quotedblright ; B 39 463 406 737 ;
+C 187 ; WX 426 ; N guillemotright ; B -15 74 402 402 ;
+C 188 ; WX 1000 ; N ellipsis ; B 59 -15 849 109 ;
+C 189 ; WX 1000 ; N perthousand ; B 6 -15 994 705 ;
+C 191 ; WX 444 ; N questiondown ; B -3 -205 312 547 ;
+C 193 ; WX 333 ; N grave ; B 71 518 262 690 ;
+C 194 ; WX 333 ; N acute ; B 132 518 355 690 ;
+C 195 ; WX 333 ; N circumflex ; B 37 518 331 690 ;
+C 196 ; WX 333 ; N tilde ; B 52 547 383 649 ;
+C 197 ; WX 333 ; N macron ; B 52 560 363 610 ;
+C 198 ; WX 333 ; N breve ; B 69 518 370 677 ;
+C 199 ; WX 333 ; N dotaccent ; B 146 544 248 646 ;
+C 200 ; WX 333 ; N dieresis ; B 59 544 359 646 ;
+C 202 ; WX 333 ; N ring ; B 114 512 314 712 ;
+C 203 ; WX 333 ; N cedilla ; B 3 -215 215 0 ;
+C 205 ; WX 333 ; N hungarumlaut ; B 32 518 455 690 ;
+C 206 ; WX 333 ; N ogonek ; B 68 -215 254 0 ;
+C 207 ; WX 333 ; N caron ; B 73 518 378 690 ;
+C 208 ; WX 1000 ; N emdash ; B -27 208 987 268 ;
+C 225 ; WX 870 ; N AE ; B -87 0 888 722 ;
+C 227 ; WX 422 ; N ordfeminine ; B 72 416 420 705 ;
+C 232 ; WX 667 ; N Lslash ; B -33 0 627 722 ;
+C 233 ; WX 778 ; N Oslash ; B 16 -68 748 780 ;
+C 234 ; WX 981 ; N OE ; B 40 0 975 722 ;
+C 235 ; WX 372 ; N ordmasculine ; B 66 416 370 705 ;
+C 241 ; WX 722 ; N ae ; B -18 -15 666 466 ;
+C 245 ; WX 333 ; N dotlessi ; B 29 -15 282 466 ;
+C 248 ; WX 333 ; N lslash ; B -25 -15 340 737 ;
+C 249 ; WX 500 ; N oslash ; B 2 -121 450 549 ;
+C 250 ; WX 778 ; N oe ; B 2 -15 722 466 ;
+C 251 ; WX 556 ; N germandbls ; B -76 -205 525 737 ;
+C -1 ; WX 444 ; N ecircumflex ; B -6 -15 388 690 ;
+C -1 ; WX 444 ; N edieresis ; B -6 -15 415 646 ;
+C -1 ; WX 574 ; N aacute ; B 2 -15 524 690 ;
+C -1 ; WX 747 ; N registered ; B -2 -15 750 737 ;
+C -1 ; WX 333 ; N icircumflex ; B 29 -15 331 690 ;
+C -1 ; WX 611 ; N udieresis ; B 44 -15 556 646 ;
+C -1 ; WX 500 ; N ograve ; B 2 -15 450 690 ;
+C -1 ; WX 611 ; N uacute ; B 44 -15 556 690 ;
+C -1 ; WX 611 ; N ucircumflex ; B 44 -15 556 690 ;
+C -1 ; WX 704 ; N Aacute ; B -87 0 668 946 ;
+C -1 ; WX 333 ; N igrave ; B 29 -15 282 690 ;
+C -1 ; WX 407 ; N Icircumflex ; B -33 0 435 946 ;
+C -1 ; WX 444 ; N ccedilla ; B 2 -215 394 466 ;
+C -1 ; WX 574 ; N adieresis ; B 2 -15 524 646 ;
+C -1 ; WX 722 ; N Ecircumflex ; B -33 0 700 946 ;
+C -1 ; WX 444 ; N scaron ; B 2 -15 434 690 ;
+C -1 ; WX 574 ; N thorn ; B -101 -205 506 737 ;
+C -1 ; WX 950 ; N trademark ; B 32 318 968 722 ;
+C -1 ; WX 444 ; N egrave ; B -6 -15 388 690 ;
+C -1 ; WX 333 ; N threesuperior ; B 22 273 359 705 ;
+C -1 ; WX 463 ; N zcaron ; B -33 -15 443 690 ;
+C -1 ; WX 574 ; N atilde ; B 2 -15 524 649 ;
+C -1 ; WX 574 ; N aring ; B 2 -15 524 712 ;
+C -1 ; WX 500 ; N ocircumflex ; B 2 -15 450 690 ;
+C -1 ; WX 722 ; N Edieresis ; B -33 0 700 902 ;
+C -1 ; WX 834 ; N threequarters ; B 22 -15 782 705 ;
+C -1 ; WX 500 ; N ydieresis ; B -83 -205 450 646 ;
+C -1 ; WX 500 ; N yacute ; B -83 -205 450 690 ;
+C -1 ; WX 333 ; N iacute ; B 29 -15 355 690 ;
+C -1 ; WX 704 ; N Acircumflex ; B -87 0 668 946 ;
+C -1 ; WX 815 ; N Uacute ; B 93 -15 867 946 ;
+C -1 ; WX 444 ; N eacute ; B -6 -15 411 690 ;
+C -1 ; WX 778 ; N Ograve ; B 40 -15 738 946 ;
+C -1 ; WX 574 ; N agrave ; B 2 -15 524 690 ;
+C -1 ; WX 815 ; N Udieresis ; B 93 -15 867 902 ;
+C -1 ; WX 574 ; N acircumflex ; B 2 -15 524 690 ;
+C -1 ; WX 407 ; N Igrave ; B -33 0 435 946 ;
+C -1 ; WX 333 ; N twosuperior ; B 0 282 359 705 ;
+C -1 ; WX 815 ; N Ugrave ; B 93 -15 867 946 ;
+C -1 ; WX 834 ; N onequarter ; B 34 -15 782 705 ;
+C -1 ; WX 815 ; N Ucircumflex ; B 93 -15 867 946 ;
+C -1 ; WX 667 ; N Scaron ; B -6 -15 638 946 ;
+C -1 ; WX 407 ; N Idieresis ; B -33 0 456 902 ;
+C -1 ; WX 333 ; N idieresis ; B 29 -15 359 646 ;
+C -1 ; WX 722 ; N Egrave ; B -33 0 700 946 ;
+C -1 ; WX 778 ; N Oacute ; B 40 -15 738 946 ;
+C -1 ; WX 606 ; N divide ; B 50 -22 556 528 ;
+C -1 ; WX 704 ; N Atilde ; B -87 0 668 905 ;
+C -1 ; WX 704 ; N Aring ; B -87 0 668 958 ;
+C -1 ; WX 778 ; N Odieresis ; B 40 -15 738 902 ;
+C -1 ; WX 704 ; N Adieresis ; B -87 0 668 902 ;
+C -1 ; WX 815 ; N Ntilde ; B -51 -15 866 905 ;
+C -1 ; WX 667 ; N Zcaron ; B -25 0 667 946 ;
+C -1 ; WX 667 ; N Thorn ; B -33 0 627 722 ;
+C -1 ; WX 407 ; N Iacute ; B -33 0 452 946 ;
+C -1 ; WX 606 ; N plusminus ; B 50 0 556 506 ;
+C -1 ; WX 606 ; N multiply ; B 74 24 532 482 ;
+C -1 ; WX 722 ; N Eacute ; B -33 0 700 946 ;
+C -1 ; WX 685 ; N Ydieresis ; B 31 0 760 902 ;
+C -1 ; WX 333 ; N onesuperior ; B 34 282 311 705 ;
+C -1 ; WX 611 ; N ugrave ; B 44 -15 556 690 ;
+C -1 ; WX 606 ; N logicalnot ; B 50 108 556 389 ;
+C -1 ; WX 611 ; N ntilde ; B 14 -15 562 649 ;
+C -1 ; WX 778 ; N Otilde ; B 40 -15 738 905 ;
+C -1 ; WX 500 ; N otilde ; B 2 -15 467 649 ;
+C -1 ; WX 722 ; N Ccedilla ; B 40 -215 712 737 ;
+C -1 ; WX 704 ; N Agrave ; B -87 0 668 946 ;
+C -1 ; WX 834 ; N onehalf ; B 34 -15 776 705 ;
+C -1 ; WX 778 ; N Eth ; B -33 0 738 722 ;
+C -1 ; WX 400 ; N degree ; B 86 419 372 705 ;
+C -1 ; WX 685 ; N Yacute ; B 31 0 760 946 ;
+C -1 ; WX 778 ; N Ocircumflex ; B 40 -15 738 946 ;
+C -1 ; WX 500 ; N oacute ; B 2 -15 450 690 ;
+C -1 ; WX 611 ; N mu ; B -60 -205 556 466 ;
+C -1 ; WX 606 ; N minus ; B 50 217 556 289 ;
+C -1 ; WX 500 ; N eth ; B 2 -15 450 737 ;
+C -1 ; WX 500 ; N odieresis ; B 2 -15 450 646 ;
+C -1 ; WX 747 ; N copyright ; B -2 -15 750 737 ;
+C -1 ; WX 606 ; N brokenbar ; B 267 -175 339 675 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 181
+
+KPX A y -55
+KPX A w -18
+KPX A v -18
+KPX A u -18
+KPX A quoteright -125
+KPX A quotedblright -125
+KPX A Y -55
+KPX A W -74
+KPX A V -74
+KPX A U -37
+KPX A T -30
+KPX A Q -18
+KPX A O -18
+KPX A G -18
+KPX A C -18
+
+KPX B period -50
+KPX B comma -50
+
+KPX C period -50
+KPX C comma -50
+
+KPX D period -50
+KPX D comma -50
+KPX D Y -18
+KPX D W -18
+KPX D V -18
+
+KPX F r -55
+KPX F period -125
+KPX F o -55
+KPX F i -10
+KPX F e -55
+KPX F comma -125
+KPX F a -55
+KPX F A -35
+
+KPX G period -50
+KPX G comma -50
+
+KPX J u -18
+KPX J period -100
+KPX J o -37
+KPX J e -37
+KPX J comma -100
+KPX J a -37
+KPX J A -18
+
+KPX L y -50
+KPX L quoteright -125
+KPX L quotedblright -125
+KPX L Y -100
+KPX L W -100
+KPX L V -100
+KPX L T -100
+
+KPX N period -60
+KPX N comma -60
+
+KPX O period -50
+KPX O comma -50
+KPX O Y -18
+KPX O X -18
+KPX O V -18
+KPX O T 18
+
+KPX P period -125
+KPX P o -55
+KPX P e -55
+KPX P comma -125
+KPX P a -55
+KPX P A -50
+
+KPX Q period -20
+KPX Q comma -20
+
+KPX R Y -18
+KPX R W -18
+KPX R V -18
+KPX R U -18
+
+KPX S period -50
+KPX S comma -50
+
+KPX T y -50
+KPX T w -50
+KPX T u -50
+KPX T semicolon -50
+KPX T r -50
+KPX T period -100
+KPX T o -74
+KPX T i -18
+KPX T hyphen -100
+KPX T h -25
+KPX T e -74
+KPX T comma -100
+KPX T colon -50
+KPX T a -74
+KPX T O 18
+
+KPX U period -100
+KPX U comma -100
+KPX U A -18
+
+KPX V u -75
+KPX V semicolon -75
+KPX V period -100
+KPX V o -75
+KPX V i -50
+KPX V hyphen -100
+KPX V e -75
+KPX V comma -100
+KPX V colon -75
+KPX V a -75
+KPX V A -37
+
+KPX W y -55
+KPX W u -55
+KPX W semicolon -75
+KPX W period -100
+KPX W o -55
+KPX W i -20
+KPX W hyphen -75
+KPX W h -20
+KPX W e -55
+KPX W comma -100
+KPX W colon -75
+KPX W a -55
+KPX W A -55
+
+KPX Y u -100
+KPX Y semicolon -75
+KPX Y period -100
+KPX Y o -100
+KPX Y i -25
+KPX Y hyphen -100
+KPX Y e -100
+KPX Y comma -100
+KPX Y colon -75
+KPX Y a -100
+KPX Y A -55
+
+KPX b period -50
+KPX b comma -50
+KPX b b -10
+
+KPX c period -50
+KPX c k -18
+KPX c h -18
+KPX c comma -50
+
+KPX colon space -37
+
+KPX comma space -37
+KPX comma quoteright -37
+KPX comma quotedblright -37
+
+KPX e period -37
+KPX e comma -37
+
+KPX f quoteright 75
+KPX f quotedblright 75
+KPX f period -75
+KPX f o -10
+KPX f comma -75
+
+KPX g period -50
+KPX g comma -50
+
+KPX l y -10
+
+KPX o period -50
+KPX o comma -50
+
+KPX p period -50
+KPX p comma -50
+
+KPX period space -37
+KPX period quoteright -37
+KPX period quotedblright -37
+
+KPX quotedblleft A -75
+
+KPX quotedblright space -37
+
+KPX quoteleft quoteleft -37
+KPX quoteleft A -75
+
+KPX quoteright s -25
+KPX quoteright quoteright -37
+KPX quoteright d -37
+
+KPX r semicolon -25
+KPX r s -10
+KPX r period -125
+KPX r k -18
+KPX r hyphen -75
+KPX r comma -125
+KPX r colon -25
+
+KPX s period -50
+KPX s comma -50
+
+KPX semicolon space -37
+
+KPX space quoteleft -37
+KPX space quotedblleft -37
+KPX space Y -37
+KPX space W -37
+KPX space V -37
+KPX space T -37
+KPX space A -37
+
+KPX v period -75
+KPX v comma -75
+
+KPX w period -75
+KPX w comma -75
+
+KPX y period -75
+KPX y comma -75
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 246 256 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 246 256 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 231 256 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 246 256 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 216 246 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 231 256 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 255 256 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 255 256 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 255 256 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 255 256 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 97 256 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 97 256 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 97 256 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 97 256 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 301 256 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 283 256 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 283 256 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 283 256 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 283 256 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 283 256 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 227 256 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 301 256 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 301 256 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 301 256 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 301 256 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 256 256 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 236 256 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 227 256 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 121 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 121 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 121 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 121 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 121 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 121 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 56 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 56 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 56 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 56 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute 0 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex 0 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis 0 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave 0 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 139 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 84 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 84 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 84 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 84 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 84 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 56 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 139 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 139 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 139 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 139 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 84 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 84 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 65 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/NCS-It+ b/font/font/NCS-It+
new file mode 100644
index 0000000..48d6672
--- /dev/null
+++ b/font/font/NCS-It+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 722 ; N Ccaron ; B 40 -15 716 960 ;
+C -1 ; WX 444 ; N ccaron ; B 2 -15 453 690 ;
+C -1 ; WX 778 ; N Dcaron ; B -33 0 738 960 ;
+C -1 ; WX 744 ; N dcaron ; B 2 -15 794 811 ;
+C -1 ; WX 722 ; N Ecaron ; B -33 0 700 960 ;
+C -1 ; WX 444 ; N ecaron ; B -6 -15 433 690 ;
+C -1 ; WX 667 ; N Lcaron ; B -33 0 644 794 ;
+C -1 ; WX 667 ; N Lacute ; B -33 0 627 960 ;
+C -1 ; WX 466 ; N lcaron ; B 14 -15 501 811 ;
+C -1 ; WX 333 ; N lacute ; B 14 -15 454 960 ;
+C -1 ; WX 815 ; N Ncaron ; B -51 -15 866 960 ;
+C -1 ; WX 611 ; N ncaron ; B 14 -15 562 690 ;
+C -1 ; WX 741 ; N Rcaron ; B -45 -15 692 960 ;
+C -1 ; WX 741 ; N Racute ; B -45 -15 692 960 ;
+C -1 ; WX 444 ; N rcaron ; B 10 0 434 690 ;
+C -1 ; WX 444 ; N racute ; B 10 0 434 690 ;
+C -1 ; WX 685 ; N Tcaron ; B 40 0 725 960 ;
+C -1 ; WX 485 ; N tcaron ; B 24 -15 537 737 ;
+C -1 ; WX 815 ; N Uring ; B 93 -15 867 960 ;
+C -1 ; WX 611 ; N uring ; B 44 -15 556 712 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 338 270 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 75 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 299 270 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 565 74 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 271 270 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 55 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 415 57 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 244 270 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 272 74 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 99 270 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 318 270 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 139 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 281 270 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 323 270 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 55 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 77 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 253 270 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 308 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 312 248 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 139 0 ;
+EndBuildComposites
diff --git a/font/font/NCS-Rm b/font/font/NCS-Rm
new file mode 100644
index 0000000..b9f616c
--- /dev/null
+++ b/font/font/NCS-Rm
@@ -0,0 +1,524 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1991 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Tue May 28 16:31:51 1991
+Comment UniqueID 35025
+Comment VMusage 30420 37312
+FontName NewCenturySchlbk-Roman
+FullName New Century Schoolbook Roman
+FamilyName New Century Schoolbook
+Weight Roman
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -195 -250 1000 965
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.007
+Notice Copyright (c) 1985, 1987, 1989, 1991 Adobe Systems Incorporated. All Rights Reserved.
+EncodingScheme AdobeStandardEncoding
+CapHeight 722
+XHeight 464
+Ascender 737
+Descender -205
+StartCharMetrics 228
+C 32 ; WX 278 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 296 ; N exclam ; B 86 -15 210 737 ;
+C 34 ; WX 389 ; N quotedbl ; B 61 443 328 737 ;
+C 35 ; WX 556 ; N numbersign ; B 28 0 528 690 ;
+C 36 ; WX 556 ; N dollar ; B 45 -138 511 813 ;
+C 37 ; WX 833 ; N percent ; B 43 -15 790 705 ;
+C 38 ; WX 815 ; N ampersand ; B 51 -15 775 737 ;
+C 39 ; WX 204 ; N quoteright ; B 25 443 179 737 ;
+C 40 ; WX 333 ; N parenleft ; B 40 -117 279 745 ;
+C 41 ; WX 333 ; N parenright ; B 54 -117 293 745 ;
+C 42 ; WX 500 ; N asterisk ; B 57 306 443 737 ;
+C 43 ; WX 606 ; N plus ; B 50 0 556 506 ;
+C 44 ; WX 278 ; N comma ; B 62 -185 216 109 ;
+C 45 ; WX 333 ; N hyphen ; B 42 199 291 277 ;
+C 46 ; WX 278 ; N period ; B 77 -15 201 109 ;
+C 47 ; WX 278 ; N slash ; B -32 -15 310 737 ;
+C 48 ; WX 556 ; N zero ; B 42 -15 514 705 ;
+C 49 ; WX 556 ; N one ; B 100 0 496 705 ;
+C 50 ; WX 556 ; N two ; B 35 0 505 705 ;
+C 51 ; WX 556 ; N three ; B 42 -15 498 705 ;
+C 52 ; WX 556 ; N four ; B 28 0 528 705 ;
+C 53 ; WX 556 ; N five ; B 46 -15 502 705 ;
+C 54 ; WX 556 ; N six ; B 41 -15 515 705 ;
+C 55 ; WX 556 ; N seven ; B 59 -15 508 705 ;
+C 56 ; WX 556 ; N eight ; B 42 -15 514 705 ;
+C 57 ; WX 556 ; N nine ; B 41 -15 515 705 ;
+C 58 ; WX 278 ; N colon ; B 77 -15 201 474 ;
+C 59 ; WX 278 ; N semicolon ; B 62 -185 216 474 ;
+C 60 ; WX 606 ; N less ; B 50 -8 556 514 ;
+C 61 ; WX 606 ; N equal ; B 50 117 556 389 ;
+C 62 ; WX 606 ; N greater ; B 50 -8 556 514 ;
+C 63 ; WX 444 ; N question ; B 29 -15 415 737 ;
+C 64 ; WX 737 ; N at ; B -8 -15 744 737 ;
+C 65 ; WX 722 ; N A ; B -8 0 730 737 ;
+C 66 ; WX 722 ; N B ; B 29 0 669 722 ;
+C 67 ; WX 722 ; N C ; B 45 -15 668 737 ;
+C 68 ; WX 778 ; N D ; B 29 0 733 722 ;
+C 69 ; WX 722 ; N E ; B 29 0 663 722 ;
+C 70 ; WX 667 ; N F ; B 29 0 638 722 ;
+C 71 ; WX 778 ; N G ; B 45 -15 775 737 ;
+C 72 ; WX 833 ; N H ; B 29 0 804 722 ;
+C 73 ; WX 407 ; N I ; B 38 0 369 722 ;
+C 74 ; WX 556 ; N J ; B 5 -15 540 722 ;
+C 75 ; WX 778 ; N K ; B 29 0 803 722 ;
+C 76 ; WX 667 ; N L ; B 29 0 644 722 ;
+C 77 ; WX 944 ; N M ; B 29 0 915 722 ;
+C 78 ; WX 815 ; N N ; B 24 -15 791 722 ;
+C 79 ; WX 778 ; N O ; B 45 -15 733 737 ;
+C 80 ; WX 667 ; N P ; B 29 0 650 722 ;
+C 81 ; WX 778 ; N Q ; B 45 -190 748 737 ;
+C 82 ; WX 722 ; N R ; B 29 -15 713 722 ;
+C 83 ; WX 630 ; N S ; B 47 -15 583 737 ;
+C 84 ; WX 667 ; N T ; B 19 0 648 722 ;
+C 85 ; WX 815 ; N U ; B 16 -15 799 722 ;
+C 86 ; WX 722 ; N V ; B -8 -10 730 722 ;
+C 87 ; WX 981 ; N W ; B 5 -10 976 722 ;
+C 88 ; WX 704 ; N X ; B -8 0 712 722 ;
+C 89 ; WX 704 ; N Y ; B -11 0 715 722 ;
+C 90 ; WX 611 ; N Z ; B 24 0 576 722 ;
+C 91 ; WX 333 ; N bracketleft ; B 126 -109 315 737 ;
+C 92 ; WX 606 ; N backslash ; B 132 -15 474 737 ;
+C 93 ; WX 333 ; N bracketright ; B 18 -109 207 737 ;
+C 94 ; WX 606 ; N asciicircum ; B 89 325 517 690 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 204 ; N quoteleft ; B 25 443 179 737 ;
+C 97 ; WX 556 ; N a ; B 44 -15 542 479 ;
+C 98 ; WX 556 ; N b ; B 10 -15 522 737 ;
+C 99 ; WX 444 ; N c ; B 34 -15 426 479 ;
+C 100 ; WX 574 ; N d ; B 34 -15 552 737 ;
+C 101 ; WX 500 ; N e ; B 34 -15 466 479 ;
+C 102 ; WX 333 ; N f ; B 18 0 437 737 ; L i fi ; L l fl ;
+C 103 ; WX 537 ; N g ; B 23 -205 542 494 ;
+C 104 ; WX 611 ; N h ; B 7 0 592 737 ;
+C 105 ; WX 315 ; N i ; B 18 0 286 722 ;
+C 106 ; WX 296 ; N j ; B -86 -205 216 722 ;
+C 107 ; WX 593 ; N k ; B 10 0 589 737 ;
+C 108 ; WX 315 ; N l ; B 18 0 286 737 ;
+C 109 ; WX 889 ; N m ; B 26 0 863 479 ;
+C 110 ; WX 611 ; N n ; B 22 0 589 479 ;
+C 111 ; WX 500 ; N o ; B 34 -15 466 479 ;
+C 112 ; WX 574 ; N p ; B 22 -205 540 479 ;
+C 113 ; WX 556 ; N q ; B 34 -205 552 479 ;
+C 114 ; WX 444 ; N r ; B 18 0 434 479 ;
+C 115 ; WX 463 ; N s ; B 46 -15 417 479 ;
+C 116 ; WX 389 ; N t ; B 18 -15 371 666 ;
+C 117 ; WX 611 ; N u ; B 22 -15 589 464 ;
+C 118 ; WX 537 ; N v ; B -6 -10 515 464 ;
+C 119 ; WX 778 ; N w ; B 1 -10 749 464 ;
+C 120 ; WX 537 ; N x ; B 8 0 529 464 ;
+C 121 ; WX 537 ; N y ; B 4 -205 533 464 ;
+C 122 ; WX 481 ; N z ; B 42 0 439 464 ;
+C 123 ; WX 333 ; N braceleft ; B 54 -109 279 737 ;
+C 124 ; WX 606 ; N bar ; B 267 -250 339 750 ;
+C 125 ; WX 333 ; N braceright ; B 54 -109 279 737 ;
+C 126 ; WX 606 ; N asciitilde ; B 72 184 534 322 ;
+C 161 ; WX 296 ; N exclamdown ; B 86 -205 210 547 ;
+C 162 ; WX 556 ; N cent ; B 74 -141 482 584 ;
+C 163 ; WX 556 ; N sterling ; B 18 -15 538 705 ;
+C 164 ; WX 167 ; N fraction ; B -195 -15 362 705 ;
+C 165 ; WX 556 ; N yen ; B -1 0 557 690 ;
+C 166 ; WX 556 ; N florin ; B 0 -205 538 737 ;
+C 167 ; WX 500 ; N section ; B 55 -147 445 737 ;
+C 168 ; WX 556 ; N currency ; B 26 93 530 597 ;
+C 169 ; WX 204 ; N quotesingle ; B 59 443 145 737 ;
+C 170 ; WX 389 ; N quotedblleft ; B 25 443 364 737 ;
+C 171 ; WX 426 ; N guillemotleft ; B 39 78 387 398 ;
+C 172 ; WX 259 ; N guilsinglleft ; B 39 78 220 398 ;
+C 173 ; WX 259 ; N guilsinglright ; B 39 78 220 398 ;
+C 174 ; WX 611 ; N fi ; B 18 0 582 737 ;
+C 175 ; WX 611 ; N fl ; B 18 0 582 737 ;
+C 177 ; WX 556 ; N endash ; B 0 208 556 268 ;
+C 178 ; WX 500 ; N dagger ; B 42 -147 458 737 ;
+C 179 ; WX 500 ; N daggerdbl ; B 42 -149 458 737 ;
+C 180 ; WX 278 ; N periodcentered ; B 71 238 207 374 ;
+C 182 ; WX 606 ; N paragraph ; B 60 -132 546 722 ;
+C 183 ; WX 606 ; N bullet ; B 122 180 484 542 ;
+C 184 ; WX 204 ; N quotesinglbase ; B 25 -185 179 109 ;
+C 185 ; WX 389 ; N quotedblbase ; B 25 -185 364 109 ;
+C 186 ; WX 389 ; N quotedblright ; B 25 443 364 737 ;
+C 187 ; WX 426 ; N guillemotright ; B 39 78 387 398 ;
+C 188 ; WX 1000 ; N ellipsis ; B 105 -15 895 109 ;
+C 189 ; WX 1000 ; N perthousand ; B 6 -15 994 705 ;
+C 191 ; WX 444 ; N questiondown ; B 29 -205 415 547 ;
+C 193 ; WX 333 ; N grave ; B 17 528 242 699 ;
+C 194 ; WX 333 ; N acute ; B 91 528 316 699 ;
+C 195 ; WX 333 ; N circumflex ; B 10 528 323 695 ;
+C 196 ; WX 333 ; N tilde ; B 1 553 332 655 ;
+C 197 ; WX 333 ; N macron ; B 10 568 323 623 ;
+C 198 ; WX 333 ; N breve ; B 25 528 308 685 ;
+C 199 ; WX 333 ; N dotaccent ; B 116 543 218 645 ;
+C 200 ; WX 333 ; N dieresis ; B 16 543 317 645 ;
+C 202 ; WX 333 ; N ring ; B 66 522 266 722 ;
+C 203 ; WX 333 ; N cedilla ; B 29 -215 237 0 ;
+C 205 ; WX 333 ; N hungarumlaut ; B -9 528 416 699 ;
+C 206 ; WX 333 ; N ogonek ; B 68 -215 254 0 ;
+C 207 ; WX 333 ; N caron ; B 10 528 323 695 ;
+C 208 ; WX 1000 ; N emdash ; B 0 208 1000 268 ;
+C 225 ; WX 1000 ; N AE ; B 0 0 962 722 ;
+C 227 ; WX 334 ; N ordfeminine ; B -4 407 338 705 ;
+C 232 ; WX 667 ; N Lslash ; B 29 0 644 722 ;
+C 233 ; WX 778 ; N Oslash ; B 45 -56 733 778 ;
+C 234 ; WX 1000 ; N OE ; B 21 0 979 722 ;
+C 235 ; WX 300 ; N ordmasculine ; B 4 407 296 705 ;
+C 241 ; WX 796 ; N ae ; B 34 -15 762 479 ;
+C 245 ; WX 315 ; N dotlessi ; B 18 0 286 464 ;
+C 248 ; WX 315 ; N lslash ; B 18 0 286 737 ;
+C 249 ; WX 500 ; N oslash ; B 34 -97 466 561 ;
+C 250 ; WX 833 ; N oe ; B 34 -15 799 479 ;
+C 251 ; WX 574 ; N germandbls ; B 30 -15 537 737 ;
+C -1 ; WX 500 ; N ecircumflex ; B 34 -15 466 695 ;
+C -1 ; WX 500 ; N edieresis ; B 34 -15 466 645 ;
+C -1 ; WX 556 ; N aacute ; B 44 -15 542 699 ;
+C -1 ; WX 737 ; N registered ; B -8 -15 744 737 ;
+C -1 ; WX 315 ; N icircumflex ; B 1 0 314 695 ;
+C -1 ; WX 611 ; N udieresis ; B 22 -15 589 645 ;
+C -1 ; WX 500 ; N ograve ; B 34 -15 466 699 ;
+C -1 ; WX 611 ; N uacute ; B 22 -15 589 699 ;
+C -1 ; WX 611 ; N ucircumflex ; B 22 -15 589 695 ;
+C -1 ; WX 722 ; N Aacute ; B -8 0 730 937 ;
+C -1 ; WX 315 ; N igrave ; B 8 0 286 699 ;
+C -1 ; WX 407 ; N Icircumflex ; B 38 0 369 933 ;
+C -1 ; WX 444 ; N ccedilla ; B 34 -215 426 479 ;
+C -1 ; WX 556 ; N adieresis ; B 44 -15 542 645 ;
+C -1 ; WX 722 ; N Ecircumflex ; B 29 0 663 933 ;
+C -1 ; WX 463 ; N scaron ; B 46 -15 417 695 ;
+C -1 ; WX 574 ; N thorn ; B 22 -205 540 737 ;
+C -1 ; WX 1000 ; N trademark ; B 32 318 968 722 ;
+C -1 ; WX 500 ; N egrave ; B 34 -15 466 699 ;
+C -1 ; WX 333 ; N threesuperior ; B 18 273 315 705 ;
+C -1 ; WX 481 ; N zcaron ; B 42 0 439 695 ;
+C -1 ; WX 556 ; N atilde ; B 44 -15 542 655 ;
+C -1 ; WX 556 ; N aring ; B 44 -15 542 732 ;
+C -1 ; WX 500 ; N ocircumflex ; B 34 -15 466 695 ;
+C -1 ; WX 722 ; N Edieresis ; B 29 0 663 883 ;
+C -1 ; WX 834 ; N threequarters ; B 28 -15 795 705 ;
+C -1 ; WX 537 ; N ydieresis ; B 4 -205 533 645 ;
+C -1 ; WX 537 ; N yacute ; B 4 -205 533 699 ;
+C -1 ; WX 315 ; N iacute ; B 18 0 307 699 ;
+C -1 ; WX 722 ; N Acircumflex ; B -8 0 730 933 ;
+C -1 ; WX 815 ; N Uacute ; B 16 -15 799 937 ;
+C -1 ; WX 500 ; N eacute ; B 34 -15 466 699 ;
+C -1 ; WX 778 ; N Ograve ; B 45 -15 733 937 ;
+C -1 ; WX 556 ; N agrave ; B 44 -15 542 699 ;
+C -1 ; WX 815 ; N Udieresis ; B 16 -15 799 883 ;
+C -1 ; WX 556 ; N acircumflex ; B 44 -15 542 695 ;
+C -1 ; WX 407 ; N Igrave ; B 38 0 369 937 ;
+C -1 ; WX 333 ; N twosuperior ; B 14 282 319 705 ;
+C -1 ; WX 815 ; N Ugrave ; B 16 -15 799 937 ;
+C -1 ; WX 834 ; N onequarter ; B 39 -15 795 705 ;
+C -1 ; WX 815 ; N Ucircumflex ; B 16 -15 799 933 ;
+C -1 ; WX 630 ; N Scaron ; B 47 -15 583 933 ;
+C -1 ; WX 407 ; N Idieresis ; B 38 0 369 883 ;
+C -1 ; WX 315 ; N idieresis ; B 7 0 308 645 ;
+C -1 ; WX 722 ; N Egrave ; B 29 0 663 937 ;
+C -1 ; WX 778 ; N Oacute ; B 45 -15 733 937 ;
+C -1 ; WX 606 ; N divide ; B 50 -22 556 528 ;
+C -1 ; WX 722 ; N Atilde ; B -8 0 730 893 ;
+C -1 ; WX 722 ; N Aring ; B -8 0 730 965 ;
+C -1 ; WX 778 ; N Odieresis ; B 45 -15 733 883 ;
+C -1 ; WX 722 ; N Adieresis ; B -8 0 730 883 ;
+C -1 ; WX 815 ; N Ntilde ; B 24 -15 791 893 ;
+C -1 ; WX 611 ; N Zcaron ; B 24 0 576 933 ;
+C -1 ; WX 667 ; N Thorn ; B 29 0 650 722 ;
+C -1 ; WX 407 ; N Iacute ; B 38 0 369 937 ;
+C -1 ; WX 606 ; N plusminus ; B 50 0 556 506 ;
+C -1 ; WX 606 ; N multiply ; B 74 24 532 482 ;
+C -1 ; WX 722 ; N Eacute ; B 29 0 663 937 ;
+C -1 ; WX 704 ; N Ydieresis ; B -11 0 715 883 ;
+C -1 ; WX 333 ; N onesuperior ; B 39 282 294 705 ;
+C -1 ; WX 611 ; N ugrave ; B 22 -15 589 699 ;
+C -1 ; WX 606 ; N logicalnot ; B 50 108 556 389 ;
+C -1 ; WX 611 ; N ntilde ; B 22 0 589 655 ;
+C -1 ; WX 778 ; N Otilde ; B 45 -15 733 893 ;
+C -1 ; WX 500 ; N otilde ; B 34 -15 466 655 ;
+C -1 ; WX 722 ; N Ccedilla ; B 45 -215 668 737 ;
+C -1 ; WX 722 ; N Agrave ; B -8 0 730 937 ;
+C -1 ; WX 834 ; N onehalf ; B 39 -15 820 705 ;
+C -1 ; WX 778 ; N Eth ; B 29 0 733 722 ;
+C -1 ; WX 400 ; N degree ; B 57 419 343 705 ;
+C -1 ; WX 704 ; N Yacute ; B -11 0 715 937 ;
+C -1 ; WX 778 ; N Ocircumflex ; B 45 -15 733 933 ;
+C -1 ; WX 500 ; N oacute ; B 34 -15 466 699 ;
+C -1 ; WX 611 ; N mu ; B 22 -205 589 464 ;
+C -1 ; WX 606 ; N minus ; B 50 217 556 289 ;
+C -1 ; WX 500 ; N eth ; B 34 -15 466 752 ;
+C -1 ; WX 500 ; N odieresis ; B 34 -15 466 645 ;
+C -1 ; WX 737 ; N copyright ; B -8 -15 744 737 ;
+C -1 ; WX 606 ; N brokenbar ; B 267 -175 339 675 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 169
+
+KPX A y -37
+KPX A w -25
+KPX A v -37
+KPX A quoteright -74
+KPX A quotedblright -74
+KPX A Y -75
+KPX A W -50
+KPX A V -75
+KPX A U -30
+KPX A T -18
+
+KPX B period -37
+KPX B comma -37
+KPX B A -18
+
+KPX C period -37
+KPX C comma -37
+KPX C A -18
+
+KPX D period -37
+KPX D comma -37
+KPX D Y -18
+KPX D V -18
+
+KPX F r -10
+KPX F period -125
+KPX F o -55
+KPX F i -10
+KPX F e -55
+KPX F comma -125
+KPX F a -65
+KPX F A -50
+
+KPX G period -37
+KPX G comma -37
+
+KPX J u -25
+KPX J period -74
+KPX J o -25
+KPX J e -25
+KPX J comma -74
+KPX J a -25
+KPX J A -18
+
+KPX K y -25
+KPX K o 10
+KPX K e 10
+
+KPX L y -25
+KPX L quoteright -100
+KPX L quotedblright -100
+KPX L Y -74
+KPX L W -74
+KPX L V -91
+KPX L T -75
+
+KPX N period -55
+KPX N comma -55
+
+KPX O period -37
+KPX O comma -37
+KPX O Y -18
+KPX O V -18
+KPX O T 10
+
+KPX P period -125
+KPX P o -37
+KPX P e -37
+KPX P comma -125
+KPX P a -37
+KPX P A -55
+
+KPX Q period -25
+KPX Q comma -25
+
+KPX S period -37
+KPX S comma -37
+
+KPX T semicolon -37
+KPX T period -125
+KPX T o -55
+KPX T hyphen -100
+KPX T e -55
+KPX T comma -125
+KPX T colon -37
+KPX T a -55
+KPX T O 10
+KPX T A -18
+
+KPX U period -100
+KPX U comma -100
+KPX U A -30
+
+KPX V u -75
+KPX V semicolon -75
+KPX V period -125
+KPX V o -75
+KPX V i -18
+KPX V hyphen -100
+KPX V e -75
+KPX V comma -125
+KPX V colon -75
+KPX V a -85
+KPX V O -18
+KPX V A -74
+
+KPX W y -55
+KPX W u -55
+KPX W semicolon -100
+KPX W period -125
+KPX W o -60
+KPX W i -18
+KPX W hyphen -100
+KPX W e -60
+KPX W comma -125
+KPX W colon -100
+KPX W a -75
+KPX W A -50
+
+KPX Y u -91
+KPX Y semicolon -75
+KPX Y period -100
+KPX Y o -100
+KPX Y i -18
+KPX Y hyphen -125
+KPX Y e -100
+KPX Y comma -100
+KPX Y colon -75
+KPX Y a -100
+KPX Y O -18
+KPX Y A -75
+
+KPX a y -10
+KPX a w -10
+KPX a v -10
+
+KPX b period -18
+KPX b comma -18
+
+KPX c period -18
+KPX c l -7
+KPX c k -7
+KPX c h -7
+KPX c comma -18
+
+KPX colon space -37
+
+KPX comma space -37
+KPX comma quoteright -37
+KPX comma quotedblright -37
+
+KPX e period -18
+KPX e comma -18
+
+KPX f quoteright 100
+KPX f quotedblright 100
+KPX f period -37
+KPX f comma -37
+
+KPX g period -25
+KPX g comma -25
+
+KPX o period -18
+KPX o comma -18
+
+KPX p period -18
+KPX p comma -18
+
+KPX period space -37
+KPX period quoteright -37
+KPX period quotedblright -37
+
+KPX quotedblleft A -74
+
+KPX quotedblright space -37
+
+KPX quoteleft quoteleft -25
+KPX quoteleft A -74
+
+KPX quoteright s -25
+KPX quoteright quoteright -25
+KPX quoteright d -37
+
+KPX r period -100
+KPX r hyphen -37
+KPX r comma -100
+
+KPX s period -25
+KPX s comma -25
+
+KPX semicolon space -37
+
+KPX space quoteleft -37
+KPX space quotedblleft -37
+KPX space Y -37
+KPX space W -37
+KPX space V -37
+KPX space T -37
+KPX space A -37
+
+KPX v period -125
+KPX v comma -125
+
+KPX w period -125
+KPX w comma -125
+KPX w a -18
+
+KPX y period -125
+KPX y comma -125
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 195 238 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 195 238 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 195 238 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 195 238 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 195 243 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 195 238 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 195 238 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 195 238 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 195 238 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 195 238 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 37 238 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 37 238 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 37 238 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 37 238 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 241 238 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 223 238 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 223 238 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 223 238 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 223 238 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 223 238 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 149 238 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 241 238 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 241 238 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 241 238 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 241 238 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 216 238 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 186 238 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 139 238 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 112 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 112 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 112 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 112 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 112 10 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 112 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 84 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 84 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 84 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 84 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -9 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -9 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -9 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -9 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 139 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 84 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 84 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 84 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 84 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 84 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 65 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 139 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 139 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 139 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 139 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 102 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 102 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 74 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/NCS-Rm+ b/font/font/NCS-Rm+
new file mode 100644
index 0000000..257ffff
--- /dev/null
+++ b/font/font/NCS-Rm+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 722 ; N Ccaron ; B 45 -15 668 955 ;
+C -1 ; WX 444 ; N ccaron ; B 34 -15 426 695 ;
+C -1 ; WX 778 ; N Dcaron ; B 29 0 733 955 ;
+C -1 ; WX 682 ; N dcaron ; B 34 -15 721 811 ;
+C -1 ; WX 722 ; N Ecaron ; B 29 0 663 955 ;
+C -1 ; WX 500 ; N ecaron ; B 34 -15 466 695 ;
+C -1 ; WX 667 ; N Lcaron ; B 29 0 644 794 ;
+C -1 ; WX 667 ; N Lacute ; B 29 0 644 959 ;
+C -1 ; WX 423 ; N lcaron ; B 18 0 455 811 ;
+C -1 ; WX 315 ; N lacute ; B 18 0 330 959 ;
+C -1 ; WX 815 ; N Ncaron ; B 24 -15 791 955 ;
+C -1 ; WX 611 ; N ncaron ; B 22 0 589 695 ;
+C -1 ; WX 722 ; N Rcaron ; B 29 -15 713 955 ;
+C -1 ; WX 722 ; N Racute ; B 29 -15 713 959 ;
+C -1 ; WX 444 ; N rcaron ; B 18 0 434 695 ;
+C -1 ; WX 444 ; N racute ; B 18 0 434 699 ;
+C -1 ; WX 667 ; N Tcaron ; B 19 0 648 955 ;
+C -1 ; WX 497 ; N tcaron ; B 18 -15 540 737 ;
+C -1 ; WX 815 ; N Uring ; B 16 -15 799 955 ;
+C -1 ; WX 611 ; N uring ; B 22 -15 589 722 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 256 260 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 75 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 222 260 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 542 74 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 194 260 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 83 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 359 57 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 167 260 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 276 74 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 14 260 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 241 260 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 139 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 194 260 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 237 260 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 55 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 78 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 167 260 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 361 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 241 233 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 139 0 ;
+EndBuildComposites
diff --git a/font/font/Pa-Bd b/font/font/Pa-Bd
new file mode 100644
index 0000000..de7698d
--- /dev/null
+++ b/font/font/Pa-Bd
@@ -0,0 +1,434 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Mon Jul 2 22:26:30 1990
+Comment UniqueID 31793
+Comment VMusage 36031 46923
+FontName Palatino-Bold
+FullName Palatino Bold
+FamilyName Palatino
+Weight Bold
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -152 -266 1000 924
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.005
+Notice Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.Palatino is a trademark of Linotype AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 681
+XHeight 471
+Ascender 720
+Descender -258
+StartCharMetrics 228
+C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 278 ; N exclam ; B 63 -12 219 688 ;
+C 34 ; WX 402 ; N quotedbl ; B 22 376 380 695 ;
+C 35 ; WX 500 ; N numbersign ; B 4 0 496 673 ;
+C 36 ; WX 500 ; N dollar ; B 28 -114 472 721 ;
+C 37 ; WX 889 ; N percent ; B 61 -9 828 714 ;
+C 38 ; WX 833 ; N ampersand ; B 52 -17 813 684 ;
+C 39 ; WX 278 ; N quoteright ; B 29 405 249 695 ;
+C 40 ; WX 333 ; N parenleft ; B 65 -104 305 723 ;
+C 41 ; WX 333 ; N parenright ; B 28 -104 268 723 ;
+C 42 ; WX 444 ; N asterisk ; B 44 332 399 695 ;
+C 43 ; WX 606 ; N plus ; B 51 0 555 505 ;
+C 44 ; WX 250 ; N comma ; B -6 -166 227 141 ;
+C 45 ; WX 333 ; N hyphen ; B 16 195 317 305 ;
+C 46 ; WX 250 ; N period ; B 47 -12 203 144 ;
+C 47 ; WX 296 ; N slash ; B -9 -17 305 720 ;
+C 48 ; WX 500 ; N zero ; B 33 -17 468 660 ;
+C 49 ; WX 500 ; N one ; B 35 -3 455 670 ;
+C 50 ; WX 500 ; N two ; B 25 -3 472 660 ;
+C 51 ; WX 500 ; N three ; B 22 -17 458 660 ;
+C 52 ; WX 500 ; N four ; B 12 -3 473 672 ;
+C 53 ; WX 500 ; N five ; B 42 -17 472 656 ;
+C 54 ; WX 500 ; N six ; B 37 -17 469 660 ;
+C 55 ; WX 500 ; N seven ; B 46 -3 493 656 ;
+C 56 ; WX 500 ; N eight ; B 34 -17 467 660 ;
+C 57 ; WX 500 ; N nine ; B 31 -17 463 660 ;
+C 58 ; WX 250 ; N colon ; B 47 -12 203 454 ;
+C 59 ; WX 250 ; N semicolon ; B -6 -166 227 454 ;
+C 60 ; WX 606 ; N less ; B 49 -15 558 519 ;
+C 61 ; WX 606 ; N equal ; B 51 114 555 396 ;
+C 62 ; WX 606 ; N greater ; B 49 -15 558 519 ;
+C 63 ; WX 444 ; N question ; B 43 -12 411 687 ;
+C 64 ; WX 747 ; N at ; B 42 -12 704 681 ;
+C 65 ; WX 778 ; N A ; B 24 -3 757 686 ;
+C 66 ; WX 667 ; N B ; B 39 -3 611 681 ;
+C 67 ; WX 722 ; N C ; B 44 -17 695 695 ;
+C 68 ; WX 833 ; N D ; B 35 -3 786 681 ;
+C 69 ; WX 611 ; N E ; B 39 -4 577 681 ;
+C 70 ; WX 556 ; N F ; B 28 -3 539 681 ;
+C 71 ; WX 833 ; N G ; B 47 -17 776 695 ;
+C 72 ; WX 833 ; N H ; B 36 -3 796 681 ;
+C 73 ; WX 389 ; N I ; B 39 -3 350 681 ;
+C 74 ; WX 389 ; N J ; B -11 -213 350 681 ;
+C 75 ; WX 778 ; N K ; B 39 -3 763 681 ;
+C 76 ; WX 611 ; N L ; B 39 -4 577 681 ;
+C 77 ; WX 1000 ; N M ; B 32 -10 968 681 ;
+C 78 ; WX 833 ; N N ; B 35 -16 798 681 ;
+C 79 ; WX 833 ; N O ; B 47 -17 787 695 ;
+C 80 ; WX 611 ; N P ; B 39 -3 594 681 ;
+C 81 ; WX 833 ; N Q ; B 47 -184 787 695 ;
+C 82 ; WX 722 ; N R ; B 39 -3 708 681 ;
+C 83 ; WX 611 ; N S ; B 57 -17 559 695 ;
+C 84 ; WX 667 ; N T ; B 17 -3 650 681 ;
+C 85 ; WX 778 ; N U ; B 26 -17 760 681 ;
+C 86 ; WX 778 ; N V ; B 20 -3 763 681 ;
+C 87 ; WX 1000 ; N W ; B 17 -3 988 686 ;
+C 88 ; WX 667 ; N X ; B 17 -3 650 695 ;
+C 89 ; WX 667 ; N Y ; B 15 -3 660 695 ;
+C 90 ; WX 667 ; N Z ; B 24 -3 627 681 ;
+C 91 ; WX 333 ; N bracketleft ; B 73 -104 291 720 ;
+C 92 ; WX 606 ; N backslash ; B 72 0 534 720 ;
+C 93 ; WX 333 ; N bracketright ; B 42 -104 260 720 ;
+C 94 ; WX 606 ; N asciicircum ; B 52 275 554 678 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 278 ; N quoteleft ; B 29 405 249 695 ;
+C 97 ; WX 500 ; N a ; B 40 -17 478 471 ;
+C 98 ; WX 611 ; N b ; B 10 -17 556 720 ;
+C 99 ; WX 444 ; N c ; B 37 -17 414 471 ;
+C 100 ; WX 611 ; N d ; B 42 -17 577 720 ;
+C 101 ; WX 500 ; N e ; B 42 -17 461 471 ;
+C 102 ; WX 389 ; N f ; B 34 -3 381 720 ; L i fi ; L l fl ;
+C 103 ; WX 556 ; N g ; B 26 -266 535 471 ;
+C 104 ; WX 611 ; N h ; B 24 -3 587 720 ;
+C 105 ; WX 333 ; N i ; B 34 -3 298 706 ;
+C 106 ; WX 333 ; N j ; B 3 -266 241 706 ;
+C 107 ; WX 611 ; N k ; B 21 -3 597 720 ;
+C 108 ; WX 333 ; N l ; B 24 -3 296 720 ;
+C 109 ; WX 889 ; N m ; B 24 -3 864 471 ;
+C 110 ; WX 611 ; N n ; B 24 -3 587 471 ;
+C 111 ; WX 556 ; N o ; B 40 -17 517 471 ;
+C 112 ; WX 611 ; N p ; B 29 -258 567 471 ;
+C 113 ; WX 611 ; N q ; B 52 -258 589 471 ;
+C 114 ; WX 389 ; N r ; B 30 -3 389 471 ;
+C 115 ; WX 444 ; N s ; B 39 -17 405 471 ;
+C 116 ; WX 333 ; N t ; B 22 -17 324 632 ;
+C 117 ; WX 611 ; N u ; B 25 -17 583 471 ;
+C 118 ; WX 556 ; N v ; B 11 -3 545 459 ;
+C 119 ; WX 833 ; N w ; B 13 -3 820 471 ;
+C 120 ; WX 500 ; N x ; B 20 -3 483 471 ;
+C 121 ; WX 556 ; N y ; B 10 -266 546 459 ;
+C 122 ; WX 500 ; N z ; B 16 -3 464 459 ;
+C 123 ; WX 310 ; N braceleft ; B 5 -117 288 725 ;
+C 124 ; WX 606 ; N bar ; B 260 0 346 720 ;
+C 125 ; WX 310 ; N braceright ; B 22 -117 305 725 ;
+C 126 ; WX 606 ; N asciitilde ; B 51 155 555 342 ;
+C 161 ; WX 278 ; N exclamdown ; B 59 -227 215 471 ;
+C 162 ; WX 500 ; N cent ; B 73 -106 450 554 ;
+C 163 ; WX 500 ; N sterling ; B -2 -19 501 676 ;
+C 164 ; WX 167 ; N fraction ; B -152 0 320 660 ;
+C 165 ; WX 500 ; N yen ; B 17 -3 483 695 ;
+C 166 ; WX 500 ; N florin ; B 11 -242 490 703 ;
+C 167 ; WX 500 ; N section ; B 30 -217 471 695 ;
+C 168 ; WX 500 ; N currency ; B 32 96 468 533 ;
+C 169 ; WX 227 ; N quotesingle ; B 45 376 181 695 ;
+C 170 ; WX 500 ; N quotedblleft ; B 34 405 466 695 ;
+C 171 ; WX 500 ; N guillemotleft ; B 36 44 463 438 ;
+C 172 ; WX 389 ; N guilsinglleft ; B 82 44 307 438 ;
+C 173 ; WX 389 ; N guilsinglright ; B 82 44 307 438 ;
+C 174 ; WX 611 ; N fi ; B 10 -3 595 720 ;
+C 175 ; WX 611 ; N fl ; B 17 -3 593 720 ;
+C 177 ; WX 500 ; N endash ; B 0 208 500 291 ;
+C 178 ; WX 500 ; N dagger ; B 29 -6 472 682 ;
+C 179 ; WX 500 ; N daggerdbl ; B 32 -245 468 682 ;
+C 180 ; WX 250 ; N periodcentered ; B 47 179 203 335 ;
+C 182 ; WX 641 ; N paragraph ; B 19 -161 599 683 ;
+C 183 ; WX 606 ; N bullet ; B 131 172 475 516 ;
+C 184 ; WX 333 ; N quotesinglbase ; B 56 -160 276 130 ;
+C 185 ; WX 500 ; N quotedblbase ; B 34 -160 466 130 ;
+C 186 ; WX 500 ; N quotedblright ; B 34 405 466 695 ;
+C 187 ; WX 500 ; N guillemotright ; B 37 44 464 438 ;
+C 188 ; WX 1000 ; N ellipsis ; B 89 -12 911 144 ;
+C 189 ; WX 1000 ; N perthousand ; B 33 -9 982 724 ;
+C 191 ; WX 444 ; N questiondown ; B 33 -231 401 471 ;
+C 193 ; WX 333 ; N grave ; B 18 506 256 691 ;
+C 194 ; WX 333 ; N acute ; B 78 506 316 691 ;
+C 195 ; WX 333 ; N circumflex ; B -2 506 335 681 ;
+C 196 ; WX 333 ; N tilde ; B -16 535 349 661 ;
+C 197 ; WX 333 ; N macron ; B 1 538 332 609 ;
+C 198 ; WX 333 ; N breve ; B 15 506 318 669 ;
+C 199 ; WX 333 ; N dotaccent ; B 100 537 234 671 ;
+C 200 ; WX 333 ; N dieresis ; B -8 537 341 671 ;
+C 202 ; WX 333 ; N ring ; B 67 500 267 700 ;
+C 203 ; WX 333 ; N cedilla ; B 73 -225 300 -7 ;
+C 205 ; WX 333 ; N hungarumlaut ; B -56 506 390 691 ;
+C 206 ; WX 333 ; N ogonek ; B 60 -246 274 -17 ;
+C 207 ; WX 333 ; N caron ; B -2 510 335 685 ;
+C 208 ; WX 1000 ; N emdash ; B 0 208 1000 291 ;
+C 225 ; WX 1000 ; N AE ; B 12 -4 954 681 ;
+C 227 ; WX 438 ; N ordfeminine ; B 77 367 361 660 ;
+C 232 ; WX 611 ; N Lslash ; B 16 -4 577 681 ;
+C 233 ; WX 833 ; N Oslash ; B 32 -20 808 698 ;
+C 234 ; WX 1000 ; N OE ; B 43 -17 985 695 ;
+C 235 ; WX 488 ; N ordmasculine ; B 89 367 399 660 ;
+C 241 ; WX 778 ; N ae ; B 46 -17 731 471 ;
+C 245 ; WX 333 ; N dotlessi ; B 34 -3 298 471 ;
+C 248 ; WX 333 ; N lslash ; B -4 -3 334 720 ;
+C 249 ; WX 556 ; N oslash ; B 23 -18 534 471 ;
+C 250 ; WX 833 ; N oe ; B 48 -17 799 471 ;
+C 251 ; WX 611 ; N germandbls ; B 30 -17 565 720 ;
+C -1 ; WX 667 ; N Zcaron ; B 24 -3 627 909 ;
+C -1 ; WX 444 ; N ccedilla ; B 37 -225 414 471 ;
+C -1 ; WX 556 ; N ydieresis ; B 10 -266 546 691 ;
+C -1 ; WX 500 ; N atilde ; B 40 -17 478 673 ;
+C -1 ; WX 333 ; N icircumflex ; B -2 -3 335 701 ;
+C -1 ; WX 300 ; N threesuperior ; B 9 261 292 667 ;
+C -1 ; WX 500 ; N ecircumflex ; B 42 -17 461 701 ;
+C -1 ; WX 611 ; N thorn ; B 17 -258 563 720 ;
+C -1 ; WX 500 ; N egrave ; B 42 -17 461 711 ;
+C -1 ; WX 300 ; N twosuperior ; B 5 261 295 660 ;
+C -1 ; WX 500 ; N eacute ; B 42 -17 461 711 ;
+C -1 ; WX 556 ; N otilde ; B 40 -17 517 673 ;
+C -1 ; WX 778 ; N Aacute ; B 24 -3 757 915 ;
+C -1 ; WX 556 ; N ocircumflex ; B 40 -17 517 701 ;
+C -1 ; WX 556 ; N yacute ; B 10 -266 546 711 ;
+C -1 ; WX 611 ; N udieresis ; B 25 -17 583 691 ;
+C -1 ; WX 750 ; N threequarters ; B 15 -2 735 667 ;
+C -1 ; WX 500 ; N acircumflex ; B 40 -17 478 701 ;
+C -1 ; WX 833 ; N Eth ; B 10 -3 786 681 ;
+C -1 ; WX 500 ; N edieresis ; B 42 -17 461 691 ;
+C -1 ; WX 611 ; N ugrave ; B 25 -17 583 711 ;
+C -1 ; WX 998 ; N trademark ; B 38 274 961 678 ;
+C -1 ; WX 556 ; N ograve ; B 40 -17 517 711 ;
+C -1 ; WX 444 ; N scaron ; B 39 -17 405 693 ;
+C -1 ; WX 389 ; N Idieresis ; B 20 -3 369 895 ;
+C -1 ; WX 611 ; N uacute ; B 25 -17 583 711 ;
+C -1 ; WX 500 ; N agrave ; B 40 -17 478 711 ;
+C -1 ; WX 611 ; N ntilde ; B 24 -3 587 673 ;
+C -1 ; WX 500 ; N aring ; B 40 -17 478 700 ;
+C -1 ; WX 500 ; N zcaron ; B 16 -3 464 693 ;
+C -1 ; WX 389 ; N Icircumflex ; B 26 -3 363 905 ;
+C -1 ; WX 833 ; N Ntilde ; B 35 -16 798 885 ;
+C -1 ; WX 611 ; N ucircumflex ; B 25 -17 583 701 ;
+C -1 ; WX 611 ; N Ecircumflex ; B 39 -4 577 905 ;
+C -1 ; WX 389 ; N Iacute ; B 39 -3 350 915 ;
+C -1 ; WX 722 ; N Ccedilla ; B 44 -225 695 695 ;
+C -1 ; WX 833 ; N Odieresis ; B 47 -17 787 895 ;
+C -1 ; WX 611 ; N Scaron ; B 57 -17 559 909 ;
+C -1 ; WX 611 ; N Edieresis ; B 39 -4 577 895 ;
+C -1 ; WX 389 ; N Igrave ; B 39 -3 350 915 ;
+C -1 ; WX 500 ; N adieresis ; B 40 -17 478 691 ;
+C -1 ; WX 833 ; N Ograve ; B 47 -17 787 915 ;
+C -1 ; WX 611 ; N Egrave ; B 39 -4 577 915 ;
+C -1 ; WX 667 ; N Ydieresis ; B 15 -3 660 895 ;
+C -1 ; WX 747 ; N registered ; B 26 -17 720 695 ;
+C -1 ; WX 833 ; N Otilde ; B 47 -17 787 885 ;
+C -1 ; WX 750 ; N onequarter ; B 19 -2 735 665 ;
+C -1 ; WX 778 ; N Ugrave ; B 26 -17 760 915 ;
+C -1 ; WX 778 ; N Ucircumflex ; B 26 -17 760 905 ;
+C -1 ; WX 611 ; N Thorn ; B 39 -3 574 681 ;
+C -1 ; WX 606 ; N divide ; B 51 0 555 510 ;
+C -1 ; WX 778 ; N Atilde ; B 24 -3 757 885 ;
+C -1 ; WX 778 ; N Uacute ; B 26 -17 760 915 ;
+C -1 ; WX 833 ; N Ocircumflex ; B 47 -17 787 905 ;
+C -1 ; WX 606 ; N logicalnot ; B 51 114 555 396 ;
+C -1 ; WX 778 ; N Aring ; B 24 -3 757 924 ;
+C -1 ; WX 333 ; N idieresis ; B -8 -3 341 691 ;
+C -1 ; WX 333 ; N iacute ; B 34 -3 316 711 ;
+C -1 ; WX 500 ; N aacute ; B 40 -17 478 711 ;
+C -1 ; WX 606 ; N plusminus ; B 51 0 555 505 ;
+C -1 ; WX 606 ; N multiply ; B 72 21 534 483 ;
+C -1 ; WX 778 ; N Udieresis ; B 26 -17 760 895 ;
+C -1 ; WX 606 ; N minus ; B 51 212 555 298 ;
+C -1 ; WX 300 ; N onesuperior ; B 14 261 287 665 ;
+C -1 ; WX 611 ; N Eacute ; B 39 -4 577 915 ;
+C -1 ; WX 778 ; N Acircumflex ; B 24 -3 757 905 ;
+C -1 ; WX 747 ; N copyright ; B 26 -17 720 695 ;
+C -1 ; WX 778 ; N Agrave ; B 24 -3 757 915 ;
+C -1 ; WX 556 ; N odieresis ; B 40 -17 517 691 ;
+C -1 ; WX 556 ; N oacute ; B 40 -17 517 711 ;
+C -1 ; WX 400 ; N degree ; B 50 360 350 660 ;
+C -1 ; WX 333 ; N igrave ; B 18 -3 298 711 ;
+C -1 ; WX 611 ; N mu ; B 25 -225 583 471 ;
+C -1 ; WX 833 ; N Oacute ; B 47 -17 787 915 ;
+C -1 ; WX 556 ; N eth ; B 40 -17 517 720 ;
+C -1 ; WX 778 ; N Adieresis ; B 24 -3 757 895 ;
+C -1 ; WX 667 ; N Yacute ; B 15 -3 660 915 ;
+C -1 ; WX 606 ; N brokenbar ; B 260 0 346 720 ;
+C -1 ; WX 750 ; N onehalf ; B 9 -2 745 665 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 101
+
+KPX A y -70
+KPX A w -70
+KPX A v -70
+KPX A space -18
+KPX A quoteright -92
+KPX A Y -111
+KPX A W -90
+KPX A V -129
+KPX A T -92
+
+KPX F period -111
+KPX F comma -111
+KPX F A -55
+
+KPX L y -74
+KPX L space -18
+KPX L quoteright -74
+KPX L Y -92
+KPX L W -92
+KPX L V -92
+KPX L T -74
+
+KPX P period -129
+KPX P comma -129
+KPX P A -74
+
+KPX R y -30
+KPX R Y -55
+KPX R W -37
+KPX R V -74
+KPX R T -55
+
+KPX T y -90
+KPX T w -90
+KPX T u -129
+KPX T semicolon -74
+KPX T s -111
+KPX T r -111
+KPX T period -92
+KPX T o -111
+KPX T i -55
+KPX T hyphen -92
+KPX T e -111
+KPX T comma -92
+KPX T colon -74
+KPX T c -129
+KPX T a -111
+KPX T A -92
+
+KPX V y -90
+KPX V u -92
+KPX V semicolon -74
+KPX V r -111
+KPX V period -129
+KPX V o -111
+KPX V i -55
+KPX V hyphen -92
+KPX V e -111
+KPX V comma -129
+KPX V colon -74
+KPX V a -111
+KPX V A -129
+
+KPX W y -74
+KPX W u -74
+KPX W semicolon -37
+KPX W r -74
+KPX W period -37
+KPX W o -74
+KPX W i -37
+KPX W hyphen -37
+KPX W e -74
+KPX W comma -92
+KPX W colon -37
+KPX W a -74
+KPX W A -90
+
+KPX Y v -74
+KPX Y u -74
+KPX Y semicolon -55
+KPX Y q -92
+KPX Y period -74
+KPX Y p -74
+KPX Y o -74
+KPX Y i -55
+KPX Y hyphen -74
+KPX Y e -74
+KPX Y comma -74
+KPX Y colon -55
+KPX Y a -74
+KPX Y A -55
+
+KPX f quoteright 37
+KPX f f -18
+
+KPX one one -37
+
+KPX quoteleft quoteleft -55
+
+KPX quoteright t -18
+KPX quoteright space -55
+KPX quoteright s -55
+KPX quoteright quoteright -55
+
+KPX r quoteright 55
+KPX r period -55
+KPX r hyphen -18
+KPX r comma -55
+
+KPX v period -111
+KPX v comma -111
+
+KPX w period -92
+KPX w comma -92
+
+KPX y period -92
+KPX y comma -92
+EndKernPairs
+EndKernData
+StartComposites 58
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 223 224 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 211 224 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 223 224 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 215 224 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 223 224 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 223 224 ;
+CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 195 0 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 139 224 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 139 224 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 139 224 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 139 224 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 28 224 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 28 224 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 28 224 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 28 224 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 250 224 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 250 224 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 250 224 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 250 224 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 250 224 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 250 224 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 139 224 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 235 224 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 235 224 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 235 224 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 223 224 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 211 224 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 199 224 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 167 224 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 84 20 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 84 20 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 84 20 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 84 20 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 84 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 84 12 ;
+CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 56 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 84 20 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 96 20 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 92 20 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 84 20 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute 0 20 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex 0 20 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis 0 20 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave 0 20 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 139 12 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 112 20 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 112 20 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 112 20 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 112 20 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 112 12 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 56 8 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 151 20 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 139 20 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 139 20 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 131 20 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 144 20 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 124 20 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 84 8 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/Pa-Bd+ b/font/font/Pa-Bd+
new file mode 100644
index 0000000..985d761
--- /dev/null
+++ b/font/font/Pa-Bd+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 722 ; N Ccaron ; B 44 -17 695 918 ;
+C -1 ; WX 444 ; N ccaron ; B 37 -17 414 685 ;
+C -1 ; WX 833 ; N Dcaron ; B 35 -3 786 918 ;
+C -1 ; WX 765 ; N dcaron ; B 42 -17 819 792 ;
+C -1 ; WX 611 ; N Ecaron ; B 39 -4 577 918 ;
+C -1 ; WX 500 ; N ecaron ; B 42 -17 461 685 ;
+C -1 ; WX 611 ; N Lcaron ; B 39 -4 592 749 ;
+C -1 ; WX 611 ; N Lacute ; B 39 -4 577 928 ;
+C -1 ; WX 487 ; N lcaron ; B 24 -3 538 792 ;
+C -1 ; WX 333 ; N lacute ; B 24 -3 340 928 ;
+C -1 ; WX 833 ; N Ncaron ; B 35 -16 798 918 ;
+C -1 ; WX 611 ; N ncaron ; B 24 -3 587 685 ;
+C -1 ; WX 722 ; N Rcaron ; B 39 -3 708 918 ;
+C -1 ; WX 722 ; N Racute ; B 39 -3 708 928 ;
+C -1 ; WX 389 ; N rcaron ; B 26 -3 389 685 ;
+C -1 ; WX 389 ; N racute ; B 30 -3 389 691 ;
+C -1 ; WX 667 ; N Tcaron ; B 17 -3 650 918 ;
+C -1 ; WX 487 ; N tcaron ; B 22 -17 566 695 ;
+C -1 ; WX 778 ; N Uring ; B 26 -17 760 918 ;
+C -1 ; WX 611 ; N uring ; B 25 -17 583 700 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 259 233 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 74 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 250 233 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 570 97 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 139 233 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 83 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 343 54 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 139 237 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 289 97 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 24 237 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 250 233 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 139 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 194 233 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 239 237 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 28 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 52 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 167 233 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 317 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 222 218 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 139 0 ;
+EndBuildComposites
diff --git a/font/font/Pa-BdF b/font/font/Pa-BdF
new file mode 100644
index 0000000..7abf9ac
--- /dev/null
+++ b/font/font/Pa-BdF
@@ -0,0 +1,432 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1990, 1991 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Wed Apr 24 13:46:21 1991
+Comment UniqueID 34739
+Comment VMusage 36532 47424
+FontName Palatino-BoldOsF
+FullName Palatino Bold Old Style Figures
+FamilyName Palatino
+Weight Bold
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -152 -266 988 924
+UnderlinePosition -131
+UnderlineThickness 58
+Version 001.001
+Notice Copyright (c) 1985, 1987, 1989, 1990, 1991 Adobe Systems Incorporated. All Rights Reserved.Palatino is a trademark of Linotype AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 681
+XHeight 471
+Ascender 720
+Descender -258
+StartCharMetrics 228
+C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 278 ; N exclam ; B 63 -12 219 688 ;
+C 34 ; WX 402 ; N quotedbl ; B 22 376 380 695 ;
+C 35 ; WX 500 ; N numbersign ; B 4 0 496 673 ;
+C 36 ; WX 500 ; N dollar ; B 28 -114 472 721 ;
+C 37 ; WX 889 ; N percent ; B 61 -9 828 714 ;
+C 38 ; WX 833 ; N ampersand ; B 52 -17 813 684 ;
+C 39 ; WX 278 ; N quoteright ; B 29 405 249 695 ;
+C 40 ; WX 333 ; N parenleft ; B 65 -104 305 723 ;
+C 41 ; WX 333 ; N parenright ; B 28 -104 268 723 ;
+C 42 ; WX 444 ; N asterisk ; B 44 332 399 695 ;
+C 43 ; WX 606 ; N plus ; B 51 0 555 505 ;
+C 44 ; WX 250 ; N comma ; B -6 -166 227 141 ;
+C 45 ; WX 333 ; N hyphen ; B 16 195 317 305 ;
+C 46 ; WX 250 ; N period ; B 47 -12 203 144 ;
+C 47 ; WX 296 ; N slash ; B -9 -17 305 720 ;
+C 48 ; WX 500 ; N zero ; B 42 -10 476 481 ;
+C 49 ; WX 500 ; N one ; B 28 -8 454 480 ;
+C 50 ; WX 500 ; N two ; B 18 -8 462 473 ;
+C 51 ; WX 500 ; N three ; B 8 -236 440 481 ;
+C 52 ; WX 500 ; N four ; B 6 -236 460 488 ;
+C 53 ; WX 500 ; N five ; B 2 -236 434 477 ;
+C 54 ; WX 500 ; N six ; B 38 -10 470 668 ;
+C 55 ; WX 500 ; N seven ; B 46 -236 488 474 ;
+C 56 ; WX 500 ; N eight ; B 34 -10 468 668 ;
+C 57 ; WX 500 ; N nine ; B 24 -236 458 481 ;
+C 58 ; WX 250 ; N colon ; B 47 -12 203 454 ;
+C 59 ; WX 250 ; N semicolon ; B -6 -166 227 454 ;
+C 60 ; WX 606 ; N less ; B 49 -15 558 519 ;
+C 61 ; WX 606 ; N equal ; B 51 114 555 396 ;
+C 62 ; WX 606 ; N greater ; B 49 -15 558 519 ;
+C 63 ; WX 444 ; N question ; B 43 -12 411 687 ;
+C 64 ; WX 747 ; N at ; B 42 -12 704 681 ;
+C 65 ; WX 778 ; N A ; B 24 -3 757 686 ;
+C 66 ; WX 667 ; N B ; B 39 -3 611 681 ;
+C 67 ; WX 722 ; N C ; B 44 -17 695 695 ;
+C 68 ; WX 833 ; N D ; B 35 -3 786 681 ;
+C 69 ; WX 611 ; N E ; B 39 -4 577 681 ;
+C 70 ; WX 556 ; N F ; B 28 -3 539 681 ;
+C 71 ; WX 833 ; N G ; B 47 -17 776 695 ;
+C 72 ; WX 833 ; N H ; B 36 -3 796 681 ;
+C 73 ; WX 389 ; N I ; B 39 -3 350 681 ;
+C 74 ; WX 389 ; N J ; B -11 -213 350 681 ;
+C 75 ; WX 778 ; N K ; B 39 -3 763 681 ;
+C 76 ; WX 611 ; N L ; B 39 -4 577 681 ;
+C 77 ; WX 1000 ; N M ; B 32 -10 968 681 ;
+C 78 ; WX 833 ; N N ; B 35 -16 798 681 ;
+C 79 ; WX 833 ; N O ; B 47 -17 787 695 ;
+C 80 ; WX 611 ; N P ; B 39 -3 594 681 ;
+C 81 ; WX 833 ; N Q ; B 47 -184 787 695 ;
+C 82 ; WX 722 ; N R ; B 39 -3 708 681 ;
+C 83 ; WX 611 ; N S ; B 57 -17 559 695 ;
+C 84 ; WX 667 ; N T ; B 17 -3 650 681 ;
+C 85 ; WX 778 ; N U ; B 26 -17 760 681 ;
+C 86 ; WX 778 ; N V ; B 20 -3 763 681 ;
+C 87 ; WX 1000 ; N W ; B 17 -3 988 686 ;
+C 88 ; WX 667 ; N X ; B 17 -3 650 695 ;
+C 89 ; WX 667 ; N Y ; B 15 -3 660 695 ;
+C 90 ; WX 667 ; N Z ; B 24 -3 627 681 ;
+C 91 ; WX 333 ; N bracketleft ; B 73 -104 291 720 ;
+C 92 ; WX 606 ; N backslash ; B 72 0 534 720 ;
+C 93 ; WX 333 ; N bracketright ; B 42 -104 260 720 ;
+C 94 ; WX 606 ; N asciicircum ; B 52 275 554 678 ;
+C 95 ; WX 500 ; N underscore ; B 0 -160 500 -102 ;
+C 96 ; WX 278 ; N quoteleft ; B 29 405 249 695 ;
+C 97 ; WX 500 ; N a ; B 40 -17 478 471 ;
+C 98 ; WX 611 ; N b ; B 10 -17 556 720 ;
+C 99 ; WX 444 ; N c ; B 37 -17 414 471 ;
+C 100 ; WX 611 ; N d ; B 42 -17 577 720 ;
+C 101 ; WX 500 ; N e ; B 42 -17 461 471 ;
+C 102 ; WX 389 ; N f ; B 34 -3 381 720 ; L i fi ; L l fl ;
+C 103 ; WX 556 ; N g ; B 26 -266 535 471 ;
+C 104 ; WX 611 ; N h ; B 24 -3 587 720 ;
+C 105 ; WX 333 ; N i ; B 34 -3 298 706 ;
+C 106 ; WX 333 ; N j ; B 3 -266 241 706 ;
+C 107 ; WX 611 ; N k ; B 21 -3 597 720 ;
+C 108 ; WX 333 ; N l ; B 24 -3 296 720 ;
+C 109 ; WX 889 ; N m ; B 24 -3 864 471 ;
+C 110 ; WX 611 ; N n ; B 24 -3 587 471 ;
+C 111 ; WX 556 ; N o ; B 40 -17 517 471 ;
+C 112 ; WX 611 ; N p ; B 29 -258 567 471 ;
+C 113 ; WX 611 ; N q ; B 52 -258 589 471 ;
+C 114 ; WX 389 ; N r ; B 30 -3 389 471 ;
+C 115 ; WX 444 ; N s ; B 39 -17 405 471 ;
+C 116 ; WX 333 ; N t ; B 22 -17 324 632 ;
+C 117 ; WX 611 ; N u ; B 25 -17 583 471 ;
+C 118 ; WX 556 ; N v ; B 11 -3 545 459 ;
+C 119 ; WX 833 ; N w ; B 13 -3 820 471 ;
+C 120 ; WX 500 ; N x ; B 20 -3 483 471 ;
+C 121 ; WX 556 ; N y ; B 10 -266 546 459 ;
+C 122 ; WX 500 ; N z ; B 16 -3 464 459 ;
+C 123 ; WX 310 ; N braceleft ; B 5 -117 288 725 ;
+C 124 ; WX 606 ; N bar ; B 260 0 346 720 ;
+C 125 ; WX 310 ; N braceright ; B 22 -117 305 725 ;
+C 126 ; WX 606 ; N asciitilde ; B 51 155 555 342 ;
+C 161 ; WX 278 ; N exclamdown ; B 59 -227 215 471 ;
+C 162 ; WX 500 ; N cent ; B 73 -106 450 554 ;
+C 163 ; WX 500 ; N sterling ; B -2 -19 501 676 ;
+C 164 ; WX 167 ; N fraction ; B -152 0 320 660 ;
+C 165 ; WX 500 ; N yen ; B 17 -3 483 695 ;
+C 166 ; WX 500 ; N florin ; B 11 -242 490 703 ;
+C 167 ; WX 500 ; N section ; B 30 -217 471 695 ;
+C 168 ; WX 500 ; N currency ; B 32 96 468 533 ;
+C 169 ; WX 227 ; N quotesingle ; B 45 376 181 695 ;
+C 170 ; WX 500 ; N quotedblleft ; B 34 405 466 695 ;
+C 171 ; WX 500 ; N guillemotleft ; B 36 44 463 438 ;
+C 172 ; WX 389 ; N guilsinglleft ; B 82 44 307 438 ;
+C 173 ; WX 389 ; N guilsinglright ; B 82 44 307 438 ;
+C 174 ; WX 611 ; N fi ; B 10 -3 595 720 ;
+C 175 ; WX 611 ; N fl ; B 17 -3 593 720 ;
+C 177 ; WX 500 ; N endash ; B 0 208 500 291 ;
+C 178 ; WX 500 ; N dagger ; B 29 -6 472 682 ;
+C 179 ; WX 500 ; N daggerdbl ; B 32 -245 468 682 ;
+C 180 ; WX 250 ; N periodcentered ; B 47 179 203 335 ;
+C 182 ; WX 641 ; N paragraph ; B 19 -161 599 683 ;
+C 183 ; WX 606 ; N bullet ; B 131 172 475 516 ;
+C 184 ; WX 333 ; N quotesinglbase ; B 56 -160 276 130 ;
+C 185 ; WX 500 ; N quotedblbase ; B 34 -160 466 130 ;
+C 186 ; WX 500 ; N quotedblright ; B 34 405 466 695 ;
+C 187 ; WX 500 ; N guillemotright ; B 37 44 464 438 ;
+C 188 ; WX 1000 ; N ellipsis ; B 89 -12 911 144 ;
+C 189 ; WX 1000 ; N perthousand ; B 33 -9 982 724 ;
+C 191 ; WX 444 ; N questiondown ; B 33 -231 401 471 ;
+C 193 ; WX 333 ; N grave ; B 18 506 256 691 ;
+C 194 ; WX 333 ; N acute ; B 78 506 316 691 ;
+C 195 ; WX 333 ; N circumflex ; B -2 506 335 681 ;
+C 196 ; WX 333 ; N tilde ; B -16 535 349 661 ;
+C 197 ; WX 333 ; N macron ; B 1 538 332 609 ;
+C 198 ; WX 333 ; N breve ; B 15 506 318 669 ;
+C 199 ; WX 333 ; N dotaccent ; B 100 537 234 671 ;
+C 200 ; WX 333 ; N dieresis ; B -8 537 341 671 ;
+C 202 ; WX 333 ; N ring ; B 67 500 267 700 ;
+C 203 ; WX 333 ; N cedilla ; B 73 -225 300 -7 ;
+C 205 ; WX 333 ; N hungarumlaut ; B -56 506 390 691 ;
+C 206 ; WX 333 ; N ogonek ; B 60 -246 274 -17 ;
+C 207 ; WX 333 ; N caron ; B -2 510 335 685 ;
+C 208 ; WX 1000 ; N emdash ; B 125 208 875 291 ;
+C 225 ; WX 1000 ; N AE ; B 12 -4 954 681 ;
+C 227 ; WX 438 ; N ordfeminine ; B 77 367 361 660 ;
+C 232 ; WX 611 ; N Lslash ; B 16 -4 577 681 ;
+C 233 ; WX 833 ; N Oslash ; B 32 -20 808 698 ;
+C 234 ; WX 1000 ; N OE ; B 43 -17 985 695 ;
+C 235 ; WX 488 ; N ordmasculine ; B 89 367 399 660 ;
+C 241 ; WX 778 ; N ae ; B 46 -17 731 471 ;
+C 245 ; WX 333 ; N dotlessi ; B 34 -3 298 471 ;
+C 248 ; WX 333 ; N lslash ; B -4 -3 334 720 ;
+C 249 ; WX 556 ; N oslash ; B 23 -18 534 471 ;
+C 250 ; WX 833 ; N oe ; B 48 -17 799 471 ;
+C 251 ; WX 611 ; N germandbls ; B 30 -17 565 720 ;
+C -1 ; WX 500 ; N ecircumflex ; B 42 -17 461 701 ;
+C -1 ; WX 500 ; N edieresis ; B 42 -17 461 691 ;
+C -1 ; WX 500 ; N aacute ; B 40 -17 478 711 ;
+C -1 ; WX 747 ; N registered ; B 26 -17 720 695 ;
+C -1 ; WX 333 ; N icircumflex ; B -2 -3 335 701 ;
+C -1 ; WX 611 ; N udieresis ; B 25 -17 583 691 ;
+C -1 ; WX 556 ; N ograve ; B 40 -17 517 711 ;
+C -1 ; WX 611 ; N uacute ; B 25 -17 583 711 ;
+C -1 ; WX 611 ; N ucircumflex ; B 25 -17 583 701 ;
+C -1 ; WX 778 ; N Aacute ; B 24 -3 757 915 ;
+C -1 ; WX 333 ; N igrave ; B 18 -3 298 711 ;
+C -1 ; WX 389 ; N Icircumflex ; B 26 -3 363 905 ;
+C -1 ; WX 444 ; N ccedilla ; B 37 -225 414 471 ;
+C -1 ; WX 500 ; N adieresis ; B 40 -17 478 691 ;
+C -1 ; WX 611 ; N Ecircumflex ; B 39 -4 577 905 ;
+C -1 ; WX 444 ; N scaron ; B 39 -17 405 693 ;
+C -1 ; WX 611 ; N thorn ; B 17 -258 563 720 ;
+C -1 ; WX 998 ; N trademark ; B 38 274 961 678 ;
+C -1 ; WX 500 ; N egrave ; B 42 -17 461 711 ;
+C -1 ; WX 300 ; N threesuperior ; B 9 261 292 667 ;
+C -1 ; WX 500 ; N zcaron ; B 16 -3 464 693 ;
+C -1 ; WX 500 ; N atilde ; B 40 -17 478 673 ;
+C -1 ; WX 500 ; N aring ; B 40 -17 478 700 ;
+C -1 ; WX 556 ; N ocircumflex ; B 40 -17 517 701 ;
+C -1 ; WX 611 ; N Edieresis ; B 39 -4 577 895 ;
+C -1 ; WX 750 ; N threequarters ; B 15 -2 735 667 ;
+C -1 ; WX 556 ; N ydieresis ; B 10 -266 546 691 ;
+C -1 ; WX 556 ; N yacute ; B 10 -266 546 711 ;
+C -1 ; WX 333 ; N iacute ; B 34 -3 316 711 ;
+C -1 ; WX 778 ; N Acircumflex ; B 24 -3 757 905 ;
+C -1 ; WX 778 ; N Uacute ; B 26 -17 760 915 ;
+C -1 ; WX 500 ; N eacute ; B 42 -17 461 711 ;
+C -1 ; WX 833 ; N Ograve ; B 47 -17 787 915 ;
+C -1 ; WX 500 ; N agrave ; B 40 -17 478 711 ;
+C -1 ; WX 778 ; N Udieresis ; B 26 -17 760 895 ;
+C -1 ; WX 500 ; N acircumflex ; B 40 -17 478 701 ;
+C -1 ; WX 389 ; N Igrave ; B 39 -3 350 915 ;
+C -1 ; WX 300 ; N twosuperior ; B 5 261 295 660 ;
+C -1 ; WX 778 ; N Ugrave ; B 26 -17 760 915 ;
+C -1 ; WX 750 ; N onequarter ; B 19 -2 735 665 ;
+C -1 ; WX 778 ; N Ucircumflex ; B 26 -17 760 905 ;
+C -1 ; WX 611 ; N Scaron ; B 57 -17 559 909 ;
+C -1 ; WX 389 ; N Idieresis ; B 20 -3 369 895 ;
+C -1 ; WX 333 ; N idieresis ; B -8 -3 341 691 ;
+C -1 ; WX 611 ; N Egrave ; B 39 -4 577 915 ;
+C -1 ; WX 833 ; N Oacute ; B 47 -17 787 915 ;
+C -1 ; WX 606 ; N divide ; B 51 0 555 510 ;
+C -1 ; WX 778 ; N Atilde ; B 24 -3 757 885 ;
+C -1 ; WX 778 ; N Aring ; B 24 -3 757 924 ;
+C -1 ; WX 833 ; N Odieresis ; B 47 -17 787 895 ;
+C -1 ; WX 778 ; N Adieresis ; B 24 -3 757 895 ;
+C -1 ; WX 833 ; N Ntilde ; B 35 -16 798 885 ;
+C -1 ; WX 667 ; N Zcaron ; B 24 -3 627 909 ;
+C -1 ; WX 611 ; N Thorn ; B 39 -3 574 681 ;
+C -1 ; WX 389 ; N Iacute ; B 39 -3 350 915 ;
+C -1 ; WX 606 ; N plusminus ; B 51 0 555 505 ;
+C -1 ; WX 606 ; N multiply ; B 72 21 534 483 ;
+C -1 ; WX 611 ; N Eacute ; B 39 -4 577 915 ;
+C -1 ; WX 667 ; N Ydieresis ; B 15 -3 660 895 ;
+C -1 ; WX 300 ; N onesuperior ; B 14 261 287 665 ;
+C -1 ; WX 611 ; N ugrave ; B 25 -17 583 711 ;
+C -1 ; WX 606 ; N logicalnot ; B 51 114 555 396 ;
+C -1 ; WX 611 ; N ntilde ; B 24 -3 587 673 ;
+C -1 ; WX 833 ; N Otilde ; B 47 -17 787 885 ;
+C -1 ; WX 556 ; N otilde ; B 40 -17 517 673 ;
+C -1 ; WX 722 ; N Ccedilla ; B 44 -225 695 695 ;
+C -1 ; WX 778 ; N Agrave ; B 24 -3 757 915 ;
+C -1 ; WX 750 ; N onehalf ; B 9 -2 745 665 ;
+C -1 ; WX 833 ; N Eth ; B 10 -3 786 681 ;
+C -1 ; WX 400 ; N degree ; B 50 360 350 660 ;
+C -1 ; WX 667 ; N Yacute ; B 15 -3 660 915 ;
+C -1 ; WX 833 ; N Ocircumflex ; B 47 -17 787 905 ;
+C -1 ; WX 556 ; N oacute ; B 40 -17 517 711 ;
+C -1 ; WX 611 ; N mu ; B 25 -225 583 471 ;
+C -1 ; WX 606 ; N minus ; B 51 212 555 298 ;
+C -1 ; WX 556 ; N eth ; B 40 -17 517 720 ;
+C -1 ; WX 556 ; N odieresis ; B 40 -17 517 691 ;
+C -1 ; WX 747 ; N copyright ; B 26 -17 720 695 ;
+C -1 ; WX 606 ; N brokenbar ; B 260 0 346 720 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 101
+
+KPX A y -70
+KPX A w -70
+KPX A v -70
+KPX A space -18
+KPX A quoteright -92
+KPX A Y -111
+KPX A W -90
+KPX A V -129
+KPX A T -92
+
+KPX F period -111
+KPX F comma -111
+KPX F A -55
+
+KPX L y -74
+KPX L space -18
+KPX L quoteright -74
+KPX L Y -92
+KPX L W -92
+KPX L V -92
+KPX L T -74
+
+KPX P period -129
+KPX P comma -129
+KPX P A -74
+
+KPX R y -30
+KPX R Y -55
+KPX R W -37
+KPX R V -74
+KPX R T -55
+
+KPX T y -90
+KPX T w -90
+KPX T u -129
+KPX T semicolon -74
+KPX T s -111
+KPX T r -111
+KPX T period -92
+KPX T o -111
+KPX T i -55
+KPX T hyphen -92
+KPX T e -111
+KPX T comma -92
+KPX T colon -74
+KPX T c -129
+KPX T a -111
+KPX T A -92
+
+KPX V y -90
+KPX V u -92
+KPX V semicolon -74
+KPX V r -111
+KPX V period -129
+KPX V o -111
+KPX V i -55
+KPX V hyphen -92
+KPX V e -111
+KPX V comma -129
+KPX V colon -74
+KPX V a -111
+KPX V A -129
+
+KPX W y -74
+KPX W u -74
+KPX W semicolon -37
+KPX W r -74
+KPX W period -37
+KPX W o -74
+KPX W i -37
+KPX W hyphen -37
+KPX W e -74
+KPX W comma -92
+KPX W colon -37
+KPX W a -74
+KPX W A -90
+
+KPX Y v -74
+KPX Y u -74
+KPX Y semicolon -55
+KPX Y q -92
+KPX Y period -74
+KPX Y p -74
+KPX Y o -74
+KPX Y i -55
+KPX Y hyphen -74
+KPX Y e -74
+KPX Y comma -74
+KPX Y colon -55
+KPX Y a -74
+KPX Y A -55
+
+KPX f quoteright 37
+KPX f f -18
+
+KPX one one -37
+
+KPX quoteleft quoteleft -55
+
+KPX quoteright t -18
+KPX quoteright space -55
+KPX quoteright s -55
+KPX quoteright quoteright -55
+
+KPX r quoteright 55
+KPX r period -55
+KPX r hyphen -18
+KPX r comma -55
+
+KPX v period -111
+KPX v comma -111
+
+KPX w period -92
+KPX w comma -92
+
+KPX y period -92
+KPX y comma -92
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 223 224 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 211 224 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 223 224 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 215 224 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 223 224 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 223 224 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 139 224 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 139 224 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 139 224 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 139 224 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 28 224 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 28 224 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 28 224 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 28 224 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 250 224 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 250 224 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 250 224 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 250 224 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 250 224 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 250 224 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 139 224 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 235 224 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 235 224 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 235 224 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 223 224 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 211 224 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 199 224 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 167 224 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 84 20 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 84 20 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 84 20 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 84 20 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 84 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 84 12 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 84 20 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 96 20 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 92 20 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 84 20 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute 0 20 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex 0 20 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis 0 20 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave 0 20 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 139 12 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 112 20 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 112 20 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 112 20 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 112 20 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 112 12 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 56 8 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 151 20 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 139 20 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 139 20 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 131 20 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 144 20 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 124 20 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 84 8 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/Pa-BdF+ b/font/font/Pa-BdF+
new file mode 100644
index 0000000..985d761
--- /dev/null
+++ b/font/font/Pa-BdF+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 722 ; N Ccaron ; B 44 -17 695 918 ;
+C -1 ; WX 444 ; N ccaron ; B 37 -17 414 685 ;
+C -1 ; WX 833 ; N Dcaron ; B 35 -3 786 918 ;
+C -1 ; WX 765 ; N dcaron ; B 42 -17 819 792 ;
+C -1 ; WX 611 ; N Ecaron ; B 39 -4 577 918 ;
+C -1 ; WX 500 ; N ecaron ; B 42 -17 461 685 ;
+C -1 ; WX 611 ; N Lcaron ; B 39 -4 592 749 ;
+C -1 ; WX 611 ; N Lacute ; B 39 -4 577 928 ;
+C -1 ; WX 487 ; N lcaron ; B 24 -3 538 792 ;
+C -1 ; WX 333 ; N lacute ; B 24 -3 340 928 ;
+C -1 ; WX 833 ; N Ncaron ; B 35 -16 798 918 ;
+C -1 ; WX 611 ; N ncaron ; B 24 -3 587 685 ;
+C -1 ; WX 722 ; N Rcaron ; B 39 -3 708 918 ;
+C -1 ; WX 722 ; N Racute ; B 39 -3 708 928 ;
+C -1 ; WX 389 ; N rcaron ; B 26 -3 389 685 ;
+C -1 ; WX 389 ; N racute ; B 30 -3 389 691 ;
+C -1 ; WX 667 ; N Tcaron ; B 17 -3 650 918 ;
+C -1 ; WX 487 ; N tcaron ; B 22 -17 566 695 ;
+C -1 ; WX 778 ; N Uring ; B 26 -17 760 918 ;
+C -1 ; WX 611 ; N uring ; B 25 -17 583 700 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 259 233 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 74 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 250 233 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 570 97 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 139 233 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 83 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 343 54 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 139 237 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 289 97 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 24 237 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 250 233 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 139 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 194 233 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 239 237 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 28 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 52 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 167 233 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 317 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 222 218 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 139 0 ;
+EndBuildComposites
diff --git a/font/font/Pa-BdIt b/font/font/Pa-BdIt
new file mode 100644
index 0000000..e161d04
--- /dev/null
+++ b/font/font/Pa-BdIt
@@ -0,0 +1,441 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Mon Jul 2 22:48:39 1990
+Comment UniqueID 31799
+Comment VMusage 37656 48548
+FontName Palatino-BoldItalic
+FullName Palatino Bold Italic
+FamilyName Palatino
+Weight Bold
+ItalicAngle -10
+IsFixedPitch false
+FontBBox -170 -271 1073 926
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.005
+Notice Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.Palatino is a trademark of Linotype AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 681
+XHeight 469
+Ascender 726
+Descender -271
+StartCharMetrics 228
+C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 333 ; N exclam ; B 58 -17 322 695 ;
+C 34 ; WX 500 ; N quotedbl ; B 137 467 493 720 ;
+C 35 ; WX 500 ; N numbersign ; B 4 0 496 673 ;
+C 36 ; WX 500 ; N dollar ; B 20 -108 477 737 ;
+C 37 ; WX 889 ; N percent ; B 56 -17 790 697 ;
+C 38 ; WX 833 ; N ampersand ; B 74 -17 811 695 ;
+C 39 ; WX 278 ; N quoteright ; B 76 431 302 720 ;
+C 40 ; WX 333 ; N parenleft ; B 58 -129 368 723 ;
+C 41 ; WX 333 ; N parenright ; B -12 -129 298 723 ;
+C 42 ; WX 444 ; N asterisk ; B 84 332 439 695 ;
+C 43 ; WX 606 ; N plus ; B 50 -5 556 501 ;
+C 44 ; WX 250 ; N comma ; B -33 -164 208 147 ;
+C 45 ; WX 389 ; N hyphen ; B 37 198 362 300 ;
+C 46 ; WX 250 ; N period ; B 48 -17 187 135 ;
+C 47 ; WX 315 ; N slash ; B 1 -17 315 720 ;
+C 48 ; WX 500 ; N zero ; B 42 -17 490 683 ;
+C 49 ; WX 500 ; N one ; B 41 -3 434 678 ;
+C 50 ; WX 500 ; N two ; B 1 -3 454 683 ;
+C 51 ; WX 500 ; N three ; B 8 -17 450 683 ;
+C 52 ; WX 500 ; N four ; B 3 -3 487 683 ;
+C 53 ; WX 500 ; N five ; B 14 -17 481 675 ;
+C 54 ; WX 500 ; N six ; B 39 -17 488 683 ;
+C 55 ; WX 500 ; N seven ; B 69 -3 544 674 ;
+C 56 ; WX 500 ; N eight ; B 26 -17 484 683 ;
+C 57 ; WX 500 ; N nine ; B 27 -17 491 683 ;
+C 58 ; WX 250 ; N colon ; B 38 -17 236 452 ;
+C 59 ; WX 250 ; N semicolon ; B -33 -164 247 452 ;
+C 60 ; WX 606 ; N less ; B 49 -21 558 517 ;
+C 61 ; WX 606 ; N equal ; B 51 106 555 390 ;
+C 62 ; WX 606 ; N greater ; B 48 -21 557 517 ;
+C 63 ; WX 444 ; N question ; B 91 -17 450 695 ;
+C 64 ; WX 833 ; N at ; B 82 -12 744 681 ;
+C 65 ; WX 722 ; N A ; B -35 -3 685 683 ;
+C 66 ; WX 667 ; N B ; B 8 -3 629 681 ;
+C 67 ; WX 685 ; N C ; B 69 -17 695 695 ;
+C 68 ; WX 778 ; N D ; B 0 -3 747 682 ;
+C 69 ; WX 611 ; N E ; B 11 -3 606 681 ;
+C 70 ; WX 556 ; N F ; B -6 -3 593 681 ;
+C 71 ; WX 778 ; N G ; B 72 -17 750 695 ;
+C 72 ; WX 778 ; N H ; B -12 -3 826 681 ;
+C 73 ; WX 389 ; N I ; B -1 -3 412 681 ;
+C 74 ; WX 389 ; N J ; B -29 -207 417 681 ;
+C 75 ; WX 722 ; N K ; B -10 -3 746 681 ;
+C 76 ; WX 611 ; N L ; B 26 -3 578 681 ;
+C 77 ; WX 944 ; N M ; B -23 -17 985 681 ;
+C 78 ; WX 778 ; N N ; B -2 -3 829 681 ;
+C 79 ; WX 833 ; N O ; B 76 -17 794 695 ;
+C 80 ; WX 667 ; N P ; B 11 -3 673 681 ;
+C 81 ; WX 833 ; N Q ; B 76 -222 794 695 ;
+C 82 ; WX 722 ; N R ; B 4 -3 697 681 ;
+C 83 ; WX 556 ; N S ; B 50 -17 517 695 ;
+C 84 ; WX 611 ; N T ; B 56 -3 674 681 ;
+C 85 ; WX 778 ; N U ; B 83 -17 825 681 ;
+C 86 ; WX 667 ; N V ; B 67 -3 745 681 ;
+C 87 ; WX 1000 ; N W ; B 67 -3 1073 689 ;
+C 88 ; WX 722 ; N X ; B -9 -3 772 681 ;
+C 89 ; WX 611 ; N Y ; B 54 -3 675 695 ;
+C 90 ; WX 667 ; N Z ; B 1 -3 676 681 ;
+C 91 ; WX 333 ; N bracketleft ; B 45 -102 381 723 ;
+C 92 ; WX 606 ; N backslash ; B 72 0 534 720 ;
+C 93 ; WX 333 ; N bracketright ; B -21 -102 315 723 ;
+C 94 ; WX 606 ; N asciicircum ; B 63 275 543 678 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 278 ; N quoteleft ; B 65 431 291 720 ;
+C 97 ; WX 556 ; N a ; B 44 -17 519 470 ;
+C 98 ; WX 537 ; N b ; B 44 -17 494 726 ;
+C 99 ; WX 444 ; N c ; B 32 -17 436 469 ;
+C 100 ; WX 556 ; N d ; B 38 -17 550 726 ;
+C 101 ; WX 444 ; N e ; B 28 -17 418 469 ;
+C 102 ; WX 333 ; N f ; B -130 -271 449 726 ; L i fi ; L l fl ;
+C 103 ; WX 500 ; N g ; B -50 -271 529 469 ;
+C 104 ; WX 556 ; N h ; B 22 -17 522 726 ;
+C 105 ; WX 333 ; N i ; B 26 -17 312 695 ;
+C 106 ; WX 333 ; N j ; B -64 -271 323 695 ;
+C 107 ; WX 556 ; N k ; B 34 -17 528 726 ;
+C 108 ; WX 333 ; N l ; B 64 -17 318 726 ;
+C 109 ; WX 833 ; N m ; B 19 -17 803 469 ;
+C 110 ; WX 556 ; N n ; B 17 -17 521 469 ;
+C 111 ; WX 556 ; N o ; B 48 -17 502 469 ;
+C 112 ; WX 556 ; N p ; B -21 -271 516 469 ;
+C 113 ; WX 537 ; N q ; B 32 -271 513 469 ;
+C 114 ; WX 389 ; N r ; B 20 -17 411 469 ;
+C 115 ; WX 444 ; N s ; B 25 -17 406 469 ;
+C 116 ; WX 389 ; N t ; B 42 -17 409 636 ;
+C 117 ; WX 556 ; N u ; B 22 -17 521 469 ;
+C 118 ; WX 556 ; N v ; B 19 -17 513 469 ;
+C 119 ; WX 833 ; N w ; B 27 -17 802 469 ;
+C 120 ; WX 500 ; N x ; B -8 -17 500 469 ;
+C 121 ; WX 556 ; N y ; B 13 -271 541 469 ;
+C 122 ; WX 500 ; N z ; B 31 -17 470 469 ;
+C 123 ; WX 333 ; N braceleft ; B 18 -105 334 720 ;
+C 124 ; WX 606 ; N bar ; B 259 0 347 720 ;
+C 125 ; WX 333 ; N braceright ; B -1 -105 315 720 ;
+C 126 ; WX 606 ; N asciitilde ; B 51 151 555 346 ;
+C 161 ; WX 333 ; N exclamdown ; B 2 -225 259 479 ;
+C 162 ; WX 500 ; N cent ; B 52 -105 456 547 ;
+C 163 ; WX 500 ; N sterling ; B 21 -5 501 683 ;
+C 164 ; WX 167 ; N fraction ; B -170 0 338 683 ;
+C 165 ; WX 500 ; N yen ; B 11 -3 538 695 ;
+C 166 ; WX 500 ; N florin ; B 8 -242 479 690 ;
+C 167 ; WX 556 ; N section ; B 47 -151 497 695 ;
+C 168 ; WX 500 ; N currency ; B 32 96 468 533 ;
+C 169 ; WX 250 ; N quotesingle ; B 127 467 293 720 ;
+C 170 ; WX 500 ; N quotedblleft ; B 65 431 511 720 ;
+C 171 ; WX 500 ; N guillemotleft ; B 35 43 458 446 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 60 43 292 446 ;
+C 173 ; WX 333 ; N guilsinglright ; B 35 40 267 443 ;
+C 174 ; WX 611 ; N fi ; B -130 -271 588 726 ;
+C 175 ; WX 611 ; N fl ; B -130 -271 631 726 ;
+C 177 ; WX 500 ; N endash ; B -12 214 512 282 ;
+C 178 ; WX 556 ; N dagger ; B 67 -3 499 685 ;
+C 179 ; WX 556 ; N daggerdbl ; B 33 -153 537 693 ;
+C 180 ; WX 250 ; N periodcentered ; B 67 172 206 324 ;
+C 182 ; WX 556 ; N paragraph ; B 14 -204 629 681 ;
+C 183 ; WX 606 ; N bullet ; B 131 172 475 516 ;
+C 184 ; WX 250 ; N quotesinglbase ; B -3 -144 220 145 ;
+C 185 ; WX 500 ; N quotedblbase ; B -18 -144 424 145 ;
+C 186 ; WX 500 ; N quotedblright ; B 73 431 519 720 ;
+C 187 ; WX 500 ; N guillemotright ; B 35 40 458 443 ;
+C 188 ; WX 1000 ; N ellipsis ; B 91 -17 896 135 ;
+C 189 ; WX 1000 ; N perthousand ; B 65 -17 912 691 ;
+C 191 ; WX 444 ; N questiondown ; B -12 -226 347 479 ;
+C 193 ; WX 333 ; N grave ; B 110 518 322 699 ;
+C 194 ; WX 333 ; N acute ; B 153 518 392 699 ;
+C 195 ; WX 333 ; N circumflex ; B 88 510 415 684 ;
+C 196 ; WX 333 ; N tilde ; B 82 535 441 654 ;
+C 197 ; WX 333 ; N macron ; B 76 538 418 608 ;
+C 198 ; WX 333 ; N breve ; B 96 518 412 680 ;
+C 199 ; WX 333 ; N dotaccent ; B 202 537 325 668 ;
+C 200 ; WX 333 ; N dieresis ; B 90 537 426 668 ;
+C 202 ; WX 556 ; N ring ; B 277 514 477 714 ;
+C 203 ; WX 333 ; N cedilla ; B 12 -218 248 5 ;
+C 205 ; WX 333 ; N hungarumlaut ; B -28 518 409 699 ;
+C 206 ; WX 333 ; N ogonek ; B 32 -206 238 -17 ;
+C 207 ; WX 333 ; N caron ; B 113 510 445 684 ;
+C 208 ; WX 1000 ; N emdash ; B -12 214 1012 282 ;
+C 225 ; WX 944 ; N AE ; B -29 -3 927 681 ;
+C 227 ; WX 333 ; N ordfeminine ; B 47 391 355 684 ;
+C 232 ; WX 611 ; N Lslash ; B 6 -3 578 681 ;
+C 233 ; WX 833 ; N Oslash ; B 57 -54 797 730 ;
+C 234 ; WX 944 ; N OE ; B 39 -17 961 695 ;
+C 235 ; WX 333 ; N ordmasculine ; B 51 391 346 683 ;
+C 241 ; WX 738 ; N ae ; B 44 -17 711 469 ;
+C 245 ; WX 333 ; N dotlessi ; B 26 -17 293 469 ;
+C 248 ; WX 333 ; N lslash ; B 13 -17 365 726 ;
+C 249 ; WX 556 ; N oslash ; B 14 -50 522 506 ;
+C 250 ; WX 778 ; N oe ; B 48 -17 755 469 ;
+C 251 ; WX 556 ; N germandbls ; B -131 -271 549 726 ;
+C -1 ; WX 667 ; N Zcaron ; B 1 -3 676 896 ;
+C -1 ; WX 444 ; N ccedilla ; B 32 -218 436 469 ;
+C -1 ; WX 556 ; N ydieresis ; B 13 -271 541 688 ;
+C -1 ; WX 556 ; N atilde ; B 44 -17 553 666 ;
+C -1 ; WX 333 ; N icircumflex ; B 26 -17 403 704 ;
+C -1 ; WX 300 ; N threesuperior ; B 23 263 310 683 ;
+C -1 ; WX 444 ; N ecircumflex ; B 28 -17 471 704 ;
+C -1 ; WX 556 ; N thorn ; B -21 -271 516 726 ;
+C -1 ; WX 444 ; N egrave ; B 28 -17 418 719 ;
+C -1 ; WX 300 ; N twosuperior ; B 26 271 321 683 ;
+C -1 ; WX 444 ; N eacute ; B 28 -17 448 719 ;
+C -1 ; WX 556 ; N otilde ; B 48 -17 553 666 ;
+C -1 ; WX 722 ; N Aacute ; B -35 -3 685 911 ;
+C -1 ; WX 556 ; N ocircumflex ; B 48 -17 515 704 ;
+C -1 ; WX 556 ; N yacute ; B 13 -271 541 719 ;
+C -1 ; WX 556 ; N udieresis ; B 22 -17 538 688 ;
+C -1 ; WX 750 ; N threequarters ; B 18 -2 732 683 ;
+C -1 ; WX 556 ; N acircumflex ; B 44 -17 527 704 ;
+C -1 ; WX 778 ; N Eth ; B 0 -3 747 682 ;
+C -1 ; WX 444 ; N edieresis ; B 28 -17 482 688 ;
+C -1 ; WX 556 ; N ugrave ; B 22 -17 521 719 ;
+C -1 ; WX 1000 ; N trademark ; B 38 274 961 678 ;
+C -1 ; WX 556 ; N ograve ; B 48 -17 502 719 ;
+C -1 ; WX 444 ; N scaron ; B 25 -17 489 692 ;
+C -1 ; WX 389 ; N Idieresis ; B -1 -3 454 880 ;
+C -1 ; WX 556 ; N uacute ; B 22 -17 521 719 ;
+C -1 ; WX 556 ; N agrave ; B 44 -17 519 719 ;
+C -1 ; WX 556 ; N ntilde ; B 17 -17 553 666 ;
+C -1 ; WX 556 ; N aring ; B 44 -17 519 714 ;
+C -1 ; WX 500 ; N zcaron ; B 31 -17 517 692 ;
+C -1 ; WX 389 ; N Icircumflex ; B -1 -3 443 896 ;
+C -1 ; WX 778 ; N Ntilde ; B -2 -3 829 866 ;
+C -1 ; WX 556 ; N ucircumflex ; B 22 -17 521 704 ;
+C -1 ; WX 611 ; N Ecircumflex ; B 11 -3 606 896 ;
+C -1 ; WX 389 ; N Iacute ; B -1 -3 420 911 ;
+C -1 ; WX 685 ; N Ccedilla ; B 69 -218 695 695 ;
+C -1 ; WX 833 ; N Odieresis ; B 76 -17 794 880 ;
+C -1 ; WX 556 ; N Scaron ; B 50 -17 557 896 ;
+C -1 ; WX 611 ; N Edieresis ; B 11 -3 606 880 ;
+C -1 ; WX 389 ; N Igrave ; B -1 -3 412 911 ;
+C -1 ; WX 556 ; N adieresis ; B 44 -17 538 688 ;
+C -1 ; WX 833 ; N Ograve ; B 76 -17 794 911 ;
+C -1 ; WX 611 ; N Egrave ; B 11 -3 606 911 ;
+C -1 ; WX 611 ; N Ydieresis ; B 54 -3 675 880 ;
+C -1 ; WX 747 ; N registered ; B 26 -17 720 695 ;
+C -1 ; WX 833 ; N Otilde ; B 76 -17 794 866 ;
+C -1 ; WX 750 ; N onequarter ; B 18 -2 732 683 ;
+C -1 ; WX 778 ; N Ugrave ; B 83 -17 825 911 ;
+C -1 ; WX 778 ; N Ucircumflex ; B 83 -17 825 896 ;
+C -1 ; WX 667 ; N Thorn ; B 11 -3 644 681 ;
+C -1 ; WX 606 ; N divide ; B 50 -5 556 501 ;
+C -1 ; WX 722 ; N Atilde ; B -35 -3 685 866 ;
+C -1 ; WX 778 ; N Uacute ; B 83 -17 825 911 ;
+C -1 ; WX 833 ; N Ocircumflex ; B 76 -17 794 896 ;
+C -1 ; WX 606 ; N logicalnot ; B 51 107 555 390 ;
+C -1 ; WX 722 ; N Aring ; B -35 -3 685 926 ;
+C -1 ; WX 333 ; N idieresis ; B 26 -17 426 688 ;
+C -1 ; WX 333 ; N iacute ; B 26 -17 392 719 ;
+C -1 ; WX 556 ; N aacute ; B 44 -17 519 719 ;
+C -1 ; WX 606 ; N plusminus ; B 50 0 556 501 ;
+C -1 ; WX 606 ; N multiply ; B 72 17 534 479 ;
+C -1 ; WX 778 ; N Udieresis ; B 83 -17 825 880 ;
+C -1 ; WX 606 ; N minus ; B 51 204 555 292 ;
+C -1 ; WX 300 ; N onesuperior ; B 41 271 298 680 ;
+C -1 ; WX 611 ; N Eacute ; B 11 -3 606 911 ;
+C -1 ; WX 722 ; N Acircumflex ; B -35 -3 685 896 ;
+C -1 ; WX 747 ; N copyright ; B 26 -17 720 695 ;
+C -1 ; WX 722 ; N Agrave ; B -35 -3 685 911 ;
+C -1 ; WX 556 ; N odieresis ; B 48 -17 538 688 ;
+C -1 ; WX 556 ; N oacute ; B 48 -17 504 719 ;
+C -1 ; WX 400 ; N degree ; B 50 383 350 683 ;
+C -1 ; WX 333 ; N igrave ; B 26 -17 322 719 ;
+C -1 ; WX 556 ; N mu ; B -15 -232 521 469 ;
+C -1 ; WX 833 ; N Oacute ; B 76 -17 794 911 ;
+C -1 ; WX 556 ; N eth ; B 48 -17 546 726 ;
+C -1 ; WX 722 ; N Adieresis ; B -35 -3 685 880 ;
+C -1 ; WX 611 ; N Yacute ; B 54 -3 675 911 ;
+C -1 ; WX 606 ; N brokenbar ; B 259 0 347 720 ;
+C -1 ; WX 750 ; N onehalf ; B 14 -2 736 683 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 108
+
+KPX A y -55
+KPX A w -37
+KPX A v -55
+KPX A space -55
+KPX A quoteright -55
+KPX A Y -74
+KPX A W -74
+KPX A V -74
+KPX A T -55
+
+KPX F space -18
+KPX F period -111
+KPX F comma -111
+KPX F A -74
+
+KPX L y -37
+KPX L space -18
+KPX L quoteright -55
+KPX L Y -74
+KPX L W -74
+KPX L V -74
+KPX L T -74
+
+KPX P space -55
+KPX P period -129
+KPX P comma -129
+KPX P A -92
+
+KPX R y -20
+KPX R Y -37
+KPX R W -55
+KPX R V -55
+KPX R T -37
+
+KPX T y -80
+KPX T w -50
+KPX T u -92
+KPX T semicolon -55
+KPX T s -92
+KPX T r -92
+KPX T period -55
+KPX T o -111
+KPX T i -74
+KPX T hyphen -92
+KPX T e -111
+KPX T comma -55
+KPX T colon -55
+KPX T c -92
+KPX T a -111
+KPX T O -18
+KPX T A -55
+
+KPX V y -50
+KPX V u -50
+KPX V semicolon -37
+KPX V r -74
+KPX V period -111
+KPX V o -74
+KPX V i -50
+KPX V hyphen -37
+KPX V e -74
+KPX V comma -111
+KPX V colon -37
+KPX V a -92
+KPX V A -74
+
+KPX W y -30
+KPX W u -30
+KPX W semicolon -18
+KPX W r -30
+KPX W period -55
+KPX W o -55
+KPX W i -30
+KPX W e -55
+KPX W comma -55
+KPX W colon -28
+KPX W a -74
+KPX W A -74
+
+KPX Y v -30
+KPX Y u -50
+KPX Y semicolon -55
+KPX Y q -92
+KPX Y period -55
+KPX Y p -74
+KPX Y o -111
+KPX Y i -54
+KPX Y hyphen -55
+KPX Y e -92
+KPX Y comma -55
+KPX Y colon -55
+KPX Y a -111
+KPX Y A -55
+
+KPX f quoteright 37
+KPX f f -37
+
+KPX one one -55
+
+KPX quoteleft quoteleft -55
+
+KPX quoteright t -18
+KPX quoteright space -37
+KPX quoteright s -37
+KPX quoteright quoteright -55
+
+KPX r quoteright 55
+KPX r q -18
+KPX r period -55
+KPX r o -18
+KPX r h -18
+KPX r g -18
+KPX r e -18
+KPX r comma -55
+KPX r c -18
+
+KPX v period -55
+KPX v comma -55
+
+KPX w period -55
+KPX w comma -55
+
+KPX y period -37
+KPX y comma -37
+EndKernPairs
+EndKernData
+StartComposites 58
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 195 212 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 195 212 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 195 212 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 195 212 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 83 212 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 195 212 ;
+CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 176 0 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 139 212 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 139 212 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 139 212 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 139 212 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 28 212 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 28 212 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 28 212 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 28 212 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 223 212 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 250 212 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 250 212 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 250 212 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 250 212 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 250 212 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 112 212 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 223 212 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 223 212 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 223 212 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 211 212 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 151 212 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 139 212 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 167 212 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 112 20 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 112 20 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 112 20 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 112 20 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 0 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 112 12 ;
+CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 56 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 56 20 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 56 20 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 56 20 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 56 20 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute 0 20 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -12 20 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis 0 20 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave 0 20 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 112 12 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 112 20 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 100 20 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 112 20 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 112 20 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 112 12 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 44 8 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 112 20 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 100 20 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 112 20 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 112 20 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 112 20 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 112 20 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 72 8 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/Pa-BdIt+ b/font/font/Pa-BdIt+
new file mode 100644
index 0000000..62fe140
--- /dev/null
+++ b/font/font/Pa-BdIt+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 685 ; N Ccaron ; B 69 -17 725 917 ;
+C -1 ; WX 444 ; N ccaron ; B 32 -17 520 684 ;
+C -1 ; WX 778 ; N Dcaron ; B 0 -3 747 917 ;
+C -1 ; WX 714 ; N dcaron ; B 38 -17 799 799 ;
+C -1 ; WX 611 ; N Ecaron ; B 11 -3 625 917 ;
+C -1 ; WX 444 ; N ecaron ; B 28 -17 500 684 ;
+C -1 ; WX 611 ; N Lcaron ; B 26 -3 661 749 ;
+C -1 ; WX 611 ; N Lacute ; B 26 -3 578 924 ;
+C -1 ; WX 491 ; N lcaron ; B 64 -17 567 799 ;
+C -1 ; WX 333 ; N lacute ; B 64 -17 455 924 ;
+C -1 ; WX 778 ; N Ncaron ; B -2 -3 829 917 ;
+C -1 ; WX 556 ; N ncaron ; B 17 -17 556 684 ;
+C -1 ; WX 722 ; N Rcaron ; B 4 -3 697 917 ;
+C -1 ; WX 722 ; N Racute ; B 4 -3 697 924 ;
+C -1 ; WX 389 ; N rcaron ; B 20 -17 473 684 ;
+C -1 ; WX 389 ; N racute ; B 20 -17 444 699 ;
+C -1 ; WX 611 ; N Tcaron ; B 56 -3 674 917 ;
+C -1 ; WX 547 ; N tcaron ; B 42 -17 658 720 ;
+C -1 ; WX 778 ; N Uring ; B 83 -17 825 917 ;
+C -1 ; WX 556 ; N uring ; B 22 -17 521 714 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 280 233 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 75 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 263 233 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 497 79 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 180 233 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 55 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 359 29 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 178 225 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 265 79 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 63 225 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 263 233 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 111 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 235 233 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 278 225 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 28 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 52 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 180 233 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 356 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 146 203 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 0 0 ;
+EndBuildComposites
diff --git a/font/font/Pa-BdItF b/font/font/Pa-BdItF
new file mode 100644
index 0000000..a2b3a49
--- /dev/null
+++ b/font/font/Pa-BdItF
@@ -0,0 +1,439 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1990, 1991 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Wed Apr 24 14:37:49 1991
+Comment UniqueID 34742
+Comment VMusage 38760 49652
+FontName Palatino-BoldItalicOsF
+FullName Palatino Bold Italic Old Style Figures
+FamilyName Palatino
+Weight Bold
+ItalicAngle -10
+IsFixedPitch false
+FontBBox -170 -271 1073 926
+UnderlinePosition -131
+UnderlineThickness 58
+Version 001.001
+Notice Copyright (c) 1985, 1987, 1989, 1990, 1991 Adobe Systems Incorporated. All Rights Reserved.Palatino is a trademark of Linotype AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 681
+XHeight 469
+Ascender 726
+Descender -271
+StartCharMetrics 228
+C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 333 ; N exclam ; B 58 -17 322 695 ;
+C 34 ; WX 500 ; N quotedbl ; B 137 467 493 720 ;
+C 35 ; WX 500 ; N numbersign ; B 4 0 496 673 ;
+C 36 ; WX 500 ; N dollar ; B 20 -108 477 737 ;
+C 37 ; WX 889 ; N percent ; B 56 -17 790 697 ;
+C 38 ; WX 833 ; N ampersand ; B 74 -17 811 695 ;
+C 39 ; WX 278 ; N quoteright ; B 76 431 302 720 ;
+C 40 ; WX 333 ; N parenleft ; B 58 -129 368 723 ;
+C 41 ; WX 333 ; N parenright ; B -12 -129 298 723 ;
+C 42 ; WX 444 ; N asterisk ; B 84 332 439 695 ;
+C 43 ; WX 606 ; N plus ; B 50 -5 556 501 ;
+C 44 ; WX 250 ; N comma ; B -33 -164 208 147 ;
+C 45 ; WX 389 ; N hyphen ; B 37 198 362 300 ;
+C 46 ; WX 250 ; N period ; B 48 -17 187 135 ;
+C 47 ; WX 315 ; N slash ; B 1 -17 315 720 ;
+C 48 ; WX 500 ; N zero ; B 26 -12 466 477 ;
+C 49 ; WX 500 ; N one ; B 48 -4 462 488 ;
+C 50 ; WX 500 ; N two ; B 8 -6 434 477 ;
+C 51 ; WX 500 ; N three ; B -40 -256 410 477 ;
+C 52 ; WX 500 ; N four ; B -18 -270 462 486 ;
+C 53 ; WX 500 ; N five ; B -30 -256 446 471 ;
+C 54 ; WX 500 ; N six ; B 34 -12 484 686 ;
+C 55 ; WX 500 ; N seven ; B 8 -249 508 473 ;
+C 56 ; WX 500 ; N eight ; B 26 -12 484 686 ;
+C 57 ; WX 500 ; N nine ; B 0 -256 458 477 ;
+C 58 ; WX 250 ; N colon ; B 38 -17 236 452 ;
+C 59 ; WX 250 ; N semicolon ; B -33 -164 247 452 ;
+C 60 ; WX 606 ; N less ; B 49 -21 558 517 ;
+C 61 ; WX 606 ; N equal ; B 51 106 555 390 ;
+C 62 ; WX 606 ; N greater ; B 48 -21 557 517 ;
+C 63 ; WX 444 ; N question ; B 91 -17 450 695 ;
+C 64 ; WX 833 ; N at ; B 82 -12 744 681 ;
+C 65 ; WX 722 ; N A ; B -35 -3 685 683 ;
+C 66 ; WX 667 ; N B ; B 8 -3 629 681 ;
+C 67 ; WX 685 ; N C ; B 69 -17 695 695 ;
+C 68 ; WX 778 ; N D ; B 0 -3 747 682 ;
+C 69 ; WX 611 ; N E ; B 11 -3 606 681 ;
+C 70 ; WX 556 ; N F ; B -6 -3 593 681 ;
+C 71 ; WX 778 ; N G ; B 72 -17 750 695 ;
+C 72 ; WX 778 ; N H ; B -12 -3 826 681 ;
+C 73 ; WX 389 ; N I ; B -1 -3 412 681 ;
+C 74 ; WX 389 ; N J ; B -29 -207 417 681 ;
+C 75 ; WX 722 ; N K ; B -10 -3 746 681 ;
+C 76 ; WX 611 ; N L ; B 26 -3 578 681 ;
+C 77 ; WX 944 ; N M ; B -23 -17 985 681 ;
+C 78 ; WX 778 ; N N ; B -2 -3 829 681 ;
+C 79 ; WX 833 ; N O ; B 76 -17 794 695 ;
+C 80 ; WX 667 ; N P ; B 11 -3 673 681 ;
+C 81 ; WX 833 ; N Q ; B 76 -222 794 695 ;
+C 82 ; WX 722 ; N R ; B 4 -3 697 681 ;
+C 83 ; WX 556 ; N S ; B 50 -17 517 695 ;
+C 84 ; WX 611 ; N T ; B 56 -3 674 681 ;
+C 85 ; WX 778 ; N U ; B 83 -17 825 681 ;
+C 86 ; WX 667 ; N V ; B 67 -3 745 681 ;
+C 87 ; WX 1000 ; N W ; B 67 -3 1073 689 ;
+C 88 ; WX 722 ; N X ; B -9 -3 772 681 ;
+C 89 ; WX 611 ; N Y ; B 54 -3 675 695 ;
+C 90 ; WX 667 ; N Z ; B 1 -3 676 681 ;
+C 91 ; WX 333 ; N bracketleft ; B 45 -102 381 723 ;
+C 92 ; WX 606 ; N backslash ; B 72 0 534 720 ;
+C 93 ; WX 333 ; N bracketright ; B -21 -102 315 723 ;
+C 94 ; WX 606 ; N asciicircum ; B 63 275 543 678 ;
+C 95 ; WX 500 ; N underscore ; B 0 -160 500 -102 ;
+C 96 ; WX 278 ; N quoteleft ; B 65 431 291 720 ;
+C 97 ; WX 556 ; N a ; B 44 -17 519 470 ;
+C 98 ; WX 537 ; N b ; B 44 -17 494 726 ;
+C 99 ; WX 444 ; N c ; B 32 -17 436 469 ;
+C 100 ; WX 556 ; N d ; B 38 -17 550 726 ;
+C 101 ; WX 444 ; N e ; B 28 -17 418 469 ;
+C 102 ; WX 333 ; N f ; B -130 -271 449 726 ; L i fi ; L l fl ;
+C 103 ; WX 500 ; N g ; B -50 -271 529 469 ;
+C 104 ; WX 556 ; N h ; B 22 -17 522 726 ;
+C 105 ; WX 333 ; N i ; B 26 -17 312 695 ;
+C 106 ; WX 333 ; N j ; B -64 -271 323 695 ;
+C 107 ; WX 556 ; N k ; B 34 -17 528 726 ;
+C 108 ; WX 333 ; N l ; B 64 -17 318 726 ;
+C 109 ; WX 833 ; N m ; B 19 -17 803 469 ;
+C 110 ; WX 556 ; N n ; B 17 -17 521 469 ;
+C 111 ; WX 556 ; N o ; B 48 -17 502 469 ;
+C 112 ; WX 556 ; N p ; B -21 -271 516 469 ;
+C 113 ; WX 537 ; N q ; B 32 -271 513 469 ;
+C 114 ; WX 389 ; N r ; B 20 -17 411 469 ;
+C 115 ; WX 444 ; N s ; B 25 -17 406 469 ;
+C 116 ; WX 389 ; N t ; B 42 -17 409 636 ;
+C 117 ; WX 556 ; N u ; B 22 -17 521 469 ;
+C 118 ; WX 556 ; N v ; B 19 -17 513 469 ;
+C 119 ; WX 833 ; N w ; B 27 -17 802 469 ;
+C 120 ; WX 500 ; N x ; B -8 -17 500 469 ;
+C 121 ; WX 556 ; N y ; B 13 -271 541 469 ;
+C 122 ; WX 500 ; N z ; B 31 -17 470 469 ;
+C 123 ; WX 333 ; N braceleft ; B 18 -105 334 720 ;
+C 124 ; WX 606 ; N bar ; B 259 0 347 720 ;
+C 125 ; WX 333 ; N braceright ; B -1 -105 315 720 ;
+C 126 ; WX 606 ; N asciitilde ; B 51 151 555 346 ;
+C 161 ; WX 333 ; N exclamdown ; B 2 -225 259 479 ;
+C 162 ; WX 500 ; N cent ; B 52 -105 456 547 ;
+C 163 ; WX 500 ; N sterling ; B 21 -5 501 683 ;
+C 164 ; WX 167 ; N fraction ; B -170 0 338 683 ;
+C 165 ; WX 500 ; N yen ; B 11 -3 538 695 ;
+C 166 ; WX 500 ; N florin ; B 8 -242 479 690 ;
+C 167 ; WX 556 ; N section ; B 47 -151 497 695 ;
+C 168 ; WX 500 ; N currency ; B 32 96 468 533 ;
+C 169 ; WX 250 ; N quotesingle ; B 127 467 293 720 ;
+C 170 ; WX 500 ; N quotedblleft ; B 65 431 511 720 ;
+C 171 ; WX 500 ; N guillemotleft ; B 35 43 458 446 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 60 43 292 446 ;
+C 173 ; WX 333 ; N guilsinglright ; B 35 40 267 443 ;
+C 174 ; WX 611 ; N fi ; B -130 -271 588 726 ;
+C 175 ; WX 611 ; N fl ; B -130 -271 631 726 ;
+C 177 ; WX 500 ; N endash ; B -12 214 512 282 ;
+C 178 ; WX 556 ; N dagger ; B 67 -3 499 685 ;
+C 179 ; WX 556 ; N daggerdbl ; B 33 -153 537 693 ;
+C 180 ; WX 250 ; N periodcentered ; B 67 172 206 324 ;
+C 182 ; WX 556 ; N paragraph ; B 14 -204 629 681 ;
+C 183 ; WX 606 ; N bullet ; B 131 172 475 516 ;
+C 184 ; WX 250 ; N quotesinglbase ; B -3 -144 220 145 ;
+C 185 ; WX 500 ; N quotedblbase ; B -18 -144 424 145 ;
+C 186 ; WX 500 ; N quotedblright ; B 73 431 519 720 ;
+C 187 ; WX 500 ; N guillemotright ; B 35 40 458 443 ;
+C 188 ; WX 1000 ; N ellipsis ; B 91 -17 896 135 ;
+C 189 ; WX 1000 ; N perthousand ; B 65 -17 912 691 ;
+C 191 ; WX 444 ; N questiondown ; B -12 -226 347 479 ;
+C 193 ; WX 333 ; N grave ; B 110 518 322 699 ;
+C 194 ; WX 333 ; N acute ; B 153 518 392 699 ;
+C 195 ; WX 333 ; N circumflex ; B 88 510 415 684 ;
+C 196 ; WX 333 ; N tilde ; B 82 535 441 654 ;
+C 197 ; WX 333 ; N macron ; B 76 538 418 608 ;
+C 198 ; WX 333 ; N breve ; B 96 518 412 680 ;
+C 199 ; WX 333 ; N dotaccent ; B 202 537 325 668 ;
+C 200 ; WX 333 ; N dieresis ; B 90 537 426 668 ;
+C 202 ; WX 556 ; N ring ; B 277 514 477 714 ;
+C 203 ; WX 333 ; N cedilla ; B 12 -218 248 5 ;
+C 205 ; WX 333 ; N hungarumlaut ; B -28 518 409 699 ;
+C 206 ; WX 333 ; N ogonek ; B 32 -206 238 -17 ;
+C 207 ; WX 333 ; N caron ; B 113 510 445 684 ;
+C 208 ; WX 1000 ; N emdash ; B 113 214 887 282 ;
+C 225 ; WX 944 ; N AE ; B -29 -3 927 681 ;
+C 227 ; WX 333 ; N ordfeminine ; B 47 391 355 684 ;
+C 232 ; WX 611 ; N Lslash ; B 6 -3 578 681 ;
+C 233 ; WX 833 ; N Oslash ; B 57 -54 797 730 ;
+C 234 ; WX 944 ; N OE ; B 39 -17 961 695 ;
+C 235 ; WX 333 ; N ordmasculine ; B 51 391 346 683 ;
+C 241 ; WX 738 ; N ae ; B 44 -17 711 469 ;
+C 245 ; WX 333 ; N dotlessi ; B 26 -17 293 469 ;
+C 248 ; WX 333 ; N lslash ; B 13 -17 365 726 ;
+C 249 ; WX 556 ; N oslash ; B 14 -50 522 506 ;
+C 250 ; WX 778 ; N oe ; B 48 -17 755 469 ;
+C 251 ; WX 556 ; N germandbls ; B -131 -271 549 726 ;
+C -1 ; WX 444 ; N ecircumflex ; B 28 -17 471 704 ;
+C -1 ; WX 444 ; N edieresis ; B 28 -17 482 688 ;
+C -1 ; WX 556 ; N aacute ; B 44 -17 519 719 ;
+C -1 ; WX 747 ; N registered ; B 26 -17 720 695 ;
+C -1 ; WX 333 ; N icircumflex ; B 26 -17 403 704 ;
+C -1 ; WX 556 ; N udieresis ; B 22 -17 538 688 ;
+C -1 ; WX 556 ; N ograve ; B 48 -17 502 719 ;
+C -1 ; WX 556 ; N uacute ; B 22 -17 521 719 ;
+C -1 ; WX 556 ; N ucircumflex ; B 22 -17 521 704 ;
+C -1 ; WX 722 ; N Aacute ; B -35 -3 685 911 ;
+C -1 ; WX 333 ; N igrave ; B 26 -17 322 719 ;
+C -1 ; WX 389 ; N Icircumflex ; B -1 -3 443 896 ;
+C -1 ; WX 444 ; N ccedilla ; B 32 -218 436 469 ;
+C -1 ; WX 556 ; N adieresis ; B 44 -17 538 688 ;
+C -1 ; WX 611 ; N Ecircumflex ; B 11 -3 606 896 ;
+C -1 ; WX 444 ; N scaron ; B 25 -17 489 692 ;
+C -1 ; WX 556 ; N thorn ; B -21 -271 516 726 ;
+C -1 ; WX 1000 ; N trademark ; B 38 274 961 678 ;
+C -1 ; WX 444 ; N egrave ; B 28 -17 418 719 ;
+C -1 ; WX 300 ; N threesuperior ; B 23 263 310 683 ;
+C -1 ; WX 500 ; N zcaron ; B 31 -17 517 692 ;
+C -1 ; WX 556 ; N atilde ; B 44 -17 553 666 ;
+C -1 ; WX 556 ; N aring ; B 44 -17 519 714 ;
+C -1 ; WX 556 ; N ocircumflex ; B 48 -17 515 704 ;
+C -1 ; WX 611 ; N Edieresis ; B 11 -3 606 880 ;
+C -1 ; WX 750 ; N threequarters ; B 18 -2 732 683 ;
+C -1 ; WX 556 ; N ydieresis ; B 13 -271 541 688 ;
+C -1 ; WX 556 ; N yacute ; B 13 -271 541 719 ;
+C -1 ; WX 333 ; N iacute ; B 26 -17 392 719 ;
+C -1 ; WX 722 ; N Acircumflex ; B -35 -3 685 896 ;
+C -1 ; WX 778 ; N Uacute ; B 83 -17 825 911 ;
+C -1 ; WX 444 ; N eacute ; B 28 -17 448 719 ;
+C -1 ; WX 833 ; N Ograve ; B 76 -17 794 911 ;
+C -1 ; WX 556 ; N agrave ; B 44 -17 519 719 ;
+C -1 ; WX 778 ; N Udieresis ; B 83 -17 825 880 ;
+C -1 ; WX 556 ; N acircumflex ; B 44 -17 527 704 ;
+C -1 ; WX 389 ; N Igrave ; B -1 -3 412 911 ;
+C -1 ; WX 300 ; N twosuperior ; B 26 271 321 683 ;
+C -1 ; WX 778 ; N Ugrave ; B 83 -17 825 911 ;
+C -1 ; WX 750 ; N onequarter ; B 18 -2 732 683 ;
+C -1 ; WX 778 ; N Ucircumflex ; B 83 -17 825 896 ;
+C -1 ; WX 556 ; N Scaron ; B 50 -17 557 896 ;
+C -1 ; WX 389 ; N Idieresis ; B -1 -3 454 880 ;
+C -1 ; WX 333 ; N idieresis ; B 26 -17 426 688 ;
+C -1 ; WX 611 ; N Egrave ; B 11 -3 606 911 ;
+C -1 ; WX 833 ; N Oacute ; B 76 -17 794 911 ;
+C -1 ; WX 606 ; N divide ; B 50 -5 556 501 ;
+C -1 ; WX 722 ; N Atilde ; B -35 -3 685 866 ;
+C -1 ; WX 722 ; N Aring ; B -35 -3 685 926 ;
+C -1 ; WX 833 ; N Odieresis ; B 76 -17 794 880 ;
+C -1 ; WX 722 ; N Adieresis ; B -35 -3 685 880 ;
+C -1 ; WX 778 ; N Ntilde ; B -2 -3 829 866 ;
+C -1 ; WX 667 ; N Zcaron ; B 1 -3 676 896 ;
+C -1 ; WX 667 ; N Thorn ; B 11 -3 644 681 ;
+C -1 ; WX 389 ; N Iacute ; B -1 -3 420 911 ;
+C -1 ; WX 606 ; N plusminus ; B 50 0 556 501 ;
+C -1 ; WX 606 ; N multiply ; B 72 17 534 479 ;
+C -1 ; WX 611 ; N Eacute ; B 11 -3 606 911 ;
+C -1 ; WX 611 ; N Ydieresis ; B 54 -3 675 880 ;
+C -1 ; WX 300 ; N onesuperior ; B 41 271 298 680 ;
+C -1 ; WX 556 ; N ugrave ; B 22 -17 521 719 ;
+C -1 ; WX 606 ; N logicalnot ; B 51 107 555 390 ;
+C -1 ; WX 556 ; N ntilde ; B 17 -17 553 666 ;
+C -1 ; WX 833 ; N Otilde ; B 76 -17 794 866 ;
+C -1 ; WX 556 ; N otilde ; B 48 -17 553 666 ;
+C -1 ; WX 685 ; N Ccedilla ; B 69 -218 695 695 ;
+C -1 ; WX 722 ; N Agrave ; B -35 -3 685 911 ;
+C -1 ; WX 750 ; N onehalf ; B 14 -2 736 683 ;
+C -1 ; WX 778 ; N Eth ; B 0 -3 747 682 ;
+C -1 ; WX 400 ; N degree ; B 50 383 350 683 ;
+C -1 ; WX 611 ; N Yacute ; B 54 -3 675 911 ;
+C -1 ; WX 833 ; N Ocircumflex ; B 76 -17 794 896 ;
+C -1 ; WX 556 ; N oacute ; B 48 -17 504 719 ;
+C -1 ; WX 556 ; N mu ; B -15 -232 521 469 ;
+C -1 ; WX 606 ; N minus ; B 51 204 555 292 ;
+C -1 ; WX 556 ; N eth ; B 48 -17 546 726 ;
+C -1 ; WX 556 ; N odieresis ; B 48 -17 538 688 ;
+C -1 ; WX 747 ; N copyright ; B 26 -17 720 695 ;
+C -1 ; WX 606 ; N brokenbar ; B 259 0 347 720 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 108
+
+KPX A y -55
+KPX A w -37
+KPX A v -55
+KPX A space -55
+KPX A quoteright -55
+KPX A Y -74
+KPX A W -74
+KPX A V -74
+KPX A T -55
+
+KPX F space -18
+KPX F period -111
+KPX F comma -111
+KPX F A -74
+
+KPX L y -37
+KPX L space -18
+KPX L quoteright -55
+KPX L Y -74
+KPX L W -74
+KPX L V -74
+KPX L T -74
+
+KPX P space -55
+KPX P period -129
+KPX P comma -129
+KPX P A -92
+
+KPX R y -20
+KPX R Y -37
+KPX R W -55
+KPX R V -55
+KPX R T -37
+
+KPX T y -80
+KPX T w -50
+KPX T u -92
+KPX T semicolon -55
+KPX T s -92
+KPX T r -92
+KPX T period -55
+KPX T o -111
+KPX T i -74
+KPX T hyphen -92
+KPX T e -111
+KPX T comma -55
+KPX T colon -55
+KPX T c -92
+KPX T a -111
+KPX T O -18
+KPX T A -55
+
+KPX V y -50
+KPX V u -50
+KPX V semicolon -37
+KPX V r -74
+KPX V period -111
+KPX V o -74
+KPX V i -50
+KPX V hyphen -37
+KPX V e -74
+KPX V comma -111
+KPX V colon -37
+KPX V a -92
+KPX V A -74
+
+KPX W y -30
+KPX W u -30
+KPX W semicolon -18
+KPX W r -30
+KPX W period -55
+KPX W o -55
+KPX W i -30
+KPX W e -55
+KPX W comma -55
+KPX W colon -28
+KPX W a -74
+KPX W A -74
+
+KPX Y v -30
+KPX Y u -50
+KPX Y semicolon -55
+KPX Y q -92
+KPX Y period -55
+KPX Y p -74
+KPX Y o -111
+KPX Y i -54
+KPX Y hyphen -55
+KPX Y e -92
+KPX Y comma -55
+KPX Y colon -55
+KPX Y a -111
+KPX Y A -55
+
+KPX f quoteright 37
+KPX f f -37
+
+KPX one one -55
+
+KPX quoteleft quoteleft -55
+
+KPX quoteright t -18
+KPX quoteright space -37
+KPX quoteright s -37
+KPX quoteright quoteright -55
+
+KPX r quoteright 55
+KPX r q -18
+KPX r period -55
+KPX r o -18
+KPX r h -18
+KPX r g -18
+KPX r e -18
+KPX r comma -55
+KPX r c -18
+
+KPX v period -55
+KPX v comma -55
+
+KPX w period -55
+KPX w comma -55
+
+KPX y period -37
+KPX y comma -37
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 195 212 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 195 212 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 195 212 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 195 212 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 83 212 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 195 212 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 139 212 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 139 212 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 139 212 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 139 212 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 28 212 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 28 212 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 28 212 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 28 212 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 223 212 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 250 212 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 250 212 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 250 212 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 250 212 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 250 212 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 112 212 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 223 212 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 223 212 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 223 212 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 211 212 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 151 212 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 139 212 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 167 212 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 112 20 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 112 20 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 112 20 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 112 20 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 0 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 112 12 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 56 20 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 56 20 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 56 20 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 56 20 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute 0 20 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -12 20 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis 0 20 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave 0 20 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 112 12 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 112 20 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 100 20 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 112 20 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 112 20 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 112 12 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 44 8 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 112 20 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 100 20 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 112 20 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 112 20 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 112 20 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 112 20 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 72 8 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/Pa-BdItF+ b/font/font/Pa-BdItF+
new file mode 100644
index 0000000..62fe140
--- /dev/null
+++ b/font/font/Pa-BdItF+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 685 ; N Ccaron ; B 69 -17 725 917 ;
+C -1 ; WX 444 ; N ccaron ; B 32 -17 520 684 ;
+C -1 ; WX 778 ; N Dcaron ; B 0 -3 747 917 ;
+C -1 ; WX 714 ; N dcaron ; B 38 -17 799 799 ;
+C -1 ; WX 611 ; N Ecaron ; B 11 -3 625 917 ;
+C -1 ; WX 444 ; N ecaron ; B 28 -17 500 684 ;
+C -1 ; WX 611 ; N Lcaron ; B 26 -3 661 749 ;
+C -1 ; WX 611 ; N Lacute ; B 26 -3 578 924 ;
+C -1 ; WX 491 ; N lcaron ; B 64 -17 567 799 ;
+C -1 ; WX 333 ; N lacute ; B 64 -17 455 924 ;
+C -1 ; WX 778 ; N Ncaron ; B -2 -3 829 917 ;
+C -1 ; WX 556 ; N ncaron ; B 17 -17 556 684 ;
+C -1 ; WX 722 ; N Rcaron ; B 4 -3 697 917 ;
+C -1 ; WX 722 ; N Racute ; B 4 -3 697 924 ;
+C -1 ; WX 389 ; N rcaron ; B 20 -17 473 684 ;
+C -1 ; WX 389 ; N racute ; B 20 -17 444 699 ;
+C -1 ; WX 611 ; N Tcaron ; B 56 -3 674 917 ;
+C -1 ; WX 547 ; N tcaron ; B 42 -17 658 720 ;
+C -1 ; WX 778 ; N Uring ; B 83 -17 825 917 ;
+C -1 ; WX 556 ; N uring ; B 22 -17 521 714 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 280 233 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 75 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 263 233 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 497 79 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 180 233 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 55 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 359 29 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 178 225 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 265 79 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 63 225 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 263 233 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 111 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 235 233 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 278 225 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 28 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 52 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 180 233 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 356 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 146 203 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 0 0 ;
+EndBuildComposites
diff --git a/font/font/Pa-It b/font/font/Pa-It
new file mode 100644
index 0000000..01bdcf0
--- /dev/null
+++ b/font/font/Pa-It
@@ -0,0 +1,439 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Mon Jul 2 22:37:33 1990
+Comment UniqueID 31796
+Comment VMusage 37415 48307
+FontName Palatino-Italic
+FullName Palatino Italic
+FamilyName Palatino
+Weight Medium
+ItalicAngle -10
+IsFixedPitch false
+FontBBox -170 -276 1010 918
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.005
+Notice Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.Palatino is a trademark of Linotype AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 692
+XHeight 482
+Ascender 733
+Descender -276
+StartCharMetrics 228
+C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 333 ; N exclam ; B 76 -8 292 733 ;
+C 34 ; WX 500 ; N quotedbl ; B 140 508 455 733 ;
+C 35 ; WX 500 ; N numbersign ; B 4 0 495 692 ;
+C 36 ; WX 500 ; N dollar ; B 15 -113 452 733 ;
+C 37 ; WX 889 ; N percent ; B 74 -7 809 710 ;
+C 38 ; WX 778 ; N ampersand ; B 47 -18 766 692 ;
+C 39 ; WX 278 ; N quoteright ; B 78 488 258 733 ;
+C 40 ; WX 333 ; N parenleft ; B 54 -106 331 733 ;
+C 41 ; WX 333 ; N parenright ; B 2 -106 279 733 ;
+C 42 ; WX 389 ; N asterisk ; B 76 368 400 706 ;
+C 43 ; WX 606 ; N plus ; B 51 0 555 504 ;
+C 44 ; WX 250 ; N comma ; B 8 -143 203 123 ;
+C 45 ; WX 333 ; N hyphen ; B 19 223 304 281 ;
+C 46 ; WX 250 ; N period ; B 53 -5 158 112 ;
+C 47 ; WX 296 ; N slash ; B -40 -119 392 733 ;
+C 48 ; WX 500 ; N zero ; B 36 -11 480 699 ;
+C 49 ; WX 500 ; N one ; B 54 -3 398 699 ;
+C 50 ; WX 500 ; N two ; B 12 -3 437 699 ;
+C 51 ; WX 500 ; N three ; B 22 -11 447 699 ;
+C 52 ; WX 500 ; N four ; B 15 -3 478 699 ;
+C 53 ; WX 500 ; N five ; B 14 -11 491 693 ;
+C 54 ; WX 500 ; N six ; B 49 -11 469 699 ;
+C 55 ; WX 500 ; N seven ; B 53 -3 502 692 ;
+C 56 ; WX 500 ; N eight ; B 36 -11 469 699 ;
+C 57 ; WX 500 ; N nine ; B 32 -11 468 699 ;
+C 58 ; WX 250 ; N colon ; B 44 -5 207 458 ;
+C 59 ; WX 250 ; N semicolon ; B -9 -146 219 456 ;
+C 60 ; WX 606 ; N less ; B 53 -6 554 516 ;
+C 61 ; WX 606 ; N equal ; B 51 126 555 378 ;
+C 62 ; WX 606 ; N greater ; B 53 -6 554 516 ;
+C 63 ; WX 500 ; N question ; B 114 -8 427 706 ;
+C 64 ; WX 747 ; N at ; B 27 -18 718 706 ;
+C 65 ; WX 722 ; N A ; B -19 -3 677 705 ;
+C 66 ; WX 611 ; N B ; B 26 -6 559 692 ;
+C 67 ; WX 667 ; N C ; B 45 -18 651 706 ;
+C 68 ; WX 778 ; N D ; B 28 -3 741 692 ;
+C 69 ; WX 611 ; N E ; B 30 -3 570 692 ;
+C 70 ; WX 556 ; N F ; B 0 -3 548 692 ;
+C 71 ; WX 722 ; N G ; B 50 -18 694 706 ;
+C 72 ; WX 778 ; N H ; B -3 -3 800 692 ;
+C 73 ; WX 333 ; N I ; B 7 -3 354 692 ;
+C 74 ; WX 333 ; N J ; B -35 -206 358 692 ;
+C 75 ; WX 667 ; N K ; B 13 -3 683 692 ;
+C 76 ; WX 556 ; N L ; B 16 -3 523 692 ;
+C 77 ; WX 944 ; N M ; B -19 -18 940 692 ;
+C 78 ; WX 778 ; N N ; B 2 -11 804 692 ;
+C 79 ; WX 778 ; N O ; B 53 -18 748 706 ;
+C 80 ; WX 611 ; N P ; B 9 -3 594 692 ;
+C 81 ; WX 778 ; N Q ; B 53 -201 748 706 ;
+C 82 ; WX 667 ; N R ; B 9 -3 639 692 ;
+C 83 ; WX 556 ; N S ; B 42 -18 506 706 ;
+C 84 ; WX 611 ; N T ; B 53 -3 635 692 ;
+C 85 ; WX 778 ; N U ; B 88 -18 798 692 ;
+C 86 ; WX 722 ; N V ; B 75 -8 754 692 ;
+C 87 ; WX 944 ; N W ; B 71 -8 980 700 ;
+C 88 ; WX 722 ; N X ; B 20 -3 734 692 ;
+C 89 ; WX 667 ; N Y ; B 52 -3 675 705 ;
+C 90 ; WX 667 ; N Z ; B 20 -3 637 692 ;
+C 91 ; WX 333 ; N bracketleft ; B 18 -100 326 733 ;
+C 92 ; WX 606 ; N backslash ; B 81 0 513 733 ;
+C 93 ; WX 333 ; N bracketright ; B 7 -100 315 733 ;
+C 94 ; WX 606 ; N asciicircum ; B 51 283 554 689 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 278 ; N quoteleft ; B 78 488 258 733 ;
+C 97 ; WX 444 ; N a ; B 4 -11 406 482 ;
+C 98 ; WX 463 ; N b ; B 37 -11 433 733 ;
+C 99 ; WX 407 ; N c ; B 25 -11 389 482 ;
+C 100 ; WX 500 ; N d ; B 17 -11 483 733 ;
+C 101 ; WX 389 ; N e ; B 15 -11 374 482 ;
+C 102 ; WX 278 ; N f ; B -162 -276 413 733 ; L i fi ; L l fl ;
+C 103 ; WX 500 ; N g ; B -37 -276 498 482 ;
+C 104 ; WX 500 ; N h ; B 10 -9 471 733 ;
+C 105 ; WX 278 ; N i ; B 34 -9 264 712 ;
+C 106 ; WX 278 ; N j ; B -70 -276 265 712 ;
+C 107 ; WX 444 ; N k ; B 8 -9 449 733 ;
+C 108 ; WX 278 ; N l ; B 36 -9 251 733 ;
+C 109 ; WX 778 ; N m ; B 24 -9 740 482 ;
+C 110 ; WX 556 ; N n ; B 24 -9 514 482 ;
+C 111 ; WX 444 ; N o ; B 17 -11 411 482 ;
+C 112 ; WX 500 ; N p ; B -7 -276 465 482 ;
+C 113 ; WX 463 ; N q ; B 24 -276 432 482 ;
+C 114 ; WX 389 ; N r ; B 26 -9 384 482 ;
+C 115 ; WX 389 ; N s ; B 9 -11 345 482 ;
+C 116 ; WX 333 ; N t ; B 41 -9 310 646 ;
+C 117 ; WX 556 ; N u ; B 32 -11 512 482 ;
+C 118 ; WX 500 ; N v ; B 21 -11 477 482 ;
+C 119 ; WX 722 ; N w ; B 21 -11 699 482 ;
+C 120 ; WX 500 ; N x ; B 9 -11 484 482 ;
+C 121 ; WX 500 ; N y ; B -8 -276 490 482 ;
+C 122 ; WX 444 ; N z ; B -1 -11 416 482 ;
+C 123 ; WX 333 ; N braceleft ; B 15 -100 319 733 ;
+C 124 ; WX 606 ; N bar ; B 275 0 331 733 ;
+C 125 ; WX 333 ; N braceright ; B 14 -100 318 733 ;
+C 126 ; WX 606 ; N asciitilde ; B 51 168 555 339 ;
+C 161 ; WX 333 ; N exclamdown ; B 15 -276 233 467 ;
+C 162 ; WX 500 ; N cent ; B 56 -96 418 551 ;
+C 163 ; WX 500 ; N sterling ; B 2 -18 479 708 ;
+C 164 ; WX 167 ; N fraction ; B -170 0 337 699 ;
+C 165 ; WX 500 ; N yen ; B 35 -3 512 699 ;
+C 166 ; WX 500 ; N florin ; B 5 -276 470 708 ;
+C 167 ; WX 500 ; N section ; B 14 -220 463 706 ;
+C 168 ; WX 500 ; N currency ; B 14 115 486 577 ;
+C 169 ; WX 333 ; N quotesingle ; B 140 508 288 733 ;
+C 170 ; WX 500 ; N quotedblleft ; B 98 488 475 733 ;
+C 171 ; WX 500 ; N guillemotleft ; B 57 70 437 440 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 57 70 270 440 ;
+C 173 ; WX 333 ; N guilsinglright ; B 63 70 276 440 ;
+C 174 ; WX 528 ; N fi ; B -162 -276 502 733 ;
+C 175 ; WX 545 ; N fl ; B -162 -276 520 733 ;
+C 177 ; WX 500 ; N endash ; B -10 228 510 278 ;
+C 178 ; WX 500 ; N dagger ; B 48 0 469 692 ;
+C 179 ; WX 500 ; N daggerdbl ; B 10 -162 494 692 ;
+C 180 ; WX 250 ; N periodcentered ; B 53 195 158 312 ;
+C 182 ; WX 500 ; N paragraph ; B 33 -224 611 692 ;
+C 183 ; WX 500 ; N bullet ; B 86 182 430 526 ;
+C 184 ; WX 278 ; N quotesinglbase ; B 27 -122 211 120 ;
+C 185 ; WX 500 ; N quotedblbase ; B 43 -122 424 120 ;
+C 186 ; WX 500 ; N quotedblright ; B 98 488 475 733 ;
+C 187 ; WX 500 ; N guillemotright ; B 63 70 443 440 ;
+C 188 ; WX 1000 ; N ellipsis ; B 102 -5 873 112 ;
+C 189 ; WX 1000 ; N perthousand ; B 72 -6 929 717 ;
+C 191 ; WX 500 ; N questiondown ; B 57 -246 370 467 ;
+C 193 ; WX 333 ; N grave ; B 86 518 310 687 ;
+C 194 ; WX 333 ; N acute ; B 122 518 346 687 ;
+C 195 ; WX 333 ; N circumflex ; B 56 510 350 679 ;
+C 196 ; WX 333 ; N tilde ; B 63 535 390 638 ;
+C 197 ; WX 333 ; N macron ; B 74 538 386 589 ;
+C 198 ; WX 333 ; N breve ; B 92 518 393 677 ;
+C 199 ; WX 333 ; N dotaccent ; B 175 537 283 645 ;
+C 200 ; WX 333 ; N dieresis ; B 78 537 378 637 ;
+C 202 ; WX 333 ; N ring ; B 159 508 359 708 ;
+C 203 ; WX 333 ; N cedilla ; B -9 -216 202 0 ;
+C 205 ; WX 333 ; N hungarumlaut ; B 46 518 385 730 ;
+C 206 ; WX 333 ; N ogonek ; B 38 -207 196 -18 ;
+C 207 ; WX 333 ; N caron ; B 104 510 409 679 ;
+C 208 ; WX 1000 ; N emdash ; B -10 228 1010 278 ;
+C 225 ; WX 941 ; N AE ; B -4 -3 902 692 ;
+C 227 ; WX 333 ; N ordfeminine ; B 60 404 321 699 ;
+C 232 ; WX 556 ; N Lslash ; B -16 -3 523 692 ;
+C 233 ; WX 778 ; N Oslash ; B 32 -39 762 721 ;
+C 234 ; WX 1028 ; N OE ; B 56 -18 989 706 ;
+C 235 ; WX 333 ; N ordmasculine ; B 66 404 322 699 ;
+C 241 ; WX 638 ; N ae ; B 1 -11 623 482 ;
+C 245 ; WX 278 ; N dotlessi ; B 34 -9 241 482 ;
+C 248 ; WX 278 ; N lslash ; B -10 -9 302 733 ;
+C 249 ; WX 444 ; N oslash ; B -18 -24 460 510 ;
+C 250 ; WX 669 ; N oe ; B 17 -11 654 482 ;
+C 251 ; WX 500 ; N germandbls ; B -160 -276 488 733 ;
+C -1 ; WX 667 ; N Zcaron ; B 20 -3 637 907 ;
+C -1 ; WX 407 ; N ccedilla ; B 25 -216 389 482 ;
+C -1 ; WX 500 ; N ydieresis ; B -8 -276 490 657 ;
+C -1 ; WX 444 ; N atilde ; B 4 -11 446 650 ;
+C -1 ; WX 278 ; N icircumflex ; B 29 -9 323 699 ;
+C -1 ; WX 300 ; N threesuperior ; B 28 273 304 699 ;
+C -1 ; WX 389 ; N ecircumflex ; B 15 -11 398 699 ;
+C -1 ; WX 500 ; N thorn ; B -39 -276 433 733 ;
+C -1 ; WX 389 ; N egrave ; B 15 -11 374 707 ;
+C -1 ; WX 300 ; N twosuperior ; B 13 278 290 699 ;
+C -1 ; WX 389 ; N eacute ; B 15 -11 394 707 ;
+C -1 ; WX 444 ; N otilde ; B 17 -11 446 650 ;
+C -1 ; WX 722 ; N Aacute ; B -19 -3 677 897 ;
+C -1 ; WX 444 ; N ocircumflex ; B 17 -11 411 699 ;
+C -1 ; WX 500 ; N yacute ; B -8 -276 490 707 ;
+C -1 ; WX 556 ; N udieresis ; B 32 -11 512 657 ;
+C -1 ; WX 750 ; N threequarters ; B 35 -2 715 699 ;
+C -1 ; WX 444 ; N acircumflex ; B 4 -11 406 699 ;
+C -1 ; WX 778 ; N Eth ; B 19 -3 741 692 ;
+C -1 ; WX 389 ; N edieresis ; B 15 -11 406 657 ;
+C -1 ; WX 556 ; N ugrave ; B 32 -11 512 707 ;
+C -1 ; WX 1000 ; N trademark ; B 52 285 951 689 ;
+C -1 ; WX 444 ; N ograve ; B 17 -11 411 707 ;
+C -1 ; WX 389 ; N scaron ; B 9 -11 419 687 ;
+C -1 ; WX 333 ; N Idieresis ; B 7 -3 418 847 ;
+C -1 ; WX 556 ; N uacute ; B 32 -11 512 707 ;
+C -1 ; WX 444 ; N agrave ; B 4 -11 406 707 ;
+C -1 ; WX 556 ; N ntilde ; B 24 -9 514 650 ;
+C -1 ; WX 444 ; N aring ; B 4 -11 406 728 ;
+C -1 ; WX 444 ; N zcaron ; B -1 -11 447 687 ;
+C -1 ; WX 333 ; N Icircumflex ; B 7 -3 390 889 ;
+C -1 ; WX 778 ; N Ntilde ; B 2 -11 804 866 ;
+C -1 ; WX 556 ; N ucircumflex ; B 32 -11 512 699 ;
+C -1 ; WX 611 ; N Ecircumflex ; B 30 -3 570 889 ;
+C -1 ; WX 333 ; N Iacute ; B 7 -3 406 897 ;
+C -1 ; WX 667 ; N Ccedilla ; B 45 -216 651 706 ;
+C -1 ; WX 778 ; N Odieresis ; B 53 -18 748 847 ;
+C -1 ; WX 556 ; N Scaron ; B 42 -18 539 907 ;
+C -1 ; WX 611 ; N Edieresis ; B 30 -3 570 847 ;
+C -1 ; WX 333 ; N Igrave ; B 7 -3 354 897 ;
+C -1 ; WX 444 ; N adieresis ; B 4 -11 434 657 ;
+C -1 ; WX 778 ; N Ograve ; B 53 -18 748 897 ;
+C -1 ; WX 611 ; N Egrave ; B 30 -3 570 897 ;
+C -1 ; WX 667 ; N Ydieresis ; B 52 -3 675 847 ;
+C -1 ; WX 747 ; N registered ; B 11 -18 736 706 ;
+C -1 ; WX 778 ; N Otilde ; B 53 -18 748 866 ;
+C -1 ; WX 750 ; N onequarter ; B 31 -2 715 699 ;
+C -1 ; WX 778 ; N Ugrave ; B 88 -18 798 897 ;
+C -1 ; WX 778 ; N Ucircumflex ; B 88 -18 798 889 ;
+C -1 ; WX 611 ; N Thorn ; B 9 -3 570 692 ;
+C -1 ; WX 606 ; N divide ; B 51 0 555 504 ;
+C -1 ; WX 722 ; N Atilde ; B -19 -3 677 866 ;
+C -1 ; WX 778 ; N Uacute ; B 88 -18 798 897 ;
+C -1 ; WX 778 ; N Ocircumflex ; B 53 -18 748 889 ;
+C -1 ; WX 606 ; N logicalnot ; B 51 118 555 378 ;
+C -1 ; WX 722 ; N Aring ; B -19 -3 677 918 ;
+C -1 ; WX 278 ; N idieresis ; B 34 -9 351 657 ;
+C -1 ; WX 278 ; N iacute ; B 34 -9 331 707 ;
+C -1 ; WX 444 ; N aacute ; B 4 -11 414 707 ;
+C -1 ; WX 606 ; N plusminus ; B 51 0 555 504 ;
+C -1 ; WX 606 ; N multiply ; B 83 36 523 474 ;
+C -1 ; WX 778 ; N Udieresis ; B 88 -18 798 847 ;
+C -1 ; WX 606 ; N minus ; B 51 224 555 280 ;
+C -1 ; WX 300 ; N onesuperior ; B 61 278 285 699 ;
+C -1 ; WX 611 ; N Eacute ; B 30 -3 570 897 ;
+C -1 ; WX 722 ; N Acircumflex ; B -19 -3 677 889 ;
+C -1 ; WX 747 ; N copyright ; B 11 -18 736 706 ;
+C -1 ; WX 722 ; N Agrave ; B -19 -3 677 897 ;
+C -1 ; WX 444 ; N odieresis ; B 17 -11 434 657 ;
+C -1 ; WX 444 ; N oacute ; B 17 -11 414 707 ;
+C -1 ; WX 400 ; N degree ; B 90 389 390 689 ;
+C -1 ; WX 278 ; N igrave ; B 34 -9 271 707 ;
+C -1 ; WX 556 ; N mu ; B 15 -226 512 482 ;
+C -1 ; WX 778 ; N Oacute ; B 53 -18 748 897 ;
+C -1 ; WX 444 ; N eth ; B 17 -11 478 733 ;
+C -1 ; WX 722 ; N Adieresis ; B -19 -3 677 847 ;
+C -1 ; WX 667 ; N Yacute ; B 52 -3 675 897 ;
+C -1 ; WX 606 ; N brokenbar ; B 275 0 331 733 ;
+C -1 ; WX 750 ; N onehalf ; B 31 -2 721 699 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 106
+
+KPX A y -55
+KPX A w -37
+KPX A v -37
+KPX A space -37
+KPX A quoteright -55
+KPX A Y -55
+KPX A W -55
+KPX A V -74
+KPX A T -55
+
+KPX F period -111
+KPX F comma -111
+KPX F A -111
+
+KPX L y -37
+KPX L space -18
+KPX L quoteright -37
+KPX L Y -74
+KPX L W -74
+KPX L V -74
+KPX L T -74
+
+KPX P period -129
+KPX P comma -129
+KPX P A -129
+
+KPX R y -37
+KPX R Y -55
+KPX R W -55
+KPX R V -74
+KPX R T -55
+
+KPX T y -92
+KPX T w -92
+KPX T u -111
+KPX T semicolon -74
+KPX T s -111
+KPX T r -111
+KPX T period -74
+KPX T o -111
+KPX T i -55
+KPX T hyphen -55
+KPX T e -111
+KPX T comma -74
+KPX T colon -74
+KPX T c -111
+KPX T a -111
+KPX T O -18
+KPX T A -92
+
+KPX V y -74
+KPX V u -74
+KPX V semicolon -37
+KPX V r -92
+KPX V period -129
+KPX V o -74
+KPX V i -74
+KPX V hyphen -55
+KPX V e -92
+KPX V comma -129
+KPX V colon -37
+KPX V a -74
+KPX V A -210
+
+KPX W y -20
+KPX W u -20
+KPX W semicolon -18
+KPX W r -20
+KPX W period -55
+KPX W o -20
+KPX W i -20
+KPX W hyphen -18
+KPX W e -20
+KPX W comma -55
+KPX W colon -18
+KPX W a -20
+KPX W A -92
+
+KPX Y v -74
+KPX Y u -92
+KPX Y semicolon -74
+KPX Y q -92
+KPX Y period -92
+KPX Y p -74
+KPX Y o -111
+KPX Y i -55
+KPX Y hyphen -74
+KPX Y e -111
+KPX Y comma -92
+KPX Y colon -74
+KPX Y a -92
+KPX Y A -92
+
+KPX f quoteright 55
+
+KPX one one -55
+
+KPX quoteleft quoteleft -74
+
+KPX quoteright t -37
+KPX quoteright space -55
+KPX quoteright s -55
+KPX quoteright quoteright -74
+
+KPX r quoteright 37
+KPX r q -18
+KPX r period -74
+KPX r o -18
+KPX r h -18
+KPX r g -18
+KPX r e -18
+KPX r comma -74
+KPX r c -18
+
+KPX v period -55
+KPX v comma -55
+
+KPX w period -55
+KPX w comma -55
+
+KPX y period -37
+KPX y comma -37
+EndKernPairs
+EndKernData
+StartComposites 58
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 271 210 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 261 210 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 255 210 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 235 210 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 235 210 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 255 228 ;
+CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 207 0 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 199 210 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 179 210 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 179 210 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 167 210 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 60 210 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 40 210 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 40 210 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 28 210 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 263 228 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 283 210 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 263 210 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 255 210 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 251 210 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 263 228 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 130 228 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 277 210 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 255 210 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 235 210 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 235 210 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 227 210 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 187 210 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 179 228 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 68 20 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 56 20 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 56 20 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 44 20 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 36 20 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 56 12 ;
+CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 37 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 48 20 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 48 20 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 28 20 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 16 20 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -15 20 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -27 20 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -27 20 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -39 20 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 112 12 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 68 20 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 56 20 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 56 20 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 36 20 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 56 12 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 10 8 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 124 20 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 112 20 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 112 20 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 100 20 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 96 20 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 84 20 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 38 8 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/Pa-It+ b/font/font/Pa-It+
new file mode 100644
index 0000000..b98042e
--- /dev/null
+++ b/font/font/Pa-It+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 667 ; N Ccaron ; B 45 -18 680 924 ;
+C -1 ; WX 407 ; N ccaron ; B 25 -11 464 679 ;
+C -1 ; WX 778 ; N Dcaron ; B 28 -3 741 924 ;
+C -1 ; WX 626 ; N dcaron ; B 17 -11 681 806 ;
+C -1 ; WX 611 ; N Ecaron ; B 30 -3 591 924 ;
+C -1 ; WX 389 ; N ecaron ; B 15 -11 437 679 ;
+C -1 ; WX 556 ; N Lcaron ; B 16 -3 552 761 ;
+C -1 ; WX 556 ; N Lacute ; B 16 -3 523 924 ;
+C -1 ; WX 404 ; N lcaron ; B 36 -9 449 806 ;
+C -1 ; WX 278 ; N lacute ; B 36 -9 382 924 ;
+C -1 ; WX 778 ; N Ncaron ; B 2 -11 804 924 ;
+C -1 ; WX 556 ; N ncaron ; B 24 -9 520 679 ;
+C -1 ; WX 667 ; N Rcaron ; B 9 -3 639 924 ;
+C -1 ; WX 667 ; N Racute ; B 9 -3 639 924 ;
+C -1 ; WX 389 ; N rcaron ; B 26 -9 437 679 ;
+C -1 ; WX 389 ; N racute ; B 26 -9 396 687 ;
+C -1 ; WX 611 ; N Tcaron ; B 53 -3 635 924 ;
+C -1 ; WX 459 ; N tcaron ; B 41 -9 508 733 ;
+C -1 ; WX 778 ; N Uring ; B 88 -18 798 924 ;
+C -1 ; WX 556 ; N uring ; B 32 -11 512 708 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 271 245 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 55 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 265 245 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 423 73 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 182 245 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 28 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 294 28 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 152 237 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 191 73 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 36 237 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 265 245 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 111 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 210 245 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 251 237 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 28 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 50 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 182 245 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 250 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 260 216 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 111 0 ;
+EndBuildComposites
diff --git a/font/font/Pa-ItF b/font/font/Pa-ItF
new file mode 100644
index 0000000..fec6226
--- /dev/null
+++ b/font/font/Pa-ItF
@@ -0,0 +1,437 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1990, 1991 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Wed Apr 24 13:28:10 1991
+Comment UniqueID 34736
+Comment VMusage 37767 48659
+FontName Palatino-ItalicOsF
+FullName Palatino Italic Old Style Figures
+FamilyName Palatino
+Weight Medium
+ItalicAngle -10
+IsFixedPitch false
+FontBBox -170 -276 989 918
+UnderlinePosition -131
+UnderlineThickness 58
+Version 001.001
+Notice Copyright (c) 1985, 1987, 1989, 1990, 1991 Adobe Systems Incorporated. All Rights Reserved.Palatino is a trademark of Linotype AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 692
+XHeight 482
+Ascender 733
+Descender -276
+StartCharMetrics 228
+C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 333 ; N exclam ; B 76 -8 292 733 ;
+C 34 ; WX 500 ; N quotedbl ; B 140 508 455 733 ;
+C 35 ; WX 500 ; N numbersign ; B 4 0 495 692 ;
+C 36 ; WX 500 ; N dollar ; B 15 -113 452 733 ;
+C 37 ; WX 889 ; N percent ; B 74 -7 809 710 ;
+C 38 ; WX 778 ; N ampersand ; B 47 -18 766 692 ;
+C 39 ; WX 278 ; N quoteright ; B 78 488 258 733 ;
+C 40 ; WX 333 ; N parenleft ; B 54 -106 331 733 ;
+C 41 ; WX 333 ; N parenright ; B 2 -106 279 733 ;
+C 42 ; WX 389 ; N asterisk ; B 76 368 400 706 ;
+C 43 ; WX 606 ; N plus ; B 51 0 555 504 ;
+C 44 ; WX 250 ; N comma ; B 8 -143 203 123 ;
+C 45 ; WX 333 ; N hyphen ; B 19 223 304 281 ;
+C 46 ; WX 250 ; N period ; B 53 -5 158 112 ;
+C 47 ; WX 296 ; N slash ; B -40 -119 392 733 ;
+C 48 ; WX 500 ; N zero ; B 36 -14 456 478 ;
+C 49 ; WX 500 ; N one ; B 60 -8 398 482 ;
+C 50 ; WX 500 ; N two ; B 26 -10 426 478 ;
+C 51 ; WX 500 ; N three ; B 6 -226 394 478 ;
+C 52 ; WX 500 ; N four ; B 6 -226 462 478 ;
+C 53 ; WX 500 ; N five ; B 6 -226 442 478 ;
+C 54 ; WX 500 ; N six ; B 49 -14 479 684 ;
+C 55 ; WX 500 ; N seven ; B 28 -226 488 478 ;
+C 56 ; WX 500 ; N eight ; B 32 -14 456 672 ;
+C 57 ; WX 500 ; N nine ; B 12 -232 446 478 ;
+C 58 ; WX 250 ; N colon ; B 44 -5 207 458 ;
+C 59 ; WX 250 ; N semicolon ; B -9 -146 219 456 ;
+C 60 ; WX 606 ; N less ; B 53 -6 554 516 ;
+C 61 ; WX 606 ; N equal ; B 51 126 555 378 ;
+C 62 ; WX 606 ; N greater ; B 53 -6 554 516 ;
+C 63 ; WX 500 ; N question ; B 114 -8 427 706 ;
+C 64 ; WX 747 ; N at ; B 27 -18 718 706 ;
+C 65 ; WX 722 ; N A ; B -19 -3 677 705 ;
+C 66 ; WX 611 ; N B ; B 26 -6 559 692 ;
+C 67 ; WX 667 ; N C ; B 45 -18 651 706 ;
+C 68 ; WX 778 ; N D ; B 28 -3 741 692 ;
+C 69 ; WX 611 ; N E ; B 30 -3 570 692 ;
+C 70 ; WX 556 ; N F ; B 0 -3 548 692 ;
+C 71 ; WX 722 ; N G ; B 50 -18 694 706 ;
+C 72 ; WX 778 ; N H ; B -3 -3 800 692 ;
+C 73 ; WX 333 ; N I ; B 7 -3 354 692 ;
+C 74 ; WX 333 ; N J ; B -35 -206 358 692 ;
+C 75 ; WX 667 ; N K ; B 13 -3 683 692 ;
+C 76 ; WX 556 ; N L ; B 16 -3 523 692 ;
+C 77 ; WX 944 ; N M ; B -19 -18 940 692 ;
+C 78 ; WX 778 ; N N ; B 2 -11 804 692 ;
+C 79 ; WX 778 ; N O ; B 53 -18 748 706 ;
+C 80 ; WX 611 ; N P ; B 9 -3 594 692 ;
+C 81 ; WX 778 ; N Q ; B 53 -201 748 706 ;
+C 82 ; WX 667 ; N R ; B 9 -3 639 692 ;
+C 83 ; WX 556 ; N S ; B 42 -18 506 706 ;
+C 84 ; WX 611 ; N T ; B 53 -3 635 692 ;
+C 85 ; WX 778 ; N U ; B 88 -18 798 692 ;
+C 86 ; WX 722 ; N V ; B 75 -8 754 692 ;
+C 87 ; WX 944 ; N W ; B 71 -8 980 700 ;
+C 88 ; WX 722 ; N X ; B 20 -3 734 692 ;
+C 89 ; WX 667 ; N Y ; B 52 -3 675 705 ;
+C 90 ; WX 667 ; N Z ; B 20 -3 637 692 ;
+C 91 ; WX 333 ; N bracketleft ; B 18 -100 326 733 ;
+C 92 ; WX 606 ; N backslash ; B 81 0 513 733 ;
+C 93 ; WX 333 ; N bracketright ; B 7 -100 315 733 ;
+C 94 ; WX 606 ; N asciicircum ; B 51 283 554 689 ;
+C 95 ; WX 500 ; N underscore ; B 0 -160 500 -102 ;
+C 96 ; WX 278 ; N quoteleft ; B 78 488 258 733 ;
+C 97 ; WX 444 ; N a ; B 4 -11 406 482 ;
+C 98 ; WX 463 ; N b ; B 37 -11 433 733 ;
+C 99 ; WX 407 ; N c ; B 25 -11 389 482 ;
+C 100 ; WX 500 ; N d ; B 17 -11 483 733 ;
+C 101 ; WX 389 ; N e ; B 15 -11 374 482 ;
+C 102 ; WX 278 ; N f ; B -162 -276 413 733 ; L i fi ; L l fl ;
+C 103 ; WX 500 ; N g ; B -37 -276 498 482 ;
+C 104 ; WX 500 ; N h ; B 10 -9 471 733 ;
+C 105 ; WX 278 ; N i ; B 34 -9 264 712 ;
+C 106 ; WX 278 ; N j ; B -70 -276 265 712 ;
+C 107 ; WX 444 ; N k ; B 8 -9 449 733 ;
+C 108 ; WX 278 ; N l ; B 36 -9 251 733 ;
+C 109 ; WX 778 ; N m ; B 24 -9 740 482 ;
+C 110 ; WX 556 ; N n ; B 24 -9 514 482 ;
+C 111 ; WX 444 ; N o ; B 17 -11 411 482 ;
+C 112 ; WX 500 ; N p ; B -7 -276 465 482 ;
+C 113 ; WX 463 ; N q ; B 24 -276 432 482 ;
+C 114 ; WX 389 ; N r ; B 26 -9 384 482 ;
+C 115 ; WX 389 ; N s ; B 9 -11 345 482 ;
+C 116 ; WX 333 ; N t ; B 41 -9 310 646 ;
+C 117 ; WX 556 ; N u ; B 32 -11 512 482 ;
+C 118 ; WX 500 ; N v ; B 21 -11 477 482 ;
+C 119 ; WX 722 ; N w ; B 21 -11 699 482 ;
+C 120 ; WX 500 ; N x ; B 9 -11 484 482 ;
+C 121 ; WX 500 ; N y ; B -8 -276 490 482 ;
+C 122 ; WX 444 ; N z ; B -1 -11 416 482 ;
+C 123 ; WX 333 ; N braceleft ; B 15 -100 319 733 ;
+C 124 ; WX 606 ; N bar ; B 275 0 331 733 ;
+C 125 ; WX 333 ; N braceright ; B 14 -100 318 733 ;
+C 126 ; WX 606 ; N asciitilde ; B 51 168 555 339 ;
+C 161 ; WX 333 ; N exclamdown ; B 15 -276 233 467 ;
+C 162 ; WX 500 ; N cent ; B 56 -96 418 551 ;
+C 163 ; WX 500 ; N sterling ; B 2 -18 479 708 ;
+C 164 ; WX 167 ; N fraction ; B -170 0 337 699 ;
+C 165 ; WX 500 ; N yen ; B 35 -3 512 699 ;
+C 166 ; WX 500 ; N florin ; B 5 -276 470 708 ;
+C 167 ; WX 500 ; N section ; B 14 -220 463 706 ;
+C 168 ; WX 500 ; N currency ; B 14 115 486 577 ;
+C 169 ; WX 333 ; N quotesingle ; B 140 508 288 733 ;
+C 170 ; WX 500 ; N quotedblleft ; B 98 488 475 733 ;
+C 171 ; WX 500 ; N guillemotleft ; B 57 70 437 440 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 57 70 270 440 ;
+C 173 ; WX 333 ; N guilsinglright ; B 63 70 276 440 ;
+C 174 ; WX 528 ; N fi ; B -162 -276 502 733 ;
+C 175 ; WX 545 ; N fl ; B -162 -276 520 733 ;
+C 177 ; WX 500 ; N endash ; B -10 228 510 278 ;
+C 178 ; WX 500 ; N dagger ; B 48 0 469 692 ;
+C 179 ; WX 500 ; N daggerdbl ; B 10 -162 494 692 ;
+C 180 ; WX 250 ; N periodcentered ; B 53 195 158 312 ;
+C 182 ; WX 500 ; N paragraph ; B 33 -224 611 692 ;
+C 183 ; WX 500 ; N bullet ; B 86 182 430 526 ;
+C 184 ; WX 278 ; N quotesinglbase ; B 27 -122 211 120 ;
+C 185 ; WX 500 ; N quotedblbase ; B 43 -122 424 120 ;
+C 186 ; WX 500 ; N quotedblright ; B 98 488 475 733 ;
+C 187 ; WX 500 ; N guillemotright ; B 63 70 443 440 ;
+C 188 ; WX 1000 ; N ellipsis ; B 102 -5 873 112 ;
+C 189 ; WX 1000 ; N perthousand ; B 72 -6 929 717 ;
+C 191 ; WX 500 ; N questiondown ; B 57 -246 370 467 ;
+C 193 ; WX 333 ; N grave ; B 86 518 310 687 ;
+C 194 ; WX 333 ; N acute ; B 122 518 346 687 ;
+C 195 ; WX 333 ; N circumflex ; B 56 510 350 679 ;
+C 196 ; WX 333 ; N tilde ; B 63 535 390 638 ;
+C 197 ; WX 333 ; N macron ; B 74 538 386 589 ;
+C 198 ; WX 333 ; N breve ; B 92 518 393 677 ;
+C 199 ; WX 333 ; N dotaccent ; B 125 537 233 645 ;
+C 200 ; WX 333 ; N dieresis ; B 78 537 378 637 ;
+C 202 ; WX 333 ; N ring ; B 159 508 359 708 ;
+C 203 ; WX 333 ; N cedilla ; B -9 -216 202 0 ;
+C 205 ; WX 333 ; N hungarumlaut ; B 46 518 385 730 ;
+C 206 ; WX 333 ; N ogonek ; B 38 -207 196 -18 ;
+C 207 ; WX 333 ; N caron ; B 104 510 409 679 ;
+C 208 ; WX 1000 ; N emdash ; B 115 228 885 278 ;
+C 225 ; WX 941 ; N AE ; B -4 -3 902 692 ;
+C 227 ; WX 333 ; N ordfeminine ; B 60 404 321 699 ;
+C 232 ; WX 556 ; N Lslash ; B -16 -3 523 692 ;
+C 233 ; WX 778 ; N Oslash ; B 32 -39 762 721 ;
+C 234 ; WX 1028 ; N OE ; B 56 -18 989 706 ;
+C 235 ; WX 333 ; N ordmasculine ; B 66 404 322 699 ;
+C 241 ; WX 638 ; N ae ; B 1 -11 623 482 ;
+C 245 ; WX 278 ; N dotlessi ; B 34 -9 241 482 ;
+C 248 ; WX 278 ; N lslash ; B -10 -9 302 733 ;
+C 249 ; WX 444 ; N oslash ; B -18 -24 460 510 ;
+C 250 ; WX 669 ; N oe ; B 17 -11 654 482 ;
+C 251 ; WX 500 ; N germandbls ; B -160 -276 488 733 ;
+C -1 ; WX 389 ; N ecircumflex ; B 15 -11 398 699 ;
+C -1 ; WX 389 ; N edieresis ; B 15 -11 406 657 ;
+C -1 ; WX 444 ; N aacute ; B 4 -11 414 707 ;
+C -1 ; WX 747 ; N registered ; B 11 -18 736 706 ;
+C -1 ; WX 278 ; N icircumflex ; B 29 -9 323 699 ;
+C -1 ; WX 556 ; N udieresis ; B 32 -11 512 657 ;
+C -1 ; WX 444 ; N ograve ; B 17 -11 411 707 ;
+C -1 ; WX 556 ; N uacute ; B 32 -11 512 707 ;
+C -1 ; WX 556 ; N ucircumflex ; B 32 -11 512 699 ;
+C -1 ; WX 722 ; N Aacute ; B -19 -3 677 897 ;
+C -1 ; WX 278 ; N igrave ; B 34 -9 271 707 ;
+C -1 ; WX 333 ; N Icircumflex ; B 7 -3 390 889 ;
+C -1 ; WX 407 ; N ccedilla ; B 25 -216 389 482 ;
+C -1 ; WX 444 ; N adieresis ; B 4 -11 434 657 ;
+C -1 ; WX 611 ; N Ecircumflex ; B 30 -3 570 889 ;
+C -1 ; WX 389 ; N scaron ; B 9 -11 419 687 ;
+C -1 ; WX 500 ; N thorn ; B -39 -276 433 733 ;
+C -1 ; WX 1000 ; N trademark ; B 52 285 951 689 ;
+C -1 ; WX 389 ; N egrave ; B 15 -11 374 707 ;
+C -1 ; WX 300 ; N threesuperior ; B 28 273 304 699 ;
+C -1 ; WX 444 ; N zcaron ; B -1 -11 447 687 ;
+C -1 ; WX 444 ; N atilde ; B 4 -11 446 650 ;
+C -1 ; WX 444 ; N aring ; B 4 -11 406 728 ;
+C -1 ; WX 444 ; N ocircumflex ; B 17 -11 411 699 ;
+C -1 ; WX 611 ; N Edieresis ; B 30 -3 570 847 ;
+C -1 ; WX 750 ; N threequarters ; B 35 -2 715 699 ;
+C -1 ; WX 500 ; N ydieresis ; B -8 -276 490 657 ;
+C -1 ; WX 500 ; N yacute ; B -8 -276 490 707 ;
+C -1 ; WX 278 ; N iacute ; B 34 -9 331 707 ;
+C -1 ; WX 722 ; N Acircumflex ; B -19 -3 677 889 ;
+C -1 ; WX 778 ; N Uacute ; B 88 -18 798 897 ;
+C -1 ; WX 389 ; N eacute ; B 15 -11 394 707 ;
+C -1 ; WX 778 ; N Ograve ; B 53 -18 748 897 ;
+C -1 ; WX 444 ; N agrave ; B 4 -11 406 707 ;
+C -1 ; WX 778 ; N Udieresis ; B 88 -18 798 847 ;
+C -1 ; WX 444 ; N acircumflex ; B 4 -11 406 699 ;
+C -1 ; WX 333 ; N Igrave ; B 7 -3 354 897 ;
+C -1 ; WX 300 ; N twosuperior ; B 13 278 290 699 ;
+C -1 ; WX 778 ; N Ugrave ; B 88 -18 798 897 ;
+C -1 ; WX 750 ; N onequarter ; B 31 -2 715 699 ;
+C -1 ; WX 778 ; N Ucircumflex ; B 88 -18 798 889 ;
+C -1 ; WX 556 ; N Scaron ; B 42 -18 539 907 ;
+C -1 ; WX 333 ; N Idieresis ; B 7 -3 418 847 ;
+C -1 ; WX 278 ; N idieresis ; B 34 -9 351 657 ;
+C -1 ; WX 611 ; N Egrave ; B 30 -3 570 897 ;
+C -1 ; WX 778 ; N Oacute ; B 53 -18 748 897 ;
+C -1 ; WX 606 ; N divide ; B 51 0 555 504 ;
+C -1 ; WX 722 ; N Atilde ; B -19 -3 677 866 ;
+C -1 ; WX 722 ; N Aring ; B -19 -3 677 918 ;
+C -1 ; WX 778 ; N Odieresis ; B 53 -18 748 847 ;
+C -1 ; WX 722 ; N Adieresis ; B -19 -3 677 847 ;
+C -1 ; WX 778 ; N Ntilde ; B 2 -11 804 866 ;
+C -1 ; WX 667 ; N Zcaron ; B 20 -3 637 907 ;
+C -1 ; WX 611 ; N Thorn ; B 9 -3 570 692 ;
+C -1 ; WX 333 ; N Iacute ; B 7 -3 406 897 ;
+C -1 ; WX 606 ; N plusminus ; B 51 0 555 504 ;
+C -1 ; WX 606 ; N multiply ; B 83 36 523 474 ;
+C -1 ; WX 611 ; N Eacute ; B 30 -3 570 897 ;
+C -1 ; WX 667 ; N Ydieresis ; B 52 -3 675 847 ;
+C -1 ; WX 300 ; N onesuperior ; B 61 278 285 699 ;
+C -1 ; WX 556 ; N ugrave ; B 32 -11 512 707 ;
+C -1 ; WX 606 ; N logicalnot ; B 51 118 555 378 ;
+C -1 ; WX 556 ; N ntilde ; B 24 -9 514 650 ;
+C -1 ; WX 778 ; N Otilde ; B 53 -18 748 866 ;
+C -1 ; WX 444 ; N otilde ; B 17 -11 446 650 ;
+C -1 ; WX 667 ; N Ccedilla ; B 45 -216 651 706 ;
+C -1 ; WX 722 ; N Agrave ; B -19 -3 677 897 ;
+C -1 ; WX 750 ; N onehalf ; B 31 -2 721 699 ;
+C -1 ; WX 778 ; N Eth ; B 19 -3 741 692 ;
+C -1 ; WX 400 ; N degree ; B 90 389 390 689 ;
+C -1 ; WX 667 ; N Yacute ; B 52 -3 675 897 ;
+C -1 ; WX 778 ; N Ocircumflex ; B 53 -18 748 889 ;
+C -1 ; WX 444 ; N oacute ; B 17 -11 414 707 ;
+C -1 ; WX 556 ; N mu ; B 15 -226 512 482 ;
+C -1 ; WX 606 ; N minus ; B 51 224 555 280 ;
+C -1 ; WX 444 ; N eth ; B 17 -11 478 733 ;
+C -1 ; WX 444 ; N odieresis ; B 17 -11 434 657 ;
+C -1 ; WX 747 ; N copyright ; B 11 -18 736 706 ;
+C -1 ; WX 606 ; N brokenbar ; B 275 0 331 733 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 106
+
+KPX A y -55
+KPX A w -37
+KPX A v -37
+KPX A space -37
+KPX A quoteright -55
+KPX A Y -55
+KPX A W -55
+KPX A V -74
+KPX A T -55
+
+KPX F period -111
+KPX F comma -111
+KPX F A -111
+
+KPX L y -37
+KPX L space -18
+KPX L quoteright -37
+KPX L Y -74
+KPX L W -74
+KPX L V -74
+KPX L T -74
+
+KPX P period -129
+KPX P comma -129
+KPX P A -129
+
+KPX R y -37
+KPX R Y -55
+KPX R W -55
+KPX R V -74
+KPX R T -55
+
+KPX T y -92
+KPX T w -92
+KPX T u -111
+KPX T semicolon -74
+KPX T s -111
+KPX T r -111
+KPX T period -74
+KPX T o -111
+KPX T i -55
+KPX T hyphen -55
+KPX T e -111
+KPX T comma -74
+KPX T colon -74
+KPX T c -111
+KPX T a -111
+KPX T O -18
+KPX T A -92
+
+KPX V y -74
+KPX V u -74
+KPX V semicolon -37
+KPX V r -92
+KPX V period -129
+KPX V o -74
+KPX V i -74
+KPX V hyphen -55
+KPX V e -92
+KPX V comma -129
+KPX V colon -37
+KPX V a -74
+KPX V A -210
+
+KPX W y -20
+KPX W u -20
+KPX W semicolon -18
+KPX W r -20
+KPX W period -55
+KPX W o -20
+KPX W i -20
+KPX W hyphen -18
+KPX W e -20
+KPX W comma -55
+KPX W colon -18
+KPX W a -20
+KPX W A -92
+
+KPX Y v -74
+KPX Y u -92
+KPX Y semicolon -74
+KPX Y q -92
+KPX Y period -92
+KPX Y p -74
+KPX Y o -111
+KPX Y i -55
+KPX Y hyphen -74
+KPX Y e -111
+KPX Y comma -92
+KPX Y colon -74
+KPX Y a -92
+KPX Y A -92
+
+KPX f quoteright 55
+
+KPX one one -55
+
+KPX quoteleft quoteleft -74
+
+KPX quoteright t -37
+KPX quoteright space -55
+KPX quoteright s -55
+KPX quoteright quoteright -74
+
+KPX r quoteright 37
+KPX r q -18
+KPX r period -74
+KPX r o -18
+KPX r h -18
+KPX r g -18
+KPX r e -18
+KPX r comma -74
+KPX r c -18
+
+KPX v period -55
+KPX v comma -55
+
+KPX w period -55
+KPX w comma -55
+
+KPX y period -37
+KPX y comma -37
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 271 210 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 261 210 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 255 210 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 235 210 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 235 210 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 255 228 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 199 210 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 179 210 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 179 210 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 167 210 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 60 210 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 40 210 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 40 210 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 28 210 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 263 228 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 283 210 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 263 210 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 255 210 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 251 210 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 263 228 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 130 228 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 277 210 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 255 210 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 235 210 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 235 210 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 227 210 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 187 210 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 179 228 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 68 20 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 56 20 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 56 20 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 44 20 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 36 20 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 56 12 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 48 20 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 48 20 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 28 20 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 16 20 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -15 20 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -27 20 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -27 20 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -39 20 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 112 12 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 68 20 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 56 20 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 56 20 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 36 20 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 56 12 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 10 8 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 124 20 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 112 20 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 112 20 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 100 20 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 96 20 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 84 20 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 38 8 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/Pa-ItF+ b/font/font/Pa-ItF+
new file mode 100644
index 0000000..b98042e
--- /dev/null
+++ b/font/font/Pa-ItF+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 667 ; N Ccaron ; B 45 -18 680 924 ;
+C -1 ; WX 407 ; N ccaron ; B 25 -11 464 679 ;
+C -1 ; WX 778 ; N Dcaron ; B 28 -3 741 924 ;
+C -1 ; WX 626 ; N dcaron ; B 17 -11 681 806 ;
+C -1 ; WX 611 ; N Ecaron ; B 30 -3 591 924 ;
+C -1 ; WX 389 ; N ecaron ; B 15 -11 437 679 ;
+C -1 ; WX 556 ; N Lcaron ; B 16 -3 552 761 ;
+C -1 ; WX 556 ; N Lacute ; B 16 -3 523 924 ;
+C -1 ; WX 404 ; N lcaron ; B 36 -9 449 806 ;
+C -1 ; WX 278 ; N lacute ; B 36 -9 382 924 ;
+C -1 ; WX 778 ; N Ncaron ; B 2 -11 804 924 ;
+C -1 ; WX 556 ; N ncaron ; B 24 -9 520 679 ;
+C -1 ; WX 667 ; N Rcaron ; B 9 -3 639 924 ;
+C -1 ; WX 667 ; N Racute ; B 9 -3 639 924 ;
+C -1 ; WX 389 ; N rcaron ; B 26 -9 437 679 ;
+C -1 ; WX 389 ; N racute ; B 26 -9 396 687 ;
+C -1 ; WX 611 ; N Tcaron ; B 53 -3 635 924 ;
+C -1 ; WX 459 ; N tcaron ; B 41 -9 508 733 ;
+C -1 ; WX 778 ; N Uring ; B 88 -18 798 924 ;
+C -1 ; WX 556 ; N uring ; B 32 -11 512 708 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 271 245 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 55 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 265 245 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 423 73 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 182 245 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 28 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 294 28 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 152 237 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 191 73 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 36 237 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 265 245 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 111 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 210 245 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 251 237 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 28 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 50 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 182 245 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 250 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 260 216 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 111 0 ;
+EndBuildComposites
diff --git a/font/font/Pa-Rm b/font/font/Pa-Rm
new file mode 100644
index 0000000..6566b16
--- /dev/null
+++ b/font/font/Pa-Rm
@@ -0,0 +1,445 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Mon Jul 2 22:14:17 1990
+Comment UniqueID 31790
+Comment VMusage 36445 47337
+FontName Palatino-Roman
+FullName Palatino Roman
+FamilyName Palatino
+Weight Roman
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -166 -283 1021 927
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.005
+Notice Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.Palatino is a trademark of Linotype AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 692
+XHeight 469
+Ascender 726
+Descender -281
+StartCharMetrics 228
+C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 278 ; N exclam ; B 81 -5 197 694 ;
+C 34 ; WX 371 ; N quotedbl ; B 52 469 319 709 ;
+C 35 ; WX 500 ; N numbersign ; B 4 0 495 684 ;
+C 36 ; WX 500 ; N dollar ; B 30 -116 471 731 ;
+C 37 ; WX 840 ; N percent ; B 39 -20 802 709 ;
+C 38 ; WX 778 ; N ampersand ; B 43 -20 753 689 ;
+C 39 ; WX 278 ; N quoteright ; B 45 446 233 709 ;
+C 40 ; WX 333 ; N parenleft ; B 60 -215 301 726 ;
+C 41 ; WX 333 ; N parenright ; B 32 -215 273 726 ;
+C 42 ; WX 389 ; N asterisk ; B 32 342 359 689 ;
+C 43 ; WX 606 ; N plus ; B 51 7 555 512 ;
+C 44 ; WX 250 ; N comma ; B 16 -155 218 123 ;
+C 45 ; WX 333 ; N hyphen ; B 17 215 312 287 ;
+C 46 ; WX 250 ; N period ; B 67 -5 183 111 ;
+C 47 ; WX 606 ; N slash ; B 87 -119 519 726 ;
+C 48 ; WX 500 ; N zero ; B 29 -20 465 689 ;
+C 49 ; WX 500 ; N one ; B 60 -3 418 694 ;
+C 50 ; WX 500 ; N two ; B 16 -3 468 689 ;
+C 51 ; WX 500 ; N three ; B 15 -20 462 689 ;
+C 52 ; WX 500 ; N four ; B 2 -3 472 694 ;
+C 53 ; WX 500 ; N five ; B 13 -20 459 689 ;
+C 54 ; WX 500 ; N six ; B 32 -20 468 689 ;
+C 55 ; WX 500 ; N seven ; B 44 -3 497 689 ;
+C 56 ; WX 500 ; N eight ; B 30 -20 464 689 ;
+C 57 ; WX 500 ; N nine ; B 20 -20 457 689 ;
+C 58 ; WX 250 ; N colon ; B 66 -5 182 456 ;
+C 59 ; WX 250 ; N semicolon ; B 16 -153 218 456 ;
+C 60 ; WX 606 ; N less ; B 57 0 558 522 ;
+C 61 ; WX 606 ; N equal ; B 51 136 555 386 ;
+C 62 ; WX 606 ; N greater ; B 48 0 549 522 ;
+C 63 ; WX 444 ; N question ; B 43 -5 395 694 ;
+C 64 ; WX 747 ; N at ; B 24 -20 724 694 ;
+C 65 ; WX 778 ; N A ; B 15 -3 756 700 ;
+C 66 ; WX 611 ; N B ; B 26 -3 576 692 ;
+C 67 ; WX 709 ; N C ; B 22 -20 670 709 ;
+C 68 ; WX 774 ; N D ; B 22 -3 751 692 ;
+C 69 ; WX 611 ; N E ; B 22 -3 572 692 ;
+C 70 ; WX 556 ; N F ; B 22 -3 536 692 ;
+C 71 ; WX 763 ; N G ; B 22 -20 728 709 ;
+C 72 ; WX 832 ; N H ; B 22 -3 810 692 ;
+C 73 ; WX 337 ; N I ; B 22 -3 315 692 ;
+C 74 ; WX 333 ; N J ; B -15 -194 311 692 ;
+C 75 ; WX 726 ; N K ; B 22 -3 719 692 ;
+C 76 ; WX 611 ; N L ; B 22 -3 586 692 ;
+C 77 ; WX 946 ; N M ; B 16 -13 926 692 ;
+C 78 ; WX 831 ; N N ; B 17 -20 813 692 ;
+C 79 ; WX 786 ; N O ; B 22 -20 764 709 ;
+C 80 ; WX 604 ; N P ; B 22 -3 580 692 ;
+C 81 ; WX 786 ; N Q ; B 22 -176 764 709 ;
+C 82 ; WX 668 ; N R ; B 22 -3 669 692 ;
+C 83 ; WX 525 ; N S ; B 24 -20 503 709 ;
+C 84 ; WX 613 ; N T ; B 18 -3 595 692 ;
+C 85 ; WX 778 ; N U ; B 12 -20 759 692 ;
+C 86 ; WX 722 ; N V ; B 8 -9 706 692 ;
+C 87 ; WX 1000 ; N W ; B 8 -9 984 700 ;
+C 88 ; WX 667 ; N X ; B 14 -3 648 700 ;
+C 89 ; WX 667 ; N Y ; B 9 -3 654 704 ;
+C 90 ; WX 667 ; N Z ; B 15 -3 638 692 ;
+C 91 ; WX 333 ; N bracketleft ; B 79 -184 288 726 ;
+C 92 ; WX 606 ; N backslash ; B 81 0 512 726 ;
+C 93 ; WX 333 ; N bracketright ; B 45 -184 254 726 ;
+C 94 ; WX 606 ; N asciicircum ; B 51 283 554 689 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 278 ; N quoteleft ; B 45 446 233 709 ;
+C 97 ; WX 500 ; N a ; B 32 -12 471 469 ;
+C 98 ; WX 553 ; N b ; B -15 -12 508 726 ;
+C 99 ; WX 444 ; N c ; B 26 -20 413 469 ;
+C 100 ; WX 611 ; N d ; B 35 -12 579 726 ;
+C 101 ; WX 479 ; N e ; B 26 -20 448 469 ;
+C 102 ; WX 333 ; N f ; B 23 -3 341 728 ; L i fi ; L l fl ;
+C 103 ; WX 556 ; N g ; B 32 -283 544 469 ;
+C 104 ; WX 582 ; N h ; B 6 -3 572 726 ;
+C 105 ; WX 291 ; N i ; B 21 -3 271 687 ;
+C 106 ; WX 234 ; N j ; B -40 -283 167 688 ;
+C 107 ; WX 556 ; N k ; B 21 -12 549 726 ;
+C 108 ; WX 291 ; N l ; B 21 -3 271 726 ;
+C 109 ; WX 883 ; N m ; B 16 -3 869 469 ;
+C 110 ; WX 582 ; N n ; B 6 -3 572 469 ;
+C 111 ; WX 546 ; N o ; B 32 -20 514 469 ;
+C 112 ; WX 601 ; N p ; B 8 -281 554 469 ;
+C 113 ; WX 560 ; N q ; B 35 -281 560 469 ;
+C 114 ; WX 395 ; N r ; B 21 -3 374 469 ;
+C 115 ; WX 424 ; N s ; B 30 -20 391 469 ;
+C 116 ; WX 326 ; N t ; B 22 -12 319 621 ;
+C 117 ; WX 603 ; N u ; B 18 -12 581 469 ;
+C 118 ; WX 565 ; N v ; B 6 -7 539 459 ;
+C 119 ; WX 834 ; N w ; B 6 -7 808 469 ;
+C 120 ; WX 516 ; N x ; B 20 -3 496 469 ;
+C 121 ; WX 556 ; N y ; B 12 -283 544 459 ;
+C 122 ; WX 500 ; N z ; B 16 -3 466 462 ;
+C 123 ; WX 333 ; N braceleft ; B 58 -175 289 726 ;
+C 124 ; WX 606 ; N bar ; B 275 0 331 726 ;
+C 125 ; WX 333 ; N braceright ; B 44 -175 275 726 ;
+C 126 ; WX 606 ; N asciitilde ; B 51 176 555 347 ;
+C 161 ; WX 278 ; N exclamdown ; B 81 -225 197 469 ;
+C 162 ; WX 500 ; N cent ; B 61 -101 448 562 ;
+C 163 ; WX 500 ; N sterling ; B 12 -13 478 694 ;
+C 164 ; WX 167 ; N fraction ; B -166 0 337 689 ;
+C 165 ; WX 500 ; N yen ; B 5 -3 496 701 ;
+C 166 ; WX 500 ; N florin ; B 0 -262 473 706 ;
+C 167 ; WX 500 ; N section ; B 26 -219 465 709 ;
+C 168 ; WX 500 ; N currency ; B 30 96 470 531 ;
+C 169 ; WX 208 ; N quotesingle ; B 61 469 147 709 ;
+C 170 ; WX 500 ; N quotedblleft ; B 51 446 449 709 ;
+C 171 ; WX 500 ; N guillemotleft ; B 50 71 450 428 ;
+C 172 ; WX 331 ; N guilsinglleft ; B 66 71 265 428 ;
+C 173 ; WX 331 ; N guilsinglright ; B 66 71 265 428 ;
+C 174 ; WX 605 ; N fi ; B 23 -3 587 728 ;
+C 175 ; WX 608 ; N fl ; B 23 -3 590 728 ;
+C 177 ; WX 500 ; N endash ; B 0 219 500 277 ;
+C 178 ; WX 500 ; N dagger ; B 34 -5 466 694 ;
+C 179 ; WX 500 ; N daggerdbl ; B 34 -249 466 694 ;
+C 180 ; WX 250 ; N periodcentered ; B 67 203 183 319 ;
+C 182 ; WX 628 ; N paragraph ; B 39 -150 589 694 ;
+C 183 ; WX 606 ; N bullet ; B 131 172 475 516 ;
+C 184 ; WX 278 ; N quotesinglbase ; B 22 -153 210 110 ;
+C 185 ; WX 500 ; N quotedblbase ; B 51 -153 449 110 ;
+C 186 ; WX 500 ; N quotedblright ; B 51 446 449 709 ;
+C 187 ; WX 500 ; N guillemotright ; B 50 71 450 428 ;
+C 188 ; WX 1000 ; N ellipsis ; B 109 -5 891 111 ;
+C 189 ; WX 1144 ; N perthousand ; B 123 -20 1021 709 ;
+C 191 ; WX 444 ; N questiondown ; B 43 -231 395 469 ;
+C 193 ; WX 333 ; N grave ; B 31 506 255 677 ;
+C 194 ; WX 333 ; N acute ; B 78 506 302 677 ;
+C 195 ; WX 333 ; N circumflex ; B 11 510 323 677 ;
+C 196 ; WX 333 ; N tilde ; B 2 535 332 640 ;
+C 197 ; WX 333 ; N macron ; B 11 538 323 591 ;
+C 198 ; WX 333 ; N breve ; B 26 506 308 664 ;
+C 199 ; WX 250 ; N dotaccent ; B 75 537 175 637 ;
+C 200 ; WX 333 ; N dieresis ; B 17 537 316 637 ;
+C 202 ; WX 333 ; N ring ; B 67 496 267 696 ;
+C 203 ; WX 333 ; N cedilla ; B 96 -225 304 -10 ;
+C 205 ; WX 380 ; N hungarumlaut ; B 3 506 377 687 ;
+C 206 ; WX 313 ; N ogonek ; B 68 -165 245 -20 ;
+C 207 ; WX 333 ; N caron ; B 11 510 323 677 ;
+C 208 ; WX 1000 ; N emdash ; B 0 219 1000 277 ;
+C 225 ; WX 944 ; N AE ; B -10 -3 908 692 ;
+C 227 ; WX 333 ; N ordfeminine ; B 24 422 310 709 ;
+C 232 ; WX 611 ; N Lslash ; B 6 -3 586 692 ;
+C 233 ; WX 833 ; N Oslash ; B 30 -20 797 709 ;
+C 234 ; WX 998 ; N OE ; B 22 -20 962 709 ;
+C 235 ; WX 333 ; N ordmasculine ; B 10 416 323 709 ;
+C 241 ; WX 758 ; N ae ; B 30 -20 732 469 ;
+C 245 ; WX 287 ; N dotlessi ; B 21 -3 271 469 ;
+C 248 ; WX 291 ; N lslash ; B -14 -3 306 726 ;
+C 249 ; WX 556 ; N oslash ; B 16 -23 530 474 ;
+C 250 ; WX 827 ; N oe ; B 32 -20 800 469 ;
+C 251 ; WX 556 ; N germandbls ; B 23 -9 519 731 ;
+C -1 ; WX 667 ; N Zcaron ; B 15 -3 638 908 ;
+C -1 ; WX 444 ; N ccedilla ; B 26 -225 413 469 ;
+C -1 ; WX 556 ; N ydieresis ; B 12 -283 544 657 ;
+C -1 ; WX 500 ; N atilde ; B 32 -12 471 652 ;
+C -1 ; WX 287 ; N icircumflex ; B -12 -3 300 697 ;
+C -1 ; WX 300 ; N threesuperior ; B 1 266 299 689 ;
+C -1 ; WX 479 ; N ecircumflex ; B 26 -20 448 697 ;
+C -1 ; WX 601 ; N thorn ; B -2 -281 544 726 ;
+C -1 ; WX 479 ; N egrave ; B 26 -20 448 697 ;
+C -1 ; WX 300 ; N twosuperior ; B 0 273 301 689 ;
+C -1 ; WX 479 ; N eacute ; B 26 -20 448 697 ;
+C -1 ; WX 546 ; N otilde ; B 32 -20 514 652 ;
+C -1 ; WX 778 ; N Aacute ; B 15 -3 756 908 ;
+C -1 ; WX 546 ; N ocircumflex ; B 32 -20 514 697 ;
+C -1 ; WX 556 ; N yacute ; B 12 -283 544 697 ;
+C -1 ; WX 603 ; N udieresis ; B 18 -12 581 657 ;
+C -1 ; WX 750 ; N threequarters ; B 15 -3 735 689 ;
+C -1 ; WX 500 ; N acircumflex ; B 32 -12 471 697 ;
+C -1 ; WX 774 ; N Eth ; B 14 -3 751 692 ;
+C -1 ; WX 479 ; N edieresis ; B 26 -20 448 657 ;
+C -1 ; WX 603 ; N ugrave ; B 18 -12 581 697 ;
+C -1 ; WX 979 ; N trademark ; B 40 285 939 689 ;
+C -1 ; WX 546 ; N ograve ; B 32 -20 514 697 ;
+C -1 ; WX 424 ; N scaron ; B 30 -20 391 685 ;
+C -1 ; WX 337 ; N Idieresis ; B 19 -3 318 868 ;
+C -1 ; WX 603 ; N uacute ; B 18 -12 581 697 ;
+C -1 ; WX 500 ; N agrave ; B 32 -12 471 697 ;
+C -1 ; WX 582 ; N ntilde ; B 6 -3 572 652 ;
+C -1 ; WX 500 ; N aring ; B 32 -12 471 716 ;
+C -1 ; WX 500 ; N zcaron ; B 16 -3 466 685 ;
+C -1 ; WX 337 ; N Icircumflex ; B 13 -3 325 908 ;
+C -1 ; WX 831 ; N Ntilde ; B 17 -20 813 871 ;
+C -1 ; WX 603 ; N ucircumflex ; B 18 -12 581 697 ;
+C -1 ; WX 611 ; N Ecircumflex ; B 22 -3 572 908 ;
+C -1 ; WX 337 ; N Iacute ; B 22 -3 315 908 ;
+C -1 ; WX 709 ; N Ccedilla ; B 22 -225 670 709 ;
+C -1 ; WX 786 ; N Odieresis ; B 22 -20 764 868 ;
+C -1 ; WX 525 ; N Scaron ; B 24 -20 503 908 ;
+C -1 ; WX 611 ; N Edieresis ; B 22 -3 572 868 ;
+C -1 ; WX 337 ; N Igrave ; B 22 -3 315 908 ;
+C -1 ; WX 500 ; N adieresis ; B 32 -12 471 657 ;
+C -1 ; WX 786 ; N Ograve ; B 22 -20 764 908 ;
+C -1 ; WX 611 ; N Egrave ; B 22 -3 572 908 ;
+C -1 ; WX 667 ; N Ydieresis ; B 9 -3 654 868 ;
+C -1 ; WX 747 ; N registered ; B 11 -18 736 706 ;
+C -1 ; WX 786 ; N Otilde ; B 22 -20 764 883 ;
+C -1 ; WX 750 ; N onequarter ; B 30 -3 727 692 ;
+C -1 ; WX 778 ; N Ugrave ; B 12 -20 759 908 ;
+C -1 ; WX 778 ; N Ucircumflex ; B 12 -20 759 908 ;
+C -1 ; WX 604 ; N Thorn ; B 32 -3 574 692 ;
+C -1 ; WX 606 ; N divide ; B 51 10 555 512 ;
+C -1 ; WX 778 ; N Atilde ; B 15 -3 756 871 ;
+C -1 ; WX 778 ; N Uacute ; B 12 -20 759 908 ;
+C -1 ; WX 786 ; N Ocircumflex ; B 22 -20 764 908 ;
+C -1 ; WX 606 ; N logicalnot ; B 51 120 551 386 ;
+C -1 ; WX 778 ; N Aring ; B 15 -3 756 927 ;
+C -1 ; WX 287 ; N idieresis ; B -6 -3 293 657 ;
+C -1 ; WX 287 ; N iacute ; B 21 -3 279 697 ;
+C -1 ; WX 500 ; N aacute ; B 32 -12 471 697 ;
+C -1 ; WX 606 ; N plusminus ; B 51 0 555 512 ;
+C -1 ; WX 606 ; N multiply ; B 83 36 523 474 ;
+C -1 ; WX 778 ; N Udieresis ; B 12 -20 759 868 ;
+C -1 ; WX 606 ; N minus ; B 51 233 555 289 ;
+C -1 ; WX 300 ; N onesuperior ; B 31 273 269 692 ;
+C -1 ; WX 611 ; N Eacute ; B 22 -3 572 908 ;
+C -1 ; WX 778 ; N Acircumflex ; B 15 -3 756 908 ;
+C -1 ; WX 747 ; N copyright ; B 11 -18 736 706 ;
+C -1 ; WX 778 ; N Agrave ; B 15 -3 756 908 ;
+C -1 ; WX 546 ; N odieresis ; B 32 -20 514 657 ;
+C -1 ; WX 546 ; N oacute ; B 32 -20 514 697 ;
+C -1 ; WX 400 ; N degree ; B 50 389 350 689 ;
+C -1 ; WX 287 ; N igrave ; B 8 -3 271 697 ;
+C -1 ; WX 603 ; N mu ; B 18 -236 581 469 ;
+C -1 ; WX 786 ; N Oacute ; B 22 -20 764 908 ;
+C -1 ; WX 546 ; N eth ; B 32 -20 504 728 ;
+C -1 ; WX 778 ; N Adieresis ; B 15 -3 756 868 ;
+C -1 ; WX 667 ; N Yacute ; B 9 -3 654 908 ;
+C -1 ; WX 606 ; N brokenbar ; B 275 0 331 726 ;
+C -1 ; WX 750 ; N onehalf ; B 15 -3 735 692 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 111
+
+KPX A y -74
+KPX A w -74
+KPX A v -92
+KPX A space -55
+KPX A quoteright -74
+KPX A Y -111
+KPX A W -74
+KPX A V -111
+KPX A T -74
+
+KPX F period -92
+KPX F comma -92
+KPX F A -74
+
+KPX L y -55
+KPX L space -37
+KPX L quoteright -74
+KPX L Y -92
+KPX L W -74
+KPX L V -92
+KPX L T -74
+
+KPX P space -18
+KPX P period -129
+KPX P comma -129
+KPX P A -92
+
+KPX R y -37
+KPX R Y -37
+KPX R W -37
+KPX R V -55
+KPX R T -37
+
+KPX T y -90
+KPX T w -90
+KPX T u -90
+KPX T semicolon -55
+KPX T s -90
+KPX T r -90
+KPX T period -74
+KPX T o -92
+KPX T i -55
+KPX T hyphen -55
+KPX T e -92
+KPX T comma -74
+KPX T colon -55
+KPX T c -111
+KPX T a -92
+KPX T O -18
+KPX T A -74
+
+KPX V y -92
+KPX V u -92
+KPX V semicolon -55
+KPX V r -92
+KPX V period -129
+KPX V o -111
+KPX V i -55
+KPX V hyphen -74
+KPX V e -111
+KPX V comma -129
+KPX V colon -55
+KPX V a -92
+KPX V A -111
+
+KPX W y -50
+KPX W u -50
+KPX W semicolon -18
+KPX W r -74
+KPX W period -92
+KPX W o -92
+KPX W i -55
+KPX W hyphen -55
+KPX W e -92
+KPX W comma -92
+KPX W colon -18
+KPX W a -92
+KPX W A -92
+
+KPX Y v -90
+KPX Y u -90
+KPX Y space -18
+KPX Y semicolon -74
+KPX Y q -90
+KPX Y period -111
+KPX Y p -111
+KPX Y o -92
+KPX Y i -55
+KPX Y hyphen -92
+KPX Y e -92
+KPX Y comma -111
+KPX Y colon -74
+KPX Y a -92
+KPX Y A -92
+
+KPX f quoteright 55
+KPX f f -18
+
+KPX one one -55
+
+KPX quoteleft quoteleft -37
+
+KPX quoteright quoteright -37
+
+KPX r u -8
+KPX r quoteright 74
+KPX r q -18
+KPX r period -74
+KPX r o -18
+KPX r hyphen -18
+KPX r h -18
+KPX r g -18
+KPX r e -18
+KPX r d -18
+KPX r comma -74
+KPX r c -18
+
+KPX space Y -18
+KPX space A -37
+
+KPX v period -111
+KPX v comma -111
+
+KPX w period -92
+KPX w comma -92
+
+KPX y period -111
+KPX y comma -111
+EndKernPairs
+EndKernData
+StartComposites 58
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 229 231 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 223 231 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 223 231 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 215 231 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 223 231 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 223 231 ;
+CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 188 0 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 139 231 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 139 231 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 139 231 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 139 231 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 2 231 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 2 231 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 2 231 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 2 231 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 249 231 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 227 231 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 227 231 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 227 231 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 227 231 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 227 243 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 96 231 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 255 231 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 247 231 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 223 231 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 223 231 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 203 231 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 191 231 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 179 231 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 84 20 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 72 20 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 72 20 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 60 20 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 72 20 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 72 12 ;
+CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 56 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 97 20 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 85 20 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 73 20 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 73 20 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -23 20 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -23 20 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -23 20 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -23 20 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 113 12 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 107 20 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 107 20 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 107 20 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 95 20 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 107 12 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 46 8 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 159 20 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 135 20 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 135 20 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 111 20 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 144 20 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 112 20 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 84 8 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/Pa-Rm+ b/font/font/Pa-Rm+
new file mode 100644
index 0000000..b50adb9
--- /dev/null
+++ b/font/font/Pa-Rm+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 709 ; N Ccaron ; B 22 -20 670 922 ;
+C -1 ; WX 444 ; N ccaron ; B 26 -20 413 677 ;
+C -1 ; WX 774 ; N Dcaron ; B 22 -3 751 922 ;
+C -1 ; WX 743 ; N dcaron ; B 35 -12 786 799 ;
+C -1 ; WX 611 ; N Ecaron ; B 22 -3 572 922 ;
+C -1 ; WX 479 ; N ecaron ; B 26 -20 448 677 ;
+C -1 ; WX 611 ; N Lcaron ; B 22 -3 586 761 ;
+C -1 ; WX 611 ; N Lacute ; B 22 -3 586 926 ;
+C -1 ; WX 423 ; N lcaron ; B 21 -3 478 799 ;
+C -1 ; WX 291 ; N lacute ; B 21 -3 303 926 ;
+C -1 ; WX 831 ; N Ncaron ; B 17 -20 813 922 ;
+C -1 ; WX 582 ; N ncaron ; B 6 -3 572 677 ;
+C -1 ; WX 668 ; N Rcaron ; B 22 -3 669 922 ;
+C -1 ; WX 668 ; N Racute ; B 22 -3 669 926 ;
+C -1 ; WX 395 ; N rcaron ; B 21 -3 374 677 ;
+C -1 ; WX 395 ; N racute ; B 21 -3 374 677 ;
+C -1 ; WX 613 ; N Tcaron ; B 18 -3 595 922 ;
+C -1 ; WX 458 ; N tcaron ; B 22 -12 526 709 ;
+C -1 ; WX 778 ; N Uring ; B 12 -20 759 922 ;
+C -1 ; WX 603 ; N uring ; B 18 -12 581 696 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 253 245 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 74 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 220 245 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 553 90 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 139 245 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 73 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 289 52 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 139 249 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 245 90 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 1 249 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 249 245 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 124 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 167 245 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 210 249 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 31 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 53 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 140 245 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 293 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 222 226 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 135 0 ;
+EndBuildComposites
diff --git a/font/font/Pa-SC b/font/font/Pa-SC
new file mode 100644
index 0000000..5d85bd6
--- /dev/null
+++ b/font/font/Pa-SC
@@ -0,0 +1,511 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1990, 1991 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Thu Apr 25 10:03:17 1991
+Comment UniqueID 34745
+Comment VMusage 38816 49708
+FontName Palatino-SC
+FullName Palatino Small Caps & Old Style Figures
+FamilyName Palatino
+Weight Roman
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -166 -262 1021 928
+UnderlinePosition -131
+UnderlineThickness 58
+Version 001.001
+Notice Copyright (c) 1985, 1987, 1989, 1990, 1991 Adobe Systems Incorporated. All Rights Reserved.Palatino is a trademark of Linotype AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 692
+XHeight 493
+Ascender 486
+Descender -3
+StartCharMetrics 228
+C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 278 ; N exclam ; B 81 -5 197 694 ;
+C 34 ; WX 371 ; N quotedbl ; B 52 469 319 709 ;
+C 35 ; WX 500 ; N numbersign ; B 4 0 495 684 ;
+C 36 ; WX 500 ; N dollar ; B 30 -116 471 731 ;
+C 37 ; WX 840 ; N percent ; B 39 -20 802 709 ;
+C 38 ; WX 778 ; N ampersand ; B 43 -20 753 689 ;
+C 39 ; WX 278 ; N quoteright ; B 45 446 233 709 ;
+C 40 ; WX 333 ; N parenleft ; B 60 -215 301 726 ;
+C 41 ; WX 333 ; N parenright ; B 32 -215 273 726 ;
+C 42 ; WX 389 ; N asterisk ; B 32 342 359 689 ;
+C 43 ; WX 606 ; N plus ; B 51 7 555 512 ;
+C 44 ; WX 250 ; N comma ; B 16 -155 218 123 ;
+C 45 ; WX 333 ; N hyphen ; B 17 215 312 287 ;
+C 46 ; WX 250 ; N period ; B 67 -5 183 111 ;
+C 47 ; WX 606 ; N slash ; B 87 -119 519 726 ;
+C 48 ; WX 500 ; N zero ; B 22 -20 478 478 ;
+C 49 ; WX 500 ; N one ; B 72 -3 430 484 ;
+C 50 ; WX 500 ; N two ; B 23 -9 468 478 ;
+C 51 ; WX 500 ; N three ; B 14 -236 438 478 ;
+C 52 ; WX 500 ; N four ; B 4 -236 468 478 ;
+C 53 ; WX 500 ; N five ; B 14 -236 444 472 ;
+C 54 ; WX 500 ; N six ; B 32 -14 468 700 ;
+C 55 ; WX 500 ; N seven ; B 42 -236 494 470 ;
+C 56 ; WX 500 ; N eight ; B 30 -14 464 694 ;
+C 57 ; WX 500 ; N nine ; B 30 -238 466 478 ;
+C 58 ; WX 250 ; N colon ; B 66 -5 182 456 ;
+C 59 ; WX 250 ; N semicolon ; B 16 -153 218 456 ;
+C 60 ; WX 606 ; N less ; B 57 0 558 522 ;
+C 61 ; WX 606 ; N equal ; B 51 136 555 386 ;
+C 62 ; WX 606 ; N greater ; B 48 0 549 522 ;
+C 63 ; WX 444 ; N question ; B 43 -5 395 694 ;
+C 64 ; WX 747 ; N at ; B 24 -20 724 694 ;
+C 65 ; WX 778 ; N A ; B 15 -3 756 700 ;
+C 66 ; WX 611 ; N B ; B 26 -3 576 692 ;
+C 67 ; WX 709 ; N C ; B 22 -20 670 709 ;
+C 68 ; WX 774 ; N D ; B 22 -3 751 692 ;
+C 69 ; WX 611 ; N E ; B 22 -3 572 692 ;
+C 70 ; WX 556 ; N F ; B 22 -3 536 692 ;
+C 71 ; WX 763 ; N G ; B 22 -20 728 709 ;
+C 72 ; WX 832 ; N H ; B 22 -3 810 692 ;
+C 73 ; WX 337 ; N I ; B 22 -3 315 692 ;
+C 74 ; WX 333 ; N J ; B -15 -194 311 692 ;
+C 75 ; WX 726 ; N K ; B 22 -3 719 692 ;
+C 76 ; WX 611 ; N L ; B 22 -3 586 692 ;
+C 77 ; WX 946 ; N M ; B 16 -13 926 692 ;
+C 78 ; WX 831 ; N N ; B 17 -20 813 692 ;
+C 79 ; WX 786 ; N O ; B 22 -20 764 709 ;
+C 80 ; WX 604 ; N P ; B 22 -3 580 692 ;
+C 81 ; WX 786 ; N Q ; B 22 -176 764 709 ;
+C 82 ; WX 668 ; N R ; B 22 -3 669 692 ;
+C 83 ; WX 525 ; N S ; B 24 -20 503 709 ;
+C 84 ; WX 613 ; N T ; B 18 -3 595 692 ;
+C 85 ; WX 778 ; N U ; B 12 -20 759 692 ;
+C 86 ; WX 722 ; N V ; B 8 -9 706 692 ;
+C 87 ; WX 1000 ; N W ; B 8 -9 984 700 ;
+C 88 ; WX 667 ; N X ; B 14 -3 648 700 ;
+C 89 ; WX 667 ; N Y ; B 9 -3 654 704 ;
+C 90 ; WX 667 ; N Z ; B 15 -3 638 692 ;
+C 91 ; WX 333 ; N bracketleft ; B 79 -184 288 726 ;
+C 92 ; WX 606 ; N backslash ; B 81 0 512 726 ;
+C 93 ; WX 333 ; N bracketright ; B 45 -184 254 726 ;
+C 94 ; WX 606 ; N asciicircum ; B 51 283 554 689 ;
+C 95 ; WX 500 ; N underscore ; B 0 -160 500 -102 ;
+C 96 ; WX 278 ; N quoteleft ; B 45 446 233 709 ;
+C 97 ; WX 611 ; N a ; B 18 -3 592 498 ;
+C 98 ; WX 500 ; N b ; B 28 -2 466 486 ;
+C 99 ; WX 556 ; N c ; B 44 -14 528 498 ;
+C 100 ; WX 611 ; N d ; B 36 -2 566 486 ;
+C 101 ; WX 500 ; N e ; B 23 -3 458 492 ;
+C 102 ; WX 444 ; N f ; B 18 -3 420 492 ; L i fi ; L l fl ;
+C 103 ; WX 556 ; N g ; B 28 -14 528 497 ;
+C 104 ; WX 667 ; N h ; B 24 -3 650 487 ;
+C 105 ; WX 333 ; N i ; B 30 -3 300 487 ;
+C 106 ; WX 333 ; N j ; B 12 -147 300 487 ;
+C 107 ; WX 556 ; N k ; B 28 -3 552 487 ;
+C 108 ; WX 500 ; N l ; B 20 -3 468 487 ;
+C 109 ; WX 778 ; N m ; B 34 -12 738 487 ;
+C 110 ; WX 667 ; N n ; B 24 -14 644 487 ;
+C 111 ; WX 611 ; N o ; B 40 -14 570 498 ;
+C 112 ; WX 500 ; N p ; B 24 -3 468 492 ;
+C 113 ; WX 611 ; N q ; B 40 -138 570 498 ;
+C 114 ; WX 556 ; N r ; B 24 -3 552 487 ;
+C 115 ; WX 444 ; N s ; B 44 -14 400 498 ;
+C 116 ; WX 500 ; N t ; B 18 -3 474 487 ;
+C 117 ; WX 611 ; N u ; B 20 -14 590 487 ;
+C 118 ; WX 556 ; N v ; B 12 -8 542 487 ;
+C 119 ; WX 778 ; N w ; B 12 -8 762 488 ;
+C 120 ; WX 500 ; N x ; B 16 -2 484 493 ;
+C 121 ; WX 500 ; N y ; B 14 -3 480 493 ;
+C 122 ; WX 500 ; N z ; B 20 -3 477 487 ;
+C 123 ; WX 333 ; N braceleft ; B 58 -175 289 726 ;
+C 124 ; WX 606 ; N bar ; B 275 0 331 726 ;
+C 125 ; WX 333 ; N braceright ; B 44 -175 275 726 ;
+C 126 ; WX 606 ; N asciitilde ; B 51 176 555 347 ;
+C 161 ; WX 278 ; N exclamdown ; B 81 -225 197 469 ;
+C 162 ; WX 500 ; N cent ; B 61 -101 448 562 ;
+C 163 ; WX 500 ; N sterling ; B 12 -13 478 694 ;
+C 164 ; WX 167 ; N fraction ; B -166 0 337 689 ;
+C 165 ; WX 500 ; N yen ; B 5 -3 496 701 ;
+C 166 ; WX 500 ; N florin ; B 0 -262 473 706 ;
+C 167 ; WX 500 ; N section ; B 26 -219 465 709 ;
+C 168 ; WX 611 ; N currency ; B 50 -14 586 484 ;
+C 169 ; WX 208 ; N quotesingle ; B 61 469 147 709 ;
+C 170 ; WX 500 ; N quotedblleft ; B 51 446 449 709 ;
+C 171 ; WX 500 ; N guillemotleft ; B 50 71 450 428 ;
+C 172 ; WX 331 ; N guilsinglleft ; B 66 71 265 428 ;
+C 173 ; WX 331 ; N guilsinglright ; B 66 71 265 428 ;
+C 174 ; WX 777 ; N fi ; B 18 -3 744 492 ;
+C 175 ; WX 944 ; N fl ; B 18 -3 912 492 ;
+C 177 ; WX 500 ; N endash ; B 0 219 500 277 ;
+C 178 ; WX 500 ; N dagger ; B 34 -5 466 694 ;
+C 179 ; WX 500 ; N daggerdbl ; B 34 -249 466 694 ;
+C 180 ; WX 250 ; N periodcentered ; B 67 203 183 319 ;
+C 182 ; WX 628 ; N paragraph ; B 39 -150 589 694 ;
+C 183 ; WX 606 ; N bullet ; B 131 172 475 516 ;
+C 184 ; WX 278 ; N quotesinglbase ; B 22 -153 210 110 ;
+C 185 ; WX 500 ; N quotedblbase ; B 51 -153 449 110 ;
+C 186 ; WX 500 ; N quotedblright ; B 51 446 449 709 ;
+C 187 ; WX 500 ; N guillemotright ; B 50 71 450 428 ;
+C 188 ; WX 1000 ; N ellipsis ; B 109 -5 891 111 ;
+C 189 ; WX 1144 ; N perthousand ; B 123 -20 1021 709 ;
+C 191 ; WX 444 ; N questiondown ; B 43 -231 395 469 ;
+C 193 ; WX 333 ; N grave ; B 31 531 255 702 ;
+C 194 ; WX 333 ; N acute ; B 78 531 302 702 ;
+C 195 ; WX 333 ; N circumflex ; B 11 531 323 698 ;
+C 196 ; WX 333 ; N tilde ; B 2 560 332 665 ;
+C 197 ; WX 333 ; N macron ; B 11 563 323 616 ;
+C 198 ; WX 333 ; N breve ; B 26 531 308 689 ;
+C 199 ; WX 250 ; N dotaccent ; B 75 562 175 662 ;
+C 200 ; WX 333 ; N dieresis ; B 17 562 316 662 ;
+C 202 ; WX 333 ; N ring ; B 67 521 267 721 ;
+C 203 ; WX 333 ; N cedilla ; B 96 -225 304 -10 ;
+C 205 ; WX 380 ; N hungarumlaut ; B 3 531 377 712 ;
+C 206 ; WX 313 ; N ogonek ; B 68 -165 245 -20 ;
+C 207 ; WX 333 ; N caron ; B 11 531 323 698 ;
+C 208 ; WX 1000 ; N emdash ; B 125 219 875 277 ;
+C 225 ; WX 944 ; N AE ; B -10 -3 908 692 ;
+C 227 ; WX 333 ; N ordfeminine ; B 24 422 310 709 ;
+C 232 ; WX 611 ; N Lslash ; B 6 -3 586 692 ;
+C 233 ; WX 833 ; N Oslash ; B 30 -20 797 709 ;
+C 234 ; WX 998 ; N OE ; B 22 -20 962 709 ;
+C 235 ; WX 333 ; N ordmasculine ; B 10 416 323 709 ;
+C 241 ; WX 778 ; N ae ; B 8 0 736 488 ;
+C 245 ; WX 333 ; N dotlessi ; B 30 -3 300 487 ;
+C 248 ; WX 500 ; N lslash ; B 20 -3 468 487 ;
+C 249 ; WX 611 ; N oslash ; B 32 -22 570 506 ;
+C 250 ; WX 833 ; N oe ; B 42 -14 794 498 ;
+C 251 ; WX 888 ; N germandbls ; B 44 -14 844 498 ;
+C -1 ; WX 500 ; N ecircumflex ; B 23 -3 458 718 ;
+C -1 ; WX 500 ; N edieresis ; B 23 -3 458 682 ;
+C -1 ; WX 611 ; N aacute ; B 18 -3 592 722 ;
+C -1 ; WX 747 ; N registered ; B 11 -18 736 706 ;
+C -1 ; WX 333 ; N icircumflex ; B 23 -3 335 718 ;
+C -1 ; WX 611 ; N udieresis ; B 20 -14 590 682 ;
+C -1 ; WX 611 ; N ograve ; B 40 -14 570 722 ;
+C -1 ; WX 611 ; N uacute ; B 20 -14 590 722 ;
+C -1 ; WX 611 ; N ucircumflex ; B 20 -14 590 718 ;
+C -1 ; WX 778 ; N Aacute ; B 15 -3 756 909 ;
+C -1 ; WX 333 ; N igrave ; B 30 -3 300 722 ;
+C -1 ; WX 337 ; N Icircumflex ; B 13 -3 325 905 ;
+C -1 ; WX 556 ; N ccedilla ; B 44 -225 528 498 ;
+C -1 ; WX 611 ; N adieresis ; B 18 -3 592 682 ;
+C -1 ; WX 611 ; N Ecircumflex ; B 22 -3 572 905 ;
+C -1 ; WX 444 ; N scaron ; B 44 -14 400 706 ;
+C -1 ; WX 500 ; N thorn ; B 24 -3 468 487 ;
+C -1 ; WX 979 ; N trademark ; B 40 285 939 689 ;
+C -1 ; WX 500 ; N egrave ; B 23 -3 458 722 ;
+C -1 ; WX 300 ; N threesuperior ; B 1 266 299 689 ;
+C -1 ; WX 500 ; N zcaron ; B 20 -3 477 706 ;
+C -1 ; WX 611 ; N atilde ; B 18 -3 592 677 ;
+C -1 ; WX 611 ; N aring ; B 18 -3 592 741 ;
+C -1 ; WX 611 ; N ocircumflex ; B 40 -14 570 718 ;
+C -1 ; WX 611 ; N Edieresis ; B 22 -3 572 869 ;
+C -1 ; WX 750 ; N threequarters ; B 15 -3 735 689 ;
+C -1 ; WX 500 ; N ydieresis ; B 14 -3 480 682 ;
+C -1 ; WX 500 ; N yacute ; B 14 -3 480 722 ;
+C -1 ; WX 333 ; N iacute ; B 30 -3 314 722 ;
+C -1 ; WX 778 ; N Acircumflex ; B 15 -3 756 905 ;
+C -1 ; WX 778 ; N Uacute ; B 12 -20 759 909 ;
+C -1 ; WX 500 ; N eacute ; B 23 -3 458 722 ;
+C -1 ; WX 786 ; N Ograve ; B 22 -20 764 909 ;
+C -1 ; WX 611 ; N agrave ; B 18 -3 592 722 ;
+C -1 ; WX 778 ; N Udieresis ; B 12 -20 759 869 ;
+C -1 ; WX 611 ; N acircumflex ; B 18 -3 592 718 ;
+C -1 ; WX 337 ; N Igrave ; B 22 -3 315 909 ;
+C -1 ; WX 300 ; N twosuperior ; B 0 273 301 689 ;
+C -1 ; WX 778 ; N Ugrave ; B 12 -20 759 909 ;
+C -1 ; WX 750 ; N onequarter ; B 30 -3 727 692 ;
+C -1 ; WX 778 ; N Ucircumflex ; B 12 -20 759 905 ;
+C -1 ; WX 525 ; N Scaron ; B 24 -20 503 905 ;
+C -1 ; WX 337 ; N Idieresis ; B 19 -3 318 869 ;
+C -1 ; WX 333 ; N idieresis ; B 29 -3 328 682 ;
+C -1 ; WX 611 ; N Egrave ; B 22 -3 572 909 ;
+C -1 ; WX 786 ; N Oacute ; B 22 -20 764 909 ;
+C -1 ; WX 606 ; N divide ; B 51 10 555 512 ;
+C -1 ; WX 778 ; N Atilde ; B 15 -3 756 872 ;
+C -1 ; WX 778 ; N Aring ; B 15 -3 756 928 ;
+C -1 ; WX 786 ; N Odieresis ; B 22 -20 764 869 ;
+C -1 ; WX 778 ; N Adieresis ; B 15 -3 756 869 ;
+C -1 ; WX 831 ; N Ntilde ; B 17 -20 813 872 ;
+C -1 ; WX 667 ; N Zcaron ; B 15 -3 638 905 ;
+C -1 ; WX 604 ; N Thorn ; B 32 -3 574 692 ;
+C -1 ; WX 337 ; N Iacute ; B 22 -3 315 909 ;
+C -1 ; WX 606 ; N plusminus ; B 51 0 555 512 ;
+C -1 ; WX 606 ; N multiply ; B 83 36 523 474 ;
+C -1 ; WX 611 ; N Eacute ; B 22 -3 572 909 ;
+C -1 ; WX 667 ; N Ydieresis ; B 9 -3 654 869 ;
+C -1 ; WX 300 ; N onesuperior ; B 31 273 269 692 ;
+C -1 ; WX 611 ; N ugrave ; B 20 -14 590 722 ;
+C -1 ; WX 606 ; N logicalnot ; B 51 120 551 386 ;
+C -1 ; WX 667 ; N ntilde ; B 24 -14 644 677 ;
+C -1 ; WX 786 ; N Otilde ; B 22 -20 764 884 ;
+C -1 ; WX 611 ; N otilde ; B 40 -14 570 677 ;
+C -1 ; WX 709 ; N Ccedilla ; B 22 -225 670 709 ;
+C -1 ; WX 778 ; N Agrave ; B 15 -3 756 909 ;
+C -1 ; WX 750 ; N onehalf ; B 15 -3 735 692 ;
+C -1 ; WX 774 ; N Eth ; B 14 -3 751 692 ;
+C -1 ; WX 400 ; N degree ; B 50 389 350 689 ;
+C -1 ; WX 667 ; N Yacute ; B 9 -3 654 909 ;
+C -1 ; WX 786 ; N Ocircumflex ; B 22 -20 764 905 ;
+C -1 ; WX 611 ; N oacute ; B 40 -14 570 722 ;
+C -1 ; WX 603 ; N mu ; B 18 -236 581 469 ;
+C -1 ; WX 606 ; N minus ; B 51 233 555 289 ;
+C -1 ; WX 611 ; N eth ; B 36 -2 566 486 ;
+C -1 ; WX 611 ; N odieresis ; B 40 -14 570 682 ;
+C -1 ; WX 747 ; N copyright ; B 11 -18 736 706 ;
+C -1 ; WX 606 ; N brokenbar ; B 275 0 331 726 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 164
+
+KPX A y -74
+KPX A w -74
+KPX A v -92
+KPX A u -55
+KPX A t -55
+KPX A quoteright -74
+KPX A q -55
+KPX A o -55
+KPX A g -37
+KPX A c -55
+KPX A Y -111
+KPX A W -74
+KPX A V -111
+KPX A U -37
+KPX A T -74
+
+KPX B a -37
+
+KPX D a -55
+
+KPX F period -92
+KPX F comma -92
+KPX F a -74
+KPX F A -74
+
+KPX L y -55
+KPX L quoteright -74
+KPX L Y -92
+KPX L W -74
+KPX L V -92
+KPX L T -74
+
+KPX O a -55
+
+KPX P period -129
+KPX P o -37
+KPX P comma -129
+KPX P a -92
+KPX P A -92
+
+KPX R y -37
+KPX R Y -37
+KPX R W -37
+KPX R V -55
+KPX R T -37
+
+KPX T y -74
+KPX T w -74
+KPX T u -74
+KPX T semicolon -55
+KPX T r -74
+KPX T period -74
+KPX T o -92
+KPX T i -55
+KPX T hyphen -55
+KPX T h -55
+KPX T e -55
+KPX T comma -74
+KPX T colon -55
+KPX T a -92
+KPX T O -18
+KPX T A -74
+
+KPX U a -55
+KPX U A -55
+
+KPX V u -74
+KPX V semicolon -55
+KPX V period -129
+KPX V o -111
+KPX V i -55
+KPX V hyphen -74
+KPX V g -55
+KPX V e -111
+KPX V comma -129
+KPX V colon -55
+KPX V a -129
+KPX V A -129
+
+KPX W y -50
+KPX W u -50
+KPX W semicolon -18
+KPX W period -92
+KPX W o -92
+KPX W i -55
+KPX W hyphen -55
+KPX W h -55
+KPX W e -92
+KPX W comma -92
+KPX W colon -18
+KPX W a -111
+KPX W A -111
+
+KPX Y u -90
+KPX Y semicolon -74
+KPX Y s -37
+KPX Y period -111
+KPX Y o -92
+KPX Y i -55
+KPX Y hyphen -92
+KPX Y e -92
+KPX Y comma -111
+KPX Y colon -74
+KPX Y c -111
+KPX Y a -92
+KPX Y A -92
+
+KPX a y -55
+KPX a w -55
+KPX a v -74
+KPX a u -55
+KPX a t -37
+KPX a quoteright -37
+KPX a quotedblright -18
+KPX a o -18
+KPX a g -18
+KPX a c -18
+
+KPX d y -18
+KPX d w -18
+KPX d u -18
+KPX d period -37
+KPX d comma -37
+KPX d a -18
+
+KPX f period -55
+KPX f comma -55
+KPX f a -37
+
+KPX j period -37
+KPX j comma -37
+KPX j a -37
+
+KPX l y -55
+KPX l w -55
+KPX l v -55
+KPX l t -37
+KPX l quoteright -55
+
+KPX n period -18
+KPX n comma -18
+KPX n a -37
+
+KPX o y -18
+KPX o x -18
+KPX o v -37
+KPX o period -18
+KPX o comma -18
+KPX o a -55
+
+KPX p period -74
+KPX p comma -74
+KPX p a -55
+
+KPX quotedblleft a -18
+
+KPX quoteleft quoteleft -37
+KPX quoteleft a -37
+
+KPX quoteright quoteright -37
+
+KPX r v -18
+KPX r u -8
+KPX r q -18
+KPX r o -18
+KPX r hyphen -18
+KPX r c -18
+
+KPX s a -18
+
+KPX space Y -18
+KPX space A -37
+
+KPX t period -55
+KPX t comma -55
+KPX t a -37
+
+KPX u period -37
+KPX u comma -37
+KPX u a -55
+
+KPX v period -111
+KPX v comma -111
+KPX v a -92
+
+KPX w period -92
+KPX w comma -92
+KPX w a -74
+
+KPX x c -18
+
+KPX y period -111
+KPX y o -18
+KPX y comma -111
+KPX y c -18
+KPX y a -55
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 229 207 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 223 207 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 223 207 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 215 207 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 223 207 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 223 207 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 139 207 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 139 207 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 139 207 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 139 207 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 2 207 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 2 207 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 2 207 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 2 207 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 249 207 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 227 207 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 227 207 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 227 207 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 227 207 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 227 219 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 96 207 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 255 207 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 247 207 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 223 207 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 223 207 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 203 207 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 191 207 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 179 207 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 139 20 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 127 20 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 127 20 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 115 20 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 127 20 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 127 12 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 108 20 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 96 20 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 84 20 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 84 20 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute 12 20 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex 12 20 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis 12 20 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave 12 20 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 155 12 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 139 20 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 139 20 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 139 20 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 127 20 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 139 12 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 56 8 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 163 20 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 139 20 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 139 20 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 115 20 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 116 20 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 84 20 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 84 8 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/Pa-SC+ b/font/font/Pa-SC+
new file mode 100644
index 0000000..d30e094
--- /dev/null
+++ b/font/font/Pa-SC+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 709 ; N Ccaron ; B 22 -20 670 922 ;
+C -1 ; WX 556 ; N ccaron ; B 44 -14 528 698 ;
+C -1 ; WX 774 ; N Dcaron ; B 22 -3 751 922 ;
+C -1 ; WX 743 ; N dcaron ; B 36 -2 773 535 ;
+C -1 ; WX 611 ; N Ecaron ; B 22 -3 572 922 ;
+C -1 ; WX 500 ; N ecaron ; B 23 -3 458 698 ;
+C -1 ; WX 611 ; N Lcaron ; B 22 -3 586 761 ;
+C -1 ; WX 611 ; N Lacute ; B 22 -3 586 926 ;
+C -1 ; WX 632 ; N lcaron ; B 20 -3 675 536 ;
+C -1 ; WX 500 ; N lacute ; B 20 -3 468 926 ;
+C -1 ; WX 831 ; N Ncaron ; B 17 -20 813 922 ;
+C -1 ; WX 667 ; N ncaron ; B 24 -14 644 698 ;
+C -1 ; WX 668 ; N Rcaron ; B 22 -3 669 922 ;
+C -1 ; WX 668 ; N Racute ; B 22 -3 669 926 ;
+C -1 ; WX 556 ; N rcaron ; B 24 -3 552 698 ;
+C -1 ; WX 556 ; N racute ; B 24 -3 552 702 ;
+C -1 ; WX 613 ; N Tcaron ; B 18 -3 595 922 ;
+C -1 ; WX 632 ; N tcaron ; B 18 -3 681 709 ;
+C -1 ; WX 778 ; N Uring ; B 12 -20 759 922 ;
+C -1 ; WX 611 ; N uring ; B 20 -14 590 721 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 253 224 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 135 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 220 224 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 540 -174 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 139 224 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 83 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 289 52 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 139 224 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 442 -173 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 105 224 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 249 224 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 167 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 167 224 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 210 224 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 111 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 133 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 140 224 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 448 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 222 201 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 139 0 ;
+EndBuildComposites
diff --git a/font/font/Symbol b/font/font/Symbol
new file mode 100644
index 0000000..1cdbdae
--- /dev/null
+++ b/font/font/Symbol
@@ -0,0 +1,209 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All rights reserved.
+Comment Creation Date: Wed Jan 17 21:48:26 1990
+Comment UniqueID 27004
+Comment VMusage 28489 37622
+FontName Symbol
+FullName Symbol
+FamilyName Symbol
+Weight Medium
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -180 -293 1090 1010
+UnderlinePosition -98
+UnderlineThickness 54
+Version 001.007
+Notice Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All rights reserved.
+EncodingScheme FontSpecific
+StartCharMetrics 189
+C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 333 ; N exclam ; B 128 -17 240 672 ;
+C 34 ; WX 713 ; N universal ; B 31 0 681 705 ;
+C 35 ; WX 500 ; N numbersign ; B 20 -16 481 673 ;
+C 36 ; WX 549 ; N existential ; B 25 0 478 707 ;
+C 37 ; WX 833 ; N percent ; B 63 -36 771 655 ;
+C 38 ; WX 778 ; N ampersand ; B 41 -18 750 661 ;
+C 39 ; WX 439 ; N suchthat ; B 48 -17 414 500 ;
+C 40 ; WX 333 ; N parenleft ; B 53 -191 300 673 ;
+C 41 ; WX 333 ; N parenright ; B 30 -191 277 673 ;
+C 42 ; WX 500 ; N asteriskmath ; B 65 134 427 551 ;
+C 43 ; WX 549 ; N plus ; B 10 0 539 533 ;
+C 44 ; WX 250 ; N comma ; B 56 -152 194 104 ;
+C 45 ; WX 549 ; N minus ; B 11 233 535 288 ;
+C 46 ; WX 250 ; N period ; B 69 -17 181 95 ;
+C 47 ; WX 278 ; N slash ; B 0 -18 254 646 ;
+C 48 ; WX 500 ; N zero ; B 23 -17 471 685 ;
+C 49 ; WX 500 ; N one ; B 117 0 390 673 ;
+C 50 ; WX 500 ; N two ; B 25 0 475 686 ;
+C 51 ; WX 500 ; N three ; B 39 -17 435 685 ;
+C 52 ; WX 500 ; N four ; B 16 0 469 685 ;
+C 53 ; WX 500 ; N five ; B 29 -17 443 685 ;
+C 54 ; WX 500 ; N six ; B 36 -17 467 685 ;
+C 55 ; WX 500 ; N seven ; B 24 -16 448 673 ;
+C 56 ; WX 500 ; N eight ; B 54 -18 440 685 ;
+C 57 ; WX 500 ; N nine ; B 31 -18 460 685 ;
+C 58 ; WX 278 ; N colon ; B 81 -17 193 460 ;
+C 59 ; WX 278 ; N semicolon ; B 83 -152 221 460 ;
+C 60 ; WX 549 ; N less ; B 26 0 523 522 ;
+C 61 ; WX 549 ; N equal ; B 11 141 537 390 ;
+C 62 ; WX 549 ; N greater ; B 26 0 523 522 ;
+C 63 ; WX 444 ; N question ; B 70 -17 412 686 ;
+C 64 ; WX 549 ; N congruent ; B 11 0 537 475 ;
+C 65 ; WX 722 ; N Alpha ; B 4 0 684 673 ;
+C 66 ; WX 667 ; N Beta ; B 29 0 592 673 ;
+C 67 ; WX 722 ; N Chi ; B -9 0 704 673 ;
+C 68 ; WX 612 ; N Delta ; B 6 0 608 688 ;
+C 69 ; WX 611 ; N Epsilon ; B 32 0 617 673 ;
+C 70 ; WX 763 ; N Phi ; B 26 0 741 673 ;
+C 71 ; WX 603 ; N Gamma ; B 24 0 609 673 ;
+C 72 ; WX 722 ; N Eta ; B 39 0 729 673 ;
+C 73 ; WX 333 ; N Iota ; B 32 0 316 673 ;
+C 74 ; WX 631 ; N theta1 ; B 18 -18 623 689 ;
+C 75 ; WX 722 ; N Kappa ; B 35 0 722 673 ;
+C 76 ; WX 686 ; N Lambda ; B 6 0 680 688 ;
+C 77 ; WX 889 ; N Mu ; B 28 0 887 673 ;
+C 78 ; WX 722 ; N Nu ; B 29 -8 720 673 ;
+C 79 ; WX 722 ; N Omicron ; B 41 -17 715 685 ;
+C 80 ; WX 768 ; N Pi ; B 25 0 745 673 ;
+C 81 ; WX 741 ; N Theta ; B 41 -17 715 685 ;
+C 82 ; WX 556 ; N Rho ; B 28 0 563 673 ;
+C 83 ; WX 592 ; N Sigma ; B 5 0 589 673 ;
+C 84 ; WX 611 ; N Tau ; B 33 0 607 673 ;
+C 85 ; WX 690 ; N Upsilon ; B -8 0 694 673 ;
+C 86 ; WX 439 ; N sigma1 ; B 40 -233 436 500 ;
+C 87 ; WX 768 ; N Omega ; B 34 0 736 688 ;
+C 88 ; WX 645 ; N Xi ; B 40 0 599 673 ;
+C 89 ; WX 795 ; N Psi ; B 15 0 781 684 ;
+C 90 ; WX 611 ; N Zeta ; B 44 0 636 673 ;
+C 91 ; WX 333 ; N bracketleft ; B 86 -155 299 674 ;
+C 92 ; WX 863 ; N therefore ; B 163 0 701 478 ;
+C 93 ; WX 333 ; N bracketright ; B 33 -155 246 674 ;
+C 94 ; WX 658 ; N perpendicular ; B 15 0 652 674 ;
+C 95 ; WX 500 ; N underscore ; B -2 -252 502 -206 ;
+C 96 ; WX 500 ; N radicalex ; B 480 881 1090 917 ;
+C 97 ; WX 631 ; N alpha ; B 41 -18 622 500 ;
+C 98 ; WX 549 ; N beta ; B 61 -223 515 741 ;
+C 99 ; WX 549 ; N chi ; B 12 -231 522 499 ;
+C 100 ; WX 494 ; N delta ; B 40 -19 481 740 ;
+C 101 ; WX 439 ; N epsilon ; B 22 -19 427 502 ;
+C 102 ; WX 521 ; N phi ; B 27 -224 490 671 ;
+C 103 ; WX 411 ; N gamma ; B 5 -225 484 499 ;
+C 104 ; WX 603 ; N eta ; B 0 -202 527 514 ;
+C 105 ; WX 329 ; N iota ; B 0 -17 301 503 ;
+C 106 ; WX 603 ; N phi1 ; B 36 -224 587 499 ;
+C 107 ; WX 549 ; N kappa ; B 33 0 558 501 ;
+C 108 ; WX 549 ; N lambda ; B 24 -17 548 739 ;
+C 109 ; WX 576 ; N mu ; B 33 -223 567 500 ;
+C 110 ; WX 521 ; N nu ; B -9 -16 475 507 ;
+C 111 ; WX 549 ; N omicron ; B 35 -19 501 499 ;
+C 112 ; WX 549 ; N pi ; B 10 -19 530 487 ;
+C 113 ; WX 521 ; N theta ; B 43 -17 485 690 ;
+C 114 ; WX 549 ; N rho ; B 50 -230 490 499 ;
+C 115 ; WX 603 ; N sigma ; B 30 -21 588 500 ;
+C 116 ; WX 439 ; N tau ; B 10 -19 418 500 ;
+C 117 ; WX 576 ; N upsilon ; B 7 -18 535 507 ;
+C 118 ; WX 713 ; N omega1 ; B 12 -18 671 583 ;
+C 119 ; WX 686 ; N omega ; B 42 -17 684 500 ;
+C 120 ; WX 493 ; N xi ; B 27 -224 469 766 ;
+C 121 ; WX 686 ; N psi ; B 12 -228 701 500 ;
+C 122 ; WX 494 ; N zeta ; B 60 -225 467 756 ;
+C 123 ; WX 480 ; N braceleft ; B 58 -183 397 673 ;
+C 124 ; WX 200 ; N bar ; B 65 -177 135 673 ;
+C 125 ; WX 480 ; N braceright ; B 79 -183 418 673 ;
+C 126 ; WX 549 ; N similar ; B 17 203 529 307 ;
+C 161 ; WX 620 ; N Upsilon1 ; B -2 0 610 685 ;
+C 162 ; WX 247 ; N minute ; B 27 459 228 735 ;
+C 163 ; WX 549 ; N lessequal ; B 29 0 526 639 ;
+C 164 ; WX 167 ; N fraction ; B -180 -12 340 677 ;
+C 165 ; WX 713 ; N infinity ; B 26 124 688 404 ;
+C 166 ; WX 500 ; N florin ; B 2 -193 494 686 ;
+C 167 ; WX 753 ; N club ; B 86 -26 660 533 ;
+C 168 ; WX 753 ; N diamond ; B 142 -36 600 550 ;
+C 169 ; WX 753 ; N heart ; B 117 -33 631 532 ;
+C 170 ; WX 753 ; N spade ; B 113 -36 629 548 ;
+C 171 ; WX 1042 ; N arrowboth ; B 24 -15 1024 511 ;
+C 172 ; WX 987 ; N arrowleft ; B 32 -15 942 511 ;
+C 173 ; WX 603 ; N arrowup ; B 45 0 571 910 ;
+C 174 ; WX 987 ; N arrowright ; B 49 -15 959 511 ;
+C 175 ; WX 603 ; N arrowdown ; B 45 -22 571 888 ;
+C 176 ; WX 400 ; N degree ; B 50 385 350 685 ;
+C 177 ; WX 549 ; N plusminus ; B 10 0 539 645 ;
+C 178 ; WX 411 ; N second ; B 20 459 413 737 ;
+C 179 ; WX 549 ; N greaterequal ; B 29 0 526 639 ;
+C 180 ; WX 549 ; N multiply ; B 17 8 533 524 ;
+C 181 ; WX 713 ; N proportional ; B 27 123 639 404 ;
+C 182 ; WX 494 ; N partialdiff ; B 26 -20 462 746 ;
+C 183 ; WX 460 ; N bullet ; B 50 113 410 473 ;
+C 184 ; WX 549 ; N divide ; B 10 71 536 456 ;
+C 185 ; WX 549 ; N notequal ; B 15 -25 540 549 ;
+C 186 ; WX 549 ; N equivalence ; B 14 82 538 443 ;
+C 187 ; WX 549 ; N approxequal ; B 14 135 527 394 ;
+C 188 ; WX 1000 ; N ellipsis ; B 111 -17 889 95 ;
+C 189 ; WX 603 ; N arrowvertex ; B 280 -120 336 1010 ;
+C 190 ; WX 1000 ; N arrowhorizex ; B -60 220 1050 276 ;
+C 191 ; WX 658 ; N carriagereturn ; B 15 -16 602 629 ;
+C 192 ; WX 823 ; N aleph ; B 175 -18 661 658 ;
+C 193 ; WX 686 ; N Ifraktur ; B 10 -53 578 740 ;
+C 194 ; WX 795 ; N Rfraktur ; B 26 -15 759 734 ;
+C 195 ; WX 987 ; N weierstrass ; B 159 -211 870 573 ;
+C 196 ; WX 768 ; N circlemultiply ; B 43 -17 733 673 ;
+C 197 ; WX 768 ; N circleplus ; B 43 -15 733 675 ;
+C 198 ; WX 823 ; N emptyset ; B 39 -24 781 719 ;
+C 199 ; WX 768 ; N intersection ; B 40 0 732 509 ;
+C 200 ; WX 768 ; N union ; B 40 -17 732 492 ;
+C 201 ; WX 713 ; N propersuperset ; B 20 0 673 470 ;
+C 202 ; WX 713 ; N reflexsuperset ; B 20 -125 673 470 ;
+C 203 ; WX 713 ; N notsubset ; B 36 -70 690 540 ;
+C 204 ; WX 713 ; N propersubset ; B 37 0 690 470 ;
+C 205 ; WX 713 ; N reflexsubset ; B 37 -125 690 470 ;
+C 206 ; WX 713 ; N element ; B 45 0 505 468 ;
+C 207 ; WX 713 ; N notelement ; B 45 -58 505 555 ;
+C 208 ; WX 768 ; N angle ; B 26 0 738 673 ;
+C 209 ; WX 713 ; N gradient ; B 36 -19 681 718 ;
+C 210 ; WX 790 ; N registerserif ; B 50 -17 740 673 ;
+C 211 ; WX 790 ; N copyrightserif ; B 51 -15 741 675 ;
+C 212 ; WX 890 ; N trademarkserif ; B 18 293 855 673 ;
+C 213 ; WX 823 ; N product ; B 25 -101 803 751 ;
+C 214 ; WX 549 ; N radical ; B 10 -38 515 917 ;
+C 215 ; WX 250 ; N dotmath ; B 69 210 169 310 ;
+C 216 ; WX 713 ; N logicalnot ; B 15 0 680 288 ;
+C 217 ; WX 603 ; N logicaland ; B 23 0 583 454 ;
+C 218 ; WX 603 ; N logicalor ; B 30 0 578 477 ;
+C 219 ; WX 1042 ; N arrowdblboth ; B 27 -20 1023 510 ;
+C 220 ; WX 987 ; N arrowdblleft ; B 30 -15 939 513 ;
+C 221 ; WX 603 ; N arrowdblup ; B 39 2 567 911 ;
+C 222 ; WX 987 ; N arrowdblright ; B 45 -20 954 508 ;
+C 223 ; WX 603 ; N arrowdbldown ; B 44 -19 572 890 ;
+C 224 ; WX 494 ; N lozenge ; B 18 0 466 745 ;
+C 225 ; WX 329 ; N angleleft ; B 25 -198 306 746 ;
+C 226 ; WX 790 ; N registersans ; B 50 -20 740 670 ;
+C 227 ; WX 790 ; N copyrightsans ; B 49 -15 739 675 ;
+C 228 ; WX 786 ; N trademarksans ; B 5 293 725 673 ;
+C 229 ; WX 713 ; N summation ; B 14 -108 695 752 ;
+C 230 ; WX 384 ; N parenlefttp ; B 40 -293 436 926 ;
+C 231 ; WX 384 ; N parenleftex ; B 40 -85 92 925 ;
+C 232 ; WX 384 ; N parenleftbt ; B 40 -293 436 926 ;
+C 233 ; WX 384 ; N bracketlefttp ; B 0 -80 341 926 ;
+C 234 ; WX 384 ; N bracketleftex ; B 0 -79 55 925 ;
+C 235 ; WX 384 ; N bracketleftbt ; B 0 -80 340 926 ;
+C 236 ; WX 494 ; N bracelefttp ; B 201 -75 439 926 ;
+C 237 ; WX 494 ; N braceleftmid ; B 14 -85 255 935 ;
+C 238 ; WX 494 ; N braceleftbt ; B 201 -70 439 926 ;
+C 239 ; WX 494 ; N braceex ; B 201 -80 255 935 ;
+C 241 ; WX 329 ; N angleright ; B 21 -198 302 746 ;
+C 242 ; WX 274 ; N integral ; B 2 -107 291 916 ;
+C 243 ; WX 686 ; N integraltp ; B 332 -83 715 921 ;
+C 244 ; WX 686 ; N integralex ; B 332 -88 415 975 ;
+C 245 ; WX 686 ; N integralbt ; B 39 -81 415 921 ;
+C 246 ; WX 384 ; N parenrighttp ; B 54 -293 450 926 ;
+C 247 ; WX 384 ; N parenrightex ; B 398 -85 450 925 ;
+C 248 ; WX 384 ; N parenrightbt ; B 54 -293 450 926 ;
+C 249 ; WX 384 ; N bracketrighttp ; B 22 -80 360 926 ;
+C 250 ; WX 384 ; N bracketrightex ; B 305 -79 360 925 ;
+C 251 ; WX 384 ; N bracketrightbt ; B 20 -80 360 926 ;
+C 252 ; WX 494 ; N bracerighttp ; B 17 -75 255 926 ;
+C 253 ; WX 494 ; N bracerightmid ; B 201 -85 442 935 ;
+C 254 ; WX 494 ; N bracerightbt ; B 17 -70 255 926 ;
+C -1 ; WX 790 ; N apple ; B 56 -3 733 808 ;
+EndCharMetrics
+EndFontMetrics
diff --git a/font/font/Ti-Bd b/font/font/Ti-Bd
new file mode 100644
index 0000000..55207f9
--- /dev/null
+++ b/font/font/Ti-Bd
@@ -0,0 +1,648 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Tue Mar 20 12:17:14 1990
+Comment UniqueID 28417
+Comment VMusage 30458 37350
+FontName Times-Bold
+FullName Times Bold
+FamilyName Times
+Weight Bold
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -168 -218 1000 935
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.007
+Notice Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.Times is a trademark of Linotype AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 676
+XHeight 461
+Ascender 676
+Descender -205
+StartCharMetrics 228
+C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 333 ; N exclam ; B 81 -13 251 691 ;
+C 34 ; WX 555 ; N quotedbl ; B 83 404 472 691 ;
+C 35 ; WX 500 ; N numbersign ; B 4 0 496 700 ;
+C 36 ; WX 500 ; N dollar ; B 29 -99 472 750 ;
+C 37 ; WX 1000 ; N percent ; B 124 -14 877 692 ;
+C 38 ; WX 833 ; N ampersand ; B 62 -16 787 691 ;
+C 39 ; WX 333 ; N quoteright ; B 79 356 263 691 ;
+C 40 ; WX 333 ; N parenleft ; B 46 -168 306 694 ;
+C 41 ; WX 333 ; N parenright ; B 27 -168 287 694 ;
+C 42 ; WX 500 ; N asterisk ; B 56 255 447 691 ;
+C 43 ; WX 570 ; N plus ; B 33 0 537 506 ;
+C 44 ; WX 250 ; N comma ; B 39 -180 223 155 ;
+C 45 ; WX 333 ; N hyphen ; B 44 171 287 287 ;
+C 46 ; WX 250 ; N period ; B 41 -13 210 156 ;
+C 47 ; WX 278 ; N slash ; B -24 -19 302 691 ;
+C 48 ; WX 500 ; N zero ; B 24 -13 476 688 ;
+C 49 ; WX 500 ; N one ; B 65 0 442 688 ;
+C 50 ; WX 500 ; N two ; B 17 0 478 688 ;
+C 51 ; WX 500 ; N three ; B 16 -14 468 688 ;
+C 52 ; WX 500 ; N four ; B 19 0 475 688 ;
+C 53 ; WX 500 ; N five ; B 22 -8 470 676 ;
+C 54 ; WX 500 ; N six ; B 28 -13 475 688 ;
+C 55 ; WX 500 ; N seven ; B 17 0 477 676 ;
+C 56 ; WX 500 ; N eight ; B 28 -13 472 688 ;
+C 57 ; WX 500 ; N nine ; B 26 -13 473 688 ;
+C 58 ; WX 333 ; N colon ; B 82 -13 251 472 ;
+C 59 ; WX 333 ; N semicolon ; B 82 -180 266 472 ;
+C 60 ; WX 570 ; N less ; B 31 -8 539 514 ;
+C 61 ; WX 570 ; N equal ; B 33 107 537 399 ;
+C 62 ; WX 570 ; N greater ; B 31 -8 539 514 ;
+C 63 ; WX 500 ; N question ; B 57 -13 445 689 ;
+C 64 ; WX 930 ; N at ; B 108 -19 822 691 ;
+C 65 ; WX 722 ; N A ; B 9 0 689 690 ;
+C 66 ; WX 667 ; N B ; B 16 0 619 676 ;
+C 67 ; WX 722 ; N C ; B 49 -19 687 691 ;
+C 68 ; WX 722 ; N D ; B 14 0 690 676 ;
+C 69 ; WX 667 ; N E ; B 16 0 641 676 ;
+C 70 ; WX 611 ; N F ; B 16 0 583 676 ;
+C 71 ; WX 778 ; N G ; B 37 -19 755 691 ;
+C 72 ; WX 778 ; N H ; B 21 0 759 676 ;
+C 73 ; WX 389 ; N I ; B 20 0 370 676 ;
+C 74 ; WX 500 ; N J ; B 3 -96 479 676 ;
+C 75 ; WX 778 ; N K ; B 30 0 769 676 ;
+C 76 ; WX 667 ; N L ; B 19 0 638 676 ;
+C 77 ; WX 944 ; N M ; B 14 0 921 676 ;
+C 78 ; WX 722 ; N N ; B 16 -18 701 676 ;
+C 79 ; WX 778 ; N O ; B 35 -19 743 691 ;
+C 80 ; WX 611 ; N P ; B 16 0 600 676 ;
+C 81 ; WX 778 ; N Q ; B 35 -176 743 691 ;
+C 82 ; WX 722 ; N R ; B 26 0 715 676 ;
+C 83 ; WX 556 ; N S ; B 35 -19 513 692 ;
+C 84 ; WX 667 ; N T ; B 31 0 636 676 ;
+C 85 ; WX 722 ; N U ; B 16 -19 701 676 ;
+C 86 ; WX 722 ; N V ; B 16 -18 701 676 ;
+C 87 ; WX 1000 ; N W ; B 19 -15 981 676 ;
+C 88 ; WX 722 ; N X ; B 16 0 699 676 ;
+C 89 ; WX 722 ; N Y ; B 15 0 699 676 ;
+C 90 ; WX 667 ; N Z ; B 28 0 634 676 ;
+C 91 ; WX 333 ; N bracketleft ; B 67 -149 301 678 ;
+C 92 ; WX 278 ; N backslash ; B -25 -19 303 691 ;
+C 93 ; WX 333 ; N bracketright ; B 32 -149 266 678 ;
+C 94 ; WX 581 ; N asciicircum ; B 73 311 509 676 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 333 ; N quoteleft ; B 70 356 254 691 ;
+C 97 ; WX 500 ; N a ; B 25 -14 488 473 ;
+C 98 ; WX 556 ; N b ; B 17 -14 521 676 ;
+C 99 ; WX 444 ; N c ; B 25 -14 430 473 ;
+C 100 ; WX 556 ; N d ; B 25 -14 534 676 ;
+C 101 ; WX 444 ; N e ; B 25 -14 426 473 ;
+C 102 ; WX 333 ; N f ; B 14 0 389 691 ; L i fi ; L l fl ;
+C 103 ; WX 500 ; N g ; B 28 -206 483 473 ;
+C 104 ; WX 556 ; N h ; B 16 0 534 676 ;
+C 105 ; WX 278 ; N i ; B 16 0 255 691 ;
+C 106 ; WX 333 ; N j ; B -57 -203 263 691 ;
+C 107 ; WX 556 ; N k ; B 22 0 543 676 ;
+C 108 ; WX 278 ; N l ; B 16 0 255 676 ;
+C 109 ; WX 833 ; N m ; B 16 0 814 473 ;
+C 110 ; WX 556 ; N n ; B 21 0 539 473 ;
+C 111 ; WX 500 ; N o ; B 25 -14 476 473 ;
+C 112 ; WX 556 ; N p ; B 19 -205 524 473 ;
+C 113 ; WX 556 ; N q ; B 34 -205 536 473 ;
+C 114 ; WX 444 ; N r ; B 29 0 434 473 ;
+C 115 ; WX 389 ; N s ; B 25 -14 361 473 ;
+C 116 ; WX 333 ; N t ; B 20 -12 332 630 ;
+C 117 ; WX 556 ; N u ; B 16 -14 537 461 ;
+C 118 ; WX 500 ; N v ; B 21 -14 485 461 ;
+C 119 ; WX 722 ; N w ; B 23 -14 707 461 ;
+C 120 ; WX 500 ; N x ; B 12 0 484 461 ;
+C 121 ; WX 500 ; N y ; B 16 -205 480 461 ;
+C 122 ; WX 444 ; N z ; B 21 0 420 461 ;
+C 123 ; WX 394 ; N braceleft ; B 22 -175 340 698 ;
+C 124 ; WX 220 ; N bar ; B 66 -19 154 691 ;
+C 125 ; WX 394 ; N braceright ; B 54 -175 372 698 ;
+C 126 ; WX 520 ; N asciitilde ; B 29 173 491 333 ;
+C 161 ; WX 333 ; N exclamdown ; B 82 -203 252 501 ;
+C 162 ; WX 500 ; N cent ; B 53 -140 458 588 ;
+C 163 ; WX 500 ; N sterling ; B 21 -14 477 684 ;
+C 164 ; WX 167 ; N fraction ; B -168 -12 329 688 ;
+C 165 ; WX 500 ; N yen ; B -64 0 547 676 ;
+C 166 ; WX 500 ; N florin ; B 0 -155 498 706 ;
+C 167 ; WX 500 ; N section ; B 57 -132 443 691 ;
+C 168 ; WX 500 ; N currency ; B -26 61 526 613 ;
+C 169 ; WX 278 ; N quotesingle ; B 75 404 204 691 ;
+C 170 ; WX 500 ; N quotedblleft ; B 32 356 486 691 ;
+C 171 ; WX 500 ; N guillemotleft ; B 23 36 473 415 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 51 36 305 415 ;
+C 173 ; WX 333 ; N guilsinglright ; B 28 36 282 415 ;
+C 174 ; WX 556 ; N fi ; B 14 0 536 691 ;
+C 175 ; WX 556 ; N fl ; B 14 0 536 691 ;
+C 177 ; WX 500 ; N endash ; B 0 181 500 271 ;
+C 178 ; WX 500 ; N dagger ; B 47 -134 453 691 ;
+C 179 ; WX 500 ; N daggerdbl ; B 45 -132 456 691 ;
+C 180 ; WX 250 ; N periodcentered ; B 41 248 210 417 ;
+C 182 ; WX 540 ; N paragraph ; B 0 -186 519 676 ;
+C 183 ; WX 350 ; N bullet ; B 35 198 315 478 ;
+C 184 ; WX 333 ; N quotesinglbase ; B 79 -180 263 155 ;
+C 185 ; WX 500 ; N quotedblbase ; B 14 -180 468 155 ;
+C 186 ; WX 500 ; N quotedblright ; B 14 356 468 691 ;
+C 187 ; WX 500 ; N guillemotright ; B 27 36 477 415 ;
+C 188 ; WX 1000 ; N ellipsis ; B 82 -13 917 156 ;
+C 189 ; WX 1000 ; N perthousand ; B 7 -29 995 706 ;
+C 191 ; WX 500 ; N questiondown ; B 55 -201 443 501 ;
+C 193 ; WX 333 ; N grave ; B 8 528 246 713 ;
+C 194 ; WX 333 ; N acute ; B 86 528 324 713 ;
+C 195 ; WX 333 ; N circumflex ; B -2 528 335 704 ;
+C 196 ; WX 333 ; N tilde ; B -16 547 349 674 ;
+C 197 ; WX 333 ; N macron ; B 1 565 331 637 ;
+C 198 ; WX 333 ; N breve ; B 15 528 318 691 ;
+C 199 ; WX 333 ; N dotaccent ; B 103 537 230 667 ;
+C 200 ; WX 333 ; N dieresis ; B -2 537 335 667 ;
+C 202 ; WX 333 ; N ring ; B 60 527 273 740 ;
+C 203 ; WX 333 ; N cedilla ; B 68 -218 294 0 ;
+C 205 ; WX 333 ; N hungarumlaut ; B -13 528 425 713 ;
+C 206 ; WX 333 ; N ogonek ; B 90 -173 319 44 ;
+C 207 ; WX 333 ; N caron ; B -2 528 335 704 ;
+C 208 ; WX 1000 ; N emdash ; B 0 181 1000 271 ;
+C 225 ; WX 1000 ; N AE ; B 4 0 951 676 ;
+C 227 ; WX 300 ; N ordfeminine ; B -1 397 301 688 ;
+C 232 ; WX 667 ; N Lslash ; B 19 0 638 676 ;
+C 233 ; WX 778 ; N Oslash ; B 35 -74 743 737 ;
+C 234 ; WX 1000 ; N OE ; B 22 -5 981 684 ;
+C 235 ; WX 330 ; N ordmasculine ; B 18 397 312 688 ;
+C 241 ; WX 722 ; N ae ; B 33 -14 693 473 ;
+C 245 ; WX 278 ; N dotlessi ; B 16 0 255 461 ;
+C 248 ; WX 278 ; N lslash ; B -22 0 303 676 ;
+C 249 ; WX 500 ; N oslash ; B 25 -92 476 549 ;
+C 250 ; WX 722 ; N oe ; B 22 -14 696 473 ;
+C 251 ; WX 556 ; N germandbls ; B 19 -12 517 691 ;
+C -1 ; WX 667 ; N Zcaron ; B 28 0 634 914 ;
+C -1 ; WX 444 ; N ccedilla ; B 25 -218 430 473 ;
+C -1 ; WX 500 ; N ydieresis ; B 16 -205 480 667 ;
+C -1 ; WX 500 ; N atilde ; B 25 -14 488 674 ;
+C -1 ; WX 278 ; N icircumflex ; B -36 0 301 704 ;
+C -1 ; WX 300 ; N threesuperior ; B 3 268 297 688 ;
+C -1 ; WX 444 ; N ecircumflex ; B 25 -14 426 704 ;
+C -1 ; WX 556 ; N thorn ; B 19 -205 524 676 ;
+C -1 ; WX 444 ; N egrave ; B 25 -14 426 713 ;
+C -1 ; WX 300 ; N twosuperior ; B 0 275 300 688 ;
+C -1 ; WX 444 ; N eacute ; B 25 -14 426 713 ;
+C -1 ; WX 500 ; N otilde ; B 25 -14 476 674 ;
+C -1 ; WX 722 ; N Aacute ; B 9 0 689 923 ;
+C -1 ; WX 500 ; N ocircumflex ; B 25 -14 476 704 ;
+C -1 ; WX 500 ; N yacute ; B 16 -205 480 713 ;
+C -1 ; WX 556 ; N udieresis ; B 16 -14 537 667 ;
+C -1 ; WX 750 ; N threequarters ; B 23 -12 733 688 ;
+C -1 ; WX 500 ; N acircumflex ; B 25 -14 488 704 ;
+C -1 ; WX 722 ; N Eth ; B 6 0 690 676 ;
+C -1 ; WX 444 ; N edieresis ; B 25 -14 426 667 ;
+C -1 ; WX 556 ; N ugrave ; B 16 -14 537 713 ;
+C -1 ; WX 1000 ; N trademark ; B 24 271 977 676 ;
+C -1 ; WX 500 ; N ograve ; B 25 -14 476 713 ;
+C -1 ; WX 389 ; N scaron ; B 25 -14 363 704 ;
+C -1 ; WX 389 ; N Idieresis ; B 20 0 370 877 ;
+C -1 ; WX 556 ; N uacute ; B 16 -14 537 713 ;
+C -1 ; WX 500 ; N agrave ; B 25 -14 488 713 ;
+C -1 ; WX 556 ; N ntilde ; B 21 0 539 674 ;
+C -1 ; WX 500 ; N aring ; B 25 -14 488 740 ;
+C -1 ; WX 444 ; N zcaron ; B 21 0 420 704 ;
+C -1 ; WX 389 ; N Icircumflex ; B 20 0 370 914 ;
+C -1 ; WX 722 ; N Ntilde ; B 16 -18 701 884 ;
+C -1 ; WX 556 ; N ucircumflex ; B 16 -14 537 704 ;
+C -1 ; WX 667 ; N Ecircumflex ; B 16 0 641 914 ;
+C -1 ; WX 389 ; N Iacute ; B 20 0 370 923 ;
+C -1 ; WX 722 ; N Ccedilla ; B 49 -218 687 691 ;
+C -1 ; WX 778 ; N Odieresis ; B 35 -19 743 877 ;
+C -1 ; WX 556 ; N Scaron ; B 35 -19 513 914 ;
+C -1 ; WX 667 ; N Edieresis ; B 16 0 641 877 ;
+C -1 ; WX 389 ; N Igrave ; B 20 0 370 923 ;
+C -1 ; WX 500 ; N adieresis ; B 25 -14 488 667 ;
+C -1 ; WX 778 ; N Ograve ; B 35 -19 743 923 ;
+C -1 ; WX 667 ; N Egrave ; B 16 0 641 923 ;
+C -1 ; WX 722 ; N Ydieresis ; B 15 0 699 877 ;
+C -1 ; WX 747 ; N registered ; B 26 -19 721 691 ;
+C -1 ; WX 778 ; N Otilde ; B 35 -19 743 884 ;
+C -1 ; WX 750 ; N onequarter ; B 28 -12 743 688 ;
+C -1 ; WX 722 ; N Ugrave ; B 16 -19 701 923 ;
+C -1 ; WX 722 ; N Ucircumflex ; B 16 -19 701 914 ;
+C -1 ; WX 611 ; N Thorn ; B 16 0 600 676 ;
+C -1 ; WX 570 ; N divide ; B 33 -31 537 537 ;
+C -1 ; WX 722 ; N Atilde ; B 9 0 689 884 ;
+C -1 ; WX 722 ; N Uacute ; B 16 -19 701 923 ;
+C -1 ; WX 778 ; N Ocircumflex ; B 35 -19 743 914 ;
+C -1 ; WX 570 ; N logicalnot ; B 33 108 537 399 ;
+C -1 ; WX 722 ; N Aring ; B 9 0 689 935 ;
+C -1 ; WX 278 ; N idieresis ; B -36 0 301 667 ;
+C -1 ; WX 278 ; N iacute ; B 16 0 290 713 ;
+C -1 ; WX 500 ; N aacute ; B 25 -14 488 713 ;
+C -1 ; WX 570 ; N plusminus ; B 33 0 537 506 ;
+C -1 ; WX 570 ; N multiply ; B 48 16 522 490 ;
+C -1 ; WX 722 ; N Udieresis ; B 16 -19 701 877 ;
+C -1 ; WX 570 ; N minus ; B 33 209 537 297 ;
+C -1 ; WX 300 ; N onesuperior ; B 28 275 273 688 ;
+C -1 ; WX 667 ; N Eacute ; B 16 0 641 923 ;
+C -1 ; WX 722 ; N Acircumflex ; B 9 0 689 914 ;
+C -1 ; WX 747 ; N copyright ; B 26 -19 721 691 ;
+C -1 ; WX 722 ; N Agrave ; B 9 0 689 923 ;
+C -1 ; WX 500 ; N odieresis ; B 25 -14 476 667 ;
+C -1 ; WX 500 ; N oacute ; B 25 -14 476 713 ;
+C -1 ; WX 400 ; N degree ; B 57 402 343 688 ;
+C -1 ; WX 278 ; N igrave ; B -26 0 255 713 ;
+C -1 ; WX 556 ; N mu ; B 33 -206 536 461 ;
+C -1 ; WX 778 ; N Oacute ; B 35 -19 743 923 ;
+C -1 ; WX 500 ; N eth ; B 25 -14 476 691 ;
+C -1 ; WX 722 ; N Adieresis ; B 9 0 689 877 ;
+C -1 ; WX 722 ; N Yacute ; B 15 0 699 928 ;
+C -1 ; WX 220 ; N brokenbar ; B 66 -19 154 691 ;
+C -1 ; WX 750 ; N onehalf ; B -7 -12 775 688 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 283
+
+KPX A y -74
+KPX A w -90
+KPX A v -100
+KPX A u -50
+KPX A quoteright -74
+KPX A quotedblright 0
+KPX A p -25
+KPX A Y -100
+KPX A W -130
+KPX A V -145
+KPX A U -50
+KPX A T -95
+KPX A Q -45
+KPX A O -45
+KPX A G -55
+KPX A C -55
+
+KPX B period 0
+KPX B comma 0
+KPX B U -10
+KPX B A -30
+
+KPX D period -20
+KPX D comma 0
+KPX D Y -40
+KPX D W -40
+KPX D V -40
+KPX D A -35
+
+KPX F r 0
+KPX F period -110
+KPX F o -25
+KPX F i 0
+KPX F e -25
+KPX F comma -92
+KPX F a -25
+KPX F A -90
+
+KPX G period 0
+KPX G comma 0
+
+KPX J u -15
+KPX J period -20
+KPX J o -15
+KPX J e -15
+KPX J comma 0
+KPX J a -15
+KPX J A -30
+
+KPX K y -45
+KPX K u -15
+KPX K o -25
+KPX K e -25
+KPX K O -30
+
+KPX L y -55
+KPX L quoteright -110
+KPX L quotedblright -20
+KPX L Y -92
+KPX L W -92
+KPX L V -92
+KPX L T -92
+
+KPX N period 0
+KPX N comma 0
+KPX N A -20
+
+KPX O period 0
+KPX O comma 0
+KPX O Y -50
+KPX O X -40
+KPX O W -50
+KPX O V -50
+KPX O T -40
+KPX O A -40
+
+KPX P period -110
+KPX P o -20
+KPX P e -20
+KPX P comma -92
+KPX P a -10
+KPX P A -74
+
+KPX Q period -20
+KPX Q comma 0
+KPX Q U -10
+
+KPX R Y -35
+KPX R W -35
+KPX R V -55
+KPX R U -30
+KPX R T -40
+KPX R O -30
+
+KPX S period 0
+KPX S comma 0
+
+KPX T y -74
+KPX T w -74
+KPX T u -92
+KPX T semicolon -74
+KPX T r -74
+KPX T period -90
+KPX T o -92
+KPX T i -18
+KPX T hyphen -92
+KPX T h 0
+KPX T e -92
+KPX T comma -74
+KPX T colon -74
+KPX T a -92
+KPX T O -18
+KPX T A -90
+
+KPX U period -50
+KPX U comma -50
+KPX U A -60
+
+KPX V u -92
+KPX V semicolon -92
+KPX V period -145
+KPX V o -100
+KPX V i -37
+KPX V hyphen -74
+KPX V e -100
+KPX V comma -129
+KPX V colon -92
+KPX V a -92
+KPX V O -45
+KPX V G -30
+KPX V A -135
+
+KPX W y -60
+KPX W u -50
+KPX W semicolon -55
+KPX W period -92
+KPX W o -75
+KPX W i -18
+KPX W hyphen -37
+KPX W h 0
+KPX W e -65
+KPX W comma -92
+KPX W colon -55
+KPX W a -65
+KPX W O -10
+KPX W A -120
+
+KPX Y u -92
+KPX Y semicolon -92
+KPX Y period -92
+KPX Y o -111
+KPX Y i -37
+KPX Y hyphen -92
+KPX Y e -111
+KPX Y comma -92
+KPX Y colon -92
+KPX Y a -85
+KPX Y O -35
+KPX Y A -110
+
+KPX a y 0
+KPX a w 0
+KPX a v -25
+KPX a t 0
+KPX a p 0
+KPX a g 0
+KPX a b 0
+
+KPX b y 0
+KPX b v -15
+KPX b u -20
+KPX b period -40
+KPX b l 0
+KPX b comma 0
+KPX b b -10
+
+KPX c y 0
+KPX c period 0
+KPX c l 0
+KPX c k 0
+KPX c h 0
+KPX c comma 0
+
+KPX colon space 0
+
+KPX comma space 0
+KPX comma quoteright -55
+KPX comma quotedblright -45
+
+KPX d y 0
+KPX d w -15
+KPX d v 0
+KPX d period 0
+KPX d d 0
+KPX d comma 0
+
+KPX e y 0
+KPX e x 0
+KPX e w 0
+KPX e v -15
+KPX e period 0
+KPX e p 0
+KPX e g 0
+KPX e comma 0
+KPX e b 0
+
+KPX f quoteright 55
+KPX f quotedblright 50
+KPX f period -15
+KPX f o -25
+KPX f l 0
+KPX f i -25
+KPX f f 0
+KPX f e 0
+KPX f dotlessi -35
+KPX f comma -15
+KPX f a 0
+
+KPX g y 0
+KPX g r 0
+KPX g period -15
+KPX g o 0
+KPX g i 0
+KPX g g 0
+KPX g e 0
+KPX g comma 0
+KPX g a 0
+
+KPX h y -15
+
+KPX i v -10
+
+KPX k y -15
+KPX k o -15
+KPX k e -10
+
+KPX l y 0
+KPX l w 0
+
+KPX m y 0
+KPX m u 0
+
+KPX n y 0
+KPX n v -40
+KPX n u 0
+
+KPX o y 0
+KPX o x 0
+KPX o w -10
+KPX o v -10
+KPX o g 0
+
+KPX p y 0
+
+KPX period quoteright -55
+KPX period quotedblright -55
+
+KPX quotedblleft quoteleft 0
+KPX quotedblleft A -10
+
+KPX quotedblright space 0
+
+KPX quoteleft quoteleft -63
+KPX quoteleft A -10
+
+KPX quoteright v -20
+KPX quoteright t 0
+KPX quoteright space -74
+KPX quoteright s -37
+KPX quoteright r -20
+KPX quoteright quoteright -63
+KPX quoteright quotedblright 0
+KPX quoteright l 0
+KPX quoteright d -20
+
+KPX r y 0
+KPX r v -10
+KPX r u 0
+KPX r t 0
+KPX r s 0
+KPX r r 0
+KPX r q -18
+KPX r period -100
+KPX r p -10
+KPX r o -18
+KPX r n -15
+KPX r m 0
+KPX r l 0
+KPX r k 0
+KPX r i 0
+KPX r hyphen -37
+KPX r g -10
+KPX r e -18
+KPX r d 0
+KPX r comma -92
+KPX r c -18
+KPX r a 0
+
+KPX s w 0
+
+KPX space quoteleft 0
+KPX space quotedblleft 0
+KPX space Y -55
+KPX space W -30
+KPX space V -45
+KPX space T -30
+KPX space A -55
+
+KPX v period -70
+KPX v o -10
+KPX v e -10
+KPX v comma -55
+KPX v a -10
+
+KPX w period -70
+KPX w o -10
+KPX w h 0
+KPX w e 0
+KPX w comma -55
+KPX w a 0
+
+KPX x e 0
+
+KPX y period -70
+KPX y o -25
+KPX y e -10
+KPX y comma -55
+KPX y a 0
+
+KPX z o 0
+KPX z e 0
+EndKernPairs
+EndKernData
+StartComposites 58
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 188 210 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 188 210 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 188 210 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 188 210 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 180 195 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 188 210 ;
+CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 208 0 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 174 210 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 174 210 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 174 210 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 174 210 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 28 210 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 28 210 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 28 210 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 28 210 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 195 210 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 223 210 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 223 210 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 223 210 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 223 210 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 223 210 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 112 210 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 222 210 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 222 210 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 222 210 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 222 210 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 210 215 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 215 210 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 167 210 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 77 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 77 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 77 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 77 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 77 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 77 0 ;
+CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 69 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 62 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 62 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 62 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 62 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -34 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -34 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -34 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -34 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 112 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 84 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 84 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 84 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 84 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 84 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 28 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 105 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 105 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 105 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 105 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 84 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 84 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 56 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/Ti-Bd+ b/font/font/Ti-Bd+
new file mode 100644
index 0000000..efa6d43
--- /dev/null
+++ b/font/font/Ti-Bd+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 722 ; N Ccaron ; B 49 -19 687 914 ;
+C -1 ; WX 444 ; N ccaron ; B 25 -14 430 704 ;
+C -1 ; WX 722 ; N Dcaron ; B 14 0 690 914 ;
+C -1 ; WX 685 ; N dcaron ; B 25 -14 736 744 ;
+C -1 ; WX 667 ; N Ecaron ; B 16 0 641 914 ;
+C -1 ; WX 444 ; N ecaron ; B 25 -14 426 704 ;
+C -1 ; WX 667 ; N Lcaron ; B 19 0 638 744 ;
+C -1 ; WX 667 ; N Lacute ; B 19 0 638 923 ;
+C -1 ; WX 407 ; N lcaron ; B 16 0 457 744 ;
+C -1 ; WX 278 ; N lacute ; B 16 0 321 923 ;
+C -1 ; WX 722 ; N Ncaron ; B 16 -18 701 914 ;
+C -1 ; WX 556 ; N ncaron ; B 21 0 539 704 ;
+C -1 ; WX 722 ; N Rcaron ; B 26 0 715 914 ;
+C -1 ; WX 722 ; N Racute ; B 26 0 715 923 ;
+C -1 ; WX 444 ; N rcaron ; B 29 0 434 704 ;
+C -1 ; WX 444 ; N racute ; B 29 0 434 713 ;
+C -1 ; WX 667 ; N Tcaron ; B 31 0 636 914 ;
+C -1 ; WX 462 ; N tcaron ; B 20 -12 534 691 ;
+C -1 ; WX 722 ; N Uring ; B 16 -19 701 914 ;
+C -1 ; WX 556 ; N uring ; B 16 -14 537 740 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 258 210 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 75 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 194 210 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 473 53 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 167 210 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 55 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 309 53 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 167 210 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 194 53 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute -3 210 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 194 210 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 111 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 194 210 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 239 210 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 55 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 79 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 167 210 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 271 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 194 174 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 111 0 ;
+EndBuildComposites
diff --git a/font/font/Ti-BdIt b/font/font/Ti-BdIt
new file mode 100644
index 0000000..25ab54e
--- /dev/null
+++ b/font/font/Ti-BdIt
@@ -0,0 +1,648 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Tue Mar 20 13:14:55 1990
+Comment UniqueID 28425
+Comment VMusage 32721 39613
+FontName Times-BoldItalic
+FullName Times Bold Italic
+FamilyName Times
+Weight Bold
+ItalicAngle -15
+IsFixedPitch false
+FontBBox -200 -218 996 921
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.009
+Notice Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.Times is a trademark of Linotype AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 669
+XHeight 462
+Ascender 699
+Descender -205
+StartCharMetrics 228
+C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 389 ; N exclam ; B 67 -13 370 684 ;
+C 34 ; WX 555 ; N quotedbl ; B 136 398 536 685 ;
+C 35 ; WX 500 ; N numbersign ; B -33 0 533 700 ;
+C 36 ; WX 500 ; N dollar ; B -20 -100 497 733 ;
+C 37 ; WX 833 ; N percent ; B 39 -10 793 692 ;
+C 38 ; WX 778 ; N ampersand ; B 5 -19 699 682 ;
+C 39 ; WX 333 ; N quoteright ; B 98 369 302 685 ;
+C 40 ; WX 333 ; N parenleft ; B 28 -179 344 685 ;
+C 41 ; WX 333 ; N parenright ; B -44 -179 271 685 ;
+C 42 ; WX 500 ; N asterisk ; B 65 249 456 685 ;
+C 43 ; WX 570 ; N plus ; B 33 0 537 506 ;
+C 44 ; WX 250 ; N comma ; B -60 -182 144 134 ;
+C 45 ; WX 333 ; N hyphen ; B 2 166 271 282 ;
+C 46 ; WX 250 ; N period ; B -9 -13 139 135 ;
+C 47 ; WX 278 ; N slash ; B -64 -18 342 685 ;
+C 48 ; WX 500 ; N zero ; B 17 -14 477 683 ;
+C 49 ; WX 500 ; N one ; B 5 0 419 683 ;
+C 50 ; WX 500 ; N two ; B -27 0 446 683 ;
+C 51 ; WX 500 ; N three ; B -15 -13 450 683 ;
+C 52 ; WX 500 ; N four ; B -15 0 503 683 ;
+C 53 ; WX 500 ; N five ; B -11 -13 487 669 ;
+C 54 ; WX 500 ; N six ; B 23 -15 509 679 ;
+C 55 ; WX 500 ; N seven ; B 52 0 525 669 ;
+C 56 ; WX 500 ; N eight ; B 3 -13 476 683 ;
+C 57 ; WX 500 ; N nine ; B -12 -10 475 683 ;
+C 58 ; WX 333 ; N colon ; B 23 -13 264 459 ;
+C 59 ; WX 333 ; N semicolon ; B -25 -183 264 459 ;
+C 60 ; WX 570 ; N less ; B 31 -8 539 514 ;
+C 61 ; WX 570 ; N equal ; B 33 107 537 399 ;
+C 62 ; WX 570 ; N greater ; B 31 -8 539 514 ;
+C 63 ; WX 500 ; N question ; B 79 -13 470 684 ;
+C 64 ; WX 832 ; N at ; B 63 -18 770 685 ;
+C 65 ; WX 667 ; N A ; B -67 0 593 683 ;
+C 66 ; WX 667 ; N B ; B -24 0 624 669 ;
+C 67 ; WX 667 ; N C ; B 32 -18 677 685 ;
+C 68 ; WX 722 ; N D ; B -46 0 685 669 ;
+C 69 ; WX 667 ; N E ; B -27 0 653 669 ;
+C 70 ; WX 667 ; N F ; B -13 0 660 669 ;
+C 71 ; WX 722 ; N G ; B 21 -18 706 685 ;
+C 72 ; WX 778 ; N H ; B -24 0 799 669 ;
+C 73 ; WX 389 ; N I ; B -32 0 406 669 ;
+C 74 ; WX 500 ; N J ; B -46 -99 524 669 ;
+C 75 ; WX 667 ; N K ; B -21 0 702 669 ;
+C 76 ; WX 611 ; N L ; B -22 0 590 669 ;
+C 77 ; WX 889 ; N M ; B -29 -12 917 669 ;
+C 78 ; WX 722 ; N N ; B -27 -15 748 669 ;
+C 79 ; WX 722 ; N O ; B 27 -18 691 685 ;
+C 80 ; WX 611 ; N P ; B -27 0 613 669 ;
+C 81 ; WX 722 ; N Q ; B 27 -208 691 685 ;
+C 82 ; WX 667 ; N R ; B -29 0 623 669 ;
+C 83 ; WX 556 ; N S ; B 2 -18 526 685 ;
+C 84 ; WX 611 ; N T ; B 50 0 650 669 ;
+C 85 ; WX 722 ; N U ; B 67 -18 744 669 ;
+C 86 ; WX 667 ; N V ; B 65 -18 715 669 ;
+C 87 ; WX 889 ; N W ; B 65 -18 940 669 ;
+C 88 ; WX 667 ; N X ; B -24 0 694 669 ;
+C 89 ; WX 611 ; N Y ; B 73 0 659 669 ;
+C 90 ; WX 611 ; N Z ; B -11 0 590 669 ;
+C 91 ; WX 333 ; N bracketleft ; B -37 -159 362 674 ;
+C 92 ; WX 278 ; N backslash ; B -1 -18 279 685 ;
+C 93 ; WX 333 ; N bracketright ; B -56 -157 343 674 ;
+C 94 ; WX 570 ; N asciicircum ; B 67 304 503 669 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 333 ; N quoteleft ; B 128 369 332 685 ;
+C 97 ; WX 500 ; N a ; B -21 -14 455 462 ;
+C 98 ; WX 500 ; N b ; B -14 -13 444 699 ;
+C 99 ; WX 444 ; N c ; B -5 -13 392 462 ;
+C 100 ; WX 500 ; N d ; B -21 -13 517 699 ;
+C 101 ; WX 444 ; N e ; B 5 -13 398 462 ;
+C 102 ; WX 333 ; N f ; B -169 -205 446 698 ; L i fi ; L l fl ;
+C 103 ; WX 500 ; N g ; B -52 -203 478 462 ;
+C 104 ; WX 556 ; N h ; B -13 -9 498 699 ;
+C 105 ; WX 278 ; N i ; B 2 -9 263 684 ;
+C 106 ; WX 278 ; N j ; B -189 -207 279 684 ;
+C 107 ; WX 500 ; N k ; B -23 -8 483 699 ;
+C 108 ; WX 278 ; N l ; B 2 -9 290 699 ;
+C 109 ; WX 778 ; N m ; B -14 -9 722 462 ;
+C 110 ; WX 556 ; N n ; B -6 -9 493 462 ;
+C 111 ; WX 500 ; N o ; B -3 -13 441 462 ;
+C 112 ; WX 500 ; N p ; B -120 -205 446 462 ;
+C 113 ; WX 500 ; N q ; B 1 -205 471 462 ;
+C 114 ; WX 389 ; N r ; B -21 0 389 462 ;
+C 115 ; WX 389 ; N s ; B -19 -13 333 462 ;
+C 116 ; WX 278 ; N t ; B -11 -9 281 594 ;
+C 117 ; WX 556 ; N u ; B 15 -9 492 462 ;
+C 118 ; WX 444 ; N v ; B 16 -13 401 462 ;
+C 119 ; WX 667 ; N w ; B 16 -13 614 462 ;
+C 120 ; WX 500 ; N x ; B -46 -13 469 462 ;
+C 121 ; WX 444 ; N y ; B -94 -205 392 462 ;
+C 122 ; WX 389 ; N z ; B -43 -78 368 449 ;
+C 123 ; WX 348 ; N braceleft ; B 5 -187 436 686 ;
+C 124 ; WX 220 ; N bar ; B 66 -18 154 685 ;
+C 125 ; WX 348 ; N braceright ; B -129 -187 302 686 ;
+C 126 ; WX 570 ; N asciitilde ; B 54 173 516 333 ;
+C 161 ; WX 389 ; N exclamdown ; B 19 -205 322 492 ;
+C 162 ; WX 500 ; N cent ; B 42 -143 439 576 ;
+C 163 ; WX 500 ; N sterling ; B -32 -12 510 683 ;
+C 164 ; WX 167 ; N fraction ; B -169 -14 324 683 ;
+C 165 ; WX 500 ; N yen ; B 33 0 628 669 ;
+C 166 ; WX 500 ; N florin ; B -87 -156 537 707 ;
+C 167 ; WX 500 ; N section ; B 36 -143 459 685 ;
+C 168 ; WX 500 ; N currency ; B -26 34 526 586 ;
+C 169 ; WX 278 ; N quotesingle ; B 128 398 268 685 ;
+C 170 ; WX 500 ; N quotedblleft ; B 53 369 513 685 ;
+C 171 ; WX 500 ; N guillemotleft ; B 12 32 468 415 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 32 32 303 415 ;
+C 173 ; WX 333 ; N guilsinglright ; B 10 32 281 415 ;
+C 174 ; WX 556 ; N fi ; B -188 -205 514 703 ;
+C 175 ; WX 556 ; N fl ; B -186 -205 553 704 ;
+C 177 ; WX 500 ; N endash ; B -40 178 477 269 ;
+C 178 ; WX 500 ; N dagger ; B 91 -145 494 685 ;
+C 179 ; WX 500 ; N daggerdbl ; B 10 -139 493 685 ;
+C 180 ; WX 250 ; N periodcentered ; B 51 257 199 405 ;
+C 182 ; WX 500 ; N paragraph ; B -57 -193 562 669 ;
+C 183 ; WX 350 ; N bullet ; B 0 175 350 525 ;
+C 184 ; WX 333 ; N quotesinglbase ; B -5 -182 199 134 ;
+C 185 ; WX 500 ; N quotedblbase ; B -57 -182 403 134 ;
+C 186 ; WX 500 ; N quotedblright ; B 53 369 513 685 ;
+C 187 ; WX 500 ; N guillemotright ; B 12 32 468 415 ;
+C 188 ; WX 1000 ; N ellipsis ; B 40 -13 852 135 ;
+C 189 ; WX 1000 ; N perthousand ; B 7 -29 996 706 ;
+C 191 ; WX 500 ; N questiondown ; B 30 -205 421 492 ;
+C 193 ; WX 333 ; N grave ; B 85 516 297 697 ;
+C 194 ; WX 333 ; N acute ; B 139 516 379 697 ;
+C 195 ; WX 333 ; N circumflex ; B 40 516 367 690 ;
+C 196 ; WX 333 ; N tilde ; B 48 536 407 655 ;
+C 197 ; WX 333 ; N macron ; B 51 553 393 623 ;
+C 198 ; WX 333 ; N breve ; B 71 516 387 678 ;
+C 199 ; WX 333 ; N dotaccent ; B 163 525 293 655 ;
+C 200 ; WX 333 ; N dieresis ; B 55 525 397 655 ;
+C 202 ; WX 333 ; N ring ; B 127 516 340 729 ;
+C 203 ; WX 333 ; N cedilla ; B -80 -218 156 5 ;
+C 205 ; WX 333 ; N hungarumlaut ; B 69 516 498 697 ;
+C 206 ; WX 333 ; N ogonek ; B -40 -173 189 44 ;
+C 207 ; WX 333 ; N caron ; B 79 516 411 690 ;
+C 208 ; WX 1000 ; N emdash ; B -40 178 977 269 ;
+C 225 ; WX 944 ; N AE ; B -64 0 918 669 ;
+C 227 ; WX 266 ; N ordfeminine ; B 16 399 330 685 ;
+C 232 ; WX 611 ; N Lslash ; B -22 0 590 669 ;
+C 233 ; WX 722 ; N Oslash ; B 27 -125 691 764 ;
+C 234 ; WX 944 ; N OE ; B 23 -8 946 677 ;
+C 235 ; WX 300 ; N ordmasculine ; B 56 400 347 685 ;
+C 241 ; WX 722 ; N ae ; B -5 -13 673 462 ;
+C 245 ; WX 278 ; N dotlessi ; B 2 -9 238 462 ;
+C 248 ; WX 278 ; N lslash ; B -13 -9 301 699 ;
+C 249 ; WX 500 ; N oslash ; B -3 -119 441 560 ;
+C 250 ; WX 722 ; N oe ; B 6 -13 674 462 ;
+C 251 ; WX 500 ; N germandbls ; B -200 -200 473 705 ;
+C -1 ; WX 611 ; N Zcaron ; B -11 0 590 897 ;
+C -1 ; WX 444 ; N ccedilla ; B -24 -218 392 462 ;
+C -1 ; WX 444 ; N ydieresis ; B -94 -205 438 655 ;
+C -1 ; WX 500 ; N atilde ; B -21 -14 491 655 ;
+C -1 ; WX 278 ; N icircumflex ; B -2 -9 325 690 ;
+C -1 ; WX 300 ; N threesuperior ; B 17 265 321 683 ;
+C -1 ; WX 444 ; N ecircumflex ; B 5 -13 423 690 ;
+C -1 ; WX 500 ; N thorn ; B -120 -205 446 699 ;
+C -1 ; WX 444 ; N egrave ; B 5 -13 398 697 ;
+C -1 ; WX 300 ; N twosuperior ; B 2 274 313 683 ;
+C -1 ; WX 444 ; N eacute ; B 5 -13 435 697 ;
+C -1 ; WX 500 ; N otilde ; B -3 -13 491 655 ;
+C -1 ; WX 667 ; N Aacute ; B -67 0 593 904 ;
+C -1 ; WX 500 ; N ocircumflex ; B -3 -13 451 690 ;
+C -1 ; WX 444 ; N yacute ; B -94 -205 435 697 ;
+C -1 ; WX 556 ; N udieresis ; B 15 -9 494 655 ;
+C -1 ; WX 750 ; N threequarters ; B 7 -14 726 683 ;
+C -1 ; WX 500 ; N acircumflex ; B -21 -14 455 690 ;
+C -1 ; WX 722 ; N Eth ; B -31 0 700 669 ;
+C -1 ; WX 444 ; N edieresis ; B 5 -13 443 655 ;
+C -1 ; WX 556 ; N ugrave ; B 15 -9 492 697 ;
+C -1 ; WX 1000 ; N trademark ; B 32 263 968 669 ;
+C -1 ; WX 500 ; N ograve ; B -3 -13 441 697 ;
+C -1 ; WX 389 ; N scaron ; B -19 -13 439 690 ;
+C -1 ; WX 389 ; N Idieresis ; B -32 0 445 862 ;
+C -1 ; WX 556 ; N uacute ; B 15 -9 492 697 ;
+C -1 ; WX 500 ; N agrave ; B -21 -14 455 697 ;
+C -1 ; WX 556 ; N ntilde ; B -6 -9 504 655 ;
+C -1 ; WX 500 ; N aring ; B -21 -14 455 729 ;
+C -1 ; WX 389 ; N zcaron ; B -43 -78 424 690 ;
+C -1 ; WX 389 ; N Icircumflex ; B -32 0 420 897 ;
+C -1 ; WX 722 ; N Ntilde ; B -27 -15 748 862 ;
+C -1 ; WX 556 ; N ucircumflex ; B 15 -9 492 690 ;
+C -1 ; WX 667 ; N Ecircumflex ; B -27 0 653 897 ;
+C -1 ; WX 389 ; N Iacute ; B -32 0 412 904 ;
+C -1 ; WX 667 ; N Ccedilla ; B 32 -218 677 685 ;
+C -1 ; WX 722 ; N Odieresis ; B 27 -18 691 862 ;
+C -1 ; WX 556 ; N Scaron ; B 2 -18 526 897 ;
+C -1 ; WX 667 ; N Edieresis ; B -27 0 653 862 ;
+C -1 ; WX 389 ; N Igrave ; B -32 0 406 904 ;
+C -1 ; WX 500 ; N adieresis ; B -21 -14 471 655 ;
+C -1 ; WX 722 ; N Ograve ; B 27 -18 691 904 ;
+C -1 ; WX 667 ; N Egrave ; B -27 0 653 904 ;
+C -1 ; WX 611 ; N Ydieresis ; B 73 0 659 862 ;
+C -1 ; WX 747 ; N registered ; B 30 -18 718 685 ;
+C -1 ; WX 722 ; N Otilde ; B 27 -18 691 862 ;
+C -1 ; WX 750 ; N onequarter ; B 7 -14 721 683 ;
+C -1 ; WX 722 ; N Ugrave ; B 67 -18 744 904 ;
+C -1 ; WX 722 ; N Ucircumflex ; B 67 -18 744 897 ;
+C -1 ; WX 611 ; N Thorn ; B -27 0 573 669 ;
+C -1 ; WX 570 ; N divide ; B 33 -29 537 535 ;
+C -1 ; WX 667 ; N Atilde ; B -67 0 593 862 ;
+C -1 ; WX 722 ; N Uacute ; B 67 -18 744 904 ;
+C -1 ; WX 722 ; N Ocircumflex ; B 27 -18 691 897 ;
+C -1 ; WX 606 ; N logicalnot ; B 51 108 555 399 ;
+C -1 ; WX 667 ; N Aring ; B -67 0 593 921 ;
+C -1 ; WX 278 ; N idieresis ; B 2 -9 360 655 ;
+C -1 ; WX 278 ; N iacute ; B 2 -9 352 697 ;
+C -1 ; WX 500 ; N aacute ; B -21 -14 463 697 ;
+C -1 ; WX 570 ; N plusminus ; B 33 0 537 506 ;
+C -1 ; WX 570 ; N multiply ; B 48 16 522 490 ;
+C -1 ; WX 722 ; N Udieresis ; B 67 -18 744 862 ;
+C -1 ; WX 606 ; N minus ; B 51 209 555 297 ;
+C -1 ; WX 300 ; N onesuperior ; B 30 274 301 683 ;
+C -1 ; WX 667 ; N Eacute ; B -27 0 653 904 ;
+C -1 ; WX 667 ; N Acircumflex ; B -67 0 593 897 ;
+C -1 ; WX 747 ; N copyright ; B 30 -18 718 685 ;
+C -1 ; WX 667 ; N Agrave ; B -67 0 593 904 ;
+C -1 ; WX 500 ; N odieresis ; B -3 -13 466 655 ;
+C -1 ; WX 500 ; N oacute ; B -3 -13 463 697 ;
+C -1 ; WX 400 ; N degree ; B 83 397 369 683 ;
+C -1 ; WX 278 ; N igrave ; B 2 -9 260 697 ;
+C -1 ; WX 576 ; N mu ; B -60 -207 516 449 ;
+C -1 ; WX 722 ; N Oacute ; B 27 -18 691 904 ;
+C -1 ; WX 500 ; N eth ; B -3 -13 454 699 ;
+C -1 ; WX 667 ; N Adieresis ; B -67 0 593 862 ;
+C -1 ; WX 611 ; N Yacute ; B 73 0 659 904 ;
+C -1 ; WX 220 ; N brokenbar ; B 66 -18 154 685 ;
+C -1 ; WX 750 ; N onehalf ; B -9 -14 723 683 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 283
+
+KPX A y -74
+KPX A w -74
+KPX A v -74
+KPX A u -30
+KPX A quoteright -74
+KPX A quotedblright 0
+KPX A p 0
+KPX A Y -70
+KPX A W -100
+KPX A V -95
+KPX A U -50
+KPX A T -55
+KPX A Q -55
+KPX A O -50
+KPX A G -60
+KPX A C -65
+
+KPX B period 0
+KPX B comma 0
+KPX B U -10
+KPX B A -25
+
+KPX D period 0
+KPX D comma 0
+KPX D Y -50
+KPX D W -40
+KPX D V -50
+KPX D A -25
+
+KPX F r -50
+KPX F period -129
+KPX F o -70
+KPX F i -40
+KPX F e -100
+KPX F comma -129
+KPX F a -95
+KPX F A -100
+
+KPX G period 0
+KPX G comma 0
+
+KPX J u -40
+KPX J period -10
+KPX J o -40
+KPX J e -40
+KPX J comma -10
+KPX J a -40
+KPX J A -25
+
+KPX K y -20
+KPX K u -20
+KPX K o -25
+KPX K e -25
+KPX K O -30
+
+KPX L y -37
+KPX L quoteright -55
+KPX L quotedblright 0
+KPX L Y -37
+KPX L W -37
+KPX L V -37
+KPX L T -18
+
+KPX N period 0
+KPX N comma 0
+KPX N A -30
+
+KPX O period 0
+KPX O comma 0
+KPX O Y -50
+KPX O X -40
+KPX O W -50
+KPX O V -50
+KPX O T -40
+KPX O A -40
+
+KPX P period -129
+KPX P o -55
+KPX P e -50
+KPX P comma -129
+KPX P a -40
+KPX P A -85
+
+KPX Q period 0
+KPX Q comma 0
+KPX Q U -10
+
+KPX R Y -18
+KPX R W -18
+KPX R V -18
+KPX R U -40
+KPX R T -30
+KPX R O -40
+
+KPX S period 0
+KPX S comma 0
+
+KPX T y -37
+KPX T w -37
+KPX T u -37
+KPX T semicolon -74
+KPX T r -37
+KPX T period -92
+KPX T o -95
+KPX T i -37
+KPX T hyphen -92
+KPX T h 0
+KPX T e -92
+KPX T comma -92
+KPX T colon -74
+KPX T a -92
+KPX T O -18
+KPX T A -55
+
+KPX U period 0
+KPX U comma 0
+KPX U A -45
+
+KPX V u -55
+KPX V semicolon -74
+KPX V period -129
+KPX V o -111
+KPX V i -55
+KPX V hyphen -70
+KPX V e -111
+KPX V comma -129
+KPX V colon -74
+KPX V a -111
+KPX V O -30
+KPX V G -10
+KPX V A -85
+
+KPX W y -55
+KPX W u -55
+KPX W semicolon -55
+KPX W period -74
+KPX W o -80
+KPX W i -37
+KPX W hyphen -50
+KPX W h 0
+KPX W e -90
+KPX W comma -74
+KPX W colon -55
+KPX W a -85
+KPX W O -15
+KPX W A -74
+
+KPX Y u -92
+KPX Y semicolon -92
+KPX Y period -74
+KPX Y o -111
+KPX Y i -55
+KPX Y hyphen -92
+KPX Y e -111
+KPX Y comma -92
+KPX Y colon -92
+KPX Y a -92
+KPX Y O -25
+KPX Y A -74
+
+KPX a y 0
+KPX a w 0
+KPX a v 0
+KPX a t 0
+KPX a p 0
+KPX a g 0
+KPX a b 0
+
+KPX b y 0
+KPX b v 0
+KPX b u -20
+KPX b period -40
+KPX b l 0
+KPX b comma 0
+KPX b b -10
+
+KPX c y 0
+KPX c period 0
+KPX c l 0
+KPX c k -10
+KPX c h -10
+KPX c comma 0
+
+KPX colon space 0
+
+KPX comma space 0
+KPX comma quoteright -95
+KPX comma quotedblright -95
+
+KPX d y 0
+KPX d w 0
+KPX d v 0
+KPX d period 0
+KPX d d 0
+KPX d comma 0
+
+KPX e y 0
+KPX e x 0
+KPX e w 0
+KPX e v 0
+KPX e period 0
+KPX e p 0
+KPX e g 0
+KPX e comma 0
+KPX e b -10
+
+KPX f quoteright 55
+KPX f quotedblright 0
+KPX f period -10
+KPX f o -10
+KPX f l 0
+KPX f i 0
+KPX f f -18
+KPX f e -10
+KPX f dotlessi -30
+KPX f comma -10
+KPX f a 0
+
+KPX g y 0
+KPX g r 0
+KPX g period 0
+KPX g o 0
+KPX g i 0
+KPX g g 0
+KPX g e 0
+KPX g comma 0
+KPX g a 0
+
+KPX h y 0
+
+KPX i v 0
+
+KPX k y 0
+KPX k o -10
+KPX k e -30
+
+KPX l y 0
+KPX l w 0
+
+KPX m y 0
+KPX m u 0
+
+KPX n y 0
+KPX n v -40
+KPX n u 0
+
+KPX o y -10
+KPX o x -10
+KPX o w -25
+KPX o v -15
+KPX o g 0
+
+KPX p y 0
+
+KPX period quoteright -95
+KPX period quotedblright -95
+
+KPX quotedblleft quoteleft 0
+KPX quotedblleft A 0
+
+KPX quotedblright space 0
+
+KPX quoteleft quoteleft -74
+KPX quoteleft A 0
+
+KPX quoteright v -15
+KPX quoteright t -37
+KPX quoteright space -74
+KPX quoteright s -74
+KPX quoteright r -15
+KPX quoteright quoteright -74
+KPX quoteright quotedblright 0
+KPX quoteright l 0
+KPX quoteright d -15
+
+KPX r y 0
+KPX r v 0
+KPX r u 0
+KPX r t 0
+KPX r s 0
+KPX r r 0
+KPX r q 0
+KPX r period -65
+KPX r p 0
+KPX r o 0
+KPX r n 0
+KPX r m 0
+KPX r l 0
+KPX r k 0
+KPX r i 0
+KPX r hyphen 0
+KPX r g 0
+KPX r e 0
+KPX r d 0
+KPX r comma -65
+KPX r c 0
+KPX r a 0
+
+KPX s w 0
+
+KPX space quoteleft 0
+KPX space quotedblleft 0
+KPX space Y -70
+KPX space W -70
+KPX space V -70
+KPX space T 0
+KPX space A -37
+
+KPX v period -37
+KPX v o -15
+KPX v e -15
+KPX v comma -37
+KPX v a 0
+
+KPX w period -37
+KPX w o -15
+KPX w h 0
+KPX w e -10
+KPX w comma -37
+KPX w a -10
+
+KPX x e -10
+
+KPX y period -37
+KPX y o 0
+KPX y e 0
+KPX y comma -37
+KPX y a 0
+
+KPX z o 0
+KPX z e 0
+EndKernPairs
+EndKernData
+StartComposites 58
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 172 207 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 187 207 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 167 207 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 172 207 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 157 192 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 167 207 ;
+CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 167 0 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 172 207 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 187 207 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 187 207 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 172 207 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 33 207 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 53 207 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 48 207 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 33 207 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 210 207 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 200 207 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 230 207 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 215 207 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 200 207 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 215 207 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 112 207 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 210 207 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 230 207 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 230 207 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 200 207 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 154 207 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 169 207 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 139 207 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 84 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 84 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 74 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 74 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 84 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 84 0 ;
+CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 56 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 56 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 56 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 46 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 46 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -27 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -42 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -37 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -37 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 97 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 84 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 84 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 69 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 74 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 84 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 28 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 112 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 112 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 97 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 102 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 56 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 41 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 13 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/Ti-BdIt+ b/font/font/Ti-BdIt+
new file mode 100644
index 0000000..23f3f8c
--- /dev/null
+++ b/font/font/Ti-BdIt+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 667 ; N Ccaron ; B 32 -18 700 904 ;
+C -1 ; WX 444 ; N ccaron ; B -5 -13 486 690 ;
+C -1 ; WX 722 ; N Dcaron ; B -46 0 685 904 ;
+C -1 ; WX 643 ; N dcaron ; B -21 -13 741 769 ;
+C -1 ; WX 667 ; N Ecaron ; B -27 0 653 904 ;
+C -1 ; WX 444 ; N ecaron ; B 5 -13 466 690 ;
+C -1 ; WX 611 ; N Lcaron ; B -22 0 630 736 ;
+C -1 ; WX 611 ; N Lacute ; B -22 0 590 911 ;
+C -1 ; WX 421 ; N lcaron ; B 2 -9 514 769 ;
+C -1 ; WX 278 ; N lacute ; B 2 -9 433 911 ;
+C -1 ; WX 722 ; N Ncaron ; B -27 -15 748 904 ;
+C -1 ; WX 556 ; N ncaron ; B -6 -9 522 690 ;
+C -1 ; WX 667 ; N Rcaron ; B -29 0 635 904 ;
+C -1 ; WX 667 ; N Racute ; B -29 0 649 911 ;
+C -1 ; WX 389 ; N rcaron ; B -21 0 439 690 ;
+C -1 ; WX 389 ; N racute ; B -21 0 431 697 ;
+C -1 ; WX 611 ; N Tcaron ; B 50 0 650 904 ;
+C -1 ; WX 421 ; N tcaron ; B -11 -9 505 685 ;
+C -1 ; WX 722 ; N Uring ; B 67 -18 744 904 ;
+C -1 ; WX 556 ; N uring ; B 15 -9 492 729 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 289 214 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 75 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 251 214 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 439 84 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 224 214 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 55 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 328 51 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 196 214 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 212 84 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 54 214 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 251 214 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 111 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 224 214 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 270 214 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 28 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 52 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 196 214 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 203 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 240 175 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 111 0 ;
+EndBuildComposites
diff --git a/font/font/Ti-BdItF b/font/font/Ti-BdItF
new file mode 100644
index 0000000..3e513cc
--- /dev/null
+++ b/font/font/Ti-BdItF
@@ -0,0 +1,518 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Tue Dec 4 12:07:03 1990
+Comment UniqueID 33656
+Comment VMusage 33137 40029
+FontName Times-BoldItalicOsF
+FullName Times Bold Italic Old Style Figures
+FamilyName Times
+Weight Bold
+ItalicAngle -15
+IsFixedPitch false
+FontBBox -200 -218 996 921
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.000
+Notice Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.Times is a trademark of Linotype AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 669
+XHeight 462
+Ascender 699
+Descender -205
+StartCharMetrics 228
+C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 389 ; N exclam ; B 67 -13 370 684 ;
+C 34 ; WX 555 ; N quotedbl ; B 136 398 536 685 ;
+C 35 ; WX 500 ; N numbersign ; B -33 0 533 700 ;
+C 36 ; WX 500 ; N dollar ; B -20 -100 497 733 ;
+C 37 ; WX 833 ; N percent ; B 39 -10 793 692 ;
+C 38 ; WX 778 ; N ampersand ; B 5 -19 699 682 ;
+C 39 ; WX 333 ; N quoteright ; B 98 369 302 685 ;
+C 40 ; WX 333 ; N parenleft ; B 28 -179 344 685 ;
+C 41 ; WX 333 ; N parenright ; B -44 -179 271 685 ;
+C 42 ; WX 500 ; N asterisk ; B 65 249 456 685 ;
+C 43 ; WX 570 ; N plus ; B 33 0 537 506 ;
+C 44 ; WX 250 ; N comma ; B -60 -182 144 134 ;
+C 45 ; WX 333 ; N hyphen ; B 2 166 271 282 ;
+C 46 ; WX 250 ; N period ; B -9 -13 139 135 ;
+C 47 ; WX 278 ; N slash ; B -64 -18 342 685 ;
+C 48 ; WX 500 ; N zero ; B 20 -12 472 502 ;
+C 49 ; WX 500 ; N one ; B 22 0 468 486 ;
+C 50 ; WX 500 ; N two ; B 0 0 430 498 ;
+C 51 ; WX 500 ; N three ; B -29 -194 432 498 ;
+C 52 ; WX 500 ; N four ; B -26 -168 486 513 ;
+C 53 ; WX 500 ; N five ; B -22 -194 477 486 ;
+C 54 ; WX 500 ; N six ; B 32 -12 516 680 ;
+C 55 ; WX 500 ; N seven ; B 44 -182 508 486 ;
+C 56 ; WX 500 ; N eight ; B 24 -12 496 682 ;
+C 57 ; WX 500 ; N nine ; B -24 -190 460 502 ;
+C 58 ; WX 333 ; N colon ; B 23 -13 264 459 ;
+C 59 ; WX 333 ; N semicolon ; B -25 -183 264 459 ;
+C 60 ; WX 570 ; N less ; B 31 -8 539 514 ;
+C 61 ; WX 570 ; N equal ; B 33 107 537 399 ;
+C 62 ; WX 570 ; N greater ; B 31 -8 539 514 ;
+C 63 ; WX 500 ; N question ; B 79 -13 470 684 ;
+C 64 ; WX 832 ; N at ; B 63 -18 770 685 ;
+C 65 ; WX 667 ; N A ; B -67 0 593 683 ;
+C 66 ; WX 667 ; N B ; B -24 0 624 669 ;
+C 67 ; WX 667 ; N C ; B 32 -18 677 685 ;
+C 68 ; WX 722 ; N D ; B -46 0 685 669 ;
+C 69 ; WX 667 ; N E ; B -27 0 653 669 ;
+C 70 ; WX 667 ; N F ; B -13 0 660 669 ;
+C 71 ; WX 722 ; N G ; B 21 -18 706 685 ;
+C 72 ; WX 778 ; N H ; B -24 0 799 669 ;
+C 73 ; WX 389 ; N I ; B -32 0 406 669 ;
+C 74 ; WX 500 ; N J ; B -46 -99 524 669 ;
+C 75 ; WX 667 ; N K ; B -21 0 702 669 ;
+C 76 ; WX 611 ; N L ; B -22 0 590 669 ;
+C 77 ; WX 889 ; N M ; B -29 -12 917 669 ;
+C 78 ; WX 722 ; N N ; B -27 -15 748 669 ;
+C 79 ; WX 722 ; N O ; B 27 -18 691 685 ;
+C 80 ; WX 611 ; N P ; B -27 0 613 669 ;
+C 81 ; WX 722 ; N Q ; B 27 -208 691 685 ;
+C 82 ; WX 667 ; N R ; B -29 0 623 669 ;
+C 83 ; WX 556 ; N S ; B 2 -18 526 685 ;
+C 84 ; WX 611 ; N T ; B 50 0 650 669 ;
+C 85 ; WX 722 ; N U ; B 67 -18 744 669 ;
+C 86 ; WX 667 ; N V ; B 65 -18 715 669 ;
+C 87 ; WX 889 ; N W ; B 65 -18 940 669 ;
+C 88 ; WX 667 ; N X ; B -24 0 694 669 ;
+C 89 ; WX 611 ; N Y ; B 73 0 659 669 ;
+C 90 ; WX 611 ; N Z ; B -11 0 590 669 ;
+C 91 ; WX 333 ; N bracketleft ; B -37 -159 362 674 ;
+C 92 ; WX 278 ; N backslash ; B -1 -18 279 685 ;
+C 93 ; WX 333 ; N bracketright ; B -56 -157 343 674 ;
+C 94 ; WX 570 ; N asciicircum ; B 67 304 503 669 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 333 ; N quoteleft ; B 128 369 332 685 ;
+C 97 ; WX 500 ; N a ; B -21 -14 455 462 ;
+C 98 ; WX 500 ; N b ; B -14 -13 444 699 ;
+C 99 ; WX 444 ; N c ; B -5 -13 392 462 ;
+C 100 ; WX 500 ; N d ; B -21 -13 517 699 ;
+C 101 ; WX 444 ; N e ; B 5 -13 398 462 ;
+C 102 ; WX 333 ; N f ; B -169 -205 446 698 ; L i fi ; L l fl ;
+C 103 ; WX 500 ; N g ; B -52 -203 478 462 ;
+C 104 ; WX 556 ; N h ; B -13 -9 498 699 ;
+C 105 ; WX 278 ; N i ; B 2 -9 263 684 ;
+C 106 ; WX 278 ; N j ; B -189 -207 279 684 ;
+C 107 ; WX 500 ; N k ; B -23 -8 483 699 ;
+C 108 ; WX 278 ; N l ; B 2 -9 290 699 ;
+C 109 ; WX 778 ; N m ; B -14 -9 722 462 ;
+C 110 ; WX 556 ; N n ; B -6 -9 493 462 ;
+C 111 ; WX 500 ; N o ; B -3 -13 441 462 ;
+C 112 ; WX 500 ; N p ; B -120 -205 446 462 ;
+C 113 ; WX 500 ; N q ; B 1 -205 471 462 ;
+C 114 ; WX 389 ; N r ; B -21 0 389 462 ;
+C 115 ; WX 389 ; N s ; B -19 -13 333 462 ;
+C 116 ; WX 278 ; N t ; B -11 -9 281 594 ;
+C 117 ; WX 556 ; N u ; B 15 -9 492 462 ;
+C 118 ; WX 444 ; N v ; B 16 -13 401 462 ;
+C 119 ; WX 667 ; N w ; B 16 -13 614 462 ;
+C 120 ; WX 500 ; N x ; B -46 -13 469 462 ;
+C 121 ; WX 444 ; N y ; B -94 -205 392 462 ;
+C 122 ; WX 389 ; N z ; B -43 -78 368 449 ;
+C 123 ; WX 348 ; N braceleft ; B 5 -187 436 686 ;
+C 124 ; WX 220 ; N bar ; B 66 -18 154 685 ;
+C 125 ; WX 348 ; N braceright ; B -129 -187 302 686 ;
+C 126 ; WX 570 ; N asciitilde ; B 54 173 516 333 ;
+C 161 ; WX 389 ; N exclamdown ; B 19 -205 322 492 ;
+C 162 ; WX 500 ; N cent ; B 42 -143 439 576 ;
+C 163 ; WX 500 ; N sterling ; B -32 -12 510 683 ;
+C 164 ; WX 167 ; N fraction ; B -169 -14 324 683 ;
+C 165 ; WX 500 ; N yen ; B 33 0 628 669 ;
+C 166 ; WX 500 ; N florin ; B -87 -156 537 707 ;
+C 167 ; WX 500 ; N section ; B 36 -143 459 685 ;
+C 168 ; WX 500 ; N currency ; B -26 34 526 586 ;
+C 169 ; WX 278 ; N quotesingle ; B 128 398 268 685 ;
+C 170 ; WX 500 ; N quotedblleft ; B 53 369 513 685 ;
+C 171 ; WX 500 ; N guillemotleft ; B 12 32 468 415 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 32 32 303 415 ;
+C 173 ; WX 333 ; N guilsinglright ; B 10 32 281 415 ;
+C 174 ; WX 556 ; N fi ; B -188 -205 514 703 ;
+C 175 ; WX 556 ; N fl ; B -186 -205 553 704 ;
+C 177 ; WX 500 ; N endash ; B -40 178 477 269 ;
+C 178 ; WX 500 ; N dagger ; B 91 -145 494 685 ;
+C 179 ; WX 500 ; N daggerdbl ; B 10 -139 493 685 ;
+C 180 ; WX 250 ; N periodcentered ; B 51 257 199 405 ;
+C 182 ; WX 500 ; N paragraph ; B -57 -193 562 669 ;
+C 183 ; WX 350 ; N bullet ; B 0 175 350 525 ;
+C 184 ; WX 333 ; N quotesinglbase ; B -5 -182 199 134 ;
+C 185 ; WX 500 ; N quotedblbase ; B -57 -182 403 134 ;
+C 186 ; WX 500 ; N quotedblright ; B 53 369 513 685 ;
+C 187 ; WX 500 ; N guillemotright ; B 12 32 468 415 ;
+C 188 ; WX 1000 ; N ellipsis ; B 40 -13 852 135 ;
+C 189 ; WX 1000 ; N perthousand ; B 7 -29 996 706 ;
+C 191 ; WX 500 ; N questiondown ; B 30 -205 421 492 ;
+C 193 ; WX 333 ; N grave ; B 85 516 297 697 ;
+C 194 ; WX 333 ; N acute ; B 139 516 379 697 ;
+C 195 ; WX 333 ; N circumflex ; B 40 516 367 690 ;
+C 196 ; WX 333 ; N tilde ; B 48 536 407 655 ;
+C 197 ; WX 333 ; N macron ; B 51 553 393 623 ;
+C 198 ; WX 333 ; N breve ; B 71 516 387 678 ;
+C 199 ; WX 333 ; N dotaccent ; B 163 525 293 655 ;
+C 200 ; WX 333 ; N dieresis ; B 55 525 397 655 ;
+C 202 ; WX 333 ; N ring ; B 127 516 340 729 ;
+C 203 ; WX 333 ; N cedilla ; B -80 -218 156 5 ;
+C 205 ; WX 333 ; N hungarumlaut ; B 69 516 498 697 ;
+C 206 ; WX 333 ; N ogonek ; B -40 -173 189 44 ;
+C 207 ; WX 333 ; N caron ; B 79 516 411 690 ;
+C 208 ; WX 1000 ; N emdash ; B 84 178 852 269 ;
+C 225 ; WX 944 ; N AE ; B -64 0 918 669 ;
+C 227 ; WX 266 ; N ordfeminine ; B 16 399 330 685 ;
+C 232 ; WX 611 ; N Lslash ; B -22 0 590 669 ;
+C 233 ; WX 722 ; N Oslash ; B 27 -125 691 764 ;
+C 234 ; WX 944 ; N OE ; B 23 -8 946 677 ;
+C 235 ; WX 300 ; N ordmasculine ; B 56 400 347 685 ;
+C 241 ; WX 722 ; N ae ; B -5 -13 673 462 ;
+C 245 ; WX 278 ; N dotlessi ; B 2 -9 238 462 ;
+C 248 ; WX 278 ; N lslash ; B -13 -9 301 699 ;
+C 249 ; WX 500 ; N oslash ; B -3 -119 441 560 ;
+C 250 ; WX 722 ; N oe ; B 6 -13 674 462 ;
+C 251 ; WX 500 ; N germandbls ; B -200 -200 473 705 ;
+C -1 ; WX 444 ; N ecircumflex ; B 5 -13 423 690 ;
+C -1 ; WX 444 ; N edieresis ; B 5 -13 443 655 ;
+C -1 ; WX 500 ; N aacute ; B -21 -14 463 697 ;
+C -1 ; WX 747 ; N registered ; B 30 -18 718 685 ;
+C -1 ; WX 278 ; N icircumflex ; B -2 -9 325 690 ;
+C -1 ; WX 556 ; N udieresis ; B 15 -9 494 655 ;
+C -1 ; WX 500 ; N ograve ; B -3 -13 441 697 ;
+C -1 ; WX 556 ; N uacute ; B 15 -9 492 697 ;
+C -1 ; WX 556 ; N ucircumflex ; B 15 -9 492 690 ;
+C -1 ; WX 667 ; N Aacute ; B -67 0 593 904 ;
+C -1 ; WX 278 ; N igrave ; B 2 -9 260 697 ;
+C -1 ; WX 389 ; N Icircumflex ; B -32 0 420 897 ;
+C -1 ; WX 444 ; N ccedilla ; B -25 -218 392 462 ;
+C -1 ; WX 500 ; N adieresis ; B -21 -14 471 655 ;
+C -1 ; WX 667 ; N Ecircumflex ; B -27 0 653 897 ;
+C -1 ; WX 389 ; N scaron ; B -19 -13 439 690 ;
+C -1 ; WX 500 ; N thorn ; B -120 -205 446 699 ;
+C -1 ; WX 1000 ; N trademark ; B 32 263 968 669 ;
+C -1 ; WX 444 ; N egrave ; B 5 -13 398 697 ;
+C -1 ; WX 300 ; N threesuperior ; B 17 265 321 683 ;
+C -1 ; WX 389 ; N zcaron ; B -43 -78 424 690 ;
+C -1 ; WX 500 ; N atilde ; B -21 -14 491 655 ;
+C -1 ; WX 500 ; N aring ; B -21 -14 455 729 ;
+C -1 ; WX 500 ; N ocircumflex ; B -3 -13 451 690 ;
+C -1 ; WX 667 ; N Edieresis ; B -27 0 653 862 ;
+C -1 ; WX 750 ; N threequarters ; B 7 -14 726 683 ;
+C -1 ; WX 444 ; N ydieresis ; B -94 -205 438 655 ;
+C -1 ; WX 444 ; N yacute ; B -94 -205 435 697 ;
+C -1 ; WX 278 ; N iacute ; B 2 -9 352 697 ;
+C -1 ; WX 667 ; N Acircumflex ; B -67 0 593 897 ;
+C -1 ; WX 722 ; N Uacute ; B 67 -18 744 904 ;
+C -1 ; WX 444 ; N eacute ; B 5 -13 435 697 ;
+C -1 ; WX 722 ; N Ograve ; B 27 -18 691 904 ;
+C -1 ; WX 500 ; N agrave ; B -21 -14 455 697 ;
+C -1 ; WX 722 ; N Udieresis ; B 67 -18 744 862 ;
+C -1 ; WX 500 ; N acircumflex ; B -21 -14 455 690 ;
+C -1 ; WX 389 ; N Igrave ; B -32 0 406 904 ;
+C -1 ; WX 300 ; N twosuperior ; B 2 274 313 683 ;
+C -1 ; WX 722 ; N Ugrave ; B 67 -18 744 904 ;
+C -1 ; WX 750 ; N onequarter ; B 7 -14 721 683 ;
+C -1 ; WX 722 ; N Ucircumflex ; B 67 -18 744 897 ;
+C -1 ; WX 556 ; N Scaron ; B 2 -18 526 897 ;
+C -1 ; WX 389 ; N Idieresis ; B -32 0 445 862 ;
+C -1 ; WX 278 ; N idieresis ; B 2 -9 360 655 ;
+C -1 ; WX 667 ; N Egrave ; B -27 0 653 904 ;
+C -1 ; WX 722 ; N Oacute ; B 27 -18 691 904 ;
+C -1 ; WX 570 ; N divide ; B 33 -29 537 535 ;
+C -1 ; WX 667 ; N Atilde ; B -67 0 593 862 ;
+C -1 ; WX 667 ; N Aring ; B -67 0 593 921 ;
+C -1 ; WX 722 ; N Odieresis ; B 27 -18 691 862 ;
+C -1 ; WX 667 ; N Adieresis ; B -67 0 593 862 ;
+C -1 ; WX 722 ; N Ntilde ; B -27 -15 748 862 ;
+C -1 ; WX 611 ; N Zcaron ; B -11 0 590 897 ;
+C -1 ; WX 611 ; N Thorn ; B -27 0 573 669 ;
+C -1 ; WX 389 ; N Iacute ; B -32 0 412 904 ;
+C -1 ; WX 570 ; N plusminus ; B 33 0 537 506 ;
+C -1 ; WX 570 ; N multiply ; B 48 16 522 490 ;
+C -1 ; WX 667 ; N Eacute ; B -27 0 653 904 ;
+C -1 ; WX 611 ; N Ydieresis ; B 73 0 659 862 ;
+C -1 ; WX 300 ; N onesuperior ; B 30 274 301 683 ;
+C -1 ; WX 556 ; N ugrave ; B 15 -9 492 697 ;
+C -1 ; WX 606 ; N logicalnot ; B 51 108 555 399 ;
+C -1 ; WX 556 ; N ntilde ; B -6 -9 504 655 ;
+C -1 ; WX 722 ; N Otilde ; B 27 -18 691 862 ;
+C -1 ; WX 500 ; N otilde ; B -3 -13 491 655 ;
+C -1 ; WX 667 ; N Ccedilla ; B 32 -218 677 685 ;
+C -1 ; WX 667 ; N Agrave ; B -67 0 593 904 ;
+C -1 ; WX 750 ; N onehalf ; B -9 -14 723 683 ;
+C -1 ; WX 722 ; N Eth ; B -31 0 700 669 ;
+C -1 ; WX 400 ; N degree ; B 83 397 369 683 ;
+C -1 ; WX 611 ; N Yacute ; B 73 0 659 904 ;
+C -1 ; WX 722 ; N Ocircumflex ; B 27 -18 691 897 ;
+C -1 ; WX 500 ; N oacute ; B -3 -13 463 697 ;
+C -1 ; WX 576 ; N mu ; B -60 -207 516 449 ;
+C -1 ; WX 606 ; N minus ; B 51 209 555 297 ;
+C -1 ; WX 500 ; N eth ; B -3 -13 454 699 ;
+C -1 ; WX 500 ; N odieresis ; B -3 -13 466 655 ;
+C -1 ; WX 747 ; N copyright ; B 30 -18 718 685 ;
+C -1 ; WX 220 ; N brokenbar ; B 66 -18 154 685 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 170
+
+KPX A y -74
+KPX A w -74
+KPX A v -74
+KPX A u -30
+KPX A quoteright -74
+KPX A Y -70
+KPX A W -100
+KPX A V -95
+KPX A U -50
+KPX A T -55
+KPX A Q -55
+KPX A O -50
+KPX A G -60
+KPX A C -65
+
+KPX B U -10
+KPX B A -25
+
+KPX D Y -50
+KPX D W -40
+KPX D V -50
+KPX D A -25
+
+KPX F r -50
+KPX F period -129
+KPX F o -70
+KPX F i -40
+KPX F e -100
+KPX F comma -129
+KPX F a -95
+KPX F A -100
+
+KPX J u -40
+KPX J period -10
+KPX J o -40
+KPX J e -40
+KPX J comma -10
+KPX J a -40
+KPX J A -25
+
+KPX K y -20
+KPX K u -20
+KPX K o -25
+KPX K e -25
+KPX K O -30
+
+KPX L y -37
+KPX L quoteright -55
+KPX L Y -37
+KPX L W -37
+KPX L V -37
+KPX L T -18
+
+KPX N A -30
+
+KPX O Y -50
+KPX O X -40
+KPX O W -50
+KPX O V -50
+KPX O T -40
+KPX O A -40
+
+KPX P period -129
+KPX P o -55
+KPX P e -50
+KPX P comma -129
+KPX P a -40
+KPX P A -85
+
+KPX Q U -10
+
+KPX R Y -18
+KPX R W -18
+KPX R V -18
+KPX R U -40
+KPX R T -30
+KPX R O -40
+
+KPX T y -37
+KPX T w -37
+KPX T u -37
+KPX T semicolon -74
+KPX T r -37
+KPX T period -92
+KPX T o -95
+KPX T i -37
+KPX T hyphen -92
+KPX T e -92
+KPX T comma -92
+KPX T colon -74
+KPX T a -92
+KPX T O -18
+KPX T A -55
+
+KPX U A -45
+
+KPX V u -55
+KPX V semicolon -74
+KPX V period -129
+KPX V o -111
+KPX V i -55
+KPX V hyphen -70
+KPX V e -111
+KPX V comma -129
+KPX V colon -74
+KPX V a -111
+KPX V O -30
+KPX V G -10
+KPX V A -85
+
+KPX W y -55
+KPX W u -55
+KPX W semicolon -55
+KPX W period -74
+KPX W o -80
+KPX W i -37
+KPX W hyphen -50
+KPX W e -90
+KPX W comma -74
+KPX W colon -55
+KPX W a -85
+KPX W O -15
+KPX W A -74
+
+KPX Y u -92
+KPX Y semicolon -92
+KPX Y period -74
+KPX Y o -111
+KPX Y i -55
+KPX Y hyphen -92
+KPX Y e -111
+KPX Y comma -92
+KPX Y colon -92
+KPX Y a -92
+KPX Y O -25
+KPX Y A -74
+
+KPX b u -20
+KPX b period -40
+KPX b b -10
+
+KPX c k -10
+KPX c h -10
+
+KPX comma quoteright -95
+KPX comma quotedblright -95
+
+KPX e b -10
+
+KPX f quoteright 55
+KPX f period -10
+KPX f o -10
+KPX f f -18
+KPX f e -10
+KPX f dotlessi -30
+KPX f comma -10
+
+KPX k o -10
+KPX k e -30
+
+KPX n v -40
+
+KPX o y -10
+KPX o x -10
+KPX o w -25
+KPX o v -15
+
+KPX period quoteright -95
+KPX period quotedblright -95
+
+KPX quoteleft quoteleft -74
+
+KPX quoteright v -15
+KPX quoteright t -37
+KPX quoteright space -74
+KPX quoteright s -74
+KPX quoteright r -15
+KPX quoteright quoteright -74
+KPX quoteright d -15
+
+KPX r period -65
+KPX r comma -65
+
+KPX space Y -70
+KPX space W -70
+KPX space V -70
+KPX space A -37
+
+KPX v period -37
+KPX v o -15
+KPX v e -15
+KPX v comma -37
+
+KPX w period -37
+KPX w o -15
+KPX w e -10
+KPX w comma -37
+KPX w a -10
+
+KPX x e -10
+
+KPX y period -37
+KPX y comma -37
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 172 207 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 187 207 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 167 207 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 172 207 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 157 192 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 167 207 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 172 207 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 187 207 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 187 207 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 172 207 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 33 207 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 53 207 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 48 207 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 33 207 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 210 207 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 200 207 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 230 207 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 215 207 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 200 207 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 215 207 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 112 207 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 210 207 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 230 207 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 230 207 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 200 207 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 154 207 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 169 207 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 139 207 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 84 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 84 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 74 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 74 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 84 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 84 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 56 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 56 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 46 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 46 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -27 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -42 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -37 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -37 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 97 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 84 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 84 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 69 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 74 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 84 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 28 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 112 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 112 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 97 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 102 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 56 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 41 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 13 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/Ti-BdItF+ b/font/font/Ti-BdItF+
new file mode 100644
index 0000000..23f3f8c
--- /dev/null
+++ b/font/font/Ti-BdItF+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 667 ; N Ccaron ; B 32 -18 700 904 ;
+C -1 ; WX 444 ; N ccaron ; B -5 -13 486 690 ;
+C -1 ; WX 722 ; N Dcaron ; B -46 0 685 904 ;
+C -1 ; WX 643 ; N dcaron ; B -21 -13 741 769 ;
+C -1 ; WX 667 ; N Ecaron ; B -27 0 653 904 ;
+C -1 ; WX 444 ; N ecaron ; B 5 -13 466 690 ;
+C -1 ; WX 611 ; N Lcaron ; B -22 0 630 736 ;
+C -1 ; WX 611 ; N Lacute ; B -22 0 590 911 ;
+C -1 ; WX 421 ; N lcaron ; B 2 -9 514 769 ;
+C -1 ; WX 278 ; N lacute ; B 2 -9 433 911 ;
+C -1 ; WX 722 ; N Ncaron ; B -27 -15 748 904 ;
+C -1 ; WX 556 ; N ncaron ; B -6 -9 522 690 ;
+C -1 ; WX 667 ; N Rcaron ; B -29 0 635 904 ;
+C -1 ; WX 667 ; N Racute ; B -29 0 649 911 ;
+C -1 ; WX 389 ; N rcaron ; B -21 0 439 690 ;
+C -1 ; WX 389 ; N racute ; B -21 0 431 697 ;
+C -1 ; WX 611 ; N Tcaron ; B 50 0 650 904 ;
+C -1 ; WX 421 ; N tcaron ; B -11 -9 505 685 ;
+C -1 ; WX 722 ; N Uring ; B 67 -18 744 904 ;
+C -1 ; WX 556 ; N uring ; B 15 -9 492 729 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 289 214 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 75 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 251 214 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 439 84 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 224 214 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 55 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 328 51 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 196 214 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 212 84 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 54 214 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 251 214 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 111 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 224 214 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 270 214 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 28 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 52 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 196 214 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 203 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 240 175 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 111 0 ;
+EndBuildComposites
diff --git a/font/font/Ti-BdSC b/font/font/Ti-BdSC
new file mode 100644
index 0000000..3199d09
--- /dev/null
+++ b/font/font/Ti-BdSC
@@ -0,0 +1,570 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Tue Dec 4 11:50:51 1990
+Comment UniqueID 33653
+Comment VMusage 30950 37842
+FontName Times-BoldSC
+FullName Times Bold Small Caps & Old Style Figures
+FamilyName Times
+Weight Bold
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -168 -218 1012 935
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.000
+Notice Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.Times is a trademark of Linotype AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 676
+XHeight 494
+Ascender 494
+Descender 0
+StartCharMetrics 228
+C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 333 ; N exclam ; B 81 -13 251 691 ;
+C 34 ; WX 555 ; N quotedbl ; B 83 404 472 691 ;
+C 35 ; WX 500 ; N numbersign ; B 4 0 496 700 ;
+C 36 ; WX 500 ; N dollar ; B 29 -99 472 750 ;
+C 37 ; WX 1000 ; N percent ; B 124 -14 877 692 ;
+C 38 ; WX 833 ; N ampersand ; B 62 -16 787 691 ;
+C 39 ; WX 333 ; N quoteright ; B 79 356 263 691 ;
+C 40 ; WX 333 ; N parenleft ; B 46 -168 306 694 ;
+C 41 ; WX 333 ; N parenright ; B 27 -168 287 694 ;
+C 42 ; WX 500 ; N asterisk ; B 56 255 447 691 ;
+C 43 ; WX 570 ; N plus ; B 33 0 537 506 ;
+C 44 ; WX 250 ; N comma ; B 39 -180 223 155 ;
+C 45 ; WX 333 ; N hyphen ; B 44 171 287 287 ;
+C 46 ; WX 250 ; N period ; B 41 -13 210 156 ;
+C 47 ; WX 278 ; N slash ; B -24 -19 302 691 ;
+C 48 ; WX 500 ; N zero ; B 20 -12 470 506 ;
+C 49 ; WX 500 ; N one ; B 70 0 420 494 ;
+C 50 ; WX 500 ; N two ; B 32 0 451 506 ;
+C 51 ; WX 500 ; N three ; B 16 -190 466 506 ;
+C 52 ; WX 500 ; N four ; B 20 -168 476 519 ;
+C 53 ; WX 500 ; N five ; B 16 -190 462 494 ;
+C 54 ; WX 500 ; N six ; B 26 -12 468 690 ;
+C 55 ; WX 500 ; N seven ; B 24 -174 476 494 ;
+C 56 ; WX 500 ; N eight ; B 26 -12 470 690 ;
+C 57 ; WX 500 ; N nine ; B 22 -190 464 506 ;
+C 58 ; WX 333 ; N colon ; B 82 -13 251 472 ;
+C 59 ; WX 333 ; N semicolon ; B 82 -180 266 472 ;
+C 60 ; WX 570 ; N less ; B 31 -8 539 514 ;
+C 61 ; WX 570 ; N equal ; B 33 107 537 399 ;
+C 62 ; WX 570 ; N greater ; B 31 -8 539 514 ;
+C 63 ; WX 500 ; N question ; B 57 -13 445 689 ;
+C 64 ; WX 930 ; N at ; B 108 -19 822 691 ;
+C 65 ; WX 722 ; N A ; B 9 0 689 690 ;
+C 66 ; WX 667 ; N B ; B 16 0 619 676 ;
+C 67 ; WX 722 ; N C ; B 49 -19 687 691 ;
+C 68 ; WX 722 ; N D ; B 14 0 690 676 ;
+C 69 ; WX 667 ; N E ; B 16 0 641 676 ;
+C 70 ; WX 611 ; N F ; B 16 0 583 676 ;
+C 71 ; WX 778 ; N G ; B 37 -19 755 691 ;
+C 72 ; WX 778 ; N H ; B 21 0 759 676 ;
+C 73 ; WX 389 ; N I ; B 20 0 370 676 ;
+C 74 ; WX 500 ; N J ; B 3 -96 479 676 ;
+C 75 ; WX 778 ; N K ; B 30 0 769 676 ;
+C 76 ; WX 667 ; N L ; B 19 0 638 676 ;
+C 77 ; WX 944 ; N M ; B 14 0 921 676 ;
+C 78 ; WX 722 ; N N ; B 16 -18 701 676 ;
+C 79 ; WX 778 ; N O ; B 35 -19 743 691 ;
+C 80 ; WX 611 ; N P ; B 16 0 600 676 ;
+C 81 ; WX 778 ; N Q ; B 35 -176 743 691 ;
+C 82 ; WX 722 ; N R ; B 26 0 715 676 ;
+C 83 ; WX 556 ; N S ; B 35 -19 513 692 ;
+C 84 ; WX 667 ; N T ; B 31 0 636 676 ;
+C 85 ; WX 722 ; N U ; B 16 -19 701 676 ;
+C 86 ; WX 722 ; N V ; B 16 -18 701 676 ;
+C 87 ; WX 1000 ; N W ; B 19 -15 981 676 ;
+C 88 ; WX 722 ; N X ; B 16 0 699 676 ;
+C 89 ; WX 722 ; N Y ; B 15 0 699 676 ;
+C 90 ; WX 667 ; N Z ; B 28 0 634 676 ;
+C 91 ; WX 333 ; N bracketleft ; B 67 -149 301 678 ;
+C 92 ; WX 278 ; N backslash ; B -25 -19 303 691 ;
+C 93 ; WX 333 ; N bracketright ; B 32 -149 266 678 ;
+C 94 ; WX 581 ; N asciicircum ; B 73 311 509 676 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 333 ; N quoteleft ; B 70 356 254 691 ;
+C 97 ; WX 556 ; N a ; B 16 0 530 506 ;
+C 98 ; WX 556 ; N b ; B 20 0 512 494 ;
+C 99 ; WX 556 ; N c ; B 26 -12 513 506 ;
+C 100 ; WX 611 ; N d ; B 20 0 568 494 ;
+C 101 ; WX 556 ; N e ; B 19 0 509 494 ;
+C 102 ; WX 500 ; N f ; B 16 0 462 494 ; L i fi ; L l fl ;
+C 103 ; WX 611 ; N g ; B 32 -12 563 509 ;
+C 104 ; WX 611 ; N h ; B 14 0 589 494 ;
+C 105 ; WX 333 ; N i ; B 28 0 301 494 ;
+C 106 ; WX 444 ; N j ; B 14 -80 412 494 ;
+C 107 ; WX 611 ; N k ; B 16 0 590 494 ;
+C 108 ; WX 556 ; N l ; B 18 0 512 494 ;
+C 109 ; WX 722 ; N m ; B 14 0 699 494 ;
+C 110 ; WX 556 ; N n ; B 14 -12 530 494 ;
+C 111 ; WX 611 ; N o ; B 30 -12 572 506 ;
+C 112 ; WX 500 ; N p ; B 16 0 484 494 ;
+C 113 ; WX 611 ; N q ; B 30 -170 572 506 ;
+C 114 ; WX 611 ; N r ; B 22 0 590 494 ;
+C 115 ; WX 444 ; N s ; B 30 -12 408 506 ;
+C 116 ; WX 556 ; N t ; B 22 0 524 494 ;
+C 117 ; WX 611 ; N u ; B 21 -12 579 494 ;
+C 118 ; WX 556 ; N v ; B 16 -12 530 494 ;
+C 119 ; WX 778 ; N w ; B 8 -12 752 494 ;
+C 120 ; WX 556 ; N x ; B 16 0 534 494 ;
+C 121 ; WX 556 ; N y ; B 16 0 532 494 ;
+C 122 ; WX 500 ; N z ; B 14 0 468 494 ;
+C 123 ; WX 394 ; N braceleft ; B 22 -175 340 698 ;
+C 124 ; WX 220 ; N bar ; B 66 -19 154 691 ;
+C 125 ; WX 394 ; N braceright ; B 54 -175 372 698 ;
+C 126 ; WX 520 ; N asciitilde ; B 29 173 491 333 ;
+C 161 ; WX 333 ; N exclamdown ; B 82 -203 252 501 ;
+C 162 ; WX 500 ; N cent ; B 53 -140 458 588 ;
+C 163 ; WX 500 ; N sterling ; B 21 -14 477 684 ;
+C 164 ; WX 167 ; N fraction ; B -168 -12 329 688 ;
+C 165 ; WX 500 ; N yen ; B -64 0 547 676 ;
+C 166 ; WX 500 ; N florin ; B 0 -155 498 706 ;
+C 167 ; WX 500 ; N section ; B 57 -132 443 691 ;
+C 168 ; WX 667 ; N currency ; B 34 -12 624 512 ;
+C 169 ; WX 278 ; N quotesingle ; B 75 404 204 691 ;
+C 170 ; WX 500 ; N quotedblleft ; B 32 356 486 691 ;
+C 171 ; WX 500 ; N guillemotleft ; B 23 36 473 415 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 51 36 305 415 ;
+C 173 ; WX 333 ; N guilsinglright ; B 28 36 282 415 ;
+C 174 ; WX 833 ; N fi ; B 16 0 801 494 ;
+C 175 ; WX 1056 ; N fl ; B 16 0 1012 494 ;
+C 177 ; WX 500 ; N endash ; B 0 181 500 271 ;
+C 178 ; WX 500 ; N dagger ; B 47 -134 453 691 ;
+C 179 ; WX 500 ; N daggerdbl ; B 45 -132 456 691 ;
+C 180 ; WX 250 ; N periodcentered ; B 41 248 210 417 ;
+C 182 ; WX 540 ; N paragraph ; B 0 -186 519 676 ;
+C 183 ; WX 350 ; N bullet ; B 35 198 315 478 ;
+C 184 ; WX 333 ; N quotesinglbase ; B 79 -180 263 155 ;
+C 185 ; WX 500 ; N quotedblbase ; B 14 -180 468 155 ;
+C 186 ; WX 500 ; N quotedblright ; B 14 356 468 691 ;
+C 187 ; WX 500 ; N guillemotright ; B 27 36 477 415 ;
+C 188 ; WX 1000 ; N ellipsis ; B 82 -13 917 156 ;
+C 189 ; WX 1000 ; N perthousand ; B 7 -29 995 706 ;
+C 191 ; WX 500 ; N questiondown ; B 55 -201 443 501 ;
+C 193 ; WX 333 ; N grave ; B 8 561 246 746 ;
+C 194 ; WX 333 ; N acute ; B 86 561 324 746 ;
+C 195 ; WX 333 ; N circumflex ; B -2 561 335 737 ;
+C 196 ; WX 333 ; N tilde ; B -16 580 349 707 ;
+C 197 ; WX 333 ; N macron ; B 1 598 331 670 ;
+C 198 ; WX 333 ; N breve ; B 15 561 318 724 ;
+C 199 ; WX 333 ; N dotaccent ; B 103 570 230 700 ;
+C 200 ; WX 333 ; N dieresis ; B -2 570 335 700 ;
+C 202 ; WX 333 ; N ring ; B 60 560 273 773 ;
+C 203 ; WX 333 ; N cedilla ; B 68 -218 294 0 ;
+C 205 ; WX 333 ; N hungarumlaut ; B -13 561 425 746 ;
+C 206 ; WX 333 ; N ogonek ; B 90 -173 319 44 ;
+C 207 ; WX 333 ; N caron ; B -2 561 335 737 ;
+C 208 ; WX 1000 ; N emdash ; B 125 181 875 271 ;
+C 225 ; WX 1000 ; N AE ; B 4 0 951 676 ;
+C 227 ; WX 300 ; N ordfeminine ; B -1 397 301 688 ;
+C 232 ; WX 667 ; N Lslash ; B 19 0 638 676 ;
+C 233 ; WX 778 ; N Oslash ; B 35 -74 743 737 ;
+C 234 ; WX 1000 ; N OE ; B 22 -5 981 684 ;
+C 235 ; WX 330 ; N ordmasculine ; B 18 397 312 688 ;
+C 241 ; WX 778 ; N ae ; B 14 0 745 494 ;
+C 245 ; WX 333 ; N dotlessi ; B 28 0 301 494 ;
+C 248 ; WX 556 ; N lslash ; B -4 0 512 494 ;
+C 249 ; WX 611 ; N oslash ; B 30 -92 572 569 ;
+C 250 ; WX 833 ; N oe ; B 32 -8 798 502 ;
+C 251 ; WX 888 ; N germandbls ; B 30 -12 852 506 ;
+C -1 ; WX 556 ; N ecircumflex ; B 19 0 509 737 ;
+C -1 ; WX 556 ; N edieresis ; B 19 0 509 700 ;
+C -1 ; WX 556 ; N aacute ; B 16 0 530 746 ;
+C -1 ; WX 747 ; N registered ; B 26 -19 721 691 ;
+C -1 ; WX 333 ; N icircumflex ; B -9 0 328 737 ;
+C -1 ; WX 611 ; N udieresis ; B 21 -12 579 700 ;
+C -1 ; WX 611 ; N ograve ; B 30 -12 572 746 ;
+C -1 ; WX 611 ; N uacute ; B 21 -12 579 746 ;
+C -1 ; WX 611 ; N ucircumflex ; B 21 -12 579 737 ;
+C -1 ; WX 722 ; N Aacute ; B 9 0 689 923 ;
+C -1 ; WX 333 ; N igrave ; B 1 0 301 746 ;
+C -1 ; WX 389 ; N Icircumflex ; B 20 0 370 914 ;
+C -1 ; WX 556 ; N ccedilla ; B 26 -218 513 506 ;
+C -1 ; WX 556 ; N adieresis ; B 16 0 530 700 ;
+C -1 ; WX 667 ; N Ecircumflex ; B 16 0 641 914 ;
+C -1 ; WX 444 ; N scaron ; B 30 -12 408 737 ;
+C -1 ; WX 500 ; N thorn ; B 28 0 514 494 ;
+C -1 ; WX 1000 ; N trademark ; B 24 271 977 676 ;
+C -1 ; WX 556 ; N egrave ; B 19 0 509 746 ;
+C -1 ; WX 300 ; N threesuperior ; B 3 268 297 688 ;
+C -1 ; WX 500 ; N zcaron ; B 14 0 468 737 ;
+C -1 ; WX 556 ; N atilde ; B 16 0 530 707 ;
+C -1 ; WX 556 ; N aring ; B 16 0 530 773 ;
+C -1 ; WX 611 ; N ocircumflex ; B 30 -12 572 737 ;
+C -1 ; WX 667 ; N Edieresis ; B 16 0 641 877 ;
+C -1 ; WX 750 ; N threequarters ; B 23 -12 733 688 ;
+C -1 ; WX 556 ; N ydieresis ; B 16 0 532 700 ;
+C -1 ; WX 556 ; N yacute ; B 16 0 532 746 ;
+C -1 ; WX 333 ; N iacute ; B 28 0 317 746 ;
+C -1 ; WX 722 ; N Acircumflex ; B 9 0 689 914 ;
+C -1 ; WX 722 ; N Uacute ; B 16 -19 701 923 ;
+C -1 ; WX 556 ; N eacute ; B 19 0 509 746 ;
+C -1 ; WX 778 ; N Ograve ; B 35 -19 743 923 ;
+C -1 ; WX 556 ; N agrave ; B 16 0 530 746 ;
+C -1 ; WX 722 ; N Udieresis ; B 16 -19 701 877 ;
+C -1 ; WX 556 ; N acircumflex ; B 16 0 530 737 ;
+C -1 ; WX 389 ; N Igrave ; B 20 0 370 923 ;
+C -1 ; WX 300 ; N twosuperior ; B 0 275 300 688 ;
+C -1 ; WX 722 ; N Ugrave ; B 16 -19 701 923 ;
+C -1 ; WX 750 ; N onequarter ; B 28 -12 743 688 ;
+C -1 ; WX 722 ; N Ucircumflex ; B 16 -19 701 914 ;
+C -1 ; WX 556 ; N Scaron ; B 35 -19 513 914 ;
+C -1 ; WX 389 ; N Idieresis ; B 20 0 370 877 ;
+C -1 ; WX 333 ; N idieresis ; B -9 0 328 700 ;
+C -1 ; WX 667 ; N Egrave ; B 16 0 641 923 ;
+C -1 ; WX 778 ; N Oacute ; B 35 -19 743 923 ;
+C -1 ; WX 570 ; N divide ; B 33 -31 537 537 ;
+C -1 ; WX 722 ; N Atilde ; B 9 0 689 884 ;
+C -1 ; WX 722 ; N Aring ; B 9 0 689 935 ;
+C -1 ; WX 778 ; N Odieresis ; B 35 -19 743 877 ;
+C -1 ; WX 722 ; N Adieresis ; B 9 0 689 877 ;
+C -1 ; WX 722 ; N Ntilde ; B 16 -18 701 884 ;
+C -1 ; WX 667 ; N Zcaron ; B 28 0 634 914 ;
+C -1 ; WX 611 ; N Thorn ; B 16 0 600 676 ;
+C -1 ; WX 389 ; N Iacute ; B 20 0 370 923 ;
+C -1 ; WX 570 ; N plusminus ; B 33 0 537 506 ;
+C -1 ; WX 570 ; N multiply ; B 48 16 522 490 ;
+C -1 ; WX 667 ; N Eacute ; B 16 0 641 923 ;
+C -1 ; WX 722 ; N Ydieresis ; B 15 0 699 877 ;
+C -1 ; WX 300 ; N onesuperior ; B 28 275 273 688 ;
+C -1 ; WX 611 ; N ugrave ; B 21 -12 579 746 ;
+C -1 ; WX 570 ; N logicalnot ; B 33 108 537 399 ;
+C -1 ; WX 556 ; N ntilde ; B 14 -12 530 707 ;
+C -1 ; WX 778 ; N Otilde ; B 35 -19 743 884 ;
+C -1 ; WX 611 ; N otilde ; B 30 -12 572 707 ;
+C -1 ; WX 722 ; N Ccedilla ; B 49 -218 687 691 ;
+C -1 ; WX 722 ; N Agrave ; B 9 0 689 923 ;
+C -1 ; WX 750 ; N onehalf ; B -7 -12 775 688 ;
+C -1 ; WX 722 ; N Eth ; B 6 0 690 676 ;
+C -1 ; WX 400 ; N degree ; B 57 402 343 688 ;
+C -1 ; WX 722 ; N Yacute ; B 15 0 699 928 ;
+C -1 ; WX 778 ; N Ocircumflex ; B 35 -19 743 914 ;
+C -1 ; WX 611 ; N oacute ; B 30 -12 572 746 ;
+C -1 ; WX 556 ; N mu ; B 33 -206 536 461 ;
+C -1 ; WX 570 ; N minus ; B 33 209 537 297 ;
+C -1 ; WX 611 ; N eth ; B 14 0 568 494 ;
+C -1 ; WX 611 ; N odieresis ; B 30 -12 572 700 ;
+C -1 ; WX 747 ; N copyright ; B 26 -19 721 691 ;
+C -1 ; WX 220 ; N brokenbar ; B 66 -19 154 691 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 213
+
+KPX A y -74
+KPX A w -90
+KPX A v -100
+KPX A u -50
+KPX A t -37
+KPX A quoteright -74
+KPX A q -18
+KPX A o -18
+KPX A g -18
+KPX A c -18
+KPX A Y -100
+KPX A W -130
+KPX A V -145
+KPX A U -50
+KPX A T -95
+KPX A Q -45
+KPX A O -45
+KPX A G -45
+KPX A C -45
+
+KPX B a -18
+KPX B U -10
+KPX B A -30
+
+KPX C a -18
+
+KPX D period -20
+KPX D a -37
+KPX D Y -40
+KPX D W -40
+KPX D V -40
+KPX D A -35
+
+KPX F period -110
+KPX F o -25
+KPX F j -18
+KPX F e -25
+KPX F comma -92
+KPX F a -55
+KPX F J -18
+KPX F A -72
+
+KPX J u -15
+KPX J period -20
+KPX J o -15
+KPX J a -15
+KPX J A -30
+
+KPX K y -45
+KPX K u -15
+KPX K o -25
+KPX K O -30
+
+KPX L y -55
+KPX L w -18
+KPX L v -18
+KPX L t -18
+KPX L quoteright -110
+KPX L quotedblright -20
+KPX L Y -92
+KPX L W -92
+KPX L V -92
+KPX L T -92
+
+KPX N A -20
+
+KPX O a -18
+KPX O Y -37
+KPX O X -40
+KPX O W -37
+KPX O V -37
+KPX O T -37
+KPX O A -40
+
+KPX P period -110
+KPX P comma -92
+KPX P a -55
+KPX P A -55
+
+KPX Q period -20
+KPX Q U -10
+
+KPX R Y -35
+KPX R W -35
+KPX R V -55
+KPX R U -18
+KPX R T -40
+
+KPX S V -18
+
+KPX T y -74
+KPX T w -74
+KPX T u -74
+KPX T semicolon -74
+KPX T r -55
+KPX T period -90
+KPX T o -55
+KPX T j -37
+KPX T i -18
+KPX T hyphen -92
+KPX T e -37
+KPX T comma -74
+KPX T colon -74
+KPX T a -92
+KPX T J -18
+KPX T A -74
+
+KPX U period -50
+KPX U comma -50
+KPX U a -37
+KPX U A -60
+
+KPX V u -92
+KPX V semicolon -92
+KPX V period -145
+KPX V o -74
+KPX V i -37
+KPX V hyphen -74
+KPX V g -74
+KPX V e -100
+KPX V comma -129
+KPX V colon -92
+KPX V a -142
+KPX V O -45
+KPX V G -45
+KPX V A -135
+
+KPX W y -60
+KPX W u -50
+KPX W semicolon -55
+KPX W period -92
+KPX W o -75
+KPX W i -37
+KPX W hyphen -37
+KPX W h -37
+KPX W e -55
+KPX W comma -92
+KPX W colon -55
+KPX W a -111
+KPX W O -18
+KPX W A -120
+
+KPX Y u -92
+KPX Y semicolon -92
+KPX Y s -55
+KPX Y period -92
+KPX Y o -111
+KPX Y i -55
+KPX Y hyphen -92
+KPX Y e -92
+KPX Y comma -92
+KPX Y colon -92
+KPX Y c -37
+KPX Y a -111
+KPX Y O -35
+KPX Y C -35
+KPX Y A -110
+
+KPX a y -74
+KPX a w -74
+KPX a v -74
+KPX a u -18
+KPX a t -37
+KPX a quoteright -37
+KPX a o -18
+KPX a g -18
+KPX a c -18
+
+KPX b u -20
+KPX b period -40
+
+KPX c a -18
+
+KPX comma quoteright -55
+KPX comma quotedblright -45
+
+KPX d y -18
+KPX d w -15
+KPX d v -18
+KPX d a -18
+
+KPX f period -37
+KPX f comma -37
+KPX f a -55
+
+KPX g period -15
+
+KPX j a -18
+
+KPX k o -15
+
+KPX l y -37
+KPX l w -37
+KPX l t -18
+KPX l quoteright -55
+
+KPX n a -18
+
+KPX o y -18
+KPX o w -18
+KPX o v -18
+KPX o a -18
+
+KPX p period -37
+KPX p comma -37
+KPX p a -18
+
+KPX period quoteright -55
+KPX period quotedblright -55
+
+KPX quotedblleft A -10
+
+KPX quoteleft quoteleft -63
+KPX quoteleft A -10
+
+KPX quoteright quoteright -63
+
+KPX r y -18
+KPX r v -10
+KPX r q -18
+KPX r o -18
+KPX r hyphen -37
+
+KPX space Y -55
+KPX space W -30
+KPX space V -45
+KPX space T -30
+KPX space A -55
+
+KPX t period -37
+KPX t j -18
+KPX t hyphen -37
+KPX t comma -37
+KPX t a -18
+
+KPX u a -37
+
+KPX v period -70
+KPX v o -37
+KPX v hyphen -37
+KPX v g -37
+KPX v comma -55
+KPX v a -74
+
+KPX w period -70
+KPX w o -37
+KPX w hyphen -37
+KPX w comma -55
+KPX w a -74
+
+KPX y period -70
+KPX y o -25
+KPX y hyphen -37
+KPX y comma -55
+KPX y a -74
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 188 177 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 188 177 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 188 177 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 188 177 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 180 162 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 188 177 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 174 177 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 174 177 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 174 177 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 174 177 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 28 177 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 28 177 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 28 177 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 28 177 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 195 177 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 223 177 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 223 177 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 223 177 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 223 177 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 223 177 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 112 177 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 222 177 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 222 177 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 222 177 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 222 177 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 210 182 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 215 177 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 167 177 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 105 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 105 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 105 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 105 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 105 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 105 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 118 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 118 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 118 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 118 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -7 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -7 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -7 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -7 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 112 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 139 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 139 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 139 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 139 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 139 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 56 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 132 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 132 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 132 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 132 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 112 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 112 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 84 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/Ti-BdSC+ b/font/font/Ti-BdSC+
new file mode 100644
index 0000000..7809474
--- /dev/null
+++ b/font/font/Ti-BdSC+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 722 ; N Ccaron ; B 49 -19 687 914 ;
+C -1 ; WX 556 ; N ccaron ; B 26 -12 513 737 ;
+C -1 ; WX 722 ; N Dcaron ; B 14 0 690 914 ;
+C -1 ; WX 740 ; N dcaron ; B 20 0 770 543 ;
+C -1 ; WX 667 ; N Ecaron ; B 16 0 641 914 ;
+C -1 ; WX 556 ; N ecaron ; B 19 0 509 737 ;
+C -1 ; WX 667 ; N Lcaron ; B 19 0 638 744 ;
+C -1 ; WX 667 ; N Lacute ; B 19 0 638 923 ;
+C -1 ; WX 685 ; N lcaron ; B 18 0 714 543 ;
+C -1 ; WX 556 ; N lacute ; B 18 0 512 923 ;
+C -1 ; WX 722 ; N Ncaron ; B 16 -18 701 914 ;
+C -1 ; WX 556 ; N ncaron ; B 14 -12 530 737 ;
+C -1 ; WX 722 ; N Rcaron ; B 26 0 715 914 ;
+C -1 ; WX 722 ; N Racute ; B 26 0 715 923 ;
+C -1 ; WX 611 ; N rcaron ; B 22 0 590 737 ;
+C -1 ; WX 611 ; N racute ; B 22 0 590 746 ;
+C -1 ; WX 667 ; N Tcaron ; B 31 0 636 914 ;
+C -1 ; WX 685 ; N tcaron ; B 22 0 726 691 ;
+C -1 ; WX 722 ; N Uring ; B 16 -19 701 914 ;
+C -1 ; WX 611 ; N uring ; B 21 -12 579 773 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 258 177 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 135 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 194 177 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 507 -148 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 167 177 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 111 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 309 53 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 167 177 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 451 -148 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 135 177 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 194 177 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 111 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 194 177 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 239 177 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 139 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 163 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 167 177 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 463 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 194 141 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 139 0 ;
+EndBuildComposites
diff --git a/font/font/Ti-ExBd b/font/font/Ti-ExBd
new file mode 100644
index 0000000..49cf056
--- /dev/null
+++ b/font/font/Ti-ExBd
@@ -0,0 +1,420 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1990 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Mon Oct 29 15:49:23 1990
+Comment UniqueID 33198
+Comment VMusage 29419 36311
+FontName Times-ExtraBold
+FullName Times Extra Bold
+FamilyName Times
+Weight ExtraBold
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -167 -224 1032 972
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.000
+Notice Copyright (c) 1990 Adobe Systems Incorporated. All Rights Reserved.Times is a trademark of Linotype AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 712
+XHeight 488
+Ascender 712
+Descender -166
+StartCharMetrics 228
+C 32 ; WX 259 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 278 ; N exclam ; B 42 -12 236 724 ;
+C 34 ; WX 333 ; N quotedbl ; B 25 408 308 724 ;
+C 35 ; WX 519 ; N numbersign ; B 8 0 512 712 ;
+C 36 ; WX 519 ; N dollar ; B 12 -105 494 784 ;
+C 37 ; WX 833 ; N percent ; B 40 -12 793 724 ;
+C 38 ; WX 722 ; N ampersand ; B 16 -12 727 724 ;
+C 39 ; WX 259 ; N quoteright ; B 19 338 239 724 ;
+C 40 ; WX 370 ; N parenleft ; B 40 -166 364 724 ;
+C 41 ; WX 370 ; N parenright ; B 6 -166 330 724 ;
+C 42 ; WX 481 ; N asterisk ; B 38 280 442 724 ;
+C 43 ; WX 600 ; N plus ; B 56 0 544 488 ;
+C 44 ; WX 259 ; N comma ; B 18 -200 238 186 ;
+C 45 ; WX 333 ; N hyphen ; B 36 184 297 304 ;
+C 46 ; WX 259 ; N period ; B 28 -12 232 192 ;
+C 47 ; WX 278 ; N slash ; B -30 -12 308 724 ;
+C 48 ; WX 519 ; N zero ; B 24 -12 496 724 ;
+C 49 ; WX 407 ; N one ; B -10 0 390 728 ;
+C 50 ; WX 500 ; N two ; B -16 0 490 724 ;
+C 51 ; WX 519 ; N three ; B -14 -12 488 724 ;
+C 52 ; WX 519 ; N four ; B 0 0 519 712 ;
+C 53 ; WX 500 ; N five ; B 14 -12 472 712 ;
+C 54 ; WX 519 ; N six ; B 14 -12 510 724 ;
+C 55 ; WX 444 ; N seven ; B 6 0 470 712 ;
+C 56 ; WX 500 ; N eight ; B 20 -12 477 724 ;
+C 57 ; WX 519 ; N nine ; B 12 -12 508 724 ;
+C 58 ; WX 259 ; N colon ; B 28 -12 232 500 ;
+C 59 ; WX 259 ; N semicolon ; B 18 -200 238 500 ;
+C 60 ; WX 600 ; N less ; B 44 -8 534 496 ;
+C 61 ; WX 600 ; N equal ; B 56 82 544 406 ;
+C 62 ; WX 600 ; N greater ; B 66 -8 556 496 ;
+C 63 ; WX 444 ; N question ; B 19 -12 424 724 ;
+C 64 ; WX 800 ; N at ; B 36 -12 764 724 ;
+C 65 ; WX 630 ; N A ; B -42 0 656 712 ;
+C 66 ; WX 722 ; N B ; B 0 0 664 712 ;
+C 67 ; WX 685 ; N C ; B 32 -12 640 724 ;
+C 68 ; WX 778 ; N D ; B 0 0 754 712 ;
+C 69 ; WX 722 ; N E ; B 10 0 675 712 ;
+C 70 ; WX 630 ; N F ; B 0 0 618 712 ;
+C 71 ; WX 722 ; N G ; B 20 -12 734 724 ;
+C 72 ; WX 852 ; N H ; B 1 0 851 712 ;
+C 73 ; WX 407 ; N I ; B 0 0 407 712 ;
+C 74 ; WX 537 ; N J ; B -4 -12 550 712 ;
+C 75 ; WX 741 ; N K ; B -4 0 790 712 ;
+C 76 ; WX 611 ; N L ; B 0 0 611 712 ;
+C 77 ; WX 981 ; N M ; B -2 0 983 712 ;
+C 78 ; WX 778 ; N N ; B -2 0 780 712 ;
+C 79 ; WX 815 ; N O ; B 20 -12 796 724 ;
+C 80 ; WX 648 ; N P ; B -2 0 650 712 ;
+C 81 ; WX 815 ; N Q ; B 20 -178 796 724 ;
+C 82 ; WX 741 ; N R ; B 0 0 778 712 ;
+C 83 ; WX 611 ; N S ; B 28 -12 594 724 ;
+C 84 ; WX 704 ; N T ; B 28 0 676 712 ;
+C 85 ; WX 741 ; N U ; B -10 -12 740 712 ;
+C 86 ; WX 630 ; N V ; B -38 -12 682 712 ;
+C 87 ; WX 1000 ; N W ; B -32 -12 1032 712 ;
+C 88 ; WX 685 ; N X ; B -8 0 708 712 ;
+C 89 ; WX 648 ; N Y ; B -44 0 664 712 ;
+C 90 ; WX 648 ; N Z ; B -9 0 650 712 ;
+C 91 ; WX 315 ; N bracketleft ; B 50 -166 272 712 ;
+C 92 ; WX 278 ; N backslash ; B -74 -12 352 724 ;
+C 93 ; WX 315 ; N bracketright ; B 43 -166 265 712 ;
+C 94 ; WX 600 ; N asciicircum ; B 73 346 527 712 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 259 ; N quoteleft ; B 20 338 240 724 ;
+C 97 ; WX 519 ; N a ; B 16 -12 518 500 ;
+C 98 ; WX 556 ; N b ; B -12 -12 524 712 ;
+C 99 ; WX 463 ; N c ; B 14 -12 476 500 ;
+C 100 ; WX 574 ; N d ; B 32 -12 566 712 ;
+C 101 ; WX 481 ; N e ; B 14 -12 468 500 ;
+C 102 ; WX 333 ; N f ; B 12 0 414 724 ; L i fi ; L l fl ;
+C 103 ; WX 519 ; N g ; B 24 -166 516 500 ;
+C 104 ; WX 593 ; N h ; B 12 0 582 712 ;
+C 105 ; WX 315 ; N i ; B 13 0 303 724 ;
+C 106 ; WX 315 ; N j ; B -95 -178 252 724 ;
+C 107 ; WX 574 ; N k ; B 13 0 601 712 ;
+C 108 ; WX 315 ; N l ; B 13 0 303 712 ;
+C 109 ; WX 852 ; N m ; B 12 0 840 500 ;
+C 110 ; WX 593 ; N n ; B 12 0 582 500 ;
+C 111 ; WX 537 ; N o ; B 15 -12 523 500 ;
+C 112 ; WX 574 ; N p ; B -2 -166 542 500 ;
+C 113 ; WX 556 ; N q ; B 32 -166 573 500 ;
+C 114 ; WX 426 ; N r ; B 14 0 436 500 ;
+C 115 ; WX 426 ; N s ; B 26 -12 410 500 ;
+C 116 ; WX 352 ; N t ; B 12 -12 352 658 ;
+C 117 ; WX 593 ; N u ; B 12 -12 582 488 ;
+C 118 ; WX 426 ; N v ; B -16 -12 442 488 ;
+C 119 ; WX 685 ; N w ; B -16 -12 700 488 ;
+C 120 ; WX 500 ; N x ; B -31 0 531 488 ;
+C 121 ; WX 444 ; N y ; B -30 -166 466 488 ;
+C 122 ; WX 444 ; N z ; B 8 0 436 488 ;
+C 123 ; WX 370 ; N braceleft ; B 43 -166 348 724 ;
+C 124 ; WX 222 ; N bar ; B 51 0 171 712 ;
+C 125 ; WX 370 ; N braceright ; B 22 -166 327 724 ;
+C 126 ; WX 600 ; N asciitilde ; B 68 154 531 334 ;
+C 161 ; WX 278 ; N exclamdown ; B 42 -178 236 558 ;
+C 162 ; WX 519 ; N cent ; B 29 -112 491 598 ;
+C 163 ; WX 519 ; N sterling ; B 20 -12 522 724 ;
+C 164 ; WX 167 ; N fraction ; B -167 -12 334 724 ;
+C 165 ; WX 519 ; N yen ; B -102 0 606 712 ;
+C 166 ; WX 519 ; N florin ; B -2 -178 512 724 ;
+C 167 ; WX 519 ; N section ; B 16 -166 504 724 ;
+C 168 ; WX 519 ; N currency ; B -2 96 520 614 ;
+C 169 ; WX 222 ; N quotesingle ; B 59 408 163 724 ;
+C 170 ; WX 500 ; N quotedblleft ; B 11 338 490 724 ;
+C 171 ; WX 500 ; N guillemotleft ; B 30 55 475 433 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 53 55 303 433 ;
+C 173 ; WX 333 ; N guilsinglright ; B 30 55 280 433 ;
+C 174 ; WX 648 ; N fi ; B 21 0 627 724 ;
+C 175 ; WX 648 ; N fl ; B 21 0 628 724 ;
+C 177 ; WX 500 ; N endash ; B 0 198 500 290 ;
+C 178 ; WX 519 ; N dagger ; B 18 -166 500 724 ;
+C 179 ; WX 519 ; N daggerdbl ; B 18 -166 500 724 ;
+C 180 ; WX 259 ; N periodcentered ; B 28 142 232 346 ;
+C 182 ; WX 620 ; N paragraph ; B 40 -166 565 712 ;
+C 183 ; WX 500 ; N bullet ; B 72 178 428 534 ;
+C 184 ; WX 259 ; N quotesinglbase ; B 18 -200 238 186 ;
+C 185 ; WX 500 ; N quotedblbase ; B 10 -200 489 186 ;
+C 186 ; WX 500 ; N quotedblright ; B 10 338 489 724 ;
+C 187 ; WX 500 ; N guillemotright ; B 25 55 470 433 ;
+C 188 ; WX 1000 ; N ellipsis ; B 65 -12 935 192 ;
+C 189 ; WX 907 ; N perthousand ; B 22 -12 884 724 ;
+C 191 ; WX 444 ; N questiondown ; B 20 -178 425 558 ;
+C 193 ; WX 315 ; N grave ; B -6 556 240 746 ;
+C 194 ; WX 315 ; N acute ; B 75 556 321 746 ;
+C 195 ; WX 315 ; N circumflex ; B -18 556 333 734 ;
+C 196 ; WX 315 ; N tilde ; B -32 576 348 710 ;
+C 197 ; WX 315 ; N macron ; B -14 595 330 675 ;
+C 198 ; WX 315 ; N breve ; B 0 556 314 724 ;
+C 199 ; WX 315 ; N dotaccent ; B 87 563 227 703 ;
+C 200 ; WX 315 ; N dieresis ; B -20 563 336 703 ;
+C 202 ; WX 315 ; N ring ; B 50 556 266 772 ;
+C 203 ; WX 315 ; N cedilla ; B 24 -220 258 0 ;
+C 205 ; WX 315 ; N hungarumlaut ; B -30 556 414 746 ;
+C 206 ; WX 315 ; N ogonek ; B 16 -224 282 21 ;
+C 207 ; WX 315 ; N caron ; B -18 556 333 734 ;
+C 208 ; WX 1000 ; N emdash ; B 0 198 1000 290 ;
+C 225 ; WX 1000 ; N AE ; B -75 0 964 712 ;
+C 227 ; WX 311 ; N ordfeminine ; B -8 416 319 724 ;
+C 232 ; WX 611 ; N Lslash ; B 0 0 611 712 ;
+C 233 ; WX 815 ; N Oslash ; B 20 -58 796 766 ;
+C 234 ; WX 1000 ; N OE ; B 6 0 1006 712 ;
+C 235 ; WX 322 ; N ordmasculine ; B -4 416 326 724 ;
+C 241 ; WX 759 ; N ae ; B 19 -12 739 500 ;
+C 245 ; WX 315 ; N dotlessi ; B 13 0 303 488 ;
+C 248 ; WX 315 ; N lslash ; B -5 0 321 712 ;
+C 249 ; WX 537 ; N oslash ; B 15 -50 523 544 ;
+C 250 ; WX 796 ; N oe ; B 14 -12 782 500 ;
+C 251 ; WX 556 ; N germandbls ; B 0 0 542 724 ;
+C -1 ; WX 481 ; N ecircumflex ; B 14 -12 468 734 ;
+C -1 ; WX 481 ; N edieresis ; B 14 -12 468 703 ;
+C -1 ; WX 519 ; N aacute ; B 16 -12 518 746 ;
+C -1 ; WX 800 ; N registered ; B 40 -12 760 724 ;
+C -1 ; WX 315 ; N icircumflex ; B -18 0 333 734 ;
+C -1 ; WX 593 ; N udieresis ; B 12 -12 582 703 ;
+C -1 ; WX 537 ; N ograve ; B 15 -12 523 746 ;
+C -1 ; WX 593 ; N uacute ; B 12 -12 582 746 ;
+C -1 ; WX 593 ; N ucircumflex ; B 12 -12 582 734 ;
+C -1 ; WX 630 ; N Aacute ; B -42 0 656 946 ;
+C -1 ; WX 315 ; N igrave ; B -6 0 303 746 ;
+C -1 ; WX 407 ; N Icircumflex ; B 0 0 407 934 ;
+C -1 ; WX 463 ; N ccedilla ; B 14 -220 476 500 ;
+C -1 ; WX 519 ; N adieresis ; B 16 -12 518 703 ;
+C -1 ; WX 722 ; N Ecircumflex ; B 10 0 675 934 ;
+C -1 ; WX 426 ; N scaron ; B 26 -12 410 734 ;
+C -1 ; WX 574 ; N thorn ; B -2 -166 542 712 ;
+C -1 ; WX 1000 ; N trademark ; B 6 308 994 712 ;
+C -1 ; WX 481 ; N egrave ; B 14 -12 468 746 ;
+C -1 ; WX 311 ; N threesuperior ; B -7 282 319 724 ;
+C -1 ; WX 444 ; N zcaron ; B 8 0 436 734 ;
+C -1 ; WX 519 ; N atilde ; B 16 -12 518 710 ;
+C -1 ; WX 519 ; N aring ; B 16 -12 518 772 ;
+C -1 ; WX 537 ; N ocircumflex ; B 15 -12 523 734 ;
+C -1 ; WX 722 ; N Edieresis ; B 10 0 675 903 ;
+C -1 ; WX 778 ; N threequarters ; B -7 -12 787 724 ;
+C -1 ; WX 444 ; N ydieresis ; B -30 -166 466 703 ;
+C -1 ; WX 444 ; N yacute ; B -30 -166 466 746 ;
+C -1 ; WX 315 ; N iacute ; B 13 0 321 746 ;
+C -1 ; WX 630 ; N Acircumflex ; B -42 0 656 934 ;
+C -1 ; WX 741 ; N Uacute ; B -10 -12 740 946 ;
+C -1 ; WX 481 ; N eacute ; B 14 -12 468 746 ;
+C -1 ; WX 815 ; N Ograve ; B 20 -12 796 946 ;
+C -1 ; WX 519 ; N agrave ; B 16 -12 518 746 ;
+C -1 ; WX 741 ; N Udieresis ; B -10 -12 740 903 ;
+C -1 ; WX 519 ; N acircumflex ; B 16 -12 518 734 ;
+C -1 ; WX 407 ; N Igrave ; B 0 0 407 946 ;
+C -1 ; WX 311 ; N twosuperior ; B -9 290 320 724 ;
+C -1 ; WX 741 ; N Ugrave ; B -10 -12 740 946 ;
+C -1 ; WX 778 ; N onequarter ; B 26 -12 787 726 ;
+C -1 ; WX 741 ; N Ucircumflex ; B -10 -12 740 934 ;
+C -1 ; WX 611 ; N Scaron ; B 28 -12 594 934 ;
+C -1 ; WX 407 ; N Idieresis ; B 0 0 407 903 ;
+C -1 ; WX 315 ; N idieresis ; B -20 0 336 703 ;
+C -1 ; WX 722 ; N Egrave ; B 10 0 675 946 ;
+C -1 ; WX 815 ; N Oacute ; B 20 -12 796 946 ;
+C -1 ; WX 600 ; N divide ; B 56 -44 544 532 ;
+C -1 ; WX 630 ; N Atilde ; B -42 0 656 910 ;
+C -1 ; WX 630 ; N Aring ; B -42 0 656 972 ;
+C -1 ; WX 815 ; N Odieresis ; B 20 -12 796 903 ;
+C -1 ; WX 630 ; N Adieresis ; B -42 0 656 903 ;
+C -1 ; WX 778 ; N Ntilde ; B -2 0 780 910 ;
+C -1 ; WX 648 ; N Zcaron ; B -9 0 650 934 ;
+C -1 ; WX 648 ; N Thorn ; B -2 0 650 712 ;
+C -1 ; WX 407 ; N Iacute ; B 0 0 407 946 ;
+C -1 ; WX 600 ; N plusminus ; B 56 0 544 488 ;
+C -1 ; WX 600 ; N multiply ; B 56 0 544 488 ;
+C -1 ; WX 722 ; N Eacute ; B 10 0 675 946 ;
+C -1 ; WX 648 ; N Ydieresis ; B -44 0 664 903 ;
+C -1 ; WX 311 ; N onesuperior ; B 26 290 286 726 ;
+C -1 ; WX 593 ; N ugrave ; B 12 -12 582 746 ;
+C -1 ; WX 600 ; N logicalnot ; B 56 82 544 406 ;
+C -1 ; WX 593 ; N ntilde ; B 12 0 582 710 ;
+C -1 ; WX 815 ; N Otilde ; B 20 -12 796 910 ;
+C -1 ; WX 537 ; N otilde ; B 15 -12 523 710 ;
+C -1 ; WX 685 ; N Ccedilla ; B 32 -220 640 724 ;
+C -1 ; WX 630 ; N Agrave ; B -42 0 656 946 ;
+C -1 ; WX 778 ; N onehalf ; B 26 -12 787 726 ;
+C -1 ; WX 778 ; N Eth ; B 0 0 754 712 ;
+C -1 ; WX 400 ; N degree ; B 57 438 343 724 ;
+C -1 ; WX 648 ; N Yacute ; B -44 0 664 946 ;
+C -1 ; WX 815 ; N Ocircumflex ; B 20 -12 796 934 ;
+C -1 ; WX 537 ; N oacute ; B 15 -12 523 746 ;
+C -1 ; WX 593 ; N mu ; B 6 -166 582 488 ;
+C -1 ; WX 600 ; N minus ; B 56 184 544 304 ;
+C -1 ; WX 537 ; N eth ; B 15 -12 523 712 ;
+C -1 ; WX 537 ; N odieresis ; B 15 -12 523 703 ;
+C -1 ; WX 800 ; N copyright ; B 40 -12 760 724 ;
+C -1 ; WX 222 ; N brokenbar ; B 51 0 171 712 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 91
+
+KPX A y -18
+KPX A w -37
+KPX A v -37
+KPX A quoteright -74
+KPX A quotedblright -74
+KPX A Y -55
+KPX A W -74
+KPX A V -74
+KPX A T -74
+
+KPX F r -55
+KPX F period -111
+KPX F o -55
+KPX F i -37
+KPX F e -55
+KPX F comma -111
+KPX F a -55
+KPX F A -55
+
+KPX L y -37
+KPX L quoteright -37
+KPX L quotedblright -37
+KPX L Y -74
+KPX L W -74
+KPX L V -74
+KPX L T -92
+
+KPX P period -129
+KPX P comma -129
+KPX P A -37
+
+KPX R Y -18
+KPX R W -18
+KPX R V -18
+KPX R T -18
+
+KPX T y -92
+KPX T w -92
+KPX T u -92
+KPX T semicolon -92
+KPX T r -92
+KPX T period -92
+KPX T o -92
+KPX T i -55
+KPX T hyphen -92
+KPX T e -92
+KPX T comma -92
+KPX T colon -92
+KPX T a -92
+KPX T A -74
+
+KPX V u -55
+KPX V semicolon -55
+KPX V period -111
+KPX V o -74
+KPX V i -37
+KPX V hyphen -74
+KPX V e -74
+KPX V comma -111
+KPX V colon -55
+KPX V a -74
+KPX V A -55
+
+KPX W y -18
+KPX W u -37
+KPX W semicolon -55
+KPX W period -111
+KPX W o -55
+KPX W i -37
+KPX W hyphen -55
+KPX W e -55
+KPX W comma -111
+KPX W colon -55
+KPX W a -55
+KPX W A -55
+
+KPX Y u -55
+KPX Y semicolon -55
+KPX Y period -74
+KPX Y o -74
+KPX Y i -37
+KPX Y hyphen -92
+KPX Y e -74
+KPX Y comma -74
+KPX Y colon -55
+KPX Y a -74
+KPX Y A -37
+
+KPX f quoteright 74
+KPX f quotedblright 74
+
+KPX quoteright s -37
+
+KPX r period -74
+KPX r hyphen -74
+KPX r comma -74
+
+KPX v period -55
+KPX v comma -55
+
+KPX w period -55
+KPX w comma -55
+
+KPX y period -55
+KPX y comma -55
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 151 200 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 151 200 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 151 200 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 151 200 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 151 200 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 151 200 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 204 200 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 204 200 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 204 200 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 204 200 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 51 200 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 51 200 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 51 200 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 51 200 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 255 200 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 250 200 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 250 200 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 250 200 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 250 200 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 250 200 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 148 200 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 242 200 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 242 200 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 242 200 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 242 200 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 167 200 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 167 200 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 167 200 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 107 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 107 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 107 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 107 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 107 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 107 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 118 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 118 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 118 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 118 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute 0 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex 0 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis 0 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave 0 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 139 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 111 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 111 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 111 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 111 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 111 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 56 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 139 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 139 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 139 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 139 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 65 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 65 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 65 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/Ti-ExBd+ b/font/font/Ti-ExBd+
new file mode 100644
index 0000000..e7086d3
--- /dev/null
+++ b/font/font/Ti-ExBd+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 685 ; N Ccaron ; B 32 -12 640 955 ;
+C -1 ; WX 463 ; N ccaron ; B 14 -12 476 734 ;
+C -1 ; WX 778 ; N Dcaron ; B 0 0 754 955 ;
+C -1 ; WX 728 ; N dcaron ; B 32 -12 808 783 ;
+C -1 ; WX 722 ; N Ecaron ; B 10 0 675 955 ;
+C -1 ; WX 481 ; N ecaron ; B 14 -12 468 734 ;
+C -1 ; WX 611 ; N Lcaron ; B 0 0 649 783 ;
+C -1 ; WX 611 ; N Lacute ; B 0 0 611 967 ;
+C -1 ; WX 469 ; N lcaron ; B 13 0 545 783 ;
+C -1 ; WX 315 ; N lacute ; B 13 0 346 967 ;
+C -1 ; WX 778 ; N Ncaron ; B -2 0 780 955 ;
+C -1 ; WX 593 ; N ncaron ; B 12 0 582 734 ;
+C -1 ; WX 741 ; N Rcaron ; B 0 0 778 955 ;
+C -1 ; WX 741 ; N Racute ; B 0 0 778 967 ;
+C -1 ; WX 426 ; N rcaron ; B 14 0 436 734 ;
+C -1 ; WX 426 ; N racute ; B 14 0 436 746 ;
+C -1 ; WX 704 ; N Tcaron ; B 28 0 676 955 ;
+C -1 ; WX 506 ; N tcaron ; B 12 -12 594 724 ;
+C -1 ; WX 741 ; N Uring ; B -10 -12 740 955 ;
+C -1 ; WX 593 ; N uring ; B 12 -12 582 772 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 246 221 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 97 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 231 221 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 569 59 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 203 221 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 83 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 410 59 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 148 221 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 306 59 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 25 221 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 231 221 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 139 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 213 221 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 260 221 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 55 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 80 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 194 221 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 355 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 213 183 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 139 0 ;
+EndBuildComposites
diff --git a/font/font/Ti-It b/font/font/Ti-It
new file mode 100644
index 0000000..6d7a003
--- /dev/null
+++ b/font/font/Ti-It
@@ -0,0 +1,648 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Tue Mar 20 13:14:56 1990
+Comment UniqueID 28427
+Comment VMusage 32912 39804
+FontName Times-Italic
+FullName Times Italic
+FamilyName Times
+Weight Medium
+ItalicAngle -15.5
+IsFixedPitch false
+FontBBox -169 -217 1010 883
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.007
+Notice Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.Times is a trademark of Linotype AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 653
+XHeight 441
+Ascender 683
+Descender -205
+StartCharMetrics 228
+C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 333 ; N exclam ; B 39 -11 302 667 ;
+C 34 ; WX 420 ; N quotedbl ; B 144 421 432 666 ;
+C 35 ; WX 500 ; N numbersign ; B 2 0 540 676 ;
+C 36 ; WX 500 ; N dollar ; B 31 -89 497 731 ;
+C 37 ; WX 833 ; N percent ; B 79 -13 790 676 ;
+C 38 ; WX 778 ; N ampersand ; B 76 -18 723 666 ;
+C 39 ; WX 333 ; N quoteright ; B 151 436 290 666 ;
+C 40 ; WX 333 ; N parenleft ; B 42 -181 315 669 ;
+C 41 ; WX 333 ; N parenright ; B 16 -180 289 669 ;
+C 42 ; WX 500 ; N asterisk ; B 128 255 492 666 ;
+C 43 ; WX 675 ; N plus ; B 86 0 590 506 ;
+C 44 ; WX 250 ; N comma ; B -4 -129 135 101 ;
+C 45 ; WX 333 ; N hyphen ; B 49 192 282 255 ;
+C 46 ; WX 250 ; N period ; B 27 -11 138 100 ;
+C 47 ; WX 278 ; N slash ; B -65 -18 386 666 ;
+C 48 ; WX 500 ; N zero ; B 32 -7 497 676 ;
+C 49 ; WX 500 ; N one ; B 49 0 409 676 ;
+C 50 ; WX 500 ; N two ; B 12 0 452 676 ;
+C 51 ; WX 500 ; N three ; B 15 -7 465 676 ;
+C 52 ; WX 500 ; N four ; B 1 0 479 676 ;
+C 53 ; WX 500 ; N five ; B 15 -7 491 666 ;
+C 54 ; WX 500 ; N six ; B 30 -7 521 686 ;
+C 55 ; WX 500 ; N seven ; B 75 -8 537 666 ;
+C 56 ; WX 500 ; N eight ; B 30 -7 493 676 ;
+C 57 ; WX 500 ; N nine ; B 23 -17 492 676 ;
+C 58 ; WX 333 ; N colon ; B 50 -11 261 441 ;
+C 59 ; WX 333 ; N semicolon ; B 27 -129 261 441 ;
+C 60 ; WX 675 ; N less ; B 84 -8 592 514 ;
+C 61 ; WX 675 ; N equal ; B 86 120 590 386 ;
+C 62 ; WX 675 ; N greater ; B 84 -8 592 514 ;
+C 63 ; WX 500 ; N question ; B 132 -12 472 664 ;
+C 64 ; WX 920 ; N at ; B 118 -18 806 666 ;
+C 65 ; WX 611 ; N A ; B -51 0 564 668 ;
+C 66 ; WX 611 ; N B ; B -8 0 588 653 ;
+C 67 ; WX 667 ; N C ; B 66 -18 689 666 ;
+C 68 ; WX 722 ; N D ; B -8 0 700 653 ;
+C 69 ; WX 611 ; N E ; B -1 0 634 653 ;
+C 70 ; WX 611 ; N F ; B 8 0 645 653 ;
+C 71 ; WX 722 ; N G ; B 52 -18 722 666 ;
+C 72 ; WX 722 ; N H ; B -8 0 767 653 ;
+C 73 ; WX 333 ; N I ; B -8 0 384 653 ;
+C 74 ; WX 444 ; N J ; B -6 -18 491 653 ;
+C 75 ; WX 667 ; N K ; B 7 0 722 653 ;
+C 76 ; WX 556 ; N L ; B -8 0 559 653 ;
+C 77 ; WX 833 ; N M ; B -18 0 873 653 ;
+C 78 ; WX 667 ; N N ; B -20 -15 727 653 ;
+C 79 ; WX 722 ; N O ; B 60 -18 699 666 ;
+C 80 ; WX 611 ; N P ; B 0 0 605 653 ;
+C 81 ; WX 722 ; N Q ; B 59 -182 699 666 ;
+C 82 ; WX 611 ; N R ; B -13 0 588 653 ;
+C 83 ; WX 500 ; N S ; B 17 -18 508 667 ;
+C 84 ; WX 556 ; N T ; B 59 0 633 653 ;
+C 85 ; WX 722 ; N U ; B 102 -18 765 653 ;
+C 86 ; WX 611 ; N V ; B 76 -18 688 653 ;
+C 87 ; WX 833 ; N W ; B 71 -18 906 653 ;
+C 88 ; WX 611 ; N X ; B -29 0 655 653 ;
+C 89 ; WX 556 ; N Y ; B 78 0 633 653 ;
+C 90 ; WX 556 ; N Z ; B -6 0 606 653 ;
+C 91 ; WX 389 ; N bracketleft ; B 21 -153 391 663 ;
+C 92 ; WX 278 ; N backslash ; B -41 -18 319 666 ;
+C 93 ; WX 389 ; N bracketright ; B 12 -153 382 663 ;
+C 94 ; WX 422 ; N asciicircum ; B 0 301 422 666 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 333 ; N quoteleft ; B 171 436 310 666 ;
+C 97 ; WX 500 ; N a ; B 17 -11 476 441 ;
+C 98 ; WX 500 ; N b ; B 23 -11 473 683 ;
+C 99 ; WX 444 ; N c ; B 30 -11 425 441 ;
+C 100 ; WX 500 ; N d ; B 15 -13 527 683 ;
+C 101 ; WX 444 ; N e ; B 31 -11 412 441 ;
+C 102 ; WX 278 ; N f ; B -147 -207 424 678 ; L i fi ; L l fl ;
+C 103 ; WX 500 ; N g ; B 8 -206 472 441 ;
+C 104 ; WX 500 ; N h ; B 19 -9 478 683 ;
+C 105 ; WX 278 ; N i ; B 49 -11 264 654 ;
+C 106 ; WX 278 ; N j ; B -124 -207 276 654 ;
+C 107 ; WX 444 ; N k ; B 14 -11 461 683 ;
+C 108 ; WX 278 ; N l ; B 41 -11 279 683 ;
+C 109 ; WX 722 ; N m ; B 12 -9 704 441 ;
+C 110 ; WX 500 ; N n ; B 14 -9 474 441 ;
+C 111 ; WX 500 ; N o ; B 27 -11 468 441 ;
+C 112 ; WX 500 ; N p ; B -75 -205 469 441 ;
+C 113 ; WX 500 ; N q ; B 25 -209 483 441 ;
+C 114 ; WX 389 ; N r ; B 45 0 412 441 ;
+C 115 ; WX 389 ; N s ; B 16 -13 366 442 ;
+C 116 ; WX 278 ; N t ; B 37 -11 296 546 ;
+C 117 ; WX 500 ; N u ; B 42 -11 475 441 ;
+C 118 ; WX 444 ; N v ; B 21 -18 426 441 ;
+C 119 ; WX 667 ; N w ; B 16 -18 648 441 ;
+C 120 ; WX 444 ; N x ; B -27 -11 447 441 ;
+C 121 ; WX 444 ; N y ; B -24 -206 426 441 ;
+C 122 ; WX 389 ; N z ; B -2 -81 380 428 ;
+C 123 ; WX 400 ; N braceleft ; B 51 -177 407 687 ;
+C 124 ; WX 275 ; N bar ; B 105 -18 171 666 ;
+C 125 ; WX 400 ; N braceright ; B -7 -177 349 687 ;
+C 126 ; WX 541 ; N asciitilde ; B 40 183 502 323 ;
+C 161 ; WX 389 ; N exclamdown ; B 59 -205 322 473 ;
+C 162 ; WX 500 ; N cent ; B 77 -143 472 560 ;
+C 163 ; WX 500 ; N sterling ; B 10 -6 517 670 ;
+C 164 ; WX 167 ; N fraction ; B -169 -10 337 676 ;
+C 165 ; WX 500 ; N yen ; B 27 0 603 653 ;
+C 166 ; WX 500 ; N florin ; B 25 -182 507 682 ;
+C 167 ; WX 500 ; N section ; B 53 -162 461 666 ;
+C 168 ; WX 500 ; N currency ; B -22 53 522 597 ;
+C 169 ; WX 214 ; N quotesingle ; B 132 421 241 666 ;
+C 170 ; WX 556 ; N quotedblleft ; B 166 436 514 666 ;
+C 171 ; WX 500 ; N guillemotleft ; B 53 37 445 403 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 51 37 281 403 ;
+C 173 ; WX 333 ; N guilsinglright ; B 52 37 282 403 ;
+C 174 ; WX 500 ; N fi ; B -141 -207 481 681 ;
+C 175 ; WX 500 ; N fl ; B -141 -204 518 682 ;
+C 177 ; WX 500 ; N endash ; B -6 197 505 243 ;
+C 178 ; WX 500 ; N dagger ; B 101 -159 488 666 ;
+C 179 ; WX 500 ; N daggerdbl ; B 22 -143 491 666 ;
+C 180 ; WX 250 ; N periodcentered ; B 70 199 181 310 ;
+C 182 ; WX 523 ; N paragraph ; B 55 -123 616 653 ;
+C 183 ; WX 350 ; N bullet ; B 40 191 310 461 ;
+C 184 ; WX 333 ; N quotesinglbase ; B 44 -129 183 101 ;
+C 185 ; WX 556 ; N quotedblbase ; B 57 -129 405 101 ;
+C 186 ; WX 556 ; N quotedblright ; B 151 436 499 666 ;
+C 187 ; WX 500 ; N guillemotright ; B 55 37 447 403 ;
+C 188 ; WX 889 ; N ellipsis ; B 57 -11 762 100 ;
+C 189 ; WX 1000 ; N perthousand ; B 25 -19 1010 706 ;
+C 191 ; WX 500 ; N questiondown ; B 28 -205 368 471 ;
+C 193 ; WX 333 ; N grave ; B 121 492 311 664 ;
+C 194 ; WX 333 ; N acute ; B 180 494 403 664 ;
+C 195 ; WX 333 ; N circumflex ; B 91 492 385 661 ;
+C 196 ; WX 333 ; N tilde ; B 100 517 427 624 ;
+C 197 ; WX 333 ; N macron ; B 99 532 411 583 ;
+C 198 ; WX 333 ; N breve ; B 117 492 418 650 ;
+C 199 ; WX 333 ; N dotaccent ; B 207 508 305 606 ;
+C 200 ; WX 333 ; N dieresis ; B 107 508 405 606 ;
+C 202 ; WX 333 ; N ring ; B 155 492 355 691 ;
+C 203 ; WX 333 ; N cedilla ; B -30 -217 182 0 ;
+C 205 ; WX 333 ; N hungarumlaut ; B 93 494 486 664 ;
+C 206 ; WX 333 ; N ogonek ; B -20 -169 200 40 ;
+C 207 ; WX 333 ; N caron ; B 121 492 426 661 ;
+C 208 ; WX 889 ; N emdash ; B -6 197 894 243 ;
+C 225 ; WX 889 ; N AE ; B -27 0 911 653 ;
+C 227 ; WX 276 ; N ordfeminine ; B 42 406 352 676 ;
+C 232 ; WX 556 ; N Lslash ; B -8 0 559 653 ;
+C 233 ; WX 722 ; N Oslash ; B 60 -105 699 722 ;
+C 234 ; WX 944 ; N OE ; B 49 -8 964 666 ;
+C 235 ; WX 310 ; N ordmasculine ; B 67 406 362 676 ;
+C 241 ; WX 667 ; N ae ; B 23 -11 640 441 ;
+C 245 ; WX 278 ; N dotlessi ; B 49 -11 235 441 ;
+C 248 ; WX 278 ; N lslash ; B 37 -11 307 683 ;
+C 249 ; WX 500 ; N oslash ; B 28 -135 469 554 ;
+C 250 ; WX 667 ; N oe ; B 20 -12 646 441 ;
+C 251 ; WX 500 ; N germandbls ; B -168 -207 493 679 ;
+C -1 ; WX 556 ; N Zcaron ; B -6 0 606 873 ;
+C -1 ; WX 444 ; N ccedilla ; B 26 -217 425 441 ;
+C -1 ; WX 444 ; N ydieresis ; B -24 -206 441 606 ;
+C -1 ; WX 500 ; N atilde ; B 17 -11 511 624 ;
+C -1 ; WX 278 ; N icircumflex ; B 34 -11 328 661 ;
+C -1 ; WX 300 ; N threesuperior ; B 43 268 339 676 ;
+C -1 ; WX 444 ; N ecircumflex ; B 31 -11 441 661 ;
+C -1 ; WX 500 ; N thorn ; B -75 -205 469 683 ;
+C -1 ; WX 444 ; N egrave ; B 31 -11 412 664 ;
+C -1 ; WX 300 ; N twosuperior ; B 33 271 324 676 ;
+C -1 ; WX 444 ; N eacute ; B 31 -11 459 664 ;
+C -1 ; WX 500 ; N otilde ; B 27 -11 496 624 ;
+C -1 ; WX 611 ; N Aacute ; B -51 0 564 876 ;
+C -1 ; WX 500 ; N ocircumflex ; B 27 -11 468 661 ;
+C -1 ; WX 444 ; N yacute ; B -24 -206 459 664 ;
+C -1 ; WX 500 ; N udieresis ; B 42 -11 479 606 ;
+C -1 ; WX 750 ; N threequarters ; B 23 -10 736 676 ;
+C -1 ; WX 500 ; N acircumflex ; B 17 -11 476 661 ;
+C -1 ; WX 722 ; N Eth ; B -8 0 700 653 ;
+C -1 ; WX 444 ; N edieresis ; B 31 -11 451 606 ;
+C -1 ; WX 500 ; N ugrave ; B 42 -11 475 664 ;
+C -1 ; WX 980 ; N trademark ; B 30 247 957 653 ;
+C -1 ; WX 500 ; N ograve ; B 27 -11 468 664 ;
+C -1 ; WX 389 ; N scaron ; B 16 -13 454 661 ;
+C -1 ; WX 333 ; N Idieresis ; B -8 0 435 818 ;
+C -1 ; WX 500 ; N uacute ; B 42 -11 477 664 ;
+C -1 ; WX 500 ; N agrave ; B 17 -11 476 664 ;
+C -1 ; WX 500 ; N ntilde ; B 14 -9 476 624 ;
+C -1 ; WX 500 ; N aring ; B 17 -11 476 691 ;
+C -1 ; WX 389 ; N zcaron ; B -2 -81 434 661 ;
+C -1 ; WX 333 ; N Icircumflex ; B -8 0 425 873 ;
+C -1 ; WX 667 ; N Ntilde ; B -20 -15 727 836 ;
+C -1 ; WX 500 ; N ucircumflex ; B 42 -11 475 661 ;
+C -1 ; WX 611 ; N Ecircumflex ; B -1 0 634 873 ;
+C -1 ; WX 333 ; N Iacute ; B -8 0 413 876 ;
+C -1 ; WX 667 ; N Ccedilla ; B 66 -217 689 666 ;
+C -1 ; WX 722 ; N Odieresis ; B 60 -18 699 818 ;
+C -1 ; WX 500 ; N Scaron ; B 17 -18 520 873 ;
+C -1 ; WX 611 ; N Edieresis ; B -1 0 634 818 ;
+C -1 ; WX 333 ; N Igrave ; B -8 0 384 876 ;
+C -1 ; WX 500 ; N adieresis ; B 17 -11 489 606 ;
+C -1 ; WX 722 ; N Ograve ; B 60 -18 699 876 ;
+C -1 ; WX 611 ; N Egrave ; B -1 0 634 876 ;
+C -1 ; WX 556 ; N Ydieresis ; B 78 0 633 818 ;
+C -1 ; WX 760 ; N registered ; B 41 -18 719 666 ;
+C -1 ; WX 722 ; N Otilde ; B 60 -18 699 836 ;
+C -1 ; WX 750 ; N onequarter ; B 33 -10 736 676 ;
+C -1 ; WX 722 ; N Ugrave ; B 102 -18 765 876 ;
+C -1 ; WX 722 ; N Ucircumflex ; B 102 -18 765 873 ;
+C -1 ; WX 611 ; N Thorn ; B 0 0 569 653 ;
+C -1 ; WX 675 ; N divide ; B 86 -11 590 517 ;
+C -1 ; WX 611 ; N Atilde ; B -51 0 566 836 ;
+C -1 ; WX 722 ; N Uacute ; B 102 -18 765 876 ;
+C -1 ; WX 722 ; N Ocircumflex ; B 60 -18 699 873 ;
+C -1 ; WX 675 ; N logicalnot ; B 86 108 590 386 ;
+C -1 ; WX 611 ; N Aring ; B -51 0 564 883 ;
+C -1 ; WX 278 ; N idieresis ; B 49 -11 353 606 ;
+C -1 ; WX 278 ; N iacute ; B 49 -11 356 664 ;
+C -1 ; WX 500 ; N aacute ; B 17 -11 487 664 ;
+C -1 ; WX 675 ; N plusminus ; B 86 0 590 506 ;
+C -1 ; WX 675 ; N multiply ; B 93 8 582 497 ;
+C -1 ; WX 722 ; N Udieresis ; B 102 -18 765 818 ;
+C -1 ; WX 675 ; N minus ; B 86 220 590 286 ;
+C -1 ; WX 300 ; N onesuperior ; B 43 271 284 676 ;
+C -1 ; WX 611 ; N Eacute ; B -1 0 634 876 ;
+C -1 ; WX 611 ; N Acircumflex ; B -51 0 564 873 ;
+C -1 ; WX 760 ; N copyright ; B 41 -18 719 666 ;
+C -1 ; WX 611 ; N Agrave ; B -51 0 564 876 ;
+C -1 ; WX 500 ; N odieresis ; B 27 -11 489 606 ;
+C -1 ; WX 500 ; N oacute ; B 27 -11 487 664 ;
+C -1 ; WX 400 ; N degree ; B 101 390 387 676 ;
+C -1 ; WX 278 ; N igrave ; B 49 -11 284 664 ;
+C -1 ; WX 500 ; N mu ; B -30 -209 497 428 ;
+C -1 ; WX 722 ; N Oacute ; B 60 -18 699 876 ;
+C -1 ; WX 500 ; N eth ; B 27 -11 482 683 ;
+C -1 ; WX 611 ; N Adieresis ; B -51 0 564 818 ;
+C -1 ; WX 556 ; N Yacute ; B 78 0 633 876 ;
+C -1 ; WX 275 ; N brokenbar ; B 105 -18 171 666 ;
+C -1 ; WX 750 ; N onehalf ; B 34 -10 749 676 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 283
+
+KPX A y -55
+KPX A w -55
+KPX A v -55
+KPX A u -20
+KPX A quoteright -37
+KPX A quotedblright 0
+KPX A p 0
+KPX A Y -55
+KPX A W -95
+KPX A V -105
+KPX A U -50
+KPX A T -37
+KPX A Q -40
+KPX A O -40
+KPX A G -35
+KPX A C -30
+
+KPX B period 0
+KPX B comma 0
+KPX B U -10
+KPX B A -25
+
+KPX D period 0
+KPX D comma 0
+KPX D Y -40
+KPX D W -40
+KPX D V -40
+KPX D A -35
+
+KPX F r -55
+KPX F period -135
+KPX F o -105
+KPX F i -45
+KPX F e -75
+KPX F comma -135
+KPX F a -75
+KPX F A -115
+
+KPX G period 0
+KPX G comma 0
+
+KPX J u -35
+KPX J period -25
+KPX J o -25
+KPX J e -25
+KPX J comma -25
+KPX J a -35
+KPX J A -40
+
+KPX K y -40
+KPX K u -40
+KPX K o -40
+KPX K e -35
+KPX K O -50
+
+KPX L y -30
+KPX L quoteright -37
+KPX L quotedblright 0
+KPX L Y -20
+KPX L W -55
+KPX L V -55
+KPX L T -20
+
+KPX N period 0
+KPX N comma 0
+KPX N A -27
+
+KPX O period 0
+KPX O comma 0
+KPX O Y -50
+KPX O X -40
+KPX O W -50
+KPX O V -50
+KPX O T -40
+KPX O A -55
+
+KPX P period -135
+KPX P o -80
+KPX P e -80
+KPX P comma -135
+KPX P a -80
+KPX P A -90
+
+KPX Q period 0
+KPX Q comma 0
+KPX Q U -10
+
+KPX R Y -18
+KPX R W -18
+KPX R V -18
+KPX R U -40
+KPX R T 0
+KPX R O -40
+
+KPX S period 0
+KPX S comma 0
+
+KPX T y -74
+KPX T w -74
+KPX T u -55
+KPX T semicolon -65
+KPX T r -55
+KPX T period -74
+KPX T o -92
+KPX T i -55
+KPX T hyphen -74
+KPX T h 0
+KPX T e -92
+KPX T comma -74
+KPX T colon -55
+KPX T a -92
+KPX T O -18
+KPX T A -50
+
+KPX U period -25
+KPX U comma -25
+KPX U A -40
+
+KPX V u -74
+KPX V semicolon -74
+KPX V period -129
+KPX V o -111
+KPX V i -74
+KPX V hyphen -55
+KPX V e -111
+KPX V comma -129
+KPX V colon -65
+KPX V a -111
+KPX V O -30
+KPX V G 0
+KPX V A -60
+
+KPX W y -70
+KPX W u -55
+KPX W semicolon -65
+KPX W period -92
+KPX W o -92
+KPX W i -55
+KPX W hyphen -37
+KPX W h 0
+KPX W e -92
+KPX W comma -92
+KPX W colon -65
+KPX W a -92
+KPX W O -25
+KPX W A -60
+
+KPX Y u -92
+KPX Y semicolon -65
+KPX Y period -92
+KPX Y o -92
+KPX Y i -74
+KPX Y hyphen -74
+KPX Y e -92
+KPX Y comma -92
+KPX Y colon -65
+KPX Y a -92
+KPX Y O -15
+KPX Y A -50
+
+KPX a y 0
+KPX a w 0
+KPX a v 0
+KPX a t 0
+KPX a p 0
+KPX a g -10
+KPX a b 0
+
+KPX b y 0
+KPX b v 0
+KPX b u -20
+KPX b period -40
+KPX b l 0
+KPX b comma 0
+KPX b b 0
+
+KPX c y 0
+KPX c period 0
+KPX c l 0
+KPX c k -20
+KPX c h -15
+KPX c comma 0
+
+KPX colon space 0
+
+KPX comma space 0
+KPX comma quoteright -140
+KPX comma quotedblright -140
+
+KPX d y 0
+KPX d w 0
+KPX d v 0
+KPX d period 0
+KPX d d 0
+KPX d comma 0
+
+KPX e y -30
+KPX e x -20
+KPX e w -15
+KPX e v -15
+KPX e period -15
+KPX e p 0
+KPX e g -40
+KPX e comma -10
+KPX e b 0
+
+KPX f quoteright 92
+KPX f quotedblright 0
+KPX f period -15
+KPX f o 0
+KPX f l 0
+KPX f i -20
+KPX f f -18
+KPX f e 0
+KPX f dotlessi -60
+KPX f comma -10
+KPX f a 0
+
+KPX g y 0
+KPX g r 0
+KPX g period -15
+KPX g o 0
+KPX g i 0
+KPX g g -10
+KPX g e -10
+KPX g comma -10
+KPX g a 0
+
+KPX h y 0
+
+KPX i v 0
+
+KPX k y -10
+KPX k o -10
+KPX k e -10
+
+KPX l y 0
+KPX l w 0
+
+KPX m y 0
+KPX m u 0
+
+KPX n y 0
+KPX n v -40
+KPX n u 0
+
+KPX o y 0
+KPX o x 0
+KPX o w 0
+KPX o v -10
+KPX o g -10
+
+KPX p y 0
+
+KPX period quoteright -140
+KPX period quotedblright -140
+
+KPX quotedblleft quoteleft 0
+KPX quotedblleft A 0
+
+KPX quotedblright space 0
+
+KPX quoteleft quoteleft -111
+KPX quoteleft A 0
+
+KPX quoteright v -10
+KPX quoteright t -30
+KPX quoteright space -111
+KPX quoteright s -40
+KPX quoteright r -25
+KPX quoteright quoteright -111
+KPX quoteright quotedblright 0
+KPX quoteright l 0
+KPX quoteright d -25
+
+KPX r y 0
+KPX r v 0
+KPX r u 0
+KPX r t 0
+KPX r s -10
+KPX r r 0
+KPX r q -37
+KPX r period -111
+KPX r p 0
+KPX r o -45
+KPX r n 0
+KPX r m 0
+KPX r l 0
+KPX r k 0
+KPX r i 0
+KPX r hyphen -20
+KPX r g -37
+KPX r e -37
+KPX r d -37
+KPX r comma -111
+KPX r c -37
+KPX r a -15
+
+KPX s w 0
+
+KPX space quoteleft 0
+KPX space quotedblleft 0
+KPX space Y -75
+KPX space W -40
+KPX space V -35
+KPX space T -18
+KPX space A -18
+
+KPX v period -74
+KPX v o 0
+KPX v e 0
+KPX v comma -74
+KPX v a 0
+
+KPX w period -74
+KPX w o 0
+KPX w h 0
+KPX w e 0
+KPX w comma -74
+KPX w a 0
+
+KPX x e 0
+
+KPX y period -55
+KPX y o 0
+KPX y e 0
+KPX y comma -55
+KPX y a 0
+
+KPX z o 0
+KPX z e 0
+EndKernPairs
+EndKernData
+StartComposites 58
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 139 212 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 144 212 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 139 212 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 149 212 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 129 192 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 139 212 ;
+CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 167 0 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 149 212 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 169 212 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 159 212 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 149 212 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 10 212 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 40 212 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 30 212 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 10 212 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 177 212 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 195 212 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 230 212 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 230 212 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 205 212 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 215 212 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 94 212 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 195 212 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 215 212 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 225 212 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 215 212 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 132 212 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 142 212 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 112 212 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 84 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 84 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 84 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 84 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 84 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 84 0 ;
+CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 56 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 56 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 56 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 46 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 56 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -47 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -57 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -52 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -27 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 49 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 84 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 74 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 84 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 84 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 69 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 28 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 74 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 74 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 74 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 84 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 56 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 36 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 8 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/Ti-It+ b/font/font/Ti-It+
new file mode 100644
index 0000000..c85c032
--- /dev/null
+++ b/font/font/Ti-It+
@@ -0,0 +1,72 @@
+StartExtraCharMetrics
+C -1 ; WX 722 ; N Aogonek ; B 15 0 706 674 ;
+C -1 ; WX 444 ; N aogonek ; B 37 -10 442 460 ;
+C -1 ; WX 611 ; N Eogonek ; B 12 0 597 662 ;
+C -1 ; WX 444 ; N eogonek ; B 25 -10 424 460 ;
+C -1 ; WX 667 ; N Cacute ; B 28 -14 633 890 ;
+C -1 ; WX 444 ; N cacute ; B 25 -10 412 674 ;
+C -1 ; WX 556 ; N Sacute ; B 42 -14 491 676 ;
+C -1 ; WX 389 ; N sacute ; B 51 -10 348 460 ;
+C -1 ; WX 611 ; N Zacute ; B 9 0 597 662 ;
+C -1 ; WX 444 ; N zacute ; B 27 0 418 450 ;
+C -1 ; WX 611 ; N Zdotaccent ; B 9 0 597 662 ;
+C -1 ; WX 444 ; N zdotaccent ; B 27 0 418 450 ;
+C -1 ; WX 667 ; N Ccaron ; B 66 -18 714 882 ;
+C -1 ; WX 444 ; N ccaron ; B 30 -11 501 661 ;
+C -1 ; WX 722 ; N Dcaron ; B -8 0 700 882 ;
+C -1 ; WX 597 ; N dcaron ; B 15 -13 680 751 ;
+C -1 ; WX 611 ; N Ecaron ; B -1 0 634 882 ;
+C -1 ; WX 444 ; N ecaron ; B 31 -11 481 661 ;
+C -1 ; WX 556 ; N Lcaron ; B -8 0 559 718 ;
+C -1 ; WX 556 ; N Lacute ; B -8 0 572 883 ;
+C -1 ; WX 375 ; N lcaron ; B 41 -11 432 751 ;
+C -1 ; WX 278 ; N lacute ; B 41 -11 456 883 ;
+C -1 ; WX 667 ; N Ncaron ; B -20 -15 727 882 ;
+C -1 ; WX 500 ; N ncaron ; B 14 -9 509 661 ;
+C -1 ; WX 611 ; N Rcaron ; B -13 0 624 882 ;
+C -1 ; WX 611 ; N Racute ; B -13 0 642 883 ;
+C -1 ; WX 389 ; N rcaron ; B 45 0 454 661 ;
+C -1 ; WX 389 ; N racute ; B 45 0 453 664 ;
+C -1 ; WX 556 ; N Tcaron ; B 59 0 633 882 ;
+C -1 ; WX 375 ; N tcaron ; B 37 -11 449 666 ;
+C -1 ; WX 722 ; N Uring ; B 102 -18 765 882 ;
+C -1 ; WX 500 ; N uring ; B 42 -11 475 691 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Aogonek 2 ; PCC A 0 0 ; PCC ogonek 300 0 ;
+CC aogonek 2 ; PCC a 0 0 ; PCC ogonek 155 0 ;
+CC Eogonek 2 ; PCC E 0 0 ; PCC ogonek 250 0 ;
+CC eogonek 2 ; PCC e 0 0 ; PCC ogonek 105 0 ;
+CC Cacute 2 ; PCC C 0 0 ; PCC acute 228 216 ;
+CC cacute 2 ; PCC c 0 0 ; PCC acute 74 0 ;
+CC Lslash 2 ; PCC L 0 0 ; PCC acute -80 -220;
+CC lslash 2 ; PCC l 0 0 ; PCC acute -80 -220 ;
+CC Nacute 2 ; PCC N 0 0 ; PCC acute 194 216 ;
+CC nacute 2 ; PCC n 0 0 ; PCC acute 83 0 ;
+CC Sacute 2 ; PCC S 0 0 ; PCC acute 194 216 ;
+CC sacute 2 ; PCC s 0 0 ; PCC acute 83 0 ;
+CC Zacute 2 ; PCC Z 0 0 ; PCC acute 194 216 ;
+CC zacute 2 ; PCC z 0 0 ; PCC acute 83 0 ;
+CC Zdotaccent 2 ; PCC Z 0 0 ; PCC dotaccent 194 216 ;
+CC zdotaccent 2 ; PCC z 0 0 ; PCC dotaccent 83 0;
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 288 221 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 75 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 253 221 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 390 85 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 198 221 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 55 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 247 52 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 169 219 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 142 85 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 53 219 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 226 221 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 83 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 198 221 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 239 219 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 28 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 50 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 170 221 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 159 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 245 191 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 83 0 ;
+EndBuildComposites
diff --git a/font/font/Ti-ItF b/font/font/Ti-ItF
new file mode 100644
index 0000000..82cc242
--- /dev/null
+++ b/font/font/Ti-ItF
@@ -0,0 +1,531 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Tue Dec 4 11:35:02 1990
+Comment UniqueID 33650
+Comment VMusage 33130 40022
+FontName Times-ItalicOsF
+FullName Times Italic Old Style Figures
+FamilyName Times
+Weight Medium
+ItalicAngle -15.5
+IsFixedPitch false
+FontBBox -169 -217 1010 883
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.000
+Notice Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.Times is a trademark of Linotype AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 653
+XHeight 441
+Ascender 683
+Descender -205
+StartCharMetrics 228
+C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 333 ; N exclam ; B 39 -11 302 667 ;
+C 34 ; WX 420 ; N quotedbl ; B 144 421 432 666 ;
+C 35 ; WX 500 ; N numbersign ; B 2 0 540 676 ;
+C 36 ; WX 500 ; N dollar ; B 31 -89 497 731 ;
+C 37 ; WX 833 ; N percent ; B 79 -13 790 676 ;
+C 38 ; WX 778 ; N ampersand ; B 76 -18 723 666 ;
+C 39 ; WX 333 ; N quoteright ; B 151 436 290 666 ;
+C 40 ; WX 333 ; N parenleft ; B 42 -181 315 669 ;
+C 41 ; WX 333 ; N parenright ; B 16 -180 289 669 ;
+C 42 ; WX 500 ; N asterisk ; B 128 255 492 666 ;
+C 43 ; WX 675 ; N plus ; B 86 0 590 506 ;
+C 44 ; WX 250 ; N comma ; B -4 -129 135 101 ;
+C 45 ; WX 333 ; N hyphen ; B 49 192 282 255 ;
+C 46 ; WX 250 ; N period ; B 27 -11 138 100 ;
+C 47 ; WX 278 ; N slash ; B -65 -18 386 666 ;
+C 48 ; WX 500 ; N zero ; B 16 -8 484 494 ;
+C 49 ; WX 500 ; N one ; B 56 0 438 486 ;
+C 50 ; WX 500 ; N two ; B 19 0 422 494 ;
+C 51 ; WX 500 ; N three ; B -18 -190 434 494 ;
+C 52 ; WX 500 ; N four ; B -16 -172 458 494 ;
+C 53 ; WX 500 ; N five ; B -14 -190 462 486 ;
+C 54 ; WX 500 ; N six ; B 28 -8 521 684 ;
+C 55 ; WX 500 ; N seven ; B 48 -190 520 486 ;
+C 56 ; WX 500 ; N eight ; B 10 -8 476 670 ;
+C 57 ; WX 500 ; N nine ; B -12 -196 462 494 ;
+C 58 ; WX 333 ; N colon ; B 50 -11 261 441 ;
+C 59 ; WX 333 ; N semicolon ; B 27 -129 261 441 ;
+C 60 ; WX 675 ; N less ; B 84 -8 592 514 ;
+C 61 ; WX 675 ; N equal ; B 86 120 590 386 ;
+C 62 ; WX 675 ; N greater ; B 84 -8 592 514 ;
+C 63 ; WX 500 ; N question ; B 132 -12 472 664 ;
+C 64 ; WX 920 ; N at ; B 118 -18 806 666 ;
+C 65 ; WX 611 ; N A ; B -51 0 564 668 ;
+C 66 ; WX 611 ; N B ; B -8 0 588 653 ;
+C 67 ; WX 667 ; N C ; B 66 -18 689 666 ;
+C 68 ; WX 722 ; N D ; B -8 0 700 653 ;
+C 69 ; WX 611 ; N E ; B -1 0 634 653 ;
+C 70 ; WX 611 ; N F ; B 8 0 645 653 ;
+C 71 ; WX 722 ; N G ; B 52 -18 722 666 ;
+C 72 ; WX 722 ; N H ; B -8 0 767 653 ;
+C 73 ; WX 333 ; N I ; B -8 0 384 653 ;
+C 74 ; WX 444 ; N J ; B -6 -18 491 653 ;
+C 75 ; WX 667 ; N K ; B 7 0 722 653 ;
+C 76 ; WX 556 ; N L ; B -8 0 559 653 ;
+C 77 ; WX 833 ; N M ; B -18 0 873 653 ;
+C 78 ; WX 667 ; N N ; B -20 -15 727 653 ;
+C 79 ; WX 722 ; N O ; B 60 -18 699 666 ;
+C 80 ; WX 611 ; N P ; B 0 0 605 653 ;
+C 81 ; WX 722 ; N Q ; B 59 -182 699 666 ;
+C 82 ; WX 611 ; N R ; B -13 0 588 653 ;
+C 83 ; WX 500 ; N S ; B 17 -18 508 667 ;
+C 84 ; WX 556 ; N T ; B 59 0 633 653 ;
+C 85 ; WX 722 ; N U ; B 102 -18 765 653 ;
+C 86 ; WX 611 ; N V ; B 76 -18 688 653 ;
+C 87 ; WX 833 ; N W ; B 71 -18 906 653 ;
+C 88 ; WX 611 ; N X ; B -29 0 655 653 ;
+C 89 ; WX 556 ; N Y ; B 78 0 633 653 ;
+C 90 ; WX 556 ; N Z ; B -6 0 606 653 ;
+C 91 ; WX 389 ; N bracketleft ; B 21 -153 391 663 ;
+C 92 ; WX 278 ; N backslash ; B -41 -18 319 666 ;
+C 93 ; WX 389 ; N bracketright ; B 12 -153 382 663 ;
+C 94 ; WX 422 ; N asciicircum ; B 0 301 422 666 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 333 ; N quoteleft ; B 171 436 310 666 ;
+C 97 ; WX 500 ; N a ; B 17 -11 476 441 ;
+C 98 ; WX 500 ; N b ; B 23 -11 473 683 ;
+C 99 ; WX 444 ; N c ; B 30 -11 425 441 ;
+C 100 ; WX 500 ; N d ; B 15 -13 527 683 ;
+C 101 ; WX 444 ; N e ; B 31 -11 412 441 ;
+C 102 ; WX 278 ; N f ; B -147 -207 424 678 ; L i fi ; L l fl ;
+C 103 ; WX 500 ; N g ; B 8 -206 472 441 ;
+C 104 ; WX 500 ; N h ; B 19 -9 478 683 ;
+C 105 ; WX 278 ; N i ; B 49 -11 264 654 ;
+C 106 ; WX 278 ; N j ; B -124 -207 276 654 ;
+C 107 ; WX 444 ; N k ; B 14 -11 461 683 ;
+C 108 ; WX 278 ; N l ; B 41 -11 279 683 ;
+C 109 ; WX 722 ; N m ; B 12 -9 704 441 ;
+C 110 ; WX 500 ; N n ; B 14 -9 474 441 ;
+C 111 ; WX 500 ; N o ; B 27 -11 468 441 ;
+C 112 ; WX 500 ; N p ; B -75 -205 469 441 ;
+C 113 ; WX 500 ; N q ; B 25 -209 483 441 ;
+C 114 ; WX 389 ; N r ; B 45 0 412 441 ;
+C 115 ; WX 389 ; N s ; B 16 -13 366 442 ;
+C 116 ; WX 278 ; N t ; B 37 -11 296 546 ;
+C 117 ; WX 500 ; N u ; B 42 -11 475 441 ;
+C 118 ; WX 444 ; N v ; B 21 -18 426 441 ;
+C 119 ; WX 667 ; N w ; B 16 -18 648 441 ;
+C 120 ; WX 444 ; N x ; B -27 -11 447 441 ;
+C 121 ; WX 444 ; N y ; B -24 -206 426 441 ;
+C 122 ; WX 389 ; N z ; B -2 -81 380 428 ;
+C 123 ; WX 400 ; N braceleft ; B 51 -177 407 687 ;
+C 124 ; WX 275 ; N bar ; B 105 -18 171 666 ;
+C 125 ; WX 400 ; N braceright ; B -7 -177 349 687 ;
+C 126 ; WX 541 ; N asciitilde ; B 40 183 502 323 ;
+C 161 ; WX 389 ; N exclamdown ; B 59 -205 322 473 ;
+C 162 ; WX 500 ; N cent ; B 77 -143 472 560 ;
+C 163 ; WX 500 ; N sterling ; B 10 -6 517 670 ;
+C 164 ; WX 167 ; N fraction ; B -169 -10 337 676 ;
+C 165 ; WX 500 ; N yen ; B 27 0 603 653 ;
+C 166 ; WX 500 ; N florin ; B 25 -182 507 682 ;
+C 167 ; WX 500 ; N section ; B 53 -162 461 666 ;
+C 168 ; WX 500 ; N currency ; B -22 53 522 597 ;
+C 169 ; WX 214 ; N quotesingle ; B 132 421 241 666 ;
+C 170 ; WX 556 ; N quotedblleft ; B 166 436 514 666 ;
+C 171 ; WX 500 ; N guillemotleft ; B 53 37 445 403 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 51 37 281 403 ;
+C 173 ; WX 333 ; N guilsinglright ; B 52 37 282 403 ;
+C 174 ; WX 500 ; N fi ; B -141 -207 481 681 ;
+C 175 ; WX 500 ; N fl ; B -141 -204 518 682 ;
+C 177 ; WX 500 ; N endash ; B -6 197 505 243 ;
+C 178 ; WX 500 ; N dagger ; B 101 -159 488 666 ;
+C 179 ; WX 500 ; N daggerdbl ; B 22 -143 491 666 ;
+C 180 ; WX 250 ; N periodcentered ; B 70 199 181 310 ;
+C 182 ; WX 523 ; N paragraph ; B 55 -123 616 653 ;
+C 183 ; WX 350 ; N bullet ; B 40 191 310 461 ;
+C 184 ; WX 333 ; N quotesinglbase ; B 44 -129 183 101 ;
+C 185 ; WX 556 ; N quotedblbase ; B 57 -129 405 101 ;
+C 186 ; WX 556 ; N quotedblright ; B 151 436 499 666 ;
+C 187 ; WX 500 ; N guillemotright ; B 55 37 447 403 ;
+C 188 ; WX 889 ; N ellipsis ; B 57 -11 762 100 ;
+C 189 ; WX 1000 ; N perthousand ; B 25 -19 1010 706 ;
+C 191 ; WX 500 ; N questiondown ; B 28 -205 368 471 ;
+C 193 ; WX 333 ; N grave ; B 121 492 311 664 ;
+C 194 ; WX 333 ; N acute ; B 180 494 403 664 ;
+C 195 ; WX 333 ; N circumflex ; B 91 492 385 661 ;
+C 196 ; WX 333 ; N tilde ; B 100 517 427 624 ;
+C 197 ; WX 333 ; N macron ; B 99 532 411 583 ;
+C 198 ; WX 333 ; N breve ; B 117 492 418 650 ;
+C 199 ; WX 333 ; N dotaccent ; B 207 508 305 606 ;
+C 200 ; WX 333 ; N dieresis ; B 107 508 405 606 ;
+C 202 ; WX 333 ; N ring ; B 155 492 355 691 ;
+C 203 ; WX 333 ; N cedilla ; B -30 -217 182 0 ;
+C 205 ; WX 333 ; N hungarumlaut ; B 93 494 486 664 ;
+C 206 ; WX 333 ; N ogonek ; B -20 -169 200 40 ;
+C 207 ; WX 333 ; N caron ; B 121 492 426 661 ;
+C 208 ; WX 889 ; N emdash ; B 119 197 769 243 ;
+C 225 ; WX 889 ; N AE ; B -27 0 911 653 ;
+C 227 ; WX 276 ; N ordfeminine ; B 42 406 352 676 ;
+C 232 ; WX 556 ; N Lslash ; B -8 0 559 653 ;
+C 233 ; WX 722 ; N Oslash ; B 60 -105 699 722 ;
+C 234 ; WX 944 ; N OE ; B 49 -8 964 666 ;
+C 235 ; WX 310 ; N ordmasculine ; B 67 406 362 676 ;
+C 241 ; WX 667 ; N ae ; B 23 -11 640 441 ;
+C 245 ; WX 278 ; N dotlessi ; B 49 -11 235 441 ;
+C 248 ; WX 278 ; N lslash ; B 37 -11 307 683 ;
+C 249 ; WX 500 ; N oslash ; B 28 -135 469 554 ;
+C 250 ; WX 667 ; N oe ; B 20 -12 646 441 ;
+C 251 ; WX 500 ; N germandbls ; B -168 -207 493 679 ;
+C -1 ; WX 444 ; N ecircumflex ; B 31 -11 441 661 ;
+C -1 ; WX 444 ; N edieresis ; B 31 -11 451 606 ;
+C -1 ; WX 500 ; N aacute ; B 17 -11 487 664 ;
+C -1 ; WX 760 ; N registered ; B 41 -18 719 666 ;
+C -1 ; WX 278 ; N icircumflex ; B 34 -11 328 661 ;
+C -1 ; WX 500 ; N udieresis ; B 42 -11 479 606 ;
+C -1 ; WX 500 ; N ograve ; B 27 -11 468 664 ;
+C -1 ; WX 500 ; N uacute ; B 42 -11 477 664 ;
+C -1 ; WX 500 ; N ucircumflex ; B 42 -11 475 661 ;
+C -1 ; WX 611 ; N Aacute ; B -51 0 564 876 ;
+C -1 ; WX 278 ; N igrave ; B 49 -11 284 664 ;
+C -1 ; WX 333 ; N Icircumflex ; B -8 0 425 873 ;
+C -1 ; WX 444 ; N ccedilla ; B 26 -217 425 441 ;
+C -1 ; WX 500 ; N adieresis ; B 17 -11 489 606 ;
+C -1 ; WX 611 ; N Ecircumflex ; B -1 0 634 873 ;
+C -1 ; WX 389 ; N scaron ; B 16 -13 454 661 ;
+C -1 ; WX 500 ; N thorn ; B -75 -205 469 683 ;
+C -1 ; WX 980 ; N trademark ; B 30 247 957 653 ;
+C -1 ; WX 444 ; N egrave ; B 31 -11 412 664 ;
+C -1 ; WX 300 ; N threesuperior ; B 43 268 339 676 ;
+C -1 ; WX 389 ; N zcaron ; B -2 -81 434 661 ;
+C -1 ; WX 500 ; N atilde ; B 17 -11 511 624 ;
+C -1 ; WX 500 ; N aring ; B 17 -11 476 691 ;
+C -1 ; WX 500 ; N ocircumflex ; B 27 -11 468 661 ;
+C -1 ; WX 611 ; N Edieresis ; B -1 0 634 818 ;
+C -1 ; WX 750 ; N threequarters ; B 23 -10 736 676 ;
+C -1 ; WX 444 ; N ydieresis ; B -24 -206 441 606 ;
+C -1 ; WX 444 ; N yacute ; B -24 -206 459 664 ;
+C -1 ; WX 278 ; N iacute ; B 49 -11 356 664 ;
+C -1 ; WX 611 ; N Acircumflex ; B -51 0 564 873 ;
+C -1 ; WX 722 ; N Uacute ; B 102 -18 765 876 ;
+C -1 ; WX 444 ; N eacute ; B 31 -11 459 664 ;
+C -1 ; WX 722 ; N Ograve ; B 60 -18 699 876 ;
+C -1 ; WX 500 ; N agrave ; B 17 -11 476 664 ;
+C -1 ; WX 722 ; N Udieresis ; B 102 -18 765 818 ;
+C -1 ; WX 500 ; N acircumflex ; B 17 -11 476 661 ;
+C -1 ; WX 333 ; N Igrave ; B -8 0 384 876 ;
+C -1 ; WX 300 ; N twosuperior ; B 33 271 324 676 ;
+C -1 ; WX 722 ; N Ugrave ; B 102 -18 765 876 ;
+C -1 ; WX 750 ; N onequarter ; B 33 -10 736 676 ;
+C -1 ; WX 722 ; N Ucircumflex ; B 102 -18 765 873 ;
+C -1 ; WX 500 ; N Scaron ; B 17 -18 520 873 ;
+C -1 ; WX 333 ; N Idieresis ; B -8 0 435 818 ;
+C -1 ; WX 278 ; N idieresis ; B 49 -11 353 606 ;
+C -1 ; WX 611 ; N Egrave ; B -1 0 634 876 ;
+C -1 ; WX 722 ; N Oacute ; B 60 -18 699 876 ;
+C -1 ; WX 675 ; N divide ; B 86 -11 590 517 ;
+C -1 ; WX 611 ; N Atilde ; B -51 0 566 836 ;
+C -1 ; WX 611 ; N Aring ; B -51 0 564 883 ;
+C -1 ; WX 722 ; N Odieresis ; B 60 -18 699 818 ;
+C -1 ; WX 611 ; N Adieresis ; B -51 0 564 818 ;
+C -1 ; WX 667 ; N Ntilde ; B -20 -15 727 836 ;
+C -1 ; WX 556 ; N Zcaron ; B -6 0 606 873 ;
+C -1 ; WX 611 ; N Thorn ; B 0 0 569 653 ;
+C -1 ; WX 333 ; N Iacute ; B -8 0 413 876 ;
+C -1 ; WX 675 ; N plusminus ; B 86 0 590 506 ;
+C -1 ; WX 675 ; N multiply ; B 93 8 582 497 ;
+C -1 ; WX 611 ; N Eacute ; B -1 0 634 876 ;
+C -1 ; WX 556 ; N Ydieresis ; B 78 0 633 818 ;
+C -1 ; WX 300 ; N onesuperior ; B 43 271 284 676 ;
+C -1 ; WX 500 ; N ugrave ; B 42 -11 475 664 ;
+C -1 ; WX 675 ; N logicalnot ; B 86 108 590 386 ;
+C -1 ; WX 500 ; N ntilde ; B 14 -9 476 624 ;
+C -1 ; WX 722 ; N Otilde ; B 60 -18 699 836 ;
+C -1 ; WX 500 ; N otilde ; B 27 -11 496 624 ;
+C -1 ; WX 667 ; N Ccedilla ; B 66 -217 689 666 ;
+C -1 ; WX 611 ; N Agrave ; B -51 0 564 876 ;
+C -1 ; WX 750 ; N onehalf ; B 34 -10 749 676 ;
+C -1 ; WX 722 ; N Eth ; B -8 0 700 653 ;
+C -1 ; WX 400 ; N degree ; B 101 390 387 676 ;
+C -1 ; WX 556 ; N Yacute ; B 78 0 633 876 ;
+C -1 ; WX 722 ; N Ocircumflex ; B 60 -18 699 873 ;
+C -1 ; WX 500 ; N oacute ; B 27 -11 487 664 ;
+C -1 ; WX 500 ; N mu ; B -30 -209 497 428 ;
+C -1 ; WX 675 ; N minus ; B 86 220 590 286 ;
+C -1 ; WX 500 ; N eth ; B 27 -11 482 683 ;
+C -1 ; WX 500 ; N odieresis ; B 27 -11 489 606 ;
+C -1 ; WX 760 ; N copyright ; B 41 -18 719 666 ;
+C -1 ; WX 275 ; N brokenbar ; B 105 -18 171 666 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 182
+
+KPX A y -55
+KPX A w -55
+KPX A v -55
+KPX A u -20
+KPX A quoteright -37
+KPX A Y -55
+KPX A W -95
+KPX A V -105
+KPX A U -50
+KPX A T -37
+KPX A Q -40
+KPX A O -40
+KPX A G -35
+KPX A C -30
+
+KPX B U -10
+KPX B A -25
+
+KPX D Y -40
+KPX D W -40
+KPX D V -40
+KPX D A -35
+
+KPX F r -55
+KPX F period -135
+KPX F o -105
+KPX F i -45
+KPX F e -75
+KPX F comma -135
+KPX F a -75
+KPX F A -115
+
+KPX J u -35
+KPX J period -25
+KPX J o -25
+KPX J e -25
+KPX J comma -25
+KPX J a -35
+KPX J A -40
+
+KPX K y -40
+KPX K u -40
+KPX K o -40
+KPX K e -35
+KPX K O -50
+
+KPX L y -30
+KPX L quoteright -37
+KPX L Y -20
+KPX L W -55
+KPX L V -55
+KPX L T -20
+
+KPX N A -27
+
+KPX O Y -50
+KPX O X -40
+KPX O W -50
+KPX O V -50
+KPX O T -40
+KPX O A -55
+
+KPX P period -135
+KPX P o -80
+KPX P e -80
+KPX P comma -135
+KPX P a -80
+KPX P A -90
+
+KPX Q U -10
+
+KPX R Y -18
+KPX R W -18
+KPX R V -18
+KPX R U -40
+KPX R O -40
+
+KPX T y -74
+KPX T w -74
+KPX T u -55
+KPX T semicolon -65
+KPX T r -55
+KPX T period -74
+KPX T o -92
+KPX T i -55
+KPX T hyphen -74
+KPX T e -92
+KPX T comma -74
+KPX T colon -55
+KPX T a -92
+KPX T O -18
+KPX T A -50
+
+KPX U period -25
+KPX U comma -25
+KPX U A -40
+
+KPX V u -74
+KPX V semicolon -74
+KPX V period -129
+KPX V o -111
+KPX V i -74
+KPX V hyphen -55
+KPX V e -111
+KPX V comma -129
+KPX V colon -65
+KPX V a -111
+KPX V O -30
+KPX V A -60
+
+KPX W y -70
+KPX W u -55
+KPX W semicolon -65
+KPX W period -92
+KPX W o -92
+KPX W i -55
+KPX W hyphen -37
+KPX W e -92
+KPX W comma -92
+KPX W colon -65
+KPX W a -92
+KPX W O -25
+KPX W A -60
+
+KPX Y u -92
+KPX Y semicolon -65
+KPX Y period -92
+KPX Y o -92
+KPX Y i -74
+KPX Y hyphen -74
+KPX Y e -92
+KPX Y comma -92
+KPX Y colon -65
+KPX Y a -92
+KPX Y O -15
+KPX Y A -50
+
+KPX a g -10
+
+KPX b u -20
+KPX b period -40
+
+KPX c k -20
+KPX c h -15
+
+KPX comma quoteright -140
+KPX comma quotedblright -140
+
+KPX e y -30
+KPX e x -20
+KPX e w -15
+KPX e v -15
+KPX e period -15
+KPX e g -40
+KPX e comma -10
+
+KPX f quoteright 92
+KPX f period -15
+KPX f i -20
+KPX f f -18
+KPX f dotlessi -60
+KPX f comma -10
+
+KPX g period -15
+KPX g g -10
+KPX g e -10
+KPX g comma -10
+
+KPX k y -10
+KPX k o -10
+KPX k e -10
+
+KPX n v -40
+
+KPX o v -10
+KPX o g -10
+
+KPX period quoteright -140
+KPX period quotedblright -140
+
+KPX quoteleft quoteleft -111
+
+KPX quoteright v -10
+KPX quoteright t -30
+KPX quoteright space -111
+KPX quoteright s -40
+KPX quoteright r -25
+KPX quoteright quoteright -111
+KPX quoteright d -25
+
+KPX r s -10
+KPX r q -37
+KPX r period -111
+KPX r o -45
+KPX r hyphen -20
+KPX r g -37
+KPX r e -37
+KPX r d -37
+KPX r comma -111
+KPX r c -37
+KPX r a -15
+
+KPX space Y -75
+KPX space W -40
+KPX space V -35
+KPX space T -18
+KPX space A -18
+
+KPX v period -74
+KPX v comma -74
+
+KPX w period -74
+KPX w comma -74
+
+KPX y period -55
+KPX y comma -55
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 139 212 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 144 212 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 139 212 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 149 212 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 129 192 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 139 212 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 149 212 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 169 212 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 159 212 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 149 212 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 10 212 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 40 212 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 30 212 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 10 212 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 177 212 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 195 212 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 230 212 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 230 212 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 205 212 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 215 212 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 94 212 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 195 212 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 215 212 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 225 212 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 215 212 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 132 212 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 142 212 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 112 212 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 84 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 84 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 84 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 84 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 84 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 84 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 56 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 56 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 46 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 56 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -47 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -57 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -52 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -27 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 49 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 84 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 74 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 84 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 84 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 69 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 28 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 74 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 74 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 74 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 84 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 56 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 36 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 8 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/Ti-ItF+ b/font/font/Ti-ItF+
new file mode 100644
index 0000000..b234707
--- /dev/null
+++ b/font/font/Ti-ItF+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 667 ; N Ccaron ; B 66 -18 714 882 ;
+C -1 ; WX 444 ; N ccaron ; B 30 -11 501 661 ;
+C -1 ; WX 722 ; N Dcaron ; B -8 0 700 882 ;
+C -1 ; WX 597 ; N dcaron ; B 15 -13 680 751 ;
+C -1 ; WX 611 ; N Ecaron ; B -1 0 634 882 ;
+C -1 ; WX 444 ; N ecaron ; B 31 -11 481 661 ;
+C -1 ; WX 556 ; N Lcaron ; B -8 0 559 718 ;
+C -1 ; WX 556 ; N Lacute ; B -8 0 572 883 ;
+C -1 ; WX 375 ; N lcaron ; B 41 -11 432 751 ;
+C -1 ; WX 278 ; N lacute ; B 41 -11 456 883 ;
+C -1 ; WX 667 ; N Ncaron ; B -20 -15 727 882 ;
+C -1 ; WX 500 ; N ncaron ; B 14 -9 509 661 ;
+C -1 ; WX 611 ; N Rcaron ; B -13 0 624 882 ;
+C -1 ; WX 611 ; N Racute ; B -13 0 642 883 ;
+C -1 ; WX 389 ; N rcaron ; B 45 0 454 661 ;
+C -1 ; WX 389 ; N racute ; B 45 0 453 664 ;
+C -1 ; WX 556 ; N Tcaron ; B 59 0 633 882 ;
+C -1 ; WX 375 ; N tcaron ; B 37 -11 449 666 ;
+C -1 ; WX 722 ; N Uring ; B 102 -18 765 882 ;
+C -1 ; WX 500 ; N uring ; B 42 -11 475 691 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 288 221 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 75 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 253 221 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 390 85 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 198 221 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 55 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 247 52 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 169 219 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 142 85 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 53 219 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 226 221 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 83 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 198 221 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 239 219 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 28 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 50 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 170 221 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 159 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 245 191 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 83 0 ;
+EndBuildComposites
diff --git a/font/font/Ti-Rm b/font/font/Ti-Rm
new file mode 100644
index 0000000..e5092b5
--- /dev/null
+++ b/font/font/Ti-Rm
@@ -0,0 +1,648 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Tue Mar 20 12:15:44 1990
+Comment UniqueID 28416
+Comment VMusage 30487 37379
+FontName Times-Roman
+FullName Times Roman
+FamilyName Times
+Weight Roman
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -168 -218 1000 898
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.007
+Notice Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.Times is a trademark of Linotype AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 662
+XHeight 450
+Ascender 683
+Descender -217
+StartCharMetrics 228
+C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 333 ; N exclam ; B 130 -9 238 676 ;
+C 34 ; WX 408 ; N quotedbl ; B 77 431 331 676 ;
+C 35 ; WX 500 ; N numbersign ; B 5 0 496 662 ;
+C 36 ; WX 500 ; N dollar ; B 44 -87 457 727 ;
+C 37 ; WX 833 ; N percent ; B 61 -13 772 676 ;
+C 38 ; WX 778 ; N ampersand ; B 42 -13 750 676 ;
+C 39 ; WX 333 ; N quoteright ; B 79 433 218 676 ;
+C 40 ; WX 333 ; N parenleft ; B 48 -177 304 676 ;
+C 41 ; WX 333 ; N parenright ; B 29 -177 285 676 ;
+C 42 ; WX 500 ; N asterisk ; B 69 265 432 676 ;
+C 43 ; WX 564 ; N plus ; B 30 0 534 506 ;
+C 44 ; WX 250 ; N comma ; B 56 -141 195 102 ;
+C 45 ; WX 333 ; N hyphen ; B 39 194 285 257 ;
+C 46 ; WX 250 ; N period ; B 70 -11 181 100 ;
+C 47 ; WX 278 ; N slash ; B -9 -14 287 676 ;
+C 48 ; WX 500 ; N zero ; B 24 -14 476 676 ;
+C 49 ; WX 500 ; N one ; B 111 0 394 676 ;
+C 50 ; WX 500 ; N two ; B 30 0 475 676 ;
+C 51 ; WX 500 ; N three ; B 43 -14 431 676 ;
+C 52 ; WX 500 ; N four ; B 12 0 472 676 ;
+C 53 ; WX 500 ; N five ; B 32 -14 438 688 ;
+C 54 ; WX 500 ; N six ; B 34 -14 468 684 ;
+C 55 ; WX 500 ; N seven ; B 20 -8 449 662 ;
+C 56 ; WX 500 ; N eight ; B 56 -14 445 676 ;
+C 57 ; WX 500 ; N nine ; B 30 -22 459 676 ;
+C 58 ; WX 278 ; N colon ; B 81 -11 192 459 ;
+C 59 ; WX 278 ; N semicolon ; B 80 -141 219 459 ;
+C 60 ; WX 564 ; N less ; B 28 -8 536 514 ;
+C 61 ; WX 564 ; N equal ; B 30 120 534 386 ;
+C 62 ; WX 564 ; N greater ; B 28 -8 536 514 ;
+C 63 ; WX 444 ; N question ; B 68 -8 414 676 ;
+C 64 ; WX 921 ; N at ; B 116 -14 809 676 ;
+C 65 ; WX 722 ; N A ; B 15 0 706 674 ;
+C 66 ; WX 667 ; N B ; B 17 0 593 662 ;
+C 67 ; WX 667 ; N C ; B 28 -14 633 676 ;
+C 68 ; WX 722 ; N D ; B 16 0 685 662 ;
+C 69 ; WX 611 ; N E ; B 12 0 597 662 ;
+C 70 ; WX 556 ; N F ; B 12 0 546 662 ;
+C 71 ; WX 722 ; N G ; B 32 -14 709 676 ;
+C 72 ; WX 722 ; N H ; B 19 0 702 662 ;
+C 73 ; WX 333 ; N I ; B 18 0 315 662 ;
+C 74 ; WX 389 ; N J ; B 10 -14 370 662 ;
+C 75 ; WX 722 ; N K ; B 34 0 723 662 ;
+C 76 ; WX 611 ; N L ; B 12 0 598 662 ;
+C 77 ; WX 889 ; N M ; B 12 0 863 662 ;
+C 78 ; WX 722 ; N N ; B 12 -11 707 662 ;
+C 79 ; WX 722 ; N O ; B 34 -14 688 676 ;
+C 80 ; WX 556 ; N P ; B 16 0 542 662 ;
+C 81 ; WX 722 ; N Q ; B 34 -178 701 676 ;
+C 82 ; WX 667 ; N R ; B 17 0 659 662 ;
+C 83 ; WX 556 ; N S ; B 42 -14 491 676 ;
+C 84 ; WX 611 ; N T ; B 17 0 593 662 ;
+C 85 ; WX 722 ; N U ; B 14 -14 705 662 ;
+C 86 ; WX 722 ; N V ; B 16 -11 697 662 ;
+C 87 ; WX 944 ; N W ; B 5 -11 932 662 ;
+C 88 ; WX 722 ; N X ; B 10 0 704 662 ;
+C 89 ; WX 722 ; N Y ; B 22 0 703 662 ;
+C 90 ; WX 611 ; N Z ; B 9 0 597 662 ;
+C 91 ; WX 333 ; N bracketleft ; B 88 -156 299 662 ;
+C 92 ; WX 278 ; N backslash ; B -9 -14 287 676 ;
+C 93 ; WX 333 ; N bracketright ; B 34 -156 245 662 ;
+C 94 ; WX 469 ; N asciicircum ; B 24 297 446 662 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 333 ; N quoteleft ; B 115 433 254 676 ;
+C 97 ; WX 444 ; N a ; B 37 -10 442 460 ;
+C 98 ; WX 500 ; N b ; B 3 -10 468 683 ;
+C 99 ; WX 444 ; N c ; B 25 -10 412 460 ;
+C 100 ; WX 500 ; N d ; B 27 -10 491 683 ;
+C 101 ; WX 444 ; N e ; B 25 -10 424 460 ;
+C 102 ; WX 333 ; N f ; B 20 0 383 683 ; L i fi ; L l fl ;
+C 103 ; WX 500 ; N g ; B 28 -218 470 460 ;
+C 104 ; WX 500 ; N h ; B 9 0 487 683 ;
+C 105 ; WX 278 ; N i ; B 16 0 253 683 ;
+C 106 ; WX 278 ; N j ; B -70 -218 194 683 ;
+C 107 ; WX 500 ; N k ; B 7 0 505 683 ;
+C 108 ; WX 278 ; N l ; B 19 0 257 683 ;
+C 109 ; WX 778 ; N m ; B 16 0 775 460 ;
+C 110 ; WX 500 ; N n ; B 16 0 485 460 ;
+C 111 ; WX 500 ; N o ; B 29 -10 470 460 ;
+C 112 ; WX 500 ; N p ; B 5 -217 470 460 ;
+C 113 ; WX 500 ; N q ; B 24 -217 488 460 ;
+C 114 ; WX 333 ; N r ; B 5 0 335 460 ;
+C 115 ; WX 389 ; N s ; B 51 -10 348 460 ;
+C 116 ; WX 278 ; N t ; B 13 -10 279 579 ;
+C 117 ; WX 500 ; N u ; B 9 -10 479 450 ;
+C 118 ; WX 500 ; N v ; B 19 -14 477 450 ;
+C 119 ; WX 722 ; N w ; B 21 -14 694 450 ;
+C 120 ; WX 500 ; N x ; B 17 0 479 450 ;
+C 121 ; WX 500 ; N y ; B 14 -218 475 450 ;
+C 122 ; WX 444 ; N z ; B 27 0 418 450 ;
+C 123 ; WX 480 ; N braceleft ; B 100 -181 350 680 ;
+C 124 ; WX 200 ; N bar ; B 67 -14 133 676 ;
+C 125 ; WX 480 ; N braceright ; B 130 -181 380 680 ;
+C 126 ; WX 541 ; N asciitilde ; B 40 183 502 323 ;
+C 161 ; WX 333 ; N exclamdown ; B 97 -218 205 467 ;
+C 162 ; WX 500 ; N cent ; B 53 -138 448 579 ;
+C 163 ; WX 500 ; N sterling ; B 12 -8 490 676 ;
+C 164 ; WX 167 ; N fraction ; B -168 -14 331 676 ;
+C 165 ; WX 500 ; N yen ; B -53 0 512 662 ;
+C 166 ; WX 500 ; N florin ; B 7 -189 490 676 ;
+C 167 ; WX 500 ; N section ; B 70 -148 426 676 ;
+C 168 ; WX 500 ; N currency ; B -22 58 522 602 ;
+C 169 ; WX 180 ; N quotesingle ; B 48 431 133 676 ;
+C 170 ; WX 444 ; N quotedblleft ; B 43 433 414 676 ;
+C 171 ; WX 500 ; N guillemotleft ; B 42 33 456 416 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 63 33 285 416 ;
+C 173 ; WX 333 ; N guilsinglright ; B 48 33 270 416 ;
+C 174 ; WX 556 ; N fi ; B 31 0 521 683 ;
+C 175 ; WX 556 ; N fl ; B 32 0 521 683 ;
+C 177 ; WX 500 ; N endash ; B 0 201 500 250 ;
+C 178 ; WX 500 ; N dagger ; B 59 -149 442 676 ;
+C 179 ; WX 500 ; N daggerdbl ; B 58 -153 442 676 ;
+C 180 ; WX 250 ; N periodcentered ; B 70 199 181 310 ;
+C 182 ; WX 453 ; N paragraph ; B -22 -154 450 662 ;
+C 183 ; WX 350 ; N bullet ; B 40 196 310 466 ;
+C 184 ; WX 333 ; N quotesinglbase ; B 79 -141 218 102 ;
+C 185 ; WX 444 ; N quotedblbase ; B 45 -141 416 102 ;
+C 186 ; WX 444 ; N quotedblright ; B 30 433 401 676 ;
+C 187 ; WX 500 ; N guillemotright ; B 44 33 458 416 ;
+C 188 ; WX 1000 ; N ellipsis ; B 111 -11 888 100 ;
+C 189 ; WX 1000 ; N perthousand ; B 7 -19 994 706 ;
+C 191 ; WX 444 ; N questiondown ; B 30 -218 376 466 ;
+C 193 ; WX 333 ; N grave ; B 19 507 242 678 ;
+C 194 ; WX 333 ; N acute ; B 93 507 317 678 ;
+C 195 ; WX 333 ; N circumflex ; B 11 507 322 674 ;
+C 196 ; WX 333 ; N tilde ; B 1 532 331 638 ;
+C 197 ; WX 333 ; N macron ; B 11 547 322 601 ;
+C 198 ; WX 333 ; N breve ; B 26 507 307 664 ;
+C 199 ; WX 333 ; N dotaccent ; B 118 523 216 623 ;
+C 200 ; WX 333 ; N dieresis ; B 18 523 315 623 ;
+C 202 ; WX 333 ; N ring ; B 67 512 266 711 ;
+C 203 ; WX 333 ; N cedilla ; B 52 -215 261 0 ;
+C 205 ; WX 333 ; N hungarumlaut ; B -3 507 377 678 ;
+C 206 ; WX 333 ; N ogonek ; B 64 -165 249 0 ;
+C 207 ; WX 333 ; N caron ; B 11 507 322 674 ;
+C 208 ; WX 1000 ; N emdash ; B 0 201 1000 250 ;
+C 225 ; WX 889 ; N AE ; B 0 0 863 662 ;
+C 227 ; WX 276 ; N ordfeminine ; B 4 394 270 676 ;
+C 232 ; WX 611 ; N Lslash ; B 12 0 598 662 ;
+C 233 ; WX 722 ; N Oslash ; B 34 -80 688 734 ;
+C 234 ; WX 889 ; N OE ; B 30 -6 885 668 ;
+C 235 ; WX 310 ; N ordmasculine ; B 6 394 304 676 ;
+C 241 ; WX 667 ; N ae ; B 38 -10 632 460 ;
+C 245 ; WX 278 ; N dotlessi ; B 16 0 253 460 ;
+C 248 ; WX 278 ; N lslash ; B 19 0 259 683 ;
+C 249 ; WX 500 ; N oslash ; B 29 -112 470 551 ;
+C 250 ; WX 722 ; N oe ; B 30 -10 690 460 ;
+C 251 ; WX 500 ; N germandbls ; B 12 -9 468 683 ;
+C -1 ; WX 611 ; N Zcaron ; B 9 0 597 886 ;
+C -1 ; WX 444 ; N ccedilla ; B 25 -215 412 460 ;
+C -1 ; WX 500 ; N ydieresis ; B 14 -218 475 623 ;
+C -1 ; WX 444 ; N atilde ; B 37 -10 442 638 ;
+C -1 ; WX 278 ; N icircumflex ; B -16 0 295 674 ;
+C -1 ; WX 300 ; N threesuperior ; B 15 262 291 676 ;
+C -1 ; WX 444 ; N ecircumflex ; B 25 -10 424 674 ;
+C -1 ; WX 500 ; N thorn ; B 5 -217 470 683 ;
+C -1 ; WX 444 ; N egrave ; B 25 -10 424 678 ;
+C -1 ; WX 300 ; N twosuperior ; B 1 270 296 676 ;
+C -1 ; WX 444 ; N eacute ; B 25 -10 424 678 ;
+C -1 ; WX 500 ; N otilde ; B 29 -10 470 638 ;
+C -1 ; WX 722 ; N Aacute ; B 15 0 706 890 ;
+C -1 ; WX 500 ; N ocircumflex ; B 29 -10 470 674 ;
+C -1 ; WX 500 ; N yacute ; B 14 -218 475 678 ;
+C -1 ; WX 500 ; N udieresis ; B 9 -10 479 623 ;
+C -1 ; WX 750 ; N threequarters ; B 15 -14 718 676 ;
+C -1 ; WX 444 ; N acircumflex ; B 37 -10 442 674 ;
+C -1 ; WX 722 ; N Eth ; B 16 0 685 662 ;
+C -1 ; WX 444 ; N edieresis ; B 25 -10 424 623 ;
+C -1 ; WX 500 ; N ugrave ; B 9 -10 479 678 ;
+C -1 ; WX 980 ; N trademark ; B 30 256 957 662 ;
+C -1 ; WX 500 ; N ograve ; B 29 -10 470 678 ;
+C -1 ; WX 389 ; N scaron ; B 39 -10 350 674 ;
+C -1 ; WX 333 ; N Idieresis ; B 18 0 315 835 ;
+C -1 ; WX 500 ; N uacute ; B 9 -10 479 678 ;
+C -1 ; WX 444 ; N agrave ; B 37 -10 442 678 ;
+C -1 ; WX 500 ; N ntilde ; B 16 0 485 638 ;
+C -1 ; WX 444 ; N aring ; B 37 -10 442 711 ;
+C -1 ; WX 444 ; N zcaron ; B 27 0 418 674 ;
+C -1 ; WX 333 ; N Icircumflex ; B 11 0 322 886 ;
+C -1 ; WX 722 ; N Ntilde ; B 12 -11 707 850 ;
+C -1 ; WX 500 ; N ucircumflex ; B 9 -10 479 674 ;
+C -1 ; WX 611 ; N Ecircumflex ; B 12 0 597 886 ;
+C -1 ; WX 333 ; N Iacute ; B 18 0 317 890 ;
+C -1 ; WX 667 ; N Ccedilla ; B 28 -215 633 676 ;
+C -1 ; WX 722 ; N Odieresis ; B 34 -14 688 835 ;
+C -1 ; WX 556 ; N Scaron ; B 42 -14 491 886 ;
+C -1 ; WX 611 ; N Edieresis ; B 12 0 597 835 ;
+C -1 ; WX 333 ; N Igrave ; B 18 0 315 890 ;
+C -1 ; WX 444 ; N adieresis ; B 37 -10 442 623 ;
+C -1 ; WX 722 ; N Ograve ; B 34 -14 688 890 ;
+C -1 ; WX 611 ; N Egrave ; B 12 0 597 890 ;
+C -1 ; WX 722 ; N Ydieresis ; B 22 0 703 835 ;
+C -1 ; WX 760 ; N registered ; B 38 -14 722 676 ;
+C -1 ; WX 722 ; N Otilde ; B 34 -14 688 850 ;
+C -1 ; WX 750 ; N onequarter ; B 37 -14 718 676 ;
+C -1 ; WX 722 ; N Ugrave ; B 14 -14 705 890 ;
+C -1 ; WX 722 ; N Ucircumflex ; B 14 -14 705 886 ;
+C -1 ; WX 556 ; N Thorn ; B 16 0 542 662 ;
+C -1 ; WX 564 ; N divide ; B 30 -10 534 516 ;
+C -1 ; WX 722 ; N Atilde ; B 15 0 706 850 ;
+C -1 ; WX 722 ; N Uacute ; B 14 -14 705 890 ;
+C -1 ; WX 722 ; N Ocircumflex ; B 34 -14 688 886 ;
+C -1 ; WX 564 ; N logicalnot ; B 30 108 534 386 ;
+C -1 ; WX 722 ; N Aring ; B 15 0 706 898 ;
+C -1 ; WX 278 ; N idieresis ; B -9 0 288 623 ;
+C -1 ; WX 278 ; N iacute ; B 16 0 290 678 ;
+C -1 ; WX 444 ; N aacute ; B 37 -10 442 678 ;
+C -1 ; WX 564 ; N plusminus ; B 30 0 534 506 ;
+C -1 ; WX 564 ; N multiply ; B 38 8 527 497 ;
+C -1 ; WX 722 ; N Udieresis ; B 14 -14 705 835 ;
+C -1 ; WX 564 ; N minus ; B 30 220 534 286 ;
+C -1 ; WX 300 ; N onesuperior ; B 57 270 248 676 ;
+C -1 ; WX 611 ; N Eacute ; B 12 0 597 890 ;
+C -1 ; WX 722 ; N Acircumflex ; B 15 0 706 886 ;
+C -1 ; WX 760 ; N copyright ; B 38 -14 722 676 ;
+C -1 ; WX 722 ; N Agrave ; B 15 0 706 890 ;
+C -1 ; WX 500 ; N odieresis ; B 29 -10 470 623 ;
+C -1 ; WX 500 ; N oacute ; B 29 -10 470 678 ;
+C -1 ; WX 400 ; N degree ; B 57 390 343 676 ;
+C -1 ; WX 278 ; N igrave ; B -8 0 253 678 ;
+C -1 ; WX 500 ; N mu ; B 36 -218 512 450 ;
+C -1 ; WX 722 ; N Oacute ; B 34 -14 688 890 ;
+C -1 ; WX 500 ; N eth ; B 29 -10 471 686 ;
+C -1 ; WX 722 ; N Adieresis ; B 15 0 706 835 ;
+C -1 ; WX 722 ; N Yacute ; B 22 0 703 890 ;
+C -1 ; WX 200 ; N brokenbar ; B 67 -14 133 676 ;
+C -1 ; WX 750 ; N onehalf ; B 31 -14 746 676 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 283
+
+KPX A y -92
+KPX A w -92
+KPX A v -74
+KPX A u 0
+KPX A quoteright -111
+KPX A quotedblright 0
+KPX A p 0
+KPX A Y -105
+KPX A W -90
+KPX A V -135
+KPX A U -55
+KPX A T -111
+KPX A Q -55
+KPX A O -55
+KPX A G -40
+KPX A C -40
+
+KPX B period 0
+KPX B comma 0
+KPX B U -10
+KPX B A -35
+
+KPX D period 0
+KPX D comma 0
+KPX D Y -55
+KPX D W -30
+KPX D V -40
+KPX D A -40
+
+KPX F r 0
+KPX F period -80
+KPX F o -15
+KPX F i 0
+KPX F e 0
+KPX F comma -80
+KPX F a -15
+KPX F A -74
+
+KPX G period 0
+KPX G comma 0
+
+KPX J u 0
+KPX J period 0
+KPX J o 0
+KPX J e 0
+KPX J comma 0
+KPX J a 0
+KPX J A -60
+
+KPX K y -25
+KPX K u -15
+KPX K o -35
+KPX K e -25
+KPX K O -30
+
+KPX L y -55
+KPX L quoteright -92
+KPX L quotedblright 0
+KPX L Y -100
+KPX L W -74
+KPX L V -100
+KPX L T -92
+
+KPX N period 0
+KPX N comma 0
+KPX N A -35
+
+KPX O period 0
+KPX O comma 0
+KPX O Y -50
+KPX O X -40
+KPX O W -35
+KPX O V -50
+KPX O T -40
+KPX O A -35
+
+KPX P period -111
+KPX P o 0
+KPX P e 0
+KPX P comma -111
+KPX P a -15
+KPX P A -92
+
+KPX Q period 0
+KPX Q comma 0
+KPX Q U -10
+
+KPX R Y -65
+KPX R W -55
+KPX R V -80
+KPX R U -40
+KPX R T -60
+KPX R O -40
+
+KPX S period 0
+KPX S comma 0
+
+KPX T y -80
+KPX T w -80
+KPX T u -45
+KPX T semicolon -55
+KPX T r -35
+KPX T period -74
+KPX T o -80
+KPX T i -35
+KPX T hyphen -92
+KPX T h 0
+KPX T e -70
+KPX T comma -74
+KPX T colon -50
+KPX T a -80
+KPX T O -18
+KPX T A -93
+
+KPX U period 0
+KPX U comma 0
+KPX U A -40
+
+KPX V u -75
+KPX V semicolon -74
+KPX V period -129
+KPX V o -129
+KPX V i -60
+KPX V hyphen -100
+KPX V e -111
+KPX V comma -129
+KPX V colon -74
+KPX V a -111
+KPX V O -40
+KPX V G -15
+KPX V A -135
+
+KPX W y -73
+KPX W u -50
+KPX W semicolon -37
+KPX W period -92
+KPX W o -80
+KPX W i -40
+KPX W hyphen -65
+KPX W h 0
+KPX W e -80
+KPX W comma -92
+KPX W colon -37
+KPX W a -80
+KPX W O -10
+KPX W A -120
+
+KPX Y u -111
+KPX Y semicolon -92
+KPX Y period -129
+KPX Y o -110
+KPX Y i -55
+KPX Y hyphen -111
+KPX Y e -100
+KPX Y comma -129
+KPX Y colon -92
+KPX Y a -100
+KPX Y O -30
+KPX Y A -120
+
+KPX a y 0
+KPX a w -15
+KPX a v -20
+KPX a t 0
+KPX a p 0
+KPX a g 0
+KPX a b 0
+
+KPX b y 0
+KPX b v -15
+KPX b u -20
+KPX b period -40
+KPX b l 0
+KPX b comma 0
+KPX b b 0
+
+KPX c y -15
+KPX c period 0
+KPX c l 0
+KPX c k 0
+KPX c h 0
+KPX c comma 0
+
+KPX colon space 0
+
+KPX comma space 0
+KPX comma quoteright -70
+KPX comma quotedblright -70
+
+KPX d y 0
+KPX d w 0
+KPX d v 0
+KPX d period 0
+KPX d d 0
+KPX d comma 0
+
+KPX e y -15
+KPX e x -15
+KPX e w -25
+KPX e v -25
+KPX e period 0
+KPX e p 0
+KPX e g -15
+KPX e comma 0
+KPX e b 0
+
+KPX f quoteright 55
+KPX f quotedblright 0
+KPX f period 0
+KPX f o 0
+KPX f l 0
+KPX f i -20
+KPX f f -25
+KPX f e 0
+KPX f dotlessi -50
+KPX f comma 0
+KPX f a -10
+
+KPX g y 0
+KPX g r 0
+KPX g period 0
+KPX g o 0
+KPX g i 0
+KPX g g 0
+KPX g e 0
+KPX g comma 0
+KPX g a -5
+
+KPX h y -5
+
+KPX i v -25
+
+KPX k y -15
+KPX k o -10
+KPX k e -10
+
+KPX l y 0
+KPX l w -10
+
+KPX m y 0
+KPX m u 0
+
+KPX n y -15
+KPX n v -40
+KPX n u 0
+
+KPX o y -10
+KPX o x 0
+KPX o w -25
+KPX o v -15
+KPX o g 0
+
+KPX p y -10
+
+KPX period quoteright -70
+KPX period quotedblright -70
+
+KPX quotedblleft quoteleft 0
+KPX quotedblleft A -80
+
+KPX quotedblright space 0
+
+KPX quoteleft quoteleft -74
+KPX quoteleft A -80
+
+KPX quoteright v -50
+KPX quoteright t -18
+KPX quoteright space -74
+KPX quoteright s -55
+KPX quoteright r -50
+KPX quoteright quoteright -74
+KPX quoteright quotedblright 0
+KPX quoteright l -10
+KPX quoteright d -50
+
+KPX r y 0
+KPX r v 0
+KPX r u 0
+KPX r t 0
+KPX r s 0
+KPX r r 0
+KPX r q 0
+KPX r period -55
+KPX r p 0
+KPX r o 0
+KPX r n 0
+KPX r m 0
+KPX r l 0
+KPX r k 0
+KPX r i 0
+KPX r hyphen -20
+KPX r g -18
+KPX r e 0
+KPX r d 0
+KPX r comma -40
+KPX r c 0
+KPX r a 0
+
+KPX s w 0
+
+KPX space quoteleft 0
+KPX space quotedblleft 0
+KPX space Y -90
+KPX space W -30
+KPX space V -50
+KPX space T -18
+KPX space A -55
+
+KPX v period -65
+KPX v o -20
+KPX v e -15
+KPX v comma -65
+KPX v a -25
+
+KPX w period -65
+KPX w o -10
+KPX w h 0
+KPX w e 0
+KPX w comma -65
+KPX w a -10
+
+KPX x e -15
+
+KPX y period -65
+KPX y o 0
+KPX y e 0
+KPX y comma -65
+KPX y a 0
+
+KPX z o 0
+KPX z e 0
+EndKernPairs
+EndKernData
+StartComposites 58
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 195 212 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 195 212 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 195 212 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 195 212 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 185 187 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 195 212 ;
+CC Ccedilla 2 ; PCC C 0 0 ; PCC cedilla 167 0 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 139 212 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 139 212 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 139 212 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 139 212 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 0 212 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 0 212 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 0 212 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 0 212 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 195 212 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 195 212 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 195 212 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 195 212 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 195 212 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 195 212 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 112 212 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 195 212 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 195 212 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 195 212 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 195 212 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 195 212 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 195 212 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 139 212 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 56 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 56 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 56 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 56 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 56 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 56 0 ;
+CC ccedilla 2 ; PCC c 0 0 ; PCC cedilla 56 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 56 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 56 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 56 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 56 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -27 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -27 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -27 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -27 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 84 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 84 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 84 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 84 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 84 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 84 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 28 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 84 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 84 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 84 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 84 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 84 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 84 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 56 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/Ti-Rm+ b/font/font/Ti-Rm+
new file mode 100644
index 0000000..241d3ec
--- /dev/null
+++ b/font/font/Ti-Rm+
@@ -0,0 +1,74 @@
+StartExtraCharMetrics
+C -1 ; WX 722 ; N Aogonek ; B 15 0 706 674 ;
+C -1 ; WX 444 ; N aogonek ; B 37 -10 442 460 ;
+C -1 ; WX 611 ; N Eogonek ; B 12 0 597 662 ;
+C -1 ; WX 444 ; N eogonek ; B 25 -10 424 460 ;
+C -1 ; WX 667 ; N Ccaron ; B 28 -14 633 890 ;
+C -1 ; WX 444 ; N ccaron ; B 25 -10 412 674 ;
+C -1 ; WX 667 ; N Cacute ; B 28 -14 633 890 ;
+C -1 ; WX 444 ; N cacute ; B 25 -10 412 674 ;
+C -1 ; WX 722 ; N Dcaron ; B 16 0 685 890 ;
+C -1 ; WX 597 ; N dcaron ; B 27 -10 644 751 ;
+C -1 ; WX 611 ; N Ecaron ; B 12 0 597 890 ;
+C -1 ; WX 444 ; N ecaron ; B 25 -10 424 674 ;
+C -1 ; WX 611 ; N Lcaron ; B 12 0 598 728 ;
+C -1 ; WX 611 ; N Lacute ; B 12 0 598 894 ;
+C -1 ; WX 375 ; N lcaron ; B 19 0 410 751 ;
+C -1 ; WX 278 ; N lacute ; B 19 0 312 894 ;
+C -1 ; WX 722 ; N Ncaron ; B 12 -11 707 890 ;
+C -1 ; WX 500 ; N ncaron ; B 16 0 430 674 ;
+C -1 ; WX 722 ; N Ncacute ; B 12 -11 707 890 ;
+C -1 ; WX 500 ; N ncacute ; B 16 0 485 674 ;
+C -1 ; WX 667 ; N Rcaron ; B 17 0 659 890 ;
+C -1 ; WX 667 ; N Racute ; B 17 0 659 894 ;
+C -1 ; WX 333 ; N rcaron ; B 5 0 335 674 ;
+C -1 ; WX 333 ; N racute ; B 5 0 339 678 ;
+C -1 ; WX 556 ; N Sacute ; B 42 -14 491 676 ;
+C -1 ; WX 389 ; N sacute ; B 51 -10 348 460 ;
+C -1 ; WX 611 ; N Tcaron ; B 17 0 593 890 ;
+C -1 ; WX 375 ; N tcaron ; B 13 -10 432 676 ;
+C -1 ; WX 722 ; N Uring ; B 14 -14 705 890 ;
+C -1 ; WX 500 ; N uring ; B 9 -10 479 711 ;
+C -1 ; WX 611 ; N Zacute ; B 9 0 597 662 ;
+C -1 ; WX 444 ; N zacute ; B 27 0 418 450 ;
+C -1 ; WX 611 ; N Zdotaccent ; B 9 0 597 662 ;
+C -1 ; WX 444 ; N zdotaccent ; B 27 0 418 450 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Aogonek 2 ; PCC A 0 0 ; PCC ogonek 300 0 ;
+CC aogonek 2 ; PCC a 0 0 ; PCC ogonek 155 0 ;
+CC Eogonek 2 ; PCC E 0 0 ; PCC ogonek 250 0 ;
+CC eogonek 2 ; PCC e 0 0 ; PCC ogonek 105 0 ;
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 228 216 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 74 0 ;
+CC Cacute 2 ; PCC C 0 0 ; PCC acute 228 216 ;
+CC cacute 2 ; PCC c 0 0 ; PCC acute 74 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 194 216 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 426 75 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 139 216 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 55 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 250 52 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 192 75 ;
+CC Lslash 2 ; PCC L 0 0 ; PCC acute -80 -220;
+CC lslash 2 ; PCC l 0 0 ; PCC acute -80 -220 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 139 216 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute -5 216 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 194 216 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 83 0 ;
+CC Nacute 2 ; PCC N 0 0 ; PCC acute 194 216 ;
+CC nacute 2 ; PCC n 0 0 ; PCC acute 83 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 167 216 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 210 216 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 0 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 22 0 ;
+CC Sacute 2 ; PCC S 0 0 ; PCC acute 194 216 ;
+CC sacute 2 ; PCC s 0 0 ; PCC acute 83 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 139 216 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 214 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 194 179 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 83 0 ;
+CC Zacute 2 ; PCC Z 0 0 ; PCC acute 194 216 ;
+CC zacute 2 ; PCC z 0 0 ; PCC acute 83 0 ;
+CC Zdotaccent 2 ; PCC Z 0 0 ; PCC dotaccent 194 216 ;
+CC zdotaccent 2 ; PCC z 0 0 ; PCC dotaccent 83 0;
+EndBuildComposites
diff --git a/font/font/Ti-RmSC b/font/font/Ti-RmSC
new file mode 100644
index 0000000..78bcf48
--- /dev/null
+++ b/font/font/Ti-RmSC
@@ -0,0 +1,550 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Tue Dec 4 11:14:47 1990
+Comment UniqueID 33647
+Comment VMusage 29411 36303
+FontName Times-RomanSC
+FullName Times Roman Small Caps & Old Style Figures
+FamilyName Times
+Weight Roman
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -168 -218 994 898
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.000
+Notice Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.Times is a trademark of Linotype AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 662
+XHeight 486
+Ascender 486
+Descender 0
+StartCharMetrics 228
+C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 333 ; N exclam ; B 130 -9 238 676 ;
+C 34 ; WX 408 ; N quotedbl ; B 77 431 331 676 ;
+C 35 ; WX 500 ; N numbersign ; B 5 0 496 662 ;
+C 36 ; WX 500 ; N dollar ; B 44 -87 457 727 ;
+C 37 ; WX 833 ; N percent ; B 61 -13 772 676 ;
+C 38 ; WX 778 ; N ampersand ; B 42 -13 750 676 ;
+C 39 ; WX 333 ; N quoteright ; B 79 433 218 676 ;
+C 40 ; WX 333 ; N parenleft ; B 48 -177 304 676 ;
+C 41 ; WX 333 ; N parenright ; B 29 -177 285 676 ;
+C 42 ; WX 500 ; N asterisk ; B 69 265 432 676 ;
+C 43 ; WX 564 ; N plus ; B 30 0 534 506 ;
+C 44 ; WX 250 ; N comma ; B 56 -141 195 102 ;
+C 45 ; WX 333 ; N hyphen ; B 39 194 285 257 ;
+C 46 ; WX 250 ; N period ; B 70 -11 181 100 ;
+C 47 ; WX 278 ; N slash ; B -9 -14 287 676 ;
+C 48 ; WX 500 ; N zero ; B 20 -8 474 494 ;
+C 49 ; WX 500 ; N one ; B 111 0 382 486 ;
+C 50 ; WX 500 ; N two ; B 39 0 442 494 ;
+C 51 ; WX 500 ; N three ; B 45 -188 432 494 ;
+C 52 ; WX 500 ; N four ; B 14 -177 475 505 ;
+C 53 ; WX 500 ; N five ; B 34 -188 442 510 ;
+C 54 ; WX 500 ; N six ; B 38 -8 466 684 ;
+C 55 ; WX 500 ; N seven ; B 18 -187 454 486 ;
+C 56 ; WX 500 ; N eight ; B 52 -8 438 674 ;
+C 57 ; WX 500 ; N nine ; B 28 -198 454 494 ;
+C 58 ; WX 278 ; N colon ; B 81 -11 192 459 ;
+C 59 ; WX 278 ; N semicolon ; B 80 -141 219 459 ;
+C 60 ; WX 564 ; N less ; B 28 -8 536 514 ;
+C 61 ; WX 564 ; N equal ; B 30 120 534 386 ;
+C 62 ; WX 564 ; N greater ; B 28 -8 536 514 ;
+C 63 ; WX 444 ; N question ; B 68 -8 414 676 ;
+C 64 ; WX 921 ; N at ; B 116 -14 809 676 ;
+C 65 ; WX 722 ; N A ; B 15 0 706 674 ;
+C 66 ; WX 667 ; N B ; B 17 0 593 662 ;
+C 67 ; WX 667 ; N C ; B 28 -14 633 676 ;
+C 68 ; WX 722 ; N D ; B 16 0 685 662 ;
+C 69 ; WX 611 ; N E ; B 12 0 597 662 ;
+C 70 ; WX 556 ; N F ; B 12 0 546 662 ;
+C 71 ; WX 722 ; N G ; B 32 -14 709 676 ;
+C 72 ; WX 722 ; N H ; B 19 0 702 662 ;
+C 73 ; WX 333 ; N I ; B 18 0 315 662 ;
+C 74 ; WX 389 ; N J ; B 10 -14 370 662 ;
+C 75 ; WX 722 ; N K ; B 34 0 723 662 ;
+C 76 ; WX 611 ; N L ; B 12 0 598 662 ;
+C 77 ; WX 889 ; N M ; B 12 0 863 662 ;
+C 78 ; WX 722 ; N N ; B 12 -11 707 662 ;
+C 79 ; WX 722 ; N O ; B 34 -14 688 676 ;
+C 80 ; WX 556 ; N P ; B 16 0 542 662 ;
+C 81 ; WX 722 ; N Q ; B 34 -178 701 676 ;
+C 82 ; WX 667 ; N R ; B 17 0 659 662 ;
+C 83 ; WX 556 ; N S ; B 42 -14 491 676 ;
+C 84 ; WX 611 ; N T ; B 17 0 593 662 ;
+C 85 ; WX 722 ; N U ; B 14 -14 705 662 ;
+C 86 ; WX 722 ; N V ; B 16 -11 697 662 ;
+C 87 ; WX 944 ; N W ; B 5 -11 932 662 ;
+C 88 ; WX 722 ; N X ; B 10 0 704 662 ;
+C 89 ; WX 722 ; N Y ; B 22 0 703 662 ;
+C 90 ; WX 611 ; N Z ; B 9 0 597 662 ;
+C 91 ; WX 333 ; N bracketleft ; B 88 -156 299 662 ;
+C 92 ; WX 278 ; N backslash ; B -9 -14 287 676 ;
+C 93 ; WX 333 ; N bracketright ; B 34 -156 245 662 ;
+C 94 ; WX 469 ; N asciicircum ; B 24 297 446 662 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 333 ; N quoteleft ; B 115 433 254 676 ;
+C 97 ; WX 556 ; N a ; B 24 0 526 494 ;
+C 98 ; WX 500 ; N b ; B 24 0 458 486 ;
+C 99 ; WX 500 ; N c ; B 18 -8 477 494 ;
+C 100 ; WX 556 ; N d ; B 20 0 536 486 ;
+C 101 ; WX 500 ; N e ; B 22 0 468 486 ;
+C 102 ; WX 444 ; N f ; B 23 0 438 486 ; L i fi ; L l fl ;
+C 103 ; WX 556 ; N g ; B 20 -8 537 494 ;
+C 104 ; WX 611 ; N h ; B 24 0 576 486 ;
+C 105 ; WX 278 ; N i ; B 14 0 252 486 ;
+C 106 ; WX 333 ; N j ; B 8 -8 300 486 ;
+C 107 ; WX 556 ; N k ; B 22 0 548 486 ;
+C 108 ; WX 500 ; N l ; B 22 0 474 486 ;
+C 109 ; WX 667 ; N m ; B 14 0 648 486 ;
+C 110 ; WX 611 ; N n ; B 23 0 579 486 ;
+C 111 ; WX 556 ; N o ; B 22 -8 522 494 ;
+C 112 ; WX 444 ; N p ; B 14 0 436 486 ;
+C 113 ; WX 556 ; N q ; B 22 -124 523 494 ;
+C 114 ; WX 500 ; N r ; B 14 0 493 486 ;
+C 115 ; WX 389 ; N s ; B 27 -8 354 494 ;
+C 116 ; WX 500 ; N t ; B 26 0 468 486 ;
+C 117 ; WX 611 ; N u ; B 21 -8 581 486 ;
+C 118 ; WX 556 ; N v ; B 26 -8 524 486 ;
+C 119 ; WX 778 ; N w ; B 0 -8 770 486 ;
+C 120 ; WX 556 ; N x ; B 26 0 526 486 ;
+C 121 ; WX 556 ; N y ; B 24 0 528 486 ;
+C 122 ; WX 556 ; N z ; B 24 0 522 486 ;
+C 123 ; WX 480 ; N braceleft ; B 100 -181 350 680 ;
+C 124 ; WX 200 ; N bar ; B 67 -14 133 676 ;
+C 125 ; WX 480 ; N braceright ; B 130 -181 380 680 ;
+C 126 ; WX 541 ; N asciitilde ; B 40 183 502 323 ;
+C 161 ; WX 333 ; N exclamdown ; B 97 -218 205 467 ;
+C 162 ; WX 500 ; N cent ; B 53 -138 448 579 ;
+C 163 ; WX 500 ; N sterling ; B 12 -8 490 676 ;
+C 164 ; WX 167 ; N fraction ; B -168 -14 331 676 ;
+C 165 ; WX 500 ; N yen ; B -53 0 512 662 ;
+C 166 ; WX 500 ; N florin ; B 7 -189 490 676 ;
+C 167 ; WX 500 ; N section ; B 70 -148 426 676 ;
+C 168 ; WX 611 ; N currency ; B 28 -8 574 494 ;
+C 169 ; WX 180 ; N quotesingle ; B 48 431 133 676 ;
+C 170 ; WX 444 ; N quotedblleft ; B 43 433 414 676 ;
+C 171 ; WX 500 ; N guillemotleft ; B 42 33 456 416 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 63 33 285 416 ;
+C 173 ; WX 333 ; N guilsinglright ; B 48 33 270 416 ;
+C 174 ; WX 722 ; N fi ; B 23 0 696 486 ;
+C 175 ; WX 944 ; N fl ; B 23 0 918 486 ;
+C 177 ; WX 500 ; N endash ; B 0 201 500 250 ;
+C 178 ; WX 500 ; N dagger ; B 59 -149 442 676 ;
+C 179 ; WX 500 ; N daggerdbl ; B 58 -153 442 676 ;
+C 180 ; WX 250 ; N periodcentered ; B 70 199 181 310 ;
+C 182 ; WX 453 ; N paragraph ; B -22 -154 450 662 ;
+C 183 ; WX 350 ; N bullet ; B 40 196 310 466 ;
+C 184 ; WX 333 ; N quotesinglbase ; B 79 -141 218 102 ;
+C 185 ; WX 444 ; N quotedblbase ; B 45 -141 416 102 ;
+C 186 ; WX 444 ; N quotedblright ; B 30 433 401 676 ;
+C 187 ; WX 500 ; N guillemotright ; B 44 33 458 416 ;
+C 188 ; WX 1000 ; N ellipsis ; B 111 -11 888 100 ;
+C 189 ; WX 1000 ; N perthousand ; B 7 -19 994 706 ;
+C 191 ; WX 444 ; N questiondown ; B 30 -218 376 466 ;
+C 193 ; WX 333 ; N grave ; B 19 543 242 714 ;
+C 194 ; WX 333 ; N acute ; B 93 543 317 714 ;
+C 195 ; WX 333 ; N circumflex ; B 11 543 322 710 ;
+C 196 ; WX 333 ; N tilde ; B 1 568 331 674 ;
+C 197 ; WX 333 ; N macron ; B 11 583 322 637 ;
+C 198 ; WX 333 ; N breve ; B 26 543 307 700 ;
+C 199 ; WX 333 ; N dotaccent ; B 118 559 216 659 ;
+C 200 ; WX 333 ; N dieresis ; B 18 559 315 659 ;
+C 202 ; WX 333 ; N ring ; B 67 548 266 747 ;
+C 203 ; WX 333 ; N cedilla ; B 52 -215 261 0 ;
+C 205 ; WX 333 ; N hungarumlaut ; B -3 543 377 714 ;
+C 206 ; WX 333 ; N ogonek ; B 64 -165 249 0 ;
+C 207 ; WX 333 ; N caron ; B 11 543 322 710 ;
+C 208 ; WX 1000 ; N emdash ; B 125 201 875 250 ;
+C 225 ; WX 889 ; N AE ; B 0 0 863 662 ;
+C 227 ; WX 276 ; N ordfeminine ; B 4 394 270 676 ;
+C 232 ; WX 611 ; N Lslash ; B 12 0 598 662 ;
+C 233 ; WX 722 ; N Oslash ; B 34 -80 688 734 ;
+C 234 ; WX 889 ; N OE ; B 30 -6 885 668 ;
+C 235 ; WX 310 ; N ordmasculine ; B 6 394 304 676 ;
+C 241 ; WX 722 ; N ae ; B 18 0 691 486 ;
+C 245 ; WX 278 ; N dotlessi ; B 14 0 252 486 ;
+C 248 ; WX 500 ; N lslash ; B 8 0 474 486 ;
+C 249 ; WX 556 ; N oslash ; B 22 -95 520 575 ;
+C 250 ; WX 722 ; N oe ; B 22 -8 698 494 ;
+C 251 ; WX 778 ; N germandbls ; B 27 -8 743 494 ;
+C -1 ; WX 500 ; N ecircumflex ; B 22 0 468 710 ;
+C -1 ; WX 500 ; N edieresis ; B 22 0 468 659 ;
+C -1 ; WX 556 ; N aacute ; B 24 0 526 714 ;
+C -1 ; WX 760 ; N registered ; B 38 -14 722 676 ;
+C -1 ; WX 278 ; N icircumflex ; B -16 0 295 710 ;
+C -1 ; WX 611 ; N udieresis ; B 21 -8 581 659 ;
+C -1 ; WX 556 ; N ograve ; B 22 -8 522 714 ;
+C -1 ; WX 611 ; N uacute ; B 21 -8 581 714 ;
+C -1 ; WX 611 ; N ucircumflex ; B 21 -8 581 710 ;
+C -1 ; WX 722 ; N Aacute ; B 15 0 706 890 ;
+C -1 ; WX 278 ; N igrave ; B -8 0 252 714 ;
+C -1 ; WX 333 ; N Icircumflex ; B 11 0 322 886 ;
+C -1 ; WX 500 ; N ccedilla ; B 18 -215 477 494 ;
+C -1 ; WX 556 ; N adieresis ; B 24 0 526 659 ;
+C -1 ; WX 611 ; N Ecircumflex ; B 12 0 597 886 ;
+C -1 ; WX 389 ; N scaron ; B 27 -8 354 710 ;
+C -1 ; WX 444 ; N thorn ; B 14 0 436 486 ;
+C -1 ; WX 980 ; N trademark ; B 30 256 957 662 ;
+C -1 ; WX 500 ; N egrave ; B 22 0 468 714 ;
+C -1 ; WX 300 ; N threesuperior ; B 15 262 291 676 ;
+C -1 ; WX 556 ; N zcaron ; B 24 0 522 710 ;
+C -1 ; WX 556 ; N atilde ; B 24 0 526 674 ;
+C -1 ; WX 556 ; N aring ; B 24 0 526 747 ;
+C -1 ; WX 556 ; N ocircumflex ; B 22 -8 522 710 ;
+C -1 ; WX 611 ; N Edieresis ; B 12 0 597 835 ;
+C -1 ; WX 750 ; N threequarters ; B 15 -14 718 676 ;
+C -1 ; WX 556 ; N ydieresis ; B 24 0 528 659 ;
+C -1 ; WX 556 ; N yacute ; B 24 0 528 714 ;
+C -1 ; WX 278 ; N iacute ; B 14 0 290 714 ;
+C -1 ; WX 722 ; N Acircumflex ; B 15 0 706 886 ;
+C -1 ; WX 722 ; N Uacute ; B 14 -14 705 890 ;
+C -1 ; WX 500 ; N eacute ; B 22 0 468 714 ;
+C -1 ; WX 722 ; N Ograve ; B 34 -14 688 890 ;
+C -1 ; WX 556 ; N agrave ; B 24 0 526 714 ;
+C -1 ; WX 722 ; N Udieresis ; B 14 -14 705 835 ;
+C -1 ; WX 556 ; N acircumflex ; B 24 0 526 710 ;
+C -1 ; WX 333 ; N Igrave ; B 18 0 315 890 ;
+C -1 ; WX 300 ; N twosuperior ; B 1 270 296 676 ;
+C -1 ; WX 722 ; N Ugrave ; B 14 -14 705 890 ;
+C -1 ; WX 750 ; N onequarter ; B 37 -14 718 676 ;
+C -1 ; WX 722 ; N Ucircumflex ; B 14 -14 705 886 ;
+C -1 ; WX 556 ; N Scaron ; B 42 -14 491 886 ;
+C -1 ; WX 333 ; N Idieresis ; B 18 0 315 835 ;
+C -1 ; WX 278 ; N idieresis ; B -9 0 288 659 ;
+C -1 ; WX 611 ; N Egrave ; B 12 0 597 890 ;
+C -1 ; WX 722 ; N Oacute ; B 34 -14 688 890 ;
+C -1 ; WX 564 ; N divide ; B 30 -10 534 516 ;
+C -1 ; WX 722 ; N Atilde ; B 15 0 706 850 ;
+C -1 ; WX 722 ; N Aring ; B 15 0 706 898 ;
+C -1 ; WX 722 ; N Odieresis ; B 34 -14 688 835 ;
+C -1 ; WX 722 ; N Adieresis ; B 15 0 706 835 ;
+C -1 ; WX 722 ; N Ntilde ; B 12 -11 707 850 ;
+C -1 ; WX 611 ; N Zcaron ; B 9 0 597 886 ;
+C -1 ; WX 556 ; N Thorn ; B 16 0 542 662 ;
+C -1 ; WX 333 ; N Iacute ; B 18 0 317 890 ;
+C -1 ; WX 564 ; N plusminus ; B 30 0 534 506 ;
+C -1 ; WX 564 ; N multiply ; B 38 8 527 497 ;
+C -1 ; WX 611 ; N Eacute ; B 12 0 597 890 ;
+C -1 ; WX 722 ; N Ydieresis ; B 22 0 703 835 ;
+C -1 ; WX 300 ; N onesuperior ; B 57 270 248 676 ;
+C -1 ; WX 611 ; N ugrave ; B 21 -8 581 714 ;
+C -1 ; WX 564 ; N logicalnot ; B 30 108 534 386 ;
+C -1 ; WX 611 ; N ntilde ; B 23 0 579 674 ;
+C -1 ; WX 722 ; N Otilde ; B 34 -14 688 850 ;
+C -1 ; WX 556 ; N otilde ; B 22 -8 522 674 ;
+C -1 ; WX 667 ; N Ccedilla ; B 28 -215 633 676 ;
+C -1 ; WX 722 ; N Agrave ; B 15 0 706 890 ;
+C -1 ; WX 750 ; N onehalf ; B 31 -14 746 676 ;
+C -1 ; WX 722 ; N Eth ; B 16 0 685 662 ;
+C -1 ; WX 400 ; N degree ; B 57 390 343 676 ;
+C -1 ; WX 722 ; N Yacute ; B 22 0 703 890 ;
+C -1 ; WX 722 ; N Ocircumflex ; B 34 -14 688 886 ;
+C -1 ; WX 556 ; N oacute ; B 22 -8 522 714 ;
+C -1 ; WX 500 ; N mu ; B 36 -218 512 450 ;
+C -1 ; WX 564 ; N minus ; B 30 220 534 286 ;
+C -1 ; WX 556 ; N eth ; B 20 0 536 486 ;
+C -1 ; WX 556 ; N odieresis ; B 22 -8 522 659 ;
+C -1 ; WX 760 ; N copyright ; B 38 -14 722 676 ;
+C -1 ; WX 200 ; N brokenbar ; B 67 -14 133 676 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 195
+
+KPX A y -92
+KPX A w -92
+KPX A v -74
+KPX A u -18
+KPX A t -35
+KPX A quoteright -111
+KPX A Y -105
+KPX A W -90
+KPX A V -135
+KPX A U -55
+KPX A T -111
+KPX A Q -55
+KPX A O -55
+KPX A G -40
+KPX A C -40
+
+KPX B u -18
+KPX B a -37
+KPX B U -10
+KPX B A -35
+
+KPX C a -18
+
+KPX D a -18
+KPX D Y -55
+KPX D W -30
+KPX D V -40
+KPX D A -40
+
+KPX F period -80
+KPX F o -15
+KPX F comma -80
+KPX F a -15
+KPX F A -55
+
+KPX J A -60
+
+KPX K y -25
+KPX K u -15
+KPX K o -35
+KPX K O -30
+
+KPX L y -55
+KPX L quoteright -92
+KPX L Y -100
+KPX L W -74
+KPX L V -100
+KPX L T -92
+
+KPX N A -35
+
+KPX O Y -50
+KPX O X -40
+KPX O W -35
+KPX O V -50
+KPX O T -18
+KPX O A -35
+
+KPX P period -111
+KPX P comma -111
+KPX P a -15
+KPX P A -92
+
+KPX Q U -10
+
+KPX R Y -65
+KPX R W -55
+KPX R V -80
+KPX R U -40
+KPX R T -60
+KPX R O -40
+
+KPX T y -80
+KPX T w -80
+KPX T u -45
+KPX T semicolon -55
+KPX T r -35
+KPX T period -74
+KPX T o -80
+KPX T i -35
+KPX T hyphen -92
+KPX T e -70
+KPX T comma -74
+KPX T colon -50
+KPX T a -80
+KPX T O -18
+KPX T A -93
+
+KPX U A -40
+
+KPX V u -75
+KPX V semicolon -74
+KPX V period -129
+KPX V o -129
+KPX V i -60
+KPX V hyphen -100
+KPX V e -111
+KPX V comma -129
+KPX V colon -74
+KPX V a -111
+KPX V O -40
+KPX V G -18
+KPX V A -135
+
+KPX W y -73
+KPX W u -50
+KPX W semicolon -37
+KPX W period -92
+KPX W o -80
+KPX W i -40
+KPX W hyphen -65
+KPX W e -80
+KPX W comma -92
+KPX W colon -37
+KPX W a -80
+KPX W O -10
+KPX W A -120
+
+KPX Y u -111
+KPX Y semicolon -92
+KPX Y period -129
+KPX Y o -110
+KPX Y i -55
+KPX Y hyphen -111
+KPX Y e -100
+KPX Y comma -129
+KPX Y colon -92
+KPX Y a -100
+KPX Y O -30
+KPX Y C -35
+KPX Y A -120
+
+KPX a y -55
+KPX a w -55
+KPX a v -74
+KPX a u -18
+KPX a t -35
+KPX a quoteright -74
+KPX a quotedblright -55
+KPX a q -18
+KPX a o -18
+KPX a g -18
+KPX a c -18
+
+KPX b u -20
+KPX b period -40
+
+KPX c y -15
+
+KPX comma quoteright -70
+KPX comma quotedblright -70
+
+KPX d period -18
+KPX d comma -18
+
+KPX f period -55
+KPX f comma -55
+KPX f a -10
+
+KPX j period -18
+KPX j comma -18
+KPX j a -18
+
+KPX k o -10
+
+KPX l y -55
+KPX l w -37
+KPX l v -55
+KPX l t -37
+KPX l quoteright -74
+KPX l quotedblright -35
+
+KPX n period -35
+KPX n comma -35
+KPX n a -18
+
+KPX o y -10
+KPX o x -18
+KPX o w -25
+KPX o v -15
+KPX o period -18
+KPX o comma -18
+
+KPX p period -35
+KPX p comma -35
+KPX p a -18
+
+KPX period quoteright -70
+KPX period quotedblright -70
+
+KPX quotedblleft a -55
+KPX quotedblleft A -80
+
+KPX quoteleft quoteleft -74
+KPX quoteleft a -74
+KPX quoteleft A -80
+
+KPX quoteright quoteright -74
+
+KPX r hyphen -20
+
+KPX space Y -90
+KPX space W -30
+KPX space V -50
+KPX space T -18
+KPX space A -55
+
+KPX t period -35
+KPX t hyphen -18
+KPX t comma -35
+KPX t a -35
+
+KPX u period -18
+KPX u comma -18
+KPX u a -55
+
+KPX v period -74
+KPX v o -20
+KPX v hyphen -35
+KPX v comma -74
+KPX v a -74
+
+KPX w period -74
+KPX w o -10
+KPX w comma -74
+KPX w a -74
+
+KPX y semicolon -35
+KPX y period -74
+KPX y o -18
+KPX y hyphen -37
+KPX y comma -74
+KPX y colon -35
+KPX y c -18
+KPX y a -35
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 195 176 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 195 176 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 195 176 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 195 176 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 185 151 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 195 176 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 139 176 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 139 176 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 139 176 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 139 176 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 0 176 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 0 176 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 0 176 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 0 176 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 195 176 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 195 176 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 195 176 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 195 176 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 195 176 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 195 176 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 112 176 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 195 176 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 195 176 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 195 176 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 195 176 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 195 176 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 195 176 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 139 176 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 112 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 112 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 112 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 112 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 112 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 112 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 84 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 84 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 84 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 84 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -27 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -27 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -27 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -27 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 139 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 112 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 112 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 112 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 112 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 112 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 28 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 139 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 139 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 139 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 139 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 112 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 112 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 112 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/Ti-RmSC+ b/font/font/Ti-RmSC+
new file mode 100644
index 0000000..fbb8312
--- /dev/null
+++ b/font/font/Ti-RmSC+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 667 ; N Ccaron ; B 28 -14 633 890 ;
+C -1 ; WX 500 ; N ccaron ; B 18 -8 477 710 ;
+C -1 ; WX 722 ; N Dcaron ; B 16 0 685 890 ;
+C -1 ; WX 653 ; N dcaron ; B 20 0 689 535 ;
+C -1 ; WX 611 ; N Ecaron ; B 12 0 597 890 ;
+C -1 ; WX 500 ; N ecaron ; B 22 0 468 710 ;
+C -1 ; WX 611 ; N Lcaron ; B 12 0 598 728 ;
+C -1 ; WX 611 ; N Lacute ; B 12 0 598 894 ;
+C -1 ; WX 597 ; N lcaron ; B 22 0 627 535 ;
+C -1 ; WX 500 ; N lacute ; B 22 0 474 894 ;
+C -1 ; WX 722 ; N Ncaron ; B 12 -11 707 890 ;
+C -1 ; WX 611 ; N ncaron ; B 23 0 579 710 ;
+C -1 ; WX 667 ; N Rcaron ; B 17 0 659 890 ;
+C -1 ; WX 667 ; N Racute ; B 17 0 659 894 ;
+C -1 ; WX 500 ; N rcaron ; B 14 0 493 710 ;
+C -1 ; WX 500 ; N racute ; B 14 0 493 714 ;
+C -1 ; WX 611 ; N Tcaron ; B 17 0 593 890 ;
+C -1 ; WX 597 ; N tcaron ; B 26 0 621 676 ;
+C -1 ; WX 722 ; N Uring ; B 14 -14 705 890 ;
+C -1 ; WX 611 ; N uring ; B 21 -8 581 747 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 228 180 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 106 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 194 180 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 471 -141 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 139 180 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 83 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 250 52 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 139 180 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 409 -141 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 105 180 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 194 180 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 139 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 167 180 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 210 180 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 83 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 105 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 139 180 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 403 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 194 143 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 139 0 ;
+EndBuildComposites
diff --git a/font/font/Ti-Sm b/font/font/Ti-Sm
new file mode 100644
index 0000000..2f89c88
--- /dev/null
+++ b/font/font/Ti-Sm
@@ -0,0 +1,416 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1990 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Mon Oct 29 15:55:58 1990
+Comment UniqueID 33201
+Comment VMusage 29517 36409
+FontName Times-Semibold
+FullName Times Semibold
+FamilyName Times
+Weight Semibold
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -167 -216 1004 933
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.000
+Notice Copyright (c) 1990 Adobe Systems Incorporated. All Rights Reserved.Times is a trademark of Linotype AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 680
+XHeight 470
+Ascender 708
+Descender -216
+StartCharMetrics 228
+C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 333 ; N exclam ; B 93 -12 239 696 ;
+C 34 ; WX 333 ; N quotedbl ; B 40 380 293 696 ;
+C 35 ; WX 500 ; N numbersign ; B 10 0 488 680 ;
+C 36 ; WX 500 ; N dollar ; B 36 -102 464 736 ;
+C 37 ; WX 833 ; N percent ; B 53 -12 779 696 ;
+C 38 ; WX 833 ; N ampersand ; B 36 -16 788 696 ;
+C 39 ; WX 278 ; N quoteright ; B 59 406 219 696 ;
+C 40 ; WX 333 ; N parenleft ; B 22 -194 312 696 ;
+C 41 ; WX 333 ; N parenright ; B 21 -194 311 696 ;
+C 42 ; WX 500 ; N asterisk ; B 54 262 446 696 ;
+C 43 ; WX 600 ; N plus ; B 65 0 535 470 ;
+C 44 ; WX 250 ; N comma ; B 52 -156 212 134 ;
+C 45 ; WX 333 ; N hyphen ; B 43 183 291 287 ;
+C 46 ; WX 250 ; N period ; B 52 -12 198 134 ;
+C 47 ; WX 278 ; N slash ; B 0 -16 278 696 ;
+C 48 ; WX 500 ; N zero ; B 22 -12 478 696 ;
+C 49 ; WX 500 ; N one ; B 82 0 438 696 ;
+C 50 ; WX 500 ; N two ; B 20 0 477 696 ;
+C 51 ; WX 500 ; N three ; B 36 -12 430 696 ;
+C 52 ; WX 500 ; N four ; B 22 0 478 680 ;
+C 53 ; WX 500 ; N five ; B 40 -12 432 680 ;
+C 54 ; WX 500 ; N six ; B 21 -12 479 696 ;
+C 55 ; WX 500 ; N seven ; B 8 -12 462 680 ;
+C 56 ; WX 500 ; N eight ; B 38 -12 462 696 ;
+C 57 ; WX 500 ; N nine ; B 21 -12 479 696 ;
+C 58 ; WX 250 ; N colon ; B 52 -12 198 472 ;
+C 59 ; WX 250 ; N semicolon ; B 52 -156 212 472 ;
+C 60 ; WX 600 ; N less ; B 64 -6 536 476 ;
+C 61 ; WX 600 ; N equal ; B 65 100 535 370 ;
+C 62 ; WX 600 ; N greater ; B 64 -6 536 476 ;
+C 63 ; WX 444 ; N question ; B 28 -12 416 696 ;
+C 64 ; WX 800 ; N at ; B 43 -16 757 696 ;
+C 65 ; WX 722 ; N A ; B 14 0 708 696 ;
+C 66 ; WX 667 ; N B ; B 20 0 624 680 ;
+C 67 ; WX 722 ; N C ; B 21 -16 678 696 ;
+C 68 ; WX 778 ; N D ; B 20 0 748 680 ;
+C 69 ; WX 667 ; N E ; B 20 0 650 680 ;
+C 70 ; WX 611 ; N F ; B 20 0 594 680 ;
+C 71 ; WX 778 ; N G ; B 28 -16 764 696 ;
+C 72 ; WX 778 ; N H ; B 20 0 758 680 ;
+C 73 ; WX 389 ; N I ; B 26 0 362 680 ;
+C 74 ; WX 500 ; N J ; B 20 -16 468 680 ;
+C 75 ; WX 778 ; N K ; B 20 0 764 680 ;
+C 76 ; WX 611 ; N L ; B 20 0 606 680 ;
+C 77 ; WX 889 ; N M ; B 18 -8 870 680 ;
+C 78 ; WX 778 ; N N ; B 20 -16 758 680 ;
+C 79 ; WX 722 ; N O ; B 21 -16 701 696 ;
+C 80 ; WX 611 ; N P ; B 20 0 598 680 ;
+C 81 ; WX 722 ; N Q ; B 21 -216 701 696 ;
+C 82 ; WX 722 ; N R ; B 14 0 712 680 ;
+C 83 ; WX 556 ; N S ; B 39 -16 517 696 ;
+C 84 ; WX 667 ; N T ; B 19 0 647 680 ;
+C 85 ; WX 778 ; N U ; B 28 -16 750 680 ;
+C 86 ; WX 722 ; N V ; B 14 -16 708 680 ;
+C 87 ; WX 1000 ; N W ; B 12 -16 988 680 ;
+C 88 ; WX 722 ; N X ; B 10 0 712 680 ;
+C 89 ; WX 722 ; N Y ; B 12 0 710 680 ;
+C 90 ; WX 667 ; N Z ; B 28 0 639 680 ;
+C 91 ; WX 333 ; N bracketleft ; B 76 -180 286 680 ;
+C 92 ; WX 278 ; N backslash ; B 0 -16 278 696 ;
+C 93 ; WX 333 ; N bracketright ; B 47 -180 257 680 ;
+C 94 ; WX 600 ; N asciicircum ; B 82 316 518 680 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 278 ; N quoteleft ; B 59 406 219 696 ;
+C 97 ; WX 500 ; N a ; B 24 -12 494 482 ;
+C 98 ; WX 500 ; N b ; B 10 -12 476 708 ;
+C 99 ; WX 444 ; N c ; B 20 -12 432 482 ;
+C 100 ; WX 556 ; N d ; B 28 -12 528 708 ;
+C 101 ; WX 444 ; N e ; B 20 -12 432 482 ;
+C 102 ; WX 333 ; N f ; B 16 0 398 708 ; L i fi ; L l fl ;
+C 103 ; WX 500 ; N g ; B 34 -216 488 482 ;
+C 104 ; WX 556 ; N h ; B 17 0 541 708 ;
+C 105 ; WX 278 ; N i ; B 19 0 259 696 ;
+C 106 ; WX 278 ; N j ; B -90 -216 218 696 ;
+C 107 ; WX 556 ; N k ; B 18 0 544 708 ;
+C 108 ; WX 278 ; N l ; B 18 0 260 708 ;
+C 109 ; WX 833 ; N m ; B 14 0 818 482 ;
+C 110 ; WX 556 ; N n ; B 16 0 540 482 ;
+C 111 ; WX 500 ; N o ; B 24 -12 476 482 ;
+C 112 ; WX 556 ; N p ; B 25 -216 524 482 ;
+C 113 ; WX 500 ; N q ; B 18 -216 488 482 ;
+C 114 ; WX 389 ; N r ; B 20 0 376 482 ;
+C 115 ; WX 389 ; N s ; B 32 -12 366 482 ;
+C 116 ; WX 333 ; N t ; B 16 -12 322 628 ;
+C 117 ; WX 556 ; N u ; B 12 -12 536 470 ;
+C 118 ; WX 500 ; N v ; B 12 -12 488 470 ;
+C 119 ; WX 722 ; N w ; B 12 -12 710 470 ;
+C 120 ; WX 500 ; N x ; B 12 0 488 470 ;
+C 121 ; WX 500 ; N y ; B 10 -216 486 470 ;
+C 122 ; WX 444 ; N z ; B 29 0 415 470 ;
+C 123 ; WX 333 ; N braceleft ; B 48 -180 270 680 ;
+C 124 ; WX 222 ; N bar ; B 70 0 152 708 ;
+C 125 ; WX 333 ; N braceright ; B 63 -180 285 680 ;
+C 126 ; WX 600 ; N asciitilde ; B 69 155 531 315 ;
+C 161 ; WX 333 ; N exclamdown ; B 94 -216 240 492 ;
+C 162 ; WX 500 ; N cent ; B 50 -138 462 594 ;
+C 163 ; WX 500 ; N sterling ; B 6 -12 472 696 ;
+C 164 ; WX 167 ; N fraction ; B -167 -12 334 696 ;
+C 165 ; WX 500 ; N yen ; B -100 0 600 680 ;
+C 166 ; WX 500 ; N florin ; B 9 -204 491 708 ;
+C 167 ; WX 500 ; N section ; B 62 -128 438 696 ;
+C 168 ; WX 500 ; N currency ; B -5 84 505 594 ;
+C 169 ; WX 222 ; N quotesingle ; B 68 380 154 696 ;
+C 170 ; WX 500 ; N quotedblleft ; B 50 406 451 696 ;
+C 171 ; WX 500 ; N guillemotleft ; B 27 43 473 427 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 52 43 304 427 ;
+C 173 ; WX 333 ; N guilsinglright ; B 29 43 281 427 ;
+C 174 ; WX 556 ; N fi ; B 17 0 539 708 ;
+C 175 ; WX 556 ; N fl ; B 15 0 541 708 ;
+C 177 ; WX 500 ; N endash ; B 0 197 500 273 ;
+C 178 ; WX 500 ; N dagger ; B 49 -128 451 696 ;
+C 179 ; WX 500 ; N daggerdbl ; B 49 -144 451 696 ;
+C 180 ; WX 250 ; N periodcentered ; B 52 162 198 308 ;
+C 182 ; WX 620 ; N paragraph ; B 44 -182 536 680 ;
+C 183 ; WX 500 ; N bullet ; B 80 170 420 510 ;
+C 184 ; WX 278 ; N quotesinglbase ; B 59 -156 219 134 ;
+C 185 ; WX 500 ; N quotedblbase ; B 49 -156 450 134 ;
+C 186 ; WX 500 ; N quotedblright ; B 49 406 450 696 ;
+C 187 ; WX 500 ; N guillemotright ; B 27 43 473 427 ;
+C 188 ; WX 1000 ; N ellipsis ; B 94 -12 906 134 ;
+C 189 ; WX 1000 ; N perthousand ; B 2 -12 998 708 ;
+C 191 ; WX 444 ; N questiondown ; B 28 -216 416 492 ;
+C 193 ; WX 278 ; N grave ; B -18 530 218 708 ;
+C 194 ; WX 278 ; N acute ; B 60 530 296 708 ;
+C 195 ; WX 278 ; N circumflex ; B -24 530 302 702 ;
+C 196 ; WX 278 ; N tilde ; B -38 550 316 668 ;
+C 197 ; WX 278 ; N macron ; B -22 568 300 634 ;
+C 198 ; WX 278 ; N breve ; B -8 530 286 690 ;
+C 199 ; WX 278 ; N dotaccent ; B 79 540 199 660 ;
+C 200 ; WX 278 ; N dieresis ; B -23 540 301 660 ;
+C 202 ; WX 278 ; N ring ; B 36 532 242 738 ;
+C 203 ; WX 278 ; N cedilla ; B 24 -216 244 0 ;
+C 205 ; WX 278 ; N hungarumlaut ; B -32 530 376 708 ;
+C 206 ; WX 278 ; N ogonek ; B 28 -216 278 20 ;
+C 207 ; WX 278 ; N caron ; B -24 530 302 702 ;
+C 208 ; WX 1000 ; N emdash ; B 0 197 1000 273 ;
+C 225 ; WX 1000 ; N AE ; B 4 0 983 680 ;
+C 227 ; WX 300 ; N ordfeminine ; B -2 400 305 696 ;
+C 232 ; WX 611 ; N Lslash ; B 20 0 606 680 ;
+C 233 ; WX 722 ; N Oslash ; B 21 -66 701 744 ;
+C 234 ; WX 1000 ; N OE ; B 20 -16 1004 696 ;
+C 235 ; WX 300 ; N ordmasculine ; B 3 400 297 696 ;
+C 241 ; WX 722 ; N ae ; B 24 -12 696 482 ;
+C 245 ; WX 278 ; N dotlessi ; B 19 0 259 482 ;
+C 248 ; WX 278 ; N lslash ; B -39 0 317 708 ;
+C 249 ; WX 500 ; N oslash ; B 24 -90 476 556 ;
+C 250 ; WX 778 ; N oe ; B 30 -12 746 482 ;
+C 251 ; WX 500 ; N germandbls ; B 8 -12 472 708 ;
+C -1 ; WX 444 ; N ecircumflex ; B 20 -12 432 702 ;
+C -1 ; WX 444 ; N edieresis ; B 20 -12 432 660 ;
+C -1 ; WX 500 ; N aacute ; B 24 -12 494 708 ;
+C -1 ; WX 800 ; N registered ; B 52 -16 748 696 ;
+C -1 ; WX 278 ; N icircumflex ; B -30 0 296 702 ;
+C -1 ; WX 556 ; N udieresis ; B 12 -12 536 660 ;
+C -1 ; WX 500 ; N ograve ; B 24 -12 476 708 ;
+C -1 ; WX 556 ; N uacute ; B 12 -12 536 708 ;
+C -1 ; WX 556 ; N ucircumflex ; B 12 -12 536 702 ;
+C -1 ; WX 722 ; N Aacute ; B 14 0 708 903 ;
+C -1 ; WX 278 ; N igrave ; B -24 0 259 708 ;
+C -1 ; WX 389 ; N Icircumflex ; B 26 0 362 897 ;
+C -1 ; WX 444 ; N ccedilla ; B 20 -216 432 482 ;
+C -1 ; WX 500 ; N adieresis ; B 24 -12 494 660 ;
+C -1 ; WX 667 ; N Ecircumflex ; B 20 0 650 897 ;
+C -1 ; WX 389 ; N scaron ; B 32 -12 366 702 ;
+C -1 ; WX 556 ; N thorn ; B 25 -216 524 708 ;
+C -1 ; WX 1000 ; N trademark ; B 25 276 975 680 ;
+C -1 ; WX 444 ; N egrave ; B 20 -12 432 708 ;
+C -1 ; WX 300 ; N threesuperior ; B 20 270 274 696 ;
+C -1 ; WX 444 ; N zcaron ; B 29 0 415 702 ;
+C -1 ; WX 500 ; N atilde ; B 24 -12 494 668 ;
+C -1 ; WX 500 ; N aring ; B 24 -12 494 738 ;
+C -1 ; WX 500 ; N ocircumflex ; B 24 -12 476 702 ;
+C -1 ; WX 667 ; N Edieresis ; B 20 0 650 855 ;
+C -1 ; WX 750 ; N threequarters ; B 20 -12 750 696 ;
+C -1 ; WX 500 ; N ydieresis ; B 10 -216 486 660 ;
+C -1 ; WX 500 ; N yacute ; B 10 -216 486 708 ;
+C -1 ; WX 278 ; N iacute ; B 19 0 290 708 ;
+C -1 ; WX 722 ; N Acircumflex ; B 14 0 708 897 ;
+C -1 ; WX 778 ; N Uacute ; B 28 -16 750 903 ;
+C -1 ; WX 444 ; N eacute ; B 20 -12 432 708 ;
+C -1 ; WX 722 ; N Ograve ; B 21 -16 701 903 ;
+C -1 ; WX 500 ; N agrave ; B 24 -12 494 708 ;
+C -1 ; WX 778 ; N Udieresis ; B 28 -16 750 855 ;
+C -1 ; WX 500 ; N acircumflex ; B 24 -12 494 702 ;
+C -1 ; WX 389 ; N Igrave ; B 26 0 362 903 ;
+C -1 ; WX 300 ; N twosuperior ; B 2 278 300 696 ;
+C -1 ; WX 778 ; N Ugrave ; B 28 -16 750 903 ;
+C -1 ; WX 750 ; N onequarter ; B 26 -12 750 696 ;
+C -1 ; WX 778 ; N Ucircumflex ; B 28 -16 750 897 ;
+C -1 ; WX 556 ; N Scaron ; B 39 -16 517 897 ;
+C -1 ; WX 389 ; N Idieresis ; B 26 0 362 855 ;
+C -1 ; WX 278 ; N idieresis ; B -29 0 295 660 ;
+C -1 ; WX 667 ; N Egrave ; B 20 0 650 903 ;
+C -1 ; WX 722 ; N Oacute ; B 21 -16 701 903 ;
+C -1 ; WX 600 ; N divide ; B 65 -31 535 501 ;
+C -1 ; WX 722 ; N Atilde ; B 14 0 708 863 ;
+C -1 ; WX 722 ; N Aring ; B 14 0 708 933 ;
+C -1 ; WX 722 ; N Odieresis ; B 21 -16 701 855 ;
+C -1 ; WX 722 ; N Adieresis ; B 14 0 708 855 ;
+C -1 ; WX 778 ; N Ntilde ; B 20 -16 758 863 ;
+C -1 ; WX 667 ; N Zcaron ; B 28 0 639 897 ;
+C -1 ; WX 611 ; N Thorn ; B 20 0 598 680 ;
+C -1 ; WX 389 ; N Iacute ; B 26 0 362 903 ;
+C -1 ; WX 600 ; N plusminus ; B 65 0 535 470 ;
+C -1 ; WX 600 ; N multiply ; B 65 0 535 470 ;
+C -1 ; WX 667 ; N Eacute ; B 20 0 650 903 ;
+C -1 ; WX 722 ; N Ydieresis ; B 12 0 710 855 ;
+C -1 ; WX 300 ; N onesuperior ; B 26 278 258 696 ;
+C -1 ; WX 556 ; N ugrave ; B 12 -12 536 708 ;
+C -1 ; WX 600 ; N logicalnot ; B 65 98 535 370 ;
+C -1 ; WX 556 ; N ntilde ; B 16 0 540 668 ;
+C -1 ; WX 722 ; N Otilde ; B 21 -16 701 863 ;
+C -1 ; WX 500 ; N otilde ; B 24 -12 476 668 ;
+C -1 ; WX 772 ; N Ccedilla ; B 21 -216 678 696 ;
+C -1 ; WX 722 ; N Agrave ; B 14 0 708 903 ;
+C -1 ; WX 750 ; N onehalf ; B 26 -12 750 696 ;
+C -1 ; WX 778 ; N Eth ; B 20 0 748 680 ;
+C -1 ; WX 400 ; N degree ; B 56 410 342 696 ;
+C -1 ; WX 722 ; N Yacute ; B 12 0 710 903 ;
+C -1 ; WX 722 ; N Ocircumflex ; B 21 -16 701 897 ;
+C -1 ; WX 500 ; N oacute ; B 24 -12 476 708 ;
+C -1 ; WX 556 ; N mu ; B 12 -216 536 470 ;
+C -1 ; WX 600 ; N minus ; B 65 194 535 276 ;
+C -1 ; WX 500 ; N eth ; B 24 -12 476 708 ;
+C -1 ; WX 500 ; N odieresis ; B 24 -12 476 660 ;
+C -1 ; WX 800 ; N copyright ; B 52 -16 748 696 ;
+C -1 ; WX 222 ; N brokenbar ; B 70 0 152 708 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 86
+
+KPX A y -74
+KPX A w -74
+KPX A v -74
+KPX A quoteright -111
+KPX A Y -92
+KPX A W -111
+KPX A V -111
+KPX A T -74
+
+KPX F period -129
+KPX F comma -129
+KPX F A -74
+
+KPX L y -55
+KPX L quoteright -129
+KPX L Y -111
+KPX L W -111
+KPX L V -111
+KPX L T -92
+
+KPX P period -129
+KPX P comma -129
+KPX P A -55
+
+KPX R Y -55
+KPX R W -55
+KPX R V -55
+KPX R T -18
+
+KPX T y -74
+KPX T w -92
+KPX T u -74
+KPX T semicolon -74
+KPX T r -55
+KPX T period -111
+KPX T o -74
+KPX T i -37
+KPX T hyphen -92
+KPX T e -74
+KPX T comma -111
+KPX T colon -74
+KPX T a -74
+KPX T A -74
+
+KPX V u -55
+KPX V semicolon -92
+KPX V period -129
+KPX V o -74
+KPX V i -37
+KPX V hyphen -92
+KPX V e -74
+KPX V comma -129
+KPX V colon -92
+KPX V a -74
+KPX V A -92
+
+KPX W y -37
+KPX W u -37
+KPX W semicolon -74
+KPX W period -129
+KPX W o -55
+KPX W i -18
+KPX W hyphen -74
+KPX W e -55
+KPX W comma -129
+KPX W colon -74
+KPX W a -55
+KPX W A -74
+
+KPX Y u -55
+KPX Y semicolon -92
+KPX Y period -129
+KPX Y o -74
+KPX Y i -37
+KPX Y hyphen -92
+KPX Y e -74
+KPX Y comma -129
+KPX Y colon -92
+KPX Y a -74
+KPX Y A -74
+
+KPX f quoteright 18
+
+KPX quoteleft quoteleft -37
+
+KPX quoteright t -37
+KPX quoteright s -74
+KPX quoteright quoteright -37
+
+KPX r period -111
+KPX r hyphen -55
+KPX r comma -111
+
+KPX v period -92
+KPX v comma -92
+
+KPX w period -92
+KPX w comma -92
+
+KPX y period -92
+KPX y comma -92
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 222 195 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 222 195 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 222 195 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 222 195 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 222 195 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 222 195 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 183 195 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 183 195 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 183 195 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 183 195 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 56 195 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 56 195 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 56 195 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 56 195 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 250 195 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 216 195 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 216 195 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 216 195 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 216 195 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 216 195 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 162 195 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 267 195 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 267 195 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 267 195 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 267 195 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 245 195 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 245 195 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 218 195 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 111 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 111 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 111 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 111 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 111 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 111 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 89 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 89 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 89 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 89 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -6 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -6 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -6 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -6 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 145 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 111 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 111 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 111 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 111 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 111 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 56 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 127 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 127 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 127 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 127 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 111 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 111 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 83 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/Ti-Sm+ b/font/font/Ti-Sm+
new file mode 100644
index 0000000..57e7e0a
--- /dev/null
+++ b/font/font/Ti-Sm+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 722 ; N Ccaron ; B 21 -16 678 914 ;
+C -1 ; WX 444 ; N ccaron ; B 20 -12 432 702 ;
+C -1 ; WX 778 ; N Dcaron ; B 20 0 748 914 ;
+C -1 ; WX 668 ; N dcaron ; B 28 -12 704 779 ;
+C -1 ; WX 667 ; N Ecaron ; B 20 0 650 914 ;
+C -1 ; WX 444 ; N ecaron ; B 20 -12 432 702 ;
+C -1 ; WX 611 ; N Lcaron ; B 20 0 606 748 ;
+C -1 ; WX 611 ; N Lacute ; B 20 0 606 920 ;
+C -1 ; WX 390 ; N lcaron ; B 18 0 436 779 ;
+C -1 ; WX 278 ; N lacute ; B 18 0 320 920 ;
+C -1 ; WX 778 ; N Ncaron ; B 20 -16 758 914 ;
+C -1 ; WX 556 ; N ncaron ; B 16 0 540 702 ;
+C -1 ; WX 722 ; N Rcaron ; B 14 0 712 914 ;
+C -1 ; WX 722 ; N Racute ; B 14 0 712 920 ;
+C -1 ; WX 389 ; N rcaron ; B 20 0 376 702 ;
+C -1 ; WX 389 ; N racute ; B 20 0 376 708 ;
+C -1 ; WX 667 ; N Tcaron ; B 19 0 647 914 ;
+C -1 ; WX 445 ; N tcaron ; B 16 -12 498 696 ;
+C -1 ; WX 778 ; N Uring ; B 28 -16 750 914 ;
+C -1 ; WX 556 ; N uring ; B 12 -12 536 738 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 288 212 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 104 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 250 212 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 485 83 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 194 212 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 83 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 319 52 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 166 212 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 217 83 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 24 212 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 250 212 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 139 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 222 212 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 267 212 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 55 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 79 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 194 212 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 279 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 250 176 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 139 0 ;
+EndBuildComposites
diff --git a/font/font/Ti-SmIt b/font/font/Ti-SmIt
new file mode 100644
index 0000000..386863a
--- /dev/null
+++ b/font/font/Ti-SmIt
@@ -0,0 +1,415 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1990 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Mon Oct 29 16:04:00 1990
+Comment UniqueID 33204
+Comment VMusage 31573 38465
+FontName Times-SemiboldItalic
+FullName Times Semibold Italic
+FamilyName Times
+Weight Semibold
+ItalicAngle -13
+IsFixedPitch false
+FontBBox -167 -218 1025 919
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.000
+Notice Copyright (c) 1990 Adobe Systems Incorporated. All Rights Reserved.Times is a trademark of Linotype AG and/or its subsidiaries.
+EncodingScheme AdobeStandardEncoding
+CapHeight 680
+XHeight 482
+Ascender 708
+Descender -206
+StartCharMetrics 228
+C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 389 ; N exclam ; B 60 -12 330 696 ;
+C 34 ; WX 333 ; N quotedbl ; B 120 380 373 696 ;
+C 35 ; WX 500 ; N numbersign ; B 26 0 504 680 ;
+C 36 ; WX 500 ; N dollar ; B 22 -104 492 746 ;
+C 37 ; WX 833 ; N percent ; B 70 -12 796 696 ;
+C 38 ; WX 778 ; N ampersand ; B 44 -16 757 696 ;
+C 39 ; WX 278 ; N quoteright ; B 127 416 289 696 ;
+C 40 ; WX 333 ; N parenleft ; B 18 -206 360 696 ;
+C 41 ; WX 333 ; N parenright ; B -47 -206 295 696 ;
+C 42 ; WX 500 ; N asterisk ; B 106 260 497 696 ;
+C 43 ; WX 600 ; N plus ; B 65 0 535 470 ;
+C 44 ; WX 250 ; N comma ; B 8 -152 170 128 ;
+C 45 ; WX 333 ; N hyphen ; B 28 188 303 282 ;
+C 46 ; WX 250 ; N period ; B 26 -12 166 128 ;
+C 47 ; WX 278 ; N slash ; B 21 -16 324 696 ;
+C 48 ; WX 500 ; N zero ; B 35 -16 497 696 ;
+C 49 ; WX 500 ; N one ; B 51 0 435 696 ;
+C 50 ; WX 500 ; N two ; B 2 0 466 696 ;
+C 51 ; WX 500 ; N three ; B 1 -16 463 696 ;
+C 52 ; WX 500 ; N four ; B 17 0 499 696 ;
+C 53 ; WX 500 ; N five ; B 2 -16 471 680 ;
+C 54 ; WX 500 ; N six ; B 39 -16 484 696 ;
+C 55 ; WX 500 ; N seven ; B 83 -16 524 680 ;
+C 56 ; WX 500 ; N eight ; B 19 -16 493 696 ;
+C 57 ; WX 500 ; N nine ; B 55 -16 500 696 ;
+C 58 ; WX 250 ; N colon ; B 26 -12 238 470 ;
+C 59 ; WX 250 ; N semicolon ; B 8 -152 238 470 ;
+C 60 ; WX 600 ; N less ; B 74 -8 544 478 ;
+C 61 ; WX 600 ; N equal ; B 65 99 535 371 ;
+C 62 ; WX 600 ; N greater ; B 86 -8 556 478 ;
+C 63 ; WX 500 ; N question ; B 90 -12 444 696 ;
+C 64 ; WX 800 ; N at ; B 43 -16 758 696 ;
+C 65 ; WX 722 ; N A ; B -36 0 678 696 ;
+C 66 ; WX 667 ; N B ; B -4 0 651 680 ;
+C 67 ; WX 722 ; N C ; B 63 -16 742 696 ;
+C 68 ; WX 778 ; N D ; B 0 0 767 680 ;
+C 69 ; WX 667 ; N E ; B -10 0 666 680 ;
+C 70 ; WX 611 ; N F ; B -8 0 659 680 ;
+C 71 ; WX 722 ; N G ; B 39 -16 734 696 ;
+C 72 ; WX 778 ; N H ; B -6 0 824 680 ;
+C 73 ; WX 389 ; N I ; B 2 0 426 680 ;
+C 74 ; WX 500 ; N J ; B 14 -16 530 680 ;
+C 75 ; WX 722 ; N K ; B -6 0 772 680 ;
+C 76 ; WX 611 ; N L ; B -6 0 606 680 ;
+C 77 ; WX 889 ; N M ; B -12 -8 932 680 ;
+C 78 ; WX 778 ; N N ; B -2 -16 814 680 ;
+C 79 ; WX 722 ; N O ; B 48 -16 714 696 ;
+C 80 ; WX 611 ; N P ; B -6 0 641 680 ;
+C 81 ; WX 722 ; N Q ; B 48 -206 714 696 ;
+C 82 ; WX 722 ; N R ; B 1 0 683 680 ;
+C 83 ; WX 556 ; N S ; B 22 -16 565 696 ;
+C 84 ; WX 611 ; N T ; B 61 0 668 680 ;
+C 85 ; WX 778 ; N U ; B 102 -16 820 680 ;
+C 86 ; WX 722 ; N V ; B 90 -16 806 680 ;
+C 87 ; WX 944 ; N W ; B 82 -16 1022 680 ;
+C 88 ; WX 722 ; N X ; B -4 0 760 680 ;
+C 89 ; WX 667 ; N Y ; B 96 0 750 680 ;
+C 90 ; WX 611 ; N Z ; B -15 0 650 680 ;
+C 91 ; WX 389 ; N bracketleft ; B 17 -190 406 680 ;
+C 92 ; WX 278 ; N backslash ; B 8 -16 311 696 ;
+C 93 ; WX 389 ; N bracketright ; B -21 -190 368 680 ;
+C 94 ; WX 600 ; N asciicircum ; B 92 315 528 680 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 278 ; N quoteleft ; B 130 416 292 696 ;
+C 97 ; WX 500 ; N a ; B -1 -12 469 482 ;
+C 98 ; WX 500 ; N b ; B 21 -12 486 708 ;
+C 99 ; WX 444 ; N c ; B 23 -12 437 482 ;
+C 100 ; WX 500 ; N d ; B -1 -12 517 708 ;
+C 101 ; WX 444 ; N e ; B 20 -12 438 482 ;
+C 102 ; WX 333 ; N f ; B -130 -206 462 708 ; L i fi ; L l fl ;
+C 103 ; WX 444 ; N g ; B -42 -206 464 482 ;
+C 104 ; WX 556 ; N h ; B 18 -12 523 708 ;
+C 105 ; WX 278 ; N i ; B 30 -12 285 696 ;
+C 106 ; WX 278 ; N j ; B -127 -206 274 696 ;
+C 107 ; WX 556 ; N k ; B 24 -12 567 708 ;
+C 108 ; WX 278 ; N l ; B 26 -12 292 708 ;
+C 109 ; WX 778 ; N m ; B 26 -12 745 482 ;
+C 110 ; WX 556 ; N n ; B 28 -12 523 482 ;
+C 111 ; WX 500 ; N o ; B 20 -12 473 482 ;
+C 112 ; WX 500 ; N p ; B -84 -206 488 482 ;
+C 113 ; WX 500 ; N q ; B 8 -206 486 482 ;
+C 114 ; WX 389 ; N r ; B 29 0 418 482 ;
+C 115 ; WX 389 ; N s ; B -6 -16 372 482 ;
+C 116 ; WX 333 ; N t ; B 41 -12 350 615 ;
+C 117 ; WX 556 ; N u ; B 44 -12 521 482 ;
+C 118 ; WX 444 ; N v ; B 49 -12 443 482 ;
+C 119 ; WX 667 ; N w ; B 46 -12 648 482 ;
+C 120 ; WX 500 ; N x ; B -6 -12 488 482 ;
+C 121 ; WX 444 ; N y ; B -71 -206 441 482 ;
+C 122 ; WX 444 ; N z ; B -4 -64 421 470 ;
+C 123 ; WX 389 ; N braceleft ; B 68 -190 387 680 ;
+C 124 ; WX 222 ; N bar ; B 95 0 177 708 ;
+C 125 ; WX 389 ; N braceright ; B -8 -190 311 680 ;
+C 126 ; WX 600 ; N asciitilde ; B 64 155 526 315 ;
+C 161 ; WX 389 ; N exclamdown ; B 58 -206 328 502 ;
+C 162 ; WX 500 ; N cent ; B 40 -131 479 581 ;
+C 163 ; WX 500 ; N sterling ; B -2 -12 492 696 ;
+C 164 ; WX 167 ; N fraction ; B -167 -16 334 696 ;
+C 165 ; WX 500 ; N yen ; B -8 0 646 680 ;
+C 166 ; WX 500 ; N florin ; B -79 -206 543 708 ;
+C 167 ; WX 500 ; N section ; B 36 -132 460 696 ;
+C 168 ; WX 500 ; N currency ; B 39 113 491 567 ;
+C 169 ; WX 222 ; N quotesingle ; B 138 380 224 696 ;
+C 170 ; WX 500 ; N quotedblleft ; B 100 416 485 696 ;
+C 171 ; WX 500 ; N guillemotleft ; B 21 43 480 427 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 41 43 313 427 ;
+C 173 ; WX 333 ; N guilsinglright ; B 20 43 292 427 ;
+C 174 ; WX 556 ; N fi ; B -147 -206 529 708 ;
+C 175 ; WX 556 ; N fl ; B -148 -206 559 708 ;
+C 177 ; WX 500 ; N endash ; B -8 197 508 273 ;
+C 178 ; WX 500 ; N dagger ; B 91 -134 494 696 ;
+C 179 ; WX 500 ; N daggerdbl ; B 9 -128 493 696 ;
+C 180 ; WX 250 ; N periodcentered ; B 53 164 195 306 ;
+C 182 ; WX 620 ; N paragraph ; B 130 -166 676 696 ;
+C 183 ; WX 500 ; N bullet ; B 100 170 440 510 ;
+C 184 ; WX 278 ; N quotesinglbase ; B 34 -152 196 128 ;
+C 185 ; WX 500 ; N quotedblbase ; B 34 -152 419 128 ;
+C 186 ; WX 500 ; N quotedblright ; B 127 416 512 696 ;
+C 187 ; WX 500 ; N guillemotright ; B 20 43 479 427 ;
+C 188 ; WX 1000 ; N ellipsis ; B 57 -16 863 124 ;
+C 189 ; WX 1000 ; N perthousand ; B 20 -12 1012 708 ;
+C 191 ; WX 500 ; N questiondown ; B 52 -206 406 502 ;
+C 193 ; WX 278 ; N grave ; B 88 532 291 708 ;
+C 194 ; WX 278 ; N acute ; B 144 532 377 708 ;
+C 195 ; WX 278 ; N circumflex ; B 45 532 359 708 ;
+C 196 ; WX 278 ; N tilde ; B 54 554 400 668 ;
+C 197 ; WX 278 ; N macron ; B 50 572 380 632 ;
+C 198 ; WX 278 ; N breve ; B 79 532 388 696 ;
+C 199 ; WX 278 ; N dotaccent ; B 168 544 282 658 ;
+C 200 ; WX 278 ; N dieresis ; B 66 544 385 658 ;
+C 202 ; WX 278 ; N ring ; B 123 532 329 738 ;
+C 203 ; WX 278 ; N cedilla ; B -56 -218 168 2 ;
+C 205 ; WX 278 ; N hungarumlaut ; B 50 532 439 708 ;
+C 206 ; WX 278 ; N ogonek ; B -31 -218 226 19 ;
+C 207 ; WX 278 ; N caron ; B 91 532 405 708 ;
+C 208 ; WX 1000 ; N emdash ; B -8 197 1008 273 ;
+C 225 ; WX 944 ; N AE ; B -41 0 953 680 ;
+C 227 ; WX 300 ; N ordfeminine ; B 46 400 348 696 ;
+C 232 ; WX 611 ; N Lslash ; B -6 0 606 680 ;
+C 233 ; WX 722 ; N Oslash ; B 48 -112 714 771 ;
+C 234 ; WX 944 ; N OE ; B 20 -16 985 696 ;
+C 235 ; WX 300 ; N ordmasculine ; B 58 400 353 696 ;
+C 241 ; WX 778 ; N ae ; B 37 -12 746 482 ;
+C 245 ; WX 278 ; N dotlessi ; B 30 -12 248 482 ;
+C 248 ; WX 278 ; N lslash ; B -18 -12 341 708 ;
+C 249 ; WX 500 ; N oslash ; B 20 -117 473 572 ;
+C 250 ; WX 778 ; N oe ; B 29 -12 756 482 ;
+C 251 ; WX 500 ; N germandbls ; B -163 -206 495 708 ;
+C -1 ; WX 444 ; N ecircumflex ; B 20 -12 465 708 ;
+C -1 ; WX 444 ; N edieresis ; B 20 -12 491 658 ;
+C -1 ; WX 500 ; N aacute ; B -1 -12 488 708 ;
+C -1 ; WX 800 ; N registered ; B 72 -16 768 696 ;
+C -1 ; WX 278 ; N icircumflex ; B 30 -12 347 708 ;
+C -1 ; WX 556 ; N udieresis ; B 44 -12 521 658 ;
+C -1 ; WX 500 ; N ograve ; B 20 -12 473 708 ;
+C -1 ; WX 556 ; N uacute ; B 44 -12 521 708 ;
+C -1 ; WX 556 ; N ucircumflex ; B 44 -12 521 708 ;
+C -1 ; WX 722 ; N Aacute ; B -36 0 678 889 ;
+C -1 ; WX 278 ; N igrave ; B 30 -12 279 708 ;
+C -1 ; WX 389 ; N Icircumflex ; B 2 0 444 889 ;
+C -1 ; WX 444 ; N ccedilla ; B 23 -218 437 482 ;
+C -1 ; WX 500 ; N adieresis ; B -1 -12 496 658 ;
+C -1 ; WX 667 ; N Ecircumflex ; B -10 0 666 889 ;
+C -1 ; WX 389 ; N scaron ; B -6 -16 461 708 ;
+C -1 ; WX 500 ; N thorn ; B -84 -206 488 708 ;
+C -1 ; WX 1000 ; N trademark ; B 72 274 1025 680 ;
+C -1 ; WX 444 ; N egrave ; B 20 -12 438 708 ;
+C -1 ; WX 300 ; N threesuperior ; B 32 268 336 696 ;
+C -1 ; WX 444 ; N zcaron ; B -4 -64 488 708 ;
+C -1 ; WX 500 ; N atilde ; B -1 -12 511 668 ;
+C -1 ; WX 500 ; N aring ; B -1 -12 469 738 ;
+C -1 ; WX 500 ; N ocircumflex ; B 20 -12 473 708 ;
+C -1 ; WX 667 ; N Edieresis ; B -10 0 666 839 ;
+C -1 ; WX 750 ; N threequarters ; B 32 -16 724 696 ;
+C -1 ; WX 444 ; N ydieresis ; B -71 -206 468 658 ;
+C -1 ; WX 444 ; N yacute ; B -71 -206 460 708 ;
+C -1 ; WX 278 ; N iacute ; B 30 -12 365 708 ;
+C -1 ; WX 722 ; N Acircumflex ; B -36 0 678 889 ;
+C -1 ; WX 778 ; N Uacute ; B 102 -16 820 889 ;
+C -1 ; WX 444 ; N eacute ; B 20 -12 483 708 ;
+C -1 ; WX 722 ; N Ograve ; B 48 -16 714 889 ;
+C -1 ; WX 500 ; N agrave ; B -1 -12 469 708 ;
+C -1 ; WX 778 ; N Udieresis ; B 102 -16 820 839 ;
+C -1 ; WX 500 ; N acircumflex ; B -1 -12 470 708 ;
+C -1 ; WX 389 ; N Igrave ; B 2 0 426 889 ;
+C -1 ; WX 300 ; N twosuperior ; B 26 278 332 696 ;
+C -1 ; WX 778 ; N Ugrave ; B 102 -16 820 889 ;
+C -1 ; WX 750 ; N onequarter ; B 45 -16 724 696 ;
+C -1 ; WX 778 ; N Ucircumflex ; B 102 -16 820 889 ;
+C -1 ; WX 556 ; N Scaron ; B 22 -16 585 889 ;
+C -1 ; WX 389 ; N Idieresis ; B 2 0 470 839 ;
+C -1 ; WX 278 ; N idieresis ; B 30 -12 373 658 ;
+C -1 ; WX 667 ; N Egrave ; B -10 0 666 889 ;
+C -1 ; WX 722 ; N Oacute ; B 48 -16 714 889 ;
+C -1 ; WX 600 ; N divide ; B 65 -28 535 498 ;
+C -1 ; WX 722 ; N Atilde ; B -36 0 678 849 ;
+C -1 ; WX 722 ; N Aring ; B -36 0 678 919 ;
+C -1 ; WX 722 ; N Odieresis ; B 48 -16 714 839 ;
+C -1 ; WX 722 ; N Adieresis ; B -36 0 678 839 ;
+C -1 ; WX 778 ; N Ntilde ; B -2 -16 814 849 ;
+C -1 ; WX 611 ; N Zcaron ; B -15 0 650 889 ;
+C -1 ; WX 611 ; N Thorn ; B -6 0 615 680 ;
+C -1 ; WX 389 ; N Iacute ; B 2 0 462 889 ;
+C -1 ; WX 600 ; N plusminus ; B 65 0 535 470 ;
+C -1 ; WX 600 ; N multiply ; B 65 0 535 470 ;
+C -1 ; WX 667 ; N Eacute ; B -10 0 666 889 ;
+C -1 ; WX 667 ; N Ydieresis ; B 96 0 750 839 ;
+C -1 ; WX 300 ; N onesuperior ; B 45 278 299 696 ;
+C -1 ; WX 556 ; N ugrave ; B 44 -12 521 708 ;
+C -1 ; WX 600 ; N logicalnot ; B 65 100 535 371 ;
+C -1 ; WX 556 ; N ntilde ; B 28 -12 523 668 ;
+C -1 ; WX 722 ; N Otilde ; B 48 -16 714 849 ;
+C -1 ; WX 500 ; N otilde ; B 20 -12 511 668 ;
+C -1 ; WX 722 ; N Ccedilla ; B 63 -218 742 696 ;
+C -1 ; WX 722 ; N Agrave ; B -36 0 678 889 ;
+C -1 ; WX 750 ; N onehalf ; B 45 -16 724 696 ;
+C -1 ; WX 778 ; N Eth ; B 0 0 767 680 ;
+C -1 ; WX 400 ; N degree ; B 107 410 393 696 ;
+C -1 ; WX 667 ; N Yacute ; B 96 0 750 889 ;
+C -1 ; WX 722 ; N Ocircumflex ; B 48 -16 714 889 ;
+C -1 ; WX 500 ; N oacute ; B 20 -12 488 708 ;
+C -1 ; WX 556 ; N mu ; B -82 -206 521 482 ;
+C -1 ; WX 600 ; N minus ; B 65 194 535 276 ;
+C -1 ; WX 500 ; N eth ; B 20 -12 473 708 ;
+C -1 ; WX 500 ; N odieresis ; B 20 -12 496 658 ;
+C -1 ; WX 800 ; N copyright ; B 72 -16 768 696 ;
+C -1 ; WX 222 ; N brokenbar ; B 95 0 177 708 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 85
+
+KPX A y -37
+KPX A w -37
+KPX A v -37
+KPX A quoteright -92
+KPX A Y -55
+KPX A W -74
+KPX A V -37
+KPX A T -55
+
+KPX F period -129
+KPX F comma -129
+KPX F A -74
+
+KPX L y -37
+KPX L quoteright -111
+KPX L Y -74
+KPX L W -92
+KPX L V -37
+KPX L T -37
+
+KPX P period -129
+KPX P comma -129
+KPX P A -55
+
+KPX R Y -37
+KPX R W -55
+KPX R T -18
+
+KPX T y -74
+KPX T w -111
+KPX T u -92
+KPX T semicolon -74
+KPX T r -92
+KPX T period -111
+KPX T o -92
+KPX T i -37
+KPX T hyphen -92
+KPX T e -92
+KPX T comma -111
+KPX T colon -74
+KPX T a -92
+KPX T A -92
+
+KPX V u -111
+KPX V semicolon -129
+KPX V period -129
+KPX V o -129
+KPX V i -92
+KPX V hyphen -129
+KPX V e -129
+KPX V comma -129
+KPX V colon -129
+KPX V a -129
+KPX V A -129
+
+KPX W y -37
+KPX W u -37
+KPX W semicolon -74
+KPX W period -129
+KPX W o -55
+KPX W i -18
+KPX W hyphen -74
+KPX W e -55
+KPX W comma -129
+KPX W colon -74
+KPX W a -55
+KPX W A -74
+
+KPX Y u -37
+KPX Y semicolon -92
+KPX Y period -129
+KPX Y o -55
+KPX Y i -18
+KPX Y hyphen -92
+KPX Y e -55
+KPX Y comma -129
+KPX Y colon -92
+KPX Y a -55
+KPX Y A -55
+
+KPX f quoteright 37
+
+KPX quoteleft quoteleft -55
+
+KPX quoteright t -18
+KPX quoteright s -55
+KPX quoteright quoteright -55
+
+KPX r period -111
+KPX r hyphen -55
+KPX r comma -111
+
+KPX v period -74
+KPX v comma -74
+
+KPX w period -74
+KPX w comma -74
+
+KPX y period -74
+KPX y comma -74
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 257 181 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 257 181 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 257 181 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 257 181 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 257 181 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 257 181 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 224 181 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 224 181 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 224 181 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 224 181 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 85 181 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 85 181 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 85 181 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 85 181 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 279 181 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 268 181 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 268 181 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 268 181 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 268 181 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 268 181 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 180 181 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 302 181 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 302 181 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 302 181 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 302 181 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 236 181 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 236 181 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 208 181 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 111 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 111 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 111 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 111 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 111 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 111 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 106 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 106 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 106 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 106 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -12 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -12 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -12 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -12 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 122 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 111 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 111 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 111 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 111 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 111 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 56 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 122 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 122 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 122 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 122 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 83 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 83 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 83 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/Ti-SmIt+ b/font/font/Ti-SmIt+
new file mode 100644
index 0000000..28d9de6
--- /dev/null
+++ b/font/font/Ti-SmIt+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 722 ; N Ccaron ; B 63 -16 743 918 ;
+C -1 ; WX 444 ; N ccaron ; B 23 -12 509 708 ;
+C -1 ; WX 778 ; N Dcaron ; B 0 0 767 918 ;
+C -1 ; WX 613 ; N dcaron ; B -1 -12 695 779 ;
+C -1 ; WX 667 ; N Ecaron ; B -10 0 666 918 ;
+C -1 ; WX 444 ; N ecaron ; B 20 -12 488 708 ;
+C -1 ; WX 611 ; N Lcaron ; B -6 0 606 748 ;
+C -1 ; WX 611 ; N Lacute ; B -6 0 606 918 ;
+C -1 ; WX 391 ; N lcaron ; B 26 -12 470 779 ;
+C -1 ; WX 278 ; N lacute ; B 26 -12 448 918 ;
+C -1 ; WX 778 ; N Ncaron ; B -2 -16 814 918 ;
+C -1 ; WX 556 ; N ncaron ; B 28 -12 544 708 ;
+C -1 ; WX 722 ; N Rcaron ; B 1 0 683 918 ;
+C -1 ; WX 722 ; N Racute ; B 1 0 691 918 ;
+C -1 ; WX 389 ; N rcaron ; B 29 0 460 708 ;
+C -1 ; WX 389 ; N racute ; B 29 0 455 708 ;
+C -1 ; WX 611 ; N Tcaron ; B 61 0 668 918 ;
+C -1 ; WX 446 ; N tcaron ; B 41 -12 528 696 ;
+C -1 ; WX 778 ; N Uring ; B 102 -16 820 918 ;
+C -1 ; WX 556 ; N uring ; B 44 -12 521 738 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 338 210 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 104 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 298 210 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 406 83 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 242 210 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 83 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 315 52 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 214 210 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 181 83 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 71 210 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 298 210 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 139 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 270 210 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 314 210 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 55 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 78 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 214 210 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 239 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 291 180 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 139 0 ;
+EndBuildComposites
diff --git a/font/font/ZC-Bd b/font/font/ZC-Bd
new file mode 100644
index 0000000..bcb6209
--- /dev/null
+++ b/font/font/ZC-Bd
@@ -0,0 +1,491 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1990 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Thu Sep 6 11:34:10 1990
+Comment UniqueID 32817
+Comment VMusage 33645 40537
+FontName ZapfChancery-Bold
+FullName ITC Zapf Chancery Bold
+FamilyName ITC Zapf Chancery
+Weight Bold
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -188 -314 1006 819
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.000
+Notice Copyright (c) 1990 Adobe Systems Incorporated. All Rights Reserved.ITC Zapf Chancery is a registered trademark of International Typeface Corporation.
+EncodingScheme AdobeStandardEncoding
+CapHeight 594
+XHeight 449
+Ascender 714
+Descender -300
+StartCharMetrics 228
+C 32 ; WX 278 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 333 ; N exclam ; B 58 -16 285 610 ;
+C 34 ; WX 389 ; N quotedbl ; B 61 258 328 610 ;
+C 35 ; WX 556 ; N numbersign ; B 33 0 523 610 ;
+C 36 ; WX 556 ; N dollar ; B 29 -154 474 707 ;
+C 37 ; WX 667 ; N percent ; B 48 -183 619 700 ;
+C 38 ; WX 889 ; N ampersand ; B 30 -16 847 610 ;
+C 39 ; WX 222 ; N quoteright ; B 35 258 213 610 ;
+C 40 ; WX 333 ; N parenleft ; B 78 -210 344 666 ;
+C 41 ; WX 333 ; N parenright ; B -11 -210 255 666 ;
+C 42 ; WX 444 ; N asterisk ; B 46 236 398 610 ;
+C 43 ; WX 600 ; N plus ; B 47 0 553 506 ;
+C 44 ; WX 278 ; N comma ; B -50 -178 192 198 ;
+C 45 ; WX 333 ; N hyphen ; B 16 169 317 269 ;
+C 46 ; WX 278 ; N period ; B 47 -16 231 168 ;
+C 47 ; WX 296 ; N slash ; B -44 -16 340 610 ;
+C 48 ; WX 556 ; N zero ; B 36 -16 520 610 ;
+C 49 ; WX 556 ; N one ; B 60 0 471 610 ;
+C 50 ; WX 556 ; N two ; B 16 -16 533 610 ;
+C 51 ; WX 556 ; N three ; B 0 -16 464 610 ;
+C 52 ; WX 556 ; N four ; B 0 -36 520 610 ;
+C 53 ; WX 556 ; N five ; B 16 -16 520 672 ;
+C 54 ; WX 556 ; N six ; B 49 -16 520 610 ;
+C 55 ; WX 556 ; N seven ; B 77 -28 520 674 ;
+C 56 ; WX 556 ; N eight ; B 36 -16 483 610 ;
+C 57 ; WX 556 ; N nine ; B 5 -16 507 610 ;
+C 58 ; WX 278 ; N colon ; B 47 -16 242 449 ;
+C 59 ; WX 278 ; N semicolon ; B -50 -178 242 449 ;
+C 60 ; WX 600 ; N less ; B 47 -8 553 514 ;
+C 61 ; WX 600 ; N equal ; B 47 107 553 399 ;
+C 62 ; WX 600 ; N greater ; B 47 -8 553 514 ;
+C 63 ; WX 389 ; N question ; B 58 -16 379 610 ;
+C 64 ; WX 800 ; N at ; B 87 -16 713 610 ;
+C 65 ; WX 667 ; N A ; B -94 -16 703 610 ;
+C 66 ; WX 667 ; N B ; B -18 -3 618 597 ;
+C 67 ; WX 611 ; N C ; B 31 -16 603 610 ;
+C 68 ; WX 722 ; N D ; B -27 -3 691 597 ;
+C 69 ; WX 667 ; N E ; B -27 -16 632 610 ;
+C 70 ; WX 556 ; N F ; B -27 0 583 610 ;
+C 71 ; WX 722 ; N G ; B 37 -102 728 610 ;
+C 72 ; WX 778 ; N H ; B -27 0 805 594 ;
+C 73 ; WX 389 ; N I ; B -27 0 401 594 ;
+C 74 ; WX 333 ; N J ; B -139 -214 352 594 ;
+C 75 ; WX 722 ; N K ; B -27 -16 759 604 ;
+C 76 ; WX 556 ; N L ; B -14 -16 559 594 ;
+C 77 ; WX 889 ; N M ; B -27 -16 916 604 ;
+C 78 ; WX 722 ; N N ; B -27 -8 749 594 ;
+C 79 ; WX 722 ; N O ; B 31 -16 691 610 ;
+C 80 ; WX 611 ; N P ; B -27 0 594 597 ;
+C 81 ; WX 722 ; N Q ; B 31 -173 764 610 ;
+C 82 ; WX 722 ; N R ; B -27 -16 762 597 ;
+C 83 ; WX 500 ; N S ; B -18 -16 476 610 ;
+C 84 ; WX 667 ; N T ; B 13 0 654 604 ;
+C 85 ; WX 778 ; N U ; B 0 -16 811 594 ;
+C 86 ; WX 611 ; N V ; B -63 -16 598 610 ;
+C 87 ; WX 944 ; N W ; B -58 -16 940 610 ;
+C 88 ; WX 611 ; N X ; B -58 -16 651 610 ;
+C 89 ; WX 611 ; N Y ; B -50 0 651 610 ;
+C 90 ; WX 611 ; N Z ; B -18 -31 604 610 ;
+C 91 ; WX 389 ; N bracketleft ; B 93 -200 380 656 ;
+C 92 ; WX 296 ; N backslash ; B -44 -16 340 610 ;
+C 93 ; WX 389 ; N bracketright ; B 9 -200 296 656 ;
+C 94 ; WX 600 ; N asciicircum ; B 82 229 518 594 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 222 ; N quoteleft ; B 41 258 219 610 ;
+C 97 ; WX 500 ; N a ; B 22 -14 524 449 ;
+C 98 ; WX 500 ; N b ; B 29 -16 465 714 ;
+C 99 ; WX 389 ; N c ; B 17 -14 418 449 ;
+C 100 ; WX 500 ; N d ; B 22 -14 599 714 ;
+C 101 ; WX 389 ; N e ; B 17 -14 413 449 ;
+C 102 ; WX 333 ; N f ; B -187 -314 464 714 ; L i fi ; L l fl ;
+C 103 ; WX 500 ; N g ; B -64 -314 479 449 ;
+C 104 ; WX 556 ; N h ; B 30 -14 595 714 ;
+C 105 ; WX 333 ; N i ; B 2 -14 347 649 ;
+C 106 ; WX 278 ; N j ; B -146 -314 228 649 ;
+C 107 ; WX 500 ; N k ; B 17 -14 539 714 ;
+C 108 ; WX 278 ; N l ; B 32 -14 361 714 ;
+C 109 ; WX 778 ; N m ; B -29 -14 817 449 ;
+C 110 ; WX 556 ; N n ; B -23 -14 595 449 ;
+C 111 ; WX 500 ; N o ; B 17 -14 465 449 ;
+C 112 ; WX 500 ; N p ; B -63 -300 465 584 ;
+C 113 ; WX 500 ; N q ; B 22 -300 507 526 ;
+C 114 ; WX 389 ; N r ; B -6 -14 407 449 ;
+C 115 ; WX 389 ; N s ; B -2 -14 346 449 ;
+C 116 ; WX 333 ; N t ; B -58 -14 354 579 ;
+C 117 ; WX 556 ; N u ; B -18 -14 583 449 ;
+C 118 ; WX 444 ; N v ; B -30 -14 442 449 ;
+C 119 ; WX 722 ; N w ; B -30 -14 720 449 ;
+C 120 ; WX 500 ; N x ; B -11 -72 508 449 ;
+C 121 ; WX 444 ; N y ; B -152 -314 436 449 ;
+C 122 ; WX 389 ; N z ; B -30 -14 432 449 ;
+C 123 ; WX 389 ; N braceleft ; B 76 -200 367 656 ;
+C 124 ; WX 222 ; N bar ; B 67 -16 155 714 ;
+C 125 ; WX 389 ; N braceright ; B 22 -200 313 656 ;
+C 126 ; WX 600 ; N asciitilde ; B 69 173 531 333 ;
+C 161 ; WX 333 ; N exclamdown ; B 40 -177 267 449 ;
+C 162 ; WX 556 ; N cent ; B 67 -128 456 554 ;
+C 163 ; WX 556 ; N sterling ; B 0 -43 536 610 ;
+C 164 ; WX 167 ; N fraction ; B -170 -16 337 610 ;
+C 165 ; WX 556 ; N yen ; B -43 0 593 610 ;
+C 166 ; WX 556 ; N florin ; B -110 -314 558 610 ;
+C 167 ; WX 500 ; N section ; B 25 -216 426 610 ;
+C 168 ; WX 556 ; N currency ; B 22 43 534 554 ;
+C 169 ; WX 222 ; N quotesingle ; B 61 258 161 610 ;
+C 170 ; WX 389 ; N quotedblleft ; B 27 258 379 610 ;
+C 171 ; WX 444 ; N guillemotleft ; B 49 14 375 424 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 64 14 242 424 ;
+C 173 ; WX 333 ; N guilsinglright ; B 64 14 242 424 ;
+C 174 ; WX 556 ; N fi ; B -187 -314 585 714 ;
+C 175 ; WX 556 ; N fl ; B -187 -314 604 714 ;
+C 177 ; WX 500 ; N endash ; B -6 184 506 254 ;
+C 178 ; WX 444 ; N dagger ; B 2 -41 442 610 ;
+C 179 ; WX 444 ; N daggerdbl ; B 39 -60 385 610 ;
+C 180 ; WX 278 ; N periodcentered ; B 71 191 207 327 ;
+C 182 ; WX 620 ; N paragraph ; B 72 -200 579 594 ;
+C 183 ; WX 500 ; N bullet ; B 102 149 398 445 ;
+C 184 ; WX 222 ; N quotesinglbase ; B -13 -160 165 192 ;
+C 185 ; WX 389 ; N quotedblbase ; B -14 -160 338 192 ;
+C 186 ; WX 389 ; N quotedblright ; B 39 258 391 610 ;
+C 187 ; WX 444 ; N guillemotright ; B 49 14 375 424 ;
+C 188 ; WX 1000 ; N ellipsis ; B 75 -16 925 168 ;
+C 189 ; WX 944 ; N perthousand ; B 25 -183 919 700 ;
+C 191 ; WX 389 ; N questiondown ; B -4 -177 317 449 ;
+C 193 ; WX 278 ; N grave ; B 29 516 221 688 ;
+C 194 ; WX 278 ; N acute ; B 97 510 301 688 ;
+C 195 ; WX 278 ; N circumflex ; B 21 510 271 688 ;
+C 196 ; WX 278 ; N tilde ; B 6 543 304 661 ;
+C 197 ; WX 278 ; N macron ; B 21 555 279 619 ;
+C 198 ; WX 278 ; N breve ; B 36 540 309 668 ;
+C 199 ; WX 278 ; N dotaccent ; B 73 532 221 674 ;
+C 200 ; WX 278 ; N dieresis ; B -14 532 308 674 ;
+C 202 ; WX 278 ; N ring ; B 53 498 225 670 ;
+C 203 ; WX 278 ; N cedilla ; B -22 -190 186 20 ;
+C 205 ; WX 278 ; N hungarumlaut ; B -16 510 362 688 ;
+C 206 ; WX 278 ; N ogonek ; B -33 -190 209 20 ;
+C 207 ; WX 278 ; N caron ; B 46 510 296 688 ;
+C 208 ; WX 1000 ; N emdash ; B -6 184 1006 254 ;
+C 225 ; WX 889 ; N AE ; B -35 -16 845 610 ;
+C 227 ; WX 325 ; N ordfeminine ; B 8 333 348 610 ;
+C 232 ; WX 556 ; N Lslash ; B -14 -16 559 594 ;
+C 233 ; WX 722 ; N Oslash ; B 31 -94 691 683 ;
+C 234 ; WX 1000 ; N OE ; B 46 -16 965 610 ;
+C 235 ; WX 325 ; N ordmasculine ; B 11 333 302 610 ;
+C 241 ; WX 667 ; N ae ; B 17 -14 696 493 ;
+C 245 ; WX 333 ; N dotlessi ; B 2 -14 347 449 ;
+C 248 ; WX 278 ; N lslash ; B -18 -14 361 714 ;
+C 249 ; WX 500 ; N oslash ; B 17 -99 470 521 ;
+C 250 ; WX 667 ; N oe ; B 22 -14 702 449 ;
+C 251 ; WX 556 ; N germandbls ; B -188 -314 502 714 ;
+C -1 ; WX 389 ; N ecircumflex ; B 17 -14 413 688 ;
+C -1 ; WX 389 ; N edieresis ; B 17 -14 413 674 ;
+C -1 ; WX 500 ; N aacute ; B 22 -14 524 688 ;
+C -1 ; WX 800 ; N registered ; B 87 -16 713 610 ;
+C -1 ; WX 333 ; N icircumflex ; B 2 -14 347 688 ;
+C -1 ; WX 556 ; N udieresis ; B -18 -14 583 674 ;
+C -1 ; WX 500 ; N ograve ; B 17 -14 465 688 ;
+C -1 ; WX 556 ; N uacute ; B -18 -14 583 688 ;
+C -1 ; WX 556 ; N ucircumflex ; B -18 -14 583 688 ;
+C -1 ; WX 667 ; N Aacute ; B -94 -16 703 819 ;
+C -1 ; WX 333 ; N igrave ; B 2 -14 347 688 ;
+C -1 ; WX 389 ; N Icircumflex ; B -27 0 401 819 ;
+C -1 ; WX 389 ; N ccedilla ; B 17 -190 418 449 ;
+C -1 ; WX 500 ; N adieresis ; B 22 -14 524 674 ;
+C -1 ; WX 667 ; N Ecircumflex ; B -27 -16 632 819 ;
+C -1 ; WX 389 ; N scaron ; B -2 -14 384 688 ;
+C -1 ; WX 500 ; N thorn ; B -63 -300 465 714 ;
+C -1 ; WX 1000 ; N trademark ; B 24 189 976 594 ;
+C -1 ; WX 389 ; N egrave ; B 17 -14 413 688 ;
+C -1 ; WX 361 ; N threesuperior ; B 1 234 308 610 ;
+C -1 ; WX 389 ; N zcaron ; B -30 -14 432 688 ;
+C -1 ; WX 500 ; N atilde ; B 22 -14 524 661 ;
+C -1 ; WX 500 ; N aring ; B 22 -14 524 670 ;
+C -1 ; WX 500 ; N ocircumflex ; B 17 -14 465 688 ;
+C -1 ; WX 667 ; N Edieresis ; B -27 -16 632 805 ;
+C -1 ; WX 834 ; N threequarters ; B 41 -16 793 610 ;
+C -1 ; WX 444 ; N ydieresis ; B -152 -314 436 674 ;
+C -1 ; WX 444 ; N yacute ; B -152 -314 436 688 ;
+C -1 ; WX 333 ; N iacute ; B 2 -14 347 688 ;
+C -1 ; WX 667 ; N Acircumflex ; B -94 -16 703 819 ;
+C -1 ; WX 778 ; N Uacute ; B 0 -16 811 819 ;
+C -1 ; WX 389 ; N eacute ; B 17 -14 413 688 ;
+C -1 ; WX 722 ; N Ograve ; B 31 -16 691 819 ;
+C -1 ; WX 500 ; N agrave ; B 22 -14 524 688 ;
+C -1 ; WX 778 ; N Udieresis ; B 0 -16 811 805 ;
+C -1 ; WX 500 ; N acircumflex ; B 22 -14 524 688 ;
+C -1 ; WX 389 ; N Igrave ; B -27 0 401 819 ;
+C -1 ; WX 361 ; N twosuperior ; B 8 234 345 610 ;
+C -1 ; WX 778 ; N Ugrave ; B 0 -16 811 819 ;
+C -1 ; WX 834 ; N onequarter ; B 41 -16 793 610 ;
+C -1 ; WX 778 ; N Ucircumflex ; B 0 -16 811 819 ;
+C -1 ; WX 500 ; N Scaron ; B -18 -16 476 819 ;
+C -1 ; WX 389 ; N Idieresis ; B -27 0 401 805 ;
+C -1 ; WX 333 ; N idieresis ; B 2 -14 347 674 ;
+C -1 ; WX 667 ; N Egrave ; B -27 -16 632 819 ;
+C -1 ; WX 722 ; N Oacute ; B 31 -16 691 819 ;
+C -1 ; WX 600 ; N divide ; B 47 -33 553 539 ;
+C -1 ; WX 667 ; N Atilde ; B -94 -16 703 792 ;
+C -1 ; WX 667 ; N Aring ; B -94 -16 703 801 ;
+C -1 ; WX 722 ; N Odieresis ; B 31 -16 691 805 ;
+C -1 ; WX 667 ; N Adieresis ; B -94 -16 703 805 ;
+C -1 ; WX 722 ; N Ntilde ; B -27 -8 749 792 ;
+C -1 ; WX 611 ; N Zcaron ; B -18 -31 604 819 ;
+C -1 ; WX 611 ; N Thorn ; B -27 0 573 594 ;
+C -1 ; WX 389 ; N Iacute ; B -27 0 401 819 ;
+C -1 ; WX 600 ; N plusminus ; B 47 0 553 506 ;
+C -1 ; WX 600 ; N multiply ; B 68 21 532 485 ;
+C -1 ; WX 667 ; N Eacute ; B -27 -16 632 819 ;
+C -1 ; WX 611 ; N Ydieresis ; B -50 0 651 805 ;
+C -1 ; WX 361 ; N onesuperior ; B 39 244 306 610 ;
+C -1 ; WX 556 ; N ugrave ; B -18 -14 583 688 ;
+C -1 ; WX 600 ; N logicalnot ; B 47 108 553 399 ;
+C -1 ; WX 556 ; N ntilde ; B -23 -14 595 661 ;
+C -1 ; WX 722 ; N Otilde ; B 31 -16 691 792 ;
+C -1 ; WX 500 ; N otilde ; B 17 -14 465 661 ;
+C -1 ; WX 611 ; N Ccedilla ; B 31 -190 603 610 ;
+C -1 ; WX 667 ; N Agrave ; B -94 -16 703 819 ;
+C -1 ; WX 834 ; N onehalf ; B 41 -16 830 610 ;
+C -1 ; WX 722 ; N Eth ; B -27 -3 692 597 ;
+C -1 ; WX 400 ; N degree ; B 57 324 343 610 ;
+C -1 ; WX 611 ; N Yacute ; B -50 0 651 819 ;
+C -1 ; WX 722 ; N Ocircumflex ; B 31 -16 691 819 ;
+C -1 ; WX 500 ; N oacute ; B 17 -14 465 688 ;
+C -1 ; WX 556 ; N mu ; B -18 -314 583 449 ;
+C -1 ; WX 600 ; N minus ; B 47 209 553 297 ;
+C -1 ; WX 500 ; N eth ; B 17 -14 474 714 ;
+C -1 ; WX 500 ; N odieresis ; B 17 -14 465 674 ;
+C -1 ; WX 800 ; N copyright ; B 87 -16 713 610 ;
+C -1 ; WX 222 ; N brokenbar ; B 67 -16 155 714 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 145
+
+KPX A y -37
+KPX A w -37
+KPX A v -37
+KPX A quoteright -40
+KPX A quotedblright -40
+KPX A Y -55
+KPX A W -55
+KPX A V -55
+KPX A T -55
+KPX A Q -10
+KPX A O -10
+KPX A G -10
+KPX A C -10
+
+KPX B period -50
+KPX B comma -50
+KPX B U -18
+
+KPX D period -50
+KPX D comma -50
+KPX D W 10
+KPX D V 10
+
+KPX F r -40
+KPX F period -129
+KPX F o -50
+KPX F i -18
+KPX F e -50
+KPX F comma -111
+KPX F a -50
+KPX F A -55
+
+KPX G period -50
+KPX G comma -50
+
+KPX J period -50
+KPX J comma -50
+
+KPX L y -18
+KPX L quoteright -10
+KPX L Y -74
+KPX L W -40
+KPX L V -40
+KPX L T -55
+
+KPX N period -50
+KPX N comma -50
+
+KPX O period -50
+KPX O comma -50
+KPX O W 10
+KPX O V 10
+
+KPX P period -129
+KPX P o -25
+KPX P e -25
+KPX P comma -129
+KPX P a -25
+KPX P A -55
+
+KPX Q period -50
+KPX Q comma 125
+
+KPX R Y -18
+KPX R W -37
+KPX R V -18
+KPX R U -10
+KPX R T -37
+
+KPX S period -50
+KPX S comma -50
+
+KPX T y -74
+KPX T w -92
+KPX T u -74
+KPX T semicolon -74
+KPX T r -55
+KPX T period -111
+KPX T o -74
+KPX T i -37
+KPX T hyphen -92
+KPX T e -74
+KPX T comma -92
+KPX T colon -74
+KPX T a -74
+KPX T A -55
+
+KPX V semicolon -18
+KPX V period -111
+KPX V o -18
+KPX V hyphen -37
+KPX V e -18
+KPX V comma -111
+KPX V colon -18
+KPX V a -18
+KPX V O 10
+KPX V G 10
+KPX V A -55
+
+KPX W period -111
+KPX W o -18
+KPX W hyphen -37
+KPX W e -18
+KPX W comma -111
+KPX W a -18
+KPX W O 10
+KPX W A -65
+
+KPX Y u -55
+KPX Y semicolon -55
+KPX Y period -111
+KPX Y o -74
+KPX Y i -37
+KPX Y hyphen -74
+KPX Y e -74
+KPX Y comma -92
+KPX Y colon -55
+KPX Y a -74
+KPX Y A -55
+
+KPX b period -50
+KPX b comma -50
+
+KPX colon space -37
+
+KPX comma space -37
+KPX comma quoteright -18
+KPX comma quotedblright -18
+
+KPX f quoteright 18
+KPX f period -75
+KPX f comma -50
+
+KPX g period -50
+KPX g comma -18
+
+KPX period quoteright -18
+KPX period quotedblright -18
+
+KPX quotedblleft quoteleft -18
+KPX quotedblleft A -40
+
+KPX quotedblright space -37
+
+KPX quoteleft quoteleft -40
+KPX quoteleft A -40
+
+KPX quoteright v 18
+KPX quoteright t 18
+KPX quoteright s -18
+KPX quoteright r 18
+KPX quoteright quoteright -40
+KPX quoteright quotedblright -18
+KPX quoteright l 18
+KPX quoteright d -18
+
+KPX r period -92
+KPX r hyphen -55
+KPX r comma -74
+
+KPX space quoteleft -37
+KPX space quotedblleft -37
+KPX space Y -37
+KPX space W -37
+KPX space V -37
+KPX space T -37
+KPX space A -37
+
+KPX v period -74
+KPX v comma -74
+
+KPX w period -74
+KPX w comma -74
+
+KPX y period -55
+KPX y comma -55
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 235 131 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 235 131 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 235 131 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 235 131 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 235 131 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 235 131 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 213 131 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 213 131 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 213 131 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 213 131 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 84 131 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 84 131 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 84 131 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 84 131 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 254 131 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 234 131 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 234 131 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 234 131 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 234 131 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 234 131 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 143 131 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 278 131 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 278 131 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 278 131 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 278 131 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 199 131 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 199 131 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 199 131 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 129 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 129 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 129 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 129 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 151 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 129 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 88 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 88 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 88 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 88 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute 34 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex 34 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis 34 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave 34 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 145 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 111 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 111 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 111 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 111 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 111 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 88 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 157 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 157 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 157 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 157 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 101 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 101 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 74 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/ZC-Bd+ b/font/font/ZC-Bd+
new file mode 100644
index 0000000..f3d9be1
--- /dev/null
+++ b/font/font/ZC-Bd+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 611 ; N Ccaron ; B 31 -16 603 826 ;
+C -1 ; WX 389 ; N ccaron ; B 17 -14 418 688 ;
+C -1 ; WX 722 ; N Dcaron ; B -27 -3 691 826 ;
+C -1 ; WX 625 ; N dcaron ; B 22 -14 795 785 ;
+C -1 ; WX 667 ; N Ecaron ; B -27 -16 632 826 ;
+C -1 ; WX 389 ; N ecaron ; B 17 -14 413 688 ;
+C -1 ; WX 556 ; N Lcaron ; B -14 -16 597 653 ;
+C -1 ; WX 556 ; N Lacute ; B -14 -16 559 826 ;
+C -1 ; WX 403 ; N lcaron ; B 32 -14 557 785 ;
+C -1 ; WX 278 ; N lacute ; B 32 -14 361 826 ;
+C -1 ; WX 722 ; N Ncaron ; B -27 -8 749 826 ;
+C -1 ; WX 556 ; N ncaron ; B -23 -14 595 688 ;
+C -1 ; WX 722 ; N Rcaron ; B -27 -16 762 826 ;
+C -1 ; WX 722 ; N Racute ; B -27 -16 762 826 ;
+C -1 ; WX 389 ; N rcaron ; B -6 -14 407 688 ;
+C -1 ; WX 389 ; N racute ; B -6 -14 407 688 ;
+C -1 ; WX 667 ; N Tcaron ; B 13 0 654 826 ;
+C -1 ; WX 458 ; N tcaron ; B -58 -14 550 610 ;
+C -1 ; WX 778 ; N Uring ; B 0 -16 811 826 ;
+C -1 ; WX 556 ; N uring ; B -18 -14 583 670 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 223 138 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 75 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 222 138 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 582 175 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 194 138 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 55 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 384 43 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 139 138 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 344 175 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 20 138 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 222 138 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 139 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 222 138 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 261 138 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 55 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 75 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 194 138 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 337 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 250 156 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 139 0 ;
+EndBuildComposites
diff --git a/font/font/ZC-Dm b/font/font/ZC-Dm
new file mode 100644
index 0000000..c37e41d
--- /dev/null
+++ b/font/font/ZC-Dm
@@ -0,0 +1,480 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1990 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Thu Sep 6 12:00:28 1990
+Comment UniqueID 32826
+Comment VMusage 34487 41379
+FontName ZapfChancery-Demi
+FullName ITC Zapf Chancery Demi
+FamilyName ITC Zapf Chancery
+Weight Demi
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -184 -314 1006 825
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.000
+Notice Copyright (c) 1990 Adobe Systems Incorporated. All Rights Reserved.ITC Zapf Chancery is a registered trademark of International Typeface Corporation.
+EncodingScheme AdobeStandardEncoding
+CapHeight 594
+XHeight 443
+Ascender 714
+Descender -300
+StartCharMetrics 228
+C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 278 ; N exclam ; B 53 -14 225 610 ;
+C 34 ; WX 389 ; N quotedbl ; B 82 294 307 610 ;
+C 35 ; WX 500 ; N numbersign ; B 32 0 469 594 ;
+C 36 ; WX 500 ; N dollar ; B 30 -149 417 714 ;
+C 37 ; WX 667 ; N percent ; B 46 -167 621 706 ;
+C 38 ; WX 833 ; N ampersand ; B 14 -14 819 610 ;
+C 39 ; WX 222 ; N quoteright ; B 22 294 176 610 ;
+C 40 ; WX 333 ; N parenleft ; B 89 -213 301 669 ;
+C 41 ; WX 333 ; N parenright ; B 32 -213 244 669 ;
+C 42 ; WX 444 ; N asterisk ; B 54 256 390 610 ;
+C 43 ; WX 600 ; N plus ; B 47 0 553 506 ;
+C 44 ; WX 250 ; N comma ; B -48 -140 166 193 ;
+C 45 ; WX 333 ; N hyphen ; B 32 187 301 251 ;
+C 46 ; WX 250 ; N period ; B 48 -14 202 154 ;
+C 47 ; WX 296 ; N slash ; B -40 -16 336 610 ;
+C 48 ; WX 500 ; N zero ; B 38 -16 462 610 ;
+C 49 ; WX 500 ; N one ; B 53 0 435 614 ;
+C 50 ; WX 500 ; N two ; B 7 -16 473 610 ;
+C 51 ; WX 500 ; N three ; B -18 -16 410 610 ;
+C 52 ; WX 500 ; N four ; B 9 -24 468 610 ;
+C 53 ; WX 500 ; N five ; B 7 -16 480 670 ;
+C 54 ; WX 500 ; N six ; B 38 -16 462 610 ;
+C 55 ; WX 500 ; N seven ; B 75 -26 498 668 ;
+C 56 ; WX 500 ; N eight ; B 35 -16 443 610 ;
+C 57 ; WX 500 ; N nine ; B 3 -16 453 610 ;
+C 58 ; WX 250 ; N colon ; B 48 -14 202 443 ;
+C 59 ; WX 250 ; N semicolon ; B -48 -140 202 443 ;
+C 60 ; WX 600 ; N less ; B 47 -8 553 514 ;
+C 61 ; WX 600 ; N equal ; B 47 121 553 385 ;
+C 62 ; WX 600 ; N greater ; B 47 -8 553 514 ;
+C 63 ; WX 333 ; N question ; B 59 -14 321 610 ;
+C 64 ; WX 800 ; N at ; B 87 -16 713 610 ;
+C 65 ; WX 611 ; N A ; B -94 -16 628 610 ;
+C 66 ; WX 611 ; N B ; B -22 -4 558 598 ;
+C 67 ; WX 611 ; N C ; B 36 -16 571 610 ;
+C 68 ; WX 722 ; N D ; B -10 -4 675 598 ;
+C 69 ; WX 611 ; N E ; B -10 -10 572 610 ;
+C 70 ; WX 500 ; N F ; B -22 0 522 610 ;
+C 71 ; WX 667 ; N G ; B 36 -78 653 610 ;
+C 72 ; WX 722 ; N H ; B -22 0 744 594 ;
+C 73 ; WX 333 ; N I ; B -10 0 343 594 ;
+C 74 ; WX 278 ; N J ; B -146 -215 306 594 ;
+C 75 ; WX 611 ; N K ; B -10 -16 646 610 ;
+C 76 ; WX 556 ; N L ; B 0 -10 528 594 ;
+C 77 ; WX 833 ; N M ; B -17 -16 850 594 ;
+C 78 ; WX 667 ; N N ; B -10 -16 684 594 ;
+C 79 ; WX 722 ; N O ; B 36 -16 686 610 ;
+C 80 ; WX 556 ; N P ; B -22 0 540 594 ;
+C 81 ; WX 722 ; N Q ; B 36 -176 766 610 ;
+C 82 ; WX 611 ; N R ; B -10 -16 643 594 ;
+C 83 ; WX 500 ; N S ; B 5 -16 449 610 ;
+C 84 ; WX 611 ; N T ; B 16 0 595 604 ;
+C 85 ; WX 722 ; N U ; B -14 -16 736 594 ;
+C 86 ; WX 556 ; N V ; B -48 -16 562 610 ;
+C 87 ; WX 944 ; N W ; B -24 -16 954 610 ;
+C 88 ; WX 611 ; N X ; B -41 -16 632 610 ;
+C 89 ; WX 611 ; N Y ; B -38 0 649 610 ;
+C 90 ; WX 611 ; N Z ; B -15 -23 600 610 ;
+C 91 ; WX 333 ; N bracketleft ; B 74 -207 355 663 ;
+C 92 ; WX 296 ; N backslash ; B -40 -16 336 610 ;
+C 93 ; WX 333 ; N bracketright ; B -22 -207 259 663 ;
+C 94 ; WX 600 ; N asciicircum ; B 89 229 511 594 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 222 ; N quoteleft ; B 46 294 200 610 ;
+C 97 ; WX 444 ; N a ; B 22 -14 488 443 ;
+C 98 ; WX 444 ; N b ; B 40 -14 408 714 ;
+C 99 ; WX 389 ; N c ; B 22 -14 400 444 ;
+C 100 ; WX 444 ; N d ; B 22 -14 550 714 ;
+C 101 ; WX 389 ; N e ; B 22 -14 399 443 ;
+C 102 ; WX 278 ; N f ; B -160 -314 410 714 ; L i fi ; L l fl ;
+C 103 ; WX 444 ; N g ; B -32 -314 430 443 ;
+C 104 ; WX 500 ; N h ; B 40 -14 543 714 ;
+C 105 ; WX 278 ; N i ; B -6 -14 306 654 ;
+C 106 ; WX 278 ; N j ; B -116 -314 223 654 ;
+C 107 ; WX 444 ; N k ; B 31 -14 487 714 ;
+C 108 ; WX 278 ; N l ; B 61 -14 341 714 ;
+C 109 ; WX 722 ; N m ; B -20 -14 771 443 ;
+C 110 ; WX 500 ; N n ; B -20 -14 551 443 ;
+C 111 ; WX 444 ; N o ; B 28 -14 416 443 ;
+C 112 ; WX 444 ; N p ; B -68 -300 408 560 ;
+C 113 ; WX 444 ; N q ; B 22 -300 483 486 ;
+C 114 ; WX 333 ; N r ; B -13 -14 372 443 ;
+C 115 ; WX 389 ; N s ; B 18 -14 355 443 ;
+C 116 ; WX 333 ; N t ; B 0 -14 345 552 ;
+C 117 ; WX 500 ; N u ; B -20 -14 549 443 ;
+C 118 ; WX 444 ; N v ; B -30 -14 431 456 ;
+C 119 ; WX 722 ; N w ; B -30 -14 698 454 ;
+C 120 ; WX 444 ; N x ; B -18 -55 450 443 ;
+C 121 ; WX 444 ; N y ; B -127 -314 429 455 ;
+C 122 ; WX 389 ; N z ; B -22 -14 438 443 ;
+C 123 ; WX 333 ; N braceleft ; B 40 -207 300 663 ;
+C 124 ; WX 222 ; N bar ; B 79 -16 143 714 ;
+C 125 ; WX 333 ; N braceright ; B 33 -207 293 663 ;
+C 126 ; WX 600 ; N asciitilde ; B 69 183 531 323 ;
+C 161 ; WX 278 ; N exclamdown ; B 53 -181 225 443 ;
+C 162 ; WX 500 ; N cent ; B 51 -149 421 554 ;
+C 163 ; WX 500 ; N sterling ; B -9 -50 498 610 ;
+C 164 ; WX 167 ; N fraction ; B -166 -16 333 610 ;
+C 165 ; WX 500 ; N yen ; B -27 0 527 610 ;
+C 166 ; WX 500 ; N florin ; B -132 -314 514 610 ;
+C 167 ; WX 500 ; N section ; B 63 -212 420 610 ;
+C 168 ; WX 500 ; N currency ; B 0 47 500 547 ;
+C 169 ; WX 222 ; N quotesingle ; B 73 294 149 610 ;
+C 170 ; WX 389 ; N quotedblleft ; B 56 294 364 610 ;
+C 171 ; WX 444 ; N guillemotleft ; B 62 19 370 419 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 69 19 243 419 ;
+C 173 ; WX 333 ; N guilsinglright ; B 69 19 243 419 ;
+C 174 ; WX 500 ; N fi ; B -184 -314 543 714 ;
+C 175 ; WX 500 ; N fl ; B -168 -314 553 714 ;
+C 177 ; WX 500 ; N endash ; B -6 193 506 245 ;
+C 178 ; WX 444 ; N dagger ; B 12 -32 442 610 ;
+C 179 ; WX 444 ; N daggerdbl ; B 48 -43 396 610 ;
+C 180 ; WX 250 ; N periodcentered ; B 63 199 187 323 ;
+C 182 ; WX 620 ; N paragraph ; B 80 -196 567 594 ;
+C 183 ; WX 500 ; N bullet ; B 102 149 398 445 ;
+C 184 ; WX 222 ; N quotesinglbase ; B 22 -113 176 203 ;
+C 185 ; WX 389 ; N quotedblbase ; B 25 -113 333 203 ;
+C 186 ; WX 389 ; N quotedblright ; B 25 294 333 610 ;
+C 187 ; WX 444 ; N guillemotright ; B 62 19 370 419 ;
+C 188 ; WX 1000 ; N ellipsis ; B 90 -14 910 154 ;
+C 189 ; WX 944 ; N perthousand ; B 23 -167 921 706 ;
+C 191 ; WX 333 ; N questiondown ; B 12 -181 274 443 ;
+C 193 ; WX 278 ; N grave ; B 34 496 220 664 ;
+C 194 ; WX 278 ; N acute ; B 93 496 279 664 ;
+C 195 ; WX 278 ; N circumflex ; B 23 496 255 670 ;
+C 196 ; WX 278 ; N tilde ; B 12 524 300 630 ;
+C 197 ; WX 278 ; N macron ; B 24 543 274 589 ;
+C 198 ; WX 278 ; N breve ; B 41 524 303 642 ;
+C 199 ; WX 278 ; N dotaccent ; B 83 524 207 642 ;
+C 200 ; WX 278 ; N dieresis ; B 3 524 281 642 ;
+C 202 ; WX 278 ; N ring ; B 71 496 251 676 ;
+C 203 ; WX 278 ; N cedilla ; B -42 -193 160 9 ;
+C 205 ; WX 278 ; N hungarumlaut ; B 16 496 356 664 ;
+C 206 ; WX 278 ; N ogonek ; B -24 -193 210 9 ;
+C 207 ; WX 278 ; N caron ; B 58 496 290 670 ;
+C 208 ; WX 1000 ; N emdash ; B -6 193 1006 245 ;
+C 225 ; WX 833 ; N AE ; B -20 -10 789 610 ;
+C 227 ; WX 289 ; N ordfeminine ; B 20 336 335 610 ;
+C 232 ; WX 556 ; N Lslash ; B 0 -10 528 594 ;
+C 233 ; WX 722 ; N Oslash ; B 36 -90 686 684 ;
+C 234 ; WX 944 ; N OE ; B 42 -10 890 610 ;
+C 235 ; WX 289 ; N ordmasculine ; B 29 336 290 610 ;
+C 241 ; WX 611 ; N ae ; B 22 -14 645 479 ;
+C 245 ; WX 278 ; N dotlessi ; B -6 -14 306 443 ;
+C 248 ; WX 278 ; N lslash ; B -6 -14 341 714 ;
+C 249 ; WX 444 ; N oslash ; B 17 -80 427 509 ;
+C 250 ; WX 667 ; N oe ; B 22 -14 685 443 ;
+C 251 ; WX 500 ; N germandbls ; B -167 -314 479 714 ;
+C -1 ; WX 389 ; N ecircumflex ; B 22 -14 399 670 ;
+C -1 ; WX 389 ; N edieresis ; B 22 -14 399 642 ;
+C -1 ; WX 444 ; N aacute ; B 22 -14 488 664 ;
+C -1 ; WX 800 ; N registered ; B 87 -16 713 610 ;
+C -1 ; WX 278 ; N icircumflex ; B -6 -14 306 670 ;
+C -1 ; WX 500 ; N udieresis ; B -20 -14 549 642 ;
+C -1 ; WX 444 ; N ograve ; B 28 -14 416 664 ;
+C -1 ; WX 500 ; N uacute ; B -20 -14 549 664 ;
+C -1 ; WX 500 ; N ucircumflex ; B -20 -14 549 670 ;
+C -1 ; WX 611 ; N Aacute ; B -94 -16 628 803 ;
+C -1 ; WX 278 ; N igrave ; B -6 -14 306 664 ;
+C -1 ; WX 333 ; N Icircumflex ; B -10 0 343 809 ;
+C -1 ; WX 389 ; N ccedilla ; B 22 -193 400 444 ;
+C -1 ; WX 444 ; N adieresis ; B 22 -14 488 642 ;
+C -1 ; WX 611 ; N Ecircumflex ; B -10 -10 572 809 ;
+C -1 ; WX 389 ; N scaron ; B 18 -14 392 670 ;
+C -1 ; WX 444 ; N thorn ; B -68 -300 408 714 ;
+C -1 ; WX 1000 ; N trademark ; B 37 190 963 594 ;
+C -1 ; WX 389 ; N egrave ; B 22 -14 399 664 ;
+C -1 ; WX 325 ; N threesuperior ; B 8 234 294 610 ;
+C -1 ; WX 389 ; N zcaron ; B -22 -14 438 670 ;
+C -1 ; WX 444 ; N atilde ; B 22 -14 488 630 ;
+C -1 ; WX 444 ; N aring ; B 22 -14 488 676 ;
+C -1 ; WX 444 ; N ocircumflex ; B 28 -14 416 670 ;
+C -1 ; WX 611 ; N Edieresis ; B -10 -10 572 781 ;
+C -1 ; WX 750 ; N threequarters ; B 28 -16 739 610 ;
+C -1 ; WX 444 ; N ydieresis ; B -127 -314 429 642 ;
+C -1 ; WX 444 ; N yacute ; B -127 -314 429 664 ;
+C -1 ; WX 278 ; N iacute ; B -6 -14 306 664 ;
+C -1 ; WX 611 ; N Acircumflex ; B -94 -16 628 809 ;
+C -1 ; WX 722 ; N Uacute ; B -14 -16 736 803 ;
+C -1 ; WX 389 ; N eacute ; B 22 -14 399 664 ;
+C -1 ; WX 722 ; N Ograve ; B 36 -16 686 803 ;
+C -1 ; WX 444 ; N agrave ; B 22 -14 488 664 ;
+C -1 ; WX 722 ; N Udieresis ; B -14 -16 736 781 ;
+C -1 ; WX 444 ; N acircumflex ; B 22 -14 488 670 ;
+C -1 ; WX 333 ; N Igrave ; B -10 0 343 803 ;
+C -1 ; WX 325 ; N twosuperior ; B 3 234 312 610 ;
+C -1 ; WX 722 ; N Ugrave ; B -14 -16 736 803 ;
+C -1 ; WX 750 ; N onequarter ; B 34 -16 739 612 ;
+C -1 ; WX 722 ; N Ucircumflex ; B -14 -16 736 809 ;
+C -1 ; WX 500 ; N Scaron ; B 5 -16 449 809 ;
+C -1 ; WX 333 ; N Idieresis ; B -10 0 343 781 ;
+C -1 ; WX 278 ; N idieresis ; B -6 -14 306 642 ;
+C -1 ; WX 611 ; N Egrave ; B -10 -10 572 803 ;
+C -1 ; WX 722 ; N Oacute ; B 36 -16 686 803 ;
+C -1 ; WX 600 ; N divide ; B 47 -11 553 517 ;
+C -1 ; WX 611 ; N Atilde ; B -94 -16 628 769 ;
+C -1 ; WX 611 ; N Aring ; B -94 -16 628 825 ;
+C -1 ; WX 722 ; N Odieresis ; B 36 -16 686 781 ;
+C -1 ; WX 611 ; N Adieresis ; B -94 -16 628 781 ;
+C -1 ; WX 667 ; N Ntilde ; B -10 -16 684 769 ;
+C -1 ; WX 611 ; N Zcaron ; B -15 -23 600 809 ;
+C -1 ; WX 556 ; N Thorn ; B -22 0 535 594 ;
+C -1 ; WX 333 ; N Iacute ; B -10 0 343 803 ;
+C -1 ; WX 600 ; N plusminus ; B 47 0 553 506 ;
+C -1 ; WX 600 ; N multiply ; B 71 24 529 482 ;
+C -1 ; WX 611 ; N Eacute ; B -10 -10 572 803 ;
+C -1 ; WX 611 ; N Ydieresis ; B -38 0 649 781 ;
+C -1 ; WX 325 ; N onesuperior ; B 34 244 291 612 ;
+C -1 ; WX 500 ; N ugrave ; B -20 -14 549 664 ;
+C -1 ; WX 600 ; N logicalnot ; B 47 107 553 385 ;
+C -1 ; WX 500 ; N ntilde ; B -20 -14 551 630 ;
+C -1 ; WX 722 ; N Otilde ; B 36 -16 686 769 ;
+C -1 ; WX 444 ; N otilde ; B 28 -14 429 630 ;
+C -1 ; WX 611 ; N Ccedilla ; B 36 -193 571 610 ;
+C -1 ; WX 611 ; N Agrave ; B -94 -16 628 803 ;
+C -1 ; WX 750 ; N onehalf ; B 34 -16 750 612 ;
+C -1 ; WX 722 ; N Eth ; B -10 -4 675 598 ;
+C -1 ; WX 400 ; N degree ; B 58 326 342 610 ;
+C -1 ; WX 611 ; N Yacute ; B -38 0 649 803 ;
+C -1 ; WX 722 ; N Ocircumflex ; B 36 -16 686 809 ;
+C -1 ; WX 444 ; N oacute ; B 28 -14 416 664 ;
+C -1 ; WX 500 ; N mu ; B -20 -314 549 443 ;
+C -1 ; WX 600 ; N minus ; B 47 221 553 285 ;
+C -1 ; WX 444 ; N eth ; B 28 -14 424 714 ;
+C -1 ; WX 444 ; N odieresis ; B 28 -14 416 642 ;
+C -1 ; WX 800 ; N copyright ; B 87 -16 713 610 ;
+C -1 ; WX 222 ; N brokenbar ; B 79 -16 143 714 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 135
+
+KPX A y -37
+KPX A w -37
+KPX A v -37
+KPX A quoteright -50
+KPX A quotedblright -50
+KPX A Y -55
+KPX A W -55
+KPX A V -55
+KPX A T -55
+KPX A Q -50
+KPX A O -50
+KPX A G -50
+KPX A C -50
+
+KPX B period -30
+KPX B comma -30
+
+KPX D period -37
+KPX D comma -37
+KPX D W 18
+KPX D V 18
+KPX D A 18
+
+KPX F r -60
+KPX F period -129
+KPX F o -60
+KPX F i -18
+KPX F e -60
+KPX F comma -111
+KPX F a -60
+KPX F A -55
+
+KPX G period -30
+KPX G comma -18
+
+KPX J period -30
+KPX J comma -18
+KPX J A 20
+
+KPX L y -18
+KPX L quoteright -25
+KPX L quotedblright -25
+KPX L Y -74
+KPX L W -55
+KPX L V -55
+KPX L T -55
+
+KPX N period -18
+KPX N comma -18
+
+KPX O period -30
+KPX O comma -30
+KPX O W 30
+KPX O V 30
+
+KPX P period -129
+KPX P comma -129
+KPX P A -55
+
+KPX Q period -18
+KPX Q comma 125
+
+KPX R Y -18
+KPX R W -37
+KPX R V -18
+KPX R T -37
+
+KPX S period -30
+KPX S comma -30
+
+KPX T y -74
+KPX T w -92
+KPX T u -74
+KPX T semicolon -50
+KPX T r -55
+KPX T period -111
+KPX T o -74
+KPX T i -37
+KPX T hyphen -92
+KPX T e -74
+KPX T comma -92
+KPX T colon -50
+KPX T a -74
+KPX T A -55
+
+KPX V semicolon -18
+KPX V period -111
+KPX V o -18
+KPX V hyphen -37
+KPX V e -18
+KPX V comma -111
+KPX V colon -18
+KPX V a -18
+KPX V G 18
+KPX V A -55
+
+KPX W period -111
+KPX W o -18
+KPX W hyphen -18
+KPX W e -18
+KPX W comma -111
+KPX W a -18
+KPX W A -37
+
+KPX Y u -75
+KPX Y semicolon -55
+KPX Y period -111
+KPX Y o -100
+KPX Y i -37
+KPX Y hyphen -100
+KPX Y e -100
+KPX Y comma -92
+KPX Y colon -55
+KPX Y a -100
+KPX Y A -55
+
+KPX b period -50
+KPX b comma -50
+
+KPX colon space -50
+
+KPX comma space -50
+
+KPX f quoteright 37
+KPX f quotedblright 37
+KPX f period -37
+
+KPX g period -37
+
+KPX period quoteright -18
+KPX period quotedblright -18
+
+KPX quotedblleft A -50
+
+KPX quoteleft quoteleft -68
+KPX quoteleft A -50
+
+KPX quoteright v -30
+KPX quoteright t -30
+KPX quoteright s -75
+KPX quoteright quoteright -68
+KPX quoteright l -25
+KPX quoteright d -50
+
+KPX r quoteright 37
+KPX r period -92
+KPX r hyphen -55
+KPX r comma -74
+
+KPX space quoteleft -50
+KPX space quotedblleft -50
+KPX space Y -50
+KPX space W -50
+KPX space V -50
+KPX space T -50
+KPX space A -50
+
+KPX v period -74
+KPX v comma -74
+
+KPX w period -74
+KPX w comma -74
+
+KPX y period -55
+KPX y comma -55
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 213 139 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 213 139 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 213 139 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 213 139 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 202 149 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 213 139 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 179 139 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 179 139 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 179 139 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 179 139 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 57 139 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 57 139 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 57 139 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 57 139 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 230 139 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 234 139 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 234 139 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 234 139 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 234 139 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 234 139 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 123 139 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 245 139 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 245 139 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 245 139 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 245 139 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 213 139 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 213 139 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 190 139 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 95 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 95 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 95 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 95 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 95 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 95 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 108 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 108 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 108 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 108 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute 6 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex 6 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis 6 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave 6 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 123 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 129 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 129 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 129 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 129 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 129 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 102 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 117 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 117 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 117 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 117 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 95 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 95 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 62 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/ZC-Dm+ b/font/font/ZC-Dm+
new file mode 100644
index 0000000..dd5b950
--- /dev/null
+++ b/font/font/ZC-Dm+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 611 ; N Ccaron ; B 36 -16 571 822 ;
+C -1 ; WX 389 ; N ccaron ; B 22 -14 400 670 ;
+C -1 ; WX 722 ; N Dcaron ; B -10 -4 675 822 ;
+C -1 ; WX 552 ; N dcaron ; B 22 -14 719 785 ;
+C -1 ; WX 611 ; N Ecaron ; B -10 -10 572 822 ;
+C -1 ; WX 389 ; N ecaron ; B 22 -14 399 670 ;
+C -1 ; WX 556 ; N Lcaron ; B 0 -10 528 653 ;
+C -1 ; WX 556 ; N Lacute ; B 0 -10 528 816 ;
+C -1 ; WX 386 ; N lcaron ; B 61 -14 510 785 ;
+C -1 ; WX 278 ; N lacute ; B 61 -14 341 816 ;
+C -1 ; WX 667 ; N Ncaron ; B -10 -16 684 822 ;
+C -1 ; WX 500 ; N ncaron ; B -20 -14 551 670 ;
+C -1 ; WX 611 ; N Rcaron ; B -10 -16 643 822 ;
+C -1 ; WX 611 ; N Racute ; B -10 -16 643 816 ;
+C -1 ; WX 333 ; N rcaron ; B -13 -14 372 670 ;
+C -1 ; WX 333 ; N racute ; B -13 -14 372 664 ;
+C -1 ; WX 611 ; N Tcaron ; B 16 0 595 822 ;
+C -1 ; WX 441 ; N tcaron ; B 0 -14 514 610 ;
+C -1 ; WX 722 ; N Uring ; B -14 -16 736 822 ;
+C -1 ; WX 500 ; N uring ; B -20 -14 549 676 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 220 152 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 74 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 222 152 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 543 175 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 166 152 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 55 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 336 43 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 139 152 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 334 175 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 19 152 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 194 152 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 111 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 166 152 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 201 152 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 27 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 46 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 166 152 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 338 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 222 146 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 111 0 ;
+EndBuildComposites
diff --git a/font/font/ZC-It b/font/font/ZC-It
new file mode 100644
index 0000000..7a36d1c
--- /dev/null
+++ b/font/font/ZC-It
@@ -0,0 +1,452 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1990 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Thu Sep 6 11:42:36 1990
+Comment UniqueID 32820
+Comment VMusage 34139 41031
+FontName ZapfChancery-Italic
+FullName ITC Zapf Chancery Italic
+FamilyName ITC Zapf Chancery
+Weight Roman
+ItalicAngle -12
+IsFixedPitch false
+FontBBox -257 -314 1007 831
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.000
+Notice Copyright (c) 1990 Adobe Systems Incorporated. All Rights Reserved.ITC Zapf Chancery is a registered trademark of International Typeface Corporation.
+EncodingScheme AdobeStandardEncoding
+CapHeight 708
+XHeight 438
+Ascender 714
+Descender -314
+StartCharMetrics 228
+C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 278 ; N exclam ; B 28 -14 262 610 ;
+C 34 ; WX 333 ; N quotedbl ; B 95 343 308 610 ;
+C 35 ; WX 500 ; N numbersign ; B 31 0 469 594 ;
+C 36 ; WX 500 ; N dollar ; B -4 -144 444 709 ;
+C 37 ; WX 667 ; N percent ; B 40 -160 618 700 ;
+C 38 ; WX 778 ; N ampersand ; B 29 -16 818 610 ;
+C 39 ; WX 222 ; N quoteright ; B 55 343 225 610 ;
+C 40 ; WX 333 ; N parenleft ; B 66 -216 381 664 ;
+C 41 ; WX 333 ; N parenright ; B -39 -216 276 664 ;
+C 42 ; WX 444 ; N asterisk ; B 69 263 409 610 ;
+C 43 ; WX 600 ; N plus ; B 47 0 553 506 ;
+C 44 ; WX 250 ; N comma ; B -46 -140 142 148 ;
+C 45 ; WX 333 ; N hyphen ; B 34 190 299 248 ;
+C 46 ; WX 250 ; N period ; B 26 -14 152 128 ;
+C 47 ; WX 278 ; N slash ; B -53 -16 331 610 ;
+C 48 ; WX 500 ; N zero ; B 19 -16 478 610 ;
+C 49 ; WX 500 ; N one ; B 0 0 387 610 ;
+C 50 ; WX 500 ; N two ; B -36 -16 432 610 ;
+C 51 ; WX 500 ; N three ; B -59 -16 425 610 ;
+C 52 ; WX 500 ; N four ; B 5 -35 427 610 ;
+C 53 ; WX 500 ; N five ; B -8 -16 527 679 ;
+C 54 ; WX 500 ; N six ; B 32 -16 498 610 ;
+C 55 ; WX 500 ; N seven ; B 97 -33 501 645 ;
+C 56 ; WX 500 ; N eight ; B 6 -16 470 610 ;
+C 57 ; WX 500 ; N nine ; B -21 -16 464 610 ;
+C 58 ; WX 250 ; N colon ; B 26 -14 224 438 ;
+C 59 ; WX 250 ; N semicolon ; B -46 -140 224 438 ;
+C 60 ; WX 600 ; N less ; B 47 -9 553 515 ;
+C 61 ; WX 600 ; N equal ; B 47 126 553 380 ;
+C 62 ; WX 600 ; N greater ; B 47 -9 553 515 ;
+C 63 ; WX 333 ; N question ; B 52 -14 357 610 ;
+C 64 ; WX 800 ; N at ; B 87 -16 713 610 ;
+C 65 ; WX 611 ; N A ; B -82 -16 602 632 ;
+C 66 ; WX 667 ; N B ; B 26 -6 615 640 ;
+C 67 ; WX 556 ; N C ; B 21 -16 559 610 ;
+C 68 ; WX 722 ; N D ; B 16 -6 698 640 ;
+C 69 ; WX 667 ; N E ; B 27 -12 645 618 ;
+C 70 ; WX 500 ; N F ; B -73 -118 600 629 ;
+C 71 ; WX 556 ; N G ; B 11 -242 572 610 ;
+C 72 ; WX 722 ; N H ; B -38 -16 822 708 ;
+C 73 ; WX 333 ; N I ; B -37 0 368 594 ;
+C 74 ; WX 389 ; N J ; B -129 -147 423 594 ;
+C 75 ; WX 667 ; N K ; B -27 -153 764 610 ;
+C 76 ; WX 556 ; N L ; B -81 -16 523 610 ;
+C 77 ; WX 833 ; N M ; B -29 -16 933 722 ;
+C 78 ; WX 722 ; N N ; B -6 -168 824 708 ;
+C 79 ; WX 611 ; N O ; B 21 -16 587 610 ;
+C 80 ; WX 611 ; N P ; B -1 0 615 628 ;
+C 81 ; WX 611 ; N Q ; B 21 -177 712 610 ;
+C 82 ; WX 611 ; N R ; B -39 -168 708 640 ;
+C 83 ; WX 444 ; N S ; B -82 -81 431 610 ;
+C 84 ; WX 611 ; N T ; B 20 0 701 667 ;
+C 85 ; WX 722 ; N U ; B 22 -16 688 617 ;
+C 86 ; WX 611 ; N V ; B 11 -16 697 714 ;
+C 87 ; WX 889 ; N W ; B 3 -16 955 723 ;
+C 88 ; WX 556 ; N X ; B -119 -16 610 610 ;
+C 89 ; WX 611 ; N Y ; B -22 -168 711 647 ;
+C 90 ; WX 611 ; N Z ; B -43 -19 584 624 ;
+C 91 ; WX 333 ; N bracketleft ; B 1 -207 419 655 ;
+C 92 ; WX 278 ; N backslash ; B -53 -16 331 610 ;
+C 93 ; WX 333 ; N bracketright ; B -76 -207 342 655 ;
+C 94 ; WX 600 ; N asciicircum ; B 90 229 510 594 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 222 ; N quoteleft ; B 80 343 250 610 ;
+C 97 ; WX 389 ; N a ; B -6 -15 387 438 ;
+C 98 ; WX 389 ; N b ; B -21 -23 389 714 ;
+C 99 ; WX 333 ; N c ; B -6 -14 313 438 ;
+C 100 ; WX 389 ; N d ; B -6 -14 543 714 ;
+C 101 ; WX 333 ; N e ; B -6 -14 310 438 ;
+C 102 ; WX 278 ; N f ; B -228 -314 438 714 ; L i fi ; L l fl ;
+C 103 ; WX 389 ; N g ; B -192 -314 419 438 ;
+C 104 ; WX 444 ; N h ; B -20 -14 449 714 ;
+C 105 ; WX 278 ; N i ; B 28 -14 278 635 ;
+C 106 ; WX 222 ; N j ; B -228 -314 247 635 ;
+C 107 ; WX 407 ; N k ; B -6 -184 535 714 ;
+C 108 ; WX 222 ; N l ; B 16 -14 394 714 ;
+C 109 ; WX 667 ; N m ; B 14 -14 662 438 ;
+C 110 ; WX 444 ; N n ; B 9 -14 452 438 ;
+C 111 ; WX 389 ; N o ; B -6 -14 356 438 ;
+C 112 ; WX 389 ; N p ; B -140 -314 367 432 ;
+C 113 ; WX 389 ; N q ; B -6 -300 397 510 ;
+C 114 ; WX 278 ; N r ; B 5 -14 328 438 ;
+C 115 ; WX 333 ; N s ; B -40 -14 317 438 ;
+C 116 ; WX 278 ; N t ; B -2 -14 318 539 ;
+C 117 ; WX 444 ; N u ; B 9 -14 435 438 ;
+C 118 ; WX 444 ; N v ; B -1 -14 445 488 ;
+C 119 ; WX 667 ; N w ; B -14 -14 681 488 ;
+C 120 ; WX 389 ; N x ; B -33 -195 486 438 ;
+C 121 ; WX 389 ; N y ; B -117 -314 390 438 ;
+C 122 ; WX 389 ; N z ; B -99 -14 383 445 ;
+C 123 ; WX 333 ; N braceleft ; B 40 -207 368 655 ;
+C 124 ; WX 222 ; N bar ; B 82 -16 140 714 ;
+C 125 ; WX 333 ; N braceright ; B -35 -207 293 655 ;
+C 126 ; WX 600 ; N asciitilde ; B 69 186 531 320 ;
+C 161 ; WX 278 ; N exclamdown ; B -4 -186 230 438 ;
+C 162 ; WX 500 ; N cent ; B 35 -134 389 543 ;
+C 163 ; WX 500 ; N sterling ; B -50 -52 472 610 ;
+C 164 ; WX 167 ; N fraction ; B -167 -16 334 610 ;
+C 165 ; WX 500 ; N yen ; B -21 -168 593 647 ;
+C 166 ; WX 500 ; N florin ; B -131 -314 515 610 ;
+C 167 ; WX 500 ; N section ; B 16 -215 477 610 ;
+C 168 ; WX 500 ; N currency ; B 38 85 462 509 ;
+C 169 ; WX 222 ; N quotesingle ; B 115 343 185 610 ;
+C 170 ; WX 333 ; N quotedblleft ; B 67 343 362 610 ;
+C 171 ; WX 389 ; N guillemotleft ; B 56 24 314 414 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 83 24 243 414 ;
+C 173 ; WX 333 ; N guilsinglright ; B 53 24 213 414 ;
+C 174 ; WX 444 ; N fi ; B -257 -314 472 714 ;
+C 175 ; WX 444 ; N fl ; B -257 -314 537 714 ;
+C 177 ; WX 500 ; N endash ; B -7 199 507 239 ;
+C 178 ; WX 444 ; N dagger ; B 34 -37 464 610 ;
+C 179 ; WX 444 ; N daggerdbl ; B 49 -59 444 610 ;
+C 180 ; WX 250 ; N periodcentered ; B 74 208 176 310 ;
+C 182 ; WX 600 ; N paragraph ; B 85 -199 618 594 ;
+C 183 ; WX 500 ; N bullet ; B 102 149 398 445 ;
+C 184 ; WX 222 ; N quotesinglbase ; B -37 -121 133 146 ;
+C 185 ; WX 333 ; N quotedblbase ; B -24 -121 271 146 ;
+C 186 ; WX 333 ; N quotedblright ; B 54 343 349 610 ;
+C 187 ; WX 389 ; N guillemotright ; B 32 24 290 414 ;
+C 188 ; WX 1000 ; N ellipsis ; B 104 -14 896 128 ;
+C 189 ; WX 944 ; N perthousand ; B 31 -160 924 700 ;
+C 191 ; WX 333 ; N questiondown ; B -44 -186 261 438 ;
+C 193 ; WX 278 ; N grave ; B 133 492 279 659 ;
+C 194 ; WX 278 ; N acute ; B 188 492 345 659 ;
+C 195 ; WX 278 ; N circumflex ; B 111 492 331 659 ;
+C 196 ; WX 278 ; N tilde ; B 102 543 381 619 ;
+C 197 ; WX 278 ; N macron ; B 102 544 345 578 ;
+C 198 ; WX 278 ; N breve ; B 125 522 373 631 ;
+C 199 ; WX 278 ; N dotaccent ; B 176 522 268 610 ;
+C 200 ; WX 278 ; N dieresis ; B 116 522 342 610 ;
+C 202 ; WX 278 ; N ring ; B 200 483 376 659 ;
+C 203 ; WX 278 ; N cedilla ; B -78 -191 94 6 ;
+C 205 ; WX 278 ; N hungarumlaut ; B 88 492 375 659 ;
+C 206 ; WX 278 ; N ogonek ; B -51 -191 144 6 ;
+C 207 ; WX 278 ; N caron ; B 136 492 356 659 ;
+C 208 ; WX 1000 ; N emdash ; B -7 199 1007 239 ;
+C 225 ; WX 778 ; N AE ; B -64 -16 756 594 ;
+C 227 ; WX 253 ; N ordfeminine ; B 22 338 297 610 ;
+C 232 ; WX 556 ; N Lslash ; B -85 -16 523 610 ;
+C 233 ; WX 611 ; N Oslash ; B -30 -78 638 672 ;
+C 234 ; WX 889 ; N OE ; B 21 -16 867 610 ;
+C 235 ; WX 253 ; N ordmasculine ; B 53 339 298 610 ;
+C 241 ; WX 556 ; N ae ; B -13 -14 544 468 ;
+C 245 ; WX 278 ; N dotlessi ; B 28 -14 257 438 ;
+C 248 ; WX 222 ; N lslash ; B 0 -14 394 714 ;
+C 249 ; WX 389 ; N oslash ; B -66 -64 428 488 ;
+C 250 ; WX 556 ; N oe ; B -6 -14 544 438 ;
+C 251 ; WX 444 ; N germandbls ; B -212 -314 457 714 ;
+C -1 ; WX 333 ; N ecircumflex ; B -6 -14 359 659 ;
+C -1 ; WX 333 ; N edieresis ; B -6 -14 370 610 ;
+C -1 ; WX 389 ; N aacute ; B -6 -15 401 659 ;
+C -1 ; WX 800 ; N registered ; B 87 -16 713 610 ;
+C -1 ; WX 278 ; N icircumflex ; B 28 -14 321 659 ;
+C -1 ; WX 444 ; N udieresis ; B 9 -14 435 610 ;
+C -1 ; WX 389 ; N ograve ; B -6 -14 356 659 ;
+C -1 ; WX 444 ; N uacute ; B 9 -14 435 659 ;
+C -1 ; WX 444 ; N ucircumflex ; B 9 -14 435 659 ;
+C -1 ; WX 611 ; N Aacute ; B -82 -16 602 811 ;
+C -1 ; WX 278 ; N igrave ; B 28 -14 259 659 ;
+C -1 ; WX 333 ; N Icircumflex ; B -37 0 368 801 ;
+C -1 ; WX 333 ; N ccedilla ; B -31 -191 313 438 ;
+C -1 ; WX 389 ; N adieresis ; B -6 -15 398 610 ;
+C -1 ; WX 667 ; N Ecircumflex ; B 27 -12 645 801 ;
+C -1 ; WX 333 ; N scaron ; B -40 -14 364 659 ;
+C -1 ; WX 389 ; N thorn ; B -140 -314 403 714 ;
+C -1 ; WX 990 ; N trademark ; B 44 187 963 594 ;
+C -1 ; WX 333 ; N egrave ; B -6 -14 310 659 ;
+C -1 ; WX 325 ; N threesuperior ; B 9 234 330 610 ;
+C -1 ; WX 389 ; N zcaron ; B -99 -14 392 659 ;
+C -1 ; WX 389 ; N atilde ; B -6 -15 437 619 ;
+C -1 ; WX 389 ; N aring ; B -6 -15 387 659 ;
+C -1 ; WX 389 ; N ocircumflex ; B -6 -14 367 659 ;
+C -1 ; WX 667 ; N Edieresis ; B 27 -12 645 752 ;
+C -1 ; WX 750 ; N threequarters ; B 9 -16 716 610 ;
+C -1 ; WX 389 ; N ydieresis ; B -117 -314 390 610 ;
+C -1 ; WX 389 ; N yacute ; B -117 -314 390 659 ;
+C -1 ; WX 278 ; N iacute ; B 28 -14 335 659 ;
+C -1 ; WX 611 ; N Acircumflex ; B -82 -16 602 811 ;
+C -1 ; WX 722 ; N Uacute ; B 22 -16 688 801 ;
+C -1 ; WX 333 ; N eacute ; B -6 -14 373 659 ;
+C -1 ; WX 611 ; N Ograve ; B 21 -16 587 801 ;
+C -1 ; WX 389 ; N agrave ; B -6 -15 387 659 ;
+C -1 ; WX 722 ; N Udieresis ; B 22 -16 688 752 ;
+C -1 ; WX 389 ; N acircumflex ; B -6 -15 387 659 ;
+C -1 ; WX 333 ; N Igrave ; B -37 0 368 801 ;
+C -1 ; WX 325 ; N twosuperior ; B 16 234 330 610 ;
+C -1 ; WX 722 ; N Ugrave ; B 22 -16 688 801 ;
+C -1 ; WX 750 ; N onequarter ; B 30 -16 716 610 ;
+C -1 ; WX 722 ; N Ucircumflex ; B 22 -16 688 801 ;
+C -1 ; WX 444 ; N Scaron ; B -82 -81 439 801 ;
+C -1 ; WX 333 ; N Idieresis ; B -37 0 370 752 ;
+C -1 ; WX 278 ; N idieresis ; B 28 -14 332 610 ;
+C -1 ; WX 667 ; N Egrave ; B 27 -12 645 801 ;
+C -1 ; WX 611 ; N Oacute ; B 21 -16 587 801 ;
+C -1 ; WX 600 ; N divide ; B 47 -14 553 520 ;
+C -1 ; WX 611 ; N Atilde ; B -82 -16 602 771 ;
+C -1 ; WX 611 ; N Aring ; B -82 -16 602 831 ;
+C -1 ; WX 611 ; N Odieresis ; B 21 -16 587 752 ;
+C -1 ; WX 611 ; N Adieresis ; B -82 -16 602 762 ;
+C -1 ; WX 722 ; N Ntilde ; B -6 -168 824 761 ;
+C -1 ; WX 611 ; N Zcaron ; B -43 -19 584 801 ;
+C -1 ; WX 611 ; N Thorn ; B -5 0 590 623 ;
+C -1 ; WX 333 ; N Iacute ; B -37 0 373 801 ;
+C -1 ; WX 600 ; N plusminus ; B 47 0 553 506 ;
+C -1 ; WX 600 ; N multiply ; B 73 26 527 480 ;
+C -1 ; WX 667 ; N Eacute ; B 27 -12 645 801 ;
+C -1 ; WX 611 ; N Ydieresis ; B -22 -168 711 752 ;
+C -1 ; WX 325 ; N onesuperior ; B 30 244 284 610 ;
+C -1 ; WX 444 ; N ugrave ; B 9 -14 435 659 ;
+C -1 ; WX 600 ; N logicalnot ; B 47 126 553 380 ;
+C -1 ; WX 444 ; N ntilde ; B 9 -14 452 619 ;
+C -1 ; WX 611 ; N Otilde ; B 21 -16 587 761 ;
+C -1 ; WX 389 ; N otilde ; B -6 -14 417 619 ;
+C -1 ; WX 556 ; N Ccedilla ; B 21 -191 559 610 ;
+C -1 ; WX 611 ; N Agrave ; B -82 -16 602 811 ;
+C -1 ; WX 750 ; N onehalf ; B 30 -16 716 610 ;
+C -1 ; WX 722 ; N Eth ; B 16 -6 698 640 ;
+C -1 ; WX 400 ; N degree ; B 101 324 387 610 ;
+C -1 ; WX 611 ; N Yacute ; B -22 -168 711 801 ;
+C -1 ; WX 611 ; N Ocircumflex ; B 21 -16 587 801 ;
+C -1 ; WX 389 ; N oacute ; B -6 -14 381 659 ;
+C -1 ; WX 444 ; N mu ; B -81 -314 435 438 ;
+C -1 ; WX 600 ; N minus ; B 47 224 553 282 ;
+C -1 ; WX 389 ; N eth ; B -6 -14 429 714 ;
+C -1 ; WX 389 ; N odieresis ; B -6 -14 378 610 ;
+C -1 ; WX 800 ; N copyright ; B 87 -16 713 610 ;
+C -1 ; WX 222 ; N brokenbar ; B 82 -16 140 714 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 105
+
+KPX A quoteright -55
+KPX A quotedblright -55
+
+KPX B period -75
+KPX B comma -75
+
+KPX D period -75
+KPX D comma -75
+
+KPX F period -111
+KPX F comma -111
+
+KPX G period -75
+KPX G comma -50
+
+KPX J period -75
+KPX J comma -75
+
+KPX L quoteright -60
+KPX L quotedblright -60
+KPX L Y -75
+KPX L W -75
+KPX L V -75
+KPX L T -75
+
+KPX N comma 175
+
+KPX O period -75
+KPX O comma -75
+
+KPX P period -92
+KPX P comma -92
+
+KPX Q comma 190
+
+KPX S period -74
+KPX S comma -74
+
+KPX T y -74
+KPX T w -74
+KPX T u -74
+KPX T semicolon -74
+KPX T r -74
+KPX T period -74
+KPX T o -74
+KPX T i -74
+KPX T hyphen -74
+KPX T e -74
+KPX T comma -74
+KPX T colon -74
+KPX T a -74
+
+KPX U period -40
+KPX U comma -40
+
+KPX V semicolon -18
+KPX V period -111
+KPX V o -18
+KPX V hyphen -37
+KPX V e -18
+KPX V comma -111
+KPX V colon -18
+KPX V a -18
+
+KPX W period -92
+KPX W comma -92
+
+KPX Y u -37
+KPX Y semicolon -74
+KPX Y period -111
+KPX Y o -55
+KPX Y i -55
+KPX Y hyphen -55
+KPX Y e -55
+KPX Y comma -111
+KPX Y colon -74
+KPX Y a -55
+
+KPX b period -75
+KPX b comma -75
+
+KPX c period -40
+KPX c comma -40
+
+KPX colon space -37
+
+KPX comma space -37
+KPX comma quoteright -75
+KPX comma quotedblright -75
+
+KPX d period -40
+KPX d comma -40
+
+KPX e period -40
+KPX e comma -40
+
+KPX f quoteright 18
+KPX f quotedblright 18
+KPX f period -75
+KPX f f -18
+KPX f comma -75
+
+KPX g period -50
+KPX g comma -50
+
+KPX period quoteright -75
+KPX period quotedblright -75
+
+KPX quoteleft quoteleft -97
+
+KPX quoteright s -37
+KPX quoteright quoteright -97
+KPX quoteright d -18
+
+KPX r y 18
+KPX r v 18
+KPX r period -74
+KPX r n 18
+KPX r hyphen -37
+KPX r comma -74
+
+KPX space quoteleft -37
+KPX space quotedblleft -37
+KPX space Y -37
+KPX space W -37
+KPX space V -37
+KPX space T -37
+KPX space A -37
+
+KPX v period -55
+KPX v comma -55
+
+KPX w period -55
+KPX w comma -55
+
+KPX y period -18
+KPX y comma -18
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 187 152 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 187 152 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 187 152 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 187 152 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 167 172 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 187 152 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 245 142 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 245 142 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 245 142 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 245 142 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 28 142 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 28 142 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 28 142 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 28 142 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 272 142 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 167 142 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 167 142 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 167 142 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 167 142 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 167 142 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 83 142 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 237 142 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 237 142 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 237 142 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 237 142 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 167 142 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 167 142 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 167 142 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 56 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 56 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 56 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 36 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 6 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 56 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 28 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 28 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 28 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 8 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -10 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -10 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -10 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -20 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 63 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 36 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 36 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 36 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 26 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 36 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 8 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 53 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 63 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 63 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 63 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 36 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 36 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 36 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/ZC-It+ b/font/font/ZC-It+
new file mode 100644
index 0000000..44446fe
--- /dev/null
+++ b/font/font/ZC-It+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 556 ; N Ccaron ; B 21 -16 582 815 ;
+C -1 ; WX 333 ; N ccaron ; B -6 -14 399 659 ;
+C -1 ; WX 722 ; N Dcaron ; B 16 -6 698 815 ;
+C -1 ; WX 508 ; N dcaron ; B -6 -14 730 785 ;
+C -1 ; WX 667 ; N Ecaron ; B 27 -12 645 815 ;
+C -1 ; WX 333 ; N ecaron ; B -6 -14 383 659 ;
+C -1 ; WX 556 ; N Lcaron ; B -81 -16 555 653 ;
+C -1 ; WX 556 ; N Lacute ; B -81 -16 523 815 ;
+C -1 ; WX 341 ; N lcaron ; B 16 -14 581 785 ;
+C -1 ; WX 222 ; N lacute ; B 16 -14 394 815 ;
+C -1 ; WX 722 ; N Ncaron ; B -6 -168 824 815 ;
+C -1 ; WX 444 ; N ncaron ; B 9 -14 452 659 ;
+C -1 ; WX 611 ; N Rcaron ; B -39 -168 708 815 ;
+C -1 ; WX 611 ; N Racute ; B -39 -168 708 815 ;
+C -1 ; WX 278 ; N rcaron ; B 5 -14 356 659 ;
+C -1 ; WX 278 ; N racute ; B 5 -14 361 659 ;
+C -1 ; WX 611 ; N Tcaron ; B 20 0 701 815 ;
+C -1 ; WX 397 ; N tcaron ; B -2 -14 505 610 ;
+C -1 ; WX 722 ; N Uring ; B 22 -16 688 815 ;
+C -1 ; WX 444 ; N uring ; B 9 -14 459 659 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 226 156 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 43 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 255 156 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 505 175 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 227 156 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 27 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 330 43 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 172 156 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 356 175 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 21 156 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 255 156 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 83 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 199 156 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 229 156 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 0 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 16 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 199 156 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 280 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 255 156 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 83 0 ;
+EndBuildComposites
diff --git a/font/font/ZC-Lt b/font/font/ZC-Lt
new file mode 100644
index 0000000..0f1f3f7
--- /dev/null
+++ b/font/font/ZC-Lt
@@ -0,0 +1,481 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1990 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Thu Sep 6 11:50:57 1990
+Comment UniqueID 32823
+Comment VMusage 33216 40108
+FontName ZapfChancery-Light
+FullName ITC Zapf Chancery Light
+FamilyName ITC Zapf Chancery
+Weight Light
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -173 -314 1006 808
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.000
+Notice Copyright (c) 1990 Adobe Systems Incorporated. All Rights Reserved.ITC Zapf Chancery is a registered trademark of International Typeface Corporation.
+EncodingScheme AdobeStandardEncoding
+CapHeight 594
+XHeight 434
+Ascender 714
+Descender -300
+StartCharMetrics 228
+C 32 ; WX 222 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 278 ; N exclam ; B 73 -14 197 610 ;
+C 34 ; WX 333 ; N quotedbl ; B 71 350 262 610 ;
+C 35 ; WX 444 ; N numbersign ; B 1 0 443 594 ;
+C 36 ; WX 444 ; N dollar ; B 17 -146 375 714 ;
+C 37 ; WX 667 ; N percent ; B 59 -137 608 696 ;
+C 38 ; WX 778 ; N ampersand ; B 31 -16 747 554 ;
+C 39 ; WX 222 ; N quoteright ; B 62 350 184 610 ;
+C 40 ; WX 333 ; N parenleft ; B 90 -213 304 669 ;
+C 41 ; WX 333 ; N parenright ; B 29 -213 243 669 ;
+C 42 ; WX 444 ; N asterisk ; B 66 260 389 610 ;
+C 43 ; WX 600 ; N plus ; B 47 0 553 506 ;
+C 44 ; WX 222 ; N comma ; B -12 -146 146 152 ;
+C 45 ; WX 333 ; N hyphen ; B 40 197 293 241 ;
+C 46 ; WX 222 ; N period ; B 56 -14 166 108 ;
+C 47 ; WX 278 ; N slash ; B -48 -16 326 610 ;
+C 48 ; WX 444 ; N zero ; B 38 -16 406 610 ;
+C 49 ; WX 444 ; N one ; B 21 -3 423 610 ;
+C 50 ; WX 444 ; N two ; B -37 -16 451 610 ;
+C 51 ; WX 444 ; N three ; B -15 -16 375 610 ;
+C 52 ; WX 444 ; N four ; B -11 -26 466 610 ;
+C 53 ; WX 444 ; N five ; B 1 -16 436 670 ;
+C 54 ; WX 444 ; N six ; B 33 -16 433 610 ;
+C 55 ; WX 444 ; N seven ; B 50 -16 439 663 ;
+C 56 ; WX 444 ; N eight ; B 16 -16 396 610 ;
+C 57 ; WX 444 ; N nine ; B 1 -16 402 610 ;
+C 58 ; WX 222 ; N colon ; B 56 -14 178 434 ;
+C 59 ; WX 222 ; N semicolon ; B -12 -146 178 434 ;
+C 60 ; WX 600 ; N less ; B 47 -8 553 514 ;
+C 61 ; WX 600 ; N equal ; B 47 134 553 372 ;
+C 62 ; WX 600 ; N greater ; B 47 -8 553 514 ;
+C 63 ; WX 333 ; N question ; B 75 -14 321 610 ;
+C 64 ; WX 800 ; N at ; B 87 -16 713 610 ;
+C 65 ; WX 611 ; N A ; B -75 -8 632 610 ;
+C 66 ; WX 556 ; N B ; B -3 -3 497 597 ;
+C 67 ; WX 556 ; N C ; B 40 -16 532 610 ;
+C 68 ; WX 667 ; N D ; B -16 -3 627 597 ;
+C 69 ; WX 556 ; N E ; B -1 0 555 597 ;
+C 70 ; WX 444 ; N F ; B -1 0 454 597 ;
+C 71 ; WX 611 ; N G ; B 40 -28 598 610 ;
+C 72 ; WX 667 ; N H ; B -1 0 668 594 ;
+C 73 ; WX 278 ; N I ; B -16 0 294 594 ;
+C 74 ; WX 278 ; N J ; B -147 -218 294 594 ;
+C 75 ; WX 611 ; N K ; B -16 -8 608 610 ;
+C 76 ; WX 500 ; N L ; B -1 -3 501 594 ;
+C 77 ; WX 778 ; N M ; B -16 -8 801 597 ;
+C 78 ; WX 667 ; N N ; B 11 -16 681 594 ;
+C 79 ; WX 667 ; N O ; B 40 -16 627 610 ;
+C 80 ; WX 500 ; N P ; B -16 0 493 597 ;
+C 81 ; WX 667 ; N Q ; B 40 -152 707 610 ;
+C 82 ; WX 556 ; N R ; B -1 -8 591 597 ;
+C 83 ; WX 444 ; N S ; B -8 -16 391 610 ;
+C 84 ; WX 556 ; N T ; B 19 0 548 610 ;
+C 85 ; WX 667 ; N U ; B 12 -16 666 594 ;
+C 86 ; WX 500 ; N V ; B -20 -16 499 625 ;
+C 87 ; WX 833 ; N W ; B -27 -16 832 625 ;
+C 88 ; WX 556 ; N X ; B -63 -16 555 610 ;
+C 89 ; WX 556 ; N Y ; B -42 0 598 610 ;
+C 90 ; WX 611 ; N Z ; B 9 -42 634 604 ;
+C 91 ; WX 333 ; N bracketleft ; B 84 -200 347 656 ;
+C 92 ; WX 278 ; N backslash ; B -48 -16 326 610 ;
+C 93 ; WX 333 ; N bracketright ; B -14 -200 249 656 ;
+C 94 ; WX 600 ; N asciicircum ; B 93 227 507 594 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 222 ; N quoteleft ; B 78 350 200 610 ;
+C 97 ; WX 389 ; N a ; B 26 -14 420 434 ;
+C 98 ; WX 389 ; N b ; B 29 -14 351 714 ;
+C 99 ; WX 333 ; N c ; B 26 -14 351 434 ;
+C 100 ; WX 389 ; N d ; B 26 -14 478 714 ;
+C 101 ; WX 333 ; N e ; B 26 -14 365 434 ;
+C 102 ; WX 222 ; N f ; B -156 -314 352 714 ; L i fi ; L l fl ;
+C 103 ; WX 389 ; N g ; B -55 -314 360 434 ;
+C 104 ; WX 444 ; N h ; B 44 -14 476 714 ;
+C 105 ; WX 222 ; N i ; B -13 -14 264 620 ;
+C 106 ; WX 222 ; N j ; B -139 -314 169 620 ;
+C 107 ; WX 389 ; N k ; B 33 -14 421 714 ;
+C 108 ; WX 222 ; N l ; B 44 -14 297 714 ;
+C 109 ; WX 667 ; N m ; B 4 -14 694 434 ;
+C 110 ; WX 444 ; N n ; B -2 -14 476 434 ;
+C 111 ; WX 389 ; N o ; B 26 -14 351 434 ;
+C 112 ; WX 389 ; N p ; B -47 -300 351 434 ;
+C 113 ; WX 389 ; N q ; B 26 -300 374 482 ;
+C 114 ; WX 278 ; N r ; B -2 -14 296 434 ;
+C 115 ; WX 333 ; N s ; B 3 -14 285 434 ;
+C 116 ; WX 278 ; N t ; B -19 -14 297 539 ;
+C 117 ; WX 444 ; N u ; B -2 -14 476 434 ;
+C 118 ; WX 389 ; N v ; B -30 -14 366 446 ;
+C 119 ; WX 667 ; N w ; B -12 -14 644 446 ;
+C 120 ; WX 444 ; N x ; B -6 -94 457 434 ;
+C 121 ; WX 389 ; N y ; B -125 -314 382 446 ;
+C 122 ; WX 333 ; N z ; B -53 -14 360 434 ;
+C 123 ; WX 333 ; N braceleft ; B 76 -200 310 656 ;
+C 124 ; WX 222 ; N bar ; B 89 -16 133 714 ;
+C 125 ; WX 333 ; N braceright ; B 23 -200 257 656 ;
+C 126 ; WX 600 ; N asciitilde ; B 69 189 531 317 ;
+C 161 ; WX 278 ; N exclamdown ; B 77 -180 201 444 ;
+C 162 ; WX 444 ; N cent ; B 65 -136 362 536 ;
+C 163 ; WX 444 ; N sterling ; B -15 -46 436 610 ;
+C 164 ; WX 167 ; N fraction ; B -166 -16 333 610 ;
+C 165 ; WX 444 ; N yen ; B -34 0 478 610 ;
+C 166 ; WX 444 ; N florin ; B -173 -314 466 610 ;
+C 167 ; WX 500 ; N section ; B 76 -216 415 610 ;
+C 168 ; WX 444 ; N currency ; B 18 92 426 500 ;
+C 169 ; WX 222 ; N quotesingle ; B 98 350 160 610 ;
+C 170 ; WX 333 ; N quotedblleft ; B 74 350 320 610 ;
+C 171 ; WX 444 ; N guillemotleft ; B 82 25 340 413 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 82 25 236 413 ;
+C 173 ; WX 333 ; N guilsinglright ; B 97 25 251 413 ;
+C 174 ; WX 444 ; N fi ; B -156 -314 470 714 ;
+C 175 ; WX 444 ; N fl ; B -156 -314 485 714 ;
+C 177 ; WX 500 ; N endash ; B -6 200 506 238 ;
+C 178 ; WX 444 ; N dagger ; B 16 -40 428 610 ;
+C 179 ; WX 444 ; N daggerdbl ; B 52 -40 381 610 ;
+C 180 ; WX 222 ; N periodcentered ; B 68 226 154 312 ;
+C 182 ; WX 600 ; N paragraph ; B 122 -200 514 594 ;
+C 183 ; WX 500 ; N bullet ; B 102 149 398 445 ;
+C 184 ; WX 222 ; N quotesinglbase ; B 25 -108 147 152 ;
+C 185 ; WX 333 ; N quotedblbase ; B 25 -108 274 152 ;
+C 186 ; WX 333 ; N quotedblright ; B 53 350 299 610 ;
+C 187 ; WX 444 ; N guillemotright ; B 104 25 362 413 ;
+C 188 ; WX 1000 ; N ellipsis ; B 112 -14 888 108 ;
+C 189 ; WX 944 ; N perthousand ; B 42 -137 902 696 ;
+C 191 ; WX 333 ; N questiondown ; B 12 -180 258 444 ;
+C 193 ; WX 222 ; N grave ; B 50 480 194 654 ;
+C 194 ; WX 222 ; N acute ; B 101 480 245 654 ;
+C 195 ; WX 222 ; N circumflex ; B 32 480 234 654 ;
+C 196 ; WX 222 ; N tilde ; B 19 534 291 620 ;
+C 197 ; WX 222 ; N macron ; B 36 538 254 564 ;
+C 198 ; WX 222 ; N breve ; B 47 523 286 623 ;
+C 199 ; WX 222 ; N dotaccent ; B 104 512 190 610 ;
+C 200 ; WX 222 ; N dieresis ; B 42 512 255 610 ;
+C 202 ; WX 222 ; N ring ; B 56 480 224 648 ;
+C 203 ; WX 222 ; N cedilla ; B -16 -190 137 6 ;
+C 205 ; WX 222 ; N hungarumlaut ; B 17 480 292 654 ;
+C 206 ; WX 222 ; N ogonek ; B -7 -190 169 0 ;
+C 207 ; WX 222 ; N caron ; B 65 480 267 656 ;
+C 208 ; WX 1000 ; N emdash ; B -6 200 1006 238 ;
+C 225 ; WX 778 ; N AE ; B -23 -16 774 597 ;
+C 227 ; WX 253 ; N ordfeminine ; B 33 342 292 610 ;
+C 232 ; WX 500 ; N Lslash ; B -1 -3 501 594 ;
+C 233 ; WX 667 ; N Oslash ; B 22 -85 627 678 ;
+C 234 ; WX 889 ; N OE ; B 40 -16 885 610 ;
+C 235 ; WX 253 ; N ordmasculine ; B 30 342 251 610 ;
+C 241 ; WX 556 ; N ae ; B 26 -14 579 468 ;
+C 245 ; WX 222 ; N dotlessi ; B -13 -14 264 434 ;
+C 248 ; WX 222 ; N lslash ; B -4 -14 297 714 ;
+C 249 ; WX 389 ; N oslash ; B -15 -70 378 491 ;
+C 250 ; WX 556 ; N oe ; B 26 -14 579 434 ;
+C 251 ; WX 444 ; N germandbls ; B -139 -314 403 714 ;
+C -1 ; WX 333 ; N ecircumflex ; B 26 -14 365 654 ;
+C -1 ; WX 333 ; N edieresis ; B 26 -14 365 610 ;
+C -1 ; WX 389 ; N aacute ; B 26 -14 420 654 ;
+C -1 ; WX 800 ; N registered ; B 87 -16 713 610 ;
+C -1 ; WX 222 ; N icircumflex ; B -13 -14 264 654 ;
+C -1 ; WX 444 ; N udieresis ; B -2 -14 476 610 ;
+C -1 ; WX 389 ; N ograve ; B 26 -14 351 654 ;
+C -1 ; WX 444 ; N uacute ; B -2 -14 476 654 ;
+C -1 ; WX 444 ; N ucircumflex ; B -2 -14 476 654 ;
+C -1 ; WX 611 ; N Aacute ; B -75 -8 632 806 ;
+C -1 ; WX 222 ; N igrave ; B -13 -14 264 654 ;
+C -1 ; WX 278 ; N Icircumflex ; B -16 0 294 806 ;
+C -1 ; WX 333 ; N ccedilla ; B 26 -190 351 434 ;
+C -1 ; WX 389 ; N adieresis ; B 26 -14 420 610 ;
+C -1 ; WX 556 ; N Ecircumflex ; B -1 0 555 806 ;
+C -1 ; WX 333 ; N scaron ; B 3 -14 323 656 ;
+C -1 ; WX 389 ; N thorn ; B -73 -300 351 714 ;
+C -1 ; WX 990 ; N trademark ; B 44 187 954 594 ;
+C -1 ; WX 333 ; N egrave ; B 26 -14 365 654 ;
+C -1 ; WX 289 ; N threesuperior ; B 4 234 265 610 ;
+C -1 ; WX 333 ; N zcaron ; B -53 -14 360 656 ;
+C -1 ; WX 389 ; N atilde ; B 26 -14 420 620 ;
+C -1 ; WX 389 ; N aring ; B 26 -14 420 648 ;
+C -1 ; WX 389 ; N ocircumflex ; B 26 -14 351 654 ;
+C -1 ; WX 556 ; N Edieresis ; B -1 0 555 762 ;
+C -1 ; WX 666 ; N threequarters ; B 4 -16 675 610 ;
+C -1 ; WX 389 ; N ydieresis ; B -125 -314 382 610 ;
+C -1 ; WX 389 ; N yacute ; B -125 -314 382 654 ;
+C -1 ; WX 222 ; N iacute ; B -13 -14 264 654 ;
+C -1 ; WX 611 ; N Acircumflex ; B -75 -8 632 806 ;
+C -1 ; WX 667 ; N Uacute ; B 12 -16 666 806 ;
+C -1 ; WX 333 ; N eacute ; B 26 -14 365 654 ;
+C -1 ; WX 667 ; N Ograve ; B 40 -16 627 806 ;
+C -1 ; WX 389 ; N agrave ; B 26 -14 420 654 ;
+C -1 ; WX 667 ; N Udieresis ; B 12 -16 666 762 ;
+C -1 ; WX 389 ; N acircumflex ; B 26 -14 420 654 ;
+C -1 ; WX 278 ; N Igrave ; B -16 0 294 806 ;
+C -1 ; WX 289 ; N twosuperior ; B -24 234 299 610 ;
+C -1 ; WX 667 ; N Ugrave ; B 12 -16 666 806 ;
+C -1 ; WX 666 ; N onequarter ; B 4 -16 675 610 ;
+C -1 ; WX 667 ; N Ucircumflex ; B 12 -16 666 806 ;
+C -1 ; WX 444 ; N Scaron ; B -8 -16 396 808 ;
+C -1 ; WX 278 ; N Idieresis ; B -16 0 294 762 ;
+C -1 ; WX 222 ; N idieresis ; B -13 -14 264 610 ;
+C -1 ; WX 556 ; N Egrave ; B -1 0 555 806 ;
+C -1 ; WX 667 ; N Oacute ; B 40 -16 627 806 ;
+C -1 ; WX 600 ; N divide ; B 47 -10 553 516 ;
+C -1 ; WX 611 ; N Atilde ; B -75 -8 632 772 ;
+C -1 ; WX 611 ; N Aring ; B -75 -8 632 800 ;
+C -1 ; WX 667 ; N Odieresis ; B 40 -16 627 762 ;
+C -1 ; WX 611 ; N Adieresis ; B -75 -8 632 762 ;
+C -1 ; WX 667 ; N Ntilde ; B 11 -16 681 772 ;
+C -1 ; WX 611 ; N Zcaron ; B 9 -42 634 808 ;
+C -1 ; WX 500 ; N Thorn ; B -16 0 490 594 ;
+C -1 ; WX 278 ; N Iacute ; B -16 0 294 806 ;
+C -1 ; WX 600 ; N plusminus ; B 47 0 553 506 ;
+C -1 ; WX 600 ; N multiply ; B 77 27 523 479 ;
+C -1 ; WX 556 ; N Eacute ; B -1 0 555 806 ;
+C -1 ; WX 556 ; N Ydieresis ; B -42 0 598 762 ;
+C -1 ; WX 289 ; N onesuperior ; B 11 244 278 610 ;
+C -1 ; WX 444 ; N ugrave ; B -2 -14 476 654 ;
+C -1 ; WX 600 ; N logicalnot ; B 47 108 553 372 ;
+C -1 ; WX 444 ; N ntilde ; B -2 -14 476 620 ;
+C -1 ; WX 667 ; N Otilde ; B 40 -16 627 772 ;
+C -1 ; WX 389 ; N otilde ; B 26 -14 375 620 ;
+C -1 ; WX 556 ; N Ccedilla ; B 40 -190 532 610 ;
+C -1 ; WX 611 ; N Agrave ; B -75 -8 632 806 ;
+C -1 ; WX 666 ; N onehalf ; B 4 -16 675 610 ;
+C -1 ; WX 667 ; N Eth ; B -16 -3 627 597 ;
+C -1 ; WX 400 ; N degree ; B 57 324 343 610 ;
+C -1 ; WX 556 ; N Yacute ; B -42 0 598 806 ;
+C -1 ; WX 667 ; N Ocircumflex ; B 40 -16 627 806 ;
+C -1 ; WX 389 ; N oacute ; B 26 -14 351 654 ;
+C -1 ; WX 444 ; N mu ; B -2 -314 476 434 ;
+C -1 ; WX 600 ; N minus ; B 47 231 553 275 ;
+C -1 ; WX 389 ; N eth ; B 26 -14 371 714 ;
+C -1 ; WX 389 ; N odieresis ; B 26 -14 351 610 ;
+C -1 ; WX 800 ; N copyright ; B 87 -16 713 610 ;
+C -1 ; WX 222 ; N brokenbar ; B 89 -16 133 714 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 134
+
+KPX A y -37
+KPX A w -37
+KPX A v -37
+KPX A quoteright -90
+KPX A quotedblright -90
+KPX A Y -55
+KPX A W -55
+KPX A V -55
+KPX A T -55
+KPX A Q -28
+KPX A O -28
+KPX A G -28
+KPX A C -28
+
+KPX B period -37
+KPX B comma -37
+
+KPX D period -37
+KPX D comma -37
+KPX D W 10
+
+KPX F r -50
+KPX F period -111
+KPX F o -50
+KPX F i -18
+KPX F e -50
+KPX F comma -111
+KPX F a -50
+KPX F A -37
+
+KPX G period -18
+KPX G comma -18
+
+KPX J period -40
+KPX J comma -40
+
+KPX K y -37
+KPX K u -37
+KPX K o -37
+KPX K e -37
+KPX K O -28
+
+KPX L y -18
+KPX L quoteright -90
+KPX L quotedblright -90
+KPX L Y -55
+KPX L W -37
+KPX L V -37
+KPX L T -74
+
+KPX N period -30
+KPX N comma -30
+
+KPX O period -37
+KPX O comma -37
+KPX O W 10
+KPX O V 10
+
+KPX P period -129
+KPX P comma -129
+KPX P A -18
+
+KPX Q comma 20
+
+KPX R W -18
+KPX R V -18
+KPX R T -18
+
+KPX S period -37
+KPX S comma -37
+
+KPX T y -55
+KPX T w -74
+KPX T u -55
+KPX T semicolon -74
+KPX T r -55
+KPX T period -92
+KPX T o -55
+KPX T i -18
+KPX T hyphen -74
+KPX T e -55
+KPX T comma -92
+KPX T colon -74
+KPX T a -55
+KPX T O -20
+KPX T A -37
+
+KPX V period -111
+KPX V hyphen -18
+KPX V comma -111
+KPX V O 10
+KPX V G 10
+KPX V A -37
+
+KPX W y 10
+KPX W period -111
+KPX W comma -111
+KPX W O 10
+KPX W A -37
+
+KPX Y u -55
+KPX Y semicolon -74
+KPX Y period -111
+KPX Y o -74
+KPX Y i -25
+KPX Y hyphen -74
+KPX Y e -74
+KPX Y comma -111
+KPX Y colon -74
+KPX Y a -74
+KPX Y O -25
+KPX Y A -55
+
+KPX b period -50
+KPX b comma -50
+
+KPX colon space -37
+
+KPX comma space -37
+KPX comma quoteright -25
+KPX comma quotedblright -25
+
+KPX f quoteright 18
+KPX f period -40
+KPX f comma -20
+
+KPX g period -40
+KPX g comma -20
+
+KPX period quoteright -37
+KPX period quotedblright -37
+
+KPX quotedblleft quoteleft -20
+KPX quotedblleft A -50
+
+KPX quotedblright space -37
+
+KPX quoteleft quoteleft -98
+KPX quoteleft A -50
+
+KPX quoteright s -55
+KPX quoteright r -18
+KPX quoteright quoteright -98
+KPX quoteright quotedblright -20
+KPX quoteright d -50
+
+KPX r period -74
+KPX r hyphen -37
+KPX r comma -74
+
+KPX space quoteleft -37
+KPX space quotedblleft -37
+KPX space Y -37
+KPX space W -37
+KPX space V -37
+KPX space T -37
+KPX space A -37
+
+KPX v period -74
+KPX v comma -74
+
+KPX w period -74
+KPX w comma -74
+
+KPX y period -74
+KPX y comma -74
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 189 152 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 189 152 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 189 152 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 189 152 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 189 152 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 189 152 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 161 152 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 152 152 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 152 152 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 161 152 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 46 152 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 46 152 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 38 152 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 46 152 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 211 152 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 247 152 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 247 152 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 238 152 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 247 152 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 238 152 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 129 152 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 205 152 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 205 152 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 205 152 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 205 152 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 167 152 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 167 152 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 165 152 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 72 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 72 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 72 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 72 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 72 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 72 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 80 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 80 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 80 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 80 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -18 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -18 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -18 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -18 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 91 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 84 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 84 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 84 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 84 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 84 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 56 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 99 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 99 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 81 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 91 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 78 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 78 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 36 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/ZC-Lt+ b/font/font/ZC-Lt+
new file mode 100644
index 0000000..da81a6a
--- /dev/null
+++ b/font/font/ZC-Lt+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 556 ; N Ccaron ; B 40 -16 532 824 ;
+C -1 ; WX 333 ; N ccaron ; B 26 -14 351 656 ;
+C -1 ; WX 667 ; N Dcaron ; B -16 -3 627 824 ;
+C -1 ; WX 474 ; N dcaron ; B 26 -14 612 785 ;
+C -1 ; WX 556 ; N Ecaron ; B -1 0 555 824 ;
+C -1 ; WX 333 ; N ecaron ; B 26 -14 365 656 ;
+C -1 ; WX 500 ; N Lcaron ; B -1 -3 501 653 ;
+C -1 ; WX 500 ; N Lacute ; B -1 -3 501 822 ;
+C -1 ; WX 307 ; N lcaron ; B 44 -14 431 785 ;
+C -1 ; WX 222 ; N lacute ; B 44 -14 297 822 ;
+C -1 ; WX 667 ; N Ncaron ; B 11 -16 681 824 ;
+C -1 ; WX 444 ; N ncaron ; B -2 -14 476 656 ;
+C -1 ; WX 556 ; N Rcaron ; B -1 -8 591 824 ;
+C -1 ; WX 556 ; N Racute ; B -1 -8 591 822 ;
+C -1 ; WX 278 ; N rcaron ; B -2 -14 296 656 ;
+C -1 ; WX 278 ; N racute ; B -2 -14 296 654 ;
+C -1 ; WX 556 ; N Tcaron ; B 19 0 548 824 ;
+C -1 ; WX 363 ; N tcaron ; B -19 -14 431 610 ;
+C -1 ; WX 667 ; N Uring ; B 12 -16 666 824 ;
+C -1 ; WX 444 ; N uring ; B -2 -14 476 648 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 216 168 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 71 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 222 168 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 428 175 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 167 168 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 55 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 244 43 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 139 168 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 247 175 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 14 168 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 222 168 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 111 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 167 168 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 194 168 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 28 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 42 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 167 168 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 247 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 222 176 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 111 0 ;
+EndBuildComposites
diff --git a/font/font/ZC-LtIt b/font/font/ZC-LtIt
new file mode 100644
index 0000000..eec80c0
--- /dev/null
+++ b/font/font/ZC-LtIt
@@ -0,0 +1,433 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1990 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Thu Sep 6 12:09:39 1990
+Comment UniqueID 32829
+Comment VMusage 31663 38555
+FontName ZapfChancery-LightItalic
+FullName ITC Zapf Chancery Light Italic
+FamilyName ITC Zapf Chancery
+Weight Light
+ItalicAngle -12
+IsFixedPitch false
+FontBBox -260 -314 991 814
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.000
+Notice Copyright (c) 1990 Adobe Systems Incorporated. All Rights Reserved.ITC Zapf Chancery is a registered trademark of International Typeface Corporation.
+EncodingScheme AdobeStandardEncoding
+CapHeight 714
+XHeight 434
+Ascender 714
+Descender -300
+StartCharMetrics 228
+C 32 ; WX 222 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 278 ; N exclam ; B 30 -14 259 610 ;
+C 34 ; WX 333 ; N quotedbl ; B 111 350 302 610 ;
+C 35 ; WX 444 ; N numbersign ; B 9 0 443 594 ;
+C 36 ; WX 444 ; N dollar ; B -18 -152 403 706 ;
+C 37 ; WX 667 ; N percent ; B 59 -137 609 696 ;
+C 38 ; WX 778 ; N ampersand ; B 31 -16 822 610 ;
+C 39 ; WX 222 ; N quoteright ; B 61 350 207 610 ;
+C 40 ; WX 333 ; N parenleft ; B 75 -213 376 669 ;
+C 41 ; WX 333 ; N parenright ; B -43 -213 258 669 ;
+C 42 ; WX 444 ; N asterisk ; B 66 260 389 610 ;
+C 43 ; WX 600 ; N plus ; B 47 0 553 506 ;
+C 44 ; WX 222 ; N comma ; B -54 -122 121 142 ;
+C 45 ; WX 333 ; N hyphen ; B 21 197 280 241 ;
+C 46 ; WX 222 ; N period ; B 18 -14 122 102 ;
+C 47 ; WX 278 ; N slash ; B -48 -16 326 610 ;
+C 48 ; WX 444 ; N zero ; B 21 -18 423 610 ;
+C 49 ; WX 444 ; N one ; B -28 0 366 610 ;
+C 50 ; WX 444 ; N two ; B -41 -16 412 610 ;
+C 51 ; WX 444 ; N three ; B -72 -16 378 610 ;
+C 52 ; WX 444 ; N four ; B -6 -29 407 619 ;
+C 53 ; WX 444 ; N five ; B -28 -16 490 672 ;
+C 54 ; WX 444 ; N six ; B 24 -16 466 610 ;
+C 55 ; WX 444 ; N seven ; B 50 -26 486 663 ;
+C 56 ; WX 444 ; N eight ; B -2 -16 432 610 ;
+C 57 ; WX 444 ; N nine ; B -22 -16 406 610 ;
+C 58 ; WX 222 ; N colon ; B 18 -14 197 434 ;
+C 59 ; WX 222 ; N semicolon ; B -54 -122 197 434 ;
+C 60 ; WX 600 ; N less ; B 47 -8 553 514 ;
+C 61 ; WX 600 ; N equal ; B 47 134 553 372 ;
+C 62 ; WX 600 ; N greater ; B 47 -8 553 514 ;
+C 63 ; WX 333 ; N question ; B 50 -14 351 610 ;
+C 64 ; WX 800 ; N at ; B 87 -16 713 610 ;
+C 65 ; WX 611 ; N A ; B -86 -16 587 627 ;
+C 66 ; WX 611 ; N B ; B 10 -8 562 630 ;
+C 67 ; WX 556 ; N C ; B 34 -16 566 610 ;
+C 68 ; WX 722 ; N D ; B 10 0 686 630 ;
+C 69 ; WX 667 ; N E ; B 10 -8 628 630 ;
+C 70 ; WX 500 ; N F ; B -86 -127 603 619 ;
+C 71 ; WX 556 ; N G ; B 10 -236 560 610 ;
+C 72 ; WX 722 ; N H ; B -42 -16 825 714 ;
+C 73 ; WX 333 ; N I ; B -27 0 360 594 ;
+C 74 ; WX 389 ; N J ; B -159 -141 391 594 ;
+C 75 ; WX 667 ; N K ; B -21 -158 767 610 ;
+C 76 ; WX 556 ; N L ; B -71 -16 514 610 ;
+C 77 ; WX 833 ; N M ; B -42 -16 938 706 ;
+C 78 ; WX 722 ; N N ; B -9 -158 825 714 ;
+C 79 ; WX 611 ; N O ; B 20 -16 583 610 ;
+C 80 ; WX 611 ; N P ; B -2 0 608 618 ;
+C 81 ; WX 611 ; N Q ; B 20 -175 709 610 ;
+C 82 ; WX 611 ; N R ; B -30 -158 709 624 ;
+C 83 ; WX 444 ; N S ; B -88 -80 432 610 ;
+C 84 ; WX 611 ; N T ; B 20 0 704 676 ;
+C 85 ; WX 722 ; N U ; B 20 -16 681 610 ;
+C 86 ; WX 611 ; N V ; B 20 -16 699 725 ;
+C 87 ; WX 889 ; N W ; B 0 -16 956 714 ;
+C 88 ; WX 556 ; N X ; B -125 -16 595 610 ;
+C 89 ; WX 611 ; N Y ; B -30 -170 713 642 ;
+C 90 ; WX 611 ; N Z ; B -48 -16 575 627 ;
+C 91 ; WX 333 ; N bracketleft ; B 2 -200 412 656 ;
+C 92 ; WX 278 ; N backslash ; B -48 -16 326 610 ;
+C 93 ; WX 333 ; N bracketright ; B -79 -200 331 656 ;
+C 94 ; WX 600 ; N asciicircum ; B 93 227 507 594 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 222 ; N quoteleft ; B 92 350 238 610 ;
+C 97 ; WX 389 ; N a ; B -5 -14 410 434 ;
+C 98 ; WX 389 ; N b ; B -16 -14 396 714 ;
+C 99 ; WX 333 ; N c ; B -5 -14 322 434 ;
+C 100 ; WX 389 ; N d ; B -5 -14 548 714 ;
+C 101 ; WX 333 ; N e ; B -5 -14 316 434 ;
+C 102 ; WX 278 ; N f ; B -196 -314 436 714 ; L i fi ; L l fl ;
+C 103 ; WX 389 ; N g ; B -188 -314 413 434 ;
+C 104 ; WX 444 ; N h ; B -16 -14 461 714 ;
+C 105 ; WX 278 ; N i ; B 28 -14 270 634 ;
+C 106 ; WX 222 ; N j ; B -240 -314 237 634 ;
+C 107 ; WX 407 ; N k ; B 0 -176 542 714 ;
+C 108 ; WX 222 ; N l ; B 15 -14 388 714 ;
+C 109 ; WX 667 ; N m ; B 9 -14 684 434 ;
+C 110 ; WX 444 ; N n ; B 9 -14 461 434 ;
+C 111 ; WX 389 ; N o ; B 0 -14 352 434 ;
+C 112 ; WX 389 ; N p ; B -126 -300 365 434 ;
+C 113 ; WX 389 ; N q ; B 0 -300 389 507 ;
+C 114 ; WX 278 ; N r ; B 0 -8 331 434 ;
+C 115 ; WX 333 ; N s ; B -33 -14 307 434 ;
+C 116 ; WX 278 ; N t ; B -22 -14 302 535 ;
+C 117 ; WX 444 ; N u ; B 12 -14 456 434 ;
+C 118 ; WX 444 ; N v ; B -12 -14 446 500 ;
+C 119 ; WX 667 ; N w ; B -12 -14 669 491 ;
+C 120 ; WX 389 ; N x ; B -29 -192 491 434 ;
+C 121 ; WX 389 ; N y ; B -137 -314 383 434 ;
+C 122 ; WX 389 ; N z ; B -80 -14 390 443 ;
+C 123 ; WX 333 ; N braceleft ; B 61 -200 387 656 ;
+C 124 ; WX 222 ; N bar ; B 89 -16 133 714 ;
+C 125 ; WX 333 ; N braceright ; B -54 -200 272 656 ;
+C 126 ; WX 600 ; N asciitilde ; B 69 189 531 317 ;
+C 161 ; WX 278 ; N exclamdown ; B -6 -180 223 444 ;
+C 162 ; WX 444 ; N cent ; B 45 -146 376 548 ;
+C 163 ; WX 444 ; N sterling ; B -64 -51 424 610 ;
+C 164 ; WX 167 ; N fraction ; B -165 -16 332 610 ;
+C 165 ; WX 444 ; N yen ; B -35 -170 519 642 ;
+C 166 ; WX 444 ; N florin ; B -169 -314 465 610 ;
+C 167 ; WX 500 ; N section ; B 44 -216 424 610 ;
+C 168 ; WX 444 ; N currency ; B 18 92 426 500 ;
+C 169 ; WX 222 ; N quotesingle ; B 118 350 180 610 ;
+C 170 ; WX 333 ; N quotedblleft ; B 89 350 349 610 ;
+C 171 ; WX 389 ; N guillemotleft ; B 67 25 322 413 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 82 25 240 413 ;
+C 173 ; WX 333 ; N guilsinglright ; B 93 25 251 413 ;
+C 174 ; WX 444 ; N fi ; B -260 -314 475 714 ;
+C 175 ; WX 444 ; N fl ; B -260 -314 544 714 ;
+C 177 ; WX 500 ; N endash ; B -27 200 491 238 ;
+C 178 ; WX 444 ; N dagger ; B 12 -40 427 610 ;
+C 179 ; WX 444 ; N daggerdbl ; B 43 -40 405 610 ;
+C 180 ; WX 222 ; N periodcentered ; B 68 228 154 314 ;
+C 182 ; WX 600 ; N paragraph ; B 70 -200 550 594 ;
+C 183 ; WX 500 ; N bullet ; B 102 149 398 445 ;
+C 184 ; WX 222 ; N quotesinglbase ; B -39 -118 107 142 ;
+C 185 ; WX 333 ; N quotedblbase ; B -39 -118 221 142 ;
+C 186 ; WX 333 ; N quotedblright ; B 61 350 321 610 ;
+C 187 ; WX 389 ; N guillemotright ; B 67 25 322 413 ;
+C 188 ; WX 1000 ; N ellipsis ; B 115 -14 885 102 ;
+C 189 ; WX 944 ; N perthousand ; B 42 -137 905 696 ;
+C 191 ; WX 333 ; N questiondown ; B -30 -180 271 444 ;
+C 193 ; WX 278 ; N grave ; B 109 480 243 654 ;
+C 194 ; WX 278 ; N acute ; B 156 480 302 654 ;
+C 195 ; WX 278 ; N circumflex ; B 90 480 294 654 ;
+C 196 ; WX 278 ; N tilde ; B 66 538 348 624 ;
+C 197 ; WX 278 ; N macron ; B 88 538 308 564 ;
+C 198 ; WX 278 ; N breve ; B 98 523 339 623 ;
+C 199 ; WX 278 ; N dotaccent ; B 132 523 218 619 ;
+C 200 ; WX 278 ; N dieresis ; B 97 523 305 619 ;
+C 202 ; WX 278 ; N ring ; B 105 480 273 648 ;
+C 203 ; WX 278 ; N cedilla ; B -49 -190 108 6 ;
+C 205 ; WX 278 ; N hungarumlaut ; B 95 480 363 654 ;
+C 206 ; WX 278 ; N ogonek ; B 48 -195 202 0 ;
+C 207 ; WX 278 ; N caron ; B 90 480 294 654 ;
+C 208 ; WX 1000 ; N emdash ; B -27 200 991 238 ;
+C 225 ; WX 778 ; N AE ; B -81 -16 742 594 ;
+C 227 ; WX 253 ; N ordfeminine ; B 48 342 326 610 ;
+C 232 ; WX 556 ; N Lslash ; B -71 -16 514 610 ;
+C 233 ; WX 611 ; N Oslash ; B -41 -78 625 672 ;
+C 234 ; WX 889 ; N OE ; B 30 -16 853 610 ;
+C 235 ; WX 253 ; N ordmasculine ; B 48 342 283 610 ;
+C 241 ; WX 556 ; N ae ; B -5 -14 539 468 ;
+C 245 ; WX 278 ; N dotlessi ; B 28 -14 257 434 ;
+C 248 ; WX 222 ; N lslash ; B 0 -14 388 714 ;
+C 249 ; WX 389 ; N oslash ; B -64 -61 418 481 ;
+C 250 ; WX 556 ; N oe ; B -5 -14 539 434 ;
+C 251 ; WX 444 ; N germandbls ; B -196 -314 444 714 ;
+C -1 ; WX 333 ; N ecircumflex ; B -5 -14 345 654 ;
+C -1 ; WX 333 ; N edieresis ; B -5 -14 356 619 ;
+C -1 ; WX 389 ; N aacute ; B -5 -14 410 654 ;
+C -1 ; WX 800 ; N registered ; B 87 -16 713 610 ;
+C -1 ; WX 278 ; N icircumflex ; B 28 -14 308 654 ;
+C -1 ; WX 444 ; N udieresis ; B 12 -14 456 619 ;
+C -1 ; WX 389 ; N ograve ; B 0 -14 352 654 ;
+C -1 ; WX 444 ; N uacute ; B 12 -14 456 654 ;
+C -1 ; WX 444 ; N ucircumflex ; B 12 -14 456 654 ;
+C -1 ; WX 611 ; N Aacute ; B -86 -16 587 806 ;
+C -1 ; WX 278 ; N igrave ; B 28 -14 257 654 ;
+C -1 ; WX 333 ; N Icircumflex ; B -27 0 368 806 ;
+C -1 ; WX 333 ; N ccedilla ; B -5 -190 322 434 ;
+C -1 ; WX 389 ; N adieresis ; B -5 -14 410 619 ;
+C -1 ; WX 667 ; N Ecircumflex ; B 10 -8 628 806 ;
+C -1 ; WX 333 ; N scaron ; B -33 -14 368 654 ;
+C -1 ; WX 389 ; N thorn ; B -126 -300 370 714 ;
+C -1 ; WX 990 ; N trademark ; B 44 187 954 594 ;
+C -1 ; WX 333 ; N egrave ; B -5 -14 316 654 ;
+C -1 ; WX 289 ; N threesuperior ; B -22 234 271 610 ;
+C -1 ; WX 389 ; N zcaron ; B -80 -14 396 654 ;
+C -1 ; WX 389 ; N atilde ; B -5 -14 427 624 ;
+C -1 ; WX 389 ; N aring ; B -5 -14 410 648 ;
+C -1 ; WX 389 ; N ocircumflex ; B 0 -14 362 654 ;
+C -1 ; WX 667 ; N Edieresis ; B 10 -8 628 771 ;
+C -1 ; WX 666 ; N threequarters ; B -22 -16 647 610 ;
+C -1 ; WX 389 ; N ydieresis ; B -137 -314 383 619 ;
+C -1 ; WX 389 ; N yacute ; B -137 -314 383 654 ;
+C -1 ; WX 278 ; N iacute ; B 28 -14 316 654 ;
+C -1 ; WX 611 ; N Acircumflex ; B -86 -16 587 806 ;
+C -1 ; WX 722 ; N Uacute ; B 20 -16 681 806 ;
+C -1 ; WX 333 ; N eacute ; B -5 -14 353 654 ;
+C -1 ; WX 611 ; N Ograve ; B 20 -16 583 806 ;
+C -1 ; WX 389 ; N agrave ; B -5 -14 410 654 ;
+C -1 ; WX 722 ; N Udieresis ; B 20 -16 681 771 ;
+C -1 ; WX 389 ; N acircumflex ; B -5 -14 410 654 ;
+C -1 ; WX 333 ; N Igrave ; B -27 0 360 806 ;
+C -1 ; WX 289 ; N twosuperior ; B 0 234 301 610 ;
+C -1 ; WX 722 ; N Ugrave ; B 20 -16 681 806 ;
+C -1 ; WX 666 ; N onequarter ; B 2 -16 647 610 ;
+C -1 ; WX 722 ; N Ucircumflex ; B 20 -16 681 806 ;
+C -1 ; WX 444 ; N Scaron ; B -88 -80 469 806 ;
+C -1 ; WX 333 ; N Idieresis ; B -27 0 379 771 ;
+C -1 ; WX 278 ; N idieresis ; B 28 -14 319 619 ;
+C -1 ; WX 667 ; N Egrave ; B 10 -8 628 806 ;
+C -1 ; WX 611 ; N Oacute ; B 20 -16 583 806 ;
+C -1 ; WX 600 ; N divide ; B 47 -10 553 516 ;
+C -1 ; WX 611 ; N Atilde ; B -86 -16 590 776 ;
+C -1 ; WX 611 ; N Aring ; B -86 -16 587 814 ;
+C -1 ; WX 611 ; N Odieresis ; B 20 -16 583 771 ;
+C -1 ; WX 611 ; N Adieresis ; B -86 -16 587 771 ;
+C -1 ; WX 722 ; N Ntilde ; B -9 -158 825 776 ;
+C -1 ; WX 611 ; N Zcaron ; B -48 -16 575 806 ;
+C -1 ; WX 611 ; N Thorn ; B -6 0 583 620 ;
+C -1 ; WX 333 ; N Iacute ; B -27 0 376 806 ;
+C -1 ; WX 600 ; N plusminus ; B 47 0 553 506 ;
+C -1 ; WX 600 ; N multiply ; B 77 27 523 479 ;
+C -1 ; WX 667 ; N Eacute ; B 10 -8 628 806 ;
+C -1 ; WX 611 ; N Ydieresis ; B -30 -170 713 771 ;
+C -1 ; WX 289 ; N onesuperior ; B 12 244 268 610 ;
+C -1 ; WX 444 ; N ugrave ; B 12 -14 456 654 ;
+C -1 ; WX 600 ; N logicalnot ; B 47 108 553 372 ;
+C -1 ; WX 444 ; N ntilde ; B 9 -14 461 624 ;
+C -1 ; WX 611 ; N Otilde ; B 20 -16 583 776 ;
+C -1 ; WX 389 ; N otilde ; B 0 -14 416 624 ;
+C -1 ; WX 556 ; N Ccedilla ; B 34 -190 566 610 ;
+C -1 ; WX 611 ; N Agrave ; B -86 -16 587 806 ;
+C -1 ; WX 666 ; N onehalf ; B 2 -16 649 610 ;
+C -1 ; WX 722 ; N Eth ; B 10 0 686 630 ;
+C -1 ; WX 400 ; N degree ; B 87 324 373 610 ;
+C -1 ; WX 611 ; N Yacute ; B -30 -170 713 806 ;
+C -1 ; WX 611 ; N Ocircumflex ; B 20 -16 583 806 ;
+C -1 ; WX 389 ; N oacute ; B 0 -14 370 654 ;
+C -1 ; WX 444 ; N mu ; B -46 -314 456 434 ;
+C -1 ; WX 600 ; N minus ; B 47 231 553 275 ;
+C -1 ; WX 389 ; N eth ; B 0 -14 412 714 ;
+C -1 ; WX 389 ; N odieresis ; B 0 -14 373 619 ;
+C -1 ; WX 800 ; N copyright ; B 87 -16 713 610 ;
+C -1 ; WX 222 ; N brokenbar ; B 89 -16 133 714 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 94
+
+KPX A quoteright -55
+KPX A quotedblright -55
+
+KPX B period -50
+KPX B comma -50
+
+KPX D period -50
+KPX D comma -50
+
+KPX F r -25
+KPX F period -111
+KPX F o -37
+KPX F i -25
+KPX F e -37
+KPX F comma -111
+KPX F a -37
+
+KPX G period -50
+KPX G comma -50
+
+KPX J u -30
+KPX J period -75
+KPX J o -37
+KPX J e -37
+KPX J comma -75
+KPX J a -37
+
+KPX L quoteright -74
+KPX L quotedblright -74
+
+KPX O period -50
+KPX O comma -50
+
+KPX P period -92
+KPX P comma -92
+
+KPX S period -50
+KPX S comma -50
+
+KPX T y -74
+KPX T w -74
+KPX T u -74
+KPX T semicolon -74
+KPX T r -74
+KPX T period -74
+KPX T o -74
+KPX T i -74
+KPX T hyphen -74
+KPX T e -74
+KPX T comma -74
+KPX T colon -74
+KPX T a -74
+
+KPX V semicolon -18
+KPX V period -111
+KPX V o -18
+KPX V hyphen -37
+KPX V e -18
+KPX V comma -111
+KPX V colon -18
+KPX V a -18
+
+KPX W period -92
+KPX W comma -92
+
+KPX Y u -37
+KPX Y semicolon -74
+KPX Y period -111
+KPX Y o -55
+KPX Y i -55
+KPX Y hyphen -55
+KPX Y e -55
+KPX Y comma -111
+KPX Y colon -74
+KPX Y a -55
+
+KPX b period -50
+KPX b comma -50
+
+KPX f quoteright 18
+KPX f period -50
+KPX f f -18
+KPX f comma -50
+
+KPX g period -37
+KPX g comma -37
+
+KPX period quoteright -50
+KPX period quotedblright -50
+
+KPX quoteleft quoteleft -108
+
+KPX quoteright s -37
+KPX quoteright quoteright -108
+
+KPX r y 18
+KPX r v 18
+KPX r period -74
+KPX r n 18
+KPX r hyphen -37
+KPX r comma -74
+
+KPX space quoteleft -37
+KPX space quotedblleft -37
+KPX space Y -37
+KPX space W -37
+KPX space V -37
+KPX space T -37
+KPX space A -37
+
+KPX v period -55
+KPX v comma -55
+
+KPX w period -55
+KPX w comma -55
+
+KPX y period -18
+KPX y comma -18
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 237 152 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 225 152 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 225 152 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 225 152 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 257 166 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 242 152 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 261 152 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 261 152 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 261 152 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 261 152 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 74 152 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 74 152 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 74 152 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 74 152 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 314 152 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 195 152 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 195 152 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 195 152 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 195 152 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 195 152 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 175 152 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 280 152 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 280 152 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 280 152 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 280 152 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 247 152 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 247 152 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 213 152 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 79 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 79 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 79 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 79 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 79 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 79 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 51 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 51 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 51 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 51 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute 14 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex 14 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis 14 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave 14 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 106 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 68 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 68 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 68 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 68 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 68 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 74 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 83 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 83 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 83 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 83 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 56 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 56 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 102 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/ZC-LtIt+ b/font/font/ZC-LtIt+
new file mode 100644
index 0000000..0d5385e
--- /dev/null
+++ b/font/font/ZC-LtIt+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 556 ; N Ccaron ; B 34 -16 566 822 ;
+C -1 ; WX 333 ; N ccaron ; B -5 -14 337 654 ;
+C -1 ; WX 722 ; N Dcaron ; B 10 0 686 822 ;
+C -1 ; WX 491 ; N dcaron ; B -5 -14 709 785 ;
+C -1 ; WX 667 ; N Ecaron ; B 10 -8 628 822 ;
+C -1 ; WX 333 ; N ecaron ; B -5 -14 321 654 ;
+C -1 ; WX 556 ; N Lcaron ; B -71 -16 521 653 ;
+C -1 ; WX 556 ; N Lacute ; B -71 -16 514 822 ;
+C -1 ; WX 324 ; N lcaron ; B 15 -14 549 785 ;
+C -1 ; WX 222 ; N lacute ; B 15 -14 388 822 ;
+C -1 ; WX 722 ; N Ncaron ; B -9 -158 825 822 ;
+C -1 ; WX 444 ; N ncaron ; B 9 -14 461 654 ;
+C -1 ; WX 611 ; N Rcaron ; B -30 -158 709 822 ;
+C -1 ; WX 611 ; N Racute ; B -30 -158 709 822 ;
+C -1 ; WX 278 ; N rcaron ; B 0 -8 331 654 ;
+C -1 ; WX 278 ; N racute ; B 0 -8 331 654 ;
+C -1 ; WX 611 ; N Tcaron ; B 20 0 704 822 ;
+C -1 ; WX 380 ; N tcaron ; B -22 -14 463 610 ;
+C -1 ; WX 722 ; N Uring ; B 20 -16 681 822 ;
+C -1 ; WX 444 ; N uring ; B 12 -14 456 648 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 227 168 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 43 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 257 168 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 502 175 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 229 168 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 27 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 314 43 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 174 168 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 342 175 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 22 168 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 257 168 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 83 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 201 168 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 229 168 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 0 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 15 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 201 168 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 256 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 258 174 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 83 0 ;
+EndBuildComposites
diff --git a/font/font/ZC-MdIt b/font/font/ZC-MdIt
new file mode 100644
index 0000000..6efb57a
--- /dev/null
+++ b/font/font/ZC-MdIt
@@ -0,0 +1,480 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Fri Dec 28 16:35:46 1990
+Comment UniqueID 33936
+Comment VMusage 34559 41451
+FontName ZapfChancery-MediumItalic
+FullName ITC Zapf Chancery Medium Italic
+FamilyName ITC Zapf Chancery
+Weight Medium
+ItalicAngle -14
+IsFixedPitch false
+FontBBox -181 -314 1065 831
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.007
+Notice Copyright (c) 1985, 1987, 1989, 1990 Adobe Systems Incorporated. All Rights Reserved.ITC Zapf Chancery is a registered trademark of International Typeface Corporation.
+EncodingScheme AdobeStandardEncoding
+CapHeight 708
+XHeight 438
+Ascender 714
+Descender -314
+StartCharMetrics 228
+C 32 ; WX 220 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 280 ; N exclam ; B 119 -14 353 610 ;
+C 34 ; WX 220 ; N quotedbl ; B 120 343 333 610 ;
+C 35 ; WX 440 ; N numbersign ; B 83 0 521 594 ;
+C 36 ; WX 440 ; N dollar ; B 60 -144 508 709 ;
+C 37 ; WX 680 ; N percent ; B 132 -160 710 700 ;
+C 38 ; WX 780 ; N ampersand ; B 126 -16 915 610 ;
+C 39 ; WX 240 ; N quoteright ; B 168 343 338 610 ;
+C 40 ; WX 260 ; N parenleft ; B 96 -216 411 664 ;
+C 41 ; WX 220 ; N parenright ; B -13 -216 302 664 ;
+C 42 ; WX 420 ; N asterisk ; B 139 263 479 610 ;
+C 43 ; WX 520 ; N plus ; B 117 0 543 426 ;
+C 44 ; WX 220 ; N comma ; B 25 -140 213 148 ;
+C 45 ; WX 280 ; N hyphen ; B 69 190 334 248 ;
+C 46 ; WX 220 ; N period ; B 102 -14 228 128 ;
+C 47 ; WX 340 ; N slash ; B 74 -16 458 610 ;
+C 48 ; WX 440 ; N zero ; B 79 -16 538 610 ;
+C 49 ; WX 440 ; N one ; B 41 0 428 610 ;
+C 50 ; WX 440 ; N two ; B 17 -16 485 610 ;
+C 51 ; WX 440 ; N three ; B 1 -16 485 610 ;
+C 52 ; WX 440 ; N four ; B 77 -35 499 610 ;
+C 53 ; WX 440 ; N five ; B 60 -16 595 679 ;
+C 54 ; WX 440 ; N six ; B 90 -16 556 610 ;
+C 55 ; WX 440 ; N seven ; B 157 -33 561 645 ;
+C 56 ; WX 440 ; N eight ; B 65 -16 529 610 ;
+C 57 ; WX 440 ; N nine ; B 32 -16 517 610 ;
+C 58 ; WX 260 ; N colon ; B 98 -14 296 438 ;
+C 59 ; WX 240 ; N semicolon ; B 29 -140 299 438 ;
+C 60 ; WX 520 ; N less ; B 139 0 527 468 ;
+C 61 ; WX 520 ; N equal ; B 117 86 543 340 ;
+C 62 ; WX 520 ; N greater ; B 139 0 527 468 ;
+C 63 ; WX 380 ; N question ; B 150 -14 455 610 ;
+C 64 ; WX 700 ; N at ; B 127 -16 753 610 ;
+C 65 ; WX 620 ; N A ; B 13 -16 697 632 ;
+C 66 ; WX 600 ; N B ; B 85 -6 674 640 ;
+C 67 ; WX 520 ; N C ; B 93 -16 631 610 ;
+C 68 ; WX 700 ; N D ; B 86 -6 768 640 ;
+C 69 ; WX 620 ; N E ; B 91 -12 709 618 ;
+C 70 ; WX 580 ; N F ; B 120 -118 793 629 ;
+C 71 ; WX 620 ; N G ; B 148 -242 709 610 ;
+C 72 ; WX 680 ; N H ; B 18 -16 878 708 ;
+C 73 ; WX 380 ; N I ; B 99 0 504 594 ;
+C 74 ; WX 400 ; N J ; B -14 -147 538 594 ;
+C 75 ; WX 660 ; N K ; B 53 -153 844 610 ;
+C 76 ; WX 580 ; N L ; B 53 -16 657 610 ;
+C 77 ; WX 840 ; N M ; B 58 -16 1020 722 ;
+C 78 ; WX 700 ; N N ; B 85 -168 915 708 ;
+C 79 ; WX 600 ; N O ; B 94 -16 660 610 ;
+C 80 ; WX 540 ; N P ; B 42 0 658 628 ;
+C 81 ; WX 600 ; N Q ; B 84 -177 775 610 ;
+C 82 ; WX 600 ; N R ; B 58 -168 805 640 ;
+C 83 ; WX 460 ; N S ; B 45 -81 558 610 ;
+C 84 ; WX 500 ; N T ; B 63 0 744 667 ;
+C 85 ; WX 740 ; N U ; B 126 -16 792 617 ;
+C 86 ; WX 640 ; N V ; B 124 -16 810 714 ;
+C 87 ; WX 880 ; N W ; B 94 -16 1046 723 ;
+C 88 ; WX 560 ; N X ; B -30 -16 699 610 ;
+C 89 ; WX 560 ; N Y ; B 41 -168 774 647 ;
+C 90 ; WX 620 ; N Z ; B 42 -19 669 624 ;
+C 91 ; WX 240 ; N bracketleft ; B -13 -207 405 655 ;
+C 92 ; WX 480 ; N backslash ; B 140 -16 524 610 ;
+C 93 ; WX 320 ; N bracketright ; B -27 -207 391 655 ;
+C 94 ; WX 520 ; N asciicircum ; B 132 239 532 594 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 240 ; N quoteleft ; B 169 343 339 610 ;
+C 97 ; WX 420 ; N a ; B 92 -15 485 438 ;
+C 98 ; WX 420 ; N b ; B 82 -23 492 714 ;
+C 99 ; WX 340 ; N c ; B 87 -14 406 438 ;
+C 100 ; WX 440 ; N d ; B 102 -14 651 714 ;
+C 101 ; WX 340 ; N e ; B 87 -14 403 438 ;
+C 102 ; WX 320 ; N f ; B -119 -314 547 714 ; L i fi ; L l fl ;
+C 103 ; WX 400 ; N g ; B -108 -314 503 438 ;
+C 104 ; WX 440 ; N h ; B 55 -14 524 714 ;
+C 105 ; WX 240 ; N i ; B 100 -14 341 635 ;
+C 106 ; WX 220 ; N j ; B -112 -314 332 635 ;
+C 107 ; WX 440 ; N k ; B 87 -184 628 714 ;
+C 108 ; WX 240 ; N l ; B 102 -14 480 714 ;
+C 109 ; WX 620 ; N m ; B 86 -14 704 438 ;
+C 110 ; WX 460 ; N n ; B 101 -14 544 438 ;
+C 111 ; WX 400 ; N o ; B 87 -14 449 438 ;
+C 112 ; WX 440 ; N p ; B -23 -314 484 432 ;
+C 113 ; WX 400 ; N q ; B 87 -300 490 510 ;
+C 114 ; WX 300 ; N r ; B 101 -14 424 438 ;
+C 115 ; WX 320 ; N s ; B 46 -14 403 438 ;
+C 116 ; WX 320 ; N t ; B 106 -14 426 539 ;
+C 117 ; WX 460 ; N u ; B 102 -14 528 438 ;
+C 118 ; WX 440 ; N v ; B 87 -14 533 488 ;
+C 119 ; WX 680 ; N w ; B 87 -14 782 488 ;
+C 120 ; WX 420 ; N x ; B 70 -195 589 438 ;
+C 121 ; WX 400 ; N y ; B -24 -314 483 438 ;
+C 122 ; WX 440 ; N z ; B 26 -14 508 445 ;
+C 123 ; WX 240 ; N braceleft ; B 55 -207 383 655 ;
+C 124 ; WX 520 ; N bar ; B 320 -16 378 714 ;
+C 125 ; WX 240 ; N braceright ; B -10 -207 318 655 ;
+C 126 ; WX 520 ; N asciitilde ; B 123 186 539 320 ;
+C 161 ; WX 280 ; N exclamdown ; B 72 -186 306 438 ;
+C 162 ; WX 440 ; N cent ; B 122 -134 476 543 ;
+C 163 ; WX 440 ; N sterling ; B -16 -52 506 610 ;
+C 164 ; WX 60 ; N fraction ; B -181 -16 320 610 ;
+C 165 ; WX 440 ; N yen ; B -1 -168 613 647 ;
+C 166 ; WX 440 ; N florin ; B -64 -314 582 610 ;
+C 167 ; WX 420 ; N section ; B 53 -215 514 610 ;
+C 168 ; WX 440 ; N currency ; B 50 85 474 509 ;
+C 169 ; WX 160 ; N quotesingle ; B 145 343 215 610 ;
+C 170 ; WX 340 ; N quotedblleft ; B 169 343 464 610 ;
+C 171 ; WX 340 ; N guillemotleft ; B 98 24 356 414 ;
+C 172 ; WX 240 ; N guilsinglleft ; B 98 24 258 414 ;
+C 173 ; WX 260 ; N guilsinglright ; B 106 24 266 414 ;
+C 174 ; WX 520 ; N fi ; B -124 -314 605 714 ;
+C 175 ; WX 520 ; N fl ; B -124 -314 670 714 ;
+C 177 ; WX 500 ; N endash ; B 51 199 565 239 ;
+C 178 ; WX 460 ; N dagger ; B 138 -37 568 610 ;
+C 179 ; WX 480 ; N daggerdbl ; B 138 -59 533 610 ;
+C 180 ; WX 220 ; N periodcentered ; B 139 208 241 310 ;
+C 182 ; WX 500 ; N paragraph ; B 105 -199 638 594 ;
+C 183 ; WX 600 ; N bullet ; B 228 149 524 445 ;
+C 184 ; WX 180 ; N quotesinglbase ; B 21 -121 191 146 ;
+C 185 ; WX 280 ; N quotedblbase ; B -14 -121 281 146 ;
+C 186 ; WX 360 ; N quotedblright ; B 158 343 453 610 ;
+C 187 ; WX 380 ; N guillemotright ; B 117 24 375 414 ;
+C 188 ; WX 1000 ; N ellipsis ; B 124 -14 916 128 ;
+C 189 ; WX 960 ; N perthousand ; B 112 -160 1005 700 ;
+C 191 ; WX 400 ; N questiondown ; B 82 -186 387 438 ;
+C 193 ; WX 220 ; N grave ; B 193 492 339 659 ;
+C 194 ; WX 300 ; N acute ; B 265 492 422 659 ;
+C 195 ; WX 340 ; N circumflex ; B 223 482 443 649 ;
+C 196 ; WX 440 ; N tilde ; B 243 543 522 619 ;
+C 197 ; WX 440 ; N macron ; B 222 544 465 578 ;
+C 198 ; WX 440 ; N breve ; B 253 522 501 631 ;
+C 199 ; WX 220 ; N dotaccent ; B 236 522 328 610 ;
+C 200 ; WX 360 ; N dieresis ; B 243 522 469 610 ;
+C 202 ; WX 300 ; N ring ; B 240 483 416 659 ;
+C 203 ; WX 300 ; N cedilla ; B 12 -191 184 6 ;
+C 205 ; WX 400 ; N hungarumlaut ; B 208 492 495 659 ;
+C 206 ; WX 280 ; N ogonek ; B 38 -191 233 6 ;
+C 207 ; WX 340 ; N caron ; B 254 492 474 659 ;
+C 208 ; WX 1000 ; N emdash ; B 51 199 1065 239 ;
+C 225 ; WX 740 ; N AE ; B -21 -16 799 594 ;
+C 227 ; WX 260 ; N ordfeminine ; B 111 338 386 610 ;
+C 232 ; WX 580 ; N Lslash ; B 49 -16 657 610 ;
+C 233 ; WX 660 ; N Oslash ; B 83 -78 751 672 ;
+C 234 ; WX 820 ; N OE ; B 63 -16 909 610 ;
+C 235 ; WX 260 ; N ordmasculine ; B 128 339 373 610 ;
+C 241 ; WX 540 ; N ae ; B 67 -14 624 468 ;
+C 245 ; WX 240 ; N dotlessi ; B 100 -14 306 438 ;
+C 248 ; WX 300 ; N lslash ; B 121 -14 515 714 ;
+C 249 ; WX 440 ; N oslash ; B 46 -64 540 488 ;
+C 250 ; WX 560 ; N oe ; B 78 -14 628 438 ;
+C 251 ; WX 420 ; N germandbls ; B -127 -314 542 714 ;
+C -1 ; WX 340 ; N ecircumflex ; B 87 -14 433 649 ;
+C -1 ; WX 340 ; N edieresis ; B 87 -14 449 610 ;
+C -1 ; WX 420 ; N aacute ; B 92 -15 492 659 ;
+C -1 ; WX 740 ; N registered ; B 137 -16 763 610 ;
+C -1 ; WX 240 ; N icircumflex ; B 100 -14 363 649 ;
+C -1 ; WX 460 ; N udieresis ; B 102 -14 528 610 ;
+C -1 ; WX 400 ; N ograve ; B 87 -14 449 659 ;
+C -1 ; WX 460 ; N uacute ; B 102 -14 528 659 ;
+C -1 ; WX 460 ; N ucircumflex ; B 102 -14 528 649 ;
+C -1 ; WX 620 ; N Aacute ; B 13 -16 702 821 ;
+C -1 ; WX 240 ; N igrave ; B 100 -14 306 659 ;
+C -1 ; WX 380 ; N Icircumflex ; B 99 0 504 821 ;
+C -1 ; WX 340 ; N ccedilla ; B 62 -191 406 438 ;
+C -1 ; WX 420 ; N adieresis ; B 92 -15 485 610 ;
+C -1 ; WX 620 ; N Ecircumflex ; B 91 -12 709 821 ;
+C -1 ; WX 320 ; N scaron ; B 46 -14 464 659 ;
+C -1 ; WX 440 ; N thorn ; B -38 -314 505 714 ;
+C -1 ; WX 1000 ; N trademark ; B 127 187 1046 594 ;
+C -1 ; WX 340 ; N egrave ; B 87 -14 403 659 ;
+C -1 ; WX 264 ; N threesuperior ; B 59 234 348 610 ;
+C -1 ; WX 440 ; N zcaron ; B 26 -14 514 659 ;
+C -1 ; WX 420 ; N atilde ; B 92 -15 522 619 ;
+C -1 ; WX 420 ; N aring ; B 92 -15 485 659 ;
+C -1 ; WX 400 ; N ocircumflex ; B 87 -14 453 649 ;
+C -1 ; WX 620 ; N Edieresis ; B 91 -12 709 762 ;
+C -1 ; WX 660 ; N threequarters ; B 39 -16 706 610 ;
+C -1 ; WX 400 ; N ydieresis ; B -24 -314 483 610 ;
+C -1 ; WX 400 ; N yacute ; B -24 -314 483 659 ;
+C -1 ; WX 240 ; N iacute ; B 100 -14 392 659 ;
+C -1 ; WX 620 ; N Acircumflex ; B 13 -16 697 821 ;
+C -1 ; WX 740 ; N Uacute ; B 126 -16 792 821 ;
+C -1 ; WX 340 ; N eacute ; B 87 -14 462 659 ;
+C -1 ; WX 600 ; N Ograve ; B 94 -16 660 821 ;
+C -1 ; WX 420 ; N agrave ; B 92 -15 485 659 ;
+C -1 ; WX 740 ; N Udieresis ; B 126 -16 792 762 ;
+C -1 ; WX 420 ; N acircumflex ; B 92 -15 485 649 ;
+C -1 ; WX 380 ; N Igrave ; B 99 0 504 821 ;
+C -1 ; WX 264 ; N twosuperior ; B 72 234 354 610 ;
+C -1 ; WX 740 ; N Ugrave ; B 126 -16 792 821 ;
+C -1 ; WX 660 ; N onequarter ; B 56 -16 702 610 ;
+C -1 ; WX 740 ; N Ucircumflex ; B 126 -16 792 821 ;
+C -1 ; WX 460 ; N Scaron ; B 45 -81 594 831 ;
+C -1 ; WX 380 ; N Idieresis ; B 99 0 519 762 ;
+C -1 ; WX 240 ; N idieresis ; B 100 -14 369 610 ;
+C -1 ; WX 620 ; N Egrave ; B 91 -12 709 821 ;
+C -1 ; WX 600 ; N Oacute ; B 94 -16 660 821 ;
+C -1 ; WX 520 ; N divide ; B 117 -14 543 440 ;
+C -1 ; WX 620 ; N Atilde ; B 13 -16 702 771 ;
+C -1 ; WX 620 ; N Aring ; B 13 -16 697 831 ;
+C -1 ; WX 600 ; N Odieresis ; B 94 -16 660 762 ;
+C -1 ; WX 620 ; N Adieresis ; B 13 -16 709 762 ;
+C -1 ; WX 700 ; N Ntilde ; B 85 -168 915 761 ;
+C -1 ; WX 620 ; N Zcaron ; B 42 -19 669 831 ;
+C -1 ; WX 540 ; N Thorn ; B 52 0 647 623 ;
+C -1 ; WX 380 ; N Iacute ; B 99 0 532 821 ;
+C -1 ; WX 520 ; N plusminus ; B 117 0 543 436 ;
+C -1 ; WX 520 ; N multiply ; B 133 16 527 410 ;
+C -1 ; WX 620 ; N Eacute ; B 91 -12 709 821 ;
+C -1 ; WX 560 ; N Ydieresis ; B 41 -168 774 762 ;
+C -1 ; WX 264 ; N onesuperior ; B 83 244 311 610 ;
+C -1 ; WX 460 ; N ugrave ; B 102 -14 528 659 ;
+C -1 ; WX 520 ; N logicalnot ; B 117 86 543 340 ;
+C -1 ; WX 460 ; N ntilde ; B 101 -14 544 619 ;
+C -1 ; WX 600 ; N Otilde ; B 94 -16 660 761 ;
+C -1 ; WX 400 ; N otilde ; B 87 -14 502 619 ;
+C -1 ; WX 520 ; N Ccedilla ; B 93 -191 631 610 ;
+C -1 ; WX 620 ; N Agrave ; B 13 -16 697 821 ;
+C -1 ; WX 660 ; N onehalf ; B 56 -16 702 610 ;
+C -1 ; WX 700 ; N Eth ; B 86 -6 768 640 ;
+C -1 ; WX 400 ; N degree ; B 171 324 457 610 ;
+C -1 ; WX 560 ; N Yacute ; B 41 -168 774 821 ;
+C -1 ; WX 600 ; N Ocircumflex ; B 94 -16 660 821 ;
+C -1 ; WX 400 ; N oacute ; B 87 -14 482 659 ;
+C -1 ; WX 460 ; N mu ; B 7 -314 523 438 ;
+C -1 ; WX 520 ; N minus ; B 117 184 543 242 ;
+C -1 ; WX 400 ; N eth ; B 87 -14 522 714 ;
+C -1 ; WX 400 ; N odieresis ; B 87 -14 479 610 ;
+C -1 ; WX 740 ; N copyright ; B 137 -16 763 610 ;
+C -1 ; WX 520 ; N brokenbar ; B 320 -16 378 714 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 131
+
+KPX A quoteright -40
+KPX A quotedblright -40
+KPX A U -10
+KPX A T 10
+KPX A Q 10
+KPX A O 10
+KPX A G -30
+KPX A C 20
+
+KPX D period -30
+KPX D comma -20
+KPX D Y 10
+KPX D A -10
+
+KPX F period -40
+KPX F i 10
+KPX F comma -30
+
+KPX G period -20
+KPX G comma -10
+
+KPX J period -20
+KPX J comma -10
+
+KPX K u -20
+KPX K o -20
+KPX K e -20
+
+KPX L y -10
+KPX L quoteright -25
+KPX L quotedblright -25
+KPX L W -10
+KPX L V -20
+
+KPX O period -20
+KPX O comma -10
+KPX O Y 10
+KPX O T 20
+KPX O A -20
+
+KPX P period -50
+KPX P o -10
+KPX P e -10
+KPX P comma -40
+KPX P a -20
+KPX P A -10
+
+KPX Q U -10
+
+KPX R Y 10
+KPX R W 10
+KPX R T 20
+
+KPX T o -20
+KPX T i 20
+KPX T hyphen -20
+KPX T h 20
+KPX T e -20
+KPX T a -20
+KPX T O 30
+KPX T A 10
+
+KPX V period -100
+KPX V o -20
+KPX V e -20
+KPX V comma -90
+KPX V a -20
+KPX V O 10
+KPX V G -20
+
+KPX W period -50
+KPX W o -20
+KPX W i 10
+KPX W h 10
+KPX W e -20
+KPX W comma -40
+KPX W a -20
+KPX W O 10
+
+KPX Y u -20
+KPX Y period -50
+KPX Y o -50
+KPX Y i 10
+KPX Y e -40
+KPX Y comma -40
+KPX Y a -60
+
+KPX b period -30
+KPX b l -20
+KPX b comma -20
+KPX b b -20
+
+KPX c k -10
+
+KPX comma quoteright -70
+KPX comma quotedblright -70
+
+KPX d w -20
+KPX d v -10
+KPX d d -40
+
+KPX e y 10
+
+KPX f quoteright 30
+KPX f quotedblright 30
+KPX f period -50
+KPX f f -50
+KPX f e -10
+KPX f comma -40
+KPX f a -20
+
+KPX g y 10
+KPX g period -30
+KPX g i 10
+KPX g e 10
+KPX g comma -20
+KPX g a 10
+
+KPX k y 10
+KPX k o -10
+KPX k e -20
+
+KPX m y 10
+KPX m u 10
+
+KPX n y 20
+
+KPX o period -30
+KPX o comma -20
+
+KPX p period -30
+KPX p p -10
+KPX p comma -20
+
+KPX period quoteright -80
+KPX period quotedblright -80
+
+KPX quotedblleft quoteleft 20
+KPX quotedblleft A 10
+
+KPX quoteleft quoteleft -115
+KPX quoteleft A 10
+
+KPX quoteright v 30
+KPX quoteright t 20
+KPX quoteright s -25
+KPX quoteright r 30
+KPX quoteright quoteright -115
+KPX quoteright quotedblright 20
+KPX quoteright l 20
+
+KPX r period -50
+KPX r i 10
+KPX r comma -40
+
+KPX s period -20
+KPX s comma -10
+
+KPX v period -30
+KPX v comma -20
+
+KPX w period -30
+KPX w o 10
+KPX w h 20
+KPX w comma -20
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 280 162 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 240 172 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 240 152 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 250 162 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 260 172 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 180 152 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 230 162 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 180 172 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 170 152 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 220 162 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 110 162 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 60 172 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 50 152 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 100 162 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 210 142 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 160 162 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 130 172 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 120 152 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 150 162 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 90 142 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 120 172 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 310 162 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 260 172 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 260 152 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 270 162 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 220 162 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 170 152 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 130 172 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 70 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 20 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 10 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 80 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 60 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 0 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 40 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex -10 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis -20 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 30 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute -30 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex -80 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis -100 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave -40 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 10 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 60 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 10 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 10 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 60 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde -20 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron -10 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 70 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 30 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 20 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 50 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 60 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 0 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 40 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/ZC-MdIt+ b/font/font/ZC-MdIt+
new file mode 100644
index 0000000..b128a05
--- /dev/null
+++ b/font/font/ZC-MdIt+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 520 ; N Ccaron ; B 93 -16 656 815 ;
+C -1 ; WX 340 ; N ccaron ; B 87 -14 490 659 ;
+C -1 ; WX 700 ; N Dcaron ; B 86 -6 768 815 ;
+C -1 ; WX 559 ; N dcaron ; B 102 -14 838 785 ;
+C -1 ; WX 620 ; N Ecaron ; B 91 -12 709 815 ;
+C -1 ; WX 340 ; N ecaron ; B 87 -14 474 659 ;
+C -1 ; WX 580 ; N Lcaron ; B 53 -16 691 653 ;
+C -1 ; WX 580 ; N Lacute ; B 53 -16 657 815 ;
+C -1 ; WX 359 ; N lcaron ; B 102 -14 667 785 ;
+C -1 ; WX 240 ; N lacute ; B 102 -14 480 815 ;
+C -1 ; WX 700 ; N Ncaron ; B 85 -168 915 815 ;
+C -1 ; WX 460 ; N ncaron ; B 101 -14 544 659 ;
+C -1 ; WX 600 ; N Rcaron ; B 58 -168 805 815 ;
+C -1 ; WX 600 ; N Racute ; B 58 -168 805 815 ;
+C -1 ; WX 300 ; N rcaron ; B 101 -14 454 659 ;
+C -1 ; WX 300 ; N racute ; B 101 -14 438 659 ;
+C -1 ; WX 500 ; N Tcaron ; B 63 0 744 815 ;
+C -1 ; WX 439 ; N tcaron ; B 106 -14 613 610 ;
+C -1 ; WX 740 ; N Uring ; B 126 -16 792 815 ;
+C -1 ; WX 460 ; N uring ; B 102 -14 528 659 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 182 156 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 16 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 218 156 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 500 175 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 178 156 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 0 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 353 43 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 178 156 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 329 175 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute 24 156 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 218 156 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 60 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 168 156 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 218 156 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron -20 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 16 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 118 156 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 275 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 258 156 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 80 0 ;
+EndBuildComposites
diff --git a/font/font/ZC-Rm b/font/font/ZC-Rm
new file mode 100644
index 0000000..a501b13
--- /dev/null
+++ b/font/font/ZC-Rm
@@ -0,0 +1,486 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1990 Adobe Systems Incorporated. All Rights Reserved.
+Comment Creation Date: Thu Sep 6 11:25:29 1990
+Comment UniqueID 32814
+Comment VMusage 33348 40240
+FontName ZapfChancery-Roman
+FullName ITC Zapf Chancery Roman
+FamilyName ITC Zapf Chancery
+Weight Roman
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -171 -314 1005 817
+UnderlinePosition -100
+UnderlineThickness 50
+Version 001.000
+Notice Copyright (c) 1990 Adobe Systems Incorporated. All Rights Reserved.ITC Zapf Chancery is a registered trademark of International Typeface Corporation.
+EncodingScheme AdobeStandardEncoding
+CapHeight 594
+XHeight 438
+Ascender 714
+Descender -300
+StartCharMetrics 228
+C 32 ; WX 250 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 278 ; N exclam ; B 58 -14 192 610 ;
+C 34 ; WX 333 ; N quotedbl ; B 60 330 273 610 ;
+C 35 ; WX 500 ; N numbersign ; B 25 0 459 594 ;
+C 36 ; WX 500 ; N dollar ; B 41 -143 402 707 ;
+C 37 ; WX 667 ; N percent ; B 44 -160 623 700 ;
+C 38 ; WX 778 ; N ampersand ; B 28 -14 743 551 ;
+C 39 ; WX 222 ; N quoteright ; B 13 330 179 610 ;
+C 40 ; WX 333 ; N parenleft ; B 86 -218 301 674 ;
+C 41 ; WX 333 ; N parenright ; B 32 -218 247 674 ;
+C 42 ; WX 444 ; N asterisk ; B 54 260 382 610 ;
+C 43 ; WX 600 ; N plus ; B 47 0 553 506 ;
+C 44 ; WX 250 ; N comma ; B -17 -154 165 155 ;
+C 45 ; WX 333 ; N hyphen ; B 42 193 291 245 ;
+C 46 ; WX 250 ; N period ; B 58 -14 192 128 ;
+C 47 ; WX 278 ; N slash ; B -56 -16 334 610 ;
+C 48 ; WX 500 ; N zero ; B 37 -16 463 610 ;
+C 49 ; WX 500 ; N one ; B 23 0 463 610 ;
+C 50 ; WX 500 ; N two ; B -13 -16 484 610 ;
+C 51 ; WX 500 ; N three ; B -25 -16 412 610 ;
+C 52 ; WX 500 ; N four ; B -5 -30 505 610 ;
+C 53 ; WX 500 ; N five ; B 13 -16 472 666 ;
+C 54 ; WX 500 ; N six ; B 47 -16 476 610 ;
+C 55 ; WX 500 ; N seven ; B 60 -24 477 646 ;
+C 56 ; WX 500 ; N eight ; B 39 -16 426 610 ;
+C 57 ; WX 500 ; N nine ; B 24 -16 453 610 ;
+C 58 ; WX 250 ; N colon ; B 58 -14 192 433 ;
+C 59 ; WX 250 ; N semicolon ; B -17 -154 192 433 ;
+C 60 ; WX 600 ; N less ; B 47 -9 553 515 ;
+C 61 ; WX 600 ; N equal ; B 47 126 553 380 ;
+C 62 ; WX 600 ; N greater ; B 47 -9 553 515 ;
+C 63 ; WX 333 ; N question ; B 59 -14 315 610 ;
+C 64 ; WX 800 ; N at ; B 87 -16 713 610 ;
+C 65 ; WX 611 ; N A ; B -68 -9 650 610 ;
+C 66 ; WX 556 ; N B ; B -2 -2 510 594 ;
+C 67 ; WX 556 ; N C ; B 33 -16 531 610 ;
+C 68 ; WX 667 ; N D ; B -2 -2 634 594 ;
+C 69 ; WX 556 ; N E ; B -2 -3 550 604 ;
+C 70 ; WX 444 ; N F ; B -3 0 460 604 ;
+C 71 ; WX 611 ; N G ; B 33 -33 586 610 ;
+C 72 ; WX 667 ; N H ; B -8 0 667 594 ;
+C 73 ; WX 333 ; N I ; B -2 0 324 594 ;
+C 74 ; WX 278 ; N J ; B -152 -218 291 594 ;
+C 75 ; WX 611 ; N K ; B -7 -3 643 604 ;
+C 76 ; WX 556 ; N L ; B 20 0 542 594 ;
+C 77 ; WX 833 ; N M ; B -9 -9 836 604 ;
+C 78 ; WX 667 ; N N ; B -2 -16 685 594 ;
+C 79 ; WX 667 ; N O ; B 33 -16 634 610 ;
+C 80 ; WX 500 ; N P ; B -8 0 503 594 ;
+C 81 ; WX 667 ; N Q ; B 33 -160 708 610 ;
+C 82 ; WX 556 ; N R ; B -8 -8 595 594 ;
+C 83 ; WX 444 ; N S ; B -9 -16 405 610 ;
+C 84 ; WX 556 ; N T ; B 17 0 564 604 ;
+C 85 ; WX 667 ; N U ; B 8 -16 667 594 ;
+C 86 ; WX 556 ; N V ; B -35 -16 554 610 ;
+C 87 ; WX 889 ; N W ; B -28 -16 896 610 ;
+C 88 ; WX 556 ; N X ; B -52 -16 572 610 ;
+C 89 ; WX 556 ; N Y ; B -38 0 600 610 ;
+C 90 ; WX 611 ; N Z ; B 0 -36 635 614 ;
+C 91 ; WX 333 ; N bracketleft ; B 81 -207 358 663 ;
+C 92 ; WX 278 ; N backslash ; B -56 -16 334 610 ;
+C 93 ; WX 333 ; N bracketright ; B -25 -207 252 663 ;
+C 94 ; WX 600 ; N asciicircum ; B 90 229 510 594 ;
+C 95 ; WX 500 ; N underscore ; B 0 -125 500 -75 ;
+C 96 ; WX 222 ; N quoteleft ; B 50 330 216 610 ;
+C 97 ; WX 389 ; N a ; B 23 -14 423 438 ;
+C 98 ; WX 389 ; N b ; B 28 -14 354 714 ;
+C 99 ; WX 333 ; N c ; B 23 -14 341 438 ;
+C 100 ; WX 389 ; N d ; B 23 -14 474 714 ;
+C 101 ; WX 333 ; N e ; B 23 -14 354 438 ;
+C 102 ; WX 222 ; N f ; B -166 -314 373 714 ; L i fi ; L l fl ;
+C 103 ; WX 389 ; N g ; B -63 -314 392 438 ;
+C 104 ; WX 444 ; N h ; B 42 -14 475 714 ;
+C 105 ; WX 278 ; N i ; B 19 -14 287 627 ;
+C 106 ; WX 222 ; N j ; B -131 -314 197 627 ;
+C 107 ; WX 389 ; N k ; B 31 -14 419 714 ;
+C 108 ; WX 222 ; N l ; B 37 -14 302 714 ;
+C 109 ; WX 667 ; N m ; B -1 -14 694 438 ;
+C 110 ; WX 444 ; N n ; B -1 -14 471 438 ;
+C 111 ; WX 389 ; N o ; B 23 -14 354 438 ;
+C 112 ; WX 389 ; N p ; B -69 -300 354 438 ;
+C 113 ; WX 389 ; N q ; B 23 -300 398 500 ;
+C 114 ; WX 278 ; N r ; B -1 -14 314 438 ;
+C 115 ; WX 333 ; N s ; B 0 -14 292 438 ;
+C 116 ; WX 278 ; N t ; B -27 -14 296 523 ;
+C 117 ; WX 444 ; N u ; B -1 -14 471 438 ;
+C 118 ; WX 389 ; N v ; B -36 -14 383 450 ;
+C 119 ; WX 667 ; N w ; B -21 -14 671 445 ;
+C 120 ; WX 444 ; N x ; B -6 -89 470 438 ;
+C 121 ; WX 389 ; N y ; B -127 -314 399 450 ;
+C 122 ; WX 333 ; N z ; B -41 -14 366 438 ;
+C 123 ; WX 333 ; N braceleft ; B 50 -207 294 663 ;
+C 124 ; WX 222 ; N bar ; B 74 -16 132 714 ;
+C 125 ; WX 333 ; N braceright ; B 39 -207 283 663 ;
+C 126 ; WX 600 ; N asciitilde ; B 69 186 531 320 ;
+C 161 ; WX 278 ; N exclamdown ; B 54 -186 188 438 ;
+C 162 ; WX 500 ; N cent ; B 92 -130 388 538 ;
+C 163 ; WX 500 ; N sterling ; B 0 -52 475 610 ;
+C 164 ; WX 168 ; N fraction ; B -171 -16 339 610 ;
+C 165 ; WX 500 ; N yen ; B -22 0 553 610 ;
+C 166 ; WX 500 ; N florin ; B -131 -314 515 610 ;
+C 167 ; WX 500 ; N section ; B 45 -216 442 610 ;
+C 168 ; WX 500 ; N currency ; B 38 85 462 509 ;
+C 169 ; WX 222 ; N quotesingle ; B 76 330 146 610 ;
+C 170 ; WX 333 ; N quotedblleft ; B 42 330 328 610 ;
+C 171 ; WX 444 ; N guillemotleft ; B 83 20 341 418 ;
+C 172 ; WX 333 ; N guilsinglleft ; B 81 20 231 418 ;
+C 173 ; WX 333 ; N guilsinglright ; B 81 20 231 418 ;
+C 174 ; WX 444 ; N fi ; B -154 -314 485 714 ;
+C 175 ; WX 444 ; N fl ; B -154 -314 501 714 ;
+C 177 ; WX 500 ; N endash ; B -5 199 505 239 ;
+C 178 ; WX 444 ; N dagger ; B 11 -36 433 610 ;
+C 179 ; WX 444 ; N daggerdbl ; B 46 -43 384 610 ;
+C 180 ; WX 250 ; N periodcentered ; B 74 214 176 316 ;
+C 182 ; WX 600 ; N paragraph ; B 79 -200 551 594 ;
+C 183 ; WX 500 ; N bullet ; B 102 149 398 445 ;
+C 184 ; WX 222 ; N quotesinglbase ; B -35 -140 131 140 ;
+C 185 ; WX 333 ; N quotedblbase ; B -25 -140 261 140 ;
+C 186 ; WX 333 ; N quotedblright ; B 12 330 298 610 ;
+C 187 ; WX 444 ; N guillemotright ; B 83 20 341 418 ;
+C 188 ; WX 1000 ; N ellipsis ; B 100 -14 900 128 ;
+C 189 ; WX 944 ; N perthousand ; B 31 -160 926 700 ;
+C 191 ; WX 333 ; N questiondown ; B -8 -186 248 438 ;
+C 193 ; WX 278 ; N grave ; B 63 484 220 650 ;
+C 194 ; WX 278 ; N acute ; B 129 484 286 650 ;
+C 195 ; WX 278 ; N circumflex ; B 49 490 272 650 ;
+C 196 ; WX 278 ; N tilde ; B 44 534 323 610 ;
+C 197 ; WX 278 ; N macron ; B 51 531 291 571 ;
+C 198 ; WX 278 ; N breve ; B 62 516 311 626 ;
+C 199 ; WX 278 ; N dotaccent ; B 111 516 207 610 ;
+C 200 ; WX 278 ; N dieresis ; B 56 516 286 610 ;
+C 202 ; WX 278 ; N ring ; B 86 489 262 665 ;
+C 203 ; WX 278 ; N cedilla ; B 21 -192 196 6 ;
+C 205 ; WX 278 ; N hungarumlaut ; B 62 484 353 650 ;
+C 206 ; WX 278 ; N ogonek ; B -13 -192 221 10 ;
+C 207 ; WX 278 ; N caron ; B 96 484 319 644 ;
+C 208 ; WX 1000 ; N emdash ; B -5 199 1005 239 ;
+C 225 ; WX 778 ; N AE ; B -43 -13 772 596 ;
+C 227 ; WX 253 ; N ordfeminine ; B 20 339 280 610 ;
+C 232 ; WX 556 ; N Lslash ; B 20 0 542 594 ;
+C 233 ; WX 667 ; N Oslash ; B 14 -87 634 681 ;
+C 234 ; WX 889 ; N OE ; B 24 -16 883 610 ;
+C 235 ; WX 253 ; N ordmasculine ; B 27 339 242 610 ;
+C 241 ; WX 556 ; N ae ; B 14 -14 565 469 ;
+C 245 ; WX 278 ; N dotlessi ; B 19 -14 287 438 ;
+C 248 ; WX 222 ; N lslash ; B -20 -14 302 714 ;
+C 249 ; WX 389 ; N oslash ; B -15 -68 377 492 ;
+C 250 ; WX 556 ; N oe ; B 23 -14 573 438 ;
+C 251 ; WX 444 ; N germandbls ; B -132 -314 421 714 ;
+C -1 ; WX 333 ; N ecircumflex ; B 23 -14 354 650 ;
+C -1 ; WX 333 ; N edieresis ; B 23 -14 354 610 ;
+C -1 ; WX 389 ; N aacute ; B 23 -14 423 650 ;
+C -1 ; WX 800 ; N registered ; B 87 -16 713 610 ;
+C -1 ; WX 278 ; N icircumflex ; B 19 -14 287 650 ;
+C -1 ; WX 444 ; N udieresis ; B -1 -14 471 610 ;
+C -1 ; WX 389 ; N ograve ; B 23 -14 354 650 ;
+C -1 ; WX 444 ; N uacute ; B -1 -14 471 650 ;
+C -1 ; WX 444 ; N ucircumflex ; B -1 -14 471 650 ;
+C -1 ; WX 611 ; N Aacute ; B -68 -9 650 802 ;
+C -1 ; WX 278 ; N igrave ; B 19 -14 287 650 ;
+C -1 ; WX 333 ; N Icircumflex ; B -2 0 324 802 ;
+C -1 ; WX 333 ; N ccedilla ; B 23 -192 341 438 ;
+C -1 ; WX 389 ; N adieresis ; B 23 -14 423 610 ;
+C -1 ; WX 556 ; N Ecircumflex ; B -2 -3 550 802 ;
+C -1 ; WX 333 ; N scaron ; B 0 -14 357 644 ;
+C -1 ; WX 389 ; N thorn ; B -69 -300 354 714 ;
+C -1 ; WX 990 ; N trademark ; B 3 187 922 594 ;
+C -1 ; WX 333 ; N egrave ; B 23 -14 354 650 ;
+C -1 ; WX 325 ; N threesuperior ; B -6 234 284 610 ;
+C -1 ; WX 333 ; N zcaron ; B -41 -14 366 644 ;
+C -1 ; WX 389 ; N atilde ; B 23 -14 423 610 ;
+C -1 ; WX 389 ; N aring ; B 23 -14 423 665 ;
+C -1 ; WX 389 ; N ocircumflex ; B 23 -14 354 650 ;
+C -1 ; WX 556 ; N Edieresis ; B -2 -3 550 762 ;
+C -1 ; WX 750 ; N threequarters ; B -6 -16 736 610 ;
+C -1 ; WX 389 ; N ydieresis ; B -127 -314 399 610 ;
+C -1 ; WX 389 ; N yacute ; B -127 -314 399 650 ;
+C -1 ; WX 278 ; N iacute ; B 19 -14 287 650 ;
+C -1 ; WX 611 ; N Acircumflex ; B -68 -9 650 802 ;
+C -1 ; WX 667 ; N Uacute ; B 8 -16 667 802 ;
+C -1 ; WX 333 ; N eacute ; B 23 -14 354 650 ;
+C -1 ; WX 667 ; N Ograve ; B 33 -16 634 802 ;
+C -1 ; WX 389 ; N agrave ; B 23 -14 423 650 ;
+C -1 ; WX 667 ; N Udieresis ; B 8 -16 667 762 ;
+C -1 ; WX 389 ; N acircumflex ; B 23 -14 423 650 ;
+C -1 ; WX 333 ; N Igrave ; B -2 0 324 802 ;
+C -1 ; WX 325 ; N twosuperior ; B -19 234 315 610 ;
+C -1 ; WX 667 ; N Ugrave ; B 8 -16 667 802 ;
+C -1 ; WX 750 ; N onequarter ; B 15 -16 736 610 ;
+C -1 ; WX 667 ; N Ucircumflex ; B 8 -16 667 802 ;
+C -1 ; WX 444 ; N Scaron ; B -9 -16 422 796 ;
+C -1 ; WX 333 ; N Idieresis ; B -2 0 324 762 ;
+C -1 ; WX 278 ; N idieresis ; B 19 -14 287 610 ;
+C -1 ; WX 556 ; N Egrave ; B -2 -3 550 802 ;
+C -1 ; WX 667 ; N Oacute ; B 33 -16 634 802 ;
+C -1 ; WX 600 ; N divide ; B 47 -14 553 520 ;
+C -1 ; WX 611 ; N Atilde ; B -68 -9 650 762 ;
+C -1 ; WX 611 ; N Aring ; B -68 -9 650 817 ;
+C -1 ; WX 667 ; N Odieresis ; B 33 -16 634 762 ;
+C -1 ; WX 611 ; N Adieresis ; B -68 -9 650 762 ;
+C -1 ; WX 667 ; N Ntilde ; B -2 -16 685 762 ;
+C -1 ; WX 611 ; N Zcaron ; B 0 -36 635 796 ;
+C -1 ; WX 500 ; N Thorn ; B -8 0 494 594 ;
+C -1 ; WX 333 ; N Iacute ; B -2 0 324 802 ;
+C -1 ; WX 600 ; N plusminus ; B 47 0 553 506 ;
+C -1 ; WX 600 ; N multiply ; B 73 26 527 480 ;
+C -1 ; WX 556 ; N Eacute ; B -2 -3 550 802 ;
+C -1 ; WX 556 ; N Ydieresis ; B -38 0 600 762 ;
+C -1 ; WX 325 ; N onesuperior ; B 15 244 301 610 ;
+C -1 ; WX 444 ; N ugrave ; B -1 -14 471 650 ;
+C -1 ; WX 600 ; N logicalnot ; B 47 126 553 380 ;
+C -1 ; WX 444 ; N ntilde ; B -1 -14 471 610 ;
+C -1 ; WX 667 ; N Otilde ; B 33 -16 634 762 ;
+C -1 ; WX 389 ; N otilde ; B 23 -14 389 610 ;
+C -1 ; WX 556 ; N Ccedilla ; B 33 -192 531 610 ;
+C -1 ; WX 611 ; N Agrave ; B -68 -9 650 802 ;
+C -1 ; WX 750 ; N onehalf ; B 15 -16 745 610 ;
+C -1 ; WX 667 ; N Eth ; B -2 -2 634 594 ;
+C -1 ; WX 400 ; N degree ; B 61 324 347 610 ;
+C -1 ; WX 556 ; N Yacute ; B -38 0 600 802 ;
+C -1 ; WX 667 ; N Ocircumflex ; B 33 -16 634 802 ;
+C -1 ; WX 389 ; N oacute ; B 23 -14 354 650 ;
+C -1 ; WX 444 ; N mu ; B -1 -314 471 438 ;
+C -1 ; WX 600 ; N minus ; B 47 224 553 282 ;
+C -1 ; WX 389 ; N eth ; B 23 -14 384 718 ;
+C -1 ; WX 389 ; N odieresis ; B 23 -14 354 610 ;
+C -1 ; WX 800 ; N copyright ; B 87 -16 713 610 ;
+C -1 ; WX 222 ; N brokenbar ; B 74 -16 132 714 ;
+EndCharMetrics
+StartKernData
+StartKernPairs 140
+
+KPX A y -37
+KPX A w -27
+KPX A v -37
+KPX A quoteright -90
+KPX A quotedblright -90
+KPX A Y -55
+KPX A W -55
+KPX A V -55
+KPX A T -55
+KPX A Q -18
+KPX A O -18
+KPX A G -18
+KPX A C -18
+
+KPX B period -75
+KPX B comma -75
+
+KPX D period -75
+KPX D comma -75
+KPX D W 10
+KPX D V 10
+
+KPX F r -50
+KPX F period -111
+KPX F o -75
+KPX F i -50
+KPX F e -75
+KPX F comma -111
+KPX F a -75
+KPX F A -37
+
+KPX G period -75
+KPX G comma -75
+
+KPX J period -75
+KPX J comma -50
+
+KPX L y -18
+KPX L quoteright -90
+KPX L quotedblright -90
+KPX L Y -55
+KPX L W -55
+KPX L V -55
+KPX L T -74
+
+KPX N period -50
+KPX N comma -50
+
+KPX O period -75
+KPX O comma -75
+KPX O W 10
+KPX O V 10
+
+KPX P period -129
+KPX P comma -129
+KPX P A -18
+
+KPX Q period -37
+KPX Q comma 75
+
+KPX R W -18
+KPX R V -18
+KPX R T -18
+
+KPX S period -75
+KPX S comma -75
+
+KPX T y -55
+KPX T w -74
+KPX T u -55
+KPX T semicolon -74
+KPX T r -55
+KPX T period -92
+KPX T o -55
+KPX T i -18
+KPX T hyphen -74
+KPX T e -55
+KPX T comma -92
+KPX T colon -74
+KPX T a -55
+KPX T A -37
+
+KPX V semicolon -37
+KPX V period -111
+KPX V o -18
+KPX V hyphen -18
+KPX V e -18
+KPX V comma -111
+KPX V a -18
+KPX V O 10
+KPX V G 10
+KPX V A -37
+
+KPX W semicolon -37
+KPX W period -111
+KPX W o -37
+KPX W e -37
+KPX W comma -111
+KPX W colon -37
+KPX W a -37
+KPX W O 10
+KPX W A -57
+
+KPX Y u -55
+KPX Y semicolon -74
+KPX Y period -111
+KPX Y o -55
+KPX Y i -45
+KPX Y hyphen -100
+KPX Y e -75
+KPX Y comma -111
+KPX Y colon -74
+KPX Y a -75
+KPX Y A -55
+
+KPX b period -75
+KPX b comma -75
+
+KPX c period -30
+KPX c comma -50
+
+KPX comma space -37
+KPX comma quoteright -20
+KPX comma quotedblright -20
+
+KPX f quoteright 37
+KPX f quotedblright 37
+KPX f period -75
+KPX f comma -75
+
+KPX g period -50
+KPX g comma -25
+
+KPX period quoteright -37
+KPX period quotedblright -37
+
+KPX quotedblleft quoteleft -18
+
+KPX quotedblright space -37
+
+KPX quoteleft quoteleft -102
+KPX quoteleft A -90
+
+KPX quoteright t -55
+KPX quoteright s -75
+KPX quoteright r -55
+KPX quoteright quoteright -102
+KPX quoteright quotedblright -18
+KPX quoteright l -40
+KPX quoteright d -70
+
+KPX r period -74
+KPX r hyphen -37
+KPX r comma -74
+
+KPX space quoteleft -37
+KPX space quotedblleft -37
+KPX space Y -37
+KPX space W -37
+KPX space V -37
+KPX space T -37
+KPX space A -37
+
+KPX v period -74
+KPX v comma -74
+
+KPX w period -74
+KPX w comma -74
+
+KPX y period -74
+KPX y comma -74
+EndKernPairs
+EndKernData
+StartComposites 56
+CC Aacute 2 ; PCC A 0 0 ; PCC acute 177 152 ;
+CC Acircumflex 2 ; PCC A 0 0 ; PCC circumflex 177 152 ;
+CC Adieresis 2 ; PCC A 0 0 ; PCC dieresis 177 152 ;
+CC Agrave 2 ; PCC A 0 0 ; PCC grave 177 152 ;
+CC Aring 2 ; PCC A 0 0 ; PCC ring 167 152 ;
+CC Atilde 2 ; PCC A 0 0 ; PCC tilde 177 152 ;
+CC Eacute 2 ; PCC E 0 0 ; PCC acute 119 152 ;
+CC Ecircumflex 2 ; PCC E 0 0 ; PCC circumflex 119 152 ;
+CC Edieresis 2 ; PCC E 0 0 ; PCC dieresis 119 152 ;
+CC Egrave 2 ; PCC E 0 0 ; PCC grave 119 152 ;
+CC Iacute 2 ; PCC I 0 0 ; PCC acute 38 152 ;
+CC Icircumflex 2 ; PCC I 0 0 ; PCC circumflex 38 152 ;
+CC Idieresis 2 ; PCC I 0 0 ; PCC dieresis 38 152 ;
+CC Igrave 2 ; PCC I 0 0 ; PCC grave 38 152 ;
+CC Ntilde 2 ; PCC N 0 0 ; PCC tilde 175 152 ;
+CC Oacute 2 ; PCC O 0 0 ; PCC acute 220 152 ;
+CC Ocircumflex 2 ; PCC O 0 0 ; PCC circumflex 220 152 ;
+CC Odieresis 2 ; PCC O 0 0 ; PCC dieresis 220 152 ;
+CC Ograve 2 ; PCC O 0 0 ; PCC grave 220 152 ;
+CC Otilde 2 ; PCC O 0 0 ; PCC tilde 220 152 ;
+CC Scaron 2 ; PCC S 0 0 ; PCC caron 103 152 ;
+CC Uacute 2 ; PCC U 0 0 ; PCC acute 195 152 ;
+CC Ucircumflex 2 ; PCC U 0 0 ; PCC circumflex 195 152 ;
+CC Udieresis 2 ; PCC U 0 0 ; PCC dieresis 195 152 ;
+CC Ugrave 2 ; PCC U 0 0 ; PCC grave 195 152 ;
+CC Yacute 2 ; PCC Y 0 0 ; PCC acute 149 152 ;
+CC Ydieresis 2 ; PCC Y 0 0 ; PCC dieresis 149 152 ;
+CC Zcaron 2 ; PCC Z 0 0 ; PCC caron 147 152 ;
+CC aacute 2 ; PCC a 0 0 ; PCC acute 66 0 ;
+CC acircumflex 2 ; PCC a 0 0 ; PCC circumflex 66 0 ;
+CC adieresis 2 ; PCC a 0 0 ; PCC dieresis 66 0 ;
+CC agrave 2 ; PCC a 0 0 ; PCC grave 66 0 ;
+CC aring 2 ; PCC a 0 0 ; PCC ring 56 0 ;
+CC atilde 2 ; PCC a 0 0 ; PCC tilde 66 0 ;
+CC eacute 2 ; PCC e 0 0 ; PCC acute 38 0 ;
+CC ecircumflex 2 ; PCC e 0 0 ; PCC circumflex 38 0 ;
+CC edieresis 2 ; PCC e 0 0 ; PCC dieresis 38 0 ;
+CC egrave 2 ; PCC e 0 0 ; PCC grave 38 0 ;
+CC iacute 2 ; PCC dotlessi 0 0 ; PCC acute 0 0 ;
+CC icircumflex 2 ; PCC dotlessi 0 0 ; PCC circumflex 0 0 ;
+CC idieresis 2 ; PCC dotlessi 0 0 ; PCC dieresis 0 0 ;
+CC igrave 2 ; PCC dotlessi 0 0 ; PCC grave 0 0 ;
+CC ntilde 2 ; PCC n 0 0 ; PCC tilde 63 0 ;
+CC oacute 2 ; PCC o 0 0 ; PCC acute 66 0 ;
+CC ocircumflex 2 ; PCC o 0 0 ; PCC circumflex 66 0 ;
+CC odieresis 2 ; PCC o 0 0 ; PCC dieresis 66 0 ;
+CC ograve 2 ; PCC o 0 0 ; PCC grave 66 0 ;
+CC otilde 2 ; PCC o 0 0 ; PCC tilde 66 0 ;
+CC scaron 2 ; PCC s 0 0 ; PCC caron 38 0 ;
+CC uacute 2 ; PCC u 0 0 ; PCC acute 63 0 ;
+CC ucircumflex 2 ; PCC u 0 0 ; PCC circumflex 63 0 ;
+CC udieresis 2 ; PCC u 0 0 ; PCC dieresis 63 0 ;
+CC ugrave 2 ; PCC u 0 0 ; PCC grave 63 0 ;
+CC yacute 2 ; PCC y 0 0 ; PCC acute 66 0 ;
+CC ydieresis 2 ; PCC y 0 0 ; PCC dieresis 66 0 ;
+CC zcaron 2 ; PCC z 0 0 ; PCC caron 8 0 ;
+EndComposites
+EndFontMetrics
diff --git a/font/font/ZC-Rm+ b/font/font/ZC-Rm+
new file mode 100644
index 0000000..0446635
--- /dev/null
+++ b/font/font/ZC-Rm+
@@ -0,0 +1,44 @@
+StartExtraCharMetrics
+C -1 ; WX 556 ; N Ccaron ; B 33 -16 531 808 ;
+C -1 ; WX 333 ; N ccaron ; B 23 -14 362 644 ;
+C -1 ; WX 667 ; N Dcaron ; B -2 -2 634 808 ;
+C -1 ; WX 505 ; N dcaron ; B 23 -14 657 785 ;
+C -1 ; WX 556 ; N Ecaron ; B -2 -3 550 808 ;
+C -1 ; WX 333 ; N ecaron ; B 23 -14 354 644 ;
+C -1 ; WX 556 ; N Lcaron ; B 20 0 542 653 ;
+C -1 ; WX 556 ; N Lacute ; B 20 0 542 814 ;
+C -1 ; WX 338 ; N lcaron ; B 37 -14 485 785 ;
+C -1 ; WX 222 ; N lacute ; B 37 -14 302 814 ;
+C -1 ; WX 667 ; N Ncaron ; B -2 -16 685 808 ;
+C -1 ; WX 444 ; N ncaron ; B -1 -14 471 644 ;
+C -1 ; WX 556 ; N Rcaron ; B -8 -8 595 808 ;
+C -1 ; WX 556 ; N Racute ; B -8 -8 595 814 ;
+C -1 ; WX 278 ; N rcaron ; B -1 -14 319 644 ;
+C -1 ; WX 278 ; N racute ; B -1 -14 314 650 ;
+C -1 ; WX 556 ; N Tcaron ; B 17 0 564 808 ;
+C -1 ; WX 394 ; N tcaron ; B -27 -14 479 610 ;
+C -1 ; WX 667 ; N Uring ; B 8 -16 667 808 ;
+C -1 ; WX 444 ; N uring ; B -1 -14 471 665 ;
+EndExtraCharMetrics
+StartBuildComposites
+CC Ccaron 2 ; PCC C 0 0 ; PCC caron 189 164 ;
+CC ccaron 2 ; PCC c 0 0 ; PCC caron 43 0 ;
+CC Dcaron 2 ; PCC D 0 0 ; PCC caron 194 164 ;
+CC dcaron 2 ; PCC d 0 0 ; PCC quoteright 478 175 ;
+CC Ecaron 2 ; PCC E 0 0 ; PCC caron 139 164 ;
+CC ecaron 2 ; PCC e 0 0 ; PCC caron 27 0 ;
+CC Lcaron 2 ; PCC L 0 0 ; PCC quoteright 328 43 ;
+CC Lacute 2 ; PCC L 0 0 ; PCC acute 139 164 ;
+CC lcaron 2 ; PCC l 0 0 ; PCC quoteright 306 175 ;
+CC lacute 2 ; PCC l 0 0 ; PCC acute -12 164 ;
+CC Ncaron 2 ; PCC N 0 0 ; PCC caron 194 164 ;
+CC ncaron 2 ; PCC n 0 0 ; PCC caron 83 0 ;
+CC Rcaron 2 ; PCC R 0 0 ; PCC caron 139 164 ;
+CC Racute 2 ; PCC R 0 0 ; PCC acute 169 164 ;
+CC rcaron 2 ; PCC r 0 0 ; PCC caron 0 0 ;
+CC racute 2 ; PCC r 0 0 ; PCC acute 16 0 ;
+CC Tcaron 2 ; PCC T 0 0 ; PCC caron 139 164 ;
+CC tcaron 2 ; PCC t 0 0 ; PCC quoteright 300 0 ;
+CC Uring 2 ; PCC U 0 0 ; PCC ring 194 143 ;
+CC uring 2 ; PCC u 0 0 ; PCC ring 83 0 ;
+EndBuildComposites
diff --git a/font/font/ZD b/font/font/ZD
new file mode 100644
index 0000000..6b98e8d
--- /dev/null
+++ b/font/font/ZD
@@ -0,0 +1,222 @@
+StartFontMetrics 2.0
+Comment Copyright (c) 1985, 1987, 1988, 1989 Adobe Systems Incorporated. All rights reserved.
+Comment Creation Date: Fri Dec 1 12:57:42 1989
+Comment UniqueID 26200
+Comment VMusage 39281 49041
+FontName ZapfDingbats
+FullName ITC Zapf Dingbats
+FamilyName ITC Zapf Dingbats
+Weight Medium
+ItalicAngle 0
+IsFixedPitch false
+FontBBox -1 -143 981 820
+UnderlinePosition -98
+UnderlineThickness 54
+Version 001.004
+Notice Copyright (c) 1985, 1987, 1988, 1989 Adobe Systems Incorporated. All rights reserved.ITC Zapf Dingbats is a registered trademark of International Typeface Corporation.
+EncodingScheme FontSpecific
+StartCharMetrics 202
+C 32 ; WX 278 ; N space ; B 0 0 0 0 ;
+C 33 ; WX 974 ; N a1 ; B 35 72 939 621 ;
+C 34 ; WX 961 ; N a2 ; B 35 81 927 611 ;
+C 35 ; WX 974 ; N a202 ; B 35 72 939 621 ;
+C 36 ; WX 980 ; N a3 ; B 35 0 945 692 ;
+C 37 ; WX 719 ; N a4 ; B 34 139 685 566 ;
+C 38 ; WX 789 ; N a5 ; B 35 -14 755 705 ;
+C 39 ; WX 790 ; N a119 ; B 35 -14 755 705 ;
+C 40 ; WX 791 ; N a118 ; B 35 -13 761 705 ;
+C 41 ; WX 690 ; N a117 ; B 35 138 655 553 ;
+C 42 ; WX 960 ; N a11 ; B 35 123 925 568 ;
+C 43 ; WX 939 ; N a12 ; B 35 134 904 559 ;
+C 44 ; WX 549 ; N a13 ; B 29 -11 516 705 ;
+C 45 ; WX 855 ; N a14 ; B 34 59 820 632 ;
+C 46 ; WX 911 ; N a15 ; B 35 50 876 642 ;
+C 47 ; WX 933 ; N a16 ; B 35 139 899 550 ;
+C 48 ; WX 911 ; N a105 ; B 35 50 876 642 ;
+C 49 ; WX 945 ; N a17 ; B 35 139 909 553 ;
+C 50 ; WX 974 ; N a18 ; B 35 104 938 587 ;
+C 51 ; WX 755 ; N a19 ; B 34 -13 721 705 ;
+C 52 ; WX 846 ; N a20 ; B 36 -14 811 705 ;
+C 53 ; WX 762 ; N a21 ; B 35 0 727 692 ;
+C 54 ; WX 761 ; N a22 ; B 35 0 727 692 ;
+C 55 ; WX 571 ; N a23 ; B -1 -68 571 661 ;
+C 56 ; WX 677 ; N a24 ; B 36 -13 642 705 ;
+C 57 ; WX 763 ; N a25 ; B 35 0 728 692 ;
+C 58 ; WX 760 ; N a26 ; B 35 0 726 692 ;
+C 59 ; WX 759 ; N a27 ; B 35 0 725 692 ;
+C 60 ; WX 754 ; N a28 ; B 35 0 720 692 ;
+C 61 ; WX 494 ; N a6 ; B 35 0 460 692 ;
+C 62 ; WX 552 ; N a7 ; B 35 0 517 692 ;
+C 63 ; WX 537 ; N a8 ; B 35 0 503 692 ;
+C 64 ; WX 577 ; N a9 ; B 35 96 542 596 ;
+C 65 ; WX 692 ; N a10 ; B 35 -14 657 705 ;
+C 66 ; WX 786 ; N a29 ; B 35 -14 751 705 ;
+C 67 ; WX 788 ; N a30 ; B 35 -14 752 705 ;
+C 68 ; WX 788 ; N a31 ; B 35 -14 753 705 ;
+C 69 ; WX 790 ; N a32 ; B 35 -14 756 705 ;
+C 70 ; WX 793 ; N a33 ; B 35 -13 759 705 ;
+C 71 ; WX 794 ; N a34 ; B 35 -13 759 705 ;
+C 72 ; WX 816 ; N a35 ; B 35 -14 782 705 ;
+C 73 ; WX 823 ; N a36 ; B 35 -14 787 705 ;
+C 74 ; WX 789 ; N a37 ; B 35 -14 754 705 ;
+C 75 ; WX 841 ; N a38 ; B 35 -14 807 705 ;
+C 76 ; WX 823 ; N a39 ; B 35 -14 789 705 ;
+C 77 ; WX 833 ; N a40 ; B 35 -14 798 705 ;
+C 78 ; WX 816 ; N a41 ; B 35 -13 782 705 ;
+C 79 ; WX 831 ; N a42 ; B 35 -14 796 705 ;
+C 80 ; WX 923 ; N a43 ; B 35 -14 888 705 ;
+C 81 ; WX 744 ; N a44 ; B 35 0 710 692 ;
+C 82 ; WX 723 ; N a45 ; B 35 0 688 692 ;
+C 83 ; WX 749 ; N a46 ; B 35 0 714 692 ;
+C 84 ; WX 790 ; N a47 ; B 34 -14 756 705 ;
+C 85 ; WX 792 ; N a48 ; B 35 -14 758 705 ;
+C 86 ; WX 695 ; N a49 ; B 35 -14 661 706 ;
+C 87 ; WX 776 ; N a50 ; B 35 -6 741 699 ;
+C 88 ; WX 768 ; N a51 ; B 35 -7 734 699 ;
+C 89 ; WX 792 ; N a52 ; B 35 -14 757 705 ;
+C 90 ; WX 759 ; N a53 ; B 35 0 725 692 ;
+C 91 ; WX 707 ; N a54 ; B 35 -13 672 704 ;
+C 92 ; WX 708 ; N a55 ; B 35 -14 672 705 ;
+C 93 ; WX 682 ; N a56 ; B 35 -14 647 705 ;
+C 94 ; WX 701 ; N a57 ; B 35 -14 666 705 ;
+C 95 ; WX 826 ; N a58 ; B 35 -14 791 705 ;
+C 96 ; WX 815 ; N a59 ; B 35 -14 780 705 ;
+C 97 ; WX 789 ; N a60 ; B 35 -14 754 705 ;
+C 98 ; WX 789 ; N a61 ; B 35 -14 754 705 ;
+C 99 ; WX 707 ; N a62 ; B 34 -14 673 705 ;
+C 100 ; WX 687 ; N a63 ; B 36 0 651 692 ;
+C 101 ; WX 696 ; N a64 ; B 35 0 661 691 ;
+C 102 ; WX 689 ; N a65 ; B 35 0 655 692 ;
+C 103 ; WX 786 ; N a66 ; B 34 -14 751 705 ;
+C 104 ; WX 787 ; N a67 ; B 35 -14 752 705 ;
+C 105 ; WX 713 ; N a68 ; B 35 -14 678 705 ;
+C 106 ; WX 791 ; N a69 ; B 35 -14 756 705 ;
+C 107 ; WX 785 ; N a70 ; B 36 -14 751 705 ;
+C 108 ; WX 791 ; N a71 ; B 35 -14 757 705 ;
+C 109 ; WX 873 ; N a72 ; B 35 -14 838 705 ;
+C 110 ; WX 761 ; N a73 ; B 35 0 726 692 ;
+C 111 ; WX 762 ; N a74 ; B 35 0 727 692 ;
+C 112 ; WX 762 ; N a203 ; B 35 0 727 692 ;
+C 113 ; WX 759 ; N a75 ; B 35 0 725 692 ;
+C 114 ; WX 759 ; N a204 ; B 35 0 725 692 ;
+C 115 ; WX 892 ; N a76 ; B 35 0 858 705 ;
+C 116 ; WX 892 ; N a77 ; B 35 -14 858 692 ;
+C 117 ; WX 788 ; N a78 ; B 35 -14 754 705 ;
+C 118 ; WX 784 ; N a79 ; B 35 -14 749 705 ;
+C 119 ; WX 438 ; N a81 ; B 35 -14 403 705 ;
+C 120 ; WX 138 ; N a82 ; B 35 0 104 692 ;
+C 121 ; WX 277 ; N a83 ; B 35 0 242 692 ;
+C 122 ; WX 415 ; N a84 ; B 35 0 380 692 ;
+C 123 ; WX 392 ; N a97 ; B 35 263 357 705 ;
+C 124 ; WX 392 ; N a98 ; B 34 263 357 705 ;
+C 125 ; WX 668 ; N a99 ; B 35 263 633 705 ;
+C 126 ; WX 668 ; N a100 ; B 36 263 634 705 ;
+C 161 ; WX 732 ; N a101 ; B 35 -143 697 806 ;
+C 162 ; WX 544 ; N a102 ; B 56 -14 488 706 ;
+C 163 ; WX 544 ; N a103 ; B 34 -14 508 705 ;
+C 164 ; WX 910 ; N a104 ; B 35 40 875 651 ;
+C 165 ; WX 667 ; N a106 ; B 35 -14 633 705 ;
+C 166 ; WX 760 ; N a107 ; B 35 -14 726 705 ;
+C 167 ; WX 760 ; N a108 ; B 0 121 758 569 ;
+C 168 ; WX 776 ; N a112 ; B 35 0 741 705 ;
+C 169 ; WX 595 ; N a111 ; B 34 -14 560 705 ;
+C 170 ; WX 694 ; N a110 ; B 35 -14 659 705 ;
+C 171 ; WX 626 ; N a109 ; B 34 0 591 705 ;
+C 172 ; WX 788 ; N a120 ; B 35 -14 754 705 ;
+C 173 ; WX 788 ; N a121 ; B 35 -14 754 705 ;
+C 174 ; WX 788 ; N a122 ; B 35 -14 754 705 ;
+C 175 ; WX 788 ; N a123 ; B 35 -14 754 705 ;
+C 176 ; WX 788 ; N a124 ; B 35 -14 754 705 ;
+C 177 ; WX 788 ; N a125 ; B 35 -14 754 705 ;
+C 178 ; WX 788 ; N a126 ; B 35 -14 754 705 ;
+C 179 ; WX 788 ; N a127 ; B 35 -14 754 705 ;
+C 180 ; WX 788 ; N a128 ; B 35 -14 754 705 ;
+C 181 ; WX 788 ; N a129 ; B 35 -14 754 705 ;
+C 182 ; WX 788 ; N a130 ; B 35 -14 754 705 ;
+C 183 ; WX 788 ; N a131 ; B 35 -14 754 705 ;
+C 184 ; WX 788 ; N a132 ; B 35 -14 754 705 ;
+C 185 ; WX 788 ; N a133 ; B 35 -14 754 705 ;
+C 186 ; WX 788 ; N a134 ; B 35 -14 754 705 ;
+C 187 ; WX 788 ; N a135 ; B 35 -14 754 705 ;
+C 188 ; WX 788 ; N a136 ; B 35 -14 754 705 ;
+C 189 ; WX 788 ; N a137 ; B 35 -14 754 705 ;
+C 190 ; WX 788 ; N a138 ; B 35 -14 754 705 ;
+C 191 ; WX 788 ; N a139 ; B 35 -14 754 705 ;
+C 192 ; WX 788 ; N a140 ; B 35 -14 754 705 ;
+C 193 ; WX 788 ; N a141 ; B 35 -14 754 705 ;
+C 194 ; WX 788 ; N a142 ; B 35 -14 754 705 ;
+C 195 ; WX 788 ; N a143 ; B 35 -14 754 705 ;
+C 196 ; WX 788 ; N a144 ; B 35 -14 754 705 ;
+C 197 ; WX 788 ; N a145 ; B 35 -14 754 705 ;
+C 198 ; WX 788 ; N a146 ; B 35 -14 754 705 ;
+C 199 ; WX 788 ; N a147 ; B 35 -14 754 705 ;
+C 200 ; WX 788 ; N a148 ; B 35 -14 754 705 ;
+C 201 ; WX 788 ; N a149 ; B 35 -14 754 705 ;
+C 202 ; WX 788 ; N a150 ; B 35 -14 754 705 ;
+C 203 ; WX 788 ; N a151 ; B 35 -14 754 705 ;
+C 204 ; WX 788 ; N a152 ; B 35 -14 754 705 ;
+C 205 ; WX 788 ; N a153 ; B 35 -14 754 705 ;
+C 206 ; WX 788 ; N a154 ; B 35 -14 754 705 ;
+C 207 ; WX 788 ; N a155 ; B 35 -14 754 705 ;
+C 208 ; WX 788 ; N a156 ; B 35 -14 754 705 ;
+C 209 ; WX 788 ; N a157 ; B 35 -14 754 705 ;
+C 210 ; WX 788 ; N a158 ; B 35 -14 754 705 ;
+C 211 ; WX 788 ; N a159 ; B 35 -14 754 705 ;
+C 212 ; WX 894 ; N a160 ; B 35 58 860 634 ;
+C 213 ; WX 838 ; N a161 ; B 35 152 803 540 ;
+C 214 ; WX 1016 ; N a163 ; B 34 152 981 540 ;
+C 215 ; WX 458 ; N a164 ; B 35 -127 422 820 ;
+C 216 ; WX 748 ; N a196 ; B 35 94 698 597 ;
+C 217 ; WX 924 ; N a165 ; B 35 140 890 552 ;
+C 218 ; WX 748 ; N a192 ; B 35 94 698 597 ;
+C 219 ; WX 918 ; N a166 ; B 35 166 884 526 ;
+C 220 ; WX 927 ; N a167 ; B 35 32 892 660 ;
+C 221 ; WX 928 ; N a168 ; B 35 129 891 562 ;
+C 222 ; WX 928 ; N a169 ; B 35 128 893 563 ;
+C 223 ; WX 834 ; N a170 ; B 35 155 799 537 ;
+C 224 ; WX 873 ; N a171 ; B 35 93 838 599 ;
+C 225 ; WX 828 ; N a172 ; B 35 104 791 588 ;
+C 226 ; WX 924 ; N a173 ; B 35 98 889 594 ;
+C 227 ; WX 924 ; N a162 ; B 35 98 889 594 ;
+C 228 ; WX 917 ; N a174 ; B 35 0 882 692 ;
+C 229 ; WX 930 ; N a175 ; B 35 84 896 608 ;
+C 230 ; WX 931 ; N a176 ; B 35 84 896 608 ;
+C 231 ; WX 463 ; N a177 ; B 35 -99 429 791 ;
+C 232 ; WX 883 ; N a178 ; B 35 71 848 623 ;
+C 233 ; WX 836 ; N a179 ; B 35 44 802 648 ;
+C 234 ; WX 836 ; N a193 ; B 35 44 802 648 ;
+C 235 ; WX 867 ; N a180 ; B 35 101 832 591 ;
+C 236 ; WX 867 ; N a199 ; B 35 101 832 591 ;
+C 237 ; WX 696 ; N a181 ; B 35 44 661 648 ;
+C 238 ; WX 696 ; N a200 ; B 35 44 661 648 ;
+C 239 ; WX 874 ; N a182 ; B 35 77 840 619 ;
+C 241 ; WX 874 ; N a201 ; B 35 73 840 615 ;
+C 242 ; WX 760 ; N a183 ; B 35 0 725 692 ;
+C 243 ; WX 946 ; N a184 ; B 35 160 911 533 ;
+C 244 ; WX 771 ; N a197 ; B 34 37 736 655 ;
+C 245 ; WX 865 ; N a185 ; B 35 207 830 481 ;
+C 246 ; WX 771 ; N a194 ; B 34 37 736 655 ;
+C 247 ; WX 888 ; N a198 ; B 34 -19 853 712 ;
+C 248 ; WX 967 ; N a186 ; B 35 124 932 568 ;
+C 249 ; WX 888 ; N a195 ; B 34 -19 853 712 ;
+C 250 ; WX 831 ; N a187 ; B 35 113 796 579 ;
+C 251 ; WX 873 ; N a188 ; B 36 118 838 578 ;
+C 252 ; WX 927 ; N a189 ; B 35 150 891 542 ;
+C 253 ; WX 970 ; N a190 ; B 35 76 931 616 ;
+C 254 ; WX 918 ; N a191 ; B 34 99 884 593 ;
+C -1 ; WX 410 ; N a86 ; B 35 0 375 692 ;
+C -1 ; WX 509 ; N a85 ; B 35 0 475 692 ;
+C -1 ; WX 334 ; N a95 ; B 35 0 299 692 ;
+C -1 ; WX 509 ; N a205 ; B 35 0 475 692 ;
+C -1 ; WX 390 ; N a89 ; B 35 -14 356 705 ;
+C -1 ; WX 234 ; N a87 ; B 35 -14 199 705 ;
+C -1 ; WX 276 ; N a91 ; B 35 0 242 692 ;
+C -1 ; WX 390 ; N a90 ; B 35 -14 355 705 ;
+C -1 ; WX 410 ; N a206 ; B 35 0 375 692 ;
+C -1 ; WX 317 ; N a94 ; B 35 0 283 692 ;
+C -1 ; WX 317 ; N a93 ; B 35 0 283 692 ;
+C -1 ; WX 276 ; N a92 ; B 35 0 242 692 ;
+C -1 ; WX 334 ; N a96 ; B 35 0 299 692 ;
+C -1 ; WX 234 ; N a88 ; B 35 -14 199 705 ;
+EndCharMetrics
+EndFontMetrics
diff --git a/hyph/hyph/README b/hyph/hyph/README
new file mode 100644
index 0000000..9f77f51
--- /dev/null
+++ b/hyph/hyph/README
@@ -0,0 +1,124 @@
+Format of Lout hyphenation information files
+
+Jeffrey H. Kingston
+22 December 1992
+21 September 1994
+6 June 1995
+3 April 1996
+
+Basser Lout Version 3 incorporates automatic hyphenation using the
+method introduced by TeX (see Appendix H of the TeXBook by D. E. Knuth),
+with support for multilingual hyphenation. No special action is required
+to install hyphenation unless it is desired to change the hyphenation
+information that controls it.
+
+There is one hyphenation information file for each language, and it is
+named in the langdef of that language. For example:
+
+ langdef German Deutsch { german }
+
+(There will usually be other information between the hyphenation file
+name and the closing brace, not relevant here.) This example means that
+unpacked Lout hyphenation file german.lh or its packed equivalent
+german.lp (see below) is to be used when hyphenating German words. These
+files are kept in the Lout system hyphenation directory (this directory). If
+a language is desired but no hyphenation information file is available, the
+file name may be replaced with -, and then the language will be defined but
+hyphenation in that language will never be attempted. Another possibility
+is to include a placeholder file for the language (see below).
+
+The first time on any run that German hyphenation is required, Lout will
+search the directories of the hyphenation path for a binary file called
+german.lp, which contains a binary form of the hyphenation patterns in
+german.lh, modified so that the file may be shared by big-endian and
+little-endian machines. If german.lp cannot be found, Lout then searches
+for the text file german.lh instead, and uses it to construct german.lp.
+To change the German hyphenation patterns, delete german.lp and modify
+german.lh; the rest is automatic.
+
+Alternatively, if lout is invoked with the -x flag and the langdef line
+above appears in its input, it will read german.lh and produce german.lp
+immediately. This is intended for setting up: it is good to create all
+these packed files at setup time, since a subsequent lout run that needs them
+will not have write permission in the Lout system hyphenation directory.
+
+An unpacked Lout hyphenation information (.lh) file mainly contains a
+long list of TeX hyphenation patterns. It must begin with either
+
+ Lout hyphenation information
+
+or
+ Lout hyphenation placeholder
+
+alone on the first line. In the second case, it is understood that the
+file is a placeholder (i.e. a stub file which might be overwritten with
+a real file in the future), and Lout does not read any futher; the effect
+is that Lout will not hyphenate this language, but not complain about the
+absence of the file either.
+
+In the non-placeholder case, following the header line comes the "Classes:"
+heading followed by the character classes. For example:
+
+ Classes:
+ @!$%^&*()_-+=~`{[}]:;'|<,.>?/0123456789
+ aA
+ bB
+ cC
+ ...
+ yY
+ zZ
+
+The hyphenation process treats the characters in each class as identical
+(so the classes above ensure that the distinction between upper and lower
+case is ignored). By definition, the characters of the first class are
+"non-letters", and the characters of the remaining classes are "letters".
+Notice that these are actual characters, not character names: hyphenation
+files are encoding-specific.
+
+Next comes the "Exceptions:" heading followed by the exceptions, which
+are words (composed of letters and "-" only) whose hyphenation is to be
+treated as a special case. For example:
+
+ Exceptions:
+ ta-ble
+ phil-an-thropic
+
+These words may be hyphenated in the places shown by the "-" characters.
+Character classes are in effect here (Table will be hyphenated as Ta-ble).
+If there are no exceptions, "Exceptions:" may be omitted.
+
+Next comes an optional LengthLimit section, which tells Lout to ignore
+some patterns. For example,
+
+ LengthLimit:
+ 4
+
+means that patterns containing more than 4 letters (note that
+. counts as a letter) are to be ignored. The purpose is to discard
+the least important patterns from files that are too large for Lout
+to handle otherwise. None of the files actually use this at present,
+but hyphenation files seem to be getting larger and larger, and if
+any whoppers come along they might have to be trimmed in this way.
+
+Finally comes the "Patterns:" heading followed by the list of TeX
+hyphenation patterns. Apart from the weighting digits, the patterns
+should contain only letters. Lout understands some TeX escape sequences
+e.g. it will accept \^e anywhere in a hyphenation file as the ecircumflex
+character.
+
+The file may contain comments, which begin with % (either at the start
+of a line or after a white space character) and go to end of line. The
+headings, classes, exceptions and patterns are separated by arbitrary
+white space.
+
+Briefly, hyphenation of a word works like this. If the word contains a
+character not found in any character class, it will not be hyphenated.
+Otherwise the word is analysed into sequences of letters separated by
+sequences of non-letters. Each sequence of five or more letters is
+then matched, either with an exception or else with the hyphenation
+patterns, and hyphenated. The hyphen character "-" is treated specially.
+
+Extreme lengths were resorted to to compress the .lp file as much as
+possible. Files significantly larger than german.lh are likely to cause
+Lout to abort with an error message. Please contact jeff@it.usyd.edu.au
+if you have problems with this or anything else.
diff --git a/hyph/hyph/croatian.lh b/hyph/hyph/croatian.lh
new file mode 100644
index 0000000..fce4576
--- /dev/null
+++ b/hyph/hyph/croatian.lh
@@ -0,0 +1,1546 @@
+Lout hyphenation information
+
+% COPYRIGHT (C) 2010 Jeffrey H. Kingston
+% with contributions by Marinovi\'c Igor (see details below)
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either Version 3, or (at your option)
+% any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program; if not, write to the Free Software
+% Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA
+
+% hrhyph.tex
+% Hyphenation patterns for Croatian language words for use with
+% T1 encoding, which is supported in DC fonts.
+% These can also be used with OT1 encoding.
+%
+% The first version was realised in late 1994.
+% Second, much more improved version was realised in the beginning of 1996.
+% Date of the last change: 19.03.1996.
+%
+% Marinovi\'c Igor
+% migor@student.math.hr
+%
+%
+%
+
+Classes:
+@!$%^&*()_-+=~`{[}]:;'|<,.>?/0123456789
+aA
+bB
+cC
+dD
+eE
+fF
+gG
+hH
+iI
+jJ
+kK
+lL
+mM
+nN
+oO
+pP
+qQ
+rR
+sS
+tT
+uU
+vV
+wW
+xX
+yY
+zZ
+æÆ
+èÈ
+ðÐ
+¹©
+¾®
+
+Patterns:
+a1a2
+a1e2
+a1i2
+a1o2
+a1u2
+e1a2
+e1e2
+e1i2
+e1o2
+e1u2
+i1a2
+i1e2
+i1i2
+i1o2
+i1u2
+o1a2
+o1e2
+o1i2
+o1o2
+o1u2
+u1a2
+u1e2
+u1i2
+u1o2
+u1u2
+a1ba
+a1be
+a1bi
+a1bo
+a1bu
+a1ca
+a1ce
+a1ci
+a1co
+a1cu
+a1èa
+a1èe
+a1èi
+a1èo
+a1èu
+a1æa
+a1æe
+a1æi
+a1æo
+a1æu
+a1da
+a1de
+a1di
+a1do
+a1du
+a1d¾a
+a1d¾e
+a1d¾i
+a1d¾o
+a1d¾u
+a1ða
+a1ðe
+a1ði
+a1ðo
+a1ðu
+a1fa
+a1fe
+a1fi
+a1fo
+a1fu
+a1ga
+a1ge
+a1gi
+a1go
+a1gu
+a1ha
+a1he
+a1hi
+a1ho
+a1hu
+a1ja
+a1je
+a1ji
+a1jo
+a1ju
+a1ka
+a1ke
+a1ki
+a1ko
+a1ku
+a1la
+a1le
+a1li
+a1lo
+a1lu
+a1lja
+a1lje
+a1lji
+a1ljo
+a1lju
+a1ma
+a1me
+a1mi
+a1mo
+a1mu
+a1na
+a1ne
+a1ni
+a1no
+a1nu
+a1nja
+a1nje
+a1nji
+a1njo
+a1nju
+a1pa
+a1pe
+a1pi
+a1po
+a1pu
+a1ra
+a1re
+a1ri
+a1ro
+a1ru
+a1sa
+a1se
+a1si
+a1so
+a1su
+a1¹a
+a1¹e
+a1¹i
+a1¹o
+a1¹u
+a1ta
+a1te
+a1ti
+a1to
+a1tu
+a1va
+a1ve
+a1vi
+a1vo
+a1vu
+a1za
+a1ze
+a1zi
+a1zo
+a1zu
+a1¾a
+a1¾e
+a1¾i
+a1¾o
+a1¾u
+e1ba
+e1be
+e1bi
+e1bo
+e1bu
+e1ca
+e1ce
+e1ci
+e1co
+e1cu
+e1èa
+e1èe
+e1èi
+e1èo
+e1èu
+e1æa
+e1æe
+e1æi
+e1æo
+e1æu
+e1da
+e1de
+e1di
+e1do
+e1du
+e1d¾a
+e1d¾e
+e1d¾i
+e1d¾o
+e1d¾u
+e1ða
+e1ðe
+e1ði
+e1ðo
+e1ðu
+e1fa
+e1fe
+e1fi
+e1fo
+e1fu
+e1ga
+e1ge
+e1gi
+e1go
+e1gu
+e1ha
+e1he
+e1hi
+e1ho
+e1hu
+e1ja
+e1je
+e1ji
+e1jo
+e1ju
+e1ka
+e1ke
+e1ki
+e1ko
+e1ku
+e1la
+e1le
+e1li
+e1lo
+e1lu
+e1lja
+e1lje
+e1lji
+e1ljo
+e1lju
+e1ma
+e1me
+e1mi
+e1mo
+e1mu
+e1na
+e1ne
+e1ni
+e1no
+e1nu
+e1nja
+e1nje
+e1nji
+e1njo
+e1nju
+e1pa
+e1pe
+e1pi
+e1po
+e1pu
+e1ra
+e1re
+e1ri
+e1ro
+e1ru
+e1sa
+e1se
+e1si
+e1so
+e1su
+e1¹a
+e1¹e
+e1¹i
+e1¹o
+e1¹u
+e1ta
+e1te
+e1ti
+e1to
+e1tu
+e1va
+e1ve
+e1vi
+e1vo
+e1vu
+e1za
+e1ze
+e1zi
+e1zo
+e1zu
+e1¾a
+e1¾e
+e1¾i
+e1¾o
+e1¾u
+i1ba
+i1be
+i1bi
+i1bo
+i1bu
+i1ca
+i1ce
+i1ci
+i1co
+i1cu
+i1èa
+i1èe
+i1èi
+i1èo
+i1èu
+i1æa
+i1æe
+i1æi
+i1æo
+i1æu
+i1da
+i1de
+i1di
+i1do
+i1du
+i1d¾a
+i1d¾e
+i1d¾i
+i1d¾o
+i1d¾u
+i1ða
+i1ðe
+i1ði
+i1ðo
+i1ðu
+i1fa
+i1fe
+i1fi
+i1fo
+i1fu
+i1ga
+i1ge
+i1gi
+i1go
+i1gu
+i1ha
+i1he
+i1hi
+i1ho
+i1hu
+i1ja
+i1je
+i1ji
+i1jo
+i1ju
+i1ka
+i1ke
+i1ki
+i1ko
+i1ku
+i1la
+i1le
+i1li
+i1lo
+i1lu
+i1lja
+i1lje
+i1lji
+i1ljo
+i1lju
+i1ma
+i1me
+i1mi
+i1mo
+i1mu
+i1na
+i1ne
+i1ni
+i1no
+i1nu
+i1nja
+i1nje
+i1nji
+i1njo
+i1nju
+i1pa
+i1pe
+i1pi
+i1po
+i1pu
+i1ra
+i1re
+i1ri
+i1ro
+i1ru
+i1sa
+i1se
+i1si
+i1so
+i1su
+i1¹a
+i1¹e
+i1¹i
+i1¹o
+i1¹u
+i1ta
+i1te
+i1ti
+i1to
+i1tu
+i1va
+i1ve
+i1vi
+i1vo
+i1vu
+i1za
+i1ze
+i1zi
+i1zo
+i1zu
+i1¾a
+i1¾e
+i1¾i
+i1¾o
+i1¾u
+o1ba
+o1be
+o1bi
+o1bo
+o1bu
+o1ca
+o1ce
+o1ci
+o1co
+o1cu
+o1èa
+o1èe
+o1èi
+o1èo
+o1èu
+o1æa
+o1æe
+o1æi
+o1æo
+o1æu
+o1da
+o1de
+o1di
+o1do
+o1du
+o1d¾a
+o1d¾e
+o1d¾i
+o1d¾o
+o1d¾u
+o1ða
+o1ðe
+o1ði
+o1ðo
+o1ðu
+o1fa
+o1fe
+o1fi
+o1fo
+o1fu
+o1ga
+o1ge
+o1gi
+o1go
+o1gu
+o1ha
+o1he
+o1hi
+o1ho
+o1hu
+o1ja
+o1je
+o1ji
+o1jo
+o1ju
+o1ka
+o1ke
+o1ki
+o1ko
+o1ku
+o1la
+o1le
+o1li
+o1lo
+o1lu
+o1lja
+o1lje
+o1lji
+o1ljo
+o1lju
+o1ma
+o1me
+o1mi
+o1mo
+o1mu
+o1na
+o1ne
+o1ni
+o1no
+o1nu
+o1nja
+o1nje
+o1nji
+o1njo
+o1nju
+o1pa
+o1pe
+o1pi
+o1po
+o1pu
+o1ra
+o1re
+o1ri
+o1ro
+o1ru
+o1sa
+o1se
+o1si
+o1so
+o1su
+o1¹a
+o1¹e
+o1¹i
+o1¹o
+o1¹u
+o1ta
+o1te
+o1ti
+o1to
+o1tu
+o1va
+o1ve
+o1vi
+o1vo
+o1vu
+o1za
+o1ze
+o1zi
+o1zo
+o1zu
+o1¾a
+o1¾e
+o1¾i
+o1¾o
+o1¾u
+u1ba
+u1be
+u1bi
+u1bo
+u1bu
+u1ca
+u1ce
+u1ci
+u1co
+u1cu
+u1èa
+u1èe
+u1èi
+u1èo
+u1èu
+u1æa
+u1æe
+u1æi
+u1æo
+u1æu
+u1da
+u1de
+u1di
+u1do
+u1du
+u1d¾a
+u1d¾e
+u1d¾i
+u1d¾o
+u1d¾u
+u1ða
+u1ðe
+u1ði
+u1ðo
+u1ðu
+u1fa
+u1fe
+u1fi
+u1fo
+u1fu
+u1ga
+u1ge
+u1gi
+u1go
+u1gu
+u1ha
+u1he
+u1hi
+u1ho
+u1hu
+u1ja
+u1je
+u1ji
+u1jo
+u1ju
+u1ka
+u1ke
+u1ki
+u1ko
+u1ku
+u1la
+u1le
+u1li
+u1lo
+u1lu
+u1lja
+u1lje
+u1lji
+u1ljo
+u1lju
+u1ma
+u1me
+u1mi
+u1mo
+u1mu
+u1na
+u1ne
+u1ni
+u1no
+u1nu
+u1nja
+u1nje
+u1nji
+u1njo
+u1nju
+u1pa
+u1pe
+u1pi
+u1po
+u1pu
+u1ra
+u1re
+u1ri
+u1ro
+u1ru
+u1sa
+u1se
+u1si
+u1so
+u1su
+u1¹a
+u1¹e
+u1¹i
+u1¹o
+u1¹u
+u1ta
+u1te
+u1ti
+u1to
+u1tu
+u1va
+u1ve
+u1vi
+u1vo
+u1vu
+u1za
+u1ze
+u1zi
+u1zo
+u1zu
+u1¾a
+u1¾e
+u1¾i
+u1¾o
+u1¾u
+%
+b1b
+b1c
+b1è
+b1æ
+b1d
+b1d¾
+b1ð
+b1f
+b1g
+b1h
+1bj
+2bj.
+b1k
+1bl
+2bl.
+2b1lj
+b1m
+b1n
+b1nj
+b1p
+1br
+2br.
+b1s
+b1¹
+b1t
+1bv
+2bv.
+b1z
+b1¾
+c1b
+c1c
+c1è
+c1æ
+c1d
+c1d¾
+c1ð
+c1f
+c1g
+c1h
+1cj
+2cj.
+c1k
+1cl
+2cl.
+2c1lj
+c1m
+c1n
+c1nj
+c1p
+1cr
+2cr.
+c1s
+c1¹
+c1t
+1cv
+2cv.
+c1z
+c1¾
+è1b
+è1c
+è1è
+è1æ
+è1d
+è1d¾
+è1ð
+è1f
+è1g
+è1h
+1èj
+2èj.
+è1k
+1èl
+2èl.
+2è1lj
+è1m
+è1n
+è1nj
+è1p
+1èr
+2èr.
+è1s
+è1¹
+è1t
+1èv
+2èv.
+è1z
+è1¾
+æ1b
+æ1c
+æ1è
+æ1æ
+æ1d
+æ1d¾
+æ1ð
+æ1f
+æ1g
+æ1h
+æ1j
+æ1k
+1æl
+2æl.
+2æ1lj
+æ1m
+æ1n
+æ1nj
+æ1p
+1ær
+2ær.
+æ1s
+æ1¹
+æ1t
+1æv
+2æv.
+æ1z
+æ1¾
+d1b
+d1c
+d1è
+d1æ
+d1d
+d2¾
+d1ð
+d1f
+2d1g
+d1h
+1dj
+2dj.
+d1k
+2d1l
+2d1lj
+d1m
+d1n
+d1nj
+d1p
+1dr
+2dr.
+d1s
+d1¹
+d1t
+1dv
+2dv.
+d1z
+d¾1b
+d¾1c
+d¾1è
+d¾1æ
+d¾1d
+d¾1d¾
+d¾1ð
+d¾1f
+d¾1g
+d¾1h
+1d¾j
+2d¾j.
+d¾1k
+1d¾l
+2d¾l.
+2d¾1lj
+d¾1m
+d¾1n
+d¾1nj
+d¾1p
+1d¾r
+2d¾r.
+d¾1s
+d¾1¹
+d¾1t
+1d¾v
+2d¾v.
+d¾1z
+d¾1¾
+ð1b
+ð1c
+ð1è
+ð1æ
+ð1d
+ð1d¾
+ð1ð
+ð1f
+ð1g
+ð1h
+1ðj
+2ðj.
+ð1k
+1ðl
+2ðl.
+2ð1lj
+ð1m
+ð1n
+ð1nj
+ð1p
+1ðr
+2ðr.
+ð1s
+ð1¹
+ð1t
+1ðv
+2ðv.
+ð1z
+ð1¾
+f1b
+f1c
+f1è
+f1æ
+f1d
+f1d¾
+f1ð
+f1f
+f1g
+f1h
+1fj
+2fj.
+f1k
+1fl
+2fl.
+2f1lj
+f1m
+f1n
+f1nj
+f1p
+1fr
+2fr.
+f1s
+f1¹
+f1t
+1fv
+2fv.
+f1z
+f1¾
+g1b
+g1c
+g1è
+g1æ
+g1d
+g1d¾
+g1ð
+g1f
+g1g
+g1h
+1gj
+2gj.
+g1k
+1gl
+2gl.
+2g1lj
+g1m
+g1n
+g1nj
+g1p
+1gr
+2gr.
+g1s
+g1¹
+g1t
+1gv
+2gv.
+g1z
+g1¾
+h1b
+h1c
+h1è
+h1æ
+h1d
+h1d¾
+h1ð
+h1f
+h1g
+h1h
+1hj
+2hj.
+h1k
+1hl
+2hl.
+2h1lj
+h1m
+h1n
+h1nj
+h1p
+1hr
+2hr.
+h1s
+h1¹
+h1t
+1hv
+2hv.
+h1z
+h1¾
+j1b
+j1c
+j1è
+j1æ
+j1d
+j1d¾
+j1ð
+j1f
+j1g
+j1h
+j1j
+j1k
+j1l
+2j1lj
+j1m
+j1n
+j1nj
+j1p
+j1r
+j1s
+j1¹
+j1t
+j1v
+j1z
+j1¾
+k1b
+k1c
+k1è
+k1æ
+k1d
+k1d¾
+k1ð
+k1f
+k1g
+k1h
+1kj
+2kj.
+k1k
+k1l
+1k2lj
+2klj.
+k1m
+k1n
+k1nj
+k1p
+1kr
+2kr.
+k1s
+k1¹
+k1t
+k1v
+k1z
+k1¾
+l1b
+l1c
+l1è
+l1æ
+l1d
+l1d¾
+l1ð
+l1f
+l1g
+l1h
+l1k
+l1l
+2l1lj
+l1m
+l1n
+l1nj
+l1p
+l1r
+l1s
+l1¹
+l1t
+l1v
+l1z
+l1¾
+lj1b
+lj1c
+lj1è
+lj1æ
+lj1d
+lj1d¾
+lj1ð
+lj1f
+lj1g
+lj1h
+lj1k
+1ljl
+2ljl.
+lj1lj
+lj1m
+lj1n
+lj1nj
+lj1p
+1ljr
+2ljr.
+lj1s
+lj1¹
+lj1t
+1ljv
+2ljv.
+lj1z
+lj1¾
+m1b
+m1c
+m1è
+m1æ
+m1d
+m1d¾
+m1ð
+m1f
+m1g
+m1h
+1mj
+2mj.
+m1k
+1ml
+2ml.
+2m1lj
+m1m
+m1n
+m1nj
+m1p
+1mr
+2mr.
+m1s
+m1¹
+m1t
+1mv
+2mv.
+m1z
+m1¾
+n1b
+n1c
+n1è
+n1æ
+n1d
+n1d¾
+n1ð
+n1f
+n1g
+n1h
+2nj.
+n1k
+1nl
+2nl.
+2n1lj
+n1m
+n1n
+n1nj
+n1p
+n1r
+n1s
+n1¹
+n1t
+1nv
+2nv.
+n1z
+n1¾
+nj1b
+nj1c
+nj1è
+nj1æ
+nj1d
+nj1d¾
+nj1ð
+nj1f
+nj1g
+nj1h
+1njj
+2njj.
+nj1k
+1njl
+2njl.
+2nj1lj
+nj1m
+nj1n
+nj1nj
+nj1p
+1njr
+2njr.
+nj1s
+nj1¹
+nj1t
+1njv
+2njv.
+nj1z
+nj1¾
+p1b
+p1c
+p1è
+p1æ
+p1d
+p1d¾
+p1ð
+p1f
+p1g
+2p1h
+1pj
+2pj.
+p1k
+1pl
+2pl.
+2p1lj
+p1m
+p1n
+p1nj
+p1p
+1pr
+2pr.
+p1s
+p1¹
+p1t
+1pv
+2pv.
+p1z
+p1¾
+r1b
+r1c
+r1è
+r1æ
+r1d
+r1d¾
+r1ð
+r1f
+r1g
+r1h
+r1j
+r1k
+r1l
+2r1lj
+r1m
+r1n
+r1nj
+r1p
+r1r
+r1s
+r1¹
+r1t
+r1v
+r1z
+r1¾
+1sb
+2sb.
+s1c
+1sè
+2sè.
+1sæ
+2sæ.
+1sd
+2sd.
+1sd¾
+2sd¾.
+1sð
+2sð.
+1sf
+2sf.
+1sg
+2sg.
+1sh
+2sh.
+1sj
+2sj.
+1sk
+2sk.
+s1l
+1slj
+2slj.
+1sm
+2sm.
+s1n
+2sn.
+1snj
+2snj.
+s1p
+1sr
+2sr.
+1ss
+2ss.
+1s¹
+2s¹.
+s1t
+2st.
+1sv
+2sv.
+1sz
+2sz.
+1s¾
+2s¾.
+1¹b
+2¹b.
+¹1c
+¹1è
+¹1æ
+1¹d
+2¹d.
+1¹d¾
+2¹d¾.
+1¹ð
+2¹ð.
+1¹f
+2¹f.
+1¹g
+2¹g.
+1¹h
+2¹h.
+1¹j
+2¹j.
+1¹k
+2¹k.
+¹1l
+2¹1lj
+1¹m
+2¹m.
+¹1n
+2¹1nj
+1¹p
+2¹p.
+1¹r
+2¹r.
+1¹s
+2¹s.
+1¹¹
+2¹¹.
+1¹t
+2¹t.
+1¹v
+2¹v.
+1¹z
+2¹z.
+1¹¾
+2¹¾.
+t1b
+t1c
+t1è
+t1æ
+t1d
+t1d¾
+t1ð
+t1f
+t1g
+t1h
+1tj
+2tj.
+t1k
+1tl
+2tl.
+2t1lj
+t1m
+t1n
+t1nj
+t1p
+1tr
+2tr.
+t1s
+t1¹
+t1t
+1tv
+2tv.
+t1z
+t1¾
+v1b
+v1c
+v1è
+v1æ
+v1d
+v1d¾
+v1ð
+v1f
+v1g
+v1h
+v1j
+1v2je
+vj.
+v1k
+v1l
+2v1lj
+v1m
+v1n
+v1nj
+v1p
+1vr
+v1s
+v1¹
+v1t
+v1v
+v1z
+v1¾
+z1b
+1zc
+2zc.
+1zè
+2zè.
+1zæ
+2zæ.
+z1d
+1zd¾
+2zd¾.
+1zð
+2zð.
+1zf
+2zf.
+z1g
+1zh
+2zh.
+1zj
+2zj.
+1zk
+2zk.
+z1l
+2z1lj
+z1m
+z1n
+1znj
+2znj.
+1zp
+2zp.
+z1r
+z1s
+1z¹
+2z¹.
+1zt
+2zt.
+1zv
+2zv.
+1zz
+2zz.
+1z¾
+2z¾.
+¾1b
+2¾b.
+1¾c
+2¾c.
+1¾è
+2¾è.
+1¾æ
+2¾æ.
+1¾d
+2¾d.
+1¾d¾
+2¾d¾.
+1¾ð
+2¾ð.
+1¾f
+2¾f.
+1¾g
+2¾g.
+1¾h
+2¾h.
+¾1j
+1¾k
+2¾k.
+1¾l
+2¾l.
+¾1lj
+1¾m
+2¾m.
+¾1n
+2¾n.
+2¾1nj
+1¾p
+2¾p.
+1¾r
+2¾r.
+1¾s
+2¾s.
+1¾¹
+2¾¹.
+1¾t
+2¾t.
+1¾v
+2¾v.
+1¾z
+2¾z.
+1¾¾
+2¾¾.
+%
+2d1vj
+2d1vr
+z1g2nj
+æ1s2t
+d1s2m
+j1z2g
+r2n1t
+r2z1n
+m2p1t
+2d1vl
+r2t1c
+r2n1c
+r2è1k
+2s1hr
+z1v2l
+2z1vr
+r2k1n
+r2c1n
+r2h1nj
+s2p1n
+j1s2l
+r2d1n
+.zg2
+r2d¾1b
+2¹1tv
+r2t1s
+n2t1s
+2s1kr
+r2n1k
+d1¹2k
+d1s2p
+r2t1m
+1r2je
+k2s1p
+t1s2t
+l2m1s
+r2h1k
+j1s2t
+s1v2l
+r2p1c
+t1k2l
+s1k2l
+n2t1n
+2d1ja
+2rt.
+z1r2j
+d1s2t
+n2k1c
+r2t1k
+r2g1n
+r2h1t
+.na2j1
+.be2z1
+.iz1
+.is1
+.ne2o3
+r2t1n
+r2v1n
+r1s2t
+n2s1t
+l2f1t
diff --git a/hyph/hyph/czech.lh b/hyph/hyph/czech.lh
new file mode 100644
index 0000000..0219e7d
--- /dev/null
+++ b/hyph/hyph/czech.lh
@@ -0,0 +1,4599 @@
+Lout hyphenation information
+%
+% COPYRIGHT (C) 1995 Jeffrey H. Kingston
+% with contributions by Pavel Vana (see details below)
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either Version 3, or (at your option)
+% any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program; if not, write to the Free Software
+% Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA
+
+% This is a Czech hyphenation file created by Jeff Kingston
+% on 16 July 1995 from a TeX file supplied by Pavel Vana.
+% The only comment received with the file was this one:
+%
+% Czech hyphenation patterns - Lala 8.11.1991
+%
+% Like Czech itself, this file is encoded in the Latin2
+% character set. Czech has 15 accented letters, each with
+% upper-case and lower-case forms:
+%
+% PostScript Latin2 Latin2 Latin2
+% name decimal octal literal
+% code code character
+%
+% aacute 225 341 á
+% ccaron 232 350 è
+% dcaron 239 357 ï
+% eacute 233 351 é
+% ecaron 236 354 ì
+% iacute 237 355 í
+% ncaron 242 362 ò
+% oacute 243 363 ó
+% rcaron 248 370 ø
+% scaron 185 271 ¹
+% tcaron 187 273 »
+% uacute 250 372 ú
+% uring 249 371 ù
+% yacute 253 375 ý
+% zcaron 190 276 ¾
+%
+% Aacute 193 301 Á
+% Ccaron 200 310 È
+% Dcaron 207 317 Ï
+% Eacute 201 311 É
+% Ecaron 204 314 Ì
+% Iacute 205 315 Í
+% Ncaron 210 322 Ò
+% Oacute 211 323 Ó
+% Rcaron 216 330 Ø
+% Scaron 169 251 ©
+% Tcaron 171 253 «
+% Uacute 218 332 Ú
+% Uring 217 331 Ù
+% Yacute 221 335 Ý
+% Zcaron 174 256 ®
+%
+
+Classes:
+@!$%^&*()_-+=~`{[}]:;'|<,.>?/0123456789
+aA
+bB
+cC
+dD
+eE
+fF
+gG
+hH
+iI
+jJ
+kK
+lL
+mM
+nN
+oO
+pP
+qQ
+rR
+sS
+tT
+uU
+vV
+wW
+xX
+yY
+zZ
+áÁ
+èÈ
+ïÏ
+éÉ
+ìÌ
+íÍ
+òÒ
+óÓ
+øØ
+¹©
+»«
+úÚ
+ùÙ
+ýÝ
+¾®
+
+Patterns:
+%samohláska-souhláska-samohláska
+a1¾a
+a1¹a
+a1èa
+a1øa
+a1ca
+a1ja
+a1ïa
+a1»a
+a1òa
+a1ha
+a1cha
+a1ka
+a1ra
+a1da
+a1ta
+a1na
+a1¾e
+a1¹e
+a1èe
+a1øe
+a1ce
+a1je
+a1he
+a1che
+a1ke
+a1re
+a1de
+a1te
+a1ne
+a1ri
+a1¾i
+a1¹i
+a1èi
+a1øi
+a1ci
+a1ji
+a1di
+a1ti
+a1ni
+a1¾o
+a1¹o
+a1èo
+a1øo
+a1co
+a1jo
+a1ïo
+a1»o
+a1òo
+a1ho
+a1cho
+a1ko
+a1ro
+a1do
+a1to
+a1no
+a1¾u
+a1¹u
+a1èu
+a1øu
+a1cu
+a1ju
+a1ïu
+a1»u
+a1òu
+a1hu
+a1chu
+a1ku
+a1ru
+a1du
+a1tu
+a1nu
+a1hy
+a1chy
+a1ky
+a1ry
+a1dy
+a1ty
+a1ny
+a1¾á
+a1¹á
+a1èá
+a1øá
+a1cá
+a1já
+a1ïá
+a1ȇ
+a1òá
+a1há
+a1chá
+a1ká
+a1rá
+a1dá
+a1tá
+a1ná
+a1¾é
+a1¹é
+a1èé
+a1øé
+a1cé
+a1jé
+a1hé
+a1ché
+a1ké
+a1ré
+a1dé
+a1té
+a1né
+a1¾í
+a1¹í
+a1èí
+a1øí
+a1cí
+a1jí
+a1dí
+a1tí
+a1ní
+a1kó
+a1ró
+a1dó
+a1tó
+a1nó
+a1hý
+a1chý
+a1ký
+a1rý
+a1dý
+a1tý
+a1ný
+a1dì
+a1tì
+a1nì
+e1¾a
+e1¹a
+e1èa
+e1øa
+e1ca
+e1ja
+e1ïa
+e1»a
+e1òa
+e1ha
+e1cha
+e1ka
+e1ra
+e1da
+e1ta
+e1na
+e1¾e
+e1¹e
+e1èe
+e1øe
+e1ce
+e1je
+e1he
+e1che
+e1ke
+e1re
+e1de
+e1te
+e1ne
+e1¾i
+e1¹i
+e1èi
+e1øi
+e1ci
+e1ji
+e1di
+e1ti
+e1ni
+e1¾o
+e1¹o
+e1èo
+e1øo
+e1co
+e1jo
+e1ïo
+e1»o
+e1òo
+e1ho
+e1cho
+e1ko
+e1ro
+e1do
+e1to
+e1no
+e1¾u
+e1¹u
+e1èu
+e1øu
+e1cu
+e1ju
+e1ïu
+e1»u
+e1òu
+e1hu
+e1chu
+e1ku
+e1ru
+e1du
+e1tu
+e1nu
+e1hy
+e1chy
+e1ky
+e1ry
+e1dy
+e1ty
+e1ny
+e1¾á
+e1¹á
+e1èá
+e1øá
+e1cá
+e1já
+e1há
+e1chá
+e1ká
+e1rá
+e1dá
+e1tá
+e1ná
+e1¾é
+e1¹é
+e1èé
+e1øé
+e1cé
+e1jé
+e1hé
+e1ché
+e1ké
+e1ré
+e1dé
+e1té
+e1né
+e1¾í
+e1¹í
+e1èí
+e1øí
+e1cí
+e1jí
+e1dí
+e1tí
+e1ní
+e1hý
+e1chý
+e1ký
+e1rý
+e1dý
+e1tý
+e1ný
+e1dì
+e1tì
+e1nì
+i1¾a
+i1¹a
+i1èa
+i1øa
+i1ca
+i1ja
+i1ïa
+i1»a
+i1òa
+i1ha
+i1cha
+i1ka
+i1ra
+i1da
+i1ta
+i1na
+i1¾e
+i1¹e
+i1èe
+i1øe
+i1ce
+i1je
+i1he
+i1che
+i1ke
+i1re
+i1de
+i1te
+i1ne
+i1¾i
+i1¹i
+i1èi
+i1øi
+i1ci
+i1ji
+i1di
+i1ti
+i1ni
+i1¾o
+i1¹o
+i1èo
+i1øo
+i1co
+i1jo
+i1ïo
+i1»o
+i1òo
+i1ho
+i1cho
+i1ko
+i1ro
+i1do
+i1to
+i1no
+i1¾u
+i1¹u
+i1èu
+i1øu
+i1cu
+i1ju
+i1ïu
+i1»u
+i1òu
+i1hu
+i1chu
+i1ku
+i1ru
+i1du
+i1tu
+i1nu
+i1hy
+i1chy
+i1ky
+i1ry
+i1dy
+i1ty
+i1ny
+i1¾á
+i1¹á
+i1èá
+i1øá
+i1cá
+i1já
+i1ïá
+i1ȇ
+i1òá
+i1há
+i1chá
+i1ká
+i1rá
+i1dá
+i1tá
+i1ná
+i1¾é
+i1¹é
+i1èé
+i1øé
+i1cé
+i1jé
+i1hé
+i1ché
+i1ké
+i1ré
+i1dé
+i1té
+i1né
+i1¾í
+i1¹í
+i1èí
+i1øí
+i1cí
+i1jí
+i1dí
+i1tí
+i1ní
+i1kó
+i1ró
+i1hý
+i1chý
+i1ký
+i1rý
+i1dý
+i1tý
+i1ný
+i1dì
+i1tì
+i1nì
+o1¾a
+o1¹a
+o1èa
+o1øa
+o1ca
+o1ja
+o1ïa
+o1»a
+o1òa
+o1ha
+o1cha
+o1ka
+o1ra
+o1da
+o1ta
+o1na
+o1¾e
+o1¹e
+o1èe
+o1øe
+o1ce
+o1je
+o1he
+o1che
+o1ke
+o1re
+o1de
+o1te
+o1ne
+o1¾i
+o1¹i
+o1èi
+o1øi
+o1ci
+o1ji
+o1di
+o1ti
+o1ni
+o1¾o
+o1¹o
+o1èo
+o1øo
+o1co
+o1jo
+o1ïo
+o1»o
+o1òo
+o1ho
+o1cho
+o1ko
+o1ro
+o1do
+o1to
+o1no
+o1¾u
+o1¹u
+o1èu
+o1øu
+o1cu
+o1ju
+o1ïu
+o1»u
+o1òu
+o1hu
+o1chu
+o1ku
+o1ru
+o1du
+o1tu
+o1nu
+o1hy
+o1chy
+o1ky
+o1ry
+o1dy
+o1ty
+o1ny
+o1¾á
+o1¹á
+o1èá
+o1øá
+o1cá
+o1já
+o1há
+o1chá
+o1ká
+o1rá
+o1dá
+o1tá
+o1ná
+o1¾é
+o1¹é
+o1èé
+o1øé
+o1cé
+o1jé
+o1hé
+o1ché
+o1ké
+o1ré
+o1dé
+o1té
+o1né
+o1¾í
+o1¹í
+o1èí
+o1øí
+o1cí
+o1jí
+o1dí
+o1tí
+o1ní
+o1hý
+o1chý
+o1ký
+o1rý
+o1dý
+o1tý
+o1ný
+o1dì
+o1tì
+o1nì
+u1¾a
+u1¹a
+u1èa
+u1øa
+u1ca
+u1ja
+u1ïa
+u1»a
+u1òa
+u1ha
+u1cha
+u1ka
+u1ra
+u1da
+u1ta
+u1na
+u1¾e
+u1¹e
+u1èe
+u1øe
+u1ce
+u1je
+u1he
+u1che
+u1ke
+u1re
+u1de
+u1te
+u1ne
+u1¾i
+u1¹i
+u1èi
+u1øi
+u1ci
+u1ji
+u1di
+u1ti
+u1ni
+u1¾o
+u1¹o
+u1èo
+u1øo
+u1co
+u1jo
+u1ïo
+u1»o
+u1òo
+u1ho
+u1cho
+u1ko
+u1ro
+u1do
+u1to
+u1no
+u1¾u
+u1¹u
+u1èu
+u1øu
+u1cu
+u1ju
+u1ïu
+u1»u
+u1òu
+u1hu
+u1chu
+u1ku
+u1ru
+u1du
+u1tu
+u1nu
+u1hy
+u1chy
+u1ky
+u1ry
+u1dy
+u1ty
+u1ny
+u1¾á
+u1¹á
+u1èá
+u1øá
+u1cá
+u1já
+u1ïá
+u1ȇ
+u1òá
+u1há
+u1chá
+u1ká
+u1rá
+u1dá
+u1tá
+u1ná
+u1¾é
+u1¹é
+u1èé
+u1øé
+u1cé
+u1jé
+u1hé
+u1ché
+u1ké
+u1ré
+u1dé
+u1té
+u1né
+u1¾í
+u1¹í
+u1èí
+u1øí
+u1cí
+u1jí
+u1dí
+u1tí
+u1ní
+u1hý
+u1chý
+u1ký
+u1rý
+u1dý
+u1tý
+u1ný
+u1dì
+u1tì
+u1nì
+y1¾a
+y1¹a
+y1èa
+y1øa
+y1ca
+y1ja
+y1ha
+y1cha
+y1ka
+y1ra
+y1da
+y1ta
+y1na
+y1¾e
+y1¹e
+y1èe
+y1øe
+y1ce
+y1je
+y1he
+y1che
+y1ke
+y1re
+y1de
+y1te
+y1ne
+y1¾i
+y1¹i
+y1èi
+y1øi
+y1ci
+y1ji
+y1di
+y1ti
+y1ni
+y1¾o
+y1¹o
+y1èo
+y1øo
+y1co
+y1jo
+y1òo
+y1ho
+y1cho
+y1ko
+y1ro
+y1do
+y1to
+y1no
+y1¾u
+y1¹u
+y1èu
+y1øu
+y1cu
+y1ju
+y1hu
+y1chu
+y1ku
+y1ru
+y1du
+y1tu
+y1nu
+y1hy
+y1chy
+y1ky
+y1ry
+y1dy
+y1ty
+y1ny
+y1¾á
+y1¹á
+y1èá
+y1øá
+y1cá
+y1já
+y1há
+y1chá
+y1ká
+y1rá
+y1dá
+y1tá
+y1ná
+y1¾é
+y1¹é
+y1èé
+y1øé
+y1cé
+y1jé
+y1hé
+y1ché
+y1ké
+y1ré
+y1dé
+y1té
+y1né
+y1¾í
+y1¹í
+y1èí
+y1øí
+y1cí
+y1jí
+y1dí
+y1tí
+y1ní
+y1hý
+y1chý
+y1ký
+y1rý
+y1dý
+y1tý
+y1ný
+y1dì
+y1tì
+y1nì
+á1¾a
+á1¹a
+á1èa
+á1øa
+á1ca
+á1ja
+á1ïa
+á1»a
+á1òa
+á1ha
+á1cha
+á1ka
+á1ra
+á1da
+á1ta
+á1na
+á1¾e
+á1¹e
+á1èe
+á1øe
+á1ce
+á1je
+á1he
+á1che
+á1ke
+á1re
+á1de
+á1te
+á1ne
+á1¾i
+á1¹i
+á1èi
+á1øi
+á1ci
+á1ji
+á1di
+á1ti
+á1ni
+á1¾o
+á1¹o
+á1èo
+á1øo
+á1co
+á1jo
+á1ïo
+á1»o
+á1òo
+á1ho
+á1cho
+á1ko
+á1ro
+á1do
+á1to
+á1no
+á1¾u
+á1¹u
+á1èu
+á1øu
+á1cu
+á1ju
+á1ïu
+á1»u
+á1òu
+á1hu
+á1chu
+á1ku
+á1ru
+á1du
+á1tu
+á1nu
+á1hy
+á1chy
+á1ky
+á1ry
+á1dy
+á1ty
+á1ny
+á1¾á
+á1¹á
+á1èá
+á1øá
+á1cá
+á1já
+á1há
+á1chá
+á1ká
+á1rá
+á1dá
+á1tá
+á1ná
+á1¾é
+á1¹é
+á1èé
+á1øé
+á1cé
+á1jé
+á1hé
+á1ché
+á1ké
+á1ré
+á1dé
+á1té
+á1né
+á1¾í
+á1¹í
+á1èí
+á1øí
+á1cí
+á1jí
+á1dí
+á1tí
+á1ní
+á1hý
+á1chý
+á1ký
+á1rý
+á1dý
+á1tý
+á1ný
+á1dì
+á1tì
+á1nì
+é1¾a
+é1¹a
+é1èa
+é1øa
+é1ca
+é1ja
+é1ïa
+é1»a
+é1òa
+é1ha
+é1cha
+é1ka
+é1ra
+é1da
+é1ta
+é1na
+é1¾e
+é1¹e
+é1èe
+é1øe
+é1ce
+é1je
+é1he
+é1che
+é1ke
+é1re
+é1de
+é1te
+é1ne
+é1¾i
+é1¹i
+é1èi
+é1øi
+é1ci
+é1ji
+é1di
+é1ti
+é1ni
+é1¾o
+é1¹o
+é1èo
+é1øo
+é1co
+é1jo
+é1ïo
+é1»o
+é1ho
+é1cho
+é1ko
+é1ro
+é1do
+é1to
+é1no
+é1¾u
+é1¹u
+é1èu
+é1øu
+é1cu
+é1ju
+é1ïu
+é1»u
+é1hu
+é1chu
+é1ku
+é1ru
+é1du
+é1tu
+é1nu
+é1hy
+é1chy
+é1ky
+é1ry
+é1dy
+é1ty
+é1ny
+é1¾á
+é1¹á
+é1èá
+é1øá
+é1cá
+é1já
+é1há
+é1chá
+é1ká
+é1rá
+é1dá
+é1tá
+é1ná
+é1¾é
+é1¹é
+é1èé
+é1øé
+é1cé
+é1jé
+é1hé
+é1ché
+é1ké
+é1ré
+é1dé
+é1té
+é1né
+é1¾í
+é1¹í
+é1èí
+é1øí
+é1cí
+é1jí
+é1dí
+é1tí
+é1ní
+é1hý
+é1chý
+é1ký
+é1rý
+é1dý
+é1tý
+é1ný
+é1dì
+é1tì
+é1nì
+í1¾a
+í1¹a
+í1èa
+í1øa
+í1ca
+í1ja
+í1ïa
+í1»a
+í1òa
+í1ha
+í1cha
+í1ka
+í1ra
+í1da
+í1ta
+í1na
+í1¾e
+í1¹e
+í1èe
+í1øe
+í1ce
+í1je
+í1he
+í1che
+í1ke
+í1re
+í1de
+í1te
+í1ne
+í1¾i
+í1¹i
+í1èi
+í1øi
+í1ci
+í1ji
+í1di
+í1ti
+í1ni
+í1¾o
+í1¹o
+í1èo
+í1øo
+í1co
+í1jo
+í1ïo
+í1»o
+í1òo
+í1ho
+í1cho
+í1ko
+í1ro
+í1do
+í1to
+í1no
+í1¾u
+í1¹u
+í1èu
+í1øu
+í1cu
+í1ju
+í1ïu
+í1»u
+í1òu
+í1hu
+í1chu
+í1ku
+í1ru
+í1du
+í1tu
+í1nu
+í1hy
+í1chy
+í1ky
+í1ry
+í1dy
+í1ty
+í1ny
+í1¾á
+í1¹á
+í1èá
+í1øá
+í1cá
+í1já
+í1ïá
+í1»á
+í1òá
+í1há
+í1chá
+í1ká
+í1rá
+í1dá
+í1tá
+í1ná
+í1¾é
+í1¹é
+í1èé
+í1øé
+í1cé
+í1jé
+í1hé
+í1ché
+í1ké
+í1ré
+í1dé
+í1té
+í1né
+í1¾í
+í1¹í
+í1èí
+í1øí
+í1cí
+í1jí
+í1dí
+í1tí
+í1ní
+í1hý
+í1chý
+í1ký
+í1rý
+í1dý
+í1tý
+í1ný
+í1dì
+í1tì
+í1nì
+ó1¾a
+ó1da
+ó1do
+ó1du
+ó1ta
+ó1tu
+ó1to
+ó1na
+ó1nu
+ó1no
+ó1¾e
+ó1øe
+ó1je
+ó1ti
+ó1ni
+ì1¾a
+ì1¹a
+ì1èa
+ì1øa
+ì1ca
+ì1ja
+ì1ha
+ì1cha
+ì1ka
+ì1ra
+ì1da
+ì1ta
+ì1na
+ì1¾e
+ì1¹e
+ì1èe
+ì1øe
+ì1ce
+ì1je
+ì1he
+ì1che
+ì1ke
+ì1re
+ì1de
+ì1te
+ì1ne
+ì1¾i
+ì1¹i
+ì1èi
+ì1øi
+ì1ci
+ì1ji
+ì1di
+ì1ti
+ì1ni
+ì1¾o
+ì1¹o
+ì1èo
+ì1øo
+ì1co
+ì1jo
+ì1ho
+ì1cho
+ì1ko
+ì1ro
+ì1do
+ì1to
+ì1no
+ì1¾u
+ì1¹u
+ì1èu
+ì1øu
+ì1cu
+ì1ju
+ì1hu
+ì1chu
+ì1ku
+ì1ru
+ì1du
+ì1tu
+ì1nu
+ì1hy
+ì1chy
+ì1ky
+ì1ry
+ì1dy
+ì1ty
+ì1ny
+ì1¾á
+ì1¹á
+ì1èá
+ì1øá
+ì1cá
+ì1já
+ì1há
+ì1chá
+ì1ká
+ì1rá
+ì1dá
+ì1tá
+ì1ná
+ì1¾é
+ì1¹é
+ì1èé
+ì1øé
+ì1cé
+ì1jé
+ì1ché
+ì1ké
+ì1ré
+ì1dé
+ì1té
+ì1né
+ì1¾í
+ì1¹í
+ì1èí
+ì1øí
+ì1cí
+ì1jí
+ì1dí
+ì1tí
+ì1ní
+ì1hý
+ì1chý
+ì1ký
+ì1rý
+ì1dý
+ì1tý
+ì1ný
+ì1dì
+ì1tì
+ì1nì
+a1ga
+a1ge
+a1gi
+a1go
+a1gó
+a1gu
+e1ga
+e1ge
+e1gi
+e1go
+e1gu
+e1gá
+i1ga
+i1ge
+i1gi
+i1go
+i1gu
+i1gá
+i1gó
+o1ga
+o1ge
+o1gi
+o1go
+o1gu
+u1ga
+u1ge
+u1gi
+u1gy
+u1go
+u1gu
+a1xa
+a1xe
+a1xi
+a1xo
+a1xu
+a1xó
+e1xa
+e1xe
+e1xi
+e1xo
+e1xu
+i1xa
+i1xe
+i1xi
+i1xo
+i1xu
+o1xa
+o1xe
+o1xi
+o1xo
+o1xu
+ù1zu
+u1zù
+ù1zo
+o1zù
+ì1zù
+ù1zí
+í1zù
+ó1zù
+ù1zi
+i1zù
+ù1zá
+á1zù
+é1zù
+ù1ze
+e1zù
+ù1za
+a1zù
+ý1zù
+ù1zù
+ù1zy
+y1zù
+ù1òu
+u1òù
+ù1òo
+o1òù
+ù1òí
+ó1òù
+ù1òi
+i1òù
+á1òù
+é1òù
+e1òù
+ù1òa
+a1òù
+ý1òù
+ù1vu
+u1vù
+ù1vo
+o1vù
+ù1vì
+ì1vù
+ù1ví
+í1vù
+ù1vi
+i1vù
+á1vù
+é1vù
+ù1ve
+e1vù
+ù1va
+a1vù
+ý1vù
+ù1vù
+ù1vy
+y1vù
+ù1»a
+ù1tu
+u1tù
+ù1to
+o1tù
+ù1tì
+ì1tù
+ù1tí
+í1tù
+ó1tù
+ù1ti
+i1tù
+á1tù
+é1tù
+ù1te
+e1tù
+ù1ta
+a1tù
+ý1tù
+ù1tù
+ù1ty
+y1tù
+ù1su
+u1sù
+ù1so
+o1sù
+ì1sù
+ù1sí
+í1sù
+ó1sù
+ù1si
+i1sù
+ù1sá
+á1sù
+é1sù
+ù1se
+e1sù
+ù1sa
+a1sù
+ý1sù
+ù1sy
+y1sù
+ù1ru
+u1rù
+ù1ro
+o1rù
+ì1rù
+í1rù
+ó1rù
+i1rù
+ù1rá
+á1rù
+é1rù
+ù1re
+e1rù
+ù1ra
+a1rù
+ù1rý
+ý1rù
+ù1rù
+ù1ry
+y1rù
+u1pù
+ù1po
+o1pù
+ù1pì
+ì1pù
+ù1pí
+í1pù
+i1pù
+é1pù
+ù1pe
+e1pù
+a1pù
+ý1pù
+y1pù
+u1nù
+o1nù
+ù1nì
+ì1nù
+ù1ní
+í1nù
+ó1nù
+ù1ni
+i1nù
+á1nù
+é1nù
+ù1ne
+e1nù
+ù1na
+a1nù
+ý1nù
+ù1nù
+ù1ny
+y1nù
+u1mù
+o1mù
+ù1mì
+ì1mù
+í1mù
+ó1mù
+i1mù
+á1mù
+é1mù
+e1mù
+ù1ma
+a1mù
+ý1mù
+ù1mù
+ù1my
+y1mù
+ù1lu
+u1lù
+ù1lo
+o1lù
+ì1lù
+ù1lí
+í1lù
+ó1lù
+ù1li
+i1lù
+á1lù
+é1lù
+ù1le
+e1lù
+ù1la
+a1lù
+ù1lý
+ý1lù
+ù1lù
+ù1ly
+y1lù
+u1kù
+ù1ko
+o1kù
+ì1kù
+í1kù
+ó1kù
+i1kù
+á1kù
+é1kù
+e1kù
+ù1ka
+a1kù
+ý1kù
+ù1ky
+y1kù
+u1jù
+o1jù
+ì1jù
+ù1jí
+í1jù
+ó1jù
+ù1ji
+i1jù
+á1jù
+é1jù
+ù1je
+e1jù
+ù1ja
+a1jù
+ý1jù
+y1jù
+u1hù
+o1hù
+ì1hù
+í1hù
+i1hù
+ù1há
+á1hù
+é1hù
+ù1he
+e1hù
+ù1ha
+a1hù
+ù1hù
+ù1hy
+y1hù
+é1fù
+a1fù
+y1fù
+ù1¾u
+u1¾ù
+ù1¾o
+o1¾ù
+ì1¾ù
+ù1¾í
+í1¾ù
+ó1¾ù
+ù1¾i
+i1¾ù
+ù1¾á
+á1¾ù
+é1¾ù
+ù1¾e
+e1¾ù
+ù1¾a
+a1¾ù
+ý1¾ù
+y1¾ù
+ù1du
+u1dù
+ù1do
+o1dù
+ù1dì
+ì1dù
+í1dù
+ó1dù
+ù1di
+i1dù
+á1dù
+é1dù
+e1dù
+ù1da
+a1dù
+ý1dù
+ù1dy
+y1dù
+u1cù
+o1cù
+ì1cù
+ù1cí
+í1cù
+i1cù
+á1cù
+e1cù
+a1cù
+ý1cù
+y1cù
+u1bù
+o1bù
+ù1bì
+ì1bù
+í1bù
+ó1bù
+i1bù
+á1bù
+é1bù
+e1bù
+ù1ba
+a1bù
+ý1bù
+ù1by
+y1bù
+u1èù
+o1èù
+ì1èù
+í1èù
+ù1èi
+i1èù
+á1èù
+ù1èe
+e1èù
+a1èù
+ý1èù
+ù1èy
+y1èù
+u1ïù
+o1ïù
+í1ïù
+á1ïù
+é1ïù
+e1ïù
+a1ïù
+ù1chu
+u1chù
+ù1cho
+o1chù
+ì1chù
+í1chù
+i1chù
+á1chù
+e1chù
+ù1cha
+a1chù
+ù1chý
+ý1chù
+ù1chù
+ù1chy
+y1chù
+u1øù
+o1øù
+ì1øù
+ù1øí
+í1øù
+ù1øi
+i1øù
+á1øù
+é1øù
+ù1øe
+e1øù
+a1øù
+ý1øù
+y1øù
+ù1¹u
+u1¹ù
+ù1¹o
+o1¹ù
+ì1¹ù
+ù1¹í
+í1¹ù
+ù1¹i
+i1¹ù
+á1¹ù
+é1¹ù
+ù1¹e
+e1¹ù
+ù1¹a
+a1¹ù
+ý1¹ù
+ù1¹ù
+y1¹ù
+u1bu
+u1fu
+u1lu
+u1mu
+u1pu
+u1su
+u1vu
+u1zu
+u1bo
+u1fo
+u1lo
+u1mo
+u1po
+u1so
+u1vo
+u1zo
+u1bì
+u1mì
+u1pì
+u1vì
+u1bí
+u1fí
+u1lí
+u1mí
+u1pí
+u1sí
+u1ví
+u1zí
+u1bi
+u1fi
+u1li
+u1mi
+u1pi
+u1si
+u1vi
+u1zi
+u1bá
+u1fá
+u1lá
+u1má
+u1pá
+u1sá
+u1vá
+u1zá
+u1bé
+u1lé
+u1mé
+u1pé
+u1sé
+u1vé
+u1zé
+u1be
+u1fe
+u1le
+u1me
+u1pe
+u1se
+u1ve
+u1ze
+u1ba
+u1fa
+u1la
+u1ma
+u1pa
+u1sa
+u1va
+u1za
+u1bý
+u1lý
+u1mý
+u1pý
+u1sý
+u1vý
+u1zý
+u1by
+u1fy
+u1my
+u1py
+u1sy
+u1vy
+o1bu
+o1fu
+o1lu
+o1mu
+o1pu
+o1su
+o1vu
+o1zu
+o1bo
+o1fo
+o1lo
+o1mo
+o1po
+o1so
+o1vo
+o1zo
+o1bì
+o1mì
+o1pì
+o1vì
+o1bí
+o1fí
+o1lí
+o1mí
+o1pí
+o1sí
+o1ví
+o1zí
+o1fó
+o1zó
+o1bi
+o1fi
+o1li
+o1mi
+o1pi
+o1si
+o1vi
+o1zi
+o1bá
+o1fá
+o1lá
+o1má
+o1pá
+o1sá
+o1vá
+o1zá
+o1bé
+o1fé
+o1lé
+o1mé
+o1pé
+o1sé
+o1vé
+o1zé
+o1be
+o1fe
+o1le
+o1me
+o1pe
+o1se
+o1ve
+o1ze
+o1ba
+o1fa
+o1la
+o1ma
+o1pa
+o1sa
+o1va
+o1za
+o1bý
+o1lý
+o1mý
+o1pý
+o1sý
+o1vý
+o1zý
+o1by
+o1ly
+o1my
+o1py
+o1sy
+o1vy
+o1zy
+ú1lu
+ú1su
+ú1zu
+ú1bo
+ú1lo
+ú1mo
+ú1po
+ú1vo
+ú1bì
+ú1mì
+ú1pì
+ú1vì
+ú1pí
+ú1li
+ú1pi
+ú1si
+ú1vi
+ú1zi
+ú1le
+ú1se
+ú1ze
+ú1pa
+ú1sa
+ú1va
+ú1by
+ú1ly
+ú1my
+ì1bu
+ì1lu
+ì1mu
+ì1pu
+ì1su
+ì1vu
+ì1zu
+ì1bo
+ì1fo
+ì1lo
+ì1mo
+ì1po
+ì1so
+ì1vo
+ì1zo
+ì1mì
+ì1vì
+ì1bí
+ì1lí
+ì1mí
+ì1pí
+ì1sí
+ì1ví
+ì1zí
+ì1li
+ì1mi
+ì1pi
+ì1si
+ì1vi
+ì1zi
+ì1bá
+ì1lá
+ì1má
+ì1pá
+ì1sá
+ì1vá
+ì1zá
+ì1lé
+ì1mé
+ì1pé
+ì1sé
+ì1vé
+ì1zé
+ì1be
+ì1le
+ì1me
+ì1pe
+ì1se
+ì1ve
+ì1ze
+ì1ba
+ì1la
+ì1ma
+ì1pa
+ì1sa
+ì1va
+ì1za
+ì1lý
+ì1mý
+ì1pý
+ì1sý
+ì1vý
+ì1zý
+ì1by
+ì1ly
+ì1my
+ì1py
+ì1sy
+ì1vy
+ì1zy
+í1bu
+í1fu
+í1lu
+í1mu
+í1pu
+í1su
+í1vu
+í1zu
+í1bo
+í1fo
+í1lo
+í1mo
+í1po
+í1so
+í1vo
+í1zo
+í1bì
+í1mì
+í1vì
+í1bí
+í1lí
+í1pí
+í1ví
+í1zí
+í1bi
+í1li
+í1mi
+í1pi
+í1si
+í1vi
+í1zi
+í1bá
+í1lá
+í1má
+í1pá
+í1sá
+í1vá
+í1zá
+í1bé
+í1lé
+í1mé
+í1pé
+í1sé
+í1vé
+í1zé
+í1be
+í1le
+í1me
+í1pe
+í1se
+í1ve
+í1ze
+í1ba
+í1la
+í1ma
+í1pa
+í1sa
+í1va
+í1za
+í1lý
+í1mý
+í1sý
+í1vý
+í1zý
+í1by
+í1fy
+í1ly
+í1my
+í1py
+í1sy
+í1vy
+í1zy
+ó1bu
+ó1lu
+ó1mu
+ó1pu
+ó1su
+ó1vu
+ó1zu
+ó1lo
+ó1po
+ó1so
+ó1vo
+ó1zo
+ó1bì
+ó1mì
+ó1vì
+ó1sí
+ó1ví
+ó1zí
+ó1fi
+ó1zi
+ó1lé
+ó1vé
+ó1zé
+ó1le
+ó1me
+ó1ve
+ó1ze
+ó1ba
+ó1fa
+ó1la
+ó1ma
+ó1pa
+ó1sa
+ó1va
+ó1za
+ó1by
+ó1fy
+ó1ly
+ó1my
+ó1py
+ó1sy
+ó1vy
+ó1zy
+i1bu
+i1lu
+i1mu
+i1pu
+i1su
+i1vu
+i1zu
+i1bo
+i1fo
+i1lo
+i1mo
+i1po
+i1so
+i1vo
+i1zo
+i1bì
+i1mì
+i1pì
+i1vì
+i1bí
+i1lí
+i1mí
+i1pí
+i1sí
+i1ví
+i1zí
+i1vó
+i1bi
+i1fi
+i1li
+i1mi
+i1pi
+i1si
+i1vi
+i1zi
+i1bá
+i1lá
+i1má
+i1pá
+i1sá
+i1vá
+i1zá
+i1bé
+i1lé
+i1mé
+i1pé
+i1sé
+i1vé
+i1zé
+i1be
+i1fe
+i1le
+i1me
+i1pe
+i1se
+i1ve
+i1ze
+i1ba
+i1fa
+i1la
+i1ma
+i1pa
+i1sa
+i1va
+i1za
+i1bý
+i1lý
+i1mý
+i1pý
+i1sý
+i1vý
+i1zý
+i1by
+i1fy
+i1ly
+i1my
+i1py
+i1sy
+i1vy
+i1zy
+á1bu
+á1fu
+á1lu
+á1mu
+á1pu
+á1su
+á1vu
+á1zu
+á1bo
+á1lo
+á1mo
+á1po
+á1so
+á1vo
+á1zo
+á1bì
+á1fì
+á1mì
+á1pì
+á1vì
+á1bí
+á1fí
+á1lí
+á1mí
+á1pí
+á1sí
+á1ví
+á1zí
+á1bi
+á1fi
+á1li
+á1mi
+á1pi
+á1si
+á1vi
+á1zi
+á1bá
+á1lá
+á1má
+á1pá
+á1sá
+á1vá
+á1zá
+á1bé
+á1lé
+á1mé
+á1pé
+á1sé
+á1vé
+á1zé
+á1be
+á1fe
+á1le
+á1me
+á1pe
+á1se
+á1ve
+á1ze
+á1ba
+á1fa
+á1la
+á1ma
+á1pa
+á1sa
+á1va
+á1za
+á1lý
+á1mý
+á1pý
+á1sý
+á1vý
+á1zý
+á1by
+á1fy
+á1ly
+á1my
+á1py
+á1sy
+á1vy
+á1zy
+é1bu
+é1fu
+é1lu
+é1mu
+é1pu
+é1su
+é1vu
+é1zu
+é1bo
+é1lo
+é1mo
+é1po
+é1so
+é1vo
+é1zo
+é1mì
+é1pì
+é1vì
+é1fi
+é1mi
+é1pi
+é1si
+é1vi
+é1zi
+é1bá
+é1vá
+é1zá
+é1lé
+é1fe
+é1le
+é1me
+é1pe
+é1se
+é1ve
+é1ze
+é1ba
+é1la
+é1ma
+é1pa
+é1sa
+é1va
+é1za
+é1by
+é1ly
+é1my
+é1sy
+é1vy
+é1zy
+e1bu
+e1fu
+e1lu
+e1mu
+e1pu
+e1su
+e1vu
+e1zu
+e1bo
+e1fo
+e1lo
+e1mo
+e1po
+e1so
+e1vo
+e1zo
+e1bì
+e1mì
+e1pì
+e1vì
+e1bí
+e1lí
+e1mí
+e1pí
+e1sí
+e1ví
+e1zí
+e1ló
+e1zó
+e1bi
+e1fi
+e1li
+e1mi
+e1pi
+e1si
+e1vi
+e1zi
+e1bá
+e1fá
+e1lá
+e1má
+e1pá
+e1sá
+e1vá
+e1zá
+e1bé
+e1lé
+e1mé
+e1pé
+e1sé
+e1vé
+e1zé
+e1be
+e1fe
+e1le
+e1me
+e1pe
+e1se
+e1ve
+e1ze
+e1ba
+e1fa
+e1la
+e1ma
+e1pa
+e1sa
+e1va
+e1za
+e1bý
+e1lý
+e1mý
+e1pý
+e1sý
+e1vý
+e1zý
+e1by
+e1ly
+e1my
+e1py
+e1sy
+e1vy
+e1zy
+a1bu
+a1fu
+a1lu
+a1mu
+a1pu
+a1su
+a1vu
+a1zu
+a1bo
+a1fo
+a1lo
+a1mo
+a1po
+a1so
+a1vo
+a1zo
+a1bì
+a1mì
+a1pì
+a1vì
+a1bí
+a1fí
+a1lí
+a1mí
+a1pí
+a1sí
+a1ví
+a1zí
+a1ló
+a1bi
+a1fi
+a1li
+a1mi
+a1pi
+a1si
+a1vi
+a1zi
+a1bá
+a1fá
+a1lá
+a1má
+a1pá
+a1sá
+a1vá
+a1zá
+a1bé
+a1fé
+a1lé
+a1mé
+a1pé
+a1sé
+a1vé
+a1zé
+a1be
+a1fe
+a1le
+a1me
+a1pe
+a1se
+a1ve
+a1ze
+a1ba
+a1fa
+a1la
+a1ma
+a1pa
+a1sa
+a1va
+a1za
+a1bý
+a1lý
+a1mý
+a1pý
+a1sý
+a1vý
+a1zý
+a1by
+a1fy
+a1ly
+a1my
+a1py
+a1sy
+a1vy
+a1zy
+ý1bu
+ý1fu
+ý1lu
+ý1mu
+ý1pu
+ý1su
+ý1vu
+ý1zu
+ý1bo
+ý1lo
+ý1mo
+ý1po
+ý1so
+ý1vo
+ý1zo
+ý1bì
+ý1mì
+ý1pì
+ý1vì
+ý1lí
+ý1bi
+ý1li
+ý1mi
+ý1pi
+ý1si
+ý1vi
+ý1zi
+ý1bá
+ý1lá
+ý1má
+ý1pá
+ý1sá
+ý1vá
+ý1zá
+ý1zé
+ý1be
+ý1le
+ý1me
+ý1pe
+ý1se
+ý1ve
+ý1ze
+ý1ba
+ý1la
+ý1ma
+ý1pa
+ý1sa
+ý1va
+ý1za
+ý1by
+ý1ly
+ý1my
+ý1py
+ý1sy
+ý1vy
+ý1zy
+y1bu
+y1fu
+y1lu
+y1mu
+y1pu
+y1su
+y1vu
+y1zu
+y1bo
+y1lo
+y1mo
+y1po
+y1so
+y1vo
+y1zo
+y1bì
+y1mì
+y1pì
+y1vì
+y1bí
+y1lí
+y1mí
+y1pí
+y1sí
+y1ví
+y1zí
+y1mó
+y1bi
+y1fi
+y1li
+y1mi
+y1pi
+y1si
+y1vi
+y1zi
+y1bá
+y1fá
+y1lá
+y1má
+y1pá
+y1sá
+y1vá
+y1zá
+y1fé
+y1lé
+y1mé
+y1pé
+y1sé
+y1vé
+y1zé
+y1be
+y1fe
+y1le
+y1me
+y1pe
+y1se
+y1ve
+y1ze
+y1ba
+y1fa
+y1la
+y1ma
+y1pa
+y1sa
+y1va
+y1za
+y1lý
+y1mý
+y1pý
+y1sý
+y1vý
+y1zý
+y1by
+y1ly
+y1my
+y1py
+y1sy
+y1vy
+y1zy
+%slabièné r a l
+v2r1h
+vr2hn
+vr2hl
+vr3hl.
+vr2hc
+v2r1ch
+vr2chn
+vr2chl
+v2r1k
+vr2kn
+vr2kl
+vr3kl.
+v2r1d
+vr2dn
+vr2dl
+v2r1t
+vr2tn
+vr2tl
+vr3tl.
+v2r1n
+v2r1¾
+v2r1¹
+vr2¹k
+vr2¹n
+vr2¹m
+vr2¹t
+v2r1è
+vr2èm
+vr2èt
+v2r1c
+v2r1b
+vr2bk
+v2r1s
+vr2st
+vr2s2tv
+v2r1z
+vr2zn
+vr2zl
+vr3zl.
+s2r1k
+sr2kn
+sr2kl
+sr3kl.
+s2r1d
+sr2dn
+sr2dè
+s2r1n
+sr2nk
+sr2nè
+s2r1¹
+sr2¹m
+sr2¹t
+s2r1b
+sr2bs
+s2r1p
+sr2pn
+sr2pk
+s2r1s
+sr2st
+s2rs2tk
+s2rs2tn
+t2r1h
+tr2hl
+tr3hl.
+tr2hn
+t2r1n
+tr2nk
+tr2nè
+t2r1¾
+tr2¾n
+t2r1è
+tr2èk
+tr2èm
+tr2èt
+t2r1b
+t2r1m
+t2r1p
+tr2pn
+tr2pm
+tr2pè
+t2r1s
+tr2sn
+tr2sl
+tr3sl.
+tr2sk
+t2r1v
+ch2r1t
+chr2tl
+chr3tl.
+ch2r1è
+chr2èm
+chr2èt
+ch2r1s
+chr2st
+p2r1ch
+pr2chn
+pr2chl
+pr3chl.
+p2r1k
+pr2kn
+p2r1d
+pr2dl
+pr3dl.
+p2r1t
+p2r1n
+p2r1¹
+pr2¹k
+p2r1è
+p2r1c
+p2r1v
+pr2vn
+pr2vk
+m2r1d
+mr2dl
+m2r1k
+mr2kl
+mr3kl.
+mr2kn
+m2r1t
+mr2tv
+mr2tk
+mr2tn
+m2r1¹
+mr2¹»
+mr2¹k
+m2r1m
+mr2ml
+m2r1s
+mr2sk
+m2r1v
+mr2vm
+mr2vt
+m2r1z
+mr2zk
+mr2zl
+mr3zl.
+mr2zn
+è2r1t
+èr2tk
+èr2tn
+èr2tl
+èr3tl.
+k2r1t
+kr2tn
+kr2tl
+kr2tk
+k2r1n
+k2r1¹
+kr2¹k
+k2r1è
+kr2èn
+kr2èk
+kr2èm
+kr2èt
+k2r1b
+k2r1m
+kr2mn
+kr2mm
+kr2mt
+k2r1z
+h2r1k
+hr2kl
+hr3kl.
+hr2kn
+h2r1d
+hr2dl
+hr2dn
+h2r1n
+hr2nc
+hr2nk
+hr2nè
+hr2òm
+hr2òt
+h2r1è
+h2r1b
+hr2bk
+hr2b1l
+h2r1m
+h2r1s
+hr2st
+h2rs2tm
+h2r1z
+f2r1k
+fr2kl
+fr2kn
+f2r1è
+fr2èk
+fr2èm
+fr2èt
+d2r1n
+dr2nk
+dr2nè
+d2r1¾
+dr2¾k
+dr2¾m
+dr2¾t
+dr2¾g
+d2r1c
+dr2cl
+dr3cl.
+dr2cn
+d2r1b
+dr2bn
+dr2bl
+dr3bl.
+d2r1s
+dr2sn
+d2r1v
+d2r1z
+dr2zn
+dr2zl
+c2r1è
+b2r1k
+br2kn
+br2kl
+b2r1d
+b2r1t
+br2tn
+br2tl
+br3tl.
+b2r1n
+br2nk
+b2r1¾
+br2¾ï
+b2r1è
+br2èk
+b2r1v
+b2r1z
+br2zl
+br2zk
+br2zd
+b2r1b
+br2bl
+z2r1n
+zr2nk
+k2l1k
+v2l1h
+vl2hk
+vl2hè
+v2l1k
+v2l1n
+vl2nk
+v2l1è
+vl2èk
+v2l1c
+h2l1t
+hl2tn
+hl2tl
+hl3tl.
+p2l1ch
+p2l1k
+p2l1n
+p2l1¾
+p2l1ò
+p2l1s
+pl2st
+pl2s»
+p2l1z
+pl2zl
+pl2zn
+b2l1b
+bl2bn
+bl2bl
+bl3bl.
+bl2bc
+bl2bè
+m2l1s
+ml2sn
+m2l1¾
+ml2¾n
+1¾l.
+1¹l.
+1èl.
+1cl.
+1hl.
+1c2hl.
+1dl.
+1tl.
+1bl.
+1ml.
+1pl.
+1sl.
+1vl.
+1zl.
+1cr.
+1hr.
+1c2hr.
+1kr.
+1dr.
+1tr.
+1br.
+1fr.
+1mr.
+1pr.
+1sr.
+1vr.
+%dvojice souhlásek
+.¾4
+¾1¹
+¾1è
+¾1c
+¾1ï
+¾1k
+¾1d
+¾1t
+¾1n
+¾1b
+¾1l
+¾1m
+¾1p
+¾1v
+.¹4
+¹1¹
+¹1è
+¹1c
+¹1»
+¹1ch
+¹1k
+¹1d
+¹1t
+¹1n
+¹1b
+¹1l
+¹1m
+¹1p
+¹1v
+.è4
+è1è
+è1c
+è1»
+è1ò
+è1k
+è1t
+è1n
+è1b
+è1l
+è1m
+è1p
+è1v
+.ø4
+ø1è
+ø1c
+ø1k
+ø1d
+ø1t
+ø1n
+ø1b
+ø1l
+ø1m
+ø1v
+.c4
+c1k
+c1t
+c1n
+c1l
+c1m
+c1v
+.j4
+j1¹
+j1è
+j1c
+j1k
+j1d
+j1t
+j1n
+j1b
+j1f
+j1l
+j1m
+j1p
+j1s
+j1v
+j1z
+.ï4
+ï1c
+ï1k
+ï1t
+ï1m
+.»4
+»1c
+»1h
+»1ch
+»1k
+»1t
+»1m
+»1s
+»1v
+.ò4
+ò1c
+ò1h
+ò1ch
+ò1k
+ò1d
+ò1t
+ò1m
+ò1p
+ò1z
+.h4
+h1¹
+h1è
+h1c
+h1k
+h1d
+h1n
+h1l
+.ch4
+4ch.
+ch1b
+ch1r
+ch1t
+ch1n
+ch1l
+ch1m
+.k4
+k1¹
+k1è
+k1ø
+k1c
+k1ch
+k1r
+k1t
+k1n
+k1b
+k1l
+k1m
+k1p
+k1s
+k1vic
+.r4
+r1¹
+r1è
+r1c
+r1h
+r1ch
+r1k
+r1d
+r1t
+r1n
+r1b
+r1l
+r1m
+r1p
+r1s
+r1v
+r1z
+.d4
+d1¾
+d1¹
+d1è
+d1ø
+d1c
+d1»
+d1ò
+d1h
+d1ch
+d1k
+d1n
+d1b
+d1l
+d1m
+d1p
+d1r
+d1s
+d1v
+.t4
+t1¹
+t1è
+t1c
+t1ch
+t1k
+t1r
+t1n
+t1b
+t1f
+t1l
+t1m
+t1p
+t1v
+.n4
+n1¾
+n1¹
+n1è
+n1c
+n1ï
+n1h
+n1ch
+n1k
+n1r
+n1d
+n1t
+n1n
+n1b
+n1l
+n1p
+n1z
+.x4
+x1c
+x1k
+x1b
+x1f
+x1l
+x1p
+x1n
+x1h
+x1t
+.b4
+b1¾
+b1¹
+b1è
+b1ø
+b1c
+b1h
+b1ch
+b1k
+b1r
+b1n
+b1f
+b1l
+b1m
+b1s
+b1v
+b1z
+.f4
+f1l
+f1k
+f1s
+.l4
+l1¾
+l1¹
+l1è
+l1ò
+l1c
+l1k
+l1d
+l1t
+l1n
+l1b
+l1m
+l1p
+l1s
+l1v
+l1z
+.m4
+m1¹
+m1è
+m1c
+m1ch
+m1k
+m1r
+m1d
+m1t
+m1n
+m1b
+m1l
+m1p
+m1s
+m1z
+.p4
+p1è
+p1ø
+p1c
+p1ch
+p1k
+p1r
+p1t
+p1n
+p1l
+.s4
+s1¹
+s1è
+s1ò
+s1c
+s1k
+s1r
+s1t
+s1n
+s1b
+s1l
+s1m
+s1p
+.v4
+v1¹
+v1è
+v1ò
+v1c
+v1ch
+v1k
+v1r
+v1d
+v1t
+v1n
+v1b
+v1l
+v1m
+v1p
+v1s
+.z4
+z1¹
+z1è
+z1c
+z1k
+z1d
+z1t
+z1b
+z1l
+z1m
+z1n
+z1p
+z1v
+.g4
+g1n
+g1r
+g1m
+g1g
+d1g
+r1g
+n1g
+j1g
+l1g
+f1g
+s1g
+v1g
+%vícesouhláskové skupiny
+b2s1c
+b1s2k
+b1¹2t
+c2t2n
+c1t2v
+è1s2k
+è1¹2t
+d1s2k
+d1¹2t
+f1g2h
+h2ø2m
+j1g2l
+j2ï1m
+j1s2k
+j1¹2t
+j2s2m
+k2t1n
+k2t1r
+k3t2ri
+k2è1n
+k2ø2t
+l2k2n
+l1s2k
+l1¹2t
+l2s2t
+l1t2r
+m2b1d
+m1b2r
+m2d2l
+m2k2l
+m2k2n
+m1p2l
+m2p2t
+m1s2k
+m1¹2t
+m2s2t
+n1g2l.
+n2g1l
+n2k1c
+n2k1l
+n2k1r
+n2k1t
+n2s1f
+n1s2k
+n1s2t
+n2t1g
+n2t1k
+n2t1n
+n2t1s
+n2t1v
+n2è1n
+n1¹2t
+p2t1k
+p2è1n
+p2r2s
+p1s2k
+p1¹2t
+r2d1n
+r2k1r
+r2k1t
+r2m1n
+r2p1c
+r2p1è
+r1s2k
+r1s2p
+r2t1l
+r2t1n
+r2v1n
+r2z1n
+r1¹2t
+s2h2l
+s2h2r
+s2ch2v
+s2k2l
+s2k2r
+s2k1v
+s2m2l
+s2m1n
+s2p2l
+s2p2r
+s2t1k
+s2t2l
+s2t1m
+s2t1n
+s2t1r
+s2t2ø
+¹1s2k
+t2k2n
+t2ø1k
+t2ø1n
+t1s2k
+v1s2k
+v1¹2t
+v2s2t
+v2z2d
+v2z2l
+v2z2n
+v2z2t
+v2¾2d
+z2d2l
+z2d1n
+z2d2v
+z2k2l
+z2v2l
+¾1s2k
+¾1¹2t
+è2t2v
+ò1s2k
+ò1¹2t
+¹2k2l
+o¹k3l
+¹2t1m
+¹2t1n
+¹2t2v
+¹2»1k
+%poèáteèní skupiny hlásek
+.s2t2r
+%pøedpony
+.be2z1
+bez1b2
+bez1h2
+be3z2ov
+be3z2ink
+bez1k2
+bez1m2
+bez1p2
+bez1s2
+bez1t2
+.be3z2e1
+.bezec2
+.bezej2
+.bezel2
+.bezes2
+.bezest2
+.bezez2
+blaho1
+blahos2
+blahop2
+boje1
+bojes2
+bojech2
+celo1
+celod2
+celop2
+celos2
+celoz2
+.ètyø1
+.ètyøè2
+.ètyøh2
+.ètyøk2
+.ètyøs2
+.ètyøv2
+.daleko1
+.dalekoh2
+.dalekoz2
+.do1
+.doè2
+.doh2
+.doj2
+.dok2
+.do2k3s
+.do2k3t
+.dom2
+.doo1p2
+.dop2
+.dos2
+.dot2
+.doú1è2
+.dov2
+.doz2
+.do¾2
+dù1
+dùk2
+dùs2
+dùt2
+dùv2
+dvoj1
+dvou1
+dvojè2
+dvouè2
+dvojk2
+dvouk2
+dvojst2r
+dvoust3r
+jedno1
+jednoh2
+jednos2
+jednot2
+jedno2t3k
+jedno2t3l
+jedno2t3n
+jednoz2
+kolem1
+kolemj2
+kolems2
+.koso1
+.kosoè2t2v
+kro2m1
+.kro3m2ì
+.lec1
+.lec2h
+.leck2
+.leda1k
+.leda2s1k2
+.mezi1
+.mezib2
+.meziè2
+.mezi2è3k
+.mezid2
+.mezih2
+.meziv2
+.mimo1s2
+.mimo1st2
+místo1d2
+místo1k2
+místo1p2
+.mnoho1
+.mnohoh2
+.mnohos2
+.mnohoè2
+.na1
+.nab2
+.nac2
+.naè2
+.nah2
+.nach2
+.naj2
+.nak2
+.nal2
+.nam2
+.nap2
+.naø2
+.nas2
+.nast2
+.na¹2
+.nat2
+.nav2
+.naz2
+.ná1
+.náb2
+.nác2
+.nád2
+.ná2d3h
+.náh2
+.nák2
+.nám2
+.náp2
+.nár2
+.nás2
+.nást2
+.nát2
+.náv2
+.na2d1
+.na3d2ì
+.na3d2a
+.na3d2á
+.na3d2í
+.na3d2i
+.na3d2u
+.na3d2o
+.na4d3obl
+.na4d3obyè
+.na3d2o1smr
+.na3d2r
+.na4d3rot
+.nadch2
+.nadh2
+.nadk2
+.nads2
+.nadz2
+.na3d2e1
+.nadez2
+.naded2
+.nadej2
+.nadeh2
+.nadel2
+.nadep2
+.nade¹2
+.ne1
+.neb2
+.nec2
+.neè2
+.ned2
+.neg2
+.ne2g3l
+.neh2
+.ne2h1t
+.nech2
+.ne2ch.
+.ne2ch»3
+.nek2
+.ne2kro
+.ne2kt
+.nel2
+.nem2
+.nep2
+.ner2
+.ne2r2v
+.neø2
+.nes2
+.nest2
+.ne¹2
+.net2
+.nev2
+.nez2
+.nedo1
+.nedob2ra
+.nedok2
+.nedom2
+.nedop2
+.nedor2
+.nedos2
+.nedot2
+.nedov2
+.nedoz2
+.neod1
+.neodh2
+.neodch2
+.neodm2
+.neod2ol
+.neodp2
+.neods2
+.neodst2
+.neod¹2
+.neodt2
+.neodz2
+.neod2e1
+.neodeb2
+.neodeh2
+.neodej2
+.neodem2
+.neodep2
+.neodes2
+.neode¹2
+.neodez
+.neod2ì
+.nepo1
+.nepob2
+.nepoc2
+.nepof2
+.nepog2
+.nepoh2
+.nepoch2
+.nepoj2
+.nepok2
+.nepom2
+.nepo2mp
+.nepon2
+.nepop2
+.nepo2r1t
+.nepos2
+.nepost2
+.nepo¹2
+.nepo2¹3t
+.nepo3¹4»u
+.nepot2
+.nepo7uè
+.nepo7u1k2
+.nepov2
+.nepoz2
+.nepo2d1
+.nepo3d2a
+.nepo3d2i
+.nepo3d2ob
+.nepo3d2u
+.nepo3d2á
+.nepo3d2í
+.nepodh2
+.nepodk2
+.nepo3d2ot
+.nepodp2
+.nepo3d2rá¾d
+.nepo3d2ra¾
+.nepods2
+.nepodst2
+.nepodv2
+.nepo3d2e1
+.nepodeb2
+.nepodej2
+.nepodem2
+.nepodep2
+.nepodes2
+.nepodez2
+.nepro1
+.neprob2
+.neproc2
+.neproè2
+.neprod2
+.neprog2
+.neproj2
+.neproh2
+.neproch2
+.neprok2
+.neprol2
+.neprom2
+.neprop2
+.nepror2
+.neproø2
+.nepros2
+.neprost2
+.nepro¹2
+.neprot2
+.neprov2
+.neproz2
+.nepro¾2
+.nepøe2d1
+.nepøe3d2a
+.nepøe3d2á
+.nepøe3d2ra
+.nepøedk2
+.nepøeds2
+.nepøedv2
+.nepøedz2
+.nepøedpo3k2
+.nepøe3d2e1
+.nepøedej2
+.nepøedes2
+.nepøedest2
+.nepøede¹2
+.nepøe2s1n
+.nepøe1
+.nepøeb2
+.nepøec2
+.nepøeè2
+.nepøeh2
+.nepøej2
+.nepøek2
+.nepøel2
+.nepøem2
+.nepøep2
+.nepøer2
+.nepøeø2
+.nepøe¹2
+.nepøet2
+.nepøev2
+.nepøez2
+.nepøi1
+.nepøib2
+.nepøic2
+.nepøiè2
+.nepøid2
+.nepøij2
+.nepøih2
+.nepøik2
+.nepøil2
+.nepøim2
+.nepøip2
+.nepøiø2
+.nepøis2
+.nepøist2
+.nepøi¹2
+.nepøit2
+.nepøiv2
+.nepøiz2
+.nero2z1
+.nero3zum
+.nerozb2
+.nerozè2
+.nerozd2
+.nerozh2
+.nerozk2
+.nerozp2
+.nerozs2
+.nerozst2
+.neroz¹2
+.nerozt2
+.nerozv2
+.nerozz2
+.nero3z2e1
+.nerozeb2
+.nerozeè2
+.nerozed2
+.nerozeh2
+.nerozej2
+.nerozek2
+.nerozel2
+.nerozem2
+.nerozep2
+.nerozer2
+.nerozeø2
+.nerozes2
+.nerozest2
+.neroze¹2
+.nerozet2
+.nerozev2
+.nerozez2
+.nesou1
+.nesouè2
+.nesoud2
+.nesouh2
+.nesouk2
+.nesoum2
+.nesous2
+.nesoust2
+.nesou¹2
+.nesouv2
+.nesouz2
+.neupo1
+.neupos2
+.neupot2
+.nì1k2
+.ne2j1
+.ne3j2du.
+.ne3j2de¹.
+.ne3j2de.
+.ne3j2deme.
+.ne3j2dete.
+.ne3j2dou.
+.ne3j2e
+.ne3j2a
+.ne3j2sem.
+.ne3j2si.
+.ne3j2sme.
+.ne3j2ste.
+.ne3j2sou.
+.ne4j3akt
+.ne3j2i
+.ne3j2í
+.nejd2
+.nejf2
+.nejh2
+.nejk2
+.nejm2
+.nejp2
+.nejs2
+.nejst2
+.nejt2
+.nejv2
+.nejz2
+.nejne1
+.nejnep2
+.nejnes2
+.nejnez2
+.ni1k2
+.o1
+.oh2
+.ok2
+.ok3t
+.okolo1
+.okoloj2
+.okolos2
+.om2
+.op2
+.op3ti
+.op3to
+.or2v
+.os2l
+.os2m
+.os3mo
+.os2n
+.os2p
+.os2tu
+.os2ty
+.os2tý
+.os2t2r
+.os2v
+.o¹2
+.ot2r
+.ot3ru
+.ov2
+.oz2
+.o¾2
+.o2b1d2
+.o2b1j
+.o2b1k2
+.o2b1r
+.o3b2ran
+.o3b2rán
+.o2b1ø
+.o2b1s2
+.o2b1¹2
+.o2b1t2
+.o2b1v2
+.o2b1z2
+.o2boj1s2
+.o2boj1st2r
+.o2boj1¾
+.o2boj1r
+.o2boj1n
+.obou1
+.obous2
+.obousm2
+.ob2e1
+.obe2c1
+.obeh2
+obej2
+obel2
+obep2
+.obes2
+.obest2
+.obet2
+.obez2
+.od1
+.odh2
+.odch2
+.odm2
+.od2ol
+.odp2
+.ods2
+.odst2
+.od¹2
+.odt2
+.odz2
+.od2e1
+.odeb2
+.odeh2
+.odej2
+.odem2
+.odep2
+.odes2
+.ode¹2
+.odez
+.od2ì
+.ote1v2
+.pa1h2r
+.pa1k2l
+.pa1m2l
+.pa1p2r
+.pa1t2v
+.pa1z2v
+.pa4s3tv
+.pìti1
+.pìtiè2
+.pìtih2
+.pìtik2
+.pìtis2
+.pìtiv2
+.po1
+.pob2
+.poc2
+.poè2
+.pof2
+.pog2
+.poh2
+.poch2
+.po2int
+.poj2
+.po2jï
+.pok2
+.po2ls
+.po2l¹
+.pom2
+.po2mp
+.pon2
+.pop2
+.po2rn
+.po2r1t
+.por2tl
+.pos2
+.post2
+.po¹2
+.po2¹3t
+.po2¹3»
+.po3¹4tìv
+.po3¹4»u
+.pot2
+.po7uè
+.po7u1k2
+.po7uliè
+.pov2
+.poz2
+.po2z3dì
+.po2d1
+.po3d2a
+.po3d2i
+.po3d2le.
+.po3d2ob
+.po4d3obl
+.po4d3oboj
+.po4d3oboè
+.po3d2rob
+.po3d2u
+.po3d2á
+.po3d2í
+.podh2
+.podk2
+.podm2
+.po3d2ol
+.po3d2ot
+.podp2
+.po3d2rá¾d
+.po3d2ra¾i
+.pods2
+.podst2
+.podv2
+.po3d2e1
+.podeb2
+.podej2
+.podem2
+.podep2
+.podes2
+.podez2
+.polo1o1
+.polo1p2
+.polo1s2
+.pra1
+.pras2
+.pra2s1k
+.pra2s1n
+.pra2cn
+.pra2èk
+.pra2h1n
+.pra2h1l
+.pra2kt
+.pra2¹t
+.pra2vd
+.pro1
+.prob2
+.proc2
+.proè2
+.prod2
+.prog2
+.proj2
+.proh2
+.proch2
+.prok2
+.prol2
+.prom2
+.prop2
+.pror2
+.proø2
+.pros2
+.prost2
+.pro¹2
+.prot2
+.pro2u
+.prov2
+.proz2
+.pro¾2
+proti1
+protik2
+protim2
+protip2
+protis2
+protist2
+prù1
+prù2mk
+prùh2
+prùk2
+prùp2
+prùr2
+prùs2
+prùt2
+prùv2
+prùz
+.pøe1
+.pøeb2
+.pøec2
+.pøeè2
+.pøeh2
+.pøej2
+.pøek2
+.pøel2
+.pøem2
+.pøep2
+.pøer2
+.pøeø2
+.pøes2
+.pøe2s1è
+.pøe2sto
+.pøe2sn
+.pøe¹2
+.pøet2
+.pøev2
+.pøez2
+.pøe2d1
+.pøe3d2a
+.pøe3d2á
+.pøe3d2ra
+.pøe3d2rá¾d
+.pøedk2
+.pøeds2
+.pøedv2
+.pøedz2
+.pøedpo3k2
+.pøe3d2e1
+.pøedej2
+.pøedes2
+.pøedest2
+.pøede¹2
+.pøedev2
+.pøe3s2níd
+.pøe2s1po
+.pøe2s1pø
+.pøe2s1len
+.pøe2s1li
+.pøi1
+.pøib2
+.pøic2
+.pøiè2
+.pøid2
+.pøij2
+.pøih2
+.pøik2
+.pøil2
+.pøim2
+.pøip2
+.pøiø2
+.pøis2
+.pøist2
+.pøi¹2
+.pøit2
+.pøiv2
+.pøiz2
+pøí1
+pøí2m1n
+pøíb2
+pøí2èk
+pøí2èn
+pøíj2
+pøík2
+pøím2
+pøíp2
+pøís2
+pøíst2
+pøí¹2
+pøít2
+pøív2
+pøíz2
+pù1j2d
+.ro2z1
+.ro3zum
+.rozb2
+.rozè2
+.rozd2
+.rozh2
+.rozk2
+.rozp2
+.rozs2
+.rozst2
+.roz¹2
+.rozt2
+.rozv2
+.rozz2
+.ro3z2e1
+.rozeb2
+.rozeè2
+.rozed2
+.rozeh2
+.rozej2
+.rozek2
+.rozel2
+.rozem2
+.rozep2
+.rozer2
+.rozeø2
+.rozes2
+.rozest2
+.roze¹2
+.rozet2
+.rozev2
+.rozez2
+.sd2
+.sh2
+.sk2
+.sp2
+.sv2
+.se1
+.se2dmi
+.se2dme
+.se2dl
+.se2dn
+.seb2
+.sebe1
+.sebek2
+.sec2
+.se2è
+.se3è2t
+.se2gm
+.seg2
+.seh2
+.se2is1
+.sej2
+.sek2
+.sel2
+.sem2
+.sep2
+.se2p1t
+.sep2ta
+.serv2
+.se2rvis
+.seø2
+.ses2
+.se2st
+se3st2roj
+.se3st2øel
+.se¹2
+.set2
+.sev2
+.se2x1
+.sez2
+.sou1
+.souè2
+.soud2
+.sou2d3c
+.sou2d3n
+.souh2
+.souj2
+.souk2
+.soum2
+.soup2
+.sous2
+.soust2
+.sou¹2
+.souv2
+.souz2
+.spolu1
+.spolub2
+.spolup2
+.nespolu1p2
+.¹esti1
+.¹estiè2
+.¹estih2
+.¹estik2
+.¹estis2
+.¹estiv2
+.tro2j1ú
+.tro2j1s2
+.u1
+.ub2
+.uc2
+.ud2
+.uh2
+.u2h3l
+.u3h4lad
+.u3h4líd
+.u2h3r
+.u3h4rad
+.u3h4rab
+.u3h4rá
+.u4h5rám.
+.u4h5rách.
+.uch2
+.uj2
+.uk2
+.ul2h
+.ul2p
+.um2
+.up2
+.upo1
+.upos2
+.upot2
+.ur2
+.ur3b
+.ur3è
+.uø2
+.us2
+.ust2
+.u¹2
+.ut2
+.uv2
+.uz2
+.u2z3b
+.u2z3d
+.u2z3l
+.u2z3m
+.u¾2
+.u2¾3¹í
+ú1
+úc2
+úè2
+ú2hl
+ú3h2lav
+új2
+úk2
+úp2
+ús2
+ú2s3t
+ús4tn
+ú3s4tav
+ú3s4t2r
+ú3s4t2ø
+ú4s5t3øi
+ú¹2
+út2
+úv2
+ú2z1k
+.vk2
+.vp2
+.vs2
+.vst2
+.v¹2
+.vt2
+.vz2
+.ve1
+.vec2
+.ved2
+.vì1h2l
+.veh2
+.ve2jc
+.ve2jè
+.ve2jp
+.ve2kt
+.vem2
+.ve2n1
+.ve2p3ø
+.vep2
+.ve2r
+.ve3ri
+.ves2
+.ve2s3l
+.ve2s3mí
+.ve2s3n
+.ve2s3t
+.ve3s4tav
+.ve¹2
+.ve2¹3k
+.vet2
+.ve2tch
+.vev2
+.ve2z3
+.ve3zl.
+.ve2l1b2
+.ve2l1k
+.ve2l1m
+.ve2l1t2
+.ve2l2t3l
+.vele1
+.vele2bn
+.veleh2
+.veles2
+.velest2
+.velez2
+.vodo1
+.vodot2
+.vodoz2
+.v¹e1
+.v¹e2ch.
+.vy1
+.vyb2
+.vyc2
+.vyè2
+.vyd2
+.vy2d1r
+.vy3d2rol
+.vy3d2ráp
+.vy3d2rás
+.vyh2
+.vyj2
+.vyk2
+.vyl2
+.vym2
+.vyn2
+.vyp2
+.vyr2
+.vyø2
+.vys2
+.vyst2
+.vy¹2
+.vy2¹3¹
+.vyt2
+.vyv2
+.vyz2
+.vý1
+.výè2
+.výh2
+.výk2
+.vým2
+.výp2
+.výr2v
+.výs2
+.výst2
+.vý¹2
+.vý2¹3k
+.výt2
+.výv2
+.výz2
+.vz1h2
+.vz1p2
+.vz1t2
+.vze1
+.vzed2
+.vzep2
+.vzes2
+.vze¹2
+.vzez2
+.zd2
+.zh2
+.zch2
+.zk2
+.zl2
+.zm2
+.zp2
+.zr2
+.zt2
+.zv2
+.zne1
+.znek2
+.znem2
+.znep2
+.zne2rv
+.znes2
+.zne¹2
+.znet2
+.za1
+.z3a2larm
+.z3akti
+.zab2
+.zaè2
+.zad2
+.zah2
+.zach2
+.zaj2
+.zak2
+.zal2
+.zam2
+.zap2
+.zar2
+.zaø2
+.zas2
+.zast2
+.za¹2
+.zat2
+.zav2
+.zaz2
+.zane1
+.zaned2
+.zanes2
+.zane¹2
+.uza1m2
+.uza1r2
+.uza1v2
+.zá1
+.záb2
+.zác2
+.zád2
+.záh2
+.zách2
+.záj2
+.zák2
+.nejzá1k2
+.zám2
+.záp2
+.zás2
+.zást2
+.zá¹2
+.zát2
+.záv2
+.záz2
+.z2e1
+.z3e2f
+.zed2
+.ze2d1n
+.zej2
+.zem2
+.ze2ms
+.ze2mn
+.zep2
+.zes2
+.zet2
+.zev2
+.zez2
+zù1
+%cizí pøedpony
+.a1e2ro
+.a1d2re
+.a1g2no
+.a1ch2r
+.a1k2l
+.a1k2re
+.an1es
+an3g2l
+.an2t1ar
+.anti1
+.antik2
+.antip2
+an1t2ro1
+.ar2ch1an
+.as2pek
+.a1s2t
+.as3t2r
+asym3p2t
+.a1t2r
+.aus¹t2r
+.auto1
+.abs¹t2
+.de1f2
+.de1g2
+.de1k2
+.de1p2
+.de2p3ta
+.de2z1
+.di1o
+.di1p2
+.dis3k2v
+dis3k2r
+dis3t2r
+.di1u
+.du1p2l
+.epi1
+.epig2
+.ex1
+.exk2
+.exp2
+.ext2
+.ex2o
+ex2i1s
+.fyto1
+.fytop2
+.ide1
+.ide2n
+.in1
+.inc2
+.inf2
+.ing2
+.ink2
+.ins2
+.int2
+.inter1
+.interp2
+.inters2
+.kom1p2
+.kon3g2
+.kon3k2
+.kon3s2
+.konst2
+.kon3t2
+.kon3v2
+.ko1o
+.hyper1
+.hypert2
+.hypo1
+.hypos2
+.kata1k2l
+.ko1i
+.ko1e
+.para1
+.paraf2
+.parag2
+.re1
+.ref2
+.reg2
+.re2j1
+.rek2
+.re2n2d
+.re2n2t
+.rep2
+.re2pti
+.res2
+.re2sp.
+.ret2
+.sub1
+.super1
+.superp2
+.supers2
+.supra1
+.sy1s2t
+.te1o1
+.topo1g2
+.tran2s1
+.tran3s2pi
+.tran3s2k2r
+.tran3s2c
+.tri1
+.trip2
+.tri2èk
+.tri2st
+.zoo1
+.zoop2
+.zoos2
+%pøípony a koncovky
+i1ent
+ru1ov
+3s2t2ví
+3s2t2vo.
+3s2t2va.
+3s2t2vu.
+3s2t2ve
+3s2tev.
+3s2tevn
+3s2t2vùm.
+3s2t2vy.
+3¾e.
+.m4¾e.
+3hle.
+c4hle.
+3li.
+3ly.
+3la.
+3nout.
+3nouti.
+i1án
+a1tb
+e1tb
+i1tb
+1t2va.
+1t2vy.
+1t2vì.
+1t2vu.
+1t2vou.
+1t2ev.
+1t2vám.
+1t2vách.
+1t2vami.
+3s2t2v
+a4s3t2v
+á4st3v
+3k2rac
+3k2rat
+3k2rát.
+3k2ráte.
+3p2lex
+1t2rof
+1s2trof
+%výjimky
+.a1v2¹ak
+.atmo1s2f
+.ce1d1r
+èesko3s4l
+èesko3b4r
+.e1gyp2t1
+.elek1t
+.elek3t1r
+.elek3t1ø
+elip1s
+elip1t
+eu1k2lei1d
+.i1h2ned
+kladko1s2t2roj
+moøe1p2lav
+.pe1t1r
+oka1m¾i
+s2t2ran
+z2d2rav
+zù1s2ta
diff --git a/hyph/hyph/danish.lh b/hyph/hyph/danish.lh
new file mode 100644
index 0000000..d7cec8f
--- /dev/null
+++ b/hyph/hyph/danish.lh
@@ -0,0 +1,1201 @@
+Lout hyphenation information
+%
+% COPYRIGHT (C) 1994 Jeffrey H. Kingston
+% with contributions by Jesper Hagen (see details below)
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either Version 3, or (at your option)
+% any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program; if not, write to the Free Software
+% Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA
+
+% Danish hyphenation file, created by
+% Jeffrey H. Kingston 22 April 1994
+% from a file supplied by Jesper Hagen
+%
+
+Classes:
+@!$%^&*()_-+=~`{[}]:;'|<,.>?/0123456789
+aA
+bB
+cC
+dD
+eE
+fF
+gG
+hH
+iI
+jJ
+kK
+lL
+mM
+nN
+oO
+pP
+qQ
+rR
+sS
+tT
+uU
+vV
+wW
+xX
+yY
+zZ
+æÆ
+øØ
+åÅ
+
+Patterns:
+.ae3
+.an3k
+.an1s
+.be5la
+.be1t
+.bi4tr
+.der3i
+.diagno5
+.her3
+.hoved3
+.ne4t5
+.om1
+.ove4
+.po1
+.så3
+.til3
+.yd5r
+.ær5i
+.øv3r
+ab5le
+3abst
+a3c
+ade5la
+5adg
+a1e
+5afg
+5a4f1l
+af3r
+af4ri
+5afs
+a4gef
+a4gi
+ag5in
+ag5si
+3agti
+a4gy
+a3h
+ais5t
+a3j
+a5ka
+a3ke
+a5kr
+aku5
+a3la
+a1le
+a1li
+al3k
+4alkv
+a1lo
+al5si
+a3lu
+a1ly
+am4pa
+3analy
+an4k5r
+a3nu
+3anv
+a5o
+a5pe
+a3pi
+a5po
+a1ra
+ar5af
+1arb
+a1re
+5arg
+a1ri
+a3ro
+a3sa
+a3sc
+a1si
+a3sk
+a3so
+3a3sp
+a3ste
+a3sti
+a1ta1
+a1te
+a1ti
+a4t5in
+a1to
+ato5v
+a5tr
+a1tu
+a3tø
+a5va
+a1ve
+a5væ
+a5z
+1ba
+ba4ti
+4bd
+1be
+be1k
+be3ro
+be5ru
+be1s4
+be1tr
+1bi
+bi5sk
+b1j
+4b1n
+1bo
+bo4gr
+bo3ra
+bo5re
+1br4
+brød3
+4bs
+bs5k
+b3so
+b1st
+b5t
+3bu
+bu4s5tr
+b5w
+1by
+by5s
+5bæ
+4c1c
+1ce
+ce5ro
+3ch
+4ch.
+ci4o
+ck3
+5cy
+3da
+4d3af
+d5anta
+da4s
+d1b
+d1d4
+1de
+de5d
+4de4lem
+der5eri
+de4rig
+de5sk
+d1f
+d1g
+d3h
+1di
+di1e
+di5l
+d3j
+d1k
+d1l
+d1m
+4d1n
+3do
+4dop
+d5ov
+d1p
+4drett
+5d4reve
+3drif
+3driv
+d5ros
+d5ru
+5drøv
+ds5an
+ds5in
+d1ski
+d4sm
+dstå4
+d4su
+dsu5l
+ds5vi
+d3ta
+d1te
+dt5o
+d5tr
+dt5u
+1du
+dub5
+d1v
+3dy
+3dæ
+3dø
+e5ad
+e3af
+e5ag
+e3ak
+e1al
+ea4la
+e3an
+e5ap
+e3at
+e3bl
+ebs3
+e1ci
+ed5ar
+edde4
+eddel5
+e4do
+ed5ra
+ed3re
+ed3rin
+ed4str
+e3e
+3eff
+e3fr
+3eft
+e3gu
+e1h
+e3in
+ei5s
+e3je
+e4j5el
+e1ka
+e3ke
+e3kl
+4e1ko
+e5kr
+ek5sa
+3eksem
+3eksp
+e3ku
+e1kv
+e5ky
+e3lad
+el3ak
+el3ar
+e1las
+e3le
+e4lek
+3elem
+e1li
+5elim
+e3lo
+el5sa
+e5lu
+e3ly
+e3læ
+e3lø
+e4mad
+em4p5le
+em1s
+en5ak
+e4nan
+4enn
+e4no
+en3so
+e5nu
+e5ol
+e3op
+e1or
+e3ov
+epi3
+e1pr
+e3ra
+er3af
+e4rag
+e4rak
+e1re
+e4ref
+er5ege
+5erhv
+e1ri
+e4rib
+er1k
+ero5d
+er5ov
+er3s
+er5tr
+e3rum
+er5un
+e5ry
+e3rø
+er5øn
+e1ta
+e1te
+etek4s
+e1ti
+e3tj
+e1to
+e3tr
+e3tu
+e1ty
+e5tæ
+e5tø
+e3um
+e3un
+3eur
+e1va
+e3ve
+e4v3erf
+e1vi
+e1væ
+e5x
+e3æ
+e5å
+1fa
+fa4ce
+fags3
+f1b
+f1d
+1fe
+fej4
+fejl1
+f1f
+f1g
+f1h
+1fi
+f1k
+3fl
+1fo
+for1en
+fo4ri
+f1p
+f1s4
+4ft
+f3ta
+f1te
+f1ti
+f5to
+f5tvi
+1fu
+f1v
+3fy
+3fæ
+3fø
+fø4r5en
+1ga
+g3art
+g1b
+g1d
+1ge
+4g5enden
+ger3in
+ge3s
+g3f
+g1g
+g1h
+1gi
+gi4b
+gi3st
+giø4
+5gj
+g3k
+g1l
+g1m
+3go
+4g5om
+g5ov
+g3p
+1gr
+gs1a
+gsde4len
+g4se
+gsha4
+g5sla
+gs3or
+gs1p
+g5s4tide
+g4str
+gs1v
+g4sø
+g5så
+g3ta
+g1te
+g1ti
+g5to
+g3tr
+gt4s
+g3ud
+gun5
+g3v
+1gy
+g5yd
+3gæ
+3gø1
+3gå
+4ha.
+heds3
+he5s
+4het
+hi4e
+hi4n5
+hi3s
+ho5ko
+ho5ve
+4h3t
+hun4
+hund3
+hvo4
+i1a
+i3b
+i4ble
+i1c
+i3dr
+ids5k
+i1el
+i1en
+i3er
+i3et.
+if3r
+i3gu
+i3h
+i5i
+i5j
+i1ka
+i1ke
+ik1l
+i5ko
+ik3re
+ik5ri
+iks5t
+ik4tu
+i3ku
+ik3v
+i3lag
+il3eg
+il5ej
+il5el
+i3li
+i4l5id
+il3k
+i1lo
+il5u
+i3mu
+ind3t
+5inf
+ings1
+in3s
+in4sv
+inter1
+i3nu
+i3od
+i3og
+i5ok
+i3ol
+ion4
+ions1
+i5o5r
+i3ot
+i5pi
+i3pli
+i5pr
+i3re
+i3ri
+ir5t
+i3sc
+i3si
+i4sm
+is3p
+i1ster
+i3sti
+i5sua
+i1ta
+i1te
+i1ti
+i3to
+i3tr
+it5re.
+i1tu
+i3ty
+i5tæ
+i1u
+i1va
+i1ve
+i1vi
+i3ø
+j3ag
+jde4rer
+jds1
+jek4to
+4j5en.
+j5k
+j3le
+j3li
+jlmeld5
+jlmel4di
+j3r
+jre5
+ju3s
+5kap
+k5au
+5kav
+k5b
+kel5s
+ke3sk
+ke5st
+ke4t5a
+k3h
+ki3e
+ki3st
+k1k
+k5lak
+k1le
+3klu
+k4ny
+5kod
+1kon
+ko3ra
+3kort
+ko3v
+1kra
+5kry
+ks3an
+k1si
+ks3k
+ks1p
+k3ste
+k5stu
+ks5v
+k1t
+k4tar
+k4terh
+kti4e
+kt5re
+kt5s
+3kur
+1kus
+3kut
+k4vo
+k4vu
+3kø
+3kå
+5lab
+lad3r
+5lagd
+la4g3r
+5lam
+1lat
+l1b
+ldiagnos5
+l3dr
+ld3st
+1le.
+5led
+4lele
+le4mo
+3len
+1ler
+1les
+4leu
+l1f
+lfin4
+lfind5
+l1go1
+l3h
+li4ga
+lingeniø4
+4l5ins
+4l3int
+li5o
+l3j
+l1ke
+l1ko
+l3ky
+l1l
+l5mu
+lo4du
+l3op
+4l5or
+3lov
+4l3p
+l4ps
+l3r
+4ls
+lses1
+ls5in
+l5sj
+l1ta
+l4taf
+l1te
+l4t5erf
+l3ti
+lt3o
+l3tr
+l3tu
+lu5l
+l3ve
+l3vi
+l3væ
+5løs
+1ma
+m1b
+m3d
+1me
+4m5ej
+m3f
+m1g
+m3h
+1mi
+mi3k
+m5ing
+mi4o
+mi5sty
+m3k
+m1l
+m1m
+mmen5
+m1n
+3mo
+mo4da
+4mop
+4m5ov
+m1pe
+m3pi
+m3pl
+m1po
+m3pr
+m1r
+mse5s
+ms5in
+m5sk
+ms3p
+m3ste
+ms5v
+m3ta
+m3te
+m3ti
+m3tr
+m5tå
+m1ud
+1mul
+mu1li
+3my
+1mæ
+3mø
+3må
+3na
+4nak
+1nal
+n1b
+n1c
+4nd
+n3dr
+nd5si
+nd5sk
+nd5sp
+1ne
+ne5a
+ne4da
+nemen4
+nement5e
+neo4
+n3erk
+n5erl
+ne5sl
+ne5st
+n1f
+n4go
+4n1h
+1ni
+4nim
+ni5o
+ni3st
+n1ke
+n1ko
+n3kr
+n3ku
+n5kv
+n3kæ
+4n1l
+n1m
+n1n
+1no
+n3ord
+n5p
+n3r
+4ns
+n3si
+n1sku
+ns3po
+n1sta
+n5sti
+n1ta
+nta4le
+n1te
+n1ti
+ntiali4
+n3to
+n1tr
+nt4s5t
+nt4su
+n3tu
+n3ty
+n5tæ
+4n1v
+3ny
+n3z
+3næ
+4n5æb
+5nø
+o3a
+o4as
+ob3li
+o1c
+o4din
+od5ri
+od5s
+od5un
+o1e
+of5r
+o4gek
+o4gel
+o4g5o
+og5re
+og5sk
+o5h
+o5in
+oi6s5e
+o1j
+o3ka
+o1ke
+o3ku
+o3la
+o3le
+o1li
+o1lo
+o3lu
+o5ly
+o5læ
+1omr
+on3k
+ook5
+o3or
+o5ov
+o3pi
+op3l
+op3r
+op3s
+3opta
+4or.
+or1an
+3ordn
+ord5s
+o3re.
+o3reg
+o3rek
+o3rer
+o3re3s
+o3ret
+o3ri
+3orient
+or5im
+o4r5in
+or3k
+or5o
+or3sl
+or3st
+or3ø
+o3si
+o3so
+o3t
+o1te
+o5un
+ov4s
+o5å
+3pa
+pa5gh
+p5anl
+p3d
+4pec
+3pen
+1per
+pe1ra
+pe5s
+pe3u
+p3f
+4p5h
+1pla
+p4lan
+4ple.
+4pler
+4ples
+p3m
+p3n
+5pok
+4po3re
+3pot
+4p5p4
+p4ro
+1proc
+5præ
+p3sk
+p5so
+ps4p
+p3st
+p1t
+1pu
+pu5b
+p5ule
+p5v
+5py3
+5pæd
+på3
+qu4
+4raf
+ra5is
+4rarb
+r1b
+r4d5ar
+r3dr
+rd4s3
+4reks
+1rel
+re5la
+r5enss
+5rese
+re5spo
+4ress
+re3st
+re5s4u
+5rett
+r1f
+r1gu
+r1h
+ri1e
+ri5la
+4rimo
+r4ing
+ringse4
+ringso4r
+4rinp
+4rint
+r3ka
+r1ke
+r1ki
+rk3so
+r3ku
+r5kæ
+r1l
+rmo4
+r5mu
+r1n
+ro1b
+ro3p
+r3or
+r3p
+r1r
+rre5s
+rro4n5
+r1sa
+r1si
+r5skr
+r4sk5v
+rs4n
+r3sp
+r5stu
+r5su
+r3sv
+r5tal
+r1te
+r4teli
+r1ti
+r3to
+r4t5or
+rt5rat
+rt3re
+r5tri
+r5tro
+rt3s
+r5ty
+r5tæ
+r5tø
+r3ud
+run4da
+5rut
+r3va
+r1ve
+r3vi
+r3væ
+ry4s
+r5æl
+4røn
+5rør
+3råd
+r5år
+s3af
+1sam
+sa4ma
+s3ap
+s1ar
+1sat
+4s1b
+s1d
+sdy4
+1se
+s4ed
+5s4er
+se4se
+s1f
+4s1g4
+4s3h
+si4bl
+1sig
+s5int
+5sis
+5sit
+5siu
+s5ju
+4sk.
+1skab
+1ske
+s3kl
+sk5s4
+5sky
+s4kå
+s1le
+s1li
+slo3
+5slu
+s5ly
+3slå
+s1m
+s4my
+4snin
+s4nit
+s4næ
+so5k
+5sol
+5som.
+3somm
+s5oms
+5somt
+3son
+4s1op
+sp4
+3spec
+4sper
+3s4pi
+s1pl
+3sprog.
+s5r4
+s1s4
+4st.
+5s4tam
+1stan
+st5as
+3stat
+1stav
+1ste.
+1sted
+3stel
+5stemo
+1sten
+5step
+3ster.
+3stes
+5stet
+5stj
+3sto
+st5om
+1str
+5stø
+1stå
+s1ud
+3sul
+s3un
+3sur
+s3ve
+3s4y
+1sy1s
+1sæ
+4s5æn
+1sø
+s5øk
+så4r5
+5ta.
+1tag
+tands3
+4tanv
+4tb
+tede4l
+teds5
+3teg
+5tekn
+teo1
+5term
+te5ro
+4t1f
+6t3g
+t1h
+tialis5t
+3tid
+ti4en
+ti3st
+ti4ø
+4t3k
+4t1l
+tli4s5
+t1m
+t1n
+to5ra
+to1re
+to1ri
+tor4m
+4t3p
+t4ra
+4tres
+tro5v
+1try
+3træk.
+4ts
+t3si
+ts4pa
+ts5pr
+t3st
+ts5ul
+t4sø
+t5så
+4t1t
+t5uds
+5tur
+t5ve
+t3væ
+1typ
+u1a
+5udl
+ud5r
+ud3s
+3udv
+u1e
+ue4t5
+uge4ri
+ugs3
+u5gu
+u3i
+u5kl
+uk4ta
+uk4tr
+u1la
+u1le
+u5ly
+u3læ
+u5pe
+up5l
+u5q
+u3ra
+u3re
+u4r3eg
+u1rer
+u3ro
+us5a
+u3si
+u5ska
+u5so
+us5v
+u1te
+u1ti
+u1to
+ut5r
+ut5s4
+5u5v
+va5d
+3varm
+1ved
+ve4l5e
+ve4reg
+ve3s
+5vet
+v5h
+vi4l3in
+1vis
+v5j
+v5k
+vl4
+v3le
+v5li
+vls1
+1vo
+4v5om
+v5p
+v5re
+v3st
+v5su
+v5t
+3vu
+3værd
+1værk
+5vå
+y3a
+y5dr
+y3e
+y3ke
+y5ki
+yk3li
+y3ko
+yk4s5
+y3kv
+y5li
+y5lo
+y5mu
+yns5
+y5o
+y1pe
+y3pi
+y3re
+yr3ek
+y3ri
+y3si
+y3ti
+y5t3r
+y5ve
+y5væ
+zi5o
+æb3l
+æ3c
+æ3e
+æg5a
+æ4gek
+æ4g5r
+ægs5
+æ5i
+æ5kv
+ælle4
+æn1dr
+æ5o
+æ1re
+ær4g5r
+æ3ri
+ær4ma
+ær4mo
+ær5s
+æ5si
+æ3so
+æ3ste
+æ3ve
+øde5
+ø3e
+ø1je
+ø3ke
+ø3le
+øms5
+øn3st
+øn4t3
+ø1re
+ø3ri
+ørne3
+ør5o
+ø1ve
+å1d
+å1e
+å5h
+å3l
+å3re
+års5t
+å5sk
+å3t
diff --git a/hyph/hyph/dutch.lh b/hyph/hyph/dutch.lh
new file mode 100644
index 0000000..1bf0005
--- /dev/null
+++ b/hyph/hyph/dutch.lh
@@ -0,0 +1,6183 @@
+Lout hyphenation information
+%
+% COPYRIGHT (C) 1994 Jeffrey H. Kingston
+% with contributions by Ronald Rietman (see details below)
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either Version 3, or (at your option)
+% any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program; if not, write to the Free Software
+% Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA
+
+% Created by Jeff Kingston 7 October 1994 from a TeX hyphenation
+% patterns file supplied by Ronald Rietman, who says it is nehyph1.tex
+% from the CTAN archive. A larger file called nehyph2.tex was tried
+% first, but proved to exceed Lout's internal limits on the size of a
+% hyphenation table. Note that there are no accented characters
+% in this file, which means that Lout will never hyphenate a Dutch
+% word containing an accented character. To summarise a discussion
+% by Rietman, this is probably the safest thing although it does miss
+% a few opportunities for acceptable hyphenations, mainly of words
+% containing a trema which Lout could not hyphenate correctly anyway
+% since the following letter changes when hyphenating.
+%
+% The following comment came with the file:
+%
+% These are TeX hyphenation patterns for Dutch generated at the
+% Computer Science Department of Utrecht University.
+% Padualaan 14, P.O. Box 80.089, 3508 TB Utrecht, The Netherlands.
+% Telephone: +31-30-531454, e-mail: postmaster@cs.ruu.nl
+%
+% Copyright (c) 1989 by CELEX.
+% CELEX, Wundtlaan 1, 6525 XD Nijmegen, The Netherlands.
+% Telephone: +31-80-615751, email: celex@hnympi52.bitnet
+%
+% General permission for non-profit usage is granted.
+% For commercial usage contact CELEX at the above address.
+% Copying of this file is only permitted with inclusion of
+% this copyright notice and with these same restrictions.
+%
+
+Classes:
+@!$%^&*()_-+=~`{[}]:;'|<,.>?/0123456789
+aA
+bB
+cC
+dD
+eE
+fF
+gG
+hH
+iI
+jJ
+kK
+lL
+mM
+nN
+oO
+pP
+qQ
+rR
+sS
+tT
+uU
+vV
+wW
+xX
+yY
+zZ
+
+Patterns:
+.ad3ek
+.ad3eq
+.ad3op
+.ad3or
+.ad3s
+.af3ra
+.al3f
+.al4st
+.am3p
+.an3d4
+.an4kl
+.an3th
+.ap2n
+.ar3tr
+.as3p
+.as1t
+.as3tr
+.at4r
+.ba3ta
+.be3la
+.bij1
+.bli4
+.bu2s
+.ca4te.
+.ce4len
+.co4ler
+.culot4
+.da4gi
+.dag3r
+.da4k
+.de2a
+.de3ra
+.de3ro
+.di4s
+.ed3w
+.ek3s
+.ek4w
+.elo3
+.en3t
+.er4f3l
+.erop3
+.ert4
+.er3ui
+.es3
+.exi1
+.gaat3
+.ga4me.
+.ge3f
+.ge3la
+.ge3n4a
+.ge3r4a
+.ges4
+.ge3sk
+.he2a
+.he2r
+.her3i
+.her3u
+.ho4les
+.ho4met
+.hy4de
+.ij2s
+.ij4s3l
+.ima4ge
+.in1
+.in3d4
+.ink4
+.in3s4
+.in3t
+.jes2
+.ka4taa
+.ka4te.
+.ke3ra
+.ker4kl
+.le4b
+.le4go
+.le4gr
+.len4s
+.les3
+.le3th
+.luit4
+.mein3
+.me3so
+.mo4s
+.mos3k
+.na3fl
+.na1s
+.och3
+.oe4r
+.oe4s3
+.olf4
+.olie3
+.om1a
+.on1
+.on3i
+.on3s
+.on2t
+.pa2k
+.pe4te.
+.prik3
+.puit4
+.quit4
+.raat4
+.ran4ch
+.read3
+.re4mol
+.res3p
+.rijk4s
+.ro4l
+.ro4q
+.ro4sk
+.sa4p
+.sce4ne
+.se4st
+.se2t
+.sha4
+.ski3s
+.sli2
+.snap3
+.st2
+.ste4m3
+.sty4
+.sul3
+.taat4
+.tan4da
+.ta3ro
+.te4f
+.tek2
+.ten4tj
+.te4ra
+.ter4pa
+.thee3
+.ti4me
+.ti4na
+.to2s
+.traat4
+.ts4
+.tu4ne.
+.ui2
+.ui3le
+.uit1
+.uit4je
+.van3o
+.veld3
+.ver1
+.vu4l3
+.was3t
+.we2l
+.wel3o
+.wet4s
+.work3
+.xe1
+.ya2l
+.zes3
+.zit3
+a4a4
+aad3a
+aad3o
+aad3r
+aag1
+aag3r
+aags4
+aai1
+aak1
+aak3l
+aak3r
+aak3w
+aal1a
+2aald
+aal1e
+aal3k
+aal1o
+4aalr
+4aalv
+aam1
+aan1
+aan3a
+1aanj
+aan3sp
+3aanwi
+aap1a
+aar1
+aar4th
+aas3e
+aas3f
+aas3p
+aat3a
+aat3h
+aat3o
+aat3r
+a1b
+abak4s3
+aba4s
+abe4la
+able2
+a4ble.
+a4bles
+3abonn
+ab3ru
+4ace
+a2ce.
+a3cee
+a3cep
+a4cer.
+a4cers
+a4ces
+2ach.
+a3cha
+2a1che
+4a1chi
+a1cho
+a3chr
+4achs
+a1chu
+2acl
+2aco
+2acr
+4acs
+a1d
+2ad.
+ad2a
+ad3aa
+ad3ad
+ada2r3
+a4dete
+ade4tj
+2adi
+2adl
+ad3ora
+2adp
+3adres
+ad3sla
+4ady
+2ae
+aege4
+aek4
+ael4
+a4fau
+af3d
+af1dw
+4afe
+af3ei
+afe4la
+1afg
+2afi
+a4fin
+af3l
+2afo
+afon4d
+af1r
+af3ric
+af3ris
+af3rit
+af3ru
+af3s
+a4fu
+3afzet
+4aga
+ag1ad
+agas4s
+age2o
+a4gins
+ag3le
+ag3ord
+ag3reg
+ag3roo
+ag3sla
+ag4spr
+a4g3uu
+a1h
+4ah.
+ah3l
+ai1e
+aig4
+aik4
+ails4
+ai4lu
+2ais4
+ai3sc
+ai1so
+ai4sol
+ai1t
+4a1j
+2ak.
+ak3arb
+a4ked
+aker4se
+a2kes
+a2kez
+2akh
+akhou4
+ak3id
+a2k1l
+ak3la
+ak3lo
+ak3na
+ak3ne
+a4kog
+ak3ond
+4akp
+2aks
+4aks.
+ak1st
+4akt.
+ak3we
+a1la
+alan4st
+a4lap
+2ald
+a2lel
+a4lents
+al2fe
+alf3l
+alf2r
+4alia
+al4kank
+al4kro
+al4mac
+al4mol
+a1lo
+al3omt
+alo4n
+al3ph
+als3j
+al2sl
+als3oo
+al4stem
+al4sti
+al3tha
+a1lu
+4ambe
+1ambt
+ame4ran
+3ameu
+4amm
+am2pl
+am4se
+am4sm
+am4sn
+am2sp
+am3spe
+an2aa
+an4af
+a2na2g
+an3arc
+an4ded
+2andj
+and4ri
+a4nec
+an3emi
+a3nen
+an3est
+an4gan
+an4gap
+anges4
+an2gr
+a3ni
+4ank.
+an4kaa
+an4kak
+an4kas
+an4kna
+an2kr
+ank3ro
+annet4
+ano3st
+an3scr
+an2so
+an2sp
+antes4
+ant2h
+an3tha
+a4nuu
+anval4s
+a1o
+a2ob
+a4op4
+4ap.
+a1pa
+a2pe.
+a4ped
+ap3j
+ap3le
+a1plu
+a1po
+1appa
+3appr
+a1pr
+a4p3rij
+april3
+ap2sl
+ap2sp
+2apu
+a1py
+a1q
+a4ques
+4ar.
+a1ra
+ar2da
+ard3ac
+ard3ol
+ard3op
+ar2dr
+ar4dran
+ard3ri
+ard3w
+a4rew
+arg3l
+3argum
+a1ri
+ari4an.
+ari4ce
+ariet4
+ar3k4l
+2arl
+ar4map
+ar4mu
+ar4nes
+a1ro
+2aroo
+ar4s1l
+ars3la
+ars3m
+ar2sn
+ar2so
+ar4spa
+ar4spr
+ar4stek
+ar4str
+ar4tak
+ar4tap
+ar2tj
+ar4top
+ar2tr
+art4sl
+a3rus
+a1ry
+4asa
+asal4
+as1ap
+a2sc
+as4ch
+as4cr
+a2seb
+a2sec
+as4ee
+a2sel
+a3sem
+as4en
+as2hi
+asi4on.
+a2sl
+as3lam
+as3lan
+as3li
+aslijs4
+as3m
+as3pa
+as3pi
+as3pl
+assi3s
+3assoc
+as1ta
+as3tan
+a4s3te
+as4th
+as3ti
+as3ton
+a1t
+at1ac
+a4talen
+ata1s
+a4taz
+ate4rec
+ate4rek
+4atg
+at2ha
+a3thar
+a2tj
+3atlas
+3atmos
+2atn
+a2t3re
+a3trek
+at2sl
+at4slo
+at2sp
+at4stak
+at4sti
+at4stre
+at2tu
+2au
+4au.
+au1ch
+au3e
+3aug
+au3kr
+auli4ne
+aul4le
+aup2
+aur2
+4aus
+au3sa
+au1t4
+3auto
+au1wi
+4auz
+a1v
+aven3s
+ave3re
+ave3ri
+aver4u
+a3vi
+avil4l
+1avo
+4avot
+a1w
+4ay
+ay4a
+a1z
+aze3s
+1ba
+baar3t
+babe4
+babet4
+ba4ch
+ba4da
+ba4des
+ba4dr
+bag4h
+ba4ka
+bal4kla
+ba3na
+ba4ne.
+ban4kl
+ban4kn
+ban4k3o
+ban4kr
+bank3w
+ban4q
+baseli4
+bassi4
+bas3t
+2b1b
+bbe4lag
+bbe4lee
+bbe4n
+2b1c
+2b1d
+3be
+be3am
+be4art
+be3dw
+beet1
+be3g4
+beis4
+bei4tj
+be3ke
+be3kl
+be4lex
+bel3k
+bel3sp
+be1ra
+bergi4
+ber4gl
+ber4gr
+be1r2o
+be4ron
+bers4k
+ber4sto
+be1s4
+be3sm
+be1tw
+beur4s
+2b1f
+2bg
+4b3h
+1b2i
+bid3s4
+bi4du
+bi3eu
+bij3d
+bij3k
+bijs2
+bij3sl
+bij3sm
+bin4dr
+bin4tj
+bio3
+bis4a
+bi3se
+bis4tr
+bi1tr
+bit4se
+2b1j
+2b1k
+1b4l
+bleus4
+3bli
+blik3o
+4blish
+blok3
+2b1m
+b1n
+1bo
+boe4ga
+boe4kn
+boe3s4
+bo4les
+bo2ma
+bom3aa
+bo4mo
+bonai4
+bond4s
+bon4tj
+bon4to
+boos4t3
+bor4sto
+bos3
+bo4sp
+bos4ses
+bo2su
+bo2th
+bot3j
+bo4tu
+boven3
+1b2r2
+braat4
+b4re
+breis4
+bri4a
+bri4l
+bro4n
+2b1s2
+b3s4c
+b2sla
+bsou4
+2b1t2
+bt4s3
+1bu
+buit4j
+bus3c
+bu2su
+b1v
+2bw
+byr4
+bys4
+2b1z
+1ca
+ca4chem
+cae3
+cag4
+ca2k
+can4nes
+ca3pa
+ca2pe
+cara4t
+ca4re.
+ca3ro
+cas3t
+cat2
+ca3ta
+cate4r
+ca3th
+2c1c
+cce4s
+1ce
+cee2
+cei4
+3cel
+celi4n
+ce4lop
+4cema
+ce3na
+2ceni
+3cent
+4cepa
+ce3ra
+ce3r4o
+ce2s
+ce3s2a
+4cesp
+ce3su
+ce2tj
+2ch.
+chaar4s
+4chav
+2chc
+2che.
+4cheb
+2cheg
+2chek
+che4lee
+4chemu
+4cheor
+4chep
+3cheq
+che3ri
+4chero
+2ches
+2chev
+4chg
+4chh
+chi4k
+4chm
+4chn
+cho3s
+2chp
+3chris
+2cht
+3chum
+2chw
+3ci
+ci4al.
+cier4s
+ci1eu
+ci4le.
+ci4nen
+ci1p
+ci4so
+ci3t4
+c3j
+2c2k
+cka4
+ck1en
+ck3ers
+ck3l
+ck3n
+cks4
+1c2l
+cle4v
+c4li
+cli4q
+clo4ne.
+clo4se.
+cly4
+2cn
+cno4
+1co
+3co.
+3coa
+3cod
+3col
+co4le.
+colet4
+co2lu
+3com
+3con
+con3g
+con3s
+cop4
+3copa
+co4pe.
+co3pr
+coquet4
+3cor
+co3ro
+corp2
+3cos
+3cot
+3cou
+4cout
+co2v
+4c1q
+c4ques
+1c4r2
+cra4y
+2crib
+3cris
+cros4
+crui4
+2c1t
+ct3ad
+cte2n
+c2th
+cti4on.
+cti4ons
+c2tj
+ctoi4
+c2ton
+cto4rin
+ctu4re.
+1cu
+cu4ad
+cuk4
+3cul
+cur3s
+cy4th
+c3z
+1da
+3daag
+4daam
+4daanb
+d3aanw
+2d1af
+da3fr
+da2ga
+da4ged
+da4gon
+dag3op
+da4gor
+da2gr
+da2gu
+2d3akk
+dak3l
+da2k3r
+4daks
+4dalar
+4dalm
+d2ame
+3dan
+da4nas
+dan4kl
+dan4sm
+dans3p
+2d1ap
+d2ape
+3dapes
+da2ra
+2d1arb
+3dari
+dar2m
+darm3a
+das3t
+4d3aut
+da4ve.
+2d1b4
+dbou4wi
+2d1c
+2d3d2
+dde4lev
+dde2n
+dde4red
+dde4ree
+dde3s
+1de
+de1ch
+2deen
+dee4r
+dee3t
+4deff
+4deg.
+2dei
+de4klaa
+de4klag
+de4kna
+4deksa
+de4lac
+4delas
+del3dr
+4delec
+4delek
+4d3elem
+de4leng
+de4lon
+de4lov
+del4sl
+del4str
+4demai
+4demm
+d4en.
+de4nab
+den4ac
+den4du
+de4nep
+den4kof
+den4kop
+den4kr
+de2no
+den3oo
+de3rab
+de3ras
+de4rei
+de4rem
+de4rep
+de4ret
+de4rim
+de4rin.
+der3k
+der3na
+der3of
+der3on
+der4sa
+4derts
+der1u
+de2s
+de4sk
+de3sl
+des4pel
+de3sta
+des3ti
+de3sto
+de3str
+det2
+de3ta
+4deten
+de3tw
+dewin4d
+2dex
+3dex.
+2d1f2
+2d1g
+d4ge.
+d4ges.
+d3g4l
+2d1h
+d3he
+dhun4
+1di
+dia3s2
+die2f
+die4tra
+di1eu
+di2ga
+dig3aa
+2dijz
+di4ko
+2dind
+2dinf
+2dinr
+2d1ins
+4dinw
+4dinz
+di4sin
+2d1j
+2d1k
+2d3l
+dlan4de
+dli2n
+2d1m
+dmoes4
+2d3n
+1do
+2doef
+doe2l
+d4ok
+dok4r
+dolk3s
+do2mo
+dom2s
+2dont
+3donti
+dont4l
+2dop
+do4pe.
+do4pes
+3dopj
+d3o4pl
+3dopt
+2d1org
+do3ro
+dors3m
+do3sk
+2d3p2
+dpren4
+d2r2
+3dra
+4drand
+4drap
+4dras
+d4re.
+d3rec
+d3red
+d3rege
+4d3rel
+3dremp
+d3resu
+2dric
+dries4
+3d4rif
+d3rijd
+d3rijk
+3drijv
+3drin
+3dris
+d3rit
+dri2v
+4droei
+3drog
+4drok
+d3rond
+d3rood
+4droos
+d3rov
+d4roy
+4d3roz
+4drug
+drug4s
+d3ruim
+3druk
+4drus
+4ds
+ds1a
+dsa4d
+ds2al
+dsas3
+d3sch
+ds4cor
+d4sed
+d2see
+d4sek
+dse4la
+d3sen
+d4ses
+dsex2
+d2si
+dsi4ga
+d2sl
+d3slaa
+d3slac
+ds3lie
+d3slin
+ds4mee
+ds3na
+ds3no
+d3snu
+ds1o
+ds2oo
+d4spal
+d4spet
+d1spi
+d4spon
+d3spor
+ds4pre
+d1st
+d3sta
+d4staal
+d4stab
+d4staf
+d4stal
+d3ste
+d4stek
+ds3th
+d4stit
+d2su
+d3sur
+2d3t2
+1du
+du4bl
+2duil
+dui4t
+4duitg
+du1o
+dus3
+du4wee
+2d1v
+2d1w
+d2wa
+d3waar
+d3wac
+4dwarm
+4d3wat
+d3weg
+d4wei
+d3wek
+d3wer
+d3wes3
+d3wet
+1dy
+4dyo
+dy2s3
+2d1z
+d2zj
+e1a
+e3aa
+e3ac
+e4ade.
+e4ades
+ea2di
+ea4dor
+ea2gu
+e3ai
+ea2k
+e2akd
+e4ake
+e4ako
+eals4
+e2am
+e3amb
+e3and
+e3ant
+e4anu
+ea2ri
+ea2s
+e4at.
+e2ath
+e4atm
+eatri4
+eatu4
+eau4n
+eau3s4t
+e1b
+ebo4k
+e3br
+e3cha
+e1che
+e1chi
+e3cho
+ec3le
+3econo
+ecor2
+ec4tin
+e1d
+4ed.
+e3dam
+ed3ijz
+e2dov
+e3dru
+edsel3
+ed1sp
+ed2w
+e3dwan
+e2e
+ee2da
+ee2f
+eef3l
+ee4gli
+ee2gr
+ee2k
+eek1e
+eek3n
+ee3ko
+ee3kri
+eek3ur
+eek3uu
+ee2l
+ee3led
+ee3li
+eel3k
+eel4si
+2eem
+ee2n1
+eeng4
+een3k
+een3sl
+eep3ac
+eer1a
+ee2ri
+eer3in
+eer3k
+eer3om
+eer4ov
+ee2s
+ee3sc
+ees4ch
+ee4sem
+ees3li
+ee3smu
+ee3spr
+ees3te
+ee2t
+eet3h
+eet3oo
+eetra4
+ee4tw
+e4fad
+ef3da
+3effec
+3effek
+ef4fle
+e1fl
+e4fom
+e1f2r
+ef3sm
+e1g
+egas4k
+e4gec
+ege4las
+ege4lov
+e4gos
+eg3s4
+e1h
+eid4sp
+ei1e
+eie3s
+e1ij
+eil3d
+eil3m
+ei2lo
+e2in
+ei4nap
+ein4do
+ein4dr
+ein4du
+ei4ned
+ei4re.
+ei2s3a
+eis4lo
+eis4p
+eis4ta
+eis4tel
+eit2
+ei1tj
+ei4too
+eit4s
+eit3z
+e3j2
+e3kaa
+e3kam
+e3kas
+2eke
+ek4er
+ek2et
+e4kez
+ek3ins
+e4klast
+e3kled
+ek3les
+e4koli
+ek3ov
+ek4ru
+ek1sa
+3eksam
+3eksem
+eks1p
+e1kw
+e1la
+el1ac
+el1af
+el3arb
+e4las.
+el2dr
+e2lel
+e3len
+e3lep
+e4lert
+e4leta
+e3lev
+el4faa
+el4fend
+3elfta
+el3gl
+e3lig
+e4lind
+e4linga
+eli4p
+3elix
+elk3s4
+e1lo
+e2lob
+e3lok
+e2lol
+el3oli
+e4lom
+el3ops
+e2lor
+el4sj
+els2u
+e1lu
+e1m
+emes3
+em3ins
+e4mir
+en1ac
+e2nak
+en3akk
+e2nal
+en3ana
+e2nap
+en3app
+e2nas
+en3asi
+ena4sp
+e2nav
+e2naz
+en4ce.
+en3dar
+ende4ra
+en4dur
+e2nec
+en3ech
+en3eil
+ene4n3
+e4nent
+e3ner
+e4nerf
+3energ
+e4nerv
+e3nes
+e4nete
+e2nex
+en3ga
+enge3s
+engs4
+e4nid
+enier4t
+e4nink
+e3nis
+4enkl
+en4kre
+e2non
+enoot3
+en1op
+eno4pl
+e2nor
+e3nor.
+en3ord
+en1ov
+en2sl
+en2sn
+en2so
+ens3on
+en4stin
+ent2h
+en4trol
+ent4sl
+ent4sp
+en1ui
+e2nun
+en3ur
+e2nuu
+e1o
+eoga4
+e3on
+eonti4n
+e3op
+eop4l
+eop4r
+e4or4ge
+eo1ro
+eo3s4
+eota4
+e1p
+ep2a
+e4paf
+ep4ap
+e4peen
+3epid
+ep3j
+e4poge
+ep2s
+eps3pr
+ep4tr
+e1q
+e3ra.
+e3raad
+e4raap.
+er1ac
+er3afd
+e1rai
+er3aks
+e4rall
+e3ranc
+e3rape
+e1rat
+e2rav
+erd2a
+erd4i
+er3do
+er3d4w
+e3rec
+er3eff
+e4reig
+er3eks
+erel2
+ere4neg
+ere4se.
+ere4tj
+e4rets
+er3gl
+e1ri
+erie3s
+erie3t
+e3rif
+e3rig
+e3rij.
+e3rije
+e4rijs
+e4rijz
+e4r3ind
+er3ins
+e4r3int
+erip4
+e3ris
+e3riz
+er3ma
+er3mo
+e3ro.
+e1rob
+e4roc
+e1rod
+e1roe
+e4roed
+e3rok
+e1rol
+er3oli
+e3roma
+er3omk
+er1on
+e3ron.
+er3oog
+er3oor
+e2r1op
+ero4pi
+e4r1or
+e1ros
+e3rot
+er1ov
+er3oxy
+ert4h
+er3tr
+e1ru
+e3ruim
+eruit4j
+eru2m
+e2r3ur
+er3uu
+4es.
+e3san
+e3sas
+e3sch
+e3sem
+e3shop
+es3ill
+e3sjo
+3eskad
+e1s2m
+e1sn
+e1so
+e3sol
+e1sp
+es3pek
+e4spen
+es4poo
+e3stad
+es4tak
+e4s3te.
+e3s4tem
+es3ten
+es3ter
+es4teu
+e2sti
+es3tig
+es3tin
+e3stof
+e1stu
+e3sy
+e1ta
+e3tali
+et4ana
+eta4p
+e4tau
+e3te
+etek4k
+ete3ra
+e1th
+et2ha
+et3ham
+etien4
+e3til
+e3ting
+e1tj
+et2jo
+e1to
+e3ton
+e1tr
+et3rui
+et3sap
+et4sla
+et4sli
+et2sp
+ets3pr
+et4stek
+et3s4u
+e1tu
+et2w
+e3twi
+4eu.
+eu4ce
+eu3e
+eug4dr
+eug4r
+2eui
+e1uit
+eu4ler
+e3um.
+eu4na
+eun3s
+eun3t
+eu4rad
+eu4rat
+eu4rij
+eus3t
+eut2h
+2eu2w1
+e1v
+eval4s
+even4st
+eve3ri
+evol4ga
+e1w
+ew2h
+e3wi
+1exam
+1exem
+4exi
+1exp
+3extr
+ey2n
+eys4
+e1z
+4ez.
+ezen4s
+ezin4s
+1fa
+f3aar
+f4ab
+face4
+2f1ach
+fa4den
+f4ag
+fa2ke
+fal4to
+4fana
+fant4
+fa4re.
+3fase
+f2av
+2f1b
+f1c
+2fd
+f2da
+f4dele
+fde4s3
+fdes4m
+f4dh
+f2din
+f3doe
+f1dr
+fd4ra
+fd4ru
+fd2w
+1fe
+fe2a
+fede1
+fee4l
+f3een
+3fees
+fe4lov
+3fem
+fen3t
+fe3rab
+fe3ran
+fe4ret
+fes3
+fes4p
+fe4tj
+feur4
+2fex
+2f1f2
+ff3s4
+f3fu
+4f3g2
+fge1
+fgo4v
+4f1h
+1fi
+fi3ch
+3fie
+fie3tj
+2f1ijz
+fi4le.
+film3a
+fi4nel
+fi4no
+4fint
+fisto3
+f1j
+2f1k
+f2l4
+f3laf
+fle2t
+4flie
+4f3lij
+f4lip
+f4lor
+f4lot
+f3loz
+2f3m
+fma4d
+f1n
+1fo
+2foef
+2f3of
+f3oms
+fon3te
+f3oog
+2f1o2p
+2f3org
+3form
+for4tj
+fo1ru
+2f3oud
+foy4
+2f3p
+fr2
+1fra
+fra4m
+f2ras
+f2raz
+f3reg
+fre4t
+f4rez
+f2ri
+f3rij
+fri4te
+f2rod
+4frol
+fru3g
+2f1s
+f2sa
+f3sch
+f3sel
+f4sh
+fsho4
+f3s2j
+f4slap
+f4sled
+fs2m
+f2s1o
+f3ste
+fste4m
+f3s4ti
+f3stof
+f3stu
+2f1t
+f4tene
+f2th
+f2tj
+ft3je
+ftwa4
+1fu
+f2un
+2fuu
+f3uur
+2f1v
+2f1w
+1fy
+4f1z
+1ga
+gaar3t
+4gabc
+gaby4
+2g1ac
+4gaft
+4gafw
+4gah
+gal2a
+ga4mes
+gamo4
+gan3d
+gan4st
+gapo4
+4g3arb
+g3arm
+g3arti
+ga2s
+ga4se
+gas3p
+gas3tr
+2gaut
+4gavo
+gazi2
+2g1b
+2g1c
+2g1d
+g3de
+g4dell
+g4dim
+g3doe
+gd2s
+1ge
+ge3a
+ge4ari
+4geb.
+2g3ebb
+2gebd
+4gebt
+ge1c
+gedan4
+gee4
+ge3ei
+g3eend
+gee2r
+gef4
+4geff
+gei4la
+gei4tj
+gek4l
+ge3k4w
+gel4da
+gel4du
+gel3f
+gel3sa
+gel3sn
+4gemb
+4gemf
+4gemp
+ge4ned
+gen3k
+ge4noc
+ge4nof
+ge4nog
+gens4f
+gen4su
+gen4tr
+ge1ra
+ger4dr
+ge4reng
+ge1r2o
+ger4sp
+4gerts
+ge3ru
+ge1s2
+ge3s4a
+ge3sc
+ge3sh
+ge3sj
+4ges4k
+ge3s4m
+ge3so
+ges4p
+ge3spl
+ges4te
+ge3ta
+get4i
+get4j
+ge3t4w
+3gev
+2g1f2
+4g3g4
+gge4nol
+2g1h
+g2het
+g2hum
+1gi
+gier4s
+gi1eu
+gi2f
+2gij
+gi4mes
+gi4nes
+2ginf
+2g1j
+2g1k
+2gl
+g3la2m
+3gla4s
+3glaz
+g2le
+g3leg
+g3lei
+g3ler
+3glik
+g2lim
+gli4n
+3glob
+3glom
+4g3lon
+g1loo
+g1lop
+3g2ly
+2g1m
+2g1n
+g3na
+gneet3
+g4ners
+gne4tj
+g2no
+g3non
+1go
+go2a
+2goc
+g1och
+godon4
+god4s
+2goef
+goes3
+4goh
+go2k3
+go2ma
+go4mel
+4g3ong
+4gont
+2g3oor
+2gop
+gop4la
+4gore
+4gorg
+gor4s
+go3tr
+gou4dee
+gouil4
+2gov
+2g1p
+1g2r2
+g3rak
+gra2m
+g4ra2s
+gra4ves
+2g3red
+gree4
+2grei
+g3reis
+4grem
+gren4s
+gre4s
+g3rijk
+gri4mes
+2griv
+4grok
+g3roke
+4grou
+g3ruim
+g3ruk
+2gs
+gs1a
+gsas3
+g2sc
+g3sch
+g4sco
+g4scr
+g2se
+gs1ef
+gs3eig
+gs3eis
+gs3ek
+g3sel
+gs3f
+g2s1i
+gs4ke.
+gs4ken.
+gs4kes
+g2sl
+gs4lep
+gs3lie
+g3slu
+g4sma
+gs4maak
+g3snoe
+g2s1o
+gs3p
+gs4pel
+gs4pet
+gs4pi
+g3spie
+g3stam
+g1ste
+g3s4te.
+gs3teh
+g3stel
+g4stelg
+gs3th
+g3stig
+g3stu
+g2su
+gs1ui
+gs3uu
+g3sy
+2g1t
+g4tap
+gtui4gi
+1gu
+gu4al
+gu2at
+gu2e
+2gue.
+3guer
+guet4
+guim4
+gui4ne.
+2g3uit
+gun3
+gus3
+2g1v
+2g1w
+3gy
+2g1z
+h2a
+haar3t
+haf4tu
+ha4kr
+hal2f3
+2hamp
+han3ga
+hang3s
+han4sl
+hap4se
+har4t3a
+har4th
+hart3j
+har4to
+has3
+ha4tek
+ha2t3r
+4h1b
+4hc
+2hd
+h4e
+4he.
+he2ad
+3hech
+heel3o
+he4fe
+hei4t
+he4kan
+he2kw
+he4lan
+hele4n
+hel4m3a
+he4lov
+hel4pa
+hel4pr
+3hemd
+hemme4
+hen4kr
+2heo
+he4pij
+he2pl
+he2p3r
+he2q
+he1ra
+her3ad
+he3ral
+he3rau
+her3c
+he3rem
+he2ri
+her4paa
+her4pr
+her3s
+he3sa
+he2sp
+hes3t
+hete1
+4hew
+4hf
+h3h
+4hi.
+hie4dr
+hie4f
+hie2r1
+hie4to
+hie4tr
+hilip4
+hi4ma
+him4pl
+him4pr
+hin4tj
+2hir2
+hi4re
+4h1j
+2hl
+h2le
+2h2m
+h3ma
+h3me
+h4mer
+4h1n
+h2na
+h2nit
+2hoc
+hoe4ker
+hoe4sl
+ho2fa
+ho4fe
+hog4
+ho2k
+ho4le.
+ho4me.
+ho4mec
+ho4mes
+hon3dr
+hon3ga
+honig3
+hon4se
+hoo4
+ho4pl
+ho4po
+hop4sm
+hop4str
+ho2q
+ho1ro
+hor4se.
+hor4tj
+4ho3ru
+hou4se
+2how
+4h1p
+hpi4
+2h4r
+hra4b
+hri2
+hro4b
+hro4k
+4h1s
+2ht
+h4t1a
+ht3au
+h4t3ec
+h4ted
+h2tef
+h4teks
+h4temb
+h4ten3t
+hter1
+hte4rin
+hte4ro
+h4tesk
+h2t3ev
+h2tex
+ht1h
+ht1j
+ht1o
+h1ton
+h4t3r
+ht2s
+ht4ser
+hts1o
+ht4som
+hts3pl
+ht3sta
+ht4stek
+ht4sten
+ht3u
+hu2ba
+hug2
+huid3a
+huim3a
+hul4der
+hulp3a
+hu4me.
+2hus
+hu4te.
+hu4tes
+huw4do
+4h3v
+2hw
+h2wei
+4hy.
+3hyp
+hype2
+h3z
+i1a
+i4aalt
+i3ac
+i3ae
+iaf2
+ia3g
+i3ak
+iak4l
+i2als
+ian4n
+i4ans
+ias4me.
+i3au
+iave4
+i1b
+i2bac
+ibu3e
+ica4p
+i3cen
+i1cha
+i1che
+i3chi
+i1cho
+4ici
+id3ach
+id3ame
+i3dat
+id4e
+ider4sp
+ider4st
+id2g
+id3ru
+id2s1
+id4si
+ids3l
+ids3o
+ids3p
+id4stem
+iduw4
+id3w
+ie3a
+ie4dac
+i1ee2
+ie2fl
+ie2f3r
+ie4gal
+ie4gas
+ie4gu
+iekes4
+ie2kl
+ie2kn
+ie4kond
+ie4kre
+ieks3p
+iek3t
+ie4kuu
+ie4laa
+ie4las
+ie3le
+ielf4
+iel4le
+ie4mov
+i4enc
+ie4nij
+ien4sta
+ien4str
+ien4stu
+ie4plo
+ie4pui
+ie3rad
+ie3rap
+ie4rat
+ierk4
+ie3roo
+ier4re.
+ier4sl
+ies4e
+ie2sl
+ies3li
+ies3m
+ie2sn
+ie2so
+ie2sp
+ie3sta
+ie4ste
+ie4taa
+ie4tap
+ie4tho
+ie2tj
+ie4tog
+ie4trot
+ieuw4a
+2if
+if4tang
+if4tr
+if4tui
+i4gav
+i4gins
+igit4
+ig3n
+ig4ner.
+igs4
+ig3sc
+ig3sto
+i1h
+i3i
+i4j
+2ij.
+ij1a
+2ij1e
+ije2n3
+ij1i
+ij3o
+2ijt
+4ik
+i4kak
+ikes4
+i2kij
+i2kn
+ik3na
+ik3ni
+ik3re
+ik1sp
+ik1st
+ik3we
+2il
+i1la
+il3ac
+i3lak
+il2da
+il4din
+il2dr
+ild3ri
+ilds4
+i3len
+ile4t
+ile3u
+i2l3ez
+i4link
+illa3s
+il2ma
+i1lo
+i3lof
+il3oor
+il3or
+il4sti
+il2th
+i3lu
+ima4ges
+i2me.
+i2med
+i4met.
+imma4g
+imme4la
+imon4
+im3op
+imo4r
+im4sm
+imte3
+in1ac
+in4as
+in4dene
+3indru
+1indu
+1inf
+in4gaa
+in4gag
+in4gal
+in2go
+in2gr
+ing3ru
+ing4s3e
+3inhou
+in2kn
+ink3na
+3inkom
+inos4t
+1inri
+in4sa
+3insta
+inta4
+in4tap
+int4r
+3invlo
+i3o
+io1a
+iog4
+io4nin
+ion4s3
+io3pr
+io1s4
+io3sko
+iot4r
+i1pa
+ip3ac
+i4perw
+ipe4tj
+ip3j
+i1pl
+i3pot
+i4ps
+ipsi4
+ip4sle
+ipu4r
+i1q
+4ir
+i3ra
+iraat4
+ir2e
+i4red
+ires4
+iret4
+i1ri
+i1ro
+ir2s
+ir3ste
+i1ru
+i1sa
+i4saa
+i2sad
+i4sak
+i4s3ap
+is1ar
+i2sas
+i4sau
+i2sc
+isci4n
+i2s3ei
+i4serv
+ise4tj
+i3sfe
+isi4ne
+i3sji
+is4koo
+i2s3l
+is4laa
+is4lui
+is3n
+is3p
+is3t
+istal3
+is4th
+isti4n
+is4tra
+is4tre
+is4ty
+2it
+i1ta
+it1ac
+it3ach
+i3tan
+i3ter
+i4thou
+i3thy
+i3t2i
+i1to
+it1ri
+it3ru
+its3ei
+it3smi
+its3u
+i1tu
+it3w
+4i1u2
+ium1
+i1v
+iver4a
+ive3re
+ive3ri
+ive3s
+i1w
+i1z
+i4zl
+2jaf
+jager4s
+ja4ke
+j4am
+ja4me
+ja4ne.
+jani4
+ja4no
+jan4sl
+3jar
+jas3p
+jaz2
+jbe4li
+j1c
+4j1d
+j4daa
+jde4ne
+jden4s
+jde3s
+j4dog
+j2dr
+jd3re
+jd3ri
+j4du
+je2a
+jean4n
+2j1ee4
+2jei
+jek4tr
+j1en
+je3r4o4
+je4s3
+je2t
+je3to
+jet3r
+jet3u
+j2f1a
+j4fec
+j2f3ei
+j2f1en
+j2fij
+j4fin
+jf3l
+jf4la
+jf2s
+jfs3ec
+jf3str
+jft4
+j1g
+j4gre
+jg4st
+4j1h
+2ji
+3jic
+jin3
+2jk
+j2kaa
+j4kag
+j4kar
+j4kas
+j4kek
+j4kerv
+j2kij
+j2kl
+j3kle
+jk3li
+jk3lu
+j2kn
+j4kof
+j4kol
+j4kon
+j2kor
+j2kr
+jk3re
+jk3ru
+jks3a
+jk2si
+jk2sl
+jks3n
+jk3soo
+jk3th
+j2kui
+jk3waa
+jk3we
+jk3wi
+j1la
+jlijs4
+jl3k
+j1lo
+j2loe
+2jm
+jm3af
+j3mi
+j2n1a
+j4nerw
+jne3s
+j4net
+j4nex
+jn3g
+j4nim
+j4nink
+j2n1o
+jn4sce
+jn2si
+jn2sl
+jn2sp
+jo4a
+job2
+jo4ke.
+jol4e
+3jon
+jone4
+jo4nes
+j4ou
+jou4l
+3jour
+joy4
+j1p
+jp3ac
+jpe3s
+jp3j
+j2pli
+j4pre
+j4pri
+4j1r
+4js
+js4e
+j3sel
+j2s1i
+j2sl
+js3li
+j3slu
+j4so
+j1sp
+j2spo
+j1sta
+j3stel
+js3ten
+j4s3ter
+j1str
+j4stran
+j1stu
+j2su
+2j1t
+j4taar
+j2th
+j3the
+j4top
+j2tr
+jt3ra
+jt4rad
+j3tre
+j3trok
+ju4a
+juit4
+ju2le
+jumel4
+jus3
+justi4n
+j1v
+jve4n
+jve3ri
+jver4sp
+j1w
+j1z
+jze4ro
+1ka
+2k1ac
+3kache
+4kaf.
+4kafs
+4kah
+4kaks
+4kalb
+kalf4s
+kal4k3a
+kal4kl
+4kalt
+2kamb
+kam4pr
+4kang
+ka3n4o
+kan4sl
+kan4t3j
+kant3r
+ka3pa
+ka4pl
+kap3la
+4kappa
+kap3s
+2karm
+k3arti
+ka4s
+ka4tan
+kat3j
+ka4tog
+ka4too
+ka4tui
+2k3aut
+2kavo
+2k1b
+kbe2k
+kbek3w
+2k1c
+2k1d
+1ke
+k4ed
+keel3
+2keen
+kee4pl
+keer4s
+keis4
+ke4nad
+ke4nau
+ke4nep
+keni2
+ke2no
+k2ens
+ken3t
+ke3rad
+ker4kn
+ker4ko
+ker4kr
+ker4ku
+ker4kw
+ker4n3a
+4kers4ek4
+4kerts
+4kerwt
+k4es
+ke3sta
+ke4s3tr
+ke4th
+ke2t3j
+4ketu
+ke4tw
+k4eu
+2kex
+k1ey
+key3s
+k3ezel
+2k1f2
+2k3g
+2k1h
+1ki
+4kied
+kies4t
+2k1ijz
+4kindu
+2kinr
+2kins
+3kins.
+ki2p
+kip3l
+3kis
+kis4p
+kis4to
+2k1j
+2k1k
+kker4s
+kke3s4
+1k2l4
+3klac
+4kladi
+4kland
+3klank
+kla2p1
+2klat
+4kleer
+4kleg
+k3len
+4klera
+3kle4u
+2k3lic
+k3lied
+2klij
+kli4me
+k4lon
+3klont
+k3lope
+2k3loz
+2k3luc
+4kluih
+2k1m
+1k2n4
+4knad
+2knam
+3knec
+knip1
+2kniv
+2knum
+1ko
+4koct
+2koef
+koe4ket
+4kokt
+kole4n3
+4kolm
+3kom
+kon3s
+4kontw
+2k3oog
+4kopb
+ko4pl
+kop4ri
+3kopt
+2k1org
+kor4ta
+kort3o
+4kos.
+ko4so
+4koss
+4kov
+2k3p2
+kpren4
+1k2r
+kra2b
+k3rad
+3kran
+3krat
+2k3rec
+kret4
+2k3ric
+k3rijk
+krij4t
+2krip
+4krol.
+4kroll
+kro3s
+2krou
+kru4l
+2ks
+k4sad
+ks1ar
+k2sav
+k2see
+ksem3a
+k2s1in
+ks3j
+k3slac
+k2s3li
+ks4mak
+ks4mee
+ks3na
+k1spe
+k1sta
+k4staf
+k4star
+k1ste
+k4sted
+k4stele
+k3sten
+ks4ti
+k1sto
+k2sui
+2k1t
+kte2n3
+k2t1h
+k2tin
+k4tj
+ktoet4
+kt3ond
+kt2s
+kt3sc
+kt3se
+1ku
+ku3che
+kui4f
+2k3uit
+kuk4
+3kun
+2kuse
+kus4tr
+4kuus
+2k1v
+k2w
+k3waar
+2k3wac
+k3wag
+3kwak
+k4wal
+1kwam
+3kwar
+4k3weg
+k3wei
+2k3wer
+k4wes3
+1kwid
+4kwijd
+k3wijz
+k4wik
+2kwil
+4kwim
+2kwin
+2k3wo
+4ky.
+2k1z
+4laand
+laap3
+4laard
+laar3t
+3labo
+2lac
+3lach.
+lacht4s
+l4aci
+3lact
+la2d3a
+2ladj
+la4dok
+la2dr
+lad3s4
+la4du
+2laf
+la2fa
+lafo4
+la2ga
+lag3aa
+la2g3o
+la2gr
+la3gra
+lag3s4
+lai4d
+lai4n
+la2k3a
+la4ki
+2lal
+l3alb
+la4mac
+la4mov
+lam4p3j
+lam4p3l
+lam4pol
+4lana
+3land
+lan4da
+lan4do
+lan4d3r
+la4nek
+lan4em
+lang3l
+lan4ka
+lan4k3l
+lan4sl
+lan4t3j
+3lapj
+la4p3l
+la4p3o
+4lappa
+la2p3r
+2larb
+las3
+la4tam
+la2th
+lat3j
+la4tro
+lat3s
+la4tui
+2lau
+lau4de.
+lau4m
+la4vat
+2lavo
+la2wr
+la4ze.
+4lazi
+2l1b
+4l1c
+2l1d
+l2d3ac
+ldak4s
+l4dart
+ld3een
+ld3ei
+l3d4en
+l4dh
+l2dom
+l2don
+l4dos
+l2d3ov
+lds4a
+ld3sl
+ld1sp
+ld3w
+1le
+le2a
+lea2d
+lea4s
+le3at
+3leb
+ledes4
+lee2
+leeg3
+4leekh
+lee4p3
+lee4s3
+2leeu
+2leff
+4leier
+4leig
+lei4na
+le4kw
+l3elem
+l2en
+l4en.
+le4nad
+3leng
+3leni
+len3k
+len4tr
+leper4
+le1ro
+le2s
+les2k
+le3sko
+4lesm
+le4sp
+le3str
+le2tr
+let4sta
+4letu
+4levil4
+4lexc
+2lexp
+3ley
+4lf
+l2f1ac
+l2fin
+lf3li
+lf4lo
+l2fo
+l3foe
+l3fou
+lf4ree
+lf4sei
+lfs3m
+lf4spo
+l1g
+l4gaf
+l4gap
+l3gla
+l4gon
+lg1s
+l1h
+1li
+li4ce.
+4lick
+3lid
+lie4ga
+lie4gr
+li3enn
+lies4t
+lieu3
+3liev
+3ligg
+lij4ko
+lij4ma
+3lijn
+4lijp
+3lijs
+lij4st
+2l1ijz
+li4ke.
+li2ko
+lilia4
+lil4le.
+4limp
+lim4pj
+2linf
+4linh
+lin4ka
+3linn
+4linr
+2lins
+lin4t3j
+4linv
+4lipj
+li4pl
+lis4e
+4litary
+li1th
+li4ve.
+l1j4
+l4kaf
+l4kei
+l4kep
+l4klag
+l4klev
+l2kri
+lk3rij
+lk2s
+l4kuu
+lk3wi
+4l1l
+l3la
+llas4
+lle3st
+llinai4
+lls4
+2l1m
+lm3act
+l4med
+l4mind
+lms2
+lm3sc
+lmta4
+4l1n
+lni2
+3lobd
+lo4bo
+loe4d3a
+loe4d3r
+loem3a
+4loes
+lofd2
+3lofi
+lof3r
+lof4s
+4logig
+lo3go
+lo4gre
+log4s3
+loi4r
+3loka
+lo4kar
+lo2kl
+lo2kr
+lo2k3u
+lomp3j
+l3omv
+lon4gaa
+lon4go
+lon4gr
+lon4t3j
+3loopb
+4loord
+4loort
+3loper
+4loph
+4lopn
+lop4r
+2lops
+2lopt
+4lopw
+l4or.
+l1org
+lo1ro
+lo4sp
+los1t
+lo4str
+lo2ta
+lot3ak
+lo2th
+lot3j
+lou2p
+lo4ve.
+lo4wed
+1loz
+2l1p
+l4pac
+lpe4ni
+lpes4
+lp2h
+lp3j
+lp3ond
+l4ques
+2l3r
+2ls
+l3sam
+ls4cr
+l4sed
+l2sef
+l4sele
+l4sep
+ls2j
+ls3ja
+ls4kel
+l3sla
+l2sle
+l2sli
+ls3lie
+ls4mee
+l3som
+l1sp
+l2spr
+l1st
+l4stal
+l4steko
+l4stele
+l4stev
+l4stou
+l2su
+2l1t
+ltai4
+lt2h
+l4thi
+l2t3ho
+l3tj
+l4tjesk
+l2tov
+lu4bl
+lu1e
+3lui.
+3luid
+4luit
+lu2ka
+luk2s
+3lumb
+4luni
+lu1th
+l1v
+lva3no
+lve3ri
+l1w
+1ly
+l1z
+1ma
+3maalt
+3m4aat
+mac3k
+ma4cl
+ma3de
+2m3adv
+2maf
+ma4geb
+ma4gev
+mai4li
+ma4ke.
+4makt
+ma3la
+ma4lent
+man3ac
+m3anal
+man3c
+3mans
+man4see
+man4sl
+man4sn
+man4so
+mans3p
+man4st
+4mape
+map4l
+mas4p
+mat3j
+m2av
+mazi4
+2m1b
+mbi4ne.
+mbi4nes
+mbo4le.
+2m1c
+2m1d
+md2s
+md3so
+m3dw
+1me
+3me1c
+3medi
+mee3kr
+mee3le
+mee3lo
+mee3lu
+mee3ri
+3mees
+mee3sl
+mee3sp
+mee3tr
+me2i
+mein4a
+4melam
+mel4ko
+mel4ku
+3m2en
+men4ag
+men4gra
+meng3s
+me4noo
+men4suu
+men4tj
+mep4j
+me1ra
+me4raak
+me4rak
+me4ram
+merg4s
+mer4kn
+mer4kw
+mer3n
+mer4on
+3me2s
+mes4ha4
+me3spo
+met4aa
+3me3th
+3meto
+metrai4
+m4eu
+meus4
+2m1f
+mfi3t
+2m3g
+2m1h
+1mi
+mi1ch
+miche4
+mick4
+2mid.
+3midd
+mijl4s
+4mijs
+3mil
+mi4le.
+mi4men
+2minf
+2minr
+2mins
+3mis
+mis4la
+mi3sog
+mis4ses
+mis4to
+3mit
+mi1tr
+2m1j
+2m3k2
+2m3l
+2m1m2
+2m1n
+1mo
+3mod
+mode4l
+3moed
+moed4s
+2moef
+3moei
+moe4raa
+moe2s
+moet4s
+3mo3g
+3mole
+mol4ma
+4molt
+4momv
+mon4a
+monet4
+mo3no
+mon4so
+m3onts
+3mooi
+2mop
+m3ope
+m3oplo
+mop4sn
+moquet4
+5mora
+mor4e
+mo3ro
+mor4sp
+mos4c
+mo4sl
+mo3sta
+mot4h
+4moud
+mo4ve.
+mo4ver.
+mo4vers
+2m1p
+mp3ach
+m4paf
+m4pes
+m3pj
+mpon4g
+m4ps
+mp4se4
+2m3r
+4m1s
+m2sa
+m3sau
+ms2j
+m3sje
+m4sle
+m3s2m
+m2so
+m3son
+m3spl
+ms4ti
+m4ston
+m4stop
+mtes2
+1mu
+mu2m3
+3mut
+2m1v
+2m1w
+3my
+my3o
+2m1z
+1na
+3na.
+3naal
+3n2aam
+2n1aan3
+4naap
+4naard
+3naars
+naar3t
+n3aas.
+3nabe
+2nac
+n4acu
+nadet4
+3nadi
+4n3adm
+2n1af
+naf4l
+n2a1g4
+3nagel
+n3agem
+na3gl
+na3gr
+3nai
+na1ij
+4naker
+na3k4l
+3nale
+4n3alf
+3nali
+3n2am
+n2an
+nan4e
+nanes4
+3nant
+nan4tj
+4nara
+na4rap
+2n1arb
+2narg
+2n1arm
+4nars
+2n1art
+na3sc
+na3s4l
+nas4m
+na1sp
+na3stu
+n3asy
+3n4at.
+3nata
+nat4h
+n4ati
+2natl
+nat4r
+2n1b
+2n1c
+n4cheo
+nci4n
+2n1d
+n4daas
+n4dabo
+n2dac
+n2dar
+nd3art
+n4daz
+n4degg
+nd1ei
+n4derec
+n4dh
+n4dijs.
+nd3ijz
+ndi4se
+n4dof
+n4doli
+nd3ont
+n4doog
+n2dov
+nd3ove
+nd3rap
+n2dre
+nd3rei
+nds4ben
+nd3si
+nd1sp
+nd4spra
+n2duu
+nd3uur
+nd3w
+1ne
+nebe4s
+2need
+3nee4m
+2n1een
+neer3s
+nees3
+2n3eff
+3ne3g2
+nege4n
+nehen4
+2nei
+3neig
+neil4
+n1ein
+n3elem
+neli4n
+3n2em
+4nemm
+4nemp
+ne2n
+n4en.
+n4end.
+nen3g
+4nenke
+nen3o
+ne4pli
+ne1ra
+n2ere
+n4erg
+ne4rid
+ner4sp
+4nerts
+4neru
+4nesm
+ne3sta
+4nesth
+ne3str
+ne4ton
+ne4tru
+4netu
+3neuz
+2n3f2
+2ng
+n2g3ad
+n4gak
+n2gam
+n4gank
+n2gar
+n4geen
+n4gensm
+nge4rap
+nge4ras
+ng4hi
+ng3ij
+n4ginr
+n4g3ins
+ng3lad
+ng2li
+n3glic
+n3glu
+ng3n
+n2g1on
+ng3rai
+n3gro
+ng2s
+ng4sche
+ng4s3le
+ngu4a
+4n3h
+nhands4
+nhom4
+1n2i
+ni4ce.
+ni3eus
+ni3euz
+3nig
+nij4st
+2nijz
+n3ijze
+nik4s
+3nim
+2nin.
+4n3ind
+2n3inf
+4ninga
+nin2k3
+2n3ins
+2n3int
+4ninv
+ni4pl
+ni4sel
+ni3str
+ni3th
+ni1tr
+nits4
+3niv
+n1j2
+2n1k
+nk3aan
+n4kag
+n4karb
+n4kasp
+nk2ey
+n4knaa
+n4kog
+nk4om
+nkoo4
+nk3ov
+n3kra
+nk3rek
+n3kru
+nk1s
+nk4so
+n2kw
+n3kwam
+nk3wat
+nk3wi
+2n3l
+4n3m
+2n3n2
+nne4pol
+nniks3
+1no
+4nobj
+4noec
+2noef
+4noer
+noes3
+3nolo
+n2oma
+n3omg
+3nomi
+3nomm
+4noms
+4nomw
+3non.
+3nonc
+n3ond
+2n1ont
+3nood
+4noof
+2n1oog
+4n3oorl
+2nop
+no4pas
+no4poo
+no4por
+4n1org
+2nork
+3norm
+3nors
+2nort
+no3s4a
+no3sk
+no3sp
+3nota
+no4tap
+3noter
+3noti
+2nov
+3n2ova
+2n3p4
+npoor4
+n1q
+2n3r
+4n1s
+n2sa
+n3saal
+n3sal
+ns3ang
+nsas3
+ns3asp
+n3sau
+ns2c
+n3sce
+n3sch
+n4sed
+n4sef
+n4seg
+n2sev
+ns3f
+ns4fee
+n3sjo
+ns4kri
+n3slaa
+n2sle
+ns2m
+ns3mar
+n3sme
+ns3moe
+n4s3mu
+n3sne
+n3snij
+n3snoe
+n3soe
+ns3onw
+n3soor
+n4spaa
+n4spot
+ns4ta
+n4staf
+n3ste
+n4steh
+n4stenv
+ns3the
+ns4tie
+n3stig
+n4stij
+n2sui
+2n1t
+n4tarc
+ntat4
+n3teg
+n2tei
+nt3eig
+n3tel
+nte4loo
+n3tev
+n2th
+n3them
+n3thol
+nt3ink
+nt4jo
+n3to
+n4toli
+n4top
+nt3raf
+n4t3rij
+n3trou
+nt3rui
+nt3ruk
+nt3rus
+nt4sa
+nt4schr
+nt4sle
+nt3sm
+nts4ma
+nt1sn
+n3tu
+n4tuit
+ntu4re.
+ntu4res
+nt4wis
+1nu
+nu1er
+2nui
+4nuil
+3num
+2nur
+nuts4h
+n3uur
+nu2wi
+2n1v
+nvel4l
+nvil4
+2n1w
+nwa4v
+nwe4tj
+nx3a
+1n2y
+4ny4i
+4nyo
+2n1z
+o1ag
+o1al
+o1an
+oa4ti
+obal4
+1obj
+obos4
+ob3sk
+o3cha
+o1che
+ochet4
+o3chi
+o3chr
+ocke4
+4od.
+od1ac
+ode3ra
+o4dr
+od3re
+od3ri
+ods3oo
+od4sur
+od3w
+oe2da
+oed3aa
+oed3ar
+oed3ei
+oede4n
+oede3s
+oe4don
+oe2dr
+oe2d3u
+oed3w
+oe2f3a
+1oefe
+oe2fi
+oe2fl
+oef3le
+oe3flu
+oe2f3o
+oe2f3r
+oei1
+oei3s4
+oe4kaa
+oeke4n
+oe2kl
+oe4kna
+oe2k3r
+oek4sl
+oe2ku
+oe2kw
+oel2a
+oe4lap
+oel3ei
+oeleve4
+oe3li
+oe4lov
+oe4mac
+oe4mak
+oe4mo
+oe2no
+2oep
+oep3ac
+oe2pl
+oe3plo
+oep3lu
+oe2pr
+oeps1
+oep4se
+oe4pu
+oe1ra
+oe4ral
+oer4sl
+oer4so
+oer4sp
+oe3se
+oe4so
+oe4tei
+oe2t3h
+oe2tj
+oe4tol
+oet4so
+oe4tw
+of3at
+ofd1a
+ofd3ei
+of2do
+ofd3on
+of2d3r
+of4du
+ofd3w
+3offic
+of3l
+of4la
+of4le
+of4lu
+o3foo
+of2r
+of3ri
+of4sel
+of2si
+of2sl
+of2sp
+of4su
+oft2s
+of4tur
+of4tuu
+ofy3
+o1g
+og4aa
+o4gal
+oge4las
+oge4st
+1ogig
+og3le
+og3n
+og2s
+og3sc
+og3spi
+og3ste
+o1h
+2oi1
+oi4ne.
+oinet4
+ois4
+oi3sc
+oist4
+o1j
+o4kaas
+o4kaz
+ok3ef
+o4kes
+o2k3n
+o4kre
+o4k3ro
+ok3sa
+ok1st
+ok4str
+okter4s
+4ol.
+o1la
+ol3ac
+olber4
+ol3ein
+o3len
+ole4ne
+ole1u4
+ol2fa
+olf3l
+ol4gor
+ol4gre
+ol4gri
+olie3s
+ol4kaa
+ol4mes
+o1lo
+olo3k
+o2lop
+ol3sj
+o1lu
+ol3umn
+o4map
+omen4s
+o4mint
+2omm
+om4pj
+ompo4t
+3omro
+on3ac
+o4nam
+o4naz
+4onc
+2onca
+ond3ac
+4onde.
+4onden
+on4dij
+on4don
+on2dr
+ond3re
+ond3sj
+on4dur
+o2ned
+4oneerb
+o4neh
+on4end
+on4gap
+onge4tj
+ong3le
+4onin
+oni2q
+4onk
+on4klo
+on3kw
+2onn
+onne3s
+2ono
+on2sn
+on3ta
+on4taa
+ontes3
+1ont1h
+on4tre
+3ontva
+3ontw
+o4o2
+4oo.
+oo3c
+oo4d
+ood1a
+ood1e
+ood1o
+ood3r
+oofd3o
+oof4dr
+oo4g1
+oog3r
+oogs4
+oog3sp
+ook1
+ooks4m
+ook3w
+ool1
+oom1
+oo4n1
+oon4sa
+oo4p
+oop1a
+oop4sp
+oo4r1
+oor3g
+oor3i
+oor3k
+oor3sm
+oos3
+oo4t
+oot3h
+oot1o
+o1pa
+o4paar
+op3ach
+o4pad
+o4paf
+o4pak
+opa4n
+3opbre
+op3een
+3openi
+3opera
+o4perw
+op4her
+4op3j
+op3l
+1opn
+4opn.
+4opneu
+o1po
+op1of
+op3ont
+op3r
+op4ra
+ops4c
+op3sj
+op3sm
+op1so
+op3sp
+ops4t
+2opt
+3opta
+3optim
+o1q
+o1ra
+oraat4
+o3race
+o2rag
+or3ana
+or4ce.
+or4das
+or4d3oo
+or4dor
+ord3w
+o4reh
+orever4
+4org.
+or4ge.
+4orgi
+org3li
+o1ri
+3orkes
+ork4l
+orkma4
+or4mac
+o3ros
+4orp
+orp4sc
+or3sme
+or3so
+or4son
+or4tabl
+or4tak
+or4too
+or4tor
+or4tred
+ort3w
+or1u
+o3rum
+or4un
+orwe4gi
+o4sab
+o3sc
+o4sce
+o4sci
+os4co
+os2cr
+o4scu
+o3s4e
+oses4t
+oset3
+oset4t
+o4sj
+os2k
+o2s3l
+os3m
+os3no
+o1s2o
+os1p
+os3pa
+os3pi
+o4s3pr
+o3stat
+os3te
+os4tem
+os4teu
+os4th
+os3ti
+os4tij
+os3tol
+os4tr
+ost3ri
+os3tu
+os4tun
+o3sty
+o1ta
+ot1ac
+ot4ec
+ote4lan
+o4tesc
+o1th
+o2t1ho
+otli4
+o1to
+oto3a
+ot3re
+o1tro
+ot4sl
+ot4spa
+ot4sti
+ot4str
+ot4stu
+o1tu
+ou3b
+ou2d1a
+ou4des
+ou2do
+oud3r
+ou1e
+oue2t
+ou3is
+ouk4
+oun4g
+ou4rar
+ou4re.
+ou4rem
+ou4res
+ou2ro
+ou4sc
+ous4t
+4out.
+ou2ta
+out1j
+ou2t3o
+ou2t3r
+4outs
+ou1wi
+o1v
+2ovee
+3ovens
+3overg
+o4ves
+2o3vi
+ovis4t
+2ovj
+o1wa
+o4we.
+o1wi
+ow2n
+oy2en
+oy4l
+oys4
+o1z
+oze3s
+3paal
+2paan
+paar3t
+2pac
+pa3che
+3pact
+3pad.
+pa2da
+pad3ac
+pa4dr
+pag2a
+4pagg
+pa3gh
+4pake
+4palb
+3pale
+pa4nad
+pa4neu
+pa4nisl
+pan4tr
+pa4o
+1pap
+pa4pet
+pa4pl
+2papp
+3pa3ra
+pard4
+3park
+par4ka
+par4kl
+2p3arm
+1part
+3parti
+part3j
+3partn
+3pas3
+pas4ses
+4patl
+3patr
+2p3aut
+pa4vl
+2p1b
+2p1c
+2p3d2
+1pe
+pe2a4r
+3peb
+4peci
+pee4n
+2pef
+3pei
+pei4la
+4p1eis
+pe2kl
+pek3la
+pe2kn
+pe4lee
+pel3f
+pe4link
+pe4lov
+3p4en
+pe4nam
+pen4se.
+pen3sl
+pen3sm
+pen3sp
+pen3t4
+pe4nu
+4pepi
+3pe1ra
+3perc
+pe4rek
+pe4res
+3peri
+peri3s4
+3perk
+pe3ron
+3pers
+per4sc
+per4str
+pes3ti
+3peut
+4pex
+2p1f
+2p3g
+pge3s
+2p1h
+p2heu
+3p2hia
+1pi
+pi4ce.
+pi1eu
+pi4ga
+pij3k
+pij4li
+3pijn
+3pijp
+pij4pa
+pij4pl
+pij4tj
+2pijz
+pi4kl
+pi4ko
+pi4nas
+4pinj
+pin4kr
+4pinr
+2pins
+pi4ot
+3pis
+pi4sco
+pi3th
+pit3j
+pit3r
+pit4sp
+2p1j
+4pja
+p2je
+2p1k
+p2l4
+3pla
+4pla.
+4plad
+4plam
+4plang
+p4lant
+4p3lap
+1p4las
+pla4tr
+p4lec
+p3leid
+p3lep
+p4lex
+2plig
+2plij
+pli4t
+3ploe
+2p1m
+2p1n
+p4neum
+pock1
+3pod
+poe2s
+po4ki4
+po4kol
+3pol
+3pom
+4poml
+3pone
+pon4se.
+poo4
+4poog.
+4poor.
+poor4tj
+poot1
+3pop
+po4p3a
+po4pi
+po2q
+pore4n
+2p1org
+4pork
+por4tra
+3pos
+po1sa
+po4ta
+3poti
+pot1j
+4pov
+po4we
+2p1p
+ppe2n
+p2r2
+3prac
+3prakt
+p3rand
+3prang
+p3rech
+prek4s3
+3prent
+pres3c
+pre4t3j
+pre4tr
+preus4
+3prij
+3princ
+4pring
+p4rio
+p4riu
+3prob
+3p4roc
+3prod
+3prof
+3proj
+4prok
+pro4s3t
+pru4t
+2ps
+4ps.
+p3sel
+pse4la
+ps2m
+ps3ma
+p1sn
+p2sna
+p1sp
+ps4pe
+p1st
+p3ste.
+p3stem
+ps3th
+ps2u
+3p2sy
+4p1t
+p3te
+ptea4
+p2t1h
+p4tj
+pt2s
+1p2u
+pu3e
+pul4le.
+3pun
+4pun.
+punt3j
+put3j
+pu2t3r
+2p1v
+2p1w
+py1
+2p1z
+1qu2
+2que.
+4raalm
+2raan
+raap3
+3r2aar
+4r3aard
+raat1
+2rac
+r4ac.
+raccro4
+ra2ce
+rade4ra
+ra3di
+4radr
+2rafd
+ra3gn
+rag4s
+rai4d
+ra4kri
+4ralar
+4ralf
+r1alg
+4ralm
+4ralu
+4ramn
+r4amp
+2rana
+r2anc
+ran4ce
+ran4daa
+ran4ge.
+ran4ges
+ran4g3o
+ran4sl
+rans3p
+r4anti
+ran4t3j
+ran4tr
+r3antw
+ra4pas
+1rapi
+3rappo
+ra2pr
+4r3arb
+r4are
+4r1arm
+4rarr
+4r3art
+ras3l
+ra3son
+r4ati
+rat3j
+2rau
+ra4vel
+ra3yo
+2r1b
+rbonne4
+r1c
+r4chec
+r4chen
+r4chete
+r2chl
+rci2a
+2r1d
+r4dact
+r3dag
+r2d3ar
+rder4s
+rdes4s
+r2dol
+rd4re
+rd2s
+rd3sc
+rd3se
+rd3sp
+rd3str
+rd2w
+rdwa4r
+r4d3wo
+1re
+3re.
+3reac
+rea4d
+re4ade
+rea4m
+3reda
+reda4l
+3redd
+rede4s3
+ree2d1
+ree4k
+2r1een
+reen4e
+reer4ad
+4reers
+4reerw
+2reff
+4reg.
+4regd
+3regel
+rege4s
+4regg
+3regi
+re3gl
+4rego
+4regt
+4reie
+4reil
+4reind
+3reini
+rei4sc
+re4kaa
+re4kle
+re4klu
+re4kn
+rekor4
+re4kro
+4reks
+re4kuu
+reld3o
+rel4d3r
+re4lei
+relijs4
+re4lur
+reme4t
+remin4
+re2na
+re4nam
+re4nan
+r2end
+re4nep
+3renh
+4r1eni
+re2no
+ren3of
+re3n4ov
+4rentw
+4req
+4r3erf
+re3r2o
+2r3ert
+4r3erv
+2rerw
+r2es
+re1sa
+res4e
+resi3s
+res4koo
+res4kop
+re2sl
+re2sp
+res3pe
+res3pi
+res3t
+re4tem
+re4tog
+reu4ko
+2r1ex
+r4faa
+r4fag
+r4feng
+r1fl
+r4flag
+r2f3li
+r4foo
+r1fr
+r2fre
+rf4rek
+rf2s4
+rf3sc
+r4fur
+4r1g
+r4gab
+r4gart
+rge4a
+r4geen
+r4gei
+r4geng
+r4gerep
+rget4
+rg2l
+r4glu
+rg2ne
+rg1s
+rg3so
+rgs4p
+r1h
+rho4m
+ri4bl
+rici4e
+rie4kap
+rie4lei
+rien4n
+rie4to
+ri1eu
+ri4fa
+r4ig
+ri4gaa
+rig4l
+r3ijld
+3rijm
+rijs4t
+ri2kl
+ri4mer.
+ri4mers
+rim4pr
+2rinf
+r2ing
+ring3l
+ring3r
+2rinh
+rin4kl
+4rinko
+4rinkt
+rin4ne.
+2rinr
+2rins
+r3inv
+ri4oc
+r4is
+ri4sam
+ri3s4ko
+ris4tee
+rist4j
+3rivie
+rivo3l
+r1j4
+rjan4
+rjas4t
+r1k
+r4kart
+r2kei
+rke4n
+rken4s
+r4kez
+r4kink
+r2klo
+r3klok
+r2kne
+r2kob
+rk1s
+rk4slu
+rk4taa
+rk3waa
+r4kwat
+r2kwe
+r1l
+r3la
+rle4gek
+rlings4
+rlo4f3
+rluit4
+r1m
+rma3f4
+r4mart
+r3me
+r4meb
+r4meg
+rme4ra
+rmi4ne.
+2r1n
+rn4aa
+rn4am
+r4nap
+rna4sp
+r3nei
+r4nele
+r4n3ene
+rnes3
+rne4tj
+r2nex
+r4nid
+r4non
+r4noor
+r3nu
+ro1ch
+2roef
+roe4g3r
+roe4pl
+roe4rei
+roe4ta
+2roev
+ro3fl
+roges3
+4roj
+3roker
+rol4a
+2roli
+rollo4
+r2on.
+ron4da
+ron4d3o
+ronds4
+r2one
+r2oni
+ron4ka
+r2ons
+ron4tj
+ron4t3r
+roof3
+roog3
+2r1oor
+ro4pan
+rop4e
+rop4la
+rop2o
+ro4pu
+4roq
+2rorg
+ro1sk
+ro3sko
+ro1sp
+rot4h
+ro3tr
+rot4st
+r1oud
+3rout
+r1p
+rp3j
+rpool4
+rp4sto
+rquet4
+2r3r2
+rre4lu
+rre3sp
+rreur3
+rrie4t
+rru2
+2r1s
+r2sa
+r4saan
+rsail4
+r3sal
+r4s1am
+rs2cr
+r2sek
+r4selz
+r4serv
+rseve3
+rs4hal
+rs2ja
+r3sjou
+r3sjt
+rs4kat
+rs4kie
+rs4koo
+r4sloo
+rs2m
+r3smak
+rs4mit
+r4snaa
+r2sno
+r3snoe
+r4sog
+r4som.
+rs3ong
+r2sor
+rs3ord
+r4spad
+r4spar
+rs4pen
+rsper4s
+r4spot
+rss4
+r4staf
+rs3tas
+rs4te
+rs4ti
+r4stit
+r4stun
+rs4ui
+rsui4t
+2r1t
+rtai4n
+r2tar
+rt3art
+rtati4
+r4tau
+rte4na
+r4teve
+r2th
+rt3hel
+r3tho
+rt4ij
+r4tink
+rtoi4
+rto4le
+r4tom
+r2tri
+rt3rij
+r2tru
+rt3ruk
+rt4sec
+rt2sl
+rts3li
+rt4spr
+r4tui4t
+rt2wi
+3rubr
+ru1e
+ru2g
+2rui
+3ruimt
+ru2k1
+ru4li
+r2um
+2runi
+ru4pi
+r2u2s
+ru4st
+4ruu
+r1v
+rve3ri
+rv1ic
+rvil4
+rvoch4
+rvoy2
+r1w
+rwe4tj
+r4wh
+r1x
+3ryl
+ry1o
+4r1z
+rzu4e
+3sa.
+3saag
+s1aan
+4s1aar
+3sab
+2s1ac
+3sacr
+s1ad
+2s1af
+sa2fe
+3sai
+s3akko
+s1akt
+1sal
+s4ala
+s3all
+4salm
+3salo
+4salp
+s3alta
+s1amb
+s3ana
+3sanc
+3sap.
+2sar
+3sar.
+sa3ra
+s3arb
+s3arc
+3sard
+sa4re.
+3sari
+s1arm
+3s4ars
+s1art
+s3assi
+sas3t
+3s2at
+4s3atl
+4satm
+4s3att
+3saus
+s3aut
+3sauz
+s1av
+4s3b
+1sc
+2sca
+2sce
+4scel
+4scent
+s2ch
+4sch.
+3sche
+4schec
+4scheq
+3s4chi
+4schk
+3schr
+2sci
+sci4ne.
+sci4nes
+2scl
+2s2co
+s4cola
+3scoo
+3scop
+3s4core
+scorre4
+2scr
+scra4
+4scris
+2scu
+2scy
+2s1d2
+sde4a
+s3dw
+1se
+3se.
+se2a
+sear2
+sebal4
+sebe4s
+s1ech
+4secz
+2s1een
+4seev
+4sei.
+seig4
+seis4t
+3seiz
+sek4sl
+s2el
+se4lag
+4s3elem
+3selen
+4self
+sel3k
+se2lo
+3sels
+se4m3ac
+s3emm
+se4mo
+s2en
+3s4en.
+se4nem
+se4net
+sen3k
+se2no
+3sen3s
+sen4tj
+sen3tw
+3s4er
+se1ra
+4sergo
+4sern
+ser2s
+se1sa
+s3e2s3p
+sessi4
+se1st
+s3eter
+se2tr
+se4tw
+se1u4m
+seur4s
+s3even
+2sex
+s1exa
+2s1f2
+s2fe
+s3fei
+4sfi
+s2fy
+sge3st
+2s1h
+s4ha.
+sha2k
+sha4p
+sheid4
+s4hip
+3shir
+s2hop
+s4hort
+s2hot
+3show
+1si
+3sia
+si4dec
+si4dew
+sie3s
+sie3tj
+si3f
+3s4ig
+2s3ijz
+2s3ind
+2sinf
+sin3gl
+4sini
+s3inko
+4sinm
+2sinr
+2s1ins
+2s1int
+4sinv
+s3inz
+si4ons
+3si2s
+sis4t
+3sit
+2s1j2
+3sjac
+s3jas
+s3je.
+3sje4r
+s4jez
+s2jo
+3sjok
+4sjon
+2s1k
+s3k2a
+ska4te
+s3ke
+3s4ki.
+s3kl
+s3kn
+s4kopi
+skorre4
+3skrib
+3skrip
+s3k4w
+sky3
+1s2l2
+3sla.
+3slaan
+s3laar
+s3lad
+3slag
+slag3r
+3s4lak
+2s1lam
+3slape
+s3las
+2s3lat
+s4lav
+s4le.
+3sleep
+4s3leer
+2s3leg
+2s3lei
+4sleng
+3slent
+4s3ler
+s3les
+sle4tj
+3sleu
+2s3lev
+4s3lez
+2s3lic
+2slid
+4s3lied
+s3lief
+s3lig
+3slijp
+s3lini
+4slinn
+4s3lit
+slo4b
+4sloc
+3sloe
+3slof
+2s3log
+s3loos
+3s4lot
+4slou
+s4low
+2s3loz
+4s3luc
+3slui
+4slui.
+4sluid
+sluis4t
+s3lus
+4sly
+2s1m
+s3man
+s3mas
+4s3mat
+4smec
+s2med
+4s3mei
+4smelo
+4smen
+4smes
+3smeu
+3smid.
+4smidd
+smies3
+s2mij
+smoes4t
+3smok
+3smul
+s2n
+4s3nac
+2snam
+sne4k
+3snel
+2s3nes3
+s3net
+s3neus4
+4s3nie
+s4nip
+4snit
+4sniv
+s3nog
+2snum
+s3nut
+1so1c
+soci3
+1sod
+1soe
+4soef
+soeve3
+3sofa
+s1off
+s3oge
+3soi
+1s2ol
+3sold
+so4le.
+so4les
+3s2om.
+3somm
+2s3oms
+4somz
+s1ond
+2song
+3sonn
+3s4ons
+2s1on2t
+sont3e
+sont4l
+4sonv
+2s3oog
+3s4oort
+2s1op
+3s2op.
+sop2h
+s4opo
+s2opp
+so3pra
+s3opto
+3sor.
+s2orb
+3sori
+s3ork
+3sor4s
+s4ort
+sos4t
+s4ot
+sot4h
+sou3t
+2s1ov
+s2p2
+4sp.
+4spaal
+2s3pak
+s4pan
+3spann
+4s3pap
+3speci
+3s4pee
+speet3
+2spei
+3spell
+2spen
+2sper
+s4perm
+s3pes
+4spex
+1spie
+4spijn
+spi4k
+2s1p4l
+s3plei
+3splet
+spli2
+s3plic
+3splin
+3spoel
+2spol
+2spom
+s4pore
+2spos
+4sprac
+3sprek
+4spres
+3spreu
+s4prie
+4spriem
+4sprij
+4sprob
+2s3ps
+2spt
+3spui
+2spun
+s1q
+4s3r
+4s3s2
+ssa3s
+s4sce
+s4sco
+ss4e
+ssi1s
+ss4k
+s4sm
+sson4n
+sspas4
+s2t
+4st.
+4staanw
+2s4tac
+3stad.
+4stafe
+4stakk
+4stale
+4stali
+sta4lo
+3stamp
+3stand
+s4tap
+3stape
+star3o
+2stas
+4stau
+4stavo
+4stax
+s4taz
+4stb
+2stc
+2std
+4stea
+4stec
+3s4ted
+3steen
+s3teer
+4steka
+4stema
+4stemo
+4stenu
+4steo
+4sterm
+4steros
+4sterr
+4ste2s
+stes4s
+4steva
+s4tex
+s4tez
+2stf
+4stg
+2sth
+s4tha
+s3thet
+st1hi
+st1ho
+s4thu
+s4thy
+s4tich
+2stid
+s4tiel
+3stier
+3stigm
+4stijd
+3stijf
+3stijl
+st3ijs
+3stikt
+s4tilu
+3stimu
+st3ind
+4stins
+4stint
+sti4o
+3stip
+4stite
+2s4t1j
+4stk
+2stl
+st4let
+2stm
+2stn
+2stoc
+4stoef
+4stoej
+3stoel
+4stoer
+4stoes
+4stoez
+4stol.
+sto4ne.
+4s3tong
+st3oog
+sto4p
+4st3ord
+sto4re.
+4stos
+s4tov
+2stp
+4strad
+4strap
+4strav
+4strec
+s3tref
+4streg
+4strei
+s4trek
+3strel
+s4trem
+4stroe
+s4trol.
+s4troll
+4stroos
+4stroz
+1stru
+s4trui
+2stt
+2stub
+3stud
+2stv
+2s4t3w
+2sty
+2stz
+1su
+su2b1
+sub3r
+3suik
+s1uit
+3suk
+2s1un
+s4us
+3sus.
+4s3v
+svoge4
+4s1w
+1s4y
+3syn
+sy4nan
+sy4ne
+3sys
+4s1z
+taal1
+t3aanv
+4taap
+4taas
+2tac
+t3acad
+t1ach
+t4aci
+t2act
+3tacu
+4tad
+t1ade
+tad2s
+tad4ste
+2taf.
+2tafd
+4taff
+4t3afs
+2tafw
+ta4gr
+3tai
+tai2l3
+ta4ke.
+takt3a
+4tald
+3talg
+talm3a
+4talt
+ta4mak
+ta4man
+2tamb
+3tamen
+ta4mu
+t3anal
+tan4d3r
+3tanj
+t2ans
+3tants
+ta4pek
+ta4pes
+t3arb
+4tarea
+3tari
+4t1arm
+ta2ro
+2tart
+t3arti
+tart3s
+tarwe3
+ta4ry.
+4tas4p
+ta3sta
+ta4tem
+2tatl
+3tau
+4t3aut
+2tav
+ta4ve.
+4tavo
+4t1b
+4t1c
+4t3d2
+1te
+3tea
+te4ad
+te2as
+3tec
+tec3t
+4ted.
+t3edit
+te3do
+tee2m1
+4teen3
+tege4n3
+t3eind
+teits3
+4tekk
+3tekor
+3teks4
+4tekse
+tek3t
+te4lap
+3telef
+3teleg
+te4loe
+te4log
+te4luu
+4temm
+te4mor
+3tempo
+4temt
+t2en
+ten4ac
+ten3al
+ten3as
+te4nau
+te4ned
+te4nek
+te4nel
+te4n3et
+ten3k
+te4nol
+ten4se.
+ten4su
+ten4tis
+t3entw
+3tenu
+3tenw
+3teo
+te3p2h
+t2er
+ter3af
+ter3ak
+te3ral
+ter4dol
+3terec
+te4rem
+te4reu
+3terh
+teri4m
+3termi
+ter3na
+ter4spr
+3tes
+tes4ko
+t3euro
+4teuv
+te4ve.
+2texe
+4texp
+4t1f2
+tfa4d
+4t3g2
+2th.
+2t1ha
+3t4ha.
+3t2hag
+4t3hal
+3than.
+2thc
+3the.
+3t2hea
+3thee.
+t2her
+3thera
+t3here
+3therm
+3thes
+4thl
+4thok
+t4hom
+4t1hoo
+2t3hor
+t1hou
+t3houd
+t3houw
+2ths
+t1hu
+2thui
+t4hun
+3t2hur
+2thyp
+1ti
+ti4aalb
+tia4nu
+3tib
+3tica
+3tice
+ti4ce.
+3tie
+ti4eerb
+tie3ru
+tie3s
+ties4l
+ties4p
+tie3t
+ti1eu
+ti2ga
+tig3aa
+4tigm
+ti2gu
+4tijl.
+4tijld
+4tijlt
+3tijn
+2t1ijz
+tik4w
+4tiliu
+til4la.
+ti4mes
+ti4min
+3timm
+4timp
+ti4nad
+4tincu
+4tind
+2tinf
+tin4gi
+tin4g3r
+4tinku
+4tinl
+2tins
+t3inst
+4tinv
+4tinw
+ti4oneu
+3tis
+tis4l
+ti3sli
+tis4tr
+ti3tr
+3tiv
+3tiz
+tj2
+2t1ja
+4tjesl
+4tjeu
+2t1jo
+2t1ju
+4t3k4
+4t1l
+t3la
+tleve4
+4t3m
+tmos3
+4t3n
+3toc
+4tock
+3tod
+to3do
+toe3d
+toe3g
+3toen
+toe3pl
+toe3tj
+3toez
+4to2f
+tog4n
+3toil
+to4kan
+4tolf
+tol4pr
+4tolv
+t3oml
+tom4n
+4tomp
+4toms
+t2on
+2tond
+3tonee
+to4nes
+ton4gr
+to4non
+2tont
+t2oo4
+3toon
+to4pas
+4topb
+4topd
+top4let
+4topm
+2topn
+4topr
+to4q
+2torg
+t3orga
+tor4m3a
+to3sf
+to3sk
+to3sl
+tot4r
+tou1c
+4toverg
+4t3p2
+tpa4t
+tper4sp
+tpe4t
+4tq
+t2r2
+4t3raad
+4traf
+tra4fo
+3trai
+trap3l
+4trato
+traw4
+tre4ak
+2trec
+4treda
+3trein
+4t3reis
+4treiz
+4treke
+tre4kl
+tre4ku
+4trel
+tre2t
+3tribu
+3tril
+4triv
+tro3a
+4troed
+t3roer
+t3roes
+t3rold
+t4rom
+t3rond
+3tros
+trui3t4
+2t1rus
+4ts
+ts4aar
+tsa4le
+t3sch
+t2s3ef
+t2sei
+t2sek
+ts3eks
+t3sen
+t4seng
+ts1ex
+tsi4ga
+t2sij
+t4sink
+ts2j
+ts4kel
+ts4kul
+ts3lam
+t4slan
+t3slep
+ts2me
+t4smu
+ts3nat
+t3snoe
+ts1or
+t1sp
+t3span
+t3spi
+t3spor
+t3spre
+t1st
+t4stab
+t4star
+t4s3tas
+t3ste
+t4steg
+t4stera
+ts4tes.
+ts4tie
+t3ston
+t3stop
+t3str
+t3stu
+tst4w
+t2su
+t4suit
+4t1t2
+t3t4a
+tta4g
+t3te
+tte3lo
+tte2n
+tten4tj
+t3tr
+ttrai4
+4tual.
+4tuals
+tu4bel
+tu1e
+3tuin
+4tuip
+tuit4j
+4tuk
+tuk3sn
+3tum
+tu4mel
+4tump
+tu4nes
+3tunn
+tu1o
+3turb
+3tu4s3
+tuu4
+tu3wa
+4t1v
+tva4l
+2t1w
+4t3wa
+t3we
+twee3s
+twee3t
+t3wie
+t4wijf
+4twil
+t2win
+t3wind
+t3wo
+1ty1
+ty4le.
+3typ
+4t1z
+u1a
+ua4dro
+uae4
+u4an.
+ua4re.
+ua4res
+uat4s
+4ub
+ub3ac
+ube4li
+u2bo
+u4ce.
+u4ces
+u1cha
+u3chen
+u3chet4
+u3cho
+uchu4
+uck4e
+uc4ta
+u1d
+uden4tj
+udet4
+u4dez
+udge4t
+udi4ne
+ud3ove
+u2dr
+ud4sa
+ud4sta
+ud4sto
+ud3w
+u1ee
+u1el
+ueli4
+ue4s
+ues3t
+u1eu
+u1fl
+u3f2r
+4ug
+ug4des
+ug2do
+ug3ei
+uge4leg
+uge4ne.
+ugi4e
+u4g3l
+u2go
+ug3on
+u2g3r
+ug3s4
+ugsto4r
+u3h
+u2i
+ui2da
+ui4deu
+uid3g
+ui2d1o
+uid4sta
+ui3e
+uies4
+uif3l
+ui2f3r
+ui4fu
+ui4gaa
+ui2go
+ui2g3r
+4uik
+ui2k3a
+ui2k3l
+ui2ko
+ui2k3r
+uik3w
+ui2la
+uil3aa
+ui4lem
+uil3m
+ui2lo
+ui2ma
+uimes4
+u4in
+ui4n1a
+ui4nes.
+ui2no
+uin4slo
+ui4pe.
+ui4pes
+ui4pl
+ui4p3r
+4uis
+ui2sa
+ui4sl
+1uitg
+uit1h
+uit1j
+uit3r
+uit1s
+uit3sm
+uit3sp
+u1j
+uk4e
+uke3no
+u2k3l
+u2kor
+u2kr
+uk3ri
+uks4h
+uks4me
+uk4taa
+uk3w
+u1la
+ul3ac
+uliet4
+ul4kar
+u1lo
+ul4pak
+ul2p3l
+ul2po
+ul4pr
+ul4ps
+ul4spa
+ul4spu
+ul4stel
+u1lu2
+u4mac
+ummi3s
+umpi4
+un2c
+un3che
+un4e
+une4tj
+un3g
+3unif
+3univ
+un4kr
+un2s
+un3sc
+un3se
+uns4t
+unst3a
+un4stei
+unst3r
+un4tag
+un2tj
+u3ol
+u1or
+4up
+u1pa
+upda4
+u2pe.
+u2pek
+u4pen
+u2pes
+u1pl
+u1po
+u1pr
+u1q
+2ur
+u1ra
+ur3ac
+ur2al
+uras4t
+u4rec
+u4renv
+ures4
+ure4tj
+ur2fa
+ur3gl
+u1ri
+uri4c
+4urie
+u4rind
+ur4kie
+u1ro
+u4ront
+ur2sl
+ur2sn
+ur4spa
+ur4spr
+ur4sui
+u1ru
+u3ry
+u1san
+u2sc
+u3s2cr
+4use
+u4sep
+u4sj
+u4s3l
+us3n
+u2so
+u4s3p
+us4se.
+us4ses
+u2st
+us3te
+us4tei
+us3ti
+us3tr
+4ut
+u1ta
+ut2ad
+u3tan
+u4tees
+u4tef
+u4teks
+u4tem
+uter4n
+u4tet
+u2tex
+uti4oni
+uti2q
+u1to
+u1tr
+uts4c
+ut1sn
+ut2sp
+ut4sto
+u1tu
+uu2
+uur1
+uur3a
+u1v
+uvan4
+uvel4s
+uw1a
+u4wec
+u4wei
+u4weko
+u4wij
+u4wind
+u4wink
+uw1o
+uw3r
+uwui2
+u1z
+uzes4
+uziek3
+va4kar
+va2ki
+vak3l
+va2ko
+va4loe
+val4s3p
+va2n
+va3se
+va3s4o
+va4th
+2vc
+veel1
+veep4
+2vega4
+veis4
+ve4lap
+vel4do
+vel4dr
+vel4d3u
+ve4lis
+ve2na
+ven3k
+ve2n3o
+ven2s
+ven4se
+venti4o
+ve2r
+ver1a
+ver3da
+verdi4
+ver3k4
+ver3n
+ver3p
+ver3sa
+ver3sm
+ver3sp
+ver3tw
+ver1u
+ve2s3
+ves4c
+ves4po
+ve4st
+ve4tem
+ve2tj
+ve4to
+ve2tr
+2vi2c
+vi3ch
+vie2s
+vies3p
+vie2w
+vi4ne
+ving4
+4vi4ot
+vi4san
+vi4set
+vi4sol
+visper4
+vi1tr
+vi4val
+2v1j
+v2l
+4vlar
+vleis4
+vle3s
+vlooi4t
+3vo
+voel4s
+voet3j
+voe4tr
+vo2le
+vo2li
+vol3ij
+v4r2
+vrij3k
+vues4
+vu2lo
+waad1
+w2ad
+w2ag
+3wagen
+wa4la
+wa4les
+4wana
+wan4gl
+wa2n3o
+wan3sm
+3wap
+war4tan
+wart3j
+war4to
+wart3r
+wa4s3p
+watt3u
+2w1b
+w1c
+2w1d
+1we
+we2a
+we2b3a
+we2d1i
+we2dr
+wee3lo
+wee3sl
+wee3sp
+wees4t
+we2g3a
+weg3eb
+we4gerv
+weg3ij
+weg3l
+we2g3o
+we2g3r
+we4ka
+we4kr
+wel3ed
+wel3ee
+we2lo
+wel3om
+we3loo
+wel3s4
+we4mab
+we2mi
+we4mo
+we2n
+we3ne
+we4nee
+we4nem
+wen4kas
+wen3o
+wer4gr
+w4erk
+wer4k3l
+wer4k3o
+wer4kr
+wer4k3u
+wer4k3w
+wer4p3a
+4werw
+we2s
+wes3p
+w4et
+we2th
+2w1f
+w1g
+w1h
+3wijd
+wijs3
+wi2k
+3wil
+wil4s
+1win
+win4d3r
+3wink
+win4kl
+win2s
+win4ta
+wi4sec
+1wi2t
+wi3te
+wit3h
+wit3j
+wit3o
+wit3r
+w1j
+2w1k
+2w1l
+w1m
+4wn
+wn3ac
+w3nes
+w4oe
+woe3i2
+wo2l
+wol2f
+wolf4s3
+worm3a
+4wot
+w1p
+wper4
+w2r
+wri4
+2w1s
+w2sa
+ws4k
+w2sle
+2w1t
+w1v
+wva2
+4w1w
+wwa4v
+w1z
+xan3
+x1b
+x1c
+xchan4
+xel4
+xf4
+x1h
+xis4
+x1k
+xop4
+x1p
+x1t
+x4tak
+xtie4
+xtraat4
+xtu4r
+xu1
+x3v
+x3w
+xys4
+y1a
+y4ah
+yan4c
+y1b
+yber4t
+y1c
+ycho3
+y1d
+y1e
+y1f
+yfu4
+y1g
+y3gl
+ygu2
+y3h
+y1i
+y1j
+yl3al
+y4les
+y4let
+yli4n
+y1lo
+ylo3s
+ymfes4
+ym4fl
+ymor4
+y3no
+yn3t
+yon4n
+y1p
+y4pec
+y4ped
+y4pek
+y2pem
+y4pev
+y4pew
+y1r
+yr4e
+y1sa
+ys4h
+ysha4
+y2s3l
+y1so
+ys3t
+ys4ty
+y1t2
+ytop4
+y3v
+yvet4
+yvon4
+y3w
+y1z
+3za
+zaf4
+za2k3a
+za2ku
+zan4da
+zang3s
+zas4
+2zb
+4zc
+4zd
+zee3g
+zee3k
+zee3le
+zee3ro
+zee3s4
+zelf1
+zen4da
+ze2no
+ze4raa
+ze3roo
+zer4sl
+zer4sp
+ze2s
+ze3sc
+zes3e
+ze3sl
+ze3str
+ze4ta
+ze2th
+ze2ti
+ze4tj
+ze4tr
+zeve2
+zeven3
+2zg
+ziek3l
+zie4kr
+zie4kw
+ziel4s3
+zi4ga
+zij4na
+zijn4s
+zings3
+zin4si
+zin4sl
+zin4sm
+zi4os
+zi2t
+2zk
+z2l
+2zm
+zn4
+zoet3j
+zoe4tr
+zo3f
+zon3da
+zo4nek
+zon2s
+zo2t
+2zp
+2zs
+4zt
+zus3
+4zv
+z2w
+2z1z
diff --git a/hyph/hyph/english.lh b/hyph/hyph/english.lh
new file mode 100644
index 0000000..c82bcc7
--- /dev/null
+++ b/hyph/hyph/english.lh
@@ -0,0 +1,4515 @@
+Lout hyphenation information
+%
+% COPYRIGHT (C) 1994 Jeffrey H. Kingston
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either Version 3, or (at your option)
+% any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program; if not, write to the Free Software
+% Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA
+
+% Created by Jeff Kingston, 20 April 1994, from a TeX
+% hyphenation file.
+%
+
+Classes:
+@!$%^&*()_-+=~`{[}]:;'|<,.>?/0123456789
+aA
+bB
+cC
+dD
+eE
+fF
+gG
+hH
+iI
+jJ
+kK
+lL
+mM
+nN
+oO
+pP
+qQ
+rR
+sS
+tT
+uU
+vV
+wW
+xX
+yY
+zZ
+
+Exceptions:
+as-so-ciate
+as-so-ciates
+dec-li-na-tion
+oblig-a-tory
+phil-an-thropic
+present
+presents
+project
+projects
+reci-procity
+re-cog-ni-zance
+ref-or-ma-tion
+ret-ri-bu-tion
+ta-ble
+
+Patterns:
+.ach4
+.ad4der
+.af1t
+.al3t
+.am5at
+.an5c
+.ang4
+.ani5m
+.ant4
+.an3te
+.anti5s
+.ar5s
+.ar4tie
+.ar4ty
+.as3c
+.as1p
+.as1s
+.aster5
+.atom5
+.au1d
+.av4i
+.awn4
+.ba4g
+.ba5na
+.bas4e
+.ber4
+.be5ra
+.be3sm
+.be5sto
+.bri2
+.but4ti
+.cam4pe
+.can5c
+.capa5b
+.car5ol
+.ca4t
+.ce4la
+.ch4
+.chill5i
+.ci2
+.cit5r
+.co3e
+.co4r
+.cor5ner
+.de4moi
+.de3o
+.de3ra
+.de3ri
+.des4c
+.dictio5
+.do4t
+.du4c
+.dumb5
+.earth5
+.eas3i
+.eb4
+.eer4
+.eg2
+.el5d
+.el3em
+.enam3
+.en3g
+.en3s
+.eq5ui5t
+.er4ri
+.es3
+.eu3
+.eye5
+.fes3
+.for5mer
+.ga2
+.ge2
+.gen3t4
+.ge5og
+.gi5a
+.gi4b
+.go4r
+.hand5i
+.han5k
+.he2
+.hero5i
+.hes3
+.het3
+.hi3b
+.hi3er
+.hon5ey
+.hon3o
+.hov5
+.id4l
+.idol3
+.im3m
+.im5pin
+.in1
+.in3ci
+.ine2
+.in2k
+.in3s
+.ir5r
+.is4i
+.ju3r
+.la4cy
+.la4m
+.lat5er
+.lath5
+.le2
+.leg5e
+.len4
+.lep5
+.lev1
+.li4g
+.lig5a
+.li2n
+.li3o
+.li4t
+.mag5a5
+.mal5o
+.man5a
+.mar5ti
+.me2
+.mer3c
+.me5ter
+.mis1
+.mist5i
+.mon3e
+.mo3ro
+.mu5ta
+.muta5b
+.ni4c
+.od2
+.odd5
+.of5te
+.or5ato
+.or3c
+.or1d
+.or3t
+.os3
+.os4tl
+.oth3
+.out3
+.ped5al
+.pe5te
+.pe5tit
+.pi4e
+.pio5n
+.pi2t
+.pre3m
+.ra4c
+.ran4t
+.ratio5na
+.ree2
+.re5mit
+.res2
+.re5stat
+.ri4g
+.rit5u
+.ro4q
+.ros5t
+.row5d
+.ru4d
+.sci3e
+.self5
+.sell5
+.se2n
+.se5rie
+.sh2
+.si2
+.sing4
+.st4
+.sta5bl
+.sy2
+.ta4
+.te4
+.ten5an
+.th2
+.ti2
+.til4
+.tim5o5
+.ting4
+.tin5k
+.ton4a
+.to4p
+.top5i
+.tou5s
+.trib5ut
+.un1a
+.un3ce
+.under5
+.un1e
+.un5k
+.un5o
+.un3u
+.up3
+.ure3
+.us5a
+.ven4de
+.ve5ra
+.wil5i
+.ye4
+4ab.
+a5bal
+a5ban
+abe2
+ab5erd
+abi5a
+ab5it5ab
+ab5lat
+ab5o5liz
+4abr
+ab5rog
+ab3ul
+a4car
+ac5ard
+ac5aro
+a5ceou
+ac1er
+a5chet
+4a2ci
+a3cie
+ac1in
+a3cio
+ac5rob
+act5if
+ac3ul
+ac4um
+a2d
+ad4din
+ad5er.
+2adi
+a3dia
+ad3ica
+adi4er
+a3dio
+a3dit
+a5diu
+ad4le
+ad3ow
+ad5ran
+ad4su
+4adu
+a3duc
+ad5um
+ae4r
+aeri4e
+a2f
+aff4
+a4gab
+aga4n
+ag5ell
+age4o
+4ageu
+ag1i
+4ag4l
+ag1n
+a2go
+3agog
+ag3oni
+a5guer
+ag5ul
+a4gy
+a3ha
+a3he
+ah4l
+a3ho
+ai2
+a5ia
+a3ic.
+ai5ly
+a4i4n
+ain5in
+ain5o
+ait5en
+a1j
+ak1en
+al5ab
+al3ad
+a4lar
+4aldi
+2ale
+al3end
+a4lenti
+a5le5o
+al1i
+al4ia.
+ali4e
+al5lev
+4allic
+4alm
+a5log.
+a4ly.
+4alys
+5a5lyst
+5alyt
+3alyz
+4ama
+am5ab
+am3ag
+ama5ra
+am5asc
+a4matis
+a4m5ato
+am5era
+am3ic
+am5if
+am5ily
+am1in
+ami4no
+a2mo
+a5mon
+amor5i
+amp5en
+a2n
+an3age
+3analy
+a3nar
+an3arc
+anar4i
+a3nati
+4and
+ande4s
+an3dis
+an1dl
+an4dow
+a5nee
+a3nen
+an5est.
+a3neu
+2ang
+ang5ie
+an1gl
+a4n1ic
+a3nies
+an3i3f
+an4ime
+a5nimi
+a5nine
+an3io
+a3nip
+an3ish
+an3it
+a3niu
+an4kli
+5anniz
+ano4
+an5ot
+anoth5
+an2sa
+an4sco
+an4sn
+an2sp
+ans3po
+an4st
+an4sur
+antal4
+an4tie
+4anto
+an2tr
+an4tw
+an3ua
+an3ul
+a5nur
+4ao
+apar4
+ap5at
+ap5ero
+a3pher
+4aphi
+a4pilla
+ap5illar
+ap3in
+ap3ita
+a3pitu
+a2pl
+apoc5
+ap5ola
+apor5i
+apos3t
+aps5es
+a3pu
+aque5
+2a2r
+ar3act
+a5rade
+ar5adis
+ar3al
+a5ramete
+aran4g
+ara3p
+ar4at
+a5ratio
+ar5ativ
+a5rau
+ar5av4
+araw4
+arbal4
+ar4chan
+ar5dine
+ar4dr
+ar5eas
+a3ree
+ar3ent
+a5ress
+ar4fi
+ar4fl
+ar1i
+ar5ial
+ar3ian
+a3riet
+ar4im
+ar5inat
+ar3io
+ar2iz
+ar2mi
+ar5o5d
+a5roni
+a3roo
+ar2p
+ar3q
+arre4
+ar4sa
+ar2sh
+4as.
+as4ab
+as3ant
+ashi4
+a5sia.
+a3sib
+a3sic
+5a5si4t
+ask3i
+as4l
+a4soc
+as5ph
+as4sh
+as3ten
+as1tr
+asur5a
+a2ta
+at3abl
+at5ac
+at3alo
+at5ap
+ate5c
+at5ech
+at3ego
+at3en.
+at3era
+ater5n
+a5terna
+at3est
+at5ev
+4ath
+ath5em
+a5then
+at4ho
+ath5om
+4ati.
+a5tia
+at5i5b
+at1ic
+at3if
+ation5ar
+at3itu
+a4tog
+a2tom
+at5omiz
+a4top
+a4tos
+a1tr
+at5rop
+at4sk
+at4tag
+at5te
+at4th
+a2tu
+at5ua
+at5ue
+at3ul
+at3ura
+a2ty
+au4b
+augh3
+au3gu
+au4l2
+aun5d
+au3r
+au5sib
+aut5en
+au1th
+a2va
+av3ag
+a5van
+ave4no
+av3era
+av5ern
+av5ery
+av1i
+avi4er
+av3ig
+av5oc
+a1vor
+3away
+aw3i
+aw4ly
+aws4
+ax4ic
+ax4id
+ay5al
+aye4
+ays4
+azi4er
+azz5i
+5ba.
+bad5ger
+ba4ge
+bal1a
+ban5dag
+ban4e
+ban3i
+barbi5
+bari4a
+bas4si
+1bat
+ba4z
+2b1b
+b2be
+b3ber
+bbi4na
+4b1d
+4be.
+beak4
+beat3
+4be2d
+be3da
+be3de
+be3di
+be3gi
+be5gu
+1bel
+be1li
+be3lo
+4be5m
+be5nig
+be5nu
+4bes4
+be3sp
+be5str
+3bet
+bet5iz
+be5tr
+be3tw
+be3w
+be5yo
+2bf
+4b3h
+bi2b
+bi4d
+3bie
+bi5en
+bi4er
+2b3if
+1bil
+bi3liz
+bina5r4
+bin4d
+bi5net
+bi3ogr
+bi5ou
+bi2t
+3bi3tio
+bi3tr
+3bit5ua
+b5itz
+b1j
+bk4
+b2l2
+blath5
+b4le.
+blen4
+5blesp
+b3lis
+b4lo
+blun4t
+4b1m
+4b3n
+bne5g
+3bod
+bod3i
+bo4e
+bol3ic
+bom4bi
+bon4a
+bon5at
+3boo
+5bor.
+4b1ora
+bor5d
+5bore
+5bori
+5bos4
+b5ota
+both5
+bo4to
+bound3
+4bp
+4brit
+broth3
+2b5s2
+bsor4
+2bt
+bt4l
+b4to
+b3tr
+buf4fer
+bu4ga
+bu3li
+bumi4
+bu4n
+bunt4i
+bu3re
+bus5ie
+buss4e
+5bust
+4buta
+3butio
+b5uto
+b1v
+4b5w
+5by.
+bys4
+1ca
+cab3in
+ca1bl
+cach4
+ca5den
+4cag4
+2c5ah
+ca3lat
+cal4la
+call5in
+4calo
+can5d
+can4e
+can4ic
+can5is
+can3iz
+can4ty
+cany4
+ca5per
+car5om
+cast5er
+cas5tig
+4casy
+ca4th
+4cativ
+cav5al
+c3c
+ccha5
+cci4a
+ccompa5
+ccon4
+ccou3t
+2ce.
+4ced.
+4ceden
+3cei
+5cel.
+3cell
+1cen
+3cenc
+2cen4e
+4ceni
+3cent
+3cep
+ce5ram
+4cesa
+3cessi
+ces5si5b
+ces5t
+cet4
+c5e4ta
+cew4
+2ch
+4ch.
+4ch3ab
+5chanic
+ch5a5nis
+che2
+cheap3
+4ched
+che5lo
+3chemi
+ch5ene
+ch3er.
+ch3ers
+4ch1in
+5chine.
+ch5iness
+5chini
+5chio
+3chit
+chi2z
+3cho2
+ch4ti
+1ci
+3cia
+ci2a5b
+cia5r
+ci5c
+4cier
+5cific.
+4cii
+ci4la
+3cili
+2cim
+2cin
+c4ina
+3cinat
+cin3em
+c1ing
+c5ing.
+5cino
+cion4
+4cipe
+ci3ph
+4cipic
+4cista
+4cisti
+2c1it
+cit3iz
+5ciz
+ck1
+ck3i
+1c4l4
+4clar
+c5laratio
+5clare
+cle4m
+4clic
+clim4
+cly4
+c5n
+1co
+co5ag
+coe2
+2cog
+co4gr
+coi4
+co3inc
+col5i
+5colo
+col3or
+com5er
+con4a
+c4one
+con3g
+con5t
+co3pa
+cop3ic
+co4pl
+4corb
+coro3n
+cos4e
+cov1
+cove4
+cow5a
+coz5e
+co5zi
+c1q
+cras5t
+5crat.
+5cratic
+cre3at
+5cred
+4c3reta
+cre4v
+cri2
+cri5f
+c4rin
+cris4
+5criti
+cro4pl
+crop5o
+cros4e
+cru4d
+4c3s2
+2c1t
+cta4b
+ct5ang
+c5tant
+c2te
+c3ter
+c4ticu
+ctim3i
+ctu4r
+c4tw
+cud5
+c4uf
+c4ui
+cu5ity
+5culi
+cul4tis
+3cultu
+cu2ma
+c3ume
+cu4mi
+3cun
+cu3pi
+cu5py
+cur5a4b
+cu5ria
+1cus
+cuss4i
+3c4ut
+cu4tie
+4c5utiv
+4cutr
+1cy
+cze4
+1d2a
+5da.
+2d3a4b
+dach4
+4daf
+2dag
+da2m2
+dan3g
+dard5
+dark5
+4dary
+3dat
+4dativ
+4dato
+5dav4
+dav5e
+5day
+d1b
+d5c
+d1d4
+2de.
+deaf5
+deb5it
+de4bon
+decan4
+de4cil
+de5com
+2d1ed
+4dee.
+de5if
+deli4e
+del5i5q
+de5lo
+d4em
+5dem.
+3demic
+dem5ic.
+de5mil
+de4mons
+demor5
+1den
+de4nar
+de3no
+denti5f
+de3nu
+de1p
+de3pa
+depi4
+de2pu
+d3eq
+d4erh
+5derm
+dern5iz
+der5s
+des2
+d2es.
+de1sc
+de2s5o
+des3ti
+de3str
+de4su
+de1t
+de2to
+de1v
+dev3il
+4dey
+4d1f
+d4ga
+d3ge4t
+dg1i
+d2gy
+d1h2
+5di.
+1d4i3a
+dia5b
+di4cam
+d4ice
+3dict
+3did
+5di3en
+d1if
+di3ge
+di4lato
+d1in
+1dina
+3dine.
+5dini
+di5niz
+1dio
+dio5g
+di4pl
+dir2
+di1re
+dirt5i
+dis1
+5disi
+d4is3t
+d2iti
+1di1v
+d1j
+d5k2
+4d5la
+3dle.
+3dled
+3dles.
+4dless
+2d3lo
+4d5lu
+2dly
+d1m
+4d1n4
+1do
+3do.
+do5de
+5doe
+2d5of
+d4og
+do4la
+doli4
+do5lor
+dom5iz
+do3nat
+doni4
+doo3d
+dop4p
+d4or
+3dos
+4d5out
+do4v
+3dox
+d1p
+1dr
+drag5on
+4drai
+dre4
+drea5r
+5dren
+dri4b
+dril4
+dro4p
+4drow
+5drupli
+4dry
+2d1s2
+ds4p
+d4sw
+d4sy
+d2th
+1du
+d1u1a
+du2c
+d1uca
+duc5er
+4duct.
+4ducts
+du5el
+du4g
+d3ule
+dum4be
+du4n
+4dup
+du4pe
+d1v
+d1w
+d2y
+5dyn
+dy4se
+dys5p
+e1a4b
+e3act
+ead1
+ead5ie
+ea4ge
+ea5ger
+ea4l
+eal5er
+eal3ou
+eam3er
+e5and
+ear3a
+ear4c
+ear5es
+ear4ic
+ear4il
+ear5k
+ear2t
+eart3e
+ea5sp
+e3ass
+east3
+ea2t
+eat5en
+eath3i
+e5atif
+e4a3tu
+ea2v
+eav3en
+eav5i
+eav5o
+2e1b
+e4bel.
+e4bels
+e4ben
+e4bit
+e3br
+e4cad
+ecan5c
+ecca5
+e1ce
+ec5essa
+ec2i
+e4cib
+ec5ificat
+ec5ifie
+ec5ify
+ec3im
+eci4t
+e5cite
+e4clam
+e4clus
+e2col
+e4comm
+e4compe
+e4conc
+e2cor
+ec3ora
+eco5ro
+e1cr
+e4crem
+ec4tan
+ec4te
+e1cu
+e4cul
+ec3ula
+2e2da
+4ed3d
+e4d1er
+ede4s
+4edi
+e3dia
+ed3ib
+ed3ica
+ed3im
+ed1it
+edi5z
+4edo
+e4dol
+edon2
+e4dri
+e4dul
+ed5ulo
+ee2c
+eed3i
+ee2f
+eel3i
+ee4ly
+ee2m
+ee4na
+ee4p1
+ee2s4
+eest4
+ee4ty
+e5ex
+e1f
+e4f3ere
+1eff
+e4fic
+5efici
+efil4
+e3fine
+ef5i5nite
+3efit
+efor5es
+e4fuse.
+4egal
+eger4
+eg5ib
+eg4ic
+eg5ing
+e5git5
+eg5n
+e4go.
+e4gos
+eg1ul
+e5gur
+5egy
+e1h4
+eher4
+ei2
+e5ic
+ei5d
+eig2
+ei5gl
+e3imb
+e3inf
+e1ing
+e5inst
+eir4d
+eit3e
+ei3th
+e5ity
+e1j
+e4jud
+ej5udi
+eki4n
+ek4la
+e1la
+e4la.
+e4lac
+elan4d
+el5ativ
+e4law
+elaxa4
+e3lea
+el5ebra
+5elec
+e4led
+el3ega
+e5len
+e4l1er
+e1les
+el2f
+el2i
+e3libe
+e4l5ic.
+el3ica
+e3lier
+el5igib
+e5lim
+e4l3ing
+e3lio
+e2lis
+el5ish
+e3liv3
+4ella
+el4lab
+ello4
+e5loc
+el5og
+el3op.
+el2sh
+el4ta
+e5lud
+el5ug
+e4mac
+e4mag
+e5man
+em5ana
+em5b
+e1me
+e2mel
+e4met
+em3ica
+emi4e
+em5igra
+em1in2
+em5ine
+em3i3ni
+e4mis
+em5ish
+e5miss
+em3iz
+5emniz
+emo4g
+emoni5o
+em3pi
+e4mul
+em5ula
+emu3n
+e3my
+en5amo
+e4nant
+ench4er
+en3dic
+e5nea
+e5nee
+en3em
+en5ero
+en5esi
+en5est
+en3etr
+e3new
+en5ics
+e5nie
+e5nil
+e3nio
+en3ish
+en3it
+e5niu
+5eniz
+4enn
+4eno
+eno4g
+e4nos
+en3ov
+en4sw
+ent5age
+4enthes
+en3ua
+en5uf
+e3ny.
+4en3z
+e5of
+eo2g
+e4oi4
+e3ol
+eop3ar
+e1or
+eo3re
+eo5rol
+eos4
+e4ot
+eo4to
+e5out
+e5ow
+e2pa
+e3pai
+ep5anc
+e5pel
+e3pent
+ep5etitio
+ephe4
+e4pli
+e1po
+e4prec
+ep5reca
+e4pred
+ep3reh
+e3pro
+e4prob
+ep4sh
+ep5ti5b
+e4put
+ep5uta
+e1q
+equi3l
+e4q3ui3s
+er1a
+era4b
+4erand
+er3ar
+4erati.
+2erb
+er4bl
+er3ch
+er4che
+2ere.
+e3real
+ere5co
+ere3in
+er5el.
+er3emo
+er5ena
+er5ence
+4erene
+er3ent
+ere4q
+er5ess
+er3est
+eret4
+er1h
+er1i
+e1ria4
+5erick
+e3rien
+eri4er
+er3ine
+e1rio
+4erit
+er4iu
+eri4v
+e4riva
+er3m4
+er4nis
+4ernit
+5erniz
+er3no
+2ero
+er5ob
+e5roc
+ero4r
+er1ou
+er1s
+er3set
+ert3er
+4ertl
+er3tw
+4eru
+eru4t
+5erwau
+e1s4a
+e4sage.
+e4sages
+es2c
+e2sca
+es5can
+e3scr
+es5cu
+e1s2e
+e2sec
+es5ecr
+es5enc
+e4sert.
+e4serts
+e4serva
+4esh
+e3sha
+esh5en
+e1si
+e2sic
+e2sid
+es5iden
+es5igna
+e2s5im
+es4i4n
+esis4te
+esi4u
+e5skin
+es4mi
+e2sol
+es3olu
+e2son
+es5ona
+e1sp
+es3per
+es5pira
+es4pre
+2ess
+es4si4b
+estan4
+es3tig
+es5tim
+4es2to
+e3ston
+2estr
+e5stro
+estruc5
+e2sur
+es5urr
+es4w
+eta4b
+eten4d
+e3teo
+ethod3
+et1ic
+e5tide
+etin4
+eti4no
+e5tir
+e5titio
+et5itiv
+4etn
+et5ona
+e3tra
+e3tre
+et3ric
+et5rif
+et3rog
+et5ros
+et3ua
+et5ym
+et5z
+4eu
+e5un
+e3up
+eu3ro
+eus4
+eute4
+euti5l
+eu5tr
+eva2p5
+e2vas
+ev5ast
+e5vea
+ev3ell
+evel3o
+e5veng
+even4i
+ev1er
+e5verb
+e1vi
+ev3id
+evi4l
+e4vin
+evi4v
+e5voc
+e5vu
+e1wa
+e4wag
+e5wee
+e3wh
+ewil5
+ew3ing
+e3wit
+1exp
+5eyc
+5eye.
+eys4
+1fa
+fa3bl
+fab3r
+fa4ce
+4fag
+fain4
+fall5e
+4fa4ma
+fam5is
+5far
+far5th
+fa3ta
+fa3the
+4fato
+fault5
+4f5b
+4fd
+4fe.
+feas4
+feath3
+fe4b
+4feca
+5fect
+2fed
+fe3li
+fe4mo
+fen2d
+fend5e
+fer1
+5ferr
+fev4
+4f1f
+f4fes
+f4fie
+f5fin.
+f2f5is
+f4fly
+f2fy
+4fh
+1fi
+fi3a
+2f3ic.
+4f3ical
+f3ican
+4ficate
+f3icen
+fi3cer
+fic4i
+5ficia
+5ficie
+4fics
+fi3cu
+fi5del
+fight5
+fil5i
+fill5in
+4fily
+2fin
+5fina
+fin2d5
+fi2ne
+f1in3g
+fin4n
+fis4ti
+f4l2
+f5less
+flin4
+flo3re
+f2ly5
+4fm
+4fn
+1fo
+5fon
+fon4de
+fon4t
+fo2r
+fo5rat
+for5ay
+fore5t
+for4i
+fort5a
+fos5
+4f5p
+fra4t
+f5rea
+fres5c
+fri2
+fril4
+frol5
+2f3s
+2ft
+f4to
+f2ty
+3fu
+fu5el
+4fug
+fu4min
+fu5ne
+fu3ri
+fusi4
+fus4s
+4futa
+1fy
+1ga
+gaf4
+5gal.
+3gali
+ga3lo
+2gam
+ga5met
+g5amo
+gan5is
+ga3niz
+gani5za
+4gano
+gar5n4
+gass4
+gath3
+4gativ
+4gaz
+g3b
+gd4
+2ge.
+2ged
+geez4
+gel4in
+ge5lis
+ge5liz
+4gely
+1gen
+ge4nat
+ge5niz
+4geno
+4geny
+1geo
+ge3om
+g4ery
+5gesi
+geth5
+4geto
+ge4ty
+ge4v
+4g1g2
+g2ge
+g3ger
+gglu5
+ggo4
+gh3in
+gh5out
+gh4to
+5gi.
+1gi4a
+gia5r
+g1ic
+5gicia
+g4ico
+gien5
+5gies.
+gil4
+g3imen
+3g4in.
+gin5ge
+5g4ins
+5gio
+3gir
+gir4l
+g3isl
+gi4u
+5giv
+3giz
+gl2
+gla4
+glad5i
+5glas
+1gle
+gli4b
+g3lig
+3glo
+glo3r
+g1m
+g4my
+gn4a
+g4na.
+gnet4t
+g1ni
+g2nin
+g4nio
+g1no
+g4non
+1go
+3go.
+gob5
+5goe
+3g4o4g
+go3is
+gon2
+4g3o3na
+gondo5
+go3ni
+5goo
+go5riz
+gor5ou
+5gos.
+gov1
+g3p
+1gr
+4grada
+g4rai
+gran2
+5graph.
+g5rapher
+5graphic
+4graphy
+4gray
+gre4n
+4gress.
+4grit
+g4ro
+gruf4
+gs2
+g5ste
+gth3
+gu4a
+3guard
+2gue
+5gui5t
+3gun
+3gus
+4gu4t
+g3w
+1gy
+2g5y3n
+gy5ra
+h3ab4l
+hach4
+hae4m
+hae4t
+h5agu
+ha3la
+hala3m
+ha4m
+han4ci
+han4cy
+5hand.
+han4g
+hang5er
+hang5o
+h5a5niz
+han4k
+han4te
+hap3l
+hap5t
+ha3ran
+ha5ras
+har2d
+hard3e
+har4le
+harp5en
+har5ter
+has5s
+haun4
+5haz
+haz3a
+h1b
+1head
+3hear
+he4can
+h5ecat
+h4ed
+he5do5
+he3l4i
+hel4lis
+hel4ly
+h5elo
+hem4p
+he2n
+hena4
+hen5at
+heo5r
+hep5
+h4era
+hera3p
+her4ba
+here5a
+h3ern
+h5erou
+h3ery
+h1es
+he2s5p
+he4t
+het4ed
+heu4
+h1f
+h1h
+hi5an
+hi4co
+high5
+h4il2
+himer4
+h4ina
+hion4e
+hi4p
+hir4l
+hi3ro
+hir4p
+hir4r
+his3el
+his4s
+hith5er
+hi2v
+4hk
+4h1l4
+hlan4
+h2lo
+hlo3ri
+4h1m
+hmet4
+2h1n
+h5odiz
+h5ods
+ho4g
+hoge4
+hol5ar
+3hol4e
+ho4ma
+home3
+hon4a
+ho5ny
+3hood
+hoon4
+hor5at
+ho5ris
+hort3e
+ho5ru
+hos4e
+ho5sen
+hos1p
+1hous
+house3
+hov5el
+4h5p
+4hr4
+hree5
+hro5niz
+hro3po
+4h1s2
+h4sh
+h4tar
+ht1en
+ht5es
+h4ty
+hu4g
+hu4min
+hun5ke
+hun4t
+hus3t4
+hu4t
+h1w
+h4wart
+hy3pe
+hy3ph
+hy2s
+2i1a
+i2al
+iam4
+iam5ete
+i2an
+4ianc
+ian3i
+4ian4t
+ia5pe
+iass4
+i4ativ
+ia4tric
+i4atu
+ibe4
+ib3era
+ib5ert
+ib5ia
+ib3in
+ib5it.
+ib5ite
+i1bl
+ib3li
+i5bo
+i1br
+i2b5ri
+i5bun
+4icam
+5icap
+4icar
+i4car.
+i4cara
+icas5
+i4cay
+iccu4
+4iceo
+4ich
+2ici
+i5cid
+ic5ina
+i2cip
+ic3ipa
+i4cly
+i2c5oc
+4i1cr
+5icra
+i4cry
+ic4te
+ictu2
+ic4t3ua
+ic3ula
+ic4um
+ic5uo
+i3cur
+2id
+i4dai
+id5anc
+id5d
+ide3al
+ide4s
+i2di
+id5ian
+idi4ar
+i5die
+id3io
+idi5ou
+id1it
+id5iu
+i3dle
+i4dom
+id3ow
+i4dr
+i2du
+id5uo
+2ie4
+ied4e
+5ie5ga
+ield3
+ien5a4
+ien4e
+i5enn
+i3enti
+i1er.
+i3esc
+i1est
+i3et
+4if.
+if5ero
+iff5en
+if4fr
+4ific.
+i3fie
+i3fl
+4ift
+2ig
+iga5b
+ig3era
+ight3i
+4igi
+i3gib
+ig3il
+ig3in
+ig3it
+i4g4l
+i2go
+ig3or
+ig5ot
+i5gre
+igu5i
+ig1ur
+i3h
+4i5i4
+i3j
+4ik
+i1la
+il3a4b
+i4lade
+i2l5am
+ila5ra
+i3leg
+il1er
+ilev4
+il5f
+il1i
+il3ia
+il2ib
+il3io
+il4ist
+2ilit
+il2iz
+ill5ab
+4iln
+il3oq
+il4ty
+il5ur
+il3v
+i4mag
+im3age
+ima5ry
+imenta5r
+4imet
+im1i
+im5ida
+imi5le
+i5mini
+4imit
+im4ni
+i3mon
+i2mu
+im3ula
+2in.
+i4n3au
+4inav
+incel4
+in3cer
+4ind
+in5dling
+2ine
+i3nee
+iner4ar
+i5ness
+4inga
+4inge
+in5gen
+4ingi
+in5gling
+4ingo
+4ingu
+2ini
+i5ni.
+i4nia
+in3io
+in1is
+i5nite.
+5initio
+in3ity
+4ink
+4inl
+2inn
+2i1no
+i4no4c
+ino4s
+i4not
+2ins
+in3se
+insur5a
+2int.
+2in4th
+in1u
+i5nus
+4iny
+2io
+4io.
+ioge4
+io2gr
+i1ol
+io4m
+ion3at
+ion4ery
+ion3i
+io5ph
+ior3i
+i4os
+io5th
+i5oti
+io4to
+i4our
+2ip
+ipe4
+iphras4
+ip3i
+ip4ic
+ip4re4
+ip3ul
+i3qua
+iq5uef
+iq3uid
+iq3ui3t
+4ir
+i1ra
+ira4b
+i4rac
+ird5e
+ire4de
+i4ref
+i4rel4
+i4res
+ir5gi
+ir1i
+iri5de
+ir4is
+iri3tu
+5i5r2iz
+ir4min
+iro4g
+5iron.
+ir5ul
+2is.
+is5ag
+is3ar
+isas5
+2is1c
+is3ch
+4ise
+is3er
+3isf
+is5han
+is3hon
+ish5op
+is3ib
+isi4d
+i5sis
+is5itiv
+4is4k
+islan4
+4isms
+i2so
+iso5mer
+is1p
+is2pi
+is4py
+4is1s
+is4sal
+issen4
+is4ses
+is4ta.
+is1te
+is1ti
+ist4ly
+4istral
+i2su
+is5us
+4ita.
+ita4bi
+i4tag
+4ita5m
+i3tan
+i3tat
+2ite
+it3era
+i5teri
+it4es
+2ith
+i1ti
+4itia
+4i2tic
+it3ica
+5i5tick
+it3ig
+it5ill
+i2tim
+2itio
+4itis
+i4tism
+i2t5o5m
+4iton
+i4tram
+it5ry
+4itt
+it3uat
+i5tud
+it3ul
+4itz.
+i1u
+2iv
+iv3ell
+iv3en.
+i4v3er.
+i4vers.
+iv5il.
+iv5io
+iv1it
+i5vore
+iv3o3ro
+i4v3ot
+4i5w
+ix4o
+4iy
+4izar
+izi4
+5izont
+5ja
+jac4q
+ja4p
+1je
+jer5s
+4jestie
+4jesty
+jew3
+jo4p
+5judg
+3ka.
+k3ab
+k5ag
+kais4
+kal4
+k1b
+k2ed
+1kee
+ke4g
+ke5li
+k3en4d
+k1er
+kes4
+k3est.
+ke4ty
+k3f
+kh4
+k1i
+5ki.
+5k2ic
+k4ill
+kilo5
+k4im
+k4in.
+kin4de
+k5iness
+kin4g
+ki4p
+kis4
+k5ish
+kk4
+k1l
+4kley
+4kly
+k1m
+k5nes
+1k2no
+ko5r
+kosh4
+k3ou
+kro5n
+4k1s2
+k4sc
+ks4l
+k4sy
+k5t
+k1w
+lab3ic
+l4abo
+laci4
+l4ade
+la3dy
+lag4n
+lam3o
+3land
+lan4dl
+lan5et
+lan4te
+lar4g
+lar3i
+las4e
+la5tan
+4lateli
+4lativ
+4lav
+la4v4a
+2l1b
+lbin4
+4l1c2
+lce4
+l3ci
+2ld
+l2de
+ld4ere
+ld4eri
+ldi4
+ld5is
+l3dr
+l4dri
+le2a
+le4bi
+left5
+5leg.
+5legg
+le4mat
+lem5atic
+4len.
+3lenc
+5lene.
+1lent
+le3ph
+le4pr
+lera5b
+ler4e
+3lerg
+3l4eri
+l4ero
+les2
+le5sco
+5lesq
+3less
+5less.
+l3eva
+lev4er.
+lev4era
+lev4ers
+3ley
+4leye
+2lf
+l5fr
+4l1g4
+l5ga
+lgar3
+l4ges
+lgo3
+2l3h
+li4ag
+li2am
+liar5iz
+li4as
+li4ato
+li5bi
+5licio
+li4cor
+4lics
+4lict.
+l4icu
+l3icy
+l3ida
+lid5er
+3lidi
+lif3er
+l4iff
+li4fl
+5ligate
+3ligh
+li4gra
+3lik
+4l4i4l
+lim4bl
+lim3i
+li4mo
+l4im4p
+l4ina
+1l4ine
+lin3ea
+lin3i
+link5er
+li5og
+4l4iq
+lis4p
+l1it
+l2it.
+5litica
+l5i5tics
+liv3er
+l1iz
+4lj
+lka3
+l3kal
+lka4t
+l1l
+l4law
+l2le
+l5lea
+l3lec
+l3leg
+l3lel
+l3le4n
+l3le4t
+ll2i
+l2lin4
+l5lina
+ll4o
+lloqui5
+ll5out
+l5low
+2lm
+l5met
+lm3ing
+l4mod
+lmon4
+2l1n2
+3lo.
+lob5al
+lo4ci
+4lof
+3logic
+l5ogo
+3logu
+lom3er
+5long
+lon4i
+l3o3niz
+lood5
+5lope.
+lop3i
+l3opm
+lora4
+lo4rato
+lo5rie
+lor5ou
+5los.
+los5et
+5losophiz
+5losophy
+los4t
+lo4ta
+loun5d
+2lout
+4lov
+2lp
+lpa5b
+l3pha
+l5phi
+lp5ing
+l3pit
+l4pl
+l5pr
+4l1r
+2l1s2
+l4sc
+l2se
+l4sie
+4lt
+lt5ag
+ltane5
+l1te
+lten4
+ltera4
+lth3i
+l5ties.
+ltis4
+l1tr
+ltu2
+ltur3a
+lu5a
+lu3br
+luch4
+lu3ci
+lu3en
+luf4
+lu5id
+lu4ma
+5lumi
+l5umn.
+5lumnia
+lu3o
+luo3r
+4lup
+luss4
+lus3te
+1lut
+l5ven
+l5vet4
+2l1w
+1ly
+4lya
+4lyb
+ly5me
+ly3no
+2lys4
+l5yse
+1ma
+2mab
+ma2ca
+ma5chine
+ma4cl
+mag5in
+5magn
+2mah
+maid5
+4mald
+ma3lig
+ma5lin
+mal4li
+mal4ty
+5mania
+man5is
+man3iz
+4map
+ma5rine.
+ma5riz
+mar4ly
+mar3v
+ma5sce
+mas4e
+mas1t
+5mate
+math3
+ma3tis
+4matiza
+4m1b
+mba4t5
+m5bil
+m4b3ing
+mbi4v
+4m5c
+4me.
+2med
+4med.
+5media
+me3die
+m5e5dy
+me2g
+mel5on
+mel4t
+me2m
+mem1o3
+1men
+men4a
+men5ac
+men4de
+4mene
+men4i
+mens4
+mensu5
+3ment
+men4te
+me5on
+m5ersa
+2mes
+3mesti
+me4ta
+met3al
+me1te
+me5thi
+m4etr
+5metric
+me5trie
+me3try
+me4v
+4m1f
+2mh
+5mi.
+mi3a
+mid4a
+mid4g
+mig4
+3milia
+m5i5lie
+m4ill
+min4a
+3mind
+m5inee
+m4ingl
+min5gli
+m5ingly
+min4t
+m4inu
+miot4
+m2is
+mis4er.
+mis5l
+mis4ti
+m5istry
+4mith
+m2iz
+4mk
+4m1l
+m1m
+mma5ry
+4m1n
+mn4a
+m4nin
+mn4o
+1mo
+4mocr
+5mocratiz
+mo2d1
+mo4go
+mois2
+moi5se
+4mok
+mo5lest
+mo3me
+mon5et
+mon5ge
+moni3a
+mon4ism
+mon4ist
+mo3niz
+monol4
+mo3ny.
+mo2r
+4mora.
+mos2
+mo5sey
+mo3sp
+moth3
+m5ouf
+3mous
+mo2v
+4m1p
+mpara5
+mpa5rab
+mpar5i
+m3pet
+mphas4
+m2pi
+mpi4a
+mp5ies
+m4p1in
+m5pir
+mp5is
+mpo3ri
+mpos5ite
+m4pous
+mpov5
+mp4tr
+m2py
+4m3r
+4m1s2
+m4sh
+m5si
+4mt
+1mu
+mula5r4
+5mult
+multi3
+3mum
+mun2
+4mup
+mu4u
+4mw
+1na
+2n1a2b
+n4abu
+4nac.
+na4ca
+n5act
+nag5er.
+nak4
+na4li
+na5lia
+4nalt
+na5mit
+n2an
+nanci4
+nan4it
+nank4
+nar3c
+4nare
+nar3i
+nar4l
+n5arm
+n4as
+nas4c
+nas5ti
+n2at
+na3tal
+nato5miz
+n2au
+nau3se
+3naut
+nav4e
+4n1b4
+ncar5
+n4ces.
+n3cha
+n5cheo
+n5chil
+n3chis
+nc1in
+nc4it
+ncour5a
+n1cr
+n1cu
+n4dai
+n5dan
+n1de
+nd5est.
+ndi4b
+n5d2if
+n1dit
+n3diz
+n5duc
+ndu4r
+nd2we
+2ne.
+n3ear
+ne2b
+neb3u
+ne2c
+5neck
+2ned
+ne4gat
+neg5ativ
+5nege
+ne4la
+nel5iz
+ne5mi
+ne4mo
+1nen
+4nene
+3neo
+ne4po
+ne2q
+n1er
+nera5b
+n4erar
+n2ere
+n4er5i
+ner4r
+1nes
+2nes.
+4nesp
+2nest
+4nesw
+3netic
+ne4v
+n5eve
+ne4w
+n3f
+n4gab
+n3gel
+nge4n4e
+n5gere
+n3geri
+ng5ha
+n3gib
+ng1in
+n5git
+n4gla
+ngov4
+ng5sh
+n1gu
+n4gum
+n2gy
+4n1h4
+nha4
+nhab3
+nhe4
+3n4ia
+ni3an
+ni4ap
+ni3ba
+ni4bl
+ni4d
+ni5di
+ni4er
+ni2fi
+ni5ficat
+n5igr
+nik4
+n1im
+ni3miz
+n1in
+5nine.
+nin4g
+ni4o
+5nis.
+nis4ta
+n2it
+n4ith
+3nitio
+n3itor
+ni3tr
+n1j
+4nk2
+n5kero
+n3ket
+nk3in
+n1kl
+4n1l
+n5m
+nme4
+nmet4
+4n1n2
+nne4
+nni3al
+nni4v
+nob4l
+no3ble
+n5ocl
+4n3o2d
+3noe
+4nog
+noge4
+nois5i
+no5l4i
+5nologis
+3nomic
+n5o5miz
+no4mo
+no3my
+no4n
+non4ag
+non5i
+n5oniz
+4nop
+5nop5o5li
+nor5ab
+no4rary
+4nosc
+nos4e
+nos5t
+no5ta
+1nou
+3noun
+nov3el3
+nowl3
+n1p4
+npi4
+npre4c
+n1q
+n1r
+nru4
+2n1s2
+ns5ab
+nsati4
+ns4c
+n2se
+n4s3es
+nsid1
+nsig4
+n2sl
+ns3m
+n4soc
+ns4pe
+n5spi
+nsta5bl
+n1t
+nta4b
+nter3s
+nt2i
+n5tib
+nti4er
+nti2f
+n3tine
+n4t3ing
+nti4p
+ntrol5li
+nt4s
+ntu3me
+nu1a
+nu4d
+nu5en
+nuf4fe
+n3uin
+3nu3it
+n4um
+nu1me
+n5umi
+3nu4n
+n3uo
+nu3tr
+n1v2
+n1w4
+nym4
+nyp4
+4nz
+n3za
+4oa
+oad3
+o5a5les
+oard3
+oas4e
+oast5e
+oat5i
+ob3a3b
+o5bar
+obe4l
+o1bi
+o2bin
+ob5ing
+o3br
+ob3ul
+o1ce
+och4
+o3chet
+ocif3
+o4cil
+o4clam
+o4cod
+oc3rac
+oc5ratiz
+ocre3
+5ocrit
+octor5a
+oc3ula
+o5cure
+od5ded
+od3ic
+odi3o
+o2do4
+odor3
+od5uct.
+od5ucts
+o4el
+o5eng
+o3er
+oe4ta
+o3ev
+o2fi
+of5ite
+ofit4t
+o2g5a5r
+og5ativ
+o4gato
+o1ge
+o5gene
+o5geo
+o4ger
+o3gie
+1o1gis
+og3it
+o4gl
+o5g2ly
+3ogniz
+o4gro
+ogu5i
+1ogy
+2ogyn
+o1h2
+ohab5
+oi2
+oic3es
+oi3der
+oiff4
+oig4
+oi5let
+o3ing
+oint5er
+o5ism
+oi5son
+oist5en
+oi3ter
+o5j
+2ok
+o3ken
+ok5ie
+o1la
+o4lan
+olass4
+ol2d
+old1e
+ol3er
+o3lesc
+o3let
+ol4fi
+ol2i
+o3lia
+o3lice
+ol5id.
+o3li4f
+o5lil
+ol3ing
+o5lio
+o5lis.
+ol3ish
+o5lite
+o5litio
+o5liv
+olli4e
+ol5ogiz
+olo4r
+ol5pl
+ol2t
+ol3ub
+ol3ume
+ol3un
+o5lus
+ol2v
+o2ly
+om5ah
+oma5l
+om5atiz
+om2be
+om4bl
+o2me
+om3ena
+om5erse
+o4met
+om5etry
+o3mia
+om3ic.
+om3ica
+o5mid
+om1in
+o5mini
+5ommend
+omo4ge
+o4mon
+om3pi
+ompro5
+o2n
+on1a
+on4ac
+o3nan
+on1c
+3oncil
+2ond
+on5do
+o3nen
+on5est
+on4gu
+on1ic
+o3nio
+on1is
+o5niu
+on3key
+on4odi
+on3omy
+on3s
+onspi4
+onspir5a
+onsu4
+onten4
+on3t4i
+ontif5
+on5um
+onva5
+oo2
+ood5e
+ood5i
+oo4k
+oop3i
+o3ord
+oost5
+o2pa
+ope5d
+op1er
+3opera
+4operag
+2oph
+o5phan
+o5pher
+op3ing
+o3pit
+o5pon
+o4posi
+o1pr
+op1u
+opy5
+o1q
+o1ra
+o5ra.
+o4r3ag
+or5aliz
+or5ange
+ore5a
+o5real
+or3ei
+ore5sh
+or5est.
+orew4
+or4gu
+4o5ria
+or3ica
+o5ril
+or1in
+o1rio
+or3ity
+o3riu
+or2mi
+orn2e
+o5rof
+or3oug
+or5pe
+3orrh
+or4se
+ors5en
+orst4
+or3thi
+or3thy
+or4ty
+o5rum
+o1ry
+os3al
+os2c
+os4ce
+o3scop
+4oscopi
+o5scr
+os4i4e
+os5itiv
+os3ito
+os3ity
+osi4u
+os4l
+o2so
+os4pa
+os4po
+os2ta
+o5stati
+os5til
+os5tit
+o4tan
+otele4g
+ot3er.
+ot5ers
+o4tes
+4oth
+oth5esi
+oth3i4
+ot3ic.
+ot5ica
+o3tice
+o3tif
+o3tis
+oto5s
+ou2
+ou3bl
+ouch5i
+ou5et
+ou4l
+ounc5er
+oun2d
+ou5v
+ov4en
+over4ne
+over3s
+ov4ert
+o3vis
+oviti4
+o5v4ol
+ow3der
+ow3el
+ow5est
+ow1i
+own5i
+o4wo
+oy1a
+1pa
+pa4ca
+pa4ce
+pac4t
+p4ad
+5pagan
+p3agat
+p4ai
+pain4
+p4al
+pan4a
+pan3el
+pan4ty
+pa3ny
+pa1p
+pa4pu
+para5bl
+par5age
+par5di
+3pare
+par5el
+p4a4ri
+par4is
+pa2te
+pa5ter
+5pathic
+pa5thy
+pa4tric
+pav4
+3pay
+4p1b
+pd4
+4pe.
+3pe4a
+pear4l
+pe2c
+2p2ed
+3pede
+3pedi
+pedia4
+ped4ic
+p4ee
+pee4d
+pek4
+pe4la
+peli4e
+pe4nan
+p4enc
+pen4th
+pe5on
+p4era.
+pera5bl
+p4erag
+p4eri
+peri5st
+per4mal
+perme5
+p4ern
+per3o
+per3ti
+pe5ru
+per1v
+pe2t
+pe5ten
+pe5tiz
+4pf
+4pg
+4ph.
+phar5i
+phe3no
+ph4er
+ph4es.
+ph1ic
+5phie
+ph5ing
+5phisti
+3phiz
+ph2l
+3phob
+3phone
+5phoni
+pho4r
+4phs
+ph3t
+5phu
+1phy
+pi3a
+pian4
+pi4cie
+pi4cy
+p4id
+p5ida
+pi3de
+5pidi
+3piec
+pi3en
+pi4grap
+pi3lo
+pi2n
+p4in.
+pind4
+p4ino
+3pi1o
+pion4
+p3ith
+pi5tha
+pi2tu
+2p3k2
+1p2l2
+3plan
+plas5t
+pli3a
+pli5er
+4plig
+pli4n
+ploi4
+plu4m
+plum4b
+4p1m
+2p3n
+po4c
+5pod.
+po5em
+po3et5
+5po4g
+poin2
+5point
+poly5t
+po4ni
+po4p
+1p4or
+po4ry
+1pos
+pos1s
+p4ot
+po4ta
+5poun
+4p1p
+ppa5ra
+p2pe
+p4ped
+p5pel
+p3pen
+p3per
+p3pet
+ppo5site
+pr2
+pray4e
+5preci
+pre5co
+pre3em
+pref5ac
+pre4la
+pre3r
+p3rese
+3press
+pre5ten
+pre3v
+5pri4e
+prin4t3
+pri4s
+pris3o
+p3roca
+prof5it
+pro3l
+pros3e
+pro1t
+2p1s2
+p2se
+ps4h
+p4sib
+2p1t
+pt5a4b
+p2te
+p2th
+pti3m
+ptu4r
+p4tw
+pub3
+pue4
+puf4
+pul3c
+pu4m
+pu2n
+pur4r
+5pus
+pu2t
+5pute
+put3er
+pu3tr
+put4ted
+put4tin
+p3w
+qu2
+qua5v
+2que.
+3quer
+3quet
+2rab
+ra3bi
+rach4e
+r5acl
+raf5fi
+raf4t
+r2ai
+ra4lo
+ram3et
+r2ami
+rane5o
+ran4ge
+r4ani
+ra5no
+rap3er
+3raphy
+rar5c
+rare4
+rar5ef
+4raril
+r2as
+ration4
+rau4t
+ra5vai
+rav3el
+ra5zie
+r1b
+r4bab
+r4bag
+rbi2
+rbi4f
+r2bin
+r5bine
+rb5ing.
+rb4o
+r1c
+r2ce
+rcen4
+r3cha
+rch4er
+r4ci4b
+rc4it
+rcum3
+r4dal
+rd2i
+rdi4a
+rdi4er
+rdin4
+rd3ing
+2re.
+re1al
+re3an
+re5arr
+5reav
+re4aw
+r5ebrat
+rec5oll
+rec5ompe
+re4cre
+2r2ed
+re1de
+re3dis
+red5it
+re4fac
+re2fe
+re5fer.
+re3fi
+re4fy
+reg3is
+re5it
+re1li
+re5lu
+r4en4ta
+ren4te
+re1o
+re5pin
+re4posi
+re1pu
+r1er4
+r4eri
+rero4
+re5ru
+r4es.
+re4spi
+ress5ib
+res2t
+re5stal
+re3str
+re4ter
+re4ti4z
+re3tri
+reu2
+re5uti
+rev2
+re4val
+rev3el
+r5ev5er.
+re5vers
+re5vert
+re5vil
+rev5olu
+re4wh
+r1f
+rfu4
+r4fy
+rg2
+rg3er
+r3get
+r3gic
+rgi4n
+rg3ing
+r5gis
+r5git
+r1gl
+rgo4n
+r3gu
+rh4
+4rh.
+4rhal
+ri3a
+ria4b
+ri4ag
+r4ib
+rib3a
+ric5as
+r4ice
+4rici
+5ricid
+ri4cie
+r4ico
+rid5er
+ri3enc
+ri3ent
+ri1er
+ri5et
+rig5an
+5rigi
+ril3iz
+5riman
+rim5i
+3rimo
+rim4pe
+r2ina
+5rina.
+rin4d
+rin4e
+rin4g
+ri1o
+5riph
+riph5e
+ri2pl
+rip5lic
+r4iq
+r2is
+r4is.
+ris4c
+r3ish
+ris4p
+ri3ta3b
+r5ited.
+rit5er.
+rit5ers
+rit3ic
+ri2tu
+rit5ur
+riv5el
+riv3et
+riv3i
+r3j
+r3ket
+rk4le
+rk4lin
+r1l
+rle4
+r2led
+r4lig
+r4lis
+rl5ish
+r3lo4
+r1m
+rma5c
+r2me
+r3men
+rm5ers
+rm3ing
+r4ming.
+r4mio
+r3mit
+r4my
+r4nar
+r3nel
+r4ner
+r5net
+r3ney
+r5nic
+r1nis4
+r3nit
+r3niv
+rno4
+r4nou
+r3nu
+rob3l
+r2oc
+ro3cr
+ro4e
+ro1fe
+ro5fil
+rok2
+ro5ker
+5role.
+rom5ete
+rom4i
+rom4p
+ron4al
+ron4e
+ro5n4is
+ron4ta
+1room
+5root
+ro3pel
+rop3ic
+ror3i
+ro5ro
+ros5per
+ros4s
+ro4the
+ro4ty
+ro4va
+rov5el
+rox5
+r1p
+r4pea
+r5pent
+rp5er.
+r3pet
+rp4h4
+rp3ing
+r3po
+r1r4
+rre4c
+rre4f
+r4reo
+rre4st
+rri4o
+rri4v
+rron4
+rros4
+rrys4
+4rs2
+r1sa
+rsa5ti
+rs4c
+r2se
+r3sec
+rse4cr
+rs5er.
+rs3es
+rse5v2
+r1sh
+r5sha
+r1si
+r4si4b
+rson3
+r1sp
+r5sw
+rtach4
+r4tag
+r3teb
+rten4d
+rte5o
+r1ti
+rt5ib
+rti4d
+r4tier
+r3tig
+rtil3i
+rtil4l
+r4tily
+r4tist
+r4tiv
+r3tri
+rtroph4
+rt4sh
+ru3a
+ru3e4l
+ru3en
+ru4gl
+ru3in
+rum3pl
+ru2n
+runk5
+run4ty
+r5usc
+ruti5n
+rv4e
+rvel4i
+r3ven
+rv5er.
+r5vest
+r3vey
+r3vic
+rvi4v
+r3vo
+r1w
+ry4c
+5rynge
+ry3t
+sa2
+2s1ab
+5sack
+sac3ri
+s3act
+5sai
+salar4
+sal4m
+sa5lo
+sal4t
+3sanc
+san4de
+s1ap
+sa5ta
+5sa3tio
+sat3u
+sau4
+sa5vor
+5saw
+4s5b
+scan4t5
+sca4p
+scav5
+s4ced
+4scei
+s4ces
+sch2
+s4cho
+3s4cie
+5scin4d
+scle5
+s4cli
+scof4
+4scopy
+scour5a
+s1cu
+4s5d
+4se.
+se4a
+seas4
+sea5w
+se2c3o
+3sect
+4s4ed
+se4d4e
+s5edl
+se2g
+seg3r
+5sei
+se1le
+5self
+5selv
+4seme
+se4mol
+sen5at
+4senc
+sen4d
+s5ened
+sen5g
+s5enin
+4sentd
+4sentl
+sep3a3
+4s1er.
+s4erl
+ser4o
+4servo
+s1e4s
+se5sh
+ses5t
+5se5um
+5sev
+sev3en
+sew4i
+5sex
+4s3f
+2s3g
+s2h
+2sh.
+sh1er
+5shev
+sh1in
+sh3io
+3ship
+shiv5
+sho4
+sh5old
+shon3
+shor4
+short5
+4shw
+si1b
+s5icc
+3side.
+5sides
+5sidi
+si5diz
+4signa
+sil4e
+4sily
+2s1in
+s2ina
+5sine.
+s3ing
+1sio
+5sion
+sion5a
+si2r
+sir5a
+1sis
+3sitio
+5siu
+1siv
+5siz
+sk2
+4ske
+s3ket
+sk5ine
+sk5ing
+s1l2
+s3lat
+s2le
+slith5
+2s1m
+s3ma
+small3
+sman3
+smel4
+s5men
+5smith
+smol5d4
+s1n4
+1so
+so4ce
+soft3
+so4lab
+sol3d2
+so3lic
+5solv
+3som
+3s4on.
+sona4
+son4g
+s4op
+5sophic
+s5ophiz
+s5ophy
+sor5c
+sor5d
+4sov
+so5vi
+2spa
+5spai
+spa4n
+spen4d
+2s5peo
+2sper
+s2phe
+3spher
+spho5
+spil4
+sp5ing
+4spio
+s4ply
+s4pon
+spor4
+4spot
+squal4l
+s1r
+2ss
+s1sa
+ssas3
+s2s5c
+s3sel
+s5seng
+s4ses.
+s5set
+s1si
+s4sie
+ssi4er
+ss5ily
+s4sl
+ss4li
+s4sn
+sspend4
+ss2t
+ssur5a
+ss5w
+2st.
+s2tag
+s2tal
+stam4i
+5stand
+s4ta4p
+5stat.
+s4ted
+stern5i
+s5tero
+ste2w
+stew5a
+s3the
+st2i
+s4ti.
+s5tia
+s1tic
+5stick
+s4tie
+s3tif
+st3ing
+5stir
+s1tle
+5stock
+stom3a
+5stone
+s4top
+3store
+st4r
+s4trad
+5stratu
+s4tray
+s4trid
+4stry
+4st3w
+s2ty
+1su
+su1al
+su4b3
+su2g3
+su5is
+suit3
+s4ul
+su2m
+sum3i
+su2n
+su2r
+4sv
+sw2
+4swo
+s4y
+4syc
+3syl
+syn5o
+sy5rin
+1ta
+3ta.
+2tab
+ta5bles
+5taboliz
+4taci
+ta5do
+4taf4
+tai5lo
+ta2l
+ta5la
+tal5en
+tal3i
+4talk
+tal4lis
+ta5log
+ta5mo
+tan4de
+tanta3
+ta5per
+ta5pl
+tar4a
+4tarc
+4tare
+ta3riz
+tas4e
+ta5sy
+4tatic
+ta4tur
+taun4
+tav4
+2taw
+tax4is
+2t1b
+4tc
+t4ch
+tch5et
+4t1d
+4te.
+tead4i
+4teat
+tece4
+5tect
+2t1ed
+te5di
+1tee
+teg4
+te5ger
+te5gi
+3tel.
+teli4
+5tels
+te2ma2
+tem3at
+3tenan
+3tenc
+3tend
+4tenes
+1tent
+ten4tag
+1teo
+te4p
+te5pe
+ter3c
+5ter3d
+1teri
+ter5ies
+ter3is
+teri5za
+5ternit
+ter5v
+4tes.
+4tess
+t3ess.
+teth5e
+3teu
+3tex
+4tey
+2t1f
+4t1g
+2th.
+than4
+th2e
+4thea
+th3eas
+the5at
+the3is
+3thet
+th5ic.
+th5ica
+4thil
+5think
+4thl
+th5ode
+5thodic
+4thoo
+thor5it
+tho5riz
+2ths
+1tia
+ti4ab
+ti4ato
+2ti2b
+4tick
+t4ico
+t4ic1u
+5tidi
+3tien
+tif2
+ti5fy
+2tig
+5tigu
+till5in
+1tim
+4timp
+tim5ul
+2t1in
+t2ina
+3tine.
+3tini
+1tio
+ti5oc
+tion5ee
+5tiq
+ti3sa
+3tise
+tis4m
+ti5so
+tis4p
+5tistica
+ti3tl
+ti4u
+1tiv
+tiv4a
+1tiz
+ti3za
+ti3zen
+2tl
+t5la
+tlan4
+3tle.
+3tled
+3tles.
+t5let.
+t5lo
+4t1m
+tme4
+2t1n2
+1to
+to3b
+to5crat
+4todo
+2tof
+to2gr
+to5ic
+to2ma
+tom4b
+to3my
+ton4ali
+to3nat
+4tono
+4tony
+to2ra
+to3rie
+tor5iz
+tos2
+5tour
+4tout
+to3war
+4t1p
+1tra
+tra3b
+tra5ch
+traci4
+trac4it
+trac4te
+tras4
+tra5ven
+trav5es5
+tre5f
+tre4m
+trem5i
+5tria
+tri5ces
+5tricia
+4trics
+2trim
+tri4v
+tro5mi
+tron5i
+4trony
+tro5phe
+tro3sp
+tro3v
+tru5i
+trus4
+4t1s2
+t4sc
+tsh4
+t4sw
+4t3t2
+t4tes
+t5to
+ttu4
+1tu
+tu1a
+tu3ar
+tu4bi
+tud2
+4tue
+4tuf4
+5tu3i
+3tum
+tu4nis
+2t3up.
+3ture
+5turi
+tur3is
+tur5o
+tu5ry
+3tus
+4tv
+tw4
+4t1wa
+twis4
+4two
+1ty
+4tya
+2tyl
+type3
+ty5ph
+4tz
+tz4e
+4uab
+uac4
+ua5na
+uan4i
+uar5ant
+uar2d
+uar3i
+uar3t
+u1at
+uav4
+ub4e
+u4bel
+u3ber
+u4bero
+u1b4i
+u4b5ing
+u3ble.
+u3ca
+uci4b
+uc4it
+ucle3
+u3cr
+u3cu
+u4cy
+ud5d
+ud3er
+ud5est
+udev4
+u1dic
+ud3ied
+ud3ies
+ud5is
+u5dit
+u4don
+ud4si
+u4du
+u4ene
+uens4
+uen4te
+uer4il
+3ufa
+u3fl
+ugh3en
+ug5in
+2ui2
+uil5iz
+ui4n
+u1ing
+uir4m
+uita4
+uiv3
+uiv4er.
+u5j
+4uk
+u1la
+ula5b
+u5lati
+ulch4
+5ulche
+ul3der
+ul4e
+u1len
+ul4gi
+ul2i
+u5lia
+ul3ing
+ul5ish
+ul4lar
+ul4li4b
+ul4lis
+4ul3m
+u1l4o
+4uls
+uls5es
+ul1ti
+ultra3
+4ultu
+u3lu
+ul5ul
+ul5v
+um5ab
+um4bi
+um4bly
+u1mi
+u4m3ing
+umor5o
+um2p
+unat4
+u2ne
+un4er
+u1ni
+un4im
+u2nin
+un5ish
+uni3v
+un3s4
+un4sw
+unt3ab
+un4ter.
+un4tes
+unu4
+un5y
+un5z
+u4ors
+u5os
+u1ou
+u1pe
+uper5s
+u5pia
+up3ing
+u3pl
+up3p
+upport5
+upt5ib
+uptu4
+u1ra
+4ura.
+u4rag
+u4ras
+ur4be
+urc4
+ur1d
+ure5at
+ur4fer
+ur4fr
+u3rif
+uri4fic
+ur1in
+u3rio
+u1rit
+ur3iz
+ur2l
+url5ing.
+ur4no
+uros4
+ur4pe
+ur4pi
+urs5er
+ur5tes
+ur3the
+urti4
+ur4tie
+u3ru
+2us
+u5sad
+u5san
+us4ap
+usc2
+us3ci
+use5a
+u5sia
+u3sic
+us4lin
+us1p
+us5sl
+us5tere
+us1tr
+u2su
+usur4
+uta4b
+u3tat
+4ute.
+4utel
+4uten
+uten4i
+4u1t2i
+uti5liz
+u3tine
+ut3ing
+ution5a
+u4tis
+5u5tiz
+u4t1l
+ut5of
+uto5g
+uto5matic
+u5ton
+u4tou
+uts4
+u3u
+uu4m
+u1v2
+uxu3
+uz4e
+1va
+5va.
+2v1a4b
+vac5il
+vac3u
+vag4
+va4ge
+va5lie
+val5o
+val1u
+va5mo
+va5niz
+va5pi
+var5ied
+3vat
+4ve.
+4ved
+veg3
+v3el.
+vel3li
+ve4lo
+v4ely
+ven3om
+v5enue
+v4erd
+5vere.
+v4erel
+v3eren
+ver5enc
+v4eres
+ver3ie
+vermi4n
+3verse
+ver3th
+v4e2s
+4ves.
+ves4te
+ve4te
+vet3er
+ve4ty
+vi5ali
+5vian
+5vide.
+5vided
+4v3iden
+5vides
+5vidi
+v3if
+vi5gn
+vik4
+2vil
+5vilit
+v3i3liz
+v1in
+4vi4na
+v2inc
+vin5d
+4ving
+vio3l
+v3io4r
+vi1ou
+vi4p
+vi5ro
+vis3it
+vi3so
+vi3su
+4viti
+vit3r
+4vity
+3viv
+5vo.
+voi4
+3vok
+vo4la
+v5ole
+5volt
+3volv
+vom5i
+vor5ab
+vori4
+vo4ry
+vo4ta
+4votee
+4vv4
+v4y
+w5abl
+2wac
+wa5ger
+wag5o
+wait5
+w5al.
+wam4
+war4t
+was4t
+wa1te
+wa5ver
+w1b
+wea5rie
+weath3
+wed4n
+weet3
+wee5v
+wel4l
+w1er
+west3
+w3ev
+whi4
+wi2
+wil2
+will5in
+win4de
+win4g
+wir4
+3wise
+with3
+wiz5
+w4k
+wl4es
+wl3in
+w4no
+1wo2
+wom1
+wo5ven
+w5p
+wra4
+wri4
+writa4
+w3sh
+ws4l
+ws4pe
+w5s4t
+4wt
+wy4
+x1a
+xac5e
+x4ago
+xam3
+x4ap
+xas5
+x3c2
+x1e
+xe4cuto
+x2ed
+xer4i
+xe5ro
+x1h
+xhi2
+xhil5
+xhu4
+x3i
+xi5a
+xi5c
+xi5di
+x4ime
+xi5miz
+x3o
+x4ob
+x3p
+xpan4d
+xpecto5
+xpe3d
+x1t2
+x3ti
+x1u
+xu3a
+xx4
+y5ac
+3yar4
+y5at
+y1b
+y1c
+y2ce
+yc5er
+y3ch
+ych4e
+ycom4
+ycot4
+y1d
+y5ee
+y1er
+y4erf
+yes4
+ye4t
+y5gi
+4y3h
+y1i
+y3la
+ylla5bl
+y3lo
+y5lu
+ymbol5
+yme4
+ympa3
+yn3chr
+yn5d
+yn5g
+yn5ic
+5ynx
+y1o4
+yo5d
+y4o5g
+yom4
+yo5net
+y4ons
+y4os
+y4ped
+yper5
+yp3i
+y3po
+y4poc
+yp2ta
+y5pu
+yra5m
+yr5ia
+y3ro
+yr4r
+ys4c
+y3s2e
+ys3ica
+ys3io
+3ysis
+y4so
+yss4
+ys1t
+ys3ta
+ysur4
+y3thin
+yt3ic
+y1w
+za1
+z5a2b
+zar2
+4zb
+2ze
+ze4n
+ze4p
+z1er
+ze3ro
+zet4
+2z1i
+z4il
+z4is
+5zl
+4zm
+1zo
+zo4m
+zo5ol
+zte4
+4z1z2
+z4zy
diff --git a/hyph/hyph/engluk.lh b/hyph/hyph/engluk.lh
new file mode 100644
index 0000000..b27ccd9
--- /dev/null
+++ b/hyph/hyph/engluk.lh
@@ -0,0 +1,8617 @@
+Lout hyphenation information
+%
+% COPYRIGHT (C) 1996 Jeffrey H. Kingston
+% with contributions by Dominik Wujastyk and Graham Toal (see details below)
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either Version 3, or (at your option)
+% any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program; if not, write to the Free Software
+% Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA
+
+% Created by Jeff Kingston, 16 November 1996, from a TeX
+% hyphenation file with the following header comment:
+%
+% File: ukhyphen.tex
+% TeX hyphenation patterns for UK English [NOT TO BE CHANGED IN ANY WAY!]
+% Version 1.0. Released 17 April 1992.
+%
+% Created by Dominik Wujastyk and Graham Toal using Frank Liang's PATGEN 1.0.
+% Like the US patterns, these UK patterns correctly hyphenate about 90% of
+% the words in the input list, and produce no hyphens not in the list
+% (see TeXbook pp. 451--2).
+%
+% These patterns are based on a file of 114925 British-hyphenated words
+% generously made available to Dominik Wujastyk by Oxford University Press.
+% This list of words is copyright to the OUP and may not be redistributed.
+% The hyphenation break points in the words in the abovementioned file is
+% also copyright to the OUP.
+%
+% We are very grateful to Oxford University Press for allowing us to use
+% their list of hyphenated words to produce the following TeX hyphenation
+% patterns. This file of hyphenation patterns may be freely distributed.
+%
+% These patterns require a value of about 14000 for TeX's pattern memory size.
+%
+
+Classes:
+@!$%^&*()_-+=~`{[}]:;'|<,.>?/0123456789
+aA
+bB
+cC
+dD
+eE
+fF
+gG
+hH
+iI
+jJ
+kK
+lL
+mM
+nN
+oO
+pP
+qQ
+rR
+sS
+tT
+uU
+vV
+wW
+xX
+yY
+zZ
+
+Exceptions:
+as-so-ciate
+as-so-ciates
+dec-li-na-tion
+oblig-a-tory
+phil-an-thropic
+present
+presents
+project
+projects
+reci-procity
+re-cog-ni-zance
+ref-or-ma-tion
+ret-ri-bu-tion
+ta-ble
+
+Patterns:
+.ab4i
+.ab3ol
+.ace4
+.acet3
+.ach4
+.ac5tiva
+.ad4din
+.ad3e
+.ad3o
+.ae5d
+.aer3i
+.af3f
+.af3t
+.ag4a
+.ag5n
+.air3
+.al5im
+.al1k
+.al3le
+.am5ar
+.ama5te
+.am2i
+.am3pe
+.am3ph
+.an1
+.ana3b
+.ana3s
+.and2
+.an5da
+.an4el
+.an4en
+.an4gl
+.an4on.
+.an3s
+.ant3a
+.an3ti3
+.ant4ic
+.an4t5o
+.any5
+.aph5or
+.ap4i
+.ar5ab
+.ar5ap
+.ar4ci
+.ar5d
+.ar4e
+.ari4
+.ar4ise
+.ar4isi
+.ar5sen
+.art5icl
+.as1
+.as4q
+.as5sib
+.at5ar
+.ateli4
+.at5omise
+.at5omiz
+.at3r
+.at3t
+.au3b
+.au3g4u
+.aur4e5
+.aus5
+.authen5
+.av4
+.av5era
+.bap5tism
+.barri5c
+.bas4i
+.ba5sic
+.be3di
+.be3lo
+.be5r4a
+.be5sm
+.bi4er
+.blaz5o
+.bo3lo
+.bos5om
+.boun4d
+.bov4
+.bra5ch
+.bre2
+.burn5i
+.ca3de
+.ca4gin
+.cam5i
+.cam3o
+.can1
+.can5ta
+.ca5pitu
+.car4i
+.cas5ual
+.ca4ti
+.cen5so
+.cen5tena
+.cent5ri
+.cer4i
+.ch4
+.cit4a
+.clem5e
+.clima5to
+.co5it
+.co3pa
+.cop5ro
+.co3ru
+.co3si
+.co5ter
+.cotyle5
+.cri5tici
+.custom5
+.dav5
+.dea5co
+.de5lec
+.del5eg
+.de3li
+.deli5r
+.de1m
+.de5nit
+.de3no
+.der2
+.de3ra
+.de5res
+.de3ri
+.de5scrib
+.de5serv
+.de5signe
+.de5sir
+.de5sis
+.de5spoi
+.determ5i
+.de3ve
+.de4w
+.di4al.
+.dia3s
+.di4at
+.din4a
+.dio5c
+.do2
+.do4e
+.domest5
+.du4al.
+.du4c
+.dys3
+.east5
+.echin5
+.eco3
+.ec3t
+.ed5em
+.ed4it.
+.ed4iti
+.eg4
+.ei3d
+.ei5r
+.el3ev3
+.el2i
+.elu5s
+.em3b
+.em5in
+.emp4
+.em5py
+.en1
+.en5c
+.en4ded
+.en3s
+.ent2
+.en5ta
+.eos5
+.epi1
+.epi3d
+.er2a
+.er5em5
+.er4i4
+.er4o2
+.eros4
+.erot3
+.er4ri
+.es1
+.escal5
+.es3p
+.es3t
+.etern5
+.eth3e
+.eu1
+.eur4
+.eval3
+.evol5ut
+.ew4
+.ex1
+.ex3a
+.eye3
+.fal4le
+.far4i
+.fec5unda
+.fen4d
+.feoff5
+.fi2
+.fi5lia
+.fil5tr
+.fin5ess
+.fin3g
+.fi5n4it
+.fis4c5
+.fo3c
+.fran5ch
+.fu5ga
+.ga4m
+.gam5et
+.gen4et
+.ge5neti
+.gen5ia
+.ge3ro
+.glor5io
+.gnost4
+.go3no
+.gos3
+.hab2
+.ha5bili
+.hama5
+.han4de
+.hast5i
+.he4i
+.hem5a
+.hi2
+.hi3b
+.ho2l
+.ho5rol
+.hov3
+.hy3lo
+.ico3s
+.idi2
+.ig3
+.ig1n
+.il4i
+.im5b
+.in1
+.in3d
+.in3e2
+.in2i
+.in3o
+.in3t
+.invest5i
+.ir3r
+.is4c
+.is4li
+.is4o
+.iso5m
+.ka5ro
+.ki4e
+.kin3e
+.lab4o
+.la4me
+.lam5enta
+.lan5i
+.lash4e
+.le4m
+.len5ti
+.le2p
+.lep5r
+.les5son
+.le5van
+.librar5
+.lig3a
+.li3o
+.li4ons
+.li4p
+.loc3a
+.lo4gia
+.lo2p
+.loph3
+.lous5i
+.lov5er
+.lub3
+.lyo3
+.mac5u
+.mal5ad5
+.ma5lin
+.mar5ti
+.math5
+.me5lodio
+.ment4
+.men5ta
+.me5rid
+.me5rin
+.met4er
+.mi4e
+.mi3gr
+.min5ue
+.mirk4
+.mis1
+.mi5to
+.mo3bi
+.mo5lec
+.mon3a
+.mor5ti
+.mu3ni
+.mu3si
+.musi5co
+.myth3
+.na5k
+.nari4
+.nast4
+.nas5ti
+.nec3t
+.ni4c
+.ni5tro
+.no4c
+.nom3o
+.nos3t
+.no5tic
+.nucle5
+.obed5
+.ob3el
+.ob3l
+.od4
+.oed5
+.oe5so
+.of5t
+.oi4
+.ol4d
+.ome2
+.om5el
+.on4ce
+.on4e
+.op2i
+.opt5a
+.or1
+.or4at4
+.ora5tori
+.or5che
+.or3d
+.ore4
+.or3eo
+.or4i
+.orner4
+.or2o
+.os1
+.osi4
+.oth5
+.out1
+.ov4
+.pal5i
+.para5dis
+.par5af
+.para5t
+.pa5ta
+.pa4tio
+.pec3t4
+.pecu3
+.ped3e
+.pend4
+.pen5de
+.pep3t
+.peri5n
+.perse5c
+.pe5titi
+.ph2
+.phe5nom
+.phon4i
+.pi2e
+.pi3la
+.plast4
+.plic4
+.plica4
+.plos4
+.po3la
+.po5lite
+.po2p
+.pop5l
+.po5sitio
+.pos5si
+.pro5bat
+.pur4r
+.put4te
+.ra5cem
+.ran5gi
+.re3ca
+.ref5ere
+.re5gar
+.re1i
+.re5lin
+.re1m
+.re5o
+.res5ci
+.re5sen
+.re5spo
+.re5stat
+.re5store
+.re5str
+.re3ta
+.re5u
+.re3w
+.rib5a
+.rin4
+.rit2
+.rol4la
+.ros3a
+.sa2
+.sac5r
+.sal4i
+.sa5lin
+.salt5er
+.sanc5
+.sap5a
+.sa3vo
+.sci3e
+.sea3s
+.sect4
+.sec5to
+.se3gr
+.sen3t
+.se1q
+.ser4ie
+.ses1
+.sev5era
+.sh2
+.si5gno
+.sis3
+.st4
+.stat4o
+.stra5to
+.string5i
+.su5da
+.sulph5a
+.sul3t
+.tact4i
+.tac5tic
+.ta4m
+.tamar5
+.tar5o
+.tect4
+.tel5a
+.tell5e
+.te4m
+.te5ra5t
+.ter4p
+.th4
+.tho4
+.thol4
+.ti2
+.til4
+.ti5ni
+.tit4is
+.tor1
+.tran4c
+.tri5bal
+.tri3d
+.trin4a
+.tri5sti
+.tro4ph
+.troph5o
+.tro4v
+.tular5
+.turb4
+.turi4
+.tu5te
+.tu3to
+.ul4l
+.ulti5mat
+.un5ce
+.un5ch
+.un3d2
+.under5
+.un3e
+.un3g
+.uni3c
+.uni3o
+.un3k4
+.un5s
+.un3t4
+.un5u
+.up1
+.up3l
+.ura4
+.ur5eth
+.ur4o
+.va5led
+.ve2
+.vec5
+.ve5lo
+.vent5il
+.ver4ie
+.ver3n
+.vic5to
+.vi2s
+.vis3i
+.vi5so
+.vo1c
+.vo5lut
+.wine5s
+.xy3l
+.za5r
+a4a
+1ab
+2ab.
+2aba
+ab5are
+abay4
+2abb
+ab5ber
+2abe4
+ab3erd
+ab3err
+a3bet
+ab1ic
+a3bie
+2abin
+4abio
+abi5on
+ab3ita
+ab4itu
+ab3la
+abli4
+4abolic
+ab3om
+ab3ota
+3about
+ab1r
+2abs.
+ab1ul
+abu4lo
+ab3use
+ab3usi
+2aby
+ac2a
+ac5abl
+ac3al
+5acanth
+ac5ard
+a5cat
+ach5al
+a5chini
+ach5ism
+achro4
+ach5ur
+2aci
+a4cic
+aci4ers
+acif4
+4acit
+ack5a
+ac3li
+4aco.
+aco3d
+ac5onr
+4acos
+4acou
+ac1r
+ac3ry
+act5ate
+act5ile
+ac2to
+act5ory
+ac2t5r
+ac5uat
+a5dai
+ada3v
+4adee
+ad5eni
+ad4ha
+ad3ica
+a5dif
+4adil
+adi4op
+adi4p
+adis4i
+a3diti
+3adju
+5admit
+a2do
+4adoe
+4adoi
+ad3ol
+a3dos
+ad1ow
+ad1r
+adram4
+4a2du
+ad3ula
+ad3um
+4ady
+ae5a
+ae4cit
+aeco3
+4aed
+aed5is
+ae5g
+ae3on
+ae5p
+aerody5
+ae4s
+ae5si
+aes3t
+aet4a
+aeth4
+aet4or.
+aev3a
+4af.
+4afe
+af5ta
+a4fu
+ag4ari
+4ageri
+a5ghe
+a5gia
+agi4as
+4agino
+4agl
+agli4
+4ag1n
+ag3oni
+agor4a
+ag5ot
+a2gr
+ag3ri
+agru5
+2ah
+a1h2a
+ahar2
+aha5ra
+a1he
+ah4n
+a5hoo
+2ai2
+4ai.
+ai3a
+a1ic
+aid4a
+aid5er
+aig2
+ai5gu
+ail3er
+ail3o
+aim5er
+ain5ders
+ai5nea
+a3ing.
+ain3i
+ain5o
+aint5er
+air5a
+air5p
+air3s
+ais1i
+a5ism
+2a1j
+a4ju
+2ak
+akel4
+ak5u
+al5abl
+alact4
+a1lae
+al5ais
+ala3ma
+al5ance
+al3at
+a5lav
+alc3at
+al3ch
+ald5ri
+2ale
+a3lec
+aleg4
+ale5ma
+al5ende
+a1leo
+a2let
+al3ibr
+ali4ci
+al5ics
+al1id
+al3if
+5alig
+al1in
+a5lini
+alin5o
+al5ipe
+al5ipot
+4alis.
+4aliu
+4alk
+alk5ie
+al4lab
+al4lag
+alli5an
+allig4
+al4lish
+a5loe
+al3ogr
+a3lom
+a3loo
+al1or
+al4orim
+alos4
+a4lou
+al3ous
+a5low
+al5pen
+al3ph
+al5tati
+al3tie
+alu3b
+al5ued
+al3ues
+a5lumnia
+al1va
+al5ver
+alv5u
+2a1ly4
+a5lyn
+2a2m
+a5mad
+ama4g
+aman5d
+a5marine
+a3mas.
+am1at
+a5m4atic
+am5atu
+am4bin
+3ambu
+am5elo
+a3men
+amen4d
+am3era
+am5erl
+am1i
+ami2c
+am5ica
+amic5r
+3amid
+a3mili
+am5ily
+amini4f
+am5iniz
+aminos4
+a5mis.
+a4mium.
+a3mon
+amor5a
+amort3
+am5ose
+am2p
+am5peri
+amphi5g
+amp3li
+ampo5l
+am3ul
+amyl5
+a2n
+an2a
+a5nadi
+an3ae
+an3age
+ana5k
+an3ali
+an3arc
+a5nast
+an4con
+an3d4at
+and5au
+and5eer
+an5del
+an5dif
+and5ist
+an5dit
+an4doni
+an4ea
+an5eer
+an3ell
+anel5li
+an3eu
+an3gan
+angov4
+an4gur
+4anh
+an3ic
+ani3f
+an5ifo
+4anig
+an5ion
+anis5te
+4anity
+4aniu
+an5no
+4anny
+an1o
+an2oe
+an3oma
+anor3
+an2os
+an5ot
+an2s
+an3sc
+an4sco
+ans3il
+an4sur
+an2t2a
+ant5abl
+an3tal
+an5tam
+an2te
+1anth
+an4thi
+3anthr
+4antic
+an4tie
+an4ting
+ant4iv
+an4tone
+ant4r
+an4tus
+an5tym
+an3ul
+an3um.
+an5ums
+a3nur
+a5nut
+an2y
+an5ya
+a5nyi
+2ao
+aol3i
+5aow
+2ap
+4ap.
+4apa
+a1pac
+ap3al
+ap5aro
+ape5li
+a5peu
+aph5em
+aph3i
+aph5ol
+aphyl3
+ap1i
+ap5icu
+ap3in
+ap4ine
+a5pir
+a3plan
+ap5li
+apo5str
+apo3th
+a2pr
+ap5ron
+4aps
+apt5at
+apu5lar
+a5pun
+a4q
+a5qui
+a2r
+4arabi
+ara5bo
+aract4i
+ara2g
+ar3age
+ar4aged
+ar5agi
+ar3ago
+a3raj
+ar3all
+ara3m
+aran4g
+aran5te
+ar5apa
+ar1at
+a3rau
+ara3v
+ar3ba
+arb5et
+ar4bid
+ar4bl
+arb3li
+ar4bul
+ar5chet
+arch5o
+ar5dina
+ar4done
+ar3en
+aren5d
+ar5ett
+ar3ev5
+ar5gh
+ar3gu
+ar3h
+ar1i
+ar5iff
+ar4ill
+a5ri5net
+ar5ini
+a5rishi
+arm3er
+ar5mit
+ar3nal
+ar3nis
+ar3od
+ar5oid
+aro4mas
+aro4n
+a5roti
+a5rouc
+ar3ox
+arp5ers
+ar4pu
+2arr
+ar2rh
+ar2s
+ars5al
+ar3so
+art5at
+ar2th
+arth4e
+arth3r
+ar5tiz
+2aru
+ar3um
+ar5un4
+a3ryo
+a5ryt
+ar5z
+as1a
+as4af
+asan2
+2asc
+as5con
+as5cot
+as2cr
+as2e
+as3ect
+4ased
+asep4
+ash5ay
+ash5il
+as5ily
+as3in
+a5sio
+a3sit
+as5iv
+ask5er
+aski4
+as4la
+as4lo
+2aso
+as5och
+a4soned
+as5or
+as3ph
+ass2
+assa5gi
+ass5ibl
+as4sil
+assit5
+2asta
+as4tat
+as4tia
+as3tis
+as4tit
+4asto2
+as3tra
+as4tri
+as1u
+as4un
+as5ur
+2a2ta
+4atabi
+a5talis
+atam4
+ata3p
+atar3a
+ata3s
+ata3t4
+at3eau
+at3ech
+at5eer
+a5tel.
+ate5le
+at5enat
+at3ent
+4ater
+at3era
+at5ernis
+at5erniz
+4atess
+at5et
+4a2th
+ath3a
+a3then
+ath5erin
+ath5ero
+ath5ete
+ath3i
+ath3od
+a5thon
+ath5r
+4a3tia
+ati2c
+at5icis
+ati5cit
+at5iciz
+a2tif
+a4t1i4l
+a4tim
+a2t3in
+4atina
+at5ing
+4at4is.
+at1it
+atit3u
+atitud5i
+4atiu
+at4ivi
+a5tiviz
+a2to
+5at5od
+4atog
+2atol
+4aton
+a3too
+a4tops
+a5torian
+a4tory
+atos4
+a5toz
+2a2tr
+at3ra
+a4tre
+5at5ress
+at1ri
+atric5u
+at3ron
+at5rou
+at4tag
+2a2tu
+at1ul
+atu4m
+at3ura
+at3urg
+4a2ty
+2au2
+4au.
+aub5i
+4auc
+au5cer
+auc3o
+aud5er
+audic4
+aul3i
+aul4t
+aul5ted
+ault5er
+ault5i
+au3ma
+aun2
+aun5chie
+aun3d
+aun4dre
+au5reo
+aur4o
+au5ror
+4aus.
+aus5er
+aus5p
+aus4ted
+aut3ar
+aut3er
+au3th
+2av
+av4ab
+ava4g
+av3age
+ava5la
+av5alr
+av5ant
+av5ar
+avas3
+av3end
+av3ern
+av3ig
+aviol4
+av1is
+aw5er.
+aw5ers
+aw1i
+aw5nie
+aw5y
+a4x
+ax2id
+4ay
+ay5la
+ay3m
+ayn4
+ays2
+ay5si
+ay5sta
+ayth4
+2az2
+az3ar
+aze4
+az5ee
+azyg4
+azz4l
+2ba.
+ba5bir
+3back
+baen4
+bag4a
+5bah
+ba4i
+bal3a
+balm5i
+ba5lon
+bal5u
+bam4a
+ban4a
+ba5nan
+b4ane
+5bang
+b4aniti
+b4ans
+ba4p1
+5barb
+bar4d
+bardi4
+bar4n
+ba5rom
+bar3on
+5bars
+1bas
+bas4te
+ba4th4
+3batic
+ba5tio
+bat5on
+battle5
+2b1b2
+b4bata
+b3bli
+b4bone
+b1c2
+bcord4
+2b1d
+bdeac5
+bde4b
+bdi4v
+b2e
+4be.
+3bea
+4beas
+be3ca
+3becu
+2bed
+be3da
+bed5el
+bed2i
+be4do
+be5dra
+be4du
+5bee
+3bef
+be3go
+be5gr
+be3gu
+1bel
+be3la
+2bele
+be3lit
+bel4t
+be3m
+ben4d
+bend5a
+bend5er
+be1ne
+be5nig
+be5nu
+4beo
+be3q
+2bere
+berga5m
+berl4
+5berr
+ber5s
+b5ertin
+be1s2
+2bes.
+be3sl
+be3tr
+be3w
+2b1f
+bfa4
+4b1h
+b4ha
+2bi.
+1bia
+bi4b1
+bicen5
+3b2id
+bid5i
+b4ie
+bi4ers
+bif4
+bi4fid.
+bi5ga
+bigu3
+b1il
+b2ile
+5biles
+3b2ill
+4bim
+bimet5
+5bina
+5bin4d
+bind3e
+bin5et
+bin5i4
+1bi2o
+bio3l
+bio5m
+bi3ou
+bip4
+bi5q
+bir4
+bi3re4
+bi5rus
+b2is
+5bism
+bis4o
+bisul5
+3bitua
+4bity
+bi5ve
+b1j
+4b5k4
+2bl2
+5blac
+blag4
+b3lan
+5blast
+bla5tu
+blem5at
+3bler
+5blesp
+4blik
+blim3a
+bli3o
+bli2q
+b3lis
+4bly
+2b1m
+bment4
+bmi4
+4b1n
+bo2
+4bo.
+3boa
+bo5am
+5bob
+bod5i
+bo5h
+2boid
+4boke
+bol4e
+4boled
+bol3i
+bol4t
+3bon
+bon4c
+bon4e
+bon4ie
+boni4f
+bon4sp
+1boo
+b3orat
+bor3d
+bor5ee
+bor5et
+3bori
+bor5ic
+bor5io
+bor4n
+bot3an
+5boti
+boun5ti
+3bour
+bous4
+bow2
+bow3s
+4boxy
+5boy
+br4
+3brach
+4bral
+bram4
+b2ran
+bran4d
+4bre.
+b4reas
+4b2res
+brev5et
+b2rid
+5brief
+bring5
+bri4os
+b5rist
+b4roa
+bro4ma
+bros4
+brum4
+4bry.
+4b1s2
+b3sc
+bscon4
+bsen4
+bserv5an
+b5si
+bsin4
+bso2
+bsol3e
+bso3lu
+b4stac
+bstupe5
+2b1t
+b5tlet
+4bu.
+5bub
+buf5fer
+b4uli
+b4ulos
+bun2
+bun4a
+b5u5nat
+bunt4
+bur3e
+bur4ri
+busi4e
+buss2
+bus5si
+3bust
+bu5tar
+b3ute
+b5utin
+3butio
+but4iv
+b5ut5o
+b1v
+4b3w
+2by
+4by.
+3byi
+bys4
+5byt
+2ca.
+cab5in
+c4ace
+caco3
+cad4r
+5caf
+ca3go
+5cai
+5cak
+c1al
+c4ala
+ca5laman
+cal5ar
+3calc
+ca5lef
+call5in
+cal4m
+ca3ly
+ca3ma
+cam4i
+ca5nar
+c2an4e
+c4ano
+ca3noe
+can5tar
+can5ted
+can4tic
+can4tr
+5cao
+1cap
+ca5pil
+capt4
+cap3ti
+cap3u
+1car
+ca3ra5c
+car5ame
+ca3ree
+ca3r4i3c
+car3if
+car5m
+car3ni
+car3ol
+car5on
+car5oo
+ca3rou
+car4v
+case5
+cashi4
+3cas3s
+cas5tig
+3casu3
+c1at
+c4at.
+c2atc
+c4atom
+ca3t2r
+c4ats
+cat4u
+3cau
+caulk4i
+cav3il
+3cay
+c1c4
+ccent5r
+cces4sa
+c3ch
+cci3d4
+ccip4
+ccle3
+4ce.
+4ceab
+cean3
+3ceas
+ce4ci
+2ced
+5ceda
+ce3dar
+3cede
+3cedi
+4cef
+ce5g
+3ceiv
+cel3ai
+cel5ib5
+5cell
+cel5lin
+celo4
+ce5lom
+4cely
+2cem
+ce4met
+3cemi
+ce4mo
+1cen2
+5cenc
+cen5ci
+cen5ded
+cend5en
+cend5er
+cen3i
+2cenn
+3cent
+cent4a
+cen5ted
+cen5ter.
+cen5ters
+cen5tes
+1cep
+cept3a
+cep5tic
+3cera
+cer4bi
+3cerd
+ce3rem
+5cern
+5cess
+cest5o
+ces5tr
+ce2t
+cew4
+2ch
+4ch.
+4chab
+3chae
+3chai
+cham5per
+chan5gi
+cha3pa
+chec4
+4ched
+3chee
+3chem
+che3ol
+ch1er
+ch4eri
+5cherin
+ch4erl
+4ches
+3chete
+ch5eu
+che5va
+3chew
+ch5ex
+5chi.
+3chia
+3chico
+ch3ily
+ch4in.
+ch3inn
+3chio
+5chip
+chizz4
+ch5k
+5chlor
+4chm
+1cho
+cho3a
+5choc
+4choi
+ch5oid
+3chor
+4chored
+chor5ol
+4choso
+3chot
+4choti
+ch5ous
+chow5
+3chr
+chur4
+3chut
+5chyd
+3chyl
+3chym
+1c2i2
+4ci.
+4ciac
+cia4m
+ci3ca
+4cids
+4cie.
+ci3er
+ci3est
+ci5et
+ci3f
+cifi4
+4cig
+ci3ga
+cigar5
+3cil
+cil5lin
+2cim
+cim3a
+ci3me
+5cimen
+4cinab
+4cind
+cine5a
+cine5mat
+ci5ness
+4cint
+ci3ol
+ci5om
+ci4po
+cisi4
+cit3r
+ck1
+ckar5
+cka5t
+c4ke
+ck5if
+ck4sc
+cl2
+cla5rif
+3clas
+c2le2
+2cle.
+c5lec
+clemat4
+clev3
+cli1m
+c3ling
+cli2q
+clo4q
+c4lotr
+clue4
+clyp5
+5clys
+cn2
+c3ni
+1c2o2
+4co.
+3coa
+co5ba
+3coc
+co3ci
+co5cu
+co3dic
+co3dif
+4cody
+3coe
+co5et
+co3gr
+4c3oid
+co3inc
+4col.
+col3a
+co3log
+5colou
+co5ly
+co5mas
+co4me
+co3mo4
+comp4
+con1
+con4ati
+con4ch
+cond5er
+con4ey
+con4ie
+con3s
+con3t
+conta5d
+3coo
+coop4
+co3or
+cop4e
+co3ph
+co5pl
+co3po
+cop4t
+2cora
+cor5ded
+cord5er
+4cored
+co3rel
+3corn
+4coro
+co5rol
+5cort
+3cos.
+cost3a
+cost5er
+co5ta
+3co3tr
+5coty
+cous5t
+cov1
+co3va
+cow5a
+coz4
+co5zi
+c1q
+cr2
+5craf
+craft5i
+c4ran
+5crani
+cra5niu
+cras3t
+cra4te
+c2re
+4crean
+cre3at
+cre4p3
+5creti
+cre4to
+cret5or
+cri3l
+cron4
+crost4
+4crou
+5c4rus
+cry2
+crym3
+cryo3
+4c5s4
+csim5
+2ct
+c2ta
+c3tac
+ctac5u
+c5ta5g
+ct1an
+ct5ant
+c5taria
+c3tato
+c1te
+c4tea
+c2t5ee
+c4tent
+cter4ia
+ct5es
+ct5et
+ct2ic
+c5ticia
+c4tics
+ctifi4e
+c3tim
+ct4in.
+ct4ina
+ct5ing
+c3tini
+c5tin5o
+c5tio
+c3t2is
+c3tit
+c4titu
+c4tity
+ct5ive
+ct4ivit
+ct5olo
+c1tom
+c3ton
+c5toris
+c5toriz
+c1tr
+c2tre
+ctro5t
+c1tu
+c2tum
+c1ty
+cub3at
+c4uf
+cu5ity
+cul5ab
+c2uli
+cull5er
+cull5in
+1c2ult
+cu4mi
+5cuna
+cun4e
+5cuni
+5cuol
+cu5pa
+cu3pi
+c3upl
+1cur
+cur4er
+cur5ial
+4cur4o
+1cus
+cus5a
+c3utiv
+c3utr
+5cuu
+cu5v
+2cy.
+cy4bi
+1cyc
+cyl3
+cy4m
+cy5no
+cys4
+cys5to
+cy4t
+cz2
+4da.
+d4abr
+1d2ac
+dach4
+d5ache
+3dact
+d1ag
+d4a4gi
+d4ale
+d4alg
+dal5ler
+dam5a
+3dame
+d3ami
+da5mu
+3dang
+d1an4t
+d3ap
+d3ard
+5darm
+3d4as2
+dast5a
+d1at
+dativ4
+dat4u
+daugh3
+daun5te
+3dav
+d3b
+d3c4
+d1d4
+d4dere
+d3di
+d3dler
+d3dli
+d3dyi
+2de.
+deac3t
+de5aw
+de4bi
+deb5it
+3dec
+de5cant
+de4cil
+de1cr
+4dect
+ded3i
+defor5e
+de4fy.
+de3g
+de4gu
+de3io
+5de3is
+de3lat
+deli4e
+del5ler
+del5li
+de5lo
+1d4em
+4demie
+4dem4is
+demo4n
+de4mons
+de3mor
+de4mos
+4demy
+de1n2a
+den4d
+4dene
+d3enh
+deni4e
+dens5a
+dens5er
+den5tit
+de3od
+deo3l
+deon2
+deont5
+de1p
+depen4
+deposi4
+de2pu
+d3eq
+derac4
+de3rai
+d4ere
+4dered
+de5reg
+3derer
+1deri
+der3k
+3derm
+der4mi
+der5min
+5derne
+3dero4
+der5os
+der3s
+5deru
+4des.
+de3sa
+5desc
+des4ca
+de5scal
+de3sec
+des4i
+de3sid
+des5igna
+des1p
+des5pon
+de3sq
+d3est.
+des3ti
+1de1t
+de3tes
+de5th
+de2ti
+dev3il
+de3vis
+de3vit
+de4voi
+devol5u
+3dex
+2d5f
+dfol4
+d2g
+dg4a
+dgel4
+d4gen
+d3gr
+4d1h
+dhot4
+d4hu
+4di.
+1dia
+di2ad
+3diar
+diat5om
+4d1ib
+d1ic.
+dic5am
+di4ce
+di3ch
+d5icl
+dic5ol
+1dict
+dic5tat
+dic4te
+5dicul
+d5icur
+1did
+di4ers
+3di3ev
+d4ifo
+dig3al
+di3gam
+dil4
+5dill
+dilo4
+di3lu
+di5mer
+dimet4
+di1mi
+2d1in
+din4e
+din5gi
+di5nos
+3di1o
+dio4c
+di4ola
+dip5t
+3dire
+di3ri
+4d5iro
+di4s1
+d4isc
+disen3
+3disia
+3diss
+d4itas
+d4iter
+dithe4
+d3ito
+ditor3
+2dity
+1diu
+1di1v2
+di4val
+di5vine
+dix4i
+d1j
+2dl4
+d1la
+5dlef
+5dlest
+3dlew
+dlin4
+d1lo
+d5lu
+2d1m
+4d1n2
+1do
+4do.
+d4ob
+do4c3u
+dog4a
+do4j
+d4ol.
+dol3en
+do5line
+dol5it
+do4lon
+d4ols
+5dom.
+doman4
+domin5
+dom5ino
+dom5it
+do5mo
+don4at
+4dony
+3doo
+d2or
+4dor.
+dor4m
+dort4
+d4os
+do5sim
+dossi4
+dot1a
+dot4tin
+2dous
+d4own
+3dox
+d1p
+dr2
+d5rail
+d3ral
+3dram
+dran4
+d4ras
+drast4
+3drel
+dres4
+dress5o
+dri4e
+d4rif
+dri4g3
+d4rom
+dropho4
+drunk3
+4d1s2
+d5sl
+ds3m
+ds4mi
+d4sw
+dt4
+dt5ho
+1du
+2du.
+du1at
+3duc
+duch5
+duci5an
+du4co
+du5eli
+du5ell
+du5en
+du5ett
+du5in
+dul3c
+d3ule
+dul4l
+dum4be
+dun4a
+d5un4c
+du2p
+du3pl
+5duro
+d5use
+dust5er
+du3u
+d1v
+dver2
+dvert3
+dvoc5at
+2d1w
+dwell3
+2d2y
+dy4ad.
+dy5ar
+5dy4e
+5dyk
+dyl2
+dyll3
+5dymi
+3dyn
+dys3p
+d3zo
+ea2
+4eab
+e1act
+eac4te
+ea5cu
+e5add
+ead3er
+ead1i
+ead3li
+ea4g
+eak1
+eal3a
+eal3er
+ea3log
+eam4bl
+eam3er
+ean5i
+eap2
+eap5er
+e3app
+ear3a
+ear3er
+ear4li
+e5ar2r
+ear4te
+earth5i
+eas5er
+ea4soni
+e1as1s
+eassem4
+eas4t
+east5i
+eat5eni
+eat3er
+eat5ie
+e3atif
+eatit4
+eat4itu
+e3atri
+e4atu
+eau3
+eav5i
+eavi4e
+eav5ou
+eaz5i
+e1b
+ebar4
+eb2b
+ebe4
+e4bel.
+e4bels
+e2ben
+eb5et
+eb2i
+e5bil
+e4bin
+e4bis
+e4bl
+e4bos
+ebot3o
+e2br
+eb1ra
+eb2t
+e4buc
+ebus5i
+ec2a
+ec3ade
+ecad5en
+ecal5e
+e5cam
+e4capo
+ec3at
+ec5ath
+e1ce
+ecent5o
+ech3i
+e4cib
+eci4f
+ecip5i
+e1cl
+ec3lip
+econ4sc
+econstit5
+ec3ora
+ec5oro
+ec3rat
+ec5rean
+e4crem
+ec1ro
+ect5ati
+ec4ter
+ecti4c
+ec4tit
+ec4t5us
+ec1ul
+e5culi
+2ed
+e5dans
+e2dat
+ede2
+e4ded
+e5deh
+e4dele
+edes3t
+ede3te
+edeter5
+e3dev
+e5dew
+ed4g
+edi4als
+ed5ical
+ed5ics
+ediges4
+ed5igr
+ed3ime
+ed1it
+edi2v
+ediv5id
+ed3li
+edor4
+e4dox
+ed1ro
+edu5cer
+e2dul
+ed3ulo
+e4d5ur
+ee4ce
+eed3er
+ee4do
+ee2f
+ee5g
+ee1i
+ee2l1i
+ee2m
+eem5er
+eem3i
+eep1
+ee4pa
+eer4ine
+eesi4
+ee3to
+e1f
+efact5o
+efal4
+ef5eree
+ef5inite
+e4fite
+ef4l
+efor5est
+2efu
+e4fug
+efut5a
+egel3
+egi5a
+e4gib
+e3gla
+eg3le
+eg4mi
+eg5nab
+e5g4on
+e2gr
+e5gur
+e1h2
+e5ho
+eh5s
+ehy2
+ehyd5r
+eid4
+5eido
+4eif
+eig2
+e5ignit
+e4in.
+e3inc
+e2ine
+e1ing
+ein5i
+e4ins.
+ei4p4
+eir3o
+4eis
+eis3i
+eit5er
+eith4
+e2iv
+eiv3er
+e2iz
+e1j
+ejudic4
+ek3en
+ek5is
+ek4l
+e4lac
+e5lad
+el5age
+elam4
+el5anc
+elast3
+e4lates
+el5ative
+elch5er
+eld3er
+2ele
+elea5g
+4e4led
+el5eni
+el3eno
+ele3o
+ele5ph
+el1er
+e1les
+e5less
+e4leste
+el3et3o
+elev3a
+ele3vi
+el5ex
+e4l3ica4
+e1lie
+eli4ers
+e3lim
+el3ing
+eli3on
+e4li4s
+elit4t
+e3liv
+el4lab
+ell5iz
+e3loa
+e3loc
+elo5ca
+eloc3u
+elo4di
+e2log
+elom5ate
+el5op.
+el5ops
+elp5in
+el3so
+el5tie
+e1lu
+elu4m
+elus4
+elv4
+e5lyi
+3elyt
+em3ago
+em3ana
+emar4
+emarc5a
+em5atiz
+emat5ol
+em5bi
+e1me4
+e4mee
+e4mel
+e3mem
+e4m3era
+em5ero
+emet4e
+em4icis
+e4mie
+e2mig
+emig5ra
+em3ina
+em5ing
+e3mio
+em3ism
+e4mita
+e4miu
+em4mae
+4emnit
+emo3bi
+emod4u
+e2mog
+e4moi
+em3olo
+em5om
+4emon
+e3moni
+emon5ol
+e2mor
+em5oris
+em3orr
+e4motic
+e5moz
+empa5r
+empara5
+em5pes
+4empli.
+em4pre
+em3um
+e5mut
+en3ac
+e4nal
+en3am3o
+en4ann
+e2n3ar
+en3as.
+ena5ture
+3encep
+en4cile
+enct4
+2end
+en4d5al
+en4dedl
+end5rit
+4ene
+ene5d
+en3ee
+e5nelle
+e5nep
+e2ner
+e5nereo
+ener5v
+en5esi
+e3ness
+en1et
+en4ett
+e2n3eu
+e3new
+en3gi
+en3ic
+en5ier
+en3ig3r
+en5in
+enit5u
+en3k
+en1o
+en3oi
+eno2m
+en3oty
+enov3
+en2s
+ens5al
+en3sp
+en4sum
+en4sus
+ent3ar
+en4ters
+en5tia
+en4tify
+en2to
+en4tri
+ent5rin
+ent5up
+en4tus
+4enu
+en3ua
+en3uf
+en3ur
+en5ut
+5enwa
+eo3b
+e4och
+e4oda
+eof2
+eo2l
+eol5ar.
+eol5at
+eologi4
+e5olu
+eo3m
+eon4a
+e3ont
+eop4t
+e1or1
+eor4de
+eor3e
+eor5o
+eo1s2
+eo4to
+e1pa
+ep4al
+ep5arc
+epa4t
+epend5en
+ep5ert
+e4pete
+epe5titio
+ep5ex
+eph1
+eph4i
+e2pig
+e5pla
+ep3lic
+epol3a
+epol3i
+epolit5
+ep3reh
+epres5e
+ep5rim
+e4p5rob5
+ept3or
+e1p4u
+e3pur5
+e4puta
+equin4
+equi5no
+er1
+era4cie
+era4do
+era4g
+era4l
+er3aph
+er3api
+er3apy
+4erati.
+4eratim
+er5atu
+er3bat
+er3be
+erb5os
+2erc
+er3ch
+er3cl
+2erd
+erd5ar
+erdi4e
+2ere
+er3eal
+4ered
+er3egr
+er5el.
+er5ell
+er5els
+e4reme
+er3en
+5erend
+eren4e
+ere5ol
+e3req
+er3er
+ere4s
+er5ese
+er3esi
+er5este
+er5esti
+eres5tr
+eret4
+er3et.
+er3ets
+er3ett
+ere4v
+er3ex
+ergi3v
+er3gl
+er3ia.
+er4ian
+eri4cid
+5er5ick
+er2id
+er3ie
+er3iff
+er4imet
+er3in
+eri4na
+eri4on
+er3iou
+er4isc
+eri5sta
+4eri2t
+e3riv
+er5iz
+4erj
+erk4
+er3me
+er4moi
+5ernacl
+er5nalis
+ern3er
+ern3is
+ern3it
+4ero.
+er3oid
+ero5is
+ero5st
+erpent5in
+erre5la
+er4rep
+er5sine
+er5ted
+er4ter
+ert5er.
+ert5ers
+er4thi
+ert5iz
+2eru
+eru4b
+eru5d
+erund5
+er4vil
+5erwau
+eryth3
+2erz
+4es.
+es5am
+es5an
+e2sc
+es5can
+es5che
+esci5e
+escut5
+e3sea
+e3sect
+e5see
+e5seg5
+ese4l
+es5enc
+e3sh4a
+e1shi
+e5shu
+esi4an
+es5ic.
+e5sick
+es5iden
+esi5diu
+es5ies
+es3im
+es3in
+e5sion
+e4sit
+es4it.
+es4its
+e3skin
+e3s4mi
+es4od
+es3ola
+es3ol3u
+es3ona
+eso3p
+e1sor
+es3per3
+es5pira
+es5pit
+es4pl
+esplen5
+es5pot
+e5s2pr
+es4s3an
+essar5
+ess5ee
+es4sil
+es2so
+esta4b
+est3an
+e5star
+es5tau
+e2sti
+est5ifi
+est5igati
+e3stoc
+es5too
+est4r
+estud4
+e1su
+e2s3ul
+es4ur5
+et2a
+et3al.
+et5allis
+et3al5o
+eta5me
+eta3p
+et3ari
+et5ary
+et4as
+et3ate
+et3ati
+et5ay
+et3eer
+etell5i
+etend5er
+et5eni
+eter2
+et3er3a
+et5eria
+etex4
+e2th1
+ethyl3
+2etia
+e3ticu
+eti4gi
+e5tim
+et3in
+eti4na
+e3tir
+et5itiv
+eti4u
+et5olo
+e5tomete
+e2ton
+et3ona
+etor3i
+etra5g
+4e4tral
+etra5m
+et4ran
+et5ress
+et1ri
+et4ria
+etrib5a
+e4trim
+et1ro
+et2t
+et3ter
+etud4
+et3ude
+e4tum
+et4we
+et5z
+eudio5
+eue4
+euk5
+4eum
+e3urg
+eur5i
+eus4
+eu5ten
+eu3ter
+eut3i
+ev4abi
+eval5e
+eva2p3
+ev3ast
+ev3at
+ev5eli
+eve4n
+ev5erat
+ev5eren
+ever4er
+e4veri
+e4ves
+e1via
+e4viab
+e2vic
+evictu4
+evid3
+ev5ig
+ev4ile
+ev5ish
+evis5in
+evis5o
+e4viu
+evoc3
+evol5e
+evol5ute
+evu4
+e1wa
+e4wag
+e5way
+ew1er
+e3wh
+ew5ie
+ew1in
+ew5ish
+e3wit
+e1wr
+ex5ic
+ex4on.
+1exp
+4ey.
+ey4as
+eyl4
+ey3s2
+ez5er.
+ez5ers
+ez5ie
+1f2a
+2fa.
+fab4i
+fa3cet
+fact2
+fa2c3u
+2f3ag
+fall5in
+5falo
+fa5lon
+fals5ifie
+4fan3a
+fan5tasiz
+fant3i
+5far
+far3i
+5faw
+4f5b
+2f5d
+2fe.
+3feas
+fea3tu
+feb5r
+3fec
+2fed1
+5fei
+fe1li
+fem3i
+femin5
+fend5er
+f5eni
+4fered
+fer3ee
+3fero
+fe5roc
+fer5om
+3ferr
+fer3v
+2fes.
+fess3o
+fest3a
+fest5i
+fe4t
+fet4al
+fet4in
+fet4o
+3feu
+fe5veri
+2ff
+f1fe
+ffec4te
+f5fet
+f1fi
+f5fia
+f3fic
+f5fie
+ffil3
+f2f3is
+ff4le
+ff3lin
+ffoc3
+ffoni4
+ffor3e
+f3fr
+ffranch5
+4f5h
+fi5ance
+fib5u
+4fic.
+4fical
+3fici
+4fics
+fi5del
+fid3en
+fiel4
+fier4c
+fight5
+1fi2l
+2fin
+fin2a
+fi3nal
+find3
+fin2e
+f1ing
+5finin
+fin4ni
+fir2m1
+f3ita
+f5itee
+fl2
+3fla
+fle2s
+f3lica
+flin4
+3flo
+flo5ric
+3flu
+flum4i
+1fo
+4fo.
+3foc
+fo2e
+foeti4
+fo1l4i
+fo4lie
+foment4
+fo2n
+fon4de
+3foo
+fo5ram
+for5ay
+for5b
+for4di
+fore3t
+5form
+for4m3a
+fortu5na
+fo3v
+1fr2
+frag5a
+frant4
+frar4
+fratch4
+fre4s
+frost5i
+fruc4
+2f3s
+fs4p
+2ft
+f1ted
+f4ter.
+ft5es
+fti4et
+ft4ine
+3fu
+4fu.
+fu4c
+fuel5li
+fug4a
+fu4min
+fun2g
+4fured
+fur3n
+fu3sil
+fus5o
+fu5til
+4ga.
+ga4cie
+gadi4
+ga4dos
+3gag
+3gai
+3gale
+ga5len
+gali4a
+gal5ler
+3galo
+gam4bl
+gan5at
+4ganed
+gang5er
+g5ant.
+gan4tr
+g5ants
+g5arc
+g4are
+gar3ee
+gariz4a
+ga5rot
+gar5p
+5garr
+1ga4s
+gas5i
+gas3o
+gasol5
+gass5in
+gast3r
+g1at
+g4at.
+gat5iv
+g4ato.
+g4atos
+g4att
+gat5u
+gaud5
+ga5za
+g1b
+g5d4
+2ge.
+5geal
+3gean
+2ge4d
+3gedi
+5gedn
+4gef
+1gel
+4gele
+ge4li
+gel4in
+gel5li
+ge4lu
+2gely
+gem3i
+5gemo
+3gen
+gen4du
+gen5it
+gen3o
+gen5ti
+ge4o
+geo3lo
+4gere
+3germ4
+2ges.
+5gess
+gest5at
+3get
+get3a
+2g1f
+2g1g
+gg4a
+g2ge
+g5gedl
+g3ger
+g5gerer
+ggi4a5
+g3gli
+gglu3
+g5gly
+ggrav3
+g4gro
+2gh
+g5hai
+gh5eni
+g3ho
+g4hos
+gh2t
+1g2i
+4gi.
+gi4all
+gi4at
+3gib
+gi5co
+gi4g
+gi5gan
+gin5gi
+3gio
+gi4or
+gi4ot
+5gip
+gi5pa
+g4i4s
+5gis.
+gi2t1
+5gitu
+giv5en.
+2gl2
+g3lar
+5glass.
+glec4
+3gler
+g4leto
+g4letr
+g4ley
+gli5on
+g5lis4
+3glo
+4g5lod
+glom3
+4glop
+3glu
+glu5te
+glu5ti
+3glyp
+2g1m4
+2gn2
+g1na
+g4nab
+g5nate
+5gnath
+g5nati
+gna5tur
+gn5edl
+gn5ee
+gn3er
+g1ni
+g4nia
+g2n3in
+gn4in.
+g4ni2o
+g2no
+5gnori
+gno4s
+2go.
+5goa
+3goc
+5god
+3goe
+go4et
+go4ge
+4gogram
+g5oid
+go3is
+go2me
+5gonn
+go5nom
+3goo
+goph4
+4gor.
+5gorg
+4gors
+g4ory
+3gos
+gos4t
+2gou
+gour4i
+g1ous
+gov1
+g3p
+1gr2
+grab4
+3gram
+4grame
+gra2p
+g4re
+gril4
+grim3a
+g4ro
+gro4g
+g5ron
+grop4
+3gru
+gru3en
+gru5i
+grum4b
+2g1s
+gs4c
+gs4t
+g4sti
+gth5eni
+g5to
+g4u2a
+gu5ab
+5guan
+3guard
+g5uat
+2gue
+5gueu
+5guit4
+gui5ta
+gu2ma
+gu4mi
+3gun
+g4uras
+g4ured
+gur4n
+gur4u
+4gury
+gust5a
+2g1w
+2gy
+gy2b
+5gym
+3gyn
+gyn5o
+g5z2
+ha2
+4ha.
+h4ac
+hadi4e
+had4ine
+hae3o
+haged5
+hagi3o
+hag5u
+ha5ic
+hais4
+hak4ine
+hal5ant
+ha4m
+ham5an
+han4cro
+han2g
+h1ani4
+h5aniz
+han4t
+hant3a
+ha4pe
+hap3l
+har1a
+har5b
+har4d
+har5die
+harge4
+ha5rism
+har3o
+har4ted
+har4ti
+has4te
+hat5o
+haught5
+havel4
+hav5ersi
+hav5o
+h1b
+h1c
+h1d
+hdeac5
+hdu4
+he2
+4he.
+h2ea
+1head
+3hear
+hearch4
+heast5
+heav5en
+hec3t4
+he5del
+he3do
+heek4
+h4ei
+he3is
+he5lat
+h5elin
+he3lio
+he5liu
+hel4li
+h3el3o
+hem1a
+he3men
+hemis4
+he5mop
+hem4p
+hende5
+he3or
+hep1
+h1er.
+her4as
+her2b
+herb3a
+herb3i
+here3a
+here3o
+h5erett
+h5erh
+her5ial
+h5erine
+h1erl
+her5om
+h4eron
+h1ers
+h5erwa
+hes3tr
+het1
+h4et3a
+het3i
+het4ted
+heu2
+heum3
+heumat5
+he4v4
+hev5i
+hex5o
+h1f
+h5h
+2hi.
+hi4ar
+h1ic
+hi3c4an
+hi4cin
+h4icl
+h5ie.
+h1ier
+h4i4ers
+h1ies
+h3ifi4
+h3ify
+hig4o
+hi5ka
+hi4l
+hi5ma4
+hi5mer
+himos4
+h1in
+hin4d
+h2in2e
+hi5nie
+h5iniz
+hi5nop
+h2ins
+hio5lo
+h4ior
+hi2p
+hip3l
+h4ir
+hir4r
+hirr5i
+hit4a
+hiv5a
+4hl
+h3la
+h1le
+h3let
+h1l2i
+hli4a
+2h1m
+h4manic
+h5mica
+2h1n2
+hnocen5
+4ho.
+ho3an
+ho4co
+ho3don
+ho5du
+ho5ep
+hol3ar
+hold1
+hol4is.
+ho5lys
+ho4mag
+hom5in
+h2o4n
+hon5em
+ho5neu
+hon3ey
+hong3i
+ho5nio
+hon1o
+1hood
+hoo5r
+h4ope
+ho2p5r
+h4op4te
+hor5et
+h4orn
+horn5i
+ho5rog
+hort5h
+hosi4
+ho4ton
+h2ou
+3house3
+4h1p
+2hr
+hras5eo
+hre4
+hre5ma
+hr5er
+hres4
+hri4
+hrill5in
+hrim4
+h5rit
+h3rod
+hrom4i
+hry4
+h3rym3
+2h1s
+hsi4
+h4sk
+ht5ag
+ht5ee
+ht3en.
+ht5ener
+ht3eni
+ht3ens
+ht5eo
+ht5es
+ht4foo
+h1th
+ht4ine
+hu4g
+hu4mat
+hu5mer
+hu4min
+hun4c
+hunk4
+hun4t
+hur3i
+hu3sia
+huz4
+h1w
+h4wart
+h2y
+hy2l
+hyl5en
+hy2m
+hyn4
+hy3o
+hyol5i
+hy1pe
+hy3ph
+hyr4
+hys3te
+hy4t
+2i1a2
+ia4bl
+iab5olis
+iab5oliz
+i2ach
+iac3o
+i2ac2r
+ia5cri
+ia5dem
+i5ae
+iaf4
+i2ag4
+ia3gn
+i5a4g5o
+ia3gr
+i3ah
+i5ai
+ialect4
+i3alit
+ial5li
+4ialn
+i2a3lo
+ia5ly
+i5amb
+ia3me
+ianch5
+i3ant
+i5ape
+ia3ph
+i2ard
+4iarit
+i3at
+ia5the
+i5atom
+iat4u
+iatur4a
+i3au
+iav4
+ib3era
+ib1i
+ibio4
+ibios4
+ib5li
+4ibo
+i4bon
+ibor4
+i4bose
+i5bou
+ib1ri
+4ibu
+ib3uta
+ic3ac
+ic5ado
+i4cal
+ic1an
+2icar
+iccu4
+4ice
+i5ceo
+4ich
+ich4i
+ich5ing
+ich5ol
+4icin
+i5cio
+2ick
+ic4lo
+2i2co
+ico3c
+ic5ola
+icon3o
+i5cop
+icotyle5
+2i1cr
+i4cri
+i4cru
+i4cry
+ic4tedl
+ic4ter
+ict5ic
+2icu
+icu4lu
+ic3um
+i5cun4
+i5cut
+2i1cy
+i2d
+id1a
+i5day
+ide4m
+id3enc
+id3era
+iderm5
+i3dicu
+id3if
+i5dig
+i5dil
+i3dim
+id4ines
+idios4
+idir4
+id1is4
+id4ist
+2i4d1it
+idi4v
+id3li
+id3ol
+idol3a
+4idomi
+id3ow
+4idr
+id5ri
+id3ul
+ie2
+4iec
+2ieg2
+ie3ga
+ie5i
+i5ell
+4iem
+2i1en
+ien2d
+i1er
+i3eres
+i2eri
+ieri4n
+4iern
+ier2o
+i4ert
+i3esc
+ies3el
+i1es2t
+i3est.
+2i1et
+i4et.
+iet3ie
+4ieu
+i5euti
+iev3a
+iev3er
+iev3o
+2i1f
+i2fe
+if4fa
+iff5ler
+if3ic.
+i4ficac
+if5ics
+ifi4d
+ifi4n
+4i2fl
+i3fo
+ifoc5
+if5tee
+i3fy
+2ig
+i3gad
+ig3and
+3igar
+i1ge
+i3ger
+ight5er.
+ight5ers
+4igi
+ign5iz
+igno5m
+i3gon
+ig1or
+ig3ot
+i5gret
+i4g5ro
+igu5it
+ig1ur
+2i1h
+ihy4
+2ii
+i5in
+ija4
+4iju
+2ik2
+ik5an
+ike4b
+i2l3a
+ila4g
+ila5tel
+i5later
+il4ax
+il5dr
+il4du
+i3len
+ilesi4
+il3f
+il3ia.
+il3iar
+ili4arl
+i3lici
+i5lien
+ili4er
+ili4fe
+il4ific
+il1in
+il5ine.
+4iliou
+il5ipp
+il5iq
+il4ite
+ilit5u
+il4mo
+i5lon
+il3ou
+ilth4
+il2tr
+4ilu
+il5ul
+i5lum
+il5ure
+il3v
+4ilym
+ima4c
+im2ag
+im3age
+im1al
+im5am
+i5m2as
+i4mated
+i4matin
+imat5u
+im1i
+i3m2ie
+im4ine
+im5ino
+im5mes
+i2mo
+i5mog
+i3mon
+im5oo
+i3mos.
+impar5a
+imparad5
+im5pie
+impot5
+im5pr
+impu4
+im1ul
+im5um
+in3ab
+4inace
+in4ado
+in5agl
+in3air
+ina4l
+4inalit
+in5am
+in3an
+in3ap
+in4ars
+i3nas.
+4inata
+inator5
+in3au
+in4aw
+2inc
+inc4tua
+2ind
+in5dar
+inde5p
+indes5
+inde3t
+indeterm5
+in5dro
+4inea
+4ined
+in5ee
+in5ega
+4in5eo
+ine4s
+in3esi
+ine5te
+4ineu
+inev5
+infilt5
+infol4
+4infu
+4inga
+in5gal
+4inge
+ing5ha
+4ingi
+4ingle
+4ingli
+4ingo
+4ingu
+ing3um
+2ini
+in5ia.
+4inic
+in4ici
+in3ion
+in4itud
+4ink
+ink4ine
+4inl
+2inn
+2ino
+4ino.
+in3oi
+i5nole
+4inos
+i3nos.
+in5ose
+in3osi
+4inq
+ins2
+in4sch5
+inse2
+insect5
+insec5u
+in3si
+5insk
+insolv5
+in4tee
+int5ess
+in3til
+int5res
+intu5m
+2inu
+in5ul
+in5um
+in3un
+in3ur
+invol5u
+2io2
+ioact4
+i1od
+iod3i4
+iod5o
+ioe4
+io3gr
+4i1ol
+io3ma
+i4omani
+io3mo
+i5ope
+io3ph
+i5opo
+iop4s
+i1or
+iora4m
+4iore
+4iorit
+5ioriz
+4iorl
+ior4n
+io3sc
+i3ose
+i3osi
+i4oso
+io5sta
+i3ot
+iot4a
+io5th
+iot5ic
+io5tr
+i4oty
+i4our.
+i4ours
+i5ox
+2ip
+ip3al
+ipap4
+ipar3o
+ipart5ite
+ip1at
+i3pend
+i1ph2e
+iphen3
+i5pheri
+iphi4
+i4phu
+ip3id
+i5pil
+ip3in
+ip4ine
+ipir4
+ip5is
+ip1i4t
+ip4iti
+ip3lin
+ip3lo
+i3po
+i4pog
+i4poli
+i4pom
+ipon3
+i4pow
+ip2pl
+ip3pli
+ip4re
+ip5tori
+ip1ul
+i5put
+ipy4
+2iq
+i3qua
+2ir
+ir1a
+ir4abi
+ira4c
+ir4ae.
+ir4ag
+ir4alin
+ir4alli
+i5raso
+irassi4
+iray4
+ird3i
+ire3a
+ir3ec
+ir5ee
+irel4
+ire5li
+ires4
+ir5ess
+ir1i
+ir2i4d
+ir4im
+ir4is.
+5iriz
+irl5ing
+ir5och
+ir5ol
+ir3om
+ir4q
+ir2s
+ir5ta
+ir5tee
+irwo4me
+i4sa
+is5ad
+is3age
+is1al
+is3am
+is1an
+is3ar
+is5av
+4isb
+i2s3c
+is5chi
+isci5c
+4i1sec
+ise5cr
+is3ell
+4is3en
+is2er
+is5ere
+i2s3et
+4iseu
+is3har
+ish5ee
+4ishio
+ish3op
+is5hor
+2isia
+is5ic
+is3ie
+4isim
+is3inc
+4isis
+is4ke
+is1l
+islun4
+2isma
+is1on
+is5oner
+iso5p
+is1p
+i3s2ph
+5ispr
+2is1s
+iss5ad
+is4sal
+is5san
+iss4iv
+iss4o
+4ista
+is4tal
+ist5enc
+ist5ent
+is5terer
+4isth
+is4t3ic
+4istl
+i4s1to
+4is4tom
+is1tr
+3istry
+4isty
+i5sul
+is3ur
+2isy
+it1a
+it5ab
+ita4c
+4itai
+it3am
+it4ana
+it4as
+it3at
+i3tect
+it3ee
+it3enc
+it3ent
+it3era
+2ith
+itha5l
+ith5i
+i5thol
+ith3r
+ithy5
+2itia
+iti4co
+it5icu
+it1ie
+it3ig
+4itim
+it4in.
+it4ins
+4itio.
+4itione
+i5tiq
+4i5tit
+it3iv
+it4li
+it5lo
+4ito.
+it5ol
+2iton
+it1ou
+2itr
+it5ress
+i4tric
+2itt
+it4tit
+itu4als
+it5uar
+4itue
+it1ul
+it1ur
+it3us
+2i1u2
+i3um
+iur5e
+2iva
+iv5anc
+iv1at
+i4ved
+iv5el.
+iv5eling
+iv5els
+i4ver.
+iv3eri
+i4vers.
+iver5sal
+ives4
+iv3et
+i4vie
+iv3if
+i5vilit
+5ivist.
+5ivists
+iv1it
+i2vo
+ivoc3
+i5vore
+2i1w
+2ix
+ix3o
+i5ye
+1iz
+4izah
+iz3i2
+2izo
+iz5oi
+2izz
+1ja
+2ja.
+3jac
+ja2c5o
+jac3u
+jag5u
+jal4
+ja5lo
+ja5pan
+jel5la
+jeo2
+jeop3
+4jes
+jeu4
+jew3
+2ji
+3jig
+jil4
+jill5
+5jis.
+3jo2
+4jo.
+joc5o
+joc5u
+jol4e
+4jr
+4js
+ju1di
+jui4
+ju5l
+ju3ni
+juscu4
+jut3a
+ju1v
+k4abi
+k2a5bu
+kach4
+k3a4g
+kais5
+ka4l
+ka5lim
+kal4is
+k4an
+ka3o
+kap4
+kar4i
+1kas.
+kaur4
+kav4
+k1b4
+k1c
+kcom4
+k5d2
+kdo4
+kdol5
+4ked
+ke5da
+k5ede
+3kee
+ke4g
+ken4d
+keno4
+kep5t
+ker5a
+k4ere
+k5erel
+ker4j
+ker5o
+kes4i
+ket5a
+key4wo
+k1f
+kfur4
+k3ho
+5kih
+ki2l
+kilo3
+k1in
+k2in.
+3kind
+kinema4
+kin5et
+k3ing
+kin4i
+k2ins
+kir3m
+kir4r
+kis4
+3kis.
+k1ish
+kit5c
+ki4w
+kk4
+k5ker
+k2l2
+k3la
+k5lea
+k3ler
+k3let
+k3li
+k3lo
+k1m
+kn2
+k2no
+1know
+ko5a
+kol4
+ko5mi
+ko5pe
+k1p
+k5ro4
+k3ru
+4k1s
+k3sl
+ks2mi
+ks4t
+k1t
+kur5
+k5v
+k1w
+3kyl
+l2a
+4la.
+5laa
+lab5ar
+label4
+5labr
+l4ac
+la2ca
+la5ceo
+la5cer
+la4ch
+la2co
+5la5col
+lac5on
+la3cu
+la4de
+l5adm
+l4ae
+l4af
+la3ger
+la4gis
+lag3r
+5lah4
+la4ic.
+l4al
+4lale
+5lamandr
+la5melli
+lam4ie
+lam1o
+l5amu
+lan3at
+lan2d
+3land.
+land3i
+3lands
+lan4er
+lan3et
+lan5tine
+lan4tr
+la4p
+lapi4
+lar5an
+lar5de
+4lared
+l4as
+lat5al
+la4te
+5latilis
+5latiliz
+5latini
+lat5us
+l4au
+5laur
+lav5at
+l4aw
+4laz
+l3b
+lbe4
+l4bit
+l4by
+l1c2
+l2cat
+lce4
+lcen4
+l4cere
+lch4e
+l3dar
+l3ded
+l3deh
+l5dera
+ld3est
+l5dew
+ldi2
+l3die
+ld4ine
+l5di5nes
+ld3ish
+ld5li
+l3do
+4le.
+3leagu
+le5atio
+leav5er
+l3eb5ra
+le3ca
+le5cha
+lect5ica
+2led
+le5dr
+leg1a
+l3egan
+3legg
+le4gin
+leg3o
+le3gra
+lek4
+4leled
+lel5o
+lelu5
+lem5enc
+lem3is
+l5emiz
+5lemm
+l3emn
+le2mo
+lem5on
+l5enda
+len5dar
+lend4e
+len4do
+le1ne
+le5nie
+len3o
+4lentio
+len5u
+le3on
+leo4s
+le5q
+2ler
+le5rec
+5l4eria
+l4eric
+le5rig
+ler3om
+leros4
+ler3ot
+4les.
+le3sco
+3les4s
+1let
+le5tra
+le5tre
+5le5tu5
+leur5
+2lev
+l3eva
+5leve
+lev5ita
+le4wi
+l5exa
+1ley
+lf5id
+l2fo
+lf3on
+l1g2
+l4gal
+l4gem
+lgi4a
+l4gid
+l4goi
+l3h
+4li.
+li4ani
+lias4
+lib1r
+l1ic.
+5lich
+li4cie
+5licio
+l3ic3on
+lict4o
+li4cu
+l3ida
+l4idar
+5lidif
+3lieu
+l4ife
+l4ifo
+lift5er
+1lig
+li5ger
+light5i
+5lih
+3lik
+1l4il
+lil4i
+lim2b
+limet4e
+lim4p
+l4ina.
+l4inas
+lin4d
+l4ine
+5lin3ea
+lin4er.
+lin4ers
+lin4ger
+ling3i
+5lingt
+3lingu
+3linq
+lint5i
+3liog
+li4ol
+lio3m
+liot4
+li3ou
+5liph
+lipt5
+li1q
+3lir
+l1is
+l4isk
+5lisse
+l1it
+l2it.
+l3it5a
+5liter
+3lith
+5litia
+3litr
+lit4u
+l4iv
+l5ivat
+liv3er
+liv5id
+lkal5o
+lk5at
+lk3er.
+lk3ers
+ll2
+l1la
+lla4ba
+llact4
+l5las
+l4law
+l5leb
+l1lec
+l1leg
+l3lei
+l1lel
+lle5m
+l1len
+l3lep
+l3leu
+l3lev
+ll3f
+l1li
+lli5am
+lli4an
+llib4e
+llic4
+l4licl
+lli5co
+l5lie
+lligat4
+l2lin
+l5lin.
+l3lina
+l3line
+l5lio
+lli5v
+ll3m
+l1lo
+lloc3a
+lloc5u
+llo2q
+l4lov
+llow5er
+ll3p
+ll3s
+ll5t
+l1lu
+llun4
+l5lya
+l3lyc
+l3lyg
+l3lyh
+l3lyi
+l5lym
+lm2
+l1ma
+l1me
+l4mer
+lm3ing
+l5mip
+l2m3od
+l1n4
+l3ne
+lneo4
+2lo.
+5load
+5lob3a
+1loc
+loc3al
+loc5ul
+lo4cus.
+2locy
+l3odis
+3lo3dr
+1log
+lo5gan
+4loi.
+lo5mi
+lom4m
+lon4al
+lon4e
+l5onel
+lo5ney
+long5in
+3lonia
+loni4e
+l3onis
+l3oniz
+loom5er
+lop4e
+5lo5pen
+l3opm
+1lo1q
+l4ored
+lor5iat
+lor4ife
+lo5rof
+loros4
+l4os.
+lo1so
+loss4
+los5sie
+lot5at
+loth4ie
+lo5tu
+5loup
+lp1at
+lp3er
+lph2
+l5phe
+l3phin
+l2pho
+l3pie
+l3pit
+lr4
+l3ri
+l3ro
+l5ru
+4ls
+l5sam
+ls5an
+lsi4fia
+lsi4m
+ls4is
+l5sk
+ls4p
+l1s2t
+ltan3e
+l4tang
+lt5ant
+l5tar
+l1te
+l4tei
+ltern3
+lth3i
+lti4ci
+ltim4a
+ltin4
+lti3t
+l3t4iv
+lt4or
+l1tr
+ltramont5
+l1tu
+l4tus
+4lu.
+lu1a
+luch4
+lu2c5o
+luc5ra
+lu4cu
+4lue
+lu1en
+lu5er
+lu1i
+lu4it
+lum4bri
+lu4mo
+5lump
+lu2m5u
+lunch5eo
+5lune
+l3unta
+lu3ori
+5lup
+3lur3o
+lusk5
+luss4
+lut5an
+4lut5ar
+5lutioniz
+lu5toc
+lut5r
+lu1v
+lv5ate
+l5vet4
+l4vi
+l4vor
+l3w
+lx4
+2ly
+4ly.
+ly1c
+ly4ca
+lyc4l
+lyc5os
+lym2
+lymph5
+lyp2
+ly4pa
+lypt5o
+3lyr
+lys5er
+3lyw
+3lyz
+lz4
+4ma.
+m4aca
+mac3ad
+ma5chine
+5machy
+ma4cis
+mact4
+4mad.
+4mada
+4mads
+ma4ge
+5magn
+2mago4
+2mah
+ma5ho
+3ma4i
+4mai.
+maid3
+5mak
+mal3ap
+mal5ari
+5male2
+mal5ed
+mal3ef
+m3alg
+m3alis
+mal4is.
+mal3le
+mal4li
+2mam
+mament4
+m5ament.
+1man
+3m4an.
+man3a
+man5dar
+man3dr
+manic4
+man4ica
+ma5nil
+m4ans
+mantel5
+2map
+m3aph
+1mar
+5maran
+mar5ol
+ma5ron
+ma3roo
+mar5ri
+mar4shi
+mar3v
+ma3son
+massi4
+mass5ing
+3mas1t
+mas4ted
+mast4ic
+mas4tin
+m4at.
+m4aten
+ma3ter
+mater5n4
+m4atit
+mat4iti
+m4atiza
+ma3tog
+mat5om
+ma3top
+m4ats
+3m4att
+ma5ture
+mav4
+2m1b
+mbat4t
+mb4d
+m5bec
+m5berer
+m4bery
+m4bes
+mb2i
+m2bic
+m5bil5
+m4b3ing
+m4bis
+mb5ist
+mbival5
+m5bler
+m3bli
+mbru4
+mbu3l
+mbur4
+m1c
+m5d
+m2e
+2me.
+mea5g
+me5and
+me4ba
+me4bi
+2med
+4med.
+3media
+med5icat
+4medie
+m5ed5ies
+3medit
+me4do
+m5edy
+me2g
+5meg2a1
+mega5t
+4mele
+mel5ee
+mel5ler
+mel3on
+mel4t
+melt5er
+me2m
+4m5eme
+1men
+3men.
+2mena
+men4ag
+mend5er
+mend5o
+me1ne
+ment5or
+5ments
+5meog
+me4p
+m5eran
+4mere
+mer4ia
+2me2s
+mes5en
+me5si4a
+mes5q
+3mesti4
+1me2t
+meta3t
+met1e
+4meted
+meth4i
+meti4c
+met5ici
+met3o
+met3ri
+m1f
+4m3h
+4mi.
+m1ic
+mi4cin
+mi3co
+3micro
+m4ict
+mi3cul
+mi4cus
+m4idi
+mid4in
+mid5on
+mi5fi
+mig5a
+migh5ti
+mi2gr
+4mij
+mi5ka
+m2il
+m3ila
+mil4ad
+4m5ilie
+mil5ies
+3mill
+mi5lo
+mil4t
+3m2im
+mim5i
+5min4d
+mind5er
+min4er.
+min4ers
+ming5li
+min5ie
+m4init
+min3ol
+1m4int
+minth5o
+mi3o
+mi3p
+mirab4
+mi5racu
+m2is.
+m4isc
+mi4se
+4misem
+mis3ha
+5missi
+m3ist.
+mis4tin
+m3ists
+mi2t
+m5itan
+4mity
+3miu
+5mix
+4m1l
+mlo5cuti
+mlun4
+2m1m2
+mman4d
+mmand5er
+m3medi
+mmel5li
+mmet4e
+mmig3
+mmin3u
+mmis3
+mmob3
+m5moc
+mmor3
+mmut3a
+4m1n2
+mnif4
+m4nin
+mni5o
+mnis4
+mno5l
+1mo
+4mo.
+2moc
+mod1
+mod5ifie
+mogast4
+mo4go
+mog5ri
+m5oir
+mok4i
+mol3a
+4molog.
+4mologs
+4mologu
+mo3ly
+mo1m
+mo4mis
+m4on
+mona4
+4moned
+mon1g
+mo4no
+monolo4
+monolog5i
+m4op
+mophil5i
+mop4t
+m3orab
+m3orat4
+mor4ato
+m5ord
+mo5rel
+3moria
+m5oriz
+mor5on
+3morp
+3morse
+mor5tal
+mo3sp
+5most
+mo3sta
+2m1ous
+m1p
+m3pa
+m4panc
+m4pant
+mpath3
+mpel5li
+m5perer
+mper3i
+mpet5it
+mphal5o
+m4phe
+m4phl
+m2pi
+mp5id
+m5pig
+mp3ily
+mp1in
+m3pir
+mp3is
+m3po
+mpol5it
+mpo2t
+mpov5
+mp3to
+mp5tr
+m3pu
+m5q
+m3r
+m4ry
+4m1s
+msel5f
+m5si
+msol4
+mtu4
+muck4e
+muff4
+mul1t2
+m5unc
+mu5nio
+mun3is
+mus5co
+mu4se
+mus5ke
+mu3til
+m1v
+m3w
+2my
+5my3c
+my4d
+my3e
+3myi
+5myst4
+3myt
+n1a
+2na.
+na2c
+nach4
+na5cious.
+na5ciousl
+nac4te
+nac5tiva
+na5culari
+na4d4a
+nadi4
+nad4op
+n2ae.
+naffil4
+nag4a
+n4agen
+5na5geri
+na4gi
+n5ago
+5n4a3gr
+5nah
+5nail
+na5iv
+nak2
+4naled
+n5alg
+n4alia
+na3ly
+1nam
+3name
+nam4n
+na5nas
+nannot4
+nan4ta
+nan5ted
+nan4to
+na5o
+4n4ard
+nar5tisti
+n2as
+nas5i
+nas5p
+nas3s
+nas5te
+nat5al
+na5tat
+n4atee
+na3the
+nath4l
+nati4
+n4ati.
+nat5ic
+n4ato.
+na3tom
+na4tos
+nat4r
+na5turi
+naugh5ti
+naus3
+3naut
+naut3i
+na2v
+na5vel
+n3b4
+nbarric5
+nbeau4
+nbe4n
+nbene4
+nbet4
+nbit4
+n1c2a
+n4cal.
+ncarn5at
+ncel4i
+ncent5ri
+n4cept.
+n3cer
+ncer4e
+n4ces.
+n5cet
+n5cey
+n3cha
+nch4ie
+n3cho
+nch5olo
+n3chu
+n4cic
+ncid5en
+n4cif
+ncip5ie
+n1c2l
+n4cles
+ncoc4
+nco5pat
+n1cr
+nc1t
+nc4tin
+nct4ivi
+nct2o
+n1cu
+ncu4lo
+n4cun
+n4curvi
+ncus4t
+4nd
+n2da
+n3da4c
+n3dal
+n4dale
+n3dam
+nd3anc
+nde2
+n3dea
+nde3ci
+n1ded
+nde4l
+ndeleg4
+nd3enc
+ndepre4
+n3derl
+nde4s
+ndes5cr
+n5dez
+nd4hi
+n1dic
+ndic5u
+ndid5a
+n3die
+nd5ily
+nd4ine
+nd3ise
+nd5is4i
+nd5ism.
+nd5ity
+nd3ler
+nd1li
+n5doc
+ndor4
+n2dou
+nd5our
+ndrag5
+ndram4
+n5dron
+ndu4b
+nduct5iv
+n4dun
+nd2we
+n3dyi
+2ne.
+ne3alo
+n3ear
+ne2b3u
+5neck
+ne4cl
+ne2co
+n5ectom
+2ned
+3nedi
+ne4du4
+neg3a
+ne3go
+5negu
+neis4
+2nele
+ne5lia
+neli4g
+n4ely
+ne2mo
+4n1en
+n3end
+neo3l
+neon4
+ne2p
+n1er
+4nered
+5nering
+ner5o
+ner4r5
+ner2v
+nerv5in
+2nes.
+n1esc
+ne3sia
+1ness
+n1est
+nes3tr
+net3a
+net3ic
+ne4tog
+net1r
+neuma5to
+neut5r
+nev5er
+n4ew
+news3
+n4eys.
+n3f
+nfo4
+nform5er
+nfortu5
+nfran3
+4ng
+ng2a
+n4gae
+n5gee
+n3geri
+n5gero
+ngh4
+n2gi
+n5gic
+ngio4g
+n5glem
+n3glie
+n5glio
+ng1n
+n1go
+n4gry
+n1gu
+n2gum
+n1h2
+nhab3
+nho4
+nhy2
+nhyd5
+n1i
+4ni.
+3niac
+ni3ba
+n4icab
+ni4cen
+4nicl
+nict5a
+ni4cul4
+ni4dio
+n2ie
+ni4ers
+nif4f
+nift4
+nif5ti
+ni2g
+night5i
+n3igm
+3nign
+nik5e
+n2il
+nil4a
+n3im1
+n4ime
+5nimet
+n4ines
+nin4j
+5ninn
+n4inu
+5niol
+ni1ou
+3nipu
+5niq
+n4is.
+n4isk
+nis4l
+nis4o
+n5iss
+nis5ter.
+nis5ters
+nitch4
+ni4te
+ni3tho
+n4itos
+ni5tra
+nit5res
+ni3tri
+nit4ur
+n2iv
+niv4a
+ni3vo
+nivoc4
+niz5en
+n1j
+njam2
+njur5i
+4n2k
+nk5ar
+n5kero
+n3key
+nk5if
+nk5il
+4n1l2
+nland5
+n3le
+nlet4
+n3m
+nmater4
+nmor5ti
+n1n4
+nne4
+nnel5li
+nnerv5a
+n3ni
+nni3ki
+nnov3
+n5nyi
+4no.
+n5obi
+no5bil
+nob4l
+no5blem
+nobser4
+n5ocula
+no4di
+n4ody
+noe4c
+no4fa
+nois5i
+n5ol.
+no3la
+nol4i
+nom3al
+1nomi
+no2mo
+4none
+3nonic
+5nood
+nop5i
+nora4t
+nor5di
+nor4ia
+nor4is
+nor3ma
+n4oro
+nor4t
+n4os.
+nos4o
+no3sp
+not1a
+3note
+n1ou
+n4oug
+3noun
+2nous
+nou5v
+nova4l
+nove2
+nov3el
+novel5e
+n4ow
+now5er
+now3l
+n3p4
+npil4
+npla4
+npoin4
+npo5la
+npos4
+npri4
+n1q
+n4quef
+n1r
+nre4i
+nre3m
+nres5tr
+4n1s
+ns2c
+n2sco
+ns3cot
+n4scu
+n5sec
+nsec4te
+n2ses
+n5seu
+n3sh2
+n2si
+ns3ib
+n4sic
+n5sick
+n3sid
+n3sie
+ns5ifi
+ns3ing
+n3sio
+n3s2is
+nsi2t
+ns3iv
+nsolu4
+n5son
+n4sore
+n4sory
+n3spir
+n3s2t
+nsta4
+nstil4
+n3su
+nsur4e
+n3swa
+ntab4u
+nt3age
+nt1al
+n4t3anc
+nt5and
+ntan5eo
+n4t3ant
+nt4ariu
+n5tasis
+nt3ast
+nt1at
+nt5ath
+nt3ati
+nt5ativ
+n5tau
+n1te
+n4tec
+n4tee.
+n4tees
+n3tel
+ntend5en
+n4teo
+n4ter.
+n3teri
+n5tern
+ntern5al
+nter5nat
+nth2
+n1the
+nther5
+nth5ine
+nt2i
+nt4ib
+n4tic.
+n5ticis
+n5ticiz
+n4tics
+ntic4u4
+n3tid4
+n1tie
+n4tify.
+n3tig
+nt5ilati
+n5till
+nt3ing
+nt5ing.
+nti3p
+n4tipar
+n4tis.
+nt3ism
+nt3ist
+n5titio
+nt3iz
+n2tj
+n1t2o
+n3tom
+ntoni4
+n5top
+n1tr
+ntra3d
+nt3ral
+n4trant
+n3trat
+nt5ress
+nt3ril
+ntrol5ler
+n5trym
+n1tu
+n3tua
+ntub5
+ntup5li
+n5tur
+n2ty
+n2u
+nu1a
+5nuc
+3nud
+nud5i
+nu3en
+nug4a
+nu3i
+nu4is
+5nuk
+n4ulo
+n3ult
+nultim5
+nu1me
+5numenta
+5numer
+5numi
+3nunc
+nu3tat
+n5utiv
+nu4to
+nu1tr
+n3v2
+nve2
+nvel3
+nven4e
+nven5o
+nvers5an
+nvi4t
+nvoc5at
+n5w
+nwin4
+nwom4
+n2x4
+2ny2
+5nyc
+nym5it
+nyth4
+n1z2
+nzy4
+2oa2
+o5ace
+o3act
+oad5er
+oad5i
+o3ag
+oak5er
+o3ales
+oal4i
+oal5in
+o5alit
+oan4t
+oap5i
+oar5er
+oar4se
+oast5er
+oat5a
+oat5ee
+oat5er
+4oba
+obe4l
+ob2i
+ob3ing
+2obi3o
+ob3it
+o3bla
+ob1li
+4obo
+ob3oc
+o5bol
+o5bot
+o3bra
+obrom4
+ob5t
+ob3ul
+o3bus
+2oc
+oc2a
+o4cab
+o3cad
+oc5ag
+o5calli
+o4c5ativ
+oc5ato
+4o3ce2
+o4cea
+ocen5o
+ocess4i
+och4e
+och5in
+o3chon
+ochro4n
+o5chu
+oci3ab
+oci4al
+o1cl
+o2cle
+o1cr
+ocre3
+oct2
+oc2te
+oc1to
+ocu4lu
+ocum4
+oc5uo
+ocuss4
+ocus5si
+ocut5r
+o1cy
+o5cyt
+ocyt5o
+od3al.
+ode4c
+o5deg
+ode4ga
+o5dend
+o3dent
+odes4
+od3ica
+o4d1ie
+od3iga
+od4il
+od1is2
+odis5ia
+od5it
+5odiz
+od3li
+o2do
+od5olo
+od5ous
+o3dro
+od5ru
+o2du
+odu5cer
+o4duct.
+o4ducts
+od3ul
+o5dyt
+oe3a
+oe4bi
+oe5cu
+oe4d
+o5ee
+oe5ic
+o3elec
+oelli4
+oelo4
+oe3o4p
+oep5
+o5eq
+o3er
+oes3t
+o1et
+o4et.
+oet3i
+oet4r
+3oeu
+o3ev
+o3ex
+oflu4
+4ofo
+o4ful
+ofun4
+2o1g
+o2ga
+o3gam
+og5ar5
+o3gas
+ogen1
+o5gey
+o3gi
+o4gio
+og2na
+ogoni4
+o4got
+o2gri
+o4gro
+og4sh
+o2gu
+o5gyr
+o1h2
+o3ha
+ohab3
+o3he
+oher4er
+o3ho4
+ohy4
+2oi
+oi4c
+o3ic.
+oi5ch
+o2i4d
+4oide
+oig4
+oi5ki5
+oil3er
+oil5i
+oin3de
+o3ing
+oin4t5er
+oin4tr
+oi4o
+4ois
+o3ism
+oi4t
+oit4al
+oith4
+o1j
+ok4ine
+ok3l
+ok5u
+ola4c
+o4lack
+o5lali
+ol4an
+olan5d
+ol5ast
+olat5er
+ol5ch
+ole2c4
+ol5eci
+ol5efi
+o3leo
+ole4on
+o3lep
+ol1er
+o3lest
+o3leu
+o1lia
+ol3ica
+o3lice
+ol5iciz
+ol5ick
+ol3ics
+ol5id.
+oli2e
+o3lier
+ol5ies.
+o5lif
+oli4f3e
+oli5go
+o5lina
+ol3ing
+oli5os
+ol5ip4
+olis4
+ol2it
+olle2
+ollim3
+ol4lope
+ol4lyi
+ol3mi
+o1lo
+4oloc
+ol3oid
+o4lona
+olon5el
+ol1or
+o3los
+ol1ou
+4ol1ub
+o3lumi
+o5lunte
+ol3us.
+oly3ph
+4olyt
+2om
+o1ma
+o4mab
+o2mac
+o2mal
+o4mane
+omast4
+o3mat
+om4be
+ome4d
+ome4g
+omeg5a
+ome3li
+om3ena
+omen4t
+o3meri
+om1i
+o3mia
+omi2c
+omic5r
+om4ie.
+omil4
+om4iny
+omiss4
+om2it
+omme4
+om2na
+omni3
+o4moi
+omoli3
+o2mo4n
+om5ony
+o4mos.
+omot5iv
+o2mou
+om5pil
+ompt5er
+ona4d
+on3ai
+o5nas.
+onast5i
+on5ativ
+4onau
+on1c
+oncat3
+on4cho
+5ond5ar
+ond5ent
+on3der
+on3dr
+on5dy
+o2ne
+4onea
+onec4r
+4oned
+on1ee
+on5ell
+o3neo
+on3ess
+on1et
+ong3at
+on4gu
+4onh
+4o1nia
+on5iar
+2oni4c
+onic5a
+onical4
+on4id
+on3ies
+on3if
+o5nig
+o1nio
+onk4s
+4onnes
+on5odi
+on5oi
+ono4mi
+4o5nomic
+ono3s
+o5nota
+ons2
+2ont
+ont5ane.
+on4ter
+onti5fi
+onton5
+ont4r
+on4tre
+on5ur
+o5nus
+onvo5lu
+on2z
+2oo
+oof3er
+oo1i
+ook3er
+ook3i
+oo4le
+ool5ie
+oo4m
+oon3i
+oo2p
+oop4ie
+o3opt
+oo4se
+oost5er
+oo2t
+oot3er
+ooz5er
+o1pa
+o4pab
+o5pali
+opa5ra
+opath5
+o5pec
+opens4
+op1er
+3opera
+4operag
+o1pha
+o4phe
+oph4ie
+o5phil
+op5hol
+o1phy
+ophy5la
+op1i
+op3ies
+op5ing
+o3p2it
+4opl
+oplast4
+o4poi
+opol3i
+opon4
+op5ony
+op5ori
+opoun4
+o2p5ov
+op2pl
+op5pli
+oprac4
+op3ran
+opre4
+opro4l
+op5rop
+op5so
+1op1t
+op2ta
+op1u
+o5quial
+or1a
+or5ado
+ora4g
+o5rai
+or5al
+4orals
+oram4
+oran3e
+orator5
+orb3in
+or4ch
+orch3i
+or4du
+2ore
+or5ead
+ore5ar
+ore5ca
+ore3f
+ore3g
+or3ei
+oreo5l
+or3esc
+ore3sh
+or3ess
+orest5at
+or5este
+or5ett
+ore4v
+5orex
+or4fr
+or5gn
+or1i
+4ori.
+or3ia.
+4orian
+ori4ci
+ori5cid
+orien4
+or3if
+5orig
+ori5ga
+ori4no
+4orio.
+or5ion
+4orios
+ork5a
+2orm
+orm1i
+or3n4a
+5ornis
+or3nit
+or3one
+o5roo
+or5ose
+or5oso
+or1ou
+orrel3
+orres3
+or4sc
+or4sey
+or4sti
+2ort
+ort3an
+ort3at
+ort3er
+or5tes.
+or3thi
+or4thr
+or4tit
+ort3iz
+or4tor
+or5tra
+ort3re
+4or1u
+or4un
+ory5p
+osa5i
+os3al
+osar5
+o1sc
+os4ca
+os4ce
+o2sch
+o4sci
+osclero5s
+o3sec
+osec3u
+ose5g
+os5enc
+osens4
+os5eo
+oser4
+o2set
+os5eu
+o3sia
+osi4al
+osi4an
+os5ide
+o3sier
+os5if
+os1in
+o4sis
+o5ske
+o5son
+o3soph
+os3opo
+4osp
+o3spec
+os1pi
+os4sa
+oss5ar
+os4sit
+4osta
+ost5age
+os4tar
+os5tee
+os5ten
+osten5t
+ost5ica
+os3til
+o5stome
+ost3or
+4osu
+os1ur
+2ot
+ot3a4g
+o5talit
+ot3am
+ot4anic
+o3tap
+ot4atio
+o5ta5v
+o3tax
+o4ted
+oter4m
+ot5esta
+4oth
+othalam5
+oth5erin
+o5therm
+otherm5a
+o5thor
+o5tia
+o5till
+5ot5iniz
+ot4iv
+o3tiva
+o5tivi
+o1t2o
+o5tone
+o4torn
+o4tou
+4o1tr
+oturi4
+oty3le
+o4u2
+5ou3a
+oub2
+ou5br
+ou5ca
+ou5co
+oud5i
+4oue
+ou3et
+oug4
+ou5ga
+ought5i
+ou5gi
+oul4t
+oult5i
+ou3m
+2oun
+oun2d
+ound5a
+ound5el
+oun5gin
+oun3tr
+oup5li
+our3er
+ou5san
+2ouse
+5ousia
+ouss4
+out5ish
+ouv5a
+ova3le
+o5var
+4ovati
+ov5eling
+o4ver.
+over3b
+over3s
+ov4ete
+ovid5en
+o1vis
+ovis5o
+o2v5os
+ow3ag
+ow3an
+o5way
+owd4i
+owd3l
+ow1el
+owel5li
+ow5ha
+owhith4
+ow1i
+ow5in
+owi5ne
+ows4
+ow5sh
+ow5sl
+ow5y
+o4x
+ox3i
+oxic5ol
+ox5o
+2oy
+oy5a
+oys4
+2oz
+o1zo
+ozo5i
+o3zyg
+4pa.
+pac4te
+pa5dou
+pad4r
+paes4
+pa3gan
+4pagat
+pag4ati
+pain2
+4pairm
+pa5lan
+pal3in
+pa3lo
+p4als
+pan5ac
+pan1e
+pan3i
+pa4pa
+pa3pe
+pap3u
+pa3py
+1par
+para5s
+par3l
+pa3roc
+pa3rol
+par5on
+1p4as
+pass5ive
+pas1t
+pas4tin
+pa3ter
+pati4n
+p5ato
+pat4ric
+pa5tricia
+5pau
+paul5e
+pau3p
+pa5vil
+5paw
+pawk4
+paw5ki
+2p1b
+p1c4
+p5d2
+2pe.
+pearl5i
+pe4co
+pec4tu
+2ped
+5ped3a
+3pede
+3pedi
+ped3is
+3peds
+pe2du
+p4ee
+pe2f
+4pele
+pe5leo
+pel5v
+pen4at
+5p4enc
+pend5er
+pen5dr
+pen4ic
+3p4enn
+pens5ati
+pen5u
+pe5on
+5perc
+percent5
+4pere
+perem5i
+p4eri
+5p4er3n
+p3eron
+per4os.
+per5tin
+pert5is
+per3v
+p4ery
+2pes
+pes4s3
+pes5til
+3pet
+pet5all
+pet3en
+pe2ti
+pet3r
+pe4wa
+4pex
+p1f
+p5g
+2ph.
+4phae
+pha5ged
+ph5al.
+ph2an
+phant5i
+phe4
+ph5esi
+ph3et
+3phib
+4phic
+1phil
+phi4n
+ph1is
+phi5th
+ph2l
+1pho
+4phobl
+4phoned
+3phor
+ph5oriz
+phos3p
+ph3ou
+3phra
+4phs
+1phu
+phu5i
+2phy.
+3phyl
+4pi.
+3piar
+4pica
+p5ical
+pi3co
+pi4cr
+pict4
+p2ie
+p4iest
+pi5eti
+p5ifie
+pig3n
+p2il
+3pile
+pill5in
+5pilo
+pi3lot
+pim2
+pin4e
+pin5et
+3pinge
+p4inn
+5p4ins
+3pi1o
+pip4a
+pi4pe
+5piq
+pir5ac
+pir4t
+p4is.
+p4isc
+pis2s
+piss5a
+pis5til
+pis4tr
+p2itu
+2p3k2
+p2l2
+1pla
+pla5no
+plant5er
+plas5tici
+pla5t4o
+4ple.
+4pled.
+3pleg
+3plen
+2ples
+4plism
+4plist
+plu2m
+plum4be
+plumb5er
+p4ly
+2p1m
+2pn
+pnos4
+1po
+4po.
+po3ca
+3pod
+4pof
+2p5oid
+pois5i
+po5lemic
+po4ly1
+poly3s
+poman5
+pom4e
+p4o2n
+pon4ac
+pon4ce
+pon4i4e
+3ponif
+pon5ta
+2pony
+po4pa
+po5ple
+4porato
+por3ea
+4pored
+pori4f
+por3p
+3port
+por5tie
+3p4os
+pos1s2
+po1te
+poult5e
+pound5er
+pout5er
+p5oxi
+5poy
+4p1p2
+ppar3
+pparat5
+p4pene
+ppet3
+pph4
+ppi4c
+p4pled
+p5pler
+p5plet
+ppress5o
+pprob5a
+1pr2
+prac1
+pra5d
+prar4
+4pre.
+preb3
+pre1d
+pref5ere
+prel5ate
+3prem
+pre5mat
+pren3
+pres3a
+pre5scin
+p3rese
+5pressi
+5prici
+pri4es
+4pri4m
+pring5er
+pring5i
+4prio
+p5riol
+pri4os
+pris5in
+priv2
+4priva
+4pro.
+pro3bo
+p3roc3a
+pro4ch
+pro1l
+pron4a
+proph5e
+propyl5
+pro3r2
+pros4i
+pros5tr
+pro3th
+4pry
+2ps2
+p3sac
+psal5t
+p3sh
+p1si
+p5sin.
+pso3m
+p1st
+psul3i
+3psyc
+2pt2
+pt3ab
+p4tad
+p4tan
+p2tar
+pt5arc
+p1ted
+p5tena
+pt5enn
+5ptery
+p5tet
+pt4ic
+p5tie
+p3til
+p2t3in
+pt4ine
+p3tise
+p5tisi
+p5tom
+p4tr
+p1tu
+pub1
+pu5be
+puc4
+puch4
+pudi4c
+pu5er
+puff5er
+pu4lar
+pu5lar.
+pu5lis
+p4u4m
+pum4o
+p4un
+pun4a
+3punc
+pun5gi
+pun3i
+pun2t
+pu3pi
+pur5b
+pur3c
+p4us
+push4ie
+pu3tat
+p5u5tis
+pu3tr
+4p1w
+2p4y
+py3e
+3pyg
+3pyl
+pyr3e
+py5t
+4qf
+qu4
+5quak
+4quar
+qua5tio
+2que.
+3quera
+4quere
+4ques.
+1quet
+5quina
+5quir
+3quito
+4quitu
+4ra.
+ra3ba
+5rabe
+3ra3bin
+r2abo
+ra3bol
+rac4a
+r2acu
+rac5ula
+ra5culo
+r2ad
+ra4de
+rad4ine
+rag5ou
+ra3gr
+3raill
+ra5ist
+4ralia
+ra3ly
+r5amn
+ra3mu
+r4andi
+ran5dish
+ran4du
+ra5nee
+ran4gen
+ra3nia
+ra3noi
+ran2t
+ran5ted
+5rantel
+rant5in
+rant5o
+rapol5
+rap5to
+4rarc
+rare2
+rar3ef
+rar5ia.
+ras2
+ras3c
+r2ase
+r4ask
+ra3so
+rass5a
+rass5in
+r4as5te
+ra5tap
+ra5tat
+rat5eu
+rath4e
+rat3if
+rat4in.
+ra5toc
+5ra5tol
+4r4atom
+ra4tos
+ra5tui
+rat5um
+rat3ur
+rav5ai
+rav5eli
+rav3it
+rawn4
+ra3zie
+r1b
+r2ba
+r4bag
+rb3ali
+rb1an
+rbar3
+r2be
+rbe5c
+r3bel
+rbel5o
+rb3ent
+r4bes
+rb2i
+rbic4
+rbic5u
+r2bin
+r5bine
+rbit1
+r2bos
+r4bum
+rbu5t4
+r1c2
+rcant5
+rca4s
+r4cele
+rcen5er
+rcen5tena
+r2ces
+rcha3i
+rch3al
+rch5ard
+rch5ate
+r3cheo
+r4cher
+rch4ier
+r4chin
+rch3is
+r3chit
+rcil4
+rci5nog
+rcis2
+rciz4i
+r2cl
+r4cle
+r5clo
+rcolo4
+rcrit5
+rcriti4
+rct4
+rc5ti
+r5dam
+r4d1an4
+rd4an.
+r2dar
+r5de4l
+r3dens
+r4des
+rd5ess
+rd5ian
+r4die
+r5dig
+rd2in
+rd3ing
+rdi3o
+rd1is2
+rd5ler
+rd3li
+r4dol
+rd5ous
+r2e
+4re.
+rea4
+r4ea.
+react5iv
+re3af
+re3ag
+re5alt
+re5amb
+re3ani
+re5ant
+re5asc
+reas3o
+r5eau
+3reav
+r5ebrate
+reb5uc
+re3cal
+rec4ce
+re3ce
+reced5en
+re3cha
+reci5si
+r4e1c2r
+rec4t3r
+re3cu
+2r4ed
+re1de
+re3dis
+re4dol
+re1dr
+reed5i
+ree3m
+3reer
+re2fe
+re3fin
+re5gali
+re5gra
+re3gre
+reg3ri
+re3gro
+reg3ul
+rei4
+re3if
+re1in
+re3is
+reit3
+reit4i
+re1la
+re1le
+4reled
+re3lia
+rel3ic
+re5lig
+reli4q
+rel3li
+r5em.
+rem5ac
+reman4d
+rem5ato
+r3emp
+rem5ul
+rena4
+ren5at
+r4endi
+rene2
+ren4es
+r4eni
+renic5
+ren4it
+ren4ter
+re5num
+re3oc
+3reog
+re5ola
+re3oli
+3reos
+re1pe
+re4per
+re5ph
+rep5id
+re3pin
+re3ple
+re4pre
+re1q
+rer4a
+rere4
+re5rea
+re3r2u
+2res.
+re3scr
+re3sel
+re3sem
+re3ser
+res5ist
+re5sit
+re3spe
+r3esq
+re5stal
+rest5er
+re5stu
+3retar
+re3ten
+re4t4er3
+re5term
+re1t2o
+re5ton
+re3tra
+re3tre
+re5tri
+re3tu
+re3un
+reur4
+re1v
+rev3el
+revi4t
+r1f
+rf4l
+rfu4m
+r1g2
+r4gag
+rgal4
+r2ge
+r5gee
+r4gene
+r3geo
+r3ger
+rg5li
+rgu5f
+rh2
+r5hel4
+rhe5ol
+rhos4
+3r2hy
+4ri.
+ri3am
+ri5ap
+2r2ib
+ri3bo
+rica5tu
+2rice
+rich5om
+rick4en
+r4icl
+ri5cli
+ri3col
+ri5cor
+ri4cra
+2ricu
+rid4al
+rid4e
+ri5el
+ri3er
+ri2es
+rift5er
+rif5tie
+5rifuga
+ri5gam
+rig5ant
+ri5l4a
+r4ile
+rill5er.
+rill5ings
+4rim.
+ri2ma
+rima4g
+rim5an4
+rim3at
+r4imb
+rimen4
+4rimm
+4rims
+rin4e
+r4inet
+ring5ie
+rink5er
+r4ino
+rin4s
+rins5i
+rin4t5er
+ri3o
+rio4g
+5rione
+ri4op
+ri5or
+ri5p2a
+ri5pie
+rip5lica
+ri5r
+ris4c
+ris4is
+r2isp
+ris4pa
+ris4pe
+ris5ter
+4risti
+ri3ton
+r5it5r
+r2i4v
+riv4al
+ri5vall
+riv5eli
+riv3en
+riv3il
+5ri5zo
+r1j
+r2k
+r5kas
+rk5ati
+r5kell
+rk5eni
+rk1er
+r3ket
+r3key
+r3kier
+r5kiest
+r5kin.
+r5kins
+rks4me
+r1la
+rlat3
+r1le
+r3l4ic
+r3line
+r5lins
+r4lit
+r1lo
+r3mac
+rma5ce
+r5mad
+r2mal
+r4manc
+r4mano
+r4mari
+r4mary
+rm4as
+r4m3ati
+rma5toc
+r5ma5tol
+rme2a
+r2mic
+rm4ica
+r5m2id
+rm4ie
+r5mig
+rmil5
+rmin4e
+rm3ing
+r4ming.
+r4mite.
+r3moc
+rmol4
+r1mu
+rmu3li
+r2n2
+rn3ab
+r3nac
+r5nad
+rn5ar
+rn3ate
+rn5atin
+rn5edl
+r3nel
+r3ness
+rn5est
+r3net
+r3ney
+r5nia
+rn5ib
+r3nic
+rn3in
+rn4ine
+r1nis
+rn3ist
+rni5v
+rn3iz
+rn5n
+r3noc
+r5nog
+rnt4
+rnuc4
+r5nut
+4ro.
+ro4be
+rob3le
+ro5br
+5rocc
+ro3cu
+r2od
+ro3do
+rody4n
+ro1fe
+ro3gn
+4roi
+ro3ic
+roid3
+ro3la
+r4oled
+rol5ite
+ro3ly
+romant4
+ro5mel
+ro3mit
+romolec5
+rom4p
+ro3mu
+ron4ac
+4ronal
+ro5nate
+ron5ch
+ron4do
+rong5i
+r5onme
+ro1no
+ron4ton
+roo4
+1room
+5root
+r2op
+4rop.
+ro3pel
+rop4ine
+r4opr
+r5opte
+ror5d
+4rore
+r4osa
+rosi4a
+ro5sol
+4ross
+ro5stat
+ros4ti
+ros5tit
+ro3tat
+ro1te
+ro4ter
+ro3tu
+5roue
+roul3
+round5er
+rou5sel
+4rouss
+r4out
+r4ow
+row3er
+4rox
+rpass5in
+rp3at
+rpe2
+r3pent
+rp5er.
+r2ph
+rph5e
+r3phol
+rp3ing
+rp5is
+rpol3a
+r2p5ou
+rpre4
+rpret5er
+r3pu
+r1q
+4r1r4
+rra4h
+rran5gi
+rrap4
+rre2l
+r4reo4
+rrhe3
+r3ri
+rric4
+rricu4
+rri4fy.
+rrin5ge
+rri4os
+rrob3
+rrog5
+rro4t
+r5ru
+rry5
+r3ryi
+r3rym
+2r1s2
+r4sag
+r2sal
+r5salis
+r5saliz
+r2san
+r4sar
+r2se
+r3sea
+r3sec
+rsel4
+rsell5
+rs3er.
+rs3ers
+r3set
+r3sha
+r3shi
+r4shie
+r5si2a
+rs3ib
+r5sie
+r4sil
+rs3ing
+r3sio
+r4sit
+rs3iv
+rs5li
+rstor4
+rstrat4
+r3su
+r4sus
+rswear4
+rt2
+rt3ab
+rta4g
+rt3age
+r3tar
+r4tare
+rt3c
+r1ted
+r4tedl
+r3tel4
+r5tend
+rt3eni
+r5terer
+r5tet
+r5teu
+r4thene
+rth2i
+rth5ing.
+rth3ri
+r1t4ic
+r4ticl
+r5tiet
+r5tila
+r5till
+rtil5le
+rt5ily
+r2tin
+r3tina
+rt3ing
+r3titi
+rti5tu
+rt3iv
+r2tiz
+rt5let
+rt3li
+r1t4o
+rto5l
+rt5rid
+rt5si
+r1tu
+r4tus
+rtwis4
+ru3a
+r4ube
+rub3r
+ru4ce
+r2ud
+rue4l
+r4uf
+ru3in
+ruis5i
+ru2l
+r4ume
+r4umi
+ru4more
+run4cl
+runcu4
+runcul5
+run2d4
+run2e
+ru5net
+run4g
+run4t
+ru2p
+rup5lic
+ru3pu
+rur4i
+rus4p
+rust5at
+rust5ee
+rus5tic
+rus4t5u
+ru3tal
+ru3ti
+r1v2
+r4vanc
+r2ve
+rvel4i
+r3ven
+rven4e
+rv5er.
+rv5ers.
+r3vest
+r3vet
+r3vey
+rvi4t
+r1w
+2r2y
+ry5er
+5rygm
+ry4go
+rym4b
+3ryngo
+4ryngol
+ryp5a
+ry2t
+ryth4i
+r2z
+2sa.
+2sab
+s3abl
+5sack
+sac4q
+s3act
+sac4te
+sad5i
+sad5o
+5sae
+sa4g
+3sai
+sain4t
+5sak
+sa2l
+sa5lac
+3sale
+sa3lie
+s4al4t
+sa3lu
+sa4m
+sa5min
+sam5o
+samp4
+san3a
+san4ded
+s4an4e
+san5gar
+san5if
+2sant
+sant5ri
+s3ap
+sap3r
+sar5s
+3sas.
+sas3s
+sassem4
+s2a1t
+sa2te
+s5ativ
+s5atory
+sat1u
+1sau
+sau5ci
+saur5
+savi2
+sa3vou
+4s3b
+s4bei
+sbe4s
+sby3
+sc2
+s1ca
+sca5len
+sca2p
+scar4c
+scav3
+s1ce
+s4ced
+4scei
+4s4ces
+sch2
+scid5
+s2co
+scof4
+s4coi
+3s4cope
+5scopic
+5scripti
+2s1cu
+4scura.
+4scuras
+2s1d2
+2se.
+se2a
+s4eam
+seas4
+sea3w
+sec4a
+sec5an
+se2co
+secon4
+2sed
+se4da
+sed4it
+3seed
+3sei
+sei3g
+5sela
+4sele
+se3lec
+selen5
+5self
+2s4eme
+sem2i
+semi5d
+sem4o
+sen5g
+3sens
+sen5sati
+sen5sori
+sent5ee
+5sentm
+seo5log
+se2p
+sep3a
+sep4si
+3sept
+sep3ti
+ser4an
+se5rene
+ser4to
+4servo
+s2es
+4ses.
+se5sh
+s5esta
+1set
+5seum
+3sev
+sev3en
+sewo4
+3sex
+sexo2
+3sey
+2s1f
+sfact5o
+sfi4
+sfor5e
+sfran5
+2s1g4
+s2h
+4shab
+sh4abi
+sh1er
+sh5et
+shil5li
+sh5iness
+sh3io
+5ship
+s3hon
+4shu4
+shys4
+si4all
+siast5
+4s1ib
+s3icat
+3sicc
+2s5icl
+si4cu
+si5cul
+s4id
+4sid.
+si4de
+side5l
+sid3en
+sid5eri
+4sids
+5sid5u4a
+si4ers
+sif4
+sif5f
+si4g
+1sili
+sim4ply
+2sin
+s2ine
+sin5et
+5sing5er
+sin3i
+5sink
+si5nol
+si3nus
+1sio4
+4sio.
+si5o5s
+3sip
+si4pr
+s1is2
+4sish
+4sism
+sist3a
+sist3o
+s1it
+si4te
+sit5om
+4s1iv
+5siva
+s1j
+s2k2
+4sk.
+s5kar
+ske2
+s3ket
+s5key
+s3kier
+s5kiest
+sk5ily
+sk5ines
+4sks
+sky3l
+2sl4
+slang5i
+s1lat
+3slau
+slav5eri
+s2le
+s5lea
+s3let
+s5ley
+s3lit
+slo3c
+slov5
+s5luc
+2s1m4
+s3man
+smas4
+s3men
+smi3g
+3smith
+smo4d
+smu5tatio
+s1n2
+s2na
+2so.
+2s3od
+sod3o
+sody4
+3soe
+4s3oid
+s2ol
+sol3a
+so5lan
+sol4er
+so3lic
+3solve
+solv5er
+1so2m
+soma5to
+3some.
+so5mete
+so3mo
+s2ona
+son5at
+s4one
+son5or
+s2o2p
+4sor3ie
+5sorio
+sor4it
+s5oriz
+sor3o
+s3ory
+sos4
+4sose
+so5th
+3sou
+sov5e
+so3vi
+spast4
+spens5a
+4speo
+3sperm
+s5pero
+spers5a
+sph2
+s3pha
+3spher
+spic5ul
+s2pid
+sp5id.
+s5pier
+spil4l
+s2pin
+sp3ing
+spi5ni
+spital5
+s1pl
+sple2
+s4ply
+s2po
+5spom
+spon5gi
+3spons
+3spoon
+spru5d
+s4py
+s1r
+sre2
+sreg5
+srep5u
+sre4s
+4ss
+s1sa
+s5sam2
+s1sel
+s5seng
+s3sent
+ssent5er
+ss3er.
+s5seri
+ss3ers
+s5seu
+ssev3
+s3sia
+s1sic
+s1sif
+ss1in
+ss4in.
+s4sine
+ss4is.
+s3s2it
+ss4ivi
+ss5li
+ss3m
+s4sn
+s1so
+ssol3u
+ssolu4b
+s4sore
+ssor5ial
+ss5po
+s1su
+ss3w
+st2
+4st.
+stab2
+sta3bi
+4stak
+s4tale
+stant5iv
+s3tas.
+5static
+st3c
+ste2
+ste5ar
+ste5at
+s4teb
+s4tec
+4s1ted
+s4tedl
+s4tedn
+4stere
+ster4ia
+s4tern.
+s3tero
+st5est
+s1th
+s4tha
+s4thu
+s3ti3a
+3stick
+s3ticu
+stil5ler
+s4tily
+st3ing
+5s4tir
+s5tiz
+4stl
+st3ler
+st3li
+s4toe
+3ston
+stone3
+ston4ie
+s5torat
+stor5ian
+s4tose
+s2tou
+s4tray
+stre4
+strep3
+3struc
+stru5d
+2st3s
+s1tu
+s4tud
+stu4m
+stur4e
+4stw
+s4ty
+1styl
+4su.
+su5an
+su4b1
+subt2
+suct4
+sud4a
+su3et
+suf3f
+sug3
+3sui
+sui5c
+su5ing
+1s2ul
+s4u2m
+sum3i
+sun4a
+su5pe
+su3pin
+supra3
+sur4as
+sur3c
+s4urg
+sur3pl
+su5su
+su5z
+2s3v
+svers5a
+sves4
+svest5i
+sw2
+5swee
+swell5i
+4swered
+2swo
+s2y
+4sy.
+sy4bi
+sy1c
+sy4ce
+sy4chr
+sy4d
+1syl
+3syn
+syn5e
+sy5pho
+syr5i
+2ta.
+2tab
+ta5blem
+3tabli
+t2abo
+ta3bol
+ta4bou
+t4a3ce
+ta5chom
+ta3chy
+ta4cid
+t5ade
+tad4i
+5t2adj
+ta5dor
+tad2r
+tae5n
+taf4
+tage5o
+ta5gog
+3tagr
+3tah
+1tai
+3tail
+2tair
+t4ais
+1tak
+tal2c
+tal5ent
+ta5lep
+t4alia
+t4alin
+tal4l3a
+5tallu
+t2alo4
+ta3ly
+tam5ari
+5ta3met
+tamorph5
+tan5at
+tand5er
+t4ane
+5tanel
+tan5ie
+t5aniz
+tant5an
+ta4pa
+1tard
+tar5ia.
+tark5i
+tar3n
+3tarr
+tas3i
+t3asm
+5tass
+tas4t
+ta3sta
+tast5i4c
+t4ateu
+3tatis
+t4ato.
+tat4ou
+tat4r
+tat3ut
+tau3to
+t5awa
+tawn4
+t4ax
+4t3b
+2tc2
+t1ca
+tcas4
+tch5ett
+tch5u
+4t1d4
+4te.
+te5cha
+5techn
+te3cr
+t4ed
+te5d2a
+4tedd
+4tedo
+4teei
+te2g
+5tegic
+t3ego
+teg1r
+teg3u
+tei4
+te2l
+4teled
+tel5iz
+1tell
+4te3lo
+3tels
+tem3a
+4teme
+te5mon
+ten4ag
+4tenar
+4tene
+t5enm
+5tenna
+4teno
+te5nog
+tent4a
+te2o
+teo5l
+2tep
+te3pe
+tep5i
+tera4c
+t4erag
+t4erato
+3ter3b
+5terd
+2tere4
+ter3eb
+ter5ec
+5terel
+te3reo
+3teres4
+1teri
+ter3ia
+ter5id
+ter5if
+t4erin
+ter5iorit
+ter3it
+ter5k
+5ternit
+ter5no
+3terr
+2t2es
+4tes.
+tesi4
+t3esq
+t3ess.
+t5esses
+tes4t
+test3a
+5teste
+test5er
+test5in
+test5or
+tes5tu
+teti4
+tet1r
+tetr5o
+tew3ar
+3tex
+2t3f
+t3g
+2th.
+tha4
+th5al.
+thal3m
+4the.
+4thea
+th5eas
+4thed
+1thei
+3theo
+theo3l
+t4her
+5therap
+th5erc
+t5herd
+4thered
+th3ern
+th3ery
+4thi.
+t5hill
+3think
+5th4io
+th4is.
+th5lo
+2thm2
+th4mi
+th3oli
+4t5hoo
+4thopt
+4thores
+3thot
+5thoug
+1th2r
+2ths
+5thur
+5thym
+3thyr
+thys4
+4ti.
+1ti2a
+ti3ab
+2t3ib
+5ti5bu
+t1ic
+t3ic.
+tic5as
+t2ici
+tici5ar
+3ti3cin
+t4icity
+ti3col
+tic1u
+4ticule
+t3id.
+t4ida
+3tidi
+ti3die
+t5ids
+3ti2en
+1tif2
+ti3fe
+4tiff
+4tific.
+3tigi
+tigi5o
+4tigm
+5tigu
+ti4ka
+ti4let
+5tilin
+t4ill
+til4l5ag
+t4ilt
+1tim
+tim1a
+5timet4
+t1in
+5ti5nad
+4tined
+tin3et
+ting5ing
+3tinn
+4tins
+t4int
+tin4te
+tin5ted
+tint5er
+tin3ue
+1tio
+ti3oc
+tiol3a
+ti5omo
+4tionem
+1tip
+ti5plex
+ti3pli
+ti4q
+ti5qua
+t3iris
+2t1is
+3tisan
+tis4c
+tish5i
+3tiss
+tis2t
+5t4iste
+t4istr
+ti5t4an
+tith4e
+tit5il
+t3itis
+3titl
+ti3tra
+3tiu
+2t1iv
+tiv5all
+t3ive
+tiv3is
+2tl
+t1la
+tlant4
+5tleb
+5tledr
+3tlef
+3tlem
+5tlen
+5tletr
+5tlew
+t1li
+tlin4
+4t3m
+tmet2
+tmo4t5
+2t3n2
+t4nere
+2to.
+toas4
+to1b
+4tocc
+tode5c
+tod4i
+to5do
+3toe
+1tog
+2t3oid
+5tok
+4toled
+tol4l
+tolu5
+to5ly
+tom3ac
+toma4n
+tomat5ol
+tom4b
+to4mog
+tom5os
+ton4e
+ton5ea
+3tonn
+ton3s
+top4e
+to5pia
+to4pos
+t1or
+to5rad
+4tore
+tor5er
+tori4as
+tor5oi
+tor5p
+tor4q
+3tos.
+to3s4p
+tos4t
+to5str
+to5talis
+to5taliz
+to3tem
+tot5u
+tou4f
+5tour
+t3ous
+4tov
+to3war
+t3p
+tr2
+tra4co
+4tradd
+4traist
+tra5q
+trarch4
+tra5ven
+tra5vers
+trav5est
+3tray
+4tre.
+4tred
+tre4mo
+tren4
+trend5i
+tre5pr
+tres4s
+4trew
+t5ricl
+3tricu
+t2rie
+tri5fli
+trifu5ga
+2tril
+tri3li
+tri3me
+t2rit
+4trix
+t4rod
+tro5f
+5troop
+tro4pha
+tro3sp
+t2rot
+t5roto
+tro1v
+3troy
+t4ruc
+tru3i
+2t4ry
+trys4
+4t1s
+t2sc
+ts4h
+ts2i
+t4sil
+tstay4
+2t1t4
+tta4
+t3tab
+t5tan
+t5tas
+t3ted
+t4tere
+t5terer
+t5test
+t3ti
+tti3tu
+ttitud4
+ttitu5di
+t3tler
+t3tli
+t5toi
+t5tor
+t3tos
+tt5s
+t4tupe
+t2ty
+4tu.
+tu1a
+tu4al5li
+tuari4
+tu4bin
+tu5bu
+tu5den
+tud5ie
+tu5en
+4tuf
+tu1i
+tu4is
+2tum.
+3tumi
+4tums
+3tun
+tun4a
+tu4ne
+tun5it
+tup5let
+tup5lic
+tu5rac
+t4uran
+turb3a
+tur4d
+turf5i
+5turit
+tur4n
+5tur5o
+1tut
+4tut4iv
+t1w
+t3wa4
+t2wi
+twi5li
+t3wit
+t3wo
+twon4
+4ty.
+ty4a
+5tych
+ty4let
+tyl5i
+ty5mi
+1typ
+3type
+1tyr1
+2tz2
+t5zia
+t5zie
+2ua2
+ua3ci
+u2ag
+ua5h
+u1al
+ua5lu
+uan4o
+uant5is
+uant5it
+uar3a
+uar2d
+uar3i
+uari4n
+uar5ters
+uar4t5i
+ua5tern
+uba4
+ub5bly
+u1b2i
+u4bicu
+ub3lin
+ub5lo
+ub3ra
+4uc
+u1c2a
+uccen5
+u4cend
+u4ch
+u5chr
+uc3l
+u4com
+uco5t
+uc2tr
+uc3ub
+uc5ul
+u5cum
+u5dac
+ud1al
+ud4e
+ud5ep
+u4der
+udev4
+ud4g
+udi4cin
+ud3ied
+u5dinis
+udi3o
+u5ditio
+u2do
+u5doi
+ud5on
+u5dor
+ueb4
+u4ed
+uen4o
+uen4ter
+uer3a
+ues4s
+uest5rat
+ues5tri
+ue4t
+uf2
+3ufa
+u3fl
+u4fo
+uft4
+uga4c
+ug5lif
+ug2ni
+u4go
+ug3ul
+ug3ura
+uhem3
+2ui2
+ui3al
+u2ic
+uicent5
+uid5o
+uil4a
+uild5er
+ui3lib
+uil4t
+uinc5u
+uin4s
+uint4
+uin4ta
+ui5pr
+uis3er
+uis4t
+uisti4
+uit5er
+ui5val5
+ui3vo
+u2iz
+4ul.
+u1la
+u4lab
+4ulac
+ul5ard
+u5lat
+ul4bo
+ul3ca
+ul4ch
+5ulche
+5ulchre
+4ulea
+u5lee
+u1len4
+4ulenci
+u5lent
+ulet4
+ul4ev
+ul2fa
+ul2i
+ul4ia
+u3line
+ul3ing
+ul5ish
+u5liti
+u5lity
+4ull
+ul4lat
+ul4l5ib
+ul4lis
+ul4lit
+ul3m
+u1lo
+u5lom
+ulph3i
+ulph3o
+ulp5ing
+ul4po
+2uls
+ul3sif
+u1lu
+ul1v4
+u1ma
+um3am
+umar4
+u5mas
+um4bar.
+um2bi
+umen4t
+u1mi
+u4mic
+u2m5if
+umi4fy
+umi5lia
+umin4ar
+u4mined
+u4m3ing
+u4mora
+u4mos
+um2p
+um4pa
+ump3er
+ump5li
+umpt4
+ump5te
+u1mu
+umu4lo
+un1
+u4n3a4
+un5ab
+unabu4
+un4ae
+un4as.
+un2ce
+un4dal
+un3ded
+unde4t
+undeter5m
+undi4c
+un4die
+un3do
+un4dus
+u3n2er
+unho5li
+un2i
+u1nic
+un4ie
+un3in
+un4ine
+uni5p
+uni3so
+un3ist
+uni1v
+un3iz
+unk5eri
+un5ket
+un3kn
+2unn
+un4nag
+un5o
+un5r
+un3s4
+un5sh
+un2ti
+until4
+unu4
+un3us
+uo3de
+uodent4
+u5oros
+u3os
+uo5tatio
+u1ou
+2up
+u1pat
+u1pe
+u5pee
+uper3
+u1ph
+u5pid
+up3ing
+u4po
+u5pol
+u2pr
+upre4
+u5quet
+u4r
+ur1a
+4ura.
+ura4ci
+4urae
+ura2g
+4uranti
+uras5
+urb5ing
+ur2c
+urc3a
+ur5den.
+ur5deni
+ur5die
+ur4du
+ur3ea
+ur5ee
+ur1er
+ur3ers
+ur1e2t
+ur3ett
+ur2f
+ur3fa
+ur1i
+u5ri5cu
+ur4ie.
+ur5ifie
+uril4
+ur4ili
+ur5ion
+uri4os.
+url5er
+ur5lie
+url5ing
+ur1m4
+urn3al
+urn3er
+urn5s
+ur1o
+uro4d
+ur5o4m
+ur5ot
+uroti4
+urpen5t
+urph4
+ur2s
+urs5al
+urs5er
+ur3sh
+urs3or
+ur5ta
+ur1te
+ur5tes
+urth2
+ur3the
+urti4
+ur1u
+ur4va
+u3sad
+us3ag
+us3al
+us4ap
+us3at
+2usc
+us4can
+ush5a
+us5ian
+usil5
+u4s1in
+usk5er
+us1p
+us4pa
+uss4e
+4ust
+us3tac
+us5tan
+ust4ic
+us5tici
+ust5ig
+ust3il
+us1to4
+us1tr
+us4tre
+usur4e
+us5uri
+u3tane
+utch4e
+ut5eni
+u5teo
+u4tere
+ut2i
+u3tie
+ut3ing
+u5tini
+u3tio
+ut5ism
+ut3ist
+5u5tiz
+ut3le
+utli4
+ut2o
+u4to5s
+u4t1ra
+uts2
+ut5sm
+ut4tone
+u3tu
+u4tul
+uu4
+uv2
+u4va
+uve2
+uven3
+uv5eri
+u5vin
+ux2o
+uy4a
+uy5er
+4va.
+2v3ab
+5vac
+va1ca
+va5ceo
+vacu1
+v4ad
+3vag3a
+va4ge
+4vaged
+vager4
+vag5r
+v1al.
+1vale
+vali2
+va5lie
+val4ise
+5valu
+5val4v
+vam4i
+va5mo
+5vann
+vanta4
+4vantl
+var4is
+4vase
+vas5el5
+v5a4so
+vast3a
+v4at.
+5vatee
+vat4ina
+4vatu
+2ve.
+vect4
+ve3g
+3vei
+2vel
+vel3at
+4vele
+v3eler
+ve5line
+v1ell
+v4ella
+vel5ler
+vel3li
+vel5opi
+ven4al
+ven4do
+ve1ne
+ve5nia
+vent5o
+ven4tr
+4venu
+v5en5ue
+5ve3o
+5verb
+verde5v
+4v4ere4
+ver5ea
+ver3ei
+v5erie
+ver3m4
+ver4ne
+5verse
+4ves.
+4vi.
+5vialit
+vi4atr
+vi1b4
+vic2
+vi4ca
+vi5cari
+vice3r
+5vict2
+5vicu
+5vider
+vign3
+vi4l
+vil3i
+3vili4a
+v5ilise
+v5ilize
+vil5lin
+vim4
+5vime
+2v1in
+vin4ac
+3vinci
+vin2e
+5vinit
+v5iniz
+vint4
+vin5ta
+3vi1o
+viol3
+vi5om
+5vi3p
+vire4
+vi5rid
+vir3u
+5visecti
+5visio
+v3ism
+2v5ist
+vi2t
+vit2a
+vi3tal
+vi5tel
+v5itie
+vit1r
+vi3tu
+v3ity
+viv5al
+viv5or
+vi5zo
+1vo
+2vo.
+vo2l
+vo5litio
+vol4ubi
+volv4
+4von
+vo5rac
+3vorc
+4vore
+3voro
+vo3tar
+2vow
+vr4
+v5ra4
+v5ri
+v5ro
+vrot4
+4vs
+v3ure
+2vv2
+v5ver
+v5vi
+4vy
+4wab
+wag3o
+wais4
+w3al.
+wall5er
+w3als
+wan5gli
+wank5er
+war5ded
+ward5er
+ward5r
+war4f
+war4te
+war5thi
+wass4
+was4t
+wa1te
+wav4ine
+w1b4
+w4bon
+w5c
+w5die
+w3dr
+we4b
+w4ed
+3weed
+5wei
+weight5i
+weir4
+wel3i
+weliz4
+wel4izi
+wel4li
+went4
+wes4
+west3
+w5est.
+w5f
+wh2
+w5hid
+wi2
+wid4e
+wi5er
+will5in
+wim2p
+win2e
+wing5er
+win4tr
+3w4ise
+with5eri
+w3la
+wl1er
+wl1i
+wl4ie
+w1m
+1wo
+wol4
+wol5ver
+3wom
+won2t
+word5i
+wotch4
+woun4
+wp5in
+wra4
+ws5ing
+w5ster
+wt4
+w5te
+w3to
+wy2
+wz4
+x1a
+x4ach
+x4ade
+x2ag
+x3agg
+xa5met
+x3ami
+xan5d
+xano4
+x2as
+xas5p
+x3c4
+xcav3
+xcor5
+xe4
+x1ec
+xec3r
+xe5cutio
+xecut5o
+xe2d
+x5edl
+x5edn
+x5eg
+x1em
+x3en
+xen4op
+x3er
+xer4g
+xer3o
+x1h
+xhort4a
+x1i
+x3ia.
+x4ias
+xi4c
+x5ige
+xim3a
+x4ime
+ximet4
+x3io
+xi4p
+x4it.
+x4its
+x1o
+x4ode
+x5om
+xo4mat
+xo4n
+x4os
+xotrop4
+x3p
+xpel4
+xpo5n2
+xpoun4
+x1s2
+x1t2
+x4ted
+xtens5o
+xter3i
+xter4m3
+xtern3
+x4th
+xti4
+xtra5d
+xtra3v
+xtre4
+xu4o
+x1ur
+xur4b
+x5us
+x5w
+xx4
+xys4
+xy3t
+y1a2
+y5ac
+1y2ar
+3yard
+yas4i
+4y1b
+yb2i
+yca5m
+y5chede
+ych5is
+y3cho
+y4chose
+yc1l
+yclam4
+y4coli
+y4coll
+ycom4
+y2cos
+y1d4
+yda4
+yder4
+ydro5s
+y4drou
+y3ee
+yel5o
+y3en
+y1er
+y3est.
+yes5te
+y5ett
+y5f
+y1g
+ygi2
+ygi5a
+y3gl
+ygo4i
+y1h
+y1i
+y3in
+yle2
+ylin5de
+yllab5i
+yl3os
+yl5ou
+y1me4
+y3men
+y5met
+y5mia
+ym5in
+ymot4
+ym4pha
+yn1
+ynago4
+ynand5
+yn5ap4
+yn5ast
+yn4ci
+ynd4
+yn2e
+yn3er
+yng4
+yn4gol
+yni4c
+yn4y
+y1o2
+yo3d
+yo4gis
+youn4
+young5
+2yp
+yp5al
+yper3
+y5pere
+y4peri
+y4pero
+y4pet
+y2ph
+yph4e
+yph3i
+y4p1i
+yp1n
+ypo1
+y4pox
+y2pr
+yp5ri
+yp4si
+yp5syf
+ypt3a
+y5pu
+y3rag
+yr3at
+yr3ic
+y5rig
+yr3is
+yr3i4t
+yr5olo
+yr4r
+yr4s
+yr5u
+4y2s
+ys5ag
+ys5at
+y3s2c
+y3sh
+ys1ic
+ys3in
+ysi4o
+yso5
+ys4so
+ys1t
+ys4to
+y3u
+yv4
+y3w
+yz5er
+yzy4
+z1a1
+2za.
+za4bi
+za2i
+z4as
+za4te
+zd4
+zeb4
+ze4d
+zen4a
+z5eng
+zer5a
+z3et4
+z1i
+zib5
+5zic4
+z2ie
+zi5m
+zin4c3i
+z3ing
+zing5i
+z4is
+3zlem
+z3ler
+z3li
+4zo.
+5zoa
+zo3an
+3zoo2
+zo3ol
+zo3on
+zo5op
+zo5oti
+zo5p
+zot2
+z5s
+5zum
+4zy.
+zz2
+z3zar
+z5zas
+z3zie
+zzo3
+z5zot
diff --git a/hyph/hyph/esperanto.lh b/hyph/hyph/esperanto.lh
new file mode 100644
index 0000000..862ee22
--- /dev/null
+++ b/hyph/hyph/esperanto.lh
@@ -0,0 +1,580 @@
+Lout hyphenation information
+%
+% COPYRIGHT (C) 2005 Ludovic Courtes
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either Version 3, or (at your option)
+% any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program; if not, write to the Free Software
+% Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA
+
+% Created by Ludovic Courtès, 2005-05-20, based on the file `eohyph.tex'
+% available from the `textex-texmf-3.0.tar.gz' package.
+%
+% Permission was granted on 15/6/05 by the original author, Sergio
+% Pokrovskij, for his file to be redistributed under the GPL.
+%
+% Since that file actually relies on several TeX macros which Lout isn't
+% able to understand, the following changes had to be done:
+%
+% o accented chars were rewritten from, e.g., `^c' to `\^c' to allow Lout
+% to recognize them as regular TeX escaped sequences;
+%
+% o `\nom', `\adj' and `\ver' are expanded as needed;
+%
+% o all other TeX macros are commented out;
+%
+% o text below `\endinput' is removed.
+%
+% This task is automatically performed by the `clear-tex-commands.sh'
+% shell script.
+%
+% Additionally, Lout's z36.c had to be extended in order to recognize
+% certain unusual TeX escaped sequences, like `\^c', etc.
+%
+
+Classes:
+@!$%^&*()_-+=~`{[}]:;|<,.>?/0123456789
+'
+aA
+bB
+cC
+dD
+eE
+fF
+gG
+hH
+iI
+jJ
+kK
+lL
+mM
+nN
+oO
+pP
+qQ
+rR
+sS
+tT
+uU
+vV
+wW
+xX
+yY
+zZ
+\^c\^C
+\^g\^G
+\^h\^H
+\^j\^J
+\^s\^S
+\~u\~U
+
+Patterns:
+% \message{Esperanto Hyphenation Patterns `eohyph', 1999-08-10}
+
+% Copyright (C) 1999 Sergei B. Pokrovsky <pok@iis.nsk.su>
+%
+% This program can be redistributed and/or modified under the terms
+% of the LaTeX Project Public License Distributed from CTAN
+% archives in directory macros/latex/base/lppl.txt; either
+% version 1 of the License, or any later version.
+%
+% More documentation can be found near the end of this file.
+
+% \begingroup
+% First we define some commands to be used inside the patterns.
+% To keep them local, we enclose the rest of the file in a group
+% (The \patterns command globally changes the hyphenation trie!).
+% \def\E{\errmessage{Esperanto hyphenation pattern file is corrupted}}
+% \catcode`\!=7 % use !!xy instead of ^^xy (because of TeX-2)
+% \catcode`\^=13 % for Esperanto's diacritics
+
+% \def^#1{\ifx#1c!!e6\else \ifx#1g!!f8%
+% \else \ifx#1h!!b6\else \ifx#1j!!bc%
+% \else \ifx#1s!!fe\else \ifx#1u!!fd%
+% \else \E \fi\fi\fi\fi\fi\fi
+%}}
+% Assign appropriate \catcode and \lccode values for all
+% accented characters used in the patterns:
+% \catcode230 = 11 \lccode230 = 230 % \^c
+% \catcode248 = 11 \lccode248 = 248 % \^g
+% \catcode182 = 11 \lccode182 = 182 % \^h
+% \catcode188 = 11 \lccode188 = 188 % \^j
+% \catcode254 = 11 \lccode254 = 254 % \^s
+% \catcode253 = 11 \lccode253 = 253 % \~u
+% Makrooj por la fina\^joj:
+% \def\adj#1{#1a. #1aj. #1ajn. #1an. #1e.}
+% \edef\nom#1{#1a. #1aj. #1ajn. #1an. #1e. #1o. #1oj. #1ojn. #1on.}
+% \def\ver#1{#1as. #1i. #1is. #1os. #1u. #1us.}
+
+% \patterns{
+a1 e1 i1 o1 u1 % ebligu tran\^con post la vokaloj,
+2aj. 2ajn. 2an. 2as. % krom se anta\~u fina\^jo,
+en. is. 2oj. 2ojn. 2on. 2os. 2us.
+a3a e3a i3a o3a u3a % krom se post vokalo
+a3e e3e i3e o3e u3e
+a3i e3i i3i o3i u3i
+a3o e3o i3o o3o u3o
+a3u e3u i3u o3u u3u
+e2sper
+% konsonantaj fina\^joj:
+2jn. 2lp. 2lt. 2nk. 2ns. 2nt. 2st.
+%
+.bl4 .br4 .dr4 .dl4 .fl4 .fr4 .gl4 .gn4 .gr4 .kl4 .kn4 .kr4 .kv4 .pl4 .pr4
+.ps4 .pt4 .sf4 .sk4 .skl4 .skr4 .skv4 .sl4 .sm4 .sn4 .sp4 .spl4 .spr4
+.st4 .str4 .sv4 .\^sl4 .\^sm4 .\^sn4 .\^sp4 .\^sr4 .\^spr4 .\^st4 .\^str4 .\^sv4 .tr4
+.vr4
+% A\^C
+1a2\^ca. 1a2\^caj. 1a2\^cajn. 1a2\^can. 1a2\^ce. 1a2\^co. 1a2\^coj. 1a2\^cojn. 1a2\^con.
+% AD:
+1a2da. 1a2daj. 1a2dajn. 1a2dan. 1a2de. 1a2do. 1a2doj. 1a2dojn. 1a2don. 1a2das. 1a2di. 1a2dis. 1a2dos. 1a2du. 1a2dus.
+.avok2a3d .bal2a3d \^cokol2a3d .fas2a3d .inv2a3d kamar2a3d .kan2a3d limon2a3d
+persv2a3d .pom2a3d seren2a3d
+% A\^J:
+1a2\^ja. 1a2\^jaj. 1a2\^jajn. 1a2\^jan. 1a2\^je. 1a2\^jo. 1a2\^joj. 1a2\^jojn. 1a2\^jon.
+% ALT-
+.al2t
+al3tabl al3t2a3r al3ter al3trui
+% AN:
+1a2na. 1a2naj. 1a2najn. 1a2nan. 1a2ne. 1a2no. 1a2noj. 1a2nojn. 1a2non. 1a2nas. 1a2ni. 1a2nis. 1a2nos. 1a2nu. 1a2nus. 1a2nism 1a2n1i2n
+afg2a3n akomp2a3n arg2a3n ark2a3n ban2a3n but2a3n cig2a3n \^cambel2a3n
+\^camp2a3n \^carlat2a3n \^cik2a3n dek2a3n dog2a3n el2a3n faz2a3n font2a3n
+galv2a3n germ2a3n \^gentlem2a3n hisp2a3n .\^ha3n inf2a3n ir2a3n jap2a3n
+.ka3n kalk2a3n kank2a3n kapit2a3n kard2a3n karav2a3n kor2a3n
+.ma3n marcip2a3n membr2a3n met2a3n nirv2a3n .on2a3n org2a3n
+.pa3n partiz2a3n pelik2a3n porcel2a3n prof2a3n .ra3n rum2a3n
+.sa3n 3s2log2a3n sopr2a3n stef2a3n sufrag2a3n sult2a3n
+\^sam2a3n teher2a3n tir2a3n turb2a3n .va3n vatik2a3n veter2a3n vulk2a3n
+%
+.ka3n2i3n safr2a3n2i3n .ta3n2i3n
+% ANT:
+1an2ta. 1an2taj. 1an2tajn. 1an2tan. 1an2te. 1an2to. 1an2toj. 1an2tojn. 1an2ton.
+adjut2an3t .arog2an3t .atl2an3t .ban3t .brok2an3t .diam2an3t dilet2an3t
+disk2an3t elef2an3t .gal2an3t .gig2an3t inf2a4n3t inst2an3t konson2an3t
+.kan3t konst2an3t kvadr2an3t .kv2an3t le\~uten2an3t mom2an3t .okt2an3t
+.ped2an3t .plan3t tal2an3t batal3an4t
+% ant-ar, -ig, -ec:
+1an2t3ar an3t2arkt kan3t2arel
+1an2t1ig 1an2t1ec
+% APUD:
+.apu2d1
+% AR:
+1a2ra. 1a2raj. 1a2rajn. 1a2ran. 1a2re. 1a2ro. 1a2roj. 1a2rojn. 1a2ron. 1a2rig 1a2ri\^g
+am2a3r barb2a3r baz2a3r biz2a3r boj2a3r bulg2a3r .ci3d2a3r cig2a3r
+din2a3r dol2a3r er2a3r fanf2a3r .f2a3r formul2a3r garg2a3r git2a3r
+.ha3r2 hung2a3r invent2a3r izob2a3r jug2u3l2a3r
+kalend2a3r kap2i3l2a3r kla3r komp2a3r kulin2a3r kvatern2a3r
+lap2i3d2a3r .mol2a3r najb4a1r om2a3r ordin2a3r partik2u3l2a3r .pol2a3r
+pop2u3l2a3r prep2a3r prim2a3r rad2a3r remp2a3r rip2a3r sa3m2ov2a3r sanit2a3r
+sek2u3l2ar sekund2a3r sing2u3l2ar skal2a3r .st2a3r sol2i3d2a3r tal2a3r tat2a3r
+.vel2a3r vulg2a3r
+% AT:
+1a2ta. 1a2taj. 1a2tajn. 1a2tan. 1a2te. 1a2to. 1a2toj. 1a2tojn. 1a2ton. 1a2t1ec
+adiab2a3t agreg2a3t a\~utom2a3t a\~utorit2a3t .ab2a3t .adekv2a3t
+advok2a3t afrik2a3t .ag2a3t akrob2a3t .akur2a3t alop2a3t .apar2a3t
+apost2a3t arom2a3t .ba3t .bl2a3t .brok2a3t .deb2a3t delik2a3t
+diplom2a3t .duk2a3t .et2a3t fakult2a3t .fr2a3t .gefr2a3t .gla3t .gran2a3t
+.hep2a3t
+kandid2a3t .kar2a3t .kazem2a3t .klim2a3t .kom2a3t .komit2a3t .komp2a3t
+konkord2a3t .konst2a3t .krav2a3t kro3m2a3t .kvadr2a3t magistr2a3t .magn2a3t
+majorit2a3t malgl2a3t .mals2a3t .mand2a3t .mecen2a3t minorit2a3t .mon2a3t
+.mul2a3t .musk2a3t ordin2a3t .pal2a3t .pir2a3t .prel2a3t .prim2a3t
+priorit2a3t .priv2a3t .rab2a3t .ren2a3t .ril2a3t .sab2a3t .sal2a3t
+.sen2a3t sindik2a3t .skarl2a3t .sold2a3t .son2a3t .sp2a3t stigm2a3t
+substr2a3t surog2a3t .tok2a3t .tom2a3t .ultim2a3t universit2a3t .vulg2a3t
+% \^CEF-
+.\^ce2f1
+% \^CIUtaga ktp:
+.\^ci4a .\^cia4m1 .\^ci4e .\^cie4s .\^ci4o .\^cio4m .\^ci4u
+\^ci3el1
+% \^CJ:
+3\^c2jo
+% DIS:
+.di2s1
+.di3s2ert .di3s2erv .di3s2ip .di3s2oci
+.di3s2a. .di3s2aj. .di3s2ajn. .di3s2an. .di3s2e. .di3s2en.
+% DUM-
+.du2m1
+dump2in3g
+% DUON-
+.du2on1
+% EBL:
+1e2bla. 1e2blaj. 1e2blajn. 1e2blan. 1e2ble. 1e2blo. 1e2bloj. 1e2blojn. 1e2blon. 1e2blas. 1e2bli. 1e2blis. 1e2blos. 1e2blu. 1e2blus. 1e2bl1ec 1e2bl1a\^j
+.fe3b1l .me3b1l
+% EC:
+1e2ca. 1e2caj. 1e2cajn. 1e2can. 1e2ce. 1e2co. 1e2coj. 1e2cojn. 1e2con.
+.apr2e3c .de3c .pe3c sp2e3c
+% EG:
+1e2ga. 1e2gaj. 1e2gajn. 1e2gan. 1e2ge. 1e2go. 1e2goj. 1e2gojn. 1e2gon. 1e2gas. 1e2gi. 1e2gis. 1e2gos. 1e2gu. 1e2gus.
+.del2e3g .fl2e3g kol2e3g .om2e3g .prel2e3g .strat2e3g .norv2e3g
+% EJ:
+1e2ja. 1e2jaj. 1e2jajn. 1e2jan. 1e2je. 1e2jo. 1e2joj. 1e2jojn. 1e2jon. 1e2j1ig 1e2j1i\^g
+.be3j .pl2ej malpl2ej
+% EK-, EKS-
+.ek2s1 .ek3s2ci ek4s3cit ek4s3ciz .ek3s2id .ek1i2r .ek1rid
+1e2kzem
+% EKSTER-
+.ekste2r1
+.ekste3ra. .ekste3raj. .ekste3rajn. .ekste3ran. .ekste3re. .ekste3ro. .ekste3roj. .ekste3rojn. .ekste3ron. .ekste3ras. .ekste3ri. .ekste3ris. .ekste3ros. .ekste3ru. .ekste3rus.
+% EL-
+.el1i2r .el1a\^cet .el1uz
+% EM:
+1e2ma. 1e2maj. 1e2majn. 1e2man. 1e2me. 1e2mo. 1e2moj. 1e2mojn. 1e2mon. 1e2mas. 1e2mi. 1e2mis. 1e2mos. 1e2mu. 1e2mus. 1e2m1ec
+.alpr2e3m .anat2e3m blasf2e3m .boh2e3m diad2e3m .dil2e3m .ed2e3m ekstr2e3m
+.ektr2e3m .ekpr2e3m embl2e3m emfiz2e3m .ekz2e3m .har2e3m jerusal2e3m
+krizant2e3m .le3m .po2e3m .pr2e3m .probl2e3m .sk2e3m .te3m .tand2e3m .teor2e3m
+.tot2e3m .tr2e3m sist2e3m
+% EN-
+.en1ir2
+% END:
+1en2da. 1en2daj. 1en2dajn. 1en2dan. 1en2de. 1en2das. 1en2di. 1en2dis. 1en2dos. 1en2du. 1en2dus. 1en2do. 1en2don.
+.am2en3d .at2en3d .def2en3d .et2en3d .kal2en3d kres\^c2en3d .men3d .of2en3d
+.pen3d .pl2en3d pret2en3d rekom2en3d .sen3d sc2en3d .ten3d .ven3d
+% ET:
+1e2ta. 1e2taj. 1e2tajn. 1e2tan. 1e2te. 1e2to. 1e2toj. 1e2tojn. 1e2ton. 1e2taas. 1e2tai. 1e2tais. 1e2taos. 1e2tau. 1e2taus.
+a2\^c2e3t alfab2e3t alum2e3t amul2e3t .ask2e3t .atl2e3t .be3t
+bajon2e3t bil2e3t .bol2e3t bracel2e3t brev2e3t .bu\^g2e3t .deb2e3t .dem2e3t
+diab2e3t elizab2e3t .enk2e3t epit2e3t .form2e3t .gaz2e3t .herm2e3t .\^he3t
+.\^jak2e3t \^j2e3t kabin2e3t .kad2e3t kastanj2e3t .kin2e3t klarn2e3t
+kloz2e3t .kom2e3t kompl2e3t .konf2e3t kors2e3t korv2e3t kotl2e3t .krik2e3t
+.krok2e3t kvodlib2e3t .me3t magn2e3t marion2e3t .mot2e3t .ne3t .oml2e3t
+pamfl2e3t parg2e3t .pl2e3t .po2e3t .prof2e3t .prol2e3t .rak2e3t .rem2e3t
+.rip2e3t sekr2e3t skel2e3t .son2e3t .sov2e3t spag2e3t spin2e3t staf2e3t
+.stil2e3t \^sibol2e3t .tib2e3t tual2e3t .ve3t .veg2e3t .vend2e3t vinj2e3t
+%
+1es2tr
+% FOR-
+.fo2r1
+.fo3r2in3t .fo3r2u3m
+.fo3r2a. .fo3r2aj. .fo3r2ajn. .fo3r2an. .fo3r2e. .fo3r2o. .fo3r2oj. .fo3r2ojn. .fo3r2on. .fo3r2en .fo3r2as. .fo3r2i. .fo3r2is. .fo3r2os. .fo3r2u. .fo3r2us.
+% \^GIS-
+.\^gi2s1
+% ID:
+1i2da. 1i2daj. 1i2dajn. 1i2dan. 1i2de. 1i2do. 1i2doj. 1i2dojn. 1i2don.
+.abs2i3d .ac2i3d .akr2i3d .aps2i3d .ar2i3d .askar2i3d .asp2i3d .av2i3d
+.bi3d .bol2i3d .br2i3d cirkumc2i3d .dav2i3d .dec2i3d .e\~ukl2i3d
+.eg2i3d .fi3d .flor2i3d .fr2i3d frig2i3d genoc2i3d .gv2i3d hibr2i3d
+hum2i3d \^hlam2i3d .inc2i3d .ins2i3d inval2i3d .ji3d kan3t2ar2i3d koinc2i3d
+.konf2i3d krizal2i3d .li3d .lib2i3d likv2i3d .liv2i3d .luc2i3d
+.madr2i3d morb2i3d .muc2i3d perf2i3d piram2i3d .prez2i3d .ri3d
+rap2i3d rez2i3d rig2i3d .si3d .sol2i3d .str2i3d telev2i3d .tim2i3d
+.vi3d .val2i3d
+%
+1i2d1ar 1i2d1i2n .pir2i3d2in
+% IG:
+1i2ga. 1i2gaj. 1i2gajn. 1i2gan. 1i2ge. 1i2go. 1i2goj. 1i2gojn. 1i2gon. 1i2gas. 1i2gi. 1i2gis. 1i2gos. 1i2gu. 1i2gus.
+.br2i3g .di3g .fi3g .in3d2i3g .inst2i3g .intr2i3g .kvadr2i3g
+.li3g pfen2i3g .pi3g .prod2i3g .ri3g .rodr2i3g .str2i3g .ti3g .nav2i3g
+%
+1i2gebl
+1i2gant 1i2gint 1i2gont
+1i2gat al2i3g2a3tor l2i3g2a3turo
+1i2git 1i2got
+%
+1i2g1a2d br2i3g2a3d
+1i2g1e2m 1i2g1i2l
+% I\^G:
+1i2\^ga. 1i2\^gaj. 1i2\^gajn. 1i2\^gan. 1i2\^ge. 1i2\^go. 1i2\^goj. 1i2\^gojn. 1i2\^gon. 1i2\^gas. 1i2\^gi. 1i2\^gis. 1i2\^gos. 1i2\^gu. 1i2\^gus. 1i2\^gant 1i2\^gint 1i2\^gont
+.br2i3\^g .negl2i3\^g .prest2i3\^g .vert2i3\^g .vest2i3\^g
+% -i\^g-ad, -em
+1i2\^g1a2d 1i2\^g1e2m
+% IL:
+1i2la. 1i2laj. 1i2lajn. 1i2lan. 1i2le. 1i2lo. 1i2loj. 1i2lojn. 1i2lon.
+abut2i3l acet2i3l .ang2i3l .apr2i3l .arg2i3l .az2i3l .bab2i3l .bac2i3l
+.baz2i3l .ber2i3l .bi3l .br2i3l .braz2i3l .ced2i3l .civ2i3l .\^ci3l
+\^cin\^c2i3l .dakt2i3l .deb2i3l .def2i3l .dist2i3l .domic2i3l .dr2i3l
+.ed2i3l .ekz2i3l .eps2i3l .et2i3l .fi3l .fac2i3l .fus2i3l .gor2i3l
+.gr2i3l .\^gent2i3l .hum2i3l .jub2i3l .ki3l .kamar2i3l kamom2i3l
+.komp2i3l .kons2i3l krokod2i3l .mi3l .mant2i3l .met2i3l mob2i3l
+.mut2i3l na\~ut2i3l of2i3l .osc2i3l paskv2i3l .ps2i3l pterodakt2i3l
+.pup2i3l sen2il sim2i3l .st2i3l .stab2i3l stenc2i3l strob2i3l subt2i3l
+svah2i3l trankv2i3l .ut2i3l .vi3l .van2i3l .vig2i3l vodev2i3l volat2i3l
+% -il-ar:
+1i2l1ar
+b2i3l2a3rd dakt2i3l2a3rb pl2i3l2a3r\^g f2i3l2a3ri frit2i3l2a3ri f2i3l2a3rb
+% IN (nur estrin istin ulin; patrin fratin knabin prefere restu senanalizaj):
+1e2str1i2na. 1e2str1i2naj. 1e2str1i2najn. 1e2str1i2nan. 1e2str1i2ne. 1e2str1i2no. 1e2str1i2noj. 1e2str1i2nojn. 1e2str1i2non.
+% ist-in:
+1i2s2t1i2na. 1i2s2t1i2naj. 1i2s2t1i2najn. 1i2s2t1i2nan. 1i2s2t1i2ne. 1i2s2t1i2no. 1i2s2t1i2noj. 1i2s2t1i2nojn. 1i2s2t1i2non.
+d2is3t2ingo
+% ul-in:
+1u2l1i2na. 1u2l1i2naj. 1u2l1i2najn. 1u2l1i2nan. 1u2l1i2ne. 1u2l1i2no. 1u2l1i2noj. 1u2l1i2nojn. 1u2l1i2non.
+ins2ul2i3n
+% ant-in:
+1an2t1i2na. 1an2t1i2naj. 1an2t1i2najn. 1an2t1i2nan. 1an2t1i2ne. 1an2t1i2no. 1an2t1i2noj. 1an2t1i2nojn. 1an2t1i2non.
+adam2a4n3t2i3n a4n3t2i3nom brig2a4n3t2i3n gal2a4n3t2i3n .k2a4n3t2i3n
+strof2a4n3t2i3n
+% IND:
+1in2da. 1in2daj. 1in2dajn. 1in2dan. 1in2de. 1in2das. 1in2di. 1in2dis. 1in2dos. 1in2du. 1in2dus. 1in2do. 1in2don. 1in2d3ec 1in2d3ig 1in2d3i\^g
+.bin3d .hin3d .lin3d rozal4in3d .bl4in3d .pin3d tamar4in3d .\^sin3d .vin3d
+.in3d2ign in3d2i\^gen
+% ING:
+1in2ga. 1in2gaj. 1in2gajn. 1in2gan. 1in2ge. 1in2go. 1in2goj. 1in2gojn. 1in2gon. 1in2gig
+.din3g .pud2in3g .vik2in3g 3s2mok2in3g \^sil2in3g .klin3g sterl2in3g
+dom2in3g men2in3g salp2in3g .rin3g .far2in3g .har2in3g
+.lar2in3g .mer2in3g .fr2in3g .sir2in3g .krin3g str2in3g vrin3g
+.at2in3g .mit2in3g .est2in3g .dist2in3g .svin3g
+% INT:
+1in2ta. 1in2taj. 1in2tajn. 1in2tan. 1in2te. 1in2to. 1in2toj. 1in2tojn. 1in2ton. 1in2t3ar 1in2t3ec 1in2t3us
+.abs2in3t .fin3t hiac2in3t .jac2in3t .kvin3t labir2in3t .pin3t .pl2in3t
+.tin3t tereb2in3t
+% INTER-
+.inte2r1
+.inte3r2es .inte3r2ez .inte3r2upt
+.inte3ra. .inte3raj. .inte3rajn. .inte3ran. .inte3re. .inte3ro. .inte3roj. .inte3rojn. .inte3ron. .inte3ras. .inte3ri. .inte3ris. .inte3ros. .inte3ru. .inte3rus. .inte3ren.
+% ISM:
+1is2ma. 1is2maj. 1is2majn. 1is2man. 1is2me. 1is2mo. 1is2moj. 1is2mojn. 1is2mon. 1i2s2m3ec
+.pr2is3m .ris3m .sk2is3m .sis3m
+% IST:
+1i2s2ta. 1i2s2taj. 1i2s2tajn. 1i2s2tan. 1i2s2te. 1i2s2to. 1i2s2toj. 1i2s2tojn. 1i2s2ton. 1i2s2t3ec 1i2s2t3ar
+%
+.amet2i3s3t antikr2i3s3t aor2i3s3t .ar2i3s3t .bal2i3s3t .bat2i3s3t .ci3s3t
+.di3s3t ekz2i3s3t .gen2i3s3t .gi3s3t .hi3s3t ins2i3s3t kons2i3s3t .ki3s3t
+.kr2i3s3t .li3s3t .pi3s3t pers2i3s3t .rez2i3s3t .sk2i3s3t .vi3s3t
+% IT:
+1i2ta. 1i2taj. 1i2tajn. 1i2tan. 1i2te. 1i2to. 1i2toj. 1i2tojn. 1i2ton. 1i2t3ec p2i3t4eci
+%
+.ag2i3t akred2i3t antrac2i3t .apet2i3t .bi3t .band2i3t biskv2i3t
+.br2i3t .ci3t .cenob2i3t .cirkv2i3t .civ2i3t .deb2i3t defic2i3t .di3g2i3t
+dinam2i3t .efr2i3t .eksc2i3t eksplic2i3t .el2i3t .emer2i3t .erm2i3t
+.erud2i3t .ev2i3t .fr2i3t .gamb2i3t .gl2i3t .graf2i3t .gran2i3t
+.grav2i3t hermafrod2i3t .hez2i3t hipokr2i3t .im2i3t .inc2i3t
+infin2i3t inkogn2i3t interm2i3t .inv2i3t kapac2i3t komprom2i3t
+.konf2i3t .kred2i3t .kv2i3t .kval2i3t .kviv2i3t .li3t .mi3t
+malak2i3t .margar2i3t .marm2i3t .med2i3t megal2i3t .mer2i3t
+mil2i3t asimil3i4t
+.mosk2i3t .neof2i3t okcip2i3t ol2i3t .orb2i3t palp2i3t .paraz2i3t
+.pir2i3t plebisc2i3t precip2i3t prestid2i3g2i3t preter2i3t prof2i3t
+prozel2i3t .ri3t rehabil2i3t .rekviz2i3t sanskr2i3t .satel2i3t
+sibar2i3t .sk2i3t .sp2i3t .spir2i3t .spl2i3t .spr2i3t stalagm2i3t
+stalakt2i3t .stil2i3t .su3b2i3t .\^sv2i3t .term2i3t .trans2i3t
+troglod2i3t .vi3t .viz2i3t .zen2i3t
+% KELK-
+.kel2k
+% KROM-
+.kro2m1 .kro3ma. .kro3maj. .kro3majn. .kro3man. .kro3me. krom2o % kromoforo, -foto, -lito, -sfero, -somo ...
+% KUN-
+.ku2n1
+ku3n2ikl
+% LIA-
+.li4a
+li5an li5as
+% MAL:
+.ma2l1 ma3l2ic
+% MALNOV-
+.malno2v
+% MEM:
+.me2m1 me3m2or
+% MIA-
+.mi4a
+mi5asm mi5a\~u
+% MIS:
+.mi2s1
+.mi3s2al mi3s2il .mi3s2ia .mi3s2ie .mi3s2ii .mi3s2io .mi3s2iu
+% MEZ-
+.me2z1
+mez2alianc me3z2embri me3z2enter .me3z2ere .mez2o me3z2ur
+% NIA-
+.ni4a
+% NJ:
+3nja. 3njaj. 3njajn. 3njan. 3nje. 3njo. 3njoj. 3njojn. 3njon.
+% NOV-
+.no2v
+% OBL:
+1o2bla. 1o2blaj. 1o2blajn. 1o2blan. 1o2ble. 1o2blo. 1o2bloj. 1o2blojn. 1o2blon. 1o2bl1ec
+gren2o3bl malno3bl .no3bl .vo3bl
+% ON:
+du3ona. du3onaj. du3onajn. du3onan. du3one. du3ono. du3onoj. du3onojn. du3onon.
+.trio2n .kvar3o2n .kvin3o2n .ses3o2n .sep3o2n .ok3o2na. .ok3o2naj. .ok3o2najn. .ok3o2nan. .ok3o2ne. .ok3o2no. .ok3o2noj. .ok3o2nojn. .ok3o2non. .na\~uo4n
+dek3o2na. dek3o2naj. dek3o2najn. dek3o2nan. dek3o2ne. dek3o2no. dek3o2noj. dek3o2nojn. dek3o2non. cent3o2na. cent3o2naj. cent3o2najn. cent3o2nan. cent3o2ne. cent3o2no. cent3o2noj. cent3o2nojn. cent3o2non. mil3o2na. mil3o2naj. mil3o2najn. mil3o2nan. mil3o2ne. mil3o2no. mil3o2noj. mil3o2nojn. mil3o2non.
+% ONT:
+1on2ta. 1on2taj. 1on2tajn. 1on2tan. 1on2te. 1on2to. 1on2toj. 1on2tojn. 1on2ton.
+disk2on3t .fon3t .fr2on3t .hon3t horiz2on3t .kon3t konfr2on3t
+.mon3t mastod2on3t .melol2on3t .pon3t .rak2on3t .rem2on3t .renk2on3t
+.sp2on3t vol2on3t
+% OP:
+duo2pa. duo2paj. duo2pajn. duo2pan. duo2pe. duo2po. duo2poj. duo2pojn. duo2pon. .trio2p kvar3o2p kvin3o2p ses3o2p sep3o2p
+.ok3o2pa. .ok3o2paj. .ok3o2pajn. .ok3o2pan. .ok3o2pe. .ok3o2po. .ok3o2poj. .ok3o2pojn. .ok3o2pon. na\~uo4p dek3o2pa. dek3o2paj. dek3o2pajn. dek3o2pan. dek3o2pe. dek3o2po. dek3o2poj. dek3o2pojn. dek3o2pon. cent3o2pa. cent3o2paj. cent3o2pajn. cent3o2pan. cent3o2pe. cent3o2po. cent3o2poj. cent3o2pojn. cent3o2pon. mil3o2pa. mil3o2paj. mil3o2pajn. mil3o2pan. mil3o2pe. mil3o2po. mil3o2poj. mil3o2pojn. mil3o2pon.
+% OT:
+1o2ta. 1o2taj. 1o2tajn. 1o2tan. 1o2te. 1o2to. 1o2toj. 1o2tojn. 1o2ton.
+abrik2o3t anekd2o3t antid2o3t asimpt2o3t .az2o3t .bo3t .bal2o3t
+bankr2o3t .behem2o3t bergam2o3t .bi3g2o3t .bisk2o3t bojk2o3t .do3t
+.dep2o3t .desp2o3t .dev2o3t dorl2o3t .ekz2o3t .er2o3t .erg2o3t .fo3t
+.fag2o3t .fakt2o3t .fl2o3t fokstr2o3t .fr2o3t .go3t .gav2o3t
+.golg2o3t .gr2o3t .herod2o3t hipn2o3t hotent2o3t .jo3t \^jab2o3t
+.ko3t .ka\^cal2o3t kalik2o3t .kaml2o3t .kan2o3t .kap2o3t .kar2o3t
+.koj2o3t .komp2o3t kompl2o3t kreoz2o3t .kul2o3t .kv2o3t .alikv2o3t
+.lo3t .lit2o3t .mo3t .mar2o3t .mark2o3t marm2o3t .mioz2o3t .no3t
+nark2o3t .po3t perlam2o3t .pier2o3t .pil2o3t .piv2o3t .pl2o3t
+poligl2o3t .ro3t .rab2o3t reding2o3t .rob2o3t .sab2o3t sacerd2o3t
+.sk2o3t .skler2o3t .skr2o3t .sp2o3t .\^so3t \^sevj2o3t .terak2o3t
+.tr2o3t .trik2o3t .vo3t .zel2o3t
+% POR-
+.po2r
+% POST-
+.pos2t1
+pos3t2ament pos3t2iljon pos3t2u3l
+% PRETER:
+.prete2r1
+.re2f3l2ig .re2spond .re2spublik .re2storaci
+% RETRO:
+.re2tro
+% SAM-
+.sa2m
+sam2ar .sa3m2u3m sa3m2uraj
+% SEN-
+.se2n1
+.se3n2aa .se3n2ao sen2at sen2eskal
+% SIA-
+.si4a
+% SUB-
+.su2b1
+.su3b2ute
+% SUPER-
+.supe2r1
+.supe3ra. .supe3raj. .supe3rajn. .supe3ran. .supe3re. .supe3ro. .supe3roj. .supe3rojn. .supe3ron. .supe3ras. .supe3ri. .supe3ris. .supe3ros. .supe3ru. .supe3rus.
+% \^SIA-
+.\^si4a
+% TRANS:
+.tran2s
+tran3scend tran3sept tran3sistor tran3sit tran3s2pir
+% TUT-
+.tu2t1
+.tu3ta. .tu3taj. .tu3tajn. .tu3tan. .tu3te. .tu3to. .tu3toj. .tu3tojn. .tu3ton.
+% UJ:
+1u2ja. 1u2jaj. 1u2jajn. 1u2jan. 1u2je. 1u2jo. 1u2joj. 1u2jojn. 1u2jon. 1u2j1ig 1u2j1i\^g
+.and2u3j .halel2u3j
+% UL:
+1u2la. 1u2laj. 1u2lajn. 1u2lan. 1u2le. 1u2lo. 1u2loj. 1u2lojn. 1u2lon. 1e2m1u2l e3m2u3ls 1u2l3ec 1u2l3ej
+%
+.akum2u3l .ang2u3l .bu3l .bet2u3l .bru3l .ejak2u3l .fist2u3l
+form2u3l .fu3l galin2u3l .gran2u3l .grat2u3l .herk2u3l
+hierod2u3l homunk2u3l .inok2u3l .ins2u3l .instanb2u3l .ju3l .\^ju3l
+.ku3l .kab2u3l kalend2u3l kalk2u3l kapit2u3l kaps2u3l koag2u3l
+.kons2u3l .kop2u3l korpusk2u3l .kum2u3l .lu3l .liverp2u3l .mu3l
+.mak2u3l manip2u3l matrik2u3l .mod2u3l molek2u3l .nu3l .neb2u3l
+.ok2u3l .pu3l .pa\^c2u3l partik2u3l .pust2u3l .ru3l
+.reg2u3l retik2u3l .ruk2u3l .sim2u3l skrup2u3l somnamb2u3l speg2u3l
+.spek2u3l .stim2u3l .tu3l .tab2u3l tarant2u3l .tru3l tuberk2u3l
+turb2u3l .ul2u3l .uv2u3l .vist2u3l
+%
+1u2l1ar 2u3l2ari 2u3l2ard .pedik2u3l2ar
+% UM:
+1u2ma. 1u2maj. 1u2majn. 1u2man. 1u2me. 1u2mo. 1u2moj. 1u2mojn. 1u2mon. 1u2mas. 1u2mi. 1u2mis. 1u2mos. 1u2mu. 1u2mus. 1u2m3ec
+.alb2u3m .bu3m .opid2u3m referend2u3m .fu3m parf2u3m .gu3m
+.hu3m .kuk2u3m .luk2u3m .lu3m vol2u3m .plu3m .stern2u3m
+.pu3m .ru3m .ser2u3m .gru3m .kvor2u3m .tru3m .stru3m
+.su3m .res2u3m kons2u3m opos2u3m .bit2u3m .kost2u3m .zu3m
+% VIA-
+.vi4a
+vi5and vi5atik
+% VIC-
+.vi2c1
+.vi3ca. .vi3caj. .vi3cajn. .vi3can. .vi3ce. .vi3co. .vi3coj. .vi3cojn. .vi3con.
+.vi3c2ia .vi3c2io
+% VIR-
+.vi2r1
+vir2us vi1r2ulent
+% ===
+1a2fabl 1a2gra 1a2kr 1a2per 1a2va1r
+4ologi 4ografi 2fik
+fre2m2d3l
+%
+4b1c 4b1b2 4b1d 4b1f 4b1g 4b1h4 4b1j2 4b1k 4b1m 4b1n 4b1p 4b1s 4b1s2k 4b1t 4b1v
+4b1z 4b1\^c 4b1\^g 4b1\^j 4b1\^s
+4c1b 4c1c2 4c1\^c 4c1d 4c1f 4c1g 4c1\^g 4c1h4 4c1j2 4c1\^j 4c1k 4c1l 4c1m 4c1n
+4c1p 4c1r 4c1s 4c1\^s 4c1t 4c1v 4c1z
+%
+4\^c1b 4\^c1c 4\^c1d 4\^c1f 4\^c1g 4\^c1h4 4\^c1j2 4\^c1k 4\^c1l 4\^c1m 4\^c1n 4\^c1p
+4\^c1s 4\^c1t 4\^c1v 4\^c1z 4\^c1\^c 4\^c1\^g 4\^c1\^j 4\^c1\^s
+%
+4d1b 4d1c 4d1d2 4d1f 4d1g 4d1h4 4d1j2 4d1k 4d1l 4d1m 4d1n 4d1p 4d1s 4d1t 4d1v
+4d1z 4d1\^c 4d1\^g 4d1\^j 4d1\^s
+%
+1e2ben 1e2d2z 1e2gal 1e2le1g2an3t
+%
+4f1b 4f1c 4f1\^c 4f1d 4f1f2 4f1g 4f1\^g 4f1h4 4f1j2 4f1\^j 4f1k 4f1m 4f1n 4f1p
+4f1s 4f1\^s f1t 4f1v 4f1z
+4g1b 4g1c 4g1\^c g1d 4g1f 4g1g2 4g1\^g 4g1h4 4g1j2 4g1\^j 4g1k g1m g1n 4g1p
+4g1s 4g1\^s 4g1t g1v 4g1z
+%
+4\^g1b 4\^g1c 4\^g1d 4\^g1f 4\^g1g 4\^g1h4 4\^g1j2 4\^g1k 4\^g1l 4\^g1m 4\^g1n 4\^g1p
+4\^g1s 4\^g1t 4\^g1v 4\^g1z 4\^g1\^c 4\^g1\^g 4\^g1\^j 4\^g1\^s
+%
+4h1\^c 4h1\^g 4h1\^j 4h1\^s
+%
+4\^h1b 4\^h1c 4\^h1d 4\^h1f 4\^h1g 4\^h1h4 4\^h1j2 4\^h1k 4\^h1m 4\^h1n 4\^h1p
+4\^h1s 4\^h1t 4\^h1v 4\^h1z 4\^h1\^c 4\^h1\^g 4\^h1\^j 4\^h1\^s
+%
+1i2dent
+%
+4j1b 4j1c 4j1d 4j1f 4j1g 4j1h4 4j1k 4j1l 4j1m 4j1n 4j1p 4j1r 4j1s
+4j1t 4j1v 4j1z 4j1\^c 4j1\^g 4j1\^j 4j1\^s
+%
+4\^j1b 4\^j1c 4\^j1d 4\^j1f 4\^j1g 4\^j1h4 4\^j1j2 4\^j1k 4\^j1l 4\^j1m 4\^j1n 4\^j1p
+4\^j1s 4\^j1t 4\^j1v 4\^j1z 4\^j1\^c 4\^j1\^g 4\^j1\^j 4\^j1\^s
+%
+4k1b 4k1c 4k1d 4k1f 4k1g 4k1h4 4k1j2 4k1m 4k1n 4k1p 4k1s
+k1s2t2r
+4k1t k1v 4k1z 4k1\^c 4k1\^g 4k1\^j 4k1\^s
+%
+4l1b 4l1c 4l1d 4l1f 4l1g 4l1h4 4l1j2 4l1k 4l1l2 4l1m 4l1n 4l1p 4l1r 4l1s2
+4l1t 4l1v 4l1z 4l1\^c 4l1\^g 4l1\^j 4l5\^s2 % mal^pari, el\^sra\~ubi
+4m1b 4m1c 4m1d 4m1f 4m1g 4m1h4 4m1j2
+4m1k 4m1l 4m1m2 4m1n 4m1p 4m1r 4m1s 4m1t 4m1v 4m1z 4m1\^c 4m1\^g 4m1\^j 4m1\^s
+mul2t1 mult2e mul2t3eg mul3ta mul3te. mul3to mul4t3obl
+%
+4n1b 4n1c 4n1d 4n1f 4n1g 4n1h4 4n1j 4n1k
+n2kv
+4n1l n1m 4n1n 4n1p 4n1r 4n1s
+n1s2c n1s2t
+4n1t
+4n1v2
+4n1z 4n1\^c 4n1\^g 4n1\^j 4n1\^s
+n2k1c n2s1f
+nor2d1af nor2d1am nor2d1az nor2d1e\~u nor2d1rus nor2d1germ
+%
+1o2be 1o2kup 1o2por1tun
+%
+4p1b 4p1c 4p1d p1f 4p1g 4p1h4 p1j2 p1k p1m p1n p1s p1t 4p1v 4p1z 4p1\^c
+4p1\^g 4p1\^j p1\^s
+%
+4r1b 4r1c 4r1d 4r1f 4r1g 4r1h4 4r1j2 4r1k 4r1l 4r1m 4r1n 4r1p 4r1s 4r1t
+4r1v 4r1z 4r1\^c 4r1\^g 4r1\^j 4r1\^s
+%
+s1b s1c 4s1\^c 4s1d s1f s1g 4s1\^g 4s1h4 4s1j2 4s1\^j s1k
+4s1l 3s2lab 3s2lalom 3s2lang 3s2lav 3s2led 3s2lip 3s2lojd 3s2lovak
+3s2loven 3s2lup 3s2lofoks
+4s1m 3s2malt 3s2merald 3s2milak 3s2mirg 3s2mut % smokING
+4s1n 3s2nob 3s2nuf
+s1p s1r 4s1s 4s1\^s
+s1t 1s2tu1d
+s1v 4s1z
+.su2d1af .su2d1am .su2d1azi .su2d1e\~ur .su2d1rus
+%
+4\^s1b 4\^s1c 4\^s1d 4\^s1f 4\^s1g 4\^s1h4 4\^s1j2 4\^s1k \^s1m \^s1n \^s1p
+4\^s1s \^s1t \^s1v 4\^s1z 4\^s1\^c 4\^s1\^g 4\^s1\^j 4\^s1\^s
+1\^s2tel
+%
+4t1b 4t1c 4t1d 4t1f 4t1g 4t1h4 4t1j2 4t1k 4t1m 4t1n 4t1p 4t1s 4t1t 4t1v
+4t1z 4t1\^c 4t1\^g 4t1\^j 4t1\^s
+%
+4\~u1 \~u2s1k
+%
+4v1b 4v1c 4v1d 4v1f 4v1g 4v1h4 4v1j2 4v1k 4v1l 4v1m 4v1n 4v1p 4v1s 4v1t 4v1v
+4v1z 4v1\^c 4v1\^g 4v1\^j 4v1\^s
+%
+4z1b 4z1c 4z1d 4z1f 4z1g 4z1h4 4z1j2 4z1k 4z1l
+z2lot
+4z1m 4z1n 4z1p 4z1r 4z1s 4z1t 4z1v 4z1\^c 4z1\^g 4z1\^j 4z1\^s
+%} % Pattern end}
+
+% \endgroup % of local redefinitions
diff --git a/hyph/hyph/finnish.lh b/hyph/hyph/finnish.lh
new file mode 100644
index 0000000..22a0930
--- /dev/null
+++ b/hyph/hyph/finnish.lh
@@ -0,0 +1,303 @@
+Lout hyphenation information
+%
+% COPYRIGHT (C) 1994 Jeffrey H. Kingston
+% with contributions by Kauko Saarinen (see details below)
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either Version 3, or (at your option)
+% any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program; if not, write to the Free Software
+% Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA
+
+% Created by Jeff Kingston 19 April 1994 from a TeX hyphenation
+% patterns file with the following header comment:
+%
+% fhyphen.tex for TeX 3.0 (-jme)
+%
+% Needs to be changed when the new fonts will be generated!
+%
+% -----> Finnish hyphenation patterns for MLPCTeX <------
+% First release January -86 by Kauko Saarinen,
+% Computing Centre, University of Jyvaskyla, Finland
+%
+% Completely rewritten January -88. The new patterns make
+% much less mistakes with foreign and compound words.
+% The article "Automatic Hyphenation of Finnish"
+% by Professor Fred Karlsson is also referred
+%
+% ftp'ed from tukki.jyu.fi by Sverre Slotte July 4 1991
+% changed ^^84 to ä and ^^85 to ö
+% ---------------------------------------------------------
+%
+
+Classes:
+@!$%^&*()_-+=~`{[}]:;'|<,.>?/0123456789
+aA
+bB
+cC
+dD
+eE
+fF
+gG
+hH
+iI
+jJ
+kK
+lL
+mM
+nN
+oO
+pP
+qQ
+rR
+sS
+tT
+uU
+vV
+wW
+xX
+yY
+zZ
+äÄ
+öÖ
+
+Patterns:
+1be
+1bi
+1bo
+1bu
+1by
+1da
+1de
+1di
+1do
+1du
+1dy
+1dä
+1dö
+1fa
+1fe
+1fi
+1fo
+1fu
+1fy
+1ga
+1ge
+1gi
+1go
+1gu
+1gy
+1gä
+1gö
+1ha
+1he
+1hi
+1ho
+1hu
+1hy
+1hä
+1hö
+1ja
+1je
+1ji
+1jo
+1ju
+1jy
+1jä
+1jö
+1ka
+1ke
+1ki
+1ko
+1ku
+1ky
+1kä
+1kö
+1la
+1le
+1li
+1lo
+1lu
+1ly
+1lä
+1lö
+1ma
+1me
+1mi
+1mo
+1mu
+1my
+1mä
+1mö
+1na
+1ne
+1ni
+1no
+1nu
+1ny
+1nä
+1nö
+1pa
+1pe
+1pi
+1po
+1pu
+1py
+1pä
+1pö
+1ra
+1re
+1ri
+1ro
+1ru
+1ry
+1rä
+1rö
+1sa
+1se
+1si
+1so
+1su
+1sy
+1sä
+1sö
+1ta
+1te
+1ti
+1to
+1tu
+1ty
+1tä
+1tö
+1va
+1ve
+1vi
+1vo
+1vu
+1vy
+1vä
+1vö
+% ------- Some common words borrowed from other languages -------
+% ------- This part could be updated from time to time -------
+%
+st2r 1st2re % -stressi, -strategia etc.
+%
+% ------ Some special cases occuring with compound words only ----
+% ------ There still remains well known problem as 'kaivos\-aukko' etc.
+a1y2
+y1a2
+y1o2
+o1y2
+u1y2
+y1u2
+ö3a2
+ö3o2
+ä3a2
+ä3o2
+ä1u2
+ö1u2
+a1ä2
+a1ö2
+o1ä2
+o1ö2
+u1ä2
+u1ö2
+% lyhyt/pitka -vokaalipareja, tavallisesti sanarajalla
+aa1i2 % maa-ikkuna
+aa1o2 % maa-ottelu
+aa1u2 % uraa-uurtava
+ee1a2 % tee-astia
+ee1i2 % tee-istutus
+ee1u2 % varietee-uusinta
+uu1e2 % puu-esine
+uu1o2 % puu-osa
+uu1i2 % puu-istutus
+a1uu % kala-uuni
+i1uu % ravi-uutiset
+e1uu % virhe-uutinen
+o1uu % radio-uutiset
+ai1ui % maanantai-uinti
+i1eu % keski-eurooppalainen
+% vokaalikolmikkoja etc. yhdyssanojen rajoissa
+io1a2
+io1e2
+e1ö2
+ö1e2
+.ä2 % don't hyphenate ä-lyllinen etc.
+%
+% The following patterns contain no general scientific rule. They
+% are selected more or less intuitively to solve problems
+% with common and frequently appearing compound words.
+% However, every pattern resolves more than only one
+% hyphenation problem.
+%
+yli1o2p % yli-opisto etc.
+alou2s1
+keu2s1 % oikeus-oppinut etc.
+tasau2s1 % tasaus-ennakko etc.
+rtau2s1
+2s1ohje % -sohjelma etc.
+2s1a2sia % nais-asianainen etc.
+1a2sian % neuvottelu-asian etc.
+1a2siat % koti-asian (ei kotia-sian)
+1a2sioi % talous-asioita etc.
+r2as l2as % tikku-rasia etc
+2s1o2pisk % xs-opiskelija etc
+2n1o2pet
+2s1a2loi
+2n1o2pist % kansan-opisto etc.
+2s1o2pist
+2s1o2sa % xxs-osakas etc.
+2n1o2sa % asian-osainen etc.
+alkei2s1
+peru2s1
+2s1i2dea. 2s1i2dean
+2s1e2sity % xs-esitys etc
+2n1e2dus % kansan-edustaja etc.
+2s1ajatu % -ajatus etc.
+2s1ase
+2s1apu
+2s1y2rit % yhteis-yritys etc.
+2n1e2nerg % ydin-energia etc.
+2s1y2hti
+2n1otto 2n1oton
+2n1anto 2n1anno
+2n1a2jan 2n1aika
+2n1o2mai
+2n1y2lit
+2s1a2len
+2n1a2len
+1a2siaka2s1
+ulo2s1 % ulos-ajo
+2n1a2jo % kiven-ajo
+2s1a2jo
+%
+% *** The following rules may be used on user's responsibility ***
+% *** for example, may be needed with narrow columns ***
+% >>>>>>>>>>> a1e a1o e1o o1a u1a <<<<<<<<<<<
+%
+% ----- Some districting rules by Professor Fred Karlsson's ideas ------
+%
+b2l 1b2lo bib3li
+b2r 1b2ri 1b2ro 1b2ru
+d2r 1d2ra
+f2l 1f2la
+f2r 1f2ra 1f2re
+g2l 1g2lo
+g2r 1g2ra
+k2l
+1k2ra 1k2ri
+1k2v 1k2va
+p2l
+p2r 1p2ro
+c2l
+q2v 1q2vi
+sc2h ts2h
diff --git a/hyph/hyph/french.lh b/hyph/hyph/french.lh
new file mode 100644
index 0000000..2e1c350
--- /dev/null
+++ b/hyph/hyph/french.lh
@@ -0,0 +1,1393 @@
+Lout hyphenation information
+%
+% COPYRIGHT (C) 1996 Jeffrey H. Kingston
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either Version 3, or (at your option)
+% any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program; if not, write to the Free Software
+% Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA
+
+% Created by Jeff Kingston, 19 May 1996, from a TeX
+% hyphenation file. Apart from commenting out things that
+% are not relevant to Lout I have made the following changes:
+%
+% (1) I have guessed that \c c means ccedilla, and I have changed the
+% only line containing it from 1\c c to 1\cc, and informed Lout that
+% \cc is the code for ccedilla. The change is because Lout does not
+% expect to find spaces in the middle of hyphenation patterns.
+%
+% (2) I have deleted the following lines since I am unsure what to do
+% about \oe (it is not an ISO-LATIN-1 character):
+%
+% 1c\oe0 % final zero essential to terminate cs
+% .d\'e2s1\oe0 % final zero essential to terminate cs
+% 1m\oe0 % final zero essential to terminate cs
+% 1n\oe0 % final zero essential to terminate cs
+% 1s\oe0 % final zero essential to terminate cs
+%
+% In other respects this file should faithfully reflect the original.
+
+Classes:
+@!$%^&*()_-+=~`{[}]:;|<,.>?/0123456789
+'
+aA
+bB
+cC
+dD
+eE
+fF
+gG
+hH
+iI
+jJ
+kK
+lL
+mM
+nN
+oO
+pP
+qQ
+rR
+sS
+tT
+uU
+vV
+wW
+xX
+yY
+zZ
+\`a\`A
+\^a\^A
+\cc
+\`e\`E
+\'e\'E
+\^e\^E
+\^\i\^I
+\"\i\"I
+\^o\^O
+\^u\^U
+
+Patterns:
+% f7hyph.tex % French hyphenation patterns (7-bit OT1 encoding)
+% f7hyph.tex is ONLY for people having a MlTeX engine and CMR fonts.
+% \message{f7hyph.tex french hyphenation patterns. 7-bit OT1 encoding
+% (V2.0) 05/20/94}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% *BEFORE* using this file *PLEASE* run checksum on it: %
+% checksum -v f7hyph.tex %
+% to make sure that it hasn't been damaged. %
+% Then if you notice anything wrong in french hyphenation please report to %
+% Daniel Flipo and Bernard Gaulle at the email address: cesure-l@ens.fr %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% checksum = "20125 1319 2460 29960"
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%% The most famous good guys who worked hard to obtain something usable.
+% Jacques Desarmenien, Universite de Strasbourg :
+% - << how to run TeX in a French environment: hyphenation, fonts,
+% typography. >> in Tugboat, 5 (1984) 91-102. and TeX85 conference
+% - << La division par ordinateur des mots francais :
+% application a TeX >> in TSI vol. 5 No 4, 1986 (C) AFCET-
+% Gauthier-Villars
+% Norman Buckle, UQAH (nb; many additions)
+% Michael Ferguson, INRS-Telecommunications (mjf) June 1988
+% Justin Bur, Universite de Montreal (jbb; checked against original list)
+% all patterns including apostrophe missing from nb list
+% after that, GUTenberg and specially Daniel Flipo and Bernard Gaulle
+% did their best effort to improve the list of patterns.
+%\begingroup
+% comment the following line when used without MlTeX and outside hyconfig.tex
+%\accenthyphcodes\spechyphcodes % changes the \' ... etc
+%\lccode`\'=`\'
+%%%%%%%%
+% hyphenation patterns for french ... for use with fonts that do not
+% have the accented characters inside.
+%%%%%%%
+% Mods to \i and \oe form ... TeX eats up spaces and loses patterns. mjf Jun 88
+%\lccode'33='33 %\oe ... both needed in
+%\lccode'20='20 % \i .. dotless i
+%\patterns{
+%-------------------%-----------------------%
+% phonetic patterns % etymological patterns %
+%-------------------%-----------------------%
+%%*
+%-------------------%-----------------------%
+% phonetic patterns % etymological patterns %
+%-------------------%-----------------------%
+%%a
+2'2
+.a4
+'a4
+.\^a4
+'\^a4
+ .ab3r\'ea
+ 'ab3r\'ea
+ a1\`e2dre
+ .ae3s4ch
+ 'ae3s4ch
+ 1alcool
+ a2l1algi
+ .amino1a2c
+ 'amino1a2c
+ .ana3s4tr
+ 'ana3s4tr
+ 1a2nesth\'esi
+ .anti1a2
+ 'anti1a2
+ .anti1e2
+ 'anti1e2
+ .anti1\'e2
+ .anti2enne
+ 'anti2enne
+ 'anti1\'e2
+ .anti1s2
+ 'anti1s2
+ .apo2s3ta
+ 'apo2s3ta
+ apo2s3tr
+ archi1\'e2pis
+ .as2ta
+ 'as2ta
+ a2s3tro
+%-------------------%-----------------------%
+% phonetic patterns % etymological patterns %
+%-------------------%-----------------------%
+%%b
+1ba
+1b\^a
+ .bai2se3main % hyphen disappeared from french 5/2/94
+1be
+1b\'e
+1b\`e
+1b\^e
+4be.
+4bes.
+2bent. % mute syllable: tombent (df) 22/02/94
+1bi
+1b\^\i0 % final zero essential to terminate cs
+ .bi1a2c
+ .bi1a2t % like .tri1a2t for tri-athlon bg 12/27/93
+ .bi1au
+ .bio1a2
+ .bi2s1a2
+ .bi1u2
+1b2l
+4ble.
+4bles.
+2blent. % mute syllable: troublent (df) 28/02/94
+1bo
+1b\^o
+1b2r
+4bre.
+4bres.
+2brent. % mute syllable: palabrent (df) 28/02/94
+1bu
+1b\^u
+1by
+%-------------------%-----------------------%
+% phonetic patterns % etymological patterns %
+%-------------------%-----------------------%
+%%c
+1\cc
+1ca
+1c\^a
+ca3ou3t2 % pour caoutchou... added 3/1/94 df-bg
+1ce
+1c\'e
+1c\`e
+1c\^e
+4ce.
+4ces.
+% words ending with -cent (df) 22/02/94
+ 2cent.
+ ja3cent.
+ ac3cent.
+ \'e3cent.
+ munifi3cent.
+ r\'eti3cent.
+privatdo3cent.
+ inno3cent.
+ es3cent.
+ acquies4cent.
+ is3cent.
+ immis4cent.
+%
+.ch4
+1c2h
+4ch.
+2chb
+4che.
+4ches.
+2chent. % mute syllable: touchent (df) 22/02/94
+ .ch\`e2vre3feuille % hyphen disappeared from french 5/2/94
+2chg
+ch2l
+4chle.
+4chles.
+ chlo2r3a2c
+ chlo2r3\'e2t
+2chm
+2chn
+2chp
+ch2r
+4chre.
+4chres.
+2chs
+2cht
+2chw
+1ci
+1c\^\i0 % final zero essential to terminate cs
+ .ci2s1alp
+1c2k
+4ck.
+2ckb
+4cke.
+4ckes.
+2ckent. % mute syllable: stockent (df) 22/02/94
+2ckf
+2ckg
+2ck3h
+2ckp
+2cks
+2ckt
+1c2l
+4cle.
+4cles.
+2clent. % mute syllable: encerclent (df) 28/02/94
+1co
+1c\^o
+ co1acc
+ co1acq
+ co1a2d
+ co1ap
+ co1ar
+ co1assoc
+ co1assur
+ co1au
+ co1ax
+ co1\'e2
+ co1ef
+ co1en
+ co1ex
+ .con4 % missing from nb list
+ .cons4 % missing from nb list
+ .contre1s2c
+ .contre3ma\^\i0tre % hyphen disappeared from french 5/2/94
+ co2nurb
+ .co1o2
+ .co2o3lie
+1c2r
+4cre.
+4cres.
+2crent. % mute syllable: massacrent (df) 28/02/94
+1cu
+1c\^u
+1cy
+.cul4 % -- as .con4 .cons4 (march 92)
+%-------------------%-----------------------%
+% phonetic patterns % etymological patterns %
+%-------------------%-----------------------%
+%%d
+1d'
+1da
+1d\^a
+ .dacryo1a2
+d1d2h
+1de
+1d\'e
+1d\`e
+1d\^e
+4de.
+4des.
+% words ending with -dent (df) 22/02/94
+ 2dent.
+d\'eca3dent.
+ \'e3dent.
+ cci3dent.
+ inci3dent.
+ confi3dent.
+ tri3dent.
+ dissi3dent.
+ chien3dent.
+ .ar3dent.
+ impu3dent.
+ pru3dent.
+%
+ .d\'e1a2
+ .d\'e1io
+ .d\'e1o2
+ .d\'e2s % originaly in JD file
+ %.d\'e2s1a2 removed 09/17/92 because wrong for the
+ % original JD 500 words test
+ .d\'e3s2a3cr
+ .d\'es2a3m % .d\'es2a2mi introduced 09/17/92 bec. i
+ % can't see why d\'esamidonner ran in JD.
+ % Moved to .d\'es2a3m df 12/27/93.
+ .d\'e3s2a3tell
+ .d\'e3s2astr
+ .d\'e3s2c % 1 moved 3 due to .d\'e2s 09/17/92
+ %.d\'e2s1e2 removed 09/17/92 because wrong for the
+ % original JD 500 words test
+ .d\'e2s1\'e2
+ .d\'e3s2\'e3gr
+ .d\'e3s2ensib
+ .d\'e3s2ert
+ .d\'e3s2exu
+ %.d\'e2s3h removed 09/17/92 because wrong for the
+ % original JD 500 words test
+ .d\'e2s1i2
+ .d\'e3s2i3d
+ .d\'e3s2i3gn
+ .d\'e3s2i3li
+ .d\'e3s2i3nen
+ .d\'e3s2invo
+ .d\'e3s2i3r
+ .d\'e3s2ist
+ %.d\'e2s1o2 removed 09/17/92 because wrong for the
+ % original JD 500 words test
+ .d\'e3s2o3d\'e
+ .d\'e3s2o3l
+ .d\'e3s2o3pil
+ .d\'e3s2orm
+ .d\'e3s2orp
+ .d\'e3s2oufr
+ .d\'e3s2p % 1 moved 3 due to .d\'e2s 09/17/92
+ .d\'e3s2t % 1 moved 3 due to .d\'e2s 09/17/92
+ .d\'e2s1u2n
+ 3d2hal
+ 3d2houd
+1di
+1d\^\i0 % final zero essential to terminate cs
+ di2s3cop
+ .di1a2c\'e
+ .di1a2cid
+ dia2g3n
+ .di1ald
+ .di1a2mi
+ .di1a2tom
+ .di1e2n
+ .di2s3h
+2dlent. % mute syllable: jodlent (df) 28/02/94
+1do
+1d\^o
+1d2r
+4dre.
+4dres.
+2drent. % mute syllable: engendrent (df) 28/02/94
+d1s2
+1du
+1d\^u
+1dy
+ .dy2s3
+ .dy2s1a2
+ .dy2s1i2
+ .dy2s1o2 % missing from nb list
+ .dy2s1u2
+%-------------------%-----------------------%
+% phonetic patterns % etymological patterns %
+%-------------------%-----------------------%
+%%e
+.e4
+'e4
+.\^e4
+'\^e4
+.\'e4
+'\'e4
+.\`e4
+'\`e4
+ 1\'e2drie
+ 1\'e2drique
+ 1\'e2lectr
+ 1\'e2l\'ement
+ .en1a2
+ 'en1a2
+ 1\'e2nerg
+ e2n1i2vr
+ .en1o2
+ 'en1o2
+ \'epi2s3cop
+ \'epi3s4cope
+ e2s3cop
+ .eu2r1a2
+ 'eu2r1a2
+ eu1s2tat
+ extra1
+ extra2c
+ extra2i
+%-------------------%-----------------------%
+% phonetic patterns % etymological patterns %
+%-------------------%-----------------------%
+%%f
+1fa
+1f\^a
+1fe
+1f\'e
+1f\`e
+1f\^e
+4fe.
+4fes.
+2fent. % mute syllable: agrafent chauffent (df) 22/02/94
+%
+1fi
+1f\^\i0 % final zero essential to terminate cs
+1f2l
+4fle.
+4fles.
+2flent. % mute syllable: gonflent (df) 28/02/94
+1fo
+1f\^o
+1f2r
+4fre.
+4fres.
+2frent. % mute syllable: balafrent (df) 28/02/94
+f1s2
+1fu
+1f\^u
+1fy
+%-------------------%-----------------------%
+% phonetic patterns % etymological patterns %
+%-------------------%-----------------------%
+%%g
+1ga
+1g\^a
+1ge
+1g\'e
+1g\`e
+1g\^e
+4ge.
+4ges.
+% words ending with -gent (df) 22/02/94
+ 2gent.
+ r\'e3gent.
+ entre3gent.
+ indi3gent.
+ dili3gent.
+intelli3gent.
+ indul3gent.
+ tan3gent.
+ rin3gent.
+ contin3gent.
+ .ar3gent.
+ 'ar3gent.
+ ser3gent.
+ ter3gent.
+r\'esur3gent.
+%
+1g2ha
+1g2he
+1g2hi
+1g2ho
+1g2hy
+1gi
+1g\^\i0 % final zero essential to terminate cs
+1g2l
+4gle.
+4gles.
+2glent. % mute syllable: meuglent (df) 28/02/94
+ 1g2n
+.sta2g3n
+ wa2g3n
+4gne.
+4gnes.
+2gnent. % mute syllable: accompagnent (df) 28/02/94
+1go
+1g\^o
+1g2r
+4gre.
+4gres.
+2grent. % mute syllable: immigrent (df) 28/02/94
+1gu
+1g\^u
+g1s2
+4gue.
+4gues.
+% words ending with -guent (df) 22/02/94
+ 2guent.
+.on3guent.
+'on3guent.
+%
+1gy
+%-------------------%-----------------------%
+% phonetic patterns % etymological patterns %
+%-------------------%-----------------------%
+%%h
+1ha
+1h\^a
+1he
+1h\'e
+1h\`e
+1h\^e
+ h\'emi1\'e
+ h\'emo1p2t
+4he.
+4hes.
+1hi
+1h\^\i0 % final zero essential to terminate cs
+1ho
+1h\^o
+1hu
+1h\^u
+1hy
+ hypera2
+ hypere2
+ hyper\'e2
+ hyperi2
+ hypero2
+ hypers2
+ hype4r1
+ hyperu2
+ hypo1a2
+ hypo1e2 % missing from nb list
+ hypo1\'e2
+ hypo1i2
+ hypo1o2
+ hypo1s2
+ hypo1u2
+%-------------------%-----------------------%
+% phonetic patterns % etymological patterns %
+%-------------------%-----------------------%
+%%i
+.i4
+'i4
+.\^\i4
+'\^\i4
+ i1algi
+ i1arthr
+ i1\`e2dre
+% ill patterns missing from nb list
+ il2l
+ cil3l
+ rcil4l
+ ucil4l
+ vacil4l
+ gil3l
+ hil3l
+ lil3l
+ l3lion
+ mil3l
+ mil4let
+\'emil4l
+ semil4l
+ rmil4l
+ armil5l
+ capil3l
+ papil3la
+ papil3le
+ papil3li
+ papil3lom
+ pupil3l
+ piril3l
+ thril3l
+ cyril3l
+ ibril3l
+ pusil3l
+ .stil3l
+distil3l
+instil3l
+fritil3l
+boutil3l
+ vanil3lin
+ vanil3lis
+ vil3l
+ avil4l
+chevil4l
+ uevil4l
+ uvil4l
+ xil3l
+% end of ill patterns
+ 1informat % missing from nb list
+ .in1a2
+ 'in1a2
+ .in2a3nit
+ 'in2a3nit
+ .in2augur
+ 'in2augur
+ .in1e2
+ 'in1e2
+ .in1\'e2
+ 'in1\'e2
+ .in2effab % missing from nb list
+ 'in2effab
+ .in2\'e3lucta
+ 'in2\'e3lucta
+ .in2\'e3narra
+ 'in2\'e3narra
+ .in2ept
+ 'in2ept
+ .in2er
+ 'in2er
+ .in2exora % missing from nb list
+ 'in2exora
+ .in1i2
+ 'in1i2
+ .in2i3miti
+ 'in2i3miti
+ .in2i3q
+ 'in2i3q
+ .in2i3t
+ 'in2i3t
+ .in1o2
+ 'in1o2
+ .in2o3cul
+ 'in2o3cul
+ .in2ond
+ 'in2ond
+ .in1s2tab
+ 'in1s2tab
+ 'inte4r3
+ .intera2
+ 'intera2
+ .intere2
+ 'intere2
+ .inter\'e2
+ 'inter\'e2
+ .interi2
+ 'interi2
+ .intero2
+ 'intero2
+ .inte4r3
+ .interu2
+ 'interu2
+ .inters2
+ 'inters2
+ .in1u2
+ 'in1u2
+ .in2uit
+ 'in2uit
+ .in2u3l
+ 'in2u3l
+ io1a2ct
+ i1oxy
+ i1s2tat
+%-------------------%-----------------------%
+% phonetic patterns % etymological patterns %
+%-------------------%-----------------------%
+%%j
+1j
+2jk
+4je.
+4jes.
+2jent. % mute syllable: gal\`ejent (df) 22/02/94
+%-------------------%-----------------------%
+% phonetic patterns % etymological patterns %
+%-------------------%-----------------------%
+%%k
+1ka
+1k\^a
+1ke
+1k\'e
+1k\`e
+1k\^e
+4ke.
+4kes.
+2kent. % mute syllable: jerkent (df) 22/02/94
+1k2h
+4kh.
+.kh4
+1ki
+1k\^\i0 % final zero essential to terminate cs
+1ko
+1k\^o
+1k2r
+1ku
+1k\^u
+1ky
+%-------------------%-----------------------%
+% phonetic patterns % etymological patterns %
+%-------------------%-----------------------%
+%%l
+1la
+1l\^a
+1l\`a
+ la2w3re
+1le
+1l\'e
+1l\`e
+1l\^e
+4le.
+4les.
+% words ending with -lent (df) 22/02/94
+ 2lent.
+ .ta3lent.
+ iva3lent.
+\'equiva4lent.
+ monova3lent.
+ polyva3lent.
+ re3lent.
+ .do3lent.
+ indo3lent.
+ inso3lent.
+ turbu3lent.
+ succu3lent.
+ f\'ecu3lent.
+ trucu3lent.
+ opu3lent.
+ corpu3lent.
+ ru3lent.
+ sporu4lent.
+%
+1li
+1l\^\i0 % final zero essential to terminate cs
+1lo
+1l\^o
+l1s2t
+1lu
+1l\^u
+1ly
+%-------------------%-----------------------%
+% phonetic patterns % etymological patterns %
+%-------------------%-----------------------%
+%%m
+1ma
+1m\^a
+ .ma2c3k
+ .macro1s2c
+ .ma2l1a2dres
+ .ma2l1a2dro
+ .ma2l1ais\'e
+ .ma2l1ap
+ .ma2l1a2v
+ .ma2l1en
+ .ma2l1int
+ .ma2l1oc
+ .ma2l1o2d
+ .ma2r1x % nb (jbb: ?)
+1me
+1m\'e
+1m\`e
+1m\^e
+ .m\'e2g1oh
+ .m\'e2sa % missing from nb list
+ .m\'e3san % missing from nb list
+ .m\'e2s1es
+ .m\'e2s1i
+ .m\'e2s1u2s
+ .m\'eta1s2ta
+4me.
+4mes.
+% words ending with -ment (df) 22/02/94
+ \^a2ment.
+ da2ment.
+ fa2ment.
+ amalga2ment.
+ cla2ment.
+ ra2ment.
+temp\'era3ment.
+ ta2ment.
+ testa3ment.
+ qua2ment.
+ \`e2ment.
+ car\^e2ment.
+ diaphrag2ment.
+ ryth2ment.
+ ai2ment.
+ rai3ment.
+ ab\^\i2ment.
+ \'eci2ment.
+ vidi2ment.
+ subli2ment.
+ \'eli2ment.
+ reli2ment.
+ mi2ment.
+ ani2ment.
+ veni2ment.
+ ri2ment.
+ d\'etri3ment.
+ nutri3ment.
+ inti2ment.
+ esti2ment.
+ l2ment.
+ flam2ment.
+ gram2ment.
+ .gem2ment.
+ om2ment.
+ .com3ment.
+ \^o2ment.
+ slalo2ment.
+ chro2ment.
+ to2ment.
+ ar2ment.
+ .sar3ment.
+ er2ment.
+ antifer3ment.
+ .ser3ment.
+ fir2ment.
+ or2ment.
+ as2ment.
+ au2ment.
+ \'ecu2ment.
+ fu2ment.
+ hu2ment.
+ fichu3ment.
+ llu2ment.
+ plu2ment.
+ bou2ment.
+ bru2ment.
+ su2ment.
+ tu2ment.
+%
+1mi
+1m\^\i0 % final zero essential to terminate cs
+ .milli1am
+ 1m2n\'emo
+ 1m2n\`es
+ 1m2n\'esi
+1mo
+1m\^o
+ .mono1a2
+ .mono1e2
+ .mono1\'e2
+ .mono1i2
+ .mono1\"\i2d\'e
+ .mono1o2
+ .mono1u2
+ .mono1s2
+ mon2t3r\'eal % missing from nb list
+m1s2
+1mu
+1m\^u
+1my
+ moye2n1\^a2g
+%-------------------%-----------------------%
+% phonetic patterns % etymological patterns %
+%-------------------%-----------------------%
+%%n
+1na
+1n\^a
+1ne
+1n\'e
+1n\`e
+1n\^e
+4ne.
+4nes.
+% words ending with -nent (df) 22/02/94
+ 2nent. % fric-tionnent - syllable muette - bg 27/12/93
+ r\'ema3nent.
+ imma3nent.
+ perma3nent.
+ .\'emi3nent.
+pr\'e\'emi3nent.
+ pro\'emi3nent.
+ sur\'emi3nent.
+ immi3nent.
+ conti3nent.
+ perti3nent.
+ absti3nent.
+%
+1ni
+1n\^\i0 % final zero essential to terminate cs
+1no
+1n\^o
+ .no2n1obs
+1nu
+1n\^u
+ n3s2at.
+ n3s2ats.
+n1x
+1ny
+%-------------------%-----------------------%
+% phonetic patterns % etymological patterns %
+%-------------------%-----------------------%
+%%o
+.o4
+'o4
+'\^o4
+.\^o4
+%'\"o2 % mjf % deleted 3/1/94 df-bg
+ o2b3long
+ 1octet % missing from nb list
+ o1d2l
+ o1\`e2dre
+ o1ioni
+ ombud2s3
+ omni1s2
+ o1s2tas
+ o1s2tat
+ o1s2t\'ero
+ o1s2tim
+ o1s2tom
+ o1s2trad
+ o1s2tratu
+ o1s2triction
+ .oua1ou
+ 'oua1ou
+ .ovi1s2c
+ 'ovi1s2c
+ oxy1a2
+%-------------------%-----------------------%
+% phonetic patterns % etymological patterns %
+%-------------------%-----------------------%
+%%p
+1pa
+1p\^a
+ pal\'eo1\'e2
+ .pa2n1a2f
+ .pa2n1a2m\'e
+ .pa2n1a2ra
+ .pa2n1is
+ .pa2n1o2ph
+ .pa2n1opt
+ .pa2r1a2che
+ .pa2r1a2ch\`e
+ .para1s2
+ .pa2r3h\'e
+1pe
+1p\'e
+1p\`e
+1p\^e
+4pe.
+4pes.
+% words ending with -pent (df) 22/02/94
+ 2pent.
+ re3pent.
+.ar3pent.
+'ar3pent.
+ser3pent.
+%
+ .pen2ta % pent- or penta- but never pen-ta bg 12/27/93
+ per3h
+ p\'e2nul % p\'e2n1ul moved back 09/17/92 to JD def.
+ .pe4r
+ .per1a2
+ .per1e2
+ .per1\'e2
+ .per1i2
+ .per1o2
+ .per1u2
+ p\'e1r2\'e2q % 2r1 moved 09/17/92 to 1r2(it was a typo)
+ .p\'eri1os
+ .p\'eri1s2
+ .p\'eri2s3s
+ .p\'eri2s3ta
+ .p\'eri1u2
+1p2h
+.ph4
+4ph.
+ .phalan3s2t
+4phe.
+4phes.
+2phent. % mute syllable: triomphent (df) 22/02/94
+ph2l
+4phle.
+4phles.
+2phn
+ photo1s2
+ph2r
+4phre.
+4phres.
+2phs
+2pht
+ 3ph2tal\'e
+ 3ph2tis
+%%%% Here is an example of a pb involving phonetic and etymologic patterns 5/94
+%%%% .phyto3ph2 % originaly, but wrong for phy-toph-thora 9/92
+%%%% .phy2topha % for -pharmacie but wrong for phyto-biol.. 5/94
+1pi
+1p\^\i0 % final zero essential to terminate cs
+1p2l
+4ple.
+4ples.
+2plent. % mute syllable: accouplent (df) 28/02/94
+ .pluri1a
+ 1p2n\'e
+ 1p2neu
+1po
+1p\^o
+ po1astre
+ poly1a2
+ poly1e2
+ poly1\'e2
+ poly1\`e2
+ poly1i2
+ poly1o2
+ poly1s2
+ poly1u2
+ .pon2tet % JD hypenated it asis 09/17/92, exception
+ .pos2t3h
+ .pos2t1in
+ .pos2t1o2
+ .pos2t3r
+ .post1s2
+1p2r
+4pre.
+4pres.
+2prent. % mute syllable: empourprent (df) 28/02/94
+ .pr\'e1a2
+ .pr\'e2a3la % missing from nb list
+ .pr\'e2au
+ .pr\'e1\'e2
+ .pr\'e1e2
+ .pr\'e1i2
+ .pr\'e1o2
+ .pr\'e1u2
+ .pr\'e1s2
+ .pro1\'e2
+ .pro1s2c\'e
+ pro2s3tat
+ .prou3d2h
+ 1p2sych
+ .psycho1a2n
+ 1p2t\`er
+ 1p2t\'er
+1pu
+ .pud1d2l
+1p\^u
+1py
+%-------------------%-----------------------%
+% phonetic patterns % etymological patterns %
+%-------------------%-----------------------%
+%%q
+1q
+4que.
+4ques.
+% words ending with -quent (df) 22/02/94
+ 2quent.
+ \'e3quent.
+ \'elo3quent.
+grandilo3quent.
+%-------------------%-----------------------%
+% phonetic patterns % etymological patterns %
+%-------------------%-----------------------%
+%%r
+1ra
+1r\^a
+ radio1a2 % missing from nb list
+1re
+1r\'e
+1r\`e
+1r\^e
+ .r\'e1a2
+ .r\'e2a3le
+ .r\'e2a3lis
+ .r\'e2a3lit
+ .r\'e2aux
+ .r\'e1\'e2
+ .r\'e1e2
+ .r\'e2el
+ .r\'e2er
+ .r\'e2\`er
+ .r\'e1i2
+ .r\'e2i3fi
+ .r\'e1o2
+ .re1s2
+ .re2s3cap
+ .re2s3cisi % for res-cision 09/17/92 (missing from nb)
+ .re2s3ciso % for res-cisoire 09/17/92(missing from nb)
+ .re2s3cou
+ .re2s3cri
+ .re2s3pect
+ .re2s3pir
+ .re2s3plend
+ .re2s3pons
+ .re2s3quil
+ .re2s3s
+ .re2s3t
+ .re3s4tab
+ .re3s4tag
+ .re3s4tand
+ .re3s4tat
+ .re3s4t\'en
+ .re3s4t\'er
+ .re3s4tim
+ .re3s4tip
+ .re3s4toc
+ .re3s4top
+ .re3s4tr
+ .re4s5trein
+ .re4s5trict
+ .re4s5trin
+ .re3s4tu
+ .re3s4ty
+ .r\'eu2 %.r\'e1u2 % pattern rejected 12/2/92
+ % (don't hyphenate as r\'e-union nor r\'eu-nion)
+ .r\'e2uss
+ .r\'etro1a2
+4re.
+4res.
+% words ending with -rent (df) 22/02/94
+ 2rent. % es-p\`erent - syllable muette - bg 27/12/93
+ .pa3rent.
+ appa3rent.
+transpa3rent.
+ \'e3rent.
+ tor3rent.
+ cur3rent.
+%
+1r2h
+4rhe.
+4rhes.
+ 2r3heur
+ 2r3hydr
+1ri
+1r\^\i0 % final zero essential to terminate cs
+1ro
+1r\^o
+1ru
+1r\^u
+1ry
+%-------------------%-----------------------%
+% phonetic patterns % etymological patterns %
+%-------------------%-----------------------%
+%%s
+1sa
+1s\^a
+.sch4
+ 1s2caph
+ 1s2cl\'er
+ 1s2cop
+ 1s2ch
+e2s3ch
+i2s3ch\'e
+i2s3chia
+i2s3chio
+4sch.
+4sche.
+4sches.
+2schs
+1se
+1s\'e
+1s\`e
+1s\^e
+ sesqui1a2
+4se.
+4ses.
+% words ending with -sent (df) 22/02/94
+ 2sent. % massent - syllable muette - bg 27/12/93
+ ab3sent.
+pr\'e3sent.
+ .res3sent.
+%
+.seu2le % jbb
+.sh4
+1s2h
+4sh.
+4she.
+4shes.
+2shent. % mute syllable: smashent (df) 22/02/94
+2shm
+ 2s3hom
+2shr
+2shs
+1si
+1s\^\i0 % final zero essential to terminate cs
+ 1s2lav
+ 1s2lov
+1so
+1s\^o
+ 1s2patia
+ 1s2perm
+ 1s2por
+ 1s2ph\`er
+ 1s2ph\'er
+ 1s2piel
+ 1s2piros
+ 1s2tandard
+ 1s2tein
+ st\'er\'eo1s2
+ 1s2tigm
+ 1s2tock
+ 1s2tomos
+ 1s2troph
+ 1s2tructu
+ 1s2tyle
+1su
+1s\^u
+ .su2b1a2
+ .su3b2alt
+ .su2b1\'e2
+ .su3b2\'e3r
+ .su2b1in
+ .su2b3limin
+ .su2b3lin
+ .su2b3lu
+ sub1s2
+ .su2b1ur
+ supero2
+ supe4r1
+ supers2
+ .su2r1a2
+ su3r2ah
+ .su3r2a3t
+ .su2r1e2
+ .su3r2eau
+ .su3r2ell
+ .su3r2et
+ .su2r1\'e2
+ .su2r3h
+ .su2r1i2m
+ .su2r1inf
+ .su2r1int
+ .su2r1of
+ .su2r1ox
+1sy
+%-------------------%-----------------------%
+% phonetic patterns % etymological patterns %
+%-------------------%-----------------------%
+%%t
+1ta
+1t\^a
+1t\`a
+ tachy1a2
+ tchin3t2
+1te
+1t\'e
+1t\`e
+1t\^e
+ t\'el\'e1e2
+ t\'el\'e1i2
+ t\'el\'e1o2b
+ t\'el\'e1o2p
+ t\'el\'e1s2
+4te.
+4tes.
+% words ending with -tent (df) 22/02/94
+ 2tent. % mentent - syllable muette - bg 27/12/93
+ .la3tent.
+ .pa3tent.
+ comp\'e3tent.
+ \'eni3tent.
+ m\'econ3tent.
+ omnipo3tent.
+ventripo3tent.
+\'equipo3tent.
+ impo3tent.
+ mit3tent.
+%
+.th4
+1t2h
+4th.
+4the.
+4thes.
+ thermo1s2
+ 2t3heur
+2thl % th2l was wrong for ...ath-lon (jd said 2thl) df 12/27/93
+2thm
+2thn
+th2r
+4thre.
+4thres.
+2ths
+1ti
+1t\^\i0 % final zero essential to terminate cs
+1to
+1t\^o
+1t2r
+ tran2s1a2
+ tran3s2act
+ tran3s2ats
+ tran2s3h
+ tran2s1o2
+ tran2s3p
+ tran2s1u2
+4tre.
+4tres.
+2trent. % mute syllable: infiltrent (df) 28/02/94
+ .tri1a2c
+ .tri1a2n
+ .tri1a2t
+ .tri1o2n
+ t1t2l
+1tu
+1t\^u
+tung2s3
+1ty
+%-------------------%-----------------------%
+% phonetic patterns % etymological patterns %
+%-------------------%-----------------------%
+%%u
+.u4
+'u4
+.\^u4
+'\^u4
+ uni1o2v
+ uni1a2x
+ u2s3tr
+%-------------------%-----------------------%
+% phonetic patterns % etymological patterns %
+%-------------------%-----------------------%
+%%v
+1va
+1v\^a
+1ve
+1v\'e
+1v\`e
+1v\^e
+ v\'elo1s2ki
+4ve.
+4ves.
+% words ending with -vent (df) 22/02/94
+ 2vent.
+conni3vent.
+ .sou3vent.
+%
+1vi
+1v\^\i0 % final zero essential to terminate cs
+1vo
+1v\^o
+ vol2t1amp
+1v2r
+4vre.
+4vres.
+2vrent. % mute syllable: recouvrent (df) 28/02/94
+1vu
+1v\^u
+1vy
+%-------------------%-----------------------%
+% phonetic patterns % etymological patterns %
+%-------------------%-----------------------%
+%%w
+1wa
+1we
+4we.
+4wes.
+2went. % mute syllable: interviewent (df) 22/02/94
+1wi
+1wo
+1wu
+1w2r
+%-------------------%-----------------------%
+% phonetic patterns % etymological patterns %
+%-------------------%-----------------------%
+%%x
+2xent. % mute syllable: malaxent (df) 22/02/94
+%-------------------%-----------------------%
+% phonetic patterns % etymological patterns %
+%-------------------%-----------------------%
+%%y
+.y4
+'y4
+ y1asth
+ y1s2tom
+ y1algi
+%-------------------%-----------------------%
+% phonetic patterns % etymological patterns %
+%-------------------%-----------------------%
+%%z
+1za
+1ze
+1z\'e
+1z\`e
+4ze.
+4zes.
+% words ending with -zent (df) 22/02/94
+ 2zent.
+privatdo3zent.
+%
+1zi
+1zo
+1zu
+1zy
+%}
+%\endgroup
+%Fin du fichier f7hyph.tex
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+
diff --git a/hyph/hyph/german.lh b/hyph/hyph/german.lh
new file mode 100644
index 0000000..9bbd648
--- /dev/null
+++ b/hyph/hyph/german.lh
@@ -0,0 +1,585 @@
+Lout hyphenation information
+%
+% COPYRIGHT (C) 1994 Jeffrey H. Kingston
+% with contributions by Sverre Slotte (see details below)
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either Version 3, or (at your option)
+% any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program; if not, write to the Free Software
+% Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA
+
+% This is a German hyphenation file constructed by Jeff Kingston
+% on 21 April 1994 from a TeX file supplied by Sverre Slotte.
+%
+
+Classes:
+@!$%^&*()_-+=~`{[}]:;'|<,.>?/0123456789
+aA
+bB
+cC
+dD
+eE
+fF
+gG
+hH
+iI
+jJ
+kK
+lL
+mM
+nN
+oO
+pP
+qQ
+rR
+sS
+tT
+uU
+vV
+wW
+xX
+yY
+zZ
+äÄ
+åÅ
+öÖ
+üÜ
+
+Patterns:
+.aa6l .ab3a4s .ab3ei .abi2 .ab3it .ab1l .ab1r .ab3u .ad3o4r .alti6 .ana3c
+.an5alg .an1e .ang8s .an1s .ap1p .ar6sc .ar6ta .ar6tei .as2z .au2f1 .au2s3
+.be5erb .be3na .ber6t5r .bie6r5 .bim6s5t .brot3 .bru6s .ch6 .che6f5 .da8c
+.da2r .dar5in .dar5u .den6ka .de5r6en .des6pe .de8spo .de3sz .dia3s4 .dien4
+.dy2s1 .ehren5 .eine6 .ei6n5eh .ei8nen .ein5sa .en6der .en6d5r .en3k4
+.en8ta8 .en8tei .en4t3r .epo1 .er6ban .er6b5ei .er6bla .er6d5um .er3ei
+.er5er .er3in .er3o4b .erwi5s .es1p .es8t .ex1a2 .ex3em .fal6sc .fe6st5a
+.flu4g3 .furch8 .ga6ner .ge3n4a .ge5rö .ges6 .halb5 .halbe6 .hal6br
+.haup4 .hau4t .heima6 .he4r3e .her6za .he5x .hin3 .hir8sc .ho4c .hu3sa
+.hy5o .ibe5 .ima6ge .in1 .ini6 .is5chi .jagd5 .kal6k5o .ka6ph .ki4e .kop6f3
+.kraf6 .kü5ra .lab6br .liie6 .lo6s5k .lö4s3t .ma5d .mi2t1 .no6th
+.no6top .obe8ri .ob1l .obs2 .ob6st5e .or3c .ort6s5e .ost3a .oste8r .pe4re
+.pe3ts .ph6 .po8str .rau4m3 .re5an .ro8q .ru5the .rü5be .rü8stet
+.sch8 .se6e .se5n6h .se5ra .si2e .spi6ke .st4 .sy2n .tages5 .tan6kl .ta8th
+.te6e .te8str .to6der .to8nin .to6we .um1 .umpf4 .un1 .une6 .unge5n .ur1c
+.ur5en .ve6rin .vora8 .wah6l5 .we8ges .wo6r .wor3a .wun4s .zi4e .zuch8
+.ände8re .öch8 aa1c aa2gr aal5e aa6r5a a5arti aa2s1t aat2s 6aba
+ab3art 1abdr 6abel aben6dr ab5erk ab5err ab5esse 1abf 1abg 1abhä ab1ir
+1abko a1bl ab1la 5ablag a6blaß ab4ler ab1lu a8blä 5a6blö abma5c
+1abn ab1ra ab1re 5a6brec ab1ro ab1s ab8sk abs2z 3abtei ab1ur 1abw 5abze
+5abzu ab1än abäu8 a4ce. a5chal ach5art ach5au a1che a8chent ach6er.
+a6ch5erf a1chi ach1l ach3m ach5n a1cho ach3re a1chu ach1w a1chy ach5äf
+ack1o acks6t ack5sta a1d 8ad. a6d5ac ad3ant ad8ar 5addi a8dein ade5o8
+adi5en 1adj 1adle ad1op a2dre 3adres adt1 1adv a6dä a1e2d ae1r a1er.
+1aero 8afa a3fal af1an a5far a5fat af1au a6fentl a2f1ex af1fr af5rau af1re
+1afri af6tent af6tra aft5re a6f5um 8afä ag5abe 5a4gent ag8er ages5e
+1aggr ag5las ag1lo a1gn ag2ne 1agog a6g5und a1ha a1he ah5ein a4h3erh a1hi
+ahl1a ah1le ah4m3ar ahn1a a5ho ahra6 ahr5ab ah1re ah8rei ahren8s ahre4s3
+ahr8ti ah1ru a1hu ah8ö ai3d2s ai1e aif6 a3inse ai4re. a5isch. ais8e
+a3ismu ais6n aiso6 a1j 1akad a4kade a1ke a1ki 1akko 5akro1 a5lal al5ans
+3al8arm al8beb al8berw alb5la 3album al1c a1le a6l5e6be a4l3ein a8lel
+a8lerb a8lerh a6lert 5a6l5eth 1algi al4gli al3int al4lab al8lan al4l3ar
+alle3g a1lo a4l5ob al6schm al4the altist5 al4t3re 8a1lu alu5i a6lur alu3ta
+a1lä a6mate 8ame. 5a6meise am6m5ei am6mum am2n ampf3a am6schw am2ta
+a1mu a1mä a3nac a1nad anadi5e an3ako an3alp 3analy an3ame an3ara a1nas
+an5asti a1nat anat5s an8dent ande4s3 an1ec an5eis an1e2k 4aner. a6n5erd
+a8nerf a6n5erke 1anfa 5anfert 1anfä 3angab 5angebo an3gli ang6lis an2gn
+3angri ang5t6 5anhä ani5g ani4ka an5i8on an1kl an6kno an4kro 1anl anma5c
+anmar4 3annah anne4s3 a1no 5a6n1o2d 5a6n3oma 5a6nord 1anr an1sa 5anschl
+an4soz an1st 5anstal an1s2z 5antenn an1th 5anwä a5ny an4z3ed 5anzeig
+5anzieh 3anzug an1ä 5anäs a1nö anö8d a1os a1pa 3apfel a2ph1t
+aph5ä6 a1pi 8apl apo1c apo1s a6poste a6poth 1appa ap1pr a1pr a5pä
+a3pü a1ra a4r3af ar3all 3arbei 2arbt ar1c 2a1re ar3ein ar2gl 2a1ri
+ari5es ar8kers ar6les ar4nan ar5o6ch ar1o2d a1rol ar3ony a8ror a3ros ar5ox
+ar6schl 8artei ar6t5ri a1ru a1ry 1arzt arz1w ar8zä arä8m arö6
+ar5öm ar1ü2 a1sa a6schec asch5l asch3m a6schn a3s4hi as1pa asp5l
+a8steb as5tev 1asth a6stoc a1str ast3re 8a1ta ata5c ata3la a6tapf ata5pl
+a1te a6teli aten5a ate5ran 6atf 6atg a1th at3hal 1athl 2a1ti 5atlant 3atlas
+8atmus 6atn a1to a6t5ops ato6ra a6t5ort. 4a1tr a6t5ru at2t1h at5t6hä
+6a1tu atz1w a1tä a1tü au1a au6bre auch3a au1e aue4l 5aufent 3auffü
+3aufga 1aufn auf1t 3auftr 1aufw 3auge. au4kle aule8s 6aum au8mar aum5p
+1ausb 3ausd 1ausf 1ausg au8sin 3auss au4sta 1ausw 1ausz aut5eng au1th 1auto
+auße8 a1v ave5r6a aver6i a1w a6wes a1x a2xia a6xio a1ya a1z azi5er.
+8aß 1ba 8ba8del ba1la ba1na ban6k5r ba5ot bardi6n ba1ro basten6 bau3sp
+2b1b bb6le b2bli 2b1c 2b1d 1be be1a be8at. be1ch 8becht 8becke. be5el
+be1en bee8rei be5eta bef2 8beff be1g2 behö8 bei1s 6b5eisen bei3tr b8el
+bel8o belu3t be3nac bend6o be6ners be6nerw be4nor ben4se6 bens5el be1nä
+be1nü be1o2 b8er. be1ra be8rac ber8gab. ber1r be1rü bes8c bes5erh
+bes2p be5tha bet5sc be1un be1ur 8bex be6zwec 2b1f8 bfe6st5e 2b1g2 bga2s5
+bge1 2b1h bhole6 1bi bi1bl b6ie bi1el bi1la bilä5 bi1na bi4nok bi5str
+bi6stu bi5tr bit4t5r b1j 2b1k2 bkü6 bl8 b6la. 6b1lad 6blag 8blam 1blat
+b8latt 3blau. b6lav 3ble. b1leb b1led 8b1leg 8b1leh 8bleid 8bleih 6b3lein
+blei3s ble4m3o 4blich b4lind 8bling b2lio 5blit b4litz b1loh 8b1los 1blu
+5blum 2blun blut3a blut5sc 3blä bläs5c 5blö 3blü blü8sc 2b1m
+2b1n 1bo bo1ch bo5d6s boe5 8boff 8bonk bo1ra b1ort 2b1p2 b1q 1br brail6
+brast8 bre4a b5red 8bref 8b5riem b6riga bro1s b1rup b2ruz 8bröh
+brös5c 8bs b1sa b8sang b2s1ar b1sc bs3erl bs3erz b8sof b1s2p bst1h
+b3stru b5stä b6sun 2b1t b2t1h 1bu bu1ie bul6k b8ure bu6sin 6b1v 2b1w
+1by1 by6te. 8b1z bzi1s 1bä b5ä6s5 1bü b6ü5bere büge6
+bügel5e bür6sc 1ca cag6 ca5la ca6re ca5y c1c 1ce celi4c celich5 ce1ro
+c8h 2ch. 1chae ch1ah ch3akt cha6mer 8chanz 5chara 3chari 5chato 6chb 1chef
+6chei ch3eil ch3eis 6cherkl 6chf 4chh 5chiad 5chias 6chins 8chj chl6 5chlor
+6ch2m 2chn6 ch8nie 5cho. 8chob choi8d 6chp ch3ren ch6res ch3rü 2chs
+2cht cht5ha cht3hi 5chthon ch6tin 6chuh chu4la 6ch3unt chut6t 8chw 1ci
+ci5tr c2k 2ck. ck1ei 4ckh ck3l ck3n ck5o8f ck1r 2cks ck5stra ck6s5u c2l
+1c8o con6ne 8corb cos6t c3q 1c6r 8c1t 1cu 1cy 5cä1 cö5 1da. 8daas
+2dabg 8dabr 6dabt 6dabw 1dac da2gr 6d5alk 8d5amt dan6ce. dani5er dan8ker
+2danl danla6 6dans 8danzi 6danzu d1ap da2r1a8 2d1arb d3arc dar6men 4d3art
+8darz 1dat 8datm 2d1auf 2d1aus 2d1b 2d1c 2d1d d5de d3d2h ddämme8 1de
+2deal de5an de3cha de1e defe6 6deff 2d1ehr 5d4eic de5isc de8lar del6s5e
+del6spr de4mag de8mun de8nep dene6r 8denge. 8dengen de5o6d 2deol de5ram
+8derdb der5ein de1ro der1r d8ers der5um de4s3am de4s3an de4sau de6sil
+de4sin de8sor de4spr de2su 8deul de5us. 2d1f df2l 2d1g 2d1h 1di dia5c
+di5ara dice5 di3chr di5ena di1gn di1la dil8s di1na 8dind 6dinf 4d3inh
+2d1ins di5o6d di3p4t di8sen dis1p di5s8per di6s5to dis5tra di8tan di8tin
+d1j 6dje 2dju 2d1k 2d1l 2d1m 2d1n6 dni6 dnje6 1do 6d5obe do6berf 6d5ony
+do3ran 6dord 2d1org dor4t3h do6ste 6doth dott8e 2d1p d5q dr4 1drah 8drak
+d5rand 6dre. 4drech d6reck 4d3reg 8d3reic d5reife 8drem 8d1ren 2drer
+8dres. 6d5rh 1dria d1ric 8drind droi6 dro5x 1dru 8drut drös5c 1drü
+drü5b drü8sc 2ds d1sa d6san dsat6 d1sc 5d6scha. 5dschik dse8e d8serg
+8dsl d1sp d4spak ds2po d8spä d1st d1sü 2dt d1ta d1te d1ti d1to dt1s6
+d1tu d5tä 1du du5als du1b6 du1e duf4t3r 4d3uh du5ie 8duml 8dumw 2d1und
+du8ni 6d5unt dur2c durch3 6durl 6dursa 8durt du1s du8schr 2d1v 2d1w dwa8l
+2d1z 1dä 6däh 8dänd dä6r dö8bl d5öl dör6fl dö8sc
+d5ö4st dös3te 1dü ea4ben e1ac e1ah e1akt e1al. e5alf e1alg
+e5a8lin e1alk e1all e5alp e1alt e5alw e1am e1and ea6nim e1ar. e5arf e1ark
+e5arm e3art e5at. e6ate e6a5t6l e8ats e5att e6au. e1aus e1b e6b5am
+ebens5e eb4lie eb4ser eb4s3in e1che e8cherz e1chi ech3m 8ech3n ech1r
+ech8send ech4su e1chu eck5an e5cl e1d ee5a ee3e ee5g e1ei ee5isc eei4s3t
+ee6lend e1ell ee5lö e1erd ee3r4e ee8reng eere6s5 ee5rä ee6tat e1ex
+e1f e6fau e8fe8b 3effek ef3rom ege6ra eglo6si 1egy e1ha e6h5ach eh5ans
+e6hap eh5auf e1he e1hi ehl3a eh1le ehl5ein eh1mu ehn5ec e1ho ehr1a eh1re
+ehre6n eh1ri eh1ru ehr5um e1hu eh1w e1hy e1hä e1hö e3hüt ei1a
+eia6s ei6bar eich3a eich5r ei4dar ei6d5ei ei8derf ei3d4sc ei1e 8eifen
+3eifri 1eign eil1d ei6mab ei8mag ein1a4 ei8nat ei8nerh ei8ness ei6nete
+ein1g e8ini ein1k ei6n5od ei8nok ei4nor e3insä ei1o e1irr ei5ru ei8sab
+ei5schn ei6s5ent ei8sol ei4t3al eit3ar eit1h ei6thi ei8tho eit8samt ei6t5um
+e1j 1ekd e1ke e1ki e1k2l e1kn ekni4 e1la e2l1al 6elan e6lanf e8lanl e6l5ans
+el3arb el3arm e6l3art 5e6lasti e6lauge elbst5a e1le 6elef ele6h e6l5ehe
+e8leif e6l5einh 1elek e8lel 3eleme e6lemen e6lente el5epi e4l3err e6l5ersc
+elf2l elg2 e6l5ins ell8er 4e1lo e4l3ofe el8soh el8tent 5eltern e1lu elut2
+e1lä e1lü em8dei em8meis 4emo emo5s 1emp1f 1empt 1emto e1mu emurk4
+emurks5 e1mä en5a6ben en5achs en5ack e1nad en5af en5all en3alt en1am
+en3an. en3ant en3anz en1a6p en1ar en1a6s 6e1nat en3auf en3aus en2ce enda6l
+end5erf end5erg en8dess 4ene. en5eck e8neff e6n5ehr e6n5eim en3eis 6enem.
+6enen e4nent 4ener. e8nerd e6n3erf e4nerg 5energi e6n5erla en5ers e6nerst
+en5erw 6enes e6n5ess e2nex en3glo 2eni enni6s5 ennos4 enns8 e1no e6nober
+eno8f en5opf e4n3ord en8sers ens8kl en1sp ens6por en5t6ag enta5go en8terbu
+en6tid 3entla ent5ric 5entwic 5entwu 1entz enu5i e3ny en8zan en1öf
+e1nös e1nüg eo1c e5o6fe e5okk e1on. e3onf e5onk e5onl e5onr e5opf
+e5ops e5or. e1ord e1org eo5r6h eo1t e1pa e8pee e6p5e6g ep5ent e1p2f e1pi
+5epid e6pidem e1pl 5epos e6pos. ep4p3a e1pr e1pä e1q e1ra. er5aal
+8eraba e5rabel er5a6ben e5rabi er3abs er3ach era5e era5k6l er3all er3amt
+e3rand e3rane er3ans e5ranz. e1rap er3arc e3rari er3a6si e1rat erat3s
+er3auf e3raum 3erbse er1c e1re 4e5re. er3eck er5egg er5e2h 2erei e3rei.
+e8reine er5einr 6eren. e4r3enm 4erer. e6r5erm er5ero er5erst e4r3erz
+er3ess 5erfül er8gan. 5ergebn er2g5h 5ergänz 5erhöhu 2e1ri eri5ak
+e6r5iat e4r3ind e6r5i6n5i6 er5ins e6r5int er5itio er1kl 3erklä
+5erlös. ermen6s er6nab 3ernst 6e1ro. e1rod er1o2f e1rog 6e3roi ero8ide
+e3rol e1rom e1ron e3rop8 e2r1or e1ros e1rot er5ox ersch4 5erstat er6t5ein
+er2t1h er5t6her 2e1ru eruf4s3 e4r3uhr er3ums e5rus 5erwerb e1ry er5zwa
+er3zwu erä8m er5äs erö8 e3rös. e6r1ü2b e1sa esa8b e8sap
+e6s5a6v e1sc esch4l ese1a es5ebe eserve5 e8sh es5ill es3int es4kop e2sl
+eso8b e1sp espei6s5 es2po es2pu 5essenz e6stabs e6staf e6st5ak est3ar
+e8stob e1str est5res es3ur e2sz e1sü e1ta et8ag etari5e eta8ta e1te
+eten6te et5hal e5thel e1ti 1etn e1to e1tr et3rec e8tscha et8se et6tei et2th
+et2t1r e1tu etu1s et8zent et8zw e1tä e1tö e1tü eu1a2 eu1e eue8rei
+eu5fe euin5 euk2 e1um. eu6nio e5unter eu1o6 eu5p 3europ eu1sp eu5str eu8zo
+e1v eval6s eve5r6en ever4i e1w e2wig ex1or 1exp 1extr ey3er. e1z e1ä2
+e5ö8 e1ü e8ßes fa6ch5i fade8 fa6del fa5el. fal6lo falt8e fa1na
+fan4gr 6fanl 6fap far6ba far4bl far6r5a 2f1art fa1sc fau8str fa3y 2f1b2
+6f1c 2f1d 1fe 2f1eck fe6dr feh6lei f6eim 8feins f5eis fel5en 8feltern 8femp
+fe5rant 4ferd. ferri8 fe8stof fe6str fe6stum fe8tag fet6ta fex1 2ff f1fa
+f6f5arm f5fe ffe5in ffe6la ffe8ler ff1f f1fla ff3lei ff4lie ff8sa ff6s5ta
+2f1g2 fgewen6 4f1h 1fi fid4 fi3ds fieb4 fi1la fi8lei fil4m5a f8in. fi1na
+8finf fi8scho fi6u 6f1j 2f1k2 f8lanz fl8e 4f3lein 8flib 4fling f2lix 6f3lon
+5flop 1flor 5f8läc 3flöt 2f1m 2f1n 1fo foh1 f2on fo6na 2f1op fo5ra
+for8mei for8str for8th for6t5r fo5ru 6f5otte 2f1p8 f1q fr6 f5ram 1f8ran
+f8raß f8re. frei1 5frei. f3reic f3rest f1rib 8f1ric 6frig 1fris fro8na
+fräs5t 2fs f1sc f2s1er f5str fs3tät 2ft f1tak f1te ft5e6h ftere6 ft1h
+f1ti f5to f1tr ft5rad ft1sc ft2so f1tu ftwi3d4 ft1z 1fu 6f5ums 6funf fun4ka
+fu8ßend 6f1v 2f1w 2f1z 1fä fä1c 8färm 6fäug fä8ß
+föde3 8föf 3för 1fü fün4f3u 1ga ga6bl 6gabw 8gabz g3a4der
+ga8ho ga5isc 4gak ga1la 6g5amt ga1na gan5erb gan6g5a ga5nj 6ganl 8gansc
+6garb 2g1arc 2g1arm ga5ro 6g3arti ga8sa ga8sc ga6stre 2g1atm 6g5auf gau5fr
+g5aus 2g1b g5c 6gd g1da 1ge ge1a2 ge6an ge8at. ge1e2 ge6es gef2 8geff
+ge1g2l ge1im 4g3eise geist5r gel8bra gelt8s ge5lö ge8nin gen3k 6g5entf
+ge3nä ge1or ge1ra ge6rab ger8au 8gerhö ger8ins ge1ro 6g5erz.
+ge1rä ge1rü ge1s ges2p ge5unt 4g3ex3 2g1f8 2g1g g1ha 6g1hei 5ghel.
+g5henn 6g1hi g1ho 1ghr g1hö 1gi gi5la gi8me. gi1na 4g3ins gi3str g1j
+2g1k 8gl. 1glad g5lag glan4z3 1glas 6glass 5glaub g3lauf 1gle. g5leb
+3gleic g3lein 5gleis 1glem 2gler 8g3leu gli8a g2lie 3glied 1g2lik 1g2lim
+g6lio 1gloa 5glom 1glon 1glop g1los g4loss g5luf 1g2ly 1glü 2g1m gn8
+6gn. 1gna 8gnach 2gnah g1nas g8neu g2nie g3nis 1gno 8gnot 1go goe1 8gof
+2gog 5gogr 6g5oh goni5e 6gonist go1ra 8gord 2g1p2 g1q 1gr4 g5rahm gra8m
+gra4s3t 6g1rec gre6ge 4g3reic g5reit 8grenn gri4e g5riem 5grif 2grig g5ring
+6groh 2grot gro6ß 4grut 2gs gs1ab g5sah gs1ak gs1an gs8and gs1ar gs1au
+g1sc gs1ef g5seil gs5ein g2s1er gs1in g2s1o gso2r gs1pr g2s1u 2g1t g3te
+g2t1h 1gu gu5as gu2e 2gue. 6gued 4g3uh 8gums 6g5unt gu1s gut3h gu2tu 4g1v
+2g1w gy1n g1z 1gä 8gä8m 6gärm 1gö 1gü 6güb 1haa hab8r
+ha8del hade4n 8hae ha5el. haf6tr 2hal. ha1la hal4b5a 6hale 8han. ha1na
+han6dr han6ge. 2hani h5anth 6hanz 6harb h3arbe h3arme ha5ro ha2t1h h1atm
+hau6san ha8ß h1b2 h1c h1d he2bl he3cho h3echt he5d6s 5heft h5e6he.
+hei8ds h1eif 2hein he3ism he5ist. heit8s3 hek6ta hel8lau 8helt he6mer
+1hemm 6h1emp hen5end hen5klo hen6tri he2nu 8heo he8q her3ab he5rak her3an
+4herap her3au h3erbi he1ro he8ro8b he4r3um her6z5er he4spe he1st heta6
+het5am he5th heu3sc he1xa hey5e h1f2 h1g hgol8 h1h h1iat hie6r5i hi5kt
+hil1a2 hil4fr hi5nak hin4ta hi2nu hi5ob hirn5e hir6ner hi1sp hi1th hi5tr
+5hitz h1j h6jo h1k2 hlabb4 hla4ga hla6gr h5lai hl8am h1las h1laß hl1c
+h1led h3lein h5ler. h2lif h2lim h8linf hl5int h2lip h2lit h4lor h3lose
+h1läs hme5e h2nee h2nei hn3eig h2nel hne8n hne4p3f hn8erz h6netz h2nip
+h2nit h1nol hn5sp h2nuc h2nud h2nul hoch1 1hoh hoh8lei 2hoi ho4l3ar 1holz
+h2on ho1ra 6horg 5horn. ho3sl hos1p ho4spi h1p hpi6 h1q 6hr h1rai h8rank
+h5raum hr1c hrcre8 h1red h3reg h8rei. h4r3erb h8rert hrg2 h1ric hr5ins
+h2rom hr6t5erl hr2t1h hr6t5ra hr8tri h6rum hr1z hs3ach h6s5amt h1sc h6s5ec
+h6s5erl hs8erle h4sob h1sp h8spaß h8spel hs6po h4spun h1str h4s3tum
+hs3und h1sü h5ta. h5tab ht3ac ht1ak ht3ang h5tanz ht1ar ht1at h5taub
+h1te h2t1ec ht3eff ht3ehe h4t3eif h8teim h4t3ein ht3eis h6temp h8tentf
+hte8ren h6terfü h8tergr h4t3erh h6t5ersc h8terst h8tese h8tess h2t1eu
+h4t3ex ht1he ht5hu h1ti ht5rak hts3ah ht1sc ht6sex ht8sk ht8so h1tu htz8
+h5tüm hub5l hu6b5r huh1l h5uhr. huld5a6 hu8lent hu8lä h5up. h1v
+h5weib h3weis h1z hä8kl häl8s häma8tu8 hä8sche. hät1s
+häu4s3c 2hö. 2höe 8höi hö6s hös5c hühne6 hül4s3t
+hütte8re i5adn i1af i5ak. i1al. i1al1a i1alb i1ald i5alei i1alf i1alg
+i3alh i1alk i1all i1alp i1alr i1als i1alt i1alv i5alw i3alz i1an. ia5na
+i3and ian8e ia8ne8b i1ang i3ank i5ann i1ant i1anz i6apo i1ar. ia6rab i5arr
+i1as. i1asm i1ass i5ast. i1at. i5ats i1au i5azz i6b5eig i6b5eis ib2le
+i4blis i6brig i6b5unt i6büb i1che ich5ei i6cherb i1chi ich5ins ich1l
+ich3m ich1n i1cho icht5an icht3r i1chu ich1w ick6s5te ic5l i1d id3arm
+3ideal ide8na 3ideol ide5rö i6diot id5rec id1t ie1a ie6b5ar iebe4s3
+ie2bl ieb1r ie8bra ie4bre ie8bä ie2dr ie1e8 ie6f5ad ief5f ie2f1l ie4fro
+ief1t i1ei ie4l3ec ie8lei ie4lek i3ell i1en. i1end ien6e i3enf i5enn
+ien6ne. i1enp i1enr i5ensa ien8stal i5env i1enz ie5o ier3a4b ie4rap i2ere
+ie4rec ie6r5ein ie6r5eis ier8er i3ern. ie8rum ie8rund ie6s5che ie6tau
+ie8tert ie5the ie6t5ri i1ett ie5un iex5 2if i1fa if5ang i6fau if1fr if5lac
+i5f6lie i1fre ift5a if6t5r ig3art 2ige i8gess ig5he i5gla ig2ni i5go ig3rot
+ig3s2p i1ha i8ham i8hans i1he i1hi ih1n ih1r i1hu i8hum ih1w 8i1i ii2s ii2t
+i1j i1k i6kak i8kerz i6kes ik4ler i6k5unt 2il i5lac i1lag il3ans i5las
+i1lau il6auf i1le ile8h i8lel il2fl il3ipp il6l5enn i1lo ilt8e i1lu i1lä
+i8mart imb2 i8mele i8mid imme6l5a i1mu i1mä i5mö ina5he i1nat in1au
+inau8s 8ind. in4d3an 5index ind2r 3indus i5nec i2n1ei i8nerw 3infek 1info
+5ingeni ing5s6o 5inhab ini5er. 5inj in8kät in8nan i1no inoi8d in3o4ku
+in5sau in1sp 5inspe 5instit 5instru ins4ze 5intere 5interv in3the in5t2r
+i5ny inä2 i1när in1äs inö8 in5öd i1nös 2io io1a8 io1c
+iode4 io2di ioi8 i1ol. i1om. i1on. i5onb ion2s1 i1ont i5ops i5o8pt i1or.
+i3oral io3rat i5orc i1os. i1ot. i1o8x 2ip i1pa i1pi i1p2l i1pr i1q i1ra
+ir6bl i1re i1ri ir8me8d ir2m1o2 ir8nak i1ro ir5rho ir6schl ir6sch5r i5rus
+i5ry i5rä i1sa i8samt i6sar i2s1au i8scheh i8schei isch5m isch3r
+ischä8 is8ele ise3ra i4s3erh is3err isi6de i8sind is4kop ison5e is6por
+i8s5tum i5sty i5sö i1ta it5ab. i2t1a2m i8tax i1te i8tersc i1thi i1tho
+i5thr it8hä i1ti i8ti8d iti6kl itmen4 i1to i8tof it3ran it3rau i1tri
+itri5o it1sc it2se it5spa it8tru i1tu it6z5erg it6z1w i1tä itä6r5e
+ität2 itäts5 i1tü i1u iu6r 2i1v i6vad iva8tin i8vei i6v5ene i8verh
+i2vob i8vur i1w iwi2 i5xa i1xe i1z ize8n i8zir i6z5w iä8m i1ä6r
+i5ät. i5äv i1ö8 iü8 i6ß5ers ja5la je2t3r 6jm 5jo jo5as
+jo1ra jou6l ju5cha jugen4 jugend5 jung5s6 ju1s 3jä 1ka 8kachs 8kakz
+ka1la kal5d kam5t ka1na 2kanl 8kapf ka6pl ka5r6a 6k3arbe ka1ro kar6p5f
+4k3arti 8karz ka1rä kasi5e ka6teb kat8ta kauf6s kau3t2 2k1b 2k1c 4k1d
+kehr6s kehrs5a 8keic 2k1eig 6k5ein 6k5eis ke6lar ke8leis ke8lo 8kemp
+k5ente. k3entf 8k5ents 6kentz ke1ra k5erlau 2k1f8 2k1g 2k1h ki5fl 8kik
+king6s5 6kinh ki5os ki5sp ki5th 8ki8ö 2k1k2 kl8 1kla 8klac k5lager
+kle4br k3leib 3kleid kle5isc 4k3leit k3lek 6k5ler. 5klet 2klic 8klig k2lim
+k2lin 5klip 5klop k3lor 1klä 2k1m kmani5e kn8 6kner k2ni knä8 1k2o
+ko1a2 ko6de. ko1i koi8t ko6min ko1op ko1or ko6pht ko3ra kor6d5er ko5ru
+ko5t6sc k3ou 3kow 6k5ox 2k1p2 k1q 1kr8 4k3rad 2k1rec 4k3reic kre5ie 2krib
+6krig 2krip 6kroba 2ks k1sa k6sab ksal8s k8samt k6san k1sc k2s1ex k5spat
+k5spe k8spil ks6por k1spr kst8 k2s1uf 2k1t kta8l kt5a6re k8tein kte8re
+k2t1h k8tinf kt3rec kt1s 1ku ku1ch kuck8 k3uhr ku5ie kum2s1 kunfts5 kun2s
+kunst3 ku8rau ku4ro kurz1 ku1st 4kusti ku1ta ku8ß 6k1v 2k1w ky5n 2k1z
+1kä kä4m 4k3ämi käse5 1kö kö1c kö1s 1kü kü1c
+kür6sc kü1s 1la. 8labf 8labh lab2r 2l1abs lach3r la8dr 5ladu 8ladv
+6laff laf5t la2gn 5laken 8lamb la6mer 5lampe. 2l1amt la1na 1land lan4d3a
+lan4d3r lan4gr 8lanme 6lann 8lanw 6lanä 8lappa lap8pl lap6pr l8ar.
+la5ra lar4af la8rag la8ran la6r5a6s l3arbe la8rei 6larm. la8sa la1sc
+la8sta lat8i 6l5atm 4lauss 4lauto 1law 2lb l8bab l8bauf l8bede l4b3ins
+l5blo lbst5an lbst3e 8lc l1che l8chert l1chi lch3m l5cho lch5w 6ld l4d3ei
+ld1re l6düb le2bl le8bre lecht6s5 led2r 6leff le4gas 1lehr lei6br le8inf
+8leinn 5leistu 4lektr le6l5ers lemo2 8lemp l8en. 8lends 6lendun le8nend
+len8erw 6l5ents 4l3entw 4lentz 8lenzy 8leoz 6lepi le6pip 8lepo 1ler l6er.
+8lerbs 6l5erde le8reis le8rend le4r3er 4l3erg l8ergr 6lerkl 6l5erzie
+8lerö 8lesel lesi5e le3sko le3tha let1s 5leuc 4leuro leu4s3t le5xe 6lexp
+l1f 2l1g lgend8 l8gh lglie3 lglied6 6l1h 1li li1ar li1as 2lick li8dr li1en
+lien6n li8ers li8ert 2ließ 3lig li8ga8b li1g6n li1l8a 8limb li1na
+4l3indu lings5 4l3inh 6linj link4s3 4linkt 2lint 8linv lion5s6t 4lipp 5lipt
+4lisam livi5e 6l1j 6l1k l8keim l8kj lk2l lko8f lkor8 lk2sa lk2se 6ll l1la
+ll3a4be l8labt ll8anl ll1b ll1c ll1d6 l1le l4l3eim l6l5eise ller3a l4leti
+l5lip l1lo ll3ort ll5ov ll6spr llte8 l1lu ll3urg l1lä l5lü l6lüb
+2l1m l6m5o6d 6ln l1na l1no 8lobl lo6br 3loch. l5o4fen 5loge. 5lohn 4l3ohr
+1lok l2on 4l3o4per lo1ra 2l1ord 6lorg 4lort lo1ru 1los. lo8sei 3losig
+lo6ve lowi5 6l1p lp2f l8pho l8pn lp4s3te l2pt l1q 8l1r 2ls l1sa l6sarm l1sc
+l8sec l6s5erg l4s3ers l8sh l5s6la l1sp ls4por ls2pu l1str l8suni l1sü
+2l1t lt5amp l4t3ein l5ten l6t5eng l6t5erp l4t3hei lt3her l2t1ho l6t5i6b
+lti1l l8trö lt1sc lt6ser lt4s3o lt5ums lu8br lu2dr lu1en8 8lu8fe luft3a
+luf8tr lu6g5r 2luh l1uhr lu5it 5luk 2l1umf 2l1umw 1lun 6l5u6nio 4l3unte
+lu5ol 4lurg 6lurs l3urt lu4sto lu3str lu6st5re lu8su lu6tal lu6t5e6g
+lu8terg lu3the lu6t5or lu2t1r lu6ß5 l1v lve5r6u 2l1w 1ly lya6 6lymp
+ly1no l8zess l8zo8f l3zwei lz5wu 3länd lä5on lä6sc lät1s
+5läuf 2läug läu6s5c lä5v l1öl 1lös lö1ß6t 6l1übe
+1ma 8mabg ma5chan mad2 ma5el 4magg mag8n ma1la ma8lau mal5d 8malde mali5e
+malu8 ma8lut 2m1amp 3man mand2 man3ds 8mangr mani5o 8m5anst 6mappa 4m3arbe
+mar8kr ma1r4o mar8schm 3mas ma1sc ma1tö 4m5auf ma5yo 2m1b mb6r 2m1c 2m1d
+md6sä 1me me1ch me5isc 5meld mel8sa 8memp me5nal men4dr men8schl
+men8schw 8mentsp me1ra mer4gl me1ro 3mes me6s5ei me1th me8ß 2m1f6 2m1g
+2m1h 1mi mi1a mi6ale mi1la 2m1imm mi1na mi5nü mi4s3an mit1h mi5t6ra
+3mitt mitta8 mi6ß5 6mj 2m1k8 2m1l 2m1m m6mad m6m5ak m8menth m8mentw
+mme6ra m2mn mm5sp mm5ums mmut5s m8män m1n8 m5ni 1mo mo5ar mo4dr 8mof
+mo8gal mo4kla mol5d m2on mon8do mo4n3od mont8a 6m5ony mopa6 mo1ra mor8d5a
+mo1sc mo1sp 5mot moy5 2mp m1pa mpfa6 mpf3l mphe6 m1pi mpin6 m1pl mp2li
+m2plu mpo8ste m1pr mprä5 mp8th mput6 mpu5ts m1pö 8m1q 2m1r 2ms ms5au
+m1sc msch4l ms6po m3spri m1str 2m1t mt1ar m8tein m2t1h mt6se mt8sä mu5e
+6m5uh mumi1 1mun mun6dr muse5e mu1ta 2m1v mvol2 mvoll3 2m1w 1my 2m1z
+mä6kl 1män mä1s mä5tr mäu4s3c 3mäß möb2 6möl
+1mü 5mün 3müt 1na. n5ab. 8nabn n1abs n1abz na6bä na2c nach3e
+3nacht 1nae na5el n1afr 1nag 1n2ah na8ha na8ho 1nai 6nair na4kol n1akt
+nal1a 8naly 1nama na4mer na1mn n1amp 8n1amt 5nanc nan6ce n1and n6and.
+2n1ang 1nani 1nann n1ans 8nanw 5napf. 1n2ar. na2ra 2n1arc n8ard 1nari
+n8ark 6n1arm 5n6ars 2n1art n8arv 6natm nat6s5e 1naue 4nauf n3aug 5naui
+n5auk na5um 6nausb 6nauto 1nav 2nax 3naz 1naß n1b2 nbau5s n1c nche5e
+nch5m 2n1d nda8d n2d1ak nd5ans n2d1ei nde8lac ndel6sa n8derhi nde4se
+nde8stal n2dj ndnis5 n6d5or6t nd3rec nd3rot nd8samt nd6sau ndt1h n8dumd 1ne
+ne5as ne2bl 6n5ebn 2nec 5neei ne5en ne1g4l 2negy 4n1ein 8neis 4n3e4lem
+8nemb 2n1emp nen1a 6n5energ nen3k 8nentb 4n3en3th 8nentl 8n5entn 8n5ents
+ne1ra ne5r8al ne8ras 8nerbi 6n5erde. nere5i6d nerfor6 6n5erhö 8nerlö
+2n1err n8ers. 6n5ertra 2n1erz nesi3e net1h neu4ra neu5sc 8neuß n1f nf5f
+nf2l nflei8 nf5lin nft8st n8g5ac ng5d ng8en nge8ram ngg2 ng1h n6glic ng3rip
+ng8ru ng2se4 ng2si n2g1um n1gy n8gäl n1h nhe6r5e 1ni ni1bl ni5chä
+ni8dee n6ie ni1en nie6s5te niet5h ni8etn 4n3i6gel n6ik ni1la 2n1imp ni5na
+2n1ind 8ninf 6n5inh ni8nit 6n5inn 2n1ins 4n1int n6is ni3str ni1th ni1tr n1j
+n6ji n8kad nk5ans n1ke n8kerla n1ki nk5inh n5klö n1k2n n8k5not nk3rot
+n8krü nk5spo nk6t5r n8kuh n6küb n5l6 nli4mi n1m nmen4s n1na n8nerg
+nni5o n1no nn4t3ak nnt1h nnu1e n1ny n1nä n1nö n1nü no5a no4b3la
+4n3obs 2nobt noche8 no6die no4dis no8ia no5isc 6n5o6leu no4mal noni6er
+2n1onk n1ony 4n3o4per 6nopf 6nopti no3ra no4ram nor6da 4n1org 2n1ort n6os
+no1st 8nost. no8tan no8ter noty6pe 6n5ox n1p2 n1q n1r nrös3 6ns n1sac
+ns3ang n1sc n8self n8s5erf n8serg n6serk ns5erw n8sint n1s2pe n1spr
+n6s5tat. n5s6te. n6stob n1str n1ta n4t3a4go nt5anh nt3ark nt3art n1te
+nt3eis nte5n6ar nte8nei nter3a nte6rei nt1ha nt6har n3ther nt5hie n3thus
+n1ti nti1c n8tinh nti1t ntlo6b ntmen8 n1to nt3o4ti n1tr ntra5f ntra5ut
+nt8rea nt3rec nt8rep n4t3rin nt8rop n4t3rot n4trü nt1s nts6an nt2sk n1tu
+nt1z n1tä n1tö n8töl n1tü 1nu nu1a nu5el nu5en 4n1uhr nu5ie
+8numl 6n5ums 6n5umw 2n1und 6nuni 6n5unr 2n1unt 2nup 2nu6r n5uri nu3skr
+nu5ta n1v 8n1w 1nys n1za n6zab n2z1ar n6zaus nzi4ga n8zof n6z5unt n1zw
+n6zwir 1näc 5näe 5näi n8äl nä6m nä6re n5ärz 5näus
+n1öl 1nöt n5öz 5nü. 6n1ü2b 5nüß o5ab. oa2l o8ala
+o1a2m o1an ob1ac obe4ra o6berh 5o4bers o4beru obe6ser 1obj o1bl o2bli ob5sk
+3obst. ob8sta obst5re ob5sz o1che oche8b o8chec o3chi och1l och3m ocho8f
+o3chro och3to o3chu och1w o1d o2d1ag od2dr ode5i ode6n5e od1tr o5e6b
+o5e6der. oe8du o1ef o1e2l o1e2p o1er. o5e8x o1fa of8fan 1offi of8fin
+of6f5la o5fla o1fr 8o1g og2n o1ha o1he o6h5eis o1hi ohl1a oh1le oh4l3er
+5ohm. oh2ni o1ho oh1re oh1ru o1hu oh1w o1hy o1hä o5ia o1id. o8idi
+oi8dr o5ids o5isch. oiset6 o1ism o3ist. o5i6tu o1j o1k ok2l ok3lau
+o8klä 1okta o1la old5am old5r o1le ole5in ole1r ole3u ol6gl ol2kl olk4s1
+ol8lak ol8lauf. ol6lel ol8less o1lo ol1s ol6sk o1lu oly1e2 5olym o2mab
+om6an o8mau ombe4 o8merz om5sp o1mu o8munt o1mä o1mö o1na ona8m on1ax
+on8ent o6n5erb 8oni oni5er. on1k on6n5a6b o1no ono1c o4nokt 1ons onts8
+o1nä oo8f 1oog oo2pe oo2sa o1pa 3o4pera o3pfli opf3lo opf3r o1pi o1pl
+o2pli o5p6n op8pa op6pl o1pr o3p4ter 1opti o1pä o5pö o1q o1ra. o3rad
+o8radd 1oram o6rang o5ras o8rauf or5cha or4d3a4m or8dei or8deu 1ordn or4dos
+o1re o5re. ore2h o8r5ein ore5isc or6enn or8fla or8fli 1orga 5orgel. or2gl
+o1ri 5o6rient or8nan or8nä o1ro or1r2h or6t5an or8tau or8tere o1rus o1ry
+o1rä or1ü2 o1sa osa3i 6ose o8serk o1sk o6ske o6ski os2kl os2ko os2kr
+osni5e o2s1o2d o3s4per o4stam o6stau o3stra ost3re osu6 o6s5ur o5s6ze o1ta
+ot3auf o6taus o1te o6terw o1th othe5u o2th1r o1ti o1to oto1a ot1re o1tri
+o1tro ot1sc o3tsu ot6t5erg ot2t3h ot2t5r ot8tö o1tu ou3e ouf1 ou5f6l
+o5u6gr ou5ie ou6rar ou1t6a o1v o1wa o1we o6wer. o1wi owid6 o1wo o5wu o1xe
+oy5al. oy1e oy1i o5yo o1z oza2r 1o2zea ozo3is oö8 oß5elt oß1t
+3paa pa6ce 5pad pag2 1pak pa1la pa8na8t pani5el pa4nor pan1s2 1pap pap8s
+pa8rei par8kr paro8n par5o6ti part8e 5partei 3partn pas6sep pa4tha 1pau
+6paug pau3sc p1b 8p5c 4p1d 1pe 4peic pe5isc 2pek pen3k pen8to8 p8er pe1ra
+pere6 per5ea per5eb pe4rem 2perr per8ran 3pers 4persi pe3rü pe4sta pet2s
+p2f1ec p4fei pf1f pf2l 5pflanz pf8leg pf3lei 2pft pf3ta p1g 1ph 2ph.
+2p1haf 6phb 8phd 6p5heit ph5eme 6phg phi6e 8phk 6phn p5holl pht2 ph3tha
+4ph3the phu6 6phz pi1en pi5err pi1la pi1na 5pinse pioni8e 1pis pi1s2k pi1th
+p1k pl8 5pla p2lau 4plei p3lein 2pler 6p5les 2plig p6lik 6p5ling p2liz
+plo8min 6p1m p1n 1p2o 8poh 5pol po8lan poly1 po3ny po1ra 2porn por4t3h
+po5rö 5poti p1pa p6p5ei ppe6la pp5f p2p1h p1pi pp1l ppp6 pp5ren pp1s
+p5pö pr6 3preis 1pres 2p3rig 5prinz 1prob 1prod 5prog pro8pt pro6t5a
+prote5i 8proß prä3l 1präs präte4 1prüf p5schl 2pst 1p2sy p1t
+p8to8d pt1s 5p6ty 1pu pu1b2 2puc pu2dr puf8fr 6p5uh pun8s pu8rei pu5s6h
+pu1ta p1v p3w 5py py5l p1z pä6der p5ä6m pä8nu 8pär pät5h
+pät1s qu6 1qui 8rabk ra6bla 3rable ra2br r1abt 6rabz ra4dan ra2dr 5rafal
+ra4f3er ra5gla ra2g3n 6raha ral5am 5rald 4ralg ra8lins 2rall ral5t 8ramei
+r3anal r6and ran8der ran4dr 8ranf 6ranga 5rangi ran8gli r3angr rans5pa
+8ranw r8anz. ra5or 6rapf ra5pl rap6s5er 2r1arb 1rarh r1arm ra5ro 2r1art
+6r1arz ra8tei ra6t5he 6ratl ra4t3ro r5atta raue4n 6raus. r5austa rau8tel
+raut5s ray1 r1b rb5lass r6bler rb4lie rbon6n r8brecht rb6s5tä r8ces
+r1che rch1l rch3m rch3re rch3tr rch1w 8rd r1da r8dachs r8dap rda5ro rde5ins
+rdio5 r8dir rd3ost r1dr r8drau 1re. re1ak 3reakt re3als re6am. re1as
+4reben re6bl rech5a r8edi re3er 8reff 3refl 2reh 5reha r4ei. reich6s5
+8reier 6reign re5imp 4r3eina 6r3einb 6reing 6r5einn 6reinr 4r3eins r3eint
+reli3e 8r5elt 6rempf 2remt ren5a6b ren8gl r3enni 1reno 5rente 4r3enth
+8rentl 4r3entw 8rentz ren4zw re1on requi5 1rer rer4bl 6rerbs 4r3erd
+8rerhö 8rerkl 4r3erla 8rerlö 4r3erns 6r5ernä rer5o 6r5erreg r5ertr
+r5erwec r5erö re2sa re8schm 2ress re5u8ni 6rewo 2r1ex r1f r8ferd rf4lie
+8r1g r8gah rge4bl rge5na rgest4 rg6ne r2gni2 r8gob r4g3ret rg8sel r1h8 r2hy
+5rhyt ri1ar ri5cha rid2g r2ie rieg4s5 ri8ei ri1el ri6ele ri1en ri3er.
+ri5ers. ri6fan ri8fer ri8fr 1r2ig ri8kn ri5la rimä8 ri1na r8inde rin4ga
+rin6gr 1rinn 6rinner rino1 r8insp 4rinst ri1nä ri5o6ch ri1o2d ri3o6st
+2r1ir r2is ri3sko ri8spr ri8stü ri5sv r2it 6r5i6tal ri5tr ri6ve. 8r1j
+6rk r1ke rkehrs5 r1ki r3klin r1k2n rk3str rk4t3an rk6to r6kuh rkä4s3t
+r1l r5li rline5a 6r1m r6manl rma4p r4m3aph r8minf r8mob rm5sa 2rn r1na
+rna8be r5ne rn2ei r6neif r6nex r6nh rn1k r1no r6n5oc rn1sp r1nä r1nü
+ro6bern 6robs ro1ch 3rock. ro5de ro1e 4rofe ro8hert 1rohr ro5id ro1in
+ro5isc 6rolym r2on 6roog ro6phan r3ort ro1s2p ro5s6w ro4tau ro1tr ro6ts
+5rout r1p rpe8re rp2f r2ps r2pt r1q 2rr r1ra r1re rrer6 rr6hos r5rhö
+r1ri r1ro rro8f rr8or rror5a r1ru r3ry r1rä r1rö r1rü 2r1s r6sab
+r4sanf rse6e rse5na r2sh r6ska r6ski rs2kl r8sko r2sl rs2p r6stauf r8sterw
+r8stran rswi3d4 r2sz 2r1t rt3art r8taut r5tei rt5eige r8tepe r4t3erh
+r8terla r4t3hei r5t6hu r4t3int rt5reif rt1sc rt6ser rt6s5o rt6s5u rt5und
+r8turt rube6 ru1en 1r4uf ruf4st ru1ie 2r1umg 2r1uml 2rums run8der run4d5r
+6rundz 6runf 8runs 2r1unt 2r1ur r6us ru6sta ru3str ru6tr 1ruts r1v rven1
+rvi2c r1w r1x r1za rz5ac r6z5al r8z1ar r8zerd r6z5erf rz8erh rz4t3h r8zum
+rä4ste räu8sc r1öf 5röhr rö5le 3röll 5römis r1ör
+rö2sc 3rümp 1sa. 1saa s3a4ben sa2bl 2s1abs 6s1abt 6sabw 3sack.
+6s3a4der 1saf sa1fa 4s1aff sa5fr 1sag 1sai sa1i2k1 4s1akt 1sal sa1la
+4s3alpi 6salter salz3a 1sam s5anb san2c 1sand s5angeh 6sanl 2s1ans 6s3antr
+8s1anw s1ap s6aph 8sapo sap5p6 s8ar. 2s1arb 3sarg s1arm sa5ro 2s1art
+6s1arz 1sas 1sat sat8a 2s1atl sa8tom 3s8aue s5auff sau5i s6aur 2s1aus
+5s6ause 2s1b2 2sca s4ce 8sch. 3scha. 5schade 3schaf 3schal sch5ame
+8schanc 8schb 1sche 6schef 8schex 2schf 2schg 2schh 1schi 2schk 5schlag
+5schlu 6schmäß 6schnaß 1scho 6schord 6schp 3schri 8schric 8schrig
+8schrou 6schs 2scht sch3ta sch3tr 1schu 8schunt 6schv 2schz 5schö
+5schü 2sco scre6 6scu 2s1d 1se se5an se1ap se6ben se5ec see5i6g se3erl
+8seff se6han se8hi se8hö 6s5eid. 2s1eig s8eil 5sein. sei5n6e 6s5einh
+3s8eit 3sel. se4lar selb4 6s3e4lem se8lerl 2s1emp sen3ac se5nec 6s5ents
+4sentz s8er. se8reim ser5inn 8sermä 8s5erzi 6seröf se1um 8sexa 6sexp
+2s1f2 sfal8ler 2s3g2 sge5b2 s1h s8hew 5s6hip 5s4hop 1si 2siat si1b sicht6s
+6s5i6dee siege6s5 si1en si5err si1f2 si1g2n si6g5r si8kau sik1i si4kin
+si2kl si8kü si1la sil6br si1na 2s1inf sin5gh 2s1inh sinne6s5 2s1ins
+si5ru si5str 4s1j s1k2 6sk. 2skau skel6c skelch5 s6kele 1s2ki. 3s4kin.
+s6kiz s8kj 6skn 2skow 3skrib 3skrip 2sku 8skü s1l s8lal slei3t s4low
+2s1m s1n 6sna 6snot 1so so1ch 2s1odo so4dor 6s5o4fen solo3 s2on so5of 4sope
+so1ra 2s1ord 4sorga sou5c so3un 4s3ox sp2 8spaa 5spal 1span 2spap s2pec
+s4peis 1spek s6perg 4spers s6pes 2s1pf 8sphi 1s2phä 1spi spi4e 6s5pig
+6spinse 2spis 2spla 2spol 5s6pom 6s5pos 6spoti 1spra 3s8prec 6spreis
+5spring 6sprob 1spru s2pul 1s2pur 6spy 5spän 1spü s1q 2s1r 2s1s2
+sse8nu ssini6s ssoi6r 2st. 1sta 4stafe 2stag sta3la 6stale 4stalg 8stalk
+8stamt 6st5anf 4stans 6stanw 6starb sta4te 6staus 2stb 6stc 6std 1ste
+4steil 3s2tel st3elb 8stemb 6steppi 8stese 8stesse 6stf 2stg 2sth st1ha
+st3hei s8t1hi st1ho st5hu 1sti sti4el 4stigm sti3na 6stind 4stinf sti8r
+2stk 2stl 2stm 1sto 6stoll. 4st3ope 6stopf. 6stord 6stp 5stra. 4strai
+3s4tral 6s5traum 3straß 3strec 6s3tref 8streib 5streif 6streno 6stres
+6strev 5s6tria 6strig 5strik 8strisi 3s4troa s8troma st5rose 4struf 3strum
+6sträg 2st1s6 2stt 1stu stu5a 4stuc 2stue 8stun. 2stv 2stw s2tyl 6stz
+1stä 8stäg 1stö 1stü 8stüch 4stür. 1su su2b1 3suc su1e
+su2fe su8mar 6sumfa 8sumk 2s1unt sup1p2 6s5u6ran 6surte 2s1v 2s1w 1sy 8syl.
+sy5la syn1 sy2na syne4 s1z s4zend 5s6zene. 8szu 1sä 6s5änd 6säugi
+6säuß 5söm 2s1ü2b 1süc sü8di 1sün 5süß taats3
+4tab. taba6k ta8ban tab2l ta6bre 4tabs t3absc 8tabz 6t3acht ta6der 6tadr
+tad6s tad2t 1tafe4 1tag ta6ga6 ta8gei tage4s tag6s5t tah8 tahl3 tai6ne.
+ta5ir. tak8ta tal3au 1tale ta8leng tal5ert 6t5a6mer 6tamp tampe6 2t1amt
+tan5d6a tan8dr tands5a tani5e 6tanl 2tanr t3ans 8t5antr tanu6 t5anw 8tanwa
+tan8zw ta8rau 6tarbe 1tari 2tark 2t1arm ta1ro 2tart t3arti 6tarz ta1sc
+ta6sien ta8stem ta8sto t5aufb 4taufn 8taus. 5tause 8tausf 6tausg t5ausl
+2t1b2 2t1c t6chu 2t1d te2am tea4s te8ben 5techn 4teff te4g3re te6hau 2tehe
+te4hel 2t1ehr te5id. teig5l 6teign tei8gr 1teil 4teinh t5einhe 4teis
+t5eisen 8teiw te8lam te4lar 4telek 8telem te6man te6n5ag ten8erw ten5k
+tens4p ten8tro 4t3entw 8tentz te6pli 5teppi ter5a6b te3ral ter5au 8terbar
+t5erbe. 6terben 8terbs 4t3erbt t5erde. ter5ebe ter5ein te8rers terf4
+8terhö 6terklä ter8nor ter6re. t8erscha t5e6sel te8stau t3euro te1xa
+tex3e 8texp tex6ta 2t1f2 2t1g2 2th. th6a 5tha. 2thaa 6t1hab 6t5haf t5hah
+8thak 3thal. 6thals 6t3hand 2t1hau 1the. 3t4hea t1heb t5heil t3heit
+t3helf 1theo 5therap 5therf 6t5herz 1thes 1thet 5thi. 2t1hil t3him 8thir
+3this t5hj 2th1l 2th1m th1n t5hob t5hof 4tholz 6thopti 1thr6 4ths t1hum
+1thy 4t1hä 2t1hö t1hü ti1a2m ti1b tie6fer ti1en ti8gerz tig3l
+ti8kin ti5lat 1tilg t1ind tin4k3l ti3spa ti5str 5tite ti5tr ti8vel ti8vr
+2t1j 2t1k2 2t1l tl8a 2t1m8 2t1n 3tobe 8tobj to3cha 5tocht 8tock tode4
+to8del to8du to1e 6t5o6fen to1in toi6r 5toll. to8mene t2ons 2t1ony to4per
+5topf. 6topt to1ra to1s to6ska tos2l 2toti to1tr t8ou 2t1p2 6t1q tr6
+tra5cha tra8far traf5t 1trag tra6gl tra6gr t3rahm 1trai t6rans tra3sc
+tra6st 3traue t4re. 2trec t3rech t8reck 6t1red t8ree 4t1reg 3treib 4treif
+8t3reis 8trepo tre6t5r t3rev 4t3rez 1trib t6rick tri6er 2trig t8rink
+tri6o5d trizi5 tro1a 3troc trocke6 troi8d tro8man. tro3ny 5tropf 6t5rosa
+t5roß 5trub 5trup trut5 1träg 6t1röh 5trüb trü3bu t1rüc
+t1rüs 2ts ts1ab t1sac tsa8d ts1ak t6s5alt ts1an ts1ar ts3auf t3schr
+t5schä tse6e tsee5i tsein6s ts3ent ts1er t8serf t4serk t8sh 5t6sik
+t4s3int ts5ort. t5s6por t6sprei t1st t6s5tanz ts1th t6stit t4s3tor 1t2sua
+t2s1uf t8sum. t2s1u8n t2s1ur 2t1t tt5eif tte6sa tt1ha tt8ret tt1sc tt8ser
+tt5s6z 1tuc tuch5a 1tu1e 6tuh t5uhr tu1i tu6it 1tumh 6t5umr 1tums 8tumt
+6tund 6tunf 2t1unt tu5ra tu6rau tu6re. tu4r3er 2t1v 2t1w 1ty1 ty6a ty8la
+8tym 6ty6o 2tz tz5al tz1an tz1ar t8zec tzeh6 tzehn5 t6z5ei. t6zor t4z3um
+t6zäu 5täg 6täh t5ält t8än täre8 8tä8st 6täuß
+t5öffen 8tö8k 1tön 4tüb t6ü5ber. 5tüch 1tür. u3al.
+u5alb u5alf u3alh u5alk u3alp u3an. ua5na u3and u5ans u5ar. ua6th u1au
+ua1y u2bab ubi5er. u6b5rit ubs2k u5bö u8büb 2uc u1che u6ch5ec u1chi
+uch1l uch3m uch5n uch1r uch5to ucht5re u1chu uch1w uck1a uck5in u1d ud4a
+u1ei u6ela uene8 u6ep u1er uer1a ue8rerl uer5o u8esc u2est u8ev u1fa u2f1ei
+u4f3ent u8ferh uf1fr uf1l uf1ra uf1re uf1rä uf1rü uf1s2p uf1st uft1s
+u8gabt u8gad u6gap ugeb8 u8gn ugo3s4 u1ha u1he u1hi uh1le u1ho uh1re u1hu
+uh1w u1hä u1hö 6ui ui5en u1ig u3ins uin8tes u5isch. u1j 6uk u1ke
+u1ki u1kl u8klu u1k6n u5ky u1la uld8se u1le ul8lac ul6lau ul6le6l ul6lo
+ulni8 u1lo ulo6i ult6a ult8e u1lu ul2vr u1lä u1lö 3umfan 5umlau umo8f
+um8pho u1mu umu8s u5mö u1n1a un2al un6at unau2 6und. 5undein un4d3um
+3undzw undü8 un8düb une2b un1ec une2h un3eis 3unfal 1unfä 5ungea
+3unglü ung2s1 un8gä 1u2nif un4it un8kro unk5s u1no unpa2 uns2p unvol4
+unvoll5 u5os. u1pa u1pi u1p2l u1pr up4s3t up2t1a u1q u1ra ur5abs ura8d
+ur5ah u6rak ur3alt u6rana u6r5ans u8rap ur5a6ri u8ratt u1re ur3eig ur8gri
+u1ri ur5ins 3urlau urmen6 ur8nan u1ro 3ursac ur8sau ur8sei ur4sk 3urtei
+u1ru uru5i6 uru6r u1ry ur2za ur6zä ur5ä6m u5rö u1rü urück3
+u1sa usa4gi u2s1ar u2s1au u8schec usch5wi u2s1ei use8kel u8sl u4st3a4b
+us3tau u3s4ter u2s1uf u8surn ut1ac u1tal uta8m u1tan ut1ar u1tas ut1au u1te
+u8teic u4tent u8terf u6terin u4t3hei ut5ho ut1hu u1ti utine5 uti6q u1to
+uto5c u1tr ut1sa ut1s6p ut6stro u1tu utz5w u1u u1v uve5n uve3r4ä u1w
+u1xe u5ya uy5e6 u1yi u2z1eh u8zerh u5ö uße6n ußen5e 8vanb 6vang
+6varb var8d va6t5a va8tei va2t1r 2v1b 6v5c 6vd 1ve 6ve5g6 ver1 ver5b verb8l
+ve2re2 verg8 ve2ru8 ve1s ve2s3p ve3xe 2v1f 2v1g 6v5h vi6el vie6w5 vi1g4
+vi8leh vil6le. 8vint vi1ru vi1tr 2v1k 2v1l 2v1m 4v5n 8vo8f voi6le vol8lend
+vol8li v2or1 vo2re vo8rin vo2ro 2v1p 8vra v6re 2v1s 2v1t 2v1v 4v3w 2v1z
+waffe8 wa6g5n 1wah wah8n wa5la wal8din wal6ta wan4dr 5ware wa8ru war4za
+1was w5c w1d 5wech we6fl 1weg we8geng weg5h weg3l we2g1r weh6r5er 5weise
+weit3r wel2t welt3r we6rat 8werc 5werdu wer4fl 5werk. wer4ka wer8ku wer4ta
+wer8term we2sp we8stend we6steu we8str we8stö wet8ta wich6s5t 1wid wi2dr
+wiede4 wieder5 wik6 wim6ma win4d3r 5wirt wisch5l 1wj 6wk 2w1l 8w1n wo1c
+woche6 wol6f wor6t5r 6ws2 w1sk 6w5t 5wunde. wun6gr wu1sc wu2t1 6w5w wy5a
+wärme5 wä1sc 1xag x1ak x3a4men 8xamt x1an 8x1b x1c 1xe. x3e4g 1xen
+xe1ro x1erz 1xes 8xf x1g 8x1h 1xi 8xid xi8so 4xiste x1k 6x1l x1m 8xn 1xo
+8x5o6d 8x3p2 x1r x1s6 8x1t x6tak x8terf x2t1h 1xu xu1e x5ul 6x3w x1z 5ya.
+y5an. y5ank y1b y1c y6cha y4chia y1d yen6n y5ern y1g y5h y5in y1j y1k2
+y1lak yl1al yla8m y5lax y1le y1lo y5lu y8mn ym1p2 y3mu y1na yno2d yn1t
+y1on. y1o4p y5ou ypo1 y1pr y8ps y1r yri3e yr1r2 y1s ys5iat ys8ty y1t y3w
+y1z yä8m z5a6b zab5l 8za6d 1zah za5is 4z3ak 6z1am 5zange. 8zanl 2z1ara
+6z5as z5auf 3zaun 2z1b 6z1c 6z1d 1ze ze4dik 4z3eff 8zein zei4ta zei8ters
+ze6la ze8lec zel8th 4zemp 6z5engel zen8zin 8zergä zer8i ze1ro zers8
+zerta8 zer8tab zer8tag 8zerz ze8ste zeu6gr 2z1ex 2z1f8 z1g 4z1h 1zi zi1en
+zi5es. 4z3imp zi1na 6z5inf 6z5inni zin6s5er 8zinsuf zist5r zi5th zi1tr
+6z1j 2z1k 2z1l 2z1m 6z1n 1zo zo6gl 4z3oh zo1on zor6na8 4z1p z5q 6z1r 2z1s8
+2z1t z4t3end z4t3hei z8thi 1zu zu3al zu1b4 zu1f2 6z5uhr zun2a 8zunem zunf8
+8zungl zu1o zup8fi zu1s8 zu1z 2z1v zw8 z1wal 5zweck zwei3s z1wel z1wer
+z6werg 8z5wes 1zwi zwi1s 6z1wo 1zy 2z1z zz8a zzi1s 1zä 1zö 6zöl.
+zö1le 1zü 2z1ü2b ä1a6 äb1l ä1che ä3chi äch8sc
+äch8sp ä5chu äck5a äd1a äd5era ä6d5ia ä1e ä5fa
+äf1l äft6s äg1h äg3le ä6g5nan äg5str ä1he ä1hi
+äh1le äh5ne 1ähnl äh1re äh5ri äh1ru ä1hu äh1w
+6äi ä1isc ä6ische ä5ism ä5j ä1k äl1c ä1le ä8lei
+äl6schl ämi1e äm8n äm8s ä5na 5änderu äne5i8 äng3l
+änk5l ä1no än6s5c ä1pa äp6s5c 3äq är1c ä1re
+äre8m 5ärgern är6gl ä1ri 3ärmel ä1ro ärt6s5 ä1ru
+3ärztl ä5rö ä6s5chen äsen8s äs1th äta8b ä1te
+äteri4 äter5it ä6thy ä1ti 3ätk ä1to ät8schl äts1p
+ä5tu äub1l äu1e 1äug äu8ga äu5i ä1um. ä1us.
+1äuß ä1z ö1b ö1che ö5chi öch8stei öch8str öcht6
+5ö6dem 5öffn ö1he öh1l8 öh1re ö1hu ö1is ö1ke
+1ö2ko 1öl. öl6k5l öl8pl ö1mu ö5na önig6s3 ö1no
+ö5o6t öpf3l öp6s5c ö1re ör8gli ö1ri ör8tr ö1ru
+5österr ö1te ö5th ö1ti ö1tu ö1v ö1w öwe8 ö2z
+üb6e2 3ü4ber1 üb1l üb1r 5ü2bu ü1che ü1chi ü8ch3l
+üch6s5c ü8ck ück1a ück5ers üd1a2 ü6deu üdi8t ü2d1o4
+üd5s6 üge4l5a üg1l üh5a ü1he ü8heh ü6h5erk üh1le
+üh1re üh1ru ü1hu üh1w ü3k ü1le ül4l5a ül8lo
+ül4ps ül6s5c ü1lu ün8da ün8fei ünk5l ün8za ün6zw
+ü5pi ü1re ü8rei ür8fl ür8fr ür8geng ü1ri ü1ro
+ür8sta ür8ster ü1ru üse8n ü8sta ü8stes ü6s5tete
+ü3ta ü1te ü1ti üt8tr ü1tu üt8zei ü1v ß1a8 5ßa.
+ß8as ß1b8 ß1c ß1d 1ße ß5ec 8ße8g 8ße8h 2ß1ei
+8ßem ß1f8 ß1g ß1h 1ßi ß1k ß1l ß1m ßmana8 ß1n
+ß1o ß1p8 ß5q ß1r ß1s2 ßst8 ß1ta ß1te ßt3hei
+ß1ti ß5to ß1tr 1ßu8 6ß5um ß1v ß1w ß1z
diff --git a/hyph/hyph/italian.lh b/hyph/hyph/italian.lh
new file mode 100644
index 0000000..24eab15
--- /dev/null
+++ b/hyph/hyph/italian.lh
@@ -0,0 +1,117 @@
+Lout hyphenation information
+%
+% COPYRIGHT (C) 1999 Jeffrey H. Kingston
+% with contributions by Daniele Giacomini and Claudio Beccari (see below)
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either Version 3, or (at your option)
+% any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program; if not, write to the Free Software
+% Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA
+
+% This is an Italian hyphenation file constructed by Daniele Giacomini
+% (daniele@evo.it) on 03 February 1999 from a TeX file supplied by
+% Claudio Beccari (beccari@polito.it).
+%
+% Removed some patterns that generated ``internal error'' message.
+%
+
+Classes:
+@!$%^&*()_-+=~`{[}]:;|<,.>?/0123456789
+'
+aA
+bB
+cC
+dD
+eE
+fF
+gG
+hH
+iI
+jJ
+kK
+lL
+mM
+nN
+oO
+pP
+qQ
+rR
+sS
+tT
+uU
+vV
+wW
+xX
+yY
+zZ
+àÀ
+èÈ
+éÉ
+ìÌ
+òÒ
+ùÙ
+
+Patterns:
+.anti1 .anti3m2n
+.di2s3cine
+.e2x
+.fran2k3
+.circu2m1
+.wa2g3n
+.ca4p3s
+.opto1
+.para1
+.pre1
+.p2s
+%.ri1a2 .ri1e2 .re1i2 .ri1o2 .ri1u2
+.su2b3lu .su2b3r
+.wel2t1
+3p2sic
+3p2neu1
+a1ia a1ie a1io a1iu a1uo a1ya 2at.
+e1iu e2w
+io1i
+o1ia o1ie o1io o1iu
+u1u
+%
+'2
+1b 2bb 2bc 2bd 2bf 2bm 2bn 2bp 2bs 2bt 2bv
+ b2l b2r 2b. 2b'.
+1c 2cb 2cc 2cd 2cf 2ck 2cm 2cn 2cq 2cs 2ct 2cz
+ 2chh c2h 2chb ch2r 2chn c2l c2r 2c. 2c'. .c2
+1d 2db 2dd 2dg 2dl 2dm 2dn 2dp d2r 2ds 2dt 2dv 2dw
+ 2d. 2d'. .d2
+1f 2fb 2fg 2ff 2fn f2l f2r 2fs 2ft 2f. 2f'.
+1g 2gb 2gd 2gf 2gg g2h g2l 2gm g2n 2gp g2r 2gs 2gt
+ 2gv 2gw 2gz 2gh2t 2g. 2g'.
+1h 2hb 2hd h2l 2hm 2hn 2hr 2hv 2h. 2h'.
+1j 2j. 2j'.
+1k 2kg 2kf k2h 2kk k2l k2r 2kt 2k. 2k'.
+1l 2lb 2lc 2ld 2l3f2 2lg l2h 2lk 2ll 2lm 2ln 2lp
+ 2lq 2lr 2ls 2lt 2lv 2lw 2lz 2l. 2l'.
+1m 2mb 2mc 2mf 2ml 2mm 2mn 2mp 2mq 2mr 2ms 2mt 2mv 2mw
+ 2m. 2m'.
+1n 2nc 2nd 2nf 2ng 2nk 2nl 2nm 2nn 2np 2nq 2nr 2ns n2s3r
+ 2nt 2nv 2nz 2n' n2g3n 2nheit. 2n'.
+1p 2pd p2h p2l 2pn 2pp p2r 2ps 2pt 2pz 2p. 2p'.
+1q 2qq 2q. 2q'.
+1r 2rb 2rc 2rd 2rf r2h 2rg 2rk 2rl 2rm 2rn 2rp
+ 2rq 2rr 2rs 2rt rt2s3 2rv 2rx 2rw 2rz 2r. 2r'.
+1s2 2shm 2s3s 2s3p2n 2stb 2stc 2std 2stf 2stg 2stm 2stn 2stp 2sts 2stt 2stv 2sz
+ 4s. 4s'.
+1t 2tb 2tc 2td 2tf 2tg t2h t2l 2tm 2tn 2tp t2r 2ts 3t2sch
+ 2tt 2tv 2tw t2z 2tzk 2tzs 2t. 2t'.
+1v 2vc 2vl v2r 2vv 2v. 2v'.
+1w w2h wa2r 2w1y 2w. 2w'.
+1x 2xw 2x. 2x'.
+y1ou y1i
+1z 2zb 2zd 2zl 2zn 2zp 2zt 2zs 2zv 2zz 2z. 2z'. .z2
diff --git a/hyph/hyph/magyar.lh b/hyph/hyph/magyar.lh
new file mode 100644
index 0000000..7b96613
--- /dev/null
+++ b/hyph/hyph/magyar.lh
@@ -0,0 +1,2457 @@
+Lout hyphenation information
+%
+% COPYRIGHT (C) 2010 Jeffrey H. Kingston
+% with contributions by Héri Tamás (see details below)
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either Version 3, or (at your option)
+% any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program; if not, write to the Free Software
+% Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA
+
+% This is a Hun hyphenation file created by Héri Tamás.
+% The only comment received with the file was this one:
+%
+% Like Hungarian itself, this file is encoded in the Latin1
+% character set. Hungarian has 9 accented letters, each with
+% upper-case and lower-case forms:
+%
+% PostScript Latin1 Latin1 Latin1
+% name decimal octal literal
+% code code character
+%
+% aacute 225 341 á
+% eacute 233 351 é
+% iacute 237 355 í
+% oacute 243 363 ó
+% uacute 250 372 ú
+% odblacute 245 365 õ
+% odieresis 246 366 ö
+% udblacute 251 373 û
+% udieresis 252 374 ü
+%
+% Aacute 193 301 Á
+% Eacute 201 311 É
+% Iacute 205 315 Í
+% Oacute 211 323 Ó
+% Uacute 218 332 Ú
+% Odblacute 213 325 Õ
+% Odieresis 214 326 Ö
+% Udblacute 219 333 Û
+% Udieresis 220 334 Ü
+%
+
+Classes:
+@!$%^&*()_-+=~`{[}]:;'|<,.>?/0123456789
+aA
+bB
+cC
+dD
+eE
+fF
+gG
+hH
+iI
+jJ
+kK
+lL
+mM
+nN
+oO
+pP
+qQ
+rR
+sS
+tT
+uU
+vV
+wW
+xX
+yY
+zZ
+áÁ
+éÉ
+íÍ
+óÓ
+úÚ
+öÖ
+üÜ
+õÕ
+ûÛ
+
+Patterns:
+1ba
+1bá
+1be
+1bé
+1bi
+1bí
+1bo
+1bó
+1bö
+1bõ
+1bu
+1bú
+1bü
+1bû
+1ca
+1cá
+1ce
+1cé
+1ci
+1cí
+1co
+1có
+1cö
+1cõ
+1cu
+1cú
+1cü
+1cû
+1csa
+1csá
+1cse
+1csé
+1csi
+1csí
+1cso
+1csó
+1csö
+1csõ
+1csu
+1csú
+1csü
+1csû
+1csy
+1cha
+1chá
+1che
+1ché
+1chi
+1chí
+1cho
+1chó
+1chö
+1chõ
+1chu
+1chú
+1chü
+1chû
+% cz = c or cs in old Hungarian orthography
+% c+z ritka összetett szavakban
+1cza
+1czá
+1cze
+1czé
+1czi
+1czí
+1czo
+1czó
+1czö
+1czõ
+1czu
+1czú
+1czü
+1czû
+1czy
+1da
+1dá
+1de
+1dé
+1di
+1dí
+1do
+1dó
+1dö
+1dõ
+1du
+1dú
+1dü
+1dû
+1dza
+1dzá
+1dze
+1dzé
+1dzi
+1dzí
+1dzo
+1dzó
+1dzö
+1dzõ
+1dzu
+1dzú
+1dzü
+1dzû
+1dzsa
+1dzsá
+1dzse
+1dzsé
+1dzsi
+1dzsí
+1dzso
+1dzsó
+1dzsö
+1dzsõ
+1dzsu
+1dzsú
+1dzsü
+1dzsû
+1fa
+1fá
+1fe
+1fé
+1fi
+1fí
+1fo
+1fó
+1fö
+1fõ
+1fu
+1fú
+1fü
+1fû
+1ffy
+1ga
+1gá
+1ge
+1gé
+1gi
+1gí
+1go
+1gó
+1gö
+1gõ
+1gu
+1gú
+1gü
+1gû
+1gya
+1gyá
+1gye
+1gyé
+1gyi
+1gyí
+1gyo
+1gyó
+1gyö
+1gyõ
+1gyu
+1gyú
+1gyü
+1gyû
+1ha
+1há
+1he
+1hé
+1hi
+1hí
+1ho
+1hó
+1hö
+1hõ
+1hu
+1hú
+1hü
+1hû
+1ja
+1já
+1je
+1jé
+1ji
+1jí
+1jo
+1jó
+1jö
+1jõ
+1ju
+1jú
+1jü
+1jû
+1ka
+1ká
+1ke
+1ké
+1ki
+1kí
+1ko
+1kó
+1kö
+1kõ
+1ku
+1kú
+1kü
+1kû
+1ky % Pilinszky
+1la
+1lá
+1le
+1lé
+1li
+1lí
+1lo
+1ló
+1lö
+1lõ
+1lu
+1lú
+1lü
+1lû
+1lya
+1lyá
+1lye
+1lyé
+1lyi
+1lyí
+1lyo
+1lyó
+1lyö
+1lyõ
+1lyu
+1lyú
+1lyü
+1lyû
+1ma
+1má
+1me
+1mé
+1mi
+1mí
+1mo
+1mó
+1mö
+1mõ
+1mu
+1mú
+1mü
+1mû
+1na
+1ná
+1ne
+1né
+1ni
+1ní
+1no
+1nó
+1nö
+1nõ
+1nu
+1nú
+1nü
+1nû
+1nya
+1nyá
+1nye
+1nyé
+1nyi
+1nyí
+1nyo
+1nyó
+1nyö
+1nyõ
+1nyu
+1nyú
+1nyü
+1nyû
+1pa
+1pá
+1pe
+1pé
+1pi
+1pí
+1po
+1pó
+1pö
+1põ
+1pu
+1pú
+1pü
+1pû
+1qa
+1qá
+1qe
+1qé
+1qi
+1qí
+1qo
+1qó
+1qö
+1qõ
+1qu2
+1qú
+1qü
+1qû
+1ra
+1rá
+1re
+1ré
+1ri
+1rí
+1ro
+1ró
+1rö
+1rõ
+1ru
+1rú
+1rü
+1rû
+1ry
+1sa
+1sá
+1se
+1sé
+1si
+1sí
+1so
+1só
+1sö
+1sõ
+1su
+1sú
+1sü
+1sû
+1sza
+1szá
+1sze
+1szé
+1szi
+1szí
+1szo
+1szó
+1szö
+1szõ
+1szu
+1szú
+1szü
+1szû
+1ta
+1tá
+1te
+1té
+1ti
+1tí
+1to
+1tó
+1tö
+1tõ
+1tu
+1tú
+1tü
+1tû
+1tya
+1tyá
+1tye
+1tyé
+1tyi
+1tyí
+1tyo
+1tyó
+1työ
+1tyõ
+1tyu
+1tyú
+1tyü
+1tyû
+1va
+1vá
+1ve
+1vé
+1vi
+1ví
+1vo
+1vó
+1vö
+1võ
+1vu
+1vú
+1vü
+1vû
+1wa
+1wá
+1we
+1wé
+1wi
+1wí
+1wo
+1wó
+1wö
+1wõ
+1wu
+1wú
+1wü
+1wû
+1xa
+1xá
+1xe
+1xé
+1xi
+1xí
+1xo
+1xó
+1xö
+1xõ
+1xu
+1xú
+1xü
+1xû
+1za
+1zá
+1ze
+1zé
+1zi
+1zí
+1zo
+1zó
+1zö
+1zõ
+1zu
+1zú
+1zü
+1zû
+1zsa
+1zsá
+1zse
+1zsé
+1zsi
+1zsí
+1zso
+1zsó
+1zsö
+1zsõ
+1zsu
+1zsú
+1zsü
+1zsû
+% V1V
+a1a
+a1á
+a1e
+a1é
+a1i
+a1í
+a1o
+a1ó
+a1ö
+a1õ
+a1u
+a1ú
+a1ü
+a1û
+á1a
+á1á
+á1e
+á1é
+á1i
+á1í
+á1o
+á1ó
+á1ö
+á1õ
+á1u
+á1ú
+á1ü
+á1û
+e1a
+e1á
+e1e
+e1é
+e1i
+e1í
+e1o
+e1ó
+e1ö
+e1õ
+e1u
+e1ú
+e1ü
+e1û
+é1a
+é1á
+é1e
+é1é
+é1i
+é1í
+é1o
+é1ó
+é1ö
+é1õ
+é1u
+é1ú
+é1ü
+é1û
+i1a
+i1á
+i1e
+i1é
+i1i
+i1í
+i1o
+i1ó
+i1ö
+i1õ
+i1u
+i1ú
+i1ü
+i1û
+í1a
+í1á
+í1e
+í1é
+í1i
+í1í
+í1o
+í1ó
+í1ö
+í1õ
+í1u
+í1ú
+í1ü
+í1û
+o1a
+o1á
+o1e
+o1é
+o1i
+o1í
+o1o
+o1ó
+o1ö
+o1õ
+o1u
+o1ú
+o1ü
+o1û
+ó1a
+ó1á
+ó1e
+ó1é
+ó1i
+ó1í
+ó1o
+ó1ó
+ó1ö
+ó1õ
+ó1u
+ó1ú
+ó1ü
+ó1û
+ö1a
+ö1á
+ö1e
+ö1é
+ö1i
+ö1í
+ö1o
+ö1ó
+ö1ö
+ö1õ
+ö1u
+ö1ú
+ö1ü
+ö1û
+õ1a
+õ1á
+õ1e
+õ1é
+õ1i
+õ1í
+õ1o
+õ1ó
+õ1ö
+õ1õ
+õ1u
+õ1ú
+õ1ü
+õ1û
+u1a
+u1á
+u1e
+u1é
+u1i
+u1í
+u1o
+u1ó
+u1ö
+u1õ
+u1u
+u1ú
+u1ü
+u1û
+ú1a
+ú1á
+ú1e
+ú1é
+ú1i
+ú1í
+ú1o
+ú1ó
+ú1ö
+ú1õ
+ú1u
+ú1ú
+ú1ü
+ú1û
+ü1a
+ü1á
+ü1e
+ü1é
+ü1i
+ü1í
+ü1o
+ü1ó
+ü1ö
+ü1õ
+ü1u
+ü1ú
+ü1ü
+ü1û
+û1a
+û1á
+û1e
+û1é
+û1i
+û1í
+û1o
+û1ó
+û1ö
+û1õ
+û1u
+û1ú
+û1ü
+û1û
+% Kettös mássalhangzók
+% Digraphic Consonants: c/d/s/z 2 h/s/z -- exceptions later
+c2h
+c2s
+c2z % old Hung
+%d2zs
+d2z
+s2z
+z2s
+% .CC-CV not allowed
+1ch2r
+1ph2r
+.sp2
+%.st2 below
+.sz2
+% Hosszú kettös mássalhangzók
+% Long (double) Consonants: -- exceptions later
+s2sz
+c2cs
+z2zs
+d2dz
+g2gy
+l2ly
+n2ny
+t2ty
+% all exceptions (mainly composita/pounds) in a single series
+abla2k1üveg
+acé2l1i
+ádá2z3ság
+adóssá2g1
+agrá2r1
+agy1é2r1elmesz
+agyo2n1üt
+akara2t1erõ
+aláb2b1is
+.ala2p1a
+.ala2p1ár
+.ala2p1ér
+.ala2p1i
+.ala2p1okm
+.ala2p1ötl
+á2l1alrc
+a2l1elnök
+a2l1ezredes
+a2l1ispán
+alkotmá2ny1e
+.álla2m1a
+.álla2m1e
+.álla2m1érd
+.álla2m1ig
+.álla2t1áll
+.álla2t1egész
+.álla2t1id
+.álla2t1orv
+.álla2t1öv
+.álla2t1ért
+anna2k1idején
+anti1k2lerik
+.á2r1aján
+.á2r1alak
+.ára2m1e
+.ara2ny1al
+.ara2ny1ás
+.ara2ny1ér.
+.ara2ny1érc
+.ara2ny1ére
+.ara2ny1érték
+.ara2ny1e
+.ara2ny1ó
+ár1apály
+ár1d2rág
+.á2r1e
+á2r1emel
+.á3r2end
+.á2r1in
+ásvá2ny1olaj
+.át1
+.át2alá
+.át2all
+.át2ok
+.ato2m1e
+a2utó
+.a2z1
+.a3z2ok
+.a3z2on
+.az2ért
+.a3z2úr
+bá2j1ital
+ba2l1eset
+ba2l1egyenes
+ba2l1oldal
+ban2k1ügy
+be2l1ügy
+bélye2g1album
+benzi2n1
+.bé2r1elsz
+.bé2r1em
+.bete2g1á
+b4lokkol
+.bor2s3sz
+.bõ2r1a
+.bõ2r1á
+.bõ2r1e
+.bõ2r1i
+b4rekeg
+börtö2n1õr
+b2rigád
+bû2n1eset
+bû2n1ügy
+cé2l1állomás
+com2b1izom
+.csa2k1
+.csalá2d1a
+csa2l1étek
+cse2h1ország
+cseh1sz2lovák
+csen2d1élet
+csen2d1õr
+csú2cs1erõ
+csú2cs1érték
+csú2cs1idõ
+dé2l1elõtt
+dé2l1i2de % déli-d csúf
+dé2l1i2dõ % déli-d csúf
+dé2l1után
+.dí2sz1eb
+.dí2sz1egy
+.dí2sz1eln
+.dí2sz1öl
+.dí2sz1õr
+.dí2sz1elõ
+.dí2sz1emel
+.dís2z3s
+diva2t1ár
+diva2t1éksz
+diva2t1újdon
+d2rótoz
+d2rágul
+d2rága
+d2rágít
+d4rukkol
+.éde2s1a
+.éde2s1ip
+egés2z3ség
+egészsé2g1ügy
+.egy1
+.egy2ek
+.egy2etek
+.egy2ünk
+.egy2étek
+.egy2enek
+.egy2ért
+.egy2éb
+.egy2eb
+.egy2e2d1
+.egye3d2i
+.egye3d2ü2l1
+.egyedü3l2i
+.egy2el.
+.egy2én
+.egy2e2n1
+.egye3n2es
+.egye3n2etlen
+.egy2es
+.egy2e3t2em
+.egy2e2t1
+.egy2ez
+.egyez3ség
+.egyhá2z1atya
+.egyhá2z1e
+.egy2id
+.egy2ik
+.egy2iptom
+egymá2s1után
+egysze2r1egy
+.egy2üt2t1
+.együt3t2es
+éh1ínség
+.el1
+.elb2lic
+.el2e
+.el2é
+.el3egyenget
+.el3ejt
+.el3él
+.el3ért
+élelmisze2r1ad
+élelmisze2r1ip
+.el3emel
+.el3emészt
+.el3enged
+.el3enyész
+.el3eped
+.el3ér
+.el3er
+.el3es
+.el4eség
+.el3evez
+.el3évül
+.éle2t1a
+.éle2t1elv
+.éle2t1er
+.éle2t1érz
+.éle2t1év
+.éle2t1i
+.éle2t1í
+.éle2t1ö
+.éle2t1u
+.éle2t1út
+el2it
+.el3itt
+.el4ittõl
+.el2iz
+.elle2n1
+.elle3n2e
+.elle4n3er
+.elle4n3eset
+.elle3n2ére
+ellen2tm
+e2l1oszt
+.el2õ
+.el2ö
+.el3önt
+.el3öreg
+.el3p4r
+.elsz2láv
+.el3t4r
+.el2üls %??
+.el2vh %??
+el2vt
+.embe2r1a
+.embe2r1á
+.embe2r1él
+.embe2r1eml
+.embe2r1ev
+.embe2r1ism
+.embe2r1öl
+.emlé2k1érem
+.emlé2k1ir
+.emlé2k1ünn
+.ép2p1
+.ép3p2en
+.ér2c1önt
+.érde2k1egy
+.érde2k1ellen
+erõ2s1áram
+.érté2k1áll
+.érté2k1elmé
+.érté2k1ítél
+es2t1ebéd
+ész1ellenes
+eszkö2z1á
+.ez1
+.ez2ek
+.ez2en
+ez2e2r1
+eze3r2ért
+.ez2ért
+.ezre2d1év
+.ezre2d1orvos
+.ez2üst
+.ezüs2t1ár
+.ezüs2t1érc
+fa2gy1álló
+fa2gy1érzék
+fagylal2t1ár
+fa2j1elmélet
+.fa2j1üld
+farka2s1éh
+farka2s1ord
+fe2gy1õr
+fe2j1adag
+feje2n1áll
+feje2s1ugr
+.fe2l1
+.fé2l1
+.fe3l2é
+fe3l2ebarát
+.fe4l3ébr
+.fé3l2e
+fe3l2ed
+.fé4l3egy % félegyenes
+fe3l2ejt
+fe3l2ek %ezet, felek(et)
+fe3l2el
+fé3l2ele2m1
+.fe4l3él
+.fe4l3elev
+felelõssé2g1érz
+fe3l2emás
+.fé4l3emelet
+fé3l2énk
+.fe3l2es
+.fe4l3esk
+.fe4l3esz
+.fé4l3eszü
+.fe3l2et.
+fe3l2ett
+.fé4l3év
+fe3l2ez
+.fe3l2ibe
+.fé3l2ig
+.fé4l3igaz3ság
+fé3l2ix
+felnõt2t1okt
+.fé3l2õ
+.fel3p4r
+fe3l2õl
+.fe4l4ül.
+.fe3l2ülb
+.fe3l2ü2l1em
+.fe3l2ület
+.fe3l2üli
+felü2l1igér
+fe3l2üljár
+.fe3l2ülker
+.fe3l2ülm
+.fe3l2üln
+fe3l2ülrõl
+.fe3l2ülvizs
+fé2m1áru
+fé2m1öntvény
+.fen2n1
+.fé2ny1á
+.fé2ny1erõ
+.fé2ny1érzé
+.fé2ny1év
+.fé2ny1ív
+fényké2p1alb
+fére2g1irt
+festé2k1ipar
+fésze2k1alj
+fiata2l1emb
+fiata2l1assz
+.fil2m1i
+fil2m1oper
+.fin2n1or
+.fin2n1ug
+f4lancol
+.fo2g1orv
+folya2m1õr
+.fö2l1
+.föl2d
+.föl2d1a
+.föl2d1éhe
+.föl2d1ig
+.föl2d1ín
+.föl2d1o
+.földe2s1úr
+.fö3l2é
+.fö4l3ébr
+.fö4l3él
+.fö3l2es
+.fö4l3esk
+.fö4l3esz
+.föl3p4r
+fö3lös
+fö3l2ött
+fö3l2öz
+.fö3l2ibe
+.fö4l4ül.
+.fö3l2ülb
+.fö3l2ü2l1em
+.fö3l2ület
+.fö3l2üli
+fölü2l1igér
+fö3l2üljár
+.fö3l2ülker
+.fö3l2ülm
+.fö3l2üln
+fö3l2ülrõl
+.fö3l2ülvizs
+.fön2n1
+f4ricskáz
+f4röcsköl
+fûré2sz1árú
+fûsze2r1árú
+fûsze2r1üzlet
+galam2b1õsz
+.galvá2n1á
+.galvá2n1e
+.gá2z1ál
+.gá2z1égõ
+.gá2z1el
+.gá2z1olaj
+.gá2z1óra
+.gá2z1öml
+gaz2d1assz
+.ga2z1em
+.gá2z1öngy
+ga2z3ság
+gá2z3számla
+.gáz3sz
+.gé2p1a
+.gé2p1á
+gé4p4elem
+.gé2p1emb
+.gé2p1er
+.gé2p1ip
+.gé2p1ír
+.gé2p1olaj
+gondola2t1átv
+gondola2t1olv
+göm2b1alak
+göm2b1öv
+görö2g1or
+.gõ2z1erõ
+1g2rafi
+1g2ramm
+1g2ránát
+1g2ríz
+1g2róf
+gú2ny1irat
+gyalo2g1áld
+gyalo2g1átkelõ
+gyalo2g1ezr
+gyalo2g1ösv
+gyalo2g1út
+.gyá2r1ép
+.gyá2r1ig
+.gyá2r1ip
+gyarma2t1áru
+.gyá2sz1es
+.gyá2sz1év
+.gyá2sz1ünn
+.gyerme2k1á
+.gyerme2k1or
+gyó2gy1erõ
+gyógysze2r1
+gyógysze3r2el
+gyógysze3r2ész
+gyomo2r1ég
+gyomo2r1erõ
+gyomo2r1ideg
+gyor2s1ír
+gyor2s1olv
+gyön2gy1él
+gyümöl2cs1ár
+gyümöl2cs1íz
+ha2b1üst
+.ha2d1ap
+.ha2d1áll
+.ha2d1er
+.ha2d1ist
+.ha2d1osz
+.ha2d1ü
+.ha2j1áp
+.halá2l1es
+.ha2l1ikr
+.ha2l1ív
+.han2g1a
+han2g1árny
+.han2g1erõ
+.han2g1érté
+.hangula2t1emb
+.há2ny1ing
+.haran2g1ön
+.har2c1edz
+.harma2d1év
+.harma2d1osz
+.hárma2s1ugr
+harmin2c1
+harmin3c2ad
+harmin3c2at
+harmin3c2as
+harmin3c2an
+harmin3c2ért
+háro2m1
+.ha2s1izom
+.ha2s1ür
+.haszo2n1élv
+hatá2r1á
+hatá2r1ér
+hatá2r1es
+hatá2r1id
+hatá2r1inc
+hatá2r1õr
+ha2t1éves
+ha2t1ezer
+hatva2n1
+hatva3n2ad
+hatva3n2at
+hatva3n2as
+hatva3n2an
+hatva3n2ért
+.háza2s1él
+.há2z1épí
+há2z3sor
+helye2s1ír
+.he2ly1õr
+.hely2t1áll
+.hente2s1ár
+.hente2s1üz
+.hé2t1
+hetve2n1
+hetve3n2es
+hetve3n2ed
+hetve3n2et
+hetve3n2en
+hetve3n2ért
+.hí2d1ép
+.hí2r1a
+.hírla2p1ír
+.hí2r1ügy
+.hi2t1él % hit-élet
+hite2l1int
+hite2l1ügy
+hi2t1ok
+ho2gy1isne
+.hol2d1uta
+holna2p1után
+ho2l1ott
+homo2k1óra
+hón1alj
+hor2d1e
+horgász3zsin
+horo2g1üt
+humo2r1érz
+.hú2s1ad
+.hú2s1ét
+.hú2s1ip
+hú2sz1év
+huszo2n1
+hüvely2k1ujj
+.ideg3gy
+.ide2g1õr
+.ide2g1össze
+.ide2g1orv
+igazsá2g1ér
+igazsá3g2ért
+igazsá2g1ügy
+i2i2i % not to hyphenate roman numerals
+in2g1ujj
+.inte2r1
+.ipa2r1ág
+.ipa2r1eng
+.ipa2r1ig
+.ipa2r1is
+.ipa2r1ügy
+.ipa2r1ûz
+.irá2ny1ad
+.irá2ny1ár
+.irá2ny1elv
+.iste2n1ad
+.iste2n1áld
+.iste2n1igaz
+ítéle2t1idõ
+.izo2m1e
+já2r1õr
+játé2k1áru
+játé2k1asz
+játé2k1eng
+.jé2g1ár
+.jé2g1es
+.je2gy1ár
+.je2gy1el
+.je2l1ig
+jelle2m1ábr
+job2b1old
+.jo2g1ak
+.jo2g1al
+.jo2g1ál
+.jo2g1e
+.jo2g1érv
+.jo2g1igé
+.jo2g1orv
+.jo2g1ut
+.jo2g1ügy
+.jó2t1áll
+káde2r1osz
+kar2d1él
+ka2r1ének
+ká2r1eset
+ka2r1igaz
+ká2r1igé
+ka2r1izom
+ka2r1óra
+ka2r1öltve
+.ká2r1ör
+kárpá2t1a % Kárpát-alja/á/i
+.ké2j1érz
+kenyé2r1ad
+kenyé2r1ellát
+kénysze2r1elad
+kénysze2r1egyez
+.ké2p1írás
+.keré2k1a
+keré2k1pár
+kerékpá2r1abr
+kereskedele2m1ügy
+keresz2t1a
+kereszté2ny1üld
+keresz2t1ölt
+keresz2t1utca
+.keresztü2l1e
+kere2t1ante
+ké2sz1áru
+.ké2t1
+.ké3t2el
+.ké2t1es
+.ké2z1ad
+.ké2z1á
+.kéze2n1áll
+.kézi1gr
+.ké2z1ir
+kilen2c1
+kilen3c2ed
+kilen3c2ek
+kilen3c2et
+kilen3c2ért
+kilen3c2en
+kilen3c2es
+kilencve2n1
+kilencve3n2en
+kilencve3n2es
+kilencve3n2ed
+kilencve3n2et
+kilencve3n2ért
+kilométe2r1óra
+.ki1p4r
+%.ki1pré % superfluus
+%.ki1prepa
+%.ki1prób
+%.ki1prov
+kirá2ly1ellen
+ki2s1antant
+ki2s1áruterm
+.ki2s1a
+.ki2s1emb
+.ki2s1egz
+.ki2s1inas
+.ki2s1ipar
+.ki2s3szám
+.ki2s3szer
+.ki2s1ujj
+.ki3t4r
+k2lerikál
+k2lerikal
+k2lien
+k2likk
+k2lima
+k2líma
+k2linika
+k2lub
+koldus3szegény
+.kó2r1isme
+.kormá2ny1e
+.kó2r1okoz
+.ko2r1osztály
+kovács3szén
+kölcsö2n1ad
+kölcsö2n1ügy
+költsé2g1em
+költsé2g1érz % költségére
+.köny2v1á
+.köny2v1ism
+.köny2v1íz
+.köny2v1újdon
+kö2r1irat
+kö2r1ív
+.kö2r1út
+.kö2r1uta
+.körü2l1
+.körü3l2i
+.körü3l2öt
+köté2l1ideg
+.kö2z1ad
+.kö2z1ak
+.kö2z1al
+.kö2z1áll
+.kö2z1élelm
+.kö2z1élet
+közé2p1ará
+közé2p1érték
+közé2p1isk
+közé2p1idõ
+közé2p1ujj
+közé2p1út
+közé2p1ut
+.kö2z1épül
+.kö2z1érd
+.kö2z1erk
+.kö2z1érthet
+.kö2z1érz
+.kö2z1étk
+.kö2z1igaz
+.kö2z1int
+.kö2z1ism
+.kö2z1í
+.kö2z1óhaj
+.kö2z1o2k1irat
+.kö2z1okt
+kö2z3ség
+köz3száj
+.köz3sze
+.köz3szo
+.köz3szük
+.kö2z1út
+.kö2z1ügy
+1k4rajcár
+k4rakéler
+1k4rákog
+kristá2ly1üveg
+kró2m1acél
+kul2cs1állás
+kulcs3szám
+.kulcs3szav
+kulcs3szó
+kultú2r1áll
+kultú2r1e
+kultú2r1él
+kultú2r1érték
+kultú2r1i
+.kú2t1á
+.kú2t1os
+kü2l1alak
+külö2n1áll
+külö2n1élés
+külö2n1ír
+külö2n1ítm
+külö2n1óra
+kü2l1ügy
+k4valifikál
+k4varcol
+k4vartyog
+k4vaterkázik
+.lá2b1ápol
+lá2b1ujj
+laká2s1adó
+laká2s1épít
+laká2s1inség
+laká2s1ügy
+lakato2s1inas
+la2k1osztály
+lán2c1ölt
+lánc3szem
+lán2g1elm
+lán2g1ész
+lán2g1eszû
+látsze2r1üzlet
+leá2ny1ág
+leá2ny1ál
+leá2ny1anya
+leá2ny1i
+.le1b4l
+.le3f4r
+.le2g1
+le3g2ali
+le3g2áli
+.le3g2ek
+le3g2el
+le4g3elej
+le4g3elõl
+le4g3elõször
+le4g3elsõ
+.le3g2end
+le3g2ény
+legé2ny1élet
+legé2ny1ember
+le3g2épel
+.leg3gy
+le3g2ombol
+le3g2ombolyít
+le3g2orombít
+le3g2ott
+le3g2ömbölyít
+le3g2örbít
+le3g2örbül
+le3g2ördít
+le3g2ördül
+le3g2uggol
+le3g2urít
+le3g2urul
+.le3g2y
+.lé2g1
+.lé3g2i
+.lé3g2yott
+léle2k1e
+léle2k1öl
+lengye2l1ország
+.le1p2r
+.le2s1áll
+.le1sp2r
+.le1s2r
+.le1st2r
+lé2t1érdek
+let2t1orsz
+levé2l1ír
+leve2s3zöld
+lif2t1akna
+lisz2t1ár
+lom2b1erd
+ló1t2rágya
+lovas3század
+lõsze2r1után
+löve2g1áll
+luxu2s1ad
+madá2r1e
+madá2r1én
+madá2r1ét
+madá2r1i
+magá2n1é %-let, -nekes
+magá2n1óra
+magá2n1út
+magá2n1ügy
+maga2s1ugr
+magya2r1ellen
+magya2r1ország
+mak2k1eg
+mangá2n1érc
+márvá2ny1osz
+má2s1álla
+máso2d1év
+máso2d1íz
+matró2z3sapka
+máso2d1oszt
+.me2g1a
+me3g2afon
+.me2g1á
+.me2g1d2r
+.me2g1e
+.me2g1é
+.meg3f4r
+.me2g3gy
+meg4gy.
+.meg4gybor
+.meg4gyel
+.meg4gye.
+.meg4gyfa
+.meg4gylekvár
+.meg4gylik
+.meg4gypir
+.me2g3i
+.me2g1í
+.meg3p4r
+.me2g1o
+me2g1oszt
+.me2g1ó
+.me2g1ö
+.me2g1õ
+.me2g1s2p
+.me2g1s2t
+.meg3t4r
+.me2g1u
+.me2g1ú
+.me2g1ü
+.me2g1û
+.me4g4int
+mé2g1is
+mellé2k1a
+mellé2k1á
+mellé2k1ép
+mellé2k1ér
+mellé1p2r
+mel2l1usz
+mel2l1ür
+melo1d2rá
+mene2t1i
+mene3t2il % átmenetileg
+mene2t1osz
+me2ny1asszony
+me2nny1orsz
+méreg1d2r
+meré2sz3ség
+mérté2k1ad
+mérté2k1egység
+mér2v1ad
+.mé2sz1ég
+.mé2sz1i
+.mé2sz1o
+méte2r1ár
+mé2z3sör
+.mé2z3sz
+mikro1k2lima
+.min2d1a
+.min2d1ed
+.min2d1egy
+.min2d1ek
+minde2n1ár
+mindene2k1el
+minde2n1eset
+minde2n1ünnen
+minde2n1ütt %??
+minde2n1üvé %??
+.min2d1ez
+.min2d1in
+.min2d1ö
+.min2d1u
+mine2k1ut
+miniszte2r1elnök
+min2t1egy
+motoros3szem
+munka1p2r
+munká2s1á
+munká2s1a
+munkás1b2r
+munká2s1e
+munká2s1i
+munká2s1oszt
+munká2s1ott
+munká2s1õ
+munká2s3sz
+munka1s2t
+munká2s1ú
+munká2s1ü
+munká2s3zubb
+mû1s2topp
+mû1t2rá
+nádo2r1isp
+.na2gy1a
+.na2gy1á
+.na2gy1e
+.na2gy1ip
+.na2gy1ü
+na2p1áll
+.na2p1e
+.na2p1é2j1 % napéjegyenl
+.na2p1év
+.na2p1ó
+naran2cs1íz
+naran2cs3s
+ná2sz1ágy
+ná2sz1aj
+ná2sz1assz
+ná2sz1éj
+ná2sz1ind
+ná2sz1út
+ná2sz1ut
+nége2r1üld
+.né2gy1
+negye2d1
+negye3d2et
+negye3d2ek
+negye3d2el
+negye3d2en
+negye3d2em
+negye3d2ed
+negye3d2e.
+negye3d2éb % negyedében, negyedébõl
+né3gy2es
+né3gy2en
+negyve2n3
+negyve3n4et
+negyve3n4em
+negyve3n4ed
+negyve3n4e.
+nehé2z1ip
+nehé2z3ség
+nehé2z3súly
+.ne2m1igen
+néme2t1alfö
+néme2t1ország
+néme2t1ell
+neo1k2lassz
+.né2p1a
+.né2p1á
+.né2p1el
+.né2p1eposz
+.né2p1ének
+.né2p1irt
+.né2p1isk
+.né2p1ítél
+.né2p1okt
+.né2p1osz
+.né2p1u
+.né2v1a
+né2v1elõ
+né2v1utó
+néze2t1elt
+növé2ny1a
+növé2ny1á
+növé2ny1ev
+növé2ny1ir
+növé2ny1o
+nya2k1örv
+nyá2r1elõ
+nyá2r1utó
+.nyel2v1á
+.nyel2v1a
+nyel2v1eml
+nyel2v1érz
+.nyel2v1is
+.nyel2v1o
+.nyel2v1ó
+.nyel2v1ú
+nyere2g3gyá
+nyer2s1acél
+nyer2s1any
+nyer2s1olaj
+.nyí2r1egy % Nyír-egy-háza
+n4ylon
+nyol2c1
+nyol3c2a
+nyolc3szor
+nyolc3szög
+nyolcva2n1
+nyolcva3n2a
+nyomá2s1áll
+nyomdász3ság
+nyomo2r1eny
+.nyu2g1á
+nyugdí2j1int
+nyu2g1ellát
+nyúl2t1agy
+odáb2b1áll
+odéb2b1áll
+o2k1irat
+oktatá2s1ügy
+ola2j1ág
+ola2j1ég
+ola2j1ip
+ola2sz1ország
+olda2l1ág
+olda2l1aj
+olda2l1út
+ólo2m1önt
+ólo2m1üv
+oro2sz1elle
+oro2sz1ország
+or2r1üreg
+orszá2g1al
+orszá2g1ár
+orszá2g1ép
+orszá2g1érd
+ország3gyûl
+orszá2g1út
+orvos3sz
+osto2r1ant
+ostro2m1állap
+osztá2ly1áll
+osztá2ly1ár
+osztá2ly1e
+osztá2ly1érd
+osztá2ly1értek
+osztá2ly1i
+osztá2ly1ö
+osztá2ly1u
+ökö2r1ist
+.ö2n1ál
+.ö2n1ám
+ön1elég
+ön1elem
+ön1élet
+önéle2t1ír
+.ön1el
+.ön1érd
+.ön1erõ
+.ö2n1érz
+.ön1imád
+.ön1ind
+.ön1ism
+.ön1ur
+.õr1áll
+.õr1angy
+öre2g1any
+öre2g1apa
+öre2g1assz
+öre2g1ember
+öre2g1úr
+örö2k1érv
+örö2k1ifj
+.örö2m1a
+örö2m1érz
+örö2m1est
+örö2m1itt
+örö2m1ujj
+.õs1áll
+.õs1a
+õs1egyh
+õs1emb
+õs1er
+õs1idõ
+õsz1elõ
+.össz1a
+.össz1á
+össze1p2r
+össze1s2p
+össz3súly
+õsz1utó
+.öt1
+öt2en
+öt2öd
+öt2ös
+öt2öt
+öt2ök
+öt2ön
+ötve2n1
+ötve3n2ed
+ötve3n2et
+ötve3n2ek
+ötve3n2en
+ötve3n2es
+ötve3n2e.
+ötve3n2em
+õz1agancs
+özve2gy1a
+özve2gy1emb
+padlá2s1abl
+padlá2s3szoba
+pamu2t1ipar
+pá2n1amer
+páncé2l1aut
+páncé2l1ing
+páncé2l1ö
+papí2r1ár
+papí2r1ip
+papí2r1íz
+paran2cs1ad
+paran2cs1õr
+paran2cs1ural
+parasz2t1assz
+parasz2t1emb
+páro2s1ujj
+pár2t1akt
+pár2t1áll
+.pár2t1e
+.pár2t1éle
+.pár2t1érde
+pár2t1értek
+pár2t1ig
+pár2t1ir %-od
+pár2t1isko
+pár2t1okt
+pár2t1uta
+.pár2t1ü
+pászto2r1élet
+pászto2r1óra
+patká2ny1irt
+pecsé2t1õr
+pé2k1üzlet
+.pén2z1a
+.pén2z1á
+pén2z1egys
+pén2z1éhes
+pén2z1embe
+pén2z1érték
+pénz2es3zsák
+pén2z1int
+pén2z1össz
+.pénz3s
+pén2z1ügy
+pénzü2gy1igaz
+pénzü2gy1õr
+pe2r1érté
+pe2r1orvos
+.pe2r1új
+pes2t1ú
+p2lagiz
+1p2lasztik
+1p2letyk
+1p2lomba
+polgá2r1õr
+pon2t1ered
+.pó2t1a
+.pó2t1ágy
+.pó2t1ül
+1p2rakti
+1p2reciz
+1p2recíz
+1p2rédál
+1p4rédikál
+1p4rémez
+1p4reparál
+1p2résel
+1p4resszio
+p4rezent
+1p4róba
+1p4róbál
+1p4roblém
+1p4rodukál
+1p4rofitál
+1p2ro1g2ram
+1p4roklamál
+1p2roletá2r1áll
+1p2roletá2r1oszt
+1p4rolong
+1p4ropagál
+1p4roponál
+1p4rostit
+1p4rotezsál
+1p4rovokál
+1p4rüszköl
+raj2z1eszk
+raj3z1aszt
+raj2z3sz
+rá2k1okoz
+rá2k1oll
+raktá2r1állo
+ran2g1idõs
+ran2g1elsõ
+reá2l1isko
+refor2m1 % reform- elõtag
+refor3m2á % -áció, -ál, -átus
+%refor4m3áll % reform-állam
+refor3m2i % -ista, -izmus
+regé2ny1ir
+regé2ny1ír
+régiség3gyüjt
+ré2g1óta
+rejte2k1ajtó
+rejte2k1út
+reke2sz1izom
+reklá2m1
+reklá3m2oz
+rekor2d1idõ
+ren2d1õr
+rendõ2r1áll
+rendõ2r1aut
+rendõ2r1õr
+.re1p2ro
+ré2sz1ará
+ré2sz1össz
+rete2sz1áll
+ré2z1edé
+ré2z1üst
+rezgé2s3szám
+ré2z3szín
+ri2zs3szem
+roham1b2rig
+roha2m1oszt
+roko2n1érte
+romá2n1ellen
+ro2m1eltak
+ro2ssz1indulat
+rova2r1evõ
+rova2r1irt
+rová2s1írás
+ro2zs3szem
+rö2p1irat
+rövi2d1ár
+sak2k1állás
+sak2k1óra
+sán2c1á
+sán2c1épí
+sanzo2n1ének
+sárgá2s3zöld
+sar2k1öv
+sar2k1uta
+saro2k1abl
+saro2k1ül
+sa2s1orr
+.sa2s3sze
+sa2s3szeg
+.sa2v1áll
+1s2ch % to do a favour the German % but: Häs-chen
+segé2d1a
+segé2d1erõ
+segé2d1esz
+segé2d1ige
+segé2d1orv
+segé2ly1a
+segé2ly1á
+segé2ly1egy
+serté2s1o
+serté2s1ó
+serté2s3zsír
+sike2r1emb
+sike2r1él
+sí2k1idom
+sí2n1aut
+sí2r1ásó
+sí2r1eml
+sí2r1irat
+sisa2k1ellen
+s2kalp
+s2kandál
+s2kicc
+.sk2r
+s2lukk
+s2makkol
+s2mirgli
+sógo2r1aszz
+so2k1értel
+so2k1évi
+so2k1ist
+so2k1oldal
+sonká2s3zsem
+so2r1áll
+so2r1emel
+sor2s1üld
+sö2r1ivó
+sörö2s1üveg
+spanyo2l1ország
+s2pecial
+s2peciál
+s2pékel
+s4pekulál
+s2picc
+s2picl
+s2pórol
+spor2t1ág
+spor2t1e
+spor2t1élet
+spor2t1orv
+spor2t1öltö
+spor2t1õrül
+spor2t1ünn
+.sp2r
+s2rófol
+s4tagnál
+s4tatisztál
+s4terilizál
+stílu2s1érz
+stílu2s1irány
+s4tíröl
+s4toppol
+1st2rukt %úra
+.st2 %r
+st2rand
+st2rapál
+st2rázsál
+st4réber
+sugá2r1árt
+sugá2r1ir
+sú2ly1egys
+sú2ly1emel
+2s1ügy
+své2d1ország
+szaba2d1egye
+szaba2d1elõad
+szaba2d1elv
+szá2j1üreg
+sza2k1avat
+sza2k1ember
+sza2k1érettség
+sza2k1értel
+sza2k1értõ
+sza2k1író
+sza2k1iroda
+sza2k1isk
+sza2k1ismer
+sza2k1oktatás
+sza2k1orvos
+sza2k1osztály
+sza2k1üzlet
+szállá2s1ad
+szá2m1adás
+szá2m1ad
+szá2m1arány
+szá2m1elmélet
+szá2m1oszl
+szá2m1ûz
+száraz3ság
+szár2ny1épül
+szarva2s1aga
+százalé2k1ará
+szá2z1öt
+szá2z1egy
+szá2z1éves
+szá2z1ezer
+szá2z1ezr
+száz3szá
+száz3szo
+szégye2n1érz
+széjje2l1
+szeké2r1út
+széke2s1egyh
+szé2l1árny
+.szé2l1ir
+.szé2l1üt
+szembe2n1áll
+sze2m1ellen
+.szemé2ly1a
+sze2m1üveg
+széná2s3szekér
+szé2n1éget
+szé2n1ellát
+szen2t1atya
+szen2t1egyh
+szen2t1este
+szennye2s3zsák
+szenny1ir
+.szé2p1a
+szé2p1érzék
+szé2p1ír
+szé2p1ir
+szé2p1p2róza
+szer2v1átül
+3szerû.
+szere2p1oszt
+szerete2t1ado
+szerszá2m1acél
+szerzõdé2s3sz
+sze2sz1adó
+sze2sz1éget
+sze2sz1éleszt
+sze2sz1ipar
+.szé2t1
+.sz2f
+1sz2fér
+szige2t1orsz
+szikratá2v1ír
+.szí2n1á
+szí2n1arany
+szí2n1érz
+szí2n1ezüst
+szí2n1igaz
+szí2n3nyom
+szí2n1s2kála
+szin2t1akk
+szin2t1anny
+szin2t1oly
+szin2t1úgy
+3színû.
+szí2v1alak
+szí2v1átül
+szí2v1izom
+szólá2s3szabad
+szomszé2d1assz
+szovje2t1állam
+szovje2t1ellen
+szovje2t1orosz
+szõrö2s3szívû
+szöve2g1elem
+szöve2g1ír
+.sz2t
+.szt2r
+sztráj2k1õr
+szü2n1id
+szû2z1anya
+takarmá2ny1árpa
+tal2p1alatnyi
+tal2p1aláv
+taná2cs1ad
+taná2cs1e
+taná2cs1ü
+tán2c3csop
+tán2c1egy
+tán2c1est
+tán2c1ó
+ta2n1év
+ta2n1int
+tanon2c1id
+tanon2c1isk
+tanon2c1ott
+ta2n1óra
+ta2n1ügy
+tányé2r1akna
+tá2p1anyag
+tapasztala2t1átad
+tá2p1érték
+tár2gy1isme
+társadalo2m1áb
+társadalo2m1ell
+tár2s3szerz % ??
+tartalé2k1alap
+tartalé2k1áll
+tava2ly1elõtt
+tá2v1ir
+tá2v1ír
+távira2t1s2tílus
+távo2l1ugr
+tá2v1úsz
+tegna2p1elõtt
+tehé2n1ist
+tehe2r1ár
+tehe2r1aut
+te2j1ár
+tejfele2s3száj % ??
+tejfölö2s3száj % ??
+te2j1ip
+te2j1út
+.te2j1ü
+tekinté2ly1uralom
+telefo2n1áll
+telefo2n1auto
+telefo2n1érme
+tenge2r1áram
+tenge2r1öböl
+teni2sz1üt
+té2ny1áll
+tenyé2sz1áll
+tenyé2sz1idõ
+tere2m1õr
+tere2p1ism
+tere2p1akad
+té2r1érz
+té2r1isz
+termé2ny1ár
+termé2s1ered
+természe2t1átala
+természe2t1ell
+természe2t1im
+ter2v1elõir
+ter2v1oszt
+tes2t1alk
+tes2t1ápol
+tes2t1edz
+tes2t1õr
+tet2t1erõ
+texti2l1any
+texti2l1ár
+texti2l1ipar
+1thyá1ny1 % Bat-thyá-ny ld. MHSz^{10} p.103
+tífu2sz1olt
+típu2s1áru
+típu2s1ebéd
+tisztele2t1ad
+tisztessé2g1érz
+tisz2t1új
+tize2n1
+.tí2z1
+.tí3z2en
+.tí3z2es
+tí2z3szer
+toalet2t1aszt
+toro2ny1óra
+toro2ny1ugr
+2t1ország % Horvát, Német
+tor2z3szül
+továb2b1ad
+továb2b1áll
+töb2b1év
+töb2b1ezer
+töb2b1oldal
+tõké2s1áll
+tõké2s1oszt
+töl2gy1erd
+töme2g1erõ
+töme2g3gy
+törö2k1ország
+törö2k1ül
+történe2t1ír
+törvé2ny1alk
+törvé2ny1ell
+törvé2ny1er
+tör2zs1õrm
+tör2zs3szám
+t2raccsol
+t2rágya
+t2rágyáz
+t2rakto2r1állo
+t2rancsír
+t2ranszform
+.tran2z1
+t2rappol
+t2récsel
+t4réfál
+t2rombit
+.t2rón
+t2ró2n1örök
+t2ró2n1ut
+tudá2s3szomj
+tuda2t1alatt
+tudomá2ny1egy
+tú2l1ad
+tú2l1árad
+tú2l1él
+tú2l1ér
+tú2l1erõ
+tú2l1expo
+tú2l1old
+tú2l1ór
+tû2z1áll
+tüzé2r1ezr
+tû2z1olt
+tû2z1õr
+.tû2z3sz
+tyú2k1ól
+.ugya2n1
+úgy1annyi
+úgy1is
+újon2c1állít
+ujsá2g1ár
+újsá2g1ír
+úr1assz
+utá2n3nyom
+utas3száll
+utász3száz
+út1elág
+út1épít
+út1irány
+ügyész3ség
+üg2y1int
+üg2y1ir
+üg2y1oszt
+.ük1a
+.ük1u
+ülés3szak
+.ûr1állom
+üve2g1a
+üve2g1á
+üve2g1ed
+üve2g3gy
+üve2g1ipa
+üze2m1anyag
+üzle2t1emb
+üzle2t1év
+va2d1áll
+va2d1alm
+vadá2sz1e
+vadász3zs
+va2d1emb
+va2d1evez
+va2d1ideg
+vá2d1irat
+vadona2t1
+va2d1õr
+vá2gy1álom
+va2gy1is
+vagyo2n1ad
+vagyo2n1átr
+vagyo2n1ügy
+va2k1ír
+vallá2s1alap
+vallá2s1ell
+vallá2s1okt
+vallás3sz
+vá2m1õr
+vándo2r1út
+vará2zs1er
+vará2zs1i
+vará2zs3sz
+váro2s1aty
+váro2s1épít
+váro2s3sz
+vá2r1õr
+vá2r1úr
+va2s1ágy
+va2s1aj
+va2s1akar
+va2s1ár
+va3s2árn
+va2s1ed
+va2s1eg
+va2s1érc
+va2s1esz
+va2s1olv
+.va2s1ö
+.vas3sz
+va2s1utas
+va2s1út
+vasú2t1áll
+vé2d1erõ
+vé2g1akar
+vé2g1áll
+vé2g1el
+vé3g2eláthat
+vé2g1eredmény
+vé2g1érv
+.végi2g1
+.vé2g1í
+.vé2g1ó
+vé2g1össz
+ve2gy1elem
+ve2gy1ért
+ve2gy1ipar
+vé2n1assz
+vendé2g1ágy
+vendé2g1old
+vé2n1emb
+.vé2r1ad
+.vé2r1al
+vé2r1áldoz
+vé2r1áram
+vé2r1á2t1öml
+.vé2r1eb
+vé2r1edény
+vé2r1ellát
+vére2s3száj
+vé2r1ont
+.vé2r1ö
+verse2ny1autó
+verse2ny1ist
+verse2ny1ú
+verse2ny1u
+ver2s1ír
+ver2s3szak
+vé2sz3síp
+véte2l1ár
+vezé2r1elv
+vezé2r1eszme
+vezé2r1evez
+vezé2r1ezr
+vezé2r1iga
+vezé2r1õrn
+via2sz3sárg
+ví2g1oper
+vilá2g1egy
+vilá2g1égés
+vilá2g1irod
+vilá2g1ismer
+vilá2g1ural
+vilá2g1ûr
+villamos3szék
+villa2ny1áram
+.villa2ny1e
+villa2ny1égõ
+villa2ny1õra
+villa2ny1oszlop
+virá2g1ágy
+virá2g1álv
+virá2g1ár
+virá2g1erd
+viszon2t1elad
+vissz1ér
+vissz1eres
+vité2z3ség
+ví2z1áll
+.ví2z1át
+ví2z1ellátás
+ví2z1elnyelõ
+ví2z1elvezet
+ví2z1épít
+ví2z1esés
+ví2z1iszony
+.ví2z3s
+%.ví2z3sz
+vona2t1érk
+vona2t1ind
+vörö2s1õr
+wat2t1
+zápo2r1esõ
+zá2r1óra
+zászló2s1úr
+z1k2raksz % kriksz1k2raksz
+zu2g1ír
+zu2g1irász
+zu2g1utca
+.zu2g1ü
+zsá2k1utca
+zse2b1atlasz
+.zsi2b1ár
+zsili2p1õr
+zsí2r1alkohol
+zsí2r1ellát
+zsoltá2r1ír
+% ****************** End of composita ************************
+
diff --git a/hyph/hyph/norweg.lh b/hyph/hyph/norweg.lh
new file mode 100644
index 0000000..264cfa8
--- /dev/null
+++ b/hyph/hyph/norweg.lh
@@ -0,0 +1,6318 @@
+Lout hyphenation information
+%
+% COPYRIGHT (C) 1994 Jeffrey H. Kingston
+% with contributions by Rolf Lindgren (see details below)
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either Version 3, or (at your option)
+% any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program; if not, write to the Free Software
+% Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA
+
+% Norwegian hyphenation file, created by
+% Jeffrey H. Kingston 24 September 1994 from
+% an uncommented file sent by Rolf Lindgren.
+%
+% \chardef\ae=3D'32 JeffK replaced \ae by \346
+% \chardef\o=3D'34 JeffK replaced \o by \370
+% \chardef\aa=3D'345 JeffK replaced \aa by \345
+% \lccode\ae=3D\ae
+% \lccode\o=3D\o
+% \lccode\aa=3D\aa
+% \catcode\ae=3D11
+% \catcode\o=3D11
+% \catcode\aa=3D11
+% \def\ae{(^Z character deleted here by JeffK)}%
+% \def\o{(^\ character deleted here by JeffK)}%
+% \def\aa{=E5}%
+
+Classes:
+@!$%^&*()_-+=~`{[}]:;'|<,.>?/0123456789
+aA
+bB
+cC
+dD
+eE
+fF
+gG
+hH
+iI
+jJ
+kK
+lL
+mM
+nN
+oO
+pP
+qQ
+rR
+sS
+tT
+uU
+vV
+wW
+xX
+yY
+zZ
+æÆ
+øØ
+åÅ
+
+Patterns:
+.ad3s
+.ai4
+.ak5kl
+.ak3kr
+.ak5r
+.al5k
+.alli3a
+.all5s
+.al4t3et
+.al4t3o
+.an5dra
+.an3er
+.an3es
+.an3s
+.ant1r
+.arres4
+.art4
+.ast3r
+.atta5c
+.avi4
+.avis3
+.ba4ket
+.be2ste
+.bu3sta
+.dau3s
+.da3v
+.dek5s
+.des5ti
+.dia1
+.disi5pl
+.drag3s
+.dør3
+.ek3l
+.eks3t
+.ek3v
+.el5ek
+.els4kl
+.en3a4
+.eng3s4
+.en5in
+.en3sp
+.ep3l
+.erob5
+.es1k
+.es3p
+.est3r
+.et3r
+.et5se
+.ette2
+.et4tr
+.et2tø
+.eu3
+.fa4br
+.fel2t
+.fil2t3r
+.fløy5
+.fra3s
+.fri3e4
+.gang3s4
+.ge5na
+.grun2n3
+.gå4i
+.ha4ven
+.hud3
+.hygi4
+.hygie3
+.iat4
+.ik4r
+.imp4
+.in3a4
+.in3g4
+.inn1s2
+.io2
+.ion5i
+.is4pr
+.is3s
+.is3ø
+.je4t5
+.kaffe3
+.kal2kv
+.ka4pr
+.ke5ik.
+.ke5ip.
+.ke5iv.
+.kjøt4
+.kole5s
+.le4a
+.le4f
+.let4ta
+.le4u
+.li5a
+.lik3s
+.lov3
+.lo4va
+.lu4b5
+.ly4den
+.ly4sk
+.løy3e
+.man5t
+.ma4to
+.me4s5k
+.midi3
+.mi4g3r
+.mit5r
+.mon5s4
+.my4s5o
+.mør2kr
+.ne2d3i
+.ned3r
+.ned1s
+.ne2k3
+.ne4st
+.ni5tre
+.nor2d
+.norsk3
+.of5r
+.ok5k4
+.om1
+.om5p
+.oms4
+.opp3ad
+.op4pel
+.oppo3f
+.opp3s
+.os3l
+.os3p
+.ot5r
+.over3i
+.pa3g
+.pe4e
+.pe3sti
+.pe4t3r
+.po4str
+.pris3t
+.ra4ja
+.rang4s
+.re4kli
+.re3so
+.re5ste
+.riks3
+.ro4mi
+.rom3st
+.ror4s5
+.rosen3
+.ro5ve
+.sel2e
+.selv3a
+.sen3d
+.side3
+.sid3r
+.si4st
+.sjof4
+.sjøl1
+.sk4
+.skru3t
+.små1
+.so3pe
+.so3ve
+.st4
+.så5re
+.te4st
+.tes5ti
+.te4t
+.tet3r
+.ti4gr
+.ti2l3
+.tro4e
+.ts2
+.ub4
+.ue2
+.uk4
+.uls5
+.ulve3
+.ul4v5i
+.unde2
+.unn5s
+.up4r
+.us4p
+.us4u
+.ut4rer
+.ut5t4
+.vann1
+.veg3r
+.ve4kl
+.ve2l
+.ve3ra
+.vib5
+.vings2
+.vi5tr
+.wes4t3
+.øk5i
+.øs4tet
+.øy4e
+.øye3s4
+.ånds3
+.åt5a
+a5alt
+a3anl
+a3ap
+a5as
+a1b
+4abe
+ab4h
+a2b3l
+abok5
+a2b3r
+a3b4re
+ab4ro
+abus3
+aci5e
+ac3in
+a5cu
+a3da
+a4deks
+adel2s
+adesh3
+ad3j
+4adl
+a3dop
+a1drag
+ad3rei
+ad3ri
+ad4s5am
+ads5i
+ad3st
+a3e2
+a4en
+a4er
+aes4t5
+5affæ
+af3le
+a1fra
+af3ri
+af4to
+3a2gent
+ag5ga
+ag2gr
+agg3s4
+a4gid
+a2git
+ag3la
+ag3ord
+a2gr
+a3gret.
+ag3ri
+ag3ro
+a5grø
+ag5sen
+ag3sj
+ags5å
+a4gur
+ag5ur.
+a1h
+a5ib
+a3inn
+ai4ro
+a5irs
+ai4s5k
+a1j
+aje3s4
+2ak.
+a1ka
+a3ke.
+a1ki
+a3kj
+ak4klæ
+ak5kro
+ak3l
+ak4læ
+ak5omb
+ak3r
+a3kred
+ak5sku
+ak5spa
+aks4pe
+ak3sta
+ak5sto
+ak3str
+ak5stu
+ak5sva
+1aktig
+ak4tre
+4aku
+a2k3v
+a5ky
+a3kå
+a1la
+a3lal
+al5apr
+al5art
+ala3tr
+a4lav
+al5avi
+ald3r
+ald5sv
+a3le
+4ale.
+a4leks
+ale4ra
+ale3s
+ales5k
+4alg.
+al2gl
+al4gå
+2ali
+alin5d
+al3inn
+a4l5int
+alk5ve
+al4l5ap
+al4lep
+5allie
+al3lo
+alls5po
+alon4
+al3ord
+al3p
+al4sel
+als4ka
+als4ke.
+als3kj
+als5l
+al3spo
+al4stø
+altek5s
+al4tj
+alt3op
+a1lu
+5a4lum
+al3ur
+aluta3
+al1vo
+a1ly
+a5læ
+a2lø4
+a3lør
+al3øv
+a3lå
+2am
+a2mal
+am3ald
+am2br
+amb5ra
+ame5ra
+a2meri
+ame4tr
+am5om.
+a4m5os
+am4pak
+amp3l
+am4pr
+am1s
+ams2l
+am4sla
+am4slø
+am3s4t
+amst5r
+am5un
+a2nal
+an3al4f
+1analy
+an3art
+an4dav
+ands3i
+andve5s4
+ane5d
+an3e4ti
+ang3l
+an5g4o
+an3gr
+an4gren
+3angrep
+2a3ni
+an5i4on
+an2kr
+ank5ra
+ank5re
+ank3ri
+an4k5ve
+an4k5å
+an4nom
+ann4skj
+an4nø
+2ano
+a4nof
+an5op
+an3sa
+3ansik
+ansis5
+an2sk
+an3skj
+ans5pa
+an2s3pi
+an1s4t
+an4s5u4
+an3sva
+an4t5ap
+an5te
+an5t4i
+ant5ord
+an3tr
+an4tra
+a4nut
+a4n5æ4
+4anø
+a4n5øy
+4ao
+a5oh
+a3ok
+a3or
+a3os
+a5ot.
+ao2v
+a4p5ed
+apet5
+a1pi
+ap5j
+a3pla
+ap3li
+apo3p
+3appel
+ap3p4r
+ap3r
+ap2sk
+ap5spr
+ap2s3t
+a3psy
+a3py3
+2ar.
+a1ra
+1arb
+2arbi
+2ard
+ar4dj
+ard5sti
+a3re.
+3a2rea
+ared4
+ar5emb
+ar5gh
+2ari
+arie4
+ar4kl
+4arn
+ar5nap
+a1ro
+ar5oks
+ar3or
+arp3s
+ar3smø
+ar4sn
+ar4sta
+3artil
+ar5tri
+ar4tro
+ar4tår
+a5rum
+arve5s
+3arvi
+a1ry
+ar5øy
+a3rå
+2as
+a3s2a
+as5and
+asbe2
+asei4
+ase5id
+ase5le
+ase3s
+as5jor
+a2ska
+as5kad
+a3skar.
+as3ko
+a3skr
+as3ku
+a4s5ky
+as3l
+as5ma
+as5na
+as3p
+3assist
+as2s3k
+as2s3n
+as4s3op
+as2s3p
+as4stu
+as5ta.
+a3stad
+as3tat
+ast5egg
+as5ter
+aste5s
+as3ti
+a5stise
+as5tisk
+as3to
+ast5re.
+ast3ri
+ast5un
+as5tør
+a3svi
+2at
+a1ta
+ata4ko
+ata5kr
+ate5t
+4ati
+at5ion
+at3j
+3atla
+5atlø
+at4n5o
+at2o
+at4om
+at5opp
+ato3s
+ato5u
+ato3v
+at3r
+at4ra
+4atri.
+at4ry
+at3sp
+ats5å
+att5o
+at3tri
+at2trå
+at4t5ung
+at4tør
+a4tun
+a3ty
+a1t4ø
+at5år
+a2u
+au3a
+au4dal
+au4dei
+aud3s
+aue4l
+au5g4n
+au3i
+au5k4l
+au4k3u
+5aumur.
+aur5s
+aus3k
+au4sp
+aus4s5k
+au2st
+aus4tet
+aust5re
+au3su
+au5te
+aut4o
+3aux
+a1va
+av5ank
+ave5sl
+aves5t
+1avg
+3avgi
+a1vi
+4avin
+a4v5inn
+avi5o4
+avi2s
+a2vis.
+av5ise.
+av5ising
+a1vo
+a4vok
+av3okt
+av3sa
+3avslu
+5avsn
+av3sv
+4a3vu
+5avv
+a1væ
+a3vø
+a4v5øl
+a5vå
+a3ø4
+1b2a
+3ba.
+ba4k5end
+bak5ett
+ba4k5om
+bak3t4
+ba3la
+ba3na
+bane3
+ba4sk
+bass5t
+ba4st
+bas5ta
+ba5t4r
+bau4g
+ba5yo
+2b1b
+bbel4
+bb3ru
+b4bå4
+2b3d
+5be
+be5de
+be3dr
+be4d3re
+begei5
+be5g4l
+be4i
+bek4l
+bel5år
+ber3sk
+be1s4
+be5sm
+be3sp
+bes5s
+bes5tev
+be5tv
+4bf
+2b3h
+1bi
+bi5ap
+bi5av
+bi5br
+bi3d
+bik4ki
+bik4l
+bi4lei
+bi4lo
+bi2o
+bi3s4a
+bis3k
+bis4la
+bi2s4t3r
+bis4v
+bite4s5
+bi3tr
+4bk
+b2l
+3b4la
+b5lat
+ble4mo
+5b4lu
+3b4ly
+2bm
+2b1n
+bne3
+1bo
+bo2k3
+bo4ko
+bolt5
+bol4tr
+bom1
+boms4
+bop4
+bor4t5o
+bor4t5r
+bor4tu
+bo5r4u
+bo3s4
+b2r
+b4rad
+bre4da
+brei3s
+3bren
+3brev
+3brikat
+b3rio
+b3rist
+4brit
+b3riu
+3bru
+4b5rua
+bruk2s1
+bru3re
+bru5spe
+bru5s4t
+3bry
+3b4rø
+2b1s2
+b5sc
+b4s5of
+bs3s
+bs4te
+4b5t
+3bu
+bu5d4e
+bu4el
+bu3o
+bup4
+b4us
+bus4h5
+bu5she
+bu5skj
+bu3sn
+bu4sp
+buss5t
+4bw
+5by
+by5e
+by5o4
+byr5i
+3bø
+3bå
+bån4d
+båt3r
+1ca
+ca5ra
+4c1c
+1cel
+celeb3r
+5ceu
+4ch.
+3cha
+3chere
+5chet
+1chi
+5chom
+3chu
+ch3v
+2ck
+cke4t
+ck5i
+ck5l
+c4k3o
+ck3s4
+3co
+con3
+con4t5r
+co4o
+co3ri
+cos3t
+cou5
+co3v
+4c5p4
+cqu4
+cre3
+cre4e
+crim4
+5cud
+cu5ra
+3cy
+cæ3
+1da
+3daf
+d3aksl
+da5kv
+4d3alf
+dam3b
+dans2a
+4d3ansv
+2dar
+d4ar.
+4darb
+das4h
+4d5ass
+daus4
+2dav
+d3a2vi
+da5vin
+d3avl
+2d1b4
+2d1d
+d3da
+ddags3
+dde3s4
+dd2hi
+d4d5or
+d3d2r
+dd5ret
+dd5si
+dds5l
+dds4n
+dds5tr
+dd4sty
+dd5så
+dd5t
+1de
+de3d4
+4d5ed.
+def4
+2d3eie
+de5ikt
+de3ist
+dek4ko
+dek4v
+de4laf
+de4l5ei
+de4l5ek
+4delem
+del4sa
+del4sk
+dels3l
+del4str
+3den
+deni5f
+den2s
+dens3t
+de5rap
+der5e4ge
+de3res
+de5sak
+des4hi
+de2sin
+de1s4k
+de5ska
+de2so
+de3s4ta
+de5sv
+de5v4r
+2d1f
+2d5g2
+dgi4n
+2d1h
+4dho
+1di
+5di.
+dia3s4
+di3en
+di4gat
+di4g5re
+di5ka
+di5kl
+4dind
+4d1inn
+di5ok
+dipo4
+di4sa.
+di4sc
+d5iset
+di5si
+disk4
+di4s3ko
+dis3kr
+4d3iso
+d3iste
+di5stre
+2d1j
+d2ju
+3djup
+2d3k4
+4d5l
+2d1m
+4d3n
+1do
+do3a
+do5br
+dok4ka
+2dolj
+4d5oml
+do4mo
+4domr
+dom2s
+d3omse
+dom4si
+doms3k
+4d5onk
+2dop
+d3opp
+2d3ord
+d3ost
+2do2ve
+2d1p
+dpri5
+dprio4
+2dr
+3drag.
+d4rakt
+d4ral
+3d4ram
+d3ras
+d3rau
+4dre.
+4d5red
+d2rei
+d2rekt
+dre5ni
+d2rev
+3drevet
+d2ri
+5d4rif
+d3rik.
+d3rin
+3d4riv
+d1ro
+d2rom.
+3dronn
+d5ror
+5drue
+3druk
+d3ryk
+d3rød
+d3rør
+3drå
+4dråm
+4ds
+d2sa
+ds5ab
+ds5ad
+d3sag
+ds3an
+dsa4r
+ds5eie
+dse4l
+dsel5sl
+d2si
+d3s4ke5
+d4skjen
+ds5kn
+d5skri
+d3sku
+ds5le
+d5slit
+d3slok
+d3slå
+ds3no
+d2so
+ds5of
+ds3op
+ds5pa
+ds3s2
+ds3tal
+d5star
+d5s4tau
+ds4te
+ds4to
+d5stor
+d2str
+ds3tra
+d5stry
+ds4typ
+d2su
+ds3un
+ds3ur.
+ds1v
+d3sy
+d5sæ
+ds3øk
+ds5øm
+ds5øn
+d5søs
+2dt
+d3ta
+d5te
+d1tr
+d5trø
+dtu2
+dt3uk
+d1ty
+d1tø
+1du
+due5s
+du3i
+du4it
+duo5
+du4rak
+d4us
+2d5ut
+4d3v
+2dw
+1dy
+d3ye
+4d5ynk
+dy4pet
+5dæ
+1dø
+døds3t
+4døk
+dø2r
+d3øre
+d3øs
+5døv
+dø5vi
+då4dr
+då4p
+d3år.
+då4ra
+d3å4t
+e1a
+ea4do
+ea2gu
+ea4k
+ea4lar
+e2alo
+ea2m
+e4ann
+ea2p
+ea4ry
+e5as.
+e5ask
+e3asm
+e3ass
+ea3tr
+e3att
+e2au
+ea2v
+e1b
+eb4bu
+eber5ø
+eb4l
+ebo5b4
+e4brer
+eb4u
+4ec
+e1ce
+e5ci
+e5c3r
+ec4re
+e5cu
+2ed
+e4d3ad
+ed3ar
+ed5e4ge
+ede4reg
+ede4s5p
+edin4n
+e2dist
+ed3or
+e1dra
+e3dres
+e3drikk
+e4drin
+ed1ru
+ed3so
+ed3s4po
+ed3st
+eds5å
+e3då
+e1e2
+ee5in
+eek5e
+eek3v
+e4el.
+ee3la
+een3i
+ee4t
+e4ets
+e1f
+3effek
+e5fi
+efi5b
+ef3le
+e3fli
+efor3ed
+ef5ta
+e3fæ
+eg4an
+ega4sk
+egg4r
+e1gla
+egn3s
+eg4ra
+egs4a
+egs3i
+egs5kj
+eg3skr
+egs4p
+egu5i4
+eguns5
+e3gæ
+e5h
+ehov4
+4ei.
+ei5a4d
+ei3ak
+ei3b
+ei5d4u
+ei3erin
+eig5s
+ei4k3an
+4ein
+ei4nal
+ei4nan
+ein3d
+ei4nei
+ein5g
+e3inn
+e3insy
+ei4nu
+ei4nø
+ei3o4
+ei5ra
+e1isk.
+ei3ski
+ei3skr
+ei3s4ku
+e3isme
+eis4p
+ei3spo
+ei4ste
+eit5re
+e1j
+eju4l
+ejul5a
+4e1ka
+eka4s5
+4e1ki
+ekin4
+e1kj
+ek4kad
+ek4k5j
+e1kl
+ek4lau
+e3knek
+ek3no
+ek5nup
+ek3nus
+2eko
+e1kr
+e3k4ra
+ek4ri
+ek4rok
+1eksam
+ek2s3k
+eks5l
+5ek2s5p
+5ekstr
+ek4stø
+ek5sv
+ekte4t
+ekt3ete
+e1ky
+e3kø
+e3kå
+2e1la
+e2lak
+e3lakk
+el3aks
+el3al
+e5lap
+e5lar
+eld4s5e
+el3egn
+el1ek
+3elem
+e2leme
+el4gan
+2eli
+eli4kv
+e5lin.
+e3linn
+el3k
+el4lins
+el3lo
+el5l4ur
+e2l3ob
+e5lod
+e2l3op
+el3or
+3elske
+els5pin
+els5tel
+els5tra
+els3v
+el4t3ro
+elt3u
+4e1lu
+e5lum
+e4l3un
+el3ur
+elv3ant
+elve5s4k
+e1ly
+el5ynd
+e1læ
+el5ærv
+4elø
+el3øk
+elø4r
+el5øre
+4e3lå
+5emalj
+e4mana
+e4mels
+e3mer
+em5e4ta
+e3mi
+emi5g
+emmer3
+emme2re
+emo3a
+em3om.
+emp5li
+em5po
+em3skr
+em5sku
+em1st
+ems4te
+emst5r
+emøb5l
+emønst4
+emø2r
+emåls3
+em3år
+e3nakk
+en5all
+en3art
+en3avi
+3endrin
+en5dro
+en2e
+3eneli
+en3gr
+engs4t
+e5nip
+e3nit
+en5iv
+en3kl
+e4n5omr
+en1op
+en4s5ei
+en3si
+ens4ka.
+ens3ma
+en3sori
+ens4pl
+en1st
+ens2v
+ens3va
+en4t5enh
+ent3r
+en3ø4v
+en5øy
+e5o4g5e
+e3oks
+e1om
+e1on
+eon4s
+e1op
+eo2pe
+eo4pi
+e5or.
+e1ord
+e3ork
+e5ors
+e5ost
+e1o2v
+e1p
+4ep.
+ep5je
+e2ple
+3eple.
+ep5sla
+ep4so
+e3psy
+e1ra
+er5adr
+er5aks
+er3anl
+e2rapp
+er3ar
+4erat
+er3av.
+er5avd
+er5avt
+erdi3s
+er3d2r
+er5dv
+ere5a
+er5ed.
+2erei
+er3eid
+er5eik
+4erek
+er3eks
+er5enh
+e2res
+er1ess
+e3resta
+ere4ta
+er3ev
+erg3s
+2eri
+er3ile
+er1inn
+er3int
+er5nak
+2e1ro
+er5obl
+e2rok
+e2rop
+er3opp
+er5opt
+er1or
+e3ror.
+e2rov
+erre4st
+er3sl
+er4s3pa
+ers4tem
+ers4v
+er4sva
+4e1ru
+er5ut.
+er3uts
+er5utt
+e1ry
+e3ræ
+e1rø
+er3øl
+4erå
+e5rå.
+e1råd
+er5åk
+er5ål
+er3ån
+e5sab
+e3s4al
+e5sav
+ese4ne
+ese3s
+es3inf
+es3int
+esi5st
+e3s4j
+eske3
+e1sko
+e1skr
+e4skra
+es4kro
+esku3e
+e3skå
+e1slag
+es4lem
+e5slen
+e3slu
+es2n
+e3s4nak
+es3nev
+es3ni
+e3sno
+es3nu
+e3snø
+e2so2r
+e1sp
+e4spat
+es3pir
+es5pl
+e3s4por
+es4s5and
+es4sja
+est5ali
+e4stap
+est5a4pe
+e3stati
+es5tema
+e2stev
+e3stit
+e1sto
+es4tori
+est3re.
+est5ris
+e3stu
+es4ty
+4esu
+e3svak
+e3s4ø
+e3så
+e1ta
+etal2j
+eta5st
+4etek
+e5tem
+ete4se
+e1tj
+e1tr
+e3tre
+e4t5res
+et3ri
+et4rie
+et4rin
+et4ron
+et4rop
+et2s
+ets3l
+ets3p
+ets3t
+et4sty
+etså4
+et4t5av
+etter3a4
+et4t3j
+etts3l
+e1ty
+e1tø
+e3tå
+e4ud
+e3uk4
+eu2ke.
+e3ul
+eum4
+eums5
+e1un
+e5uo
+e4uro
+1europ
+e4use
+e5utl
+eut4r
+e5uts
+e5utt
+e1v
+4ev.
+e4vad4
+eva4de
+eva5dr
+eval4
+evand5
+eve3s4
+e3vi
+5e4vige
+evre3
+e3vrim
+ev4sku
+ev4sty
+e4vu
+ey3c
+e3yn
+e3yr
+e5y4t
+e3æ4
+e1ø4
+e1å4
+3fa
+fa5ci
+fa2g
+fa5gr
+fag5u
+4f5alf
+fallit4
+fal5ska
+fan4tor
+fa5p4
+4farb
+fart4
+farts3
+fa4s5k
+fa3t4r
+2fb
+4fd
+1fe
+febe4
+fe2br
+feb3ri
+fe5e
+fei5en
+feil3
+fei5to
+fe4l5an
+felle2
+fel5ok
+fe2m
+fem5a
+fem3ø
+fen3s
+fe4sta
+fes3ti
+fet5o
+2f1f
+f4fid
+f4fj
+ff4l
+f2f3re
+f3fæ
+f3g4
+3fi
+fi5an5
+fi5ap
+fi3li
+fin4gr
+fi4no
+fir3k
+fi4st
+fj4
+f3jeg
+1fjel
+2f3k
+1f2l4
+fla5g4r
+f4les
+5flo
+5fly
+flys4
+3f4lø
+2fm
+fma4d
+fmar4
+2fn
+3f4nu
+3fo
+fo2n3a2
+fon3s
+fo4nu
+fo2r
+for1a
+fo5ra.
+fo5ras
+fo3re.
+fore2n
+for3ene
+fo3rer
+fo3ri
+for3k
+fo4ro
+for3sm
+for5t4i
+for3æ
+for3ø
+fost3r
+fo4t3r
+fot5sk
+4fp
+f2r4
+fra3l
+fra2m
+fram3e
+fra5v4
+f3re.
+fred4se
+fre4met
+fre4mo
+fre4s5k
+fris4l
+fri5sto
+fri5v4
+5fro
+f3roa
+f5rof
+3fru
+fru4e
+fru4n
+fru3s
+fru5tr
+3fry
+frø5
+frøp4
+2f1s2
+f3sh
+fsi2
+fs5s
+fs4t
+2ft
+ft5amp
+ft5ans
+f4t5ekk
+ft5ekt
+fte4na
+ftka5s4
+ft3r
+ft2s
+ft4s3i
+ft4ska
+ft5sla
+ft5slo
+ft5spe
+ft5sta
+fts5å
+f2t3u
+3fu
+4futm
+4f5v
+1fy
+fy5o
+2fæ
+3fø
+fø4rek
+før4st
+få3
+1ga
+ga4fl
+ga5gi
+4gakt
+gak4v
+gam4bl
+g3and
+gan4gj
+gan4gr
+g5ank
+gan4s5v
+2garb
+2gart
+ga5si
+gas4sa
+ga2st
+ga3t4ro
+ga5tå
+4gavg
+g3avi
+4gavs
+2g1b
+gbok4
+4gc
+2g1d2
+gdoms3
+g3d4r
+1ge
+5ge.
+ge3a
+ge3d
+gefis4
+4g3egg
+ge3gl
+4g5ei.
+ge5i4d
+geit5o
+geit3r
+ge3k
+4gelem
+gels4
+4g3emn
+gemø4
+ge2na
+gen3ap
+gen5g
+gen3n
+ge4n3om
+gens4t
+gen5sv
+ge2o
+ge5on
+3ger
+ge5rap
+ge4ren
+ge3res
+ge5rop
+ger4sn
+ge1s
+g5e4ser
+ge5te
+get4r
+ge3u
+2g1f
+gfib5
+4g1g
+gga4
+gg5an.
+g4g5ap
+g4gav
+gge5o4
+g4g5i4m
+g2gl
+gg5la
+g3glu
+gg3re
+g4g5ro
+g5gry
+gg3se
+gg3so
+gg3s4t
+gg3s2v
+gg3så
+2g1h
+1gi
+gie2
+gi3ene
+gik4r
+3gin
+4gind
+ging4
+4g3inge
+4g5inn
+gi1on
+gi3s4l
+gi5spa
+gi5tr
+1gj
+2g3ja
+gjen3
+gje4ne
+gje4s5p
+gje2st
+2g3k2
+g1l
+g2la
+g3lag
+4g5lak
+2glau
+4gle.
+g3lev
+g2lid
+gl3s4
+g2lu
+g5lør
+2gløs
+g3lå
+4g1m
+gme4t
+2g1n
+gn3d4
+gne4t5j
+gne4t5r
+gn4i
+gning4s
+gni2s
+gnist3
+g3niv
+g4nom
+gn4skr
+g4ny
+gn5åp
+1go
+go3b4
+5goc
+2g3ok
+g3omr
+go5no
+2g3opp
+gora5
+4gord
+4gorg
+go3rø
+3got
+2g1p
+1g2r
+3gra
+4g5rac
+g4rad.
+gram5e
+grana2
+4g5rap
+g3rar
+gra4sa
+g4rav
+4g3re.
+gre4en
+4g5ref
+g3rek
+4g5rel
+gre3ni
+grep4
+gre5v4r
+g4ric
+4g5rid
+g5rif
+g3rik
+3gru
+4g5rui
+g3råd
+4g2s
+gs1a2
+gs3at
+g5sc
+gse2
+g3seg
+g3sei
+g4s5ele
+gs4els
+gs3em
+gs1ev
+gs4id
+g3sil
+g5s4kad
+g5s4kall
+g3s2ki
+gs5kog
+gs3ku
+gs3kv
+gs5kå
+gs3l
+gs4lyn
+gs3me
+gs4nel
+g5sno
+gs3nø
+gs1o
+gs3p
+g3s4pel
+g3s4pi
+gs3s4
+gs3ta
+gs4tang
+gs5ted
+g3s4tef
+g5stega
+gs4ter.
+gs5tig
+gs3tj
+g3stol.
+gs5traf
+gs5tran
+g5strek
+gst5rop
+gs3try
+g4sty
+g5styr
+gs1v
+gs5vet
+g3sy
+gsy4t
+2g1t
+g5te
+1gu
+gu3ar
+gu2di
+4g5ug
+gul2l3
+gu4l5o
+g4un
+4g5urn
+gus3
+2g3utl
+3gutt.
+2g1v
+1gy
+g3æt
+3gø4
+4gøra
+4gøre
+gøy5
+3gå
+4gåp
+g4år
+g5år.
+gås5tr
+ha5c
+hai3
+ha5kø
+hal4sk
+hal4v3a
+hand5sl
+hane5
+hard3st
+har4t3r
+ha4sji
+hasp5l
+ha5ul
+hav5eng
+hav4sl
+hav4sp
+ha4v5ø
+4hb
+2he.
+he2a
+he3an
+he2k
+he5ka
+4helf
+helfab4
+he5li
+helse3s
+hel5sl
+4her.
+he5re
+hero5s
+he4r5u
+he2s
+hes3p
+hes5te
+hets5
+hi5li
+hings4
+hins4
+hi4o
+his5k
+hi3sta
+hi4to
+hi5tr
+4hl
+4hm
+ho5bl
+ho2s
+ho5si
+hos5ti
+4hot.
+ho3ve
+hoved3
+4how
+h5p
+2hr
+2ht
+h5ta
+hu4do
+hu5et
+hugs2
+hu4l5ø
+hung3r
+hu2s
+hu5se
+hus3k
+hus3s
+hu4st
+hust3r
+h2v
+hvi5to
+hvi3tr
+hvo4
+hvor3
+hy2br
+hy3e4
+hy2gr
+hy3s4t
+hø4s
+hø5vi
+høy1
+høy4et
+h2å
+hå4pl
+hå3ri
+ia3b4
+i5adn
+ia3g2
+iak4
+i5ak.
+i5akb
+i1al.
+ia4l5an
+i3alb
+i3ald
+iale4
+ia4l5et
+i3alf
+i3alg
+i3all
+i5aln
+ia4lom
+i3alp
+i5alr
+i3als4
+i3alt
+ia4lu
+i5alv
+i3and
+i3ang
+i1ans
+ias3s
+i3at.
+i5atg
+ia3tro
+i5au
+i1b
+ibe4l
+i2b3l
+i2br
+ib3ra
+ib3ro
+i1c
+i4ch
+i3da
+i4dea
+3i2dio
+idisip5
+1idret
+id3ru
+id2s3
+id4sk
+ids5te
+id2t
+idt3re
+i2d3un
+id5øy
+id5å
+2ie
+ie3d4
+i3eff
+ie3i
+i1el
+i2ele
+ie4lim
+i4em
+i1ens
+i3ent
+ie3o
+i4ep
+i1e2r
+ier5an
+ie5rat
+ie5rek
+i4e5rel
+ie3ri
+ie3ro
+ie3rå
+i3es.
+ie5sn
+ie5s4t
+i3et.
+i3ett
+i3e4ty4
+ietyl3
+ifes5
+if3re
+if5ri
+ifts3k
+ig5att
+i3ge
+ige2n
+igg5s
+ig5no
+i4gom
+ig3ret
+i4g5ro
+ig5rut
+igs4a
+ig3si
+igst4
+i4gut
+i1h
+i5i
+i3j
+4i1ka
+ik5art
+ike4g5l
+ike4r5u
+ike3s
+i1ki
+i1kj
+ik2kar
+ik4kor
+ik2kord
+ik5kra
+ikk3sl
+ik3l
+ik4lo4
+iklor5
+ik4læ
+i5k4no
+4i3ko
+ikos5t
+ik3r
+ik4ra
+ik4ret
+ik1ro
+ik4ry
+i5k4rø
+ik4san
+ikt4r
+ikt2s
+i2kv
+ik3va
+ik3væ
+i3ky
+i3kø
+2il
+i1la
+i4lak
+ild5s4p
+il3eie
+ile3s
+ilfab4
+ili4br
+il3k
+ill3s
+3illu
+il4mi
+i3lo
+il3s
+il4sm
+il5tra
+i3lu
+il3v
+i3ly
+i3læ
+i1m
+im5ord
+im3p
+ims5m
+im3s4t
+imt5v
+i5nakk
+inat4r
+in3au
+in4dra
+ind3s
+1indus
+4ine
+in5eid
+ine4r3å4
+ine5u
+3infek
+3info
+in4gav
+3ingeni
+ing5l
+in4gor
+ing3r
+ings1
+ing4slå
+ings3ti
+ings3to
+in4gø
+4ini
+i3nip
+in4kok
+in4k5op
+in4nan
+3innho
+in4n3om
+inn3sm
+inn1sp
+1innt
+in4nø
+in3ok
+in5op
+i4nov
+in3sa
+in5s4ka
+ins4kv
+in5sma
+in3smed
+in3s4o
+in1sp
+ins4pl
+in1st
+in5sta
+3instan
+1insti
+1instru
+in3sv
+in3sø
+in3t
+int4r
+int5rin
+in5ul
+3inves
+4inø
+io5a
+i1o2d
+io5g
+io4ka
+i3ol.
+i5olb
+i5olf
+i5o4lu
+i3om.
+i3on.
+ioni4
+i3ons
+i3op
+i3or.
+io4ra
+io4re
+i5orin
+io5ry
+io5rø
+io2s4
+io4sa
+io3se
+io4se.
+io3st
+io4su
+i1ot.
+ipa4n5
+i1pi
+i3pla
+ip3lo
+i5p4lok
+ipo4s
+ipp5esk
+ip2s
+ip4sk
+ips3l
+ip5sor
+i5py
+i1ra
+ird5s
+i3re
+irek4n
+ir2kl
+i1ro
+ir4sc
+ir4t5o
+i1ru
+iru3e
+i3ry
+i3rø
+i5rå
+i4sag
+4ise
+is5edd
+ise3s4
+i4s3ind
+i4sj5i
+i4s3ju
+is5jø
+i2sk
+is3ka
+is3kje
+is1kr
+is3ku
+is3kv
+is3la
+i3slag.
+is4lav
+is5lo
+i5slu
+is3n
+3i2sol
+i2s3op
+is3p
+is4pan
+is4par
+is4pi
+is5pin
+is5s4l
+is4spr
+4ista
+is5tap
+is3tas
+is5ten.
+ist4i
+is3ti.
+4istik
+is3tin
+is5tis
+is3to
+is4tom
+is4top
+i4s5trah
+i4s5trak
+is3tu
+is4tun
+i2su
+i3sue
+isum3
+is3un
+is3v
+i5sæ
+isø4
+is5øy
+is5å
+i1ta
+ite3sl
+ites4t
+itets1
+iti5al
+itik4
+it3j
+it3rer
+it3rin
+i3trise
+itse4r3
+it4skr
+its5t
+its3v
+it4top
+it4tra
+itt4si
+itts4t
+i3tu
+it5ung
+i1ty
+i1tø
+i5tå
+i1u4
+ius3
+4i1v
+i2v3ak
+iv5ank
+iva2te
+iv3av
+iven5
+ivent4
+iv5is.
+iv3n
+iv2s
+ivs3l
+ivs3n
+iv4spo
+i5xi
+i3æ
+i1ø4
+i1å
+iår4
+3jag
+ja5gr
+3jakke
+jakk5s
+jals4
+5jamm
+ja4sp
+ja5t4r
+jazz3
+j4e
+je3dr
+je4f5re
+je5ik
+je5in
+je5is
+jekk5s
+jek4l
+jel5dr
+je5l2e
+jel4lo
+jel4t3
+je4mo
+jen3d
+jene4s
+je3n4i
+jert5a
+jes5akt
+jes5er
+je5sku
+jet3s4
+j5h
+j5isj
+j5it
+j5l
+5joc
+jo4i5
+jok4ki
+jon2
+jons3
+jor2do
+jord3r
+3jou
+j5p
+2jr
+j5t
+ju4an
+ju3ar
+5jub
+jube4
+ju4pet
+jup5l
+jup3r
+ju5skj
+ju3so
+3just
+ju3s4te
+ju5s4tif
+jær2s
+j4ø
+jødsel3
+jø3g4r
+jø3h
+jø5ko
+jø3kr
+jø5ro
+jøs4l
+jø3tr
+jøt2t3
+jøtte4
+2jå
+jå5r
+k2a
+3ka.
+3kab
+kaf5ta
+k5agi
+ka3is
+3kake.
+4k3aks
+3kale
+3kalk
+kal5ko
+kall4s5
+ka3lo
+3kalv
+1kam
+kamb3r
+kamp5r
+1kan
+ka3na
+4k5anm
+4kap.
+3kapi
+kaps3l
+3ka3ra
+2karbe
+3karr
+kar4st
+ka3ru
+5kas
+kas3s
+5kata
+ka5te
+ka4tio
+katte1
+kat4tø
+kau3
+5kauk
+5kaus4
+ka4van
+2k5b
+kbu4
+4k5c
+kcarri4
+2k3d4
+1ke
+ke3a2
+ked4
+ke5da
+ke3dr
+ke4et.
+5kef4
+3kei
+4keie
+ke3ie.
+ke5im.
+ke5is.
+ke3kn
+4k5ekt
+3kel
+ke4l5ek
+ke4l5os
+ke5lå
+ke4n5i
+ken3s
+ken4skj
+ken4s5t
+kent4
+ken3tr
+ke3or
+ke5os
+ke3p
+ker5ap
+ker3k
+ke3ru
+kese4
+ke4s3et
+4k5eske
+kest4
+ke3sta
+ke3sæ
+ke5u
+4k5evj
+4k5evn
+kev4r
+2k1f
+2k1g
+2k1h4
+5kig
+kikk4s3
+3kilde
+4k5imp
+ki3na
+kin3d
+1king
+ki4nu
+kip5r
+kip4s3
+1kir
+3kis
+kis5m
+4ki3s4p
+ki3tr
+3kjens
+5kjent
+3kjerk
+5kjert
+3kjole
+4kjor
+k3jord
+5kjærl
+2k1k
+kk5a4bi
+kk5adr
+k4kal
+kk5anl
+kk5app
+kk3arb
+kkars5
+kk5eie
+k4k5eld
+k4k5il
+kk3inn
+k4kins
+k2k3l
+kk4lam
+kk4lok
+k2k3op
+k2kr
+kk3ren
+kk5rot
+kk4s5je
+kk5sko
+kk3sn
+kk2so
+kks4p
+kk3st
+kks4te
+kk4stø
+kk3t4
+k2k3v
+k4k1ø
+k2k3å
+kkå4r
+k2l4
+4kl.
+3klag
+k5lak
+3klang
+klau3s
+3klausu
+k4lede
+k5len
+k4lep
+kle4st
+2k5let
+k3lig
+3k4lim4
+klod3
+4klov
+3klub
+4kluf
+5klyp
+3klæ
+k3lå5
+2k1m
+kmål4
+2k1n
+k3nak
+3knap
+knat4r
+k4nei
+k2nek
+5k4nic
+3knip
+knist5
+3kniv
+3k2nu
+k2ny
+k4nø
+kn3øy
+1ko
+ko4bl
+3koe
+3kof
+ko2g
+kog3n
+kog3st
+5koke
+kole3i
+koles4
+4kolj
+3kom
+4k5omh
+4k5omt
+3kon
+kon3gr
+ko3no
+kon1s4
+ko4pl
+kop5pa
+3kor
+4korpe
+kor4sk
+kor4sl
+kor4sv
+ko3r4u
+3kos
+ko3s4l
+ko5sp
+ko4stø
+ko3sv
+kot4tr
+k3o4u
+ko5un
+2kov
+2k1p4
+k2r4
+3kraf
+2krap
+k3rau
+2k3re.
+k4red
+k3redd.
+3kredi
+4k3reg
+kre4kli
+k5repa
+5kreps
+k4rese
+4krif
+3k4rig
+3k4rim
+3krise
+5k4ro.
+4kroc
+k4ron
+4k3ros
+kro5v
+kru5i
+3k4ruk
+krus3t
+k3rute
+krut4r
+k5ry.
+3krys
+4kryt
+k3rød
+3krøm
+k5rør
+3kråk
+4krån
+4ks
+k4s5a4b
+k5sak
+k4sc
+ksel3s
+kse3sk
+kse5sl
+kse3s4m
+kse5sp
+kse3st
+k4sf
+ks4kos
+k3slag
+ks3lo
+ks4mel
+k3sna
+ks3p
+ks4par
+ks4pel
+ks4pi
+ks5pl
+ks5pu
+ks3s4
+k2st
+ks3tal
+ks3tat
+ks5te.
+k4stek
+k4s3tj
+ks3tra
+kst5rekk
+k4s3tå
+ks5yng
+k3sø
+ks5øl.
+ks3å
+k4såp
+4k1t
+ktak4
+kt5app
+kt5avt
+kt5emn
+kte4n5
+kte5sm
+kte5st
+k4tom
+k4t5op
+k2t3r
+k5t4rak
+k3tre.
+kt4ry
+kt4rå
+kt5sla
+kts5v
+kt5t
+ktu3ar
+ktu4ren
+k2t5ut
+ktø4
+kt3øv
+k5tå
+1ku
+ku3bj
+ku2e
+ku5ere
+3kull
+3kult
+4kuly
+kum3sl
+kum5sv
+3kun
+kun4s4
+kunst3e
+kupo4
+4kurd
+3kurs
+4kurt
+k3urt.
+3kus
+4kusl
+ku3ø
+1k2v4
+k4vad
+3k4val
+k5vam
+k4veit
+k5vek
+2kverd
+k3vev
+k3vin.
+3kvinn
+kvit5o
+kvit3r
+4k3vå
+4kw
+kyd4r
+ky3k4
+ky5la
+ky5ru
+ky4st3
+3kæ
+2kø
+3kø.
+kø2r
+3køs
+kø4v
+k3øyd
+køy5er.
+k2å
+kåk5
+k5åpn
+kå3ri
+5la.
+la5br
+la4c
+la4f5e
+lag3re
+3lagss
+5lake
+la4k5i
+lak4l
+lak4sy
+la5kø
+2lal
+3lamp
+la4mu
+lands3l
+lane5s4
+lan4gr
+lang5s4
+lang3ø
+lan5ko
+lant4r
+4l5a4pa
+4l5a4pe
+lap4pr
+4la4p5r
+2larb
+la4sak
+la4sk
+las4sa
+la4st5j
+las4to
+la5te
+lat5orm
+la4tre
+lat4ro
+la3tå
+3lau
+4lavg
+l3avh
+4lavs
+2l1b
+l3c
+2ld
+l3da
+lder2s
+lde3s4
+ldisip5
+ldog4
+l4d5ok
+ldoms5m
+ld3ra
+ld3ri
+ld4s3a
+ldse4
+lds3i
+ld4ski
+ld3s4kr
+lds5ma
+ld3ste
+1le
+3le.
+le3au
+4leff
+5lege
+le5g4l
+5lei.
+lei4st
+2lek.
+le4kan
+le5k4no
+l2eks
+l4el
+4lemt
+le4nal
+5lene
+len4si
+4leple
+le3re
+4lern
+le5ru
+les5kjø
+le5sku
+le3sl
+les5m
+les5or
+le5s4po
+less4
+les5sv
+le3s4ta
+le5sti
+les3v
+let4r
+let5s
+le1u
+leu4t
+4lev.
+le3ve
+2l1f
+2l1g
+lg5ant
+l4gav
+lge3o
+lge4sv
+l4glo
+lg5sk
+lg5s4t
+2l5h
+lhygi5
+1li
+li5as
+li3b
+li4gan
+li4gre
+lig3s4
+lik3k4l
+likk5o
+li3k4l
+li3kv
+5lil
+li4m5å
+2lindu
+3ling
+lin4g5a
+link3l
+2linn
+3linp
+li3on
+lio5s
+2lip
+lire5
+li4ro
+li2st
+list3r
+li5te
+liti3a
+lit3r
+litt5erk
+livs5
+liv4se
+2l1j
+l3je
+ljes4t
+l5ji
+2l1k
+lk3arb
+lkk4
+lk4na
+lk4no
+lk4om
+lk4ovn
+lk3s4
+4l1l
+llag4
+l4l5aks
+l5l4an
+ll3d
+l4leu
+l3li
+lli2a
+lli4kv
+llk4
+llkor4
+llkort5
+ll4ok
+llo2m
+ll3ord
+ll5se
+ll3sk
+lls5kv
+ll5s4le
+ll5slø
+ll3sm
+ll3sn
+ll5su
+llsyre5
+ll3t
+llu4pi
+ll3ur
+ll5v
+l3lør.
+ll3øye
+2l1m
+lm5år
+2l1n
+1lo
+lo5ar
+lo4da
+lodd3s
+lo5dro
+lo4dy
+lok3s
+2lol
+lo5ls
+lo4min
+lomme3r
+2lomn
+lo3mo
+l3omso
+lom5sti
+lom5str
+lop2p3o
+loppof3
+2lor
+4lord
+4l3org
+5l4ort
+lo5rø
+lo4s3ol
+3lov.
+4lovn
+2l1p
+lps3k
+2l1r
+lre4d5a
+4l1s
+lsdi5p4
+ls5ele
+l5sen
+l5ses3
+lse4si
+lse4so
+l4sf
+l3si
+l2sk
+l3ska
+l4ske
+l3s4ki
+l3skr
+ls4ku
+l4skv
+l3skå
+l2sl
+ls3lo
+ls4løy
+l5s2mø
+l2sn
+l4sne
+ls4nel
+l2s3pa
+l5spek
+ls4po
+ls5pri
+ls3s2
+ls4t
+ls5tal.
+l2s5tin
+ls5tit
+l3sto
+l2su4
+ls3un
+l2sv
+ls3æ
+l2s3å
+2l1t
+l2tar
+l5tei
+l2top
+lt5ra.
+lt4rat
+lt3s4
+lt4s5v
+ltu2r3
+l4t5ø
+l3tå
+4lub
+3l4uf
+lu5in
+luk3r
+lung3r
+4luni
+2lur
+3l4ure
+luren3
+3luri
+lu5si
+lu5str
+4lutg
+4lutv
+3luv
+2lv
+l1va
+lv3eie
+l3vi
+lvi4e
+lv5n
+l5vor
+lv3s4
+lv5ul
+lv5un
+l1væ
+lv3å
+ly5a
+ly3e4
+ly3gl
+ly4na
+ly4nel
+ly3r
+ly2s3k
+lys3p
+lys3v
+ly5te
+1lø
+2løk
+3løk.
+lø4ku
+4løm
+løp2s
+2lør
+l5ørr
+3løs
+lø4s3k
+lø4su
+lø4sø
+4løt
+løt5j
+2løye
+4løyf
+4l5øyn
+2lå
+lå4gi
+lå3k
+5låm
+3lån
+4låp
+4lår
+l3åri
+lå5rin
+lår4s
+1lås.
+lå4s5te
+låte5
+lå3tø
+1ma
+ma3f
+ma3ie
+ma3is
+mak5r
+maksi3
+maks3v
+mak4ta
+ma5k4v
+4m5alde
+4malj
+ma4lo
+mal4tek
+mal5å
+m4an
+ma5nak
+m5anal
+3mann
+manns3l
+mann2st
+man4tr
+manu3
+ma4o
+2marb
+mar4sk
+mar5sl
+mas4ki
+ma4sko
+ma4sti
+ma3sø
+ma4tr
+mat3s4
+4m5avs
+ma3y
+2m1b
+mbio4t
+mb5ler
+mb3ros
+4mc
+2m3d2
+1m2e
+3meda
+me4d5ele
+5medl
+me4d3un
+me5il
+4mekk
+me2k3l
+me3kn
+2m3eks
+mel3dr
+me4l3ek
+mel5eng
+men4da
+me5no
+men3t4r
+me5o
+merans5
+me3rov
+3mes
+me3u
+2m1f
+mfo5re
+2m1g
+mgå4i
+2m1h
+1mi
+mi3ak
+m5i4do
+mid3s
+5mi5f
+mi2g
+mi5k4l
+mik5r
+mind3
+mini3sk
+min2s
+mi4o
+mi3p
+mis4la
+mis3s
+mi2s3t
+mi5te
+1mj
+4m5jer
+4m5jo
+2m3k4
+2m3l
+2m1m
+mma4l3
+mme4de
+mme4len
+mmen1s
+mme1s
+mmi3a
+mmi4g3
+mmon4s
+2m1n
+mn3am
+m5ni
+mni5t4
+mn4s
+1mo
+mod5r
+mod4s3
+mo3g
+2molj
+mo3no
+mo5ra
+mor4si
+mor4st
+mo3rø
+mo2s3k
+mot3a
+mo4tak
+mo4tar
+mo4til
+mo4tof
+mo4t3r
+2mo2v
+5mo3va
+mo3vere
+2m1p
+mpe3s
+m2pl
+mp5log
+mp3p4
+mp5re.
+mpri5o4
+m4p5rot
+m4ps
+2m5r
+2ms
+m3se
+m4sep
+m3sko.
+m1slag
+ms3lan
+m1s2n
+m1sp
+ms5par
+ms5pre
+ms3s2
+m4s5tal
+ms4tere
+m3s4to
+m3sva
+ms5væ
+m5sæ
+m3sø
+ms3å
+2m1t
+m4t5or
+mt2v
+mt3va
+m3tvin
+m3tå
+1mu
+mu5da5
+mu4e5r
+mull4
+mulls5
+mu5ni
+munn3s
+3mus
+mus3k
+muss5t
+2m1v
+m5w
+1my
+3myn
+my5on
+my3s4te
+5mæ
+1mø
+4møk
+møn2
+5mørk
+mør4kl
+mør3ø
+møy3
+1må
+må4len
+4mår
+må4re
+må5s
+1na
+nad5sk
+4n5adv
+n5ae
+na5f4r
+n5agi
+2nak
+5naka
+5nako
+na3k4r
+n5aks
+4n1akt
+na4l5ap
+n5a4lar
+nal5dra
+2nalge
+na4lom
+na4l5u
+na5lår
+na3me
+4nana
+5nanda
+n3ande
+2nap
+n3appar
+nap5s
+2narb
+4narv
+nas4t
+na4stø
+3nat
+na4tel
+na4tep
+4n3atl
+na3tre.
+nats4
+nat2tra
+4navg
+3navn
+2n1b
+nbo5b4
+n1c
+2n1d
+n3da
+nd3art
+nders4
+nde3s
+ndi3o
+ndisip5
+nd3j
+nd1op
+n3drag
+nd5ram
+nd3ri
+nd4ron
+nd5sat
+nd4s5end
+nds5kar
+nd3skr
+nd4skra
+nd3tva
+1ne
+nea4n
+ne5ar
+5neb
+4nedd
+n3eddi
+nedi4s
+ne4d5om
+n3eff
+4negg
+2neie
+ne3in
+ne5ist5
+nek4l
+n3enge
+neni5
+2neple.
+ne4p5re.
+ne4rei
+nero5b
+ne5rov
+ne3sn
+ne3s4p
+ne3sta
+nes5tek
+nes3ti.
+ne5s4v
+n3e4tas
+ne3t4r
+net3st
+2n1f4
+4ng
+ngat4
+ngelsk3
+nges4
+ng3g
+ngis4
+ng3jern
+ng5lad
+n2g3om
+ng5orm
+n2gr
+ng3ren
+n5grep
+ng5rot
+ng5ser
+ngs1k
+ng4ska
+ngs5na
+ng5øy
+2n1h
+1ni
+5ni.
+ni3ak
+nids4
+ni3en
+3nik
+ni5k4ro
+ni4ne4
+4ninf
+2n3inn
+4nins
+4n3int
+ni1o
+ni3or
+2nip
+nip3l
+nip4pes
+nis4a
+ni5sar
+nit3r
+nit4rer
+2niv
+niv5sk
+niv3st
+3nivå
+n5j
+2n1k
+n4k5au
+nke3s4
+n2ki
+n3kie
+nk1in
+nk3k4
+n2kl
+n5kled
+nk3ler
+n3kli
+nk5lok
+n3klu
+nk5st
+nk4tek
+n4k5vo
+n3kør
+2n5l
+2n1m
+2nn
+n4n5ad.
+nna4k
+nn5ake
+nn5ank
+n4nau
+n2nav
+nn3avl
+nn3d4
+n5ne.
+nneds5
+nne4ge
+nn5egg
+nn3eie
+nn4er
+nn3g4
+n5n4ing
+n3niv
+nn3k
+n4nof
+nno4mi
+n2n3or
+nn4sek
+nn5sov
+nn5s4po
+nn1st
+nn5ster
+nn3t4
+n2n5ut
+nnø4
+nn5øv
+nn5å4
+1no
+no5br
+4n3off
+2nok
+4n5oks
+no2ku
+2nolj
+no4mek
+4nomn
+nom3s4
+2nop
+no3ra
+2n3ord.
+nor3dav
+nord5o
+4n5org
+4nork
+nor4s
+no5ræ
+no5sk
+nos4p
+nos3t
+2n3ost.
+3not
+no5ul
+2nover
+3no3vere
+2n1p
+2n3r
+2ns
+n2sa
+n5sad
+n3sag
+ns5akt.
+n4s5alp
+n5sang
+n3sat
+n3sau
+ns3eie
+nse4le
+nsem4
+n3ser
+nse3s
+ns4inf
+n5skaf
+n3skal
+n5skau.
+ns5kno
+n5skog
+n1skr
+n3sku
+n5s4lam
+ns5len
+n3slip
+ns3lit
+ns3lu
+ns4mek
+n3snar
+n2so
+n5sod
+nso4k3
+n3sol
+ns3oms
+ns3op
+n3splin
+n5spå
+ns3s4
+ns4ten
+nste4v
+ns5ting
+nst3is
+nsu5b4o
+n4s5vak
+nsøk5i
+n3såp
+2n1t
+nta4la
+nt5amm
+n4tana
+n4t5ark
+nt5aut
+nt4e
+nteks5t
+nte4ra
+n4t5ess
+nti5k4l
+n2tr
+ntral3a
+n5tram
+n4t5ret
+nt3ri
+nt4riv
+nt4ro.
+nt3ru
+nt4ru.
+nt4rø
+nts4ki
+ntu5e4
+n4t5uk
+ntu5ra
+n4tøk
+1nu
+nu5et
+nuf4te
+nu3i4
+4nuly
+2n3un
+nu4ni
+nu4sels
+nus5ta
+nust5r
+2n5v4
+nve3s4
+nves3t
+nve4sti
+nve4s5to
+1ny
+3ny.
+ny3e4
+ny5k4l
+nyl5t
+4n5yn
+ny3or
+ny5sn
+ny3tr
+n3z
+1næ
+1nø
+3nød.
+nøds5ti
+nø5g4r
+nø3h
+4nøko
+nøl4o
+nø5p4
+nø5ra
+n5ørk
+nøs4l
+nø3s4m
+nøt5r
+3nøy
+nøye3r
+5nå.
+3nåd
+3nål
+n3ån
+4nå4p
+n1år
+n5å4s
+oa2
+oa5b
+oa3g
+oa5i4
+o5aj
+o1ak
+oa3l
+o3am
+o1an
+o3ap
+oa4s
+o3asi
+oa3t
+o3av
+3ob1j
+ob3l
+o4b5li
+ob4lo
+obog4
+o5bra
+ob5rer
+ob5ri
+o3ci
+o5cr
+o3da
+o5dam
+od3an
+od4dre
+o4d5ikt
+od5s4ka
+od5sn
+od3sp
+ods5te
+od5sti
+o3dy
+od5å4
+o3e4
+oe5su
+1offi
+of3ta
+og5ei
+o3gen
+ogg4r
+og2l
+og3le
+og2no
+og3red
+og3sk
+ogs5ka
+og3sn
+ogs4tj
+ogs4to
+o1h
+o1i2
+o4ia
+oi4d
+oi5e
+o4ig
+oi3le
+oi5ni
+oi5se
+o4it
+o1j
+o1ka
+o4kei
+o3ki
+o4kil
+o1kj
+o3kla
+ok3le
+ok3n
+o5kol
+okon3
+o1kr
+o5k4ro
+1oksid
+ok2sk
+okst3r
+ok4sv
+ok4søl
+o2k3v
+ok4vin
+o1l4a
+o4l5am
+ol5d4r
+4ole
+ol4fj
+4oli
+3olj
+ol2k3l
+4oll
+ol4l3un
+ol4m5ur
+ol4m5å
+o3lo
+o4loks
+olo3kv
+ol5sko
+ol3sv
+olt5o
+o1lu
+ol5ur
+ol5ve
+o1ly
+o3læ
+ol5år
+2om.
+4oma
+o5makt.
+om5akts
+om3ald
+om5am
+oma5sk
+3ombu
+2ome
+ome5d
+om5ekt
+om5eur
+om5je
+om3ju
+4omm
+omme2r
+1omn.
+om2na
+om3pli
+3områ
+oms4kra
+5om5su
+om3t
+o2mu
+om3ul
+om5ur
+omø4r
+om3øre
+2ona
+5onak
+on4al
+onas5t
+on3av
+on4dar
+ond4ri
+ond3si
+4one
+on4gj
+on3gla
+ong3ra
+on3gre
+4oni
+o4nid
+on3k
+onning3
+4ono
+onop5p4
+onse4n
+onsi5s
+ons3l
+onsø4
+on3t
+ontek4
+on4tri
+on5ur
+o4nut
+4onæ
+oo4mo
+o3o2p
+o1or
+2opa
+o1pi
+4opl
+o1pla
+op3li
+o3po
+2opp.
+3opph
+3oppl
+3op4p5r
+3oppt
+op4p3u
+2o1pr
+op5re.
+op4s5e
+opt3r
+o3py
+2or.
+o1ra
+o5ran.
+o3rat
+or3av
+or4dep
+3ordn
+ord3ra
+ords5la
+ord3st
+o3reb
+o3red
+o3ref
+o3reg
+o3reh
+o3rek
+o5reli
+or3els
+oren1
+o5renh
+or1eni
+or3enk
+o3re1s
+or3esc
+o3ret
+ore4tan
+1orga
+o5ri.
+1orien
+ori4mo
+or5inn
+or3int
+o4r5iv
+3orkes
+ork4l
+or4nal
+o3ro
+o5ron
+or3or
+o4rov
+or4s5ed
+ors4ka
+or3sl
+ors4t
+or4sæ
+or4tar
+or3tr
+ort3sø
+or1u2
+o3rub
+o5rum
+oru4t
+o5ryf
+or3yn
+oræ4
+orø4
+or3øk
+or3øn
+osi3e4
+osi4l5u
+4osk
+os2ka
+o1sko
+os5m
+os3n
+o3spe
+os3sa
+os4sko
+os4sp
+o2st
+ost5ad
+o3stas
+o3stat
+ost5eg
+os5ti.
+os3tit
+o4s4to
+ost3op
+ost5ran
+ost5røy
+ost5un
+os4ty
+o5sva
+o3sy
+o1ta
+o5te
+ote3i
+o4teld
+ote5o4
+otet3s4
+otia5
+ot5off
+oto3s
+o3tr
+ot3sa
+ot2sk
+ots4p
+ot3sv
+ot4tap
+ot4tar
+ott4s5tr
+otts3v
+otus5
+o1ty
+o5tø
+ou5b4
+4oun
+ou4v
+4ov.
+o1va
+o3ve.
+o3ved
+4o3vek
+o3vem
+o3ven
+ov4ende
+1o2ver
+2overe
+overi2
+o5vern
+o3vet
+o1vi
+1ovn.
+4ovo
+ov4se
+ov3sm
+o5væ
+o4we
+oya3m
+o3ø4
+o3å
+1pa
+4pad.
+4padg
+pa2g
+pag4h
+3pak
+pak5kr
+pa5la
+panikk3
+pan5k
+3pap
+pa5p4r
+2parb
+p4arbr
+part4s
+5pass
+pa3s4te
+pa3stil
+3pate
+patri3
+2p1b
+p3c
+4p3d2
+1pe
+pe3a
+pe5di
+pe5le
+pel5sl
+pel5sn
+3peng4
+5pens
+3pep
+pe5pl
+4perr.
+5pers
+pe5s4ko
+pe2tr
+pet3s4
+p3etse.
+2p1f
+4p3g4
+2p1h
+pi3e4r
+5pil.
+pin4g
+pinn3s
+pi5ok
+3pip
+pis3k
+pi2st
+pist3r
+3pit
+p3ja
+4pje
+pju4
+pjus5
+2p1k
+p2l
+pla4k5e
+3p4lam
+p3lar
+3plass
+4ple.
+3plek
+p3lem
+p3lep
+p3les
+p3let
+p3lev
+pli4d
+3plikt
+5pline
+3plinæ
+4plit
+3p4loi
+p5lot
+ply5d
+p3læ
+4p3lø
+p3lå
+2p1m
+2p1n
+1po
+po5dr
+pokt4
+pol5an
+5poli
+4polj
+pol2s
+polst3
+4pon.
+4por.
+4pore
+4porg
+por4tv
+po3rø
+po3sti
+pos4tis
+po3str
+4pov
+2pp
+ppe3st
+ppe3tr
+p1pi
+p4pid
+pp3l
+pp3r
+pp5ros
+pp1s
+pp3sa
+pp3t
+ppu4
+pp3y
+pp3ø
+p2r2
+3pref
+4prel
+pren4s
+3pres
+pres5te
+p4rim
+3prins
+p4rior
+3pris
+3p4ro
+5prod
+pro3g
+pro3sk
+pro3v
+prøs4
+5prøv
+4prå4
+pråk3
+2ps
+p2sa
+p4sar
+4p3se
+p4sed
+4psi
+p5sis
+p3sj
+ps3kv
+p5skå
+ps3le
+ps3lo
+ps5lus
+p3slå
+p3snø
+4p1st
+p3sta
+ps5tre
+p2sv
+p2sy
+3psyk
+4p1t
+p5te
+ptus5
+ptøy3
+1pu
+4pudy
+pu2e
+3pul
+3pum
+3punk
+5pus
+pus4h
+2p1v
+3pæ
+pø4bl
+pø4t
+4p3ø4v
+p5øy
+3på1
+4påd
+p5ål.
+4påp
+på3t
+1qu
+que5r
+3rabat
+ra4del
+3radio
+4ra3dr
+ra4dre
+rags4l
+ra5ins
+ra3isk
+3raka
+ra4k5au4
+5raki
+rak5se
+2rakti
+rak4v
+rak5ø
+3ral
+ra2la
+rala4n
+ra4l5en
+ram3b
+ra2mer
+ra4mu
+r4an.
+2rana
+r2anda
+rand3r
+2ranl
+ran4na
+rann1s4
+ran5sj
+ran3skr
+ran4tro
+ra5om
+ra3pl
+2rar
+r3arm
+ra3rø
+3rasit
+ras4pa
+ras5sl
+r5a4tel
+ra3t4r
+ra4tut
+5raud3
+ra3utg
+rau4to
+2rav
+rav3al
+ra3vi
+3ravn.
+ray5
+2r1b
+rbe4d
+r1c
+2rd
+r5dad
+rd3amer
+rd3ar
+rd3aus
+rden4s3
+rde5st
+r5det
+r3di
+rdisi5
+r3dj
+rdjup3
+rdju4pi
+rd5rei
+r5dris
+rd2st
+rd4va
+r3då
+1re
+re2ag
+re5am
+reb4
+redes5
+re3dr
+re4drep
+red4st
+4reff
+re2fl
+refo4r
+re4f5re
+4regg
+5reins
+3reis
+re4kle
+2reks
+rek4v
+4r1eld
+3rele
+4relem
+5relø
+4remb
+rem5ett
+ren4g3r
+re2ni
+ren4kl
+r3enl
+ren5ska
+ren4ski
+re3ol
+re5o2r
+rer5ap
+re5res
+r3ern
+re5sa
+4re2sc
+re5sku
+re3s4l
+re2spi
+2ress.
+res2s3k
+res2s5t
+res3tas
+res1tau
+res4ter
+re3s4ti
+5resu
+5retn
+re4t3ret
+re5tri
+re2t3ro
+2reur
+rev3ad
+re4v5inn
+3revis
+2r5evn
+2r1f
+rfe5b
+rfje4
+rfjet3
+2r1g
+r4gand
+rg3art
+rga4s
+rgefi5s
+rge4sv
+rg4he
+rg2l
+rg3s4t
+2r1h
+1ri
+ri1an.
+ri5ano
+ri3ant
+ri3at
+ri5av
+ri4dø
+ri5eli
+2ri1en
+ri4end
+ri3ete
+rif4l
+ri3fr
+rigs3
+rig4si
+ri3k4l
+ri5k4v
+ri3kå
+ri5lø
+4rimm
+ri4mor
+4rind
+rini5
+2rinn
+2r5inst
+4rint
+ri3om
+ri3o4s
+rio5sk
+ri3o4t
+ri3sko
+ri3spa
+ri3t4r
+ri4van
+ri4vis
+4rivs
+r1j
+2r1k
+rka3d
+rk5akt
+rkap4
+r4k5ei
+rk3k4
+rk5leg
+rkob5
+rko4pr
+rk5red
+rk3skr
+rk5s4p
+rk3st
+rk4s3ti
+rkt4
+r3kø
+2r3l2
+rlog4
+rlo5v
+2r1m
+r4m5ap
+r4m3endr
+r4m3je
+rm3p
+rm4sj
+rm3sk
+rm5st
+rm5svi
+rmål4
+4r1n
+r4n3ald
+r4nart
+rn5d
+rne3p
+rnes4m
+rn3g
+r5ni
+r4nom
+rn3sk
+rnø4f5
+rn4å
+rob4
+ro1bl
+4robr
+r5obs
+3roc
+ro5dr
+ro4f5l
+ro5fr
+3rofy
+roge4s
+ro3gl
+4roke
+3rokj
+ro3kl
+2rok5s
+ro4leu
+4rolj
+4romb
+3rome
+ro4mj
+4romn
+ro5mo
+4romp
+4r5omv
+2ronn
+r3onn.
+3rono
+ron3s
+4ropp
+ropp2s
+rop2s
+2ror
+r3ord.
+3rose.
+ros5l
+ro3sta
+4roto
+roy4
+roy5e
+2r1p
+rp4l
+r5po
+r1r
+rr3d
+r3re
+rre5ster
+rrie4
+rri5eri
+r3ro
+rr3s
+r3ru
+2r1s
+r3sak
+rs3att
+rsbe5i
+r3se
+rs5eld
+rse3s
+rsjo4f
+rsj5or
+rsjø5
+r2sk
+r3s2ka
+r4s5ke
+r3skik
+rs5kit
+r3skj
+rs4klæ
+r3sko
+r3skr
+r4skro
+r3sku
+r3skå
+r2sl
+rs4let
+r3slå
+rs2n
+r3s4po
+rs3s
+rs5tal
+r4stap
+r4ste.
+r4step
+rs4tig
+r3sto
+r4s5tro
+rs3tun
+rs5un
+rs2v
+rs5van
+r4svek
+r5s4y
+rs5æt
+4r1t
+rt5art
+rta5s4
+r5te
+rte5inf
+r4tind
+r4t5ord
+r4tov
+r4treg
+rt5rot
+rt5sa
+rt4sid
+rt4skr
+rt3s4mu
+rt4su
+r4t3un.
+rt5und
+r3t2vi
+rt5ød
+r3tå
+rt5år.
+r4ub
+ru5i4d
+ru3in
+ru5kr
+4ruli
+5rulk.
+r5ulke
+r3ulv
+r4um
+rumf5
+run3a
+3runde.
+ru2r
+rur5s
+rus4pen
+ru4st5r
+ru4stø
+2rut
+rut3a4n
+2r1v
+r5va
+rvei5
+r3vj
+r3v2r
+rv2s
+rv5st
+rx3
+ry5er
+4rym
+ryn5g
+ry5ot
+ry4p5i
+r5æt
+rø4da
+rød3r
+rød3st
+røk5r
+4røl
+rø4m
+rønn3
+rø5si
+rø4ta
+rø3vi
+rågå4
+råka4
+råk3l
+4rål
+r1å4r
+råse5i
+rå5te
+rå3tr
+3råv
+1sa
+3sa.
+sa4bl
+2s1adv
+5safe
+sa4f3r
+s3afte
+s3a4gi
+4s3a4g3r
+sag3s4
+sa2k
+3sak.
+s3aka
+3sake
+sak3er
+sak5es
+sak3i
+4s3aksj
+2sakt
+s3akti
+3sala
+sa4lar
+s1ald
+3sale
+3salg.
+sal3s4
+3salt
+3salv
+3sam
+sa4mat
+sa2mor
+2s5a2na
+s3angs
+4s3anl
+s3ansi
+san3skr
+s3anten
+4s1ap
+sa4po
+2s1ar
+3sar.
+4s3arb
+sa4rev
+s3art
+3sas
+4s3atl
+sat4r
+sa4t5ra
+sa5tre
+3sats
+s3atte
+2s1av
+s3avs
+4s5b
+sbond4
+1sc4
+4sca
+sch2
+s4co2
+4s3d2
+1se
+3se.
+se5at.
+3seb
+s3ed.
+se3dr
+sef4
+se4gen
+s3egg.
+se4gl
+2seie
+s3eie.
+4s5eit
+sek4l
+se3kne
+se4knu
+se2k3r
+se3kro
+4seksp
+seks3t
+sek4tet
+3sel
+sel5at
+se4lite
+sel2s
+sels5ta
+sel2v
+sel4v3e
+s4en.
+4s3endr
+3s4ent
+2seple
+ser3ap
+se3re
+2serkl
+se4ros
+ser4tv
+se5rø
+se2s
+ses5il
+ses5sm
+ses4tas
+ses4tel
+se3sy
+3s2et
+se3t4r
+set4tø
+se3tv
+se3u
+2s1evn
+seøy5
+2s1f4
+3sfæ
+4s3g2
+sgu2
+2s1h
+5s4ha.
+sho2r
+1si
+si1al
+3sid
+4sidr
+si1en
+si5eu
+si4f3l
+sif3r
+3sig
+si5gl
+sik4kl
+sik5ko
+sikts3
+4sillu
+5sina
+4sindu
+2sinf
+s3innl
+4sinnt
+si4op
+3sir
+sise5
+sis4t
+si1ste
+sis5tem
+si5sø
+4s5itl
+si3tr
+siv5a
+si4val
+siv3s
+si4v5u
+5siz
+1sj
+2sj.
+4sjag
+4sjb
+3sjef
+4s5jern
+sje3s4
+4sjf
+4sjg
+sj3ia
+5sjik
+4sjk
+4sjl
+2sjm
+4sjom
+sjon4
+2sjor
+s3jord.
+4sjou
+2sjp
+2sjt
+3sjuk
+2s3jus
+sjø2l
+sjø1r
+sjø3s4
+5sjå
+4sk.
+1ska
+4ska.
+4skalv
+2skam
+2skan
+3skap
+5skap.
+4skapi
+4s5kapp
+sk5arb
+4skart
+2skas
+2s3ke
+3s4kei
+ske3s
+1sk4i
+3skif
+ski5kr
+3skilt
+ski4na
+3skinn
+ski4no
+3skip
+2skir
+3skiv
+1skj
+3skjeg
+2skjens
+2skjole
+3skjor
+4skjærl
+skk4
+4s3kl
+sk4le
+sk5lit
+4skn
+s3kna
+s2ko
+3skok
+3skol
+1skole
+4skom
+4skon
+5skorpe
+3skot
+s3kov
+s1kra
+2skraf
+4s4krep
+4s3kret
+3skrif
+4skrig
+s3kro
+4skruk
+s3kry
+4sks4
+4skt
+s2ku
+3s4kud
+4skun
+2s2kv
+3skvet
+s3kvi
+s3kvo
+3sky
+sky3d
+3skøy
+4s3kåp
+1skår
+s1l
+s2la
+sla4gi
+s3land
+s3las
+s3lat
+3slave
+4sle.
+s2lede.
+sle4i
+s2lek
+s2leng
+s2lep
+s4likk
+4slin
+slin4t5
+3s4lir
+4slis
+s2lit
+3slite
+3slitt.
+s2lo
+s3los
+slott2
+s3lov
+s2lu
+4s3lue
+5slup
+s4lut
+4sluv
+s2lyn
+3slyng
+4s5læ
+4sløs
+3s4lå.
+s3lås
+3slåt
+2s1m4
+s2mak
+3smak.
+4sman
+sma5t4r
+s2med
+s4med.
+3smell.
+smete5
+smeteo4
+5s4mi.
+s4mie
+3s2mug
+s2my
+3smyk
+s2mør
+3smør.
+3s4må.
+små3r
+s1n4
+s2na
+s5nad
+4snat
+4s3nav
+4s5ne.
+4sneb
+sned5s
+s2negl
+5s4nek
+s5nem
+s4nil
+4s3nin
+sning4
+1s4nip
+3s4nit
+s3niv
+s2no
+s2nø
+snø5dr
+snø3kl
+snø3l
+3snør
+snø1s
+snø5vi
+s3nå
+1so
+3s4og
+so5gl
+5soi
+3s4ok
+sokk4
+4s5oks
+3sol.
+3sold
+so5li
+2solj
+sol3s
+sol5ø
+3s4om.
+s3omf
+3somh
+3somm
+4somn
+2s1omr
+s3omt
+3son
+son4sk
+so2p
+4s5ope
+3sopp.
+s3oppg
+sop3r
+3sor.
+2s1ord
+5sore
+4sork
+3sort
+sos5k
+3sot
+2so2v
+3sove.
+5sovek
+s2p2
+2sp.
+5spad
+spa3g
+3spann
+3s4pat.
+spe4a5
+3spei
+1s4pell
+4speng
+2s3per
+3sperr
+s4perre
+1spi
+s4pio
+2spip
+2s3p4l
+2s3po
+3spor.
+s4pora
+4s5pos
+5spra
+2spro
+3spru
+3språ
+s3ps
+sp5st
+4spul
+4spum
+3s4pur
+3s4py
+4s5pyr
+3spø
+4s3r
+srac4
+srack5
+4s1s
+ss2a
+s4s5ald
+s3se
+sse5in
+ssel3s
+s5sem
+ss4end
+s4s3enk
+s4sepl
+s5ser
+sse3s
+s5s4ing
+ssive4
+s5s4kjæ
+s4s3kå
+s2sl
+ss4let
+ss3li
+ssmosa5
+ss2n
+ss5oms
+ss5pre
+ss4t
+ss5tet
+ss5tit
+ss5tro
+ss5tru
+ss5try
+ss5tub
+s4s5ul
+s5sur
+ssu4t
+s2sv
+s3sy
+s2t
+4st.
+2sta.
+3stake.
+1stan
+3stang
+s5tank
+2stann
+st5antr
+1stat
+1stav
+s4tav.
+4stavl
+4stb
+2std
+ste3am
+1s4ted
+3sted.
+2steg
+s4teg.
+1stei
+3stein
+s4tek.
+3s4teke
+s4tekt
+3stemm
+3stemn
+3stemt
+3s4teng
+ste4n3om
+3step.
+1sterk.
+4stert
+stes5ta
+s4teu
+3stev.
+4stg
+2sth
+4stia
+4stid
+3stift
+4stig.
+1stik
+2s5tike
+3s4tikk
+4s3tiko
+2s3tiku
+3s4til.
+3stilk
+2stils
+st3ind
+4stinn
+1stjer
+4stk
+2stl
+4st5n
+4sto.
+3stof
+4s5tog
+3stokk
+st5oms
+4s5ton
+sto4p
+4s4t3ord
+sto4ret
+s5tos
+3stove.
+1str
+4strav
+2stre.
+st5rekl
+s3trel
+s4trik
+4stroe
+st3rom
+5strup
+2st3rus
+s5tryg
+3s4trøm
+st5røn
+4st3s4
+5s4tud
+3stue
+stue3re
+3stund
+4stur
+5s4ture
+4stus.
+2stv
+3sty
+5styk
+s3typ
+s4tyr
+4stæ4
+3stø
+stør4k5
+størs5
+4støs
+1stå
+5s4tåe
+3stål
+2s5tår
+1su
+3sua
+3su2b3
+3suc
+su4f
+3sug
+su2k
+4s3uke
+3sukk
+3sum
+4s3und
+su4nen
+3sup
+sup3r
+s5urt
+3sus
+2s1ut
+s4ut.
+sv2
+3s4vane
+svar2s
+s5ved
+4s5veg
+svek4l
+sver3a
+sverd3s
+3sverm
+s2verte
+s2vet
+3s2veve
+s4vi.
+3svie
+s3vil
+4svir
+s1vis
+s5vit
+3s4vor
+3svu
+3s4vø
+s3vå
+1sy
+sy2d
+sy5da
+sy3er
+sy4kog
+5sym
+3s4yn
+3syre
+sy5ri
+4s1yrk
+3sys
+4s3yt
+2sytr
+sæ2r3
+sære4
+sæt5r
+4søko
+3s4øl
+s3øns
+1sør3
+sø4ret
+sør4i
+s1ø2v
+2søy
+s3øye
+3søyl
+3så.
+5såd
+3sål
+4s3ån
+så4r
+s3åre
+s5ås
+3ta.
+ta5b4r
+5tadra
+tad4s
+3taf
+4t3afri
+ta3gr
+ta5is
+ta4ka
+4take.
+taks5ei
+t3aksj
+tak3sk
+2taktig
+3tal.
+3tale
+tali5e4
+3tals
+3tame
+4tamm
+tam4o
+5tamt
+tand4a
+4tangr
+tang3s
+ta4nin
+3tank
+t3anl
+5tann
+tan4nem
+t5anten
+3tantis
+4t3anv
+3tap.
+5tapi
+2tarb
+3tard
+ta5ru
+t3a4sia
+ta3sn
+tas4p
+ta4sta
+5tatar
+2tatl
+5tato
+tat2s3
+tat4sa
+tat4sk
+t5attr
+5tau.
+ta3un
+3taur
+tau3st
+4taut
+4t3avd
+2tavg
+3tavind
+3tavl
+tav5o
+ta4vor
+4tavs
+4tavt
+3tavæ
+tay3
+4t1b
+4tc
+t3che
+2t3d4
+3te
+5tea
+5tebo
+5tedag
+te4deg
+5tedir
+5te3d2r
+5tedu
+5tedy
+5tedø
+5tefa
+5tefo
+4t3egd
+4tegg
+teg4l
+5tegn
+4tei
+5tei.
+5teig
+tein3a
+5teinn
+5teip
+te1is
+5tekn
+te4knu
+4teksp
+teks4t
+tek3sti
+tek3stu
+tek5stur
+tekt2s3
+t3eld.
+te3lem
+4tella
+tel5sv
+4temm
+4temn
+5temo
+temp3l
+4temt
+temøn5
+te4n5an
+5teno
+ten5t4r
+5teo
+4tep.
+tepri3
+teprio4
+5tera
+te2r3en
+4terk.
+ter4kv
+ter5r
+ter3sm
+5tert
+4t3eske
+te5s4ko
+te5sku
+tes4mo
+tes5or
+te3s4p
+te2sta
+tes5tant
+tes3tas
+te3stil
+tes4to
+te3s4v
+te4tend
+4te4ter
+5teun
+te3us
+5teut
+4tev.
+5tevi
+4tevn
+4t1f
+2t1g2
+4t1h4
+than4s3
+thun4
+1ti
+5tia
+tiat4r
+5tiby
+5tid
+3ti1e
+tift4
+3tig.
+ti4gru
+tik4ka
+tik4kl
+tikk3o
+ti3k4r
+tik3v
+3tilb
+tild4
+t3ild.
+ti4lei
+3tilf
+5tilfe
+4till.
+3tilla
+3tilleg
+5tils4
+3tilta
+5tima
+3time
+3ti3na
+4tinf
+2t3inn
+tinu5a4
+tinu4i5
+ti4o
+ti5or
+ti5os
+ti3pl
+5tir
+3tis
+ti5s4ta
+tis4to
+5titur
+tium4
+tiv3s
+3tiå
+2t1ja
+4t5jeg
+3tjen
+tjen2s
+tjer4t
+t3jev
+2t3jo
+3tju
+t5jun
+4t3k2
+4t5l
+2t1m
+tma5t4r
+2t1n
+t3ni
+1to
+3to.
+to3ar
+4t5obl
+3tog
+tog4r
+t3ogv
+tokk5a
+tok4kan
+to3kl
+5toli
+4tolj
+3tom.
+5toma
+to4mal
+to4m5e4n
+4tomf
+tom5s4
+3ton
+tong3r
+tons4
+3tor
+to3rar
+to4ras
+t5orde
+to4r5ek
+tore4t
+tor5ete
+5toris
+tor5k4
+4torm.
+5torra
+tors4l
+5torv
+to3ry
+to5rø
+to3ska
+tos4t
+2tost.
+to3sta
+to3str
+to3ut
+4t1p
+tpa4r
+tpres4t
+tpre5sta
+t2r2
+5trai
+3trakta
+t4rane
+3trao
+3trap
+t3rate.
+3trav
+4travn
+t5redd
+t3reg
+5treka
+3trem
+tre3ni
+t3rens
+tre3sp
+tre3st
+4treu
+tre5v4r
+2tri
+4trid
+t3rik.
+3trill
+4tring
+3trinn
+3tro.
+3troe
+t3rog
+t3role
+3troll.
+4t5rom.
+t3rona
+t3ropo
+3tropp
+tro3v
+3tru.
+2t3rud
+t4rue
+t3rug
+t4ruk
+4trun
+t3ru3r
+4trut
+3trøst
+3trøye
+3tråd
+4ts
+t2sa
+tsa4f
+tsak3
+t3sang
+tsbe5i
+5tsef
+ts5eid
+t4s5enk
+ts3erk
+t3sil
+t4sj5is
+t4sjo
+t1sk
+ts4ke
+ts3kv
+tsky4e
+t5slad
+ts4lik
+t3slu
+ts3ma
+ts5me
+ts2n
+ts3na
+t1spe
+t1st
+ts3tap
+ts4te
+t3sted
+t3s4to
+t3stri
+t5stu
+ts5ur
+ts3vo
+ts5væ
+t3sy
+t4sæ
+t5søm
+4t1t
+tt5arm
+t4t5as
+t5te5i
+t4tek5s
+tten5s
+t4tins
+t2tol
+tt5ram
+tt4re
+tt3ring
+tt5riu
+tt5rom
+tt5rå.
+tt5sei
+tt5sn
+tt3spr
+tts4tj
+tts4ty
+tt3så
+tt5t
+tt3v
+t4t3y4t
+ttør3
+tt5øri
+tt3øye
+tt1å4
+1tu
+tu3e4t
+5tuf
+4t5ugl
+tu3in
+3tukt
+3tula
+5tule
+t3ull.
+3tun.
+tun5d
+tun3gr
+5tunn
+3tur
+5turb
+3tus.
+tusi3
+tu4s5o
+4tutg
+2t1v
+tve5d
+tvei5e
+t3vin.
+t2ving
+3t2vis5t
+4t3w
+ty4la
+5type
+5tyra
+tyr3st
+3tyv
+2tz
+1tæ
+4tød
+t3øks
+tø2r
+t3øre
+5tørk
+5tøs
+4tøt
+4tøv
+2tå
+tå3k
+t3ån
+1tår
+tåte5
+u3ac
+u3ak
+u3al.
+u3ald
+u5a4le
+u5alf
+u5all
+u5alm
+u3a4lo
+u5a4lu
+u1a2n
+ua5no
+u3ar.
+u3ay
+ub4br
+ub3l
+ub4lo
+u3br
+u3ce
+u3ch
+u3ci
+uda5i
+ud3dh
+uddom3
+ud4då
+ud4en
+ude3s
+uds5i
+ud4sja
+ud4sl
+uds5te
+5u2dy
+u4døy
+u1el
+u3els
+u1en
+uend5r
+u1e2r
+u4eren
+ue3ri
+u4ern
+ue5ro
+uer4r
+ue3sn
+ues4t
+ue5u
+u5ez
+uf4l
+ufor5d4
+uft3a
+ug4a
+ugj5end
+ug5la
+ugo3
+ug5se
+ug3sk
+ug3sv
+u5gæ
+u1h
+ui2m
+uis5a
+u3isk
+u3ism
+u3ist
+u3itt
+uit4to
+u1j
+u5ka
+u5ket
+u1ki
+u3kj
+uk3l
+uk4s5l
+uk4st
+ukt4r
+u2ku
+uk3ur
+u4kv
+u1la
+ul4d5o
+ul4dø
+u5li
+ul4k5l
+ul4lov
+ull5sv
+uls5k
+ul2st
+uls5ti
+uls3v
+ult5o
+ul2t3r
+u1lu
+1uly
+u1læ
+u3lø
+uma2ne
+um4fes
+ummi3
+um3pla
+um4spa
+umt4
+4una
+u5na.
+under3e
+3underv
+und3st
+4une
+un4g5j
+ung3l
+un4go
+ung3si
+u2nion
+un5nak
+unns5la
+un3or
+unst3a
+uns5tig
+un5sv
+un3tr
+un4tri
+u4n5øy
+u3nå
+uo2
+u5ol.
+u3op
+u5or.
+u3o4r3e
+uo3ri
+u3ort
+u3o4s
+uove4
+uover3
+u3pi
+up3li
+up5lo
+up5pr
+up3re
+up5sa
+up4sk
+u3pø
+u4på
+4u1ra
+ur5ade
+ur5akk
+ural5a
+u4ralu
+ura3s4
+ur5avs
+u3ref
+u3r4el
+u3res
+u3rev
+ur2gl
+4uri
+ur3inn
+uri4sp
+uri4st
+ur4kak
+ur4kle
+u1ro
+ur5oks
+ur3opp
+u3ror
+u5rot
+ur5r
+ur3sk
+ur5tv
+u1ru
+uru3s
+u3ry
+ur5øy
+u2sa
+u5saf
+us5and
+u3sat
+us4er
+use5s
+us5i4m
+us4is
+u3sit
+u4sja
+u4sji
+u2sk
+us5kå
+us3la
+us5ly
+u4s5ok
+us4o3v
+us3p
+uss3m
+us4som
+uss4p
+us2st
+us5tak
+u3stas
+ust5ett
+us3ti
+us4tig
+us4tik
+us4tr
+u3st4ra
+us5tøm
+u2su
+u4s3un
+us1v
+u2sy
+u1ta
+ut3adr
+utak4l
+ut3arm
+ut5art
+ut5aus
+3utb
+1utd
+ute3g
+1utg
+uti4v3
+u4t3j
+3utmå
+ut5oms
+ut3r
+ut4ros
+3utru
+ut4rusk
+ut3s4
+1utst
+utt3s4
+1utv
+u5ty
+u3tør
+uu4
+uum5
+uumi4
+u3un
+u1v
+u4vø
+ux3
+uya5ne
+u5yu
+uø4
+uøn4
+u3å
+3va.
+vad1r
+va2f
+va5fr
+vak3s
+4v5akti
+vak4to
+3valg
+va5lor
+4valv
+va4nar
+2vang
+3vann
+van5sl
+van5sm
+va4pe
+va5po
+va5ra3
+2varb
+3varm
+vars5v
+vas2
+va2sk
+vas3ki
+vass3
+va4st
+3vat
+vat3ei
+va4t5el
+4vav
+2v1b
+2v3d2
+vdisip5
+vd4ø
+1ve
+ve5a4
+ve5dis
+ve4då4
+vefe3i
+ve4gi
+ve4gre
+3vei.
+vei4ka
+4vein
+vei5tr
+5veke
+veks4tr
+vel5as
+vel4d5in
+vel3dr
+ve5los
+vels4
+vel3sm
+vel5sp
+vel4ste
+vel3tr
+ve2lu
+vel3ø4v
+4vendr
+ven5s4t
+vent4s
+ve3o4
+3vep
+vepe5
+ve2r1a
+ve4ral
+3verd
+ve5res
+ve2ril
+ve4rim
+2verm
+ve4rob
+vers3m
+3ves
+ve3s4m
+ve2st
+ve3sv
+ve5te
+vete2s3
+ve3u
+2v1f4
+vfab4
+2v1g2
+2v1h
+vid5s4t
+5vie.
+vi5em
+vi5en
+vi4e5ra
+vi3et
+5vif
+5viki
+vi3kro
+vil5a
+vi4lag
+vi4lin
+vi4lo
+vil4sti
+vil4t5r
+vindus3
+3vink
+vin4kl
+vinte2
+vi3ot
+3vir
+vi4str
+vit5re.
+vi4tun
+3viv
+2vj
+v3ja
+v1je
+4v3jo
+2v3k4
+2v1l2
+vlat4
+vls5l
+vl5v
+v3lå
+2v1m
+vmøn5
+vmønst4
+2v1n
+vns4kr
+vn3sp
+vn5s4t
+vo5a
+vo3b
+vo4g
+vog5e
+vog3r
+1vok
+3vol
+v1op2
+vopp3
+voppof3
+vor2s5
+3vos
+2v1p4
+2v1r
+vra3s4
+vres4
+2v1s2
+vse4l
+vs3er
+vs5ev
+v4s3f
+vs3h
+v3sj
+vs4ke
+v5s4li
+v4s3nø
+vs5od
+vs3op
+v3s4p
+vs3s
+vs4t
+v3sta
+v3sto
+v2sv
+v4s3va
+vs3vi
+vs3øy
+2v1t
+v3tr
+v5tv
+5vud
+v3ut
+2v1v
+3vy
+væ5ra
+5væs
+v5ø4d
+4v3ø4v
+2v3øy
+v4åk
+våpen3
+vår3s
+vår4sa
+v4å4t3
+våte4
+1wa
+wa5is
+wale4
+3we
+we4e
+w5h
+whi4
+1wi2
+wi5er
+wi3ni
+wos4
+w4r
+3wur
+w5y
+x3e
+x5t
+y1a2
+y4ab
+y4af
+ya4l
+yan5a4
+ya5no
+ya3s
+ya5to
+y1b
+yb3ri
+yce5
+y5ci
+yc5r
+4yd
+y5dar
+y5de.
+yde3r
+yd5et
+y2do
+yd1r
+yd3ri
+y1els
+y3en.
+y3ende
+yen5sv
+ye2r
+yer5i
+y1e4t
+y1f
+yf4l
+yg4go
+yg4g5r
+yg4lo
+yg3ro
+y1h
+y1i
+y5j
+4yk
+y3ka
+y4kano
+yka3p4
+y1ki
+y3kj
+yk4kab
+yk4k3an
+ykk3sv
+yk3l
+yk4læ
+y4komn
+y3k4r
+yk3s
+y5kø
+y1la
+yl3al
+yla4m
+yl4dø
+yle4t
+ylkes5
+yl4s5t
+yl4tra
+yl4t5ret
+y5lu
+y3læ
+ymbi3
+ynas5
+yn3av
+ynd5r
+yn5eld
+ynns4
+y3no
+yn2sk
+yns3v
+yn4t5u
+y3ou
+yo5y
+ype5ra
+ype3s
+y1pi
+y1pla
+y4p5r
+y5psy
+y5pø
+y1ra
+y4r5ap
+yr5av
+yr4d5ra
+yre3s4
+yrke2s3
+y1ro
+yr5oks
+yr2s
+yr5sn
+yr5sp
+yr3sti
+yr5ul
+y3ry
+y1rå3
+yse3s
+y2sj
+y5sje
+y3skr
+ys3le
+ys4nu
+y4s5or
+ys4s5il
+ys4s3p
+ys5sv
+y1sta
+ys3ti
+yst3re.
+yst5æ
+ys5øm
+ys5år
+y3ta
+yt3j
+yton3
+yt3r
+yt4ry
+yt4rå
+yts5p
+yt5s4å
+yt5te
+ytt5sl
+y5tø
+y5u
+yu4r
+y1v
+y5å
+3za
+1ze2
+ze5l
+zen5
+ze3r
+1zi
+z5l
+1zo
+zo3f
+4zor
+3zu
+z5v
+3zy
+z4zi4f
+æd5s
+æk3l
+ær3a
+ærd5r
+ære4so
+ære4sp
+æring4
+ær3o
+ær4sel
+ærs5il
+ær3sk
+ær5sl
+ær4sn
+ær3so
+ær3u
+ærø4
+ær5øl
+ær3øv
+æ3røy
+ærå4
+æs3t
+æ5vi
+ø3a4
+ø1b
+4ø5c
+ød5al
+ød5ra
+ød5sla
+ød3sp
+øds5å
+ød5t4
+ø2d5u
+ø4d5ø
+ø3e
+øffe4
+øf4l
+ø5fr
+ø2g
+ø3ga
+ø3ge
+øg4na
+øg3r
+øg4ra
+øg3s4
+ø3i
+ø5j
+ø3ka
+ø3kj
+økk3r
+økk5s
+øk3l
+øk4lis
+øk4lo
+1ø4ko
+3øks.
+øk4seg
+øk3st
+øla4
+øl3ap
+øl5as
+øl3d
+ø2lei
+ølei4es
+ø5liv
+4øll
+ø2l1o2
+øl3s
+øls4k
+øl3t
+ølø4d
+ø5l4øv
+øm4s3in
+øm3ut
+øn5al
+øn4k5å
+øn5nav
+ønn2s
+ønns5l
+ønns3t
+øn3sa
+øn3sp
+ønst3r
+øn2t3
+ø3or
+ø3pi
+øp3l
+øps5la
+øps5v
+ø5pø
+ør5ar
+ørd5r
+ør5ekt
+øre3s
+øre5tr
+øri4
+øring4
+ørings5
+ø5ris
+ørk4l
+ør4kø
+ør4r5is
+ør2s
+ør5sa
+ør4skr
+ør3so
+ør4sp
+ør5sta
+ør5sti
+ørs3tr
+ørø4s
+øs3l
+øs3s
+øste4n
+øst5ett
+øs3ti
+øs4to
+øst5ro
+øs5un
+øs5ø4r
+4øt
+øt5a
+ø4t3o
+øtt3s
+ø5ty
+ø3u
+ø3va
+øve3s
+øv5inn
+4øvn
+ø5vo
+ø3væ
+ø5ø
+å5a
+å1b
+åbe5r
+åde5i
+å3d4j
+å3dr
+åd4s5a
+åd5sla
+åd5sna
+å3e2
+å1f
+åfab4
+åg3l
+åg3re
+åg3s4
+å1h
+å3i
+å3j
+å3kal
+3åker
+åke4r5e
+åke3s
+å3kj
+åk3vi
+4ål
+å4l5em
+ål5enh
+ål3or
+ål4san
+åls3n
+åls5te
+åls5tj
+å5lu
+å3ly
+ål5ø4r
+ål5øy
+å5lå
+å1m
+ånd4se
+ånd5sla
+ånes4
+ån5sø
+å3o
+å1p
+åpe2n
+1åpn
+åps3
+å2r
+å3ra
+år5an
+å3re
+åre5s4
+å3ris
+år3k
+4årn3
+år2nu
+1år2s
+års3af
+år4sku
+år5str
+års3v
+år5så
+å3ru
+år5yr
+å5rø
+å1s
+åse3s4
+ås2n
+ås4s5k
+ås4t
+ås5tak
+å3ta
+åtes4t
+åt4t5o
+å5u
+å1v
+å3ø
diff --git a/hyph/hyph/polish.lh b/hyph/hyph/polish.lh
new file mode 100644
index 0000000..ac08ff8
--- /dev/null
+++ b/hyph/hyph/polish.lh
@@ -0,0 +1,4181 @@
+Lout hyphenation information
+
+% COPYRIGHT (C) 2001 Jacek Naglak
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either Version 3, or (at your option)
+% any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program; if not, write to the Free Software
+% Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA
+
+% This is a Polish hyphenation file - converted from a TeX hyphenation file
+% plhyph.tex by Jacek Naglak <nag@promail.pl> on 3 February 2001
+% and put under the GNU license with permission of the original authors.
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either Version 2, or (at your option)
+% any later version.
+%
+% The following comments came with the file:
+%
+% This is PLHYPH.TeX - the Polish hyphenation patterns
+% version 3.0a, Wednesday, May 17th, 1995
+% to be used for the inclusion of Polish hyphenation patterns in any format,
+% not necessarily in the MeX or LaMeX ones. The patterns are exactly
+% the same as in the version 3.0 being the part of the MeX package,
+% only the surrounding of the \pattern command is changed. The authors
+% claim the upward compatibility, i.e., the version 3.0a can also be used
+% with the MeX or LaMeX formats.
+%
+% The history of development of the Polish hyphenation patterns:
+%
+% The first version of the patterns was developed
+% by Hanna Ko\l{}odziejska (1987).
+%
+% The adaptation to the LeX format (see below) and extensive modification
+% were done by Bogus\l{}aw Jackowski & Marek Ry\'cko (1987--1989).
+%
+% The hyphenation rules were further improved and adapted to the
+% TeX 3.x requirements by Hanna Ko\l{}odziejska (1991).
+%
+% Lone-standing version (3.0a) of patterns was prepared (under pressure
+% from LaTeX users) by Bogus\l{}aw Jackowski and Marek Ry\'cko, following
+% Mariusz Olko's suggestions, 1995.
+%
+% The LeX format mentioned above was the first version of the adaptation
+% of TeX to the Polish language. The next version is called MeX.
+%
+% This macro file belongs to the public domain
+% under the conditions specified by the author of TeX:
+%
+% ``Macro files like PLAIN.TEX should not be changed in any way,
+% except with respect to preloaded fonts,
+% unless the changes are authorized by the authors of the macros.''
+%
+% Donald E. Knuth
+%
+% For details see MEXINFO.ENG or MEXINFO.POL in the MeX package.
+
+Classes:
+@!$%^&*()_-+=~`{[}]:;'|<,.>?/0123456789
+aA
+bB
+cC
+dD
+eE
+fF
+gG
+hH
+iI
+jJ
+kK
+lL
+mM
+nN
+oO
+pP
+qQ
+rR
+sS
+tT
+uU
+vV
+wW
+xX
+yY
+zZ
+±¡
+æÆ
+êÊ
+³£
+ñÑ
+óÓ
+¶¦
+¼¬
+¿¯
+
+Exceptions:
+be-zach
+be-zami
+by-naj-mniej
+gdzie-nie-gdzie
+ina-czej
+na-dal
+ni-gdy
+ni-gdzie
+niech-¿e
+niech-by
+ow-szem
+pó-³ach
+pó-³ami
+pó-³ek
+pod-ów-czas
+przy-naj-mniej
+sk±d-in±d
+tró-jach
+tró-jami
+tró-jek
+
+Patterns:
+.ææ8
+.æ³8
+.æñ8
+.æ¶8
+.æ¼8
+.æ¿8
+.æ8
+.æb8
+.æc8
+.æd8
+.æf8
+.æg8
+.æh8
+.æj8
+.æk8
+.æl8
+.æm8
+.æn8
+.æp8
+.ær8
+.æs8
+.æt8
+.æv8
+.æw8
+.æwier2æ3
+.æx8
+.æz8
+.³æ8
+.³³8
+.³ñ8
+.³¶8
+.³¼8
+.³¿8
+.³8
+.³b8
+.³c8
+.³d8
+.³f8
+.³g8
+.³h8
+.³j8
+.³k8
+.³l8
+.³m8
+.³n8
+.³p8
+.³r8
+.³s8
+.³t8
+.³v8
+.³w8
+.³x8
+.³z8
+.ñæ8
+.ñ³8
+.ññ8
+.ñ¶8
+.ñ¼8
+.ñ¿8
+.ñ8
+.ñb8
+.ñc8
+.ñd8
+.ñf8
+.ñg8
+.ñh8
+.ñj8
+.ñk8
+.ñl8
+.ñm8
+.ñn8
+.ñp8
+.ñr8
+.ñs8
+.ñt8
+.ñv8
+.ñw8
+.ñx8
+.ñz8
+.¶æ8
+.¶³8
+.¶ñ8
+.¶¶8
+.¶¼8
+.¶¿8
+.¶8
+.¶b8
+.¶c8
+.¶d8
+.¶f8
+.¶g8
+.¶h8
+.¶j8
+.¶k8
+.¶l8
+.¶m8
+.¶n8
+.¶p8
+.¶ró2d5
+.¶ródr2
+.¶r8
+.¶s8
+.¶t8
+.¶v8
+.¶w8
+.¶wiat³o3w2
+.¶x8
+.¶z8
+.¼æ8
+.¼³8
+.¼ñ8
+.¼¶8
+.¼¼8
+.¼¿8
+.¼8
+.¼b8
+.¼c8
+.¼d¼8
+.¼d8
+.¼f8
+.¼g8
+.¼h8
+.¼j8
+.¼k8
+.¼l8
+.¼m8
+.¼n8
+.¼p8
+.¼r8
+.¼s8
+.¼t8
+.¼v8
+.¼w8
+.¼x8
+.¼z8
+.¿æ8
+.¿³8
+.¿ñ8
+.¿¶8
+.¿¼8
+.¿¿8
+.¿8
+.¿b8
+.¿c8
+.¿d8
+.¿f8
+.¿g8
+.¿h8
+.¿j8
+.¿k8
+.¿l8
+.¿m8
+.¿n8
+.¿p8
+.¿r8
+.¿s8
+.¿t8
+.¿v8
+.¿w8
+.¿x8
+.¿z8
+.a2b2s3t
+.a2d3
+.ad4a
+.ad4e
+.ad4i
+.ad4o
+.ad4u
+.ad4y
+.ad5apt
+.ad5iu
+.ad5op
+.ad5or
+.ae3ro
+.aeroa2
+.aeroe2
+.aeroi2
+.aeroo2
+.aerou2
+.antya2
+.antye2
+.antyi2
+.antyo2
+.antyu2
+.arcy3³2
+.arcy3b2
+.arcy3bz2
+.arcy3k2
+.arcy3m2
+.arcya2
+.arcye2
+.arcyi2
+.arcyo2
+.arcyu2
+.au3g2
+.au3k2
+.au3t2
+.auto3ch2
+.autoa2
+.autoe2
+.autoi2
+.autoo2
+.autotran2s3
+.autou2
+.bæ8
+.b³8
+.bñ8
+.b¶8
+.b¼8
+.b¿8
+.b8
+.bb8
+.bc8
+.bd8
+.be2z3
+.be3z4an
+.be3z4ec
+.be3z4ik
+.bezch2
+.bezm2
+.bezo2
+.bezo2b1j
+.bezw2
+.bezzw2
+.bf8
+.bg8
+.bh8
+.bj8
+.bk8
+.bl8
+.bm8
+.bn8
+.bp8
+.br8
+.brz8
+.bs8
+.bt8
+.bv8
+.bw8
+.bx8
+.bz8
+.cæ8
+.c³8
+.cñ8
+.c¶8
+.c¼8
+.c¿8
+.c8
+.ca³o3¶2
+.ca³o3k2
+.cb8
+.cc8
+.cd8
+.cf8
+.cg8
+.ch8
+.chrz8
+.cienko3w2
+.ciep³o3kr2
+.cj8
+.ck8
+.cl8
+.cm8
+.cn8
+.cp8
+.cr8
+.cs8
+.ct8
+.cv8
+.cw8
+.cx8
+.cz8
+.czarno3k2
+.czk8
+.cztere2ch3
+.czterechse2t3
+.cztero3¶2
+.czwó2r3
+.czwó3r4±
+.czwó3r4ê
+.czwó3r4a
+.czwó3r4e
+.czwó3r4o
+.dæ8
+.d³8
+.d³ugo3tr2
+.d³ugo3w2
+.dñ8
+.d¶8
+.d¼8
+.d¿8
+.d8
+.daleko3w2
+.db8
+.dc8
+.dd8
+.de2z3
+.de3z4a3bil
+.de3z4a3wu
+.de3z4el
+.de3z4er
+.de3z4y
+.deza2
+.dezo2
+.df8
+.dg8
+.dh8
+.dj8
+.dk8
+.dl8
+.dm8
+.dn8
+.do3æ2
+.do3³2
+.do3¶2
+.do3¼2
+.do3¿2
+.do3b2
+.do3c2
+.do3d2
+.do3f2
+.do3g2
+.do3h2
+.do3k2
+.do3l2
+.do3m2
+.do3p2
+.do3r2
+.do3s2
+.do3t2
+.do3w2
+.do3z2
+.do4³3k
+.do4k3t
+.do4l3n
+.do4m3k
+.do4r3s
+.do4w3c
+.do5m4k2n
+.dobr2
+.dobrz2
+.doch2
+.docz2
+.dod¼2
+.dod¿2
+.dodz2
+.dogrz2
+.dopch2
+.doprz2
+.dor¿2
+.dorz2
+.dosch2
+.dosm2
+.dosz2
+.dotk2
+.dotr2
+.dp8
+.dr8
+.drogo3w2
+.drz8
+.ds8
+.dt8
+.dv8
+.dwó2j3
+.dwó3j4±
+.dwó3j4ê
+.dwó3j4a
+.dwó3j4e
+.dwó3j4o
+.dw8
+.dx8
+.dy2s3
+.dy2z3
+.dy3s4e
+.dy3s4o
+.dy3s4ta
+.dy3s4y
+.dy3sz
+.dy3z4e
+.dyzu2
+.dz8
+.dziesiêcio3¶2
+.dziewiêæse2t3
+.dziewiê2æ3
+.dziewiêcio3¶2
+.e2k2s3
+.e2m3e2s5ze2t
+.e2s1e2s1ma
+.e2s1ha
+.e2s1t
+.egoa2
+.egoe2
+.egoi2
+.egoo2
+.egou2
+.eks4y
+.elektroa2
+.elektroe2
+.elektroi2
+.elektroo2
+.elektrou2
+.fæ8
+.f³8
+.fñ8
+.f¶8
+.f¼8
+.f¿8
+.f8
+.fb8
+.fc8
+.fd8
+.ff8
+.fg8
+.fh8
+.fj8
+.fk8
+.fl8
+.fm8
+.fn8
+.fp8
+.fr8
+.fs8
+.ft8
+.fv8
+.fw8
+.fx8
+.fz8
+.gæ8
+.g³8
+.gñ8
+.g¶8
+.g¼8
+.g¿8
+.g8
+.gb8
+.gc8
+.gd8
+.ge2o3
+.gf8
+.gg8
+.gh8
+.gj8
+.gk8
+.gl8
+.gm8
+.gn8
+.go2u3
+.gp8
+.gr8
+.grubo3w2
+.grz8
+.gs8
+.gt8
+.gv8
+.gw8
+.gx8
+.gz8
+.hæ8
+.h³8
+.hñ8
+.h¶8
+.h¼8
+.h¿8
+.h8
+.hb8
+.hc8
+.hd8
+.hf8
+.hg8
+.hh8
+.hipe2r3
+.hipe3r4o
+.hipera2
+.hipere2
+.hj8
+.hk8
+.hl8
+.hm8
+.hn8
+.hp8
+.hr8
+.hs8
+.ht8
+.hv8
+.hw8
+.hx8
+.hz8
+.i2n3
+.i2s3l
+.i3n4ic
+.i3n4o
+.i3n4u
+.i4n5o2k
+.in4f3lan
+.ino3w2
+.izoa2
+.izoe2
+.izoi2
+.izoo2
+.izou2
+.jæ8
+.j³8
+.jñ8
+.j¶8
+.j¼8
+.j¿8
+.j8
+.jad³o3w2
+.jb8
+.jc8
+.jd8
+.jf8
+.jg8
+.jh8
+.jj8
+.jk8
+.jl8
+.jm8
+.jn8
+.jp8
+.jr8
+.js8
+.jt8
+.jv8
+.jw8
+.jx8
+.jz8
+.kæ8
+.k³8
+.kñ8
+.k¶8
+.k¼8
+.k¿8
+.k8
+.kb8
+.kc8
+.kd8
+.kf8
+.kg8
+.kh8
+.kilkuse2t3
+.kilkuseto2
+.kj8
+.kk8
+.kl8
+.km8
+.kn8
+.ko³o3w2
+.kon2t2r3
+.kon3tr4a
+.kon3tr4e
+.kon3tr4o3l
+.kon3tr4o3w
+.kon3tr4y
+.kon4tr5a2gi
+.kon4tr5a2se
+.kon4tr5a2sy
+.kon4tr5a2ta
+.kon4tr5adm
+.kon4tr5akc
+.kon4tr5alt
+.kon4tr5arg
+.kontro2
+.kontru2
+.kp8
+.krótko3tr2
+.krótko3w2
+.kr8
+.kro2æ3
+.krz8
+.ks8
+.kt8
+.kv8
+.kw8
+.kx8
+.kz8
+.læ8
+.l³8
+.lñ8
+.l¶8
+.l¼8
+.l¿8
+.l8
+.lb8
+.lc8
+.ld8
+.lf8
+.lg8
+.lh8
+.lj8
+.lk8
+.ll8
+.lm8
+.ln8
+.lp8
+.lr8
+.ls8
+.lt8
+.ludo3w2
+.lv8
+.lw8
+.lx8
+.lz8
+.mæ8
+.m³8
+.mñ8
+.m¶8
+.m¼8
+.m¿8
+.m8
+.mb8
+.mc8
+.md8
+.mf8
+.mg8
+.mh8
+.mili3amp
+.mj8
+.mk8
+.ml8
+.mm8
+.mn8
+.mo¿no3w2
+.mp8
+.mr8
+.ms8
+.mt8
+.mv8
+.mw8
+.mx8
+.mz8
+.næ8
+.n³8
+.nñ8
+.n¶8
+.n¼8
+.n¿8
+.n8
+.na2d2
+.na2j
+.na3æ2
+.na3³2
+.na3¶2
+.na3¼2
+.na3¿2
+.na3b2
+.na3c2
+.na3d±
+.na3dê
+.na3d¼2
+.na3d4³ub
+.na3d4ir
+.na3d4much
+.na3d4rêcz
+.na3d4r2w
+.na3d4repcz
+.na3d4rept
+.na3d4ruk
+.na3d4rz
+.na3d4worn
+.na3daj
+.na3de
+.na3do
+.na3dy
+.na3dzi
+.na3f2
+.na3g2
+.na3h2
+.na3j±
+.na3jê
+.na3jazd
+.na3je
+.na3k2
+.na3l2
+.na3m2
+.na3p2
+.na3r2
+.na3s2
+.na3t2
+.na3u2
+.na3w2
+.na3z2
+.na4d3o2b2³
+.na4d3o2bojcz
+.na4d3o2bowi
+.na4d3o2brot
+.na4d3o2drz
+.na4d3o2kien
+.na4d3olbrz
+.na4d5rz±
+.na4d5rzê
+.na4d5rzecz
+.na4d5rzy
+.na4d5ziem
+.na4f3c
+.na4f3t
+.na4j3e2f
+.na4j3e2g
+.na4j3e2k2s
+.na4j3e2ko
+.na4j3e2n
+.na4j3e2r
+.na4j3e2s
+.na4j3e2w
+.na4j3emf
+.na4j3eu
+.na4r3c
+.na4r3d
+.na4r3k
+.na4r3r
+.na4r3t
+.nabrz2
+.nach2
+.nacz2
+.nad¶rod5ziem
+.nad3æ2
+.nad3³2
+.nad3¶2
+.nad3b2
+.nad3c2
+.nad3d2
+.nad3e2tat
+.nad3f2
+.nad3g2
+.nad3h2
+.nad3i2
+.nad3j2
+.nad3k2
+.nad3l2
+.nad3m2
+.nad3n2
+.nad3p2
+.nad3r2
+.nad3s2
+.nad3t2
+.nad3u2
+.nad3w2
+.nad5¿2
+.nad5zó
+.nad5z2mys
+.nad5zo
+.nad5zwycz
+.nadch2
+.nadcz2
+.nadd¼2
+.nade3æ2
+.nade3³2
+.nade3¶2
+.nade3¼2
+.nade3¿2
+.nade3b2
+.nade3c2
+.nade3d2
+.nade3f2
+.nade3g2
+.nade3h2
+.nade3k2
+.nade3l2
+.nade3m2
+.nade3p2
+.nade3r2
+.nade3s2
+.nade3t2
+.nade3w2
+.nade3z2
+.nade4p3c
+.nade4p3n
+.nade4p3t
+.nadech2
+.nadecz2
+.naded¼2
+.naded¿2
+.nadedz2
+.nader¿2
+.naderz2
+.nadesz2
+.nadsz2
+.nadtr2
+.nadz2
+.nagrz2
+.naj3æ2
+.naj3³2
+.naj3¶2
+.naj3¼2
+.naj3¿2
+.naj3akt
+.naj3au
+.naj3b2
+.naj3c2
+.naj3d2
+.naj3f2
+.naj3g2
+.naj3h2
+.naj3i2
+.naj3k2
+.naj3l2
+.naj3m2
+.naj3o2
+.naj3o2æ2
+.naj3o2³2
+.naj3o2¶2
+.naj3o2¼2
+.naj3o2¿2
+.naj3o2b2
+.naj3o2c2
+.naj3o2d2
+.naj3o2f2
+.naj3o2g2
+.naj3o2h2
+.naj3o2k2
+.naj3o2l2
+.naj3o2m2
+.naj3o2p2
+.naj3o2r2
+.naj3o2s2
+.naj3o2t2
+.naj3o2w2
+.naj3o2z2
+.naj3p2
+.naj3r2
+.naj3ro2z3
+.naj3s2
+.naj3t2
+.naj3u2
+.naj3w2
+.naj3z2
+.najbe2z3
+.najbezw2
+.najch2
+.najcz2
+.najd¼2
+.najd¿2
+.najdo3æ2
+.najdo3³2
+.najdo3¶2
+.najdo3¼2
+.najdo3¿2
+.najdo3b2
+.najdo3c2
+.najdo3d2
+.najdo3f2
+.najdo3g2
+.najdo3h2
+.najdo3k2
+.najdo3l2
+.najdo3m2
+.najdo3p2
+.najdo3r2
+.najdo3s2
+.najdo3t2
+.najdo3w2
+.najdo3z2
+.najdoch2
+.najdocz2
+.najdod¼2
+.najdod¿2
+.najdodz2
+.najdorz2
+.najdosz2
+.najdotk2
+.najdz2
+.najkr2
+.najob3æ2
+.najob3³2
+.najob3¶2
+.najob3¼2
+.najob3¿2
+.najob3c2
+.najob3d2
+.najob3f2
+.najob3g2
+.najob3h2
+.najob3j2
+.najob3k2
+.najob3l2
+.najob3m2
+.najob3n2
+.najob3p2
+.najob3s2
+.najob3t2
+.najob3w2
+.najobch2
+.najobcz2
+.najobd¼2
+.najobd¿2
+.najobdz2
+.najobrz2
+.najobsz2
+.najoch2
+.najocz2
+.najod¼2
+.najod3æ2
+.najod3¶2
+.najod3c2
+.najod3d2
+.najod3f2
+.najod3g2
+.najod3h2
+.najod3j2
+.najod3k2
+.najod3l2
+.najod3m2
+.najod3n2
+.najod3p2
+.najod3s2
+.najod3t2
+.najod3w2
+.najod5¿2
+.najodch2
+.najodcz2
+.najodd¼2
+.najodd¿2
+.najoddz2
+.najodsz2
+.najodz2
+.najorz2
+.najosz2
+.najro3z4u
+.najrz2
+.najsm2
+.najsz2
+.najtk2
+.najtr2
+.najucz2
+.najzw2
+.nakr2
+.napo2d2
+.napo3æ2
+.napo3³2
+.napo3¶2
+.napo3¼2
+.napo3¿2
+.napo3b2
+.napo3c2
+.napo3f2
+.napo3g2
+.napo3h2
+.napo3k2
+.napo3l2
+.napo3m2
+.napo3p2
+.napo3r2
+.napo3s2
+.napo3t2
+.napo3w2
+.napo3z2
+.napo4m3p
+.napoch2
+.napocz2
+.napod¼2
+.napod¿2
+.napod3d
+.napomk2
+.naporz2
+.naposz2
+.naprz2
+.nar¿2
+.naro2z3
+.narz2
+.nasm2
+.nasz2
+.natch2
+.natk2
+.naz3m2
+.nazw2
+.nb8
+.nc8
+.nd8
+.ne2o3
+.nf8
+.ng8
+.nh8
+.nie3æ2
+.nie3³2
+.nie3¶2
+.nie3¼2
+.nie3¿2
+.nie3b2
+.nie3c2
+.nie3d2
+.nie3f2
+.nie3g2
+.nie3h2
+.nie3k2
+.nie3l2
+.nie3m2
+.nie3p2
+.nie3r2
+.nie3s2
+.nie3t2
+.nie3u2
+.nie3w2
+.nie3z2
+.nie4c3c
+.nie4c3k
+.nie4d¼3
+.nie4m3c
+.nie4m3k
+.niech2
+.niecz2
+.nied¿2
+.niedo3æ2
+.niedo3³2
+.niedo3¶2
+.niedo3¼2
+.niedo3¿2
+.niedo3b2
+.niedo3c2
+.niedo3d2
+.niedo3f2
+.niedo3g2
+.niedo3h2
+.niedo3k2
+.niedo3l2
+.niedo3m2
+.niedo3p2
+.niedo3r2
+.niedo3s2
+.niedo3t2
+.niedo3w2
+.niedo3z2
+.niedobrz2
+.niedoch2
+.niedocz2
+.niedod¼2
+.niedod¿2
+.niedodz2
+.niedokr2
+.niedomk2
+.niedopch2
+.niedorz2
+.niedosz2
+.niedotk2
+.niedz2
+.nieoæ2
+.nieo³2
+.nieo¶2
+.nieo¼2
+.nieo¿2
+.nieo2
+.nieob2
+.nieob3æ2
+.nieob3¶2
+.nieob3¼2
+.nieob3¿2
+.nieob3c2
+.nieob3d2
+.nieob3f2
+.nieob3g2
+.nieob3h2
+.nieob3j2
+.nieob3k2
+.nieob3m2
+.nieob3p2
+.nieob3s2
+.nieob3w2
+.nieobch2
+.nieobcz2
+.nieobd¼2
+.nieobd¿2
+.nieobdz2
+.nieobsz2
+.nieoc2
+.nieoch2
+.nieocz2
+.nieod¼2
+.nieod2
+.nieod3æ2
+.nieod3³2
+.nieod3¶2
+.nieod3c2
+.nieod3d2
+.nieod3f2
+.nieod3g2
+.nieod3h2
+.nieod3j2
+.nieod3k2
+.nieod3l2
+.nieod3n2
+.nieod3p2
+.nieod3s2
+.nieod3t2
+.nieod3wr
+.nieod5¿2
+.nieodch2
+.nieodcz2
+.nieodd¼2
+.nieodd¿2
+.nieoddz2
+.nieodsz2
+.nieodw2
+.nieodz2
+.nieof2
+.nieog2
+.nieoh2
+.nieok2
+.nieol2
+.nieom2
+.nieop2
+.nieor2
+.nieorz2
+.nieos2
+.nieosz2
+.nieot2
+.nieow2
+.nieoz2
+.niepo2d2
+.niepo3æ2
+.niepo3³2
+.niepo3¶2
+.niepo3¼2
+.niepo3¿2
+.niepo3b2
+.niepo3c2
+.niepo3d¼2
+.niepo3d4³u
+.niepo3d4much
+.niepo3d4rêcz
+.niepo3d4ra¿
+.niepo3d4rap
+.niepo3d4repcz
+.niepo3d4rept
+.niepo3d4waj
+.niepo3d4woj
+.niepo3do
+.niepo3du
+.niepo3dz2
+.niepo3f2
+.niepo3g2
+.niepo3h2
+.niepo3k2
+.niepo3l2
+.niepo3m2
+.niepo3p2
+.niepo3r2
+.niepo3s2
+.niepo3t2
+.niepo3w2
+.niepo3z2
+.niepo4d3o2choc
+.niepo4d3o2strz
+.niepoch2
+.niepocz2
+.niepod3æ2
+.niepod3³2
+.niepod3¶2
+.niepod3b2
+.niepod3c2
+.niepod3d2
+.niepod3f2
+.niepod3g2
+.niepod3h2
+.niepod3j2
+.niepod3k2
+.niepod3l2
+.niepod3m2
+.niepod3n2
+.niepod3p2
+.niepod3r2
+.niepod3s2
+.niepod3t2
+.niepod3w2
+.niepod5¿
+.niepodch2
+.niepodcz2
+.niepodd¼2
+.niepodd¿2
+.niepodsm2
+.niepodsz2
+.nieporz2
+.nieposm2
+.nieposz2
+.nieprze³k2
+.nieprze2d2
+.nieprze3æ2
+.nieprze3³2
+.nieprze3¶2
+.nieprze3¼2
+.nieprze3¿2
+.nieprze3b2
+.nieprze3brz2
+.nieprze3c2
+.nieprze3d¼2
+.nieprze3d4³u¿
+.nieprze3d4much
+.nieprze3d4ramat
+.nieprze3d4ruk
+.nieprze3d4ryl
+.nieprze3d4rz2
+.nieprze3d4um
+.nieprze3dy
+.nieprze3dz2
+.nieprze3e2k2s3
+.nieprze3f2
+.nieprze3g2
+.nieprze3h2
+.nieprze3k2
+.nieprze3l2
+.nieprze3m2
+.nieprze3n2
+.nieprze3p2
+.nieprze3r2
+.nieprze3s2
+.nieprze3t2
+.nieprze3w2
+.nieprze3z2
+.nieprze4d5³u¿yc
+.nieprze4d5¿2
+.nieprze4d5z2a
+.nieprze4d5zg2
+.nieprze4d5zim
+.nieprze4d5zj
+.nieprze4d5zl
+.nieprze4d5zw2r
+.nieprze4d5zwoj
+.nieprzech2
+.nieprzecz2
+.nieprzed3æ2
+.nieprzed3³2
+.nieprzed3¶2
+.nieprzed3c2
+.nieprzed3d2
+.nieprzed3f2
+.nieprzed3g2
+.nieprzed3h2
+.nieprzed3i2
+.nieprzed3j2
+.nieprzed3k2
+.nieprzed3l2
+.nieprzed3m2
+.nieprzed3n2
+.nieprzed3p2
+.nieprzed3r2
+.nieprzed3s2
+.nieprzed3sz2
+.nieprzed3t2
+.nieprzed3u2
+.nieprzed3w2
+.nieprzedch2
+.nieprzedcz2
+.nieprzedd¼2
+.nieprzedd¿2
+.nieprzeddz2
+.nieprzegrz2
+.nieprzekl2
+.nieprzekr2
+.nieprzepch2
+.nieprzer¿2
+.nieprzerz2
+.nieprzesch2
+.nieprzesm2
+.nieprzesz2
+.nieprzetk2
+.nieprzetr2
+.niero2z3
+.niero3z4e
+.niero3z4u
+.nieroz¶2
+.nierozbrz2
+.nieroze3r2
+.nierozm2
+.nieroztr2
+.nierz2
+.niesu2b3
+.niesu3b4ie
+.niesz2
+.nietk2
+.nietr2
+.nieucz2
+.nieuw2
+.niewy3æ2
+.niewy3³2
+.niewy3¶2
+.niewy3¼2
+.niewy3¿2
+.niewy3b2
+.niewy3c2
+.niewy3d2
+.niewy3f2
+.niewy3g2
+.niewy3h2
+.niewy3k2
+.niewy3l2
+.niewy3m2
+.niewy3p2
+.niewy3r2
+.niewy3s2
+.niewy3t2
+.niewy3w2
+.niewy3z2
+.niewybrz2
+.niewych2
+.niewycz2
+.niewyd¼2
+.niewyd¿2
+.niewydz2
+.niewyrz2
+.niewysz2
+.niewytk2
+.niewytr2
+.niezw2
+.nj8
+.nk8
+.nl8
+.nm8
+.nn8
+.np8
+.nr8
+.ns8
+.nt8
+.nv8
+.nw8
+.nx8
+.nz8
+.oæ2
+.o¶2
+.o¶mio3¶2
+.o¼2
+.o¿2
+.o2b2
+.o2d2
+.o2t3ch³
+.o3b4³±
+.o3b4³ê
+.o3b4³oc
+.o3b4luzg
+.o3b4raæ
+.o3b4raso
+.o3b4roñ
+.o3b4ron
+.o3b4ry¼
+.o3b4ryz
+.o3b4rz2
+.o3be
+.o3bi
+.o3d4iu
+.o3d4rêt
+.o3d4rap
+.o3d4robin
+.o3d4rut
+.o3d4rwi
+.o3d4rzeæ
+.o3d4rzw
+.o3d6zia
+.o3d6zie
+.o3de
+.o3l2¶n
+.o4b5³ocz
+.o4b5rz±
+.o4b5rzêd
+.o4b5rzez
+.o4b5rzuc
+.o4b5rzut
+.o4b5rzyn
+.o4d7ziar
+.o4d7ziem
+.oa3z
+.ob3æ2
+.ob3³2
+.ob3¶2
+.ob3¼2
+.ob3¿2
+.ob3c2
+.ob3d2
+.ob3f2
+.ob3g2
+.ob3h2
+.ob3j2
+.ob3k2
+.ob3l2
+.ob3m2
+.ob3n2
+.ob3o2strz
+.ob3p2
+.ob3r
+.ob3s2
+.ob3t2
+.ob3u2m2
+.ob3w2
+.obch2
+.obcz2
+.obd¼2
+.obd¿2
+.obdz2
+.obe3æ2
+.obe3³2
+.obe3¶2
+.obe3¼2
+.obe3¿2
+.obe3b2
+.obe3c2
+.obe3d2
+.obe3f2
+.obe3g2
+.obe3h2
+.obe3k2
+.obe3l2
+.obe3m2
+.obe3p2
+.obe3r2
+.obe3r3t
+.obe3s2
+.obe3t2
+.obe3w2
+.obe3z2
+.obe4c3n
+.obe4z3w
+.obech2
+.obecz2
+.obed¼2
+.obed¿2
+.obedz2
+.ober¿2
+.ober3m
+.oberz2
+.obesch2
+.obesz2
+.obetk2
+.obi3b2
+.obsz2
+.oc2
+.och2
+.ochrz2
+.ocz2
+.od¼2
+.od3æ2
+.od3¶2
+.od3au
+.od3b2
+.od3c2
+.od3d2
+.od3f2
+.od3g2
+.od3h2
+.od3i2
+.od3i2zo
+.od3j2
+.od3k2
+.od3l2
+.od3m2
+.od3n2
+.od3o2s
+.od3p2
+.od3r2
+.od3s2
+.od3t2
+.od3u2cz
+.od3u2m2
+.od3w2
+.od5¿2
+.od5z2
+.odbe2z3
+.odch2
+.odcz2
+.odd¼2
+.odd¿2
+.oddz2
+.ode3æ2
+.ode3³2
+.ode3¶2
+.ode3¼2
+.ode3¿2
+.ode3b2
+.ode3c2
+.ode3d2
+.ode3f2
+.ode3g2
+.ode3h2
+.ode3k2
+.ode3l2
+.ode3m2
+.ode3mk2
+.ode3p2
+.ode3r2
+.ode3s2
+.ode3t2
+.ode3w2
+.ode3z2
+.odech2
+.odecz2
+.oded¼2
+.oded¿2
+.odedz2
+.odepch2
+.oder¿2
+.oderz2
+.odesz2
+.odetch2
+.odetk2
+.odkrz2
+.odrz2
+.odsz2
+.of2
+.ogólno3k2
+.og2
+.ognio3tr2
+.oh2
+.ok2
+.oka3m2
+.okr2
+.ole2o3
+.om2
+.op2
+.opch2
+.or2¿2
+.or2tê
+.or2z2
+.os2
+.osie2m3
+.osiemse2t3
+.osz2
+.ot2
+.ow2
+.oz2
+.pæ8
+.p³8
+.p³asko3w2
+.pñ8
+.pó³k2
+.pó³kr2
+.pó³m2
+.pó³o2
+.pó³ob3r
+.pó³om2d
+.pó³przy3m2k
+.pó2³3
+.pó3³4±
+.pó3³4ê
+.pó3³4ecz
+.pó3³4y
+.p¶8
+.p¼8
+.p¿8
+.p8
+.pb8
+.pc8
+.pch8
+.pd8
+.pe³no3kr2
+.pe2r3
+.pe3c2k
+.pe3r4e
+.pe3r4i
+.pe3r4o
+.pe3r4u
+.pe3r4y
+.pe4r5i2n
+.pee2se2l
+.pepee2r
+.pepee2s
+.peze2t1pee2r
+.pf8
+.pg8
+.ph8
+.piêæse2t3
+.piê2æ3
+.piêcio3¶2
+.pierwo3w2
+.piono3w2
+.pj8
+.pk8
+.pl8
+.pm8
+.pn8
+.po³k2
+.po2d2
+.po3æ2
+.po3³2
+.po3¶2
+.po3¼2
+.po3¿2
+.po3b2
+.po3c2
+.po3d±
+.po3dê
+.po3d¼2
+.po3d4³u
+.po3d4much
+.po3d4naw
+.po3d4rêcz
+.po3d4rêtw
+.po3d4ró¿
+.po3d4r2wi
+.po3d4ra¿
+.po3d4rap
+.po3d4repcz
+.po3d4rept
+.po3d4ro¿
+.po3d4robó
+.po3d4roba
+.po3d4robo
+.po3d4roby
+.po3d4rocz
+.po3d4ruzg
+.po3d4ryg
+.po3d4rze
+.po3d4wójn
+.po3d4wór
+.po3d4waj
+.po3d4woi
+.po3d4woj
+.po3d4worz
+.po3da
+.po3de
+.po3dej
+.po3diu
+.po3do
+.po3du
+.po3dy
+.po3dz2
+.po3e2k2s3
+.po3f2
+.po3g2
+.po3h2
+.po3k2
+.po3l2
+.po3m2
+.po3p2
+.po3r¿
+.po3r2
+.po3s2
+.po3t2
+.po3w2
+.po3z2
+.po4ñ3c
+.po4cz3d
+.po4cz3t
+.po4d3ów
+.po4d3e4k2s3
+.po4d3o2bóz
+.po4d3o2biad
+.po4d3o2bojcz
+.po4d3o2braz
+.po4d3o2choc
+.po4d3o2dm
+.po4d3o2f
+.po4d3o2g
+.po4d3o2kien
+.po4d3o2kn
+.po4d3o2krêg
+.po4d3o2kres
+.po4d3o2piecz
+.po4d3o2ryw
+.po4d3o2siniak
+.po4d3o2strz
+.po4d3obsz
+.po4d3odd
+.po4d3olbrz
+.po4d3u2cz
+.po4d3u2dz
+.po4d3u2pa
+.po4d3u2ral
+.po4d3u2sta
+.po4d3u2szcz
+.po4d5rêczn
+.po4d5zakr
+.po4d5zam
+.po4d5zast
+.po4d5zbi
+.po4d5ze
+.po4d5zieleni±
+.po4d5zieleniæ
+.po4d5zieleniê
+.po4d5zieleni³
+.po4d5zielenic
+.po4d5zielenien
+.po4d5zielenil
+.po4d5zielenim
+.po4d5zielenio
+.po4d5zielenis
+.po4d5ziem
+.po4d5ziom
+.po4d5zw2r
+.po4l3s
+.po4m3p
+.po4r3c
+.po4r3f
+.po4r3n
+.po4r3t
+.po4st3d
+.po4st3f
+.po4st3g
+.po4st3h
+.po4st3i2
+.po4st3k
+.po4st3l
+.po4st3m
+.po4st3p
+.po4st3rom
+.po4st3s
+.po5d4uszczyn
+.po5r4tê
+.pobr2
+.pobrz2
+.poch2
+.pochrz2
+.pocz2
+.pod3æ2
+.pod3³2
+.pod3¶2
+.pod3¶ró2d5
+.pod3alp
+.pod3b2
+.pod3c2
+.pod3d2
+.pod3f2
+.pod3g2
+.pod3h2
+.pod3i2n
+.pod3j2
+.pod3k2
+.pod3l2
+.pod3m2
+.pod3n2
+.pod3p2
+.pod3r2
+.pod3s2
+.pod3t2
+.pod3w2
+.pod5¿2
+.podch2
+.podcz2
+.podd¼2
+.podd¿2
+.pode3æ2
+.pode3³2
+.pode3¶2
+.pode3¼2
+.pode3¿2
+.pode3b2
+.pode3c2
+.pode3d2
+.pode3f2
+.pode3g2
+.pode3h2
+.pode3k2
+.pode3l2
+.pode3m2
+.pode3p2
+.pode3r2
+.pode3s2
+.pode3t2
+.pode3tk2
+.pode3w2
+.pode3z2
+.podech2
+.podecz2
+.poded¼2
+.poded¿2
+.podedz2
+.podepch2
+.poder¿2
+.poderz2
+.podesch2
+.podesz2
+.podro2z3
+.podsm2
+.podsz2
+.pogrz2
+.pokl2
+.pokr2
+.pom4pk
+.pomk2
+.pona2d2
+.pona3æ2
+.pona3³2
+.pona3¶2
+.pona3¼2
+.pona3¿2
+.pona3b2
+.pona3c2
+.pona3cz2
+.pona3d¼2
+.pona3do
+.pona3f2
+.pona3g2
+.pona3h2
+.pona3k2
+.pona3l2
+.pona3m2
+.pona3p2
+.pona3r2
+.pona3s2
+.pona3t2
+.pona3w2
+.pona3z2
+.pona4f3t
+.ponabrz2
+.ponach2
+.ponad3æ2
+.ponad3¶2
+.ponad3c2
+.ponad3ch2
+.ponad3cz2
+.ponad3d¼2
+.ponad3f2
+.ponad3g2
+.ponad3h2
+.ponad3j2
+.ponad3k2
+.ponad3l2
+.ponad3p2
+.ponad3s2
+.ponad3t2
+.ponadz2
+.ponarz2
+.ponasm2
+.ponasz2
+.ponaz3m2
+.ponazw2
+.ponie3k2
+.ponie3w2
+.popch2
+.popo3w2
+.poprz2
+.por4t1w
+.por4tf
+.por4tm
+.poro2z3
+.poro3z4u
+.porz2
+.posch2
+.posm2
+.posz2
+.potk2
+.potr2
+.poz4m2
+.poza3u2
+.pozw2
+.pp8
+.pr8
+.pra3s2
+.pra3w2nu
+.pra3w2z
+.prapra3w2nu
+.predy2s3po
+.prz8
+.prze³k2
+.prze2d2
+.prze3æ2
+.prze3³2
+.prze3¶2
+.prze3¼2
+.prze3¿2
+.prze3b2
+.prze3c2
+.prze3d±
+.prze3dê
+.prze3d¼2
+.prze3d4³u¿
+.prze3d4much
+.prze3d4o3br
+.prze3d4o3st
+.prze3d4o3zo
+.prze3d4ramat
+.prze3d4ruk
+.prze3d4ryl
+.prze3d4rz2
+.prze3d4um
+.prze3dy
+.prze3dz2
+.prze3e2k2s3
+.prze3f2
+.prze3g2
+.prze3h2
+.prze3k2
+.prze3l2
+.prze3m2
+.prze3n2
+.prze3p2
+.prze3r2
+.prze3s2
+.prze3t2
+.prze3u2
+.prze3w2
+.prze3z2
+.prze4d5³u¿yc
+.prze4d5¿2
+.prze4d5o4stat
+.prze4d5za
+.prze4d5zg2
+.prze4d5zim
+.prze4d5zj
+.prze4d5zl
+.prze4d5zw2r
+.prze4d5zwoj
+.przebr2
+.przebrz2
+.przech2
+.przechrz2
+.przeci2w3
+.przeci3w4ie
+.przeciwa2
+.przeciww2
+.przecz2
+.przed3æ2
+.przed3³2
+.przed3¶2
+.przed3a2gon
+.przed3a2kc
+.przed3alp
+.przed3b2
+.przed3c2
+.przed3d2
+.przed3e2gz
+.przed3e2mer
+.przed3f2
+.przed3g2
+.przed3h2
+.przed3i2
+.przed3j2
+.przed3k2
+.przed3l2
+.przed3m2
+.przed3n2
+.przed3o2
+.przed3p2
+.przed3r2
+.przed3s2
+.przed3siê3w2
+.przed3sz2
+.przed3t2
+.przed3u2
+.przed3w2
+.przedch2
+.przedcz2
+.przedd¼2
+.przedd¿2
+.przeddz2
+.przedgrz2
+.przedy2s3ku
+.przegrz2
+.przekl2
+.przekr2
+.przemk2
+.przepch2
+.przer¿2
+.przerz2
+.przesch2
+.przesm2
+.przesz2
+.przetk2
+.przetr2
+.przetran2s3
+.przy3æ2
+.przy3³2
+.przy3¶2
+.przy3¼2
+.przy3¿2
+.przy3b2
+.przy3c2
+.przy3d2
+.przy3f2
+.przy3g2
+.przy3h2
+.przy3k2
+.przy3l2
+.przy3m2
+.przy3p2
+.przy3r2
+.przy3s2
+.przy3t2
+.przy3w2
+.przy3z2
+.przybr2
+.przych2
+.przycz2
+.przyd¼2
+.przyd¿2
+.przydz2
+.przygrz2
+.przymk2
+.przyoz2
+.przypch2
+.przyr¿2
+.przyrz2
+.przysch2
+.przysz2
+.przytk2
+.ps8
+.pt8
+.pv8
+.pw8
+.px8
+.pz8
+.ræ8
+.r³8
+.rñ8
+.r¶8
+.r¼8
+.r¿8
+.r8
+.rb8
+.rc8
+.rd8
+.retran2s3
+.rf8
+.rg8
+.rh8
+.rj8
+.rk8
+.rl8
+.rm8
+.rn8
+.ro2z3
+.ro3z4a
+.ro3z4e
+.ro3z4e3æ2
+.ro3z4e3³2
+.ro3z4e3¶2
+.ro3z4e3¼2
+.ro3z4e3¿2
+.ro3z4e3b2
+.ro3z4e3c2
+.ro3z4e3d2
+.ro3z4e3f2
+.ro3z4e3g2
+.ro3z4e3h2
+.ro3z4e3k2
+.ro3z4e3l2
+.ro3z4e3m2
+.ro3z4e3p2
+.ro3z4e3r2
+.ro3z4e3s2
+.ro3z4e3t2
+.ro3z4e3w2
+.ro3z4e3z2
+.ro3z4ej
+.ro3z4u
+.ro4z5a2gi
+.ro4z5a2nie
+.ro4z5e2mo
+.ro4z5e4g3z
+.ro4z5e4n3t
+.roz¶2
+.rozbrz2
+.rozd2
+.rozech2
+.rozecz2
+.rozed¼2
+.rozed¿2
+.rozedz2
+.rozepch2
+.rozer¿2
+.rozerz2
+.rozesch2
+.rozesz2
+.rozi2
+.rozm2
+.rozo2
+.rozpo3w2
+.rozt2
+.roztr2
+.rozw2
+.rp8
+.rr8
+.rs8
+.rt8
+.rv8
+.rw8
+.rx8
+.rz8
+.sæ8
+.s³8
+.sñ8
+.s¶8
+.s¼8
+.s¿8
+.s8
+.samo3ch2
+.samo3k2
+.samo3p2
+.samo3w2
+.samoro2z3
+.sb8
+.sc8
+.sch8
+.sd8
+.sf8
+.sg8
+.sh8
+.siede2m3
+.siedemse2t3
+.siedmio3¶2
+.sj8
+.sk±2d5¿e
+.sk8
+.skl8
+.skr8
+.sl8
+.sm8
+.sn8
+.sobo3w2
+.spó2³3
+.sp8
+.spo2d2
+.spo3æ2
+.spo3³2
+.spo3¶2
+.spo3¼2
+.spo3¿2
+.spo3b2
+.spo3c2
+.spo3dz2
+.spo3f2
+.spo3g2
+.spo3h2
+.spo3k2
+.spo3l2
+.spo3m2
+.spo3p2
+.spo3r2
+.spo3s2
+.spo3t2
+.spo3w2
+.spo3z2
+.spo4r3n
+.spo4r3t
+.spoch2
+.spocz2
+.spod¼2
+.spod¿2
+.spod3d
+.sporz2
+.sposz2
+.sr8
+.ss8
+.st8
+.stere2o3
+.stereoa2
+.stereoe2
+.stereoi2
+.stereoo2
+.stereou2
+.su2b3
+.su3b4ie
+.su3b4otn
+.supe2r3
+.supe3r4at
+.supe3r4io
+.supe4r5a2tr
+.super5z2b
+.supere2
+.supero2d1rzut
+.sv8
+.sw8
+.sx8
+.sz8
+.sze¶æse2t3
+.sze¶cio3¶2
+.sze2¶2æ3
+.sze2s3
+.tæ8
+.t³8
+.tñ8
+.t¶8
+.t¼8
+.t¿8
+.t8
+.ta2o3
+.ta2r7zan
+.tb8
+.tc8
+.tch8
+.td8
+.te2o3
+.tf8
+.tg8
+.th8
+.tj8
+.tk8
+.tl8
+.tm8
+.tn8
+.toa3
+.tp8
+.tró2j3
+.tró3j4±
+.tró3j4ê
+.tró3j4ecz
+.tr8
+.tran2s3
+.tran3s4e
+.tran3s4ie
+.tran3s4y
+.tran3sz
+.tran4s5eu
+.transa2
+.transo2
+.trz8
+.trze2ch3
+.trzechse2t3
+.ts8
+.tt8
+.tv8
+.tw8
+.tx8
+.tysi±2c3
+.tysi±3c4a
+.tysi±3c4e
+.tysi±3cz
+.tysi±4c5z³
+.tz8
+.uæ2
+.u¶2
+.u3³2
+.u3¼2
+.u3¿2
+.u3b2
+.u3c2
+.u3d2
+.u3f2
+.u3g2
+.u3h2
+.u3k2
+.u3l2
+.u3m2
+.u3n2
+.u3p2
+.u3r2
+.u3s2
+.u3t2
+.u3w2
+.u3z2
+.u4d3k
+.u4f3n
+.u4k3lej
+.u4l3s
+.u4l3t
+.u4m3br
+.u4n3c
+.u4n3d
+.u4p3p2s
+.u4r3s
+.u4st3n
+.u4stc
+.u4stk
+.u4z3be
+.ube2z3
+.ubezw2
+.ubr2
+.uch2
+.ucz2
+.ud¼2
+.ud¿2
+.udz2
+.ukr2
+.umk2
+.upch2
+.upo2d2
+.upo3æ2
+.upo3³2
+.upo3¶2
+.upo3¼2
+.upo3¿2
+.upo3b2
+.upo3c2
+.upo3da
+.upo3f2
+.upo3g2
+.upo3h2
+.upo3k2
+.upo3l2
+.upo3m2
+.upo3p2
+.upo3r2
+.upo3s2
+.upo3t2
+.upo3w2
+.upo3z2
+.upoch2
+.upocz2
+.upod¼2
+.upod¿2
+.upod3d
+.uporz2
+.uposz2
+.ur¿2
+.uro2z3
+.urz2
+.usch2
+.usz2
+.utk2
+.utr2
+.uze3w2
+.væ8
+.v³8
+.vñ8
+.v¶8
+.v¼8
+.v¿8
+.v8
+.vb8
+.vc8
+.vd8
+.vf8
+.vg8
+.vh8
+.vj8
+.vk8
+.vl8
+.vm8
+.vn8
+.vp8
+.vr8
+.vs8
+.vt8
+.vv8
+.vw8
+.vx8
+.vz8
+.wæ8
+.w³8
+.wñ8
+.w¶8
+.w¼8
+.w¿8
+.w8
+.wb8
+.wc8
+.wd8
+.we3æ2
+.we3³2
+.we3¶2
+.we3¿2
+.we3b2
+.we3c2
+.we3d2
+.we3f2
+.we3g2
+.we3h2
+.we3k2
+.we3l2
+.we3m2
+.we3n2
+.we3p2
+.we3r2
+.we3s2
+.we3t2
+.we3w2
+.we3z2
+.we4³3n
+.we4k3t
+.we4l3w
+.we4n3d
+.we4n3t
+.we4r3b
+.we4r3d
+.we4r3n
+.we4r3s
+.we4r3t
+.we4s3prz
+.we4s3tch2
+.we4z3br
+.we4z3g³
+.wech2
+.wecz2
+.wed¼2
+.wed¿2
+.wedz2
+.wemk2
+.wepch2
+.werz2
+.wesz2
+.wetk2
+.wewn±2trz3
+.wf8
+.wg8
+.wh8
+.wielo3¶2
+.wielo3d2
+.wielo3k2
+.wieluse2t3
+.wilczo3m2
+.wj8
+.wk8
+.wl8
+.wm8
+.wn8
+.wniebo3w2
+.wodo3w2
+.wp8
+.wr8
+.ws8
+.wspó³i2
+.wspó³o2b3w
+.wspó³u2
+.wspó³w2
+.wspó2³3
+.wsze2ch3
+.wszecho2
+.wszechw2
+.wt8
+.wv8
+.ww8
+.wx8
+.wy3æ2
+.wy3³2
+.wy3¶2
+.wy3¼2
+.wy3¿2
+.wy3b2
+.wy3c2
+.wy3d2
+.wy3f2
+.wy3g2
+.wy3h2
+.wy3k2
+.wy3l2
+.wy3m2
+.wy3o2d3r
+.wy3p2
+.wy3r2
+.wy3s2
+.wy3t2
+.wy3w2
+.wy3z2
+.wy4¿3sz
+.wy4cz3ha
+.wybr2
+.wybrz2
+.wych2
+.wycz2
+.wyd¼2
+.wyd¿2
+.wydr2
+.wydz2
+.wye2k2s3
+.wygrz2
+.wyi2zo
+.wykl2
+.wykr2
+.wykrz2
+.wymk2
+.wypch2
+.wyprz2
+.wyr¿2
+.wyrz2
+.wysch2
+.wysm2
+.wysz2
+.wytch2
+.wytk2
+.wytr2
+.wz8
+.xæ8
+.x³8
+.xñ8
+.x¶8
+.x¼8
+.x¿8
+.x8
+.xb8
+.xc8
+.xd8
+.xf8
+.xg8
+.xh8
+.xj8
+.xk8
+.xl8
+.xm8
+.xn8
+.xp8
+.xr8
+.xs8
+.xt8
+.xv8
+.xw8
+.xx8
+.xz8
+.zæ8
+.z³8
+.z³o3w2
+.zñ8
+.z¶8
+.z¼8
+.z¿8
+.z8
+.za3æ2
+.za3³2
+.za3¶2
+.za3¼2
+.za3¿2
+.za3b2
+.za3c2
+.za3d2
+.za3f2
+.za3g2
+.za3h2
+.za3k2
+.za3l2
+.za3m2
+.za3o2b3r
+.za3o2b3s
+.za3p2
+.za3r2
+.za3s2
+.za3t2
+.za3u2
+.za3w2
+.za3z2
+.za4k3t
+.za4l3g
+.za4l3k
+.za4l3t
+.za4m3k
+.za4r3ch
+.za4uto
+.za5m4k2n
+.zabr2
+.zabrz2
+.zach2
+.zacz2
+.zad¼2
+.zad¿2
+.zado¶æu4
+.zado2¶æ3
+.zadr2
+.zady2s3po
+.zadz2
+.zagrz2
+.zai2n3
+.zai2zo
+.zain4ic
+.zakl2
+.zakr2
+.zakrz2
+.zanie3d2
+.zar¿2
+.zarz2
+.zasch2
+.zasm2
+.zasz2
+.zatk2
+.zatr2
+.zb8
+.zc8
+.zd8
+.zde2z3
+.zde3z4awu
+.zde3z4el
+.zde3z4er
+.zde3z4y
+.zdy2s3kont
+.zdy2s3kred
+.zdy2s3kwal
+.ze3æ2
+.ze3³2
+.ze3¶2
+.ze3¼2
+.ze3¿2
+.ze3b2
+.ze3c2
+.ze3d2
+.ze3f2
+.ze3g2
+.ze3h2
+.ze3k2
+.ze3l2
+.ze3m2
+.ze3p2
+.ze3r2
+.ze3s2
+.ze3t2
+.ze3tk2
+.ze3w2
+.ze3z2
+.ze4r3k
+.ze4t3e2m1e2s
+.ze4t3e2s1e2l
+.ze4t3emp
+.ze4t3hap
+.zech2
+.zecz2
+.zed¼2
+.zed¿2
+.zedz2
+.zekl2
+.zepch2
+.zer¿2
+.zerz2
+.zesch2
+.zesm4
+.zesz2
+.zf8
+.zg8
+.zh8
+.zimno3kr2
+.zj8
+.zk8
+.zl8
+.zm8
+.zmartwy2ch3
+.zmartwychw2
+.zn8
+.znie3æ2
+.znie3³2
+.znie3ñ2
+.znie3¶2
+.znie3¼2
+.znie3¿2
+.znie3b2
+.znie3c2
+.znie3d2
+.znie3f2
+.znie3g2
+.znie3h2
+.znie3k2
+.znie3l2
+.znie3m2
+.znie3n2
+.znie3p2
+.znie3r2
+.znie3s2
+.znie3t2
+.znie3w2
+.znie3z2
+.znie4d¼3
+.znie4m3c
+.zniech2
+.zniecz2
+.znied¿2
+.zniedz2
+.znierz2
+.zniesz2
+.zo2o3
+.zp8
+.zr8
+.zro2z3
+.zro3z4u
+.zs8
+.zt8
+.zv8
+.zw8
+.zx8
+.zz8
+±1
+ê1
+ó1
+ó4w3cz
+¶1c
+¼2d¼
+1¶2ci
+2æ1ñ
+2æ1¶
+2æ1¼
+2æ1¿
+2æ1b
+2æ1c
+2æ1d
+2æ1f
+2æ1g
+2æ1k
+2æ1m
+2æ1n
+2æ1p
+2æ1s
+2æ1t
+2æ1z
+2³1æ
+2³1ñ
+2³1¶
+2³1¼
+2³1¿
+2³1b
+2³1c
+2³1d
+2³1f
+2³1g
+2³1h
+2³1j
+2³1k
+2³1l
+2³1m
+2³1n
+2³1p
+2³1r
+2³1s
+2³1t
+2³1w
+2³1z
+2ñ1æ
+2ñ1³
+2ñ1ñ
+2ñ1¶
+2ñ1¼
+2ñ1¿
+2ñ1b
+2ñ1c
+2ñ1d
+2ñ1f
+2ñ1g
+2ñ1h
+2ñ1j
+2ñ1k
+2ñ1l
+2ñ1m
+2ñ1n
+2ñ1p
+2ñ1r
+2ñ1s
+2ñ1t
+2ñ1w
+2ñ1z
+2¶æc
+2¶1¶
+2¶1¼
+2¶1¿
+2¶1b
+2¶1d
+2¶1f
+2¶1g
+2¶1k
+2¶1p
+2¶1s
+2¶1t
+2¶1z
+2¶lm
+2¶ln
+2¼1æ
+2¼1¶
+2¼1¿
+2¼1b
+2¼1c
+2¼1d
+2¼1f
+2¼1g
+2¼1k
+2¼1l
+2¼1m
+2¼1n
+2¼1p
+2¼1s
+2¼1t
+2¼1w
+2¼1z
+2¿1æ
+2¿1³
+2¿1ñ
+2¿1¶
+2¿1¼
+2¿1b
+2¿1c
+2¿1d
+2¿1f
+2¿1g
+2¿1j
+2¿1k
+2¿1l
+2¿1m
+2¿1n
+2¿1p
+2¿1r
+2¿1s
+2¿1t
+2¿1w
+2¿1z
+2b³k
+2b1æ
+2b1ñ
+2b1¶
+2b1¼
+2b1¿
+2b1c
+2b1d
+2b1f
+2b1g
+2b1k
+2b1m
+2b1n
+2b1p
+2b1s
+2b1t
+2b1z
+2brn
+2c1æ
+2c1ñ
+2c1¶
+2c1¼
+2c1¿
+2c1b
+2c1d
+2c1f
+2c1g
+2c1k
+2c1l
+2c1m
+2c1n
+2c1p
+2c1s
+2c1t
+2ch1æ
+2ch1ñ
+2ch1¶
+2ch1¼
+2ch1¿
+2ch1b
+2ch1c
+2ch1d
+2ch1f
+2ch1g
+2ch1k
+2ch1m
+2ch1n
+2ch1p
+2ch1s
+2ch1t
+2ch1z
+2cz1æ
+2cz1ñ
+2cz1¶
+2cz1¼
+2cz1¿
+2cz1b
+2cz1c
+2cz1d
+2cz1f
+2cz1g
+2cz1k
+2cz1l
+2cz1m
+2cz1n
+2cz1p
+2cz1s
+2cz1t
+2cz1z
+2d³b
+2d³sz
+2d¼1æ
+2d¼1ñ
+2d¼1¶
+2d¼1¼
+2d¼1¿
+2d¼1b
+2d¼1c
+2d¼1d
+2d¼1f
+2d¼1g
+2d¼1k
+2d¼1m
+2d¼1n
+2d¼1p
+2d¼1s
+2d¼1t
+2d¼1z
+2d¿1æ
+2d¿1ñ
+2d¿1¶
+2d¿1¼
+2d¿1¿
+2d¿1b
+2d¿1c
+2d¿1d
+2d¿1f
+2d¿1g
+2d¿1k
+2d¿1m
+2d¿1n
+2d¿1p
+2d¿1s
+2d¿1t
+2d¿1z
+2d1æ
+2d1ñ
+2d1¶
+2d1b
+2d1c
+2d1f
+2d1g
+2d1k
+2d1m
+2d1n
+2d1p
+2d1s
+2d1t
+2drn
+2dz1æ
+2dz1ñ
+2dz1¶
+2dz1¼
+2dz1¿
+2dz1b
+2dz1c
+2dz1d
+2dz1f
+2dz1g
+2dz1k
+2dz1l
+2dz1m
+2dz1n
+2dz1p
+2dz1s
+2dz1t
+2dz1z
+2f1c
+2f1k
+2f1m
+2f1n
+2g³b
+2g1æ
+2g1ñ
+2g1¶
+2g1¼
+2g1¿
+2g1b
+2g1c
+2g1d
+2g1f
+2g1k
+2g1m
+2g1p
+2g1s
+2g1t
+2g1z
+2h1æ
+2h1³
+2h1ñ
+2h1¶
+2h1¼
+2h1¿
+2h1b
+2h1c
+2h1d
+2h1f
+2h1g
+2h1j
+2h1k
+2h1l
+2h1m
+2h1n
+2h1p
+2h1r
+2h1s
+2h1t
+2h1w
+2h1z
+2j1æ
+2j1³
+2j1ñ
+2j1¶
+2j1¼
+2j1¿
+2j1b
+2j1c
+2j1d
+2j1f
+2j1g
+2j1h
+2j1k
+2j1l
+2j1m
+2j1n
+2j1p
+2j1r
+2j1s
+2j1t
+2j1w
+2j1z
+2k³b
+2k1æ
+2k1ñ
+2k1¶
+2k1¼
+2k1¿
+2k1b
+2k1c
+2k1d
+2k1f
+2k1g
+2k1m
+2k1n
+2k1p
+2k1s
+2k1sz
+2k1t
+2k1z
+2l1æ
+2l1³
+2l1ñ
+2l1¶
+2l1¼
+2l1¿
+2l1b
+2l1c
+2l1d
+2l1f
+2l1g
+2l1h
+2l1j
+2l1k
+2l1m
+2l1n
+2l1p
+2l1r
+2l1s
+2l1t
+2l1w
+2l1z
+2m1æ
+2m1³
+2m1ñ
+2m1¶
+2m1¼
+2m1¿
+2m1b
+2m1c
+2m1d
+2m1f
+2m1g
+2m1h
+2m1j
+2m1k
+2m1l
+2m1n
+2m1p
+2m1r
+2m1s
+2m1t
+2m1w
+2m1z
+2n1æ
+2n1³
+2n1ñ
+2n1¶
+2n1¼
+2n1¿
+2n1b
+2n1c
+2n1d
+2n1f
+2n1g
+2n1h
+2n1j
+2n1k
+2n1l
+2n1m
+2n1p
+2n1r
+2n1s
+2n1t
+2n1w
+2n1z
+2ntn
+2p1æ
+2p1ñ
+2p1¶
+2p1¼
+2p1¿
+2p1b
+2p1c
+2p1d
+2p1f
+2p1g
+2p1k
+2p1m
+2p1n
+2p1s
+2p1sz
+2p1t
+2p1z
+2pln
+2r1æ
+2r1³
+2r1ñ
+2r1¶
+2r1¼
+2r1¿
+2r1b
+2r1c
+2r1d
+2r1f
+2r1g
+2r1h
+2r1j
+2r1k
+2r1l
+2r1m
+2r1n
+2r1p
+2r1s
+2r1t
+2r1w
+2rz1æ
+2rz1³
+2rz1ñ
+2rz1¶
+2rz1¼
+2rz1¿
+2rz1b
+2rz1c
+2rz1d
+2rz1f
+2rz1g
+2rz1h
+2rz1j
+2rz1k
+2rz1l
+2rz1m
+2rz1n
+2rz1p
+2rz1r
+2rz1s
+2rz1t
+2rz1w
+2s³b
+2s1¼
+2s1¿
+2s1b
+2s1d
+2s1f
+2s1g
+2s1s
+2snk
+2stk
+2stn
+2stsz
+2sz1æ
+2sz1¶
+2sz1c
+2sz1f
+2sz1k
+2sz1l
+2sz1m
+2sz1n
+2sz1p
+2sz1s
+2sz1t
+2sz1w
+2sz1z
+2szln
+2t1æ
+2t1ñ
+2t1¶
+2t1¼
+2t1¿
+2t1b
+2t1c
+2t1d
+2t1f
+2t1g
+2t1k
+2t1m
+2t1n
+2t1p
+2t1s
+2t1z
+2tln
+2trk
+2trzn
+2w1æ
+2w1³
+2w1ñ
+2w1¶
+2w1¼
+2w1¿
+2w1b
+2w1c
+2w1d
+2w1f
+2w1g
+2w1j
+2w1k
+2w1l
+2w1m
+2w1n
+2w1p
+2w1r
+2w1s
+2w1t
+2w1z
+2z1æ
+2z1¶
+2z1c
+2z1d
+2z1f
+2z1k
+2z1p
+2z1s
+2z1t
+2zdk
+2zdn
+3d2niow
+3k2sz2t
+3m2k2n
+3m2nest
+3m2nezj
+3m2sk2n
+3p2neu
+3w2³ad
+3w2³os
+3w2czas
+4æ3æ
+4³3³
+4¼3¼
+4¿3¿
+4b3b
+4c3c
+4d3d
+4f3f
+4g3g
+4h3h
+4j3j
+4k3k
+4l3l
+4m3m
+4n3n
+4p3p
+4r3r
+4t3t
+4w3w
+4z3z
+8æ.
+8ææ.
+8æ³.
+8æñ.
+8æ¶.
+8æ¼.
+8æ¿.
+8æb.
+8æc.
+8æd.
+8æf.
+8æg.
+8æh.
+8æj.
+8æk.
+8æl.
+8æm.
+8æn.
+8æp.
+8ær.
+8æs.
+8æt.
+8æv.
+8æw.
+8æx.
+8æz.
+8³.
+8³æ.
+8³³.
+8³ñ.
+8³¶.
+8³¼.
+8³¿.
+8³b.
+8³c.
+8³d.
+8³f.
+8³g.
+8³h.
+8³j.
+8³k.
+8³l.
+8³m.
+8³n.
+8³p.
+8³r.
+8³s.
+8³t.
+8³v.
+8³w.
+8³x.
+8³z.
+8ñ.
+8ñæ.
+8ñ³.
+8ññ.
+8ñ¶.
+8ñ¼.
+8ñ¿.
+8ñb.
+8ñc.
+8ñd.
+8ñf.
+8ñg.
+8ñh.
+8ñj.
+8ñk.
+8ñl.
+8ñm.
+8ñn.
+8ñp.
+8ñr.
+8ñs.
+8ñt.
+8ñv.
+8ñw.
+8ñx.
+8ñz.
+8¶.
+8¶æ.
+8¶³.
+8¶ñ.
+8¶¶.
+8¶¼.
+8¶¿.
+8¶b.
+8¶c.
+8¶d.
+8¶f.
+8¶g.
+8¶h.
+8¶j.
+8¶k.
+8¶l.
+8¶m.
+8¶n.
+8¶p.
+8¶r.
+8¶s.
+8¶t.
+8¶v.
+8¶w.
+8¶x.
+8¶z.
+8¼.
+8¼æ.
+8¼³.
+8¼ñ.
+8¼¶.
+8¼¼.
+8¼¿.
+8¼b.
+8¼c.
+8¼d.
+8¼f.
+8¼g.
+8¼h.
+8¼j.
+8¼k.
+8¼l.
+8¼m.
+8¼n.
+8¼p.
+8¼r.
+8¼s.
+8¼t.
+8¼v.
+8¼w.
+8¼x.
+8¼z.
+8¿.
+8¿æ.
+8¿³.
+8¿ñ.
+8¿¶.
+8¿¼.
+8¿¿.
+8¿b.
+8¿c.
+8¿d.
+8¿f.
+8¿g.
+8¿h.
+8¿j.
+8¿k.
+8¿l.
+8¿m.
+8¿n.
+8¿p.
+8¿r.
+8¿s.
+8¿t.
+8¿v.
+8¿w.
+8¿x.
+8¿z.
+8b.
+8bæ.
+8b³.
+8bñ.
+8b¶.
+8b¼.
+8b¿.
+8bb.
+8bc.
+8bd.
+8bf.
+8bg.
+8bh.
+8bj.
+8bk.
+8bl.
+8bm.
+8bn.
+8bp.
+8br.
+8brz.
+8bs.
+8bt.
+8bv.
+8bw.
+8bx.
+8bz.
+8c.
+8cæ.
+8c³.
+8cñ.
+8c¶.
+8c¼.
+8c¿.
+8cb.
+8cc.
+8cd.
+8cf.
+8cg.
+8ch.
+8ch³.
+8chrz.
+8chw.
+8cj.
+8ck.
+8cl.
+8cm.
+8cn.
+8cp.
+8cr.
+8cs.
+8ct.
+8cv.
+8cw.
+8cx.
+8cz.
+8czt.
+8d.
+8dæ.
+8d³.
+8dñ.
+8d¶.
+8d¼.
+8d¿.
+8db.
+8dc.
+8dd.
+8df.
+8dg.
+8dh.
+8dj.
+8dk.
+8dl.
+8dm.
+8dn.
+8dp.
+8dr.
+8drz.
+8ds.
+8dt.
+8dv.
+8dw.
+8dx.
+8dz.
+8f.
+8fæ.
+8f³.
+8fñ.
+8f¶.
+8f¼.
+8f¿.
+8fb.
+8fc.
+8fd.
+8ff.
+8fg.
+8fh.
+8fj.
+8fk.
+8fl.
+8fm.
+8fn.
+8fp.
+8fr.
+8fs.
+8ft.
+8fv.
+8fw.
+8fx.
+8fz.
+8g.
+8gæ.
+8g³.
+8gñ.
+8g¶.
+8g¼.
+8g¿.
+8gb.
+8gc.
+8gd.
+8gf.
+8gg.
+8gh.
+8gj.
+8gk.
+8gl.
+8gm.
+8gn.
+8gp.
+8gr.
+8gs.
+8gt.
+8gv.
+8gw.
+8gx.
+8gz.
+8h.
+8hæ.
+8h³.
+8hñ.
+8h¶.
+8h¼.
+8h¿.
+8hb.
+8hc.
+8hd.
+8hf.
+8hg.
+8hh.
+8hj.
+8hk.
+8hl.
+8hm.
+8hn.
+8hp.
+8hr.
+8hs.
+8ht.
+8hv.
+8hw.
+8hx.
+8hz.
+8j.
+8jæ.
+8j³.
+8jñ.
+8j¶.
+8j¼.
+8j¿.
+8jb.
+8jc.
+8jd.
+8jf.
+8jg.
+8jh.
+8jj.
+8jk.
+8jl.
+8jm.
+8jn.
+8jp.
+8jr.
+8js.
+8jt.
+8jv.
+8jw.
+8jx.
+8jz.
+8k.
+8kæ.
+8k³.
+8kñ.
+8k¶.
+8k¼.
+8k¿.
+8kb.
+8kc.
+8kd.
+8kf.
+8kg.
+8kh.
+8kj.
+8kk.
+8kl.
+8km.
+8kn.
+8kp.
+8kr.
+8ks.
+8kst.
+8kt.
+8kv.
+8kw.
+8kx.
+8kz.
+8l.
+8læ.
+8l³.
+8lñ.
+8l¶.
+8l¼.
+8l¿.
+8lb.
+8lc.
+8ld.
+8lf.
+8lg.
+8lh.
+8lj.
+8lk.
+8ll.
+8lm.
+8ln.
+8lp.
+8lr.
+8ls.
+8lt.
+8lv.
+8lw.
+8lx.
+8lz.
+8m.
+8mæ.
+8m³.
+8mñ.
+8m¶.
+8m¼.
+8m¿.
+8mb.
+8mc.
+8md.
+8mf.
+8mg.
+8mh.
+8mj.
+8mk.
+8ml.
+8mm.
+8mn.
+8mp.
+8mr.
+8ms.
+8mst.
+8mt.
+8mv.
+8mw.
+8mx.
+8mz.
+8n.
+8næ.
+8n³.
+8nñ.
+8n¶.
+8n¼.
+8n¿.
+8nb.
+8nc.
+8nd.
+8nf.
+8ng.
+8nh.
+8nj.
+8nk.
+8nl.
+8nm.
+8nn.
+8np.
+8nr.
+8ns.
+8nt.
+8nv.
+8nw.
+8nx.
+8nz.
+8p.
+8pæ.
+8p³.
+8pñ.
+8p¶.
+8p¼.
+8p¿.
+8pb.
+8pc.
+8pd.
+8pf.
+8pg.
+8ph.
+8pj.
+8pk.
+8pl.
+8pm.
+8pn.
+8pp.
+8pr.
+8prz.
+8ps.
+8pt.
+8pv.
+8pw.
+8px.
+8pz.
+8r.
+8ræ.
+8r³.
+8rñ.
+8r¶.
+8r¼.
+8r¿.
+8rb.
+8rc.
+8rd.
+8rf.
+8rg.
+8rh.
+8rj.
+8rk.
+8rl.
+8rm.
+8rn.
+8rp.
+8rr.
+8rs.
+8rsz.
+8rt.
+8rv.
+8rw.
+8rx.
+8rz.
+8rz³.
+8s.
+8sæ.
+8s³.
+8sñ.
+8s¶.
+8s¼.
+8s¿.
+8sb.
+8sc.
+8sch.
+8sd.
+8sf.
+8sg.
+8sh.
+8sj.
+8sk.
+8skrz.
+8sl.
+8sm.
+8sn.
+8sp.
+8sr.
+8ss.
+8st.
+8str.
+8strz.
+8stw.
+8sv.
+8sw.
+8sx.
+8sz.
+8szcz.
+8szczb.
+8szk.
+8szn.
+8szt.
+8sztr.
+8t.
+8tæ.
+8t³.
+8tñ.
+8t¶.
+8t¼.
+8t¿.
+8tb.
+8tc.
+8td.
+8tf.
+8tg.
+8th.
+8tj.
+8tk.
+8tl.
+8tm.
+8tn.
+8tp.
+8tr.
+8trz.
+8ts.
+8tt.
+8tv.
+8tw.
+8tx.
+8tz.
+8v.
+8væ.
+8v³.
+8vñ.
+8v¶.
+8v¼.
+8v¿.
+8vb.
+8vc.
+8vd.
+8vf.
+8vg.
+8vh.
+8vj.
+8vk.
+8vl.
+8vm.
+8vn.
+8vp.
+8vr.
+8vs.
+8vt.
+8vv.
+8vw.
+8vx.
+8vz.
+8w.
+8wæ.
+8w³.
+8wñ.
+8w¶.
+8w¼.
+8w¿.
+8wb.
+8wc.
+8wd.
+8wf.
+8wg.
+8wh.
+8wj.
+8wk.
+8wl.
+8wm.
+8wn.
+8wp.
+8wr.
+8ws.
+8wt.
+8wv.
+8ww.
+8wx.
+8wz.
+8x.
+8xæ.
+8x³.
+8xñ.
+8x¶.
+8x¼.
+8x¿.
+8xb.
+8xc.
+8xd.
+8xf.
+8xg.
+8xh.
+8xj.
+8xk.
+8xl.
+8xm.
+8xn.
+8xp.
+8xr.
+8xs.
+8xt.
+8xv.
+8xw.
+8xx.
+8xz.
+8z.
+8zæ.
+8z³.
+8zñ.
+8z¶.
+8z¼.
+8z¿.
+8zb.
+8zc.
+8zd.
+8zdr.
+8zdrz.
+8zf.
+8zg.
+8zh.
+8zj.
+8zk.
+8zl.
+8zm.
+8zn.
+8zp.
+8zr.
+8zs.
+8zt.
+8zv.
+8zw.
+8zx.
+8zz.
+a1
+a2u
+a2y
+aa2
+ae2
+ai2
+ao2
+be2eth
+be2f3sz2
+be2k1hend
+bi2n3o2ku
+bi2sz3kop
+bi2z3ne2s3m
+bi2z3nes
+birmin2g1ham
+blo2k1hauz
+bo2s3ma
+br2d
+bro2a2d3way
+bu2sz3me
+buk2sz3pan
+busine2ss3m
+busines2s
+c4h
+c4z
+cal2d1well
+ch2³
+ch2j
+ch2l
+ch2r
+ch2w
+chus1t
+cu2r7zon
+d¿2³
+d¿2j
+d¿2l
+d¿2r
+d¿2w
+d¿e4z3b
+d¿e4z3m
+d4¼
+d4¿
+d4z
+deut4sch3land
+drz2w
+du2sz3past
+e1
+e2r5zac
+e2u
+e2y
+e3u2sz
+ea2
+ee2
+ei2
+eo2
+fi2s3harm
+fi2sz3bin
+fo2k2s3t
+fo2r5zac
+fol2k1lor
+fos2f1a2zot
+ga3d2get
+gado3p2ta
+gol2f3s
+golfsz2
+gran2d1ilo
+gro4t3r
+hi2sz3p
+hu2cz1w
+hu2x3ley
+i1
+i2±
+i2ê
+i2ó
+i2a
+i2e
+i2i
+i2o
+i2u
+i2y
+in4nsbruck
+in4sbruc
+j2t1³
+j2t1r
+ja4z4z3b
+ja4z4z3m
+karl2s1kron
+karl2s1ruhe
+kir2chhoff
+kongre2s3m
+led1w
+lu2ft3waffe
+lu2ks1fer
+ly2o
+ma2r5z³
+ma2r5zl
+ma2r5zn
+mi2sz1masz
+mie2r5z³
+mie2r5zi
+mon2t3real
+moza2i3k
+mu2r7zasich3l
+na4³3kows
+na4r3v
+o1
+o2y
+oa2
+och3mistrz
+oe2
+of2f3set
+oi2
+oo2
+ou2
+pa2n3a2mer
+pa2s3cal
+pa2s3ch
+po³u3d2ni
+po3d4nieprz
+po3m2n±
+po3m2nê
+po3m2ni
+po4rt2s3mo2uth
+po4rt3land
+poli3e2t
+poli3u2re
+powsze3d2ni
+pr2chal
+pre2sz3pa
+r4z
+ro2e3nt2gen
+ro2k3rocz
+ro2s3to3c2k
+s4z
+se2t3le
+sko2r5zoner
+sm2r
+sowi3z2
+sy2n3opt
+sy2s1tem
+sza2sz1³y
+sze2z1long
+sze4¶æ
+szto2k1holm
+szyn2k1was
+to3y2o3t
+turboo2d3rzut
+tygo3d2ni
+u1
+u2y
+ua2
+ue2
+ui2
+uo2
+uu2
+vo2lk2s3
+we2e2k1end
+we4st3f
+we4st3m
+y1
+ya2
+ye2
+yi2
+yo2
+yu2
+ze4p3p
diff --git a/hyph/hyph/portugal.lh b/hyph/hyph/portugal.lh
new file mode 100644
index 0000000..3ab9af4
--- /dev/null
+++ b/hyph/hyph/portugal.lh
@@ -0,0 +1,121 @@
+Lout hyphenation information
+
+% COPYRIGHT (C) 1999 José Roberto B. de A. Monteiro
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either Version 3, or (at your option)
+% any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program; if not, write to the Free Software
+% Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA
+
+% Portuguese hyphenation file, created by José Roberto B. de A. Monteiro
+% at 29 october 1999 from scratch
+%
+% (C) 1999 José Roberto B. de A. Monteiro (betoes@sel.eesc.sc.usp.br)
+%
+% This is free software. You may copy it or redistribute under the
+% terms of GNU General Public License.
+%
+% END OF COPYRIGHT NOTICE
+%
+%
+
+Classes:
+@!$%^&*()_-+=~`{[}]:;'|<,.>?/0123456789
+aA
+áÁ
+âÂ
+àÀ
+ãÃ
+bB
+cC
+çÇ
+dD
+eE
+éÉ
+êÊ
+fF
+gG
+hH
+iI
+íÍ
+jJ
+kK
+lL
+mM
+nN
+oO
+óÓ
+ôÔ
+õÕ
+pP
+qQ
+rR
+sS
+tT
+uU
+úÚ
+üÜ
+vV
+wW
+xX
+yY
+zZ
+
+Patterns:
+% simple patterns
+1ba 1be 1bi 1bo 1bu 1bá 1bé 1bí 1bó 1bú 1bâ 1bê 1bô 1bã 1bõ
+1ca 1ce 1ci 1co 1cu 1cá 1cé 1cí 1có 1cú 1câ 1cê 1cô 1cã 1cõ
+1da 1de 1di 1do 1du 1dá 1dé 1dí 1dó 1dú 1dâ 1dê 1dô 1dã 1dõ
+1fa 1fe 1fi 1fo 1fu 1fá 1fé 1fí 1fó 1fú 1fâ 1fê 1fô 1fã 1fõ
+1ga 1ge 1gi 1go 1gu 1gá 1gé 1gí 1gó 1gú 1gâ 1gê 1gô 1gã 1gõ
+1ha 1he 1hi 1ho 1hu 1há 1hé 1hí 1hó 1hú 1hâ 1hê 1hô 1hã 1hõ
+1ja 1je 1ji 1jo 1ju 1já 1jé 1jí 1jó 1jú 1jâ 1jê 1jô 1jã 1jõ
+1ka 1ke 1ki 1ko 1ku 1ká 1ké 1kí 1kó 1kú 1kâ 1kê 1kô 1kã 1kõ
+1la 1le 1li 1lo 1lu 1lá 1lé 1lí 1ló 1lú 1lâ 1lê 1lô 1lã 1lõ
+1ma 1me 1mi 1mo 1mu 1má 1mé 1mí 1mó 1mú 1mâ 1mê 1mô 1mã 1mõ
+1na 1ne 1ni 1no 1nu 1ná 1né 1ní 1nó 1nú 1nâ 1nê 1nô 1nã 1nõ
+1pa 1pe 1pi 1po 1pu 1pá 1pé 1pí 1pó 1pú 1pâ 1pê 1pô 1pã 1põ
+% q-u is not used
+1ra 1re 1ri 1ro 1ru 1rá 1ré 1rí 1ró 1rú 1râ 1rê 1rô 1rã 1rõ
+1sa 1se 1si 1so 1su 1sá 1sé 1sí 1só 1sú 1sâ 1sê 1sô 1sã 1sõ
+1ta 1te 1ti 1to 1tu 1tá 1té 1tí 1tó 1tú 1tâ 1tê 1tô 1tã 1tõ
+1va 1ve 1vi 1vo 1vu 1vá 1vé 1ví 1vó 1vú 1vâ 1vê 1vô 1vã 1võ
+1wa 1we 1wi 1wo 1wu 1wá 1wé 1wí 1wó 1wú 1wâ 1wê 1wô 1wã 1wõ
+1xa 1xe 1xi 1xo 1xu 1xá 1xé 1xí 1xó 1xú 1xâ 1xê 1xô 1xã 1xõ
+1ya 1ye 1yi 1yo 1yu 1yá 1yé 1yí 1yó 1yú 1yâ 1yê 1yô 1yã 1yõ
+1za 1ze 1zi 1zo 1zu 1zá 1zé 1zí 1zó 1zú 1zâ 1zê 1zô 1zã 1zõ
+1-
+
+1b2l 1b2r
+1c2h 1c2l 1c2r
+1d2l 1d2r
+1f2l 1f2r
+1g2l 1g2r 1gu4a 1gu4e 1gu4i 1gü4e 1gü4i
+1k2l 1k2r
+1l2h
+1n2h
+1p2l 1p2r
+1qu4a 1qu4e 1qu4i 1qu4o 1qü4e 1qü4i
+1t2l 1t2r
+1v2l 1v2r
+1w2l 1w2r
+
+a3a a3e a3o
+c3c
+e3a e3e e3o
+i3a i3e i3i i3o i3â i3ê i3ô
+o3a o3e o3o
+r3r
+s3s
+u3a u3e u3o u3u
+% sub- ...
+su2b2r su2b2l
diff --git a/hyph/hyph/programming.lh b/hyph/hyph/programming.lh
new file mode 100644
index 0000000..a08df6a
--- /dev/null
+++ b/hyph/hyph/programming.lh
@@ -0,0 +1,32 @@
+Lout hyphenation information
+%
+% COPYRIGHT (C) 2008 Jeffrey H. Kingston
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either Version 3, or (at your option)
+% any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program; if not, write to the Free Software
+% Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA
+
+% Created by Jeff Kingston, 30 August 2008, from scratch
+% Used for hyphenating programming language identifiers
+% This file has been placed in the public domain by its author.
+
+Classes:
+@!$%^&*()-+=~`{[}]:;'|<,.>?/0123456789
+_
+abcdefghijklmnopqrstuvwxyz
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
+
+Patterns:
+a1A
+_1a
+_1A
diff --git a/hyph/hyph/russian.lh b/hyph/hyph/russian.lh
new file mode 100644
index 0000000..a56842b
--- /dev/null
+++ b/hyph/hyph/russian.lh
@@ -0,0 +1,6146 @@
+Lout hyphenation information
+%
+% This file has been placed in the public domain by its authors (see below)
+%
+% This is a Russian (koi8-r) hyphenation file constructed
+% by Valeriy Ushakov on 16 November 1994 from a TeX file
+% written by Dimitri Vulis. Original header follows:
+%
+% This is rhyphen.tex (Russian hyphenation patterns) as of 12/31/89
+% This code was written by Dimitri Vulis and placed into public domain.
+% There is no copyright associated with this code. Use it as you wish.
+%
+
+Classes:
+@!$%^&*()_-+=~`{[}]:;'|<,.>?/0123456789
+aA
+bB
+cC
+dD
+eE
+fF
+gG
+hH
+iI
+jJ
+kK
+lL
+mM
+nN
+oO
+pP
+qQ
+rR
+sS
+tT
+uU
+vV
+wW
+xX
+yY
+zZ
+Àà
+Áá
+Ââ
+Ãã
+Ää
+Åå
+Ææ
+Çç
+Èè
+Éé
+Êê
+Ëë
+Ìì
+Íí
+Îî
+Ïï
+Ðð
+Ññ
+Òò
+Óó
+Ôô
+Õõ
+Öö
+×÷
+Øø
+Ùù
+Úú
+Ûû
+Üü
+Ýý
+Þþ
+ßÿ
+
+Patterns:
+.ÁÌØ5
+.ÁÓ6Ë
+.ÂÅÚ1
+.ÂÅ2ÚÕ
+.×Å2Ó1Ë
+.×Å5Ô×Ì
+.×Ï5×
+.ÇÏ2ÓÂ
+.Ä×Ï2Å
+.ÄÖÏ6Õ
+.ÄÉ2Á
+.ÄÏ1ÓÍ
+.ÅÚ5
+.ÖÅÒ5Ô6
+.ÚÁÕ2
+.ÚÁ1Û2
+.ÚÏ2Ï3
+.ÉÇ2
+.ÉÚ1Î
+.ÉÚ1Ò
+.ÉÓ1ÔÉ
+.ÉÓ5ÔÒ
+.ÌÅ1Í
+.ÌÅÓ2Ë
+.ÌØ2
+.ÍÅ5Ä6Ì
+.ÍÅ6ÖÁ
+.ÍÅÌÉ6
+.ÍÉ2ÎÁÔ
+.ÎÁ5×6
+.ÎÁ1Ó
+.ÎÁ1Þ2Î
+.ÎÅÁ6
+.ÎÅ1×
+.ÎÅ6×ÒÉ
+.ÎÅ1Ú2
+.ÎÅ5Ì
+.ÎÏÓ5Ë
+.ÏÂ1ÌÅ
+.ÏÂ5ÌÉ×
+.ÏÂ5ÌÉÔ
+.ÏÂ1ÌÏ
+.ÏÂ1ÏÓÎ
+.ÏÂ1ÒÅ
+.ÏÂ1ÒÕ
+.ÏÂ1Õ2Þ
+.ÏÇ1Î
+.ÏÚ2
+.ÏÓ2Ð
+.ÏÔ3×
+.ÏÔ1Ò
+.ÐÏ1×2
+.ÐÏ1Ö2
+.ÐÏÌÕ1
+.ÐÒÅ1Ì
+.ÐÒÉ1Þ
+.ÒÁ2Ó1ÔÁ
+.ÒÁ2ÓÔÏ
+.ÒÅÊ2Ó1
+.ÔÁ5ÓÍ
+.ÔÅË1Ó
+.ÔÒÁÎ2Ó1
+.ÔØ2
+.ÕË2
+.ÕÍÙ6Û5
+.ÕÒ6×
+.ÆÁ5Õ
+.ÈÌÁ2
+.ÞÁ2Å
+Á1Á
+ÁÁ6Â
+Á1ÂÁ
+5ÁÂÁÔÁ
+Á1ÂÅ
+ÁÂÅ5ÓÔ
+Á1ÂÉ
+Á1ÂÌÁ
+Á1ÂÌÅ
+Á1ÂÌÉ
+Á1ÂÌÏ
+Á1ÂÌÕ
+Á1ÂÌÙ
+Á1ÂÏ
+Á1ÂÒÁ
+Á1ÂÒÅ
+Á1ÂÒÉ
+Á1ÂÒÏ
+Á1ÂÒÕ
+Á1ÂÒÙ
+Á5ÂÒÑ
+Á1ÂÕ
+Á1ÂÈ
+Á1ÂÙ
+Á1ÂØÅ
+Á1ÂØÉ
+Á1ÂØÀ
+Á1ÂØÑ
+Á1ÂÀ
+Á1ÂÑ
+Á1×Á
+1Á×Ç
+Á1×Å
+Á1×É
+Á1×ÌÁ
+Á1×ÌÅ
+Á1×ÌÉ
+Á1×ÌÏ
+Á1×ÌÕ
+Á1×ÌÙ
+Á1×Ï
+Á2×ÏÔ
+Á6×Ð
+Á1×ÒÁ
+Á1×ÒÅ
+Á1×ÒÉ
+Á1×ÒÏ
+Á1×ÒÕ
+Á1×ÒÙ
+Á1×Õ
+Á1×Ù
+Á1×ØÅ
+Á1×ØÉ
+Á1×ØÀ
+Á1×ØÑ
+Á5×Ü
+Á1×À
+Á1×Ñ
+Á1ÇÁ
+ÁÇÁ5Ó6
+Á5Ç×
+ÁÇ1Ä
+Á1ÇÅ
+Á1ÇÉ
+Á1ÇÌ
+Á1ÇÌÁ
+Á1ÇÌÅ
+Á1ÇÌÉ
+Á1ÇÌÏ
+Á1ÇÌÕ
+Á1ÇÌÙ
+Á1ÇÏ
+ÁÇÏ5Ó
+Á1ÇÒÁ
+Á1ÇÒÅ
+Á1ÇÒÉ
+1Á1ÇÒÏ
+Á1ÇÒÕ
+Á1ÇÒÙ
+Á3ÇÕ
+Á1ÇÙ
+Á1ÇØÅ
+Á1ÇØÉ
+Á1ÇØÀ
+Á1ÇØÑ
+Á1ÇÀ
+Á1ÇÑ
+Á1ÄÁ
+ÁÄ1ÁÇÅ
+Á1Ä×Á
+Á1Ä×Å
+Á1Ä×É
+Á1Ä×Ï
+Á1Ä×Õ
+Á1Ä×Ù
+Á1ÄÅ
+Á1ÄÖ
+ÁÄÖÏ6
+ÁÄ5ÚÉ
+Á1ÄÉ
+ÁÄÉ2Ï
+Á2Ä1Ì
+Á1ÄÌÁ
+Á1ÄÌÅ
+Á1ÄÌÉ
+Á1ÄÌÏ
+Á1ÄÌÕ
+Á1ÄÌÙ
+1ÁÄÍ
+Á1ÄÏ
+Á3ÄÒÁ
+Á1ÄÒÅ
+ÁÄ5ÒÅÚ
+Á1ÄÒÉ
+Á1ÄÒÏ
+Á1ÄÒÕ
+Á1ÄÒÙ
+Á1ÄÕ
+Á1ÄÃ
+Á1ÄÙ
+Á1ÄØÅ
+Á1ÄØÉ
+Á1ÄØÀ
+Á1ÄØÑ
+Á1ÄÀ
+Á1ÄÑ
+Á1Å
+ÁÅ2Â
+ÁÅ6ÄÉ
+ÁÅ2Ì
+Á1ÖÁ
+Á1ÖÅ
+Á1ÖÖ
+Á1ÖÉ
+Á1ÖÍ
+Á1ÖÏ
+Á1ÖÒ
+Á1ÖÕ
+Á1ÖØÅ
+Á1ÖØÉ
+Á1ÖØÀ
+Á1ÖØÑ
+2ÁÚ
+Á1ÚÁ
+ÁÚ1×Å
+ÁÚ1×É
+ÁÚ1×Ï
+ÁÚ1ÄÁ
+ÁÚ5ÄÏ
+ÁÚ5ÄÒÏ
+ÁÚ5ÄÕ
+Á1ÚÅ
+Á1ÚÉ
+ÁÚÉÁ6
+ÁÚÉ5Í6
+Á1ÚÏ
+ÁÚ1Ò
+Á5ÚÕ
+ÁÚ5ÕÂÅ
+ÁÚ6ÕÓ
+Á6ÚÕÞ
+Á1ÚÙ
+Á1ÚØÅ
+Á1ÚØÉ
+Á1ÚØÀ
+Á1ÚØÑ
+Á1ÚÀ
+Á1ÚÑ
+Á1É
+ÁÉ2Ç
+Á6ÉÄ
+ÁÉÚ5
+ÁÉ6ÍÅÔ
+ÁÉ2ÎÉ
+Á2ÉÈ
+2ÁÊ
+ÁÊ2ÍÁ
+Á1ËÁ
+Á1Ë×Á
+Á1Ë×Å
+Á1Ë×É
+Á1Ë×Ï
+Á1Ë×Õ
+Á1Ë×Ù
+Á1ËÅ
+Á1ËÉ
+Á1ËÌÁ
+Á1ËÌÅ
+Á1ËÌÉ
+Á1ËÌÏ
+Á1ËÌÕ
+Á1ËÌÙ
+ÁË1Î
+Á1ËÏ
+Á1ËÒÁ
+Á1ËÒÅ
+Á1ËÒÉ
+Á1ËÒÏ
+Á1ËÒÕ
+Á1ËÒÙ
+ÁË1Ó
+Á1ËÕ
+Á1ËÙ
+Á1ËØÅ
+Á1ËØÉ
+Á1ËØÀ
+Á1ËØÑ
+Á1ËÀ
+Á1ËÑ
+Á1ÌÁ
+Á2ÌÁÂ
+1ÁÌÇ
+Á1ÌÅ
+Á5ÌÉ
+6ÁÌÉÎ
+Á1ÌÏ
+Á1ÌÕ
+Á1ÌÙ
+Á1ÌØÅ
+Á1ÌØÉ
+Á1ÌØÀ
+Á1ÌØÑ
+Á1ÌÀ
+Á1ÌÑ
+2Á1ÍÁ
+Á1ÍÅ
+Á1ÍÉ
+Á1ÍÌÁ
+Á1ÍÌÅ
+Á1ÍÌÉ
+Á1ÍÌÏ
+Á1ÍÌÕ
+Á1ÍÌÙ
+Á1ÍÎÏ
+Á1ÍÏ
+ÁÍÏ1Ó
+1ÁÍÐÅ
+Á1ÍÒÁ
+Á1ÍÒÅ
+Á1ÍÒÉ
+Á1ÍÒÏ
+Á1ÍÒÕ
+Á1ÍÒÙ
+Á1ÍÕ
+ÁÍ1Þ
+Á1ÍÛ
+Á1ÍÙ
+Á1ÍØÅ
+Á1ÍØÉ
+Á1ÍØÀ
+Á1ÍØÑ
+Á1ÍÀ
+Á1ÍÑ
+Á1ÎÁ
+Á1ÎÅ
+Á1ÎÉ
+Á6ÎÉÎÓ
+Á1ÎÏ
+Á2Î1ÏÂ
+6ÁÎÏÓ
+Á1ÎÒÁ
+Á1ÎÒÅ
+Á1ÎÒÉ
+Á1ÎÒÏ
+Á1ÎÒÕ
+Á1ÎÒÙ
+ÁÎ2Ó1ËÒ
+ÁÎ2ÓÐ
+ÁÎ2ÓÃ
+Á1ÎÕ
+Á2Î5ÕÚ
+Á1ÎÙ
+Á1ÎØÅ
+Á1ÎØÉ
+Á1ÎØÀ
+Á1ÎØÑ
+Á1ÎÀ
+Á1ÎÑ
+2Á3Ï
+ÁÏ6Ë
+ÁÏ2Ð
+ÁÏ2Ó
+ÁÏÔ5Ò
+Á1ÐÁ
+Á1ÐÅ
+Á1ÐÉ
+Á1ÐÌÁ
+Á1ÐÌÅ
+Á1ÐÌÉ
+Á1ÐÌÏ
+Á1ÐÌÕ
+Á1ÐÌÙ
+Á1ÐÏ
+1ÁÐÐ
+Á1ÐÒÁ
+Á1ÐÒÅ
+Á1ÐÒÉ
+ÁÐÒÉ2ÚÎ
+Á1ÐÒÏ
+Á1ÐÒÕ
+Á1ÐÒÙ
+Á5Ð2Ô
+Á1ÐÔÁ
+Á1ÐÔÅ
+Á1ÐÔÉ
+Á1ÐÔÏ
+Á1ÐÔÕ
+Á1ÐÔÙ
+Á1ÐÕ
+Á1ÐÙ
+Á1ÐØÅ
+Á1ÐØÉ
+Á1ÐØÀ
+Á1ÐØÑ
+Á1ÐÀ
+Á1ÐÑ
+Á1Ò6Á
+Á1ÒÅ
+Á1ÒÉ
+5ÁÒÍÅ
+Á1ÒÏ
+ÁÒ2Ô1ÏÒ
+Á1ÒÕ
+Á1ÒÙ
+Á1ÒØÅ
+Á1ÒØÉ
+Á1ÒØÀ
+Á1ÒØÑ
+Á1ÒÀ
+Á1ÒÑ
+Á1ÓÁ
+Á1Ó×Á
+Á1Ó×Å
+Á1Ó×É
+Á1Ó×Ï
+Á1Ó×Õ
+Á1Ó×Ù
+6Á1ÓÅ
+Á1ÓÉ
+ÁÓ1Ë
+Á1ÓË×Á
+Á1ÓË×Å
+Á1ÓË×É
+Á1ÓË×Ï
+Á1ÓË×Õ
+Á1ÓË×Ù
+Á1ÓËÒÁ
+Á1ÓËÒÅ
+Á1ÓËÒÉ
+Á1ÓËÒÏ
+Á1ÓËÒÕ
+Á1ÓËÒÙ
+ÁÓ5ÌÅÔ
+ÁÓ5ÌÑÍ
+ÁÓ5ÌÑÈ
+ÁÓ5ÍÉ
+Á1ÓÏ
+ÁÓ3ÐÏ
+ÁÓ1ÐÕ
+Á1ÓÒÁ
+Á1ÓÒÅ
+Á1ÓÒÉ
+Á1ÓÒÏ
+Á1ÓÒÕ
+Á1ÓÒÙ
+1ÁÓÓÉÇ
+ÁÓÓ6Ð
+Á1ÓÔÁ
+Á1ÓÔ×Á
+Á1ÓÔ×Å
+Á1ÓÔ×É
+Á1ÓÔ×Ï
+Á1ÓÔ×Õ
+Á1ÓÔ×Ù
+Á1ÓÔ×ØÅ
+Á1ÓÔ×ØÉ
+Á1ÓÔ×ØÀ
+Á1ÓÔ×ØÑ
+Á1ÓÔ×À
+Á1ÓÔ×Ñ
+Á1ÓÔÅ
+Á1ÓÔÉ
+Á1ÓÔÏ
+Á6Ó5ÔÏÍ
+Á1ÓÔÒÁ
+Á1ÓÔÒÅ
+Á1ÓÔÒÉ
+Á1ÓÔÒÏ
+Á1ÓÔÒÕ
+Á1ÓÔÒÙ
+Á1ÓÔÒØÅ
+Á1ÓÔÒØÉ
+Á1ÓÔÒØÀ
+Á1ÓÔÒØÑ
+Á1ÓÔÒÀ
+Á1ÓÔÒÑ
+Á1ÓÔÕ
+Á1ÓÔÙ
+Á1ÓÔØÅ
+Á1ÓÔØÉ
+Á1ÓÔØÀ
+Á1ÓÔØÑ
+Á1ÓÔÀ
+Á1ÓÔÑ
+Á6Ó5ÔÑÇ
+Á6ÓÔÑÎ
+Á1ÓÕ
+ÁÓ1Þ
+Á1Ó2ÛÅ
+Á1ÓÙ
+Á1ÓØÅ
+Á1ÓØÉ
+Á1ÓØÀ
+Á1ÓØÑ
+Á1ÓÀ
+Á1ÓÑ
+Á1ÔÁ
+1ÁÔÁË
+Á1Ô×Á
+Á1Ô×Å
+Á1Ô5×É
+Á1Ô×Ï
+Á1Ô×Õ
+Á1Ô×Ù
+Á1ÔÅ
+ÁÔÅ2Ó1
+Á1ÔÉ
+Á1ÔÏ
+Á6ÔÏÍÎ
+Á1ÔÒÁ
+Á1ÔÒÅ
+Á1ÔÒÉ
+Á1ÔÒÏ
+Á1ÔÒÕ
+Á1ÔÒÙ
+Á1ÔÕ
+Á1ÔÙ
+Á1ÔØÅ
+Á1ÔØÉ
+Á1ÔØÀ
+Á1ÔØÑ
+Á1ÔÀ
+Á1ÔÑ
+Á1Õ
+Á2ÕÍ
+Á2ÕÎ
+Á2ÕÓ
+ÁÕÓ5Ë
+ÁÕ2Ô1Ò
+Á3ÕÞ
+ÁÕ2ÞÉ
+Á2ÕÜ
+Á1ÆÁ
+Á1ÆÅ
+Á1ÆÉ
+Á1ÆÌÁ
+Á1ÆÌÅ
+Á1ÆÌÉ
+Á1ÆÌÏ
+Á1ÆÌÕ
+Á1ÆÌÙ
+Á1ÆÏ
+Á1ÆÒÁ
+Á1ÆÒÅ
+Á1ÆÒÉ
+Á1ÆÒÏ
+Á1ÆÒÕ
+Á1ÆÒÙ
+Á1ÆÕ
+Á1ÆØÅ
+Á1ÆØÉ
+Á1ÆØÀ
+Á1ÆØÑ
+Á1ÆÀ
+Á1ÆÑ
+Á1ÈÁ
+Á1ÈÄÁ
+Á1ÈÄÅ
+Á1ÈÄÉ
+Á1ÈÄÏ
+Á1ÈÄÕ
+Á1ÈÄÙ
+Á1ÈÅ
+Á1ÈÉ
+Á1ÈÏ
+Á1ÈÕ
+Á1ÈÙ
+Á1ÈØÅ
+Á1ÈØÉ
+Á1ÈØÀ
+Á1ÈØÑ
+Á1ÈÀ
+Á1ÈÑ
+Á1ÃÁ
+Á1ÃÅ
+Á1ÃÉ
+Á1ÃÏ
+Á1ÃÕ
+Á1ÃÙ
+Á1ÃØÅ
+Á1ÃØÉ
+Á1ÃØÀ
+Á1ÃØÑ
+Á1ÞÁ
+Á1ÞÅ
+ÁÞÅÓ2
+Á1ÞÉ
+ÁÞ1ÔÁ
+Á1ÞÕ
+Á1ÞØÅ
+Á1ÞØÉ
+Á1ÞØÀ
+Á1ÞØÑ
+2ÁÛ
+Á1ÛÁ
+Á6Û×
+Á1Û×Á
+Á1Û×Å
+Á1Û×É
+Á1Û×Ï
+Á1Û×Õ
+Á1Û×Ù
+Á1ÛÅ
+Á5ÛÉ
+Á1ÛÌÁ
+Á1ÛÌÅ
+Á1ÛÌÉ
+Á1ÛÌÏ
+Á1ÛÌÕ
+Á1ÛÌÙ
+Á1ÛÏ
+Á1ÛÒÁ
+Á1ÛÒÅ
+Á1ÛÒÉ
+Á1ÛÒÏ
+Á1ÛÒÕ
+Á1ÛÒÙ
+ÁÛ1ÔÁ
+Á1ÛÕ
+Á1ÛØÅ
+Á1ÛØÉ
+Á1ÛØÀ
+Á1ÛØÑ
+Á5Ý
+Á1ÝÁ
+Á1ÝÅ
+Á1ÝÉ
+Á1ÝÏ
+Á1ÝÕ
+Á1ÝØÅ
+Á1ÝØÉ
+Á1ÝØÀ
+Á1ÝØÑ
+Á1Ù
+Á1Ü1
+Á2ÜÒ
+Á1À
+Á1Ñ
+ÁÑ2Ú
+ÂÁ6Ë×
+ÂÁÓ1Í
+ÂÁ6È5Ò
+Â1ÁÜ
+Â1Â
+1Â1×
+6Â1Ç
+Â1Ä
+1ÂÅ
+ÂÅÇ5Î
+ÂÅ6ÄÌ
+ÂÅ2Ú1Á2
+ÂÅÚ1Ä2
+ÂÅ2Ú1É
+ÂÅ2ÚÏ2
+ÂÅÏ6
+ÂÅ2Ó1Ë
+2ÂÅÓ3Ð
+ÂÅ2ÓÔÁ
+ÂÅÓ1Þ
+Â1Ö
+ÂÚ2
+1ÂÚÄ2
+Â5ÚÅ
+5ÂÚÖ
+Â5ÚÉ
+Â1ÚÏ
+5ÂÉ2Ï
+ÂÉÏ5Ó
+ÂÉ6ÓË
+Â5Ë
+1ÂÌ
+Â1ÌÁ×
+2ÂÌÁÓ
+2ÂÌÄ
+Â1ÌÅÇ
+ÂÌÅ2Ó5Ë
+Â5ÌÉÚÁ
+ÂÌ1ÉÓÐ
+Â1ÌÏÖ
+Â1ÌÏÍ
+Â6ÌÕÄ
+6ÂÌÈ
+2ÂÌØ5
+6Â1Í
+2Â1Î
+Â1ÏÂ
+ÂÏÄ6Ò
+ÂÏ5ÄÒÏ
+ÂÏ1ÖÖ
+ÂÏ1Ú
+ÂÏ6ÚÕ
+ÂÏ1Ò×
+ÂÏÒÔ5
+ÂÏÒ6ÔÒ
+ÂÏ1ÓË
+ÂÏ2ÓÏÂ
+ÂÏ5Ó6Ð
+ÂÏ1Ó2Ó
+5ÂÏÔ
+ÂÏ6Ô×
+ÂÏ1Ô2Ì
+5ÂÏÃ
+Â1Ð
+6ÂÒ.
+ÂÒÁ6ÓÌ
+ÂÒÁ3Õ
+Â1ÒÙ×
+Â5ÒÙÇ
+Â5ÒÙÄ
+6Â1Ó2
+2Â1Ô
+1ÂÕ
+Â1ÕÇ
+ÂÕ2ÇÌ
+Â1Õ2ÓÌ
+Â1Æ
+Â1È
+2Â1Ã
+Â1Þ
+Â1Û
+Â1Ý
+Â2ß
+ÂÜ1Ò
+1ÂÀ
+1ÂÑ
+1×ÁÇ
+5×ÁË
+×ÁÎ5Ó6Ã
+×Á1ÓÔ
+×ÁÈ1
+×1Â
+×6ÂÉ
+×1×
+×1Ç
+×1Ä
+×ÄÏ1Ó
+1×ÅÇ
+1×ÅÌÌ
+×Å5ÏÌÁ
+×ÅÏ2Ó
+×ÅÒ2È1Ò
+1×Ú2
+×2ÚÁ
+×Úß2
+×ÚÙÓ5
+×É6ÁË
+×É2ÁÍ
+×É6ÁÒ
+×É6ÁÓ
+×É5ÁÆ
+×É6ÄÌ
+×ÉÎ6ÄÒ
+5×ÉÎÔ
+6×5ÉÎÆ
+×É5ÏÌ
+×ÉÓÔ5Ì
+1×É2È1
+×1Ë
+×Ë1Î
+×6ËÕÓ
+1×Ì
+2×1ÌÁÂ
+2×1ÌÁÇ
+2×1ÌÅÓ
+×ÌÉ6Å
+6×5ÌÉË
+6×5ÌÉÞ
+2×ÌØ
+×1ÍÁ
+2×1ÍÉ
+×1ÍÏ
+×6ÍÏÇÏ
+×6ÍÏÞ
+×1Î
+×6ÎÅÓ
+×2ÎÕÛ
+×ÏÂÅÚ5
+×Ï1×Ë
+×Ï1Ç
+×ÏÚ1×
+×ÏÉ2Ó
+1×ÏË
+×Ï2Ó1Ë
+×Ï2ÓÔÒ
+×Ï6ÈÒ
+1×ÏÑ
+1×Ð
+×5ÐÏ6Ì
+1×Ò2
+2×Ò.
+×ÒÁ2Ö5Ä
+×5ÒÁÓ
+6×5ÒÁÃ
+6×5ÒÉÔÙ
+×5ÒÏÒ
+×ÒÏÓ5
+×ÒÏ5Ô
+×1Ó2
+1×2ÓÁ
+×6ÓÅÇ
+5×ÓÅÍ
+6×ÓË
+1×2ÓÐ
+1×2ÓÈ
+1×2ÓÀ
+×1Ô
+×ÔÏ3Ë2
+6×5ÔÒ
+1×Õ2Á
+1×ÕÄ
+×ÕÅ6Ä
+×Õ1Ú
+×ÕÏ6
+×Õ2È1
+×1Æ
+×1È
+×6ÈÏÄ
+×1Ã
+×1ÞÁ
+×1ÞÉ
+×1Û
+1×2ÛÉ×
+×1Ý
+1×ß2
+×Ù1ÓË
+×Ù5ÓÐ
+×Ù1Ó2Ó
+×Ù1È
+1×À
+1ÇÁ
+ÇÁ2Õ
+2Ç1Â
+5Ç×É
+Ç1×Ù
+5Ç×ØÀ
+Ç1Ç
+Ç5ÄÏ
+ÇÅÌÉ2Ï
+ÇÅ2Î1ÉÎ
+ÇÅ2ÎÒ
+ÇÅ6ÏÂ
+ÇÅ2ÏÄ
+ÇÅ6ÏË
+ÇÅ6ÏÎ
+ÇÅ2ÏÐ
+ÇÅ6ÏÒÉ
+ÇÅ2ÏÓ
+ÇÅ2ÏÔ
+ÇÅ2ÏÃ
+Ç1Ú
+2Ç1Ë
+ÇËÏ1×
+6ÇÌ.
+6Ç5ÌÁÊ
+6ÇÌ×
+1ÇÌÑ
+Ç1Í
+Ç1ÎÉ
+ÇÏ1Ú
+ÇÏ2Ó1Á
+ÇÏÓ1Ë
+ÇÏÓ3Ó
+ÇÏ6ÓÔÅÌ
+ÇÏ2Ó1ÔÒ
+ÇÏ1ÓÛ
+2Ç1Ð
+6ÇÒÅË
+2ÇÒÏÐ
+2Ç1Ó
+Ç2ÓÂ
+2Ç5Ô
+6ÇÆ
+6Ç1È
+Ç1Ã
+Ç1Þ
+2Ç1Û
+Ç1Ü
+ÄÁ6ÂÅ
+ÄÁ2ÇÅÎ
+ÄÁ2ÄÒ
+2ÄÁÌÇ
+ÄÁ2ÐÒ
+6Ä1Â
+Ä×6
+2Ä1×Á
+2Ä1×Å
+Ä×Å2Ó5Ë
+2Ä1×ÉÄ
+6Ä×ÉÎÔ
+6Ä5×ÉÎÞ
+2Ä1×ÉÓ
+Ä5×Ë
+2Ä1×ÏÄ
+Ä×Õ1Û
+6Ä5×Ù
+Ä1Ç2
+Ä5Ä6
+5ÄÅÂ
+ÄÅ2Ú1Á2
+ÄÅ2Ú1É2Ï
+ÄÅ2Ú1Ï2
+ÄÅ2Ï5
+5ÄÅÆ
+ÄÅ5È
+5ÄÖÁ
+5ÄÖÉÑ
+ÄÖ5Ì
+ÄÖ1Í
+ÄÖ1Ò
+6ÄÚ.
+1ÄÚÅ.
+Ä5ÚÅÍ
+Ä1ÚÏ
+ÄÉ2ÁÄ
+ÄÉ6ÁÌÉ
+ÄÉ2ÁÍ
+6Ä5É6ÄÅ
+2ÄÉÎÓ
+2Ä1ÉÎÆ
+ÄÉ2ÏÂ
+ÄÉ5ÏÎ
+ÄÉ2ÏÐ
+ÄÉ2Ï5Ó
+ÄÉ6Ð5Ô
+ÄÉ2Ó1Å
+ÄÉ2ÓË
+ÄÉ2ÓÔÏ
+ÄÉ2Ó1ÔÒ
+ÄÉ5È
+2Ä1Ë
+Ä1ÌÁ
+Ä5ÌÅÄ
+Ä1ÌÅÖ
+5Ä6ÌÅÊ
+Ä5ÌÅÎÉ
+Ä1ÌÏ
+Ä1ÌÙ
+5ÄÌÀ
+2Ä1Í
+Ä2ÍÓ
+Ä2Í1Þ
+Ä1Î
+1ÄÎÅ×Î
+ÄÎÏ5Ä
+1ÄÎÑÛ
+2Ä1ÏÂÌ
+ÄÏ6ÂÌÁ
+6ÄÏÂß
+1ÄÏ×
+ÄÏ1Ä2
+ÄÏ1Ú
+ÄÏÉÓ6
+2ÄÏËÔ
+ÄÏ5ÍÎÏ
+ÄÏ5Ò×Á
+5ÄÏÒÅ
+ÄÏ2ÒÕ
+2Ä1Ï2ÓÉ
+ÄÏ1ÓÎ
+ÄÏ1Ó2Ð
+Ä5ÏÔÒ
+1ÄÏÞ
+ÄÏ1Û2
+Ä1Ð
+2ÄÒ.
+5Ä6ÒÁÖ
+Ä1ÒÁÓ
+5Ä6ÒÁÑ
+Ä1ÒÅÖ
+Ä5ÒÅÛ
+ÄÒÉ5Ó
+Ä1ÒÉÈ
+6Ä5ÒÏÚ
+2ÄÒÓ
+Ä1ÒÕÂ
+6Ä5ÒÕÞ
+2Ä1ÒÙ×
+Ä1ÒÑÄ
+5ÄÒÑÔ
+2Ä1Ó
+ÄÓ3ËÎ
+2Ä1Ô
+1ÄÕÍ
+2ÄÕÏ5
+ÄÕ6ÏÐ
+ÄÕ6ÏÓ
+ÄÕ6ÒÁÌ
+6Ä5Õ6ÓÉ
+1ÄÕÈ
+2Ä1ÕÜ
+2Ä1Æ
+Ä1È
+Ä1Þ
+2Ä1Û2
+5ÄÙ×
+2ÄØ.
+1ÄØÅ
+5ÄØÀ
+1ÄØÑ
+Ä1Ü
+1ÄÀÎ
+Å1Á
+ÅÁ2Â
+ÅÁ2Ä
+ÅÁ5ÄÏ
+Å3Á2Ú
+Å6ÁËÏ
+Å6ÁÓ
+ÅÁ2ÔÏ
+ÅÁ6Õ
+Å1ÂÁ
+Å1ÂÅ
+ÅÂÅ5ÚÏ5
+Å1ÂÉ
+Å1ÂÌÁ
+Å1ÂÌÅ
+Å1ÂÌÉ
+Å1ÂÌÏ
+Å1ÂÌÕ
+Å1ÂÌÙ
+Å1ÂÏ
+Å5ÂÏÒ
+Å1ÂÒ
+Å1ÂÒÁ
+Å1ÂÒÅ
+Å1ÂÒÉ
+Å1ÂÒÏ
+Å1ÂÒÕ
+Å1ÂÒÙ
+Å1ÂÕ
+Å1ÂÙ
+Å1ÂØÅ
+Å1ÂØÉ
+Å1ÂØÀ
+Å1ÂØÑ
+Å1ÂÀ
+Å1ÂÑ
+Å1×Á
+2Å1×Å
+Å1×É
+Å×6ËÕ
+Å1×ÌÁ
+Å1×ÌÅ
+Å1×ÌÉ
+Å1×ÌÏ
+Å1×ÌÕ
+Å1×ÌÙ
+Å×2ÎÉÍ
+Å×2ÎÑÔ
+Å1×Ï
+6Å×ÏÌ
+Å×Ï2Ó
+Å×2Ð
+Å×5ÐÁ
+2Å×Ò
+Å1×ÒÁ
+Å1×ÒÅ
+Å1×ÒÉ
+Å2×ÒÏ
+Å1×ÒÕ
+Å1×ÒÙ
+Å1×Õ
+Å×1Þ
+Å×ßÅ5È
+Å1×Ù
+Å1×ØÅ
+Å1×ØÉ
+Å1×ØÀ
+Å1×ØÑ
+Å1×À
+Å1×Ñ
+Å1ÇÁ
+Å1ÇÄ
+Å1ÇÅ
+Å1ÇÉ
+Å1ÇÌÁ
+Å1ÇÌÅ
+Å1ÇÌÉ
+Å1ÇÌÏ
+Å1ÇÌÕ
+Å1ÇÌÙ
+ÅÇ1ÎÅ
+ÅÇ6ÎÏ
+Å1ÇÏ
+Å1ÇÒÁ
+Å1ÇÒÅ
+Å1ÇÒÉ
+Å1ÇÒÏ
+Å1ÇÒÕ
+Å1ÇÒÙ
+Å1ÇÕ
+Å1ÇÙ
+Å1ÇØÅ
+Å1ÇØÉ
+Å1ÇØÀ
+Å1ÇØÑ
+Å1ÇÀ
+Å1ÇÑ
+Å1ÄÁ
+Å6Ä5ÁÂ
+Å2Ä1ÁÐ
+Å1Ä×Á
+Å1Ä×Å
+Å1Ä×É
+Å1Ä×Ï
+Å1Ä×Õ
+Å1Ä×Ù
+Å1ÄÅ
+Å5ÄÖÅ
+Å1ÄÉ
+Å6Ä5ÉÓÐ
+Å2Ä1ÉÀ
+Å2ÄÌ
+Å1ÄÌÁ
+Å3ÄÌÅ
+Å1Ä1ÌÉ
+Å1ÄÌÏ
+Å1ÄÌÕ
+Å1ÄÌÙ
+ÅÄ5ÌÑ
+Å1ÄÏ
+ÅÄ5Ï6ÐÒ
+ÅÄ1ÏÓÍ
+Å2ÄÏÔ×
+Å1ÄÒÁ
+Å1ÄÒÅ
+Å1ÄÒÉ
+Å1ÄÒÏ
+Å1ÄÒÕ
+Å1ÄÒÙ
+Å1ÄÕ
+Å6Ä5ÕÇ
+Å6ÄÕÍÙ
+Å1ÄÙ
+Å1ÄØÅ
+Å1ÄØÉ
+Å1ÄØÀ
+Å1ÄØÑ
+Å1ÄÀ
+Å1ÄÑ
+Å1Å
+Å2Å×Á
+ÅÅ6Ç
+Å6ÅÍÁ
+Å6ÅÐ
+Å1ÖÁ
+ÅÖÁ6Ô
+ÅÖ5ÁÔÏ
+Å2ÖÄÀ
+Å1ÖÅ
+Å1ÖÖ
+Å5ÖÉ
+ÅÖ1Í
+Å1ÖÏ
+ÅÖ1Ò
+Å1ÖÕ
+Å1ÖØÅ
+Å1ÖØÉ
+Å1ÖØÀ
+Å1ÖØÑ
+Å1ÚÁ
+ÅÚ5×É
+ÅÚ1×Ï
+ÅÚ1ÄÁ
+ÅÚÄÉ2
+ÅÚ5ÄÏ.
+ÅÚ1ÄÒ
+ÅÚ1ÄÕ
+ÅÚ1ÄÙ
+Å1ÚÅ
+Å1ÚÉ
+Å1ÚÏ
+ÅÚ1ÏÔ
+Å1ÚÕ
+Å1ÚÙ
+Å1ÚØÅ
+Å1ÚØÉ
+Å1ÚØÀ
+Å1ÚØÑ
+Å1ÚÀ
+Å1ÚÑ
+Å1É
+ÅÉ2Ç
+ÅÉ2Ä
+ÅÉ2Í
+Å1ËÁ
+Å1Ë×Á
+Å1Ë×Å
+Å1Ë×É
+Å1Ë×Ï
+Å1Ë×Õ
+Å1Ë×Ù
+Å1ËÅ
+Å1ËÉ
+Å1ËÌÁ
+Å1ËÌÅ
+Å1ËÌÉ
+Å1ËÌÏ
+Å1ËÌÕ
+Å1ËÌÙ
+ÅË1Î
+2Å1ËÏ
+Å1ËÒÁ
+Å1ËÒÅ
+Å1ËÒÉ
+Å1ËÒÏ
+Å1ËÒÕ
+Å1ËÒÙ
+ÅË1ÓË
+ÅËÓÐÏ6
+ÅË1ÓÔÕ
+Å1ËÕ
+Å1ËÙ
+Å1ËØÅ
+Å1ËØÉ
+Å1ËØÀ
+Å1ËØÑ
+Å1ËÀ
+Å1ËÑ
+Å1ÌÁ
+Å1ÌÅ
+Å1ÌÉ
+Å1ÌÏ
+Å1ÌÕ
+Å1ÌÙ
+Å1ÌØÅ
+Å1ÌØÉ
+Å1ÌØÀ
+Å1ÌØÑ
+Å1ÌÀ
+Å1ÌÑ
+Å1ÍÁ
+Å1ÍÅ
+Å1ÍÉ
+Å1ÍÌÁ
+Å1ÍÌÅ
+Å1ÍÌÉ
+Å1ÍÌÏ
+Å1ÍÌÕ
+Å1ÍÌÙ
+ÅÍ1ÎÅ
+Å1ÍÏ
+ÅÍ6ÐÔ
+Å1ÍÒÁ
+Å1ÍÒÅ
+Å1ÍÒÉ
+Å1ÍÒÏ
+Å1ÍÒÕ
+Å1ÍÒÙ
+Å1ÍÕ
+ÅÍ1Þ
+Å1ÍÙ
+Å1ÍØÅ
+Å1ÍØÉ
+Å1ÍØÀ
+Å1ÍØÑ
+Å1ÍÀ
+Å1ÍÑ
+Å1ÎÁ
+Å1ÎÅ
+Å1ÎÉ
+Å1ÎÏ
+2ÅÎÒ
+Å1ÎÒÁ
+Å1Î5ÒÅ
+Å1Î1ÒÉ
+Å1ÎÒÏ
+Å1ÎÒÕ
+Å1ÎÒÙ
+Å1ÎÕ
+Å1ÎÙ
+Å1ÎØÅ
+Å1ÎØÉ
+Å1ÎØÀ
+Å1ÎØÑ
+Å1ÎÀ
+Å1ÎÑ
+2Å1Ï
+ÅÏ5Á
+ÅÏ2Â
+ÅÏ5ÂÁ
+ÅÏÂ1Ì
+ÅÏÂÏ1
+Å3Ï2ÇÒÁÎ
+Å2ÏÄÉ
+ÅÏ2Ö
+Å5ÏÉÄ
+ÅÏ6ËÉ
+ÅÏ2ËÏÎ
+Å5ÏÌ.
+Å5ÏÌÙ
+Å5ÏÌÑ
+Å3ÏÎ.
+Å6ÏÐÁ
+Å2ÏÐÌ
+ÅÏ6ÐÏÚ
+ÅÏ2ÐÒ
+ÅÏ6ÐÕ
+ÅÏ6ÐÙ
+Å2ÏÒÏ
+ÅÏ2ÒÕ
+ÅÏ1Ó
+ÅÏ2ÓÁ
+ÅÏ6Ó×
+ÅÏ2ÓÅ
+ÅÏ6ÓÏÂ
+ÅÏ6ÓÕ
+ÅÏ6ÓÃ
+Å6ÏÔÅ
+Å5Ï6ÆÏÒ
+ÅÏ6È×
+Å5ÏÈÌ
+ÅÏ2ÞÅ
+ÅÏ2Ý
+Å1ÐÁ
+Å1ÐÅ
+Å1ÐÉ
+Å1ÐÌÁ
+Å1ÐÌÅ
+Å1ÐÌÉ
+Å1ÐÌÏ
+Å1ÐÌÕ
+Å1ÐÌÙ
+Å1ÐÏ
+Å1ÐÒÁ
+Å1ÐÒÅ
+Å1ÐÒÉ
+ÅÐÒÉÅ2
+Å1ÐÒÏ
+Å1ÐÒÕ
+Å1ÐÒÙ
+Å1ÐÔÁ
+Å1ÐÔÅ
+Å1ÐÔÉ
+Å1ÐÔÏ
+Å1ÐÔÕ
+Å1ÐÔÙ
+Å1ÐÕ
+Å1ÐÙ
+Å1ÐØÅ
+Å1ÐØÉ
+Å1ÐØÀ
+Å1ÐØÑ
+Å1ÐÀ
+Å1ÐÑ
+Å1ÒÁ
+ÅÒ1ÁÜ
+ÅÒ5×Á.
+ÅÒ1×ÁÔ
+ÅÒ1×Ù
+Å1ÒÅ
+ÅÒÅ1Ç
+ÅÒÅ1Ú×
+ÅÒÅ1ÓÓ
+Å1ÒÉ
+ÅÒ6ËÌ
+Å1ÒÏ
+ÅÒÏ2Â
+ÅÒ5ÔÌÉ
+ÅÒ1ÔÑ
+Å1ÒÕ
+Å2Ò1Õ2Ð
+ÅÒ2ÈÉ
+Å1ÒÙ
+Å1ÒØÅ
+Å1ÒØÉ
+Å1ÒØÀ
+Å1ÒØÑ
+Å1ÒÀ
+Å1ÒÑ
+Å1ÓÁ
+Å1Ó6Â
+Å1Ó×Á
+Å1Ó×Å
+Å1Ó×É
+Å1Ó×Ï
+Å1Ó×Õ
+Å1Ó×Ù
+Å1ÓÇ
+Å1ÓÄ
+Å1ÓÅ
+Å1ÓÉ
+Å1ÓË
+ÅÓ5ËÁÌ
+Å1ÓË×Á
+Å1ÓË×Å
+Å1ÓË×É
+Å1ÓË×Ï
+Å1ÓË×Õ
+Å1ÓË×Ù
+ÅÓ6ËÌ
+Å1ÓËÒÁ
+Å1ÓËÒÅ
+Å1ÓËÒÉ2
+ÅÓËÒÉÐ1
+Å1ÓËÒÏ
+Å1ÓËÒÕ
+Å1ÓËÒÙ
+Å1ÓÍ
+Å1ÓÏ
+ÅÓÏ6ÓË
+2ÅÓ1Ð
+Å1ÓÒÁ
+Å1ÓÒÅ
+Å1ÓÒÉ
+Å1ÓÒÏ
+Å1ÓÒÕ
+Å1ÓÒÙ
+ÅÓÓ2Ð
+Å1ÓÔÁ
+Å5ÓÔÁ.
+ÅÓ1ÔÁÒ
+Å1ÓÔ×Á
+Å1ÓÔ×Å
+Å1ÓÔ×É
+Å1ÓÔ×Ï
+Å1ÓÔ×Õ
+Å1ÓÔ×Ù
+Å1ÓÔ×ØÅ
+Å1ÓÔ×ØÉ
+Å1ÓÔ×ØÀ
+Å1ÓÔ×ØÑ
+Å1ÓÔ×À
+Å1ÓÔ×Ñ
+Å1ÓÔÅ
+Å1ÓÔÉ
+Å6ÓÔÉÇ
+ÅÓÔ5Ì
+Å1ÓÔÏ
+Å1ÓÔÒÁ
+Å1ÓÔÒÅ
+Å1ÓÔÒÉ
+Å1ÓÔÒÏ
+Å1ÓÔÒÕ
+Å1ÓÔÒÙ
+Å1ÓÔÒØÅ
+Å1ÓÔÒØÉ
+Å1ÓÔÒØÀ
+Å1ÓÔÒØÑ
+Å1ÓÔÒÀ
+Å1ÓÔÒÑ
+Å1ÓÔÕ
+Å1ÓÔÙ
+Å1ÓÔØÅ
+Å1ÓÔØÉ
+Å1ÓÔØÀ
+Å1ÓÔØÑ
+Å1ÓÔÀ
+Å1ÓÔÑ
+Å1ÓÕ
+Å1ÓÙ
+Å1ÓØÅ
+Å1ÓØÉ
+Å1ÓØÀ
+Å1ÓØÑ
+Å1ÓÀ
+Å1ÓÑ
+Å1ÔÁ
+Å1Ô×Á
+Å1Ô×Å
+Å1Ô×É
+Å1Ô×Ï
+Å1Ô×Õ
+Å1Ô×Ù
+Å5Ô×Ñ
+Å1ÔÅ
+Å1ÔÉ
+Å1ÔÌ
+Å1ÔÏ
+Å1ÔÒÁ
+Å1ÔÒÅ
+Å1ÔÒÉ
+Å1ÔÒÏ
+Å1ÔÒÕ
+Å1ÔÒÙ
+Å5ÔÒØ
+Å1ÔÕ
+Å1ÔÙ
+Å1ÔØÅ
+Å1ÔØÉ
+Å1ÔØÀ
+Å1ÔØÑ
+Å1ÔÀ
+Å1ÔÑ
+2Å1Õ2
+ÅÕÌ6
+ÅÕÍÙ6
+ÅÕÍÙÛ5
+Å1ÆÁ
+Å1ÆÅ
+Å1ÆÉ
+Å1ÆÌÁ
+Å1ÆÌÅ
+Å1ÆÌÉ
+Å1ÆÌÏ
+Å1ÆÌÕ
+Å1ÆÌÙ
+Å1ÆÏ
+Å1ÆÒÁ
+Å1ÆÒÅ
+Å1ÆÒÉ
+Å1ÆÒÏ
+Å1ÆÒÕ
+Å1ÆÒÙ
+Å1ÆÕ
+Å1ÆØÅ
+Å1ÆØÉ
+Å1ÆØÀ
+Å1ÆØÑ
+Å1ÆÀ
+Å1ÆÑ
+Å1ÈÁ
+Å1ÈÄÁ
+Å1ÈÄÅ
+Å1ÈÄÉ
+Å1ÈÄÏ
+Å1ÈÄÕ
+Å1ÈÄÙ
+Å1ÈÅ
+Å1ÈÉ
+ÅÈ1Í
+Å1ÈÏ
+Å1ÈÕ
+Å1ÈÙ
+Å1ÈØÅ
+Å1ÈØÉ
+Å1ÈØÀ
+Å1ÈØÑ
+Å1ÈÀ
+Å1ÈÑ
+Å1ÃÁ
+Å1ÃÅ
+ÅÃ1Ú
+Å1ÃÉ
+Å1ÃÏ
+Å1ÃÕ
+Å1ÃÙ
+Å1ÃØÅ
+Å1ÃØÉ
+Å1ÃØÀ
+Å1ÃØÑ
+Å1ÞÁ
+Å1ÞÅ
+Å1ÞÉ
+Å1ÞÕ
+Å1ÞØÅ
+Å1ÞØÉ
+Å1ÞØÀ
+Å1ÞØÑ
+Å1ÛÁ
+Å1Û×Á
+Å1Û×Å
+Å1Û×É
+Å1Û×Ï
+Å1Û×Õ
+Å1Û×Ù
+Å1ÛÅ
+Å1ÛÉ
+Å1ÛÌÁ
+Å1ÛÌÅ
+Å1ÛÌÉ
+Å1ÛÌÏ
+Å1ÛÌÕ
+Å1ÛÌÙ
+Å1ÛÏ
+Å1ÛÒÁ
+Å1ÛÒÅ
+Å1ÛÒÉ
+Å1ÛÒÏ
+Å1ÛÒÕ
+Å1ÛÒÙ
+Å1ÛÔÁ
+ÅÛ1ÔÏ
+Å1ÛÕ
+Å1ÛØÅ
+Å1ÛØÉ
+Å1ÛØÀ
+Å1ÛØÑ
+Å1ÝÁ
+Å1ÝÅ
+Å1ÝÉ
+Å1ÝÏ
+Å1ÝÕ
+Å1ÝØÅ
+Å1ÝØÉ
+Å1ÝØÀ
+Å1ÝØÑ
+Å1Ù
+Å1Ü6
+Å1À
+Å1Ñ
+ÅÑ6Ú
+2ÖÁ×Å
+Ö1Â
+Ö1×
+1ÖÇ
+6ÖÇÁ
+6Ö5ÇÏ
+6Ö5ÇÒ
+1ÖÄ
+6ÖÄ.
+6ÖÄÅÆ
+2ÖÄ1Ì
+6Ö5ÄÏÌ
+6Ö5ÄÏÒ
+2ÖÄØ
+3ÖÅ×
+5ÖÅÇ
+ÖÅ5Ä2
+5ÖÅÊ
+ÖÅ2ÏÄ
+Ö1Ö
+Ö2ÖÅ
+Ö1Ú
+Ö5ÉÍÐ
+ÖÉ5Ï
+2Ö1Ë
+1ÖÌÉ×
+Ö5ÌÉÞ
+Ö1ÍÁ
+1ÖÍÕ
+Ö1Î
+2Ö1Ï2Ó
+Ö1Ð
+ÖÒÅ6Ó5
+Ö1Ó
+Ö1Ô
+Ö1ÕÜ
+2Ö1Ã
+Ö1Þ
+Ö5ÜÌ
+5ÖÑ
+1ÚÁ
+5ÚÁ.
+ÚÁÂ6
+ÚÁ1×Þ
+ÚÁ1Ç2
+ÚÁÅ6
+ÚÁ1Ú2
+Ú1ÁËÔ
+Ú1ÁÌË
+ÚÁÍÅÓ2
+ÚÁÎ5Ó6
+ÚÁ5Ð6ÎÕ
+ÚÁ1Ò2Ö
+ÚÁ1Ó2
+ÚÁÓ3ÓË
+ÚÁÔ2
+ÚÁ3ÔÍ
+ÚÁ5Õ
+ÚÁ1È
+ÚÁ1ÛÐ
+ÚÁÑ2
+2Ú1Â
+Ú×2
+Ú5×ÁÑ
+Ú×ÅÔ3×
+Ú1×Ë
+Ú6×ÏÎ
+1Ú×Õ
+Ú1×Ù
+Ú1×Ñ
+Ú1Ç
+Ú5ÇÎÁ
+ÚÇ1ÎÕ
+Ú5ÄÁ.
+Ú1Ä×
+Ú1ÄÅ
+Ú1ÄÉ
+2ÚÄÎ
+Ú5ÄÏÄ
+Ú5ÄÏÊ
+Ú5ÄÏÍ
+Ú5ÄÏÏ
+Ú1ÄÑ
+6Ú1Ö
+Ú1Ú
+ÚÉ5Á
+ÚÉ6ÎÉ
+2Ú1ÉÎÔ
+2Ú1ÉÎÆ
+ÚÉÏÂ5
+ÚÉ6ÏÎÏ
+ÚÉÏ6Ð
+3ÚÉÓ
+ÚÉ5Ó6È
+2Ú1Ë
+Ú1Ì
+6Ú1Í
+6ÚÎÁ.
+6Ú1ÎÅ
+Ú1ÎÉ
+Ú1ÎÏ
+2Ú1ÎÕ
+2ÚÎÙ
+6ÚÏÂÝ
+ÚÏ1Ç
+ÚÏ3Ä2Ò
+ÚÏ1Ú2
+ÚÏË2
+Ú1ÏËÓ
+1ÚÏÌ
+ÚÏ1Í
+ÚÏ1Ò×
+Ú1ÏÒÇ
+5ÚÏ5ÒÕ
+ÚÏÓ2
+ÚÏ1ÓÐ
+ÚÏ1Ý
+Ú1Ð
+Ú1ÒÁ
+Ú2ÒÁË
+Ú2ÒÁÞ
+5ÚÒÉ
+Ú1ÒÏÄ
+6Ú1ÒÕ
+Ú1ÒÑ
+2Ú1Ó
+Ú1Ô
+1ÚÕ
+ÚÕ6ÂÅÖ
+2Ú1Õ2Ä
+ÚÕ6Ë
+2Ú1Õ2Ó
+Ú1Õ2Þ
+Ú1Ã
+Ú1Þ
+Ú1Û
+Ú6ß
+Ú2Ù
+2ÚÙÍ
+5ÚØÀ
+Ú1Ü
+ÚÜ1Ë
+É1Á
+É2ÁÂ
+É2Á1Ç
+É6ÁÄÉ
+ÉÁ2ÍÕ
+ÉÁ6ÎÁÌ
+É2ÁÐ
+ÉÁÓ2
+ÉÁ1ÓË
+É6ÁÔÒÁ
+É2ÁÆ
+2ÉÂ
+É1ÂÁ
+É1ÂÅ
+É1ÂÉ
+É1ÂÌÁ
+É1ÂÌÅ
+É1ÂÌÉ
+É1ÂÌÏ
+É1ÂÌÕ
+É1ÂÌÙ
+É1ÂÏ
+É1ÂÒÁ
+É1ÂÒÅ
+É1ÂÒÉ
+É1ÂÒÏ
+É1ÂÒÕ
+É1ÂÒÙ
+É1ÂÕ
+É1ÂÙ
+É1ÂØÅ
+É1ÂØÉ
+É1ÂØÀ
+É1ÂØÑ
+É1ÂÀ
+É1ÂÑ
+É1×Á
+6É×ÁÖ
+É1×Å
+É1×É
+É1×ÌÁ
+É1×ÌÅ
+É1×ÌÉ
+É1×ÌÏ
+É1×ÌÕ
+É1×ÌÙ
+É1×Ï
+É1×ÒÁ
+É1×ÒÅ
+É1×ÒÉ
+É1×ÒÏ
+É1×ÒÕ
+É1×ÒÙ
+É1×2Ó
+É1×Õ
+2É1×Ù
+É1×ØÅ
+É1×ØÉ
+É1×ØÀ
+É1×ØÑ
+É1×À
+É1×Ñ
+É1ÇÁ
+É5ÇÄ
+É1ÇÅ
+É1ÇÉ
+6É5ÇÌ
+É1ÇÌÁ
+É1ÇÌÅ
+É1ÇÌÉ
+É1ÇÌÏ
+É1ÇÌÕ
+É1ÇÌÙ
+ÉÇ1Î
+É1ÇÏ
+É1ÇÒÁ
+É1ÇÒÅ
+É1ÇÒÉ
+É1ÇÒÏ
+É1ÇÒÕ
+É1ÇÒÙ
+É1ÇÕ
+É1ÇÙ
+É1ÇØÅ
+É1ÇØÉ
+É1ÇØÀ
+É1ÇØÑ
+É1ÇÀ
+É1ÇÑ
+É1ÄÁ
+É1Ä×Á
+É1Ä×Å
+É1Ä×É
+É1Ä×Ï
+É1Ä×Õ
+É1Ä×Ù
+É1ÄÅ
+É2ÄÅÊ
+É1ÄÖÉ
+É1ÄÉ
+ÉÄÉ3ÏÍ
+ÉÄÉ3ÏÔ
+É1ÄÌÁ
+É1ÄÌÅ
+É1ÄÌÉ
+É1ÄÌÏ
+É1ÄÌÕ
+É1ÄÌÙ
+É1ÄÏ
+É1ÄÒÁ
+É1ÄÒÅ
+É1ÄÒÉ
+É1ÄÒÏ5
+É1ÄÒÕ
+É1ÄÒÙ
+É1ÄÕ
+ÉÄ1Ã
+É1ÄÙ
+É1ÄØÅ
+É1ÄØÉ
+É1ÄØÀ
+É1ÄØÑ
+É1ÄÀ
+É1ÄÑ
+É1Å
+ÉÅ6Â
+ÉÅ6Ä
+É6ÅÎÏ
+É1ÖÁ
+É1ÖÅ
+É1ÖÖ
+É1ÖÉ
+É1ÖÏ
+É1ÖÕ
+É1ÖØÅ
+É1ÖØÉ
+É1ÖØÀ
+É1ÖØÑ
+É1ÚÁ
+ÉÚ1×
+ÉÚ2×Á
+ÉÚ2ÇÎ
+ÉÚÇ1ÎÅ
+ÉÚ1Ä
+É1ÚÅ
+É1ÚÉ
+É1ÚÎÁÞ
+É1ÚÏ
+ÉÚÏ1Ô
+É1ÚÒ
+É1ÚÕ
+É1ÚÙ
+ÉÚÙ1Ó
+É1ÚØÅ
+É1ÚØÉ
+É1ÚØÀ
+É1ÚØÑ
+É1ÚÀ
+É1ÚÑ
+É1É
+ÉÉ2Ú
+É1ËÁ
+É1Ë×Á
+É1Ë×Å
+É1Ë×É
+É1Ë×Ï
+É1Ë×Õ
+É1Ë×Ù
+É1ËÅ
+É1ËÉ
+É1ËÌÁ
+É1ËÌÅ
+É1ËÌÉ
+É1ËÌÏ
+É1ËÌÕ
+É1ËÌÙ
+ÉË1Î
+É1ËÏ
+É6ËÏÎÏ
+6ÉËÒ
+É1ËÒÁ
+É1ËÒÅ
+É1ËÒÉ
+É1ËÒÏ
+É1ËÒÕ
+É1ËÒÙ
+ÉË1ÓË
+ÉËÓ1ÔÕ
+É1ËÕ
+É5Ë6Þ
+É1ËÙ
+É1ËØÅ
+É1ËØÉ
+É1ËØÀ
+É1ËØÑ
+É1ËÀ
+É1ËÑ
+É1ÌÁ
+É2Ì1Á2Ã
+É1ÌÅ
+É1ÌÉ
+ÉÌ6ÌÕ
+É1ÌÏ
+ÉÌÏ5Ä
+É1ÌÕ
+É1ÌÙ
+É1ÌØÅ
+É1ÌØÉ
+É1ÌØÀ
+É1ÌØÑ
+É1ÌÀ
+É1ÌÑ
+É1ÍÁ
+É1ÍÅ
+É2ÍÅÅ
+É2ÍÅÌ
+6ÉÍÅÎÅ
+É2ÍÅÎÏ
+2ÉÍÅÎØ
+É6ÍÅÀ
+É5ÍÉ
+É1ÍÌÁ
+É1Í1ÌÅ
+É1ÍÌÉ
+É1ÍÌÏ
+É1ÍÌÕ
+É1ÍÌÙ
+5ÉÍÍÕ
+ÉÍ1Î
+É1ÍÏ
+É1ÍÒÁ
+É1ÍÒÅ
+É1ÍÒÉ
+É1ÍÒÏ
+É1ÍÒÕ
+É1ÍÒÙ
+É1ÍÕ
+É1ÍÙ
+É1ÍØÅ
+É1ÍØÉ
+É1ÍØÀ
+É1ÍØÑ
+É1ÍÀ
+É1ÍÑ
+É1ÎÁ
+5ÉÎÁ×Ç
+ÉÎ1ÁÔÏÍ
+É1ÎÅ
+5ÉÎÖ
+É1ÎÉ
+É1ÎÏ
+É2Î1Ò
+É1ÎÒÁ
+É1ÎÒÅ
+É1ÎÒÉ
+É1ÎÒÏ
+É1ÎÒÕ
+É1ÎÒÙ
+ÉÎ6ÓÌ
+5ÉÎÓÐ
+ÉÎÓ6Ã
+ÉÎ2Ô1×
+É1ÎÕ
+É6ÎÕÉ
+É1ÎÙ
+É1ÎØÅ
+É1ÎØÉ
+É1ÎØÀ
+É1ÎØÑ
+É1ÎÀ
+ÉÎ1ÀÓ
+É1ÎÑ
+É1Ï
+ÉÏÂ5Ì
+ÉÏ2ÂÒ
+É2ÏËÏ
+É6ÏËÒ
+É5ÏÌÅ
+É3ÏÐÔ
+É3ÏÒÔ
+ÉÏ1Ó2
+É2ÏÓË
+ÉÏ2ÓÎ
+ÉÏ2ÓÔÁ
+É2ÏÔ
+É5ÏÔË
+É2ÏÈ
+É2ÏÃ
+6ÉÐ
+É1ÐÁ
+É1ÐÅ
+É1ÐÉ
+É1ÐÌÁ
+É1ÐÌÅ
+É1ÐÌÉ
+É1ÐÌÏ
+É1ÐÌÕ
+É1ÐÌÙ
+É1ÐÏ
+É1ÐÒÁ
+É1ÐÒÅ
+É1ÐÒÉ
+É1ÐÒÏ
+É1ÐÒÕ
+É1ÐÒÙ
+É1ÐÓ
+É1ÐÔÁ
+É1ÐÔÅ
+É1ÐÔÉ
+É1ÐÔÏ
+ÉÐ6ÔÏÎ
+É2Ð1ÔÕ
+É1ÐÔÙ
+É1ÐÕ
+É1ÐÙ
+É1ÐØÅ
+É1ÐØÉ
+É1ÐØÀ
+É1ÐØÑ
+É1ÐÀ
+É1ÐÑ
+É1ÒÁ
+ÉÒ5×
+É1ÒÅ
+É1ÒÉ
+É1ÒÏ
+É1ÒÕ
+É1ÒÙ
+É1ÒØÅ
+É1ÒØÉ
+É1ÒØÀ
+É1ÒØÑ
+É1ÒÀ
+É1ÒÑ
+É1ÓÁ
+ÉÓ1Â
+É1Ó×Á
+É1Ó×Å
+É1Ó×É
+É1Ó×Ï
+É1Ó×Õ
+É1Ó×Ù
+É1ÓÅ
+É1ÓÉ
+ÉÓ1Ë
+É1ÓË×Á
+É1ÓË×Å
+É1ÓË×É
+É1ÓË×Ï
+É1ÓË×Õ
+É1ÓË×Ù
+ÉÓË1Î
+6É5ÓËÏÒ
+É1ÓËÒÁ
+É1ÓËÒÅ
+É1ÓËÒÉ
+É1ÓËÒÏ
+É1ÓËÒÕ
+É1ÓËÒÙ
+ÉÓ1Í
+É1Ó2ÎÉ
+É1ÓÏ
+ÉÓ1Ð
+ÉÓ2ÐÁÓ
+É1ÓÒÁ
+É1ÓÒÅ
+É1ÓÒÉ
+É1ÓÒÏ
+É1ÓÒÕ
+É1ÓÒÙ
+É1ÓÔÁ
+É1ÓÔ×Á
+É1ÓÔ×Å
+É1ÓÔ×É
+É1ÓÔ×Ï
+É1ÓÔ×Õ
+É1ÓÔ×Ù
+É1ÓÔ×ØÅ
+É1ÓÔ×ØÉ
+É1ÓÔ×ØÀ
+É1ÓÔ×ØÑ
+É1ÓÔ×À
+É1ÓÔ×Ñ
+É1ÓÔÅ
+ÉÓ1ÔÅË
+ÉÓ5ÔÅÃ
+É1ÓÔÉ
+É1ÓÔÏ
+É1ÓÔÒÁ
+É1ÓÔÒÅ
+É1ÓÔÒÉ
+É1ÓÔÒÏ
+É1ÓÔÒÕ
+É1ÓÔÒÙ
+É1ÓÔÒØÅ
+É1ÓÔÒØÉ
+É1ÓÔÒØÀ
+É1ÓÔÒØÑ
+É1ÓÔÒÀ
+É1ÓÔÒÑ
+É1ÓÔÕ
+É1ÓÔÙ
+É1ÓÔØÅ
+É1ÓÔØÉ
+É1ÓÔØÀ
+É1ÓÔØÑ
+É1ÓÔÀ
+É1ÓÔÑ
+É1ÓÕ
+ÉÓ1Þ
+É1ÓÙ
+É1ÓØÅ
+É1ÓØÉ
+É1ÓØÀ
+É1ÓØÑ
+É1ÓÀ
+É1ÓÑ
+É1ÔÁ
+É1Ô×Á
+É1Ô×Å
+É1Ô×É
+É1Ô×Ï
+É1Ô×Õ
+É1Ô×Ù
+É1ÔÅ
+É1ÔÉ
+É1ÔÌ
+É1ÔÏ
+ÉÔÏÏÐ1
+É6ÔÏÔ
+É1ÔÒÁ
+É1ÔÒÅ
+É1ÔÒÉ
+É1ÔÒÏ
+É1ÔÒÕ
+É1ÔÒÙ
+É1ÔÕ
+É2Ô1ÕÐ
+ÉÔ1ÕÞ
+É1ÔÙ
+É1ÔØÅ
+É1ÔØÉ
+É1ÔØÀ
+É1ÔØÑ
+É1ÔÀ
+É1ÔÑ
+É1Õ2
+ÉÕ5Ä
+ÉÕ5ÍÅ
+É1ÆÁ
+É1ÆÅ
+É1ÆÉ
+É1ÆÌÁ
+É1ÆÌÅ
+É1ÆÌÉ
+É1ÆÌÏ
+É1ÆÌÕ
+É1ÆÌÙ
+É1ÆÏ
+É1ÆÒÁ
+É1ÆÒÅ
+É1ÆÒÉ
+É1ÆÒÏ
+É1ÆÒÕ
+É1ÆÒÙ
+É1ÆÕ
+É1ÆØÅ
+É1ÆØÉ
+É1ÆØÀ
+É1ÆØÑ
+É1ÆÀ
+É1ÆÑ
+É5ÈÁ
+É1ÈÄÁ
+É1ÈÄÅ
+É1ÈÄÉ
+É1ÈÄÏ
+É1ÈÄÕ
+É1ÈÄÙ
+É5ÈÅ
+É1ÈÉ
+É1ÈÏ
+É1ÈÕ
+É1ÈÙ
+É1ÈØÅ
+É1ÈØÉ
+É1ÈØÀ
+É1ÈØÑ
+É5ÈÜ
+É1ÈÀ
+É1ÈÑ
+É1ÃÁ
+É1ÃÅ
+É1ÃÉ
+É1ÃÏ
+É1ÃÕ
+É1ÃÙ
+É1ÃØÅ
+É1ÃØÉ
+É1ÃØÀ
+É1ÃØÑ
+É1ÞÁ
+É1ÞÅ
+É1ÞÉ
+É1ÞÕ
+É1ÞØÅ
+É1ÞØÉ
+É1ÞØÀ
+É1ÞØÑ
+É1ÛÁ
+É1Û×Á
+É1Û×Å
+É1Û×É
+É1Û×Ï
+É1Û×Õ
+É1Û×Ù
+É1ÛÅ
+É1ÛÉ
+É1ÛÌÁ
+É1ÛÌÅ
+É1ÛÌÉ
+É1ÛÌÏ
+É1ÛÌÕ
+É1ÛÌÙ
+É1ÛÏ
+É1Û2Ð
+É1ÛÒÁ
+É1ÛÒÅ
+É1ÛÒÉ
+É1ÛÒÏ
+É1ÛÒÕ
+É1ÛÒÙ
+É1ÛÕ
+É1ÛØÅ
+É1ÛØÉ
+É1ÛØÀ
+É1ÛØÑ
+É1ÝÁ
+É1ÝÅ
+É1ÝÉ
+É1ÝÏ
+É1ÝÕ
+É1ÝØÅ
+É1ÝØÉ
+É1ÝØÀ
+É1ÝØÑ
+É1Ù
+É1Ü
+É1À
+É2ÀÌ
+É2ÀÎ
+É1Ñ
+ÉÑ2Ä
+Ê1
+Ê×2
+Ê2×Ó
+Ê2Ä1×
+Ê2ÄÎ
+Ê2Ä1Ò
+ÊÅÒ5
+Ê2Ë1×
+Ê6ËÌ
+Ê2ÌØ
+ÊÍ1Á
+Ê2ÍÓ
+Ê2ÎÔ
+Ê5Ï
+Ê2Ð
+Ê5ÐÁ
+Ê5ÐÅ
+Ê5ÐÏ
+ÊÐ1Ô
+Ê5ÐÙ
+Ê2Ó1Â
+ÊÓ1ËÕÒ
+Ê2ÓÍÕ
+Ê2ÓÎ
+Ê2ÓÛ
+Ê6ÔÕ
+ÊÕ6
+Ê2È
+Ê5ÈÏ
+ÊÈ2Ó1
+Ê6ÞÌ
+1ËÁ×
+ËÁ5×6Ô
+1ËÁÅ
+5ËÁÖ
+2ËÁÚË
+1ËÁÍ
+ËÁÍ5Î
+1ËÁÐ
+ËÁ1ÓÐ
+1ËÁÔ
+ËÁ1ÔÌ
+ËÁ2Õ
+ËÁ3ÕÓ
+2ËÁÆ
+1ËÁÈ
+1ËÁÀ
+2Ë1Â
+2Ë1Ç
+Ë1Ä
+1ËÅ
+6ËÅÁ
+Ë1Ö
+1ËÉ×
+ËÉË1Ó
+5ËÉÌ
+ËÉ5Ï
+2Ë1Ë
+1ËÌ
+2ËÌ.
+2Ë1ÌÁË
+Ë5ÌÉÊ
+2ËÌØ
+2Ë1Í
+2ËÎ
+Ë1ÎÁ
+3Ë2ÎÉÖ
+Ë1ÎÏ
+5ËÏ×Ù
+ËÏ1Ç2Î
+ËÏ5Ä2
+ËÏ5ÚÎ
+ËÏ2ÍÉÎ
+1ËÏÍÐ
+1ËÏÎ
+1ËÏÏ
+6ËÏÐÓ
+ËÏÐÕ5
+ËÏÒ1×
+Ë1ÏÒÇ
+6ËÏÒÅÊ
+1ËÏÓ
+ËÏ2Ó×
+ËÏ1ÓË
+ËÏÓ1ÍÏ
+ËÏÓ5Î
+ËÏ1ÓÐ
+ËÏ5ÓÔ×
+ËÏ1Ô2Ì
+1ËÏÛ
+Ë1Ð
+6ËÒ.
+ËÒÉ2Ï5
+ËÒË6
+2ËÓ
+Ë2Ó×
+Ë1ÓËÉ
+Ë2Ó1Ì
+Ë6Ó1Í
+Ë6ÓÎ
+ËÓ1Ð
+Ë5ÓÔÅ.
+ËÓ1ÔÒ
+Ë1ÓÈ
+2Ë1Ô
+5Ë6ÔÏ.
+ËÕÇ1
+ËÕÓ1Ë
+ËÕ6ÔÌ
+2Ë1Æ
+6Ë1È
+2Ë1Ã
+Ë1Þ
+2Ë1Û
+Ë1Ü
+2Ë1Ñ
+ÌÁ2Ç1Ì
+1ÌÁÎÄ
+ÌÁ6Ô×
+5ÌÁÈÏ
+Ì1ÂÁ
+Ì1ÂÉ
+Ì1ÂÏ
+Ì5ÂÙ
+Ì1×
+Ì6×Ë
+Ì6×Ó
+Ì1Ç
+Ì2ÇÁÔ
+Ì1Ä
+ÌÄ2Î
+Ì6ÄÕÅ
+ÌÅ6×5ÒÁ
+1ÌÅÎÄ
+ÌÅ2Ï
+ÌÅ5ÔÒ
+Ì1ÖÁ
+ÌÖÁ6Ô
+ÌÖÁÔ5×
+Ì5Ö6Â
+Ì1ÖÅ
+5Ì6ÖÅÛ
+Ì1ÖÉ
+Ì1ÖØ
+Ì1ÚÄ
+Ì1ÚÅ
+Ì1ÚÏ
+ÌÚ6Õ
+ÌÉ2×1Ì
+5ÌÉÇ
+ÌÉ6ÅÎÉ
+ÌÉÏ5
+ÌÉ1ÓÐÁ
+ÌÉ2Ô1×
+ÌÉ2ÔÏÂ
+ÌÉ2È1×
+5ÌÉÃÏ
+5ÌÉÞÉ
+Ì1Ë
+Ì6ËÌ
+ÌË1Î
+Ì1Ì
+Ì2ÌØ
+Ì1Í
+Ì6ÍÝ
+2Ì1Î
+ÌÏÂÏ1
+ÌÏ6ÂÏÒ
+ÌÏ5×Ä
+ÌÏ5Ä6Ò
+ÌÏ1Ú
+ÌÏÓ5ËÁ
+ÌÏ1ÓËÕ
+ÌÏ5ÓÔ×
+Ì1Ð
+Ì6ÐÎ
+2Ì1Ó
+Ì6Ó5Â
+Ì6ÓÄ
+ÌÓ2Ð
+Ì1Ô
+Ì2ÔË
+Ì6Ô5Ì
+ÌÕ2ÁÔ
+ÌÕ1Ä2Î
+ÌÕ5ÏÌ
+Ì1Æ
+Ì1È
+Ì1Ã
+Ì1ÞÁ
+Ì5ÞÅ
+Ì1ÞØ
+Ì1Û6
+Ì1Ý
+6ÌØ.
+1ÌØÏ
+6ÌØÛ
+1ÌØÀ
+ÍÁ2×Ú
+1ÍÁÇ
+ÍÁÇ1Î
+ÍÁ5Ä6Ì
+ÍÁ5Ú6Ì
+ÍÁ1ÓÂ
+Í6ÁÔ
+ÍÁ2Ô1ÁÎ
+ÍÁ2ÔÏÂ
+ÍÁ2Õ
+ÍÁÕ2Ô
+ÍÁÕÜ1
+ÍÁ2ÞÔ
+2Í1Â6
+2Í1×2
+Í1Ç
+5Í6ÇÎ
+Í5ÄÅ
+Í5ÄÉ
+5ÍÅÄ
+ÍÅ2ÄÏÓ
+ÍÅ2ÄÒ
+ÍÅ6ÖÉ
+1ÍÅÊ
+1ÍÅÎ.
+ÍÅ2Ï
+Í1Ú
+ÍÉ6ÄÌ
+ÍÉ6Ú5ÁÎ
+2Í1ÉÚÄ
+5ÍÉÊ
+5ÍÉÎÇ
+ÍÉ2ÎÀ
+ÍÉ6ÏË
+ÍÉ5ÏÔÉ
+Í1Ë
+1ÍËÎ
+6ÍËÏ
+1ÍÌ
+6ÍÌØ
+6Í1Í
+Í2Í1Î
+Í2Í1Þ
+Í1ÎÁ
+Í2ÎÁÂ
+Í5ÎÅÐ
+Í5ÎÉÊ
+Í5ÎÏ×
+Í1ÎÏÅ
+Í1ÎÏÓ
+Í5ÎÏÔ
+6ÍÎÙ
+ÍÏ5Ú×
+ÍÏ1Í
+1ÍÏÎ
+ÍÏ6ÎÒ
+ÍÏ3Ï
+ÍÏ1ÓË
+ÍÏÓ6Ð
+5ÍÏÔÉ
+2Í1ÏÔÐ
+2Í1Ð
+ÍÐÏ2Þ
+2ÍÒÅ
+Í1Ó
+Í2ÓÂ
+2ÍÓË
+ÍÓ2Î
+Í2Ó1ÏÒ
+ÍÓ6Ð
+ÍÓ2Ó
+1Í2ÓÔÉ
+6Í1Ô
+1ÍÕÓ
+ÍÕ5Ó6Ë
+Í1Æ
+6Í1È
+6Í1Ã
+Í1ÞÅ
+Í1ÞÉÓ
+1ÍÝÅ
+5ÍÝÕ
+1ÍÙ.
+Í5Ü
+1ÍÀ
+Í1À2Ó
+1ÎÁ.
+6ÎÁ×Ç
+1ÎÁ1Ç
+1ÎÁÄ
+ÎÁ2ÄÒ
+ÎÁ1Ú2
+ÎÁ2ÉÌ
+6ÎÁÌÇ
+ÎÁ1ÍÎ
+ÎÁÏ2
+ÎÁ1Ò×
+1ÎÁÓ2
+ÎÁ1ÓÍ
+ÎÁ1ÓÓ
+ÎÁ1ÓÞ
+ÎÁÕ6Þ
+ÎÁ1È
+5ÎÁÃ
+ÎÁ1Þ2ÎÅ
+1ÎÁ1Û2
+ÎÁ5Ü
+3ÎÁÑ
+6Î1Â
+Î1×2
+6Î1Ç
+Î2Ç1Ä
+Î1Ä
+Î2Ä1×
+ÎÄÅ2Ó1
+ÎÄ6Ú
+Î2Ä1Ì
+Î2ÄÎ
+Î6ÄÃ
+ÎÅ2ÁÌ
+ÎÅ1×2Ä
+6ÎÅ×Ë
+2ÎÅ×Î
+ÎÅ2×ÒÁ
+ÎÅ×5ÒÉÔ
+ÎÅ×1ÒÏ
+ÎÅ×6Ô
+ÎÅ5ÄÒ
+ÎÅ1ÚÎ
+ÎÅÉ2
+ÎÅ5ËÓÔ
+ÎÅ1ÍÎ
+ÎÅÏ2Ò
+ÎÅÏ2ÓÔÁÔ
+ÎÅÏ6ÓÔÏ
+ÎÅÏ2È
+ÎÅÏ2Ã
+ÎÅ1Ó2Î
+ÎÅ1Ó2Ð
+ÎÅ1Ó2Æ
+ÎÅ1Ó2È
+ÎÅ1ÓÞ
+ÎÅ5ÞÌ
+ÎÅÑ6
+Î1Ö
+Î1Ú
+5ÎÉÂ
+2Î1ÉÚÄ
+1ÎÉË
+ÎÉ5ËÔ
+ÎÉÌÁ6
+ÎÉÌ5ÁÍ
+ÎÉ5ÏË
+1ÎÉÃ
+Î1Ë
+Î6Ë5ÒÏÔ
+6Î1Ì
+Î1Í
+Î1Î
+1ÎÏ.
+ÎÏ5Á
+ÎÏ2ÂÒ
+ÎÏ5Å
+ÎÏ1Ú
+1ÎÏÊ
+1ÎÏÍ
+ÎÏÍ5Î
+ÎÏÍ5Þ
+ÎÏ5ÏÇ
+ÎÏ5Ó6Ð
+ÎÏ5Ó6È
+2ÎÏÔÄ
+ÎÏ5ÔË
+ÎÏ5ÔÒ
+1ÎÏÈ
+Î1Ð
+2Î1Ó
+Î6Ó5Á×
+Î2Ó1Â
+Î2Ó1×
+Î2ÓÇ
+Î2Ó1Ä
+Î2Ó1ÌÑ
+Î2Ó1Í
+Î2ÓÎ
+ÎÓ2ÐÒ
+ÎÓÕ2Ò
+ÎÓ1ÕÒÁ
+Î2ÓÆ
+Î1Ô
+ÎÔÉÁ2
+ÎÔÉÏ2
+Î2ÔË
+ÎÔ2Ò
+Î2ÔÒÁÄ
+ÎÔÒ1É2ÇÒ
+ÎÕ5Á
+ÎÕ6ÄÒ
+ÎÕÚ2
+ÎÕ6ÚÅ
+6Î1ÕÏ
+ÎÕÓ5ËÕ
+1ÎÕÀ
+6Î1Æ
+Î1È
+ÎÈÏ5
+2Î1Ã
+Î1Þ
+2Î1Û
+Î1Ý
+3ÎÙ
+1ÎØÏ
+1ÎØÀ
+Î1Ü
+Î5ÀÒ
+ÎÀ2Ó
+1ÎÑ
+2ÎÑÛ
+2Ï1Á2
+ÏÁÎÁÂÉ5
+Ï6Á5ÔÁ
+Ï1ÂÁ
+Ï1ÂÅ
+1ÏÂÅÓ
+Ï1ÂÉ
+Ï1ÂÌÁ
+Ï2ÂÌÁÇ
+Ï1ÂÌÅ
+Ï1ÂÌÉ
+ÏÂ5ÌÉË
+ÏÂ5ÌÉÞ
+Ï1ÂÌÏ
+Ï1Â1ÌÕ
+Ï1ÂÌÙ
+Ï1ÂÏ
+1Ï2ÂÏÚ
+ÏÂÏ1Ì
+ÏÂ1ÏÓÏ
+Ï1ÂÒ
+Ï1ÂÒÁ
+ÏÂ5ÒÁÄ
+ÏÂ5ÒÁÍ
+ÏÂ5ÒÁÓ
+Ï1ÂÒÅ
+Ï1ÂÒÉ
+Ï1ÂÒÏ
+Ï1ÂÒÕ
+Ï1ÂÒÙ
+Ï1ÂÕ
+1ÏÂÝ
+1ÏÂß
+Ï1ÂÙ
+Ï1ÂØÅ
+Ï1ÂØÉ
+Ï1ÂØÀ
+Ï1ÂØÑ
+Ï1ÂÀ
+Ï2ÂÑ
+2Ï×
+Ï1×Á
+Ï1×2×
+Ï×6ÄÁ
+Ï1×Å
+Ï×5ÚÎ
+Ï1×É
+Ï×5ÉÎÔ
+Ï×2ËÌ
+Ï1×ÌÁ
+Ï1×ÌÅ
+Ï1×ÌÉ
+Ï1×ÌÏ
+Ï1×ÌÕ
+Ï1×ÌÙ
+Ï1×Í
+Ï1×Ï
+Ï×Ï5ÓË
+Ï×Ï5ÓÔÒ
+Ï6×ÐÏ
+Ï2×ÐÒ
+Ï1×ÒÁ
+Ï1×ÒÅ
+Ï1×ÒÉ
+Ï1×ÒÏ
+Ï1×ÒÕ
+Ï2×ÒÙ
+Ï×2ÓÅ
+Ï1×2Ô
+Ï1×Õ
+Ï1×Ù
+Ï1×ØÅ
+Ï1×ØÉ
+Ï1×ØÀ
+Ï1×ØÑ
+Ï1×À
+Ï1×Ñ
+2ÏÇ
+Ï1ÇÁ
+Ï1Ç×
+Ï1ÇÄ
+Ï1ÇÅ
+Ï1ÇÉ
+Ï1ÇÌ
+Ï1ÇÌÁ
+Ï1ÇÌÅ
+Ï1ÇÌÉ
+Ï1ÇÌÏ
+Ï1ÇÌÕ
+Ï1ÇÌÙ
+Ï1ÇÎÁ
+Ï1ÇÎÅÚ
+Ï1ÇÎÏ
+Ï1ÇÏ
+Ï1ÇÒÁ
+Ï1ÇÒÅ
+Ï1ÇÒÉ
+Ï1ÇÒÏ
+Ï1ÇÒÕ
+Ï1ÇÒÙ
+Ï1ÇÕ
+Ï1ÇÙ
+Ï1ÇØÅ
+Ï1ÇØÉ
+Ï1ÇØÀ
+Ï1ÇØÑ
+Ï1ÇÀ
+Ï1ÇÑ
+Ï1ÄÁ
+Ï2Ä1ÁÄ
+2ÏÄÁÒ
+Ï1Ä×Á
+Ï1Ä×Å
+Ï1Ä×É
+Ï1Ä×Ï
+Ï1Ä×Õ
+Ï1Ä×Ù
+Ï1ÄÅ
+Ï1ÄÉ
+ÏÄÉ5ÁÐ
+Ï1ÄÌÁ
+Ï1ÄÌÅ
+Ï1ÄÌÉ
+Ï1ÄÌÏ
+Ï1ÄÌÕ
+Ï1ÄÌÙ
+Ï1ÄÏ
+ÏÄÏ1Ó
+ÏÄÏ6ÔÒ
+Ï2Ä1ÒÁ
+Ï1ÄÒÅ
+Ï1ÄÒÉ
+Ï1ÄÒÏ
+Ï2Ä1ÒÏÓ
+Ï1ÄÒÕ
+Ï1ÄÒÙ
+Ï1ÄÕ
+Ï2Ä1Õ2Ò
+Ï1ÄÙ
+ÏÄØ1
+Ï1ÄØÅ
+Ï1ÄØÉ
+Ï1ÄØÀ
+Ï1ÄØÑ
+Ï1ÄÀ
+Ï1ÄÑ
+Ï1Å
+ÏÅ2Â
+Ï2Å×Ì
+ÏÅ2Ä
+ÏÅ5ÄÁ
+ÏÅ5Ä6Ì
+Ï6ÅÐ
+Ï2ÅÔ
+ÏÅ2È
+Ï1ÖÁ
+Ï1ÖÅ
+Ï1ÖÉ
+Ï1ÖÍ
+Ï1ÖÏ
+Ï1ÖÕ
+Ï1ÖØÅ
+Ï1ÖØÉ
+Ï1ÖØÀ
+Ï1ÖØÑ
+2Ï1ÚÁ
+ÏÚ1ÄÕ
+ÏÚ5ÄÀ
+Ï1ÚÅ
+Ï1ÚÉ
+Ï1ÚÏ
+Ï2Ú1ÏÂ
+ÏÚ1ÒÏ
+Ï1ÚÕ
+Ï1ÚÙ
+Ï1ÚØÅ
+Ï1ÚØÉ
+Ï1ÚØÀ
+Ï1ÚØÑ
+Ï1ÚÀ
+Ï1ÚÑ
+2Ï1É
+ÏÉ2Ç6
+ÏÉ6Å
+ÏÉ2Ú
+ÏÉ2ÍÅ
+ÏÉ2ÍÕ
+ÏÉ2Ï
+ÏÊ5Ð
+Ï1ËÁ
+Ï2Ë1ÁÕ
+Ï1Ë×Á
+Ï1Ë×Å
+Ï1Ë×É
+Ï1Ë×Ï
+Ï1Ë×Õ
+Ï1Ë×Ù
+Ï1ËÅ
+Ï1ËÉ
+2ÏËÌ
+Ï1ËÌÁ
+Ï1ËÌÅ
+Ï1ËÌÉ
+Ï1ËÌÏ
+Ï1ËÌÕ
+Ï1ËÌÙ
+ÏË5ÎÅ
+ÏË1ÎÕ
+Ï1ËÏ
+2ÏËÏÌ
+Ï1ËÒÁ
+Ï1ËÒÅ
+Ï1ËÒÉ
+Ï1ËÒÏ
+Ï1ËÒÕ
+Ï1ËÒÙ
+ÏË1ÓË
+1ÏËÔ
+Ï1ËÕ
+Ï6ËÕÅ
+Ï1ËÙ
+Ï1ËØÅ
+Ï1ËØÉ
+Ï1ËØÀ
+Ï1ËØÑ
+Ï1ËÀ
+Ï1ËÑ
+2ÏÌ
+Ï1ÌÁ
+Ï1ÌÅ
+Ï5ÌÉ
+Ï3ÌÏ
+Ï1ÌÕ
+ÏÌÕÏ2
+Ï1ÌÙ
+Ï1ÌØÅ
+Ï1ÌØÉ
+Ï1ÌØÀ
+Ï1ÌØÑ
+Ï1ÌÀ
+Ï1ÌÑ
+2ÏÍ
+Ï1ÍÁ
+Ï1ÍÅ
+ÏÍÅ6ÄÌ
+Ï1ÍÉ
+ÏÍ1ÉÎÔ
+Ï1ÍÌÁ
+Ï1ÍÌÅ
+Ï1ÍÌÉ
+Ï1ÍÌÏ
+Ï1ÍÌÕ
+Ï1ÍÌÙ
+3ÏÍÍÅ
+ÏÍ2ÎÑ
+Ï1ÍÏ
+ÏÍ6ÐÓ
+ÏÍ2ÐÔ
+Ï1ÍÒÁ
+Ï1Í1ÒÅ
+Ï1ÍÒÉ
+Ï1ÍÒÏ
+Ï1ÍÒÕ
+Ï1ÍÒÙ
+Ï1ÍÕ
+Ï1ÍÙ
+Ï1ÍØÅ
+Ï1ÍØÉ
+Ï1ÍØÀ
+Ï1ÍØÑ
+Ï2ÍÀ
+Ï1ÍÑ
+Ï1ÎÁ
+2ÏÎÁÚ
+Ï1ÎÅ
+Ï1ÎÉ
+Ï1ÎÏ
+Ï1ÎÒÁ
+Ï1Î5ÒÅ
+Ï1ÎÒÉ
+Ï1ÎÒÏ
+Ï1ÎÒÕ
+Ï1ÎÒÙ
+ÏÎ2ÔÒÁÔ
+ÏÎ2ÔÒ1Õ2
+Ï1ÎÕ
+Ï2Î1ÕÜ
+Ï1ÎÙ
+Ï1ÎØÅ
+Ï1ÎØÉ
+Ï1ÎØÀ
+Ï1ÎØÑ
+Ï1ÎÀ
+Ï1ÎÑ
+Ï1Ï2
+Ï5ÏÁ
+ÏÏÂ2Õ3
+ÏÏÂ5Õ6ÞÅ
+ÏÏË6Ó
+Ï5ÏÍ
+ÏÏ5ÓÆ
+Ï2ÏÔÉ
+Ï2ÏÈÏ
+Ï1ÐÁ
+ÏÐÁÌÅ5
+Ï5Ð×
+Ï1ÐÅ
+Ï1ÐÉ
+2ÏÐÉÒ
+Ï1ÐÌÁ
+Ï1ÐÌÅ
+Ï1ÐÌÉ
+Ï1ÐÌÏ
+Ï1ÐÌÕ
+Ï1ÐÌÙ
+Ï1ÐÏ
+Ï1ÐÒÁ
+Ï1ÐÒÅ
+Ï1ÐÒÉ
+Ï1ÐÒÏ
+Ï1ÐÒÕ
+Ï1ÐÒÙ
+Ï1ÐÔÁ
+Ï1ÐÔÅ
+Ï1ÐÔÉ
+Ï1ÐÔÏ
+Ï1Ð5ÔÕ
+Ï1ÐÔÙ
+Ï1ÐÕ
+Ï1ÐÙ
+Ï1ÐØÅ
+Ï1ÐØÉ
+Ï1ÐØÀ
+Ï1ÐØÑ
+Ï1ÐÀ
+Ï1ÐÑ
+Ï1ÒÁ
+Ï2ÒÁÌÇ
+ÏÒÁ5Ó6ÐÒ
+6ÏÒÁÔ
+Ï1ÒÅ
+Ï1ÒÉ
+ÏÒÉ5ÏÌ
+ÏÒ1ÉÓÐ
+Ï1ÒÏ
+ÏÒÔ1Ì
+ÏÒ5ÔØ
+ÏÒ5ÔÑ
+Ï1ÒÕ
+Ï5ÒÕ.
+ÏÒ5ÕÚ
+ÏÒ5ÕÜ
+2Ï1ÒÙ
+Ï1ÒØÅ
+Ï1ÒØÉ
+Ï1ÒØÀ
+Ï1ÒØÑ
+Ï1ÒÀ
+Ï1ÒÑ
+Ï1ÓÁ
+Ï1ÓÂ
+ÏÓ5ÂÁ
+Ï1Ó×Á
+Ï1Ó×Å
+Ï1Ó×É
+Ï1Ó×Ï
+Ï1Ó×Õ
+Ï1Ó×Ù
+ÏÓ1Ç
+Ï1ÓÅ
+Ï1ÓÉ
+Ï6Ó5ÉÚ
+ÏÓ1ËÁ.
+Ï1ÓË×Á
+Ï1ÓË×Å
+Ï1ÓË×É
+Ï1ÓË×Ï
+Ï1ÓË×Õ
+Ï1ÓË×Ù
+ÏÓ1ËÉ
+ÏÓ1ËÏÊ
+Ï1ÓËÒÁ
+Ï1ÓËÒÅ
+Ï1ÓËÒÉ
+Ï1ÓËÒÏ
+Ï1ÓËÒÕ
+Ï1ÓËÒÙ
+ÏÓ1ËÕ.
+ÏÓ5ÍÉ
+ÏÓ1ÍÏÓ
+ÏÓ2Î
+Ï1ÓÎÅ
+Ï1ÓÎÉÍ
+ÏÓ5ÎÉÔ
+Ï1ÓÏ
+6ÏÓÐ
+ÏÓ6ÐÁÔ
+Ï1ÓÐÅ
+ÏÓ6ÐÌÅ
+Ï1ÓÒÁ
+Ï1ÓÒÅ
+Ï1ÓÒÉ
+Ï1ÓÒÏ
+Ï1ÓÒÕ
+Ï1ÓÒÙ
+ÏÓ2Ó×
+ÏÓ2ÓËÏ
+ÏÓ2Ó1Í
+ÏÓ2ÓÐ
+ÏÓ6ÓÞ
+Ï1ÓÔÁ
+2ÏÓÔÁÌ
+Ï2ÓÔ1×
+Ï1ÓÔ×Á
+Ï1ÓÔ×Å
+Ï1ÓÔ×É
+Ï1ÓÔ×Ï
+Ï1ÓÔ×Õ
+Ï1ÓÔ×Ù
+Ï1ÓÔ×ØÅ
+Ï1ÓÔ×ØÉ
+Ï1ÓÔ×ØÀ
+Ï1ÓÔ×ØÑ
+Ï1ÓÔ×À
+Ï1ÓÔ×Ñ
+Ï1ÓÔÅ
+Ï1ÓÔÉ
+Ï5ÓÔÌ
+Ï1Ó6ÔÏ
+Ï1ÓÔÒÁ
+Ï1ÓÔÒÅ
+Ï1ÓÔÒÉ
+Ï1ÓÔÒÏ
+Ï1ÓÔÒÕ
+Ï1ÓÔÒÙ
+Ï1ÓÔÒØÅ
+Ï1ÓÔÒØÉ
+Ï1ÓÔÒØÀ
+Ï1ÓÔÒØÑ
+Ï1ÓÔÒÀ
+Ï1ÓÔÒÑ
+Ï1ÓÔÕ
+Ï1ÓÔÙ
+Ï1ÓÔØÅ
+Ï1ÓÔØÉ
+Ï1ÓÔØÀ
+Ï1ÓÔØÑ
+Ï1ÓÔÀ
+Ï1ÓÔÑ
+Ï1ÓÕ
+Ï2Ó1ÕÎ
+Ï6Ó5ÕÐ
+2ÏÓÆ
+Ï1ÓÞÅ
+Ï1ÓÙ
+Ï1ÓØÅ
+Ï1ÓØÉ
+Ï1ÓØÀ
+Ï1ÓØÑ
+Ï1ÓÀ
+Ï1ÓÑ
+Ï1ÔÁ
+ÏÔ1×
+Ï6Ô×Á
+Ï1Ô×Å
+Ï1Ô×É
+Ï1Ô×Ï
+1ÏÔ×Ò
+Ï1Ô×Õ
+Ï1Ô×Ù
+1ÏÔÄ
+Ï1ÔÅ
+Ï3ÔÉ
+5ÏÔËÒ
+ÏÔ1Ì
+Ï1ÔÏ
+ÏÔÏ5Ë6
+2ÏÔÒ
+Ï1ÔÒÁ
+ÏÔ5ÒÁÓ
+Ï1ÔÒÅ
+Ï1ÔÒÉ
+Ï1ÔÒÏ
+Ï1ÔÒÕ
+Ï1ÔÒÙ
+Ï5ÔÒÀ
+Ï1ÔÒÑ
+Ï1ÔÕ
+Ï1ÔÙ
+Ï1ÔØÅ
+Ï1ÔØÉ
+Ï5ÔØ6Í
+Ï1ÔØÀ
+Ï1ÔØÑ
+Ï1ÔÀ
+Ï1ÔÑ
+2Ï1Õ2
+ÏÕÚ6
+ÏÕÍÙ6
+ÏÕÍÙÛ5
+2ÏÆ
+Ï1ÆÁ
+Ï1ÆÅ
+Ï1ÆÉ
+Ï1ÆÌÁ
+Ï1ÆÌÅ
+Ï1ÆÌÉ
+Ï1ÆÌÏ
+Ï1ÆÌÕ
+Ï1ÆÌÙ
+Ï1ÆÏ
+Ï2Æ1ÏÒÉ
+ÏÆÏÓ5
+Ï1ÆÒÁ
+Ï1ÆÒÅ
+Ï1ÆÒÉ
+Ï1ÆÒÏ
+Ï1ÆÒÕ
+Ï1ÆÒÙ
+Ï1ÆÕ
+Ï1ÆØÅ
+Ï1ÆØÉ
+Ï1ÆØÀ
+Ï1ÆØÑ
+Ï1ÆÀ
+Ï1ÆÑ
+Ï1ÈÁ
+Ï1ÈÄÁ
+Ï1ÈÄÅ
+Ï1ÈÄÉ
+Ï1ÈÄÏ
+Ï1ÈÄÕ
+Ï1ÈÄÙ
+Ï1ÈÅ
+2Ï1ÈÉ
+ÏÈ5ÌÅ
+Ï1ÈÏ
+6ÏÈÏÒ
+2Ï5ÈÒÏ
+Ï5È6Ô
+Ï1ÈÕ
+Ï1ÈÙ
+Ï1ÈØÅ
+Ï1ÈØÉ
+Ï1ÈØÀ
+Ï1ÈØÑ
+Ï1ÈÀ
+Ï1ÈÑ
+Ï1ÃÁ
+Ï1ÃÅ
+Ï1ÃÉ
+Ï2ÃÏ
+Ï1ÃÕ
+Ï1ÃÙ
+Ï1ÃØÅ
+Ï1ÃØÉ
+Ï1ÃØÀ
+Ï1ÃØÑ
+6Ï1ÞÁ
+Ï1ÞÅ
+Ï1ÞÉ
+ÏÞÉ6Ñ
+Ï1ÞÌ
+6Ï1ÞÕ
+Ï1ÞØÅ
+Ï1ÞØÉ
+Ï1ÞØÀ
+Ï1ÞØÑ
+Ï1ÛÁ
+Ï1Û×Á
+Ï1Û×Å
+Ï1Û×É
+Ï1Û×Ï
+Ï1Û×Õ
+Ï1Û×Ù
+Ï1ÛÅ
+Ï1ÛÉ
+Ï1Û6Ì
+Ï1ÛÌÁ
+Ï1ÛÌÅ
+Ï1ÛÌÉ
+Ï1ÛÌÏ
+Ï1ÛÌÕ
+Ï1ÛÌÙ
+Ï6ÛÎ
+Ï1ÛÏ
+Ï5ÛÐ
+Ï1ÛÒÁ
+Ï1ÛÒÅ
+Ï1ÛÒÉ
+Ï1ÛÒÏ
+Ï1ÛÒÕ
+Ï1ÛÒÙ
+Ï1ÛÔÁ
+Ï1ÛÕ
+Ï1ÛØÅ
+Ï1ÛØÉ
+Ï1ÛØÀ
+Ï1ÛØÑ
+Ï1ÝÁ
+Ï1ÝÅ
+Ï1ÝÉ
+Ï1ÝÏ
+Ï1ÝÕ
+Ï1ÝØÅ
+Ï1ÝØÉ
+Ï1ÝØÀ
+Ï1ÝØÑ
+Ï1Ù
+2Ï1Ü
+ÏÜ5ÔÉ
+Ï1À
+ÏÀ2Â
+Ï1Ñ
+ÏÑ6Â
+ÏÑ2×
+ÏÑ2Ä
+ÏÑ2Ú
+ÏÑ6Ò
+ÐÁ5Ó2Ë
+ÐÁ1ÓÍ
+ÐÁ5ÔÌ
+6Ð1Â
+Ð×6
+Ð5×Ë
+Ð1Ä
+ÐÅ5ÄÖ
+ÐÅÄ1ÉÎ
+1ÐÅÎÚ
+ÐÅ1Ð6
+ÐÅÒ1×
+ÐÅÒ2Í1ÁÌ
+ÐÅÒ1Ï
+ÐÅ2ÒÏÓ
+ÐÅ6Ó5Ë
+1ÐÅÞ
+1ÐÉÓ
+1ÐÉÔ
+6Ð1Ë
+1ÐÌ
+6ÐÌÁÎÄ
+ÐÌÅ6×5Ò
+ÐÌÏÓ1
+2Ð1Í
+Ð1Î
+Ð6ÎÅ×
+1ÐÏ
+ÐÏ5Â
+ÐÏ5Ç6
+ÐÏÄ1Ö
+ÐÏ2Ä1Ì
+ÐÏ2ÄÏÔ
+ÐÏ2ÄÒÅ
+ÐÏ2ÄØ
+ÐÏ1Ú
+ÐÏ2Ú1ÄÁ
+ÐÏÌ5ÏÂ
+ÐÏ1Í
+ÐÏÓ2
+ÐÏ1ÓË
+ÐÏ1ÓÍ
+ÐÏ1ÓÓ
+ÐÏ2ÓÔÉ
+ÐÏ1ÓÈ
+5ÐÏÓÙ
+ÐÏ1Ô2Ì
+ÐÏ1ÔÒ
+ÐÏ1È
+ÐÏÜ1Í
+Ð1Ð
+1ÐÒ
+2Ð1ÒÁÊ
+ÐÒÅ6ÄÉÎ
+ÐÒÅÊ2
+ÐÒ6Ö
+ÐÒÉ5×
+ÐÒÉ1Ì
+ÐÒÉÌØ2
+ÐÒÉÎ6Ó5
+ÐÒÉ1Ó
+ÐÒÉÞÅ2Ó1Ë
+6ÐÒÎ
+ÐÒÏ5ÍÞ
+ÐÒÏ1ÓË
+2ÐÒÓ
+6ÐÒÈ
+6ÐÓ.
+1Ð2ÓÅ
+1Ð2ÓÉ
+Ð1ÓË
+1Ð2ÓÏ
+Ð1ÓÔ
+5Ð6ÓÕ
+Ð6ÓÙ
+5ÐÓÀ
+Ð1ÔÁÔ
+ÐÔ1×
+2Ð1ÔÉÚ
+6Ð5ÔÉÌ
+6ÐÔÉÍ
+Ð5ÔÏË
+Ð1ÔÏÎ
+Ð5ÔÏÃ
+Ð1ÔÒ
+5ÐÔÑ
+2Ð1Æ
+2Ð1Ã
+Ð1Þ
+5Ð6ÞÅÎÎ
+2Ð1Û
+Ð1Ý
+5ÐÜ
+5ÐÑ
+ÒÁÁ6
+1ÒÁÂ
+ÒÁ1ÇÎ
+ÒÁÚ1×
+ÒÁ6ÚÕÂ
+ÒÁ6Ë×
+1ÒÁÌÇ
+5ÒÁÍÌ
+ÒÁÎ2ÓÕ
+Ò6ÁÐ
+ÒÁÓ1Â
+ÒÁ2ÓË
+ÒÁ6ÓÌÑ
+ÒÁÓ5Í
+ÒÁ2ÓÔ×
+ÒÁ2Ó1ÔÅÒ
+ÒÁ2Ó1ÔÉÒ
+ÒÁÓ1ÔÏÒ
+ÒÁ2Ó1ÔÒÁ
+ÒÁ2Ó1ÔÒÏÇ
+ÒÁ2Ó1ÔÒÏÅ
+ÒÁ6ÓÔÕÛ
+ÒÁ2ÔÁË
+ÒÁ5ÕÓ
+2ÒÁÜ
+Ò1Â
+ÒÂ6Ï
+Ò1×ÁÒ
+1Ò×ÁÔØ
+Ò1×ÁÃ
+Ò1×ÅÖ
+Ò1×ÅÊ
+Ò1×ÅÎ
+Ò1×É
+Ò1×Ï
+Ò×Ï5Ú
+6Ò×Ó
+Ò1×Ñ
+Ò1Ç
+Ò2Ç×
+Ò6ÇÄ
+Ò2Ç1Î
+Ò2ÇÏÔ
+Ò6ÇÒÁÂ
+Ò1Ä
+ÒÄ2Ì
+Ò2ÄÎ
+Ò2Ä1Ã
+ÒÅ6×Ð
+ÒÅ6ÄÌ
+ÒÅ6ÄÏÐ
+ÒÅ2Ä1Ò
+ÒÅÅ2
+ÒÅ5ÖØ
+1ÒÅÚÁ
+ÒÅ1ÚÒ
+ÒÅ2Ë1×Á
+1ÒÅËÌÁ
+ÒÅÍ1Î
+ÒÅÏ2Ä
+ÒÅ5ÏÌÁ
+ÒÅ2ÏÓ
+ÒÅ2ÏÔ
+ÒÅÏ2Ã
+ÒÅ6ÐÔ
+ÒÅ1Ò2
+ÒÅ2Ó1×
+ÒÅ1Ó2Ð
+ÒÅ1ÓÞ
+ÒÅ2È1Ò
+Ò1Ö
+1ÒÖÁ×Å
+Ò2ÖÎ
+Ò5ÚÄ
+Ò1ÚÅ
+Ò1ÚÉ
+Ò1ÚÏ
+Ò5ÚÙ
+Ò1ÚÑ
+ÒÉ5Á
+ÒÉÁ6Ú
+ÒÉ5×Ë
+ÒÉ2ÄÒ
+2ÒÉÅÎ
+ÒÉ1ÖÍ
+ÒÉ1Ú×
+ÒÉ1ÚÎ
+ÒÉ6ÚÏË
+6ÒÉÍÍ
+ÒÉ1ÍÞ
+5ÒÉÓÏ
+2ÒÉÓÐ
+ÒÉ1ÈÌ
+Ò1Ë
+ÒË1Î
+Ò1Ì
+Ò1Í
+Ò2ÍË
+Ò2Í1Î
+Ò2ÍÓ
+Ò2Í5Þ
+Ò6ÍÝ
+Ò6ÍØ
+Ò1Î
+ÒÏ5Á
+2ÒÏÂÌ
+6ÒÏÂß
+ÒÏ5×È
+ÒÏÇ1ÎÅ
+ÒÏÇ1ÎÕ
+ÒÏ1ÄÖ
+ÒÏ1ÄÚ
+ÒÏ5ÄÌ
+ÒÏ1Ú×
+ÒÏ1ÚÒ
+ÒÏÉ2Ó
+ÒÏ6ÐÔ
+ÒÏ1Ò×
+2Ò1ÏÒÔ
+ÒÏ1ÓÍ
+ÒÏ5ÓÎÕ
+ÒÏ5ÓÐÁ
+ÒÏ5ÓÐÌ
+ÒÏ5Ó6Ã
+1ÒÏÓÛ
+2ÒÏÔÄ
+5ÒÏÔÓ
+5ÒÏÕÜ
+ÒÏ1È
+Ò6ÏÞ
+Ò1Ð
+ÒÐÕÓ5
+Ò1Ò
+ÒÒÏ5
+ÒÒÏÓ6
+Ò1Ó
+Ò2ÓÎ
+ÒÓ6Ð
+Ò1ÔÁ
+Ò2Ô1ÁËÔ
+Ò2ÔÁÐ
+ÒÔ1×
+Ò5Ô6×Á
+Ò1ÔÅ
+Ò1ÔÉ
+ÒÔ1ÌÀ
+Ò5ÔÌÑ
+Ò1ÔÏ
+Ò2Ô1ÏÂ
+Ò1ÔÒ
+Ò1ÔÕ
+Ò1ÔÙ
+Ò1ÔØÀ
+Ò1ÔÀ
+ÒÕ6ÄÁÒ
+ÒÕÚ2Ì
+ÒÕË5Ó
+6ÒÕÏ
+Ò1Æ
+Ò2È1×
+Ò1ÈÅ
+ÒÈ5ÌÅ
+Ò1ÈÌÏ
+Ò1ÈÏ
+Ò2È1ÏÐ
+ÒÈ1Õ2
+Ò1Ã
+Ò2Ã1×
+ÒÃÅ6Ð5
+Ò1Þ
+Ò1Û
+Ò6Û×
+Ò2ÛË
+Ò2ÛÎ
+Ò2Û1Ò
+Ò1Ý
+1ÒÙÂ
+ÒÙ2Ç1Î
+ÒÙÈ1
+Ò1Ü
+Ò6ÜÐ
+1ÓÁ
+5ÓÁ.
+ÓÁ2Ë×
+ÓÁ5Ó6
+ÓÂÅ5Ú
+ÓÂÅÚÏ5
+ÓÂÏ1Ô
+1Ó×
+Ó×Á6Å
+Ó1×ÅÎ
+2Ó1×É
+Ó×Ï5×
+ÓÇ6
+Ó1ÄÁ
+1ÓÄ×
+Ó3ÄÅ
+Ó5ÄÉ
+1ÓÅ
+ÓÅÇÏ1
+ÓÅÇÏÄ2
+ÓÅ1Ú
+5ÓÅË
+ÓÅËÓ1Ô
+ÓÅÒ5×Á
+1ÓÖ
+6Ó1Ú
+1ÓÉ
+6ÓÉÄÁ
+ÓÉ3ÏÍ
+2Ó1É2ÏÒ
+2Ó1ÉÓÐ
+2ÓË.
+Ó6ËÁË
+1ÓËÁÆ
+6ÓËÉÌ
+1Ó2ËÌÅ
+Ó6ËÌÏ
+2ÓËÎ
+ÓË1ÎÕ
+6ÓËÏÎ
+1ÓËÏÐ
+Ó2ËÏÐ.
+1ÓÌ
+6ÓÌ.
+ÓÌÅ5Ï6
+2Ó1ÌÉÒÕ
+6Ó5ÌÏË
+2ÓÌØ
+6ÓÌÑÍ
+2ÓÍÅÎ.
+5ÓÍÅÓ
+Ó1ÍÅÔ
+5ÓÍÙ
+Ó1Î
+6Ó5ÎÁ.
+1Ó2ÎÁÂ
+Ó3ÎÉË
+Ó5ÎÏÅ
+Ó5ÎÏÊ
+Ó5ÎÏÍ
+2ÓÎÙ
+1ÓÏ
+ÓÏÂ1ÌÁÇ
+ÓÏ6×Ú
+ÓÏ6×ÉÎ
+ÓÏ6×5Ô
+ÓÏ1Ç
+ÓÏ1Ö
+ÓÏ1Ú
+ÓÏ1Ì2Ç
+ÓÏ1Í
+5Ó6ÏÎ
+ÓÏ1Ò2×
+ÓÏ1Ó
+ÓÏÓ6Â
+ÓÏ6Ó5ÎÏ
+ÓÏÓ6Ð
+ÓÏ5Ý
+Ó1ÐÁ
+Ó6Ð×
+1ÓÐÅÎÓ
+ÓÐÅ1Ò2ÓÉ
+Ó2ÐÅÛ
+Ó5ÐÉÌ
+Ó2ÐÏÓ
+1ÓÐÏÓÏ
+1Ó2ÐÏÔ
+Ó1Ó
+Ó2ÓÂ
+ÓÓ1×Ï
+2ÓÓË
+Ó2ÓÎ
+Ó3Ó2ÎÅ
+Ó2ÓÏÒÉ
+ÓÓ6Ó
+6ÓÓ6Ô
+Ó6ÓÆ
+Ó6ÓÃ
+Ó6ÓÛ
+2ÓÔ.
+ÓÔÁ2×1Ò
+2ÓÔÁÕ
+2ÓÔ×.
+ÓÔ6×Ï
+2ÓÔÅÒÌ
+2ÓÔÅÓ
+2ÓÔË
+Ó1ÔÌÅ
+ÓÔ5ÌÑ
+2ÓÔÎ
+1ÓÔÏ
+6ÓÔÒ.
+2ÓÔÒÕÂ
+6ÓÔÓ
+6ÓÔÕÄÙ
+5ÓÔÙ
+2ÓÔØ.
+5ÓÔØÏ
+1ÓÕ
+ÓÕ2Â1
+6Ó5ÕÉ
+ÓÕ2ÎÉ
+ÓÕÐÅ2
+ÓÕÐÅÒ1
+1ÓÆÅ
+6ÓÆÉ
+ÓÈ6
+1ÓÈÅ
+Ó1ÈÌ
+Ó1ÈÏ
+Ó1Ã
+1Ó2ÃÅÍ
+1ÓÞÁÓ
+Ó1ÞÁÔ
+ÓÞÅ2Ó1Ë
+1ÓÞÉÔ
+Ó1ÞÌ
+6Ó5ÞÕ
+Ó1Û6
+Ó1Ý
+1Óß2
+ÓßÅ3Ä
+ÓßÅ3Ì
+ÓßÅ5ÍÁ
+ÓßÅ3ÍÏ
+ÓßÅ5È
+1ÓÙ
+6Ó1Ü6
+ÔÁ2ÉÌ
+1ÔÁËÔ
+ÔÁÍÅ2
+ÔÁÍÅÓ1
+2ÔÁÍÐ
+ÔÁ2ÎÁÌ
+1ÔÁÕ
+6Ô1Â
+Ô5×ÉÌ
+Ô2×Ì
+Ô×Ï1Ú
+1Ô2×ÏÒ
+5Ô×ØÀ
+2Ô1Ç
+Ô1Ä2
+ÔÅÇ1Î
+1ÔÅËÁ
+ÔÅË1ÓÔÁ
+1ÔÅËÛ
+ÔÅÌÅ3Ï
+5ÔÅÌÅÒ
+ÔÅÍ5Î
+ÔÅ2ÏÓ
+ÔÅ2Ò1ÁË
+ÔÅÒ1×
+ÔÅÒÅ2Ï3
+1ÔÅÒÌ
+ÔÅ2È1Ï
+1ÔÅÞÅ
+5ÔÅÞØ
+Ô1Ö
+Ô1Ú
+ÔÉ5Á
+5ÔÉÇÅ
+Ô1ÉÍÐ
+2Ô1ÉÎ×
+Ô5ÉÎÄ
+6ÔÉÎÖ
+2Ô1ÉÎÆ
+ÔÉ5ÏÌÉ
+ÔÉÏ2Ð
+ÔÉ1Ó2Ð
+ÔÉ5ÔÕ
+2ÔÊ
+Ô1Ë
+1Ô2ËÁÎ
+Ô6ËÁÞ
+1ÔËÎ
+Ô5ÌÅÊ
+Ô5ÌÉÎ
+1ÔÌÉÔ
+Ô1ÌÏÇ
+2ÔÌØ
+2Ô1Í2
+2Ô1Î
+ÔÏ5Ç
+ÔÏÚÁ6×5
+ÔÏ1Ú×
+1ÔÏÌË
+2ÔÏÍÍ
+6ÔÏÍÓ
+2ÔÏÍÝ
+6ÔÏÍÜ
+2ÔÏÎÇ
+ÔÏ6ÐÔ
+1ÔÏÒÓ
+1ÔÏÒÃ
+ÔÏ1Ó2
+1ÔÏÞÎ
+5ÔÏÝ
+2Ô1Ð
+2ÔÒ.
+2ÔÒÁÂÏ
+Ô2ÒÁ×
+Ô1ÒÁÚ
+2ÔÒ1ÁÒ
+2ÔÒÁÓÓ
+2ÔÒÂ
+6ÔÒ×
+2ÔÒÇ
+2ÔÒÄ
+1ÔÒÅÂ
+6Ô1ÒÅÄ
+ÔÒÅ2È
+1ÔÒÉÂ
+2ÔÒÉÇÒ
+ÔÒÉ3Ï
+2ÔÒË
+2ÔÒÍ
+2ÔÒÐ
+2ÔÒÒ
+6ÔÒÓ
+2ÔÒÔ
+1ÔÒÕÂ
+2ÔÒÆ
+2ÔÒÃ
+2ÔÒ5Û
+Ô1ÒÙ×
+2ÔÒÜ
+6Ô5ÒÑÄ
+2Ô1Ó
+Ô6ÓÄ
+Ô2Ó1Í
+ÔÓ2Î
+6Ô1Ô
+Ô2ÔÌ
+5ÔÕÄÙ
+6ÔÕÏÔ
+ÔÕ2ÐÒ
+2ÔÕÞ
+ÔÕ2ÞÅ
+5ÔÕÛÅ×
+2Ô1ÕÜ
+ÔÕ2ÜÌ
+2Ô1Æ
+2ÔÈ
+Ô1ÈÅ
+ÔÈ1Ì
+Ô1ÈÏ
+2Ô1Ã
+Ô1Þ
+2Ô1Û2
+2Ô1Ý
+ÔÙÓ5Ë
+2ÔØ.
+ÔØ5×
+ÔØ6ÍÕ
+ÔØ5ÏÒ
+2Ô1Ü6
+ÔÑ5ÂÒÑ
+5ÔÑÎÕ
+Ô1Ñ2Þ
+Õ1Á
+Õ6ÁÌÅ
+Õ2ÁÎÔ
+Õ2ÁÒ
+Õ5ÁÒÉ
+Õ6ÁÓ
+Õ1ÂÁ
+Õ1ÂÅ
+5Õ6ÂÅÄ
+Õ1ÂÉ
+Õ1ÂÌÁ
+Õ1ÂÌÅ
+Õ1ÂÌÉ
+Õ1ÂÌÏ
+Õ1ÂÌÕ
+Õ1ÂÌÙ
+Õ1ÂÏ
+Õ1ÂÒÁ
+Õ1ÂÒÅ
+Õ1ÂÒÉ
+Õ1ÂÒÏ
+Õ1ÂÒÕ
+Õ1ÂÒÙ
+Õ1ÂÕ
+Õ1ÂÙ
+Õ1ÂØÅ
+Õ1ÂØÉ
+Õ1ÂØÀ
+Õ1ÂØÑ
+Õ1ÂÀ
+Õ1ÂÑ
+Õ1×Á
+Õ1×Å
+Õ1×É
+Õ1×ÌÁ
+Õ1×ÌÅ
+Õ1×ÌÉ
+Õ1×ÌÏ
+Õ1×ÌÕ
+Õ1×ÌÙ
+Õ1×Ï
+Õ1×ÒÁ
+Õ1×ÒÅ
+Õ1×ÒÉ
+Õ1×ÒÏ
+Õ1×ÒÕ
+Õ1×ÒÙ
+Õ1×Õ
+Õ1×Ù
+Õ1×ØÅ
+Õ1×ØÉ
+Õ1×ØÀ
+Õ1×ØÑ
+Õ1×À
+Õ1×Ñ
+Õ1ÇÁ
+Õ2ÇÁÄ
+Õ1ÇÅ
+Õ1ÇÉ
+Õ1ÇÌ
+Õ1ÇÌÁ
+Õ1ÇÌÅ
+Õ1ÇÌÉ
+Õ1ÇÌÏ
+Õ1ÇÌÕ
+Õ1ÇÌÙ
+Õ1ÇÏ
+Õ1ÇÒÁ
+Õ1ÇÒÅ
+Õ1ÇÒÉ
+Õ1ÇÒÏ
+Õ1ÇÒÕ
+Õ1ÇÒÙ
+Õ1ÇÕ
+Õ1ÇÙ
+Õ1ÇØÅ
+Õ1ÇØÉ
+Õ1ÇØÀ
+Õ1ÇØÑ
+Õ1ÇÀ
+Õ1ÇÑ
+Õ1ÄÁ
+ÕÄ2×
+Õ1Ä×Á
+Õ1Ä×Å
+Õ1Ä×É
+Õ1Ä×Ï
+Õ1Ä×Õ
+Õ1Ä×Ù
+Õ1ÄÅ
+Õ5ÄÖ
+Õ1ÄÉ
+ÕÄÉ5Ó
+Õ6ÄÌ
+Õ1ÄÌÁ
+Õ1ÄÌÅ
+Õ1ÄÌÉ
+Õ1ÄÌÏ
+Õ1ÄÌÕ
+Õ1ÄÌÙ
+Õ1ÄÏ
+Õ1ÄÒ
+Õ1ÄÒÁ
+Õ1ÄÒÅ
+Õ1ÄÒÉ
+Õ1ÄÒÏ
+Õ2Ä1ÒÕ
+Õ1ÄÒÙ
+Õ1ÄÕ
+Õ1ÄÙ
+Õ1ÄØÅ
+Õ1ÄØÉ
+Õ1ÄØÀ
+Õ1ÄØÑ
+Õ1ÄÀ
+Õ1ÄÑ
+Õ1Å
+ÕÅ2Â
+Õ2Å×
+Õ5Å×Á
+1Õ2ÅÌ
+Õ5ÅÍ.
+ÕÅ1Ò
+Õ2ÅÓ
+Õ1ÖÁ
+Õ1ÖÅ
+Õ1ÖÉ
+Õ1ÖÏ
+Õ1ÖÕ
+Õ1ÖØÅ
+Õ1ÖØÉ
+Õ1ÖØÀ
+Õ1ÖØÑ
+Õ1ÚÁ
+ÕÚ6ÇÎ
+ÕÚ5ÄÁ
+ÕÚ5ÄÀ
+Õ1ÚÅ
+Õ6ÚÅÌ
+Õ1ÚÉ
+1ÕÚÌ
+Õ1ÚÏ
+Õ1ÚÕ
+Õ1ÚÙ
+Õ1ÚØÅ
+Õ1ÚØÉ
+Õ1ÚØÀ
+Õ1ÚØÑ
+Õ1ÚÀ
+Õ1ÚÑ
+Õ1É
+Õ6ÉË
+5Õ6ÉÞ
+Õ1ËÁ
+Õ1Ë×Á
+Õ1Ë×Å
+Õ1Ë×É
+Õ1Ë×Ï
+Õ1Ë×Õ
+Õ1Ë×Ù
+Õ1ËÅ
+Õ1ËÉ
+Õ1ËÌÁ
+Õ1ËÌÅ
+Õ1ËÌÉ
+Õ1ËÌÏ
+Õ1ËÌÕ
+Õ1ËÌÙ
+ÕË1Î
+Õ1ËÏ
+ÕËÏÓ6
+Õ1ËÒÁ
+Õ1ËÒÅ
+Õ1ËÒÉ
+Õ1ËÒÏ
+Õ1ËÒÕ
+Õ1ËÒÙ
+Õ1ËÕ
+Õ1ËÙ
+Õ1ËØÅ
+Õ1ËØÉ
+Õ1ËØÀ
+Õ1ËØÑ
+Õ1ËÀ
+Õ1ËÑ
+Õ1ÌÁ
+2Õ5ÌÅ
+ÕÌÅ2Ð
+Õ1ÌÉ
+Õ1ÌÏ
+Õ1ÌÕ
+Õ1ÌÙ
+ÕÌØ1Ä
+Õ1ÌØÅ
+Õ1ÌØÉ
+Õ1ÌØÀ
+Õ1ÌØÑ
+Õ1ÌÀ
+Õ1ÌÑ
+Õ5ÍÁ
+Õ1ÍÅ
+Õ1ÍÉ
+Õ6ÍÉÅ
+1Õ2ÍÌ
+Õ1ÍÌÁ
+Õ1ÍÌÅ
+Õ1ÍÌÉ
+Õ1ÍÌÏ
+Õ1ÍÌÕ
+Õ1ÍÌÙ
+ÕÍ1ÎÏÇ
+Õ1ÍÏ
+Õ1ÍÒÁ
+Õ1ÍÒÅ
+Õ1ÍÒÉ
+Õ1ÍÒÏ
+Õ1ÍÒÕ
+Õ1ÍÒÙ
+Õ1ÍÕ
+Õ1ÍÙ
+5Õ6ÍÙÛ
+Õ1ÍØÅ
+Õ1ÍØÉ
+Õ1ÍØÀ
+Õ1ÍØÑ
+Õ1ÍÀ
+Õ1ÍÑ
+Õ1ÎÁ
+Õ1ÎÅ
+Õ1ÎÉ
+Õ1ÎÏ
+Õ1ÎÒÁ
+Õ1ÎÒÅ
+Õ1ÎÒÉ
+Õ1ÎÒÏ
+Õ1ÎÒÕ
+Õ1ÎÒÙ
+Õ1ÎÕ
+Õ1ÎÙ
+Õ4ÎÙ×
+Õ1ÎØÅ
+Õ1ÎØÉ
+Õ1ÎØÀ
+Õ1ÎØÑ
+Õ1ÎÀ
+Õ1ÎÑ
+Õ1Ï
+ÕÏ6ËÏ
+ÕÏ2Ó
+1Õ2ÏÔ
+Õ1ÐÁ
+Õ1ÐÅ
+Õ1ÐÉ
+Õ1ÐÌÁ
+Õ1ÐÌÅ
+Õ1ÐÌÉ
+Õ1ÐÌÏ
+Õ1ÐÌÕ
+Õ1ÐÌÙ
+Õ1ÐÏ
+Õ1ÐÒÁ
+Õ1ÐÒÅ
+Õ1ÐÒÉ
+Õ1ÐÒÏ
+Õ1ÐÒÕ
+Õ1ÐÒÙ
+Õ1ÐÔÁ
+Õ1ÐÔÅ
+Õ1ÐÔÉ
+Õ1ÐÔÏ
+Õ1ÐÔÕ
+Õ1ÐÔÙ
+Õ1ÐÕ
+Õ1ÐÙ
+Õ1ÐØÅ
+Õ1ÐØÉ
+Õ1ÐØÀ
+Õ1ÐØÑ
+Õ1ÐÀ
+Õ1ÐÑ
+Õ1ÒÁ
+ÕÒ5ÁÌÀ
+ÕÒ1×
+Õ1ÒÅ
+Õ5ÒÉ
+Õ1ÒÏ
+Õ1ÒÕ
+ÕÒÕ5Ç
+Õ1ÒÙ
+Õ1ÒØÅ
+Õ1ÒØÉ
+Õ1ÒØÀ
+Õ1ÒØÑ
+Õ1ÒÀ
+Õ1ÒÑ
+Õ1ÓÁ
+ÕÓ6Â
+Õ1Ó×Á
+Õ1Ó×Å
+Õ1Ó×É
+Õ1Ó×Ï
+Õ1Ó×Õ
+Õ1Ó×Ù
+ÕÓ1Ä
+Õ1ÓÅ
+Õ1ÓÉ
+ÕÓ1ËÁ
+Õ1ÓË×Á
+Õ1ÓË×Å
+Õ1ÓË×É
+Õ1ÓË×Ï
+Õ1ÓË×Õ
+Õ1ÓË×Ù
+ÕÓ5ËÉ
+ÕÓ5ËÏ×
+ÕÓ1ËÏÍ
+Õ1ÓËÒÁ
+Õ1ÓËÒÅ
+Õ1ÓËÒÉ
+Õ1ÓËÒÏ
+Õ1ÓËÒÕ
+Õ1ÓËÒÙ
+ÕÓ5ËÕ.
+Õ1ÓÍ
+Õ5ÓÏ
+ÕÓ2ÐÏ
+Õ1ÓÒÁ
+Õ1ÓÒÅ
+Õ1ÓÒÉ
+Õ1ÓÒÏ
+Õ1ÓÒÕ
+Õ1ÓÒÙ
+ÕÓ2ÓÍ
+Õ1ÓÔÁ
+Õ2ÓÔ1×
+Õ1ÓÔ×Á
+Õ1ÓÔ×Å
+Õ1ÓÔ×É
+Õ1ÓÔ×Ï
+Õ1ÓÔ×Õ
+Õ1ÓÔ×Ù
+Õ1ÓÔ×ØÅ
+Õ1ÓÔ×ØÉ
+Õ1ÓÔ×ØÀ
+Õ1ÓÔ×ØÑ
+Õ1ÓÔ×À
+Õ1ÓÔ×Ñ
+Õ1ÓÔÅ
+Õ1ÓÔÉ
+Õ1ÓÔÏ
+Õ1ÓÔÒÁ
+Õ1ÓÔÒÅ
+Õ1ÓÔÒÉ
+Õ1ÓÔÒÏ
+Õ1ÓÔÒÕ
+Õ1ÓÔÒÙ
+Õ1ÓÔÒØÅ
+Õ1ÓÔÒØÉ
+Õ1ÓÔÒØÀ
+Õ1ÓÔÒØÑ
+Õ1ÓÔÒÀ
+Õ1ÓÔÒÑ
+Õ1ÓÔÕ
+Õ1ÓÔÙ
+Õ1ÓÔØÅ
+Õ1ÓÔØÉ
+Õ1ÓÔØÀ
+Õ1ÓÔØÑ
+Õ1ÓÔÀ
+Õ1ÓÔÑ
+Õ1ÓÕ
+Õ1ÓÆ
+Õ1ÓÙ
+Õ1ÓØÅ
+Õ1ÓØÉ
+Õ1ÓØÀ
+Õ1ÓØÑ
+Õ1ÓÀ
+Õ1ÓÑ
+Õ1ÔÁ
+Õ1Ô×Á
+Õ1Ô×Å
+Õ1Ô×É
+Õ1Ô×Ï
+Õ1Ô×Õ
+Õ1Ô×Ù
+Õ1ÔÅ
+Õ1ÔÉ
+Õ1ÔÌ
+ÕÔ5ÌÁ
+Õ1ÔÏ
+Õ1ÔÒÁ
+Õ1ÔÒÅ
+Õ1ÔÒÉ
+Õ1Ô6ÒÏ
+Õ1ÔÒÕ
+Õ1ÔÒÙ
+Õ5ÔÒÑ
+Õ1ÔÕ
+Õ1ÔÙ
+Õ1ÔØÅ
+Õ1ÔØÉ
+ÕÔØ6Í
+Õ1ÔØÀ
+Õ1ÔØÑ
+Õ1ÔÀ
+Õ1ÔÑ
+Õ1Õ2
+ÕÕÍ5
+2ÕÆ
+Õ1ÆÁ
+Õ1ÆÅ
+Õ1ÆÉ
+Õ1ÆÌÁ
+Õ1ÆÌÅ
+Õ1ÆÌÉ
+Õ1ÆÌÏ
+Õ1ÆÌÕ
+Õ1ÆÌÙ
+Õ1ÆÏ
+Õ1ÆÒÁ
+Õ1ÆÒÅ
+Õ1ÆÒÉ
+Õ1ÆÒÏ
+Õ1ÆÒÕ
+Õ1ÆÒÙ
+Õ1ÆÕ
+Õ1ÆØÅ
+Õ1ÆØÉ
+Õ1ÆØÀ
+Õ1ÆØÑ
+Õ1ÆÀ
+Õ1ÆÑ
+Õ1ÈÁ
+Õ2È×
+Õ1ÈÄÁ
+Õ1ÈÄÅ
+Õ1ÈÄÉ
+Õ1ÈÄÏ
+Õ1ÈÄÕ
+Õ1ÈÄÙ
+Õ1ÈÅ
+Õ1ÈÉ
+ÕÈ1Ì
+ÕÈ1Í
+Õ1ÈÏ
+Õ2È1Ò
+Õ1ÈÕ
+ÕÈÕ2Ì
+Õ1ÈÙ
+Õ1ÈØÅ
+Õ1ÈØÉ
+Õ1ÈØÀ
+Õ1ÈØÑ
+Õ1ÈÀ
+Õ1ÈÑ
+Õ1ÃÁ
+Õ1ÃÅ
+Õ1ÃÉ
+Õ1ÃÏ
+Õ1ÃÕ
+Õ1ÃÙ
+Õ1ÃØÅ
+Õ1ÃØÉ
+Õ1ÃØÀ
+Õ1ÃØÑ
+Õ1ÞÁ
+Õ1ÞÅ
+Õ1ÞÉ
+Õ5ÞÌ
+Õ1ÞÕ
+Õ1ÞØÅ
+Õ1ÞØÉ
+Õ1ÞØÀ
+Õ1ÞØÑ
+Õ1ÛÁ
+Õ1Û×Á
+Õ1Û×Å
+Õ1Û×É
+Õ1Û×Ï
+Õ1Û×Õ
+Õ1Û×Ù
+Õ1ÛÅ
+Õ1ÛÉ
+Õ1ÛÌÁ
+Õ1ÛÌÅ
+Õ1ÛÌÉ
+Õ1ÛÌÏ
+Õ1ÛÌÕ
+Õ1ÛÌÙ
+Õ1ÛÏ
+Õ1ÛÐ
+Õ1ÛÒÁ
+Õ1ÛÒÅ
+Õ1ÛÒÉ
+Õ1ÛÒÏ
+Õ1ÛÒÕ
+Õ1ÛÒÙ
+Õ5ÛÔ
+Õ1ÛÕ
+Õ1ÛØÅ
+Õ1ÛØÉ
+Õ1ÛØÀ
+Õ1ÛØÑ
+Õ1ÝÁ
+Õ1ÝÅ
+Õ1ÝÉ
+Õ1ÝÏ
+Õ1ÝÕ
+Õ1ÝØÅ
+Õ1ÝØÉ
+Õ1ÝØÀ
+Õ1ÝØÑ
+Õ1Ù
+Õ1Ü
+ÕÜ5ÌÁ
+ÕÜ5ÌÅ
+Õ2ÜÌÌ
+6ÕÜÎ
+ÕÜ1ÎØ
+Õ5ÜÒ
+ÕÜ1Ô
+Õ1À
+Õ1Ñ
+ÕÑ2Ú
+1ÆÁ
+ÆÁÇ1Î
+ÆÁÒ5×
+2Æ1×
+Æ1Ç
+ÆÅ5Ä
+ÆÅÍ5Î
+ÆÅÎÉ6
+ÆÅ2Ó1Ë
+1ÆÉ
+ÆÉ1Ä
+ÆÉ6Å
+ÆÉ6ÎÉÎ
+ÆÉ3Ï
+ÆÉ1Ó2Ë
+Æ1Ë
+1ÆÌ
+Æ1Í
+2Æ1Î
+1ÆÏ
+2Æ1Ï2ÂÒ
+ÆÏ5Å
+2Æ1ÏÒÇ
+Æ1Ð
+ÆÒ6
+Æ6ÒÅ
+ÆÒÅ6Ó5
+ÆÒÉ6Ó
+2Æ1Ó
+Æ1Ô
+Æ6Ô5×
+1ÆÔÏÎÇ
+Æ2Ô1Ò
+5ÆÕ
+ÆÕ5Ä
+Æ6ÕÚ
+6ÆÕÏ
+Æ1Æ
+Æ1Û
+1ÆÙ
+6ÆØ.
+1ÈÁ
+ÈÁÂ2
+2È1Á2Ä
+È1Á2ÔÏ
+È1Â6
+1È×
+6È×.
+2È1×Å
+2È1Ç
+2È1Ä
+È6Å
+ÈÅ2Ï
+È1Ú
+1ÈÉ
+ÈÉÅ2
+È1ÉÚÌ
+ÈÉ2ÍÌ
+È1Ë
+È1ÌÁ.
+È1ÌÉ
+È1ÌÏ.
+È1ÌÕ
+È1ÌÙ
+È5ÌÀ
+È1ÌÑ
+È1ÍÁ
+È5ÍÅÔ
+È1ÍÉ
+È1Î
+2È1Ï2Ë
+ÈÏ2ÐÅ
+3ÈÏÒ
+ÈÏÒ5×
+È1ÏÓÎ
+ÈÏ5Ô6Ì
+È1Ð
+1ÈÒ
+2È1Ó
+ÈÓ6Ð
+ÈÓ2È
+È1Ô
+È2ÔË
+1ÈÕ.
+2È1Õ2Ç
+ÈÕ2Å
+È1ÕÌ
+È1Õ2Ò
+ÈÕ5ÒÁ
+2È1Õ2Þ
+1ÈÕÑ
+È1Æ6
+È1È
+È1Ã
+6È1Þ
+È1Û
+5ÈÙ
+È1Ü
+È6ÜÃ
+1ÃÁ.
+1ÃÁÍ
+Ã1Â
+1Ã×
+2Ã1Ç
+Ã1Ä
+1ÃÅ
+ÃÅÊ6Ô5
+6ÃÅÎÎÉ
+2ÃÚÁ
+1ÃÚÑ
+1ÃÉ
+2Ã1Ë
+2Ã1Ì
+2Ã1Í
+Ã1Î
+1ÃÏ
+Ã1Ï2Â
+2Ã1Ï2Ä
+2Ã1ÏÔ
+Ã1Ð
+Ã1Ò
+ÃÒÅ6Ó5
+6Ã1Ó
+Ã1Ô
+6ÃÕÏ
+Ã1Ã
+Ã5Þ
+6ÃÛ
+1ÃÙ
+5ÞÁÊ
+5ÞÁÎ
+ÞÁÒ3Ô
+ÞÁÓÔ1Ì
+ÞÁ5ÔÌ
+5ÞÁÔÙ
+Þ1×
+Þ5Ç
+1ÞÅÌ
+ÞÅÈ1Ì
+1ÞÖ
+1ÞÉ×
+3ÞÉÊ
+1ÞÉË
+ÞÉ6ÑÈ
+6Þ1Ë
+Þ1ÌÁ
+6Þ5ÌÅÇ
+6Þ5ÌÅÖ
+Þ1ÌÉ
+Þ1Í
+2ÞÍÁ
+Þ6ÍÏË
+Þ1Î
+1ÞÏ
+Þ1Ð
+Þ1Ó
+1ÞÔ
+Þ1ÔÅÌ
+2ÞÔÍ
+ÞÕÄ5Ì
+1Þ2È6
+Þ1Þ
+Þ1Û
+5ÞÑ
+ÛÁÇ1Î
+6Û1Â
+Û5×É
+Û5×Ø
+Û5Ç
+6Û5Ä
+ÛÅ5×Ò
+ÛÅË1
+ÛÅËÓ2
+ÛÅÏ2
+ÛÅ2Ð1Ô
+1ÛÉ
+2ÛÉÂ
+Û1Ë
+Û2ËÉ×
+ÛË5Î
+1Û2ËÏÌ
+1ÛÌÀ
+Û1ÌÑ
+Û1Í
+Û1Î
+Û5ÎÉ
+1ÛÐÅ
+1ÛÐÉÌ
+Û2ÐÒ
+Û1Ó
+1ÛÔÅ
+1ÛÔÒ
+1ÛÔÕ
+1ÛÔÙ
+2Û1Æ
+Û1Ã
+Û1Þ
+Û1Û
+5ÛÙ
+6ÛØ.
+ÛØÑ2
+Û5Ü6
+1ÛÀ
+ÝÅ1Ó
+1ÝÉ
+2Ý1Î
+Ý1Ó
+Ý1Ý
+5ÝÑ
+ß1
+ßÅ2
+ß2ÅÌ
+ßÅÍ5Î
+ß6Ó
+ß6Ý
+ßÀ2
+ßÑ2
+Ù1Á
+Ù1ÂÁ
+Ù1ÂÅ
+Ù1ÂÉ
+Ù1ÂÌÁ
+Ù1ÂÌÅ
+Ù1ÂÌÉ
+Ù1ÂÌÏ
+Ù1ÂÌÕ
+Ù1ÂÌÙ
+Ù1ÂÏ
+Ù1ÂÒÁ
+Ù1ÂÒÅ
+Ù1ÂÒÉ
+Ù1ÂÒÏ
+Ù1ÂÒÕ
+Ù1ÂÒÙ
+Ù1ÂÕ
+Ù1ÂÙ
+Ù1ÂØÅ
+Ù1ÂØÉ
+Ù1ÂØÀ
+Ù1ÂØÑ
+Ù1ÂÀ
+Ù1ÂÑ
+Ù1×Á
+Ù1×Å
+Ù1×É
+Ù1×ÌÁ
+Ù1×ÌÅ
+Ù1×ÌÉ
+Ù1×ÌÏ
+Ù1×ÌÕ
+Ù1×ÌÙ
+Ù1×Ï
+Ù6×5Ð
+Ù1×ÒÁ
+Ù1×ÒÅ
+Ù1×ÒÉ
+Ù1×ÒÏ
+Ù1×ÒÕ
+Ù1×ÒÙ
+Ù1×Õ
+Ù1×Ù
+Ù1×ØÅ
+Ù1×ØÉ
+Ù1×ØÀ
+Ù1×ØÑ
+Ù1×À
+Ù1×Ñ
+Ù1Ç
+Ù1ÇÁ
+Ù1ÇÅ
+Ù1ÇÉ
+Ù1ÇÌÁ
+Ù1ÇÌÅ
+Ù1ÇÌÉ
+Ù1ÇÌÏ
+Ù1ÇÌÕ
+Ù1ÇÌÙ
+Ù1ÇÏ
+Ù1ÇÒÁ
+Ù1ÇÒÅ
+Ù1ÇÒÉ
+Ù1ÇÒÏ
+Ù1ÇÒÕ
+Ù1ÇÒÙ
+Ù1ÇÕ
+Ù1ÇÙ
+Ù1ÇØÅ
+Ù1ÇØÉ
+Ù1ÇØÀ
+Ù1ÇØÑ
+Ù1ÇÀ
+Ù1ÇÑ
+Ù1ÄÁ
+Ù1Ä×Á
+Ù1Ä×Å
+Ù1Ä×É
+Ù1Ä×Ï
+Ù1Ä×Õ
+Ù1Ä×Ù
+Ù1ÄÅ
+Ù1ÄÉ
+Ù1ÄÌÁ
+Ù1ÄÌÅ
+Ù1ÄÌÉ
+Ù1ÄÌÏ
+Ù1ÄÌÕ
+Ù1ÄÌÙ
+Ù1ÄÏ
+Ù5ÄÒ
+Ù1ÄÒÁ
+Ù1ÄÒÅ
+Ù1ÄÒÉ
+Ù1ÄÒÏ
+Ù1ÄÒÕ
+Ù1ÄÒÙ
+Ù1ÄÕ
+Ù1ÄÙ
+Ù1ÄØÅ
+Ù1ÄØÉ
+Ù1ÄØÀ
+Ù1ÄØÑ
+Ù1ÄÀ
+Ù1ÄÑ
+Ù1Å2
+Ù1ÖÁ
+Ù1ÖÅ
+Ù1ÖÖ
+Ù1ÖÉ
+Ù1ÖÍ
+Ù1ÖÏ
+Ù1ÖÒ
+Ù1ÖÕ
+Ù1ÖØÅ
+Ù1ÖØÉ
+Ù1ÖØÀ
+Ù1ÖØÑ
+Ù1ÚÁ
+Ù1Ú×
+Ù1ÚÄ
+Ù1ÚÅ
+Ù1ÚÉ
+Ù1ÚÏ
+Ù1ÚÒ
+Ù1ÚÕ
+Ù1ÚÙ
+Ù1ÚØÅ
+Ù1ÚØÉ
+Ù1ÚØÀ
+Ù1ÚØÑ
+Ù1ÚÀ
+Ù1ÚÑ
+Ù1É2
+Ù1ËÁ
+Ù1Ë×Á
+Ù1Ë×Å
+Ù1Ë×É
+Ù1Ë×Ï
+Ù1Ë×Õ
+Ù1Ë×Ù
+Ù1ËÅ
+Ù1ËÉ
+Ù1ËÌÁ
+Ù1ËÌÅ
+Ù1ËÌÉ
+Ù1ËÌÏ
+Ù1ËÌÕ
+Ù1ËÌÙ
+ÙË1Î
+Ù1ËÏ
+Ù1ËÒÁ
+Ù1ËÒÅ
+Ù1ËÒÉ
+Ù1ËÒÏ
+Ù1ËÒÕ
+Ù1ËÒÙ
+Ù1ËÕ
+Ù1ËÙ
+Ù1ËØÅ
+Ù1ËØÉ
+Ù1ËØÀ
+Ù1ËØÑ
+Ù1ËÀ
+Ù1ËÑ
+Ù1ÌÁ
+Ù1ÌÅ3
+Ù1ÌÉ
+Ù1ÌÏ
+Ù1ÌÕ
+Ù1ÌÙ
+Ù1ÌØÅ
+Ù1ÌØÉ
+Ù1ÌØÀ
+Ù1ÌØÑ
+Ù1ÌÀ
+Ù1ÌÑ
+Ù1ÍÁ
+Ù1ÍÅ
+Ù1ÍÉ
+Ù1ÍÌÁ
+Ù1ÍÌÅ
+Ù1ÍÌÉ
+Ù1ÍÌÏ
+Ù1ÍÌÕ
+Ù1ÍÌÙ
+Ù1ÍÏ
+Ù1ÍÒÁ
+Ù1ÍÒÅ
+Ù1ÍÒÉ
+Ù1ÍÒÏ
+Ù1ÍÒÕ
+Ù1ÍÒÙ
+Ù1ÍÕ
+ÙÍ1Þ
+Ù1ÍÙ6
+ÙÍÙÛ5
+Ù1ÍØÅ
+Ù1ÍØÉ
+Ù1ÍØÀ
+Ù1ÍØÑ
+Ù1ÍÀ
+Ù1ÍÑ
+Ù1ÎÁ
+Ù1ÎÅ
+Ù1ÎÉ
+Ù1ÎÏ
+Ù1ÎÒÁ
+Ù1ÎÒÅ
+Ù1ÎÒÉ
+Ù1ÎÒÏ
+Ù1ÎÒÕ
+Ù1ÎÒÙ
+Ù1ÎÕ
+Ù1ÎÙ
+Ù1ÎØÅ
+Ù1ÎØÉ
+Ù1ÎØÀ
+Ù1ÎØÑ
+Ù1ÎÀ
+Ù1ÎÑ
+Ù1Ï
+Ù1ÐÁ
+Ù1ÐÅ
+Ù1ÐÉ
+Ù1ÐÌÁ
+Ù1ÐÌÅ
+Ù1ÐÌÉ
+Ù1ÐÌÏ
+Ù1ÐÌÕ
+Ù1ÐÌÙ
+Ù1ÐÏ
+ÙÐÏÌ1Ú2Ì
+Ù1ÐÒÁ
+Ù1ÐÒÅ
+Ù1ÐÒÉ
+Ù1ÐÒÏ
+Ù1ÐÒÕ
+Ù1ÐÒÙ
+Ù1ÐÔÁ
+Ù1ÐÔÅ
+Ù1ÐÔÉ
+Ù1ÐÔÏ
+Ù1ÐÔÕ
+Ù1ÐÔÙ
+Ù1ÐÕ
+Ù1ÐÙ
+Ù1ÐØÅ
+Ù1ÐØÉ
+Ù1ÐØÀ
+Ù1ÐØÑ
+Ù1ÐÀ
+Ù1ÐÑ
+Ù1ÒÁ
+Ù1Ò×
+Ù1ÒÅ
+ÙÒÅ2È5
+Ù1ÒÉ
+Ù1ÒÏ
+Ù1ÒÕ
+Ù1ÒÙ
+Ù1ÒØÅ
+Ù1ÒØÉ
+Ù1ÒØÀ
+Ù1ÒØÑ
+Ù1ÒÀ
+Ù1ÒÑ
+Ù1ÓÁ
+Ù1Ó×Á
+Ù1Ó×Å
+Ù1Ó×É
+Ù1Ó×Ï
+Ù1Ó×Õ
+Ù1Ó×Ù
+Ù1ÓÅ
+Ù1ÓÉ
+Ù1ÓË×Á
+Ù1ÓË×Å
+Ù1ÓË×É
+Ù1ÓË×Ï
+Ù1ÓË×Õ
+Ù1ÓË×Ù
+ÙÓ5ËÉ
+Ù1ÓËÒÁ
+Ù1ÓËÒÅ
+Ù1ÓËÒÉ
+Ù1ÓËÒÏ
+Ù1ÓËÒÕ
+Ù1ÓËÒÙ
+ÙÓ5ËÕ
+Ù5ÓÍ
+Ù1ÓÏ
+ÙÓ6ÐÁ
+ÙÓ6ÐÌ
+Ù1ÓÒÁ
+Ù1ÓÒÅ
+Ù1ÓÒÉ
+Ù1ÓÒÏ
+Ù1ÓÒÕ
+Ù1ÓÒÙ
+Ù1ÓÔÁ
+Ù1ÓÔ×Á
+Ù1ÓÔ×Å
+Ù1ÓÔ×É
+Ù1ÓÔ×Ï
+Ù1ÓÔ×Õ
+Ù1ÓÔ×Ù
+Ù1ÓÔ×ØÅ
+Ù1ÓÔ×ØÉ
+Ù1ÓÔ×ØÀ
+Ù1ÓÔ×ØÑ
+Ù1ÓÔ×À
+Ù1ÓÔ×Ñ
+Ù1ÓÔÅ
+Ù1ÓÔÉ
+Ù1ÓÔÏ
+Ù1ÓÔÒÁ
+Ù1ÓÔÒÅ
+Ù1ÓÔÒÉ
+Ù1ÓÔÒÏ
+Ù1ÓÔÒÕ
+Ù1ÓÔÒÙ
+Ù1ÓÔÒØÅ
+Ù1ÓÔÒØÉ
+Ù1ÓÔÒØÀ
+Ù1ÓÔÒØÑ
+Ù1ÓÔÒÀ
+Ù1ÓÔÒÑ
+Ù1ÓÔÕ
+Ù1ÓÔÙ
+Ù1ÓÔØÅ
+Ù1ÓÔØÉ
+Ù1ÓÔØÀ
+Ù1ÓÔØÑ
+Ù1ÓÔÀ
+Ù1ÓÔÑ
+Ù1ÓÕ
+Ù1ÓÙ
+Ù1ÓØÅ
+Ù1ÓØÉ
+Ù1ÓØÀ
+Ù1ÓØÑ
+Ù1ÓÀ
+Ù1ÓÑ
+Ù1ÔÁ
+Ù1Ô×Á
+Ù1Ô×Å
+Ù1Ô×É
+Ù1Ô×Ï
+Ù1Ô×Õ
+Ù1Ô×Ù
+Ù1ÔÅ
+Ù1ÔÉ
+Ù1ÔÏ
+Ù5ÔÒ
+Ù1ÔÒÁ
+Ù1ÔÒÅ
+Ù1ÔÒÉ
+Ù1ÔÒÏ
+Ù1ÔÒÕ
+Ù1ÔÒÙ
+Ù1ÔÕ
+Ù1ÔÙ
+Ù1ÔØÅ
+Ù1ÔØÉ
+Ù1ÔØÀ
+Ù1ÔØÑ
+Ù1ÔÀ
+Ù1ÔÑ
+Ù1Õ2
+Ù1ÆÁ
+Ù1ÆÅ
+Ù1ÆÉ
+Ù1ÆÌÁ
+Ù1ÆÌÅ
+Ù1ÆÌÉ
+Ù1ÆÌÏ
+Ù1ÆÌÕ
+Ù1ÆÌÙ
+Ù1ÆÏ
+Ù1ÆÒÁ
+Ù1ÆÒÅ
+Ù1ÆÒÉ
+Ù1ÆÒÏ
+Ù1ÆÒÕ
+Ù1ÆÒÙ
+Ù1ÆÕ
+Ù1ÆØÅ
+Ù1ÆØÉ
+Ù1ÆØÀ
+Ù1ÆØÑ
+Ù1ÆÀ
+Ù1ÆÑ
+Ù1ÈÁ
+Ù1ÈÄÁ
+Ù1ÈÄÅ
+Ù1ÈÄÉ
+Ù1ÈÄÏ
+Ù1ÈÄÕ
+Ù1ÈÄÙ
+Ù1ÈÅ
+Ù1ÈÉ
+Ù1ÈÏ
+Ù1ÈÕ
+Ù1ÈÙ
+Ù1ÈØÅ
+Ù1ÈØÉ
+Ù1ÈØÀ
+Ù1ÈØÑ
+Ù1ÈÀ
+Ù1ÈÑ
+Ù1ÃÁ
+Ù1ÃÅ
+Ù1ÃÉ
+Ù1ÃÏ
+Ù1ÃÕ
+Ù1ÃÙ
+Ù1ÃØÅ
+Ù1ÃØÉ
+Ù1ÃØÀ
+Ù1ÃØÑ
+Ù1ÞÁ
+Ù1ÞÅ
+Ù1ÞÉ
+Ù5ÞÌ
+Ù1ÞÕ
+Ù1ÞØÅ
+Ù1ÞØÉ
+Ù1ÞØÀ
+Ù1ÞØÑ
+Ù1ÛÁ
+Ù1Û×Á
+Ù1Û×Å
+Ù1Û×É
+Ù1Û×Ï
+Ù1Û×Õ
+Ù1Û×Ù
+Ù1ÛÅ
+Ù1ÛÉ
+Ù1ÛÌÁ
+Ù1ÛÌÅ
+Ù1ÛÌÉ
+Ù1ÛÌÏ
+Ù1ÛÌÕ
+Ù1ÛÌÙ
+Ù1ÛÏ
+Ù1ÛÒÁ
+Ù1ÛÒÅ
+Ù1ÛÒÉ
+Ù1ÛÒÏ
+Ù1ÛÒÕ
+Ù1ÛÒÙ
+Ù1ÛÕ
+Ù1ÛØÅ
+Ù1ÛØÉ
+Ù1ÛØÀ
+Ù1ÛØÑ
+Ù1ÝÁ
+Ù1ÝÅ
+Ù1ÝÉ
+Ù1ÝÏ
+Ù1ÝÕ
+Ù1ÝØÅ
+Ù1ÝØÉ
+Ù1ÝØÀ
+Ù1ÝØÑ
+Ù1Ù
+Ù1Ü
+Ù1À
+Ù1Ñ2
+Ø1Â
+ØÂÉ5
+Ø1×Á
+Ø1×Å
+Ø1×É
+Ø1Ç
+Ø1ÄÅ
+Ø1ÄÖ
+Ø1ÄÉ
+Ø5ÄÏÒ
+ØÄÏ5Ó6
+Ø5ÄÒ
+Ø5ÄÕ
+Ø5ÄÑ
+Ø1Ö
+Ø1Ú
+Ø6ÚÑ.
+Ø1Ë
+ØË5×
+Ø2Ë1ÌÏ
+ØË5Î
+Ø1Ì
+Ø1Í
+Ø1Î
+Ø2ÎÕÌ
+Ø1Ð
+Ø1Ò
+Ø1Ó
+Ø2ÓÎ
+Ø2ÓÔÉ
+ØÓ1ÔÉÎ
+Ø1Ô
+Ø2Ô1×
+Ø1Æ
+Ø6Æ5ÒÁ
+Ø1È
+ØÈÏ2Ú1
+Ø1ÃÚ
+Ø1Þ
+Ø1Û
+Ø6ÛË
+Ø1Ý
+Ø6ÝÁ
+Ø2ÝÅ
+Ø6ÝÕ
+Ø1Ü
+ØÑ6×É
+Ü1Á
+Ü5×Á
+Ü6×Ô
+Ü2Ä
+2Ü1Å
+Ü5ÚÅ
+Ü5ÚÉ
+Ü1É
+2ÜÊ
+ÜË2Ú
+ÜËÓ1
+Ü5ÌÙ
+ÜÌØ5
+Ü1ÌÑ
+1ÜÍ
+Ü1Ï
+Ü6Ð
+Ü5ÒÉ
+ÜÓ1Ë
+ÜÓ5Í
+ÜÓ2ÐÁ
+ÜÓ6Ô
+Ü1Õ
+Ü6Æ
+Ü5ÃÚ
+Ü1Ù
+Ü1Ü
+Ü1À
+2Ü1Ñ
+À1Á
+À1ÂÁ
+ÀÂ2×
+À1ÂÅ
+À1ÂÉ
+À1ÂÌÁ
+À1ÂÌÅ
+À1ÂÌÉ
+À1ÂÌÏ
+À1ÂÌÕ
+À1ÂÌÙ
+À1ÂÏ
+À1ÂÒÁ
+À1ÂÒÅ
+À1ÂÒÉ
+À1ÂÒÏ
+À1ÂÒÕ
+À1ÂÒÙ
+À1ÂÕ
+À1ÂÙ
+À1ÂØÅ
+À1ÂØÉ
+À1ÂØÀ
+À1ÂØÑ
+À1ÂÀ
+À1ÂÑ
+À1×Á
+À1×Å
+À1×É
+À1×ÌÁ
+À1×ÌÅ
+À1×ÌÉ
+À1×ÌÏ
+À1×ÌÕ
+À1×ÌÙ
+À1×Ï
+À1×ÒÁ
+À1×ÒÅ
+À1×ÒÉ
+À1×ÒÏ
+À1×ÒÕ
+À1×ÒÙ
+À1×Õ
+À1×Ù
+À1×ØÅ
+À1×ØÉ
+À1×ØÀ
+À1×ØÑ
+À1×À
+À1×Ñ
+À1ÇÁ
+À1ÇÅ
+À1ÇÉ
+À1ÇÌÁ
+À1ÇÌÅ
+À1ÇÌÉ
+À1ÇÌÏ
+À1ÇÌÕ
+À1ÇÌÙ
+ÀÇ1Î
+À1ÇÏ
+À1ÇÒÁ
+À1ÇÒÅ
+À1ÇÒÉ
+À1ÇÒÏ
+À1ÇÒÕ
+À1ÇÒÙ
+À1ÇÕ
+À1ÇÙ
+À1ÇØÅ
+À1ÇØÉ
+À1ÇØÀ
+À1ÇØÑ
+À1ÇÀ
+À1ÇÑ
+À1ÄÁ
+À1Ä×Á
+À1Ä×Å
+À1Ä×É
+À1Ä×Ï
+À1Ä×Õ
+À1Ä×Ù
+À1ÄÅ
+ÀÄ1Ö
+À1ÄÉ
+À1ÄÌÁ
+À1ÄÌÅ
+À1ÄÌÉ
+À1ÄÌÏ
+À1ÄÌÕ
+À1ÄÌÙ
+À1ÄÏ
+À1ÄÒÁ
+À1ÄÒÅ
+À1ÄÒÉ
+À1ÄÒÏ
+À1ÄÒÕ
+À1ÄÒÙ
+À1ÄÕ
+À1ÄÙ
+À1ÄØÅ
+À1ÄØÉ
+À1ÄØÀ
+À1ÄØÑ
+À1ÄÀ
+À1ÄÑ
+À1Å
+À1ÖÁ
+À1ÖÅ
+À1ÖÉ
+À1ÖÏ
+À1ÖÕ
+À1ÖØÅ
+À1ÖØÉ
+À1ÖØÀ
+À1ÖØÑ
+À1ÚÁ
+À1ÚÅ
+À1ÚÉ
+À1ÚÏ
+À1ÚÕ
+À1ÚÙ
+À1ÚØÅ
+À1ÚØÉ
+À1ÚØÀ
+À1ÚØÑ
+À1ÚÀ
+À1ÚÑ
+À1É
+ÀÊ2Ä1
+ÀÊÄÏ6
+À1ËÁ
+À1Ë×Á
+À1Ë×Å
+À1Ë×É
+À1Ë×Ï
+À1Ë×Õ
+À1Ë×Ù
+À1ËÅ
+À1ËÉ
+À1ËÌÁ
+À1ËÌÅ
+À1ËÌÉ
+À1ËÌÏ
+À1ËÌÕ
+À1ËÌÙ
+ÀË1Î
+À1ËÏ
+À1ËÒÁ
+À1ËÒÅ
+À1ËÒÉ
+À1ËÒÏ
+À1ËÒÕ
+À1ËÒÙ
+À1ËÕ
+À1ËÙ
+À1ËØÅ
+À1ËØÉ
+À1ËØÀ
+À1ËØÑ
+À1ËÀ
+À1ËÑ
+À1ÌÁ
+À1ÌÅ
+À1ÌÉ
+À1ÌÏ
+À1ÌÕ
+À1ÌÙ
+À1ÌØÅ
+À1ÌØÉ
+À1ÌØÀ
+À1ÌØÑ
+À1ÌÀ
+À1ÌÑ
+2ÀÍ
+À1ÍÁ
+À1ÍÅ
+À1ÍÉ
+ÀÍÉÎÉ5
+À1ÍÌÁ
+À1ÍÌÅ
+À1ÍÌÉ
+À1ÍÌÏ
+À1ÍÌÕ
+À1ÍÌÙ
+À1ÍÏ
+À1ÍÒÁ
+À1ÍÒÅ
+À1ÍÒÉ
+À1ÍÒÏ
+À1ÍÒÕ
+À1ÍÒÙ
+À1ÍÕ
+À1ÍÙ
+À1ÍØÅ
+À1ÍØÉ
+À1ÍØÀ
+À1ÍØÑ
+À1ÍÀ
+À1ÍÑ
+À1ÎÁ
+À1ÎÅ
+À1ÎÉ
+À1ÎÏ
+À1ÎÒÁ
+À1ÎÒÅ
+À1ÎÒÉ
+À1ÎÒÏ
+À1ÎÒÕ
+À1ÎÒÙ
+À1ÎÕ
+À1ÎÙ
+À1ÎØÅ
+À1ÎØÉ
+À1ÎØÀ
+À1ÎØÑ
+À1ÎÀ
+À1ÎÑ
+À1Ï
+À1ÐÁ
+À1ÐÅ
+À1ÐÉ
+À1ÐÌÁ
+À1ÐÌÅ
+À1ÐÌÉ
+À1ÐÌÏ
+À1ÐÌÕ
+À1ÐÌÙ
+À1ÐÏ
+À1ÐÒÁ
+À1ÐÒÅ
+À1ÐÒÉ
+À1ÐÒÏ
+À1ÐÒÕ
+À1ÐÒÙ
+À6Ð5Ô
+À1ÐÔÁ
+À1ÐÔÅ
+À1ÐÔÉ
+À1ÐÔÏ
+À1ÐÔÕ
+À1ÐÔÙ
+À1ÐÕ
+À1ÐÙ
+À1ÐØÅ
+À1ÐØÉ
+À1ÐØÀ
+À1ÐØÑ
+À1ÐÀ
+À1ÐÑ
+À1ÒÁ
+À1ÒÅ
+À1ÒÉ
+À1ÒÏ
+À1ÒÕ
+À1ÒÙ
+À1ÒØÅ
+À1ÒØÉ
+À1ÒØÀ
+À1ÒØÑ
+À1ÒÀ
+À1ÒÑ
+À1ÓÁ
+À1Ó×Á
+À1Ó×Å
+À1Ó×É
+À1Ó×Ï
+À1Ó×Õ
+À1Ó×Ù
+À1ÓÅ
+À1ÓÉ
+ÀÓ5Ë
+À1ÓË×Á
+À1ÓË×Å
+À1ÓË×É
+À1ÓË×Ï
+À1ÓË×Õ
+À1ÓË×Ù
+À1ÓËÒÁ
+À1ÓËÒÅ
+À1ÓËÒÉ
+À1ÓËÒÏ
+À1ÓËÒÕ
+À1ÓËÒÙ
+À1ÓÏ
+À1ÓÒÁ
+À1ÓÒÅ
+À1ÓÒÉ
+À1ÓÒÏ
+À1ÓÒÕ
+À1ÓÒÙ
+À1ÓÔÁ
+À1ÓÔ×Á
+À1ÓÔ×Å
+À1ÓÔ×É
+À1ÓÔ×Ï
+À1ÓÔ×Õ
+À1ÓÔ×Ù
+À1ÓÔ×ØÅ
+À1ÓÔ×ØÉ
+À1ÓÔ×ØÀ
+À1ÓÔ×ØÑ
+À1ÓÔ×À
+À1ÓÔ×Ñ
+À1ÓÔÅ
+À1ÓÔÉ
+À1ÓÔÏ
+À1ÓÔÒÁ
+À1ÓÔÒÅ
+À1ÓÔÒÉ
+À1ÓÔÒÏ
+À1ÓÔÒÕ
+À1ÓÔÒÙ
+À1ÓÔÒØÅ
+À1ÓÔÒØÉ
+À1ÓÔÒØÀ
+À1ÓÔÒØÑ
+À1ÓÔÒÀ
+À1ÓÔÒÑ
+À1ÓÔÕ
+À1ÓÔÙ
+À1ÓÔØÅ
+À1ÓÔØÉ
+À1ÓÔØÀ
+À1ÓÔØÑ
+À1ÓÔÀ
+À1ÓÔÑ
+À1ÓÕ
+À1ÓÙ
+À1ÓØÅ
+À1ÓØÉ
+À1ÓØÀ
+À1ÓØÑ
+À1ÓÀ
+À1ÓÑ
+À1ÔÁ
+À1Ô×Á
+À1Ô×Å
+À1Ô×É
+À1Ô×Ï
+À1Ô×Õ
+À1Ô×Ù
+À1ÔÅ
+À1ÔÉ
+À1ÔÏ
+À1ÔÒÁ
+À1ÔÒÅ
+À1ÔÒÉ
+À1ÔÒÏ
+À1ÔÒÕ
+À1ÔÒÙ
+À1ÔÕ
+À1ÔÙ
+À1ÔØÅ
+À1ÔØÉ
+À1ÔØÀ
+À1ÔØÑ
+À1ÔÀ
+À1ÔÑ
+À1Õ
+À1ÆÁ
+À1ÆÅ
+À1ÆÉ
+À1ÆÌÁ
+À1ÆÌÅ
+À1ÆÌÉ
+À1ÆÌÏ
+À1ÆÌÕ
+À1ÆÌÙ
+À1ÆÏ
+À1ÆÒÁ
+À1ÆÒÅ
+À1ÆÒÉ
+À1ÆÒÏ
+À1ÆÒÕ
+À1ÆÒÙ
+À1ÆÕ
+À1ÆØÅ
+À1ÆØÉ
+À1ÆØÀ
+À1ÆØÑ
+À1ÆÀ
+À1ÆÑ
+À1ÈÁ
+À1ÈÄÁ
+À1ÈÄÅ
+À1ÈÄÉ
+À1ÈÄÏ
+À1ÈÄÕ
+À1ÈÄÙ
+À1ÈÅ
+À1ÈÉ
+À1ÈÏ
+À1ÈÕ
+À1ÈÙ
+À1ÈØÅ
+À1ÈØÉ
+À1ÈØÀ
+À1ÈØÑ
+À1ÈÀ
+À1ÈÑ
+À1ÃÁ
+À1ÃÅ
+À1ÃÉ
+À1ÃÏ
+À1ÃÕ
+À1ÃÙ
+À1ÃØÅ
+À1ÃØÉ
+À1ÃØÀ
+À1ÃØÑ
+À1ÞÁ
+À1ÞÅ
+À1ÞÉ
+À1ÞÕ
+À1ÞØÅ
+À1ÞØÉ
+À1ÞØÀ
+À1ÞØÑ
+À1ÛÁ
+À1Û×Á
+À1Û×Å
+À1Û×É
+À1Û×Ï
+À1Û×Õ
+À1Û×Ù
+À1ÛÅ
+À1ÛÉ
+À1ÛÌÁ
+À1ÛÌÅ
+À1ÛÌÉ
+À1ÛÌÏ
+À1ÛÌÕ
+À1ÛÌÙ
+À1ÛÏ
+À1ÛÒÁ
+À1ÛÒÅ
+À1ÛÒÉ
+À1ÛÒÏ
+À1ÛÒÕ
+À1ÛÒÙ
+À1ÛÕ
+À1ÛØÅ
+À1ÛØÉ
+À1ÛØÀ
+À1ÛØÑ
+À5Ý
+À1ÝÁ
+À1ÝÅ
+À1ÝÉ
+À1ÝÏ
+À1ÝÕ
+À1ÝØÅ
+À1ÝØÉ
+À1ÝØÀ
+À1ÝØÑ
+À1Ù
+À1Ü
+À1À
+À1Ñ
+Ñ1Á
+Ñ1ÂÁ
+Ñ1ÂÅ
+Ñ1ÂÉ
+Ñ1ÂÌÁ
+Ñ1ÂÌÅ
+Ñ1ÂÌÉ
+Ñ1ÂÌÏ
+Ñ1ÂÌÕ
+Ñ1ÂÌÙ
+Ñ1ÂÏ
+Ñ1ÂÒÁ
+Ñ1ÂÒÅ
+Ñ1ÂÒÉ
+Ñ1ÂÒÏ
+Ñ1ÂÒÕ
+Ñ1ÂÒÙ
+Ñ1ÂÕ
+Ñ1ÂÙ
+Ñ1ÂØÅ
+Ñ1ÂØÉ
+Ñ1ÂØÀ
+Ñ1ÂØÑ
+Ñ1ÂÀ
+Ñ1ÂÑ
+Ñ1×Á
+Ñ1×Å
+5Ñ1×É
+Ñ2×Ì
+Ñ1×ÌÁ
+Ñ1×ÌÅ
+Ñ1×ÌÉ
+Ñ1×ÌÏ
+Ñ1×ÌÕ
+Ñ1×ÌÙ
+Ñ1×Ï
+Ñ1×ÒÁ
+Ñ1×ÒÅ
+Ñ1×ÒÉ
+Ñ1×ÒÏ
+Ñ1×ÒÕ
+Ñ1×ÒÙ
+Ñ1×Õ
+Ñ1×Ù
+Ñ1×ØÅ
+Ñ1×ØÉ
+Ñ1×ØÀ
+Ñ1×ØÑ
+Ñ1×À
+Ñ1×Ñ
+Ñ1ÇÁ
+Ñ1ÇÅ
+Ñ1ÇÉ
+Ñ1ÇÌÁ
+Ñ1ÇÌÅ
+Ñ1ÇÌÉ
+Ñ1ÇÌÏ
+Ñ1ÇÌÕ
+Ñ1ÇÌÙ
+ÑÇ5Î
+Ñ1ÇÏ
+Ñ1ÇÒÁ
+Ñ1ÇÒÅ
+Ñ1ÇÒÉ
+Ñ1ÇÒÏ
+Ñ1ÇÒÕ
+Ñ1ÇÒÙ
+Ñ1ÇÕ
+Ñ1ÇÙ
+Ñ1ÇØÅ
+Ñ1ÇØÉ
+Ñ1ÇØÀ
+Ñ1ÇØÑ
+Ñ1ÇÀ
+Ñ1ÇÑ
+Ñ1ÄÁ
+Ñ1Ä×Á
+Ñ1Ä×Å
+Ñ1Ä×É
+Ñ1Ä×Ï
+Ñ1Ä×Õ
+Ñ1Ä×Ù
+Ñ1ÄÅ
+Ñ1ÄÉ
+Ñ1ÄÌÁ
+Ñ1ÄÌÅ
+Ñ1ÄÌÉ
+Ñ1ÄÌÏ
+Ñ1ÄÌÕ
+Ñ1ÄÌÙ
+Ñ1ÄÏ
+Ñ1ÄÒÁ
+Ñ1ÄÒÅ
+Ñ1ÄÒÉ
+Ñ1ÄÒÏ
+Ñ1ÄÒÕ
+Ñ1ÄÒÙ
+Ñ1ÄÕ
+Ñ1ÄÙ
+Ñ1ÄØÅ
+Ñ1ÄØÉ
+Ñ1ÄØÀ
+Ñ1ÄØÑ
+Ñ1ÄÀ
+Ñ1ÄÑ
+Ñ1Å
+Ñ1ÖÁ
+Ñ1ÖÅ
+Ñ1ÖÉ
+Ñ1ÖÏ
+Ñ1ÖÕ
+Ñ1ÖØÅ
+Ñ1ÖØÉ
+Ñ1ÖØÀ
+Ñ1ÖØÑ
+Ñ1ÚÁ
+ÑÚ1×
+Ñ1ÚÅ
+Ñ1ÚÉ
+Ñ1ÚÏ
+Ñ1ÚÕ
+Ñ1ÚÙ
+Ñ1ÚØÅ
+Ñ1ÚØÉ
+Ñ1ÚØÀ
+Ñ1ÚØÑ
+Ñ1ÚÀ
+Ñ1ÚÑ
+Ñ1É
+Ñ1ËÁ
+Ñ1Ë×Á
+Ñ1Ë×Å
+Ñ1Ë×É
+Ñ1Ë×Ï
+Ñ1Ë×Õ
+Ñ1Ë×Ù
+Ñ1ËÅ
+Ñ1ËÉ
+Ñ1ËÌÁ
+Ñ1ËÌÅ
+Ñ1ËÌÉ
+Ñ1ËÌÏ
+Ñ1ËÌÕ
+Ñ1ËÌÙ
+ÑË1Î
+Ñ1ËÏ
+Ñ1ËÒÁ
+Ñ1ËÒÅ
+Ñ1ËÒÉ
+Ñ1ËÒÏ
+Ñ1ËÒÕ
+Ñ1ËÒÙ
+Ñ1ËÕ
+Ñ1ËÙ
+Ñ1ËØÅ
+Ñ1ËØÉ
+Ñ1ËØÀ
+Ñ1ËØÑ
+Ñ1ËÀ
+Ñ1ËÑ
+Ñ1ÌÁ
+Ñ1ÌÅ
+Ñ1ÌÉ
+Ñ1ÌÏ
+Ñ1ÌÕ
+Ñ1ÌÙ
+Ñ1ÌØÅ
+Ñ1ÌØÉ
+Ñ1ÌØÀ
+Ñ1ÌØÑ
+Ñ1ÌÀ
+Ñ1ÌÑ
+Ñ1ÍÁ
+Ñ1ÍÅ
+Ñ1ÍÉ
+Ñ1ÍÌÁ
+Ñ1ÍÌÅ
+Ñ1ÍÌÉ
+Ñ1ÍÌÏ
+Ñ1ÍÌÕ
+Ñ1ÍÌÙ
+Ñ1ÍÏ
+Ñ1ÍÒÁ
+Ñ1ÍÒÅ
+Ñ1ÍÒÉ
+Ñ1ÍÒÏ
+Ñ1ÍÒÕ
+Ñ1ÍÒÙ
+Ñ1ÍÕ
+Ñ1ÍÙ
+Ñ1ÍØÅ
+Ñ1ÍØÉ
+Ñ1ÍØÀ
+Ñ1ÍØÑ
+Ñ1ÍÀ
+Ñ1ÍÑ
+Ñ1ÎÁ
+Ñ1ÎÅ
+Ñ1ÎÉ
+Ñ1ÎÏ
+Ñ1ÎÒÁ
+Ñ1ÎÒÅ
+Ñ1ÎÒÉ
+Ñ1ÎÒÏ
+Ñ1ÎÒÕ
+Ñ1ÎÒÙ
+Ñ1ÎÕ
+Ñ1ÎÙ
+Ñ1ÎØÅ
+Ñ1ÎØÉ
+Ñ1ÎØÀ
+Ñ1ÎØÑ
+Ñ1ÎÀ
+Ñ1ÎÑ
+Ñ1Ï2
+Ñ1ÐÁ
+Ñ1ÐÅ
+Ñ1ÐÉ
+Ñ1ÐÌÁ
+Ñ1ÐÌÅ
+Ñ1ÐÌÉ
+Ñ1ÐÌÏ
+Ñ1ÐÌÕ
+Ñ1ÐÌÙ
+Ñ1ÐÏ
+Ñ1ÐÒÁ
+Ñ1ÐÒÅ
+Ñ1ÐÒÉ
+Ñ1ÐÒÏ
+Ñ1ÐÒÕ
+Ñ1ÐÒÙ
+Ñ1ÐÔÁ
+Ñ1ÐÔÅ
+Ñ1ÐÔÉ
+Ñ1ÐÔÏ
+Ñ1ÐÔÕ
+Ñ1ÐÔÙ
+Ñ1ÐÕ
+Ñ1ÐÙ
+Ñ1ÐØÅ
+Ñ1ÐØÉ
+Ñ1ÐØÀ
+Ñ1ÐØÑ
+Ñ1ÐÀ
+Ñ1ÐÑ
+Ñ1ÒÁ
+ÑÒ5×
+Ñ1ÒÅ
+Ñ1ÒÉ
+Ñ1ÒÏ
+Ñ1ÒÕ
+Ñ1ÒÙ
+Ñ1ÒØÅ
+Ñ1ÒØÉ
+Ñ1ÒØÀ
+Ñ1ÒØÑ
+Ñ1ÒÀ
+Ñ1ÒÑ
+Ñ1ÓÁ
+Ñ1Ó×Á
+Ñ1Ó×Å
+Ñ1Ó×É
+Ñ1Ó×Ï
+Ñ1Ó×Õ
+Ñ1Ó×Ù
+Ñ1ÓÅ
+Ñ1ÓÉ
+ÑÓ1Ë
+Ñ1ÓË×Á
+Ñ1ÓË×Å
+Ñ1ÓË×É
+Ñ1ÓË×Ï
+Ñ1ÓË×Õ
+Ñ1ÓË×Ù
+Ñ1ÓËÒÁ
+Ñ1ÓËÒÅ
+Ñ1ÓËÒÉ
+Ñ1ÓËÒÏ
+Ñ1ÓËÒÕ
+Ñ1ÓËÒÙ
+Ñ1ÓÏ
+Ñ1ÓÒÁ
+Ñ1ÓÒÅ
+Ñ1ÓÒÉ
+Ñ1ÓÒÏ
+Ñ1ÓÒÕ
+Ñ1ÓÒÙ
+ÑÓ6Ô
+Ñ1ÓÔÁ
+Ñ1ÓÔ×Á
+Ñ1ÓÔ×Å
+Ñ1ÓÔ×É
+Ñ1ÓÔ×Ï
+Ñ1ÓÔ×Õ
+Ñ1ÓÔ×Ù
+Ñ1ÓÔ×ØÅ
+Ñ1ÓÔ×ØÉ
+Ñ1ÓÔ×ØÀ
+Ñ1ÓÔ×ØÑ
+Ñ1ÓÔ×À
+Ñ1ÓÔ×Ñ
+Ñ1ÓÔÅ
+Ñ1ÓÔÉ
+Ñ1ÓÔÏ
+Ñ1ÓÔÒÁ
+Ñ1ÓÔÒÅ
+Ñ1ÓÔÒÉ
+Ñ1ÓÔÒÏ
+Ñ1ÓÔÒÕ
+Ñ1ÓÔÒÙ
+Ñ1ÓÔÒØÅ
+Ñ1ÓÔÒØÉ
+Ñ1ÓÔÒØÀ
+Ñ1ÓÔÒØÑ
+Ñ1ÓÔÒÀ
+Ñ1ÓÔÒÑ
+Ñ1ÓÔÕ
+Ñ1ÓÔÙ
+Ñ1ÓÔØÅ
+Ñ1ÓÔØÉ
+Ñ1ÓÔØÀ
+Ñ1ÓÔØÑ
+Ñ1ÓÔÀ
+Ñ1ÓÔÑ
+Ñ1ÓÕ
+Ñ1ÓÙ
+Ñ1ÓØÅ
+Ñ1ÓØÉ
+Ñ1ÓØÀ
+Ñ1ÓØÑ
+Ñ1ÓÀ
+Ñ1ÓÑ
+Ñ1ÔÁ
+Ñ1Ô×Á
+Ñ1Ô×Å
+Ñ1Ô×É
+Ñ1Ô×Ï
+Ñ1Ô×Õ
+Ñ1Ô×Ù
+Ñ1ÔÅ
+Ñ3ÔÉ
+Ñ1ÔÏ
+Ñ1ÔÒÁ
+Ñ1ÔÒÅ
+Ñ1ÔÒÉ
+Ñ1ÔÒÏ
+Ñ1ÔÒÕ
+Ñ1ÔÒÙ
+Ñ1ÔÕ
+Ñ1ÔÙ
+Ñ1ÔØÅ
+Ñ1ÔØÉ
+Ñ1ÔØÀ
+Ñ1ÔØÑ
+Ñ1ÔÀ
+Ñ1ÔÑ
+Ñ1Õ
+Ñ1ÆÁ
+Ñ1ÆÅ
+Ñ1ÆÉ
+Ñ1ÆÌÁ
+Ñ1ÆÌÅ
+Ñ1ÆÌÉ
+Ñ1ÆÌÏ
+Ñ1ÆÌÕ
+Ñ1ÆÌÙ
+Ñ1ÆÏ
+Ñ1ÆÒÁ
+Ñ1ÆÒÅ
+Ñ1ÆÒÉ
+Ñ1ÆÒÏ
+Ñ1ÆÒÕ
+Ñ1ÆÒÙ
+Ñ1ÆÕ
+Ñ1ÆØÅ
+Ñ1ÆØÉ
+Ñ1ÆØÀ
+Ñ1ÆØÑ
+Ñ1ÆÀ
+Ñ1ÆÑ
+Ñ1ÈÁ
+Ñ1ÈÄÁ
+Ñ1ÈÄÅ
+Ñ1ÈÄÉ
+Ñ1ÈÄÏ
+Ñ1ÈÄÕ
+Ñ1ÈÄÙ
+Ñ1ÈÅ
+Ñ1ÈÉ
+Ñ1ÈÏ
+Ñ1ÈÕ
+Ñ1ÈÙ
+Ñ1ÈØÅ
+Ñ1ÈØÉ
+Ñ1ÈØÀ
+Ñ1ÈØÑ
+Ñ1ÈÀ
+Ñ1ÈÑ
+Ñ1ÃÁ
+Ñ1ÃÅ
+Ñ1ÃÉ
+Ñ1ÃÏ
+Ñ1ÃÕ
+Ñ1ÃÙ
+Ñ1ÃØÅ
+Ñ1ÃØÉ
+Ñ1ÃØÀ
+Ñ1ÃØÑ
+Ñ1ÞÁ
+Ñ1ÞÅ
+Ñ1ÞÉ
+Ñ1ÞÕ
+Ñ1ÞØÅ
+Ñ1ÞØÉ
+Ñ1ÞØÀ
+Ñ1ÞØÑ
+Ñ1ÛÁ
+Ñ1Û×Á
+Ñ1Û×Å
+Ñ1Û×É
+Ñ1Û×Ï
+Ñ1Û×Õ
+Ñ1Û×Ù
+Ñ1ÛÅ
+Ñ1ÛÉ
+Ñ1ÛÌÁ
+Ñ1ÛÌÅ
+Ñ1ÛÌÉ
+Ñ1ÛÌÏ
+Ñ1ÛÌÕ
+Ñ1ÛÌÙ
+Ñ1ÛÏ
+Ñ1ÛÒÁ
+Ñ1ÛÒÅ
+Ñ1ÛÒÉ
+Ñ1ÛÒÏ
+Ñ1ÛÒÕ
+Ñ1ÛÒÙ
+Ñ1ÛÕ
+Ñ1ÛØÅ
+Ñ1ÛØÉ
+Ñ1ÛØÀ
+Ñ1ÛØÑ
+Ñ1ÝÁ
+Ñ1ÝÅ
+Ñ1ÝÉ
+Ñ1ÝÏ
+Ñ1ÝÕ
+Ñ1ÝØÅ
+Ñ1ÝØÉ
+Ñ1ÝØÀ
+Ñ1ÝØÑ
+Ñ1Ù
+Ñ1Ü
+Ñ1À
+Ñ1Ñ
diff --git a/hyph/hyph/slovak.lh b/hyph/hyph/slovak.lh
new file mode 100644
index 0000000..df50315
--- /dev/null
+++ b/hyph/hyph/slovak.lh
@@ -0,0 +1,2706 @@
+Lout hyphenation information
+%
+% COPYRIGHT (C) 2001 Peter Valach
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either Version 3, or (at your option)
+% any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program; if not, write to the Free Software
+% Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA
+
+% This is a Slovak hyphenation file created
+% by Peter Valach <pvalach@gmx.net> on 26 June 2001
+% from a TeX file made by Jana Chlebikova.
+% Comment from the original file:
+%
+% Slovak hyphenation (version 2.0) 24.4.1992
+% Autor: Jana Chlebikova, Institute of Informatics,
+% Comenius University, 842 15 Bratislava, Czechoslovakia
+%
+% Like Slovak itself, this file is encoded in the Latin2
+% character set. Slovak has 17 accented letters, each with
+% upper-case and lower-case forms:
+%
+% PostScript Latin2 Latin2 Latin2
+% name decimal octal literal
+% code code character
+%
+% aacute 225 á
+% adieresis 228 ä
+% ccaron 232 è
+% dcaron 239 ï
+% eacute 233 é
+% iacute 237 í
+% lcaron 181 µ
+% lacute 229 å
+% ncaron 242 ò
+% oacute 243 ó
+% ocircumflex 244 ô
+% racute 224 à
+% scaron 185 ¹
+% tcaron 187 »
+% uacute 250 ú
+% yacute 253 ý
+% zcaron 190 ¾
+%
+% Aacute 193 Á
+% Adieresis 196 Ä
+% Ccaron 200 È
+% Dcaron 207 Ï
+% Eacute 201 É
+% Iacute 205 Í
+% Lcaron 165 ¥
+% Lacute 197 Å
+% Ncaron 210 Ò
+% Oacute 211 Ó
+% Ocircumflex 212 Ô
+% Racute 192 À
+% Scaron 169 ©
+% Tcaron 171 «
+% Uacute 218 Ú
+% Yacute 221 Ý
+% Zcaron 174 ®
+%
+
+Classes:
+@!$%^&*()_-+=~`{[}]:;'|<,.>?/0123456789
+aA
+bB
+cC
+dD
+eE
+fF
+gG
+hH
+iI
+jJ
+kK
+lL
+mM
+nN
+oO
+pP
+qQ
+rR
+sS
+tT
+uU
+vV
+wW
+xX
+yY
+zZ
+áÁ
+äÄ
+èÈ
+ïÏ
+éÉ
+íÍ
+µ¥
+åÅ
+òÒ
+óÓ
+ôÔ
+àÀ
+¹©
+»«
+úÚ
+ýÝ
+¾®
+
+Patterns:
+%% samohlásky
+a1
+á1
+ä1
+e1
+é1
+i1
+í1
+o1
+ó1
+ô1
+u1
+ú1
+y1
+ý1
+i2a
+i2á
+i2e
+i2u
+o2u
+c2h
+d2z
+d2¾
+%% dvojice spoluhlások
+2b1b
+2b1c
+2b1è
+2b1d
+2b1ï
+2b1f
+2b1g
+2b1h
+2b1c2h
+2b1j
+2b1k
+2b1l
+2b1µ
+2b1m
+2b1n
+2b1ò
+2b1p
+2b1r
+2b1s
+2b1¹
+2b1t
+2b1»
+2b1v
+2b1w
+2b1x
+2b1z
+2b1¾
+2b1d2z
+2b1d2¾
+2c1b
+2c1c
+2c1è
+2c1d
+2c1ï
+2c1f
+2c1g
+2c1c2h
+2c1j
+2c1k
+2c1l
+2c1µ
+2c1m
+2c1n
+2c1ò
+2c1p
+2c1r
+2c1s
+2c1¹
+2c1t
+2c1»
+2c1v
+2c1w
+2c1x
+2c1z
+2c1¾
+2c1d2z
+2c1d2¾
+2è1b
+2è1c
+2è1è
+2è1d
+2è1ï
+2è1f
+2è1g
+2è1h
+2è1c2h
+2è1j
+2è1k
+2è1l
+2è1µ
+2è1m
+2è1n
+2è1ò
+2è1p
+2è1r
+2è1s
+2è1¹
+2è1t
+2è1»
+2è1v
+2è1w
+2è1x
+2è1z
+2è1¾
+2è1d2z
+2è1d2¾
+2d1b
+2d1c
+2d1è
+2d1d
+2d1ï
+2d1f
+2d1g
+2d1h
+2d1c2h
+2d1j
+2d1k
+2d1l
+2d1µ
+2d1m
+2d1n
+2d1ò
+2d1p
+2d1r
+2d1s
+2d1¹
+2d1t
+2d1»
+2d1v
+2d1d2z
+2d1d2¾
+2ï1b
+2ï1c
+2ï1è
+2ï1d
+2ï1ï
+2ï1f
+2ï1g
+2ï1h
+2ï1c2h
+2ï1j
+2ï1k
+2ï1l
+2ï1µ
+2ï1m
+2ï1n
+2ï1ò
+2ï1p
+2ï1r
+2ï1s
+2ï1¹
+2ï1t
+2ï1»
+2ï1v
+2ï1z
+2ï1¾
+2ï1d2z
+2ï1d2¾
+2f1b
+2f1c
+2f1è
+2f1d
+2f1ï
+2f1f
+2f1g
+2f1h
+2f1c2h
+2f1j
+2f1k
+2f1l
+2f1µ
+2f1m
+2f1n
+2f1ò
+2f1p
+2f1r
+2f1s
+2f1¹
+2f1t
+2f1»
+2f1v
+2f1z
+2f1¾
+2f1d2z
+2f1d2¾
+2g1b
+2g1c
+2g1è
+2g1d
+2g1ï
+2g1f
+2g1g
+2g1h
+2g1c2h
+2g1j
+2g1k
+2g1l
+2g1µ
+2g1m
+2g1n
+2g1ò
+2g1p
+2g1r
+2g1s
+2g1¹
+2g1t
+2g1»
+2g1v
+2g1z
+2g1¾
+2g1d2z
+2g1d2¾
+2h1b
+2h1c
+2h1è
+2h1d
+2h1ï
+2h1f
+2h1g
+2h1h
+2h1c2h
+2h1j
+2h1k
+2h1l
+2h1µ
+2h1m
+2h1n
+2h1ò
+2h1p
+2h1r
+2h1s
+2h1¹
+2h1t
+2h1»
+2h1v
+2h1z
+2h1¾
+2h1d2z
+2h1d2¾
+2c2h1b
+2c2h1c
+2c2h1è
+2c2h1d
+2c2h1ï
+2c2h1f
+2c2h1g
+2c2h1h
+2c2h1c2h
+2c2h1j
+2c2h1k
+2c2h1l
+2c2h1µ
+2c2h1m
+2c2h1n
+2c2h1ò
+2c2h1p
+2c2h1r
+2c2h1s
+2c2h1¹
+2c2h1t
+2c2h1»
+2c2h1v
+2c2h1w
+2c2h1¾
+2c2h1d2z
+2c2h1d2¾
+2j1b
+2j1c
+2j1è
+2j1d
+2j1ï
+2j1f
+2j1g
+2j1h
+2j1c2h
+2j1j
+2j1k
+2j1l
+2j1µ
+2j1m
+2j1n
+2j1ò
+2j1p
+2j1r
+2j1s
+2j1¹
+2j1t
+2j1»
+2j1v
+2j1w
+2j1x
+2j1z
+2j1¾
+2j1d2z
+2j1d2¾
+2k1b
+2k1c
+2k1è
+2k1d
+2k1ï
+2k1f
+2k1g
+2k1h
+2k1c2h
+2k1j
+2k1k
+2k1l
+2k1µ
+2k1m
+2k1n
+2k1ò
+2k1p
+2k1r
+2k1s
+2k1¹
+2k1t
+2k1»
+2k1v
+2k1w
+2k1x
+2k1z
+2k1¾
+2k1d2z
+2k1d2¾
+2l1b
+2l1c
+2l1è
+2l1d
+2l1ï
+2l1f
+2l1g
+2l1h
+2l1c2h
+2l1j
+2l1k
+2l1l
+2l1µ
+2l1m
+2l1n
+2l1ò
+2l1p
+2l1r
+2l1s
+2l1¹
+2l1t
+2l1»
+2l1v
+2l1z
+2l1¾
+2l1d2z
+2l1d2¾
+2µ1b
+2µ1c
+2µ1è
+2µ1d
+2µ1ï
+2µ1f
+2µ1g
+2µ1h
+2µ1c2h
+2µ1j
+2µ1k
+2µ1l
+2µ1µ
+2µ1m
+2µ1n
+2µ1ò
+2µ1p
+2µ1r
+2µ1s
+2µ1¹
+2µ1t
+2µ1»
+2µ1v
+2µ1z
+2µ1¾
+2µ1d2z
+2µ1d2¾
+2m1b
+2m1c
+2m1è
+2m1d
+2m1ï
+2m1f
+2m1g
+2m1h
+2m1c2h
+2m1j
+2m1k
+2m1l
+2m1µ
+2m1m
+2m1n
+2m1ò
+2m1p
+2m1r
+2m1s
+2m1¹
+2m1t
+2m1»
+2m1v
+2m1z
+2m1¾
+2m1d2z
+2m1d2¾
+2n1b
+2n1c
+2n1è
+2n1d
+2n1ï
+2n1f
+2n1g
+2n1h
+2n1c2h
+2n1j
+2n1k
+2n1l
+2n1µ
+2n1m
+2n1n
+2n1ò
+2n1p
+2n1r
+2n1s
+2n1¹
+2n1t
+2n1»
+2n1v
+2n1w
+2n1x
+2n1z
+2n1¾
+2n1d2z
+2n1d2¾
+2ò1b
+2ò1c
+2ò1è
+2ò1d
+2ò1ï
+2ò1f
+2ò1g
+2ò1h
+2ò1c2h
+2ò1j
+2ò1k
+2ò1l
+2ò1µ
+2ò1m
+2ò1n
+2ò1ò
+2ò1p
+2ò1r
+2ò1s
+2ò1¹
+2ò1t
+2ò1»
+2ò1v
+2ò1z
+2ò1¾
+2ò1d2z
+2ò1d2¾
+2p1b
+2p1c
+2p1è
+2p1d
+2p1ï
+2p1f
+2p1g
+2p1h
+2p1c2h
+2p1j
+2p1k
+2p1l
+2p1µ
+2p1m
+2p1n
+2p1ò
+2p1p
+2p1r
+2p1s
+2p1¹
+2p1t
+2p1»
+2p1v
+2p1w
+2p1x
+2p1z
+2p1¾
+2p1d2z
+2p1d2¾
+2r1b
+2r1c
+2r1è
+2r1d
+2r1ï
+2r1f
+2r1g
+2r1h
+2r1c2h
+2r1j
+2r1k
+2r1l
+2r1µ
+2r1m
+2r1n
+2r1ò
+2r1p
+2r1r
+2r1s
+2r1¹
+2r1t
+2r1»
+2r1v
+2r1w
+2r1x
+2r1z
+2r1¾
+2r1d2z
+2r1d2¾
+2s1b
+2s1c
+2s1è
+2s1d
+2s1ï
+2s1f
+2s1g
+2s1h
+2s1c2h
+2s1j
+2s1k
+2s1l
+2s1µ
+2s1m
+2s1n
+2s1ò
+2s1p
+2s1r
+2s1s
+2s1¹
+2s1t
+2s1»
+2s1v
+2s1z
+2s1¾
+2s1d2z
+2s1d2¾
+2¹1b
+2¹1c
+2¹1è
+2¹1d
+2¹1ï
+2¹1f
+2¹1g
+2¹1h
+2¹1c2h
+2¹1j
+2¹1k
+2¹1l
+2¹1µ
+2¹1m
+2¹1n
+2¹1ò
+2¹1p
+2¹1r
+2¹1s
+2¹1¹
+2¹1t
+2¹1»
+2¹1v
+2¹1w
+2¹1x
+2¹1z
+2¹1¾
+2¹1d2z
+2¹1d2¾
+2t1b
+2t1c
+2t1è
+2t1d
+2t1ï
+2t1f
+2t1g
+2t1h
+2t1c2h
+2t1j
+2t1k
+2t1l
+2t1µ
+2t1m
+2t1n
+2t1ò
+2t1p
+2t1r
+2t1s
+2t1¹
+2t1t
+2t1»
+2t1v
+2t1w
+2t1x
+2t1z
+2t1¾
+2t1d2z
+2t1d2¾
+2»1b
+2»1c
+2»1è
+2»1d
+2»1ï
+2»1f
+2»1g
+2»1h
+2»1c2h
+2»1j
+2»1k
+2»1l
+2»1µ
+2»1m
+2»1n
+2»1ò
+2»1p
+2»1r
+2»1s
+2»1¹
+2»1t
+2»1»
+2»1v
+2»1w
+2»1x
+2»1z
+2»1¾
+2»1d2z
+2»1d2¾
+2v1b
+2v1c
+2v1è
+2v1d
+2v1ï
+2v1f
+2v1g
+2v1h
+2v1c2h
+2v1j
+2v1k
+2v1l
+2v1µ
+2v1m
+2v1n
+2v1ò
+2v1p
+2v1r
+2v1s
+2v1¹
+2v1t
+2v1»
+2v1v
+2v1w
+2v1x
+2v1z
+2v1¾
+2v1d2z
+2v1d2¾
+2z1b
+2z1c
+2z1è
+2z1d
+2z1ï
+2z1f
+2z1g
+2z1h
+2z1c2h
+2z1j
+2z1k
+2z1l
+2z1µ
+2z1m
+2z1n
+2z1ò
+2z1p
+2z1r
+2z1s
+2z1¹
+2z1t
+2z1»
+2z1v
+2z1z
+2z1¾
+2z1d2z
+2z1d2¾
+2¾1b
+2¾1c
+2¾1è
+2¾1d
+2¾1ï
+2¾1f
+2¾1g
+2¾1h
+2¾1c2h
+2¾1j
+2¾1k
+2¾1l
+2¾1µ
+2¾1m
+2¾1n
+2¾1ò
+2¾1p
+2¾1r
+2¾1s
+2¾1¹
+2¾1t
+2¾1»
+2¾1v
+2¾1z
+2¾1¾
+2¾1d2z
+2¾1d2¾
+2d2z1k
+2d2z1n
+2d2z1r
+2d2z1s
+2d2¾1¹
+2x1t
+2x1n
+2b1à
+2à1b
+2b1å
+2å1b
+2c1à
+2à1c
+2c1å
+2å1c
+2è1à
+2à1è
+2è1å
+2å1è
+2d1à
+2à1d
+2d1å
+2å1d
+2ï1à
+2à1ï
+2ï1å
+2å1ï
+2f1à
+2à1f
+2f1å
+2å1f
+2g1à
+2à1g
+2g1å
+2å1g
+2h1à
+2à1h
+2h1å
+2å1h
+2c2h1à
+2à1c2h
+2c2h1å
+2å1c2h
+2j1à
+2à1j
+2j1å
+2å1j
+2k1à
+2à1k
+2k1å
+2å1k
+2l1à
+2à1l
+2l1å
+2å1l
+2µ1à
+2à1µ
+2µ1å
+2å1µ
+2m1à
+2à1m
+2m1å
+2å1m
+2n1à
+2à1n
+2n1å
+2å1n
+2ò1à
+2à1ò
+2ò1å
+2å1ò
+2p1à
+2à1p
+2p1å
+2å1p
+2r1à
+2à1r
+2r1å
+2å1r
+2s1à
+2à1s
+2s1å
+2å1s
+2¹1à
+2à1¹
+2¹1å
+2å1¹
+2t1à
+2à1t
+2t1å
+2å1t
+2»1à
+2à1»
+2»1å
+2å1»
+2v1à
+2à1v
+2v1å
+2å1v
+2z1à
+2à1z
+2z1å
+2å1z
+2¾1à
+2à1¾
+2¾1å
+2å1¾
+2d2z1à
+2à1d2z
+2d2z1å
+2å1d2z
+2d2¾1à
+2à1d2¾
+2d2¾1å
+2å1d2¾
+%2 samohlásky
+a1í2
+a1o2
+e1á2
+e1í2
+e1o2
+e1ó2
+e1u2
+i1o2
+o1a2
+o1e2
+o1i2
+o1o2
+u1a2
+u1á2
+u1i2
+u1í2
+u1o2
+u1u2
+y1a2
+y1e2
+y1ó2
+y1u2
+a2u1
+a2i1
+% 3 spoluhlásky
+b2l3b
+3b2l3è
+b2l3c2h
+3b2l3k
+3b2å3k
+3b2l3ò
+b2l3¹
+b2å3¹
+3b2r3b
+b2r3d
+3b2r3k
+3b2à3k
+3b2r3l
+3b2à3µ
+3b2r3n
+3b2r3ò
+3b2r3v
+b2r3z
+b3s2c
+b3s2t
+c3k2t
+3c2r3è
+3c2à3è
+3c2r3k
+3c2à3k
+c3t2v
+3è2l3n
+3è2r3è
+è2r3p
+3è2r3t
+3è2r3v
+d3c4h4n
+3d2l3b
+3d2l3h
+d2l3n
+3d2l3¾
+3d2å3¾
+3d2r3d
+3d2r3g
+d2r3l
+3d2r3k
+3d2r3m
+d2r3n
+3d2r3v
+3d2r3z
+3d2r3¾
+3d2à3¾
+d3s2v
+d3s2t
+d3v2r
+3f2r3è
+3f2r3f
+3f2r3k
+3f2à3k
+3f2r3m
+3f2r3n
+3g2l3g
+3g2r3c
+3g2r3g
+3h2l3b
+3h2å3b
+3h2l3t
+3h2m2l
+3h2r3b
+3h2à3b
+3h2r3è
+3h2r3d
+3h2r3d2z
+3h2r3k
+3h2r3m
+3h2r3n
+3h2r3ò
+3h2r3t
+3h2r3v
+3c2h2l3p
+3c2h2r3b
+3c2h2r3è
+c2h2r3c4h
+3c2h2r3l
+3c2h2r3t
+j2c2h3n
+j3s2t
+j3¹2le
+j3t2m
+j3t2r
+3k2l3b
+3k2å3b
+3k2l3è
+3k2l3z
+3k2å3z
+k2r3b
+3k2r3è
+3k2à3è
+3k2à3d
+3k2r3k
+3k2à3k
+3k2à3m
+3k2r3p
+3k2r3s
+3k2r3t
+3k2r3v
+k3s2µ
+k2s3n
+k3t2r
+l3d2r
+µ3k2n
+l3t2r
+m3b2l
+m3b2µ
+m3b2r
+m3f2l
+m3f2r
+m3k2n
+3m2l3è
+3m2l3k
+m3p2l
+m3p2µ
+m3p2r
+m3p2s
+3m2r3h
+m2r3c4h
+3m2r3k
+m2r3l
+m2r3¹
+m2r3t
+3m2r3v
+3m2r3z
+3m2à3z
+m3s2t
+m3¹2t
+n3dµa
+n3d2r
+n3f2l
+n3f2r
+n3g2h
+n3g2l
+n3g2µ
+n2g3n
+n3g2r
+n3g2v
+n3k2c
+n3k2h
+n3k2n
+n3k2r
+n3k2v
+n3s2c
+n3¹2p
+n3¹2t
+n3t2g
+n3t2l
+n3t2n
+n3t2r
+n2¾3m
+3p2l3n
+3p2l3ò
+3p2å3ò
+3p2l3z
+3p2å3z
+3p2å3¾
+3p2à3c
+3p2r3è
+3p2r3d
+3p2r3s
+3p2r3¹
+p3¹2»
+p3t2r
+r2b3n
+r3g2µ
+r3g2r
+r3g2s
+r3k2d
+r2k3n
+r3k2t
+r3k2v
+r3p2c
+r3p2è
+r3p2r
+r3s2p
+r3¹2è
+r3¹2l
+r3¹2r
+r2t3m
+r3t2n
+r2t3ò
+r3t2r
+r3t2v
+3s4c4h4n
+s2k3l
+s2k3m
+s2k3n
+s3k2r
+s3k2v
+3s2l3n
+3s2l3ò
+3s2l3z
+s3p2r
+3s2r3d
+3s4à3k
+3s4r3¹
+s3t2k
+ôs4t3k2ár3s4t4v
+s2t3l
+s3t2m
+s2t3n
+s3t2r
+s3t2v
+s2»3h
+s2»3m
+s2»3p
+¹3k2l
+¹3k2r
+¹3t2r
+3¹4t4v
+t3k2l
+t3k2n
+3t2l3è
+3t2l3k
+t3h2l
+3t4r3è
+3t4r3h
+3t2r3l
+3t2r3k
+3t2r3m
+a4t2r3n
+3t2r3n
+3t2à3n
+3t2à3ò
+3t4r3p
+3t2r3v
+3t2à3¾
+3v2l3è
+3v2å3è
+3v2l3h
+3v2l3k
+3v2l3n
+3v2r3h
+3v2r3c2h
+3v2r3l
+3v2à3¹
+3v2à3t
+3v2r3z
+3v2à3z
+3v4z4d
+3v4z4h
+3v4z4n
+3v3z2»
+z3d2n
+noz5d4r
+3z4d4r
+3z4d4v
+z3g2n
+3z4h4r
+3z2r3k
+3z2r3n
+3z4v4l
+¾2d3n
+3¾2l3è
+3¾2l3t
+3¾2åt
+3¾2r3ï
+¾3s2t
+x3p2l
+x3p2r
+x3t2r
+% 4 spoluhlásky
+3b2l4è3n
+3b2å4è3k
+3b2l4n3k
+3b2å3k2n
+3b2r4b3l
+3b2r4b3t
+3b2r4è3k
+3b2r4d3c
+3b2à4d3n
+3b2r3h2l
+3b4à4k3n
+3b4r4m3b
+3b4r4n3è
+3b4r4n3k
+3b4r4¹3l
+3b4r4t3l
+3b4r4t3n
+3b4r4v3n
+3b4r4z3d
+3b4r4z3l
+3b4r4z3n
+b3s2t2r
+3c4à4è3k
+3c4r4k3n
+3c4v4r3è
+3c4v4r3k
+3c4v4à3k
+3c4v4r3l
+3è4l4n3k
+3è4r3è4r
+3è4r4c4h3n
+3è4r4p3k
+3è4r4p3n
+3è4r4t3n
+3è4v4r3k
+3è4v4r3l
+3d4l4b3n
+d4å4¾3k
+d4l4¾3n
+d4å4¾3n
+3d4r4c3n
+3d4r4g3µ
+3d4r4g3n
+3d4r4h3n
+3d4r4n3è
+3d4r4n3k
+3d4r4s3n
+3d4r4¾3b
+3d4r4¾3k
+3f4r4c3k
+3f4r4c3n
+3f4r4è3k
+3f4r4f3l
+3f4r4k3n
+3f4r4n3d
+3f4r4n3d4¾
+3f4r4n3g
+3f4r4n3k
+3g4l4g3n
+3g2r4c3k
+3h2å4b3k
+3h2l3t4n
+3h2r4b3è
+3h2r4è3k
+h2r4d3l
+3h2r4g3µ
+3h2r4k3µ
+3h2r4k3n
+3h2à4k3n
+3h2r4n3è
+3h2r4s3t
+3h2r4s3»
+3ch4å4p3k
+3c2h2r4b3t
+3c2h2r4c4h3l
+3c2h2r4c4h3µ
+3c4h4r4s3t
+j3s4t4r
+j3s4t4v
+3k4l4b3è
+3k4l4b3k
+3k4l4z3k
+3k4l4z3n
+3k4r4è3m
+3k4r4è3n
+3k4r4k3v
+3k4r4m3n
+3k4à4m3n
+3k4r4p3è
+3k4r4s3t
+3k4r4¹3t
+3k4r4t3k
+3k4r4v3n
+3m2l4è3k
+3m2å4k3n
+3m2å4k3v
+3m2l4s3n
+m3p4r3p
+m3p4r3v
+3m4r4k3n
+3m4r4k3v
+3m4r4m3l
+3m4r4n3è
+3m4r4n3k
+3m4à4¹3t
+3m4à4t3v
+3m4r4z3l
+3m4r4z3k
+3m4r4z3n
+n4g3s4t
+n3¹4t4r
+n3t4l3m
+3p2l4z3l
+3p2µ4z3n
+p2à4c3n
+3p2r4è3k
+3p4r4d3n
+3p4à4c2h3n
+3p4r4s3k
+3p4r4t3k
+r2s3k4d
+r2s3k4t
+èer4s3t4v
+3s4l4n3k
+3s4k4r3z
+3s4m4r3c
+3s4m4r3è
+3s4m4r3d
+3s4m4r3k
+3s4m4r3t
+3s4p4r3c4h
+3s4r4d3c
+3s4r4k3n
+3s4r4s3t
+3s4t4å3k
+s3t4r3b
+ko4s3t4r3è
+3s4t4r3è
+3s4t4à3h
+3s4t4r3k
+s4t4r3v
+4s4»5k4rát
+3¹4k4l3b
+3¹4k4r3k
+3¹4k4à3k
+ma¹3k4r3t
+3¹4k4r3t
+3¹4p4l3h
+3¹4t4r3b
+¹4t4r3n
+3¹4t4v4r3t
+3¹4t4v4r3»
+3t2å4c3»
+3t2r4b3l
+t2r4è3k
+3t2r4d3l
+3t2r4h3l
+3t2r4h3n
+3t2r4k3n
+3t2r4k3v
+3t2r4m3n
+3t4à4p3n
+3t2r4¾3k
+3t2r4¾3n
+3t2v4r3d
+3t2v4r3d4z
+3t2v4à3d4z
+3v2l4h3è
+3v2l4h3k
+3v2l4h3n
+3v2l4n3k
+3v2l4n3n
+3v4r4h3n
+3v4r4k3n
+3v4à4z3g
+3v4r4z3g
+3v4r4z3n
+3v4r4¾3l
+3z4h4à3ò
+3z4r4n3n
+3¾4l4è3n
+3¾4l4t3n
+3¾4r4d3k
+% 5 spoluhlások
+3b4r4n3k4n
+b3d4å4¾3n
+3c4v4r4è3k
+3c4v4r4n3k
+3è4à4s3t4v
+3è4r4t4t3n
+3è4v4r4k3n
+3d4r4¾3g4r
+3f4r4n4g3n
+h2à4s3t4k
+3c4h4r4s4t3n
+3k4r4s4t3n
+3k4r4s4t3ò
+3s4m4r4¹3»
+3s4m4r4t3k
+s3t4r4n3k
+3¹4k4l4b3n
+ma¹3k4r4t3n
+3¹4k4r4t3n
+3¹4k4v4r3è
+3¹4k4v4r3k
+3¹4k4v4à3k
+3¹4k4v4r3n
+3¹4m4r4d3k
+3¹4m4r4n3c
+3¹4p4l4h3n
+3¹4t4r4k3n
+3¹3t4r4n3g
+3t4v4r4d3n
+3v4r4s3t4v
+3v4r4z3g4n
+% 6 spoluhlások
+3c4v4r4n3g4n
+3¹4k4v4r4k3n
+3¹4k4v4à4k3n
+% koncovka -ný
+k4è3ný.
+k4è3ného.
+k4è3nému.
+k4è3nom.
+k4è3ným.
+k4è3né.
+k4è3ná.
+k4è3nej.
+k4è3nú.
+k4è3nou.
+k4è3ní.
+k4è3ných.
+k4è3nými.
+k4t3ný.
+k4t3ného.
+k4t3nému.
+k4t3nom.
+k4t3ným.
+k4t3né.
+k4t3ná.
+k4t3nej.
+k4t3nú.
+k4t3nou.
+k4t3ní.
+k4t3ných.
+k4t3nými.
+n4è3ný.
+n4è3ného.
+n4è3nému.
+n4è3nom.
+n4è3ným.
+n4è3né.
+n4è3ná.
+n4è3nej.
+n4è3nú.
+n4è3nou.
+n4è3ní.
+n4è3ných.
+n4è3nými.
+n4k4è3n
+n4t3ný.
+n4t3ného.
+n4t3nému.
+n4t3nom.
+n4t3ným.
+n4t3né.
+n4t3ná.
+n4t3nej.
+n4t3nú.
+n4t3nou.
+n4t3ní.
+n4t3ných.
+n4t3nými.
+r4d3ný.
+r4d3ného.
+r4d3nému.
+r4d3nom.
+r4d3ným.
+r4d3né.
+r4d3ná.
+r4d3nej.
+r4d3nú.
+r4d3nou.
+r4d3ní.
+r4d3ných.
+r4d3nými.
+r4m3ný.
+r4m3ného.
+r4m3nému.
+r4m3nom.
+r4m3ným.
+r4m3né.
+r4m3ná.
+r4m3nej.
+r4m3nú.
+r4m3nou.
+r4m3ní.
+r4m3ných.
+r4m3nými.
+r4p4è3n
+r4t3ný.
+r4t3ného.
+r4t3nému.
+r4t3nom.
+r4t3ným.
+r4t3né.
+r4t3ná.
+r4t3nej.
+r4t3nú.
+r4t3nou.
+r4t3ní.
+r4t3ných.
+r4t3nými.
+s4t3ný.
+s4t3ného.
+s4t3nému.
+s4t3nom.
+s4t3ným.
+s4t3né.
+s4t3ná.
+s4t3nej.
+s4t3nú.
+s4t3nou.
+s4t3ní.
+s4t3ných.
+s4t3nými.
+z4d3ny.
+z4d3neho.
+z4d3nemu.
+z4d3nom.
+z4d3nym.
+z4d3ne.
+z4d3na.
+z4d3nej.
+z4d3nu.
+z4d3nou.
+z4d3ni.
+z4d3nych.
+z4d3nymi.
+z4d3ný.
+z4d3ného.
+z4d3nému.
+z4d3ným.
+z4d3né.
+z4d3ná.
+z4d3nú.
+z4d3ní.
+z4d3ných.
+z4d3nými.
+% koncovky -ka
+b2l4¹3k
+l2t3k2a.
+l2t3k2y.
+l2t3k2e.
+l2t3k2u.
+l2t3k2ou.
+l2t3k2ám.
+l2t3k2ách.
+l2t3k2a1mi.
+n2t3k2a.
+n2t3k2y.
+n2t3k2e.
+n2t3k2u.
+n2t3k2ou.
+n2t3k2ám.
+n2t3k2ách.
+n2t3k2a1mi.
+n2k2t3k
+p2t3k2a.
+p2t3k2y.
+p2t3k2e.
+p2t3k2u.
+p2t3k2ou.
+p2t3k2ám.
+p2t3k2ách.
+p2t3k2a1mi.
+s2t3k2a.
+s2t3k2y.
+s2t3k2e.
+s2t3k2u.
+s2t3k2ou.
+s2t3k2ám.
+s2t3k2ách.
+s2t3k2a1mi.
+% koncovka -ty
+5p4r4s3t
+% koncovka -ský,-sky
+b3s4k
+d3s4k
+j3s4k
+l4p3s4k
+l3s4k
+å3s4k
+l4t3s4k
+4m3s4k
+4m4p3s4k
+n4d3s4k
+n4k4t3s4k
+n3s4k
+n4t3s4k
+p3s4k
+p4t3s4k
+r3s4k
+r4t3s4k
+r4z5s4k
+5s4r4b3s4k
+¹3s4k
+t3s4k
+v3s4k
+z3s4k
+¾3s4k
+% koncovky -¹tina,-èina
+n2d3è
+z3¹2t2
+r4z3¹2t2
+% koncovky -stvo
+b3s4t4v
+è3s4t4v
+d3s4t4v
+ï3s4t4v
+µ3s4t4v
+m3s4t4v
+n3s4t4v
+n4t3s4t4v
+p3s4t4v
+r3s4t4v
+r4v5s4t4v
+¹3s4t4v
+t3s4t4v
+v3s4t4v
+¾3s4t4v
+%predpony
+.as4t4ro3
+.atmo3
+.a2u1to3
+.a2e2ro
+.a2e2ro3d2r
+.aero3g2r
+.a2e2ro3k2l
+.aero3p2l
+.aero3s2k
+.aero3s2t
+.aero3t2r
+.akcie3s2c2h
+.ane3s2teti
+.ane3s2téz
+.anti5k4l
+.anti5k4r
+.apo5p4le
+.ap4rio
+.ap4rió
+.arci5k4
+.aristo5k4
+.as3k2lep
+.austro5s4
+.bac2k3hand
+.balne2o3
+.belo5
+.belo5h4
+.bez5
+.bez5b4
+.bez5d4
+.bez5h4
+.bez5k4
+.bez5m4
+.bez5p4
+.bez5s4
+.bez5t4
+.bez5v4
+.bez5z4
+.bielo5
+.bielob4
+.bieloh4
+.bielov4
+.bi2o5
+.biok4
+.biop4
+.bios4
+.blaho5
+.blahop4
+.blahos4
+.bledo5
+.boha5p4
+.boho5s4
+.bo¾e5
+.bo¾e5d4
+.bo¾ec2h4
+.brato5v4r
+.b2z2d
+.cáro5v4ra
+.celo5d4
+.celo5k4
+.celo5p4
+.celo5s4
+.celo5u4
+.ceno5t4
+.ces2t5maj
+.cirkevno5
+.cirkevno5p4
+.c4t4n
+.cudzo5k4
+.cudzo5o4
+.cudzo5s4
+.cudzo5t4
+.cudzo5v4
+.cyto5p4
+.èaro5k4
+.èaro5s4
+.èaro5v4
+.èaro5z4
+.èerno5b4
+.èerno5h4
+.èerno5k4
+.èerno5o4
+.èerveno5a4
+.èerveno5b4
+.èerveno5h4
+.èerveno5k4
+.èerveno5o4
+.èerveno5p4
+.èierno5b4
+.èierno5h4
+.èierno5o4
+.èo5ch4
+.èo5s4
+.èudo5t4
+.da3k2d
+.ïatelino5t4
+.de5f4
+.de5g4
+.dek4l
+.desa»5
+.de5¹4t2
+.dez5i2
+.dez5o2
+.dis2k3d4
+.divo5t4
+.dlho5h4
+.dlho5p4
+.dobro5d4
+.dobro5p4
+.dobro5s4
+.do5è2m
+.do5d4
+.do5f4
+.do5h4
+.do5c4h4
+.do5i4
+.do5k4
+.do5o
+.do5p4
+.do5s4
+.do5¹4p
+.do5¹4tie
+.do5¹4tí
+.do5t4l
+.do5t4m
+.do5t4r
+.do5t4v
+.do5u
+.do5v4
+.do5z4
+.do5¾4
+.drevo5p4
+.drevo5o
+.drevo5v4
+.drobno5z4
+.druho5s4
+.dvoj5al
+.dvoj5è4
+.dvoj5d4
+.dvoj5h4
+.dvoj5i4
+.dvoj5k4
+.dvoj5p4
+.dvoj5s4
+.dvoj5t4
+.dvoj5u
+.dvoj5v4
+.dvoj5z4
+.elektro5
+.ex5k4
+.fol2k5
+.foto5
+.gala5p4
+.gama5g4
+.ge4o
+.hnedo5o
+.hnedo5u
+.holo5b4
+.holo5h4
+.holo5k4
+.hore5z4
+.horno5u4
+.hrôzo5s4t4
+.hrôzo5v4
+.hrôzy5p4
+.hrubo5s4
+.hydro5
+.chorobo5p4
+.jasno5o
+.jasno5z4
+.jedno5h4
+.jedno5i4
+.jedno5p4
+.jedno5s4
+.jedno5u4
+.jedno5z4
+.juho5a
+.juho5s4
+.ju¾no5s4
+.kata5k4
+.kata5s4t4
+.kmeòo5t4
+.koso5d4
+.koso5¹4
+.koso5u
+.krivo5p4
+.kruto5v4
+.krvi5p4
+.krvi5s4
+.krvi5t4
+.ktovie5a2
+.lásky5p4
+.lesos4
+.µ4s4t
+.µudovo5u
+.makro5k4
+.makro5o4
+.makro5s4
+.málo5k4
+.malo5o
+.málo5v4
+.márno5t4
+.medzi5h4
+.medzi5i4
+.medzi5p4
+.medzi5¹4
+.medzi5t4
+.melo5d4
+.meru5ô2
+.miesto5d4
+.miesto5p4
+.mikro5e4
+.mikro5k4
+.mikro5o
+.mikro5p4
+.mimo5¹4
+.mimo5ú
+.mimo5v4
+.mnoho5s4
+.mnoho5t4
+.mnoho5u
+.mnoho5v
+.mnoho5z
+.modro5o
+.mrako5d4
+.mravo5u
+.mucho5t4
+.m4z4d
+.na5a4
+.na5b4
+.na5c4
+.nad5h4
+.na5d4nes.
+.nad5p4
+.na5d4p4.
+.na5d4à4.
+.na5d4robno.
+.na5h4
+.na5i4
+.na5k4
+.na5m4
+.na5o4
+.na5p4
+.ná5p4
+.národno5o
+.na5s4
+.na5st4
+.ná5s4
+.ná5st4
+.na5¹4
+.na5¹k4
+.na6¹5sk
+.na5t4
+.na5u4
+.na5ú4
+.ná5u4
+.ná5ú4
+.na5v4l
+.na5v4na
+.na5v4r4
+.ná5v4r4
+.na5v4z4
+.na5z4r
+.na5z4v
+.na6z5vy¹
+.náz5v4
+.na5¾4
+.ne5a4
+.ne5do3u2k
+.ne5e4
+.ne5i4
+.ne5m4
+.ne5na5h4
+.ne5na5i4
+.ne5na5k4
+.ne5na5m4
+.ne5na5p4
+.ne5na5s4
+.ne5na5t4
+.ne5p4
+.ne5s4
+.ne6s5tor
+.ne5¹4
+.ne5t4
+.ne6t5t
+.ne5u2
+.ne5ú2
+.ne5v4
+.ne5z4d4r
+.ne5z4d4v
+.ne5z4l
+.ne5z4m
+.ne5z4n
+.ne5z4r
+.ne5z4v
+.nie5k4
+.ni5k4
+.ni6k5to¹
+.nízko5k4
+.novo5u2
+.novo5z2
+.obi5d4
+.ob5k4
+.obo5s4
+.obo5z4
+.ob5s4
+.ob5t4
+.ob5z4
+.od5b4
+.od5c4
+.od5d4
+.od5f4
+.od5h4
+.od5c4h4
+.od5i4
+.od6i5ó
+.od5í4
+.od5k4
+.odo5b4
+.odo5h4
+.odo5k4
+.odo5m4k4
+.odo5p4
+.odo5s4
+.od5p4
+.od5s4
+.od5¹4
+.od5t4
+.od5v4
+.od5z4
+.t4v4r
+.o5h4l
+.o5h4µ
+.o5h4na
+.o5h4nú
+.o5h4r
+.o5c4h4
+.o5k4l
+.o5k4µ
+.okolo5i
+.okolo5s4
+.o5k4ra
+.o5k4rá
+.o5k4resa»
+.o5k4resáva»
+.o5k4ri
+.o5k4rí
+.o5k4ru
+.o5k4rú
+.o5m4l
+.o5m4n
+.o5m4r
+.o5p4
+.o6p5lan
+.o6p5rat
+.o5s4lab
+.o5s4lad
+.o5s4lav
+.o5s4láv
+.o5s4lep
+.o5s4lo
+.o5s4p4
+.o5s4tar
+.o5s4ta»
+.o5s4tan
+.o5s4taò
+.o6s5tatn
+.o5s4tatok
+.o5s4tatk
+.o5s4táv
+.o5s6to5
+.o5s6t4rap
+.ostro5u
+.o5s4ved
+.o5s4vetl
+.o5s4viet
+.o5s4vie¾
+.o5s4vit
+.o5s4voj
+.o5¹4k4
+.o5¹4µ4
+.o5¹4m4
+.o5¹4p4
+.o5¹4v4
+.o5t4ras
+.o5t4rav
+.o5t4ráv
+.o5t4rep
+.o5t4ria
+.o5v4dov
+.o5v4lád
+.o5v4la¾
+.o5v4p4
+.o5v4r
+.o5z4l4
+.o5z4n
+.o5z4re
+.o5z4v4l
+.pä»5izbo
+.plno5a
+.plno5p4
+.plno5¹4
+.plno5kr4
+.plocho5d4
+.po5b4
+.po5è4
+.poda5k4
+.pod5b4r
+.pod5h4
+.pod5c4h
+.pod5k4
+.pod5p4
+.po5d4rá¾
+.po5d4rep
+.pod5re
+.po5d4rh
+.po5d4rie
+.po5d4rm
+.po5d4rv
+.po5d4r4¾
+.pod5s4koè
+.pod5v4
+.pod3zem
+.pod3zol
+.pod3¾a
+.pod3¾u
+.po5h4
+.po6h5reb
+.po5c4h4
+.po5i4
+.po5k4
+.pol5d4
+.pol5i4z
+.polo5a
+.polo5b4
+.pol5o4blú
+.polo5d4
+.polo5h4l
+.polo5i
+.polo5k4
+.polo5m4
+.polo5o4
+.polo5p4
+.polo5s4
+.polo5t4
+.polo5u4
+.polo5ú4
+.polo5v4
+.polo5z4
+.pol5s4t
+.po5m4
+.po6m5ník
+.po5o4
+.po5ob4h
+.po5ob4l
+.po5s4
+.po6s4t5s4k4rip
+.po6s5tul
+.po5¹4
+.po6¹5ta
+.po6¹5tov
+.po6¹5v
+.po5t4k4n
+.po5t4å
+.po5t4µ
+.po5t4r
+.poroz5p4
+.poroz5s4
+.poroz5v4
+.po6st5g4r
+.po6s5ti
+.po5t4
+.po5u
+.po5v4
+.po4v5ra
+.povy5h4
+.povy5k4
+.povy5p4
+.povy5s4
+.povy5v4
+.povy5z4
+.po5v4z4b
+.po5z4
+.pra5o4
+.pra5p4
+.pravicovo5o
+.pra5v4l
+.pra5v4nu
+.pra5v4nú
+.prá5vo5p4
+.pra5vo5s4
+.pre5b4
+.pre5c4
+.pred5c4
+.pred5h4
+.pred5ch4
+.pred5i
+.pred5k4
+.pred5m4
+.predo5h4
+.pred5op
+.pred5ostatn
+.pred5p4
+.pre5d4rah
+.pre5d4rap
+.pre5d4ra»
+.pre5d4ra¾
+.pre5d4ri
+.pre5d4r¾
+.pred5s4
+.pred5v4
+.pred5z4
+.pre5è4
+.pre5e2
+.pre5f2
+.pre5h4
+.pre5c4h4
+.pre5i4
+.pre5k4
+.pre6k5vap
+.pre5m4
+.pre5o4
+.pre5p4
+.pre5s4
+.pre6s5n
+.pre5¹4
+.pre5t4
+.pre5v4
+.pre5z4
+.pre5¾4
+.pri5b4
+.pri5è4
+.pri5d4
+.pri5h4
+.pri5c4h4
+.pri5k4
+.prí5k4
+.pri5m4
+.pri5p4
+.pri5s4
+.prí5s4
+.prí6s5p
+.pri6s5p
+.pri5s4pô
+.pri5¹4
+.pri6¹5la.
+.pri6¹5li.
+.pri6¹5lo.
+.pri5t4
+.pri5v4
+.pri5z4
+.pri5¾4
+.re5g4
+.re5k4
+.re6k5v
+.re5p4
+.re6p5n
+.re5¹4
+.re5t4
+.ro4z5i4
+.ro6z5í4
+.rozo5b4
+.rozo5d4
+.rozo5c4h4
+.rozo5m4
+.rozo5p4
+.rozo5r4
+.rozo5s4
+.rozo5¹4
+.rozo5z4
+.rozo5¾4
+.ro6z5u4
+.ro6z5v4
+3s4polu5
+3s4polu5h4
+3s4polu5p4
+3s4polu5v4
+.¹ikmo5o
+.¹iroko5
+.¹iroko5p4
+.¹táto5
+.¹t4vor5
+.su4b5s4
+.sú5h4
+.sú5k4r
+.sú5m4r
+.sú5s4
+.sú5v4
+.sú5z4
+.troj5
+.t4v4r4do5
+.viac5k4
+.viac5v4
+.vide2o5
+.vnútro5s4
+.vnútro5¹4
+.vo5p4ch
+.vo5p4r
+.vo5s4p
+.vo5t4
+.vo5v4
+.vy5
+.vý5
+.vy5b4
+.vy5c4
+.vý5c4
+.vy5è4
+.vý5è4
+.vy5d4
+.vý5d4
+.vy5h4
+.vy6h5ò
+.vy6h5ne
+.vý5h4
+.vy5c4h4
+.vy5k4
+.vý5k4
+.vy5m4
+.vy5p4
+.vý5p4
+.vy5s4
+.vý5s4
+.vy5¹4
+.vy6¹5¹
+.vý6¹5k
+.vy5t4
+.vý5t4
+.vy5v4
+.vy5z4
+.vý5z4
+.za5b4
+.zá5b4
+.za5c4
+.za5è4
+.za5d4
+.za5h4
+.za5c4h4
+.za5k4
+.za5m4
+.za5p4
+.za5r4
+.za5s4
+.za5¹4
+.za5t4
+.za5v4
+.za5z4
+.za5¾4
+.zá5k4
+.zá5z4
+.zo5b4
+.zo6d5p
+.zo5d4r
+.zo5d4v
+.zo5h4
+.zo5m4l
+.zo5m4r
+.zo5s4
+.zo5¹4
+.zo5t4
+.zo5v4
+.zo5z4
+.zo5¾4
+% slovné základy
+5alkohol
+auto4rk
+auto4rs
+5b4lah
+5b4ledn
+5b4lesk
+5b4lok
+5b4lúd
+5b4lysk
+5b4lysn
+5boh3vi4e3a2k
+5boh3vi4e3o2d3k
+5boh3z4
+5boles4t5n
+5b4ra»
+5b4rázd
+5b4rec2h
+5b4ronz
+5b4ruè
+5b4rús
+5b4rýzg
+5c4muk
+5c4nie
+5c4vak
+5c4viè
+5c4vik
+èí6s5lov
+5è4len
+5è4lánk
+5è4lánok
+5è4lov
+5d4òov
+5d4ramat
+5d4ra»
+5d4vanás4»5
+5d4vih
+5d4vi¾
+5d4voj
+5d4vor
+5e2u2róp
+5f4åak
+5f4lias
+5f4rancú
+5f4rekven
+5f4ráz
+5g4raf
+5g4ram
+pro6g5ram
+5g4réè
+5g4rob
+5g4vardej
+5h4lad
+5h4las
+5h4lav
+5h4åad
+5h4liad
+5h4luch
+5h4mat
+5h4mot
+5h4na»
+5h4ned
+5h4nev
+5h4niezd
+5h4noj
+5h4nut
+5h4nú»
+5h4nút
+5h4rab
+5h4r3mot
+5h4ran
+5h4ra»
+5h4rob
+5h4rom
+5h4roz
+5h4rub
+5h4ryz
+5h4viezd
+5c6h4lap
+5c6h4leb
+5c6hran
+5c6h4rán
+5c6h4ráò
+5c6h4vál
+5c6h4vát
+5c6h4vat
+5c6h4vost
+5jedenás4t5k
+5jedenás4»5
+5k4lad
+5k4laï
+5k4µak
+5k4lam
+5k4lás»
+5k4liat
+5k4lia»
+5k4lep
+5k4les
+5k4µúè
+5k4resb
+5k4res»
+5k4ritic
+5k4rídl
+5k4rôch
+5k4ruh
+5k4rú¾
+5k4ryt
+5k4valif
+5k4valit
+5k4vet
+5k4vadr
+5m4ladis4t3v
+5m4no¾
+5m4rav
+5m4ráz
+na5d4¾4ga
+na5d4¾4gá
+nav3¹4tev
+náv3¹4tev
+nav3¹4tív
+5p4lán
+5p4lastik
+5p4lat
+5p4lav
+5p4leta
+5p4letie
+5p4letú
+5p4lies»
+5p4ne2umat
+5p4ráv
+s6práv
+5p4riam
+5p4rirod
+5p2risám
+5p4roduk
+5s4fér
+5s4c2hopn
+5s4k4lad
+5s4k4lon
+5s4koè
+5s4kok
+5s4kop
+5s4kor
+5s4kôr
+5s4k4romne
+5s4k4rot
+5s4k4rúc
+5s4k4rutk
+5s4k4rýv
+5s4kúsen
+5s4kutoè
+5s4k4vúc
+5s4ladk
+5s4lav
+5s4láv
+5s4led
+5s4lep
+5s4lovn
+5s4love
+5s4lova
+5s4lovk
+5s4luh
+5s4lú¾
+5s4µub
+5s4ma¾
+5s4mel
+5s4mer
+5s4piev
+5s4pev
+5s4por
+5s4potreb
+5s4p4ravod
+5s4p4raved
+5s4p4rávn
+5s4p4ravo
+5s4tarost
+5s4tatic
+5s4tav
+5s4t4rach
+5s4t4ran
+5s4t4rán
+5s4t4ráda
+5s4t4ra¹
+5s4t2rat
+5s4t2red
+5s4t2rek
+5s4t4rel
+5s4t4reµ
+5s4t4riel
+5s4t4rieµ
+5s4t4rih
+5s4t4ri¾
+5s4t4rom
+5s4t4rúh
+5s4t4run
+5s4t4ru¾
+5s4tati
+5d2ve5s4to
+5t2ri5s4to
+5¹4tyri5s4to
+5pä»5s4to
+5¹es4»5s4to
+5sedem5s4to
+5osem5s4to
+5devä»5s4to
+5pä»5
+5¹es4»5
+5s4t4la
+5s4tup
+5s4ved
+5¹4µah
+5¹4liap
+5¹4kola
+5¹4k4rab
+5¹4k4rie
+5¹4pin
+5¹4p4liech
+5¹4print
+5¹4tart
+5¹4tát
+5¹4tep
+5¹4tít
+5¹4t4ruktúr
+5¹4tude
+5¹4tudo
+5¹4t4vera
+5¹4t4vorec
+5¹4tyli
+5¹4»ast
+5¹tiep4
+5¹4t4v4r4»5k4
+5¹4t4v4r4»5l4
+5¹4t4v4r4»5r4
+5¹4t4v4r4»5s4
+5t4laè
+5t4lak
+5t4ran4s5
+5t4ras
+5t4resk
+5t4retin
+5t4ried
+5t4rub
+5t4r4vaj
+5t4r4val
+5t4r4van
+5uholník
+5uhoµn
+5viac5h4
+5v4èera
+5v4lád
+5v4las
+5v4rás
+5v4rav
+5v4rat
+5v4rát
+5v4¹imn
+5v4ták
+5v4tip
+5vy5s4t4rája
+5v4z4du
+5v4z4»ah
+5v4z4»a¾
+5z4lom
+5z4luè
+5z4mysel
+5z4mysl
+5z4nak
+5z4nám
+5z4ná¹a
+5z4rak
+5z4väz
+5z4vest
+5zv4es»
+5z4vod
+5z4vuk
+5z4vuè
+5¾4ráè
+5¾4rane
+5¾4reb
+5¾4rút
+%zaèiatky slov
+.cv6
+.ch6
+.sp6
+.st6
+.¹k6
+.¹p6
+.¹t6
+.tk6
+.uh6
+.uc6h6
+.uk6
+.um6
+.up6
+.us6
+.ús6
+.usc6h6
+.úsc6h
+.usk6
+.úsl6
+.usm6
+.úsm6
+.ús7ta.
+.ús7tami.
+.ús7toè
+.ús7ti
+.ust6l
+.úst7ny
+.ust6r
+.ús7tret
+.us7t4ric
+.ús6t6r
+.ú¹6
+.ut6
+.uv6
+.uz6
+.vd6
+.vh6
+.vk6
+.vp6
+.vs6
+.v¹6
+.vt6
+.vz6
+.vzh6
+.vzk6
+.vzl6
+.vzp6
+.v¾6
+.zb6
+.zd6n
+.zd6r
+.zd6v
+.zg6
+.zh6
+.zm6
+.zr6
+.zv6
+%koncovky
+4b4s4».
+8c4h.
+8d4z.
+8d4¾.
+4c4ht4.
+4j4s4».
+4lt.
+4m4p4r.
+4m4p4s.
+4m4¹4t.
+4n4k4t.
+4p4r4v.
+4rd.
+r4p4t.
+r4¹4è.
+r4t4z.
+4st.
+4s».
+5k4rát.
+5s4to5k4rát.
+5t4å4c4».
+%cudzie slová
+akci3a2
+akvári3u2m
+gymnázi3um
+le2u3kémia
+t2ri3u2mf
+kli3e2nt
diff --git a/hyph/hyph/slovenia.lh b/hyph/hyph/slovenia.lh
new file mode 100644
index 0000000..9cbdca4
--- /dev/null
+++ b/hyph/hyph/slovenia.lh
@@ -0,0 +1,1141 @@
+Lout hyphenation information
+%
+% COPYRIGHT (C) 1995 Jeffrey H. Kingston
+% with contributions by Ljupco Taseski (see details below)
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either Version 3, or (at your option)
+% any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program; if not, write to the Free Software
+% Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA
+
+% This is a Slovenian hyphenation file created by Jeff Kingston
+% on 8 June 1995 from a TeX file supplied by Ljupco Taseski.
+% Apologies to the author (no author information could be found).
+%
+% Slovenian has three accented letters, each with upper and lower
+% case forms, which are found in the ISO-LATIN-2 character set
+% but not in ISO-LATIN-1:
+%
+% Character ISO-Latin-2 ISO-Latin-2
+% encoding encoding
+% (decimal) (octal)
+%
+% C caron 200 310
+% c caron 232 350
+% S caron 169 251
+% s caron 185 271
+% Z caron 174 256
+% z caron 190 276
+%
+%
+
+Classes:
+@!$%^&*()_-+=~`{[}]:;'|<,.>?/0123456789
+aA
+bB
+cC
+dD
+eE
+fF
+gG
+hH
+iI
+jJ
+kK
+lL
+mM
+nN
+oO
+pP
+qQ
+rR
+sS
+tT
+uU
+vV
+wW
+xX
+yY
+zZ
+èÈ
+¹©
+¾®
+
+Patterns:
+.av5r
+.di6spo
+.ek3s
+.ek5v
+.is1
+.iz1
+.obi4d
+.ob5it
+.od1
+.po4d5n
+.po4v5s
+.pre6d7n
+.se4k5s
+.si4s
+.st4
+.voz5l
+.voz5n
+.zliz6
+a1a
+a1b
+ab5ba
+ab6rod
+a1c
+ac5ci
+a1è
+a1d
+ad2l
+a6dobl
+ad6rl.
+ad6rla
+ad6rob
+ad5ur
+a1e1
+a1f
+af5ga
+af1t
+a1g
+a1h
+a4hm
+ah5mi
+ah5mo
+a1i
+ai2n1
+a1j
+a4j5ek
+a4jf
+aj5fi
+aj5fo
+aj5ha
+aj5he
+aj5im
+aj6imo
+aj3os
+aj6stb
+a5ju.
+aj3uè
+aj3ug
+aj5¾n
+a1k
+ak4s
+a4kst
+a1l
+a1m
+a4mz
+a1n
+an6dga
+an6dhi
+a4nm
+an5mi
+an5zi
+a1o
+ao2b1
+a1p
+a4ph
+a1ra
+ar6dwa
+a1re
+a1ri
+a1ro
+a1ru
+ar5xa
+ar5xo
+ar5xu
+a1s
+a4s¹
+as5¹è
+a1¹
+a1t
+a4tf
+at4i
+a1u1
+a4uf
+a2uk
+a4ul
+a1v
+av5¹i
+a4v¾
+av5¾a
+ay5to
+a1ze
+az5fo
+a4zig
+az3la
+az3le
+az4lil
+az4lit
+az4liv
+a4zob
+a4z3oè
+az5ora
+az5oro
+a4zra
+az4red
+az5vp
+a1¾
+a¾5mi
+ba6bba
+ban3è4
+ba4u
+2b1c
+2b1è
+2b1d
+be1
+be4v
+b1h
+bi1
+b1ja
+b4ja.
+b5jel
+b3jem
+b5jet
+2b1k
+b3lep
+b5leta
+b5lil
+b5lit
+b5liv
+b1m
+4bmi
+2b1n
+bo1
+bo6chm
+b5ord
+bo5vp
+b3rab
+b5ras
+b3ra¹
+b3rez
+bre4zg
+bre4zi
+bre4zr
+b5re¾e
+b3rob
+br6¾da
+2b1s
+2b1¹
+2b1t
+bu5ki
+bu5ku
+bu5kv
+bu5ry
+2b1v
+b1z
+b1¾
+2cc
+2ch.
+ch5ma
+2ck
+c1ka
+ck1o2
+c5ko.
+ckov3
+ck1s
+ck5we
+2c1n
+2c1t
+2è1b
+2è1g
+èi1
+1èj
+2è1k
+1èl
+4è3let
+è5mes
+2è1n
+4èop
+2è1p
+2è1s
+4èup
+2d1b
+2d1c
+2d1è
+2d1d
+dd6voj
+d2e
+6d5elem
+de4min
+de4mn
+de4z3i
+2d1g
+2d1h
+di5ck
+4dind
+d4i5no
+dis1
+di4skr
+di6spr
+2d1j
+2d1k
+5dlet
+d2li
+d5lit
+d5liv
+d1lo
+2d3m
+4d3nac
+4d5naè
+4d5nap
+4d3nar
+4dnas
+4d5neb
+d5niv
+4d5niz
+4d5njaè
+4d3no¾
+d2o
+4dobè
+4d5obd
+2d3o2f
+do5rd
+do5vè
+do5v4z
+2d1p
+d5raz
+d3rep
+dre6pn
+d4rev
+2d1s
+2d1¹
+2d1t
+dteks6
+d4ur
+du5ro
+du5um
+2d1v
+4d3vi
+2d1z2
+e1a
+e1b
+eb4j
+eb6liz
+e1c
+e1è
+e4èd
+eè5de
+eè5di
+eè5do
+eè3le
+eè5op
+e4èt
+eè5ti
+eè5to
+eè5tr
+eè5up
+e2è1v
+eè6vrs
+e1d
+e4df
+ed5ig
+ed2l
+ed5ob
+ed6obe
+ed6obr
+e4dobs
+e4d3oè
+ed5vè
+ed5zb
+e1e
+e4ep
+e1f
+e4ff
+ef5fe
+ef5ta
+e1g
+e1h
+e1i
+ei6pzi
+ei2z
+eiz5e
+e1j
+e1k
+ek6mal
+ek6tre
+e1l
+e1m
+e1n
+e1o1
+eob4j
+eob4r
+eo4dl
+eo4z5n
+e1p
+ep5nik
+e1ra
+era6z5l
+era5z4r
+era5z4v
+e1re
+e4rf
+e1ri
+e1ro
+e4rr
+e1ru
+e1s
+es5da
+e5sta
+e5sti.
+e5stih
+e5stil
+e1¹
+e4¹p
+e¹5po
+e1t
+4eth
+e4tin¹
+e1u1
+e1v
+eve6t5l
+ev5ha
+ev6pre
+ev6ste
+ev5stv
+2ew
+ew6ind
+ew5le
+e4wt
+ew5to
+e4yw
+e1z
+ez5dj
+e3z4dr
+ez2g
+ez5gl
+e5zij
+ez6ijo
+ez5imn
+e5zis
+ez6ist
+ez5iz
+ez4l
+ez6lom
+ez6man
+ez4mo
+e4zob
+e4z5or
+ez4re
+e4zt
+e4z5u4m5
+e4z¾
+e1¾
+1fa
+fe1
+fe6ljt
+ff5ma
+fi6zlj
+2f1n
+fo6uri
+fre4u
+2f1s
+2ft
+ft5ve
+fu1
+2g1d
+ge6ige
+gel5è4
+ge6njè
+gi6tpr
+go1
+go5vz
+2g1t
+gu1
+ha4u
+2h1è
+he4i
+2h1k
+4hl.
+h4lo
+2h1n
+h5ren
+2h1¹
+2h1t
+1hu
+hu6ffm
+i1a
+i1b
+i1c
+i4cs
+i1èa
+i1èe
+i1èi
+iè5ra
+i1èu
+iè5vr
+i1d
+4idor
+i1e1
+i1f
+i1g
+4igh
+i1h
+i1i
+ii2n1
+i1j
+i1k
+i4kè
+ik5èa
+i1l
+il5è4k
+4ile
+4ilo
+i1m
+i4mh
+im5hi
+i1n
+1ind
+2ine
+3i4n3os
+1inp
+3inse
+1in¹
+4in¹k
+3intr
+i1o1
+i1p
+i1r
+4ire
+i1s
+is4a
+is6ert
+isis4
+i4skv
+2iss
+i1¹
+i1t
+it5pr
+i1u
+i1v
+iv5jo
+i1x
+i1z
+iz1l
+iz4la
+izli4z
+iz5me
+iz5mo
+iz6ode
+iz5po
+i2zr
+iz1u
+iz6ure
+i1¾
+j5akt
+2j1b
+2j1c
+2j1è
+2j1d
+je4ks4
+2j1g
+2jh
+j1hi
+4jime
+4j5int
+2j1k
+2j1l
+2j1m
+2j1n
+4job
+2j1od
+jod4l
+2jos
+4jo¾
+2j1p
+2j1r
+jra1
+jraz4
+2j1s
+jsis6t
+2j1¹
+2j1t
+ju1
+2juè
+ju5dm
+2jus
+ju2¾1
+2j1v
+2j1z
+jz6ves
+2k1c
+2k1d
+ke5ti
+ki1
+2k1m
+1kn
+ko1
+kok4
+ko5kd
+ko6v¹e
+koz6lo
+1kre
+2ks.
+k5sat
+ks1c
+ks1p
+ks4po
+ks1t
+4kst.
+ks6taz
+ks5te
+2k1t
+3ktr
+4ktra
+ku5ro
+k5vip
+la4ir
+la6vz.
+2l1b
+2l1c
+2l1è
+2l1d
+le1
+le4e
+le6ipz
+le5me
+2l1f
+2l1g
+lg5èa
+2l1h
+l2i1
+li6d¾.
+1liz
+4l5izd
+2lj.
+4ljc
+2ljè
+2ljk
+2ljn
+2ljs
+2lj¹
+lju5d6j
+2l1k
+2l1l
+2l1m
+2l1n
+lo1
+1loè
+2l1p
+2l1s
+2l1¹
+2l1t
+lu5ki
+lu5ku
+2l1v
+2l1z
+2l1¾
+2m1b
+2m1c
+2m1è
+2m1d
+me4d5n
+me6dos
+me4dr
+2m1f
+4mind
+4minp
+4min¹
+mi6th.
+2m1k
+2m1m
+m5niv
+mo6¹t.
+mo6v¹.
+2m1p
+2m1s
+2m1¹
+2m1t
+m5urn
+2m1v
+my5hi
+2m1¾
+na1
+5naèel
+na4d5nj
+nad5r
+na6dra
+na4dre
+na6dur
+1naj
+na6jak
+na4j5en
+naj3o
+na6joè
+na4j3u
+1nas
+na4v3z
+navze6
+1naz
+naz6or
+2n1b
+2n1c
+2nè
+n1èa
+n1èe
+n1èi
+n1èu
+2n3d2
+nd5ga
+nd5hi
+n4dm
+ne1
+ne3d2
+1neh
+ne3zm
+nez4v
+2n1f
+2n1g
+n4gh
+ng5ha
+n4gv
+ng5vi
+2n1h
+2nj.
+2njc
+nje4v5s
+2njk
+2njs
+2nj¹
+4njv
+2n1k
+2n1l
+2n1n
+no5rd
+n4ost
+2n1p
+2n1s
+nsis4
+2n1¹
+2n1t
+nteks4
+n4tg
+nt5ga
+nt5ge
+n4tv
+nt5vi
+nu1
+2n1v
+ny5qu
+2n1z
+nz4i
+2n1¾
+o1a
+o4as
+o1b
+ob5gl
+ob5ide
+ob5jo
+5obla
+5obro
+o4bz
+o1c
+oc5ke
+oc5ki
+o4cr
+o1è
+o1d
+od5dv
+od5nal
+o6drep
+od5zd
+o2d1¾
+o1e
+oele4
+o1f
+o1g
+4ogl
+o1h
+o1i
+oiz2
+o1j
+o1k
+o4kb
+ok5ba
+ok5be
+o4kt
+o1l
+o6l5avt
+ol6gèa
+o4lr
+ol5re
+o1m
+o1n
+o1o
+ood4l
+o2ol
+o4om
+o1p
+o4pm
+op5me
+4opy
+o1ra
+or4deè
+o1re
+o1ri
+o1ro
+o1ru
+o1s
+5oseb
+ose4m5
+o1¹
+o1t
+o1u
+ou5ki
+ou5ku
+o1v
+ov5sem
+ov5¹k
+o2v1z
+o5vza
+ov3zd
+o1y
+o1z
+oz4b
+ozd5j
+oz4g
+oz5lo
+oz6lo¾
+oz2n
+oz5nic
+oz5ni¹
+oz2o
+oz2r
+oz2v
+o1¾
+o¾5mi
+2p1c
+2p3è2
+pè5ka
+pe1
+1peè
+pe4kt
+pet3l
+pe4tle
+pe4v5s
+pev5t4
+4phs
+ph5so
+pi5zo
+2p1k
+4ploz
+po1
+po6dfa
+po4d3l
+po4dna
+po4d5oè
+po6lob
+po6std
+prez4
+2p1s
+2p1¹
+2p1t
+pz6ig.
+qu2
+3raèu
+2rae
+ra6j¾n
+rav5z
+ra6vza
+ra4z5id
+3razl
+ra4z5or
+2r1b
+2r1c
+2r1è
+2r1d
+re1
+3real
+re6cht
+re5èv
+5redè
+re6dig
+re6dnju
+re6iba
+re5jo
+re5km
+re6sda
+rev6sk
+re6znaè
+re6zus
+re6zve
+r1f
+2r1g
+2r1h
+ri1
+r4in
+ri5n4o
+riz4g
+riz4l
+riz4n
+2r1j
+2r1k
+2r1l
+2r1m
+2r1n
+ro1
+rob6id
+3rodi
+ro5zo
+2r1p
+r1r
+2r1s
+2r1¹
+2r1t
+r4th
+rt5ha
+ru5kl
+2r1v
+r3v2j
+rv5jo
+ry5an
+2r1z
+rz2l
+r1¾
+r¾5da
+2s1b
+1sc
+4sc.
+s2ci
+se4k5sa
+sek5si
+se5ma
+se5vp
+2s1f
+si1
+s4id
+si6gn.
+sis1
+2s1j
+2sk.
+s2kn
+4skre
+s4lav
+s4on
+soni5
+soniè4
+1sp
+s4plod
+spod4l
+2s1s
+2st.
+3ste
+s4ten
+4stf
+s4tiè
+5stim
+s4tir
+2stk
+2stm
+1str
+s4tra.
+su1
+su4bo
+sve5t
+¹2è
+2¹è.
+2¹èk
+2¹èn
+¹e2s
+2¹1j
+ta5wi
+taz4
+2t1b
+2t1c
+tch5o
+2t1d
+tek6st
+5tema
+te5xa
+t1f
+4tind
+4tinos
+4tinp
+4tinse
+4t3int
+2t1k
+6tletno
+2t1m
+4tnaj
+to6v¾.
+trt5u
+tr6tur
+2t1s
+2t1t
+tu1
+4tz.
+2u1a
+u1b
+ub4j
+u4bp
+ub5po
+u1c
+u1è
+u1d
+ud6mi.
+u1e
+u1f
+u1g
+u1h
+u1i
+u1j
+u1ka
+u1ke
+u1ko
+u1l
+u1m
+u1n
+u1p
+up6èka
+u1ra
+u1re
+4urg
+u1ri
+u1s
+1usp
+u1¹
+u¹e3s
+u1t
+u4th
+uth5o
+u1v
+ux5em
+u1z
+u1¾
+2v1b
+2v1c
+2vè
+v1èa
+v1èe
+v4èer
+v1èi
+2v1d
+ve4èl
+ve4èm
+ve4i
+ve4tin
+vetle6t
+v1f
+v1g
+vi5dv
+vid6va
+1viv
+vi6¾g.
+2v1j
+4vjo
+2v1k
+2v1m
+2v1n
+vo5rd
+voz5le
+2v1p
+3v2pa
+v4pij
+v4pil
+v5skn
+v5¹ek
+4v¹k
+2v1t
+vt4k
+vz2
+v2za
+3v2zg
+2v3zk
+2vzo
+v3zp
+v2zu
+1wa
+wo2
+x1f
+1ye
+2y1f
+y1j
+y1l
+y1w
+1z2a
+z6ane.
+za5uk
+za3vp
+za1z2
+za5zd
+2z1b
+3zbir
+z1c
+2z1è
+2z1d2
+zd5ju
+z3dv
+z1g
+z4gni
+z5got
+2z1h
+1zi
+z1ig
+2z1is
+4z5i¹è
+2z1j
+2z1k
+z3ku
+z5las
+z1li
+3zlil
+5zlit
+5zliv
+zliz5
+1zlj
+3zlog
+z5lom
+3zlo¾
+z1lu
+2z1m
+1zn
+1zo
+z1ob
+2z1od
+z1og
+z2ol
+z4om
+2z1p
+1z1r
+4zredè
+4zre¹
+4zrez
+4zre¾
+4zri
+4zru
+2z1s
+z1¹
+z1t
+1zu
+z4uj
+2z1up
+2z1uz
+z1v2
+z4ven
+z3vn
+3z4voj
+z4vok
+2z1z2
+z1¾
+2¾1b
+2¾1c
+2¾1è
+2¾1j
+2¾1k
+4¾mi
+.è8
+.¹8
+.¾8
+8¾.
+8¹.
+8è.
diff --git a/hyph/hyph/spanish.lh b/hyph/hyph/spanish.lh
new file mode 100644
index 0000000..bf3a546
--- /dev/null
+++ b/hyph/hyph/spanish.lh
@@ -0,0 +1,185 @@
+Lout hyphenation information
+%
+% Spanish hyphenation file, created by Jeffrey H. Kingston
+% 23 September 1994 from a TeX file supplied by Luis Melendez.
+% See long comment below for full information about the origin
+% of this file, and a copyright notice.
+%
+% JeffK has made the following modifications to convert to ISO-LATIN-1:
+%
+% TeX file Lout file
+% 'a \341
+% 'e \351
+% 'i \355
+% 'o \363
+% 'u \372
+% "u \374
+% ~n \361
+%
+
+Classes:
+@!$%^&*()_-+=~`{[}]:;'|<,.>?/0123456789
+aA
+bB
+cC
+dD
+eE
+fF
+gG
+hH
+iI
+jJ
+kK
+lL
+mM
+nN
+oO
+pP
+qQ
+rR
+sS
+tT
+uU
+vV
+wW
+xX
+yY
+zZ
+áÁ
+éÉ
+íÍ
+óÓ
+úÚ
+üÜ
+ñÑ
+
+Patterns:
+% Hyphenation patterns for Spanish.
+% Compiled by Julio Sanchez (jsanchez@gmv.es) on September 1991.
+%
+% These patterns have been derived from "On Word Division in Spanish",
+% Jos'e A. Ma~nas, Communications of the ACM, and implemented in his
+% package ftc. You can get ftc and a draft of the abovementioned
+% paper from goya.dit.upm.es in src/text.proc/ftc.Z. FTP access may
+% be available. Otherwise, send help to info@goya.dit.upm.es for
+% details on use of the mail server.
+%
+% Rules mentioned below are those described in that paper. After
+% several unsatisfactory attempts to pretend I knew better, these
+% patterns closely follow that paper. Pattern 'tl' is not considered.
+% It is conflictive and ftc does not use it either.
+%
+% These patterns have been generated by shyphen.sh version 1.2,
+% shyphen.sh is a sh script that allows a number of choices.
+% Full benefit from some of these options can only be
+% obtained if appropriate fonts are available.
+%
+% Follows a copyright notice. This is not in the public domain,
+% but the copyright is essentially a hold-harmless clause. That
+% is, use it at will, but don't sue me if you don't like it.
+%
+% COPYRIGHT NOTICE
+%
+% These patterns and the generating sh script are Copyright (c) GMV 1991
+% These patterns were developed for internal GMV use and are made
+% public in the hope that they will benefit others. Also, spreading
+% these patterns throughout the Spanish-language TeX community is
+% expected to provide back-benefits to GMV in that it can help keeping
+% GMV in the mainstream of spanish users. However, this is given
+% for free and WITHOUT ANY WARRANTY. Under no circumstances can Julio
+% Sanchez, GMV, Jos'e A. Ma~nas or any agents or representatives thereof
+% be held responsible for any errors in this software nor for any damages
+% derived from its use, even in case any of the above has been notified
+% of the possibility of such damages. If any such situation arises, you
+% responsible for repair. Use of this software is an explicit
+% acceptance of these conditions.
+%
+% You can use this software for any purpose. You cannot delete this
+% copyright notice. If you change this software, you must include
+% comments explaining who, when and why. You are kindly requested to
+% send any changes to tex@gmv.es. If you change the generating
+% script, you must include code in it such that any output is clearly
+% labeled as generated by a modified script.
+%
+% Despite the lack of warranty, we would like to hear about any
+% problem you find. Please report problems to tex@gmv.es.
+%
+% END OF COPYRIGHT NOTICE
+%
+% Options included in this set: basic TeX
+% Open vowels: a e o 'a 'e 'i 'o 'u
+% Closed vowels: i u "u
+% Consonants: b c d f g j k l m n p q r s t v w x y z ~n
+%
+% Some of the patterns below represent combinations that never
+% happen in Spanish. Would they happen, they would be hyphenated
+% according to the rules.
+
+% This keeps {cat|lc}code changes, if any, local. Nice to users of
+% multilingual versions. These are the minimum changes needed to process
+% the patterns. These and other changes will have to be re-enacted when
+% Spanish be established as the current language. See the babel docs if
+% you don't understand this.
+% deleted by JeffK: \begingroup
+% deleted by JeffK: \catcode`'=12 \lccode`'=`'
+% deleted by JeffK: \catcode`"=12 \lccode`"=`"
+% deleted by JeffK: \catcode`~=12 \lccode`~=`~
+% deleted by JeffK: \patterns{
+% Rule SR1
+% Vowels are kept together by the defaults
+% Rule SR2
+% Attach vowel groups to left consonant
+1ba 1be 1bo 1bá 1bé 1bí 1bó 1bú 1bi 1bu 1bü
+1ca 1ce 1co 1cá 1cé 1cí 1có 1cú 1ci 1cu 1cü
+1da 1de 1do 1dá 1dé 1dí 1dó 1dú 1di 1du 1dü
+1fa 1fe 1fo 1fá 1fé 1fí 1fó 1fú 1fi 1fu 1fü
+1ga 1ge 1go 1gá 1gé 1gí 1gó 1gú 1gi 1gu 1gü
+1ja 1je 1jo 1já 1jé 1jí 1jó 1jú 1ji 1ju 1jü
+1ka 1ke 1ko 1ká 1ké 1kí 1kó 1kú 1ki 1ku 1kü
+1la 1le 1lo 1lá 1lé 1lí 1ló 1lú 1li 1lu 1lü
+1ma 1me 1mo 1má 1mé 1mí 1mó 1mú 1mi 1mu 1mü
+1na 1ne 1no 1ná 1né 1ní 1nó 1nú 1ni 1nu 1nü
+1pa 1pe 1po 1pá 1pé 1pí 1pó 1pú 1pi 1pu 1pü
+1qa 1qe 1qo 1qá 1qé 1qí 1qó 1qú 1qi 1qu 1qü
+1ra 1re 1ro 1rá 1ré 1rí 1ró 1rú 1ri 1ru 1rü
+1sa 1se 1so 1sá 1sé 1sí 1só 1sú 1si 1su 1sü
+1ta 1te 1to 1tá 1té 1tí 1tó 1tú 1ti 1tu 1tü
+1va 1ve 1vo 1vá 1vé 1ví 1vó 1vú 1vi 1vu 1vü
+1wa 1we 1wo 1wá 1wé 1wí 1wó 1wú 1wi 1wu 1wü
+1xa 1xe 1xo 1xá 1xé 1xí 1xó 1xú 1xi 1xu 1xü
+1ya 1ye 1yo 1yá 1yé 1yí 1yó 1yú 1yi 1yu 1yü
+1za 1ze 1zo 1zá 1zé 1zí 1zó 1zú 1zi 1zu 1zü
+1ña 1ñe 1ño 1ñá 1ñé 1ñí 1ñó 1ñú 1ñi 1ñu 1ñü
+% Rule SR3
+% Build legal consonant groups, leave other consonants bound to
+% the previous group. This overrides part of the SR2 pattern
+% group.
+1c2ha 1c2he 1c2ho 1c2há 1c2hé 1c2hí 1c2hó 1c2hú 1c2hi 1c2hu 1c2hü
+1l2la 1l2le 1l2lo 1l2lá 1l2lé 1l2lí 1l2ló 1l2lú 1l2li 1l2lu 1l2lü
+1r2ra 1r2re 1r2ro 1r2rá 1r2ré 1r2rí 1r2ró 1r2rú 1r2ri 1r2ru 1r2rü
+1b2la 1b2le 1b2lo 1b2lá 1b2lé 1b2lí 1b2ló 1b2lú 1b2li 1b2lu 1b2lü
+1b2ra 1b2re 1b2ro 1b2rá 1b2ré 1b2rí 1b2ró 1b2rú 1b2ri 1b2ru 1b2rü
+1c2la 1c2le 1c2lo 1c2lá 1c2lé 1c2lí 1c2ló 1c2lú 1c2li 1c2lu 1c2lü
+1c2ra 1c2re 1c2ro 1c2rá 1c2ré 1c2rí 1c2ró 1c2rú 1c2ri 1c2ru 1c2rü
+1d2ra 1d2re 1d2ro 1d2rá 1d2ré 1d2rí 1d2ró 1d2rú 1d2ri 1d2ru 1d2rü
+1f2la 1f2le 1f2lo 1f2lá 1f2lé 1f2lí 1f2ló 1f2lú 1f2li 1f2lu 1f2lü
+1f2ra 1f2re 1f2ro 1f2rá 1f2ré 1f2rí 1f2ró 1f2rú 1f2ri 1f2ru 1f2rü
+1g2la 1g2le 1g2lo 1g2lá 1g2lé 1g2lí 1g2ló 1g2lú 1g2li 1g2lu 1g2lü
+1g2ra 1g2re 1g2ro 1g2rá 1g2ré 1g2rí 1g2ró 1g2rú 1g2ri 1g2ru 1g2rü
+1k2la 1k2le 1k2lo 1k2lá 1k2lé 1k2lí 1k2ló 1k2lú 1k2li 1k2lu 1k2lü
+1k2ra 1k2re 1k2ro 1k2rá 1k2ré 1k2rí 1k2ró 1k2rú 1k2ri 1k2ru 1k2rü
+1p2la 1p2le 1p2lo 1p2lá 1p2lé 1p2lí 1p2ló 1p2lú 1p2li 1p2lu 1p2lü
+1p2ra 1p2re 1p2ro 1p2rá 1p2ré 1p2rí 1p2ró 1p2rú 1p2ri 1p2ru 1p2rü
+1t2ra 1t2re 1t2ro 1t2rá 1t2ré 1t2rí 1t2ró 1t2rú 1t2ri 1t2ru 1t2rü
+% Rule SR4 is implicitly implemented by the default values
+% Rule HE1 is implemented by TeX parameters \lefthyphenmin and
+% \righthyphenmin. Help yourself. The correct values for
+% Spanish are 2 and 2. If you set them below these values,
+% incorrect breaks will happen.
+% Rule HE2
+% Break between a consonant and an h
+b1h d1h f1h g1h j1h k1h l1h m1h n1h p1h q1h r1h s1h t1h v1h w1h x1h y1h z1h ñ1h
+% We now avoid some problematic breaks.
+su2b2r su2b2l
+% deleted by JeffK: }
+% deleted by JeffK: \endgroup
diff --git a/hyph/hyph/swedish.lh b/hyph/hyph/swedish.lh
new file mode 100644
index 0000000..7d67a43
--- /dev/null
+++ b/hyph/hyph/swedish.lh
@@ -0,0 +1,3788 @@
+Lout hyphenation information
+%
+% COPYRIGHT (C) 1994 Jeffrey H. Kingston
+% with contributions by Sverre Slotte (see details below)
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either Version 3, or (at your option)
+% any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program; if not, write to the Free Software
+% Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA
+
+% This is a Swedish hyphenation file created by Jeff Kingston
+% on 20 March 1994 from a TeX file supplied by Sverre Slotte.
+%
+Classes:
+@!$%^&*()_-+=~`{[}]:;'|<,.>?/0123456789
+aA
+bB
+cC
+dD
+eE
+fF
+gG
+hH
+iI
+jJ
+kK
+lL
+mM
+nN
+oO
+pP
+qQ
+rR
+sS
+tT
+uU
+vV
+wW
+xX
+yY
+zZ
+äÄ
+åÅ
+öÖ
+
+Patterns:
+.a2b
+.ab5i
+.ab5ol
+.ab3r
+.ac1
+.a2d
+.a3dr
+.ad3s
+.a5g4ra
+.a5gre
+.a5kl
+.a5le
+.a3lu
+.amp3l
+.a5mu
+.and4rar
+.a2n5es
+.ang4er
+.an5go
+.an3s
+.ap1p
+.as2k
+.a3sket
+.as2t
+.a5sten
+.a3sti
+.a5ta
+.at3t
+.au3st
+.a4val
+.av3s2
+.b4
+.bort3s
+.cis4
+.cis2t
+.cy5klop
+.d4
+.dä2r5
+.ek1v
+.e3l4a
+.e2l3in
+.em5b
+.e4nä
+.e2r3i
+.e2s
+.e5skad
+.es3kal
+.es5kap
+.e5strad
+.e3tr
+.evan5
+.f4
+.feb3r
+.folk1
+.fram5
+.fres3
+.för1a
+.för1en
+.fågel3
+.g2
+.gus3
+.he2m
+.hu5sa
+.ib4
+.i3k4
+.im3p
+.i2n1
+.in3d
+.ink2
+.in3s
+.in3t
+.is5k
+.is3s
+.k4
+.kans4k
+.ke5s
+.ko5li
+.kring3
+.l4
+.lek5tr
+.linne3
+.m2
+.mas2ke
+.ma5skeri
+.me2din
+.me4re
+.mid3
+.mon2s
+.män5sko
+.må4st
+.n2
+.ner3s
+.ok3t
+.o3kv
+.o2m
+.om1s
+.o3mu
+.on4k
+.o3o
+.o1s2k
+.o3sl
+.o3stra
+.o3sv
+.o3tr
+.o1u
+.o4ä
+.p4
+.pa3ste
+.pa5sti
+.peri5
+.pi5sti
+.pub3lika
+.på3t
+.r2
+.re4gr
+.re2s5te
+.re3str
+.ri4sp
+.röve5
+.s4
+.sa2k
+.sand3s
+.seg3r
+.si5o
+.sk2
+.snab2
+.spas5
+.st4
+.straf2
+.string4
+.sup3p
+.t4
+.tes3ta
+.tig3r
+.ti2ot
+.u3k
+.up2
+.u4ra
+.ur3s
+.u2ta
+.u2to
+.ut3om
+.u5trer
+.ut5s
+.v2
+.vatten3
+.vä2g
+.väg3s
+.x2
+.y2a
+.y4e
+.ägg3s
+.ä3ro
+.ög5n
+.ö3ro
+.ång4este
+.år4s
+.å2sk
+.åter3
+abe4s3
+ab1l
+ab3la
+ab3ort
+ab5ric
+ab3rio
+a5bu
+ac4kes
+ack3u4p
+a1d
+a5dag
+a5dek
+a5del
+ad5ep
+ad1j
+ad3op
+a5dran
+a3dre
+1adres
+ad3ril
+a5dro
+ad3ru
+ads3v
+a5ed
+3affä
+1af3ri
+a5fä
+a1ga
+aga4ra
+a1ge
+a2ge.
+age4l
+agg3s
+ag1l
+ag3ro
+ag4sp
+a1h
+a4hj
+aib4
+a3iv
+a1j
+a3ka
+a4kart
+a3ke
+a1ki
+ak3n
+a1ko
+ak5ram
+akri5s2
+ak3rob
+ak4sta
+3aktig
+ak3tri
+a1ku
+a5kvari
+ak5ve
+4akö
+a5kår
+ak5åt
+a1la
+al5adm
+ali2br
+a2lin
+a5lin.
+a3line
+al3ins
+ali5stik
+alivs4
+a4lj
+alk3ak
+a1lo
+al5ort
+al3tr
+a1lu
+alu5s
+alv3s
+a1ly
+a3lä
+a3lö
+am4bra
+am4i
+ams2
+a3mö
+ana4bo
+an3alf
+an3ark
+an3c
+anci5
+an5dak
+andel2
+an4dun
+an3gi
+ang4o
+an1gr
+aniu4
+ank3r
+ano2i
+a4nok
+a4nop
+an5sche
+ansis3t
+an3skri
+an5slag
+ans5par
+an1st
+1ansva
+a1nu
+a5ny
+a3nö
+a1o
+a2pe.
+ape4n3
+ap5lad
+ap3lar
+apo3str
+1appara
+apps4k
+ap3ric
+a5pris
+ap2s
+ap3se
+aps5l
+apu5s
+a5py
+a5pä
+2ara
+a5rag
+a4rarv
+1arb
+4arbi
+2arbo
+4arbr
+ar3dr
+2arh
+a1ri
+ar3ka
+4arl
+4arn.
+ar4nal
+a1ro
+a2rob
+4arp
+ar2sa
+ar2sv
+ar3ti
+ar2tra
+art3v
+4aru
+a5rus
+a3ry
+a3rä
+a5rö
+2asa
+asbe4
+a1sc
+as2h
+a5sj
+as3kis
+ask4l
+as3ku
+as3pa
+as3pig
+as5sak
+as4sin
+as2sk
+as2s5op
+as2sp
+as2st
+as3ta
+a5stard
+as2tej
+as5ter
+asti5o
+as1to
+as4tr
+ast5rak
+a5stral
+ast3rol
+ast3ron
+a5stu
+as5tör
+a3su
+a1sy
+a2sö
+as5å
+a1t
+ata5ra
+ati5ö
+a2tr
+a3tral
+4atrar
+a4t5re
+at3ria
+a3tric
+at3rie
+a5trik
+a3tris
+a3tro
+at4sk
+1attac
+at4tj
+att3sk
+a4tung
+2au
+au5b
+au2t5a
+3autom
+4a1va
+aves4
+1avg
+2a1vi
+av3r
+4a3vä
+a5å
+1b2a
+bad3s4
+ba4ko
+5bar
+bas4ta
+4b1b
+b4bak
+b4bj
+bb3l
+bb5la
+4bc
+2b1d
+3be
+be1d
+be3d4r
+be5e
+be1k
+be5lu
+be3lå
+be3nå
+be1rö
+be1s
+be3sl
+be4sta
+be4ste
+be5su
+be1tr
+bets3t
+be3tv
+be3u
+4bex
+2bf
+4bh
+1b4i
+bi3d4r
+5big
+bi5skv
+2b3k
+2b2l
+b5lar
+ble4mo
+3blera
+3bles
+3blett
+5blid
+3blikr
+3bliks
+3blö
+3blå
+2bm
+2b1n
+1b2o
+bo4kan
+bo4ki
+bo2kl
+bo1mu
+3bon
+bor4ti
+bo5st
+boy5
+2bp
+b2r
+2b5raf
+4brar
+2b5rati
+5brid
+5brik.
+b3rika
+3brike
+3briks
+b5rikö
+bruks3
+bru4st
+3bry
+3brö
+4b1s2
+bs3ch
+b4sp
+bst4
+2b1t
+1b2u
+4b1v
+1by
+by5r
+3bä
+3bö
+3bå
+5cap
+c1c
+1c2e
+3centr
+ceu4s
+2ch
+4ch.
+3chau
+3chef
+4cht
+chäs3
+chör4
+1ci
+ci4lu
+ci3pl
+cipp4
+c5kap
+c3ke
+c1ki
+c2k5j
+ck1l
+ck3n
+c1ko
+c4kordn
+ck3org
+ck3r
+ck4re
+ck3sla
+cks5m
+ck5sn
+ckus2
+c2l
+cle2a
+co2a
+co4m
+4c2r
+4cs
+1cy
+1da
+3da.
+4dadr
+2daf3
+5dako
+da3li
+5dam
+da3må
+2dansv
+2d1ap
+2darb
+4dart
+4dax
+2d3b
+2dc
+dcen3
+2d1d
+ddags5
+dd3r
+1d2e
+de1k4
+4deko
+del2sa
+de5lut
+denti5ö
+de3pr
+der3k
+de2ro
+de5rol
+der5sti
+de4ru
+de2s
+de3se
+de3sp
+dess4l
+des3ti
+de3tr
+2d3f
+2d1g
+2d1h
+1di
+dias4
+di5el
+di2gr
+di3ka
+di5ku
+din3g4o
+2dinr
+4dint
+di1o
+di4od
+di3p
+dis3p
+dis5to
+dis3tra
+dis5trä
+2dj
+d5jor
+djup5p
+3djur
+2d3k4
+2d1l
+dlings5
+2d1m
+2d1n
+1do
+d2ol
+do5lo
+2domr
+dom2so
+5don
+4dori
+do3y
+2d1p
+2d2r2
+d3rad
+3drag
+d5rarb
+d5rassera
+d5ratu
+3drej
+4d5ren
+d4ric
+d3rig
+d1rin
+d4riv
+d5ror
+drotts3
+5d4ry
+3d4rä
+4dräc
+3d4röm
+2ds
+d2sa
+d3sag
+ds1an
+d2se
+ds5enh
+d2si
+dsk2
+d3skef
+ds3kl
+ds5kn
+d2sky
+ds1l
+ds4lot
+d4sma
+ds3n
+ds4ni
+ds5nå
+d2so
+ds5ort
+ds3pl
+ds3s4
+ds3tag
+ds2te
+d5s2tig
+d4sty
+d2stå
+d2su
+ds1v
+ds5vag
+d2sö
+2d1t
+1du
+dubb4
+2dunde
+4dup
+2dut
+2d1v
+2d3w
+1dy
+4dz
+1dö
+döds3
+4dög
+2dås
+d5åsk
+e1a
+e2ake
+e4am
+e1b
+e3bl
+e2br
+eb3ril
+4ec
+e3ch
+echiff5
+ecis4
+e3co
+edi4u
+ed3jo
+e5dral
+eds2l
+ed3s2m
+edso4
+e1e
+e2ed
+e4ei
+ee2k5
+e4en.
+e4ene
+e1f
+e3fl
+ef2s
+e1g
+e3ga
+e3ge
+eg1l
+eg2ler
+e5glera
+e5gleri
+eg5rat
+eg3rin
+e5gru
+egs3
+e1h
+eig2
+ei5gn
+e3ik
+e1in
+ei5sh
+e1isk
+e1jo
+e3ju
+e3jä
+e5jö
+e3ka
+e1ki
+e1kl
+ek3lat
+ek4le
+ek3n
+e1ko
+ek3orr
+ek4ret.
+ek5ro
+ek4st
+e1ku
+ek5vis
+e1ky
+e1kä
+e1la
+el1akt
+el4arb
+eleb3r
+elekt3ri
+eli5ku
+el3k4
+ell5s
+e1lo
+e4lob
+el5ug
+e5luv
+e1ly
+2e1lä
+e1lö
+e1m
+e5mat
+e5mis
+emon1s
+emp5le
+e2nav
+2enj
+en5klo
+en3si
+ens5ke
+ens2m
+en5sta
+en2t1r
+ent4rat.
+ent3rati
+ent3ri
+ent3ru
+en4tut
+2eny
+2e1nä
+e3nö
+e4növ
+e1o
+e2og
+eo4i
+e5or
+2ep
+e3pla
+ep5le
+epp2s3
+e1pr
+ep3s
+ep4tr
+epu3b
+e3på
+e2raff
+er1ak
+er3d4
+er3erö
+e1ri
+e5rib
+e4rinf
+erings5
+eri5stik
+erk4la
+er3kv
+er5na
+e1ro
+e3rob
+e2rom
+erp4
+er3ra
+er5sc
+ers4ken
+ers4le
+er3sli
+er4sta
+er3str
+er3sv
+e1ru
+e4rut
+e3ry
+e1rä
+e3rös
+er5öve
+e5råd
+e2sal
+es5all
+es3arm
+e1sc
+2ese
+es4hi
+esi4u
+es2k
+e4skan
+e4s5kar
+e4s3ken
+es3ker
+es5kul
+e1sl
+es3lös
+e1sp
+es3pl
+es4sc
+es2st
+es2t
+e3stal
+es3ten
+esti2ge
+es3tin
+es5tor.
+es5torn
+es4tr
+est5rer
+e3stru
+e3stå
+estånds5
+e3sy
+eta3b
+eti5op
+eti3ö
+e1to
+e5tri.
+et3ris
+e5trä
+ets1l
+et2st
+et4sv
+et2sä
+et2s5ö
+e1tu
+etu4ri
+et5vu
+e1ty
+2etz
+e5tä
+etäc4
+e5tö
+e3tå
+euk4
+e5um.
+eu4mi
+e5up4
+eu4se.
+eu5tro
+e1v
+ex1
+1exp
+ext4r
+1f2a
+fac2
+fa3sh
+fa4st
+2fb
+2fd
+1fe
+fe2l
+fes3ta
+fe3sto
+2fex
+2f1f
+ff3l
+ff3n
+f2f3r
+ffö5re
+2f3g2
+1fi
+fi2br
+fib5rig
+fi3skal
+fi2ti
+f2j
+2fk
+2f2l
+5flask
+2fm
+fma4
+2f2n
+3fna
+1fo
+4fof
+folk3r
+2fom
+fo2na
+fost3r
+2fp
+f2r
+fra2m
+f4rer
+5freri
+f4ri.
+fri5sp
+fros5ta
+2f1s
+fs2k
+f2st
+f4sv
+2f1t
+f4tak
+fte4r
+f4tin
+f4tr
+ft2sa
+ft4se
+fts5i
+ft4ska
+fts5m
+ft3str
+f2tu
+ft3v
+1fu
+fu5ru
+fu3tu
+2fv
+1fy
+fy4ma
+3fäl
+5fäs
+1fö
+fö2ren
+fö2ri
+för3k
+för1sl
+för3sm
+för3sp
+för3su
+ga5br
+3g2ag
+4gakt
+3g2al
+ga4no
+2garb
+ga2ro
+ga4st
+gast3r
+5g2ati
+gaus4
+g4av
+g5avsn
+2g1b
+4gc
+2g1d
+ge2a
+ge5b4
+2gef
+2ge4j
+geld4
+g2eli
+3gelis
+3gelä
+g4em
+ge4nap
+3g2eni
+3genj
+4genm
+gen4sa
+g4ense
+1g2ent
+4genv
+ge5ny
+3genä
+ge2o
+1g2era
+4gerarb
+3g2eri
+4germ
+g2ersk
+gers5n
+5gese
+ges3ti
+ge4to
+5g2ett
+2g5f
+2g1g
+g4gap
+gg1l
+g4gos
+ggs4la
+ggs4m
+ggs4t
+2g1h4
+ghets1
+1g2i
+gi1o
+gis3l
+gi4ste
+gis4tr
+gi5stral
+gi5st4rat
+3giv
+gi2ö
+g2j
+g5ja
+g5jä
+2g3k2
+2gl
+g2las
+5glase
+glas5k
+5glasö
+gles5n
+g4lid
+g5lös
+2g1m
+2g1n
+g4nag
+g2no
+1g2o
+3go.
+3gol
+gon3s4
+2gord
+g5ordn
+go3sl
+2g1p
+g2r4
+3graf
+5gral
+gra2m
+g5rat.
+5grec
+5grett
+g3rig
+g1ring
+5grip
+g5roi
+gro2v
+grä4n
+5gräns
+2g2s
+gs1an
+g3sel
+gs3f
+g3sint
+gsk2
+g5s4ki
+gs4kj
+gs4kot
+gs1l
+gs1m
+gs3mi
+gs3n
+gs4ni
+gs4nö
+gs1p
+gs3pl
+gs3po
+gs3pu
+gs3s
+gs5tag
+gs5tak
+g5stark
+g3stif
+gs3till
+gs4tin
+gst4r
+gs5tvi
+gs1u
+g4sug
+g4s3ve
+gs3vå
+gs1ä
+2g1t
+1g2u
+guld1
+gul4da
+4gulä
+gu2ma
+4gup
+gu5ru
+2gut
+g3utb
+2g1v
+4gw
+3g2y
+gytt3j
+g2ä
+1g2ö
+gö3ra
+gö5ro
+3g4å
+gårds3
+gå4sp
+ha3bl
+ha5ge
+handels3
+hands4l
+han5g2a
+ha5ra
+ha4sp
+hav2
+havs5
+h5c
+4hd
+he4at
+hets3v
+h3h
+4hir
+hi4t
+5hjä
+h1k
+2hl
+h4le
+2hm
+4hn
+h2na
+h2nit
+ho5nu
+hop5plo
+hop3s
+hos3p
+4how
+h5p
+h1s
+2ht
+hu2s
+hu4st
+hust5r
+hyg5r
+hys2
+hy3ster
+häll2
+hälls1
+hälso3
+hä5ro
+hä4s
+hö2g
+i1a
+ia3fr
+ia3g
+ia4lu
+ias5k
+ia3tr
+i1b
+ib3l
+i5bril
+i3ca
+i2ce.
+i5cha
+i3che
+ick3u4
+i5co
+i4dom
+id1r
+id3ri
+id3ro
+ids3v
+id4sä
+i4dun
+i3då
+4i1e
+i1fr
+3ifrån
+i1g
+4igan
+i2geb
+ig5ej
+ig4gr
+ig1l
+ig3no
+i1h
+i5i
+i1ki
+i3klo
+ik5län
+i4k3n
+i1ko
+ik3re
+i5krob
+ik5rof
+ik5ros
+ik2s
+ik5sh
+i3kul
+i3kum
+ik5u4t
+ik1v
+i3ky
+i3kö
+i5kå
+i1la
+i3li
+il1jö
+il5la
+ill3s2
+3illu
+il5lär
+il2min
+i1lo
+i3lu
+i4lup
+i5lä
+im2b
+imb3r
+im5sm
+im4tv
+i1mu
+i3mä
+i5mö
+i5må
+i4nau
+in4ga
+ing4es.
+ing5is
+ing4si
+ings5o
+i3ni
+i4nif
+ink5s
+in5kve
+1inneh
+5inre
+1inri
+3inrä
+in1s
+in2sk
+in3skr
+in3sl
+5inslag
+ins4m
+in3sn
+1inspe
+5inspeln
+3instan
+3instink
+3instru
+1intr
+in4tra
+i1nu
+i4nun
+i1nä
+i5oc
+i1og
+i3ok
+io4kr
+i1ol
+io5li
+i5om
+i3ono
+ion2s3
+i3opi
+i1or
+i1os
+i1ot
+ip5pi
+i3ra
+i4res
+i1ri
+i1ro
+iro3p
+i1ru
+i5sce
+is2h
+i2sk
+is5kep
+isk5na
+is1ko
+is1kr
+is3ku
+is4kun
+is4kvi
+is3ky
+i5slam
+is3län
+is3n
+i3so
+is3pa
+is3pi
+is3po
+is3pu
+is2sk
+is5ski
+is2sp
+is2st
+iss3tr
+is3tag
+i1stans
+is5tat.
+ist5att
+is3ten.
+i1stent
+is4tes
+is5tor.
+i3strik
+i3strö
+i3sy
+i1t
+it5c
+i4te.
+i4tei
+i3tri
+it5sj
+it3st
+it2t5op
+it4t3r
+itut4
+i5tä
+i4tå
+i1u
+i1v
+i2vak
+i4vin
+iv3r
+iv4su
+ivs4v
+ivs5va
+ix2t
+ix5tu
+i1ö
+1ja
+4jarb
+jas5m
+jas5p
+2jb
+2j1d
+1je
+je2a
+5jef
+je5sta
+2jf
+4j3g
+4jh
+1jig
+3jis
+2j1k
+j4kr
+j2k3v
+2j1l
+2jm
+2j1n
+j2o
+3job
+4jolj
+jor4din
+jord5s
+3jou
+2jr
+2j1s
+j5sa
+j4sk
+j4st
+2jt
+j2u
+juk3s
+jul3k
+4jup
+2jur
+jur5sta
+jus2
+jus3s4
+jut4sta
+jä5lo
+jäl4sa
+jär5s
+jör2s
+jös4t
+jå4sk
+1k2a
+3ka.
+5kad.
+3kade.
+ka4dr
+2kaf
+5kafä
+ka5gr
+ka3i
+2kak
+k1akti
+3kan.
+4kandi
+5kano
+2kap
+5kapac
+3kapi
+3kar.
+ka3ra
+2karbe
+k5arbet
+ka5ri
+3karna
+4karp
+4karv
+3kas
+kas5ko
+kas3ti
+ka5stru
+2katt
+4kau
+2k3b
+2kc
+4k1d
+1k2e
+3ke.
+ke3dr
+ke4er
+2kef
+kels4
+ke5nå
+2kep
+ke2s
+4kex
+2k3f
+kfö2r
+kfö3ri
+2k5g
+2k1h4
+kid5s
+4kif
+5kig
+4kim
+5kimå
+king3r
+4kinne
+2kins
+kin4sta
+2kint
+ki4nu
+4k3k4
+kl2
+k2lama
+3klass
+2klat
+5klav
+2kle
+k2lej
+2klig
+k2lim
+3klip
+k2lis
+klist3r
+4klj
+3klos
+5klub
+3kläd
+4kläg
+2k1m
+2k2n
+k3nad
+5k4nal
+3k4nap
+k3ni
+3knip
+3k4niv
+3knop
+3k4nu
+3k4ny
+k2o
+4koc
+2kodl
+kog3n
+ko4gr
+kogs5
+ko2lin
+4kolj
+5kolle
+1kom
+3komm
+2k3omr
+5konse
+5konst
+3kont
+ko3nu
+4kop.
+4kope
+1kor
+2korr
+3korres
+5kortera
+1kos
+ko3sc
+kos4k
+ko3sl
+3kost
+2k3ou
+4kox
+2k1p
+k2r4
+3kraf
+kra3ge
+2krar
+5krera
+k4reten
+krid5s2
+krings2k
+2kriv
+3krop
+kru5stad
+k3ryg
+4kräl
+2ks
+ksaks5
+k3sal
+k4sas
+ks3ch
+k4ser
+ks2ha
+ks4ho
+ks2k4
+ks3kl
+ks5kra
+k3skä
+ks3lös
+ks4ma
+k2so
+ks3pl
+k1s2t
+k2su
+2k1t
+kti5ge
+k4tinn
+k2tins
+k2tom
+k2tr
+kt3re
+kt3rin
+kt5rog
+kt3rol
+kt5rät
+kt5t4
+k2tut
+ku5la
+4kuld
+3kulö
+3kurs
+1kus
+kust3a
+kv4
+k3vagn
+3kvali
+k5vare
+5kvarn
+3kvart
+k4vato
+k2ve
+5kvens
+5kventa
+3kvin
+5kvire
+k4vo
+5kväll
+k1vär
+kydds1
+3kyrk
+kägg5s
+5känn
+1käns
+3kärl
+4kög
+kör4s
+4kål
+3la.
+lack5s
+1lade.
+2ladm
+4ladr
+2laf
+la4gin
+5lagm
+lag3r
+2lak
+5laki
+3laktis
+la5lo
+3lande.
+2lappara
+lap5sa
+1lar.
+2larb
+1larn
+lar5s
+la2sk
+5laste.
+3lat.
+la5tr
+2lau
+2lav
+la5vu
+2l5b4
+4l3c
+2ld
+ld3r
+lds4an
+lds2m
+l4dö
+1le
+3le.
+le5ig
+le4kl
+lem4so
+lem4sö
+2l5enl
+3ler.
+3lern
+le5s2l
+les5te
+le3um
+2lex
+2l1f
+l3fl
+2l1g
+lg2l
+l3gla
+2l1h
+1li
+5lif
+3lig
+li4go
+li5k2l
+lik3s
+5limer
+2linga.
+ling5o
+2lingr
+2lini
+4lint
+li1o
+2lip
+lis3c
+li4sor
+lis3s
+li4sta
+li4vo
+liv2s1
+l2jak
+4l1jo
+3lju
+l1jä
+l3jör
+l5jå
+2l1k
+l2kl
+lk5lag
+l2kr
+l3kra
+lk3re
+l4kv
+l1la
+lld4r
+l3li
+ll3k4
+ll1l
+l1lo
+llok5v
+l2l5ov
+ll5p
+ll4san
+ll2se
+ll3sk
+ll5slä
+ll2so
+ll4ti
+ll3tr
+ll5tv
+l1lu
+llust3ra
+l5ly
+l5läm
+l3lö
+l1lå
+4l1m
+l4mol
+l1n
+lo2af
+lo3dr
+lod5st
+lo2ge.
+2lolj
+2lom
+4lord
+2lorg
+4lort
+lp5red
+4l1r
+2l1s
+l2sc
+l2sk
+lsk3n
+l4skop
+l4skre
+l4skv
+l3sky
+l3slu
+ls5lå
+ls3m
+l2sp
+ls3pol
+lss4
+l2st
+l3sta
+ls2ten
+l5strid
+l3stru
+l3stä
+l3stå
+l2su
+l5sur
+l2sv
+l4svi
+ls5vå
+l2sö
+l4så
+4l1t
+lta2tu
+l2tr
+lt5rati
+l3trera
+ltu4
+l4tå
+lu5i
+2lun
+lun4g3
+lungs2
+2lupp
+lu4pu
+3lust
+4lutb
+4luts
+4lv
+l1va
+l1vi
+lv3r
+lv3sp
+l3vä
+lv5års
+ly4gat
+lyg3r
+lyg3s
+3lyste
+5lystn
+ly4str
+läg5r
+1länds
+4längda
+4längt
+4läp
+lätt3s
+4löm
+4lört
+4lå.
+1lång
+lång3s
+4lår
+lå2s
+1ma
+ma5fr
+mag5n
+mak3r
+2makti
+ma3li
+m4an
+mand4
+mang2a
+man5go
+ma5ni
+mani1k
+man2sc
+5mari
+mash5
+mas3ko
+mask5r
+2m1b
+m3ba
+mbet4
+2mc
+2m1d
+m4dat
+m4do
+m3dr
+m4då
+1me
+me5lu
+men5k
+me5nu
+me5ny
+me3sti
+me5trin
+met3ro
+meu4
+4mex
+2m1f
+m3fle
+4m1g4
+2m1h
+1mi
+mi4lu
+ming4o
+min4st
+4minv
+mi3nö
+mi5sf
+mi4sp
+miss3t
+mi2tr
+2m1k
+m2kl
+2m3l
+2m1m2
+2m1n
+m2nam
+m4nav
+mn5g4
+m2n3å
+1mo
+2momr
+mo3na
+2morg
+mos3k
+mo2ta
+mo4tin
+mot3s
+2m1p
+m2pak
+m2pl
+mp3lad
+m5plane
+mp3lat
+mp3lin
+mp5p4
+m4pry
+mp5sk
+mp3st
+4m1r
+2ms
+ms4kor
+m1skr
+ms3lä
+ms4me
+ms5na
+msnitts5
+m3stjä
+mst3rin
+m5strå
+ms5äp
+2m1t
+m3tv
+mulls3
+mult5r
+5mum
+4mun3g4
+5mur
+mu2sk
+mu3sta
+mut2s
+mut4sl
+2m3v
+4myg
+1myn
+mys4te
+1män
+mäns4
+1mäs
+mäs5ta
+mö3ra
+4möv
+3mål.
+5målet.
+mån5sk
+måt5s
+1na
+3na.
+nad4s3
+2naf
+na5gr
+2nak
+3nako
+3nakr
+na3kro
+n1akt
+2nalf
+5nalfl
+nal3sk
+na2lu
+n5amb
+4nanv
+nap3r
+nap5sa
+na4rap
+2narb
+2nark
+4nart
+nas3ti
+nast3r
+2n3b4
+2n1c
+n3cha
+n3che
+n3chi
+ncis4
+ncyk3l
+2n1d
+n2dak
+n4dav
+nde3s
+n2dins
+nd3r
+n5dril
+nd4ro
+nd5sat
+1ne
+3ne.
+ne4di
+ned3r
+ned3s
+ne2gr
+ne5gres
+4nenl
+nes3s2
+ne4sta
+ne5s4ti
+ne3tre
+2nex
+2n3f4
+2ng1
+n4gar
+n4ge.
+n4gen.
+n4gend
+n4gens
+n4genti
+n4ger.
+n4get
+n2gi
+ng3ig
+n5gjo
+ng4ly
+n2go
+ng5om
+ng3or
+ng3rad
+ngs1k
+n4göd
+2n1h
+1n2i
+ni5ec
+3nin
+nings1
+nings3p
+nings3v
+ni1o
+4nip
+ni5s2teri
+nist3ra
+nit4r
+3niv
+2n1j
+n4jar
+nju4s
+2nk
+n1ki
+n3klag
+n1ko
+nkrafts5
+nk4re
+n1kro
+nkrus4
+n1ku
+n5kä
+n1kö
+2n1l
+2n1m
+4n1n
+nnd4
+n3ne
+nne2s
+nnes5ta
+nnis4
+nn3k
+nn3sa
+nn3s4t
+1no
+no4kl
+2nolj
+no2mar
+2nomr
+nom3s4
+non4st
+2nord
+2norg
+no3sa
+no5sc
+no4tu
+2n1p
+2n5r
+4ns
+n4sint
+n4sise
+ns2k
+n5skal
+ns3kan
+ns3kat
+ns5kon
+ns3kor
+n4skra
+ns5lat
+ns3mi
+ns3mö
+n4soc
+n1spi
+ns3pl
+ns3po
+ns3s4
+ns2t
+n4star
+n2s3te
+ns4tel
+n3stif
+ns3tig
+n1stru
+nst5vil
+n3s4ty
+n1sva
+ns3vär
+2n1t
+n4tark
+nter5s
+nt4ha
+n4tinf
+n2tomb
+n2tra
+nt3rad
+n3trah
+n3trak
+n5trala
+nt3rali
+n5tram
+nt3rep
+n3trer
+nt3ria
+nt3rin
+nt3ris
+n4tropin
+nts2
+nts3c
+nt4se
+nt3skal
+nts5ko
+n3tvät
+nufts4
+3nui
+1num
+2nup
+n3upp
+2nutb
+2n1v
+ny5gr
+n5z
+4näc
+3näm
+4nö.
+4nöa
+4nög
+nö2ja
+nörs4k
+o1a
+o2ard
+5o4bj
+o4bli
+oc4k5r
+ock3sk
+oc1ku
+o1d
+ode4k
+ode5si
+odi4a
+3odlin
+o5dral
+o3dro
+ods4k
+ods4m
+od5stu
+o1e
+o3fr
+o3fä
+o1g
+oges4
+o4gj
+o5glo
+o5gly
+ognos2
+ogno5st
+og3se
+o1h
+o1i
+o4il
+o1j
+o1k
+ok4la
+o4kli
+ok3na
+o2kry
+ok3sl
+o2kv
+o1la
+o5lak
+ol5au
+olfö4
+ol3g
+1olj
+olk3rä
+ol2ku
+ol3lä
+o1lo
+o1lu
+o1ly
+o1lä
+o3lö
+ol5år
+3ombud
+o3me
+o3mi
+om5pa
+om3pl
+1omr
+4omra
+om3sla
+om4ste
+3omsät
+o3mä
+on3c
+on5gi
+on1gr
+ongs4l
+o4nins
+on1k
+ons3c
+onsi3s
+on1sta
+on5stel
+ons4ter
+on3tras
+on4tre
+o1ny
+o1nä
+o3nö
+on5å
+oo4d
+o3or
+o5pline
+op4pl
+opp3le
+opp2s
+o3pri
+5optiko
+o3på
+o5q
+4ora
+o3rak
+oran3g4
+o2rap
+1ordn
+ord3r
+or2d5ä
+o4reh
+1orga
+o3ri
+3orient
+o1ro
+or5pr
+or4sn
+ors5tig
+or4tin
+or2tr
+o1ru
+o3ry
+o1rä
+o1rö
+o3sfä
+o4skar
+osk4l
+o1skop
+o5sn
+o3som
+os5pig
+os4sc
+os4st
+os3ten
+os5tiker
+o5still
+os4tr
+ost5re
+ost5ron
+os3tul
+os5ög
+ota4la
+4oti.
+4otie
+4otin
+o1to
+o5tro
+ot5run
+ot4trä
+ott2s
+otts3p
+o1tu
+o1ty
+o5tä
+o5tö
+4our
+ou4s
+out3s
+out3t
+o1v
+ova4n
+ov3r
+ov4si
+ov5sj
+ov3sl
+o3we
+ox3
+oy2
+o3än
+o3ö
+o3å
+1pa
+3pa.
+4paf
+pag4
+paki3
+pakis4
+pa5la
+pa5ra
+2parb
+4pask
+pa2st
+pas2tel
+pa3u
+2p3b
+2pc
+2pd4
+1pe
+pek5tri
+pekt3ro
+pels4i
+3pen.
+5peng
+3penn
+5pensi
+pent5r
+per4bl
+3perio
+3pers
+pe5tro
+4pex
+4p1f
+p5fl
+4p5g
+4p1h
+1pi
+pi4el
+pi1o
+3pip
+pi5sta
+pi5sto
+p2j
+2p1k2
+p2l
+p4lac
+3plan.
+p4lane
+p5larn
+pla4s
+p3lev
+3plex
+3plic
+1plik
+p3lop
+2p1m
+2p1n
+p3ni
+1po
+5poa
+2poc
+2pof
+po2i
+po3kr
+3polit
+4polj
+poly3
+4porg
+3pos2
+4pov
+2pp
+p3pe
+p4pins
+pp5j
+pp1l
+pp3la
+pp3lin
+pp3ly
+pp3lä
+pp5lö
+pp3lån
+pp3låt
+pp5oc
+pp3of
+pp3ra
+pp3ri
+pp3ry
+pp1st
+p2pu
+p5py
+pp3å
+p2r4
+2pra
+4pre.
+1pres
+pre3sk
+pre3sta
+pres5to
+p1rig
+p3rik
+5pril
+3princ
+pring3
+p5riol
+3pro
+pro3g
+p3ror
+3präs
+5pröv
+2ps
+p2sal
+3psalm
+p5s2ho
+p5sj
+ps4ke
+ps5ke.
+ps4le
+ps2li
+p3sna
+p3sod
+ps5s
+ps2t
+p4stak
+p4sy
+p2sö
+4p1t
+p2tra
+p3tri
+1pu
+pul5tr
+5punk
+pus3t
+2p1v
+5päl
+pä5ro
+p5ög
+på4sk
+påts4
+qu4
+3que
+1ra
+3ra.
+raci4t
+3rade.
+4radr
+ra4du
+5ra1e
+2raffä
+ra3fr
+4rag
+2rak
+ra2lo
+r4ande
+3rande.
+rand3s2
+2ransv
+ra3pl
+3rar
+r4ar.
+4rarb
+r4are
+4rarg
+r4ark
+r4arn
+r4ars
+4rart
+r3arta
+r4as
+ras5h
+ra2st
+3raste.
+3rativ
+ra3tri
+2rav
+ra5yo
+2r1b
+r3bl
+2r1c
+2r1d
+rda5gr
+r2d5ex
+r3dj
+rds4ko
+rd4st
+1re
+3re.
+re3b
+4rec
+5reco
+re5du
+4rej
+re1kr
+rek5tri
+re3lu
+rem5p
+r4en.
+2reni
+2renk
+2renl
+re3o
+3rer.
+3rern
+3reso
+res4sk
+re1sti
+4restr
+re5så
+3ret.
+4retet
+ret3ro
+4rety
+2revig
+4rex
+2r1f
+r3fl
+rfö3ri
+2r1g
+rgs5tra
+2r1h
+3rial
+4rib
+3rifo
+2rifr
+r3ifrå
+3rigt
+3riktn
+rim4s
+3ringen.
+2rinr
+2rins
+2rint
+ri1o
+3riot
+ri5ple
+r1j
+2r1k
+rk3akt
+rkes3
+rk5h
+r2kl
+r4k5lad
+rk3lan
+r3klas
+rk3n
+r4kre
+rk5st
+rk5tr
+r4kup
+r2kv
+r3kvi
+2r1l
+r5laka
+r5lav
+rlds3
+2r1m
+r4marb
+2r1n
+rn3g4
+rn5k4
+r2nom
+rns4k
+rn5sko
+rn3s4t
+ro3b
+rog5s
+2rolj
+rol4li
+rom4a
+5roman
+ro3pl
+ropps3
+ro4ra
+2rord
+2rorg
+2rorie
+3rorn
+2r1p
+r4pö
+r1r
+rra4n
+rreligi5
+r5rib
+rr3k4
+r4rob
+r4rom
+rrs4
+rr5sp
+r4rö
+2rs
+r3sak
+r2sin
+r3skal
+r5skatt
+rsk3na
+r2sku
+r3slag
+rs2m
+rs5min
+rs5nä
+rs2t
+rs5tend
+r5steni
+r4stj
+r1sto
+r4ston
+r3strö
+r3stu
+rstånds4v
+r1sv
+r2svä
+r1sy
+r1så
+4r1t
+r2taf
+r2tak
+rt4re
+rt5res
+r5tri
+r3trä
+rt5t
+r4tut
+rt5va
+rt5vå
+ru3br
+ruks1
+5rullera
+rull3s
+runn2
+runns5
+4rupp
+ru5sha
+ru4sk
+ru5str
+rut4ra
+5ruö
+2r1v
+r3vj
+rv4s
+r3w
+rydd5s
+ry5o
+ry4pi
+rängs2
+räns5t
+rä5s2ti
+rö2d5el
+röd3sp
+r3öi
+1r2ör
+r1övr
+råge5l
+rå5ra
+1sa
+3sa.
+4sa3dr
+sad5s
+2saf
+sa3i
+2sak
+3sakr
+sak5ri
+3saks
+4s1akt
+sa5lo
+3s2am
+sa2ma
+samman1
+sa4mor
+4sang
+2sanl
+s3anlä
+4sano
+san3sla
+2sap
+2sarb
+4sarm
+4sart
+4sass
+sa4tu
+2sau
+2s1av
+4s3b
+s2c
+4sca
+2sch.
+1scha
+2schb
+1schen
+1scher
+1schi
+2schk
+4schm
+4schp
+4schr
+3schy
+3schö
+3sci
+4scy
+2s3d
+1se
+se4at.
+se2g
+2s3egg
+seg3ra
+sek5le
+sek3r
+sek5tr
+se3kv
+se4kva
+3sel.
+3sen.
+s5ersä
+3ses
+3set.
+4sex
+2s1f
+s3fl
+s2fä
+sfö2
+2s3g2
+2s1h
+s5has
+5shaw
+shi1s
+1si
+si2ett
+3sif
+3sig
+3sik
+sikts3
+sindu3s
+2s1inf
+2sinneh
+sinnes3
+3sinni
+4sinr
+2sins
+s3instr
+sis2t
+3sit
+siu4
+s2j
+s4ju
+5sjuk
+själs3
+2sk.
+4ska.
+s2kada
+s2kado
+3skaffn
+s4kag
+s2kal
+1skap
+5skap.
+5skapet
+skaps3
+s4kara
+4skas
+4ske.
+s4kene
+3skepp
+4skh
+sk4i
+3skido
+1skil
+1skin
+3skiv
+3skj
+4skl
+s1klas
+2skn
+s4ko.
+s4kog
+1s4kol
+3skola
+2skom
+s5korg
+s4korp
+skor3s
+4skos
+5skott
+s5krag
+s4kran
+5skrat
+sk4re
+5skrev
+1skrif
+4s3krig
+3skrip
+3skriv
+4skro
+s5kron
+5skräc
+3skräm
+4skrö
+sk3s
+2skt
+s3kup
+s4kve
+3skvät
+1sky
+5skyd
+s4kyn
+5skärp
+3skärv
+sk5ät
+1skö
+4sköp
+3skåd
+3skål
+5skåps
+2sl2
+s5lad.
+3slagare
+s3land
+5s2lang
+s4lant
+5slinga.
+slin2s3
+s2lit
+s3litt
+s5lor
+5slott.
+slotts5
+s2lu
+s3luc
+s3luf
+3slum
+5slup
+4slus
+3slut
+s5länn
+3släp
+s5lär
+s2lät
+3s2löj
+s3löst
+5slå.
+5slår
+2sm
+s4mak.
+s2mal
+s2mi
+s4mic
+3smitta
+s5mj
+5smug
+3smäd
+3smäl
+2s2n4
+3snab
+s4nac
+3s4nib
+3snil
+3snit
+5snäc
+3snö.
+5snön
+3s4nör
+s4nå
+3snål
+1so
+5soi
+2solj
+sols2
+so4lö
+2som
+5son
+son4s
+sopp5s
+so5pr
+so4pu
+3sor.
+4sord
+3sorn
+3sot
+4sott
+s2p2
+4s3pap
+s4park
+spa5tr
+4sped
+5speg
+1s4pek
+3spel
+4spen
+3spet
+3spill
+2spip
+3spir
+4spl
+s1pla
+s3plats
+spli4
+s5plik
+5split
+4spol
+4spos
+s3pres
+3sprid
+s3pris
+2spro
+3spru
+s3pry
+3sprän
+3språ
+3spån
+3spår
+2s1r
+4s1s
+s5sad
+s4satt
+sse4lin
+s5sja
+ss2k
+ss5kl
+ss3kun
+ss1l
+s3s2lä
+ss3n
+ss2t
+ss3unn
+s2sv
+4st.
+s2ta
+4sta.
+1stadi
+1stads
+s4taf
+5stalgis
+3stalle
+3stallk
+1stant
+s4tart
+5start.
+1state
+4stations
+3statl
+1stau
+2stb
+2stc
+4s3te.
+1s2teg
+s4tek.
+s2tem
+3stem.
+3steme
+s4tena
+3stenar
+3stene
+3stense
+1stera
+1stering
+3sterne
+4stes
+5stetis
+s4ti.
+2stia
+2stib
+3stick
+2stid
+s4tie
+s2tif
+s2tik
+s4tiken
+2s2til
+3stil.
+s2tim
+s4tin.
+3stink
+3s2tisc
+1s2tit
+s5tju
+5stjäl
+3stjär
+2stm
+2stn
+5stoc
+1stol
+stori4eu
+5storis
+stor3s
+3straff
+4strativ
+3strato
+3strej
+st3ren
+1strer
+1strid
+5strim
+1struk
+5strump
+s5tryc
+5sträc
+3sträng
+3ström
+5stråk
+2st3s2
+st5t
+1s2ty
+4styn
+2styp
+3styr
+1stä
+3stäl
+2stäv
+5stäve
+1stö
+1stå
+4ståg
+1su
+su2b
+3sud
+3sug
+su3i
+3s2um
+2sun
+5sun.
+4sund
+5sune
+2sup
+5supa
+5supplea
+su2pu
+5s4us
+2sut
+s5utd
+su4to
+s3uts
+s2v2
+4s3vak
+5svam
+4svap
+svars3
+s3vat
+4svec
+3sven
+s3ver
+s5ves
+4s3vil
+4svis
+s3vät
+s5våd
+2syk
+5syl
+5syn
+syn5k
+3sys
+1sä
+3säk
+s4äl
+2säp
+3sät
+4säta
+1sö
+4söd
+2sög
+s5öga
+4söl
+sör2s
+2söv
+sång3
+1ta
+3ta.
+tab2
+ta3ch
+3tade.
+4tadi
+4tads3
+2taff
+5takl
+ta5kre
+2taktig
+5tallise
+3tame
+3tami
+3tan.
+ta4nab
+3tande.
+2tanf
+t3anfa
+4tanl
+2tappar
+3tar.
+4tarb
+tar4mi
+3tarn
+tars4
+5tas.
+3tast
+ta1str
+ta4tan
+tat2s3
+2tatt
+2tav
+4tave
+3tavlan
+3tax
+2t3b4
+2tc
+t3cha
+t3che
+2t3d
+1te
+te4as
+teb4
+3tec
+4teg.
+te2gr
+te3gre
+te3i
+te4int
+te4kl
+te3kv
+tel4f
+3tema
+te4mu
+ten3g4
+tenk4
+3tensi
+te5nu
+te4nä
+5ter.
+5teriö
+terk4
+5term
+3tern
+ter5sl
+te2r5u
+3tes
+te5stik
+te5stu
+5tetik
+tet4s1
+2texp
+2t3f4
+2t3g4
+2t1h
+t4hen
+5t2hi
+1ti
+3tial
+3tib
+2tic
+3tici
+3tid
+tids3t
+4tidö
+tifts5
+ti2gel
+2tign
+ti2gr
+3tigt
+3tiks
+5tilj
+3tillst
+3tillv
+5time
+2tink
+2tinr
+2tint
+ti2os
+3tisk
+3tiv
+ti4van
+4tivita
+ti2ö
+t2j
+t4jat
+4tje
+2tjo
+3tjän
+2t3k4
+2t1l
+2t1m
+2t5n4
+tne4
+3tok
+4tol.
+4tolj
+2tomr
+2torg
+5toriett
+torm5s
+1torn
+tor1st
+tos4k
+2t1p
+t2r
+t4raf
+5trafi
+3t4ral.
+t4rala
+3t4rale
+5tralo
+3trals
+t4ralt
+1trans
+5tran2s5a
+4trar
+t3rat.
+t4rato
+4trer.
+4trern
+2tri
+3tribu
+trids3
+t3rif
+t1ring
+t3ring.
+4trio
+5trod
+t4rog
+4tropi.
+4tror
+5trotn
+t3rum.
+t4rump
+3trupp
+trus5ta
+3träd
+träds4
+3träg
+4träk
+t3räkn
+t4rän
+5tröja
+4tråk
+2ts
+t4sank
+ts5art
+ts5au
+t4sci
+ts5f
+t2si
+t5skatt
+ts4ked
+t4sku
+t5skul
+ts5läk
+ts4met
+ts3nä
+t3snö
+t2so
+ts5ord
+ts3s
+ts2te
+t4stra
+ts5tv
+t2su
+ts3vär
+2tt
+t2tak
+t4tau
+tte5g4
+tte2n
+t4tip
+tt3ja
+t1to
+tt3rad
+tt3rand
+tt3rat
+tt3re
+tt3ri
+t1t4ry
+tt5ski
+tts4ko
+t3tu
+tt3vi
+t5ty
+t3tä
+t3tö
+tugg4
+2tunde
+3tunga
+2tup
+tu5re
+2tutb
+t4utr
+t3utv
+t3utö
+5tuö
+2tv
+t1var
+tvin4s
+tvit5
+3tviv
+t3vän
+3tvån
+ty3da
+tyg5r
+3typ
+2tz
+täc4ko
+2täl
+5tält
+4täm
+1tävl
+tö2do
+4tög
+törs3t
+3tåg
+u1a
+ub5al
+ub3lic
+u1blik
+u3cha
+ucku5
+u5cl
+u2dak
+u5de
+ud3r
+ud4ret
+ud3s4a
+u1e
+u3fl
+uf4to
+4u1ga
+u1ge
+ug4gr
+ugg3s
+ugn4
+ug3s4
+u3h
+u5ie
+u1in
+u3is
+u3itet
+u1j
+u2keb
+u5ki
+uk3n
+u1ko
+ukos2
+uk2s
+uks3p
+uks3v
+uk3tr
+u3ku
+uk1v
+u1la
+ul2di
+uld3sm
+ul4du
+ulls2
+ull4sk
+ull3än
+u1lo
+u3lu
+u1lä
+u1lö
+ums2te
+u1mu
+u3mö
+3underl
+1undersö
+1underv
+un4dom
+un5g2ef
+un3gersk
+ung5it
+3unif
+unk5l
+unk3n
+un4ko
+un1sk
+un2tr
+un5trati
+u5nu
+u5nä
+u1o
+u4pern
+u2pl
+u3plet
+up3lik
+1uppg
+up4pin
+1uppla
+3upplä
+up4p3r
+upp3s
+upp5sp
+up5ut
+u5rag
+ur5ak
+ur5arv
+u3re
+u1ri
+u1ro
+u4rob
+u4rom
+ur1sp
+urs5ten.
+urs5tin
+ur4stä
+ur4sv
+u5ry
+u3rö
+us5anl
+u3se
+us2ha
+us4he
+us1k
+us4kl
+us4kr
+us2ky
+us5lä
+us3n
+us3pen
+us2st
+us5tat
+u3stik
+u3strin
+u3stris
+u4stä
+ut5arm
+1utb
+ute3s
+u4tif
+uti3ö
+ut3j
+3utjäm
+utlands3
+u1to
+u3top
+uto5s
+1ut3r
+ut4rer
+ut4ro
+ut5rop
+5utru
+ut1s
+ut5sa
+2utsid
+ut3sl
+3utslä
+ut5trö
+ut1v
+3utvec
+u5ty
+u3tör
+ut3öv
+ut5å
+u5u
+2u1v
+u2vak
+u3ö
+u5å
+2v1akti
+5vama
+4vanp
+2varb
+va4res
+var2s
+vars3v
+va1r4u
+vas5ti
+5vattn
+4vau
+4vav
+5vavi
+2v1b4
+2vc
+2v3d4
+1ve
+ve2k
+ve3ke
+5ventera
+ve3ny
+4vep
+3verk
+ver4ste
+ve2s5p
+ve1st
+3veta
+3vete
+2v5f
+2v1g
+2v1h
+v4i
+vid3s
+vild3s
+vings4
+3vinkl
+vin2st
+vi5ny
+3vis.
+vi5sa
+vis5h
+vi4st
+vis3ta
+vi2tr
+2vj
+2v1k2
+2v1l
+2vm
+vmörk4
+2v1n4
+1vo
+2vom
+2vorg
+vos4
+2v3p
+2vr
+v2re
+3vrera
+2vs
+v1s2k
+vs4ka
+v3sni
+v2so
+vss4
+vs4te
+v5sto
+v5sty
+vs3vå
+v2sö
+2v1t
+vu2d1
+2vun
+v1und
+4v5up
+4vut
+2v1v
+3vy
+3väg
+vä4l
+5väld
+väll4s3
+väl5p
+1värd
+4värj
+3värld
+3väx
+3vö
+vång4s3
+3vård
+1wa
+we2
+whi2
+wi2e
+w4na
+x1a
+xan5
+xand4
+x1c
+x1e
+xe3k
+xem3pla
+x1i
+xis2
+x1k2
+x1l
+xli4
+x1n
+x1o
+x1p
+xs4
+x1t
+xti2
+x4tå
+x3u
+y1a
+yb4s
+ycks5k
+ycks5t
+y2da
+y5dan
+ydd4
+yd3r
+yd3s
+y1e
+y1ga
+y1ge
+yg4gj
+ygs4a
+ygs4p
+y1h
+y1i
+y3ki
+y5klist
+yk5lon
+y1ko
+4yl
+y1la
+yl2gj
+yl5lä
+y1lo
+y3må
+yng3r
+ynk5l
+yn5ko
+yn4s
+y3or
+y5ou
+y5po
+yp3ri
+yre4s
+y1ri
+y1ro
+yr5tu
+y1rå
+y5scho
+ys3ko
+yskon5s
+ys5sa
+ys4st
+ys3ta
+ys3ti
+ys4tik.
+yst3ra
+y2tak
+y2te.
+y4tea
+y1to
+ytt3r
+y3va
+y3vi
+y5w
+1za
+1ze
+ze4ro
+1zi
+1zo
+z5s
+3zu
+z4zin
+ä1a
+äde4s
+äd3r
+äd5se
+äd3st
+ä3e
+ä1ga
+ä1ge
+äg1l
+äg3r
+äg4re
+äg3se
+ä3h
+ä3i
+ä5jo
+4äk
+ä1ki
+äk3la
+äk3n
+äk3r
+ä1la
+äl2p
+äl4seg
+äls5kog
+äl4sl
+ält3r
+äl2tu
+äl4vin
+ämp3l
+änd1st
+änni5s
+änn3s
+ä4no
+äns1l
+än4st
+än4sv
+än2t3r
+äpp3l
+ä4pr
+ä4rap
+är2bre
+ä1ri
+är4nå
+är5ob
+ä3rop
+ä5ror
+ä5ros
+är2si
+är2so
+är2sv
+ärt3s
+4äs
+äs5na
+äs3pa
+äs5pi
+äs3ta
+äst3r
+2ät
+ä3to
+ä5tre
+ätt3r
+ä1va
+ä2vak
+ä3vi
+ä5vu
+ö1a
+ö1b
+ö4dak
+öde4s
+öd3r
+öd2s
+öd3se
+ö2d5ö
+ö1e
+ö1ga
+ög5ak
+ö5gar
+ö1ge
+ö5gen
+ö5ger
+ög1l
+ög2n
+ögn3e
+1ögon
+ög3s
+ög4st
+ö1i
+ö3jo
+ö1ki
+ök5n
+ö5kr
+ök2s
+ö1la
+ölk5s
+öl4kö
+öl2p
+ö5lä
+öman4
+ö2nom
+öns3ke
+ön4so
+önst3r
+öp5li
+ö5plo
+3öppn
+ö2ra
+ö3rande
+ö3ras
+ör3d4r
+ör1eni
+ö3res
+ö3ret
+ör5evig
+ör3g
+ö1ri
+ö5rig
+ö5ring
+ör3int
+ör5ir
+ör5iv
+örk2
+ör3kl
+ör3ol
+ör1or
+ör2pla
+ör1sk
+örs2ka
+ör3sla
+ör3u
+ör3vr
+ör3y
+ör1ä
+ör1ö
+ös4sk
+ös3ta
+öst3rä
+ö2tak
+ö1v
+öve4
+över3
+5övere
+öv3ri
+å1a
+å1b
+å1d
+å3dj
+ådjurs5
+åd3r
+åds4l
+ådå4
+å1e
+å1f
+å3fl
+å1ga
+å1ge
+åge2l
+åg5l
+åg3st
+å1h
+å3i
+å1k
+å4kre
+åk4st
+å2ku
+å4kv
+å1la
+3ålder
+å2lin
+ål2s5e
+ål5tr
+å1lä
+å1m
+åman4s
+ån4dr
+ång3r
+åns4t
+å3o
+å1p
+å2pl
+å5pla
+ård2s
+å1ri
+å5ror
+5årsav
+år2sv
+år4så
+å3ru
+år5ö
+å1s2
+å3sa
+å3se
+å3skå
+ås3n
+ås3s4
+åte2
+åt3ri
+å3trå
+åts5j
+å3tö
+å1v
diff --git a/hyph/hyph/uppersorbian.lh b/hyph/hyph/uppersorbian.lh
new file mode 100644
index 0000000..9b775d0
--- /dev/null
+++ b/hyph/hyph/uppersorbian.lh
@@ -0,0 +1,1356 @@
+Lout hyphenation information
+%
+% COPYRIGHT (C) 2000 E. Werner
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either Version 3, or (at your option)
+% any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program; if not, write to the Free Software
+% Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA
+
+% This is an Upper Sorbian hyphenation file created by E.Werner, 2000
+%
+
+Classes:
+@!$%^&*()_-+=~`{[}]:;'|<,.>?/0123456789
+aA
+bB
+cC
+dD
+eE
+fF
+gG
+hH
+iI
+jJ
+kK
+lL
+mM
+nN
+oO
+pP
+qQ
+rR
+sS
+tT
+uU
+vV
+wW
+xX
+yY
+zZ
+æÆ
+èÈ
+ìÌ
+³£
+ñÑ
+óÓ
+øØ
+¹©
+¾®
+¼¬
+Patterns:
+a1a
+a1b
+a1c
+a1d
+a1e
+a1f
+a1g
+a1h
+a1i
+a1j
+a1k
+a1l
+a1m
+a1n
+a1o
+a1p
+a1q
+a1r
+a1s
+a1t
+a1u
+a1v
+a1w
+a1x
+a1y
+a1z
+a1æ
+a1è
+a1ì
+a1³
+a1ñ
+a1ó
+a1ø
+a1¹
+a1¾
+a1¼
+b1a
+b1b
+b1c
+b1d
+b1e
+b1f
+b1g
+b1h
+b1i
+b1j
+b1k
+b1l
+b1m
+b1n
+b1o
+b1p
+b1q
+b1r
+b1s
+b1t
+b1u
+b1v
+b1w
+b1x
+b1y
+b1z
+b1æ
+b1è
+b1ì
+b1³
+b1ñ
+b1ó
+b1ø
+b1¹
+b1¾
+b1¼
+c1a
+c1b
+c1c
+c1d
+c1e
+c1f
+c1g
+c1h
+c1i
+c1j
+c1k
+c1l
+c1m
+c1n
+c1o
+c1p
+c1q
+c1r
+c1s
+c1t
+c1u
+c1v
+c1w
+c1x
+c1y
+c1z
+c1æ
+c1è
+c1ì
+c1³
+c1ñ
+c1ó
+c1ø
+c1¹
+c1¾
+c1¼
+d1a
+d1b
+d1c
+d1d
+d1e
+d1f
+d1g
+d1h
+d1i
+d1j
+d1k
+d1l
+d1m
+d1n
+d1o
+d1p
+d1q
+d1r
+d1s
+d1t
+d1u
+d1v
+d1w
+d1x
+d1y
+d1z
+d1æ
+d1è
+d1ì
+d1³
+d1ñ
+d1ó
+d1ø
+d1¹
+d1¾
+d1¼
+e1a
+e1b
+e1c
+e1d
+e1e
+e1f
+e1g
+e1h
+e1i
+e1j
+e1k
+e1l
+e1m
+e1n
+e1o
+e1p
+e1q
+e1r
+e1s
+e1t
+e1u
+e1v
+e1w
+e1x
+e1y
+e1z
+e1æ
+e1è
+e1ì
+e1³
+e1ñ
+e1ó
+e1ø
+e1¹
+e1¾
+e1¼
+f1a
+f1b
+f1c
+f1d
+f1e
+f1f
+f1g
+f1h
+f1i
+f1j
+f1k
+f1l
+f1m
+f1n
+f1o
+f1p
+f1q
+f1r
+f1s
+f1t
+f1u
+f1v
+f1w
+f1x
+f1y
+f1z
+f1æ
+f1è
+f1ì
+f1³
+f1ñ
+f1ó
+f1ø
+f1¹
+f1¾
+f1¼
+g1a
+g1b
+g1c
+g1d
+g1e
+g1f
+g1g
+g1h
+g1i
+g1j
+g1k
+g1l
+g1m
+g1n
+g1o
+g1p
+g1q
+g1r
+g1s
+g1t
+g1u
+g1v
+g1w
+g1x
+g1y
+g1z
+g1æ
+g1è
+g1ì
+g1³
+g1ñ
+g1ó
+g1ø
+g1¹
+g1¾
+g1¼
+h1a
+h1b
+h1c
+h1d
+h1e
+h1f
+h1g
+h1h
+h1i
+h1j
+h1k
+h1l
+h1m
+h1n
+h1o
+h1p
+h1q
+h1r
+h1s
+h1t
+h1u
+h1v
+h1w
+h1x
+h1y
+h1z
+h1æ
+h1è
+h1ì
+h1³
+h1ñ
+h1ó
+h1ø
+h1¹
+h1¾
+h1¼
+i1a
+i1b
+i1c
+i1d
+i1e
+i1f
+i1g
+i1h
+i1i
+i1j
+i1k
+i1l
+i1m
+i1n
+i1o
+i1p
+i1q
+i1r
+i1s
+i1t
+i1u
+i1v
+i1w
+i1x
+i1y
+i1z
+i1æ
+i1è
+i1ì
+i1³
+i1ñ
+i1ó
+i1ø
+i1¹
+i1¾
+i1¼
+j1a
+j1b
+j1c
+j1d
+j1e
+j1f
+j1g
+j1h
+j1i
+j1j
+j1k
+j1l
+j1m
+j1n
+j1o
+j1p
+j1q
+j1r
+j1s
+j1t
+j1u
+j1v
+j1w
+j1x
+j1y
+j1z
+j1æ
+j1è
+j1ì
+j1³
+j1ñ
+j1ó
+j1ø
+j1¹
+j1¾
+j1¼
+k1a
+k1b
+k1c
+k1d
+k1e
+k1f
+k1g
+k1h
+k1i
+k1j
+k1k
+k1l
+k1m
+k1n
+k1o
+k1p
+k1q
+k1r
+k1s
+k1t
+k1u
+k1v
+k1w
+k1x
+k1y
+k1z
+k1æ
+k1è
+k1ì
+k1³
+k1ñ
+k1ó
+k1ø
+k1¹
+k1¾
+k1¼
+l1a
+l1b
+l1c
+l1d
+l1e
+l1f
+l1g
+l1h
+l1i
+l1j
+l1k
+l1l
+l1m
+l1n
+l1o
+l1p
+l1q
+l1r
+l1s
+l1t
+l1u
+l1v
+l1w
+l1x
+l1y
+l1z
+l1æ
+l1è
+l1ì
+l1³
+l1ñ
+l1ó
+l1ø
+l1¹
+l1¾
+l1¼
+m1a
+m1b
+m1c
+m1d
+m1e
+m1f
+m1g
+m1h
+m1i
+m1j
+m1k
+m1l
+m1m
+m1n
+m1o
+m1p
+m1q
+m1r
+m1s
+m1t
+m1u
+m1v
+m1w
+m1x
+m1y
+m1z
+m1æ
+m1è
+m1ì
+m1³
+m1ñ
+m1ó
+m1ø
+m1¹
+m1¾
+m1¼
+n1a
+n1b
+n1c
+n1d
+n1e
+n1f
+n1g
+n1h
+n1i
+n1j
+n1k
+n1l
+n1m
+n1n
+n1o
+n1p
+n1q
+n1r
+n1s
+n1t
+n1u
+n1v
+n1w
+n1x
+n1y
+n1z
+n1æ
+n1è
+n1ì
+n1³
+n1ñ
+n1ó
+n1ø
+n1¹
+n1¾
+n1¼
+o1a
+o1b
+o1c
+o1d
+o1e
+o1f
+o1g
+o1h
+o1i
+o1j
+o1k
+o1l
+o1m
+o1n
+o1o
+o1p
+o1q
+o1r
+o1s
+o1t
+o1u
+o1v
+o1w
+o1x
+o1y
+o1z
+o1æ
+o1è
+o1ì
+o1³
+o1ñ
+o1ó
+o1ø
+o1¹
+o1¾
+o1¼
+p1a
+p1b
+p1c
+p1d
+p1e
+p1f
+p1g
+p1h
+p1i
+p1j
+p1k
+p1l
+p1m
+p1n
+p1o
+p1p
+p1q
+p1r
+p1s
+p1t
+p1u
+p1v
+p1w
+p1x
+p1y
+p1z
+p1æ
+p1è
+p1ì
+p1³
+p1ñ
+p1ó
+p1ø
+p1¹
+p1¾
+p1¼
+q1a
+q1b
+q1c
+q1d
+q1e
+q1f
+q1g
+q1h
+q1i
+q1j
+q1k
+q1l
+q1m
+q1n
+q1o
+q1p
+q1q
+q1r
+q1s
+q1t
+q1u
+q1v
+q1w
+q1x
+q1y
+q1z
+q1æ
+q1è
+q1ì
+q1³
+q1ñ
+q1ó
+q1ø
+q1¹
+q1¾
+q1¼
+r1a
+r1b
+r1c
+r1d
+r1e
+r1f
+r1g
+r1h
+r1i
+r1j
+r1k
+r1l
+r1m
+r1n
+r1o
+r1p
+r1q
+r1r
+r1s
+r1t
+r1u
+r1v
+r1w
+r1x
+r1y
+r1z
+r1æ
+r1è
+r1ì
+r1³
+r1ñ
+r1ó
+r1ø
+r1¹
+r1¾
+r1¼
+s1a
+s1b
+s1c
+s1d
+s1e
+s1f
+s1g
+s1h
+s1i
+s1j
+s1k
+s1l
+s1m
+s1n
+s1o
+s1p
+s1q
+s1r
+s1s
+s1t
+s1u
+s1v
+s1w
+s1x
+s1y
+s1z
+s1æ
+s1è
+s1ì
+s1³
+s1ñ
+s1ó
+s1ø
+s1¹
+s1¾
+s1¼
+t1a
+t1b
+t1c
+t1d
+t1e
+t1f
+t1g
+t1h
+t1i
+t1j
+t1k
+t1l
+t1m
+t1n
+t1o
+t1p
+t1q
+t1r
+t1s
+t1t
+t1u
+t1v
+t1w
+t1x
+t1y
+t1z
+t1æ
+t1è
+t1ì
+t1³
+t1ñ
+t1ó
+t1ø
+t1¹
+t1¾
+t1¼
+u1a
+u1b
+u1c
+u1d
+u1e
+u1f
+u1g
+u1h
+u1i
+u1j
+u1k
+u1l
+u1m
+u1n
+u1o
+u1p
+u1q
+u1r
+u1s
+u1t
+u1u
+u1v
+u1w
+u1x
+u1y
+u1z
+u1æ
+u1è
+u1ì
+u1³
+u1ñ
+u1ó
+u1ø
+u1¹
+u1¾
+u1¼
+v1a
+v1b
+v1c
+v1d
+v1e
+v1f
+v1g
+v1h
+v1i
+v1j
+v1k
+v1l
+v1m
+v1n
+v1o
+v1p
+v1q
+v1r
+v1s
+v1t
+v1u
+v1v
+v1w
+v1x
+v1y
+v1z
+v1æ
+v1è
+v1ì
+v1³
+v1ñ
+v1ó
+v1ø
+v1¹
+v1¾
+v1¼
+w1a
+w1b
+w1c
+w1d
+w1e
+w1f
+w1g
+w1h
+w1i
+w1j
+w1k
+w1l
+w1m
+w1n
+w1o
+w1p
+w1q
+w1r
+w1s
+w1t
+w1u
+w1v
+w1w
+w1x
+w1y
+w1z
+w1æ
+w1è
+w1ì
+w1³
+w1ñ
+w1ó
+w1ø
+w1¹
+w1¾
+w1¼
+x1a
+x1b
+x1c
+x1d
+x1e
+x1f
+x1g
+x1h
+x1i
+x1j
+x1k
+x1l
+x1m
+x1n
+x1o
+x1p
+x1q
+x1r
+x1s
+x1t
+x1u
+x1v
+x1w
+x1x
+x1y
+x1z
+x1æ
+x1è
+x1ì
+x1³
+x1ñ
+x1ó
+x1ø
+x1¹
+x1¾
+x1¼
+y1a
+y1b
+y1c
+y1d
+y1e
+y1f
+y1g
+y1h
+y1i
+y1j
+y1k
+y1l
+y1m
+y1n
+y1o
+y1p
+y1q
+y1r
+y1s
+y1t
+y1u
+y1v
+y1w
+y1x
+y1y
+y1z
+y1æ
+y1è
+y1ì
+y1³
+y1ñ
+y1ó
+y1ø
+y1¹
+y1¾
+y1¼
+z1a
+z1b
+z1c
+z1d
+z1e
+z1f
+z1g
+z1h
+z1i
+z1j
+z1k
+z1l
+z1m
+z1n
+z1o
+z1p
+z1q
+z1r
+z1s
+z1t
+z1u
+z1v
+z1w
+z1x
+z1y
+z1z
+z1æ
+z1è
+z1ì
+z1³
+z1ñ
+z1ó
+z1ø
+z1¹
+z1¾
+z1¼
+æ1a
+æ1b
+æ1c
+æ1d
+æ1e
+æ1f
+æ1g
+æ1h
+æ1i
+æ1j
+æ1k
+æ1l
+æ1m
+æ1n
+æ1o
+æ1p
+æ1q
+æ1r
+æ1s
+æ1t
+æ1u
+æ1v
+æ1w
+æ1x
+æ1y
+æ1z
+æ1æ
+æ1è
+æ1ì
+æ1³
+æ1ñ
+æ1ó
+æ1ø
+æ1¹
+æ1¾
+æ1¼
+è1a
+è1b
+è1c
+è1d
+è1e
+è1f
+è1g
+è1h
+è1i
+è1j
+è1k
+è1l
+è1m
+è1n
+è1o
+è1p
+è1q
+è1r
+è1s
+è1t
+è1u
+è1v
+è1w
+è1x
+è1y
+è1z
+è1æ
+è1è
+è1ì
+è1³
+è1ñ
+è1ó
+è1ø
+è1¹
+è1¾
+è1¼
+ì1a
+ì1b
+ì1c
+ì1d
+ì1e
+ì1f
+ì1g
+ì1h
+ì1i
+ì1j
+ì1k
+ì1l
+ì1m
+ì1n
+ì1o
+ì1p
+ì1q
+ì1r
+ì1s
+ì1t
+ì1u
+ì1v
+ì1w
+ì1x
+ì1y
+ì1z
+ì1æ
+ì1è
+ì1ì
+ì1³
+ì1ñ
+ì1ó
+ì1ø
+ì1¹
+ì1¾
+ì1¼
+³1a
+³1b
+³1c
+³1d
+³1e
+³1f
+³1g
+³1h
+³1i
+³1j
+³1k
+³1l
+³1m
+³1n
+³1o
+³1p
+³1q
+³1r
+³1s
+³1t
+³1u
+³1v
+³1w
+³1x
+³1y
+³1z
+³1æ
+³1è
+³1ì
+³1³
+³1ñ
+³1ó
+³1ø
+³1¹
+³1¾
+³1¼
+ñ1a
+ñ1b
+ñ1c
+ñ1d
+ñ1e
+ñ1f
+ñ1g
+ñ1h
+ñ1i
+ñ1j
+ñ1k
+ñ1l
+ñ1m
+ñ1n
+ñ1o
+ñ1p
+ñ1q
+ñ1r
+ñ1s
+ñ1t
+ñ1u
+ñ1v
+ñ1w
+ñ1x
+ñ1y
+ñ1z
+ñ1æ
+ñ1è
+ñ1ì
+ñ1³
+ñ1ñ
+ñ1ó
+ñ1ø
+ñ1¹
+ñ1¾
+ñ1¼
+ó1a
+ó1b
+ó1c
+ó1d
+ó1e
+ó1f
+ó1g
+ó1h
+ó1i
+ó1j
+ó1k
+ó1l
+ó1m
+ó1n
+ó1o
+ó1p
+ó1q
+ó1r
+ó1s
+ó1t
+ó1u
+ó1v
+ó1w
+ó1x
+ó1y
+ó1z
+ó1æ
+ó1è
+ó1ì
+ó1³
+ó1ñ
+ó1ó
+ó1ø
+ó1¹
+ó1¾
+ó1¼
+ø1a
+ø1b
+ø1c
+ø1d
+ø1e
+ø1f
+ø1g
+ø1h
+ø1i
+ø1j
+ø1k
+ø1l
+ø1m
+ø1n
+ø1o
+ø1p
+ø1q
+ø1r
+ø1s
+ø1t
+ø1u
+ø1v
+ø1w
+ø1x
+ø1y
+ø1z
+ø1æ
+ø1è
+ø1ì
+ø1³
+ø1ñ
+ø1ó
+ø1ø
+ø1¹
+ø1¾
+ø1¼
+¹1a
+¹1b
+¹1c
+¹1d
+¹1e
+¹1f
+¹1g
+¹1h
+¹1i
+¹1j
+¹1k
+¹1l
+¹1m
+¹1n
+¹1o
+¹1p
+¹1q
+¹1r
+¹1s
+¹1t
+¹1u
+¹1v
+¹1w
+¹1x
+¹1y
+¹1z
+¹1æ
+¹1è
+¹1ì
+¹1³
+¹1ñ
+¹1ó
+¹1ø
+¹1¹
+¹1¾
+¹1¼
+¾1a
+¾1b
+¾1c
+¾1d
+¾1e
+¾1f
+¾1g
+¾1h
+¾1i
+¾1j
+¾1k
+¾1l
+¾1m
+¾1n
+¾1o
+¾1p
+¾1q
+¾1r
+¾1s
+¾1t
+¾1u
+¾1v
+¾1w
+¾1x
+¾1y
+¾1z
+¾1æ
+¾1è
+¾1ì
+¾1³
+¾1ñ
+¾1ó
+¾1ø
+¾1¹
+¾1¾
+¾1¼
+¼1a
+¼1b
+¼1c
+¼1d
+¼1e
+¼1f
+¼1g
+¼1h
+¼1i
+¼1j
+¼1k
+¼1l
+¼1m
+¼1n
+¼1o
+¼1p
+¼1q
+¼1r
+¼1s
+¼1t
+¼1u
+¼1v
+¼1w
+¼1x
+¼1y
+¼1z
+¼1æ
+¼1è
+¼1ì
+¼1³
+¼1ñ
+¼1ó
+¼1ø
+¼1¹
+¼1¾
+¼1¼
diff --git a/include/include/README b/include/include/README
new file mode 100644
index 0000000..86de180
--- /dev/null
+++ b/include/include/README
@@ -0,0 +1,113 @@
+Directory lout/include
+
+This directory contains Lout source files for the standard packages.
+The following listing classifies them into types of files. Ordinary
+users only need to know about setup files, not source files.
+
+Setup files (containing mainly lists of options settable by the user)
+---------------------------------------------------------------------
+
+ Setup files for basic document types (choose one):
+
+ doc OrdinarySetup package
+ report ReportSetup package
+ book BookSetup package
+ slides OverheadsSetup package
+ picture IllustrationSetup package
+
+ Setup files for special-purpose packages (choose any combination):
+
+ diag Diag diagram drawing package
+ math Math, a mathematics formatting package
+ graph Graph graph drawing package
+ latin2 Latin2 (Eastern European characters) package
+ pie Pie pie graph drawing package
+ russian Russian language package
+ tbl Tbl table formatting package
+ xrgb @Xrgb symbol (extra named colours)
+
+ Setup files for program formatting packages (choose any combination):
+
+ blue Blue
+ cprint C and C++
+ eiffel Eiffel
+ haskell Haskell
+ java Java
+ javascript JavaScript
+ modula Modula-2 (quick hack, does not use prg2lout)
+ np Nonpareil
+ pas Pascal (quick hack, does not use prg2lout)
+ perl Perl + Pod
+ pod Pod
+ python Python
+ rsl RSL
+ ruby Ruby
+ tcl Tcl
+
+Source files containing Lout and PostScript source code for the packages
+------------------------------------------------------------------------
+
+ bsf BasicSetup package
+ bsf.lpg A PostScript prepend file needed by BasicSetup
+ dsf DocumentSetup package
+ docf OrdinarySetup package
+ reportf ReportSetup package
+ bookf BookSetup package
+ slidesf OverheadsSetup package
+ picturef IllustrationSetup package
+
+ diagf Diag diagram drawing package
+ diagf.etc A file included by diagf
+ diagf.lpg A PostScript prepend file needed by diagf
+ mathf Math, a mathematics formatting package
+ graphf Graph graph drawing package
+ graphf.etc A file included by graphf
+ graphf.lpg A PostScript prepend file needed by graphf
+ pief Pie diagram drawing package
+ pief.lpg A PostScript prepend file needed by pief
+ russian.fd Russian font definitions file (placeholder file)
+ tblf Tbl table formatting package
+
+ bluef Blue
+ cprintf C and C++
+ eiffelf Eiffel
+ haskellf Haskell
+ javaf Java
+ javascriptf JavaScript
+ modulaf Modula-2
+ npf Nonpareil
+ pasf Pascal
+ perlf Perl
+ podf Pod
+ pythonf Python
+ rslf RSL
+ rubyf Ruby
+ tclf Tcl
+
+Obsolete source files retained for backward compatibility
+---------------------------------------------------------
+
+ eq Eq equation formatting package (obsolete, use math)
+ eqf Eq equation formatting package
+ tab Tab table formatting package (obsolete, use tbl)
+ tabf Tab table formatting package
+ tabf.lpg A PostScript prepend file needed by tabf
+ fig Fig advanced graphics package (obsolete, use diag)
+ figf Fig advanced graphics package
+ figf.lpg A PostScript prepend file needed by figf
+ old_graph Old setup file for Graph package
+ old_graphf Old version of Graph package
+
+Miscellaneous source files
+--------------------------
+
+ langdefs Standard language definitions file
+ lengths Helper definitions: @PSLengths and @LoutLengths
+ coltex Helper definitions: @ColourCommand and @TextureCommand
+ mydefs Empty file for if the user doesn't have a mydefs
+ ts The ToySetup package (an expert users' intro. example)
+ init A Lout source file used during installation (lout -x)
+
+
+Jeffrey H. Kingston
+26 June 2013
diff --git a/include/include/blue b/include/include/blue
new file mode 100644
index 0000000..284e189
--- /dev/null
+++ b/include/include/blue
@@ -0,0 +1,118 @@
+###############################################################################
+# #
+# Lout setup file for Blue program printing #
+# #
+# Version 3.0 #
+# Jeffrey H. Kingston #
+# 10 April 2000 #
+# #
+# This file has been placed in the public domain by its author. #
+# #
+###############################################################################
+
+
+###############################################################################
+# #
+# @SysInclude line #
+# #
+# This line causes Lout to read the definitions for this programming #
+# language, and should not be touched. #
+# #
+###############################################################################
+
+@SysInclude { bluef }
+
+
+###############################################################################
+# #
+# @Use clause #
+# #
+# To change the default value of any option, delete the # at the start of #
+# its line and change the value between braces. #
+# #
+###############################################################################
+
+@Use { @BlueSetup
+ # pipe { } # pipe source through this
+ # numbered { No } # No, Yes, or a line number
+ # numberedblanks { Yes } # No or Yes
+ # style { varying @OrIfPlain fixed } # fixed, varying, or symbol
+
+ # the following options apply when style is "fixed"
+
+ # fixedfont { Courier } # font family
+ # fixedsize { -1.0p } # font size
+ # fixedline { 1.0vx } # line-space
+ # fixedblanklinescale { 1.0 } # blank-line scale
+ # fixedspace { lout } # spacing mode
+ # fixedtabin { 8 } # tab interval
+ # fixedtabout { 8s } # tab width
+
+ # fixedidentifiers { Base } # identifier face
+ # fixedkeywords { Base } # keyword face
+ # fixedoperators { Base } # operator face
+ # fixednumbers { Base } # number face
+ # fixedstrings { Base } # string face
+ # fixedcomments { Base } # comment face
+ # fixedlinenumbers { Base } # line numbers face
+
+ # fixedidentifiersformat { @Body } # identifiers format
+ # fixedkeywordsformat { @Body } # keywords format
+ # fixedoperatorsformat { @Body } # operators format
+ # fixednumbersformat { @Body } # numbers format
+ # fixedstringsformat { @Body } # strings format
+ # fixedcommentsformat { @Body } # comments format
+ # fixedlinenumbersformat { @Body } # line numbers format
+
+ # the following options apply when style is "varying"
+
+ # varyingfont { } # font family
+ # varyingsize { 1.0f } # font size
+ # varyingline { 1.0vx } # line-space
+ # varyingblanklinescale { 1.0 } # blank-line scale
+ # varyingspace { lout } # spacing mode
+ # varyingtabin { 8 } # tab interval
+ # varyingtabout { 3f } # tab width
+
+ # varyingidentifiers { Slope } # identifier face
+ # varyingkeywords { Bold } # keyword face
+ # varyingoperators { Base } # operator face
+ # varyingnumbers { Base } # number face
+ # varyingstrings { Slope } # string face
+ # varyingcomments { Base } # comment face
+ # varyinglinenumbers { Base } # line numbers face
+
+ # varyingidentifiersformat { @Body } # identifiers format
+ # varyingkeywordsformat { @Body } # keywords format
+ # varyingoperatorsformat { @Body } # operators format
+ # varyingnumbersformat { @Body } # numbers format
+ # varyingstringsformat { @Body } # strings format
+ # varyingcommentsformat { @Body } # comments format
+ # varyinglinenumbersformat { @Body } # line numbers format
+
+ # the following options apply when style is "symbol"
+
+ # symbolfont { } # font family
+ # symbolsize { 1.0f } # font size
+ # symbolline { 1.0vx } # line-space
+ # symbolblanklinescale { 1.0 } # blank-line scale
+ # symbolspace { lout } # spacing mode
+ # symboltabin { 8 } # tab interval
+ # symboltabout { 3f } # tab width
+
+ # symbolidentifiers { Slope } # identifier face
+ # symbolkeywords { Bold } # keyword face
+ # symboloperators { Base } # operator face
+ # symbolnumbers { Base } # number face
+ # symbolstrings { Slope } # string face
+ # symbolcomments { Base } # comment face
+ # symbollinenumbers { Base } # line numbers face
+
+ # symbolidentifiersformat { @Body } # identifiers format
+ # symbolkeywordsformat { @Body } # keywords format
+ # symboloperatorsformat { @Body } # operators format
+ # symbolnumbersformat { @Body } # numbers format
+ # symbolstringsformat { @Body } # strings format
+ # symbolcommentsformat { @Body } # comments format
+ # symbollinenumbersformat { @Body } # line numbers format
+}
diff --git a/include/include/bluef b/include/include/bluef
new file mode 100644
index 0000000..31af593
--- /dev/null
+++ b/include/include/bluef
@@ -0,0 +1,446 @@
+
+###############################################################################
+# #
+# Lout @BlueSetup package for formatting Blue programs #
+# #
+# Version 3.0 #
+# Jeffrey H. Kingston #
+# 10 April 2000 #
+# #
+# This package uses a filtered body parameter to convert program source #
+# code into Lout source. The filter program is prg2lout, which is #
+# distributed with Lout and should be compiled and installed wherever #
+# Lout itself is. #
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either Version 3, or (at your option) #
+# any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA #
+# #
+# As a special exception, when this file is read by Lout when processing #
+# a Lout source document, you may use the result without restriction. #
+# #
+###############################################################################
+
+export @Blue
+def @BlueSetup
+ named pipe { } # pipe through this
+ named numbered { No } # numbered lines?
+ named blanknumbered { Yes } # blanks numbered?
+ named style
+ named @OrIfPlain left x right y
+ { @BackEnd @Case { PlainText @Yield y else @Yield x } }
+ { varying @OrIfPlain fixed } # print style
+
+ # the following options apply when style is "fixed"
+ named fixedfont { Courier }# font family
+ named fixedsize { -1.0p } # font size
+ named fixedline { 1.0vx } # line-space
+ named fixedblanklinescale { 1.0 } # blank-line scale
+ named fixedspace { lout } # spacing mode
+ named fixedtabin { 8 } # tab interval
+ named fixedtabout { 8s } # tab width
+
+ named fixedidentifiers { Base } # identifier face
+ named fixedkeywords { Base } # keyword face
+ named fixedoperators { Base } # operator face
+ named fixednumbers { Base } # number face
+ named fixedstrings { Base } # string face
+ named fixedcomments { Base } # comment face
+ named fixedlinenumbers { Base } # line numbers face
+
+ named fixedidentifiersformat right @Body { @Body } # identifier format
+ named fixedkeywordsformat right @Body { @Body } # keyword format
+ named fixedoperatorsformat right @Body { @Body } # operators format
+ named fixednumbersformat right @Body { @Body } # number format
+ named fixedstringsformat right @Body { @Body } # string format
+ named fixedcommentsformat right @Body { @Body } # comment format
+ named fixedlinenumbersformat right @Body { @Body } # line nums format
+
+ # the following options apply when style is "varying"
+ named varyingfont { } # font family
+ named varyingsize { 1.0f } # font size
+ named varyingline { 1.0vx } # line-space
+ named varyingblanklinescale { 1.0 } # blank-line scale
+ named varyingspace { lout } # spacing mode
+ named varyingtabin { 8 } # tab interval
+ named varyingtabout { 3f } # tab width
+
+ named varyingidentifiers { Slope } # identifier face
+ named varyingkeywords { Bold } # keyword face
+ named varyingoperators { Base } # operator face
+ named varyingnumbers { Base } # number face
+ named varyingstrings { Slope } # string face
+ named varyingcomments { Base } # comment face
+ named varyinglinenumbers { Base } # line numbers face
+
+ named varyingidentifiersformat right @Body { @Body } # identifier format
+ named varyingkeywordsformat right @Body { @Body } # keyword format
+ named varyingoperatorsformat right @Body { @Body } # operators format
+ named varyingnumbersformat right @Body { @Body } # number format
+ named varyingstringsformat right @Body { @Body } # string format
+ named varyingcommentsformat right @Body { @Body } # comment format
+ named varyinglinenumbersformat right @Body { @Body } # line nums format
+
+ # the following options apply when style is "symbol"
+ named symbolfont { } # font family
+ named symbolsize { 1.0f } # font size
+ named symbolline { 1.0vx } # line-space
+ named symbolblanklinescale { 1.0 } # blank-line scale
+ named symbolspace { lout } # spacing mode
+ named symboltabin { 8 } # tab interval
+ named symboltabout { 3f } # tab width
+
+ named symbolidentifiers { Slope } # identifier face
+ named symbolkeywords { Bold } # keyword face
+ named symboloperators { Base } # operator face
+ named symbolnumbers { Base } # number face
+ named symbolstrings { Slope } # string face
+ named symbolcomments { Base } # comment face
+ named symbollinenumbers { Base } # line numbers face
+
+ named symbolidentifiersformat right @Body { @Body } # identifier format
+ named symbolkeywordsformat right @Body { @Body } # keyword format
+ named symboloperatorsformat right @Body { @Body } # operators format
+ named symbolnumbersformat right @Body { @Body } # number format
+ named symbolstringsformat right @Body { @Body } # string format
+ named symbolcommentsformat right @Body { @Body } # comment format
+ named symbollinenumbersformat right @Body { @Body } # line nums format
+
+@Begin
+
+ export
+
+ @PI @PK @PO @PN @PS @PC @PL @PA @PM @PD
+ @A "$>"
+
+ def @Blue
+ named style { style } # style
+ named numbered { numbered } # want numbered lines?
+ named blanknumbered { blanknumbered } # numbered blank lines?
+ named pipe { pipe } # pipe through this first
+ named font { dft } # font family
+ named size { dft } # font size
+ named line { dft } # line-space
+ named blanklinescale { dft } # blank-line scale
+ named space { dft } # spacing mode
+ named tabin { dft } # tab interval
+ named tabout { dft } # tab width
+ named identifiers { dft } # ident. font
+ named keywords { dft } # keyword font
+ named operators { dft } # operator font
+ named numbers { dft } # number font
+ named strings { dft } # string font
+ named comments { dft } # comment font
+ named linenumbers { dft } # line numbers font
+ body @Body # filtered, see below
+ @Begin
+
+ def @Test # returns x unless x is dft
+ left x
+ named iffixed {}
+ named ifvarying {}
+ named ifsymbol {}
+ {
+ x @Case {
+ dft @Yield {
+ style @Case {
+ fixed @Yield { iffixed }
+ varying @Yield { ifvarying }
+ symbol @Yield { ifsymbol }
+ }
+ }
+ else @Yield x
+ }
+ }
+
+
+ def @Else # returns x, or y if x is dft
+ left x
+ right y
+ {
+ x @Case {
+ dft @Yield y
+ else @Yield x
+ }
+ }
+
+
+ def @InitTab
+ {
+ tabin @Test
+ iffixed { fixedtabin }
+ ifvarying { varyingtabin }
+ ifsymbol { symboltabin }
+ }
+
+
+ def @InitTabWidth
+ {
+ tabout @Test
+ iffixed { fixedtabout }
+ ifvarying { varyingtabout }
+ ifsymbol { symboltabout }
+ }
+
+
+ def @Filter
+ {
+ def wantnumbered
+ {
+ numbered @Case {
+ { No no } @Yield ""
+ { Yes yes } @Yield "-L"
+ else @Yield { "-L"numbered }
+ }
+ }
+
+ def wantblanknumbered
+ {
+ blanknumbered @Case {
+ { No no } @Yield "-M"
+ { NoPrint noprint } @Yield "-N"
+ { Yes yes } @Yield ""
+ }
+ }
+
+ pipe @Case {
+ "" @Yield {
+ "prg2lout -r -lBlue" wantblanknumbered wantnumbered
+ -i{@FilterIn} -o{@FilterOut} -e{@FilterErr}
+ -t{@InitTab} -T{@InitTabWidth}
+ }
+ else @Yield {
+ "cat" @FilterIn "|" pipe "|"
+ "prg2lout -r -lBlue" wantblanknumbered wantnumbered
+ -o{@FilterOut} -e{@FilterErr}
+ -t{@InitTab} -T{@InitTabWidth}
+ }
+ }
+ }
+
+
+ def @InitFontFamily
+ {
+ font @Test
+ iffixed { fixedfont }
+ ifvarying { varyingfont }
+ ifsymbol { symbolfont }
+ }
+
+
+ def @InitSize
+ {
+ size @Test
+ iffixed { fixedsize }
+ ifvarying { varyingsize }
+ ifsymbol { symbolsize }
+ }
+
+
+ def @InitLine
+ {
+ line @Test
+ iffixed { fixedline }
+ ifvarying { varyingline }
+ ifsymbol { symbolline }
+ }
+
+
+ def @InitBLS
+ {
+ blanklinescale @Test
+ iffixed { fixedblanklinescale }
+ ifvarying { varyingblanklinescale }
+ ifsymbol { symbolblanklinescale }
+ }
+
+
+ def @InitSpace
+ {
+ space @Test
+ iffixed { fixedspace }
+ ifvarying { varyingspace }
+ ifsymbol { symbolspace }
+ }
+
+
+ def @PI # for formatting identifiers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedidentifiersformat {
+ { identifiers @Else fixedidentifiers } @Font x
+ }
+ varying @Yield varyingidentifiersformat {
+ { identifiers @Else varyingidentifiers } @Font x
+ }
+ symbol @Yield symbolidentifiersformat {
+ { identifiers @Else symbolidentifiers } @Font x
+ }
+ }
+ }
+
+
+ def @PK # for formatting keywords
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedkeywordsformat {
+ { keywords @Else fixedkeywords } @Font x
+ }
+ varying @Yield varyingkeywordsformat {
+ { keywords @Else varyingkeywords } @Font x
+ }
+ symbol @Yield symbolkeywordsformat {
+ { keywords @Else symbolkeywords } @Font x
+ }
+ }
+ }
+
+
+ def @PO # for formatting operators
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedoperatorsformat {
+ { operators @Else fixedoperators } @Font x
+ }
+ varying @Yield varyingoperatorsformat {
+ { operators @Else varyingoperators } @Font x
+ }
+ symbol @Yield symboloperatorsformat {
+ { operators @Else symboloperators } @Font x
+ }
+ }
+ }
+
+
+ def @PN # for formatting numbers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixednumbersformat {
+ { numbers @Else fixednumbers } @Font x
+ }
+ varying @Yield varyingnumbersformat {
+ { numbers @Else varyingnumbers } @Font x
+ }
+ symbol @Yield symbolnumbersformat {
+ { numbers @Else symbolnumbers } @Font x
+ }
+ }
+ }
+
+
+ def @PS # for formatting strings
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedstringsformat {
+ { strings @Else fixedstrings } @Font x
+ }
+ varying @Yield varyingstringsformat {
+ { strings @Else varyingstrings } @Font x
+ }
+ symbol @Yield symbolstringsformat {
+ { strings @Else symbolstrings } @Font x
+ }
+ }
+ }
+
+
+ def @PC # for formatting comments
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedcommentsformat {
+ { comments @Else fixedcomments } @Font x
+ }
+ varying @Yield varyingcommentsformat {
+ { comments @Else varyingcomments } @Font x
+ }
+ symbol @Yield symbolcommentsformat {
+ { comments @Else symbolcomments } @Font x
+ }
+ }
+ }
+
+
+ def @PL # for formatting line numbers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedlinenumbersformat {
+ { linenumbers @Else fixedlinenumbers } @Font x
+ }
+ varying @Yield varyinglinenumbersformat {
+ { linenumbers @Else varyinglinenumbers } @Font x
+ }
+ symbol @Yield symbollinenumbersformat {
+ { linenumbers @Else symbollinenumbers } @Font x
+ }
+ }
+ }
+
+
+ def @PA # for formatting asterisks
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "*"
+ else @Yield { "0.5w" @VShift "*" }
+ }
+ }
+
+
+ def @PM # for formatting minus signs
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "-"
+ else @Yield style @Case {
+ fixed @Yield "-"
+ else @Yield { { Symbol Base } @Font @Char "minus" }
+ }
+ }
+ }
+
+
+ def @PD # for formatting dots, if wanted larger
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "."
+ else @Yield { "1.4f" @Font "+0.04f" @VShift "." &"0.05f" }
+ }
+ }
+
+
+ def @A # get characters from the Adobe Symbol font
+ named sym {}
+ right x
+ {
+ style @Case {
+ symbol @Yield { { Symbol Base } @Font @Char sym }
+ else @Yield { x }
+ }
+ }
+
+
+ macro "$>" { {} & }
+
+
+ Programming @Language
+ { @InitFontFamily Base @InitSize } @Font @InitSpace @Space
+ { @InitLine lines "blanklinescale" @InitBLS } @Break @Body
+
+ @End @Blue
+
+@End @BlueSetup
diff --git a/include/include/book b/include/include/book
new file mode 100644
index 0000000..37f5cdb
--- /dev/null
+++ b/include/include/book
@@ -0,0 +1,542 @@
+###############################################################################
+# #
+# Lout setup file for books #
+# #
+# Jeffrey H. Kingston #
+# #
+# This file has been placed in the public domain by its author. #
+# #
+###############################################################################
+
+
+###############################################################################
+# #
+# @SysInclude commands for standard packages. #
+# #
+###############################################################################
+
+ @SysInclude { langdefs } # language definitions
+ @SysInclude { bsf } # BasicSetup package
+ @SysInclude { dsf } # DocumentSetup package
+ @SysInclude { bookf } # BookSetup extension
+
+
+###############################################################################
+# #
+# @Include command for reading personal definitions from current directory. #
+# #
+###############################################################################
+
+ @Include { mydefs }
+
+###############################################################################
+# #
+# The @BasicSetup @Use clause - basics, lists, paragraphs, displays. #
+# #
+# To change the default value of any option, delete the # at the start of #
+# its line and change the value between braces. #
+# #
+###############################################################################
+
+@Use { @BasicSetup
+ # @InitialFont { Times Base 12p } # initial font
+ # @InitialBreak {{adjust 1.2fx hyphen} @OrIfPlain {ragged 1fx nohyphen}}
+ # @InitialOutdent { 2f @OrIfPlain 4s } # initial outdent
+ # @InitialSpace { lout } # initial space style
+ # @InitialLanguage { English } # initial language
+ # @InitialColour { black } # initial colour
+ # @InitialBackgroundColour { white } # initial background colour
+ # @OptimizePages { No } # optimize page breaks?
+ # @HeadingFont { Bold } # font for @Heading
+ # @FixedWidthFont { Courier Base -1p } # font for @F
+ # @ParaGap { 1.3vx @OrIfPlain 1f } # gap between paragraphs
+ # @ParaIndent { 2.00f @OrIfPlain 5s } # first-line indent for @PP
+ # @DisplayGap { 1.00v @OrIfPlain 1f } # gap above, below displays
+ # @DisplayIndent { 2.00f @OrIfPlain 5s } # @IndentedDisplay indent
+ # @DefaultIndent { 0.5rt } # @Display indent
+ # @DisplayNumStyle { (num) } # style of display numbers
+ # @WideIndent { 4.00f @OrIfPlain 10s } # @WideTaggedList indent
+ # @VeryWideIndent { 8.00f @OrIfPlain 20s } # @VeryWideTaggedList indent
+ # @ListOuterGap { 1.00v @OrIfPlain 1f } # gap before, after lists
+ # @ListGap { 1.00v @OrIfPlain 1f } # gap between list items
+ # @ListIndent { 0s } # indent of list items
+ # @ListRightIndent { 0s } # right indent of list items
+ # @ListLabelWidth { 2.00f @OrIfPlain 5s } # width allowed for list tags
+ # @ListLabelRight { No } # right-adjust list labels
+ # @ListLabelRightGap { 2s } # gap when right-adjusting
+ # @ListFont { } # font of list items
+ # @ListBreak { } # break style of list items
+ # @NumberSeparator { . } # separates nums like 2.3.7
+ # @CrossLinkFormat { @Body } # format of cross links
+ # @ExternalLinkFormat { @Body } # format of external links
+}
+
+
+###############################################################################
+# #
+# The @DocumentSetup @Use clause - page layout plus figures, tables, etc. #
+# #
+# To change the default value of any option, delete the # at the start of #
+# its line and change the value between braces. #
+# #
+###############################################################################
+
+@Use { @DocumentSetup
+ # @PageType { A4 @OrIfPlain Other} # page type (width, height)
+ # @PageWidth { 80s } # page width if type Other
+ # @PageHeight { 66f } # page height if type Other
+ # @PageOrientation { Portrait } # Portrait, Landscape, etc.
+ # @PageBackground { } # background of each page
+ # @TopMargin { 2.5c @OrIfPlain 6f } # top margin of all pages
+ # @FootMargin { 2.5c @OrIfPlain 6f } # bottom margin of all pages
+ # @OddLeftMargin { 2.5c @OrIfPlain 10s } # left margin of odd pages
+ # @OddRightMargin { 2.5c @OrIfPlain 10s } # right margin of odd pages
+ # @EvenLeftMargin { 2.5c @OrIfPlain 10s } # left margin of even pages
+ # @EvenRightMargin { 2.5c @OrIfPlain 10s } # right margin of even pages
+ # @OddLeftBodyMargin { 0c } # extra margin for page body
+ # @OddRightBodyMargin { 0c } # extra margin for page body
+ # @EvenLeftBodyMargin { 0c } # extra margin for page body
+ # @EvenRightBodyMargin{ 0c } # extra margin for page body
+ # @PageBoxType { None } # None Box CurveBox ShadowBox
+ # @PageBoxMargin { 1.00c } # page box margin
+ # @PageBoxLineWidth { } # page box line thickness
+ # @PageBoxPaint { none } # page box paint
+ # @PageBoxShadow { 0.60c } # shadow margin if ShadowBox
+ # @PageEnclose { @Body } # enclose every page in this
+ # @ColumnNumber { 1 } # number of columns (1 to 10)
+ # @ColumnGap { 1.00c @OrIfPlain 6s } # column gap
+
+ # @FigureLocation { PageTop } # default figure location
+ # @FigureFormat { @CC @Body } # default figure format
+ # @FigureWord { figure } # "Figure" word else anything
+ # @FigureNumbers { Arabic } # method of numbering figures
+ # @FigureCaptionPos { Below } # Above or Below
+ # @FigureCaptionFont { -2p } # figure caption font
+ # @FigureCaptionBreak { adjust hyphen 1.2fx } # figure caption break
+ # @FigureCaptionFormat{ {@B { word @NumSep number. &2s }} @Insert caption }
+ # @MakeFigureContents { No } # list of figures at start
+
+ # @TableLocation { PageTop } # default table location
+ # @TableFormat { @CC @Body } # default table format
+ # @TableWord { table } # "Table" word else anything
+ # @TableNumbers { Arabic } # method of numbering tables
+ # @TableCaptionPos { Below } # Above or Below
+ # @TableCaptionFont { -2p } # table caption font
+ # @TableCaptionBreak { adjust hyphen 1.2fx } # table caption break
+ # @TableCaptionFormat { {@B { word @NumSep number. &2s }} @Insert caption }
+ # @MakeTableContents { No } # list of tables at start
+
+ # @FloaterLocation { PageTop } # default floater location
+ # @FloaterFormat { @CC @Body } # default floater format
+ # @FloaterWord { floater } # "Floater" word else anything
+ # @FloaterNumbers { Arabic } # method of numbering floaters
+ # @FloaterCaptionPos { Below } # Above or Below
+ # @FloaterCaptionFont { -2p } # floater caption font
+ # @FloaterCaptionBreak{ adjust hyphen 1.2fx } # floater caption break
+ # @FloaterCaptionFormat{ {@B { word @NumSep number. &2s }} @Insert caption }
+ # @MakeFloaterContents{ No } # list of floaters at start
+
+ # @MakeContents { No } # make contents? Yes or No
+ @MakeContents { Yes } # make contents? Yes or No
+ # @ContentsGap { 0.20v @OrIfPlain 0f } # extra gap above minor entry
+ # @ContentsGapAbove { 0.80v @OrIfPlain 1f } # extra gap above major entry
+ # @ContentsGapBelow { 0.00v @OrIfPlain 0f } # extra gap below major entry
+ # @ContentsFont { Bold } # font for major entry
+ # @ContentsPartGapAbove { 1.00v @OrIfPlain 1f } # extra gap above `part' entry
+ # @ContentsPartGapBelow { 0.00v @OrIfPlain 0f } # extra gap below `part' entry
+ # @ContentsFormat { number @DotSep title } # contents entry format
+ # @ContentsLeader { .. } # leader symbol in contents
+ # @ContentsLeaderGap { 4s @OrIfPlain 2s } # gap between leaders
+ # @ContentsRightWidth { 3f @OrIfPlain 6s } # page numbers column width
+
+ # @MakeReferences { Yes } # make references? Yes or No
+ # @RefCiteStyle { [cite] } # citation style
+ # @RefCiteLabels { @RefNum } # citation items
+ # @RefNumbers { Arabic } # reference numbers
+ # @RefListFormat { Labels } # NoLabels, Labels, etc.
+ # @RefListLabels { [@RefNum] } # ref list label format
+ # @RefListTitle { references } # title of reference list
+ # @ChapRefListTitle { references } # title of chapter ref list
+ # @RefListIndent { 0s } # indent to left of labels
+ # @RefListRightIndent { 0s } # indent to right of items
+ # @RefListGap { @ListGap } # gap between ref list items
+ # @RefListFont { } # font used in reference list
+ # @RefListBreak { } # break style of ref list
+ # @RefListLabelWidth { @ListLabelWidth } # Labels column width
+ # @RefListSortKey { @Tag } # sorting key
+
+ # @MakeGlossary { No } # make glossary? Yes or No
+ # @GlossaryText { @Null } # glossary initial text
+ # @GlossaryFont { } # glossary entries font
+ # @GlossaryBreak { } # glossary entries break
+ # @GlossaryFormat { +3p @Font @S @Name # glossary entries format
+ # @Right @I { @Word&&page @PageNum }
+ # @DP @RawIndentedDisplay @Body }
+ # @GlossaryGap { @DisplayGap } # gap between glossary entries
+ # @GlossaryColumnNumber{ 2 } # glossary columns (1 to 10)
+ # @GlossaryColumnGap { 1.00c @OrIfPlain 6s } # glossary column gap
+ # @InGlossaryFont { smallcaps } # font for @InGlossary
+ # @InGlossaryFormat { @Body } # format for @InGlossary
+
+ # @MakeIndex { No } # make index? Yes or No
+ # @MakeIndex { No } # make index? Yes or No
+ @MakeIndex { Yes } # make index? Yes or No
+ # @IndexText { @Null } # index initial text
+ # @IndexFont { } # index entries font
+ # @IndexBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break
+ # @IndexFormat { @Body } # @Index format
+ # @SubIndexFormat { {1f @Wide}@Body } # @SubIndex format
+ # @SubSubIndexFormat { {2f @Wide}@Body } # @SubSubIndex format
+ # @IndexTypeOrdinary { @PageNum } # Ordinary pagenum format
+ # @IndexTypeMain { @B @PageNum } # Main pagenum format
+ # @IndexTypeSpecial { @I @PageNum } # Special pagenum format
+ # @IndexRangeFormat { @From--@To } # index page range format
+ # @IndexColumnNumber { 2 } # index columns (1 to 10)
+ # @IndexColumnGap { 1.00c @OrIfPlain 6s } # index column gap
+ # @IndexCtd { Yes } # include (ctd.) lines
+ # @IndexCtdWord { continued } # "ctd." in current lang.
+ # @IndexCtdFormat { @Body @I (@CtdWord) } # format of ctd.
+ # @IndexSpacerAbove { 2v } # space above index spacer
+ # @IndexSpacerBelow { 1v } # space below index spacer
+ # @IndexSpacerFont { +3p } # font of index spacer
+ # @IndexSpacerFormat { @Body } # format of index spacer
+
+ # @MakeIndexA { No } # make index A? Yes or No
+ # @IndexAText { @Null } # index A initial text
+ # @IndexAFont { } # index A entries font
+ # @IndexABreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break
+ # @IndexAFormat { @Body } # @IndexA format
+ # @SubIndexAFormat { {1f @Wide}@Body } # @SubIndexA format
+ # @SubSubIndexAFormat { {2f @Wide}@Body } # @SubSubIndexA format
+ # @IndexATypeOrdinary { @PageNum } # Ordinary pagenum format
+ # @IndexATypeMain { @B @PageNum } # Main pagenum format
+ # @IndexATypeSpecial { @I @PageNum } # Special pagenum format
+ # @IndexARangeFormat { @From--@To } # index page range format
+ # @IndexAColumnNumber { 2 } # index A columns (1 to 10)
+ # @IndexAColumnGap { 1.00c @OrIfPlain 6s } # index A column gap
+ # @IndexACtd { Yes } # include (ctd.) lines
+ # @IndexACtdWord { continued } # "ctd." in current lang.
+ # @IndexACtdFormat { @Body @I (@CtdWord) } # format of ctd.
+ # @IndexASpacerAbove { 2v } # space above index A spacer
+ # @IndexASpacerBelow { 1v } # space below index A spacer
+ # @IndexASpacerFont { +3p } # font of index A spacer
+ # @IndexASpacerFormat { @Body } # format of index A spacer
+
+ # @MakeIndexB { No } # make index B? Yes or No
+ # @IndexBText { @Null } # index B initial text
+ # @IndexBFont { } # index B entries font
+ # @IndexBBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break
+ # @IndexBFormat { @Body } # @IndexB format
+ # @SubIndexBFormat { {1f @Wide}@Body } # @SubIndexB format
+ # @SubSubIndexBFormat { {2f @Wide}@Body } # @SubSubIndexB format
+ # @IndexBTypeOrdinary { @PageNum } # Ordinary pagenum format
+ # @IndexBTypeMain { @B @PageNum } # Main pagenum format
+ # @IndexBTypeSpecial { @I @PageNum } # Special pagenum format
+ # @IndexBRangeFormat { @From--@To } # index page range format
+ # @IndexBColumnNumber { 2 } # index B columns (1 to 10)
+ # @IndexBColumnGap { 1.00c @OrIfPlain 6s } # index B column gap
+ # @IndexBCtd { Yes } # include (ctd.) lines
+ # @IndexBCtdWord { continued } # "ctd." in current lang.
+ # @IndexBCtdFormat { @Body @I (@CtdWord) } # format of ctd.
+ # @IndexBSpacerAbove { 2v } # space above index B spacer
+ # @IndexBSpacerBelow { 1v } # space below index B spacer
+ # @IndexBSpacerFont { +3p } # font of index B spacer
+ # @IndexBSpacerFormat { @Body } # format of index B spacer
+
+ # @MakeColophon { No } # make colophon? Yes or No
+ # @ColophonFont { } # font for colophon
+ # @ColophonBreak { } # break style for colophon
+ # @ColophonColumnNumber { 1 } # colophon columns (1 to 10)
+ # @ColophonColumnGap { 1.00c @OrIfPlain 6s } # colophon column gap
+
+ # @TopGap { 0.75c @OrIfPlain 2f } # gap between figures
+ # @MidGap { 0.75c @OrIfPlain 2f } # gap above/below body text
+
+ # @FootNoteNumbers { Arabic } # footnote numbers
+ # @FootNoteThrough { No } # numbered through chapter?
+ # @FootNoteLocation { ColFoot } # where the footnote appears
+ # @FootNoteFont { 0.80f } # font for footnotes
+ # @FootNoteBreak { 1.2fx @OrIfPlain 1fx } # break for footnotes
+ # @FootNoteFormat { { number &0.05f } @Insert body } # footnote format
+ # @FootLen { 2.00c @OrIfPlain 10s } # length of footnote line
+ # @FootAboveGap { @DisplayGap } # gap above footnote line
+ # @FootGap { 0.20c @OrIfPlain 1fx } # gap between footnotes
+ # @MarginNoteFont { 0.80f } # font of margin notes
+ # @MarginNoteBreak { ragged 1.10fx } # break style of margin notes
+ # @MarginNoteHGap { 0.5c } # horizontal gap to notes
+ # @MarginNoteVGap { @DisplayGap } # min vertical gap between
+ # @MarginNoteWidth { 1.50c } # width of margin notes
+ # @EndNoteNumbers { Arabic } # endnote numbers
+ # @EndNoteFont { 0.80f } # font of endnotes
+ # @EndNoteBreak { 1.2fx @OrIfPlain 1fx } # break for endnotes
+ # @EndNoteFormat { { number &0.05f } @Insert body } # endnote format
+ # @EndNoteGap { 0.20c @OrIfPlain 1f } # gap between endnotes
+
+ # @TheoremWord { theorem } # "Theorem" word, etc.
+ # @TheoremTitleFormat { (title) } # only if title present
+ # @TheoremFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @DefinitionWord { definition } # "Definition" word, etc.
+ # @DefinitionTitleFormat { (title) } # only if title present
+ # @DefinitionFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @ClaimWord { claim } # "Claim" word, etc.
+ # @ClaimTitleFormat { (title) } # only if title present
+ # @ClaimFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @PropositionWord { proposition } # "Proposition" word, etc.
+ # @PropositionTitleFormat { (title) } # only if title present
+ # @PropositionFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @LemmaWord { lemma } # "Lemma" word, etc.
+ # @LemmaTitleFormat { (title) } # only if title present
+ # @LemmaFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @CorollaryWord { corollary } # "Corollary" word, etc.
+ # @CorollaryTitleFormat { (title) } # only if title present
+ # @CorollaryFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @ExampleWord { example } # "Example" word, etc.
+ # @ExampleTitleFormat { (title) } # only if title present
+ # @ExampleFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @ProofWord { proof } # "Proof" word, etc.
+
+ # @PageHeaders { Simple } # None Simple Titles NoTitles
+ @PageHeaders { Titles } # None Simple Titles NoTitles
+ # @PageNumbers { Arabic } # page numbers
+ # @FirstPageNumber { 1 } # number of first page
+ # @IntroPageNumbers { Roman } # intro page numbers
+ # @IntroFirstPageNumber{ 1 } # number of first intro page
+ # @StructPageNums { No } # make structured page numbers
+ # @PageNumberFormat { number } # format of all page numbers
+
+ # @OddTop { @Centre{- @PageNum -} } # Simple page headers
+ # @OddFoot { @Null }
+ # @EvenTop { @Centre{- @PageNum -} }
+ # @EvenFoot { @Null }
+ # @StartOddTop { @Null }
+ # @StartOddFoot { @Null }
+ # @StartEvenTop { @Null }
+ # @StartEvenFoot { @Null }
+ # @IntroOddTop { @Null }
+ # @IntroOddFoot { @Centre @PageNum }
+ # @IntroEvenTop { @Null }
+ # @IntroEvenFoot { @Centre @PageNum }
+ # @IntroStartOddTop { @Null }
+ # @IntroStartOddFoot { @Null }
+ # @IntroStartEvenTop { @Null }
+ # @IntroStartEvenFoot { @Null }
+
+ # Titles, NoTitles headers
+ # @RunningOddTop { @I {@MinorNum @DotSep @MinorTitle} @Right @B @PageNum }
+ # @RunningOddFoot { @Null }
+ # @RunningEvenTop { @B @PageNum @Right @I {@MajorNum @DotSep @MajorTitle} }
+ # @RunningEvenFoot { @Null }
+ # @RunningStartOddTop { @Null }
+ # @RunningStartOddFoot { @Centre { Bold 0.8f } @Font @PageNum }
+ # @RunningStartEvenTop { @Null }
+ # @RunningStartEvenFoot { @Centre { Bold 0.8f } @Font @PageNum }
+ # @RunningIntroOddTop { @Null }
+ # @RunningIntroOddFoot { @Right @PageNum }
+ # @RunningIntroEvenTop { @Null }
+ # @RunningIntroEvenFoot { @PageNum }
+ # @RunningIntroStartOddTop { @Null }
+ # @RunningIntroStartOddFoot { @Null }
+ # @RunningIntroStartEvenTop { @Null }
+ # @RunningIntroStartEvenFoot { @Null }
+}
+
+
+###############################################################################
+# #
+# The @BookSetup @Use clause - options specific to books. #
+# #
+###############################################################################
+
+@Use { @BookSetup
+ # @TitlePageFont { Helvetica Base} # title page font (not size)
+ # @SeparateIntroNumbering { Yes } # separate intro page numbers
+ # @PrefaceAfterContents { No } # Yes or No
+ # @ChapterStartPages { Any } # Any, Odd, Even, SamePage
+ # @ReferencesBeforeAppendices { No } # references before appendices
+ # @PrefaceWord { preface } # word for "Preface"
+ # @ContentsWord { contents } # word for "Contents"
+ # @FigureListWord { figurelist } # word for "List of Figures"
+ # @TableListWord { tablelist } # word for "List of Tables"
+ # @FloaterListWord { floaterlist } # word for "List of Floaters"
+ # @IntroductionWord { introduction } # word for "Introduction"
+ # @AbbreviationsWord { abbreviations } # word for "Abbreviations"
+ # @ChapterWord { chapter } # word for "Chapter"
+ # @AppendixWord { appendix } # word for "Appendix"
+ # @GlossaryWord { glossary } # word for "Glossary"
+ # @IndexWord { index } # word for "Index"
+ # @IndexAWord { index } # word for "Index" (A)
+ # @IndexBWord { index } # word for "Index" (B)
+ # @ColophonWord { colophon } # word for "Colophon"
+ # @SubPrefaceNumbers { None } # kind of sub-preface numbers
+ # @FirstSubPrefaceNumber { 1 } # first sub-preface number (Arabic)
+ # @SubIntroductionNumbers { None } # kind of sub-introduction numbers
+ # @FirstSubIntroductionNumber { 1 } # first sub-introduction number
+ # @ChapterNumbers { Arabic } # kind of chapter numbers
+ # @FirstChapterNumber { 1 } # first chapter number (Arabic)
+ # @SectionNumbers { Arabic } # kind of section numbers
+ # @FirstSectionNumber { 1 } # first section number (Arabic)
+ # @SubSectionNumbers { Arabic } # kind of subsection numbers
+ # @FirstSubSectionNumber { 1 } # first subsect number (Arabic)
+ # @SubSubSectionNumbers { Arabic } # kind of sub-subs. numbers
+ # @FirstSubSubSectionNumber { 1 } # first sub-sub number (Arabic)
+ # @AppendixNumbers { UCAlpha } # kind of appendix numbers
+ # @FirstAppendixNumber { 1 } # first appendix num (Arabic)
+ # @SubAppendixNumbers { Arabic } # kind of subappendix numbers
+ # @FirstSubAppendixNumber { 1 } # first sub-app num (Arabic)
+ # @SubSubAppendixNumbers { Arabic } # kind of sub-subapp. numbers
+ # @FirstSubSubAppendixNumber { 1 } # first sub-sub num (Arabic)
+ # @PartHeadingFont { Helvetica Base 2.50f } # part head font
+ # @PartHeadingBreak { clines 1.2fx nohyphen } # part head break
+ # @PartHeadingFormat { @CD number @DP @CD title } # part head format
+ # @ChapterHeadingFont { Bold 2.00f } # chapter head font
+ # @ChapterHeadingBreak { ragged 1.2fx nohyphen } # chapter head break
+ # @ChapterHeadingFormat { number @DotSep title } # format of chap. head
+ # @SubPrefaceHeadingFont { Bold } # sub-preface head font
+ # @SubPrefaceHeadingBreak { ragged 1.2fx nohyphen } # sub-preface head break
+ # @SubPrefaceHeadingFormat { number @DotSep title } # format of s.-p. head
+ # @SubIntroductionHeadingFont { Bold } # sub-intro head font
+ # @SubIntroductionHeadingBreak { ragged 1.2fx nohyphen} # sub-intro head break
+ # @SubIntroductionHeadingFormat { number @DotSep title} # format of sub-intro. hd
+ # @SectionHeadingFont { Bold } # section head font
+ # @SectionHeadingBreak { ragged 1.2fx nohyphen } # section head break
+ # @SectionHeadingFormat { number @DotSep title } # section head fmt
+ # @SubSectionHeadingFont { Bold } # subs. head font
+ # @SubSectionHeadingBreak { ragged 1.2fx nohyphen } # subs. head break
+ # @SubSectionHeadingFormat { number @DotSep title } # subs. head fmt
+ # @SubSubSectionHeadingFont { Slope } # sub-subs. head font
+ # @SubSubSectionHeadingBreak { ragged 1.2fx nohyphen } # sub-subs. head break
+ # @SubSubSectionHeadingFormat { number @DotSep title } # sub-subs. head fmt
+ # @AppendixHeadingFont { Bold 2.00f } # appendix head font
+ # @AppendixHeadingBreak { ragged 1.2fx nohyphen } # appendix head break
+ # @AppendixHeadingFormat { number @DotSep title } # appendix head fmt
+ # @SubAppendixHeadingFont { Bold } # subapp. head font
+ # @SubAppendixHeadingBreak { ragged 1.2fx nohyphen } # subapp. head break
+ # @SubAppendixHeadingFormat { number @DotSep title } # subapp. head fmt
+ # @SubSubAppendixHeadingFont { Slope } # sub-suba. head font
+ # @SubSubAppendixHeadingBreak { ragged 1.2fx nohyphen } # sub-suba. head break
+ # @SubSubAppendixHeadingFormat{ number @DotSep title } # sub-suba. head fmt
+ # @AbovePartGap { 4.00f } # gap above part title
+ # @AboveChapterGap { 3.00f } # above major titles
+ # @SubPrefaceGap { 2.0v @OrIfPlain 3f } # between sub-prefaces
+ # @SubIntroductionGap { 2.0v @OrIfPlain 3f } # between sub-intros
+ # @SectionGap { 2.0v @OrIfPlain 3f } # between sections
+ # @SubSectionGap { 1.5v @OrIfPlain 2f } # between subsects
+ # @SubSubSectionGap { 1.5v @OrIfPlain 2f } # between sub-subs.
+ # @SubAppendixGap { 2.0v @OrIfPlain 3f } # between subappendices
+ # @SubSubAppendixGap { 1.5v @OrIfPlain 2f } # between sub-subapps
+ # @PrefaceInContents { Yes } # add preface to contents
+ # @SubPrefaceInContents { No } # add sub-preface to contents
+ # @AbbreviationsInContents { Yes } # add abbreviations to contents
+ # @IntroductionInContents { Yes } # add introduction to contents
+ # @SubIntroductionInContents { No } # add sub-intro to contents
+ # @PartInContents { Yes } # add parts to contents
+ # @ChapterInContents { Yes } # add chapters to contents
+ # @SectionInContents { Yes } # add sections to contents
+ # @SubSectionInContents { Yes } # add subsections to contents
+ # @SubSubSectionInContents { No } # add sub-subsects to contents
+ # @AppendixInContents { Yes } # add appendices to contents
+ # @SubAppendixInContents { Yes } # add subappendices to contents
+ # @SubSubAppendixInContents { No } # add sub-subapps to contents
+ # @ReferencesInContents { Yes } # add ref. section to contents
+ # @GlossaryInContents { Yes } # add glossary to contents
+ # @IndexInContents { Yes } # add index to contents
+ # @IndexAInContents { Yes } # add index A to contents
+ # @IndexBInContents { Yes } # add index B to contents
+ # @ColophonInContents { Yes } # add colophon to contents
+ # @PrefaceContentsIndent { 0f } # indent in contents of preface
+ # @SubPrefaceContentsIndent { 3f } # indent in contents of sub-preface
+ # @AbbreviationsContentsIndent{ 0f } # indent in contents of abbreviations
+ # @IntroductionContentsIndent { 0f } # indent in contents of introduction
+ # @SubIntroductionContentsIndent { 3f } # indent in contents of sub-intro
+ # @PartContentsIndent { 0.5rt } # indent in contents of part (dft is ctr)
+ # @ChapterContentsIndent { 0f } # indent in contents of chapter
+ # @SectionContentsIndent { 3f } # indent in contents of section
+ # @SubSectionContentsIndent { 6f } # indent in contents of subsection
+ # @SubSubSectionContentsIndent{ 9f } # indent in contents of sub-subsection
+ # @AppendixContentsIndent { 0f } # indent in contents of appendix
+ # @SubAppendixContentsIndent { 3f } # indent in contents of sub-appendix
+ # @SubSubAppendixContentsIndent { 6f } # indent in contents of sub-subappendix
+ # @ReferencesContentsIndent { 0f } # indent in contents of references
+ # @GlossaryContentsIndent { 0f } # indent in contents of gloassary
+ # @IndexContentsIndent { 0f } # indent in contents of index
+ # @IndexAContentsIndent { 0f } # indent in contents of index A
+ # @IndexBContentsIndent { 0f } # indent in contents of index B
+ # @ColophonContentsIndent { 0f } # indent in contents of colophon
+ # @SubPrefaceNumInTheorems { No } # theorem num has sub-preface num
+ # @SubIntroductionNumInTheorems { No } # theorem num has sub-intro num
+ # @ChapterNumInTheorems { Yes } # theorem num has chapter num
+ # @SectionNumInTheorems { No } # theorem num has section num
+ # @SubSectionNumInTheorems { No } # theorem num has subsect num
+ # @SubSubSectionNumInTheorems { No } # theorem num has sub-ss. num
+ # @AppendixNumInTheorems { Yes } # theorem num has appendix num
+ # @SubAppendixNumInTheorems { No } # theorem num has sub-app num
+ # @SubSubAppendixNumInTheorems{ No } # theorem num has sub-sa. num
+ # @SubPrefaceNumInDisplays { No } # display num has sub-preface num
+ # @SubIntroductionNumInDisplays { No } # display num has sub-intro num
+ # @ChapterNumInDisplays { Yes } # display num has chapter num
+ # @SectionNumInDisplays { Yes } # display num has section num
+ # @SubSectionNumInDisplays { No } # display num has subsect num
+ # @SubSubSectionNumInDisplays { No } # display num has sub-ss. num
+ # @AppendixNumInDisplays { Yes } # display num has appendix num
+ # @SubAppendixNumInDisplays { Yes } # display num has sub-app num
+ # @SubSubAppendixNumInDisplays{ No } # display num has sub-sa. num
+ # @SubPrefaceNumInFigures { No } # figure num has sub-preface num
+ # @SubIntroductionumInFigures { No } # figure num has sub-intro num
+ # @ChapterNumInFigures { Yes } # figure num has chapter num
+ # @SectionNumInFigures { No } # figure num has section num
+ # @SubSectionNumInFigures { No } # figure num has subsect num
+ # @SubSubSectionNumInFigures { No } # figure num has sub-ss. num
+ # @AppendixNumInFigures { Yes } # figure num has appendix num
+ # @SubAppendixNumInFigures { No } # figure num has sub-app num
+ # @SubSubAppendixNumInFigures { No } # figure num has sub-sa. num
+ # @SubPrefaceNumInTables { No } # table num has sub-preface num
+ # @SubIntroductionumInTables { No } # table num has sub-intro num
+ # @ChapterNumInTables { Yes } # table num has chapter num
+ # @SectionNumInTables { No } # table num has section num
+ # @SubSectionNumInTables { No } # table num has subsect num
+ # @SubSubSectionNumInTables { No } # table num has sub-ss. num
+ # @AppendixNumInTables { Yes } # table num has appendix num
+ # @SubAppendixNumInTables { No } # table num has sub-app num
+ # @SubSubAppendixNumInTables { No } # table num has sub-sa. num
+ # @SubPrefaceNumInFloaters { No } # floater num has sub-preface num
+ # @SubIntroductionumInFloaters{ No } # floater num has sub-intro num
+ # @ChapterNumInFloaters { Yes } # floater num has chapter num
+ # @SectionNumInFloaters { No } # floater num has section num
+ # @SubSectionNumInFloaters { No } # floater num has subsect num
+ # @SubSubSectionNumInFloaters { No } # floater num has sub-ss. num
+ # @AppendixNumInFloaters { Yes } # floater num has appendix num
+ # @SubAppendixNumInFloaters { No } # floater num has sub-app num
+ # @SubSubAppendixNumInFloaters{ No } # floater num has sub-sa. num
+ # @SubPrefaceNumInRunners { No } # runners have sub-preface num
+ # @SubIntroductionNumInRunners { No } # runners have sub-intro num
+ # @SectionNumInRunners { Yes } # runners have section num
+ # @SubSectionNumInRunners { No } # runners have subsect num
+ # @SubSubSectionNumInRunners { No } # runners have sub-ss. num
+ # @SubAppendixNumInRunners { Yes } # runners have sub-app num
+ # @SubSubAppendixNumInRunners { No } # runners have sub-sa. num
+ # @PrefacePrefix { } # for structured page nums
+ # @ContentsPrefix { } # for structured page nums
+ # @FigureContentsPrefix { } # for structured page nums
+ # @TableContentsPrefix { } # for structured page nums
+ # @FloaterContentsPrefix { } # for structured page nums
+ # @AbbreviationsPrefix { } # for structured page nums
+ # @IntroductionPrefix { } # for structured page nums
+ # @ChapterPrefix { } # for structured page nums
+ # @AppendixPrefix { } # for structured page nums
+ # @ReferencesPrefix { } # for structured page nums
+ # @GlossaryPrefix { } # for structured page nums
+ # @IndexPrefix { } # for structured page nums
+ # @IndexAPrefix { } # for structured page nums
+ # @IndexBPrefix { } # for structured page nums
+ # @ColophonPrefix { } # for structured page nums
+}
+
+
+###############################################################################
+# #
+# @Database (and @SysDatabase) clauses go here. #
+# #
+###############################################################################
+
+@SysDatabase @FontDef { fontdefs } # font definitions
+@SysDatabase @RefStyle { refstyle } # reference printing styles
diff --git a/include/include/bookf b/include/include/bookf
new file mode 100644
index 0000000..3c2b21f
--- /dev/null
+++ b/include/include/bookf
@@ -0,0 +1,1645 @@
+
+###########################################################################
+# #
+# @BookSetup extension to @DocumentSetup. #
+# #
+# Jeffrey H. Kingston #
+# #
+# This package extends DocumentSetup with definitions for books. #
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either Version 3, or (at your option) #
+# any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA #
+# #
+# As a special exception, when this file is read by Lout when processing #
+# a Lout source document, you may use the result without restriction. #
+# #
+###########################################################################
+
+extend @BasicSetup @DocumentSetup
+export @Book @Preface @Abbreviations @Introduction @Chapter @Appendix @Colophon
+def @BookSetup
+ named @TitlePageFont { Helvetica Base }
+ named @SeparateIntroNumbering { Yes }
+ named @PrefaceAfterContents { No }
+ named @ChapterStartPages { Any }
+ named @ReferencesBeforeAppendices { No }
+
+ named @PrefaceWord { preface }
+ named @ContentsWord { contents }
+ named @FigureListWord { figurelist }
+ named @TableListWord { tablelist }
+ named @FloaterListWord { floaterlist }
+ named @IntroductionWord { introduction }
+ named @AbbreviationsWord { abbreviations }
+ named @ChapterWord { chapter }
+ named @AppendixWord { appendix }
+ named @GlossaryWord { glossary }
+ named @IndexWord { index }
+ named @IndexAWord { index }
+ named @IndexBWord { index }
+ named @ColophonWord { colophon }
+
+ named @SubPrefaceNumbers { None }
+ named @FirstSubPrefaceNumber { 1 }
+ named @SubIntroductionNumbers { None }
+ named @FirstSubIntroductionNumber { 1 }
+ named @ChapterNumbers { Arabic }
+ named @FirstChapterNumber { 1 }
+ named @SectionNumbers { Arabic }
+ named @FirstSectionNumber { 1 }
+ named @SubSectionNumbers { Arabic }
+ named @FirstSubSectionNumber { 1 }
+ named @SubSubSectionNumbers { Arabic }
+ named @FirstSubSubSectionNumber { 1 }
+ named @AppendixNumbers { UCAlpha }
+ named @FirstAppendixNumber { 1 }
+ named @SubAppendixNumbers { Arabic }
+ named @FirstSubAppendixNumber { 1 }
+ named @SubSubAppendixNumbers { Arabic }
+ named @FirstSubSubAppendixNumber { 1 }
+
+ named @PartHeadingFont { Helvetica Base 2.50f }
+ named @PartHeadingBreak { clines 1.2fx nohyphen }
+ named @PartHeadingFormat
+ left number right title { @CD number @DP @CD title }
+
+ named @ChapterHeadingFont { Bold 2.00f }
+ named @ChapterHeadingBreak { ragged 1.2fx nohyphen }
+ named @ChapterHeadingFormat
+ left number right title { number @DotSep title }
+
+ named @SubPrefaceHeadingFont { Bold }
+ named @SubPrefaceHeadingBreak { ragged 1.2fx nohyphen }
+ named @SubPrefaceHeadingFormat
+ left number right title { number @DotSep title }
+
+ named @SubIntroductionHeadingFont { Bold }
+ named @SubIntroductionHeadingBreak { ragged 1.2fx nohyphen }
+ named @SubIntroductionHeadingFormat
+ left number right title { number @DotSep title }
+
+ named @SectionHeadingFont { Bold }
+ named @SectionHeadingBreak { ragged 1.2fx nohyphen }
+ named @SectionHeadingFormat
+ left number right title { number @DotSep title }
+
+ named @SubSectionHeadingFont { Bold }
+ named @SubSectionHeadingBreak { ragged 1.2fx nohyphen }
+ named @SubSectionHeadingFormat
+ left number right title { number @DotSep title }
+
+ named @SubSubSectionHeadingFont { Slope }
+ named @SubSubSectionHeadingBreak { ragged 1.2fx nohyphen }
+ named @SubSubSectionHeadingFormat
+ left number right title { number @DotSep title }
+
+ named @AppendixHeadingFont { Bold 2.00f }
+ named @AppendixHeadingBreak { ragged 1.2fx nohyphen }
+ named @AppendixHeadingFormat
+ left number right title { number @DotSep title }
+
+ named @SubAppendixHeadingFont { Bold }
+ named @SubAppendixHeadingBreak { ragged 1.2fx nohyphen }
+ named @SubAppendixHeadingFormat
+ left number right title { number @DotSep title }
+
+ named @SubSubAppendixHeadingFont { Slope }
+ named @SubSubAppendixHeadingBreak { ragged 1.2fx nohyphen }
+ named @SubSubAppendixHeadingFormat
+ left number right title { number @DotSep title }
+
+ named @AbovePartGap { 4.00f }
+ named @AboveChapterGap { 3.00f }
+ named @SubPrefaceGap { 2.0v @OrIfPlain 3f }
+ named @SubIntroductionGap { 2.0v @OrIfPlain 3f }
+ named @SectionGap { 2.0v @OrIfPlain 3f }
+ named @SubSectionGap { 1.5v @OrIfPlain 2f }
+ named @SubSubSectionGap { 1.5v @OrIfPlain 2f }
+ named @SubAppendixGap { 2.0v @OrIfPlain 3f }
+ named @SubSubAppendixGap { 1.5v @OrIfPlain 2f }
+
+ named @PrefaceInContents { Yes }
+ named @SubPrefaceInContents { No }
+ named @AbbreviationsInContents { Yes }
+ named @IntroductionInContents { Yes }
+ named @SubIntroductionInContents { No }
+ named @PartInContents { Yes }
+ named @ChapterInContents { Yes }
+ named @SectionInContents { Yes }
+ named @SubSectionInContents { Yes }
+ named @SubSubSectionInContents { No }
+ named @AppendixInContents { Yes }
+ named @SubAppendixInContents { Yes }
+ named @SubSubAppendixInContents { No }
+ named @ReferencesInContents { Yes }
+ named @GlossaryInContents { Yes }
+ named @IndexInContents { Yes }
+ named @IndexAInContents { Yes }
+ named @IndexBInContents { Yes }
+ named @ColophonInContents { Yes }
+
+ named @PrefaceContentsIndent { 0f }
+ named @SubPrefaceContentsIndent { 3f }
+ named @AbbreviationsContentsIndent { 0f }
+ named @IntroductionContentsIndent { 0f }
+ named @SubIntroductionContentsIndent{ 3f }
+ named @PartContentsIndent { 0.5rt }
+ named @ChapterContentsIndent { 0f }
+ named @SectionContentsIndent { 3f }
+ named @SubSectionContentsIndent { 6f }
+ named @SubSubSectionContentsIndent { 9f }
+ named @AppendixContentsIndent { 0f }
+ named @SubAppendixContentsIndent { 3f }
+ named @SubSubAppendixContentsIndent { 6f }
+ named @ReferencesContentsIndent { 0f }
+ named @GlossaryContentsIndent { 0f }
+ named @IndexContentsIndent { 0f }
+ named @IndexAContentsIndent { 0f }
+ named @IndexBContentsIndent { 0f }
+ named @ColophonContentsIndent { 0f }
+
+ named @SubPrefaceNumInTheorems { No }
+ named @SubIntroductionNumInTheorems { No }
+ named @ChapterNumInTheorems { Yes }
+ named @SectionNumInTheorems { No }
+ named @SubSectionNumInTheorems { No }
+ named @SubSubSectionNumInTheorems { No }
+ named @AppendixNumInTheorems { Yes }
+ named @SubAppendixNumInTheorems { No }
+ named @SubSubAppendixNumInTheorems { No }
+
+ named @SubPrefaceNumInDisplays { No }
+ named @SubIntroductionNumInDisplays { No }
+ named @ChapterNumInDisplays { Yes }
+ named @SectionNumInDisplays { Yes }
+ named @SubSectionNumInDisplays { No }
+ named @SubSubSectionNumInDisplays { No }
+ named @AppendixNumInDisplays { Yes }
+ named @SubAppendixNumInDisplays { Yes }
+ named @SubSubAppendixNumInDisplays { No }
+
+ named @SubPrefaceNumInFigures { No }
+ named @SubIntroductionNumInFigures { No }
+ named @ChapterNumInFigures { Yes }
+ named @SectionNumInFigures { No }
+ named @SubSectionNumInFigures { No }
+ named @SubSubSectionNumInFigures { No }
+ named @AppendixNumInFigures { Yes }
+ named @SubAppendixNumInFigures { No }
+ named @SubSubAppendixNumInFigures { No }
+
+ named @SubPrefaceNumInTables { No }
+ named @SubIntroductionNumInTables { No }
+ named @ChapterNumInTables { Yes }
+ named @SectionNumInTables { No }
+ named @SubSectionNumInTables { No }
+ named @SubSubSectionNumInTables { No }
+ named @AppendixNumInTables { Yes }
+ named @SubAppendixNumInTables { No }
+ named @SubSubAppendixNumInTables { No }
+
+ named @SubPrefaceNumInFloaters { No }
+ named @SubIntroductionNumInFloaters { No }
+ named @ChapterNumInFloaters { Yes }
+ named @SectionNumInFloaters { No }
+ named @SubSectionNumInFloaters { No }
+ named @SubSubSectionNumInFloaters { No }
+ named @AppendixNumInFloaters { Yes }
+ named @SubAppendixNumInFloaters { No }
+ named @SubSubAppendixNumInFloaters { No }
+
+ named @SubPrefaceNumInRunners { No }
+ named @SubIntroductionNumInRunners { No }
+ named @SectionNumInRunners { Yes }
+ named @SubSectionNumInRunners { No }
+ named @SubSubSectionNumInRunners { No }
+ named @SubAppendixNumInRunners { Yes }
+ named @SubSubAppendixNumInRunners { No }
+
+ named @PrefacePrefix { }
+ named @ContentsPrefix { }
+ named @FigureContentsPrefix { }
+ named @TableContentsPrefix { }
+ named @FloaterContentsPrefix { }
+ named @AbbreviationsPrefix { }
+ named @IntroductionPrefix { }
+ named @ChapterPrefix { }
+ named @AppendixPrefix { }
+ named @ReferencesPrefix { }
+ named @GlossaryPrefix { }
+ named @IndexPrefix { }
+ named @IndexAPrefix { }
+ named @IndexBPrefix { }
+ named @ColophonPrefix { }
+
+@Begin
+
+ #######################################################################
+ # #
+ # Lists of chapters, sections, sub(-sub)sections, and appendices. #
+ # #
+ #######################################################################
+
+ export num
+ def @ChapterList named @Tag {} right num
+ {
+ @Galley
+ // @ChapterList @Next num
+ }
+
+ export num
+ def @SubPrefaceList named @Tag {} right num
+ {
+ @Galley
+ //@SubPrefaceGap @SubPrefaceList @Next num
+ }
+
+ export num
+ def @SubIntroductionList named @Tag {} right num
+ {
+ @Galley
+ //@SubIntroductionGap @SubIntroductionList @Next num
+ }
+
+ export num
+ def @SectionList named @Tag {} right num
+ {
+ @Galley
+ //@SectionGap @SectionList @Next num
+ }
+
+ export num
+ def @SubSectionList named @Tag {} right num
+ {
+ @Galley
+ //@SubSectionGap @SubSectionList @Next num
+ }
+
+ export num
+ def @SubSubSectionList named @Tag {} right num
+ {
+ @Galley
+ //@SubSubSectionGap @SubSubSectionList @Next num
+ }
+
+ export num
+ def @AppendixList named @Tag {} right num
+ {
+ @Galley
+ // @AppendixList @Next num
+ }
+
+ export num
+ def @SubAppendixList named @Tag {} right num
+ {
+ @Galley
+ //@SubAppendixGap @SubAppendixList @Next num
+ }
+
+ export num
+ def @SubSubAppendixList named @Tag {} right num
+ {
+ @Galley
+ //@SubSubAppendixGap @SubSubAppendixList @Next num
+ }
+
+ def @PrefacePlace { @Galley }
+ def @AbbreviationsPlace { @Galley }
+ def @IntroductionPlace { @Galley }
+
+
+ #######################################################################
+ # #
+ # @Full - this sends text to a full-width place on a new page, even #
+ # if @ChapterStartPages is SamePage. #
+ # #
+ #######################################################################
+
+ def @Full right x
+ {
+ def @Any force into { @FullPlace&&following } right x { x }
+ def @Odd force into { @OddFullPlace&&following } right x { x }
+ def @Even force into { @EvenFullPlace&&following } right x { x }
+
+ @ChapterStartPages @Case {
+ { Any SamePage } @Yield @Any x
+ Odd @Yield @Odd x
+ Even @Yield @Even x
+ }
+ }
+
+
+ #######################################################################
+ # #
+ # @ChapterFull - this sends text to a full-width place on a new #
+ # page, unless @ChapterStartPages is SamePage, in which case it #
+ # doesn't send the text anywhere. #
+ # #
+ #######################################################################
+
+ def @ChapterFull right x
+ {
+ def @Any force into { @FullPlace&&following } right x { x }
+ def @Odd force into { @OddFullPlace&&following } right x { x }
+ def @Even force into { @EvenFullPlace&&following } right x { x }
+
+ @ChapterStartPages @Case {
+ Any @Yield @Any x
+ Odd @Yield @Odd x
+ Even @Yield @Even x
+ SamePage @Yield x
+ }
+ }
+
+
+ #######################################################################
+ # #
+ # @IntroFull - this sends text to a full-width intro place. #
+ # #
+ #######################################################################
+
+ def @IntroFull right x
+ {
+ def @Any force into { @IntroFullPlace&&following } right x { x }
+ def @Odd force into { @IntroOddFullPlace&&following } right x { x }
+ def @Even force into { @IntroEvenFullPlace&&following } right x { x }
+
+ @ChapterStartPages @Case {
+ { Any SamePage } @Yield @Any x
+ Odd @Yield @Odd x
+ Even @Yield @Even x
+ }
+ }
+
+
+ #######################################################################
+ # #
+ # @ChooseFull - this sends either to introfull or ordinary full #
+ # #
+ #######################################################################
+
+ def @ChooseFull right x
+ {
+ @SeparateIntroNumbering @Case {
+ No @Yield @Full x
+ Yes @Yield @IntroFull x
+ }
+ }
+
+
+ #######################################################################
+ # #
+ # Book. #
+ # #
+ #######################################################################
+
+ def @Book
+ named @Tag {}
+ named @Title {}
+ named @Author {}
+ named @Edition {}
+ named @Publisher {}
+ named @BeforeTitlePage {}
+ named @OnTitlePage {}
+ named @AfterTitlePage {}
+ named @AtEnd { dft }
+ named @InitialFont { @InitialFont }
+ named @InitialBreak { @InitialBreak }
+ named @InitialOutdent { @InitialOutdent }
+ named @InitialSpace { @InitialSpace }
+ named @InitialLanguage { @InitialLanguage }
+ named @PageOrientation { @PageOrientation }
+ named @PageHeaders { @PageHeaders }
+ named @ColumnNumber { @ColumnNumber }
+ named @FirstPageNumber { @FirstPageNumber }
+ named @IntroFirstPageNumber { @IntroFirstPageNumber }
+ named @OptimizePages { @OptimizePages }
+ named @GlossaryText { @GlossaryText }
+ named @IndexText { @IndexText }
+ named @IndexAText { @IndexAText }
+ named @IndexBText { @IndexBText }
+ {
+ def @Before
+ {
+ @BeforeTitlePage @Case {
+ "" @Yield @Null
+ else @Yield @BeforeTitlePage
+ }
+ }
+
+ def @On
+ {
+ @OnTitlePage @Case {
+ "" @Yield {
+ //1i |0.5rt 2.5f @Font {1.2fx clines} @Break @Title |
+ //2i |0.5rt clines @Break @Author |
+ //1i |0.5rt clines @Break @Edition |
+ //1rt @OneRow @Publisher
+ }
+ else @Yield @OnTitlePage
+ }
+ }
+
+ def @After
+ {
+ @AfterTitlePage @Case {
+ "" @Yield @Null
+ else @Yield { @AfterTitlePage // None @Runner }
+ }
+ }
+
+ def @ContentsPart
+ named @Tag {}
+ {
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { ExtraMajorIntro }
+ initiallanguage { @InitialLanguage }
+ title { contents @WordVal @ContentsWord }
+ aboveheadinggap { @AboveChapterGap }
+ headingfont { @ChapterHeadingFont }
+ headingbreak { @ChapterHeadingBreak }
+ headingformat { @Num @ChapterHeadingFormat @Body }
+ incontents { No }
+ pnprefix { @ContentsPrefix }
+ inrunners { Yes }
+ majortitle { contents @WordVal @ContentsWord }
+ sendheader { @ChooseFull @Body }
+ innergap { @SectionGap }
+ @ContentsSection
+ }
+
+ def @FigureContentsPart
+ named @Tag {}
+ {
+ @LargeScaleStructure
+ tag { @Tag }
+ type { ExtraMajorIntro }
+ initiallanguage { @InitialLanguage }
+ title { figurelist @WordVal @FigureListWord }
+ aboveheadinggap { @AboveChapterGap }
+ headingfont { @ChapterHeadingFont }
+ headingbreak { @ChapterHeadingBreak }
+ headingformat { @Num @ChapterHeadingFormat @Body }
+ incontents { No }
+ pnprefix { @FigureContentsPrefix }
+ inrunners { Yes }
+ majortitle { figurelist @WordVal @FigureListWord }
+ sendheader { @ChooseFull @Body }
+ innergap { @SectionGap }
+ @FigureContentsSection
+ }
+
+ def @TableContentsPart
+ named @Tag {}
+ {
+ @LargeScaleStructure
+ tag { @Tag }
+ type { ExtraMajorIntro }
+ initiallanguage { @InitialLanguage }
+ title { tablelist @WordVal @TableListWord }
+ aboveheadinggap { @AboveChapterGap }
+ headingfont { @ChapterHeadingFont }
+ headingbreak { @ChapterHeadingBreak }
+ headingformat { @Num @ChapterHeadingFormat @Body }
+ incontents { No }
+ pnprefix { @TableContentsPrefix }
+ inrunners { Yes }
+ majortitle { tablelist @WordVal @TableListWord }
+ sendheader { @ChooseFull @Body }
+ innergap { @SectionGap }
+ @TableContentsSection
+ }
+
+ def @FloaterContentsPart
+ named @Tag {}
+ {
+ @LargeScaleStructure
+ tag { @Tag }
+ type { ExtraMajorIntro }
+ initiallanguage { @InitialLanguage }
+ title { floaterlist @WordVal @FloaterListWord }
+ aboveheadinggap { @AboveChapterGap }
+ headingfont { @ChapterHeadingFont }
+ headingbreak { @ChapterHeadingBreak }
+ headingformat { @Num @ChapterHeadingFormat @Body }
+ incontents { No }
+ pnprefix { @FloaterContentsPrefix }
+ inrunners { Yes }
+ majortitle { floaterlist @WordVal @FloaterListWord }
+ sendheader { @ChooseFull @Body }
+ innergap { @SectionGap }
+ @FloaterContentsSection
+ }
+
+ def @ReferencesPart
+ named @Tag {}
+ {
+ @LargeScaleStructure
+ tag { @Tag }
+ type { ExtraMajor }
+ initiallanguage { @InitialLanguage }
+ title { @RefHeading @RefListTitle }
+ majortitle { @RefHeading @RefListTitle }
+ aboveheadinggap { @AboveChapterGap }
+ headingfont { @ChapterHeadingFont }
+ headingbreak { @ChapterHeadingBreak }
+ headingformat { @Num @ChapterHeadingFormat @Body }
+ incontents { @ReferencesInContents }
+ contentsindent { @ReferencesContentsIndent }
+ pnprefix { @ReferencesPrefix }
+ inrunners { Yes }
+ sendheader { @ChapterFull @Body }
+ innergap { @SectionGap }
+ @ReferencesSection
+
+ }
+
+ def @GlossaryPart
+ named @Tag {}
+ {
+ def @Run
+ {
+ NonStart @Runner
+ @MajorNum {}
+ @MajorTitle { glossary @WordVal @GlossaryWord }
+ @MinorNum {}
+ @MinorTitle { glossary @WordVal @GlossaryWord }
+ @Owner { @Tag }
+ @Prefix { @GlossaryPrefix }
+ }
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Major }
+ initiallanguage { @InitialLanguage }
+ title { glossary @WordVal @GlossaryWord }
+ aboveheadinggap { @AboveChapterGap }
+ headingfont { @ChapterHeadingFont }
+ headingbreak { @ChapterHeadingBreak }
+ headingformat { @Num @ChapterHeadingFormat @Body }
+ headingtext { @GlossaryText }
+ incontents { @GlossaryInContents }
+ contentsindent { @GlossaryContentsIndent }
+ pnprefix { @GlossaryPrefix }
+ inrunners { Yes }
+ sendheader { @Full @Body }
+ innergap { @SectionGap }
+ wantindefinite { Yes }
+ @GlossarySection @Run
+ }
+
+ def @IndexPart
+ named @Tag {}
+ {
+ def @Run
+ {
+ NonStart @Runner
+ @MajorNum {}
+ @MajorTitle { index @WordVal @IndexWord }
+ @MinorNum {}
+ @MinorTitle { index @WordVal @IndexWord }
+ @Owner { @Tag }
+ @Prefix { @IndexPrefix }
+ }
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Major }
+ initiallanguage { @InitialLanguage }
+ title { index @WordVal @IndexWord }
+ aboveheadinggap { @AboveChapterGap }
+ headingfont { @ChapterHeadingFont }
+ headingbreak { @ChapterHeadingBreak }
+ headingformat { @Num @ChapterHeadingFormat @Body }
+ headingtext { @IndexText }
+ incontents { @IndexInContents }
+ contentsindent { @IndexContentsIndent }
+ pnprefix { @IndexPrefix }
+ inrunners { Yes }
+ sendheader { @Full @Body }
+ innergap { @SectionGap }
+ wantindefinite { Yes }
+ @IndexSection @Run
+ }
+
+ def @IndexAPart
+ named @Tag {}
+ {
+ def @RunA
+ {
+ NonStart @Runner
+ @MajorNum {}
+ @MajorTitle { index @WordVal @IndexAWord }
+ @MinorNum {}
+ @MinorTitle { index @WordVal @IndexAWord }
+ @Owner { @Tag }
+ @Prefix { @IndexAPrefix }
+ }
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Major }
+ initiallanguage { @InitialLanguage }
+ title { index @WordVal @IndexAWord }
+ aboveheadinggap { @AboveChapterGap }
+ headingfont { @ChapterHeadingFont }
+ headingbreak { @ChapterHeadingBreak }
+ headingformat { @Num @ChapterHeadingFormat @Body }
+ headingtext { @IndexAText }
+ incontents { @IndexAInContents }
+ contentsindent { @IndexAContentsIndent }
+ pnprefix { @IndexAPrefix }
+ inrunners { Yes }
+ sendheader { @Full @Body }
+ innergap { @SectionGap }
+ wantindefinite { Yes }
+ @IndexASection @RunA
+ }
+
+ def @IndexBPart
+ named @Tag {}
+ {
+ def @RunB
+ {
+ NonStart @Runner
+ @MajorNum {}
+ @MajorTitle { index @WordVal @IndexBWord }
+ @MinorNum {}
+ @MinorTitle { index @WordVal @IndexBWord }
+ @Owner { @Tag }
+ @Prefix { @IndexBPrefix }
+ }
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Major }
+ initiallanguage { @InitialLanguage }
+ title { index @WordVal @IndexBWord }
+ aboveheadinggap { @AboveChapterGap }
+ headingfont { @ChapterHeadingFont }
+ headingbreak { @ChapterHeadingBreak }
+ headingformat { @Num @ChapterHeadingFormat @Body }
+ headingtext { @IndexBText }
+ incontents { @IndexBInContents }
+ contentsindent { @IndexBContentsIndent }
+ pnprefix { @IndexBPrefix }
+ inrunners { Yes }
+ sendheader { @Full @Body }
+ innergap { @SectionGap }
+ wantindefinite { Yes }
+ @IndexBSection @RunB
+ }
+
+ def @ColophonPart
+ named @Tag {}
+ {
+ def @RunC
+ {
+ NonStart @Runner
+ @MajorNum {}
+ @MajorTitle { index @WordVal @ColophonWord }
+ @MinorNum {}
+ @MinorTitle { index @WordVal @ColophonWord }
+ @Owner { @Tag }
+ @Prefix { @ColophonPrefix }
+ }
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Major }
+ initiallanguage { @InitialLanguage }
+ title { colophon @WordVal @ColophonWord }
+ aboveheadinggap { @AboveChapterGap }
+ headingfont { @ChapterHeadingFont }
+ headingbreak { @ChapterHeadingBreak }
+ headingformat { @Num @ChapterHeadingFormat @Body }
+ incontents { @ColophonInContents }
+ contentsindent { @ColophonContentsIndent }
+ pnprefix { @ColophonPrefix }
+ inrunners { Yes }
+ sendheader { @Full @Body }
+ innergap { @SectionGap }
+ wantindefinite { Yes }
+ @ColophonSection @RunC
+ }
+
+ def @BookIntro force into { @IntroColPlace&&preceding }
+ named @Optimize { @OptimizePages }
+ {
+ @NoLinkPageMark @Tag
+ // @Before
+ //1.1b @TitlePageFont @Font @On
+ //1.1b @After
+ // Start @Runner @Owner { @Tag }
+ //1.1b @PrefaceAfterContents @NoDo @PrefacePlace
+ // @MakeContents @Case {
+ { Yes Bypass } @Yield @ContentsPart
+ else @Yield @Null
+ }
+ // @MakeFigureContents @Case {
+ { Yes Bypass } @Yield @FigureContentsPart
+ else @Yield @Null
+ }
+ // @MakeTableContents @Case {
+ { Yes Bypass } @Yield @TableContentsPart
+ else @Yield @Null
+ }
+ // @MakeFloaterContents @Case {
+ { Yes Bypass } @Yield @FloaterContentsPart
+ else @Yield @Null
+ }
+ //1.1b @PrefaceAfterContents @Do @PrefacePlace
+ }
+
+ def @BookBody force into { @ColPlace&&preceding }
+ named @Optimize { @OptimizePages }
+ {
+ # The first component of @BookBody must be indefinite, so that
+ # its flushing is delayed until we reach the body galleys, either
+ # @Introduction or @Chapter. If not, @BookBody will free up
+ # @PrefacePlace etc. too soon, producing a "no @PrefacePlace
+ # precedes this @PrefacePlace&&preceding" error message.
+
+ @AbbreviationsPlace
+ // @IntroductionPlace
+ // @ChapterList @FirstChapterNumber
+ // @ReferencesBeforeAppendices @Do {
+ @MakeReferences @Do @ReferencesPart
+ }
+ // @AppendixList @FirstAppendixNumber
+ // @ReferencesBeforeAppendices @NoDo {
+ @MakeReferences @Do @ReferencesPart
+ }
+ // @MakeGlossary @Do @GlossaryPart
+ // @MakeIndexA @Do @IndexAPart
+ // @MakeIndexA @Case {
+ Bypass @Yield @BypassBeginIndexAPlace
+ else @Yield @Null
+ }
+ // @MakeIndexB @Do @IndexBPart
+ // @MakeIndexB @Case {
+ Bypass @Yield @BypassBeginIndexBPlace
+ else @Yield @Null
+ }
+ // @MakeIndex @Do @IndexPart
+ // @MakeIndex @Case {
+ Bypass @Yield @BypassBeginIndexPlace
+ else @Yield @Null
+ }
+ // @MakeColophon @Do @ColophonPart
+ }
+
+ def @BookCombined force into { @ColPlace&&preceding }
+ named @Optimize { @OptimizePages }
+ {
+ @NoLinkPageMark @Tag
+ // @Before
+ //1.1b @TitlePageFont @Font @On
+ //1.1b @After
+ // Start @Runner @Owner { @Tag }
+ //1.1b @PrefaceAfterContents @NoDo @PrefacePlace
+ // @MakeContents @Case {
+ { Yes Bypass } @Yield @ContentsPart
+ else @Yield @Null
+ }
+ // @MakeFigureContents @Case {
+ { Yes Bypass } @Yield @FigureContentsPart
+ else @Yield @Null
+ }
+ // @MakeTableContents @Case {
+ { Yes Bypass } @Yield @TableContentsPart
+ else @Yield @Null
+ }
+ // @MakeFloaterContents @Case {
+ { Yes Bypass } @Yield @FloaterContentsPart
+ else @Yield @Null
+ }
+ //1.1b @PrefaceAfterContents @Do @PrefacePlace
+ // @AbbreviationsPlace
+ // @IntroductionPlace
+ // @ChapterList @FirstChapterNumber
+ // @ReferencesBeforeAppendices @Do {
+ @MakeReferences @Do @ReferencesPart
+ }
+ // @AppendixList @FirstAppendixNumber
+ // @ReferencesBeforeAppendices @NoDo {
+ @MakeReferences @Do @ReferencesPart
+ }
+ // @MakeGlossary @Do @GlossaryPart
+ // @MakeIndexA @Do @IndexAPart
+ // @MakeIndexA @Case {
+ Bypass @Yield @BypassBeginIndexAPlace
+ else @Yield @Null
+ }
+ // @MakeIndexB @Do @IndexBPart
+ // @MakeIndexB @Case {
+ Bypass @Yield @BypassBeginIndexBPlace
+ else @Yield @Null
+ }
+ // @MakeIndex @Do @IndexPart
+ // @MakeIndex @Case {
+ Bypass @Yield @BypassBeginIndexPlace
+ else @Yield @Null
+ }
+ // @MakeColophon @Do @ColophonPart
+ }
+
+ @InitialFont @Font { @InitialBreak setoutdent @InitialOutdent } @Break
+ @InitialLanguage @Language @InitialSpace @Space
+ { @ColourCommand @InitialColour } @SetColour
+ {
+
+ @SeparateIntroNumbering @Case {
+
+ No @Yield {
+ Yes @BeginAllCounters {}
+ // Yes @BeginDisplayCounter {}
+ // Yes @BeginFigureCounter {}
+ // Yes @BeginTableCounter {}
+ // Yes @BeginFloaterCounter {}
+ // @PageList
+ @ColumnNumber { @ColumnNumber }
+ @PageHeaders { @PageHeaders }
+ @Orient { @PageOrientation }
+ @FirstPageNumber
+ // @BookCombined
+ // NonStart @Runner @Owner { @Tag }
+ // @AtEnd @Case {
+ dft @Yield @Null
+ else @Yield
+ @EvenPage @Orient { @PageOrientation } @AtEnd
+ }
+ }
+
+ Yes @Yield {
+ Yes @BeginAllCounters {}
+ // Yes @BeginDisplayCounter {}
+ // Yes @BeginFigureCounter {}
+ // Yes @BeginTableCounter {}
+ // Yes @BeginFloaterCounter {}
+ // @IntroPageList
+ @ColumnNumber { 1 }
+ @PageHeaders { @PageHeaders }
+ @Orient { @PageOrientation }
+ @IntroFirstPageNumber
+ # // NonStart @Runner @Owner { @Tag }
+ // None @Runner @Owner { @Tag }
+ // @PageList
+ @ColumnNumber { @ColumnNumber }
+ @PageHeaders { @PageHeaders }
+ @Orient { @PageOrientation }
+ extra { Yes }
+ @FirstPageNumber
+ // @BookIntro
+ // @BookBody
+ // NonStart @Runner @Owner { @Tag }
+ // @AtEnd @Case {
+ dft @Yield @Null
+ else @Yield
+ @EvenPage @Orient { @PageOrientation } @AtEnd
+ }
+ }
+ }
+ }
+ }
+
+
+ #######################################################################
+ # #
+ # Preface. #
+ # #
+ #######################################################################
+
+ export @BeginSubPrefaces @EndSubPrefaces @SubPreface
+ def @Preface force into { @PrefacePlace&&preceding }
+ named @Tag {}
+ named @Title { preface @WordVal @PrefaceWord }
+ named @RunningTitle { dft }
+ named @InitialLanguage {}
+ body @Body
+ {
+ def @EndSubPrefacesPlace { @Galley }
+
+ def @EndSubPrefaces force into { @EndSubPrefacesPlace&&preceding }
+ {}
+
+ macro @BeginSubPrefaces
+ { //@SubPrefaceGap @SubPrefaceList @FirstSubPrefaceNumber
+ // @EndSubPrefacesPlace //
+ }
+
+ def @SubPreface force into { @SubPrefaceList&&preceding }
+ named @Tag {}
+ named @Title {}
+ named @RunningTitle { dft }
+ named @InitialLanguage { @InitialLanguage }
+ named @BypassNumber { dft }
+ named @NewPage { No }
+ body @Body
+ {
+
+ def @SubPrefaceShortNum
+ {
+ @SubPrefaceNumbers @Then {
+ @BypassNumber @Dft {
+ @SubPrefaceNumbers @Num
+ { @SectionList&&@Tag @Open { num } }
+ }
+ }
+ }
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Minor }
+ initiallanguage { @InitialLanguage }
+ title { @Title }
+ runningtitle { @RunningTitle }
+ headingfont { @SubPrefaceHeadingFont }
+ headingbreak { @SubPrefaceHeadingBreak }
+ headingformat { @Num @SubPrefaceHeadingFormat @Body }
+ incontents { @SubPrefaceInContents }
+ contentsindent { @SubPrefaceContentsIndent }
+ numbers { @SubPrefaceNumbers }
+ attachnum { @SubPrefaceList&&preceding @Tagged @Tag }
+ retrievenum { @SubPrefaceList&&@Tag @Open { num } }
+ bypassnumber { @BypassNumber }
+ prefix { @Null }
+ majornum { @Null }
+ majortitle { @Null }
+ intheorems { @SubPrefaceNumInTheorems }
+ indisplays { @SubPrefaceNumInDisplays }
+ infigures { @SubPrefaceNumInFigures }
+ intables { @SubPrefaceNumInTables }
+ infloaters { @SubPrefaceNumInFloaters }
+ inrunners { @SubPrefaceNumInRunners }
+ newpage { @NewPage }
+ @Body
+ }
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { ExtraMajorIntro }
+ initiallanguage { @InitialLanguage }
+ title { @Title }
+ runningtitle { @RunningTitle }
+ aboveheadinggap { @AboveChapterGap }
+ headingfont { @ChapterHeadingFont }
+ headingbreak { @ChapterHeadingBreak }
+ headingformat { @Num @ChapterHeadingFormat @Body }
+ incontents { @PrefaceInContents }
+ contentsindent { @PrefaceContentsIndent }
+ pnprefix { @PrefacePrefix }
+ sendheader { @ChooseFull @Body }
+ innergap { @SectionGap }
+ inrunners { Yes }
+ @Body
+
+ }
+
+
+ #######################################################################
+ # #
+ # Abbreviations. #
+ # #
+ #######################################################################
+
+ def @Abbreviations force into { @AbbreviationsPlace&&preceding }
+ named @Tag {}
+ named @Title { abbreviations @WordVal @AbbreviationsWord }
+ named @RunningTitle { dft }
+ named @InitialLanguage {}
+ body @Body
+ {
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Major }
+ initiallanguage { @InitialLanguage }
+ title { @Title }
+ runningtitle { @RunningTitle }
+ aboveheadinggap { @AboveChapterGap }
+ headingfont { @ChapterHeadingFont }
+ headingbreak { @ChapterHeadingBreak }
+ headingformat { @Num @ChapterHeadingFormat @Body }
+ incontents { @AbbreviationsInContents }
+ contentsindent { @AbbreviationsContentsIndent }
+ pnprefix { @AbbreviationsPrefix }
+ sendheader { @Full @Body }
+ innergap { @SectionGap }
+ inrunners { Yes }
+ @Body
+
+ }
+
+
+ #######################################################################
+ # #
+ # Introduction. #
+ # #
+ #######################################################################
+
+ export @BeginSubIntroductions @EndSubIntroductions @SubIntroduction
+ def @Introduction force into { @IntroductionPlace&&preceding }
+ named @Tag {}
+ named @Title { introduction @WordVal @IntroductionWord }
+ named @RunningTitle { dft }
+ named @InitialLanguage {}
+ body @Body
+ {
+
+ def @EndSubIntroductionsPlace { @Galley }
+
+ def @EndSubIntroductions force into { @EndSubIntroductionsPlace&&preceding }
+ {}
+
+ macro @BeginSubIntroductions
+ { //@SubIntroductionGap @SubIntroductionList @FirstSubIntroductionNumber
+ // @EndSubIntroductionsPlace //
+ }
+
+ def @SubIntroduction force into { @SubIntroductionList&&preceding }
+ named @Tag {}
+ named @Title {}
+ named @RunningTitle { dft }
+ named @InitialLanguage { @InitialLanguage }
+ named @BypassNumber { dft }
+ named @NewPage { No }
+ body @Body
+ {
+
+ def @SubIntroductionShortNum
+ {
+ @SubIntroductionNumbers @Then {
+ @BypassNumber @Dft {
+ @SubIntroductionNumbers @Num
+ { @SectionList&&@Tag @Open { num } }
+ }
+ }
+ }
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Minor }
+ initiallanguage { @InitialLanguage }
+ title { @Title }
+ runningtitle { @RunningTitle }
+ headingfont { @SubIntroductionHeadingFont }
+ headingbreak { @SubIntroductionHeadingBreak }
+ headingformat { @Num @SubIntroductionHeadingFormat @Body }
+ incontents { @SubIntroductionInContents }
+ contentsindent { @SubIntroductionContentsIndent }
+ numbers { @SubIntroductionNumbers }
+ attachnum { @SubIntroductionList&&preceding @Tagged @Tag }
+ retrievenum { @SubIntroductionList&&@Tag @Open { num } }
+ bypassnumber { @BypassNumber }
+ prefix { @Null }
+ majornum { @Null }
+ majortitle { @Null }
+ intheorems { @SubIntroductionNumInTheorems }
+ indisplays { @SubIntroductionNumInDisplays }
+ infigures { @SubIntroductionNumInFigures }
+ intables { @SubIntroductionNumInTables }
+ infloaters { @SubIntroductionNumInFloaters }
+ inrunners { @SubIntroductionNumInRunners }
+ newpage { @NewPage }
+ @Body
+ }
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Major }
+ initiallanguage { @InitialLanguage }
+ title { @Title }
+ runningtitle { @RunningTitle }
+ aboveheadinggap { @AboveChapterGap }
+ headingfont { @ChapterHeadingFont }
+ headingbreak { @ChapterHeadingBreak }
+ headingformat { @Num @ChapterHeadingFormat @Body }
+ incontents { @IntroductionInContents }
+ contentsindent { @IntroductionContentsIndent }
+ pnprefix { @IntroductionPrefix }
+ sendheader { @Full @Body }
+ innergap { @SectionGap }
+ inrunners { Yes }
+ @Body
+ }
+
+
+ #######################################################################
+ # #
+ # Chapters containing sections and subsections. #
+ # #
+ #######################################################################
+
+ export @BeginSections @EndSections @Section
+ def @Chapter force into { @ChapterList&&preceding }
+ named @Tag {}
+ named @Title {}
+ named @RunningTitle { dft }
+ named @InitialLanguage {}
+ named @PartNumber {}
+ named @PartTitle {}
+ named @PartText {}
+ named @BypassNumber { dft }
+ named @BypassWord { dft }
+ body @Body
+ {
+
+ def @EndSectionsPlace { @Galley }
+
+ def @EndSections force into { @EndSectionsPlace&&preceding }
+ {}
+
+ macro @BeginSections
+ { //@SectionGap @SectionList @FirstSectionNumber
+ // @EndSectionsPlace //
+ }
+
+ def @ChapterShortNum
+ {
+ @ChapterNumbers @Then {
+ @BypassNumber @Dft {
+ @ChapterNumbers @Num @ChapterList&&@Tag @Open { num }
+ }
+ }
+ }
+
+ def @MajorNum
+ {
+ @ChapterNumbers @Then @InitialLanguage @Language {
+ # chapter @WordVal @ChapterWord @ChapterShortNum
+ @BypassWord @Dft {chapter @WordVal @ChapterWord} @ChapterShortNum
+ }
+ }
+
+ def @MajorTitle
+ {
+ @InitialLanguage @Language {
+ @RunningTitle @Dft @Title
+ }
+ }
+
+ export @BeginSubSections @EndSubSections @SubSection
+ def @Section force into { @SectionList&&preceding }
+ named @Tag {}
+ named @Title {}
+ named @RunningTitle { dft }
+ named @InitialLanguage { @InitialLanguage }
+ named @BypassNumber { dft }
+ named @NewPage { No }
+ body @Body
+ {
+
+ def @EndSubSectionsPlace { @Galley }
+
+ def @EndSubSections force into { @EndSubSectionsPlace&&preceding }
+ {}
+
+ macro @BeginSubSections
+ { //@SubSectionGap @SubSectionList @FirstSubSectionNumber
+ // @EndSubSectionsPlace //
+ }
+
+ def @SectionShortNum
+ {
+ @SectionNumbers @Then {
+ @BypassNumber @Dft {
+ @ChapterShortNum @Join @SectionNumbers @Num
+ { @SectionList&&@Tag @Open { num } }
+ }
+ }
+ }
+
+ export @BeginSubSubSections @EndSubSubSections @SubSubSection
+ def @SubSection force into { @SubSectionList&&preceding }
+ named @Tag {}
+ named @Title {}
+ named @RunningTitle { dft }
+ named @InitialLanguage { @InitialLanguage }
+ named @BypassNumber { dft }
+ named @NewPage { No }
+ body @Body
+ {
+
+ def @EndSubSubSectionsPlace { @Galley }
+
+ def @EndSubSubSections force into
+ { @EndSubSubSectionsPlace&&preceding }
+ {}
+
+ macro @BeginSubSubSections
+ { //@SubSubSectionGap @SubSubSectionList @FirstSubSubSectionNumber
+ // @EndSubSubSectionsPlace //
+ }
+
+ def @SubSectionShortNum
+ {
+ @SubSectionNumbers @Then {
+ @BypassNumber @Dft {
+ @SectionShortNum @Join @SubSectionNumbers @Num
+ { @SubSectionList&&@Tag @Open { num } }
+ }
+ }
+ }
+
+ def @SubSubSection force into { @SubSubSectionList&&preceding }
+ named @Tag {}
+ named @Title {}
+ named @RunningTitle { dft }
+ named @InitialLanguage { @InitialLanguage }
+ named @BypassNumber { dft }
+ named @NewPage { No }
+ body @Body
+ {
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Minor }
+ initiallanguage { @InitialLanguage }
+ title { @Title }
+ runningtitle { @RunningTitle }
+ headingfont { @SubSubSectionHeadingFont }
+ headingbreak { @SubSubSectionHeadingBreak }
+ headingformat { @Num @SubSubSectionHeadingFormat @Body }
+ incontents { @SubSubSectionInContents }
+ contentsindent { @SubSubSectionContentsIndent }
+ numbers { @SubSubSectionNumbers }
+ attachnum { @SubSubSectionList&&preceding @Tagged @Tag }
+ retrievenum { @SubSubSectionList&&@Tag @Open { num } }
+ bypassnumber { @BypassNumber }
+ prefix { @SubSectionShortNum }
+ majornum { @MajorNum }
+ majortitle { @MajorTitle }
+ intheorems { @SubSubSectionNumInTheorems }
+ indisplays { @SubSubSectionNumInDisplays }
+ infigures { @SubSubSectionNumInFigures }
+ intables { @SubSubSectionNumInTables }
+ infloaters { @SubSubSectionNumInFloaters }
+ inrunners { @SubSubSectionNumInRunners }
+ newpage { @NewPage }
+ @Body
+ }
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Minor }
+ initiallanguage { @InitialLanguage }
+ title { @Title }
+ runningtitle { @RunningTitle }
+ headingfont { @SubSectionHeadingFont }
+ headingbreak { @SubSectionHeadingBreak }
+ headingformat { @Num @SubSectionHeadingFormat @Body }
+ incontents { @SubSectionInContents }
+ contentsindent { @SubSectionContentsIndent }
+ numbers { @SubSectionNumbers }
+ attachnum { @SubSectionList&&preceding @Tagged @Tag }
+ retrievenum { @SubSectionList&&@Tag @Open { num } }
+ bypassnumber { @BypassNumber }
+ prefix { @SectionShortNum }
+ majornum { @MajorNum }
+ majortitle { @MajorTitle }
+ intheorems { @SubSectionNumInTheorems }
+ indisplays { @SubSectionNumInDisplays }
+ infigures { @SubSectionNumInFigures }
+ intables { @SubSectionNumInTables }
+ infloaters { @SubSectionNumInFloaters }
+ inrunners { @SubSectionNumInRunners }
+ newpage { @NewPage }
+ @Body
+
+ }
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Minor }
+ initiallanguage { @InitialLanguage }
+ title { @Title }
+ runningtitle { @RunningTitle }
+ headingfont { @SectionHeadingFont }
+ headingbreak { @SectionHeadingBreak }
+ headingformat { @Num @SectionHeadingFormat @Body }
+ incontents { @SectionInContents }
+ contentsindent { @SectionContentsIndent }
+ numbers { @SectionNumbers }
+ attachnum { @SectionList&&preceding @Tagged @Tag }
+ retrievenum { @SectionList&&@Tag @Open { num } }
+ bypassnumber { @BypassNumber }
+ prefix { @ChapterShortNum }
+ majornum { @MajorNum }
+ majortitle { @MajorTitle }
+ intheorems { @SectionNumInTheorems }
+ indisplays { @SectionNumInDisplays }
+ infigures { @SectionNumInFigures }
+ intables { @SectionNumInTables }
+ infloaters { @SectionNumInFloaters }
+ inrunners { @SectionNumInRunners }
+ newpage { @NewPage }
+ @Body
+
+ }
+
+ def @Part
+ named @Tag {}
+ {
+ @LargeScaleStructure
+ type { VeryMajor }
+ initiallanguage { @InitialLanguage }
+ title { @PartTitle }
+ aboveheadinggap { @AbovePartGap }
+ headingfont { @PartHeadingFont }
+ headingbreak { @PartHeadingBreak }
+ headingformat { @Num @PartHeadingFormat @Body }
+ bypassnumber { @PartNumber }
+ incontents { @PartInContents }
+ contentsindent { @PartContentsIndent }
+ sendheader { @Full @Body }
+ inrunners { Yes }
+ tag { @Tag }
+ @PartText
+ }
+
+ @PartNumber @Case {
+ "" @Yield {
+ @PartTitle @Case {
+ "" @Yield @Null
+ else @Yield @Part
+ }
+ }
+ else @Yield @Part
+ }
+ //
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Major }
+ initiallanguage { @InitialLanguage }
+ title { @Title }
+ runningtitle { @RunningTitle }
+ aboveheadinggap { @AboveChapterGap }
+ headingfont { @ChapterHeadingFont }
+ headingbreak { @ChapterHeadingBreak }
+ headingformat { @Num @ChapterHeadingFormat @Body }
+ incontents { @ChapterInContents }
+ contentsindent { @ChapterContentsIndent }
+ # word { chapter @WordVal @ChapterWord }
+ word { @BypassWord @Dft { chapter @WordVal @ChapterWord } }
+ numbers { @ChapterNumbers }
+ attachnum { @ChapterList&&preceding @Tagged @Tag }
+ retrievenum { @ChapterList&&@Tag @Open { num } }
+ bypassnumber { @BypassNumber }
+ pnprefix { @ChapterPrefix }
+ intheorems { @ChapterNumInTheorems }
+ indisplays { @ChapterNumInDisplays }
+ infigures { @ChapterNumInFigures }
+ intables { @ChapterNumInTables }
+ infloaters { @ChapterNumInFloaters }
+ sendheader { @ChapterFull @Body }
+ innergap { @SectionGap }
+ inrunners { Yes }
+ @Body
+
+ }
+
+
+ #######################################################################
+ # #
+ # Appendices. #
+ # #
+ #######################################################################
+
+ export @BeginSubAppendices @EndSubAppendices @SubAppendix
+ def @Appendix force into { @AppendixList&&preceding }
+ named @Tag {}
+ named @Title {}
+ named @RunningTitle { dft }
+ named @InitialLanguage {}
+ named @PartNumber {}
+ named @PartTitle {}
+ named @PartText {}
+ named @BypassNumber { dft }
+ body @Body
+ {
+
+ def @EndSubAppendicesPlace { @Galley }
+
+ def @EndSubAppendices force into { @EndSubAppendicesPlace&&preceding }
+ {}
+
+ macro @BeginSubAppendices
+ { //@SubAppendixGap @SubAppendixList @FirstSubAppendixNumber
+ // @EndSubAppendicesPlace //
+ }
+
+ def @AppendixShortNum
+ {
+ @AppendixNumbers @Then {
+ @BypassNumber @Dft {
+ @AppendixNumbers @Num @AppendixList&&@Tag @Open { num }
+ }
+ }
+ }
+
+ def @MajorNum
+ {
+ @AppendixNumbers @Then @InitialLanguage @Language {
+ appendix @WordVal @AppendixWord @AppendixShortNum
+ }
+ }
+
+ def @MajorTitle
+ {
+ @InitialLanguage @Language {
+ @RunningTitle @Dft @Title
+ }
+ }
+
+ export @BeginSubSubAppendices @EndSubSubAppendices @SubSubAppendix
+ def @SubAppendix force into { @SubAppendixList&&preceding }
+ named @Tag {}
+ named @Title {}
+ named @RunningTitle { dft }
+ named @InitialLanguage { @InitialLanguage }
+ named @BypassNumber { dft }
+ named @NewPage { No }
+ body @Body
+ {
+
+ def @EndSubSubAppendicesPlace { @Galley }
+
+ def @EndSubSubAppendices force into { @EndSubSubAppendicesPlace&&preceding }
+ {}
+
+ macro @BeginSubSubAppendices
+ { //@SubSubAppendixGap @SubSubAppendixList @FirstSubSubAppendixNumber
+ // @EndSubSubAppendicesPlace //
+ }
+
+ def @SubAppendixShortNum
+ {
+ @SubAppendixNumbers @Then {
+ @BypassNumber @Dft {
+ @AppendixShortNum @Join @SubAppendixNumbers @Num
+ { @SubAppendixList&&@Tag @Open { num } }
+ }
+ }
+ }
+
+ def @SubSubAppendix force into { @SubSubAppendixList&&preceding }
+ named @Tag {}
+ named @Title {}
+ named @RunningTitle { dft }
+ named @InitialLanguage { @InitialLanguage }
+ named @BypassNumber { dft }
+ named @NewPage { No }
+ body @Body
+ {
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Minor }
+ initiallanguage { @InitialLanguage }
+ title { @Title }
+ runningtitle { @RunningTitle }
+ headingfont { @SubSubAppendixHeadingFont }
+ headingbreak { @SubSubAppendixHeadingBreak }
+ headingformat { @Num @SubSubAppendixHeadingFormat @Body }
+ incontents { @SubSubAppendixInContents }
+ contentsindent { @SubSubAppendixContentsIndent }
+ numbers { @SubSubAppendixNumbers }
+ attachnum { @SubSubAppendixList&&preceding @Tagged @Tag }
+ retrievenum { @SubSubAppendixList&&@Tag @Open { num } }
+ bypassnumber { @BypassNumber }
+ prefix { @SubAppendixShortNum }
+ majornum { @MajorNum }
+ majortitle { @MajorTitle }
+ intheorems { @SubSubAppendixNumInTheorems }
+ indisplays { @SubSubAppendixNumInDisplays }
+ infigures { @SubSubAppendixNumInFigures }
+ intables { @SubSubAppendixNumInTables }
+ infloaters { @SubSubAppendixNumInFloaters }
+ inrunners { @SubSubAppendixNumInRunners }
+ newpage { @NewPage }
+ @Body
+
+ }
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Minor }
+ initiallanguage { @InitialLanguage }
+ title { @Title }
+ runningtitle { @RunningTitle }
+ headingfont { @SubAppendixHeadingFont }
+ headingbreak { @SubAppendixHeadingBreak }
+ headingformat { @Num @SubAppendixHeadingFormat @Body }
+ incontents { @SubAppendixInContents }
+ contentsindent { @SubAppendixContentsIndent }
+ numbers { @SubAppendixNumbers }
+ attachnum { @SubAppendixList&&preceding @Tagged @Tag }
+ retrievenum { @SubAppendixList&&@Tag @Open { num } }
+ bypassnumber { @BypassNumber }
+ prefix { @AppendixShortNum }
+ majornum { @MajorNum }
+ majortitle { @MajorTitle }
+ intheorems { @SubAppendixNumInTheorems }
+ indisplays { @SubAppendixNumInDisplays }
+ infigures { @SubAppendixNumInFigures }
+ intables { @SubAppendixNumInTables }
+ infloaters { @SubAppendixNumInFloaters }
+ inrunners { @SubAppendixNumInRunners }
+ newpage { @NewPage }
+ @Body
+
+ }
+
+ def @Part
+ named @Tag {}
+ {
+ @LargeScaleStructure
+ type { VeryMajor }
+ initiallanguage { @InitialLanguage }
+ title { @PartTitle }
+ aboveheadinggap { @AbovePartGap }
+ headingfont { @PartHeadingFont }
+ headingbreak { @PartHeadingBreak }
+ headingformat { @Num @PartHeadingFormat @Body }
+ bypassnumber { @PartNumber }
+ incontents { @PartInContents }
+ contentsindent { @PartContentsIndent }
+ sendheader { @Full @Body }
+ inrunners { Yes }
+ tag { @Tag }
+ @PartText
+ }
+
+ @PartNumber @Case {
+ "" @Yield {
+ @PartTitle @Case {
+ "" @Yield @Null
+ else @Yield @Part
+ }
+ }
+ else @Yield @Part
+ }
+ //
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Major }
+ initiallanguage { @InitialLanguage }
+ title { @Title }
+ runningtitle { @RunningTitle }
+ aboveheadinggap { @AboveChapterGap }
+ headingfont { @AppendixHeadingFont }
+ headingbreak { @AppendixHeadingBreak }
+ headingformat { @Num @AppendixHeadingFormat @Body }
+ incontents { @AppendixInContents }
+ contentsindent { @AppendixContentsIndent }
+ word { appendix @WordVal @AppendixWord }
+ numbers { @AppendixNumbers }
+ attachnum { @AppendixList&&preceding @Tagged @Tag }
+ retrievenum { @AppendixList&&@Tag @Open { num } }
+ bypassnumber { @BypassNumber }
+ pnprefix { @AppendixPrefix }
+ intheorems { @AppendixNumInTheorems }
+ indisplays { @AppendixNumInDisplays }
+ infigures { @AppendixNumInFigures }
+ intables { @AppendixNumInTables }
+ infloaters { @AppendixNumInFloaters }
+ sendheader { @ChapterFull @Body }
+ innergap { @SubAppendixGap }
+ inrunners { Yes }
+ @Body
+
+ }
+
+
+ #######################################################################
+ # #
+ # Colophon. #
+ # #
+ #######################################################################
+
+ def @Colophon into { @ColophonList&&preceding }
+ named @Tag {}
+ named @InitialLanguage {}
+ body @Body
+ {
+
+ @InitialLanguage @Language @Body
+
+ }
+
+
+@End @BookSetup
diff --git a/include/include/bsf b/include/include/bsf
new file mode 100644
index 0000000..6c8959e
--- /dev/null
+++ b/include/include/bsf
@@ -0,0 +1,1929 @@
+
+###############################################################################
+# #
+# Lout @BasicSetup package #
+# #
+# Jeffrey H. Kingston #
+# #
+# This package contains basic symbols used widely throughout many #
+# documents, for font changes, particular characters, standard words in #
+# the current language, date and time, paragraphs, lists, colours, #
+# rules, and boxes. #
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either Version 3, or (at your option) #
+# any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA #
+# #
+# As a special exception, when this file is read by Lout when processing #
+# a Lout source document, you may use the result without restriction. #
+# #
+###############################################################################
+
+@SysInclude { lengths } # @PSLengths
+@SysInclude { coltex } # @ColourCommand and @TextureCommand
+@SysPrependGraphic { bsf.lpg } # rules, boxes, margin note setup
+
+
+###############################################################################
+# #
+# The following symbols are defined outside @BasicSetup so that #
+# they can be invoked when setting its parameters in the @Use clause. #
+# #
+###############################################################################
+
+def @OrIfPlain
+ precedence 80
+ left x
+ right y
+{
+ @BackEnd @Case {
+ PlainText @Yield y
+ else @Yield x
+ }
+}
+
+
+def @ZeroSize right x
+{
+ @HContract @VContract { ^/0io |0io @OneCol @OneRow x |0io /0io }
+}
+
+
+###########################################################################
+# #
+# @Place: places an object at an arbitrary point on the page. #
+# #
+###########################################################################
+
+#
+# VT: the expressions in the braces will work for PostScript but not for PDF
+# they should be modified in the way the "named c { " cm" }" blocks were modified above
+# but since the point of @Place is to output a matrix (?), I have not implemented this
+#
+def @Place
+ import @PSLengths named x
+ named "+" precedence 96 associativity left left a right b { a b "add" }
+ named "-" precedence 96 associativity left left a right b { a b "sub" }
+ named "/" precedence 97 associativity left left a right b { a b "div" }
+ named "*" precedence 98 associativity left left a right b { a b "mul" }
+ { 0 }
+ import @PSLengths named y
+ named "+" precedence 96 associativity left left a right b { a b "add" }
+ named "-" precedence 96 associativity left left a right b { a b "sub" }
+ named "/" precedence 97 associativity left left a right b { a b "div" }
+ named "*" precedence 98 associativity left left a right b { a b "mul" }
+ { 0 }
+ right val
+{
+ @ZeroSize {
+ @BackEnd @Case {
+ PlainText @Yield ""
+ PostScript @Yield {
+ { "LoutPageDict begin matr setmatrix" x y "translate end gsave"
+ // "grestore" } @Graphic val
+ }
+ else @Yield { { "% @Place UNIMPLEMENTED" } @Graphic val # VT: PDF currently has no output
+ }
+ }
+ }
+}
+
+
+###########################################################################
+# #
+# @Colour, @Color #
+# #
+###########################################################################
+
+def @Colour @Color left col right y { {@ColourCommand col} @SetColour y }
+
+
+###########################################################################
+# #
+# @ColouredUnderline, @ColoredUnderline #
+# #
+###########################################################################
+
+def @ColouredUnderline @ColoredUnderline left col right y {
+ {@ColourCommand col} @SetUnderlineColour @Underline y
+}
+
+
+###########################################################################
+# #
+# @Texture #
+# #
+###########################################################################
+
+def @Texture
+ left type
+ named scale { 1 }
+ named hscale { 1 }
+ named vscale { 1 }
+ import @PSLengths named angle { 0d }
+ import @PSLengths named hshift { 0i }
+ import @PSLengths named vshift { 0i }
+ import @PSLengths named width { "dft" }
+ import @PSLengths named height { "dft" }
+ import @PSLengths named gap { "dft" }
+ import @PSLengths named radius { "dft" }
+ import @PSLengths named linewidth { "dft" }
+ named font { "dft" }
+ import @PSLengths named size { "dft" }
+ named value { "dft" }
+ right x
+{
+ { type @TextureCommand
+ scale { scale }
+ hscale { hscale }
+ vscale { vscale }
+ angle { angle }
+ hshift { hshift }
+ vshift { vshift }
+ width { width }
+ height { height }
+ gap { gap }
+ radius { radius }
+ linewidth { linewidth }
+ font { font }
+ size { size }
+ value { value }
+ } @SetTexture x
+}
+
+
+###############################################################################
+# #
+# Symbols exported by @BasicSetup. #
+# #
+###############################################################################
+
+export
+
+ @InitialFont @InitialBreak @InitialOutdent @InitialSpace @InitialLanguage
+ @InitialColour @InitialBackgroundColour @OptimizePages @HeadingFont
+ @ParaGap @ParaIndent @DisplayGap @DisplayIndent @DefaultIndent
+ @DisplayNumStyle @WideIndent @VeryWideIndent
+ @ListGap @ListIndent @ListRightIndent
+ @ListLabelWidth @ListLabelRight @ListLabelRightGap @ListFont @ListBreak
+ @NumberSeparator
+
+ @Pipe @PipeVerbatim @PipeRawVerbatim
+
+ @Word @Roman @UCRoman @Alpha @UCAlpha @FnBullets @FnSymbols
+ @Months @ShortMonths @WeekDays @ShortWeekDays
+ @TwelveHours @ShortHours @MeriDiems @ShortMeriDiems
+
+ @Sym @Ding @R @I @B @BI @S @F @II
+ "~" "~~" "``" "''" ",," "--" "---" "..."
+
+ @Bullet @ParSym @SectSym @Dagger @DaggerDbl @CDot @Sterling @Yen @Florin
+ @Star @Degree @Minute @Second @Multiply @Divide @Lozenge @Register
+ @CopyRight @TradeMark @Euro
+
+ @Date @Time @DateTimeFormat @DropCapTwo @DropCapThree @Centre @Right
+ @NoDotSep @NoDotJoin @Join @Sep @DotSep @ColonSep @DotJoin @DashJoin
+ @NumSep @VStrut @ZeroWidth @ZeroHeight @OverStrike @Sup @Sub @HClip @VClip
+ @FullWidthRule @LocalWidthRule @Box @CurveBox @ShadowBox @BoundaryMarks
+ @DocInfo @NumberMarker @NumberOf @TitleMarker @TitleOf
+ @PageMarker @PageMark @NoLinkPageMark @PageOf @PageParityOf
+ @CrossLink @ExternalLink
+
+ @BeginDisplayCounter
+
+ @Heading "^" "&-" @If @Not @And @Or @True
+ @PP @LP @LLP @DP @LOP @NP @CNP
+
+ @BeginAlignedDisplays
+ @EndAlignedDisplays
+
+ @Display
+ @LeftDisplay
+ @IndentedDisplay
+ @QuotedDisplay
+ @CentredDisplay
+ @RightDisplay
+ @AlignedDisplay
+ @LeftAlignedDisplay
+ @IndentedAlignedDisplay
+ @QuotedAlignedDisplay
+ @CentredAlignedDisplay
+ @RightAlignedDisplay
+ @NumberedDisplay
+ @LeftNumberedDisplay
+ @IndentedNumberedDisplay
+ @QuotedNumberedDisplay
+ @CentredNumberedDisplay
+ @RightNumberedDisplay
+ @AlignedNumberedDisplay
+ @LeftAlignedNumberedDisplay
+ @IndentedAlignedNumberedDisplay
+ @QuotedAlignedNumberedDisplay
+ @CentredAlignedNumberedDisplay
+ @RightAlignedNumberedDisplay
+
+ @RawDisplay
+ @RawLeftDisplay
+ @RawIndentedDisplay
+ @RawQuotedDisplay
+ @RawCentredDisplay
+ @RawRightDisplay
+ @RawAlignedDisplay
+ @RawLeftAlignedDisplay
+ @RawIndentedAlignedDisplay
+ @RawQuotedAlignedDisplay
+ @RawCentredAlignedDisplay
+ @RawRightAlignedDisplay
+ @RawNumberedDisplay
+ @RawLeftNumberedDisplay
+ @RawIndentedNumberedDisplay
+ @RawQuotedNumberedDisplay
+ @RawCentredNumberedDisplay
+ @RawRightNumberedDisplay
+ @RawAlignedNumberedDisplay
+ @RawLeftAlignedNumberedDisplay
+ @RawIndentedAlignedNumberedDisplay
+ @RawQuotedAlignedNumberedDisplay
+ @RawCentredAlignedNumberedDisplay
+ @RawRightAlignedNumberedDisplay
+
+ @ListItem
+ @ParagraphItem
+ @ListInterruptItem
+ @ListNewPage
+ @DropListItem
+ @TagItem
+ @DropTagItem
+
+ @EndList
+ @RawEndList
+
+ @RawList
+ @RawLeftList
+ @RawIndentedList
+ @RawQuotedList
+ @RawCentredList @RawCenteredList
+ @RawNumberedList
+ @RawParenNumberedList
+ @RawRomanList
+ @RawParenRomanList
+ @RawUCRomanList
+ @RawParenUCRomanList
+ @RawAlphaList
+ @RawParenAlphaList
+ @RawUCAlphaList
+ @RawParenUCAlphaList
+ @RawBulletList
+ @RawStarList
+ @RawDashList
+ @RawTaggedList
+ @RawWideTaggedList
+ @RawVeryWideTaggedList
+
+ @List
+ @LeftList
+ @IndentedList
+ @QuotedList
+ @CentredList @CenteredList
+ @NumberedList
+ @ParenNumberedList
+ @RomanList
+ @ParenRomanList
+ @UCRomanList
+ @ParenUCRomanList
+ @AlphaList
+ @ParenAlphaList
+ @UCAlphaList
+ @ParenUCAlphaList
+ @BulletList
+ @StarList
+ @DashList
+ @TaggedList
+ @WideTaggedList
+ @VeryWideTaggedList
+
+
+###############################################################################
+# #
+# The @BasicSetup package. #
+# #
+###############################################################################
+
+def @BasicSetup
+ named @InitialFont { Times Base 12p } # initial font
+ named @InitialBreak { {adjust 1.20fx hyphen} @OrIfPlain
+ {ragged 1fx nohyphen} } # initial break
+ named @InitialOutdent { 2f @OrIfPlain 4s } # initial outdent
+ named @InitialSpace { lout } # initial space style
+ named @InitialLanguage{ English } # initial language
+ named @InitialColour { black } # initial colour
+ named @InitialBackgroundColour { white } # initial background colour
+ named @OptimizePages { No } # optimize page breaks?
+ named @HeadingFont { Bold } # font for @Heading
+ named @FixedWidthFont { Courier Base -1p } # font for @F
+ named @ParaGap { 1.3vx @OrIfPlain 1f } # gap between paragraphs
+ named @ParaIndent { 2.0f @OrIfPlain 5s } # first-line indent for @PP
+ named @DisplayGap { 1.0v @OrIfPlain 1f } # gap above, below displays
+ named @DisplayIndent { 2.0f @OrIfPlain 5s } # @IndentedDisplay indent
+ named @DefaultIndent { 0.5rt } # @Display indent
+ named @DisplayNumStyle
+ right num { (num) } # display number style
+ named @WideIndent { 4.0f @OrIfPlain 10s } # @WideTaggedList indent
+ named @VeryWideIndent { 8.0f @OrIfPlain 20s } # @VeryWideTaggedList indent
+ named @ListOuterGap { 1.0v @OrIfPlain 1f } # gap before, after list
+ named @ListGap { 1.0v @OrIfPlain 1f } # gap between list items
+ named @ListIndent { 0s } # indent of list items
+ named @ListRightIndent{ 0s } # right indent of list items
+ named @ListLabelWidth { 2.0f @OrIfPlain 5s } # width allowed for list tags
+ named @ListLabelRight { No } # right align label
+ named @ListLabelRightGap { 2s } # right align gap
+ named @ListFont { } # font style of list item
+ named @ListBreak { } # break style of list item
+ named @NumberSeparator{ . } # separates numbers like 2.3.7
+ import @BasicSetup
+ named @CrossLinkFormat
+ right @Body { @Body } # format for cross links
+ import @BasicSetup
+ named @ExternalLinkFormat
+ right @Body { @Body } # format for external links
+@Begin
+
+ ###########################################################################
+ # #
+ # x @Dft y #
+ # #
+ # This returns x unless its value is "dft", in which case it returns y. #
+ # Useful for defaulting the value of one parameter to another. #
+ # #
+ ###########################################################################
+
+ def @Dft
+ left x
+ right y
+ {
+ x @Case {
+ dft @Yield y
+ else @Yield x
+ }
+ }
+
+
+ ###########################################################################
+ # #
+ # @Pipe, @PipeVerbatim, and @PipeRawVerbatim #
+ # #
+ ###########################################################################
+
+ def @Pipe
+ left command
+ right x
+ {
+ def @Filter { "cat" @FilterIn "|" command ">" @FilterOut }
+
+ x
+ }
+
+ def @PipeVerbatim
+ left command
+ right x
+ {
+ def @Filter {
+ "(echo @Verbatim @Begin ; (cat" @FilterIn "|" command "); echo @End @Verbatim ) >" @FilterOut }
+
+ x
+ }
+
+ def @PipeRawVerbatim
+ left command
+ right x
+ {
+ def @Filter {
+ "(echo @RawVerbatim @Begin ; (cat" @FilterIn "|" command "); echo @End @RawVerbatim ) >" @FilterOut }
+
+ x
+ }
+
+
+ ###########################################################################
+ # #
+ # @Sym, @Ding font symbols, and miscellaneous special characters. #
+ # #
+ ###########################################################################
+
+ def @Sym right x { { Symbol Base } @Font @Char x }
+ def @Ding right x { { Dingbats Base } @Font @Char x }
+
+ def @R right x { Base @Font x }
+ def @I right x { Slope @Font x }
+ def @B right x { Bold @Font x }
+ def @BI right x { BoldSlope @Font x }
+ def @S right x { smallcaps @Font x }
+ def @F right x { @FixedWidthFont @Font x }
+
+ def @II
+ right x
+ {
+ { @CurrFace @Case {
+ Bold @Yield BoldSlope
+ else @Yield Slope
+ } } @Font x
+ }
+
+ def "~" left x right y { x &1su y }
+ def "~~" left x right y { x &2s y }
+
+ def "``" { @Char "quotedblleft" @OrIfPlain "``" }
+ def "''" { @Char "quotedblright" @OrIfPlain "''" }
+ def ",," { @Char "quotedblbase" @OrIfPlain ",," }
+ def "--" { @Char "endash" @OrIfPlain "--" }
+ def "---" { @Char "emdash" @OrIfPlain "---"}
+ def "..." { @Char "ellipsis" @OrIfPlain "..."}
+ def @Bullet { @Char "bullet" @OrIfPlain "o" }
+ def @ParSym { @Char "paragraph" @OrIfPlain "P" }
+ def @SectSym { @Char "section" @OrIfPlain "$" }
+ def @Dagger { @Char "dagger" @OrIfPlain "+" }
+ def @DaggerDbl { @Char "daggerdbl" @OrIfPlain "++" }
+ def @CDot { @Char "periodcentered" @OrIfPlain "." }
+ def @Sterling { @Char "sterling" @OrIfPlain "&" }
+ def @Yen { @Char "yen" @OrIfPlain "Y" }
+ def @Florin { @Char "florin" @OrIfPlain "f" }
+
+ def @Star { @Sym "asteriskmath" @OrIfPlain "*" }
+ def @Degree { @Sym "degree" @OrIfPlain "o" }
+ def @Minute { @Sym "minute" @OrIfPlain "'" }
+ def @Second { @Sym "second" @OrIfPlain "''" }
+ def @Multiply { @Sym "multiply" @OrIfPlain "x" }
+ def @Divide { @Sym "divide" @OrIfPlain "/" }
+ def @Lozenge { @Sym "lozenge" @OrIfPlain "O" }
+ def @Register { @Sym "registersans" @OrIfPlain "R" }
+ def @CopyRight { @Sym "copyrightsans" @OrIfPlain "C" }
+ def @TradeMark { @Sym "trademarksans" @OrIfPlain "TM" }
+
+ def @Euro
+ {
+ @BackEnd @Case {
+
+ PostScript @Yield {
+ 0.65w @VShift @VContract @HContract
+ "xsize ysize ysize 0.07 mul louteuro" @Graphic {
+ 0.7f @High 0.735f @Wide
+ }
+ }
+
+ PDF @Yield { EUR }
+
+ PlainText @Yield { EUR }
+ }
+ }
+
+
+ ###########################################################################
+ # #
+ # Symbols stored in the "standard" database #
+ # #
+ # @Word language-spacific words such as Chapter, etc. #
+ # @Roman lower case Roman numerals i, ii, ... , cc #
+ # @UCRoman upper case Roman numerals I, II, ... , CC #
+ # @Alpha lower case Roman alphabet a, b, ... , z #
+ # @UCAlpha upper case Roman alphabet A, B, ... , Z #
+ # @FnBullets bullets as footnote markers #
+ # @FnSymbols traditional footnote symbols asterisk, dagger, etc. #
+ # @Months months of the year: January, ... , December #
+ # @ShortMonths months of the year, abbreviated: Jan, ..., Dec #
+ # @WeekDays days of the week: Sunday, ... , Saturday #
+ # @ShortWeekDays days of the week, abbreviated: Sun, ... , Sat #
+ # @TwelveHours hours, from 1 to 12 #
+ # @ShortHours hours, from 0 to 23 #
+ # @DateTimeFormat format of results of @Date and @Time #
+ # #
+ ###########################################################################
+
+ def @Word left @Tag right @Val { @Val }
+ def @Roman left @Tag right @Val { @Val }
+ def @UCRoman left @Tag right @Val { @Val }
+ def @Alpha left @Tag right @Val { @Val }
+ def @UCAlpha left @Tag right @Val { @Val }
+ def @FnBullets left @Tag right @Val { @Val }
+ def @FnSymbols left @Tag right @Val { @Val }
+ def @Months left @Tag right @Val { @Val }
+ def @ShortMonths left @Tag right @Val { @Val }
+ def @WeekDays left @Tag right @Val { @Val }
+ def @ShortWeekDays left @Tag right @Val { @Val }
+ def @TwelveHours left @Tag right @Val { @Val }
+ def @ShortHours left @Tag right @Val { @Val }
+ def @MeriDiems left @Tag right @Val { @Val }
+ def @ShortMeriDiems left @Tag right @Val { @Val }
+
+ export @Value
+ def @DateTimeFormat left @Tag
+ named @Value
+ named @Year {}
+ named @ShortYear {}
+ named @Month {}
+ named @ShortMonth {}
+ named @MonthNum {}
+ named @Day {}
+ named @ShortDay {}
+ named @DayNum {}
+ named @MeriDiem {}
+ named @ShortMeriDiem {}
+ named @Hour {}
+ named @TwelveHour {}
+ named @ShortHour {}
+ named @Minute {}
+ named @Second {}
+ {}
+ {}
+
+ @SysDatabase @Word @Roman @UCRoman @Alpha @UCAlpha @FnBullets @FnSymbols
+ @Months @ShortMonths @WeekDays @ShortWeekDays @TwelveHours
+ @ShortHours @MeriDiems @ShortMeriDiems @DateTimeFormat
+ { standard }
+
+
+ ###########################################################################
+ # #
+ # @Date and @Time: the date and time now. #
+ # #
+ ###########################################################################
+
+ def @Date
+ named @Format
+ named @Year { @Moment&&now @Open { {@Century}@Year }}
+ named @ShortYear { @Moment&&now @Open { @Year }}
+ named @Month { @Moment&&now @Open { @Months&&@Month }}
+ named @ShortMonth { @Moment&&now @Open { @ShortMonths&&@Month }}
+ named @MonthNum { @Moment&&now @Open { @Month }}
+ named @Day { @Moment&&now @Open { @WeekDays&&@WeekDay }}
+ named @ShortDay { @Moment&&now @Open { @ShortWeekDays&&@WeekDay}}
+ named @DayNum { @Moment&&now @Open { @Day }}
+ named @MeriDiem { @Moment&&now @Open { @MeriDiems&&@Hour }}
+ named @ShortMeriDiem{ @Moment&&now @Open { @ShortMeriDiems&&@Hour }}
+ named @Hour { @Moment&&now @Open { @Hour }}
+ named @TwelveHour { @Moment&&now @Open { @TwelveHours&&@Hour }}
+ named @ShortHour { @Moment&&now @Open { @ShortHours&&@Hour }}
+ named @Minute { @Moment&&now @Open { @Minute }}
+ named @Second { @Moment&&now @Open { @Second }}
+ {
+ @DateTimeFormat&&date @Open { @Value
+ @Year { @Year }
+ @ShortYear { @ShortYear }
+ @Month { @Month }
+ @ShortMonth { @ShortMonth }
+ @MonthNum { @MonthNum }
+ @Day { @Day }
+ @ShortDay { @ShortDay }
+ @DayNum { @DayNum }
+ @MeriDiem { @MeriDiem }
+ @ShortMeriDiem { @ShortMeriDiem }
+ @Hour { @Hour }
+ @TwelveHour { @TwelveHour }
+ @ShortHour { @ShortHour }
+ @Minute { @Minute }
+ @Second { @Second }
+ }
+ }
+ { @Format }
+
+ def @Time
+ named @Format
+ named @Year { @Moment&&now @Open { {@Century}@Year }}
+ named @ShortYear { @Moment&&now @Open { @Year }}
+ named @Month { @Moment&&now @Open { @Months&&@Month }}
+ named @ShortMonth { @Moment&&now @Open { @ShortMonths&&@Month }}
+ named @MonthNum { @Moment&&now @Open { @Month }}
+ named @Day { @Moment&&now @Open { @WeekDays&&@WeekDay }}
+ named @ShortDay { @Moment&&now @Open { @ShortWeekDays&&@WeekDay}}
+ named @DayNum { @Moment&&now @Open { @Day }}
+ named @MeriDiem { @Moment&&now @Open { @MeriDiems&&@Hour }}
+ named @ShortMeriDiem{ @Moment&&now @Open { @ShortMeriDiems&&@Hour }}
+ named @Hour { @Moment&&now @Open { @Hour }}
+ named @TwelveHour { @Moment&&now @Open { @TwelveHours&&@Hour }}
+ named @ShortHour { @Moment&&now @Open { @ShortHours&&@Hour }}
+ named @Minute { @Moment&&now @Open { @Minute }}
+ named @Second { @Moment&&now @Open { @Second }}
+ {
+ @DateTimeFormat&&time @Open { @Value
+ @Year { @Year }
+ @ShortYear { @ShortYear }
+ @Month { @Month }
+ @ShortMonth { @ShortMonth }
+ @MonthNum { @MonthNum }
+ @Day { @Day }
+ @ShortDay { @ShortDay }
+ @DayNum { @DayNum }
+ @MeriDiem { @MeriDiem }
+ @ShortMeriDiem { @ShortMeriDiem }
+ @Hour { @Hour }
+ @TwelveHour { @TwelveHour }
+ @ShortHour { @ShortHour }
+ @Minute { @Minute }
+ @Second { @Second }
+ }
+ }
+ { @Format }
+
+
+ ###########################################################################
+ # #
+ # @DropCapTwo and @DropCapThree #
+ # #
+ ###########################################################################
+
+ def @DropCapTwo
+ left y
+ named height { 1.5v }
+ right x
+ {
+ def @ParPlace { @Galley }
+ def @EndParPlace { @Galley }
+
+ def @LineList
+ {
+ @PAdjust @ParPlace
+ //1vx @LineList
+ }
+
+ def @ParGalley horizontally into { @ParPlace&&preceding }
+ right x
+ {
+ x
+ }
+
+ def @EndPar force into { @EndParPlace&&following } { @Null }
+
+ def @Cap
+ {
+ -0.25f @VShift 1.0w @VShift {
+ -90d @Rotate height @Wide @Scale 90d @Rotate y
+ }
+ }
+
+ |1s @PAdjust @ParPlace
+ /1vo @Cap @ParGalley {x & @EndPar &1rt } | @PAdjust @ParPlace
+ //1vx @LineList
+ // @EndParPlace
+ }
+
+ def @DropCapThree
+ left y
+ named height { 2.5v }
+ right x
+ {
+ def @ParPlace { @Galley }
+ def @EndParPlace { @Galley }
+
+ def @LineList
+ {
+ @PAdjust @ParPlace
+ //1vx @LineList
+ }
+
+ def @ParGalley force horizontally into { @ParPlace&&preceding }
+ right x
+ {
+ x
+ }
+
+ def @EndPar force into { @EndParPlace&&following } { @Null }
+
+ def @Cap
+ {
+ -0.25f @VShift 1.0w @VShift {
+ -90d @Rotate height @Wide @Scale 90d @Rotate y
+ }
+ }
+
+ |1s @PAdjust @ParPlace
+ /1vo @ParGalley { x & @EndPar &1rt } | @PAdjust @ParPlace
+ /1vo @Cap | @PAdjust @ParPlace
+ //1vx @LineList
+ // @EndParPlace
+ }
+
+
+ ###########################################################################
+ # #
+ # @Centre, @Center, @Right, @NoDotSep, @NoDotJoin, @DotSep, #
+ # @ColonSep, @DotJoin, @DashJoin, @NumSep #
+ # #
+ ###########################################################################
+
+ macro @Centre @Center { |0.5rt @HContract }
+
+ def @Right
+ precedence 50
+ left x
+ right y
+ { x |1.0rt @OneCol { 2f @Wide {} | y } }
+
+ def @NoDotSep left x right y
+ {
+ x @Case {
+ {} @Yield y
+ else @Yield {
+ y @Case {
+ {} @Yield x
+ else @Yield { x |2s y }
+ }
+ }
+ }
+ }
+
+ def @NoDotJoin left x right y
+ {
+ x @Case {
+ {} @Yield y
+ else @Yield {
+ y @Case {
+ {} @Yield x
+ else @Yield { x{y} }
+ }
+ }
+ }
+ }
+
+ def @DotSep left x right y
+ {
+ x @Case {
+ {} @Yield y
+ else @Yield {
+ y @Case {
+ {} @Yield x
+ else @Yield { x. |2s y }
+ }
+ }
+ }
+ }
+
+ def @ColonSep left x right y
+ {
+ x @Case {
+ {} @Yield y
+ else @Yield {
+ y @Case {
+ {} @Yield x
+ else @Yield { x: |2s y }
+ }
+ }
+ }
+ }
+
+ def @DotJoin left x right y
+ {
+ x @Case {
+ {} @Yield y
+ else @Yield {
+ y @Case {
+ {} @Yield x
+ else @Yield { x.y }
+ }
+ }
+ }
+ }
+
+ def @DashJoin left x right y
+ {
+ x @Case {
+ {} @Yield y
+ else @Yield {
+ y @Case {
+ {} @Yield x
+ else @Yield { x--y }
+ }
+ }
+ }
+ }
+
+ def @NumSep left x right y
+ {
+ x @Case {
+ {} @Yield y
+ else @Yield {
+ y @Case {
+ {} @Yield x
+ else @Yield {
+ @CurrLang @Case {
+ Hungarian @Yield { y. x }
+ else @Yield { x y }
+ }
+ }
+ }
+ }
+ }
+ }
+
+
+ ###########################################################################
+ # #
+ # @VStrut, @ZeroWidth, @ZeroHeight #
+ # #
+ ###########################################################################
+
+
+ def @VStrut
+ named above { 0.5f }
+ named below { 0.5f }
+ right x
+ {
+ x &0iu @VContract { above @High ^/ below @High }
+ }
+
+
+ def @ZeroWidth right x { @HContract { |0io x |0io } }
+
+ def @ZeroHeight right x { @VContract { /0io x /0io } }
+
+
+ ###########################################################################
+ # #
+ # @OverStrike, @Sup and @Sub #
+ # #
+ ###########################################################################
+
+ def @OverStrike left x right y
+ {
+ @OneRow { @HContract @VContract x /0io @HContract @VContract y }
+ }
+
+ def @Sup
+ left x
+ named gap { 0.40fk }
+ right y
+ {
+ @HContract @VContract
+ {
+ | 0.7f @Font y ^/gap x
+ }
+ }
+
+ def @Sub
+ left x
+ named gap { 0.40fk }
+ right y
+ {
+ @HContract @VContract
+ {
+ x /gap | 0.7f @Font y
+ }
+ }
+
+
+ ###########################################################################
+ # #
+ # @HClip and @VClip #
+ # #
+ ###########################################################################
+
+ def @HClip
+ named shift { 0.0 }
+ right x
+ {
+ { "newpath 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto"
+ "closepath clip gsave" // "grestore" } @Graphic
+ {
+ |{{shift}"rt"} @ZeroWidth {{shift}"w"} @HShift x |
+ }
+ }
+
+ def @VClip
+ named shift { 0.0 }
+ right x
+ {
+ { "newpath 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize lineto"
+ "closepath clip gsave" // "grestore" } @Graphic
+ {
+ /{{shift}"rt"} @ZeroHeight {{shift}"w"} @VShift x /
+ }
+ }
+
+
+ ###########################################################################
+ # #
+ # @AddPaint, @StrokeCommand #
+ # #
+ ###########################################################################
+
+ def @AddPaint
+ left col
+ right texture
+ {
+ col @Case {
+ none @Yield ""
+ nochange @Yield {
+ @BackEnd @Case {
+ PostScript @Yield { "gsave" texture "fill grestore" }
+ PDF @Yield { "q f Q" }
+ PlainText @Yield { "" }
+ }
+ }
+ else @Yield {
+ @BackEnd @Case {
+ PostScript @Yield {"gsave" @ColourCommand col texture "fill grestore"}
+ PDF @Yield { "q" @ColourCommand col "f Q" }
+ PlainText @Yield { "" }
+ }
+ }
+ }
+ }
+
+ def @StrokeCommand right linewidth
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ linewidth @Case {
+ "" @Yield { "stroke" }
+ none @Yield { }
+ else @Yield { linewidth "setlinewidth stroke" }
+ }
+ }
+ PDF @Yield {
+ linewidth @Case {
+ "" @Yield { "S" }
+ none @Yield { }
+ else @Yield { linewidth "w S" }
+ }
+ }
+ else @Yield ""
+ }
+ }
+
+
+
+ ###########################################################################
+ # #
+ # @FullWidthRule, @Box, @CurveBox, and @ShadowBox #
+ # #
+ ###########################################################################
+
+ def @FullWidthRule
+ import @PSLengths named linewidth {}
+ {
+ @BackEnd @Case {
+
+ PostScript @Yield @HExpand {
+ { "LoutRule" @StrokeCommand linewidth } @Graphic { 0.5p @High }
+ }
+
+ PDF @Yield @HExpand {
+ { "0 0 m __xsize 0 l" @StrokeCommand linewidth } @Graphic { 0.5p @High }
+ }
+
+ PlainText @Yield { "-" @PlainGraphic 1f @High }
+ }
+ }
+
+ def @LocalWidthRule
+ import @PSLengths named linewidth {}
+ {
+ @BackEnd @Case {
+
+ PostScript @Yield {
+ { "LoutRule" @StrokeCommand linewidth } @Graphic { 0.5p @High }
+ }
+
+ PDF @Yield {
+ { "0 0 m __xsize 0 l" @StrokeCommand linewidth } @Graphic { 0.5p @High }
+ }
+
+ PlainText @Yield { "-" @PlainGraphic 1f @High }
+ }
+ }
+
+ def @Box
+ named margin { 0.3f }
+ import @PSLengths named linewidth {}
+ named paint { none }
+ import @TextureImport named texture {}
+ right x
+ {
+ @BackEnd @Case {
+
+ PostScript @Yield @VContract @HContract 0c @HShift {
+ {"LoutBox" paint @AddPaint texture @StrokeCommand linewidth }
+ @Graphic
+ { ^/margin ^|margin 0c @HShift @OneRow x |margin /margin }
+ }
+
+ PDF @Yield @VContract @HContract 0c @HShift {
+ { "0 0 m __xsize 0 l __xsize __ysize l 0 __ysize l h"
+ paint @AddPaint texture @StrokeCommand linewidth } @Graphic
+ { ^/margin ^|margin 0c @HShift @OneRow x |margin /margin }
+ }
+
+ PlainText @Yield @VContract @HContract 0c @HShift {
+ ^/margin ^|margin 0c @HShift @OneRow x |margin /margin
+ }
+ }
+ }
+
+ def @CurveBox
+ named margin { 0.3f }
+ import @PSLengths named linewidth {}
+ named paint { none }
+ import @TextureImport named texture {}
+ right x
+ {
+ def @PDFStuff
+ {
+ "__xmark 0 m"
+ "__sub(__xsize, __xmark) 0 l"
+ "__sub(__xsize, __div(__mul(11, __xmark), 24)) 0"
+ "__xsize __div(__mul(11, __xmark), 24)"
+ "__xsize __xmark c"
+ "__xsize __sub(__ysize, __xmark) l"
+ "__xsize __sub(__ysize, __div(__mul(11, __xmark), 24))"
+ "__sub(__xsize, __div(__mul(11, __xmark), 24)) __ysize"
+ "__sub(__xsize, __xmark) __ysize c"
+ "__xmark __ysize l"
+ "__div(__mul(11, __xmark), 24) __ysize"
+ "0 __sub(__ysize, __div(__mul(11, __xmark), 24))"
+ "0 __sub(__ysize, __xmark) c"
+ "0 __xmark l"
+ "0 __div(__mul(11, __xmark), 24)"
+ "__div(__mul(11, __xmark), 24) 0"
+ "__xmark 0 c"
+ "h"
+ paint @AddPaint texture @StrokeCommand linewidth
+ }
+
+ @VContract @HContract 0c @HShift @BackEnd @Case {
+
+ PostScript @Yield {
+ {"LoutCurveBox" paint @AddPaint texture @StrokeCommand linewidth }
+ @Graphic
+ { ^/margin ^|margin 0c @HShift @OneRow x |margin /margin }
+ }
+
+ PlainText @Yield {
+ ^/margin ^|margin 0c @HShift @OneRow x |margin /margin
+ }
+
+ PDF @Yield {
+ @PDFStuff @Graphic
+ { ^/margin ^|margin 0c @HShift @OneRow x |margin /margin }
+ }
+ }
+ }
+
+ def @ShadowBox
+ named margin { 0.3f }
+ import @PSLengths named linewidth {}
+ named paint { none }
+ import @TextureImport named texture {}
+ named shadow { 0.2f }
+ right x
+ {
+ @VContract @HContract 0c @HShift @BackEnd @Case {
+
+ PostScript @Yield {
+ "LoutShadowBox fill" @Graphic
+ { ^/shadow ^|shadow 0c @HShift
+ @Box
+ margin {margin}
+ paint {paint}
+ texture { texture }
+ linewidth {linewidth} x
+ |shadow /shadow
+ }
+ }
+
+ PlainText @Yield {
+ ^/shadow ^|shadow 0c @HShift
+ @Box
+ margin { margin }
+ paint { paint }
+ texture { texture }
+ linewidth {linewidth} x
+ |shadow /shadow
+ }
+
+ PDF @Yield {
+ {
+ "__mul(__xmark, 2) 0 m __xsize 0 l"
+ "__xsize __sub(__ysize, __mul(__xmark, 2)) l"
+ "__sub(__xsize, __xmark) __sub(__ysize, __mul(__xmark, 2)) l"
+ "__sub(__xsize, __xmark) __xmark l"
+ "__mul(__xmark, 2) __xmark l h f"
+ }
+ @Graphic
+ { ^/shadow ^|shadow 0c @HShift
+ @Box
+ margin { margin }
+ paint { paint }
+ texture { texture }
+ linewidth { linewidth } x
+ |shadow /shadow
+ }
+ }
+ }
+ }
+
+
+ ###########################################################################
+ # #
+ # @BoundaryMarks #
+ # #
+ ###########################################################################
+
+ def @BoundaryMarks
+ import @PSLengths named linewidth { 0.2p }
+ import @PSLengths named length { 0.5c }
+ import @PSLengths named gap { 0.5c }
+ import @PSLengths named lout { 0c }
+ import @PSLengths named rout { 0c }
+ import @PSLengths named uout { 0c }
+ import @PSLengths named dout { 0c }
+ {
+ def @UpStroke { "0" gap "rmoveto" "0" length "rlineto" }
+ def @DownStroke { "0" gap "neg" "rmoveto" "0" length "neg rlineto" }
+ def @LeftStroke { gap "neg" "0" "rmoveto" length "neg" "0 rlineto" }
+ def @RightStroke { gap "0" "rmoveto" length "0 rlineto" }
+
+ def @LLSpot { lout "neg" dout "neg" moveto }
+ def @LRSpot { xsize rout "add" dout "neg" moveto }
+ def @ULSpot { lout "neg" ysize uout "add" moveto }
+ def @URSpot { xsize rout "add" ysize uout "add" moveto }
+
+ def @PDFStuff {
+ "__sub(-"gap", "lout") __sub(0, "dout") m "
+ "__sub(__sub(-"gap", "lout"), "length") __sub(0, "dout") l"
+ "__sub(0, "lout") __sub(-"gap", "dout") m "
+ "__sub(0, "lout") __sub(__sub(-"gap", "dout"), "length") l"
+ "__add(__xsize,"rout") __sub(-"gap", "dout") m "
+ "__add(__xsize,"rout") __sub(__sub(-"gap", "dout"), "length") l"
+ "__add(__add(__xsize,"rout"),"gap") __sub(0, "dout") m "
+ "__add(__add(__add(__xsize,"rout"),"gap"),"length") __sub(0, "dout") l"
+ " __sub(__sub(0, "lout"), "gap") __add(__ysize, "uout") m "
+ "__sub(__sub(__sub(0, "lout"), "gap"), "length") __add(__ysize, "uout") l"
+ "__sub(0, "lout") __add(__add(__ysize, "uout"), "gap") m "
+ "__sub(0, "lout") __add(__add(__add(__ysize, "uout"), "gap"), "length") l"
+ " __add(__add(__xsize, "rout"), "gap") __add(__ysize, "uout") m "
+ "__add(__add(__add(__xsize, "rout"), "gap"), "length") __add(__ysize, "uout") l"
+ "__add(__xsize, "rout") __add(__add(__ysize, "uout"), "gap") m "
+ "__add(__xsize, "rout") __add(__add(__add(__ysize, "uout"), "gap"), "length") l"
+
+ linewidth "w S"
+ }
+
+ @BackEnd @Case {
+
+ PostScript @Yield {
+ {
+ @LLSpot @LeftStroke
+ @LLSpot @DownStroke
+ @LRSpot @DownStroke
+ @LRSpot @RightStroke
+ @ULSpot @LeftStroke
+ @ULSpot @UpStroke
+ @URSpot @RightStroke
+ @URSpot @UpStroke
+
+ linewidth "setlinewidth stroke"
+ } @Graphic {}
+ }
+
+ PlainText @Yield ""
+
+ PDF @Yield { @PDFStuff @Graphic {} }
+ }
+ }
+
+ ##########################################################################
+ # #
+ # @DocInfo #
+ # #
+ ##########################################################################
+
+ def @DocInfo
+ named author {}
+ named title {}
+ named keywords {}
+ {
+ { @BackEnd @Case {
+ PostScript @Yield
+ {
+ "[" author @Case {
+ "" @Yield ""
+ else @Yield { "/Author ("author")" } }
+ title @Case {
+ "" @Yield ""
+ else @Yield { "/Title ("title")" } }
+ keywords @Case {
+ "" @Yield ""
+ else @Yield { "/Keywords ("keywords")" } }
+ "/DOCINFO pdfmark"
+ }
+ else @Yield @Null
+ } } @Graphic { }
+ }
+
+
+ ##########################################################################
+ # #
+ # @NumberMarker, @NumberOf, @TitleMarker, @TitleOf, #
+ # @PageMark, @PageOf, @PageparityOf, @CrossLink, @ExternalLink #
+ # #
+ # NB the default value ?? is desperately important for unsorted #
+ # reference lists numbered by first appearance (@NumberOf @Tag), #
+ # because it is the special sort key value that prevents merging, #
+ # hence allowing all the references to be printed even though #
+ # their sort keys are all ?? initially. #
+ # #
+ ##########################################################################
+
+ export @Tag @Value
+ def @NumberMarker
+ named @Tag {}
+ named @Value { "??" }
+ {
+ @Null
+ }
+
+ def @NumberOf
+ right tag
+ {
+ @NumberMarker&&tag @Open { @Value }
+ }
+
+
+ export @Tag @Value
+ def @TitleMarker
+ named @Tag {}
+ named @Value { "??" }
+ {
+ @Null
+ }
+
+ def @TitleOf
+ right tag
+ {
+ @TitleMarker&&tag @Open { @Value }
+ }
+
+
+ export @Tag num rawnum parity
+ def @PageMarker
+ named @Tag {}
+ named num {}
+ named rawnum {}
+ named parity {}
+ {
+ @PageLabel num
+ }
+
+ def @PageMark
+ right tag
+ {
+ tag @LinkDest @Null & @PageMarker&&preceding @Tagged tag
+ }
+
+ def @NoLinkPageMark
+ right tag
+ {
+ @PageMarker&&preceding @Tagged tag
+ }
+
+ def @PageOf
+ right tag
+ {
+ @PageMarker&&tag @Open { num }
+ }
+
+ def @PageParityOf
+ right tag
+ {
+ @PageMarker&&tag @Open { parity }
+ }
+
+ def @CrossLink
+ left tag
+ named @Format right @Body { @CrossLinkFormat @Body }
+ right obj
+ {
+ @HContract @VContract {
+ tag @LinkSource @Format obj
+ }
+ }
+
+ def @ExternalLink
+ left tag
+ named @Format right @Body { @ExternalLinkFormat @Body }
+ right obj
+ {
+ @HContract @VContract {
+ tag @URLLink @Format obj
+ }
+ }
+
+
+ ###########################################################################
+ # #
+ # @Join and @Sep #
+ # #
+ # Join two objects together with @NumberSeparator, unless one is #
+ # empty in which case just return the other. #
+ # #
+ ###########################################################################
+
+ def @Join left x right y
+ {
+ x @Case {
+ {} @Yield y
+ else @Yield {
+ y @Case {
+ {} @Yield x
+ else @Yield { x{@NumberSeparator}y }
+ }
+ }
+ }
+ }
+
+ def @Sep left x right y
+ {
+ x @Case {
+ {} @Yield y
+ else @Yield {
+ y @Case {
+ {} @Yield x
+ else @Yield { x{@NumberSeparator} |2s y }
+ }
+ }
+ }
+ }
+
+
+ ###########################################################################
+ # #
+ # Miscellaneous. #
+ # #
+ ###########################################################################
+
+ def @Heading right x { ragged @Break @HeadingFont @Font x }
+ def "^" { {} ^& {} }
+ def "&-" left x right y { x &0ch y }
+
+
+ ###########################################################################
+ # #
+ # @If @Not @And @Or @True #
+ # #
+ # Used in databases to make optional fields format nicely. #
+ # #
+ ###########################################################################
+
+ def @If
+ precedence 97
+ left x
+ right y
+ {
+ y @Case {
+ {} @Yield @Null
+ else @Yield { @Null{x} }
+ }
+ }
+
+ def @Not
+ precedence 100
+ right y
+ {
+ y @Case {
+ {} @Yield "*"
+ else @Yield ""
+ }
+ }
+
+ def @And
+ precedence 99
+ left x
+ right y
+ {
+ x @Case {
+ {} @Yield {}
+ else @Yield y
+ }
+ }
+
+ def @Or
+ precedence 98
+ left x
+ right y
+ {
+ x @Case {
+ {} @Yield y
+ else @Yield x
+ }
+ }
+
+ def @True { "*" }
+
+
+ ###########################################################################
+ # #
+ # Paragraphs. #
+ # #
+ ###########################################################################
+
+ macro @PP { //@ParaGap @ParaIndent @Wide &{0i} }
+ macro @LP { //{@ParaGap} }
+ macro @LLP { //{1vx} }
+ macro @DP { //{@DisplayGap} }
+ macro @LOP { //{@ListOuterGap} }
+ macro @NP { //{1.1b} }
+ macro @CNP { // 3.2v @High //0io //{} }
+
+
+ ###########################################################################
+ # #
+ # Beginning and ending of aligned displays. #
+ # #
+ ###########################################################################
+
+ def @APlace { @Galley }
+ def @EndAlignedPlace { @Galley }
+ def @AlignedPlace { @Galley }
+
+ def @BAligned into { @APlace&&preceding }
+ {
+ def @AlignedList { @AlignedPlace /1.1b @AlignedList }
+
+ //1.1b @AlignedList
+ // @EndAlignedPlace
+ }
+
+ macro @BAD @BeginAlignedDisplays { // @APlace | @BAligned }
+ def @EAD @EndAlignedDisplays force into { @EndAlignedPlace&&preceding } {}
+
+
+ ###########################################################################
+ # #
+ # New code for numbered displays that will cross section boundaries #
+ # #
+ ###########################################################################
+
+ export @Tag val display_val
+ def @NumDispCounterMarker
+ named @Tag {}
+ named val {}
+ named display_val {}
+ {
+ @Null
+ }
+
+ def @NumDispNum right tag
+ {
+ @NumDispCounterMarker&&tag @Open { @Next val }
+ }
+
+ def @NumDispCounterIncrement
+ named @BypassNumber { "dft" }
+ right tag
+ {
+ def @DisplayNumber
+ {
+ @BypassNumber @Dft { @NumDispNum tag }
+ }
+
+ @NumDispCounterMarker&&preceding @Tagged tag
+ # @NumDispCounterMarker val { @NumDispNum tag }
+ # @NumberMarker @Tag { tag } @Value { @NumDispNum tag }
+ @NumDispCounterMarker val { @NumDispNum tag } display_val { @DisplayNumber }
+ @NumberMarker @Tag { tag } @Value { @DisplayNumber }
+ }
+
+ def @NN
+ {
+ @NumDispCounterMarker&&preceding @Open { @DisplayNumStyle display_val }
+ }
+
+ def @Do
+ left x
+ right y
+ {
+ x @Case {
+ { No None } @Yield @Null
+ else @Yield y
+ }
+ }
+
+ def @BeginDisplayCounter
+ left condition
+ right prefix
+ {
+ condition @Do @NumDispCounterMarker val { prefix @Join 0 }
+ }
+
+
+ ###########################################################################
+ # #
+ # Galleys that carry displays to their places. #
+ # #
+ ###########################################################################
+
+ def @DispPlace { @Galley }
+
+ def @Disp into { @DispPlace&&preceding }
+ right x
+ {
+ x
+ }
+
+ def @NDisp into { @DispPlace&&preceding }
+ named @Tag {}
+ named @BypassNumber { "dft" }
+ right x
+ {
+ @OneRow {
+ # @NumDispCounterIncrement @Tag
+ @NumDispCounterIncrement @BypassNumber { @BypassNumber } @Tag
+ @PageMark @Tag
+ ^//
+ @OneRow x
+ }
+ }
+
+ def @ADisp into { @AlignedPlace&&preceding }
+ right x
+ {
+ x
+ }
+
+ def @ANDisp into { @AlignedPlace&&preceding }
+ named @Tag {}
+ named @BypassNumber { "dft" }
+ right x
+ {
+ @OneRow {
+ # @NumDispCounterIncrement @Tag
+ @NumDispCounterIncrement @BypassNumber { @BypassNumber } @Tag
+ @PageMark @Tag
+ ^/
+ @OneRow x
+ }
+ }
+
+
+ ###########################################################################
+ # #
+ # Displays and raw displays. #
+ # #
+ ###########################################################################
+
+ macro @G { |@DefaultIndent }
+ macro @LG { | }
+ macro @IG { |@DisplayIndent }
+ macro @CG { |0.5rt }
+ macro @RG { |1.0rt }
+ macro @QR { @DisplayIndent @Wide { |1rt @NN } }
+ macro @DX { @DispPlace }
+ macro @DY { @Disp }
+ macro @AX { @APlace }
+ macro @AY { @ADisp }
+ macro @NY { @NDisp }
+ macro @MY { @ANDisp }
+
+ macro @D @Display { @DP @G @DX | @DP // @DY }
+ macro @LD @LeftDisplay { @DP @LG @DX | @DP // @DY }
+ macro @ID @IndentedDisplay { @DP @IG @DX | @DP // @DY }
+ macro @QD @QuotedDisplay { @DP @IG @DX @IG @DP // @DY }
+ macro @CD @CentredDisplay
+ @CenteredDisplay { @DP @CG @DX | @DP // @DY }
+ macro @RightDisplay { @DP @RG @DX | @DP // @DY }
+
+
+ macro @AD @AlignedDisplay { @DP @G @AX | @DP // @AY }
+ macro @LAD @LeftAlignedDisplay { @DP @LG @AX | @DP // @AY }
+ macro @IAD @IndentedAlignedDisplay { @DP @IG @AX | @DP // @AY }
+ macro @QAD @QuotedAlignedDisplay { @DP @IG @AX @IG @DP // @AY }
+ macro @CAD @CentredAlignedDisplay
+ @CenteredAlignedDisplay { @DP @CG @AX | @DP // @AY }
+ macro @RightAlignedDisplay { @DP @RG @AX | @DP // @AY }
+
+ macro @ND @NumberedDisplay { @DP @G @DX |1rt @NN @DP // @NY }
+ macro @LND @LeftNumberedDisplay { @DP @LG @DX |1rt @NN @DP // @NY }
+ macro @IND @IndentedNumberedDisplay { @DP @IG @DX |1rt @NN @DP // @NY }
+ macro @QND @QuotedNumberedDisplay { @DP @IG @DX |1rt @QR @DP // @NY }
+ macro @CND @CentredNumberedDisplay
+ @CenteredNumberedDisplay { @DP @CG @DX |1rt @NN @DP // @NY }
+ macro @RightNumberedDisplay { @DP @RG @DX |1rt @NN @DP // @NY }
+
+ macro @AND @AlignedNumberedDisplay { @DP @G @AX |1rt @NN @DP // @MY }
+ macro @LAND @LeftAlignedNumberedDisplay { @DP @LG @AX |1rt @NN @DP // @MY }
+ macro @IAND @IndentedAlignedNumberedDisplay{ @DP @IG @AX |1rt @NN @DP // @MY }
+ macro @QAND @QuotedAlignedNumberedDisplay { @DP @IG @AX |1rt @QR @DP // @MY }
+ macro @CAND @CentredAlignedNumberedDisplay
+ @CenteredAlignedNumberedDisplay{ @DP @CG @AX |1rt @NN @DP // @MY }
+ macro @RightAlignedNumberedDisplay { @DP @RG @AX |1rt @NN @DP // @MY }
+
+
+ macro @RD @RawDisplay { @G @DX | // @DY }
+ macro @RLD @RawLeftDisplay { @LG @DX | // @DY }
+ macro @RID @RawIndentedDisplay { @IG @DX | // @DY }
+ macro @RQD @RawQuotedDisplay { @IG @DX @IG | // @DY }
+ macro @RCD @RawCentredDisplay
+ @RawCenteredDisplay { @CG @DX | | // @DY }
+ macro @RRD @RawRightDisplay { @RG @DX | // @DY }
+
+
+ macro @RAD @RawAlignedDisplay { @G @AX | // @AY }
+ macro @RLAD @RawLeftAlignedDisplay { @LG @AX | // @AY }
+ macro @RIAD @RawIndentedAlignedDisplay { @IG @AX | // @AY }
+ macro @RQAD @RawQuotedAlignedDisplay { @IG @AX @IG | // @AY }
+ macro @RCAD @RawCentredAlignedDisplay
+ @RawCenteredAlignedDisplay { @CG @AX | // @AY }
+ macro @RRAD @RawRightAlignedDisplay { @RG @AX | // @AY }
+
+ macro @RND @RawNumberedDisplay { @G @DX |1rt @NN // @NY }
+ macro @RLND @RawLeftNumberedDisplay { @LG @DX |1rt @NN // @NY }
+ macro @RIND @RawIndentedNumberedDisplay { @IG @DX |1rt @NN // @NY }
+ macro @RQND @RawQuotedNumberedDisplay { @IG @DX |1rt @QR // @NY }
+ macro @RCND @RawCentredNumberedDisplay
+ @RawCenteredNumberedDisplay { @CG @DX |1rt @NN // @NY }
+ macro @RRND @RawRightNumberedDisplay { @RG @DX |1rt @NN // @NY }
+
+ macro @RAND @RawAlignedNumberedDisplay { @G @AX |1rt @NN // @MY }
+ macro @RLAND @RawLeftAlignedNumberedDisplay { @LG @AX |1rt @NN // @MY }
+ macro @RIAND @RawIndentedAlignedNumberedDisplay { @IG @AX |1rt @NN // @MY }
+ macro @RQAND @RawQuotedAlignedNumberedDisplay { @IG @AX |1rt @QR // @MY }
+ macro @RCAND @RawCentredAlignedNumberedDisplay
+ @RawCenteredAlignedNumberedDisplay { @CG @AX |1rt @NN // @MY }
+ macro @RRAND @RawRightAlignedNumberedDisplay{ @RG @AX |1rt @NN // @MY }
+
+
+ ###########################################################################
+ # #
+ # Lists and raw lists. #
+ # #
+ ###########################################################################
+
+
+ def @ItemPlace { @Galley }
+ def @ParagraphItemPlace { @Galley }
+ def @InterruptItemPlace { @Galley }
+ def @NewPageItemPlace { @Galley }
+ def @TagPlace { @Galley }
+ def @EndListPlace { @Galley }
+
+ def @RawList
+ named style right num { num }
+ named type right num { num }
+ named gap { @ListGap }
+ named indent { @ListIndent }
+ named itemindent { 0c }
+ named rightindent { @ListRightIndent }
+ named labelwidth { @ListLabelWidth }
+ named labelright { @ListLabelRight }
+ named labelrightgap { @ListLabelRightGap }
+ named start { 1 }
+ named font { @ListFont }
+ named break { @ListBreak }
+ named colnum { 1 }
+ named colgap { 1.0c }
+ named colheight { 5.0c }
+ {
+ def @MakeList right num
+ {
+ def @NormalItem
+ {
+ def @Align right x
+ {
+ labelright @Case {
+ { Yes yes } @Yield { labelwidth @Wide { |1rt @OneCol { x |labelrightgap } } }
+ else @Yield x
+ }
+ }
+
+ |indent
+ labelwidth @Wide {
+ # @NumberMarker @Value {style num} {style num} &0io
+ # @NumberMarker @Value {num} {style type num} &0io
+ @NumberMarker @Value {type num} {@Align style type num} &0io
+ }
+ |itemindent break @Break font @Font @ItemPlace |rightindent
+ //gap @MakeList @NotRevealed @Next num
+ }
+
+ def @ParagraphItem
+ {
+ @NumberMarker @Value {num} {style type num} &0io
+ |indent break @Break font @Font @ParagraphItemPlace |rightindent
+ //gap @MakeList @NotRevealed @Next num
+ }
+
+ def @InterruptItem
+ {
+ @InterruptItemPlace
+ //gap @MakeList @NotRevealed num
+ }
+
+ def @NewPageItem
+ {
+ @NewPageItemPlace
+ //1.1b @MakeList @NotRevealed num
+ }
+
+ @OneOf
+ {
+ @NormalItem
+ @ParagraphItem
+ @InterruptItem
+ @NewPageItem
+ }
+ }
+
+ def @ListGalleyPlace { @Galley }
+
+ def @ListGalley into { @ListGalleyPlace&&preceding }
+ {
+ @MakeList start // @EndListPlace
+ }
+
+ def @ColPieceTwo
+ {
+ colheight @High 500c @Wide @ListGalleyPlace ||colgap
+ colheight @High 500c @Wide @ListGalleyPlace @NotRevealed
+ }
+
+ def @ColPieceThree
+ {
+ colheight @High 500c @Wide @ListGalleyPlace ||colgap
+ colheight @High 500c @Wide @ListGalleyPlace @NotRevealed ||colgap
+ colheight @High 500c @Wide @ListGalleyPlace @NotRevealed
+ }
+
+ def @ColPieceFour
+ {
+ colheight @High 500c @Wide @ListGalleyPlace ||colgap
+ colheight @High 500c @Wide @ListGalleyPlace @NotRevealed ||colgap
+ colheight @High 500c @Wide @ListGalleyPlace @NotRevealed ||colgap
+ colheight @High 500c @Wide @ListGalleyPlace @NotRevealed
+ }
+
+ def @ColPieceFive
+ {
+ colheight @High 500c @Wide @ListGalleyPlace ||colgap
+ colheight @High 500c @Wide @ListGalleyPlace @NotRevealed ||colgap
+ colheight @High 500c @Wide @ListGalleyPlace @NotRevealed ||colgap
+ colheight @High 500c @Wide @ListGalleyPlace @NotRevealed ||colgap
+ colheight @High 500c @Wide @ListGalleyPlace @NotRevealed
+ }
+
+ colnum @Case
+ {
+ 1 @Yield @ListGalleyPlace
+ 2 @Yield @ColPieceTwo
+ 3 @Yield @ColPieceThree
+ 4 @Yield @ColPieceFour
+ 5 @Yield @ColPieceFive
+ else @Yield @ListGalleyPlace
+ }
+ //
+ @ListGalley
+ }
+
+ def listitem into { @ItemPlace&&preceding }
+ named @Tag {}
+ right x
+ {
+ @NumberMarker&&preceding @Tagged @Tag
+ // x
+ // @PageMark @Tag # weird placement, but @PageMark is definite now
+ }
+
+ def paragraphitem
+ named @Tag {}
+ named style right tag { @ParaIndent @Wide & tag. &2s }
+ right x
+ {
+
+ def sendparagraphitem into { @ParagraphItemPlace&&preceding }
+ named tag { @Tag }
+ {
+ @NumberMarker&&preceding @Tagged @Tag
+ // { style @NumberMarker&&@Tag @Open { @Value } } @Insert x
+ // @PageMark @Tag
+ }
+
+ sendparagraphitem
+ }
+
+ def droplistitem into { @ItemPlace&&preceding }
+ named @Tag {}
+ right x
+ {
+ @NumberMarker&&preceding @Tagged @Tag
+ // @PageMark @Tag
+ //1vx x
+ }
+
+ def tagitem into { @ItemPlace&&preceding }
+ named tag {}
+ right x
+ {
+ def sendtag into { @TagPlace&&preceding } { tag }
+
+ sendtag // x
+ }
+
+ def droptagitem into { @ItemPlace&&preceding }
+ named tag {}
+ right x
+ {
+ def sendtag into { @TagPlace&&preceding } { tag }
+
+ sendtag // //1vxu x
+ }
+
+ def endlist force into { @EndListPlace&&preceding } {}
+
+ def listnewpage into { @NewPageItemPlace&&preceding } {}
+
+ def listinterruptitem into { @InterruptItemPlace&&preceding }
+ right x
+ {
+ x
+ }
+
+
+ macro @LI @ListItem { // listitem }
+ macro @PI @ParagraphItem { // paragraphitem }
+ macro @LII @ListInterruptItem { // listinterruptitem }
+ macro @LNP @ListNewPage { // listnewpage }
+ macro @DLI @DropListItem { // droplistitem }
+ macro @TI @TagItem { // tagitem tag }
+ macro @DTI @DropTagItem { // droptagitem tag }
+ macro @REL @RawEndList { // & endlist // }
+ macro @EL @EndList { // & endlist @LOP }
+
+
+ macro @RLL @RawLeftList { @RawList style {}
+ labelwidth { 0c } }
+ macro @RIL @RawIndentedList { @RawList style {} }
+ macro @RQL @RawQuotedList { @RawList style {}
+ rightindent {@DisplayIndent}}
+ macro @RCL @RawCentredList { @RawList style {}
+ labelwidth {0c}
+ itemindent {0.5rt} }
+ macro @RawCenteredList { @RawCentredList }
+ macro @RNL @RawNumberedList { @RawList style { num. } }
+ macro @RPNL @RawParenNumberedList { @RawList style { (num) } }
+ macro @RRL @RawRomanList { @RawList type { @Roman&&num }
+ style { num. } }
+ macro @RPRL @RawParenRomanList { @RawList type { @Roman&&num }
+ style { (num) } }
+ macro @RUCRL @RawUCRomanList { @RawList type { @UCRoman&&num }
+ style { num. } }
+ macro @RPUCRL @RawParenUCRomanList { @RawList type { @UCRoman&&num }
+ style { (num) } }
+ macro @RAL @RawAlphaList { @RawList type { @Alpha&&num }
+ style { num. } }
+ macro @RPAL @RawParenAlphaList { @RawList type { @Alpha&&num }
+ style { (num) } }
+ macro @RUCAL @RawUCAlphaList { @RawList type { @UCAlpha&&num }
+ style { num. } }
+ macro @RPUCAL @RawParenUCAlphaList { @RawList type { @UCAlpha&&num }
+ style { (num) } }
+ macro @RBL @RawBulletList { @RawList style { @Bullet } }
+ macro @RSL @RawStarList { @RawList style { @Star } }
+ macro @RDL @RawDashList { @RawList style { -- } }
+ macro @RTL @RawTaggedList { @RawList type { @TagPlace } }
+ macro @RWTL @RawWideTaggedList { @RawList type { @TagPlace }
+ labelwidth { @WideIndent } }
+ macro @RVWTL @RawVeryWideTaggedList{ @RawList type { @TagPlace }
+ labelwidth { @VeryWideIndent } }
+
+
+ macro @L @List { @LOP @RawList }
+ macro @LL @LeftList { @LOP @RawLeftList }
+ macro @IL @IndentedList { @LOP @RawIndentedList }
+ macro @QL @QuotedList { @LOP @RawQuotedList }
+ macro @CL @CentredList { @LOP @RawCentredList }
+ macro @CenteredList { @LOP @RawCenteredList }
+ macro @NL @NumberedList { @LOP @RawNumberedList }
+ macro @PNL @ParenNumberedList { @LOP @RawParenNumberedList }
+ macro @RL @RomanList { @LOP @RawRomanList }
+ macro @PRL @ParenRomanList { @LOP @RawParenRomanList }
+ macro @UCRL @UCRomanList { @LOP @RawUCRomanList }
+ macro @PUCRL @ParenUCRomanList { @LOP @RawParenUCRomanList }
+ macro @AL @AlphaList { @LOP @RawAlphaList }
+ macro @PAL @ParenAlphaList { @LOP @RawParenAlphaList }
+ macro @UCAL @UCAlphaList { @LOP @RawUCAlphaList }
+ macro @PUCAL @ParenUCAlphaList { @LOP @RawParenUCAlphaList }
+ macro @BL @BulletList { @LOP @RawBulletList }
+ macro @SL @StarList { @LOP @RawStarList }
+ macro @DL @DashList { @LOP @RawDashList }
+ macro @TL @TaggedList { @LOP @RawTaggedList }
+ macro @WTL @WideTaggedList { @LOP @RawWideTaggedList }
+ macro @VWTL @VeryWideTaggedList { @LOP @RawVeryWideTaggedList }
+
+@End @BasicSetup
diff --git a/include/include/bsf.lpg b/include/include/bsf.lpg
new file mode 100644
index 0000000..94a3ba8
--- /dev/null
+++ b/include/include/bsf.lpg
@@ -0,0 +1,147 @@
+%%BeginResource: procset LoutBasicSetup
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% PostScript @SysPrependGraphic file for @BasicSetup %
+% %
+% This file has been placed in the public domain by its author, %
+% Jeffrey H. Kingston %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% width height linethickness louteuro -
+% draw a Euro symbol of this width and height with this line thickness
+/louteuro {
+ 20 dict begin
+ /eurothick exch def
+ /euroheight exch def
+ /eurowidth exch def
+ /eurostrokewidth euroheight 0.8 mul def
+ /eurostep eurothick 60 cos mul 60 sin div def
+ /eurotheta 40 def
+
+ % llx lly width thickness louteurobox -
+ % draw angled box starting at (llx, lly) with given width and thickness
+ /louteurobox
+ {
+ /euroboxthick exch def
+ /euroboxwidth exch def
+ newpath moveto euroboxwidth 0 rlineto
+ eurostep euroboxthick rlineto
+ euroboxwidth neg 0 rlineto closepath fill
+ } def
+
+ % lower cross stroke
+ 0 euroheight 2 div eurothick 1.5 mul sub
+ eurostrokewidth eurothick louteurobox
+
+ % upper cross stroke
+ 0 euroheight 2 div eurothick 0.5 mul add
+ eurostrokewidth eurostep 2 mul add eurothick louteurobox
+
+ % circular part
+ /eurohctr eurowidth euroheight 2 div eurotheta cos mul sub def
+ /eurovctr euroheight 2 div def
+ newpath
+ eurohctr eurovctr eurovctr eurotheta 350 eurotheta sub arc
+ eurohctr eurovctr eurovctr eurothick sub 365 eurotheta sub eurotheta arcn
+ closepath fill
+ end
+} def
+
+% path for @FullWidthRule symbol
+/LoutRule
+{ 0 0 moveto xsize 0 lineto
+} def
+
+% path for @Box symbol
+/LoutBox
+{ 0 0 moveto xsize 0 lineto
+ xsize ysize lineto 0 ysize lineto
+ closepath
+} def
+
+% path for @CurveBox symbol
+/LoutCurveBox
+{ xmark 0 moveto
+ xsize xmark sub xmark xmark 270 360 arc
+ xsize xmark sub ysize xmark sub xmark 0 90 arc
+ xmark ysize xmark sub xmark 90 180 arc
+ xmark xmark xmark 180 270 arc
+ closepath
+} def
+
+% path for @ShadowBox symbol
+/LoutShadowBox
+{ xmark 2 mul 0 moveto xsize 0 lineto
+ xsize ysize xmark 2 mul sub lineto
+ xsize xmark sub ysize xmark 2 mul sub lineto
+ xsize xmark sub xmark lineto
+ xmark 2 mul xmark lineto
+ closepath
+} def
+
+% set up dictionary containing margin note data: parity LoutMargSet -
+/LoutMargSet
+{ /LoutMargDict 12 dict def
+ LoutMargDict begin
+ /parity exch def
+ /matr matrix currentmatrix def
+ /rightx xsize def
+ /lefty ysize def % highest allowable point for top of next left note
+ /righty ysize def % highest allowable point for top of next right note
+ /max { 2 copy gt { pop } { exch pop } ifelse } def
+ /min { 2 copy lt { pop } { exch pop } ifelse } def
+ end
+} def
+
+%translate coordinate system for marginal notes: type LoutMargShift -
+% where type 0 is left margin, 1 is right margin, 2 is outer, 3 is inner
+/LoutMargShift
+{ LoutMargDict begin
+
+ % y coordinate of top of note, in margin coords, before vertical adjust
+ 0 ysize transform matr itransform exch pop
+
+ % decide whether left or right margin based on type and parity
+ exch [ 0 1 parity 1 parity sub ] exch get 0 eq
+ {
+ % left margin: adjust top of note downwards if overlaps previous note
+ lefty min
+
+ % bottom of note is new lefty position and also translate position
+ ysize sub dup /lefty exch def
+
+ % want right edge of note at coordinate zero
+ xsize neg exch
+ }
+ {
+ % right margin: adjust top of note downwards if overlaps previous note
+ righty min
+
+ % bottom of note is new righty position and also translate position
+ ysize sub dup /righty exch def
+
+ % want left edge of note at coordinate rightx
+ rightx exch
+ } ifelse
+
+ % stack now contains coord of bottom left corner in margin coordinates
+ matr setmatrix translate
+ end
+} def
+
+% create LoutPageDict with left, right, foot, top for @Place symbol users
+/LoutPageSet
+{
+ /LoutPageDict 5 dict def
+ LoutPageDict begin
+ /matr matrix currentmatrix def
+ /left 0 def
+ /right xsize def
+ /foot 0 def
+ /top ysize def
+ end
+
+} def
+
+%%EndResource
diff --git a/include/include/coltex b/include/include/coltex
new file mode 100644
index 0000000..079b759
--- /dev/null
+++ b/include/include/coltex
@@ -0,0 +1,434 @@
+
+###########################################################################
+# #
+# coltex #
+# #
+# Jeffrey H. Kingston #
+# 30 October 2002 #
+# #
+# Include file providing @ColourCommand and @TextureCommand symbols. #
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either Version 3, or (at your option) #
+# any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA #
+# #
+# As a special exception, when this file is read by Lout when processing #
+# a Lout source document, you may use the result without restriction. #
+# #
+###########################################################################
+
+@SysInclude { lengths } # @PSLengths (needed for @TextureCommand)
+
+
+###########################################################################
+# #
+# @ColourCommand #
+# #
+# Jeff Kingston #
+# 19 October 2001 #
+# Updated for compatibility with textures 28 October 2002. #
+# #
+# @ColourCommand converts a colour expressed in a manner that the #
+# ordinary user can comprehend into the PostScript or PDF command #
+# needed to obtain that colour, suitable for passing to @SetColour #
+# or including in the left parameter of @Graphic. #
+# #
+# This symbol is needed in various places so I've taken the coward's #
+# way out and @SysIncluded it at those places. #
+# #
+# Examples of behaviour for the PostScript back end: #
+# #
+# Parameter Result #
+# ------------------------------------------------------------ #
+# black "0.0 0.0 0.0 LoutSetRGBColor" #
+# darkblue "0.0 0.0 0.5 LoutSetRGBColor" #
+# white "1.0 1.0 1.0 LoutSetRGBColor" #
+# none "" #
+# nochange "" #
+# "" "" #
+# rgb <red> <blue> <green> "<red> <blue> <green> LoutSetRGBColor" #
+# cmyk <c> <m> <y> <k> "<c> <m> <y> <k> LoutSetCMYKColor" #
+# ------------------------------------------------------------ #
+# #
+# See the Expert's Guide for the use of LoutSetRGBColor and #
+# LoutSetCMYKColor rather than setrgbcolor and setcmykcolor. #
+# #
+# @ColourCommand also does the right thing for the PDF back end; #
+# its result is always empty for the PlainText back end. #
+# #
+###########################################################################
+
+def @ColourCommand right @Body
+{
+ def @RGB right coords
+ {
+ @BackEnd @Case {
+ PostScript @Yield { coords "LoutSetRGBColor" }
+ PDF @Yield { coords "rg" coords "RG" }
+ PlainText @Yield ""
+ }
+ }
+
+ def @CMYK right coords
+ {
+ @BackEnd @Case {
+ PostScript @Yield { coords "LoutSetCMYKColor" }
+ PDF @Yield { coords "k" coords "K" }
+ PlainText @Yield ""
+ }
+ }
+
+ def @RGBElse right alt
+ {
+ { "rgb" @Common @Body } @Case {
+ "rgb" @Yield @RGB { "rgb" @Rump @Body }
+ else @Yield alt
+ }
+ }
+
+ def @CMYKElse right alt
+ {
+ { "cmyk" @Common @Body } @Case {
+ "cmyk" @Yield @CMYK { "cmyk" @Rump @Body }
+ else @Yield alt
+ }
+ }
+
+ def @NoChangeElse right alt
+ {
+ @Body @Case {
+ { "nochange" "none" "" } @Yield ""
+ else @Yield alt
+ }
+ }
+
+ def @RGBCoords
+ {
+ @Body @Case {
+ black @Yield { 0.0 0.0 0.0 }
+ darkblue @Yield { 0.0 0.0 0.5 }
+ blue @Yield { 0.0 0.0 1.0 }
+ lightblue @Yield { 0.5 0.5 1.0 }
+ darkgreen @Yield { 0.0 0.5 0.0 }
+ green @Yield { 0.0 1.0 0.0 }
+ lightgreen @Yield { 0.5 1.0 0.5 }
+ darkred @Yield { 0.5 0.0 0.0 }
+ red @Yield { 1.0 0.0 0.0 }
+ lightred @Yield { 1.0 0.5 0.5 }
+ darkcyan @Yield { 0.0 0.5 0.5 }
+ cyan @Yield { 0.0 1.0 1.0 }
+ lightcyan @Yield { 0.5 1.0 1.0 }
+ darkmagenta @Yield { 0.5 0.0 0.5 }
+ magenta @Yield { 1.0 0.0 1.0 }
+ lightmagenta @Yield { 1.0 0.5 1.0 }
+ darkyellow @Yield { 0.5 0.5 0.0 }
+ yellow @Yield { 1.0 1.0 0.0 }
+ lightyellow @Yield { 1.0 1.0 0.5 }
+ darkgray @Yield { 0.2 0.2 0.2 }
+ gray @Yield { 0.5 0.5 0.5 }
+ lightgray @Yield { 0.8 0.8 0.8 }
+ darkgrey @Yield { 0.2 0.2 0.2 }
+ grey @Yield { 0.5 0.5 0.5 }
+ lightgrey @Yield { 0.8 0.8 0.8 }
+ white @Yield { 1.0 1.0 1.0 }
+ }
+ }
+
+ @RGBElse @CMYKElse @NoChangeElse @RGB @RGBCoords
+}
+
+
+###########################################################################
+# #
+# @TextureCommand #
+# #
+# @TextureCommand converts a texture expressed in a manner that the #
+# ordinary user can comprehend into the PostScript texture dictionary #
+# needed to obtain that texture, suitable for passing to @SetTexture #
+# or including in the left parameter of @Graphic. #
+# #
+###########################################################################
+
+def @TextureCommand
+ left type
+ named scale { 1 }
+ named hscale { 1 }
+ named vscale { 1 }
+ import @PSLengths named angle { 0d }
+ import @PSLengths named hshift { 0i }
+ import @PSLengths named vshift { 0i }
+ import @PSLengths named width { "dft" }
+ import @PSLengths named height { "dft" }
+ import @PSLengths named gap { "dft" }
+ import @PSLengths named radius { "dft" }
+ import @PSLengths named linewidth { "dft" }
+ named font { "dft" }
+ import @PSLengths named size { "dft" }
+ named value { "dft" }
+{
+ def @Dft left x right y
+ {
+ y @Case {
+ "dft" @Yield x
+ else @Yield y
+ }
+ }
+
+ def @SolidTexture
+ {
+ "null LoutSetTexture"
+ }
+
+ def @StripedTexture
+ {
+ def @Width { "1 pt" @Dft width }
+ def @Gap { "1 pt" @Dft gap }
+
+ scale hscale vscale angle hshift vshift
+ "2"
+ "[ 0 0" @Width @Gap "add dup ]"
+ @Width @Gap "add dup"
+ "{"
+ "pop 0 0 moveto"
+ @Width @Gap "add 0 lineto"
+ "0" @Width "rlineto"
+ "0" @Width "lineto"
+ "closepath fill"
+ "}"
+ "LoutMakeTexture LoutSetTexture"
+ }
+
+ def @GridTexture
+ {
+ def @Width { "1 pt" @Dft width }
+ def @Gap { "1 pt" @Dft gap }
+
+ scale hscale vscale angle hshift vshift
+ "2"
+ "[ 0 0" @Width @Gap "add dup ]"
+ @Width @Gap "add dup"
+ "{"
+ "pop 0 0 moveto"
+ @Width @Gap "add 0 lineto"
+ "0" @Width "rlineto"
+ @Gap "neg 0 rlineto"
+ "0" @Gap "rlineto"
+ @Width "neg 0 rlineto"
+ "closepath fill"
+ "}"
+ "LoutMakeTexture LoutSetTexture"
+ }
+
+ def @DottedTexture
+ {
+ def @Radius { "0.5 pt" @Dft radius }
+ def @Gap { "2 pt" @Dft gap }
+
+ scale hscale vscale angle hshift vshift
+ "2"
+ "[ 0 0" @Gap "dup ]"
+ @Gap "dup"
+ "{"
+ "pop" @Gap "2 div dup" @Radius "0 360 arc fill"
+ "}"
+ "LoutMakeTexture LoutSetTexture"
+ }
+
+ def @ChessboardTexture
+ {
+ def @Width { "2 pt" @Dft width }
+
+ scale hscale vscale angle hshift vshift
+ "2"
+ "[ 0 0" @Width "2 mul dup ]"
+ @Width "2 mul dup"
+ "{"
+ "pop 0 0 moveto"
+ @Width "0 rlineto"
+ "0" @Width "rlineto"
+ @Width "neg 0 rlineto"
+ closepath
+ @Width @Width "moveto"
+ @Width "0 rlineto"
+ "0" @Width "rlineto"
+ @Width "neg 0 rlineto"
+ "closepath fill"
+ "}"
+ "LoutMakeTexture LoutSetTexture"
+ }
+
+ def @BrickworkTexture
+ {
+ def @Width { "6 pt" @Dft width }
+ def @Height { "2 pt" @Dft height }
+ def @Linewidth { "0.5 pt" @Dft linewidth }
+
+ scale hscale vscale angle hshift vshift
+ "2"
+ "[ 0 0" @Width @Height "2 mul ]"
+ @Width @Height "2 mul"
+ "{"
+ "pop 0 0 moveto" @Width "0 rlineto"
+ "0" @Height "moveto" @Width "0 rlineto"
+ "0" @Height "2 mul moveto" @Width "0 rlineto"
+ "0 0 moveto 0" @Height "rlineto"
+ @Width "0 moveto 0" @Height "rlineto"
+ @Width "2 div" @Height "moveto 0" @Height "rlineto"
+ "[] 0 setdash" @Linewidth "setlinewidth stroke"
+ "}"
+ "LoutMakeTexture LoutSetTexture"
+ }
+
+ def @HoneycombTexture
+ {
+ def @R { "2.0 pt" @Dft radius }
+ def @Linewidth { "0.5 pt" @Dft linewidth }
+
+ def @X { @R "0.5 mul" }
+ def @Y { @R "0.886 mul" }
+ def @NegX { @X "neg" }
+ def @NegY { @Y "neg" }
+ def @NegR { @R "neg" }
+ def @BoxWidth { @R @X "add 2 mul" }
+ def @BoxHeight { @Y "2 mul" }
+
+ scale hscale vscale angle hshift vshift
+ "2"
+ "[ 0 0" @BoxWidth @BoxHeight "]"
+ @BoxWidth @BoxHeight
+ "{"
+ "pop"
+ @X "0 moveto"
+ @R "0 rlineto"
+ @X @Y "rlineto"
+ @R "0 rlineto"
+ @NegR "0 rlineto"
+ @NegX @Y "rlineto"
+ @NegR "0 rlineto"
+ @NegX @NegY "rlineto"
+ "closepath"
+ "[] 0 setdash" @Linewidth "setlinewidth stroke"
+ "}"
+ "LoutMakeTexture LoutSetTexture"
+ }
+
+ def @TriangularTexture
+ {
+ def @R { "4.0 pt" @Dft radius }
+ def @Linewidth { "0.5 pt" @Dft linewidth }
+
+ def @X { @R "0.5 mul" }
+ def @Y { @R "0.886 mul" }
+ def @BoxWidth { @R }
+ def @BoxHeight { @Y "2 mul" }
+
+ scale hscale vscale angle hshift vshift
+ "2"
+ "[ 0 0" @BoxWidth @BoxHeight "]"
+ @BoxWidth @BoxHeight
+ "{"
+ "pop"
+ "0 0 moveto"
+ @R "0 lineto"
+ "0" @Y "2 mul lineto"
+ @R "0 rlineto"
+ "closepath"
+ "0" @Y "moveto"
+ @R "0 rlineto"
+ "[] 0 setdash" @Linewidth "setlinewidth stroke"
+ "}"
+ "LoutMakeTexture LoutSetTexture"
+ }
+
+ def @StringTexture
+ {
+ def @Width { "12 pt" @Dft width }
+ def @Height { "12 pt" @Dft height }
+ def @Font { "Times-Roman" @Dft font }
+ def @Size { "10 pt" @Dft size }
+ def @Value { "*" @Dft value }
+
+ scale hscale vscale angle hshift vshift
+ "2"
+ "[ 0 0" @Width @Height "]"
+ @Width @Height
+ "{"
+ "pop /"@Font "findfont" @Size "scalefont setfont"
+ "("@Value") dup false 0 0 moveto charpath flattenpath"
+ "pathbbox pop pop neg exch neg exch moveto show"
+
+ "}"
+ "LoutMakeTexture LoutSetTexture"
+ }
+
+ type @Case
+ {
+ "solid" @Yield @SolidTexture
+ "striped" @Yield @StripedTexture
+ "grid" @Yield @GridTexture
+ "dotted" @Yield @DottedTexture
+ "chessboard" @Yield @ChessboardTexture
+ "brickwork" @Yield @BrickworkTexture
+ "honeycomb" @Yield @HoneycombTexture
+ "triangular" @Yield @TriangularTexture
+ "string" @Yield @StringTexture
+ else @Yield type
+ }
+}
+
+###########################################################################
+# #
+# @TextureImport #
+# #
+# Used as an import for texture options. #
+# #
+# We cleverly replace @Texture by nothing inside those options, #
+# and replace the known types by themselves plus @TextureCommand. #
+# This allows the user to type #
+# #
+# texture { striped } #
+# texture { striped @Texture } #
+# texture { striped angle { 45d } } #
+# texture { striped @Texture angle { 45d } } #
+# #
+# and it all winds up being a call to @TextureCommand. #
+# #
+###########################################################################
+
+export
+
+ solid
+ striped
+ grid
+ dotted
+ chessboard
+ brickwork
+ honeycomb
+ triangular
+ string
+ @Texture
+
+def @TextureImport
+{
+ macro solid { "solid" @TextureCommand }
+ macro striped { "striped" @TextureCommand }
+ macro grid { "grid" @TextureCommand }
+ macro dotted { "dotted" @TextureCommand }
+ macro chessboard { "chessboard" @TextureCommand }
+ macro brickwork { "brickwork" @TextureCommand }
+ macro honeycomb { "honeycomb" @TextureCommand }
+ macro triangular { "triangular" @TextureCommand }
+ macro string { "string" @TextureCommand }
+
+ macro @Texture { }
+}
diff --git a/include/include/cprint b/include/include/cprint
new file mode 100644
index 0000000..95eb57f
--- /dev/null
+++ b/include/include/cprint
@@ -0,0 +1,118 @@
+###############################################################################
+# #
+# Lout setup file for C and C++ program printing #
+# #
+# Version 3.0 #
+# Jeffrey H. Kingston #
+# 10 April 2000 #
+# #
+# This file has been placed in the public domain by its author. #
+# #
+###############################################################################
+
+
+###############################################################################
+# #
+# @SysInclude line #
+# #
+# This line causes Lout to read the definitions for this programming #
+# language, and should not be touched. #
+# #
+###############################################################################
+
+@SysInclude { cprintf }
+
+
+###############################################################################
+# #
+# @Use clause #
+# #
+# To change the default value of any option, delete the # at the start of #
+# its line and change the value between braces. #
+# #
+###############################################################################
+
+@Use { @CPSetup
+ # pipe { } # pipe source through this
+ # numbered { No } # No, Yes, or a line number
+ # blanknumbered { Yes } # No, NoPrint, or Yes
+ # style { fixed } # fixed, varying, or symbol
+
+ # the following options apply when style is "fixed"
+
+ # fixedfont { Courier } # font family
+ # fixedsize { -1.0p } # font size
+ # fixedline { 1.0vx } # line-space
+ # fixedblanklinescale { 1.0 } # blank-line scale
+ # fixedspace { lout } # spacing mode
+ # fixedtabin { 8 } # tab interval
+ # fixedtabout { 8s } # tab width
+
+ # fixedidentifiers { Base } # identifier face
+ # fixedkeywords { Base } # keyword face
+ # fixedoperators { Base } # operator face
+ # fixednumbers { Base } # number face
+ # fixedstrings { Base } # string face
+ # fixedcomments { Base } # comment face
+ # fixedlinenumbers { Base } # line numbers face
+
+ # fixedidentifiersformat { @Body } # identifiers format
+ # fixedkeywordsformat { @Body } # keywords format
+ # fixedoperatorsformat { @Body } # operators format
+ # fixednumbersformat { @Body } # numbers format
+ # fixedstringsformat { @Body } # strings format
+ # fixedcommentsformat { @Body } # comments format
+ # fixedlinenumbersformat { @Body } # line numbers format
+
+ # the following options apply when style is "varying"
+
+ # varyingfont { } # font family
+ # varyingsize { 1.0f } # font size
+ # varyingline { 1.0vx } # line-space
+ # varyingblanklinescale { 1.0 } # blank-line scale
+ # varyingspace { lout } # varying mode
+ # varyingtabin { 8 } # tab interval
+ # varyingtabout { 3f } # tab width
+
+ # varyingidentifiers { Slope } # identifier face
+ # varyingkeywords { Bold } # keyword face
+ # varyingoperators { Base } # operator face
+ # varyingnumbers { Base } # number face
+ # varyingstrings { Slope } # string face
+ # varyingcomments { Base } # comment face
+ # varyinglinenumbers { Base } # line numbers face
+
+ # varyingidentifiersformat { @Body } # identifiers format
+ # varyingkeywordsformat { @Body } # keywords format
+ # varyingoperatorsformat { @Body } # operators format
+ # varyingnumbersformat { @Body } # numbers format
+ # varyingstringsformat { @Body } # strings format
+ # varyingcommentsformat { @Body } # comments format
+ # varyinglinenumbersformat { @Body } # line numbers format
+
+ # the following options apply when style is "symbol"
+
+ # symbolfont { } # font family
+ # symbolsize { 1.0f } # font size
+ # symbolline { 1.0vx } # line-space
+ # symbolblanklinescale { 1.0 } # blank-line scale
+ # symbolspace { lout } # spacing mode
+ # symboltabin { 8 } # tab interval
+ # symboltabout { 3f } # tab width
+
+ # symbolidentifiers { Slope } # identifier face
+ # symbolkeywords { Bold } # keyword face
+ # symboloperators { Base } # operator face
+ # symbolnumbers { Base } # number face
+ # symbolstrings { Slope } # string face
+ # symbolcomments { Base } # comment face
+ # symbollinenumbers { Base } # line numbers face
+
+ # symbolidentifiersformat { @Body } # identifiers format
+ # symbolkeywordsformat { @Body } # keywords format
+ # symboloperatorsformat { @Body } # operators format
+ # symbolnumbersformat { @Body } # numbers format
+ # symbolstringsformat { @Body } # strings format
+ # symbolcommentsformat { @Body } # comments format
+ # symbollinenumbersformat { @Body } # line numbers format
+}
diff --git a/include/include/cprintf b/include/include/cprintf
new file mode 100644
index 0000000..4c2b77e
--- /dev/null
+++ b/include/include/cprintf
@@ -0,0 +1,446 @@
+
+###############################################################################
+# #
+# Lout @CPSetup package for formatting C and C++ programs #
+# #
+# Version 3.0 #
+# Jeffrey H. Kingston #
+# 10 April 2000 #
+# #
+# This package uses a filtered body parameter to convert program source #
+# code into Lout source. The filter program is prg2lout, which is #
+# distributed with Lout and should be compiled and installed wherever #
+# Lout itself is. #
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either Version 3, or (at your option) #
+# any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA #
+# #
+# As a special exception, when this file is read by Lout when processing #
+# a Lout source document, you may use the result without restriction. #
+# #
+###############################################################################
+
+export @CP
+def @CPSetup
+ named pipe { } # pipe through this
+ named numbered { No } # numbered lines?
+ named blanknumbered { Yes } # blanks numbered?
+ named style
+ named @OrIfPlain left x right y
+ { @BackEnd @Case { PlainText @Yield y else @Yield x } }
+ { fixed } # print style
+
+ # the following options apply when style is "fixed"
+ named fixedfont { Courier }# font family
+ named fixedsize { -1.0p } # font size
+ named fixedline { 1.0vx } # line-space
+ named fixedblanklinescale { 1.0 } # blank-line scale
+ named fixedspace { lout } # spacing mode
+ named fixedtabin { 8 } # tab interval
+ named fixedtabout { 8s } # tab width
+
+ named fixedidentifiers { Base } # identifier face
+ named fixedkeywords { Base } # keyword face
+ named fixedoperators { Base } # operator face
+ named fixednumbers { Base } # number face
+ named fixedstrings { Base } # string face
+ named fixedcomments { Base } # comment face
+ named fixedlinenumbers { Base } # line numbers face
+
+ named fixedidentifiersformat right @Body { @Body } # identifier format
+ named fixedkeywordsformat right @Body { @Body } # keyword format
+ named fixedoperatorsformat right @Body { @Body } # operators format
+ named fixednumbersformat right @Body { @Body } # number format
+ named fixedstringsformat right @Body { @Body } # string format
+ named fixedcommentsformat right @Body { @Body } # comment format
+ named fixedlinenumbersformat right @Body { @Body } # line nums format
+
+ # the following options apply when style is "varying"
+ named varyingfont { } # font family
+ named varyingsize { 1.0f } # font size
+ named varyingline { 1.0vx } # line-space
+ named varyingblanklinescale { 1.0 } # blank-line scale
+ named varyingspace { lout } # spacing mode
+ named varyingtabin { 8 } # tab interval
+ named varyingtabout { 3f } # tab width
+
+ named varyingidentifiers { Slope } # identifier face
+ named varyingkeywords { Bold } # keyword face
+ named varyingoperators { Base } # operator face
+ named varyingnumbers { Base } # number face
+ named varyingstrings { Slope } # string face
+ named varyingcomments { Base } # comment face
+ named varyinglinenumbers { Base } # line numbers face
+
+ named varyingidentifiersformat right @Body { @Body } # identifier format
+ named varyingkeywordsformat right @Body { @Body } # keyword format
+ named varyingoperatorsformat right @Body { @Body } # operators format
+ named varyingnumbersformat right @Body { @Body } # number format
+ named varyingstringsformat right @Body { @Body } # string format
+ named varyingcommentsformat right @Body { @Body } # comment format
+ named varyinglinenumbersformat right @Body { @Body } # line nums format
+
+ # the following options apply when style is "symbol"
+ named symbolfont { } # font family
+ named symbolsize { 1.0f } # font size
+ named symbolline { 1.0vx } # line-space
+ named symbolblanklinescale { 1.0 } # blank-line scale
+ named symbolspace { lout } # spacing mode
+ named symboltabin { 8 } # tab interval
+ named symboltabout { 3f } # tab width
+
+ named symbolidentifiers { Slope } # identifier face
+ named symbolkeywords { Bold } # keyword face
+ named symboloperators { Base } # operator face
+ named symbolnumbers { Base } # number face
+ named symbolstrings { Slope } # string face
+ named symbolcomments { Base } # comment face
+ named symbollinenumbers { Base } # line numbers face
+
+ named symbolidentifiersformat right @Body { @Body } # identifier format
+ named symbolkeywordsformat right @Body { @Body } # keyword format
+ named symboloperatorsformat right @Body { @Body } # operators format
+ named symbolnumbersformat right @Body { @Body } # number format
+ named symbolstringsformat right @Body { @Body } # string format
+ named symbolcommentsformat right @Body { @Body } # comment format
+ named symbollinenumbersformat right @Body { @Body } # line nums format
+
+@Begin
+
+ export
+
+ @PI @PK @PO @PN @PS @PC @PL @PA @PM @PD
+ @A "$>"
+
+ def @CP
+ named style { style } # style
+ named numbered { numbered } # want numbered lines?
+ named blanknumbered { blanknumbered } # numbered blank lines?
+ named pipe { pipe } # pipe through this first
+ named font { dft } # font family
+ named size { dft } # font size
+ named line { dft } # line-space
+ named blanklinescale { dft } # blank-line scale
+ named space { dft } # spacing mode
+ named tabin { dft } # tab interval
+ named tabout { dft } # tab width
+ named identifiers { dft } # ident. font
+ named keywords { dft } # keyword font
+ named operators { dft } # operator font
+ named numbers { dft } # number font
+ named strings { dft } # string font
+ named comments { dft } # comment font
+ named linenumbers { dft } # line numbers font
+ body @Body # filtered, see below
+ @Begin
+
+ def @Test # returns x unless x is dft
+ left x
+ named iffixed {}
+ named ifvarying {}
+ named ifsymbol {}
+ {
+ x @Case {
+ dft @Yield {
+ style @Case {
+ fixed @Yield { iffixed }
+ varying @Yield { ifvarying }
+ symbol @Yield { ifsymbol }
+ }
+ }
+ else @Yield x
+ }
+ }
+
+
+ def @Else # returns x, or y if x is dft
+ left x
+ right y
+ {
+ x @Case {
+ dft @Yield y
+ else @Yield x
+ }
+ }
+
+
+ def @InitTab
+ {
+ tabin @Test
+ iffixed { fixedtabin }
+ ifvarying { varyingtabin }
+ ifsymbol { symboltabin }
+ }
+
+
+ def @InitTabWidth
+ {
+ tabout @Test
+ iffixed { fixedtabout }
+ ifvarying { varyingtabout }
+ ifsymbol { symboltabout }
+ }
+
+
+ def @Filter
+ {
+ def wantnumbered
+ {
+ numbered @Case {
+ { No no } @Yield ""
+ { Yes yes } @Yield "-L"
+ else @Yield { "-L"numbered }
+ }
+ }
+
+ def wantblanknumbered
+ {
+ blanknumbered @Case {
+ { No no } @Yield "-M"
+ { NoPrint noprint } @Yield "-N"
+ { Yes yes } @Yield ""
+ }
+ }
+
+ pipe @Case {
+ "" @Yield {
+ "prg2lout -r -lC" wantblanknumbered wantnumbered
+ -i{@FilterIn} -o{@FilterOut} -e{@FilterErr}
+ -t{@InitTab} -T{@InitTabWidth}
+ }
+ else @Yield {
+ "cat" @FilterIn "|" pipe "|"
+ "prg2lout -r -lC" wantblanknumbered wantnumbered
+ -o{@FilterOut} -e{@FilterErr}
+ -t{@InitTab} -T{@InitTabWidth}
+ }
+ }
+ }
+
+
+ def @InitFontFamily
+ {
+ font @Test
+ iffixed { fixedfont }
+ ifvarying { varyingfont }
+ ifsymbol { symbolfont }
+ }
+
+
+ def @InitSize
+ {
+ size @Test
+ iffixed { fixedsize }
+ ifvarying { varyingsize }
+ ifsymbol { symbolsize }
+ }
+
+
+ def @InitLine
+ {
+ line @Test
+ iffixed { fixedline }
+ ifvarying { varyingline }
+ ifsymbol { symbolline }
+ }
+
+
+ def @InitBLS
+ {
+ blanklinescale @Test
+ iffixed { fixedblanklinescale }
+ ifvarying { varyingblanklinescale }
+ ifsymbol { symbolblanklinescale }
+ }
+
+
+ def @InitSpace
+ {
+ space @Test
+ iffixed { fixedspace }
+ ifvarying { varyingspace }
+ ifsymbol { symbolspace }
+ }
+
+
+ def @PI # for formatting identifiers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedidentifiersformat {
+ { identifiers @Else fixedidentifiers } @Font x
+ }
+ varying @Yield varyingidentifiersformat {
+ { identifiers @Else varyingidentifiers } @Font x
+ }
+ symbol @Yield symbolidentifiersformat {
+ { identifiers @Else symbolidentifiers } @Font x
+ }
+ }
+ }
+
+
+ def @PK # for formatting keywords
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedkeywordsformat {
+ { keywords @Else fixedkeywords } @Font x
+ }
+ varying @Yield varyingkeywordsformat {
+ { keywords @Else varyingkeywords } @Font x
+ }
+ symbol @Yield symbolkeywordsformat {
+ { keywords @Else symbolkeywords } @Font x
+ }
+ }
+ }
+
+
+ def @PO # for formatting operators
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedoperatorsformat {
+ { operators @Else fixedoperators } @Font x
+ }
+ varying @Yield varyingoperatorsformat {
+ { operators @Else varyingoperators } @Font x
+ }
+ symbol @Yield symboloperatorsformat {
+ { operators @Else symboloperators } @Font x
+ }
+ }
+ }
+
+
+ def @PN # for formatting numbers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixednumbersformat {
+ { numbers @Else fixednumbers } @Font x
+ }
+ varying @Yield varyingnumbersformat {
+ { numbers @Else varyingnumbers } @Font x
+ }
+ symbol @Yield symbolnumbersformat {
+ { numbers @Else symbolnumbers } @Font x
+ }
+ }
+ }
+
+
+ def @PS # for formatting strings
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedstringsformat {
+ { strings @Else fixedstrings } @Font x
+ }
+ varying @Yield varyingstringsformat {
+ { strings @Else varyingstrings } @Font x
+ }
+ symbol @Yield symbolstringsformat {
+ { strings @Else symbolstrings } @Font x
+ }
+ }
+ }
+
+
+ def @PC # for formatting comments
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedcommentsformat {
+ { comments @Else fixedcomments } @Font x
+ }
+ varying @Yield varyingcommentsformat {
+ { comments @Else varyingcomments } @Font x
+ }
+ symbol @Yield symbolcommentsformat {
+ { comments @Else symbolcomments } @Font x
+ }
+ }
+ }
+
+
+ def @PL # for formatting line numbers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedlinenumbersformat {
+ { linenumbers @Else fixedlinenumbers } @Font x
+ }
+ varying @Yield varyinglinenumbersformat {
+ { linenumbers @Else varyinglinenumbers } @Font x
+ }
+ symbol @Yield symbollinenumbersformat {
+ { linenumbers @Else symbollinenumbers } @Font x
+ }
+ }
+ }
+
+
+ def @PA # for formatting asterisks
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "*"
+ else @Yield { "0.5w" @VShift "*" }
+ }
+ }
+
+
+ def @PM # for formatting minus signs
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "-"
+ else @Yield style @Case {
+ fixed @Yield "-"
+ else @Yield { { Symbol Base } @Font @Char "minus" }
+ }
+ }
+ }
+
+
+ def @PD # for formatting dots, if wanted larger
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "."
+ else @Yield { "1.4f" @Font "+0.04f" @VShift "." &"0.05f" }
+ }
+ }
+
+
+ def @A # get characters from the Adobe Symbol font
+ named sym {}
+ right x
+ {
+ style @Case {
+ symbol @Yield { { Symbol Base } @Font @Char sym }
+ else @Yield { x }
+ }
+ }
+
+
+ macro "$>" { {} & }
+
+
+ Programming @Language
+ { @InitFontFamily Base @InitSize } @Font @InitSpace @Space
+ { @InitLine lines "blanklinescale" @InitBLS } @Break @Body
+
+ @End @CP
+
+@End @CPSetup
diff --git a/include/include/diag b/include/include/diag
new file mode 100644
index 0000000..fd0fe4a
--- /dev/null
+++ b/include/include/diag
@@ -0,0 +1,669 @@
+###############################################################################
+# #
+# Lout setup file for diagram printing #
+# #
+# Jeffrey H. Kingston #
+# 5 February 1999 #
+# #
+# This file has been placed in the public domain by its author. #
+# #
+###############################################################################
+
+
+###############################################################################
+# #
+# The @SysInclude { diagf } line #
+# #
+# This line causes Lout to read the definitions for diagrams, and should #
+# not be touched. #
+# #
+###############################################################################
+
+@SysInclude { diagf }
+
+
+###############################################################################
+# #
+# The @DiagSetup @Use clause #
+# #
+# To change the default value of any option, delete the # at the start of #
+# its line and change the value between braces. #
+# #
+###############################################################################
+
+@Use { @DiagSetup
+ # save { no }
+ # maxlabels { 200 }
+ # title { (none) }
+ # titleformat { Slope @Font @Title //0.7f ||0.35f @Body }
+
+ #############################################################################
+ # #
+ # Node options #
+ # #
+ #############################################################################
+
+ # outline { box }
+ # margin { 0.6f }
+ # shadow { 0.4f }
+ # sides { 3 }
+ # angle { "dup 180 exch div" } # 180d / sides
+ # translate { }
+ # outlinestyle { solid }
+ # outlinedashlength { 0.2f }
+ # outlinewidth { thin }
+ # outlinecolour { nochange }
+ # paint { none }
+ # texture { solid }
+ # font { }
+ # break { }
+ # format { @Body }
+ # valign { ctr }
+ # vsize { }
+ # vindent { ctr }
+ # vstrut { no }
+ # vmargin { }
+ # topmargin { }
+ # footmargin { }
+ # halign { ctr }
+ # hsize { }
+ # hindent { ctr }
+ # hstrut { no }
+ # hmargin { }
+ # leftmargin { }
+ # rightmargin { }
+ # nodelabel { }
+ # nodelabelmargin { 0.2f }
+ # nodelabelfont { "-2p" }
+ # nodelabelbreak { ragged nohyphen }
+ # nodelabelformat { @Body }
+ # nodelabelpos { }
+ # nodelabelangle { horizontal }
+ # nodelabelprox { outside }
+ # nodelabelctr { no }
+ # nodelabeladjust { 0 0 }
+ # alabel { }
+ # alabelmargin { }
+ # alabelfont { }
+ # alabelbreak { }
+ # alabelformat { }
+ # alabelpos { NE }
+ # alabelangle { }
+ # alabelprox { }
+ # alabelctr { }
+ # alabeladjust { }
+ # blabel { }
+ # blabelmargin { }
+ # blabelfont { }
+ # blabelbreak { }
+ # blabelformat { }
+ # blabelpos { NW }
+ # blabelangle { }
+ # blabelprox { }
+ # blabelctr { }
+ # blabeladjust { }
+ # clabel { }
+ # clabelmargin { }
+ # clabelfont { }
+ # clabelbreak { }
+ # clabelformat { }
+ # clabelpos { SW }
+ # clabelangle { }
+ # clabelprox { }
+ # clabelctr { }
+ # clabeladjust { }
+ # dlabel { }
+ # dlabelmargin { }
+ # dlabelfont { }
+ # dlabelbreak { }
+ # dlabelformat { }
+ # dlabelpos { SE }
+ # dlabelangle { }
+ # dlabelprox { }
+ # dlabelctr { }
+ # dlabeladjust { }
+
+ #############################################################################
+ # #
+ # @ANode options #
+ # #
+ #############################################################################
+
+ # aoutline { box }
+ # amargin { 0.6f }
+ # ashadow { 0.4f }
+ # asides { 3 }
+ # aangle { "dup 180 exch div" } # 180d / sides
+ # atranslate { }
+ # aoutlinestyle { solid }
+ # aoutlinedashlength { 0.2f }
+ # aoutlinewidth { thin }
+ # aoutlinecolour { nochange }
+ # apaint { none }
+ # atexture { solid }
+ # afont { }
+ # abreak { }
+ # aformat { @Body }
+ # avalign { ctr }
+ # avsize { }
+ # avindent { ctr }
+ # avstrut { no }
+ # avmargin { }
+ # atopmargin { }
+ # afootmargin { }
+ # ahalign { ctr }
+ # ahsize { }
+ # ahindent { ctr }
+ # ahstrut { no }
+ # ahmargin { }
+ # aleftmargin { }
+ # arightmargin { }
+ # anodelabel { }
+ # anodelabelmargin { 0.2f }
+ # anodelabelfont { "-2p" }
+ # anodelabelbreak { ragged nohyphen }
+ # anodelabelformat { @Body }
+ # anodelabelpos { }
+ # anodelabelangle { horizontal }
+ # anodelabelprox { outside }
+ # anodelabelctr { no }
+ # anodelabeladjust { 0 0 }
+ # aalabel { }
+ # aalabelmargin { }
+ # aalabelfont { }
+ # aalabelbreak { }
+ # aalabelformat { }
+ # aalabelpos { NE }
+ # aalabelangle { }
+ # aalabelprox { }
+ # aalabelctr { }
+ # aalabeladjust { }
+ # ablabel { }
+ # ablabelmargin { }
+ # ablabelfont { }
+ # ablabelbreak { }
+ # ablabelformat { }
+ # ablabelpos { NW }
+ # ablabelangle { }
+ # ablabelprox { }
+ # ablabelctr { }
+ # ablabeladjust { }
+ # aclabel { }
+ # aclabelmargin { }
+ # aclabelfont { }
+ # aclabelbreak { }
+ # aclabelformat { }
+ # aclabelpos { SW }
+ # aclabelangle { }
+ # aclabelprox { }
+ # aclabelctr { }
+ # aclabeladjust { }
+ # adlabel { }
+ # adlabelmargin { }
+ # adlabelfont { }
+ # adlabelbreak { }
+ # adlabelformat { }
+ # adlabelpos { SE }
+ # adlabelangle { }
+ # adlabelprox { }
+ # adlabelctr { }
+ # adlabeladjust { }
+
+ #############################################################################
+ # #
+ # @BNode options #
+ # #
+ #############################################################################
+
+ # boutline { box }
+ # bmargin { 0.6f }
+ # bshadow { 0.4f }
+ # bsides { 3 }
+ # bangle { "dup 180 exch div" } # 180d / sides
+ # btranslate { }
+ # boutlinestyle { solid }
+ # boutlinedashlength { 0.2f }
+ # boutlinewidth { thin }
+ # boutlinecolour { nochange }
+ # bpaint { none }
+ # btexture { solid }
+ # bfont { }
+ # bbreak { }
+ # bformat { @Body }
+ # bvalign { ctr }
+ # bvsize { }
+ # bvindent { ctr }
+ # bvstrut { no }
+ # bvmargin { }
+ # btopmargin { }
+ # bfootmargin { }
+ # bhalign { ctr }
+ # bhsize { }
+ # bhindent { ctr }
+ # bhstrut { no }
+ # bhmargin { }
+ # bleftmargin { }
+ # brightmargin { }
+ # bnodelabel { }
+ # bnodelabelmargin { 0.2f }
+ # bnodelabelfont { "-2p" }
+ # bnodelabelbreak { ragged nohyphen }
+ # bnodelabelformat { @Body }
+ # bnodelabelpos { }
+ # bnodelabelangle { horizontal }
+ # bnodelabelprox { outside }
+ # bnodelabelctr { no }
+ # bnodelabeladjust { 0 0 }
+ # balabel { }
+ # balabelmargin { }
+ # balabelfont { }
+ # balabelbreak { }
+ # balabelformat { }
+ # balabelpos { NE }
+ # balabelangle { }
+ # balabelprox { }
+ # balabelctr { }
+ # balabeladjust { }
+ # bblabel { }
+ # bblabelmargin { }
+ # bblabelfont { }
+ # bblabelbreak { }
+ # bblabelformat { }
+ # bblabelpos { NW }
+ # bblabelangle { }
+ # bblabelprox { }
+ # bblabelctr { }
+ # bblabeladjust { }
+ # bclabel { }
+ # bclabelmargin { }
+ # bclabelfont { }
+ # bclabelbreak { }
+ # bclabelformat { }
+ # bclabelpos { SW }
+ # bclabelangle { }
+ # bclabelprox { }
+ # bclabelctr { }
+ # bclabeladjust { }
+ # bdlabel { }
+ # bdlabelmargin { }
+ # bdlabelfont { }
+ # bdlabelbreak { }
+ # bdlabelformat { }
+ # bdlabelpos { SE }
+ # bdlabelangle { }
+ # bdlabelprox { }
+ # bdlabelctr { }
+ # bdlabeladjust { }
+
+ #############################################################################
+ # #
+ # @CNode options #
+ # #
+ #############################################################################
+
+ # coutline { box }
+ # cmargin { 0.6f }
+ # cshadow { 0.4f }
+ # csides { 3 }
+ # cangle { "dup 180 exch div" } # 180d / sides
+ # ctranslate { }
+ # coutlinestyle { solid }
+ # coutlinedashlength { 0.2f }
+ # coutlinewidth { thin }
+ # coutlinecolour { nochange }
+ # cpaint { none }
+ # ctexture { solid }
+ # cfont { }
+ # cbreak { }
+ # cformat { @Body }
+ # cvalign { ctr }
+ # cvsize { }
+ # cvindent { ctr }
+ # cvstrut { no }
+ # cvmargin { }
+ # ctopmargin { }
+ # cfootmargin { }
+ # chalign { ctr }
+ # chsize { }
+ # chindent { ctr }
+ # chstrut { no }
+ # chmargin { }
+ # cleftmargin { }
+ # crightmargin { }
+ # cnodelabel { }
+ # cnodelabelmargin { 0.2f }
+ # cnodelabelfont { "-2p" }
+ # cnodelabelbreak { ragged nohyphen }
+ # cnodelabelformat { @Body }
+ # cnodelabelpos { }
+ # cnodelabelangle { horizontal }
+ # cnodelabelprox { outside }
+ # cnodelabelctr { no }
+ # cnodelabeladjust { 0 0 }
+ # calabel { }
+ # calabelmargin { }
+ # calabelfont { }
+ # calabelbreak { }
+ # calabelformat { }
+ # calabelpos { NE }
+ # calabelangle { }
+ # calabelprox { }
+ # calabelctr { }
+ # calabeladjust { }
+ # cblabel { }
+ # cblabelmargin { }
+ # cblabelfont { }
+ # cblabelbreak { }
+ # cblabelformat { }
+ # cblabelpos { NW }
+ # cblabelangle { }
+ # cblabelprox { }
+ # cblabelctr { }
+ # cblabeladjust { }
+ # cclabel { }
+ # cclabelmargin { }
+ # cclabelfont { }
+ # cclabelbreak { }
+ # cclabelformat { }
+ # cclabelpos { SW }
+ # cclabelangle { }
+ # cclabelprox { }
+ # cclabelctr { }
+ # cclabeladjust { }
+ # cdlabel { }
+ # cdlabelmargin { }
+ # cdlabelfont { }
+ # cdlabelbreak { }
+ # cdlabelformat { }
+ # cdlabelpos { SE }
+ # cdlabelangle { }
+ # cdlabelprox { }
+ # cdlabelctr { }
+ # cdlabeladjust { }
+
+ #############################################################################
+ # #
+ # @DNode options #
+ # #
+ #############################################################################
+
+ # doutline { box }
+ # dmargin { 0.6f }
+ # dshadow { 0.4f }
+ # dsides { 3 }
+ # dangle { "dup 180 exch div" } # 180d / sides
+ # dtranslate { }
+ # doutlinestyle { solid }
+ # doutlinedashlength { 0.2f }
+ # doutlinewidth { thin }
+ # doutlinecolour { nochange }
+ # dpaint { none }
+ # dtexture { solid }
+ # dfont { }
+ # dbreak { }
+ # dformat { @Body }
+ # dvalign { ctr }
+ # dvsize { }
+ # dvindent { ctr }
+ # dvstrut { no }
+ # dvmargin { }
+ # dtopmargin { }
+ # dfootmargin { }
+ # dhalign { ctr }
+ # dhsize { }
+ # dhindent { ctr }
+ # dhstrut { no }
+ # dhmargin { }
+ # dleftmargin { }
+ # drightmargin { }
+ # dnodelabel { }
+ # dnodelabelmargin { 0.2f }
+ # dnodelabelfont { "-2p" }
+ # dnodelabelbreak { ragged nohyphen }
+ # dnodelabelformat { @Body }
+ # dnodelabelpos { }
+ # dnodelabelangle { horizontal }
+ # dnodelabelprox { outside }
+ # dnodelabelctr { no }
+ # dnodelabeladjust { 0 0 }
+ # dalabel { }
+ # dalabelmargin { }
+ # dalabelfont { }
+ # dalabelbreak { }
+ # dalabelformat { }
+ # dalabelpos { NE }
+ # dalabelangle { }
+ # dalabelprox { }
+ # dalabelctr { }
+ # dalabeladjust { }
+ # dblabel { }
+ # dblabelmargin { }
+ # dblabelfont { }
+ # dblabelbreak { }
+ # dblabelformat { }
+ # dblabelpos { NW }
+ # dblabelangle { }
+ # dblabelprox { }
+ # dblabelctr { }
+ # dblabeladjust { }
+ # dclabel { }
+ # dclabelmargin { }
+ # dclabelfont { }
+ # dclabelbreak { }
+ # dclabelformat { }
+ # dclabelpos { SW }
+ # dclabelangle { }
+ # dclabelprox { }
+ # dclabelctr { }
+ # dclabeladjust { }
+ # ddlabel { }
+ # ddlabelmargin { }
+ # ddlabelfont { }
+ # ddlabelbreak { }
+ # ddlabelformat { }
+ # ddlabelpos { SE }
+ # ddlabelangle { }
+ # ddlabelprox { }
+ # ddlabelctr { }
+ # ddlabeladjust { }
+
+ #############################################################################
+ # #
+ # @ENode options #
+ # #
+ #############################################################################
+
+ # eoutline { box }
+ # emargin { 0.6f }
+ # eshadow { 0.4f }
+ # esides { 3 }
+ # eangle { "dup 180 exch div" } # 180d / sides
+ # etranslate { }
+ # eoutlinestyle { solid }
+ # eoutlinedashlength { 0.2f }
+ # eoutlinewidth { thin }
+ # eoutlinecolour { nochange }
+ # epaint { none }
+ # etexture { solid }
+ # efont { }
+ # ebreak { }
+ # eformat { @Body }
+ # evalign { ctr }
+ # evsize { }
+ # evindent { ctr }
+ # evstrut { no }
+ # evmargin { }
+ # etopmargin { }
+ # efootmargin { }
+ # ehalign { ctr }
+ # ehsize { }
+ # ehindent { ctr }
+ # ehstrut { no }
+ # ehmargin { }
+ # eleftmargin { }
+ # erightmargin { }
+ # enodelabel { }
+ # enodelabelmargin { 0.2f }
+ # enodelabelfont { "-2p" }
+ # enodelabelbreak { ragged nohyphen }
+ # enodelabelformat { @Body }
+ # enodelabelpos { }
+ # enodelabelangle { horizontal }
+ # enodelabelprox { outside }
+ # enodelabelctr { no }
+ # enodelabeladjust { 0 0 }
+ # ealabel { }
+ # ealabelmargin { }
+ # ealabelfont { }
+ # ealabelbreak { }
+ # ealabelformat { }
+ # ealabelpos { NE }
+ # ealabelangle { }
+ # ealabelprox { }
+ # ealabelctr { }
+ # ealabeladjust { }
+ # eblabel { }
+ # eblabelmargin { }
+ # eblabelfont { }
+ # eblabelbreak { }
+ # eblabelformat { }
+ # eblabelpos { NW }
+ # eblabelangle { }
+ # eblabelprox { }
+ # eblabelctr { }
+ # eblabeladjust { }
+ # eclabel { }
+ # eclabelmargin { }
+ # eclabelfont { }
+ # eclabelbreak { }
+ # eclabelformat { }
+ # eclabelpos { SW }
+ # eclabelangle { }
+ # eclabelprox { }
+ # eclabelctr { }
+ # eclabeladjust { }
+ # edlabel { }
+ # edlabelmargin { }
+ # edlabelfont { }
+ # edlabelbreak { }
+ # edlabelformat { }
+ # edlabelpos { SE }
+ # edlabelangle { }
+ # edlabelprox { }
+ # edlabelctr { }
+ # edlabeladjust { }
+
+ #############################################################################
+ # #
+ # Link options #
+ # #
+ #############################################################################
+
+ # path { line }
+ # from { 0, 0 }
+ # to { 1, 1 }
+ # bias { 2.0f }
+ # fbias { 2.0f }
+ # tbias { 2.0f }
+ # hfrac { 0.5 }
+ # hbias { 0.0f }
+ # radius { 1.0f }
+ # xindent { 0.8f }
+ # zindent { 0.8f }
+ # frompt { 0 0 }
+ # topt { 0 0 }
+ # pathstyle { solid }
+ # pathdashlength { 0.2f }
+ # pathwidth { thin }
+ # pathcolour { nochange }
+ # pathgap { thin }
+ # arrow { no }
+ # arrowstyle { solid }
+ # arrowwidth { 0.3f }
+ # arrowlength { 0.5f }
+ # backarrowstyle { solid }
+ # backarrowwidth { 0.3f }
+ # backarrowlength { 0.5f }
+ # linklabel { }
+ # linklabelmargin { 0.2f }
+ # linklabelfont { "-2p" }
+ # linklabelbreak { ragged nohyphen }
+ # linklabelformat { @Body }
+ # linklabelpos { }
+ # linklabelangle { horizontal }
+ # linklabelprox { above }
+ # linklabelctr { no }
+ # linklabeladjust { 0 0 }
+ # xlabel { }
+ # xlabelmargin { }
+ # xlabelfont { }
+ # xlabelbreak { }
+ # xlabelformat { }
+ # xlabelpos { LFROM }
+ # xlabelangle { }
+ # xlabelprox { }
+ # xlabelctr { }
+ # xlabeladjust { }
+ # ylabel { }
+ # ylabelmargin { }
+ # ylabelfont { }
+ # ylabelbreak { }
+ # ylabelformat { }
+ # ylabelpos { LMID }
+ # ylabelangle { }
+ # ylabelprox { }
+ # ylabelctr { yes }
+ # ylabeladjust { }
+ # zlabel { }
+ # zlabelmargin { }
+ # zlabelfont { }
+ # zlabelbreak { }
+ # zlabelformat { }
+ # zlabelpos { LTO }
+ # zlabelangle { }
+ # zlabelprox { }
+ # zlabelctr { }
+ # zlabeladjust { }
+ # fromlabel { }
+ # fromlabelmargin { 0f }
+ # fromlabelfont { "-2p" }
+ # fromlabelbreak { ragged nohyphen }
+ # fromlabelformat { @Body }
+ # fromlabelpos { FROM }
+ # fromlabelangle { antiparallel }
+ # fromlabelprox { W }
+ # fromlabelctr { no }
+ # fromlabeladjust { 0 0 }
+ # tolabel { }
+ # tolabelmargin { 0f }
+ # tolabelfont { "-2p" }
+ # tolabelbreak { ragged nohyphen }
+ # tolabelformat { @Body }
+ # tolabelpos { TO }
+ # tolabelangle { parallel }
+ # tolabelprox { W }
+ # tolabelctr { no }
+ # tolabeladjust { 0 0 }
+
+ #############################################################################
+ # #
+ # Tree options #
+ # #
+ #############################################################################
+
+ # treehsep { 0.5f }
+ # treevsep { 0.5f }
+ # treehindent { ctr }
+ # treevindent { ctr }
+
+ #############################################################################
+ # #
+ # Syntax diagram options #
+ # #
+ #############################################################################
+
+ # syntaxgap { 0.35f }
+ # syntaxbias { 1.0f }
+ # syntaxradius { 0.3f }
+
+}
diff --git a/include/include/diagf b/include/include/diagf
new file mode 100644
index 0000000..f58b37d
--- /dev/null
+++ b/include/include/diagf
@@ -0,0 +1,8217 @@
+
+###############################################################################
+# #
+# Lout @Diag package for drawing diagrams #
+# Version 1.1 (February 2000) #
+# Jeffrey H. Kingston #
+# #
+# Version 1.0 (July 1996) #
+# Based on Version 2.0 of the @Fig package (Jeffrey H. Kingston, Dec 1992). #
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either Version 3, or (at your option) #
+# any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA #
+# #
+# As a special exception, when this file is read by Lout when processing #
+# a Lout source document, you may use the result without restriction. #
+# #
+###############################################################################
+
+@SysInclude { diagf.etc } # @Geometry
+@SysInclude { coltex } # @ColourCommand and @TextureCommand
+@SysPrependGraphic { diagf.lpg }
+
+
+###############################################################################
+# #
+# @DiagSetup symbol #
+# #
+###############################################################################
+
+export @Diag @SyntaxDiag
+def @DiagSetup
+ named save { no }
+ named maxlabels { 200 }
+ named title { "--titledft--" }
+ named titleformat
+ left @Title
+ right @Body
+ { Slope @Font @Title //0.7f ||0.35f @Body }
+
+ ###########################################################################
+ # #
+ # @Node options of @DiagSetup #
+ # #
+ ###########################################################################
+
+ import @Geometry named outline
+ named margin {}
+ named shadow {}
+ named sides {}
+ named angle {}
+ { box }
+ named margin { 0.6f }
+ import @Geometry named shadow { 0.4f }
+ import @Geometry named sides { 3 }
+ import @Geometry named angle { "dup 180 exch div" }
+ named translate { }
+ named outlinestyle
+ named solid { "/ldiagsolid" }
+ named dashed { "/ldiagdashed" }
+ named cdashed { "/ldiagcdashed" }
+ named dotdashed { "/ldiagdotdashed" }
+ named dotcdashed { "/ldiagdotcdashed" }
+ named dotdotdashed { "/ldiagdotdotdashed" }
+ named dotdotcdashed { "/ldiagdotdotcdashed" }
+ named dotdotdotdashed { "/ldiagdotdotdotdashed" }
+ named dotdotdotcdashed { "/ldiagdotdotdotcdashed" }
+ named dotted { "/ldiagdotted" }
+ named noline { "/ldiagnoline" }
+ { solid }
+ import @Geometry named outlinedashlength { 0.2f }
+ import @Geometry named outlinewidth
+ named thin { 0.04 ft }
+ named medium { 0.08 ft }
+ named thick { 0.12 ft }
+ { thin }
+ named outlinecolour outlinecolor { nochange }
+ named paint { none }
+ import @TextureImport named texture { solid }
+ named font { }
+ named break { }
+ named format right @Body { @Body }
+
+ named valign { ctr }
+ named vsize { }
+ named vindent { ctr }
+ named vstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { no }
+ named vmargin { }
+ named topmargin { }
+ named footmargin { }
+
+ named halign { ctr }
+ named hsize { }
+ named hindent { ctr }
+ named hstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { no }
+ named hmargin { }
+ named leftmargin { }
+ named rightmargin { }
+
+ named nodelabel { }
+ named nodelabelmargin { 0.2f }
+ named nodelabelfont { -2p }
+ named nodelabelbreak { ragged nohyphen }
+ named nodelabelformat right @Body { @Body }
+ import @Geometry named nodelabelpos { }
+ import @Geometry named nodelabelangle { horizontal }
+ named nodelabelprox { outside }
+ named nodelabelctr { no }
+ import @Geometry named nodelabeladjust { 0 0 }
+
+ named alabel { }
+ named alabelmargin { }
+ named alabelfont { }
+ named alabelbreak { }
+ named alabelformat right @Body { }
+ import @Geometry named alabelpos { NE }
+ import @Geometry named alabelangle { }
+ named alabelprox { }
+ named alabelctr { }
+ import @Geometry named alabeladjust { }
+
+ named blabel { }
+ named blabelmargin { }
+ named blabelfont { }
+ named blabelbreak { }
+ named blabelformat right @Body { }
+ import @Geometry named blabelpos { NW }
+ import @Geometry named blabelangle { }
+ named blabelprox { }
+ named blabelctr { }
+ import @Geometry named blabeladjust { }
+
+ named clabel { }
+ named clabelmargin { }
+ named clabelfont { }
+ named clabelbreak { }
+ named clabelformat right @Body { }
+ import @Geometry named clabelpos { SW }
+ import @Geometry named clabelangle { }
+ named clabelprox { }
+ named clabelctr { }
+ import @Geometry named clabeladjust { }
+
+ named dlabel { }
+ named dlabelmargin { }
+ named dlabelfont { }
+ named dlabelbreak { }
+ named dlabelformat right @Body { }
+ import @Geometry named dlabelpos { SE }
+ import @Geometry named dlabelangle { }
+ named dlabelprox { }
+ named dlabelctr { }
+ import @Geometry named dlabeladjust { }
+
+ ###########################################################################
+ # #
+ # @ANode options of @DiagSetup #
+ # #
+ ###########################################################################
+
+ import @Geometry named aoutline
+ named margin {}
+ named shadow {}
+ named sides {}
+ named angle {}
+ { box }
+ named amargin { 0.6f }
+ import @Geometry named ashadow { 0.4f }
+ import @Geometry named asides { 3 }
+ import @Geometry named aangle { "dup 180 exch div" }
+ named atranslate { }
+ named aoutlinestyle
+ named solid { "/ldiagsolid" }
+ named dashed { "/ldiagdashed" }
+ named cdashed { "/ldiagcdashed" }
+ named dotdashed { "/ldiagdotdashed" }
+ named dotcdashed { "/ldiagdotcdashed" }
+ named dotdotdashed { "/ldiagdotdotdashed" }
+ named dotdotcdashed { "/ldiagdotdotcdashed" }
+ named dotdotdotdashed { "/ldiagdotdotdotdashed" }
+ named dotdotdotcdashed { "/ldiagdotdotdotcdashed" }
+ named dotted { "/ldiagdotted" }
+ named noline { "/ldiagnoline" }
+ { solid }
+ import @Geometry named aoutlinedashlength { 0.2f }
+ import @Geometry named aoutlinewidth
+ named thin { 0.04 ft }
+ named medium { 0.08 ft }
+ named thick { 0.12 ft }
+ { thin }
+ named aoutlinecolour aoutlinecolor { nochange }
+ named apaint { none }
+ import @TextureImport named atexture{ solid }
+ named afont { }
+ named abreak { }
+ named aformat right @Body { @Body }
+
+ named avalign { ctr }
+ named avsize { }
+ named avindent { ctr }
+ named avstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { no }
+ named avmargin { }
+ named atopmargin { }
+ named afootmargin { }
+
+ named ahalign { ctr }
+ named ahsize { }
+ named ahindent { ctr }
+ named ahstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { no }
+ named ahmargin { }
+ named aleftmargin { }
+ named arightmargin { }
+
+ named anodelabel { }
+ named anodelabelmargin { 0.2f }
+ named anodelabelfont { -2p }
+ named anodelabelbreak { ragged nohyphen }
+ named anodelabelformat right @Body { @Body }
+ import @Geometry named anodelabelpos{ }
+ import @Geometry named anodelabelangle { horizontal }
+ named anodelabelprox { outside }
+ named anodelabelctr { no }
+ import @Geometry named anodelabeladjust { 0 0 }
+
+ named aalabel { }
+ named aalabelmargin { }
+ named aalabelfont { }
+ named aalabelbreak { }
+ named aalabelformat right @Body { }
+ import @Geometry named aalabelpos { NE }
+ import @Geometry named aalabelangle { }
+ named aalabelprox { }
+ named aalabelctr { }
+ import @Geometry named aalabeladjust{ }
+
+ named ablabel { }
+ named ablabelmargin { }
+ named ablabelfont { }
+ named ablabelbreak { }
+ named ablabelformat right @Body { }
+ import @Geometry named ablabelpos { NW }
+ import @Geometry named ablabelangle { }
+ named ablabelprox { }
+ named ablabelctr { }
+ import @Geometry named ablabeladjust{ }
+
+ named aclabel { }
+ named aclabelmargin { }
+ named aclabelfont { }
+ named aclabelbreak { }
+ named aclabelformat right @Body { }
+ import @Geometry named aclabelpos { SW }
+ import @Geometry named aclabelangle { }
+ named aclabelprox { }
+ named aclabelctr { }
+ import @Geometry named aclabeladjust{ }
+
+ named adlabel { }
+ named adlabelmargin { }
+ named adlabelfont { }
+ named adlabelbreak { }
+ named adlabelformat right @Body { }
+ import @Geometry named adlabelpos { SE }
+ import @Geometry named adlabelangle { }
+ named adlabelprox { }
+ named adlabelctr { }
+ import @Geometry named adlabeladjust{ }
+
+ ###########################################################################
+ # #
+ # @BNode options of @DiagSetup #
+ # #
+ ###########################################################################
+
+ import @Geometry named boutline
+ named margin {}
+ named shadow {}
+ named sides {}
+ named angle {}
+ { box }
+ named bmargin { 0.6f }
+ import @Geometry named bshadow { 0.4f }
+ import @Geometry named bsides { 3 }
+ import @Geometry named bangle { "dup 180 exch div" }
+ named btranslate { }
+ named boutlinestyle
+ named solid { "/ldiagsolid" }
+ named dashed { "/ldiagdashed" }
+ named cdashed { "/ldiagcdashed" }
+ named dotdashed { "/ldiagdotdashed" }
+ named dotcdashed { "/ldiagdotcdashed" }
+ named dotdotdashed { "/ldiagdotdotdashed" }
+ named dotdotcdashed { "/ldiagdotdotcdashed" }
+ named dotdotdotdashed { "/ldiagdotdotdotdashed" }
+ named dotdotdotcdashed { "/ldiagdotdotdotcdashed" }
+ named dotted { "/ldiagdotted" }
+ named noline { "/ldiagnoline" }
+ { solid }
+ import @Geometry named boutlinedashlength { 0.2f }
+ import @Geometry named boutlinewidth
+ named thin { 0.04 ft }
+ named medium { 0.08 ft }
+ named thick { 0.12 ft }
+ { thin }
+ named boutlinecolour boutlinecolor { nochange }
+ named bpaint { none }
+ import @TextureImport named btexture{ solid }
+ named bfont { }
+ named bbreak { }
+ named bformat right @Body { @Body }
+
+ named bvalign { ctr }
+ named bvsize { }
+ named bvindent { ctr }
+ named bvstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { no }
+ named bvmargin { }
+ named btopmargin { }
+ named bfootmargin { }
+
+ named bhalign { ctr }
+ named bhsize { }
+ named bhindent { ctr }
+ named bhstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { no }
+ named bhmargin { }
+ named bleftmargin { }
+ named brightmargin { }
+
+ named bnodelabel { }
+ named bnodelabelmargin { 0.2f }
+ named bnodelabelfont { -2p }
+ named bnodelabelbreak { ragged nohyphen }
+ named bnodelabelformat right @Body { @Body }
+ import @Geometry named bnodelabelpos{ }
+ import @Geometry named bnodelabelangle { horizontal }
+ named bnodelabelprox { outside }
+ named bnodelabelctr { no }
+ import @Geometry named bnodelabeladjust { 0 0 }
+
+ named balabel { }
+ named balabelmargin { }
+ named balabelfont { }
+ named balabelbreak { }
+ named balabelformat right @Body { }
+ import @Geometry named balabelpos { NE }
+ named balabelprox { }
+ import @Geometry named balabelangle { }
+ named balabelctr { }
+ import @Geometry named balabeladjust{ }
+
+ named bblabel { }
+ named bblabelmargin { }
+ named bblabelfont { }
+ named bblabelbreak { }
+ named bblabelformat right @Body { }
+ import @Geometry named bblabelpos { NW }
+ named bblabelprox { }
+ import @Geometry named bblabelangle { }
+ named bblabelctr { }
+ import @Geometry named bblabeladjust{ }
+
+ named bclabel { }
+ named bclabelmargin { }
+ named bclabelfont { }
+ named bclabelbreak { }
+ named bclabelformat right @Body { }
+ import @Geometry named bclabelpos { SW }
+ named bclabelprox { }
+ import @Geometry named bclabelangle { }
+ named bclabelctr { }
+ import @Geometry named bclabeladjust{ }
+
+ named bdlabel { }
+ named bdlabelmargin { }
+ named bdlabelfont { }
+ named bdlabelbreak { }
+ named bdlabelformat right @Body { }
+ import @Geometry named bdlabelpos { SE }
+ named bdlabelprox { }
+ import @Geometry named bdlabelangle { }
+ named bdlabelctr { }
+ import @Geometry named bdlabeladjust{ }
+
+ ###########################################################################
+ # #
+ # @CNode options of @DiagSetup #
+ # #
+ ###########################################################################
+
+ import @Geometry named coutline
+ named margin {}
+ named shadow {}
+ named sides {}
+ named angle {}
+ { box }
+ named cmargin { 0.6f }
+ import @Geometry named cshadow { 0.4f }
+ import @Geometry named csides { 3 }
+ import @Geometry named cangle { "dup 180 exch div" }
+ named ctranslate { }
+ named coutlinestyle
+ named solid { "/ldiagsolid" }
+ named dashed { "/ldiagdashed" }
+ named cdashed { "/ldiagcdashed" }
+ named dotdashed { "/ldiagdotdashed" }
+ named dotcdashed { "/ldiagdotcdashed" }
+ named dotdotdashed { "/ldiagdotdotdashed" }
+ named dotdotcdashed { "/ldiagdotdotcdashed" }
+ named dotdotdotdashed { "/ldiagdotdotdotdashed" }
+ named dotdotdotcdashed { "/ldiagdotdotdotcdashed" }
+ named dotted { "/ldiagdotted" }
+ named noline { "/ldiagnoline" }
+ { solid }
+ import @Geometry named coutlinedashlength { 0.2f }
+ import @Geometry named coutlinewidth
+ named thin { 0.04 ft }
+ named medium { 0.08 ft }
+ named thick { 0.12 ft }
+ { thin }
+ named coutlinecolour coutlinecolor { nochange }
+ named cpaint { none }
+ import @TextureImport named ctexture{ solid }
+ named cfont { }
+ named cbreak { }
+ named cformat right @Body { @Body }
+
+ named cvalign { ctr }
+ named cvsize { }
+ named cvindent { ctr }
+ named cvstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { no }
+ named cvmargin { }
+ named ctopmargin { }
+ named cfootmargin { }
+
+ named chalign { ctr }
+ named chsize { }
+ named chindent { ctr }
+ named chstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { no }
+ named chmargin { }
+ named cleftmargin { }
+ named crightmargin { }
+
+ named cnodelabel { }
+ named cnodelabelmargin { 0.2f }
+ named cnodelabelfont { -2p }
+ named cnodelabelbreak { ragged nohyphen }
+ named cnodelabelformat right @Body { @Body }
+ import @Geometry named cnodelabelpos{ }
+ import @Geometry named cnodelabelangle { horizontal }
+ named cnodelabelprox { outside }
+ named cnodelabelctr { no }
+ import @Geometry named cnodelabeladjust { 0 0 }
+
+ named calabel { }
+ named calabelmargin { }
+ named calabelfont { }
+ named calabelbreak { }
+ named calabelformat right @Body { }
+ import @Geometry named calabelpos { NE }
+ import @Geometry named calabelangle { }
+ named calabelprox { }
+ named calabelctr { }
+ import @Geometry named calabeladjust{ }
+
+ named cblabel { }
+ named cblabelmargin { }
+ named cblabelfont { }
+ named cblabelbreak { }
+ named cblabelformat right @Body { }
+ import @Geometry named cblabelpos { NW }
+ import @Geometry named cblabelangle { }
+ named cblabelprox { }
+ named cblabelctr { }
+ import @Geometry named cblabeladjust{ }
+
+ named cclabel { }
+ named cclabelmargin { }
+ named cclabelfont { }
+ named cclabelbreak { }
+ named cclabelformat right @Body { }
+ import @Geometry named cclabelpos { SW }
+ import @Geometry named cclabelangle { }
+ named cclabelprox { }
+ named cclabelctr { }
+ import @Geometry named cclabeladjust{ }
+
+ named cdlabel { }
+ named cdlabelmargin { }
+ named cdlabelfont { }
+ named cdlabelbreak { }
+ named cdlabelformat right @Body { }
+ import @Geometry named cdlabelpos { SE }
+ import @Geometry named cdlabelangle { }
+ named cdlabelprox { }
+ named cdlabelctr { }
+ import @Geometry named cdlabeladjust{ }
+
+ ###########################################################################
+ # #
+ # @DNode options of @DiagSetup #
+ # #
+ ###########################################################################
+
+ import @Geometry named doutline
+ named margin {}
+ named shadow {}
+ named sides {}
+ named angle {}
+ { box }
+ named dmargin { 0.6f }
+ import @Geometry named dshadow { 0.4f }
+ import @Geometry named dsides { 3 }
+ import @Geometry named dangle { "dup 180 exch div" }
+ named dtranslate { }
+ named doutlinestyle
+ named solid { "/ldiagsolid" }
+ named dashed { "/ldiagdashed" }
+ named cdashed { "/ldiagcdashed" }
+ named dotdashed { "/ldiagdotdashed" }
+ named dotcdashed { "/ldiagdotcdashed" }
+ named dotdotdashed { "/ldiagdotdotdashed" }
+ named dotdotcdashed { "/ldiagdotdotcdashed" }
+ named dotdotdotdashed { "/ldiagdotdotdotdashed" }
+ named dotdotdotcdashed { "/ldiagdotdotdotcdashed" }
+ named dotted { "/ldiagdotted" }
+ named noline { "/ldiagnoline" }
+ { solid }
+ import @Geometry named doutlinedashlength { 0.2f }
+ import @Geometry named doutlinewidth
+ named thin { 0.04 ft }
+ named medium { 0.08 ft }
+ named thick { 0.12 ft }
+ { thin }
+ named doutlinecolour doutlinecolor { nochange }
+ named dpaint { none }
+ import @TextureImport named dtexture{ solid }
+ named dfont { }
+ named dbreak { }
+ named dformat right @Body { @Body }
+
+ named dvalign { ctr }
+ named dvsize { }
+ named dvindent { ctr }
+ named dvstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { no }
+ named dvmargin { }
+ named dtopmargin { }
+ named dfootmargin { }
+
+ named dhalign { ctr }
+ named dhsize { }
+ named dhindent { ctr }
+ named dhstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { no }
+ named dhmargin { }
+ named dleftmargin { }
+ named drightmargin { }
+
+ named dnodelabel { }
+ named dnodelabelmargin { 0.2f }
+ named dnodelabelfont { -2p }
+ named dnodelabelbreak { ragged nohyphen }
+ named dnodelabelformat right @Body { @Body }
+ import @Geometry named dnodelabelpos{ }
+ import @Geometry named dnodelabelangle { horizontal }
+ named dnodelabelprox { outside }
+ named dnodelabelctr { no }
+ import @Geometry named dnodelabeladjust { 0 0 }
+
+ named dalabel { }
+ named dalabelmargin { }
+ named dalabelfont { }
+ named dalabelbreak { }
+ named dalabelformat right @Body { }
+ import @Geometry named dalabelpos { NE }
+ import @Geometry named dalabelangle { }
+ named dalabelprox { }
+ named dalabelctr { }
+ import @Geometry named dalabeladjust{ }
+
+ named dblabel { }
+ named dblabelmargin { }
+ named dblabelfont { }
+ named dblabelbreak { }
+ named dblabelformat right @Body { }
+ import @Geometry named dblabelpos { NW }
+ import @Geometry named dblabelangle { }
+ named dblabelprox { }
+ named dblabelctr { }
+ import @Geometry named dblabeladjust{ }
+
+ named dclabel { }
+ named dclabelmargin { }
+ named dclabelfont { }
+ named dclabelbreak { }
+ named dclabelformat right @Body { }
+ import @Geometry named dclabelpos { SW }
+ import @Geometry named dclabelangle { }
+ named dclabelprox { }
+ named dclabelctr { }
+ import @Geometry named dclabeladjust{ }
+
+ named ddlabel { }
+ named ddlabelmargin { }
+ named ddlabelfont { }
+ named ddlabelbreak { }
+ named ddlabelformat right @Body { }
+ import @Geometry named ddlabelpos { SE }
+ import @Geometry named ddlabelangle { }
+ named ddlabelprox { }
+ named ddlabelctr { }
+ import @Geometry named ddlabeladjust{ }
+
+ ###########################################################################
+ # #
+ # @ENode options of @DiagSetup #
+ # #
+ ###########################################################################
+
+ import @Geometry named eoutline
+ named margin {}
+ named shadow {}
+ named sides {}
+ named angle {}
+ { box }
+ named emargin { 0.6f }
+ import @Geometry named eshadow { 0.4f }
+ import @Geometry named esides { 3 }
+ import @Geometry named eangle { "dup 180 exch div" }
+ named etranslate { }
+ named eoutlinestyle
+ named solid { "/ldiagsolid" }
+ named dashed { "/ldiagdashed" }
+ named cdashed { "/ldiagcdashed" }
+ named dotdashed { "/ldiagdotdashed" }
+ named dotcdashed { "/ldiagdotcdashed" }
+ named dotdotdashed { "/ldiagdotdotdashed" }
+ named dotdotcdashed { "/ldiagdotdotcdashed" }
+ named dotdotdotdashed { "/ldiagdotdotdotdashed" }
+ named dotdotdotcdashed { "/ldiagdotdotdotcdashed" }
+ named dotted { "/ldiagdotted" }
+ named noline { "/ldiagnoline" }
+ { solid }
+ import @Geometry named eoutlinedashlength { 0.2f }
+ import @Geometry named eoutlinewidth
+ named thin { 0.04 ft }
+ named medium { 0.08 ft }
+ named thick { 0.12 ft }
+ { thin }
+ named eoutlinecolour eoutlinecolor { nochange }
+ named epaint { none }
+ import @TextureImport named etexture{ solid }
+ named efont { }
+ named ebreak { }
+ named eformat right @Body { @Body }
+
+ named evalign { ctr }
+ named evsize { }
+ named evindent { ctr }
+ named evstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { no }
+ named evmargin { }
+ named etopmargin { }
+ named efootmargin { }
+
+ named ehalign { ctr }
+ named ehsize { }
+ named ehindent { ctr }
+ named ehstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { no }
+ named ehmargin { }
+ named eleftmargin { }
+ named erightmargin { }
+
+ named enodelabel { }
+ named enodelabelmargin { 0.2f }
+ named enodelabelfont { -2p }
+ named enodelabelbreak { ragged nohyphen }
+ named enodelabelformat right @Body { @Body }
+ import @Geometry named enodelabelpos{ }
+ import @Geometry named enodelabelangle { horizontal }
+ named enodelabelprox { outside }
+ named enodelabelctr { no }
+ import @Geometry named enodelabeladjust { 0 0 }
+
+ named ealabel { }
+ named ealabelmargin { }
+ named ealabelfont { }
+ named ealabelbreak { }
+ named ealabelformat right @Body { }
+ import @Geometry named ealabelpos { NE }
+ import @Geometry named ealabelangle { }
+ named ealabelprox { }
+ named ealabelctr { }
+ import @Geometry named ealabeladjust{ }
+
+ named eblabel { }
+ named eblabelmargin { }
+ named eblabelfont { }
+ named eblabelbreak { }
+ named eblabelformat right @Body { }
+ import @Geometry named eblabelpos { NW }
+ import @Geometry named eblabelangle { }
+ named eblabelprox { }
+ named eblabelctr { }
+ import @Geometry named eblabeladjust{ }
+
+ named eclabel { }
+ named eclabelmargin { }
+ named eclabelfont { }
+ named eclabelbreak { }
+ named eclabelformat right @Body { }
+ import @Geometry named eclabelpos { SW }
+ import @Geometry named eclabelangle { }
+ named eclabelprox { }
+ named eclabelctr { }
+ import @Geometry named eclabeladjust{ }
+
+ named edlabel { }
+ named edlabelmargin { }
+ named edlabelfont { }
+ named edlabelbreak { }
+ named edlabelformat right @Body { }
+ import @Geometry named edlabelpos { SE }
+ import @Geometry named edlabelangle { }
+ named edlabelprox { }
+ named edlabelctr { }
+ import @Geometry named edlabeladjust{ }
+
+ ###########################################################################
+ # #
+ # @Link options of @DiagSetup #
+ # #
+ ###########################################################################
+
+ import @Geometry named path
+ named from {}
+ named to {}
+ named bias {}
+ named fbias {}
+ named tbias {}
+ named hfrac {}
+ named hbias {}
+ named radius {}
+ named xindent {}
+ named zindent {}
+ named frompt {}
+ named topt {}
+ named arrow {}
+ named arrowlength {}
+ named backarrowlength {}
+ { line }
+ import @Geometry named from { 0,0 }
+ import @Geometry named to { 1,1 }
+ import @Geometry named bias { 2.0f }
+ import @Geometry named fbias { 2.0f }
+ import @Geometry named tbias { 2.0f }
+ import @Geometry named hfrac { 0.5 }
+ import @Geometry named hbias { 0.0f }
+ import @Geometry named radius { 1.0f }
+ import @Geometry named xindent { 0.8f }
+ import @Geometry named zindent { 0.8f }
+ import @Geometry named frompt { 0 0 }
+ import @Geometry named topt { 0 0 }
+ named pathstyle
+ named solid { "/ldiagsolid" }
+ named dashed { "/ldiagdashed" }
+ named cdashed { "/ldiagcdashed" }
+ named dotdashed { "/ldiagdotdashed" }
+ named dotcdashed { "/ldiagdotcdashed" }
+ named dotdotdashed { "/ldiagdotdotdashed" }
+ named dotdotcdashed { "/ldiagdotdotcdashed" }
+ named dotdotdotdashed { "/ldiagdotdotdotdashed" }
+ named dotdotdotcdashed { "/ldiagdotdotdotcdashed" }
+ named dotted { "/ldiagdotted" }
+ named noline { "/ldiagnoline" }
+ { solid }
+ import @Geometry named pathdashlength { 0.2f }
+ import @Geometry named pathwidth
+ named thin { 0.04 ft }
+ named medium { 0.08 ft }
+ named thick { 0.12 ft }
+ { thin }
+ named pathcolour pathcolor { nochange }
+ import @Geometry named pathgap
+ named thin { 0.08 ft }
+ named medium { 0.16 ft }
+ named thick { 0.24 ft }
+ { thin }
+ named arrow { no }
+ named arrowstyle { solid }
+ named arrowwidth { 0.3f }
+ named arrowlength { 0.5f }
+ named backarrowstyle { solid }
+ named backarrowwidth { 0.3f }
+ named backarrowlength { 0.5f }
+
+ named linklabel { }
+ named linklabelmargin { 0.2f }
+ named linklabelfont { -2p }
+ named linklabelbreak { ragged nohyphen }
+ named linklabelformat right @Body { @Body }
+ import @Geometry named linklabelpos { }
+ import @Geometry named linklabelangle { horizontal }
+ named linklabelprox { above }
+ named linklabelctr { no }
+ import @Geometry named linklabeladjust { 0 0 }
+
+ named xlabel { }
+ named xlabelmargin { }
+ named xlabelfont { }
+ named xlabelbreak { }
+ named xlabelformat right @Body { }
+ import @Geometry named xlabelpos { LFROM }
+ import @Geometry named xlabelangle { }
+ named xlabelprox { }
+ named xlabelctr { }
+ import @Geometry named xlabeladjust { }
+
+ named ylabel { }
+ named ylabelmargin { }
+ named ylabelfont { }
+ named ylabelbreak { }
+ named ylabelformat right @Body { }
+ import @Geometry named ylabelpos { LMID }
+ import @Geometry named ylabelangle { }
+ named ylabelprox { }
+ named ylabelctr { yes }
+ import @Geometry named ylabeladjust { }
+
+ named zlabel { }
+ named zlabelmargin { }
+ named zlabelfont { }
+ named zlabelbreak { }
+ named zlabelformat right @Body { }
+ import @Geometry named zlabelpos { LTO }
+ import @Geometry named zlabelangle { }
+ named zlabelprox { }
+ named zlabelctr { }
+ import @Geometry named zlabeladjust { }
+
+ named fromlabel { }
+ named fromlabelmargin { 0f }
+ named fromlabelfont { }
+ named fromlabelbreak { ragged nohyphen }
+ named fromlabelformat right @Body { @Body }
+ import @Geometry named fromlabelpos { FROM }
+ import @Geometry named fromlabelangle { antiparallel }
+ named fromlabelprox { W }
+ named fromlabelctr { no }
+ import @Geometry named fromlabeladjust { 0 0 }
+
+ named tolabel { }
+ named tolabelmargin { 0f }
+ named tolabelfont { }
+ named tolabelbreak { ragged nohyphen }
+ named tolabelformat right @Body { @Body }
+ import @Geometry named tolabelpos { TO }
+ import @Geometry named tolabelangle { parallel }
+ named tolabelprox { W }
+ named tolabelctr { no }
+ import @Geometry named tolabeladjust { 0 0 }
+
+ ###########################################################################
+ # #
+ # Tree and syntax diagram options of @DiagSetup #
+ # #
+ ###########################################################################
+
+ named treehsep { 0.5f }
+ named treevsep { 0.5f }
+ named treehindent
+ named left { 0.0rt }
+ named ctr { 0.5rt }
+ named right { 1.0rt }
+ { ctr }
+ named treevindent
+ named top { 0.0rt }
+ named ctr { 0.5rt }
+ named foot { 1.0rt }
+ { ctr }
+
+ named syntaxgap { 0.35f }
+ named syntaxbias { 1.0f }
+ named syntaxradius { 0.3f }
+{
+
+
+ ###########################################################################
+ # #
+ # @Diag symbol #
+ # #
+ ###########################################################################
+
+ export "::" @ShowPoints @ShowTags @ShowDirections @CatchTags @Transform
+
+ @Node @ANode @BNode @CNode @DNode @ENode
+ @Box @CurveBox @ShadowBox @Square @Diamond @Polygon
+ @Isosceles @Ellipse @Circle
+ @ArrowHead @SolidArrowHead @SolidWithBarArrowHead @OpenArrowHead
+ @HalfOpenArrowHead @SolidCurvedArrowHead @OpenCurvedArrowHead
+ @HalfOpenCurvedArrowHead @CircleArrowHead @BoxArrowHead
+ @ManyArrowHead
+
+ @Link
+ @Line @DoubleLine @Arrow @DoubleArrow @Curve @CurveArrow
+ @ACurve @ACurveArrow @CCurve @CCurveArrow
+ @Bezier @BezierArrow
+ @HVLine @HVArrow @VHLine @VHArrow
+ @HVCurve @HVCurveArrow @VHCurve @VHCurveArrow
+ @LVRLine @LVRArrow @RVLLine @RVLArrow
+ @DHULine @DHUArrow @UHDLine @UHDArrow
+ @LVRCurve @LVRCurveArrow @RVLCurve @RVLCurveArrow
+ @DHUCurve @DHUCurveArrow @UHDCurve @UHDCurveArrow
+ @HVHLine @HVHArrow @VHVLine @VHVArrow
+ @HVHCurve @HVHCurveArrow @VHVCurve @VHVCurveArrow
+ @DWrapLine @DWrapArrow @UWrapLine @UWrapArrow
+ @DWrapCurve @DWrapCurveArrow @UWrapCurve @UWrapCurveArrow
+
+ @Tree @HTree
+
+ @StartRight @StartUp @StartLeft @StartDown
+ @StartRightRight @StartRightRightRight @StartRightDown
+ @Skip @XCell @ACell @BCell @CCell @DCell @ECell
+ @Sequence @OneOrBoth @Select @Optional @OptionalDiverted @Diverted
+ @Loop @LoopOpposite @Repeat @RepeatOpposite @RepeatDiverted
+
+ def @Diag
+ named save { save }
+ named maxlabels { maxlabels }
+ named title { title }
+ named titleformat
+ left @Title
+ right @Body
+ { @Title titleformat @Body }
+
+ #######################################################################
+ # #
+ # @Node options of @Diag #
+ # #
+ #######################################################################
+
+ import @Geometry named outline
+ named margin {}
+ named shadow {}
+ named sides {}
+ named angle {}
+ { outline
+ margin { margin }
+ shadow { shadow }
+ sides { sides }
+ angle { angle }
+ }
+ named margin { margin }
+ import @Geometry named shadow { shadow }
+ import @Geometry named sides { sides }
+ import @Geometry named angle { angle }
+ named translate { translate }
+ named nodetag { }
+ named outlinestyle
+ named solid { "/ldiagsolid" }
+ named dashed { "/ldiagdashed" }
+ named cdashed { "/ldiagcdashed" }
+ named dotdashed { "/ldiagdotdashed" }
+ named dotcdashed { "/ldiagdotcdashed" }
+ named dotdotdashed { "/ldiagdotdotdashed" }
+ named dotdotcdashed { "/ldiagdotdotcdashed" }
+ named dotdotdotdashed { "/ldiagdotdotdotdashed" }
+ named dotdotdotcdashed { "/ldiagdotdotdotcdashed" }
+ named dotted { "/ldiagdotted" }
+ named noline { "/ldiagnoline" }
+ { outlinestyle }
+ import @Geometry named outlinedashlength{ outlinedashlength }
+ import @Geometry named outlinewidth
+ named thin { 0.04 ft }
+ named medium { 0.08 ft }
+ named thick { 0.12 ft }
+ { outlinewidth }
+ named outlinecolour outlinecolor { outlinecolour }
+ named paint { paint }
+ import @TextureImport named texture { texture }
+ named font { font }
+ named break { break }
+ named format right @Body { format @Body }
+ named valign { valign }
+ named vsize { vsize }
+ named vindent { vindent }
+ named vstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { vstrut }
+ named vmargin { vmargin }
+ named topmargin { topmargin }
+ named footmargin { footmargin }
+ named halign { halign }
+ named hsize { hsize }
+ named hindent { hindent }
+ named hstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { hstrut }
+ named hmargin { hmargin }
+ named leftmargin { leftmargin }
+ named rightmargin { rightmargin }
+
+ #######################################################################
+ # #
+ # @ANode options of @Diag #
+ # #
+ #######################################################################
+
+ import @Geometry named aoutline
+ named margin {}
+ named shadow {}
+ named sides {}
+ named angle {}
+ { aoutline
+ margin { margin }
+ shadow { shadow }
+ sides { sides }
+ angle { angle }
+ }
+ named amargin { amargin }
+ import @Geometry named ashadow { ashadow }
+ import @Geometry named asides { asides }
+ import @Geometry named aangle { aangle }
+ named atranslate { atranslate }
+ named anodetag { }
+ named aoutlinestyle
+ named solid { "/ldiagsolid" }
+ named dashed { "/ldiagdashed" }
+ named cdashed { "/ldiagcdashed" }
+ named dotdashed { "/ldiagdotdashed" }
+ named dotcdashed { "/ldiagdotcdashed" }
+ named dotdotdashed { "/ldiagdotdotdashed" }
+ named dotdotcdashed { "/ldiagdotdotcdashed" }
+ named dotdotdotdashed { "/ldiagdotdotdotdashed" }
+ named dotdotdotcdashed { "/ldiagdotdotdotcdashed" }
+ named dotted { "/ldiagdotted" }
+ named noline { "/ldiagnoline" }
+ { aoutlinestyle }
+ import @Geometry named aoutlinedashlength{ aoutlinedashlength }
+ import @Geometry named aoutlinewidth
+ named thin { 0.04 ft }
+ named medium { 0.08 ft }
+ named thick { 0.12 ft }
+ { aoutlinewidth }
+ named aoutlinecolour aoutlinecolor { aoutlinecolour }
+ named apaint { apaint }
+ import @TextureImport named atexture { atexture }
+ named afont { afont }
+ named abreak { abreak }
+ named aformat right @Body { aformat @Body }
+ named avalign { avalign }
+ named avsize { avsize }
+ named avindent { avindent }
+ named avstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { avstrut }
+ named avmargin { avmargin }
+ named atopmargin { atopmargin }
+ named afootmargin { afootmargin }
+ named ahalign { ahalign }
+ named ahsize { ahsize }
+ named ahindent { ahindent }
+ named ahstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { ahstrut }
+ named ahmargin { ahmargin }
+ named aleftmargin { aleftmargin }
+ named arightmargin { arightmargin }
+
+ #######################################################################
+ # #
+ # @BNode options of @Diag #
+ # #
+ #######################################################################
+
+ import @Geometry named boutline
+ named margin {}
+ named shadow {}
+ named sides {}
+ named angle {}
+ { boutline
+ margin { margin }
+ shadow { shadow }
+ sides { sides }
+ angle { angle }
+ }
+ named bmargin { bmargin }
+ import @Geometry named bshadow { bshadow }
+ import @Geometry named bsides { bsides }
+ import @Geometry named bangle { bangle }
+ named btranslate { btranslate }
+ named bnodetag { }
+ named boutlinestyle
+ named solid { "/ldiagsolid" }
+ named dashed { "/ldiagdashed" }
+ named cdashed { "/ldiagcdashed" }
+ named dotdashed { "/ldiagdotdashed" }
+ named dotcdashed { "/ldiagdotcdashed" }
+ named dotdotdashed { "/ldiagdotdotdashed" }
+ named dotdotcdashed { "/ldiagdotdotcdashed" }
+ named dotdotdotdashed { "/ldiagdotdotdotdashed" }
+ named dotdotdotcdashed { "/ldiagdotdotdotcdashed" }
+ named dotted { "/ldiagdotted" }
+ named noline { "/ldiagnoline" }
+ { boutlinestyle }
+ import @Geometry named boutlinedashlength{ boutlinedashlength }
+ import @Geometry named boutlinewidth
+ named thin { 0.04 ft }
+ named medium { 0.08 ft }
+ named thick { 0.12 ft }
+ { boutlinewidth }
+ named boutlinecolour boutlinecolor { boutlinecolour }
+ named bpaint { bpaint }
+ import @TextureImport named btexture { btexture }
+ named bfont { bfont }
+ named bbreak { bbreak }
+ named bformat right @Body { bformat @Body }
+ named bvalign { bvalign }
+ named bvsize { bvsize }
+ named bvindent { bvindent }
+ named bvstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { bvstrut }
+ named bvmargin { bvmargin }
+ named btopmargin { btopmargin }
+ named bfootmargin { bfootmargin }
+ named bhalign { bhalign }
+ named bhsize { bhsize }
+ named bhindent { bhindent }
+ named bhstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { bhstrut }
+ named bhmargin { bhmargin }
+ named bleftmargin { bleftmargin }
+ named brightmargin { brightmargin }
+
+ #######################################################################
+ # #
+ # @CNode options of @Diag #
+ # #
+ #######################################################################
+
+ import @Geometry named coutline
+ named margin {}
+ named shadow {}
+ named sides {}
+ named angle {}
+ { coutline
+ margin { margin }
+ shadow { shadow }
+ sides { sides }
+ angle { angle }
+ }
+ named cmargin { cmargin }
+ import @Geometry named cshadow { cshadow }
+ import @Geometry named csides { csides }
+ import @Geometry named cangle { cangle }
+ named ctranslate { ctranslate }
+ named cnodetag { }
+ named coutlinestyle
+ named solid { "/ldiagsolid" }
+ named dashed { "/ldiagdashed" }
+ named cdashed { "/ldiagcdashed" }
+ named dotdashed { "/ldiagdotdashed" }
+ named dotcdashed { "/ldiagdotcdashed" }
+ named dotdotdashed { "/ldiagdotdotdashed" }
+ named dotdotcdashed { "/ldiagdotdotcdashed" }
+ named dotdotdotdashed { "/ldiagdotdotdotdashed" }
+ named dotdotdotcdashed { "/ldiagdotdotdotcdashed" }
+ named dotted { "/ldiagdotted" }
+ named noline { "/ldiagnoline" }
+ { coutlinestyle }
+ import @Geometry named coutlinedashlength{ coutlinedashlength }
+ import @Geometry named coutlinewidth
+ named thin { 0.04 ft }
+ named medium { 0.08 ft }
+ named thick { 0.12 ft }
+ { coutlinewidth }
+ named coutlinecolour coutlinecolor { coutlinecolour }
+ named cpaint { cpaint }
+ import @TextureImport named ctexture { ctexture }
+ named cfont { cfont }
+ named cbreak { cbreak }
+ named cformat right @Body { cformat @Body }
+ named cvalign { cvalign }
+ named cvsize { cvsize }
+ named cvindent { cvindent }
+ named cvstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { cvstrut }
+ named cvmargin { cvmargin }
+ named ctopmargin { ctopmargin }
+ named cfootmargin { cfootmargin }
+ named chalign { chalign }
+ named chsize { chsize }
+ named chindent { chindent }
+ named chstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { chstrut }
+ named chmargin { chmargin }
+ named cleftmargin { cleftmargin }
+ named crightmargin { crightmargin }
+
+ #######################################################################
+ # #
+ # @DNode options of @Diag #
+ # #
+ #######################################################################
+
+ import @Geometry named doutline
+ named margin {}
+ named shadow {}
+ named sides {}
+ named angle {}
+ { doutline
+ margin { margin }
+ shadow { shadow }
+ sides { sides }
+ angle { angle }
+ }
+ named dmargin { dmargin }
+ import @Geometry named dshadow { dshadow }
+ import @Geometry named dsides { dsides }
+ import @Geometry named dangle { dangle }
+ named dtranslate { dtranslate }
+ named dnodetag { }
+ named doutlinestyle
+ named solid { "/ldiagsolid" }
+ named dashed { "/ldiagdashed" }
+ named cdashed { "/ldiagcdashed" }
+ named dotdashed { "/ldiagdotdashed" }
+ named dotcdashed { "/ldiagdotcdashed" }
+ named dotdotdashed { "/ldiagdotdotdashed" }
+ named dotdotcdashed { "/ldiagdotdotcdashed" }
+ named dotdotdotdashed { "/ldiagdotdotdotdashed" }
+ named dotdotdotcdashed { "/ldiagdotdotdotcdashed" }
+ named dotted { "/ldiagdotted" }
+ named noline { "/ldiagnoline" }
+ { doutlinestyle }
+ import @Geometry named doutlinedashlength{ doutlinedashlength }
+ import @Geometry named doutlinewidth
+ named thin { 0.04 ft }
+ named medium { 0.08 ft }
+ named thick { 0.12 ft }
+ { doutlinewidth }
+ named doutlinecolour doutlinecolor { doutlinecolour }
+ named dpaint { dpaint }
+ import @TextureImport named dtexture { dtexture }
+ named dfont { dfont }
+ named dbreak { dbreak }
+ named dformat right @Body { dformat @Body }
+ named dvalign { dvalign }
+ named dvsize { dvsize }
+ named dvindent { dvindent }
+ named dvstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { dvstrut }
+ named dvmargin { dvmargin }
+ named dtopmargin { dtopmargin }
+ named dfootmargin { dfootmargin }
+ named dhalign { dhalign }
+ named dhsize { dhsize }
+ named dhindent { dhindent }
+ named dhstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { dhstrut }
+ named dhmargin { dhmargin }
+ named dleftmargin { dleftmargin }
+ named drightmargin { drightmargin }
+
+ #######################################################################
+ # #
+ # @ENode options of @Diag #
+ # #
+ #######################################################################
+
+ import @Geometry named eoutline
+ named margin {}
+ named shadow {}
+ named sides {}
+ named angle {}
+ { eoutline
+ margin { margin }
+ shadow { shadow }
+ sides { sides }
+ angle { angle }
+ }
+ named emargin { emargin }
+ import @Geometry named eshadow { eshadow }
+ import @Geometry named esides { esides }
+ import @Geometry named eangle { eangle }
+ named etranslate { etranslate }
+ named enodetag { }
+ named eoutlinestyle
+ named solid { "/ldiagsolid" }
+ named dashed { "/ldiagdashed" }
+ named cdashed { "/ldiagcdashed" }
+ named dotdashed { "/ldiagdotdashed" }
+ named dotcdashed { "/ldiagdotcdashed" }
+ named dotdotdashed { "/ldiagdotdotdashed" }
+ named dotdotcdashed { "/ldiagdotdotcdashed" }
+ named dotdotdotdashed { "/ldiagdotdotdotdashed" }
+ named dotdotdotcdashed { "/ldiagdotdotdotcdashed" }
+ named dotted { "/ldiagdotted" }
+ named noline { "/ldiagnoline" }
+ { eoutlinestyle }
+ import @Geometry named eoutlinedashlength{ eoutlinedashlength }
+ import @Geometry named eoutlinewidth
+ named thin { 0.04 ft }
+ named medium { 0.08 ft }
+ named thick { 0.12 ft }
+ { eoutlinewidth }
+ named eoutlinecolour eoutlinecolor { eoutlinecolour }
+ named epaint { epaint }
+ import @TextureImport named etexture { etexture }
+ named efont { efont }
+ named ebreak { ebreak }
+ named eformat right @Body { eformat @Body }
+ named evalign { evalign }
+ named evsize { evsize }
+ named evindent { evindent }
+ named evstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { evstrut }
+ named evmargin { evmargin }
+ named etopmargin { etopmargin }
+ named efootmargin { efootmargin }
+ named ehalign { ehalign }
+ named ehsize { ehsize }
+ named ehindent { ehindent }
+ named ehstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { ehstrut }
+ named ehmargin { ehmargin }
+ named eleftmargin { eleftmargin }
+ named erightmargin { erightmargin }
+
+ #######################################################################
+ # #
+ # @Link options of @Diag #
+ # #
+ #######################################################################
+
+ import @Geometry named path
+ named from {}
+ named to {}
+ named bias {}
+ named fbias {}
+ named tbias {}
+ named hfrac {}
+ named hbias {}
+ named radius {}
+ named xindent {}
+ named zindent {}
+ named frompt {}
+ named topt {}
+ named arrow {}
+ named arrowlength {}
+ named backarrowlength {}
+ { path
+ from { from }
+ to { to }
+ bias { bias }
+ fbias { fbias }
+ tbias { tbias }
+ hfrac { hfrac }
+ hbias { hbias }
+ radius { radius }
+ xindent { xindent }
+ zindent { zindent }
+ frompt { frompt }
+ topt { topt }
+ arrow { arrow }
+ arrowlength { arrowlength }
+ backarrowlength{ backarrowlength }
+ }
+ import @Geometry named from { from }
+ import @Geometry named to { to }
+ import @Geometry named bias { bias }
+ import @Geometry named fbias { fbias }
+ import @Geometry named tbias { tbias }
+ import @Geometry named hfrac { hfrac }
+ import @Geometry named hbias { hbias }
+ import @Geometry named radius { radius }
+ import @Geometry named xindent { xindent }
+ import @Geometry named zindent { zindent }
+ import @Geometry named frompt { frompt }
+ import @Geometry named topt { topt }
+ named pathstyle
+ named solid { "/ldiagsolid" }
+ named dashed { "/ldiagdashed" }
+ named cdashed { "/ldiagcdashed" }
+ named dotdashed { "/ldiagdotdashed" }
+ named dotcdashed { "/ldiagdotcdashed" }
+ named dotdotdashed { "/ldiagdotdotdashed" }
+ named dotdotcdashed { "/ldiagdotdotcdashed" }
+ named dotdotdotdashed { "/ldiagdotdotdotdashed" }
+ named dotdotdotcdashed { "/ldiagdotdotdotcdashed" }
+ named dotted { "/ldiagdotted" }
+ named noline { "/ldiagnoline" }
+ { pathstyle }
+ import @Geometry named pathdashlength { pathdashlength }
+ import @Geometry named pathwidth
+ named thin { 0.04 ft }
+ named medium { 0.08 ft }
+ named thick { 0.12 ft }
+ { pathwidth }
+ named pathcolour pathcolor { pathcolour }
+ import @Geometry named pathgap
+ named thin { 0.08 ft }
+ named medium { 0.16 ft }
+ named thick { 0.24 ft }
+ { pathgap }
+ named arrow { arrow }
+ named arrowstyle { arrowstyle }
+ named arrowwidth { arrowwidth }
+ named arrowlength { arrowlength }
+ named backarrowstyle { backarrowstyle }
+ named backarrowwidth { backarrowwidth }
+ named backarrowlength { backarrowlength }
+
+ named nodelabel { nodelabel }
+ named nodelabelmargin { nodelabelmargin }
+ named nodelabelfont { nodelabelfont }
+ named nodelabelbreak { nodelabelbreak }
+ named nodelabelformat right @Body { nodelabelformat @Body }
+ import @Geometry named nodelabelpos { nodelabelpos }
+ named nodelabelprox { nodelabelprox }
+ import @Geometry named nodelabelangle { nodelabelangle }
+ named nodelabelctr { nodelabelctr }
+ import @Geometry named nodelabeladjust { nodelabeladjust }
+
+ named alabel { alabel }
+ named alabelmargin { alabelmargin }
+ named alabelfont { alabelfont }
+ named alabelbreak { alabelbreak }
+ named alabelformat right @Body { alabelformat @Body }
+ import @Geometry named alabelpos { alabelpos }
+ named alabelprox { alabelprox }
+ import @Geometry named alabelangle { alabelangle }
+ named alabelctr { alabelctr }
+ import @Geometry named alabeladjust { alabeladjust }
+
+ named blabel { blabel }
+ named blabelmargin { blabelmargin }
+ named blabelfont { blabelfont }
+ named blabelbreak { blabelbreak }
+ named blabelformat right @Body { blabelformat @Body }
+ import @Geometry named blabelpos { blabelpos }
+ named blabelprox { blabelprox }
+ import @Geometry named blabelangle { blabelangle }
+ named blabelctr { blabelctr }
+ import @Geometry named blabeladjust { blabeladjust }
+
+ named clabel { clabel }
+ named clabelmargin { clabelmargin }
+ named clabelfont { clabelfont }
+ named clabelbreak { clabelbreak }
+ named clabelformat right @Body { clabelformat @Body }
+ import @Geometry named clabelpos { clabelpos }
+ named clabelprox { clabelprox }
+ import @Geometry named clabelangle { clabelangle }
+ named clabelctr { clabelctr }
+ import @Geometry named clabeladjust { clabeladjust }
+
+ named dlabel { dlabel }
+ named dlabelmargin { dlabelmargin }
+ named dlabelfont { dlabelfont }
+ named dlabelbreak { dlabelbreak }
+ named dlabelformat right @Body { dlabelformat @Body }
+ import @Geometry named dlabelpos { dlabelpos }
+ named dlabelprox { dlabelprox }
+ import @Geometry named dlabelangle { dlabelangle }
+ named dlabelctr { dlabelctr }
+ import @Geometry named dlabeladjust { dlabeladjust }
+
+ named fromlabel { fromlabel }
+ named fromlabelmargin { fromlabelmargin }
+ named fromlabelfont { fromlabelfont }
+ named fromlabelbreak { fromlabelbreak }
+ named fromlabelformat right @Body { fromlabelformat @Body }
+ import @Geometry named fromlabelpos { fromlabelpos }
+ named fromlabelprox { fromlabelprox }
+ import @Geometry named fromlabelangle { fromlabelangle }
+ named fromlabelctr { fromlabelctr }
+ import @Geometry named fromlabeladjust { fromlabeladjust }
+
+ named linklabel { linklabel }
+ named linklabelmargin { linklabelmargin }
+ named linklabelfont { linklabelfont }
+ named linklabelbreak { linklabelbreak }
+ named linklabelformat right @Body { linklabelformat @Body }
+ import @Geometry named linklabelpos { linklabelpos }
+ named linklabelprox { linklabelprox }
+ import @Geometry named linklabelangle { linklabelangle }
+ named linklabelctr { linklabelctr }
+ import @Geometry named linklabeladjust { linklabeladjust }
+
+ named xlabel { xlabel }
+ named xlabelmargin { xlabelmargin }
+ named xlabelfont { xlabelfont }
+ named xlabelbreak { xlabelbreak }
+ named xlabelformat right @Body { xlabelformat @Body }
+ import @Geometry named xlabelpos { xlabelpos }
+ named xlabelprox { xlabelprox }
+ import @Geometry named xlabelangle { xlabelangle }
+ named xlabelctr { xlabelctr }
+ import @Geometry named xlabeladjust { xlabeladjust }
+
+ named ylabel { ylabel }
+ named ylabelmargin { ylabelmargin }
+ named ylabelfont { ylabelfont }
+ named ylabelbreak { ylabelbreak }
+ named ylabelformat right @Body { ylabelformat @Body }
+ import @Geometry named ylabelpos { ylabelpos }
+ named ylabelprox { ylabelprox }
+ import @Geometry named ylabelangle { ylabelangle }
+ named ylabelctr { ylabelctr }
+ import @Geometry named ylabeladjust { ylabeladjust }
+
+ named zlabel { zlabel }
+ named zlabelmargin { zlabelmargin }
+ named zlabelfont { zlabelfont }
+ named zlabelbreak { zlabelbreak }
+ named zlabelformat right @Body { zlabelformat @Body }
+ import @Geometry named zlabelpos { zlabelpos }
+ named zlabelprox { zlabelprox }
+ import @Geometry named zlabelangle { zlabelangle }
+ named zlabelctr { zlabelctr }
+ import @Geometry named zlabeladjust { zlabeladjust }
+
+ named tolabel { tolabel }
+ named tolabelmargin { tolabelmargin }
+ named tolabelfont { tolabelfont }
+ named tolabelbreak { tolabelbreak }
+ named tolabelformat right @Body { tolabelformat @Body }
+ import @Geometry named tolabelpos { tolabelpos }
+ named tolabelprox { tolabelprox }
+ import @Geometry named tolabelangle { tolabelangle }
+ named tolabelctr { tolabelctr }
+ import @Geometry named tolabeladjust { tolabeladjust }
+
+ #######################################################################
+ # #
+ # Tree and syntax diagram options of @Diag #
+ # #
+ #######################################################################
+
+ named treehsep { treehsep }
+ named treevsep { treevsep }
+ named treehindent
+ named left { 0.0rt }
+ named ctr { 0.5rt }
+ named right { 1.0rt }
+ { treehindent }
+ named treevindent
+ named top { 0.0rt }
+ named ctr { 0.5rt }
+ named foot { 1.0rt }
+ { treevindent }
+ named syntaxgap { syntaxgap }
+ named syntaxbias { syntaxbias }
+ named syntaxradius { syntaxradius }
+ body @Body
+ @Begin
+
+
+ #######################################################################
+ # #
+ # Miscellaneous helper definitions #
+ # #
+ #######################################################################
+
+ def @PSAddPaint left col right tex
+ {
+ col @Case {
+ { "no" "none" "nopaint" } @Yield "{}"
+ else @Yield { "{" @ColourCommand col tex "fill }" }
+ }
+ }
+
+ # Like @Graphic, but affects the graphics state of right parameter
+ def @InnerGraphic
+ left ps
+ right x
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ { ps gsave // grestore } @Graphic x
+ }
+ PDF @Yield {
+ { ps q // Q } @Graphic x
+ }
+ }
+ }
+
+ def @BoxLabels right x
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ "[ ldiagbox ] pop" @Graphic x
+ }
+ PDF @Yield {}
+ }
+ }
+
+ def @IfNonEmpty
+ left x
+ right y
+ {
+ x @Case {
+ "" @Yield @Null
+ else @Yield y
+ }
+ }
+
+ def @Else
+ precedence 20
+ associativity right
+ left x
+ right y
+ {
+ x @Case {
+ "" @Yield y
+ else @Yield x
+ }
+ }
+
+ def @ShowTags
+ right x
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ {
+ "() ldiagpushtagdict"
+ // "ldiagshowtags ldiagpopuptagdict"
+ } @Graphic x
+ }
+ PDF @Yield {}
+ }
+ }
+
+ def @ShowPoints
+ right x
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ {
+ "() ldiagpushtagdict"
+ // "ldiagshowpoints ldiagpopuptagdict"
+ } @Graphic x
+ }
+ PDF @Yield {}
+ }
+ }
+
+ def @ShowDirections
+ right x
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ { "() ldiagpushtagdict"
+ // "ldiagshowangles ldiagpopuptagdict" } @Graphic x
+ }
+ PDF @Yield {}
+ }
+ }
+
+ def @ShowMarks right x
+ {
+ { "xmark -0.5 cm moveto xmark ysize 0.5 cm add lineto stroke" } @Graphic x
+ }
+
+
+ def "::"
+ precedence 33
+ associativity right
+ left name
+ named restrict {}
+ right x
+ {
+
+ def @PushCommand
+ {
+ "("name") ldiagpushtagdict"
+ }
+
+ def @PopCommand
+ {
+ restrict @Case {
+ "" @Yield "ldiagpopuptagdict"
+ else @Yield { "[" restrict "] ldiagpopsometagdict" }
+ }
+ # "ldiagpopuptagdict"
+ }
+
+ @BackEnd @Case {
+ PostScript @Yield { {@PushCommand // @PopCommand} @Graphic x }
+ PDF @Yield {}
+ }
+ }
+
+ def @CatchTags
+ precedence 33
+ associativity right
+ right x
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ {
+ "() ldiagpushtagdict"
+ // "ldiagpoptagdict"
+ }
+ @Graphic x
+ }
+ PDF @Yield {}
+ }
+ }
+
+ def @ZeroWidth right x
+ {
+ @HContract @VContract {
+ ^|0io @HContract @VContract x |0io
+ }
+ }
+
+ def @ZeroSize right x
+ {
+ @HContract @VContract {
+ ^/0io ^|0io @HContract @VContract x |0io /0io
+ }
+ }
+
+ def @FromArrowLength
+ left arrow
+ right arrowlength
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ arrow @Case {
+ { no yes forward } @Yield 0
+ { back both } @Yield {"("arrowlength") ldiagdecodelength"}
+ }
+ }
+ PDF @Yield {}
+ }
+ }
+
+ def @ToArrowLength
+ left arrow
+ right arrowlength
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ arrow @Case {
+ { no back } @Yield 0
+ { yes forward both } @Yield {"("arrowlength") ldiagdecodelength"}
+ }
+ }
+ PDF @Yield {}
+ }
+ }
+
+ def @AddMargins
+ named mtop {}
+ named mfoot {}
+ named mleft {}
+ named mright {}
+ right x
+ {
+
+ @HContract @VContract {
+ ^|mleft |mright
+ ^/mtop | x |
+ /mfoot | |
+ }
+ }
+
+ def @Transform
+ precedence 32
+ import @Geometry named translate
+# named to precedence 10 left x right y { x y "ldiagpsub" }
+ named to precedence 10 left x right y {
+ @BackEnd @Case {
+ PostScript @Yield { x y "ldiagpsub" }
+ PDF @Yield {""}
+ }
+ }
+ {}
+ import @Geometry named rotate { 0d }
+ named scale { 1 1 }
+ right x
+ {
+ @BackEnd @Case {
+
+ PostScript @Yield {
+ { rotate "rotate" scale "scale newpath clip" }
+ @InnerGraphic
+ {
+ @ZeroSize x
+ }
+ //
+ # { rotate "rotate" scale "scale" translate "translate" }
+ { translate "translate" rotate "rotate" scale "scale" }
+ @InnerGraphic
+ {
+ @ZeroSize x
+ }
+ }
+
+ PDF @Yield { # presume that "rotate", "scale" and "translate" are not matrices
+ { "__cos("rotate") __sin("rotate") __sub(0, __sin("rotate")) __cos("rotate") 0 0 cm"
+ "__pick(1, "scale") 0 0 __pick(2, "scale") 0 0 cm n W" }
+ @InnerGraphic
+ {
+ @ZeroSize x
+ }
+ //
+ # { rotate "rotate" scale "scale" translate "translate" }
+ { "1 0 0 1 "translate" cm"
+ "__cos("rotate") __sin("rotate") __sub(0, __sin("rotate")) __cos("rotate") 0 0 cm"
+ "__pick(1, "scale") 0 0 __pick(2, "scale") 0 0 cm" }
+ @InnerGraphic
+ {
+ @ZeroSize x
+ }
+ }
+
+ }
+ }
+
+
+ #######################################################################
+ # #
+ # @DoLabel definition for drawing one label #
+ # #
+ #######################################################################
+
+ def @DoLabel
+ named which {}
+ named labeltag { LABEL }
+ named label {}
+ named labelmargin {}
+ named labelfont {}
+ named labelbreak {}
+ named labelformat right @Body {}
+ named labelpos {}
+ named labelprox {}
+ named labelangle {}
+ named labelctr {}
+ named labeladjust {}
+ {
+
+ import @Geometry
+ def alignedangle
+ {
+ labelpos??"ANGLE" quadcase
+ 0 { labelpos??"ANGLE" }
+ 0-90 { labelpos??"ANGLE" }
+ 90 { labelpos??"ANGLE" }
+ 90-180 { labelpos??"ANGLE" + 180d }
+ 180 { labelpos??"ANGLE" + 180d }
+ 180-270 { labelpos??"ANGLE" + 180d }
+ 270 { labelpos??"ANGLE" + 180d }
+ 270-360 { labelpos??"ANGLE" }
+ }
+
+ import @Geometry
+ def perpalignedangle
+ {
+ labelpos??"ANGLE" quadcase
+ 0 { labelpos??"ANGLE" - 90d }
+ 0-90 { labelpos??"ANGLE" - 90d }
+ 90 { labelpos??"ANGLE" - 90d }
+ 90-180 { labelpos??"ANGLE" - 90d }
+ 180 { labelpos??"ANGLE" + 90d }
+ 180-270 { labelpos??"ANGLE" + 90d }
+ 270 { labelpos??"ANGLE" + 90d }
+ 270-360 { labelpos??"ANGLE" + 90d }
+
+ }
+
+ import @Geometry
+ def finalangle
+ {
+ labelangle @Case {
+
+ "horizontal" @Yield { 0d }
+ "aligned" @Yield { alignedangle }
+ "perpendicular" @Yield { perpalignedangle }
+ "parallel" @Yield { labelpos??"ANGLE" }
+ "antiparallel" @Yield { labelpos??"ANGLE" + 180d }
+ else @Yield labelangle
+ }
+ }
+
+ import @Geometry
+ def @AlignedAboveProximity
+ {
+ which @Case {
+ { x f } @Yield { labelpos??ANGLE quadcase
+ 0 { (SW) }
+ 0-90 { (SW) }
+ 90 { (SW) }
+ 90-180 { (SE) }
+ 180 { (SE) }
+ 180-270 { (SE) }
+ 270 { (SE) }
+ 270-360 { (SW) }
+ }
+ { z t } @Yield { labelpos??ANGLE quadcase
+ 0 { (SE) }
+ 0-90 { (SE) }
+ 90 { (SE) }
+ 90-180 { (SW) }
+ 180 { (SW) }
+ 180-270 { (SW) }
+ 270 { (SW) }
+ 270-360 { (SE) }
+ }
+ else @Yield (S)
+ }
+ }
+
+ import @Geometry
+ def @AlignedBelowProximity
+ {
+ which @Case {
+ { x f } @Yield { labelpos??ANGLE quadcase
+ 0 { (NW) }
+ 0-90 { (NW) }
+ 90 { (NW) }
+ 90-180 { (NE) }
+ 180 { (NE) }
+ 180-270 { (NE) }
+ 270 { (NE) }
+ 270-360 { (NW) }
+ }
+ { z t } @Yield { labelpos??ANGLE quadcase
+ 0 { (NE) }
+ 0-90 { (NE) }
+ 90 { (NE) }
+ 90-180 { (NW) }
+ 180 { (NW) }
+ 180-270 { (NW) }
+ 270 { (NW) }
+ 270-360 { (NE) }
+ }
+ else @Yield (N)
+ }
+ }
+
+ import @Geometry
+ def @AlignedLeftProximity
+ {
+ which @Case {
+ { x f } @Yield { labelpos??ANGLE quadcase
+ 0 { (SW) }
+ 0-90 { (SW) }
+ 90 { (SW) }
+ 90-180 { (NE) }
+ 180 { (SE) }
+ 180-270 { (SE) }
+ 270 { (SE) }
+ 270-360 { (NW) }
+ }
+ { z t } @Yield { labelpos??ANGLE quadcase
+ 0 { (SE) }
+ 0-90 { (SE) }
+ 90 { (SE) }
+ 90-180 { (NW) }
+ 180 { (SW) }
+ 180-270 { (SW) }
+ 270 { (SW) }
+ 270-360 { (NE) }
+ }
+ else @Yield { labelpos??ANGLE quadcase
+ 0 { (S) }
+ 0-90 { (S) }
+ 90 { (S) }
+ 90-180 { (N) }
+ 180 { (S) }
+ 180-270 { (S) }
+ 270 { (S) }
+ 270-360 { (N) }
+ }
+ }
+ }
+
+ import @Geometry
+ def @AlignedRightProximity
+ {
+ which @Case {
+ { x f } @Yield { labelpos??ANGLE quadcase
+ 0 { (SW) }
+ 0-90 { (NW) }
+ 90 { (NW) }
+ 90-180 { (SE) }
+ 180 { (SE) }
+ 180-270 { (NE) }
+ 270 { (NE) }
+ 270-360 { (SW) }
+ }
+ { z t } @Yield { labelpos??ANGLE quadcase
+ 0 { (SE) }
+ 0-90 { (NE) }
+ 90 { (NE) }
+ 90-180 { (SW) }
+ 180 { (SW) }
+ 180-270 { (NW) }
+ 270 { (NW) }
+ 270-360 { (SE) }
+ }
+ else @Yield { labelpos??ANGLE quadcase
+ 0 { (S) }
+ 0-90 { (N) }
+ 90 { (N) }
+ 90-180 { (S) }
+ 180 { (S) }
+ 180-270 { (N) }
+ 270 { (N) }
+ 270-360 { (S) }
+ }
+ }
+ }
+
+ import @Geometry
+ def @AlignedInsideProximity
+ {
+ which @Case {
+ { x f } @Yield { labelpos??ANGLE quadcase
+ 0 { (SW) }
+ 0-90 { (SW) }
+ 90 { (SW) }
+ 90-180 { (NE) }
+ 180 { (NE) }
+ 180-270 { (NE) }
+ 270 { (NE) }
+ 270-360 { (SW) }
+ }
+ { z t } @Yield { labelpos??ANGLE quadcase
+ 0 { (SE) }
+ 0-90 { (SE) }
+ 90 { (SE) }
+ 90-180 { (NW) }
+ 180 { (NW) }
+ 180-270 { (NW) }
+ 270 { (NW) }
+ 270-360 { (SE) }
+ }
+ else @Yield { labelpos??ANGLE quadcase
+ 0 { (S) }
+ 0-90 { (S) }
+ 90 { (S) }
+ 90-180 { (N) }
+ 180 { (N) }
+ 180-270 { (N) }
+ 270 { (N) }
+ 270-360 { (S) }
+ }
+ }
+ }
+
+ import @Geometry
+ def @AlignedOutsideProximity
+ {
+ which @Case {
+ { x f } @Yield { labelpos??ANGLE quadcase
+ 0 { (NW) }
+ 0-90 { (NW) }
+ 90 { (NW) }
+ 90-180 { (SE) }
+ 180 { (SE) }
+ 180-270 { (SE) }
+ 270 { (SE) }
+ 270-360 { (NW) }
+ }
+ { z t } @Yield { labelpos??ANGLE quadcase
+ 0 { (NE) }
+ 0-90 { (NE) }
+ 90 { (NE) }
+ 90-180 { (SW) }
+ 180 { (SW) }
+ 180-270 { (SW) }
+ 270 { (SW) }
+ 270-360 { (NE) }
+ }
+ else @Yield { labelpos??ANGLE quadcase
+ 0 { (N) }
+ 0-90 { (N) }
+ 90 { (N) }
+ 90-180 { (S) }
+ 180 { (S) }
+ 180-270 { (S) }
+ 270 { (S) }
+ 270-360 { (N) }
+ }
+ }
+ }
+
+
+ import @Geometry
+ def @PerpendicularAboveProximity
+ {
+ which @Case {
+ { x f } @Yield { labelpos??ANGLE quadcase
+ 0 { (SE) }
+ 0-90 { (SE) }
+ 90 { (SE) }
+ 90-180 { (SW) }
+ 180 { (NE) }
+ 180-270 { (NE) }
+ 270 { (NE) }
+ 270-360 { (NW) }
+ }
+ { z t } @Yield { labelpos??ANGLE quadcase
+ 0 { (NE) }
+ 0-90 { (NE) }
+ 90 { (NE) }
+ 90-180 { (NW) }
+ 180 { (SE) }
+ 180-270 { (SE) }
+ 270 { (SE) }
+ 270-360 { (SW) }
+ }
+ else @Yield { labelpos??ANGLE quadcase
+ 0 { (E) }
+ 0-90 { (E) }
+ 90 { (E) }
+ 90-180 { (W) }
+ 180 { (E) }
+ 180-270 { (E) }
+ 270 { (E) }
+ 270-360 { (W) }
+ }
+ }
+ }
+
+ import @Geometry
+ def @PerpendicularBelowProximity
+ {
+ which @Case {
+ { x f } @Yield { labelpos??ANGLE quadcase
+ 0 { (SW) }
+ 0-90 { (SW) }
+ 90 { (SW) }
+ 90-180 { (SE) }
+ 180 { (NW) }
+ 180-270 { (NW) }
+ 270 { (NW) }
+ 270-360 { (NE) }
+ }
+ { z t } @Yield { labelpos??ANGLE quadcase
+ 0 { (NW) }
+ 0-90 { (NW) }
+ 90 { (NW) }
+ 90-180 { (NE) }
+ 180 { (SW) }
+ 180-270 { (SW) }
+ 270 { (SW) }
+ 270-360 { (SE) }
+ }
+ else @Yield { labelpos??ANGLE quadcase
+ 0 { (W) }
+ 0-90 { (W) }
+ 90 { (W) }
+ 90-180 { (E) }
+ 180 { (W) }
+ 180-270 { (W) }
+ 270 { (W) }
+ 270-360 { (E) }
+ }
+ }
+ }
+
+ import @Geometry
+ def @PerpendicularLeftProximity
+ {
+ which @Case {
+ { x f } @Yield { labelpos??ANGLE quadcase
+ 0 { (SE) }
+ 0-90 { (SE) }
+ 90 { (SE) }
+ 90-180 { (SE) }
+ 180 { (NE) }
+ 180-270 { (NE) }
+ 270 { (NE) }
+ 270-360 { (NE) }
+ }
+ { z t } @Yield { labelpos??ANGLE quadcase
+ 0 { (NE) }
+ 0-90 { (NE) }
+ 90 { (NE) }
+ 90-180 { (NE) }
+ 180 { (SE) }
+ 180-270 { (SE) }
+ 270 { (SE) }
+ 270-360 { (SE) }
+ }
+ else @Yield (E)
+ }
+ }
+
+ import @Geometry
+ def @PerpendicularRightProximity
+ {
+ which @Case {
+ { x f } @Yield { labelpos??ANGLE quadcase
+ 0 { (SW) }
+ 0-90 { (SW) }
+ 90 { (SW) }
+ 90-180 { (SW) }
+ 180 { (NW) }
+ 180-270 { (NW) }
+ 270 { (NW) }
+ 270-360 { (NW) }
+ }
+ { z t } @Yield { labelpos??ANGLE quadcase
+ 0 { (NW) }
+ 0-90 { (NW) }
+ 90 { (NW) }
+ 90-180 { (NW) }
+ 180 { (SW) }
+ 180-270 { (SW) }
+ 270 { (SW) }
+ 270-360 { (SW) }
+ }
+ else @Yield (W)
+ }
+ }
+
+ import @Geometry
+ def @PerpendicularInsideProximity
+ {
+ which @Case {
+ { x f } @Yield { labelpos??ANGLE quadcase
+ 0 { (SE) }
+ 0-90 { (SE) }
+ 90 { (SE) }
+ 90-180 { (SE) }
+ 180 { (NW) }
+ 180-270 { (NW) }
+ 270 { (NW) }
+ 270-360 { (NW) }
+ }
+ { z t } @Yield { labelpos??ANGLE quadcase
+ 0 { (NE) }
+ 0-90 { (NE) }
+ 90 { (NE) }
+ 90-180 { (NE) }
+ 180 { (SW) }
+ 180-270 { (SW) }
+ 270 { (SW) }
+ 270-360 { (SW) }
+ }
+ else @Yield { labelpos??ANGLE quadcase
+ 0 { (E) }
+ 0-90 { (E) }
+ 90 { (E) }
+ 90-180 { (E) }
+ 180 { (W) }
+ 180-270 { (W) }
+ 270 { (W) }
+ 270-360 { (W) }
+ }
+ }
+ }
+
+ import @Geometry
+ def @PerpendicularOutsideProximity
+ {
+ which @Case {
+ { x f } @Yield { labelpos??ANGLE quadcase
+ 0 { (SW) }
+ 0-90 { (SW) }
+ 90 { (SW) }
+ 90-180 { (SW) }
+ 180 { (NE) }
+ 180-270 { (NE) }
+ 270 { (NE) }
+ 270-360 { (NE) }
+ }
+ { z t } @Yield { labelpos??ANGLE quadcase
+ 0 { (NW) }
+ 0-90 { (NW) }
+ 90 { (NW) }
+ 90-180 { (NW) }
+ 180 { (SE) }
+ 180-270 { (SE) }
+ 270 { (SE) }
+ 270-360 { (SE) }
+ }
+ else @Yield { labelpos??ANGLE quadcase
+ 0 { (W) }
+ 0-90 { (W) }
+ 90 { (W) }
+ 90-180 { (W) }
+ 180 { (E) }
+ 180-270 { (E) }
+ 270 { (E) }
+ 270-360 { (E) }
+ }
+ }
+ }
+
+
+ import @Geometry
+ def @OtherAboveProximity
+ {
+ which @Case {
+ { x f } @Yield { labelpos??ANGLE quadcase
+ 0 { (SW) }
+ 0-90 { (SE) }
+ 90 { (SW) }
+ 90-180 { (SW) }
+ 180 { (SE) }
+ 180-270 { (SE) }
+ 270 { (NW) }
+ 270-360 { (SW) }
+ }
+ { z t } @Yield { labelpos??ANGLE quadcase
+ 0 { (SE) }
+ 0-90 { (SE) }
+ 90 { (NW) }
+ 90-180 { (SW) }
+ 180 { (SW) }
+ 180-270 { (SE) }
+ 270 { (SW) }
+ 270-360 { (SW) }
+ }
+ else @Yield { labelpos??ANGLE quadcase
+ 0 { (S) }
+ 0-90 { (SE) }
+ 90 { (W) }
+ 90-180 { (SW) }
+ 180 { (S) }
+ 180-270 { (SE) }
+ 270 { (W) }
+ 270-360 { (SW) }
+ }
+ }
+ }
+
+ import @Geometry
+ def @OtherBelowProximity
+ {
+ which @Case {
+ { x f } @Yield { labelpos??ANGLE quadcase
+ 0 { (NW) }
+ 0-90 { (NW) }
+ 90 { (SW) }
+ 90-180 { (NE) }
+ 180 { (NE) }
+ 180-270 { (NW) }
+ 270 { (NW) }
+ 270-360 { (NE) }
+ }
+ { z t } @Yield { labelpos??ANGLE quadcase
+ 0 { (NE) }
+ 0-90 { (NW) }
+ 90 { (NW) }
+ 90-180 { (NE) }
+ 180 { (NW) }
+ 180-270 { (NW) }
+ 270 { (SW) }
+ 270-360 { (NE) }
+ }
+ else @Yield { labelpos??ANGLE quadcase
+ 0 { (N) }
+ 0-90 { (NW) }
+ 90 { (W) }
+ 90-180 { (NE) }
+ 180 { (N) }
+ 180-270 { (NW) }
+ 270 { (W) }
+ 270-360 { (NE) }
+ }
+ }
+ }
+
+ import @Geometry
+ def @OtherLeftProximity
+ {
+ which @Case {
+ { x f } @Yield { labelpos??ANGLE quadcase
+ 0 { (SW) }
+ 0-90 { (SE) }
+ 90 { (SE) }
+ 90-180 { (NE) }
+ 180 { (SE) }
+ 180-270 { (SE) }
+ 270 { (NE) }
+ 270-360 { (NE) }
+ }
+ { z t } @Yield { labelpos??ANGLE quadcase
+ 0 { (SE) }
+ 0-90 { (SE) }
+ 90 { (NE) }
+ 90-180 { (NE) }
+ 180 { (SW) }
+ 180-270 { (SE) }
+ 270 { (SE) }
+ 270-360 { (NE) }
+ }
+ else @Yield { labelpos??ANGLE quadcase
+ 0 { (S) }
+ 0-90 { (SE) }
+ 90 { (E) }
+ 90-180 { (NE) }
+ 180 { (S) }
+ 180-270 { (SE) }
+ 270 { (E) }
+ 270-360 { (NE) }
+ }
+ }
+ }
+
+ import @Geometry
+ def @OtherRightProximity
+ {
+ which @Case {
+ { x f } @Yield { labelpos??ANGLE quadcase
+ 0 { (SW) }
+ 0-90 { (NW) }
+ 90 { (SW) }
+ 90-180 { (SW) }
+ 180 { (SE) }
+ 180-270 { (NW) }
+ 270 { (NW) }
+ 270-360 { (SW) }
+ }
+ { z t } @Yield { labelpos??ANGLE quadcase
+ 0 { (SE) }
+ 0-90 { (NW) }
+ 90 { (NW) }
+ 90-180 { (SW) }
+ 180 { (SW) }
+ 180-270 { (NW) }
+ 270 { (SW) }
+ 270-360 { (SW) }
+ }
+ else @Yield { labelpos??ANGLE quadcase
+ 0 { (S) }
+ 0-90 { (NW) }
+ 90 { (W) }
+ 90-180 { (SW) }
+ 180 { (S) }
+ 180-270 { (NW) }
+ 270 { (W) }
+ 270-360 { (SW) }
+ }
+ }
+ }
+
+ import @Geometry
+ def @OtherInsideProximity
+ {
+ which @Case {
+ { x f } @Yield { labelpos??ANGLE quadcase
+ 0 { (SW) }
+ 0-90 { (SE) }
+ 90 { (SE) }
+ 90-180 { (NE) }
+ 180 { (NE) }
+ 180-270 { (NW) }
+ 270 { (NW) }
+ 270-360 { (SW) }
+ }
+ { z t } @Yield { labelpos??ANGLE quadcase
+ 0 { (SE) }
+ 0-90 { (SE) }
+ 90 { (NE) }
+ 90-180 { (NE) }
+ 180 { (NW) }
+ 180-270 { (NW) }
+ 270 { (SW) }
+ 270-360 { (SW) }
+ }
+ else @Yield { labelpos??ANGLE quadcase
+ 0 { (S) }
+ 0-90 { (SE) }
+ 90 { (E) }
+ 90-180 { (NE) }
+ 180 { (N) }
+ 180-270 { (NW) }
+ 270 { (W) }
+ 270-360 { (SW) }
+ }
+ }
+ }
+
+ import @Geometry
+ def @OtherOutsideProximity
+ {
+ which @Case {
+ { x f } @Yield { labelpos??ANGLE quadcase
+ 0 { (NW) }
+ 0-90 { (NW) }
+ 90 { (SW) }
+ 90-180 { (SW) }
+ 180 { (SE) }
+ 180-270 { (SE) }
+ 270 { (NE) }
+ 270-360 { (NE) }
+ }
+ { z t } @Yield { labelpos??ANGLE quadcase
+ 0 { (NE) }
+ 0-90 { (NW) }
+ 90 { (NW) }
+ 90-180 { (SW) }
+ 180 { (SW) }
+ 180-270 { (SE) }
+ 270 { (SE) }
+ 270-360 { (NE) }
+ }
+ else @Yield { labelpos??ANGLE quadcase
+ 0 { (N) }
+ 0-90 { (NW) }
+ 90 { (W) }
+ 90-180 { (SW) }
+ 180 { (S) }
+ 180-270 { (SE) }
+ 270 { (E) }
+ 270-360 { (NE) }
+ }
+ }
+ }
+
+
+ import @Geometry
+ def @AboveProximity
+ {
+ labelangle @Case {
+ "aligned" @Yield @AlignedAboveProximity
+ "perpendicular" @Yield @PerpendicularAboveProximity
+ else @Yield @OtherAboveProximity
+ }
+ }
+
+ import @Geometry
+ def @BelowProximity
+ {
+ labelangle @Case {
+ "aligned" @Yield @AlignedBelowProximity
+ "perpendicular" @Yield @PerpendicularBelowProximity
+ else @Yield @OtherBelowProximity
+ }
+ }
+
+ import @Geometry
+ def @LeftProximity
+ {
+ labelangle @Case {
+ "aligned" @Yield @AlignedLeftProximity
+ "perpendicular" @Yield @PerpendicularLeftProximity
+ else @Yield @OtherLeftProximity
+ }
+ }
+
+ import @Geometry
+ def @RightProximity
+ {
+ labelangle @Case {
+ "aligned" @Yield @AlignedRightProximity
+ "perpendicular" @Yield @PerpendicularRightProximity
+ else @Yield @OtherRightProximity
+ }
+ }
+
+ import @Geometry
+ def @InsideProximity
+ {
+ labelangle @Case {
+ "aligned" @Yield @AlignedInsideProximity
+ "perpendicular" @Yield @PerpendicularInsideProximity
+ else @Yield @OtherInsideProximity
+ }
+ }
+
+ import @Geometry
+ def @OutsideProximity
+ {
+ labelangle @Case {
+ "aligned" @Yield @AlignedOutsideProximity
+ "perpendicular" @Yield @PerpendicularOutsideProximity
+ else @Yield @OtherOutsideProximity
+ }
+ }
+
+ import @Geometry
+ def proximity
+ {
+ labelprox @Case {
+ above @Yield @AboveProximity
+ below @Yield @BelowProximity
+ left @Yield @LeftProximity
+ right @Yield @RightProximity
+ inside @Yield @InsideProximity
+ outside @Yield @OutsideProximity
+ else @Yield { "("labelprox")" }
+ }
+ }
+
+ import @Geometry
+ def dorotate
+ left point
+ right angle
+ {
+ { {0 0} distance point } atangle { {0 0} angleto point + angle }
+ }
+
+ import @Geometry
+ def translation
+ {
+ labelctr @Case {
+ { no No } @Yield {
+ labelpos -- labeltag?!?proximity
+ }
+ { yes Yes } @Yield {
+ #P0 := labelpos
+ #P1 := labeltag?!?proximity -- P0
+ #P2 := labeltag??CTR -- P0
+ #TH := labelpos??ANGLE
+ #P1A := P1 dorotate { 0 - TH }
+ #P2A := P2 dorotate { 0 - TH }
+ #PRA := { 0 - xcoord P2A 0 - ycoord P1A }
+ #PRA dorotate TH ++ P0
+ XP1 := labeltag?!?proximity
+ XP2 := labeltag??CTR
+ XANG := labelpos??ANGLE
+ XTH := XANG - 90d - { XP1 angleto XP2 }
+ XDIST := { XP1 distance XP2 } * sin XTH
+ labelpos -- XP1 ++ XDIST atangle XANG
+ }
+ }
+ }
+
+ @CatchTags @ZeroSize @Transform
+ translate { translation ++ labeladjust }
+ rotate { finalangle }
+ scale { 1 1 }
+ labeltag:: @BoxLabels @CatchTags @AddMargins
+ mtop { labelmargin }
+ mfoot { labelmargin }
+ mleft { labelmargin }
+ mright { labelmargin }
+ labelfont @Font labelbreak @Break labelformat label
+ }
+
+
+ #######################################################################
+ # #
+ # @Node #
+ # #
+ #######################################################################
+
+ def @Node
+ import @Geometry named translate
+ named to precedence 10 left x right y {
+ @BackEnd @Case {
+ PostScript @Yield { x y "ldiagpsub" }
+ PDF @Yield {""}
+ }
+ }
+ {}
+ import @Geometry named rotate { 0d }
+ import @Geometry named outline
+ named margin {}
+ named shadow {}
+ named sides {}
+ named angle {}
+ { outline
+ margin { margin }
+ shadow { shadow }
+ sides { sides }
+ angle { angle }
+ }
+ named margin { margin }
+ import @Geometry named shadow { shadow }
+ import @Geometry named sides { sides }
+ import @Geometry named angle { angle }
+ named nodetag { nodetag }
+ named outlinestyle
+ named solid { "/ldiagsolid" }
+ named dashed { "/ldiagdashed" }
+ named cdashed { "/ldiagcdashed" }
+ named dotdashed { "/ldiagdotdashed" }
+ named dotcdashed { "/ldiagdotcdashed" }
+ named dotdotdashed { "/ldiagdotdotdashed" }
+ named dotdotcdashed { "/ldiagdotdotcdashed" }
+ named dotdotdotdashed { "/ldiagdotdotdotdashed" }
+ named dotdotdotcdashed { "/ldiagdotdotdotcdashed" }
+ named dotted { "/ldiagdotted" }
+ named noline { "/ldiagnoline" }
+ { outlinestyle }
+ import @Geometry named outlinedashlength { outlinedashlength}
+ import @Geometry named outlinewidth
+ named thin { 0.04 ft }
+ named medium { 0.08 ft }
+ named thick { 0.12 ft }
+ { outlinewidth }
+ named outlinecolour outlinecolor { outlinecolour }
+ named paint { paint }
+ import @TextureImport named texture { texture }
+ named font { font }
+ named break { break }
+ named format right @Body { format @Body }
+ named valign { valign }
+ named vsize { vsize }
+ named vindent { vindent }
+ named vstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { vstrut }
+ named vmargin { vmargin }
+ named topmargin { topmargin }
+ named footmargin { footmargin }
+
+ named halign { halign }
+ named hsize { hsize }
+ named hindent { hindent }
+ named hstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { hstrut }
+ named hmargin { hmargin }
+ named leftmargin { leftmargin }
+ named rightmargin { rightmargin }
+
+ named nodelabel { nodelabel }
+ named nodelabelmargin { nodelabelmargin }
+ named nodelabelfont { nodelabelfont }
+ named nodelabelbreak { nodelabelbreak }
+ named nodelabelformat right @Body { nodelabelformat @Body }
+ import @Geometry named nodelabelpos { nodelabelpos }
+ named nodelabelprox { nodelabelprox }
+ import @Geometry named nodelabelangle { nodelabelangle }
+ named nodelabelctr { nodelabelctr }
+ import @Geometry named nodelabeladjust { nodelabeladjust }
+
+ named alabel { alabel }
+ named alabelmargin { alabelmargin }
+ named alabelfont { alabelfont }
+ named alabelbreak { alabelbreak }
+ named alabelformat right @Body { alabelformat @Body }
+ import @Geometry named alabelpos { alabelpos }
+ named alabelprox { alabelprox }
+ import @Geometry named alabelangle { alabelangle }
+ named alabelctr { alabelctr }
+ import @Geometry named alabeladjust { alabeladjust }
+
+ named blabel { blabel }
+ named blabelmargin { blabelmargin }
+ named blabelfont { blabelfont }
+ named blabelbreak { blabelbreak }
+ named blabelformat right @Body { blabelformat @Body }
+ import @Geometry named blabelpos { blabelpos }
+ named blabelprox { blabelprox }
+ import @Geometry named blabelangle { blabelangle }
+ named blabelctr { blabelctr }
+ import @Geometry named blabeladjust { blabeladjust }
+
+ named clabel { clabel }
+ named clabelmargin { clabelmargin }
+ named clabelfont { clabelfont }
+ named clabelbreak { clabelbreak }
+ named clabelformat right @Body { clabelformat @Body }
+ import @Geometry named clabelpos { clabelpos }
+ named clabelprox { clabelprox }
+ import @Geometry named clabelangle { clabelangle }
+ named clabelctr { clabelctr }
+ import @Geometry named clabeladjust { clabeladjust }
+
+ named dlabel { dlabel }
+ named dlabelmargin { dlabelmargin }
+ named dlabelfont { dlabelfont }
+ named dlabelbreak { dlabelbreak }
+ named dlabelformat right @Body { dlabelformat @Body }
+ import @Geometry named dlabelpos { dlabelpos }
+ named dlabelprox { dlabelprox }
+ import @Geometry named dlabelangle { dlabelangle }
+ named dlabelctr { dlabelctr }
+ import @Geometry named dlabeladjust { dlabeladjust }
+
+ right @Body
+ {
+
+ def @LabelPos
+ left x
+ right y
+ {
+ nodelabelpos @Case {
+ x @Yield y
+ else @Yield ""
+ }
+ }
+
+ def @If
+ left cond
+ right x
+ {
+ cond @Case {
+ { yes Yes } @Yield x
+ else @Yield ""
+ }
+ }
+
+
+ def @Strut right x
+ {
+ def vs { 0.5w @VShift { vstrut @High } }
+ def hs { hstrut @Wide }
+
+ @HContract @VContract {
+ @HContract @VContract x | vs / hs |
+ }
+ }
+
+ def @Indent right x
+ {
+ x @Case {
+ { top left } @Yield 0.0rt
+ { ctr } @Yield 0.5rt
+ { foot right } @Yield 1.0rt
+ { mctr } @Yield 0.5bx
+ else @Yield x
+ }
+ }
+
+ def @VSize right x
+ {
+ vsize @Case {
+ "" @Yield x
+ else @Yield { vsize @High { /{@Indent vindent} x / } }
+ }
+ }
+
+ def @HSize right x
+ {
+ hsize @Case {
+ "" @Yield x
+ else @Yield { hsize @Wide { |{@Indent hindent} x | } }
+ }
+ }
+
+ def @Align right x
+ {
+ x @Case {
+ { top left } @Yield 0.0w
+ { ctr } @Yield 0.5w
+ { foot right } @Yield 1.0w
+ { mark } @Yield "+0i"
+ else @Yield x
+ }
+ }
+
+ def @ALabel
+ {
+ @DoLabel
+ which { "a" }
+ label { alabel @Else nodelabel }
+ labelmargin { alabelmargin @Else nodelabelmargin }
+ labelfont { alabelfont @Else nodelabelfont }
+ labelbreak { alabelbreak @Else nodelabelbreak }
+ labelformat { alabelformat @Body @Else nodelabelformat @Body}
+ labelpos { alabelpos @Else nodelabelpos }
+ labelprox { alabelprox @Else nodelabelprox }
+ labelangle { alabelangle @Else nodelabelangle }
+ labelctr { alabelctr @Else nodelabelctr }
+ labeladjust { alabeladjust @Else nodelabeladjust }
+ }
+
+ def @BLabel
+ {
+ @DoLabel
+ which { "b" }
+ label { blabel @Else nodelabel }
+ labelmargin { blabelmargin @Else nodelabelmargin }
+ labelfont { blabelfont @Else nodelabelfont }
+ labelbreak { blabelbreak @Else nodelabelbreak }
+ labelformat { blabelformat @Body @Else nodelabelformat @Body}
+ labelpos { blabelpos @Else nodelabelpos }
+ labelprox { blabelprox @Else nodelabelprox }
+ labelangle { blabelangle @Else nodelabelangle }
+ labelctr { blabelctr @Else nodelabelctr }
+ labeladjust { blabeladjust @Else nodelabeladjust }
+ }
+
+ def @CLabel
+ {
+ @DoLabel
+ which { "c" }
+ label { clabel @Else nodelabel }
+ labelmargin { clabelmargin @Else nodelabelmargin }
+ labelfont { clabelfont @Else nodelabelfont }
+ labelbreak { clabelbreak @Else nodelabelbreak }
+ labelformat { clabelformat @Body @Else nodelabelformat @Body}
+ labelpos { clabelpos @Else nodelabelpos }
+ labelprox { clabelprox @Else nodelabelprox }
+ labelangle { clabelangle @Else nodelabelangle }
+ labelctr { clabelctr @Else nodelabelctr }
+ labeladjust { clabeladjust @Else nodelabeladjust }
+ }
+
+ def @DLabel
+ {
+ @DoLabel
+ which { "d" }
+ label { dlabel @Else nodelabel }
+ labelmargin { dlabelmargin @Else nodelabelmargin }
+ labelfont { dlabelfont @Else nodelabelfont }
+ labelbreak { dlabelbreak @Else nodelabelbreak }
+ labelformat { dlabelformat @Body @Else nodelabelformat @Body}
+ labelpos { dlabelpos @Else nodelabelpos }
+ labelprox { dlabelprox @Else nodelabelprox }
+ labelangle { dlabelangle @Else nodelabelangle }
+ labelctr { dlabelctr @Else nodelabelctr }
+ labeladjust { dlabeladjust @Else nodelabeladjust }
+ }
+
+ import @Geometry
+ def @OutLine
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ outline @Case {
+ box @Yield { "ldiagbox" }
+ curvebox @Yield { "("margin") ldiagcurvebox" }
+ shadowbox @Yield { shadow "ldiagshadow ldiagbox" }
+ square @Yield { "ldiagsquare" }
+ diamond @Yield { "ldiagdiamond" }
+ polygon @Yield { sides angle "ldiagpolygon" }
+ isosceles @Yield { "ldiagisosceles" }
+ ellipse @Yield { "ldiagellipse" }
+ circle @Yield { "ldiagcircle" }
+ else @Yield {
+ outline
+ margin { "("margin") ldiagdecodelength" }
+ shadow { shadow }
+ sides { sides }
+ angle { angle }
+ }
+ }
+ }
+ PDF @Yield {}
+ }
+ }
+
+ def @Value
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ @HContract @VContract
+ {
+ {
+ "ldiagnodebegin [" @OutLine "]" outlinedashlength
+ "[" outlinestyle "]" outlinewidth
+ "{" @ColourCommand outlinecolour "}"
+ paint @PSAddPaint texture "ldiagnodeend"
+ "(IN) ldiagpushtagdict"
+ //
+ "ldiagpopuptagdict"
+ }
+ @Graphic
+ {
+ {@Align valign} @VShift {@Align halign} @HShift
+ @AddMargins
+ mtop { topmargin @Else vmargin @Else margin }
+ mfoot { footmargin @Else vmargin @Else margin }
+ mleft { leftmargin @Else hmargin @Else margin }
+ mright { rightmargin @Else hmargin @Else margin }
+ @HSize @VSize @HContract @VContract
+ font @Font break @Break format @Strut @Body
+ }
+ / {alabel @Else nodelabel} @IfNonEmpty @ALabel
+ / {blabel @Else nodelabel} @IfNonEmpty @BLabel
+ / {clabel @Else nodelabel} @IfNonEmpty @CLabel
+ / {dlabel @Else nodelabel} @IfNonEmpty @DLabel
+ }
+ }
+ PDF @Yield {}
+ }
+ }
+
+ def @TValue
+ {
+ nodetag @Case {
+ "" @Yield @Value
+ else @Yield { nodetag:: @Value }
+ }
+ }
+
+ translate @Case {
+ "" @Yield @TValue
+ else @Yield {
+ @Null & # so that preceding space gets chewed up
+ @Transform translate { translate } rotate { rotate } @TValue
+ }
+ }
+ }
+
+
+ #######################################################################
+ # #
+ # @ANode #
+ # #
+ #######################################################################
+
+ def @ANode
+ import @Geometry named translate
+ named to precedence 10 left x right y {
+ @BackEnd @Case {
+ PostScript @Yield { x y "ldiagpsub" }
+ PDF @Yield {""}
+ }
+ }
+ {}
+ import @Geometry named rotate { 0d }
+ import @Geometry named outline
+ named margin {}
+ named shadow {}
+ named sides {}
+ named angle {}
+ { aoutline
+ margin { margin }
+ shadow { shadow }
+ sides { sides }
+ angle { angle }
+ }
+ named margin { amargin }
+ import @Geometry named shadow { ashadow }
+ import @Geometry named sides { asides }
+ import @Geometry named angle { aangle }
+ named nodetag { anodetag }
+ named outlinestyle
+ named solid { "/ldiagsolid" }
+ named dashed { "/ldiagdashed" }
+ named cdashed { "/ldiagcdashed" }
+ named dotdashed { "/ldiagdotdashed" }
+ named dotcdashed { "/ldiagdotcdashed" }
+ named dotdotdashed { "/ldiagdotdotdashed" }
+ named dotdotcdashed { "/ldiagdotdotcdashed" }
+ named dotdotdotdashed { "/ldiagdotdotdotdashed" }
+ named dotdotdotcdashed { "/ldiagdotdotdotcdashed" }
+ named dotted { "/ldiagdotted" }
+ named noline { "/ldiagnoline" }
+ { aoutlinestyle }
+ import @Geometry named outlinedashlength { aoutlinedashlength}
+ import @Geometry named outlinewidth
+ named thin { 0.04 ft }
+ named medium { 0.08 ft }
+ named thick { 0.12 ft }
+ { aoutlinewidth }
+ named outlinecolour outlinecolor { aoutlinecolour }
+ named paint { apaint }
+ import @TextureImport named texture { atexture }
+ named font { afont }
+ named break { abreak }
+ named format right @Body { aformat @Body }
+ named valign { avalign }
+ named vsize { avsize }
+ named vindent { avindent }
+ named vstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { avstrut }
+ named vmargin { avmargin }
+ named topmargin { atopmargin }
+ named footmargin { afootmargin }
+
+ named halign { ahalign }
+ named hsize { ahsize }
+ named hindent { ahindent }
+ named hstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { ahstrut }
+ named hmargin { ahmargin }
+ named leftmargin { aleftmargin }
+ named rightmargin { arightmargin }
+
+ named nodelabel { anodelabel }
+ named nodelabelmargin { anodelabelmargin }
+ named nodelabelfont { anodelabelfont }
+ named nodelabelbreak { anodelabelbreak }
+ named nodelabelformat right @Body { anodelabelformat @Body }
+ import @Geometry named nodelabelpos { anodelabelpos }
+ named nodelabelprox { anodelabelprox }
+ import @Geometry named nodelabelangle { anodelabelangle }
+ named nodelabelctr { anodelabelctr }
+ import @Geometry named nodelabeladjust { anodelabeladjust }
+
+ named alabel { aalabel }
+ named alabelmargin { aalabelmargin }
+ named alabelfont { aalabelfont }
+ named alabelbreak { aalabelbreak }
+ named alabelformat right @Body { aalabelformat @Body }
+ import @Geometry named alabelpos { aalabelpos }
+ named alabelprox { aalabelprox }
+ import @Geometry named alabelangle { aalabelangle }
+ named alabelctr { aalabelctr }
+ import @Geometry named alabeladjust { aalabeladjust }
+
+ named blabel { ablabel }
+ named blabelmargin { ablabelmargin }
+ named blabelfont { ablabelfont }
+ named blabelbreak { ablabelbreak }
+ named blabelformat right @Body { ablabelformat @Body }
+ import @Geometry named blabelpos { ablabelpos }
+ named blabelprox { ablabelprox }
+ import @Geometry named blabelangle { ablabelangle }
+ named blabelctr { ablabelctr }
+ import @Geometry named blabeladjust { ablabeladjust }
+
+ named clabel { aclabel }
+ named clabelmargin { aclabelmargin }
+ named clabelfont { aclabelfont }
+ named clabelbreak { aclabelbreak }
+ named clabelformat right @Body { aclabelformat @Body }
+ import @Geometry named clabelpos { aclabelpos }
+ named clabelprox { aclabelprox }
+ import @Geometry named clabelangle { aclabelangle }
+ named clabelctr { aclabelctr }
+ import @Geometry named clabeladjust { aclabeladjust }
+
+ named dlabel { adlabel }
+ named dlabelmargin { adlabelmargin }
+ named dlabelfont { adlabelfont }
+ named dlabelbreak { adlabelbreak }
+ named dlabelformat right @Body { adlabelformat @Body }
+ import @Geometry named dlabelpos { adlabelpos }
+ named dlabelprox { adlabelprox }
+ import @Geometry named dlabelangle { adlabelangle }
+ named dlabelctr { adlabelctr }
+ import @Geometry named dlabeladjust { adlabeladjust }
+
+ right @Body
+ {
+
+ def @LabelPos
+ left x
+ right y
+ {
+ nodelabelpos @Case {
+ x @Yield y
+ else @Yield ""
+ }
+ }
+
+ def @If
+ left cond
+ right x
+ {
+ cond @Case {
+ { yes Yes } @Yield x
+ else @Yield ""
+ }
+ }
+
+
+ def @Strut right x
+ {
+ def vs { 0.5w @VShift { vstrut @High } }
+ def hs { hstrut @Wide }
+
+ @HContract @VContract {
+ @HContract @VContract x | vs / hs |
+ }
+ }
+
+ def @Indent right x
+ {
+ x @Case {
+ { top left } @Yield 0.0rt
+ { ctr } @Yield 0.5rt
+ { foot right } @Yield 1.0rt
+ { mctr } @Yield 0.5bx
+ else @Yield x
+ }
+ }
+
+ def @VSize right x
+ {
+ vsize @Case {
+ "" @Yield x
+ else @Yield { vsize @High { /{@Indent vindent} x / } }
+ }
+ }
+
+ def @HSize right x
+ {
+ hsize @Case {
+ "" @Yield x
+ else @Yield { hsize @Wide { |{@Indent hindent} x | } }
+ }
+ }
+
+ def @Align right x
+ {
+ x @Case {
+ { top left } @Yield 0.0w
+ { ctr } @Yield 0.5w
+ { foot right } @Yield 1.0w
+ { mark } @Yield "+0i"
+ else @Yield x
+ }
+ }
+
+ def @ALabel
+ {
+ @DoLabel
+ which { "a" }
+ label { alabel @Else nodelabel }
+ labelmargin { alabelmargin @Else nodelabelmargin }
+ labelfont { alabelfont @Else nodelabelfont }
+ labelbreak { alabelbreak @Else nodelabelbreak }
+ labelformat { alabelformat @Body @Else nodelabelformat @Body}
+ labelpos { alabelpos @Else nodelabelpos }
+ labelprox { alabelprox @Else nodelabelprox }
+ labelangle { alabelangle @Else nodelabelangle }
+ labelctr { alabelctr @Else nodelabelctr }
+ labeladjust { alabeladjust @Else nodelabeladjust }
+ }
+
+ def @BLabel
+ {
+ @DoLabel
+ which { "b" }
+ label { blabel @Else nodelabel }
+ labelmargin { blabelmargin @Else nodelabelmargin }
+ labelfont { blabelfont @Else nodelabelfont }
+ labelbreak { blabelbreak @Else nodelabelbreak }
+ labelformat { blabelformat @Body @Else nodelabelformat @Body}
+ labelpos { blabelpos @Else nodelabelpos }
+ labelprox { blabelprox @Else nodelabelprox }
+ labelangle { blabelangle @Else nodelabelangle }
+ labelctr { blabelctr @Else nodelabelctr }
+ labeladjust { blabeladjust @Else nodelabeladjust }
+ }
+
+ def @CLabel
+ {
+ @DoLabel
+ which { "c" }
+ label { clabel @Else nodelabel }
+ labelmargin { clabelmargin @Else nodelabelmargin }
+ labelfont { clabelfont @Else nodelabelfont }
+ labelbreak { clabelbreak @Else nodelabelbreak }
+ labelformat { clabelformat @Body @Else nodelabelformat @Body}
+ labelpos { clabelpos @Else nodelabelpos }
+ labelprox { clabelprox @Else nodelabelprox }
+ labelangle { clabelangle @Else nodelabelangle }
+ labelctr { clabelctr @Else nodelabelctr }
+ labeladjust { clabeladjust @Else nodelabeladjust }
+ }
+
+ def @DLabel
+ {
+ @DoLabel
+ which { "d" }
+ label { dlabel @Else nodelabel }
+ labelmargin { dlabelmargin @Else nodelabelmargin }
+ labelfont { dlabelfont @Else nodelabelfont }
+ labelbreak { dlabelbreak @Else nodelabelbreak }
+ labelformat { dlabelformat @Body @Else nodelabelformat @Body}
+ labelpos { dlabelpos @Else nodelabelpos }
+ labelprox { dlabelprox @Else nodelabelprox }
+ labelangle { dlabelangle @Else nodelabelangle }
+ labelctr { dlabelctr @Else nodelabelctr }
+ labeladjust { dlabeladjust @Else nodelabeladjust }
+ }
+
+ import @Geometry
+ def @OutLine
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ outline @Case {
+ box @Yield { "ldiagbox" }
+ curvebox @Yield { "("margin") ldiagcurvebox" }
+ shadowbox @Yield { shadow "ldiagshadow ldiagbox" }
+ square @Yield { "ldiagsquare" }
+ diamond @Yield { "ldiagdiamond" }
+ polygon @Yield { sides angle "ldiagpolygon" }
+ isosceles @Yield { "ldiagisosceles" }
+ ellipse @Yield { "ldiagellipse" }
+ circle @Yield { "ldiagcircle" }
+ else @Yield {
+ outline
+ margin { "("margin") ldiagdecodelength" }
+ shadow { shadow }
+ sides { sides }
+ angle { angle }
+ }
+ }
+ }
+ PDF @Yield {}
+ }
+ }
+
+ def @Value
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ @HContract @VContract
+ {
+ {
+ "ldiagnodebegin [" @OutLine "]" outlinedashlength
+ "[" outlinestyle "]" outlinewidth
+ "{" @ColourCommand outlinecolour "}"
+ paint @PSAddPaint texture "ldiagnodeend"
+ "(IN) ldiagpushtagdict"
+ //
+ "ldiagpopuptagdict"
+ }
+ @Graphic
+ {
+ {@Align valign} @VShift {@Align halign} @HShift
+ @AddMargins
+ mtop { topmargin @Else vmargin @Else margin }
+ mfoot { footmargin @Else vmargin @Else margin }
+ mleft { leftmargin @Else hmargin @Else margin }
+ mright { rightmargin @Else hmargin @Else margin }
+ @HSize @VSize @HContract @VContract
+ font @Font break @Break format @Strut @Body
+ }
+ / {alabel @Else nodelabel} @IfNonEmpty @ALabel
+ / {blabel @Else nodelabel} @IfNonEmpty @BLabel
+ / {clabel @Else nodelabel} @IfNonEmpty @CLabel
+ / {dlabel @Else nodelabel} @IfNonEmpty @DLabel
+ }
+ }
+ PDF @Yield {}
+ }
+ }
+
+ def @TValue
+ {
+ nodetag @Case {
+ "" @Yield @Value
+ else @Yield { nodetag:: @Value }
+ }
+ }
+
+ translate @Case {
+ "" @Yield @TValue
+ else @Yield {
+ @Null & # so that preceding space gets chewed up
+ @Transform translate { translate } rotate { rotate } @TValue
+ }
+ }
+ }
+
+
+ #######################################################################
+ # #
+ # @BNode #
+ # #
+ #######################################################################
+
+ def @BNode
+ import @Geometry named translate
+ named to precedence 10 left x right y {
+ @BackEnd @Case {
+ PostScript @Yield { x y "ldiagpsub" }
+ PDF @Yield {""}
+ }
+ }
+ {}
+ import @Geometry named rotate { 0d }
+ import @Geometry named outline
+ named margin {}
+ named shadow {}
+ named sides {}
+ named angle {}
+ { boutline
+ margin { margin }
+ shadow { shadow }
+ sides { sides }
+ angle { angle }
+ }
+ named margin { bmargin }
+ import @Geometry named shadow { bshadow }
+ import @Geometry named sides { bsides }
+ import @Geometry named angle { bangle }
+ named nodetag { bnodetag }
+ named outlinestyle
+ named solid { "/ldiagsolid" }
+ named dashed { "/ldiagdashed" }
+ named cdashed { "/ldiagcdashed" }
+ named dotdashed { "/ldiagdotdashed" }
+ named dotcdashed { "/ldiagdotcdashed" }
+ named dotdotdashed { "/ldiagdotdotdashed" }
+ named dotdotcdashed { "/ldiagdotdotcdashed" }
+ named dotdotdotdashed { "/ldiagdotdotdotdashed" }
+ named dotdotdotcdashed { "/ldiagdotdotdotcdashed" }
+ named dotted { "/ldiagdotted" }
+ named noline { "/ldiagnoline" }
+ { boutlinestyle }
+ import @Geometry named outlinedashlength { boutlinedashlength}
+ import @Geometry named outlinewidth
+ named thin { 0.04 ft }
+ named medium { 0.08 ft }
+ named thick { 0.12 ft }
+ { boutlinewidth }
+ named outlinecolour outlinecolor { boutlinecolour }
+ named paint { bpaint }
+ import @TextureImport named texture { btexture }
+ named font { bfont }
+ named break { bbreak }
+ named format right @Body { bformat @Body }
+ named valign { bvalign }
+ named vsize { bvsize }
+ named vindent { bvindent }
+ named vstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { bvstrut }
+ named vmargin { bvmargin }
+ named topmargin { btopmargin }
+ named footmargin { bfootmargin }
+
+ named halign { bhalign }
+ named hsize { bhsize }
+ named hindent { bhindent }
+ named hstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { bhstrut }
+ named hmargin { bhmargin }
+ named leftmargin { bleftmargin }
+ named rightmargin { brightmargin }
+
+ named nodelabel { bnodelabel }
+ named nodelabelmargin { bnodelabelmargin }
+ named nodelabelfont { bnodelabelfont }
+ named nodelabelbreak { bnodelabelbreak }
+ named nodelabelformat right @Body { bnodelabelformat @Body }
+ import @Geometry named nodelabelpos { bnodelabelpos }
+ named nodelabelprox { bnodelabelprox }
+ import @Geometry named nodelabelangle { bnodelabelangle }
+ named nodelabelctr { bnodelabelctr }
+ import @Geometry named nodelabeladjust { bnodelabeladjust }
+
+ named alabel { balabel }
+ named alabelmargin { balabelmargin }
+ named alabelfont { balabelfont }
+ named alabelbreak { balabelbreak }
+ named alabelformat right @Body { balabelformat @Body }
+ import @Geometry named alabelpos { balabelpos }
+ named alabelprox { balabelprox }
+ import @Geometry named alabelangle { balabelangle }
+ named alabelctr { balabelctr }
+ import @Geometry named alabeladjust { balabeladjust }
+
+ named blabel { bblabel }
+ named blabelmargin { bblabelmargin }
+ named blabelfont { bblabelfont }
+ named blabelbreak { bblabelbreak }
+ named blabelformat right @Body { bblabelformat @Body }
+ import @Geometry named blabelpos { bblabelpos }
+ named blabelprox { bblabelprox }
+ import @Geometry named blabelangle { bblabelangle }
+ named blabelctr { bblabelctr }
+ import @Geometry named blabeladjust { bblabeladjust }
+
+ named clabel { bclabel }
+ named clabelmargin { bclabelmargin }
+ named clabelfont { bclabelfont }
+ named clabelbreak { bclabelbreak }
+ named clabelformat right @Body { bclabelformat @Body }
+ import @Geometry named clabelpos { bclabelpos }
+ named clabelprox { bclabelprox }
+ import @Geometry named clabelangle { bclabelangle }
+ named clabelctr { bclabelctr }
+ import @Geometry named clabeladjust { bclabeladjust }
+
+ named dlabel { bdlabel }
+ named dlabelmargin { bdlabelmargin }
+ named dlabelfont { bdlabelfont }
+ named dlabelbreak { bdlabelbreak }
+ named dlabelformat right @Body { bdlabelformat @Body }
+ import @Geometry named dlabelpos { bdlabelpos }
+ named dlabelprox { bdlabelprox }
+ import @Geometry named dlabelangle { bdlabelangle }
+ named dlabelctr { bdlabelctr }
+ import @Geometry named dlabeladjust { bdlabeladjust }
+
+ right @Body
+ {
+
+ def @LabelPos
+ left x
+ right y
+ {
+ nodelabelpos @Case {
+ x @Yield y
+ else @Yield ""
+ }
+ }
+
+ def @If
+ left cond
+ right x
+ {
+ cond @Case {
+ { yes Yes } @Yield x
+ else @Yield ""
+ }
+ }
+
+
+ def @Strut right x
+ {
+ def vs { 0.5w @VShift { vstrut @High } }
+ def hs { hstrut @Wide }
+
+ @HContract @VContract {
+ @HContract @VContract x | vs / hs |
+ }
+ }
+
+ def @Indent right x
+ {
+ x @Case {
+ { top left } @Yield 0.0rt
+ { ctr } @Yield 0.5rt
+ { foot right } @Yield 1.0rt
+ { mctr } @Yield 0.5bx
+ else @Yield x
+ }
+ }
+
+ def @VSize right x
+ {
+ vsize @Case {
+ "" @Yield x
+ else @Yield { vsize @High { /{@Indent vindent} x / } }
+ }
+ }
+
+ def @HSize right x
+ {
+ hsize @Case {
+ "" @Yield x
+ else @Yield { hsize @Wide { |{@Indent hindent} x | } }
+ }
+ }
+
+ def @Align right x
+ {
+ x @Case {
+ { top left } @Yield 0.0w
+ { ctr } @Yield 0.5w
+ { foot right } @Yield 1.0w
+ { mark } @Yield "+0i"
+ else @Yield x
+ }
+ }
+
+ def @ALabel
+ {
+ @DoLabel
+ which { "a" }
+ label { alabel @Else nodelabel }
+ labelmargin { alabelmargin @Else nodelabelmargin }
+ labelfont { alabelfont @Else nodelabelfont }
+ labelbreak { alabelbreak @Else nodelabelbreak }
+ labelformat { alabelformat @Body @Else nodelabelformat @Body}
+ labelpos { alabelpos @Else nodelabelpos }
+ labelprox { alabelprox @Else nodelabelprox }
+ labelangle { alabelangle @Else nodelabelangle }
+ labelctr { alabelctr @Else nodelabelctr }
+ labeladjust { alabeladjust @Else nodelabeladjust }
+ }
+
+ def @BLabel
+ {
+ @DoLabel
+ which { "b" }
+ label { blabel @Else nodelabel }
+ labelmargin { blabelmargin @Else nodelabelmargin }
+ labelfont { blabelfont @Else nodelabelfont }
+ labelbreak { blabelbreak @Else nodelabelbreak }
+ labelformat { blabelformat @Body @Else nodelabelformat @Body}
+ labelpos { blabelpos @Else nodelabelpos }
+ labelprox { blabelprox @Else nodelabelprox }
+ labelangle { blabelangle @Else nodelabelangle }
+ labelctr { blabelctr @Else nodelabelctr }
+ labeladjust { blabeladjust @Else nodelabeladjust }
+ }
+
+ def @CLabel
+ {
+ @DoLabel
+ which { "c" }
+ label { clabel @Else nodelabel }
+ labelmargin { clabelmargin @Else nodelabelmargin }
+ labelfont { clabelfont @Else nodelabelfont }
+ labelbreak { clabelbreak @Else nodelabelbreak }
+ labelformat { clabelformat @Body @Else nodelabelformat @Body}
+ labelpos { clabelpos @Else nodelabelpos }
+ labelprox { clabelprox @Else nodelabelprox }
+ labelangle { clabelangle @Else nodelabelangle }
+ labelctr { clabelctr @Else nodelabelctr }
+ labeladjust { clabeladjust @Else nodelabeladjust }
+ }
+
+ def @DLabel
+ {
+ @DoLabel
+ which { "d" }
+ label { dlabel @Else nodelabel }
+ labelmargin { dlabelmargin @Else nodelabelmargin }
+ labelfont { dlabelfont @Else nodelabelfont }
+ labelbreak { dlabelbreak @Else nodelabelbreak }
+ labelformat { dlabelformat @Body @Else nodelabelformat @Body}
+ labelpos { dlabelpos @Else nodelabelpos }
+ labelprox { dlabelprox @Else nodelabelprox }
+ labelangle { dlabelangle @Else nodelabelangle }
+ labelctr { dlabelctr @Else nodelabelctr }
+ labeladjust { dlabeladjust @Else nodelabeladjust }
+ }
+
+ import @Geometry
+ def @OutLine
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ outline @Case {
+ box @Yield { "ldiagbox" }
+ curvebox @Yield { "("margin") ldiagcurvebox" }
+ shadowbox @Yield { shadow "ldiagshadow ldiagbox" }
+ square @Yield { "ldiagsquare" }
+ diamond @Yield { "ldiagdiamond" }
+ polygon @Yield { sides angle "ldiagpolygon" }
+ isosceles @Yield { "ldiagisosceles" }
+ ellipse @Yield { "ldiagellipse" }
+ circle @Yield { "ldiagcircle" }
+ else @Yield {
+ outline
+ margin { "("margin") ldiagdecodelength" }
+ shadow { shadow }
+ sides { sides }
+ angle { angle }
+ }
+ }
+ }
+ PDF @Yield {}
+ }
+ }
+
+ def @Value
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ @HContract @VContract
+ {
+ {
+ "ldiagnodebegin [" @OutLine "]" outlinedashlength
+ "[" outlinestyle "]" outlinewidth
+ "{" @ColourCommand outlinecolour "}"
+ paint @PSAddPaint texture "ldiagnodeend"
+ "(IN) ldiagpushtagdict"
+ //
+ "ldiagpopuptagdict"
+ }
+ @Graphic
+ {
+ {@Align valign} @VShift {@Align halign} @HShift
+ @AddMargins
+ mtop { topmargin @Else vmargin @Else margin }
+ mfoot { footmargin @Else vmargin @Else margin }
+ mleft { leftmargin @Else hmargin @Else margin }
+ mright { rightmargin @Else hmargin @Else margin }
+ @HSize @VSize @HContract @VContract
+ font @Font break @Break format @Strut @Body
+ }
+ / {alabel @Else nodelabel} @IfNonEmpty @ALabel
+ / {blabel @Else nodelabel} @IfNonEmpty @BLabel
+ / {clabel @Else nodelabel} @IfNonEmpty @CLabel
+ / {dlabel @Else nodelabel} @IfNonEmpty @DLabel
+ }
+ }
+ PDF @Yield {}
+ }
+ }
+
+ def @TValue
+ {
+ nodetag @Case {
+ "" @Yield @Value
+ else @Yield { nodetag:: @Value }
+ }
+ }
+
+ translate @Case {
+ "" @Yield @TValue
+ else @Yield {
+ @Null & # so that preceding space gets chewed up
+ @Transform translate { translate } rotate { rotate } @TValue
+ }
+ }
+ }
+
+
+ #######################################################################
+ # #
+ # @CNode #
+ # #
+ #######################################################################
+
+ def @CNode
+ import @Geometry named translate
+ named to precedence 10 left x right y {
+ @BackEnd @Case {
+ PostScript @Yield { x y "ldiagpsub" }
+ PDF @Yield {""}
+ }
+ }
+ {}
+ import @Geometry named rotate { 0d }
+ import @Geometry named outline
+ named margin {}
+ named shadow {}
+ named sides {}
+ named angle {}
+ { coutline
+ margin { margin }
+ shadow { shadow }
+ sides { sides }
+ angle { angle }
+ }
+ named margin { cmargin }
+ import @Geometry named shadow { cshadow }
+ import @Geometry named sides { csides }
+ import @Geometry named angle { cangle }
+ named nodetag { cnodetag }
+ named outlinestyle
+ named solid { "/ldiagsolid" }
+ named dashed { "/ldiagdashed" }
+ named cdashed { "/ldiagcdashed" }
+ named dotdashed { "/ldiagdotdashed" }
+ named dotcdashed { "/ldiagdotcdashed" }
+ named dotdotdashed { "/ldiagdotdotdashed" }
+ named dotdotcdashed { "/ldiagdotdotcdashed" }
+ named dotdotdotdashed { "/ldiagdotdotdotdashed" }
+ named dotdotdotcdashed { "/ldiagdotdotdotcdashed" }
+ named dotted { "/ldiagdotted" }
+ named noline { "/ldiagnoline" }
+ { coutlinestyle }
+ import @Geometry named outlinedashlength { coutlinedashlength}
+ import @Geometry named outlinewidth
+ named thin { 0.04 ft }
+ named medium { 0.08 ft }
+ named thick { 0.12 ft }
+ { coutlinewidth }
+ named outlinecolour outlinecolor { coutlinecolour }
+ named paint { cpaint }
+ import @TextureImport named texture { ctexture }
+ named font { cfont }
+ named break { cbreak }
+ named format right @Body { cformat @Body }
+ named valign { cvalign }
+ named vsize { cvsize }
+ named vindent { cvindent }
+ named vstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { cvstrut }
+ named vmargin { cvmargin }
+ named topmargin { ctopmargin }
+ named footmargin { cfootmargin }
+
+ named halign { chalign }
+ named hsize { chsize }
+ named hindent { chindent }
+ named hstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { chstrut }
+ named hmargin { chmargin }
+ named leftmargin { cleftmargin }
+ named rightmargin { crightmargin }
+
+ named nodelabel { cnodelabel }
+ named nodelabelmargin { cnodelabelmargin }
+ named nodelabelfont { cnodelabelfont }
+ named nodelabelbreak { cnodelabelbreak }
+ named nodelabelformat right @Body { cnodelabelformat @Body }
+ import @Geometry named nodelabelpos { cnodelabelpos }
+ named nodelabelprox { cnodelabelprox }
+ import @Geometry named nodelabelangle { cnodelabelangle }
+ named nodelabelctr { cnodelabelctr }
+ import @Geometry named nodelabeladjust { cnodelabeladjust }
+
+ named alabel { calabel }
+ named alabelmargin { calabelmargin }
+ named alabelfont { calabelfont }
+ named alabelbreak { calabelbreak }
+ named alabelformat right @Body { calabelformat @Body }
+ import @Geometry named alabelpos { calabelpos }
+ named alabelprox { calabelprox }
+ import @Geometry named alabelangle { calabelangle }
+ named alabelctr { calabelctr }
+ import @Geometry named alabeladjust { calabeladjust }
+
+ named blabel { cblabel }
+ named blabelmargin { cblabelmargin }
+ named blabelfont { cblabelfont }
+ named blabelbreak { cblabelbreak }
+ named blabelformat right @Body { cblabelformat @Body }
+ import @Geometry named blabelpos { cblabelpos }
+ named blabelprox { cblabelprox }
+ import @Geometry named blabelangle { cblabelangle }
+ named blabelctr { cblabelctr }
+ import @Geometry named blabeladjust { cblabeladjust }
+
+ named clabel { cclabel }
+ named clabelmargin { cclabelmargin }
+ named clabelfont { cclabelfont }
+ named clabelbreak { cclabelbreak }
+ named clabelformat right @Body { cclabelformat @Body }
+ import @Geometry named clabelpos { cclabelpos }
+ named clabelprox { cclabelprox }
+ import @Geometry named clabelangle { cclabelangle }
+ named clabelctr { cclabelctr }
+ import @Geometry named clabeladjust { cclabeladjust }
+
+ named dlabel { cdlabel }
+ named dlabelmargin { cdlabelmargin }
+ named dlabelfont { cdlabelfont }
+ named dlabelbreak { cdlabelbreak }
+ named dlabelformat right @Body { cdlabelformat @Body }
+ import @Geometry named dlabelpos { cdlabelpos }
+ named dlabelprox { cdlabelprox }
+ import @Geometry named dlabelangle { cdlabelangle }
+ named dlabelctr { cdlabelctr }
+ import @Geometry named dlabeladjust { cdlabeladjust }
+
+ right @Body
+ {
+
+ def @LabelPos
+ left x
+ right y
+ {
+ nodelabelpos @Case {
+ x @Yield y
+ else @Yield ""
+ }
+ }
+
+ def @If
+ left cond
+ right x
+ {
+ cond @Case {
+ { yes Yes } @Yield x
+ else @Yield ""
+ }
+ }
+
+
+ def @Strut right x
+ {
+ def vs { 0.5w @VShift { vstrut @High } }
+ def hs { hstrut @Wide }
+
+ @HContract @VContract {
+ @HContract @VContract x | vs / hs |
+ }
+ }
+
+ def @Indent right x
+ {
+ x @Case {
+ { top left } @Yield 0.0rt
+ { ctr } @Yield 0.5rt
+ { foot right } @Yield 1.0rt
+ { mctr } @Yield 0.5bx
+ else @Yield x
+ }
+ }
+
+ def @VSize right x
+ {
+ vsize @Case {
+ "" @Yield x
+ else @Yield { vsize @High { /{@Indent vindent} x / } }
+ }
+ }
+
+ def @HSize right x
+ {
+ hsize @Case {
+ "" @Yield x
+ else @Yield { hsize @Wide { |{@Indent hindent} x | } }
+ }
+ }
+
+ def @Align right x
+ {
+ x @Case {
+ { top left } @Yield 0.0w
+ { ctr } @Yield 0.5w
+ { foot right } @Yield 1.0w
+ { mark } @Yield "+0i"
+ else @Yield x
+ }
+ }
+
+ def @ALabel
+ {
+ @DoLabel
+ which { "a" }
+ label { alabel @Else nodelabel }
+ labelmargin { alabelmargin @Else nodelabelmargin }
+ labelfont { alabelfont @Else nodelabelfont }
+ labelbreak { alabelbreak @Else nodelabelbreak }
+ labelformat { alabelformat @Body @Else nodelabelformat @Body}
+ labelpos { alabelpos @Else nodelabelpos }
+ labelprox { alabelprox @Else nodelabelprox }
+ labelangle { alabelangle @Else nodelabelangle }
+ labelctr { alabelctr @Else nodelabelctr }
+ labeladjust { alabeladjust @Else nodelabeladjust }
+ }
+
+ def @BLabel
+ {
+ @DoLabel
+ which { "b" }
+ label { blabel @Else nodelabel }
+ labelmargin { blabelmargin @Else nodelabelmargin }
+ labelfont { blabelfont @Else nodelabelfont }
+ labelbreak { blabelbreak @Else nodelabelbreak }
+ labelformat { blabelformat @Body @Else nodelabelformat @Body}
+ labelpos { blabelpos @Else nodelabelpos }
+ labelprox { blabelprox @Else nodelabelprox }
+ labelangle { blabelangle @Else nodelabelangle }
+ labelctr { blabelctr @Else nodelabelctr }
+ labeladjust { blabeladjust @Else nodelabeladjust }
+ }
+
+ def @CLabel
+ {
+ @DoLabel
+ which { "c" }
+ label { clabel @Else nodelabel }
+ labelmargin { clabelmargin @Else nodelabelmargin }
+ labelfont { clabelfont @Else nodelabelfont }
+ labelbreak { clabelbreak @Else nodelabelbreak }
+ labelformat { clabelformat @Body @Else nodelabelformat @Body}
+ labelpos { clabelpos @Else nodelabelpos }
+ labelprox { clabelprox @Else nodelabelprox }
+ labelangle { clabelangle @Else nodelabelangle }
+ labelctr { clabelctr @Else nodelabelctr }
+ labeladjust { clabeladjust @Else nodelabeladjust }
+ }
+
+ def @DLabel
+ {
+ @DoLabel
+ which { "d" }
+ label { dlabel @Else nodelabel }
+ labelmargin { dlabelmargin @Else nodelabelmargin }
+ labelfont { dlabelfont @Else nodelabelfont }
+ labelbreak { dlabelbreak @Else nodelabelbreak }
+ labelformat { dlabelformat @Body @Else nodelabelformat @Body}
+ labelpos { dlabelpos @Else nodelabelpos }
+ labelprox { dlabelprox @Else nodelabelprox }
+ labelangle { dlabelangle @Else nodelabelangle }
+ labelctr { dlabelctr @Else nodelabelctr }
+ labeladjust { dlabeladjust @Else nodelabeladjust }
+ }
+
+ import @Geometry
+ def @OutLine
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ outline @Case {
+ box @Yield { "ldiagbox" }
+ curvebox @Yield { "("margin") ldiagcurvebox" }
+ shadowbox @Yield { shadow "ldiagshadow ldiagbox" }
+ square @Yield { "ldiagsquare" }
+ diamond @Yield { "ldiagdiamond" }
+ polygon @Yield { sides angle "ldiagpolygon" }
+ isosceles @Yield { "ldiagisosceles" }
+ ellipse @Yield { "ldiagellipse" }
+ circle @Yield { "ldiagcircle" }
+ else @Yield {
+ outline
+ margin { "("margin") ldiagdecodelength" }
+ shadow { shadow }
+ sides { sides }
+ angle { angle }
+ }
+ }
+ }
+ PDF @Yield {}
+ }
+ }
+
+ def @Value
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ @HContract @VContract
+ {
+ {
+ "ldiagnodebegin [" @OutLine "]" outlinedashlength
+ "[" outlinestyle "]" outlinewidth
+ "{" @ColourCommand outlinecolour "}"
+ paint @PSAddPaint texture "ldiagnodeend"
+ "(IN) ldiagpushtagdict"
+ //
+ "ldiagpopuptagdict"
+ }
+ @Graphic
+ {
+ {@Align valign} @VShift {@Align halign} @HShift
+ @AddMargins
+ mtop { topmargin @Else vmargin @Else margin }
+ mfoot { footmargin @Else vmargin @Else margin }
+ mleft { leftmargin @Else hmargin @Else margin }
+ mright { rightmargin @Else hmargin @Else margin }
+ @HSize @VSize @HContract @VContract
+ font @Font break @Break format @Strut @Body
+ }
+ / {alabel @Else nodelabel} @IfNonEmpty @ALabel
+ / {blabel @Else nodelabel} @IfNonEmpty @BLabel
+ / {clabel @Else nodelabel} @IfNonEmpty @CLabel
+ / {dlabel @Else nodelabel} @IfNonEmpty @DLabel
+ }
+ }
+ PDF @Yield {}
+ }
+ }
+
+ def @TValue
+ {
+ nodetag @Case {
+ "" @Yield @Value
+ else @Yield { nodetag:: @Value }
+ }
+ }
+
+ translate @Case {
+ "" @Yield @TValue
+ else @Yield {
+ @Null & # so that preceding space gets chewed up
+ @Transform translate { translate } rotate { rotate } @TValue
+ }
+ }
+ }
+
+
+ #######################################################################
+ # #
+ # @DNode #
+ # #
+ #######################################################################
+
+ def @DNode
+ import @Geometry named translate
+ named to precedence 10 left x right y {
+ @BackEnd @Case {
+ PostScript @Yield { x y "ldiagpsub" }
+ PDF @Yield {""}
+ }
+ }
+ {}
+ import @Geometry named rotate { 0d }
+ import @Geometry named outline
+ named margin {}
+ named shadow {}
+ named sides {}
+ named angle {}
+ { doutline
+ margin { margin }
+ shadow { shadow }
+ sides { sides }
+ angle { angle }
+ }
+ named margin { dmargin }
+ import @Geometry named shadow { dshadow }
+ import @Geometry named sides { dsides }
+ import @Geometry named angle { dangle }
+ named nodetag { dnodetag }
+ named outlinestyle
+ named solid { "/ldiagsolid" }
+ named dashed { "/ldiagdashed" }
+ named cdashed { "/ldiagcdashed" }
+ named dotdashed { "/ldiagdotdashed" }
+ named dotcdashed { "/ldiagdotcdashed" }
+ named dotdotdashed { "/ldiagdotdotdashed" }
+ named dotdotcdashed { "/ldiagdotdotcdashed" }
+ named dotdotdotdashed { "/ldiagdotdotdotdashed" }
+ named dotdotdotcdashed { "/ldiagdotdotdotcdashed" }
+ named dotted { "/ldiagdotted" }
+ named noline { "/ldiagnoline" }
+ { doutlinestyle }
+ import @Geometry named outlinedashlength { doutlinedashlength}
+ import @Geometry named outlinewidth
+ named thin { 0.04 ft }
+ named medium { 0.08 ft }
+ named thick { 0.12 ft }
+ { doutlinewidth }
+ named outlinecolour outlinecolor { doutlinecolour }
+ named paint { dpaint }
+ import @TextureImport named texture { dtexture }
+ named font { dfont }
+ named break { dbreak }
+ named format right @Body { dformat @Body }
+ named valign { dvalign }
+ named vsize { dvsize }
+ named vindent { dvindent }
+ named vstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { dvstrut }
+ named vmargin { dvmargin }
+ named topmargin { dtopmargin }
+ named footmargin { dfootmargin }
+
+ named halign { dhalign }
+ named hsize { dhsize }
+ named hindent { dhindent }
+ named hstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { dhstrut }
+ named hmargin { dhmargin }
+ named leftmargin { dleftmargin }
+ named rightmargin { drightmargin }
+
+ named nodelabel { dnodelabel }
+ named nodelabelmargin { dnodelabelmargin }
+ named nodelabelfont { dnodelabelfont }
+ named nodelabelbreak { dnodelabelbreak }
+ named nodelabelformat right @Body { dnodelabelformat @Body }
+ import @Geometry named nodelabelpos { dnodelabelpos }
+ named nodelabelprox { dnodelabelprox }
+ import @Geometry named nodelabelangle { dnodelabelangle }
+ named nodelabelctr { dnodelabelctr }
+ import @Geometry named nodelabeladjust { dnodelabeladjust }
+
+ named alabel { dalabel }
+ named alabelmargin { dalabelmargin }
+ named alabelfont { dalabelfont }
+ named alabelbreak { dalabelbreak }
+ named alabelformat right @Body { dalabelformat @Body }
+ import @Geometry named alabelpos { dalabelpos }
+ named alabelprox { dalabelprox }
+ import @Geometry named alabelangle { dalabelangle }
+ named alabelctr { dalabelctr }
+ import @Geometry named alabeladjust { calabeladjust }
+
+ named blabel { dblabel }
+ named blabelmargin { dblabelmargin }
+ named blabelfont { dblabelfont }
+ named blabelbreak { dblabelbreak }
+ named blabelformat right @Body { dblabelformat @Body }
+ import @Geometry named blabelpos { dblabelpos }
+ named blabelprox { dblabelprox }
+ import @Geometry named blabelangle { dblabelangle }
+ named blabelctr { dblabelctr }
+ import @Geometry named blabeladjust { dblabeladjust }
+
+ named clabel { dclabel }
+ named clabelmargin { dclabelmargin }
+ named clabelfont { dclabelfont }
+ named clabelbreak { dclabelbreak }
+ named clabelformat right @Body { dclabelformat @Body }
+ import @Geometry named clabelpos { dclabelpos }
+ named clabelprox { dclabelprox }
+ import @Geometry named clabelangle { dclabelangle }
+ named clabelctr { dclabelctr }
+ import @Geometry named clabeladjust { dclabeladjust }
+
+ named dlabel { ddlabel }
+ named dlabelmargin { ddlabelmargin }
+ named dlabelfont { ddlabelfont }
+ named dlabelbreak { ddlabelbreak }
+ named dlabelformat right @Body { ddlabelformat @Body }
+ import @Geometry named dlabelpos { ddlabelpos }
+ named dlabelprox { ddlabelprox }
+ import @Geometry named dlabelangle { ddlabelangle }
+ named dlabelctr { ddlabelctr }
+ import @Geometry named dlabeladjust { ddlabeladjust }
+
+ right @Body
+ {
+
+ def @LabelPos
+ left x
+ right y
+ {
+ nodelabelpos @Case {
+ x @Yield y
+ else @Yield ""
+ }
+ }
+
+ def @If
+ left cond
+ right x
+ {
+ cond @Case {
+ { yes Yes } @Yield x
+ else @Yield ""
+ }
+ }
+
+
+ def @Strut right x
+ {
+ def vs { 0.5w @VShift { vstrut @High } }
+ def hs { hstrut @Wide }
+
+ @HContract @VContract {
+ @HContract @VContract x | vs / hs |
+ }
+ }
+
+ def @Indent right x
+ {
+ x @Case {
+ { top left } @Yield 0.0rt
+ { ctr } @Yield 0.5rt
+ { foot right } @Yield 1.0rt
+ { mctr } @Yield 0.5bx
+ else @Yield x
+ }
+ }
+
+ def @VSize right x
+ {
+ vsize @Case {
+ "" @Yield x
+ else @Yield { vsize @High { /{@Indent vindent} x / } }
+ }
+ }
+
+ def @HSize right x
+ {
+ hsize @Case {
+ "" @Yield x
+ else @Yield { hsize @Wide { |{@Indent hindent} x | } }
+ }
+ }
+
+ def @Align right x
+ {
+ x @Case {
+ { top left } @Yield 0.0w
+ { ctr } @Yield 0.5w
+ { foot right } @Yield 1.0w
+ { mark } @Yield "+0i"
+ else @Yield x
+ }
+ }
+
+ def @ALabel
+ {
+ @DoLabel
+ which { "a" }
+ label { alabel @Else nodelabel }
+ labelmargin { alabelmargin @Else nodelabelmargin }
+ labelfont { alabelfont @Else nodelabelfont }
+ labelbreak { alabelbreak @Else nodelabelbreak }
+ labelformat { alabelformat @Body @Else nodelabelformat @Body}
+ labelpos { alabelpos @Else nodelabelpos }
+ labelprox { alabelprox @Else nodelabelprox }
+ labelangle { alabelangle @Else nodelabelangle }
+ labelctr { alabelctr @Else nodelabelctr }
+ labeladjust { alabeladjust @Else nodelabeladjust }
+ }
+
+ def @BLabel
+ {
+ @DoLabel
+ which { "b" }
+ label { blabel @Else nodelabel }
+ labelmargin { blabelmargin @Else nodelabelmargin }
+ labelfont { blabelfont @Else nodelabelfont }
+ labelbreak { blabelbreak @Else nodelabelbreak }
+ labelformat { blabelformat @Body @Else nodelabelformat @Body}
+ labelpos { blabelpos @Else nodelabelpos }
+ labelprox { blabelprox @Else nodelabelprox }
+ labelangle { blabelangle @Else nodelabelangle }
+ labelctr { blabelctr @Else nodelabelctr }
+ labeladjust { blabeladjust @Else nodelabeladjust }
+ }
+
+ def @CLabel
+ {
+ @DoLabel
+ which { "c" }
+ label { clabel @Else nodelabel }
+ labelmargin { clabelmargin @Else nodelabelmargin }
+ labelfont { clabelfont @Else nodelabelfont }
+ labelbreak { clabelbreak @Else nodelabelbreak }
+ labelformat { clabelformat @Body @Else nodelabelformat @Body}
+ labelpos { clabelpos @Else nodelabelpos }
+ labelprox { clabelprox @Else nodelabelprox }
+ labelangle { clabelangle @Else nodelabelangle }
+ labelctr { clabelctr @Else nodelabelctr }
+ labeladjust { clabeladjust @Else nodelabeladjust }
+ }
+
+ def @DLabel
+ {
+ @DoLabel
+ which { "d" }
+ label { dlabel @Else nodelabel }
+ labelmargin { dlabelmargin @Else nodelabelmargin }
+ labelfont { dlabelfont @Else nodelabelfont }
+ labelbreak { dlabelbreak @Else nodelabelbreak }
+ labelformat { dlabelformat @Body @Else nodelabelformat @Body}
+ labelpos { dlabelpos @Else nodelabelpos }
+ labelprox { dlabelprox @Else nodelabelprox }
+ labelangle { dlabelangle @Else nodelabelangle }
+ labelctr { dlabelctr @Else nodelabelctr }
+ labeladjust { dlabeladjust @Else nodelabeladjust }
+ }
+
+ import @Geometry
+ def @OutLine
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ outline @Case {
+ box @Yield { "ldiagbox" }
+ curvebox @Yield { "("margin") ldiagcurvebox" }
+ shadowbox @Yield { shadow "ldiagshadow ldiagbox" }
+ square @Yield { "ldiagsquare" }
+ diamond @Yield { "ldiagdiamond" }
+ polygon @Yield { sides angle "ldiagpolygon" }
+ isosceles @Yield { "ldiagisosceles" }
+ ellipse @Yield { "ldiagellipse" }
+ circle @Yield { "ldiagcircle" }
+ else @Yield {
+ outline
+ margin { "("margin") ldiagdecodelength" }
+ shadow { shadow }
+ sides { sides }
+ angle { angle }
+ }
+ }
+ }
+ PDF @Yield {}
+ }
+ }
+
+ def @Value
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ @HContract @VContract
+ {
+ {
+ "ldiagnodebegin [" @OutLine "]" outlinedashlength
+ "[" outlinestyle "]" outlinewidth
+ "{" @ColourCommand outlinecolour "}"
+ paint @PSAddPaint texture "ldiagnodeend"
+ "(IN) ldiagpushtagdict"
+ //
+ "ldiagpopuptagdict"
+ }
+ @Graphic
+ {
+ {@Align valign} @VShift {@Align halign} @HShift
+ @AddMargins
+ mtop { topmargin @Else vmargin @Else margin }
+ mfoot { footmargin @Else vmargin @Else margin }
+ mleft { leftmargin @Else hmargin @Else margin }
+ mright { rightmargin @Else hmargin @Else margin }
+ @HSize @VSize @HContract @VContract
+ font @Font break @Break format @Strut @Body
+ }
+ / {alabel @Else nodelabel} @IfNonEmpty @ALabel
+ / {blabel @Else nodelabel} @IfNonEmpty @BLabel
+ / {clabel @Else nodelabel} @IfNonEmpty @CLabel
+ / {dlabel @Else nodelabel} @IfNonEmpty @DLabel
+ }
+ }
+ PDF @Yield {}
+ }
+ }
+
+ def @TValue
+ {
+ nodetag @Case {
+ "" @Yield @Value
+ else @Yield { nodetag:: @Value }
+ }
+ }
+
+ translate @Case {
+ "" @Yield @TValue
+ else @Yield {
+ @Null & # so that preceding space gets chewed up
+ @Transform translate { translate } rotate { rotate } @TValue
+ }
+ }
+ }
+
+
+ #######################################################################
+ # #
+ # @ENode #
+ # #
+ #######################################################################
+
+ def @ENode
+ import @Geometry named translate
+ named to precedence 10 left x right y {
+ @BackEnd @Case {
+ PostScript @Yield { x y "ldiagpsub" }
+ PDF @Yield {""}
+ }
+ }
+ {}
+ import @Geometry named rotate { 0d }
+ import @Geometry named outline
+ named margin {}
+ named shadow {}
+ named sides {}
+ named angle {}
+ { eoutline
+ margin { margin }
+ shadow { shadow }
+ sides { sides }
+ angle { angle }
+ }
+ named margin { emargin }
+ import @Geometry named shadow { eshadow }
+ import @Geometry named sides { esides }
+ import @Geometry named angle { eangle }
+ named nodetag { enodetag }
+ named outlinestyle
+ named solid { "/ldiagsolid" }
+ named dashed { "/ldiagdashed" }
+ named cdashed { "/ldiagcdashed" }
+ named dotdashed { "/ldiagdotdashed" }
+ named dotcdashed { "/ldiagdotcdashed" }
+ named dotdotdashed { "/ldiagdotdotdashed" }
+ named dotdotcdashed { "/ldiagdotdotcdashed" }
+ named dotdotdotdashed { "/ldiagdotdotdotdashed" }
+ named dotdotdotcdashed { "/ldiagdotdotdotcdashed" }
+ named dotted { "/ldiagdotted" }
+ named noline { "/ldiagnoline" }
+ { eoutlinestyle }
+ import @Geometry named outlinedashlength { eoutlinedashlength}
+ import @Geometry named outlinewidth
+ named thin { 0.04 ft }
+ named medium { 0.08 ft }
+ named thick { 0.12 ft }
+ { eoutlinewidth }
+ named outlinecolour outlinecolor { eoutlinecolour }
+ named paint { epaint }
+ import @TextureImport named texture { etexture }
+ named font { efont }
+ named break { ebreak }
+ named format right @Body { eformat @Body }
+ named valign { evalign }
+ named vsize { evsize }
+ named vindent { evindent }
+ named vstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { evstrut }
+ named vmargin { evmargin }
+ named topmargin { etopmargin }
+ named footmargin { efootmargin }
+
+ named halign { ehalign }
+ named hsize { ehsize }
+ named hindent { ehindent }
+ named hstrut
+ named no { 0.0f }
+ named yes { 1.0f }
+ { ehstrut }
+ named hmargin { ehmargin }
+ named leftmargin { eleftmargin }
+ named rightmargin { erightmargin }
+
+ named nodelabel { enodelabel }
+ named nodelabelmargin { enodelabelmargin }
+ named nodelabelfont { enodelabelfont }
+ named nodelabelbreak { enodelabelbreak }
+ named nodelabelformat right @Body { enodelabelformat @Body }
+ import @Geometry named nodelabelpos { enodelabelpos }
+ named nodelabelprox { enodelabelprox }
+ import @Geometry named nodelabelangle { enodelabelangle }
+ named nodelabelctr { enodelabelctr }
+ import @Geometry named nodelabeladjust { enodelabeladjust }
+
+ named alabel { ealabel }
+ named alabelmargin { ealabelmargin }
+ named alabelfont { ealabelfont }
+ named alabelbreak { ealabelbreak }
+ named alabelformat right @Body { ealabelformat @Body }
+ import @Geometry named alabelpos { ealabelpos }
+ named alabelprox { ealabelprox }
+ import @Geometry named alabelangle { ealabelangle }
+ named alabelctr { ealabelctr }
+ import @Geometry named alabeladjust { ealabeladjust }
+
+ named blabel { eblabel }
+ named blabelmargin { eblabelmargin }
+ named blabelfont { eblabelfont }
+ named blabelbreak { eblabelbreak }
+ named blabelformat right @Body { eblabelformat @Body }
+ import @Geometry named blabelpos { eblabelpos }
+ named blabelprox { eblabelprox }
+ import @Geometry named blabelangle { eblabelangle }
+ named blabelctr { eblabelctr }
+ import @Geometry named blabeladjust { eblabeladjust }
+
+ named clabel { eclabel }
+ named clabelmargin { eclabelmargin }
+ named clabelfont { eclabelfont }
+ named clabelbreak { eclabelbreak }
+ named clabelformat right @Body { eclabelformat @Body }
+ import @Geometry named clabelpos { eclabelpos }
+ named clabelprox { eclabelprox }
+ import @Geometry named clabelangle { eclabelangle }
+ named clabelctr { eclabelctr }
+ import @Geometry named clabeladjust { eclabeladjust }
+
+ named dlabel { edlabel }
+ named dlabelmargin { edlabelmargin }
+ named dlabelfont { edlabelfont }
+ named dlabelbreak { edlabelbreak }
+ named dlabelformat right @Body { edlabelformat @Body }
+ import @Geometry named dlabelpos { edlabelpos }
+ named dlabelprox { edlabelprox }
+ import @Geometry named dlabelangle { edlabelangle }
+ named dlabelctr { edlabelctr }
+ import @Geometry named dlabeladjust { edlabeladjust }
+
+ right @Body
+ {
+
+ def @LabelPos
+ left x
+ right y
+ {
+ nodelabelpos @Case {
+ x @Yield y
+ else @Yield ""
+ }
+ }
+
+ def @If
+ left cond
+ right x
+ {
+ cond @Case {
+ { yes Yes } @Yield x
+ else @Yield ""
+ }
+ }
+
+
+ def @Strut right x
+ {
+ def vs { 0.5w @VShift { vstrut @High } }
+ def hs { hstrut @Wide }
+
+ @HContract @VContract {
+ @HContract @VContract x | vs / hs |
+ }
+ }
+
+ def @Indent right x
+ {
+ x @Case {
+ { top left } @Yield 0.0rt
+ { ctr } @Yield 0.5rt
+ { foot right } @Yield 1.0rt
+ { mctr } @Yield 0.5bx
+ else @Yield x
+ }
+ }
+
+ def @VSize right x
+ {
+ vsize @Case {
+ "" @Yield x
+ else @Yield { vsize @High { /{@Indent vindent} x / } }
+ }
+ }
+
+ def @HSize right x
+ {
+ hsize @Case {
+ "" @Yield x
+ else @Yield { hsize @Wide { |{@Indent hindent} x | } }
+ }
+ }
+
+ def @Align right x
+ {
+ x @Case {
+ { top left } @Yield 0.0w
+ { ctr } @Yield 0.5w
+ { foot right } @Yield 1.0w
+ { mark } @Yield "+0i"
+ else @Yield x
+ }
+ }
+
+ def @ALabel
+ {
+ @DoLabel
+ which { "a" }
+ label { alabel @Else nodelabel }
+ labelmargin { alabelmargin @Else nodelabelmargin }
+ labelfont { alabelfont @Else nodelabelfont }
+ labelbreak { alabelbreak @Else nodelabelbreak }
+ labelformat { alabelformat @Body @Else nodelabelformat @Body}
+ labelpos { alabelpos @Else nodelabelpos }
+ labelprox { alabelprox @Else nodelabelprox }
+ labelangle { alabelangle @Else nodelabelangle }
+ labelctr { alabelctr @Else nodelabelctr }
+ labeladjust { alabeladjust @Else nodelabeladjust }
+ }
+
+ def @BLabel
+ {
+ @DoLabel
+ which { "b" }
+ label { blabel @Else nodelabel }
+ labelmargin { blabelmargin @Else nodelabelmargin }
+ labelfont { blabelfont @Else nodelabelfont }
+ labelbreak { blabelbreak @Else nodelabelbreak }
+ labelformat { blabelformat @Body @Else nodelabelformat @Body}
+ labelpos { blabelpos @Else nodelabelpos }
+ labelprox { blabelprox @Else nodelabelprox }
+ labelangle { blabelangle @Else nodelabelangle }
+ labelctr { blabelctr @Else nodelabelctr }
+ labeladjust { blabeladjust @Else nodelabeladjust }
+ }
+
+ def @CLabel
+ {
+ @DoLabel
+ which { "c" }
+ label { clabel @Else nodelabel }
+ labelmargin { clabelmargin @Else nodelabelmargin }
+ labelfont { clabelfont @Else nodelabelfont }
+ labelbreak { clabelbreak @Else nodelabelbreak }
+ labelformat { clabelformat @Body @Else nodelabelformat @Body}
+ labelpos { clabelpos @Else nodelabelpos }
+ labelprox { clabelprox @Else nodelabelprox }
+ labelangle { clabelangle @Else nodelabelangle }
+ labelctr { clabelctr @Else nodelabelctr }
+ labeladjust { clabeladjust @Else nodelabeladjust }
+ }
+
+ def @DLabel
+ {
+ @DoLabel
+ which { "d" }
+ label { dlabel @Else nodelabel }
+ labelmargin { dlabelmargin @Else nodelabelmargin }
+ labelfont { dlabelfont @Else nodelabelfont }
+ labelbreak { dlabelbreak @Else nodelabelbreak }
+ labelformat { dlabelformat @Body @Else nodelabelformat @Body}
+ labelpos { dlabelpos @Else nodelabelpos }
+ labelprox { dlabelprox @Else nodelabelprox }
+ labelangle { dlabelangle @Else nodelabelangle }
+ labelctr { dlabelctr @Else nodelabelctr }
+ labeladjust { dlabeladjust @Else nodelabeladjust }
+ }
+
+ import @Geometry
+ def @OutLine
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ outline @Case {
+ box @Yield { "ldiagbox" }
+ curvebox @Yield { "("margin") ldiagcurvebox" }
+ shadowbox @Yield { shadow "ldiagshadow ldiagbox" }
+ square @Yield { "ldiagsquare" }
+ diamond @Yield { "ldiagdiamond" }
+ polygon @Yield { sides angle "ldiagpolygon" }
+ isosceles @Yield { "ldiagisosceles" }
+ ellipse @Yield { "ldiagellipse" }
+ circle @Yield { "ldiagcircle" }
+ else @Yield {
+ outline
+ margin { "("margin") ldiagdecodelength" }
+ shadow { shadow }
+ sides { sides }
+ angle { angle }
+ }
+ }
+ }
+ PDF @Yield {}
+ }
+ }
+
+ def @Value
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ @HContract @VContract
+ {
+ {
+ "ldiagnodebegin [" @OutLine "]" outlinedashlength
+ "[" outlinestyle "]" outlinewidth
+ "{" @ColourCommand outlinecolour "}"
+ paint @PSAddPaint texture "ldiagnodeend"
+ "(IN) ldiagpushtagdict"
+ //
+ "ldiagpopuptagdict"
+ }
+ @Graphic
+ {
+ {@Align valign} @VShift {@Align halign} @HShift
+ @AddMargins
+ mtop { topmargin @Else vmargin @Else margin }
+ mfoot { footmargin @Else vmargin @Else margin }
+ mleft { leftmargin @Else hmargin @Else margin }
+ mright { rightmargin @Else hmargin @Else margin }
+ @HSize @VSize @HContract @VContract
+ font @Font break @Break format @Strut @Body
+ }
+ / {alabel @Else nodelabel} @IfNonEmpty @ALabel
+ / {blabel @Else nodelabel} @IfNonEmpty @BLabel
+ / {clabel @Else nodelabel} @IfNonEmpty @CLabel
+ / {dlabel @Else nodelabel} @IfNonEmpty @DLabel
+ }
+ }
+ PDF @Yield {}
+ }
+ }
+
+ def @TValue
+ {
+ nodetag @Case {
+ "" @Yield @Value
+ else @Yield { nodetag:: @Value }
+ }
+ }
+
+ translate @Case {
+ "" @Yield @TValue
+ else @Yield {
+ @Null & # so that preceding space gets chewed up
+ @Transform translate { translate } rotate { rotate } @TValue
+ }
+ }
+ }
+
+
+ #######################################################################
+ # #
+ # @Box, @CurveBox, and other standard node abbreviations #
+ # #
+ #######################################################################
+
+ macro @@Node { @Node }
+ macro @Box { @Node outline { box } }
+ macro @CurveBox { @Node outline { curvebox } }
+ macro @ShadowBox { @Node outline { shadowbox } }
+ macro @Square { @Node outline { square } }
+ macro @Diamond { @Node outline { diamond } }
+ macro @Polygon { @Node outline { polygon } }
+ macro @Isosceles { @Node outline { isosceles } }
+ macro @Ellipse { @Node outline { ellipse } }
+ macro @Circle { @Node outline { circle } }
+
+
+ #######################################################################
+ # #
+ # Arrowheads #
+ # #
+ #######################################################################
+
+ macro @InsulatedNode {
+ @Node
+ topmargin { 0i }
+ footmargin { 0i }
+ leftmargin { 0i }
+ rightmargin { 0i }
+ alabel {}
+ blabel {}
+ clabel {}
+ dlabel {}
+ hsize {}
+ vsize {}
+ vstrut { no }
+ hstrut { no }
+ paint { nochange }
+ texture { solid }
+ outlinestyle { noline }
+ }
+
+ def @SolidArrowHead
+ named width { arrowwidth }
+ named length { arrowlength }
+ named pathwidth { pathwidth }
+ {
+ @InsulatedNode
+ outlinewidth { pathwidth }
+ outline {
+ @BackEnd @Case {
+ PostScript @Yield {
+ "ldiagsolidarrowhead"
+ }
+ PDF @Yield {}
+ }
+ }
+ {
+ length @Wide width @High
+ }
+ }
+
+ def @SolidWithBarArrowHead
+ named width { arrowwidth }
+ named length { arrowlength }
+ named pathwidth { pathwidth }
+ {
+ @InsulatedNode
+ outlinewidth { pathwidth }
+ outline {
+ @BackEnd @Case {
+ PostScript @Yield {
+ pathwidth "ldiagsolidwithbararrowhead"
+ }
+ PDF @Yield {}
+ }
+ }
+ {
+ length @Wide width @High
+ }
+ }
+
+ def @OpenArrowHead
+ named width { arrowwidth }
+ named length { arrowlength }
+ named pathwidth { pathwidth }
+ named pathgap { pathgap }
+ {
+ @InsulatedNode
+ outlinewidth { pathwidth }
+ outline {
+ @BackEnd @Case {
+ PostScript @Yield {
+ pathwidth pathgap "ldiagopenarrowhead"
+ }
+ PDF @Yield {}
+ }
+ }
+ {
+ length @Wide width @High
+ }
+ }
+
+ def @HalfOpenArrowHead
+ named width { arrowwidth }
+ named length { arrowlength }
+ named pathwidth { pathwidth }
+ named pathgap { pathgap }
+ {
+ @InsulatedNode
+ outlinewidth { pathwidth }
+ outline {
+ @BackEnd @Case {
+ PostScript @Yield {
+ pathwidth pathgap "ldiaghalfopenarrowhead"
+ }
+ PDF @Yield {}
+ }
+ }
+ {
+ length @Wide width @High
+ }
+ }
+
+ def @SolidCurvedArrowHead
+ named width { arrowwidth }
+ named length { arrowlength }
+ named pathwidth { pathwidth }
+ {
+ @InsulatedNode
+ outlinewidth { pathwidth }
+ outline {
+ @BackEnd @Case {
+ PostScript @Yield {
+ "ldiagsolidcurvedarrowhead"
+ }
+ PDF @Yield {}
+ }
+ }
+ {
+ length @Wide width @High
+ }
+ }
+
+ def @OpenCurvedArrowHead
+ named width { arrowwidth }
+ named length { arrowlength }
+ named pathwidth { pathwidth }
+ named pathgap { pathgap }
+ {
+ @InsulatedNode
+ outlinewidth { pathwidth }
+ outline {
+ @BackEnd @Case {
+ PostScript @Yield {
+ pathwidth pathgap "ldiagopencurvedarrowhead"
+ }
+ PDF @Yield {}
+ }
+ }
+ {
+ length @Wide width @High
+ }
+ }
+
+ def @HalfOpenCurvedArrowHead
+ named width { arrowwidth }
+ named length { arrowlength }
+ named pathwidth { pathwidth }
+ named pathgap { pathgap }
+ {
+ @InsulatedNode
+ outlinewidth { pathwidth }
+ outline {
+ @BackEnd @Case {
+ PostScript @Yield {
+ pathwidth pathgap "ldiaghalfopencurvedarrowhead"
+ }
+ PDF @Yield {}
+ }
+ }
+ {
+ length @Wide width @High
+ }
+ }
+
+ def @CircleArrowHead
+ named width { arrowwidth }
+ named length { arrowlength }
+ named pathwidth { pathwidth }
+ {
+ @InsulatedNode
+ outlinewidth { pathwidth }
+ outline { circle }
+ { length @Wide length @High }
+ }
+
+ def @BoxArrowHead
+ named width { arrowwidth }
+ named length { arrowlength }
+ named pathwidth { pathwidth }
+ {
+ @InsulatedNode
+ outlinewidth { pathwidth }
+ outline { box }
+ { length @Wide width @High }
+ }
+
+ def @ManyArrowHead
+ named width { arrowwidth }
+ named length { arrowlength }
+ named pathwidth { pathwidth }
+ {
+ @InsulatedNode
+ outlinewidth { pathwidth }
+ outline {
+ @BackEnd @Case {
+ PostScript @Yield { pathwidth "ldiagmanyarrowhead" }
+ PDF @Yield {}
+ }
+ }
+ { length @Wide width @High }
+ }
+
+ def @ArrowHead
+ named style { arrowstyle }
+ named width { arrowwidth }
+ named length { arrowlength }
+ named pathwidth { pathwidth }
+ named pathcolour { pathcolour }
+ named pathgap { pathgap }
+ {
+ {@ColourCommand pathcolour} @SetColour style @Case {
+ solid @Yield @SolidArrowHead
+ width { width } length { length }
+ pathwidth { pathwidth }
+ solidwithbar @Yield @SolidWithBarArrowHead
+ width { width } length { length }
+ pathwidth { pathwidth }
+ halfopen @Yield @HalfOpenArrowHead
+ width { width } length { length }
+ pathwidth { pathwidth } pathgap { pathgap }
+ open @Yield @OpenArrowHead
+ width { width } length { length }
+ pathwidth { pathwidth } pathgap { pathgap }
+ curvedsolid @Yield @SolidCurvedArrowHead
+ width { width } length { length }
+ pathwidth { pathwidth }
+ curvedhalfopen @Yield @HalfOpenCurvedArrowHead
+ width { width } length { length }
+ pathwidth { pathwidth } pathgap { pathgap }
+ curvedopen @Yield @OpenCurvedArrowHead
+ width { width } length { length }
+ pathwidth { pathwidth } pathgap { pathgap }
+ circle @Yield @CircleArrowHead
+ width { width } length { length }
+ pathwidth { pathwidth }
+ box @Yield @BoxArrowHead
+ width { width } length { length }
+ pathwidth { pathwidth }
+ many @Yield @ManyArrowHead
+ width { width } length { length }
+ pathwidth { pathwidth }
+ }
+ }
+
+
+ #######################################################################
+ # #
+ # @Link #
+ # #
+ #######################################################################
+
+ def @Link
+ import @Geometry named path
+ named from {}
+ named to {}
+ named bias {}
+ named fbias {}
+ named tbias {}
+ named hfrac {}
+ named hbias {}
+ named radius {}
+ named xindent {}
+ named zindent {}
+ named frompt {}
+ named topt {}
+ named arrow {}
+ named arrowlength {}
+ named backarrowlength {}
+ { path
+ from { from }
+ to { to }
+ bias { bias }
+ fbias { fbias }
+ tbias { tbias }
+ hfrac { hfrac }
+ hbias { hbias }
+ radius { radius }
+ xindent { xindent }
+ zindent { zindent }
+ frompt { frompt }
+ topt { topt }
+ arrow { arrow }
+ arrowlength { arrowlength }
+ backarrowlength { backarrowlength }
+ }
+ import @Geometry named from { from }
+ import @Geometry named to { to }
+ import @Geometry named bias { bias }
+ import @Geometry named fbias { fbias }
+ import @Geometry named tbias { tbias }
+ import @Geometry named hfrac { hfrac }
+ import @Geometry named hbias { hbias }
+ import @Geometry named radius { radius }
+ import @Geometry named xindent { xindent }
+ import @Geometry named zindent { zindent }
+ import @Geometry named frompt { frompt }
+ import @Geometry named topt { topt }
+ named pathstyle
+ named solid { "/ldiagsolid" }
+ named dashed { "/ldiagdashed" }
+ named cdashed { "/ldiagcdashed" }
+ named dotdashed { "/ldiagdotdashed" }
+ named dotcdashed { "/ldiagdotcdashed" }
+ named dotdotdashed { "/ldiagdotdotdashed" }
+ named dotdotcdashed { "/ldiagdotdotcdashed" }
+ named dotdotdotdashed { "/ldiagdotdotdotdashed" }
+ named dotdotdotcdashed { "/ldiagdotdotdotcdashed" }
+ named dotted { "/ldiagdotted" }
+ named noline { "/ldiagnoline" }
+ { pathstyle }
+ import @Geometry named pathdashlength { pathdashlength }
+ import @Geometry named pathwidth
+ named thin { 0.04 ft }
+ named medium { 0.08 ft }
+ named thick { 0.12 ft }
+ { pathwidth }
+ named pathcolour pathcolor { pathcolour }
+ import @Geometry named pathgap
+ named thin { 0.08 ft }
+ named medium { 0.16 ft }
+ named thick { 0.24 ft }
+ { pathgap }
+
+ named arrow { arrow }
+ named arrowstyle { arrowstyle }
+ named arrowwidth { arrowwidth }
+ named arrowlength { arrowlength }
+ named backarrowstyle { backarrowstyle }
+ named backarrowwidth { backarrowwidth }
+ named backarrowlength { backarrowlength }
+
+ named linklabel { linklabel }
+ named linklabelmargin { linklabelmargin }
+ named linklabelfont { linklabelfont }
+ named linklabelbreak { linklabelbreak }
+ named linklabelformat right @Body { linklabelformat @Body }
+ import @Geometry named linklabelpos { linklabelpos }
+ named linklabelprox { linklabelprox }
+ import @Geometry named linklabelangle { linklabelangle }
+ named linklabelctr { linklabelctr }
+ import @Geometry named linklabeladjust { linklabeladjust }
+
+ named xlabel { xlabel }
+ named xlabelmargin { xlabelmargin }
+ named xlabelfont { xlabelfont }
+ named xlabelbreak { xlabelbreak }
+ named xlabelformat right @Body { xlabelformat @Body }
+ import @Geometry named xlabelpos { xlabelpos }
+ named xlabelprox { xlabelprox }
+ import @Geometry named xlabelangle { xlabelangle }
+ named xlabelctr { xlabelctr }
+ import @Geometry named xlabeladjust { xlabeladjust }
+
+ named ylabel { ylabel }
+ named ylabelmargin { ylabelmargin }
+ named ylabelfont { ylabelfont }
+ named ylabelbreak { ylabelbreak }
+ named ylabelformat right @Body { ylabelformat @Body }
+ import @Geometry named ylabelpos { ylabelpos }
+ named ylabelprox { ylabelprox }
+ import @Geometry named ylabelangle { ylabelangle }
+ named ylabelctr { ylabelctr }
+ import @Geometry named ylabeladjust { ylabeladjust }
+
+ named zlabel { zlabel }
+ named zlabelmargin { zlabelmargin }
+ named zlabelfont { zlabelfont }
+ named zlabelbreak { zlabelbreak }
+ named zlabelformat right @Body { zlabelformat @Body }
+ import @Geometry named zlabelpos { zlabelpos }
+ named zlabelprox { zlabelprox }
+ import @Geometry named zlabelangle { zlabelangle }
+ named zlabelctr { zlabelctr }
+ import @Geometry named zlabeladjust { zlabeladjust }
+
+ named fromlabel { fromlabel }
+ named fromlabelmargin { fromlabelmargin }
+ named fromlabelfont { fromlabelfont }
+ named fromlabelbreak { fromlabelbreak }
+ named fromlabelformat right @Body { fromlabelformat @Body }
+ import @Geometry named fromlabelpos { fromlabelpos }
+ named fromlabelprox { fromlabelprox }
+ import @Geometry named fromlabelangle { fromlabelangle }
+ named fromlabelctr { fromlabelctr }
+ import @Geometry named fromlabeladjust { fromlabeladjust }
+
+ named tolabel { tolabel }
+ named tolabelmargin { tolabelmargin }
+ named tolabelfont { tolabelfont }
+ named tolabelbreak { tolabelbreak }
+ named tolabelformat right @Body { tolabelformat @Body }
+ import @Geometry named tolabelpos { tolabelpos }
+ named tolabelprox { tolabelprox }
+ import @Geometry named tolabelangle { tolabelangle }
+ named tolabelctr { tolabelctr }
+ import @Geometry named tolabeladjust{ tolabeladjust }
+
+ {
+ def @XLabel
+ {
+ @DoLabel
+ which { "x" }
+ label { xlabel @Else linklabel }
+ labelmargin { xlabelmargin @Else linklabelmargin }
+ labelfont { xlabelfont @Else linklabelfont }
+ labelbreak { xlabelbreak @Else linklabelbreak }
+ labelformat { xlabelformat @Body @Else linklabelformat @Body}
+ labelpos { xlabelpos @Else linklabelpos }
+ labelprox { xlabelprox @Else linklabelprox }
+ labelangle { xlabelangle @Else linklabelangle }
+ labelctr { xlabelctr @Else linklabelctr }
+ labeladjust { xlabeladjust @Else linklabeladjust }
+ }
+
+ def @YLabel
+ {
+ @DoLabel
+ which { "y" }
+ label { ylabel @Else linklabel }
+ labelmargin { ylabelmargin @Else linklabelmargin }
+ labelfont { ylabelfont @Else linklabelfont }
+ labelbreak { ylabelbreak @Else linklabelbreak }
+ labelformat { ylabelformat @Body @Else linklabelformat @Body}
+ labelpos { ylabelpos @Else linklabelpos }
+ labelprox { ylabelprox @Else linklabelprox }
+ labelangle { ylabelangle @Else linklabelangle }
+ labelctr { ylabelctr @Else linklabelctr }
+ labeladjust { ylabeladjust @Else linklabeladjust }
+ }
+
+ def @ZLabel
+ {
+ @DoLabel
+ which { "z" }
+ label { zlabel @Else linklabel }
+ labelmargin { zlabelmargin @Else linklabelmargin }
+ labelfont { zlabelfont @Else linklabelfont }
+ labelbreak { zlabelbreak @Else linklabelbreak }
+ labelformat { zlabelformat @Body @Else linklabelformat @Body}
+ labelpos { zlabelpos @Else linklabelpos }
+ labelprox { zlabelprox @Else linklabelprox }
+ labelangle { zlabelangle @Else linklabelangle }
+ labelctr { zlabelctr @Else linklabelctr }
+ labeladjust { zlabeladjust @Else linklabeladjust }
+ }
+
+ def @PathGap
+ {
+ path @Case {
+ doubleline @Yield { pathgap }
+ else @Yield { "0" }
+ }
+ }
+
+ def @FromArrow
+ {
+ arrow @Case {
+ { back both } @Yield {
+ @ArrowHead
+ style { backarrowstyle }
+ width { backarrowwidth }
+ length { backarrowlength }
+ pathwidth { pathwidth }
+ pathcolour { pathcolour }
+ pathgap { @PathGap }
+ }
+ else @Yield ""
+ }
+ }
+
+ def @ToArrow
+ {
+ arrow @Case {
+ { yes forward both } @Yield {
+ @ArrowHead
+ style { arrowstyle }
+ width { arrowwidth }
+ length { arrowlength }
+ pathwidth { pathwidth }
+ pathcolour { pathcolour }
+ pathgap { @PathGap }
+ }
+ else @Yield ""
+ }
+ }
+
+ import @Geometry
+ def @LinePath
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ {arrow @FromArrowLength backarrowlength}
+ {arrow @ToArrowLength arrowlength}
+ "{" from "}" "{" to "}"
+ xindent zindent "ldiaglinepath"
+ # FROM :< {from??CTR angleto to??CTR}
+ # FROM :: from boundaryatangle FROM@ANGLE
+ # ++ {arrow @FromArrowLength backarrowlength}atangle FROM@ANGLE
+ # TO :< FROM@ANGLE
+ # TO :: to boundaryatangle { TO@ANGLE - 180d }
+ # ++ {arrow @ToArrowLength arrowlength} atangle {TO@ANGLE - 180d}
+ #
+ # LMID :: FROM ** 0.5 ++ TO ** 0.5
+ # LMID :< FROM@ANGLE
+ # XINDENT := xindent min { FROM distance LMID }
+ # LFROM :: FROM ++ XINDENT atangle FROM@ANGLE
+ # LFROM :< FROM@ANGLE
+ # ZINDENT := zindent min { TO distance LMID }
+ # LTO :: TO -- ZINDENT atangle FROM@ANGLE
+ # LTO :< FROM@ANGLE
+ #
+ # if cond { direct }
+ # then { FROM TO }
+ # else { FROM LFROM LMID LTO TO }
+ }
+ PDF @Yield {}
+ }
+ }
+
+ import @Geometry
+ def @DoubleLinePath
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ {arrow @FromArrowLength backarrowlength}
+ {arrow @ToArrowLength arrowlength}
+ "{" from "}" "{" to "}"
+ xindent zindent pathgap "ldiagdoublelinepath"
+ # FROM :< {from??CTR angleto to??CTR}
+ # FROM :: from boundaryatangle FROM@ANGLE
+ # ++ {arrow @FromArrowLength backarrowlength}atangle FROM@ANGLE
+ # TO :< FROM@ANGLE
+ # TO :: to boundaryatangle { TO@ANGLE - 180d }
+ # ++ {arrow @ToArrowLength arrowlength} atangle {TO@ANGLE - 180d}
+ #
+ # LMID :: FROM ** 0.5 ++ TO ** 0.5
+ # LMID :< FROM@ANGLE
+ # XINDENT := xindent min { FROM distance LMID }
+ # LFROM :: FROM ++ XINDENT atangle FROM@ANGLE
+ # LFROM :< FROM@ANGLE
+ # ZINDENT := zindent min { TO distance LMID }
+ # LTO :: TO -- ZINDENT atangle FROM@ANGLE
+ # LTO :< FROM@ANGLE
+ #
+ # if cond { direct }
+ # then { FROM TO }
+ # else { FROM LFROM LMID LTO TO }
+ }
+ PDF @Yield {}
+ }
+ }
+
+ import @Geometry
+ def @ACurvePath
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ {arrow @FromArrowLength backarrowlength}
+ {arrow @ToArrowLength arrowlength}
+ "{" from "}" "{" to "}"
+ xindent zindent bias "ldiagacurvepath"
+ # #B1 := bias max 0.02f
+ # #B2 := { from??CTR distance to??CTR } * 0.5
+ # #BIAS := B1 min B2
+ # BIAS := bias max 0.02f
+ # XMID := from??CTR ** 0.5 ++ to??CTR ** 0.5
+ # XTOP := XMID ++ BIAS atangle {from??CTR angleto to??CTR - 90d}
+ # CTR := { from??CTR XTOP ldiaglinebetween
+ # to??CTR XTOP ldiaglinebetween ldiaglineintersect }
+ # FROM :: aabout
+ # circum { from }
+ # extra { arrow @FromArrowLength backarrowlength }
+ # centre { CTR }
+ # FROM :< if cond { from??CTR distance FROM > 0 }
+ # then { from??CTR angleto FROM }
+ # else { CTR angleto FROM + 90d }
+ # TO :: cabout
+ # circum { to }
+ # extra { arrow @ToArrowLength arrowlength }
+ # centre { CTR }
+ # TO :< if cond { TO distance to??CTR > 0 }
+ # then { TO angleto to??CTR }
+ # else { CTR angleto TO + 90d }
+ #
+ # RADIUS := CTR distance FROM
+ # LMID :: CTR ++ RADIUS atangle {
+ # CTR angleto FROM +
+ # { {360d + {CTR angleto TO} - {CTR angleto FROM}} mod 360 } / 2
+ # }
+ # LMID :< CTR angleto LMID + 90d
+ #
+ # XINDENT := xindent min { FROM distance LMID }
+ # LFROM :: CTR ++ RADIUS atangle {
+ # CTR angleto { FROM ++ XINDENT atangle FROM@ANGLE } }
+ # LFROM :< CTR angleto LFROM + 90d
+ # ZINDENT := zindent min { TO distance LMID }
+ # LTO :: CTR ++ RADIUS atangle {
+ # CTR angleto { TO ++ ZINDENT atangle {TO@ANGLE+180d}}}
+ # LTO :< CTR angleto LTO + 90d
+ #
+ # if cond { direct }
+ # then { FROM [CTR] TO }
+ # else { FROM [CTR] LFROM [CTR] LMID [CTR] LTO [CTR] TO }
+ }
+ PDF @Yield {}
+ }
+ }
+
+ import @Geometry
+ def @CCurvePath
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ {arrow @FromArrowLength backarrowlength}
+ {arrow @ToArrowLength arrowlength}
+ "{" from "}" "{" to "}"
+ xindent zindent bias "ldiagccurvepath"
+ # #B1 := bias max 0.02f
+ # #B2 := { from??CTR distance to??CTR } * 0.5
+ # #BIAS := B1 min B2
+ # BIAS := bias max 0.02f
+ # XMID := from??CTR ** 0.5 ++ to??CTR ** 0.5
+ # XTOP := XMID ++ BIAS atangle {from??CTR angleto to??CTR + 90d}
+ # CTR := { from??CTR XTOP ldiaglinebetween
+ # to??CTR XTOP ldiaglinebetween ldiaglineintersect }
+ # FROM :: cabout
+ # circum { from }
+ # extra { arrow @FromArrowLength backarrowlength }
+ # centre { CTR }
+ # FROM :< if cond { from??CTR distance FROM > 0 }
+ # then { from??CTR angleto FROM }
+ # else { CTR angleto FROM - 90d }
+ # TO :: aabout
+ # circum { to }
+ # extra { arrow @ToArrowLength arrowlength }
+ # centre { CTR }
+ # TO :< if cond { TO distance to??CTR > 0 }
+ # then { TO angleto to??CTR }
+ # else { CTR angleto TO - 90d }
+ #
+ # RADIUS := CTR distance FROM
+ # LMID :: CTR ++ RADIUS atangle {
+ # CTR angleto TO +
+ # { {360d + {CTR angleto FROM} - {CTR angleto TO} } mod 360 } / 2
+ # }
+ # LMID :< CTR angleto LMID - 90d
+ #
+ # XINDENT := xindent min { FROM distance LMID }
+ # LFROM :: CTR ++ RADIUS atangle {
+ # CTR angleto { FROM ++ XINDENT atangle FROM@ANGLE } }
+ # LFROM :< CTR angleto LFROM - 90d
+ # ZINDENT := zindent min { TO distance LMID }
+ # LTO :: CTR ++ RADIUS atangle {
+ # CTR angleto { TO ++ ZINDENT atangle {TO@ANGLE+180d}}}
+ # LTO :< CTR angleto LTO - 90d
+ #
+ # if cond { direct }
+ # then { FROM [CTR clockwise] TO }
+ # else { FROM [CTR clockwise] LFROM [CTR clockwise]
+ # LMID [CTR clockwise] LTO [CTR clockwise] TO }
+ }
+ PDF @Yield {}
+ }
+ }
+
+ import @Geometry
+ def @BezierPath
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ {arrow @FromArrowLength backarrowlength}
+ {arrow @ToArrowLength arrowlength}
+ "{" from "}" "{" to "}"
+ xindent zindent [ frompt ] [ topt ] "ldiagbezierpath"
+ # FROM :< from??CTR angleto frompt
+ # FROM :: from boundaryatangle FROM@ANGLE
+ # ++ {arrow @FromArrowLength backarrowlength} atangle FROM@ANGLE
+ # TO :< topt angleto to??CTR
+ # TO :: to boundaryatangle { TO@ANGLE + 180d }
+ # ++ {arrow @ToArrowLength arrowlength} atangle { TO@ANGLE + 180d }
+ # LFROM :: FROM ++ { xindent atangle FROM@ANGLE }
+ # LFROM :< FROM@ANGLE
+ # LTO :: TO ++ zindent atangle { TO@ANGLE + 180d }
+ # LTO :< TO@ANGLE
+ # LMID :: { FROM ++ TO ++ frompt ++ topt } ** 0.25
+ # FROM [frompt topt] TO
+ }
+ PDF @Yield {}
+ }
+ }
+
+ import @Geometry
+ def @VHLinePath
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ {arrow @FromArrowLength backarrowlength}
+ {arrow @ToArrowLength arrowlength}
+ "{" from "}" "{" to "}"
+ xindent zindent "ldiagvhlinepath"
+ # CTR := { {xcoord from??CTR} {ycoord to??CTR} }
+ # FANG := from??CTR angleto CTR
+ # TANG := to??CTR angleto CTR
+ # FROM :: from boundaryatangle FANG
+ # ++ {arrow @FromArrowLength backarrowlength} atangle FANG
+ # FROM :< FANG
+ # TO :: to boundaryatangle TANG
+ # ++ {arrow @ToArrowLength arrowlength} atangle TANG
+ # TO :< TANG + 180d
+ # FDIST := FROM distance CTR
+ # TDIST := TO distance CTR
+ # XINDENT := xindent min FDIST
+ # ZINDENT := zindent min TDIST
+ # LFROM :: FROM ++ XINDENT atangle FANG
+ # LFROM :< FROM@ANGLE
+ # LTO :: TO ++ ZINDENT atangle TANG
+ # LTO :< TO@ANGLE
+ # LMID :: CTR
+ # LMID :< {1f atangle {FANG + 180d}} angleto
+ # {1f atangle {TANG + 180d}}
+ # FROM LFROM LMID LTO TO
+ }
+ PDF @Yield {}
+ }
+ }
+
+ import @Geometry
+ def @VHCurvePath
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ {arrow @FromArrowLength backarrowlength}
+ {arrow @ToArrowLength arrowlength}
+ "{" from "}" "{" to "}"
+ xindent zindent radius "ldiagvhcurvepath"
+ # CTR := { {xcoord from??CTR} {ycoord to??CTR} }
+ # FANG := from??CTR angleto CTR
+ # TANG := to??CTR angleto CTR
+ # FROM :: from boundaryatangle FANG
+ # ++ {arrow @FromArrowLength backarrowlength} atangle FANG
+ # FROM :< FANG
+ # TO :: to boundaryatangle TANG
+ # ++ {arrow @ToArrowLength arrowlength} atangle TANG
+ # TO :< TANG + 180d
+ # FDIST := FROM distance CTR
+ # TDIST := TO distance CTR
+ # RADIUS := radius min FDIST min TDIST
+ # XINDENT := xindent min { FDIST - RADIUS }
+ # ZINDENT := zindent min { TDIST - RADIUS }
+ # LFROM :: FROM ++ XINDENT atangle FANG
+ # LFROM :< FROM@ANGLE
+ # LTO :: TO ++ ZINDENT atangle TANG
+ # LTO :< TO@ANGLE
+ # FCTR := CTR ++ RADIUS atangle { FROM@ANGLE + 180d }
+ # TCTR := CTR ++ RADIUS atangle { TO@ANGLE }
+ # XCTR := CTR ++ RADIUS atangle { FROM@ANGLE + 180d }
+ # ++ RADIUS atangle { TO@ANGLE }
+ # LMID :: XCTR ++ RADIUS atangle { XCTR angleto CTR }
+ # LMID :< FCTR angleto TCTR
+ # FROM LFROM FCTR
+ # { FCTR angleto TCTR } quadcase
+ # 0 { }
+ # 0-90 { [XCTR clockwise] }
+ # 90 { }
+ # 90-180 { [XCTR] }
+ # 180 { }
+ # 180-270 { [XCTR clockwise] }
+ # 270 { }
+ # 270-360 { [XCTR] }
+ # TCTR LTO TO
+ }
+ PDF @Yield {}
+ }
+ }
+
+ import @Geometry
+ def @HVLinePath
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ {arrow @FromArrowLength backarrowlength}
+ {arrow @ToArrowLength arrowlength}
+ "{" from "}" "{" to "}"
+ xindent zindent "ldiaghvlinepath"
+ # CTR := { {xcoord to??CTR} {ycoord from??CTR} }
+ # FANG := from??CTR angleto CTR
+ # TANG := to??CTR angleto CTR
+ # FROM :: from boundaryatangle FANG
+ # ++ {arrow @FromArrowLength backarrowlength} atangle FANG
+ # FROM :< FANG
+ # TO :: to boundaryatangle TANG
+ # ++ {arrow @ToArrowLength arrowlength} atangle TANG
+ # TO :< TANG + 180d
+ # FDIST := FROM distance CTR
+ # TDIST := TO distance CTR
+ # XINDENT := xindent min FDIST
+ # ZINDENT := zindent min TDIST
+ # LFROM :: FROM ++ XINDENT atangle FANG
+ # LFROM :< FROM@ANGLE
+ # LTO :: TO ++ ZINDENT atangle TANG
+ # LTO :< TO@ANGLE
+ # LMID :: CTR
+ # LMID :< {1f atangle {FANG + 180d}} angleto
+ # {1f atangle {TANG + 180d}}
+ # FROM LFROM LMID LTO TO
+ }
+ PDF @Yield {}
+ }
+ }
+
+ import @Geometry
+ def @HVCurvePath
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ {arrow @FromArrowLength backarrowlength}
+ {arrow @ToArrowLength arrowlength}
+ "{" from "}" "{" to "}"
+ xindent zindent radius "ldiaghvcurvepath"
+ # CTR := { {xcoord to??CTR} {ycoord from??CTR} }
+ # FANG := from??CTR angleto CTR
+ # TANG := to??CTR angleto CTR
+ # FROM :: from boundaryatangle FANG
+ # ++ {arrow @FromArrowLength backarrowlength} atangle FANG
+ # FROM :< FANG
+ # TO :: to boundaryatangle TANG
+ # ++ {arrow @ToArrowLength arrowlength} atangle TANG
+ # TO :< TANG + 180d
+ # FDIST := FROM distance CTR
+ # TDIST := TO distance CTR
+ # RADIUS := radius min FDIST min TDIST
+ # XINDENT := xindent min { FDIST - RADIUS }
+ # ZINDENT := zindent min { TDIST - RADIUS }
+ # LFROM :: FROM ++ XINDENT atangle FANG
+ # LFROM :< FROM@ANGLE
+ # LTO :: TO ++ ZINDENT atangle TANG
+ # LTO :< TO@ANGLE
+ # FCTR := CTR ++ RADIUS atangle { FROM@ANGLE + 180d }
+ # TCTR := CTR ++ RADIUS atangle { TO@ANGLE }
+ # XCTR := CTR ++ RADIUS atangle { FROM@ANGLE + 180d }
+ # ++ RADIUS atangle { TO@ANGLE }
+ # LMID :: XCTR ++ RADIUS atangle { XCTR angleto CTR }
+ # LMID :< FCTR angleto TCTR
+ # FROM LFROM FCTR
+ # { FCTR angleto TCTR } quadcase
+ # 0 { }
+ # 0-90 { [XCTR] }
+ # 90 { }
+ # 90-180 { [XCTR clockwise] }
+ # 180 { }
+ # 180-270 { [XCTR] }
+ # 270 { }
+ # 270-360 { [XCTR clockwise] }
+ # TCTR LTO TO
+ }
+ PDF @Yield {}
+ }
+ }
+
+ import @Geometry
+ def @LVRLinePath
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ {arrow @FromArrowLength backarrowlength}
+ {arrow @ToArrowLength arrowlength}
+ "{" from "}" "{" to "}"
+ xindent zindent bias "ldiaglvrlinepath"
+ # FROM :: from boundaryatangle 180d
+ # ++ {arrow @FromArrowLength backarrowlength} atangle 180d
+ # FROM :< 180d
+ # TO :: to boundaryatangle 180d
+ # ++ {arrow @ToArrowLength arrowlength} atangle 180d
+ # TO :< 0d
+ # XLEFT := {{xcoord FROM} min {xcoord TO}} - bias
+ # P1 :: { XLEFT ycoord FROM }
+ # P2 :: { XLEFT ycoord TO }
+ # VERT := P1 angleto P2
+ # P1 :< P1 angleto {P1++{1f atangle 180d}++{1f atangle VERT}}
+ # P2 :< P2 angleto {P2++{1f atangle 0d} ++{1f atangle VERT}}
+ # LMID :: P1 ** 0.5 ++ P2 ** 0.5
+ # LMID :< VERT
+ # XINDENT := xindent min {FROM distance P1}
+ # ZINDENT := zindent min {P2 distance TO}
+ # LFROM :: FROM -- { XINDENT 0 }
+ # LFROM :< 180d
+ # LTO :: TO -- { ZINDENT 0 }
+ # LTO :< 0d
+ # FROM LFROM P1 LMID P2 LTO TO
+ }
+ PDF @Yield {}
+ }
+ }
+
+ import @Geometry
+ def @LVRCurvePath
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ {arrow @FromArrowLength backarrowlength}
+ {arrow @ToArrowLength arrowlength}
+ "{" from "}" "{" to "}"
+ xindent zindent bias radius "ldiaglvrcurvepath"
+ # FROM :: from boundaryatangle 180d
+ # ++ {arrow @FromArrowLength backarrowlength} atangle 180d
+ # FROM :< 180d
+ # TO :: to boundaryatangle 180d
+ # ++ {arrow @ToArrowLength arrowlength} atangle 180d
+ # TO :< 0d
+ # XLEFT := {{xcoord FROM} min {xcoord TO}} - bias
+ # XP1 := { XLEFT ycoord FROM }
+ # XP2 := { XLEFT ycoord TO }
+ # VERT := XP1 angleto XP2
+ # LMID :: XP1 ** 0.5 ++ XP2 ** 0.5
+ # LMID :< VERT
+ # XINDENT := xindent min {FROM distance XP1}
+ # ZINDENT := zindent min {XP2 distance TO}
+ # LFROM :: FROM -- { XINDENT 0 }
+ # LFROM :< 180d
+ # LTO :: TO -- { ZINDENT 0 }
+ # LTO :< 0d
+ # RADIUS := radius min { { XP1 distance XP2 } / 2 }
+ # XP1PRE := XP1 ++ { RADIUS atangle 0d }
+ # XP1POST := XP1 ++ { RADIUS atangle VERT }
+ # XP1CTR := XP1PRE ++ { RADIUS atangle VERT }
+ # P1 :: XP1CTR ++ { RADIUS atangle { XP1CTR angleto XP1 } }
+ # P1 :< XP1PRE angleto XP1POST
+ # XP2PRE := XP2 -- { RADIUS atangle VERT }
+ # XP2POST := XP2 ++ { RADIUS atangle 0d }
+ # XP2CTR := XP2PRE ++ { RADIUS atangle 0d }
+ # P2 :: XP2CTR ++ { RADIUS atangle { XP2CTR angleto XP2 } }
+ # P2 :< XP2PRE angleto XP2POST
+ # FROM LFROM XP1PRE
+ # {round VERT} quadcase
+ # 90 { [XP1CTR clockwise] P1 [XP1CTR clockwise] }
+ # 270 { [XP1CTR] P1 [XP1CTR] }
+ # XP1POST LMID XP2PRE
+ # {round VERT} quadcase
+ # 90 { [XP2CTR clockwise] P2 [XP2CTR clockwise] }
+ # 270 { [XP2CTR] P2 [XP2CTR] }
+ # XP2POST LTO TO
+ }
+ PDF @Yield {}
+ }
+ }
+
+ import @Geometry
+ def @RVLLinePath
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ {arrow @FromArrowLength backarrowlength}
+ {arrow @ToArrowLength arrowlength}
+ "{" from "}" "{" to "}"
+ xindent zindent bias "ldiagrvllinepath"
+ # FROM :: from boundaryatangle 0d
+ # ++ {arrow @FromArrowLength backarrowlength} atangle 0d
+ # FROM :< 0d
+ # TO :: to boundaryatangle 0d
+ # ++ {arrow @ToArrowLength arrowlength} atangle 0d
+ # TO :< 180d
+ # XRIGHT := {{xcoord FROM} max {xcoord TO}} + bias
+ # P1 :: { XRIGHT ycoord FROM }
+ # P2 :: { XRIGHT ycoord TO }
+ # VERT := P1 angleto P2
+ # P1 :< P1 angleto {P1++{1f atangle 0d} ++{1f atangle VERT}}
+ # P2 :< P2 angleto {P2++{1f atangle 180d}++{1f atangle VERT}}
+ # LMID :: P1 ** 0.5 ++ P2 ** 0.5
+ # LMID :< VERT
+ # XINDENT := xindent min {FROM distance P1}
+ # ZINDENT := zindent min {P2 distance TO}
+ # LFROM :: FROM ++ { XINDENT 0 }
+ # LFROM :< 0d
+ # LTO :: TO ++ { ZINDENT 0 }
+ # LTO :< 180d
+ # FROM LFROM P1 LMID P2 LTO TO
+ }
+ PDF @Yield {}
+ }
+ }
+
+ import @Geometry
+ def @RVLCurvePath
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ {arrow @FromArrowLength backarrowlength}
+ {arrow @ToArrowLength arrowlength}
+ "{" from "}" "{" to "}"
+ xindent zindent bias radius "ldiagrvlcurvepath"
+ # FROM :: from boundaryatangle 0d
+ # ++ {arrow @FromArrowLength backarrowlength} atangle 0d
+ # FROM :< 0d
+ # TO :: to boundaryatangle 0d
+ # ++ {arrow @ToArrowLength arrowlength} atangle 0d
+ # TO :< 180d
+ # XRIGHT := {{xcoord FROM} max {xcoord TO}} + bias
+ # XP1 := { XRIGHT ycoord FROM }
+ # XP2 := { XRIGHT ycoord TO }
+ # VERT := XP1 angleto XP2
+ # LMID :: XP1 ** 0.5 ++ XP2 ** 0.5
+ # LMID :< VERT
+ # XINDENT := xindent min {FROM distance XP1}
+ # ZINDENT := zindent min {XP2 distance TO}
+ # LFROM :: FROM ++ { XINDENT 0 }
+ # LFROM :< 0d
+ # LTO :: TO ++ { ZINDENT 0 }
+ # LTO :< 180d
+ # RADIUS := radius min { { XP1 distance XP2 } * 0.5 }
+ # XP1PRE := XP1 ++ { RADIUS atangle 180d }
+ # XP1POST := XP1 ++ { RADIUS atangle VERT }
+ # XP1CTR := XP1PRE ++ { RADIUS atangle VERT }
+ # P1 :: XP1CTR ++ { RADIUS atangle { XP1CTR angleto XP1 } }
+ # P1 :< XP1PRE angleto XP1POST
+ # XP2PRE := XP2 -- { RADIUS atangle VERT }
+ # XP2POST := XP2 ++ { RADIUS atangle 180d }
+ # XP2CTR := XP2PRE ++ { RADIUS atangle 180d }
+ # P2 :: XP2CTR ++ { RADIUS atangle { XP2CTR angleto XP2 } }
+ # P2 :< XP2PRE angleto XP2POST
+ # FROM LFROM XP1PRE
+ # {round VERT} quadcase
+ # 90 { [XP1CTR] P1 [XP1CTR] }
+ # 270 { [XP1CTR clockwise] P1 [XP1CTR clockwise] }
+ # XP1POST LMID XP2PRE
+ # {round VERT} quadcase
+ # 90 { [XP2CTR] P2 [XP2CTR] }
+ # 270 { [XP2CTR clockwise] P2 [XP2CTR clockwise] }
+ # XP2POST LTO TO
+ }
+ PDF @Yield {}
+ }
+ }
+
+
+ import @Geometry
+ def @DHULinePath
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ {arrow @FromArrowLength backarrowlength}
+ {arrow @ToArrowLength arrowlength}
+ "{" from "}" "{" to "}"
+ xindent zindent bias "ldiagdhulinepath"
+ }
+ PDF @Yield {}
+ }
+ }
+
+ import @Geometry
+ def @DHUCurvePath
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ {arrow @FromArrowLength backarrowlength}
+ {arrow @ToArrowLength arrowlength}
+ "{" from "}" "{" to "}"
+ xindent zindent bias radius "ldiagdhucurvepath"
+ }
+ PDF @Yield {}
+ }
+ }
+
+ import @Geometry
+ def @UHDLinePath
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ {arrow @FromArrowLength backarrowlength}
+ {arrow @ToArrowLength arrowlength}
+ "{" from "}" "{" to "}"
+ xindent zindent bias "ldiaguhdlinepath"
+ }
+ PDF @Yield {}
+ }
+ }
+
+ import @Geometry
+ def @UHDCurvePath
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ {arrow @FromArrowLength backarrowlength}
+ {arrow @ToArrowLength arrowlength}
+ "{" from "}" "{" to "}"
+ xindent zindent bias radius "ldiaguhdcurvepath"
+ }
+ PDF @Yield {}
+ }
+ }
+
+
+ import @Geometry
+ def @HVHLinePath # still to do
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ {arrow @FromArrowLength backarrowlength}
+ {arrow @ToArrowLength arrowlength}
+ "{" from "}" "{" to "}"
+ xindent zindent hfrac hbias "ldiaghvhlinepath"
+ # FRDIRN := {{from??CTR angleto to??CTR} quadcase
+ # 0 { 0d } 0-90 { 0d } 90 { 0d } 90-180 { 180d }
+ # 180 { 180d } 180-270 { 180d } 270 { 180d } 270-360 { 0d }}
+ # TODIRN := {FRDIRN + 180d}
+ # FROM :: from boundaryatangle FRDIRN ++
+ # {arrow @FromArrowLength backarrowlength} atangle FRDIRN
+ # FROM :< FRDIRN
+ # TO :: to boundaryatangle TODIRN ++
+ # {arrow @ToArrowLength arrowlength} atangle TODIRN
+ # TO :< FRDIRN
+ # BIAS := abs { xcoord FROM - xcoord TO } * hfrac + hbias
+ # P1 :: FROM ++ BIAS atangle FRDIRN
+ # P2 :: { xcoord P1 ycoord TO }
+ # LMID :: { P1 ** 0.5 ++ P2 ** 0.5 }
+ # LMID :< P1 angleto P2
+ # XINDENT := xindent min {FROM distance P1}
+ # ZINDENT := zindent min {P2 distance TO}
+ # LFROM :: FROM ++ {XINDENT atangle FRDIRN}
+ # LFROM :< FRDIRN
+ # LTO :: TO ++ {ZINDENT atangle TODIRN}
+ # LTO :< FRDIRN
+ # FROM LFROM P1 LMID P2 LTO TO
+
+ }
+ PDF @Yield {}
+ }
+ }
+
+ import @Geometry
+ def @HVHCurvePath # still to do
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ {arrow @FromArrowLength backarrowlength}
+ {arrow @ToArrowLength arrowlength}
+ "{" from "}" "{" to "}"
+ xindent zindent hfrac hbias radius "ldiaghvhcurvepath"
+ # FRDIRN := {{from??CTR angleto to??CTR} quadcase
+ # 0 { 0d } 0-90 { 0d } 90 { 0d } 90-180 { 180d }
+ # 180 { 180d } 180-270 { 180d } 270 { 180d } 270-360 { 0d }}
+ # TODIRN := {FRDIRN + 180d}
+ # FROM :: from boundaryatangle FRDIRN ++
+ # {arrow @FromArrowLength backarrowlength} atangle FRDIRN
+ # FROM :< FRDIRN
+ # TO :: to boundaryatangle TODIRN ++
+ # {arrow @ToArrowLength arrowlength} atangle TODIRN
+ # TO :< FRDIRN
+ # BIAS := abs { xcoord FROM - xcoord TO } * hfrac + hbias
+ # XP1 := FROM ++ BIAS atangle FRDIRN
+ # XP2 := { xcoord XP1 ycoord TO }
+ # LMID :: { XP1 ** 0.5 ++ XP2 ** 0.5 }
+ # VERT := round { XP1 angleto XP2 }
+ # LMID :< VERT
+ # XINDENT := xindent min {FROM distance XP1}
+ # ZINDENT := zindent min {XP2 distance TO}
+ # LFROM :: FROM ++ {XINDENT atangle FRDIRN}
+ # LFROM :< FRDIRN
+ # LTO :: TO ++ {ZINDENT atangle TODIRN}
+ # LTO :< FRDIRN
+ # RADIUS := radius min { { XP1 distance XP2 } / 2 }
+ # XP1PRE := XP1 ++ { RADIUS atangle TODIRN }
+ # XP1POST := XP1 ++ { RADIUS atangle VERT }
+ # XP1CTR := XP1PRE ++ { RADIUS atangle VERT }
+ # P1 :: XP1CTR ++ { RADIUS atangle { XP1CTR angleto XP1 } }
+ # P1 :< XP1PRE angleto XP1POST
+ # XP2PRE := XP2 -- { RADIUS atangle VERT }
+ # XP2POST := XP2 ++ { RADIUS atangle FRDIRN }
+ # XP2CTR := XP2POST -- { RADIUS atangle VERT }
+ # P2 :: XP2CTR ++ { RADIUS atangle { XP2CTR angleto XP2 } }
+ # P2 :< XP2PRE angleto XP2POST
+ # if cond { {VERT - FRDIRN} = 90 }
+ # then { P1GO := "anticlockwise" P2GO := "clockwise" }
+ # else { P1GO := "clockwise" P2GO := "anticlockwise" }
+ # FROM LFROM
+ # XP1PRE [XP1CTR P1GO] P1 [XP1CTR P1GO] XP1POST
+ # LMID
+ # XP2PRE [XP2CTR P2GO] P2 [XP2CTR P2GO] XP2POST
+ # LTO TO
+ }
+ PDF @Yield {}
+ }
+ }
+
+ import @Geometry
+ def @VHVLinePath # still to do
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ {arrow @FromArrowLength backarrowlength}
+ {arrow @ToArrowLength arrowlength}
+ "{" from "}" "{" to "}"
+ xindent zindent hfrac hbias "ldiagvhvlinepath"
+ # FROM :: from boundaryatangle 0d
+ # ++ {arrow @FromArrowLength backarrowlength} atangle 0d
+ # FROM :< 0d
+ # TO :: to boundaryatangle 0d
+ # ++ {arrow @ToArrowLength arrowlength} atangle 0d
+ # TO :< 180d
+ # XRIGHT := {{xcoord FROM} max {xcoord TO}} + bias
+ # P1 :: { XRIGHT ycoord FROM }
+ # P2 :: { XRIGHT ycoord TO }
+ # VERT := P1 angleto P2
+ # P1 :< P1 angleto {P1++{1f atangle 0d} ++{1f atangle VERT}}
+ # P2 :< P2 angleto {P2++{1f atangle 180d}++{1f atangle VERT}}
+ # LMID :: P1 ** 0.5 ++ P2 ** 0.5
+ # LMID :< VERT
+ # XINDENT := xindent min {FROM distance P1}
+ # ZINDENT := zindent min {P2 distance TO}
+ # LFROM :: FROM ++ { XINDENT 0 }
+ # LFROM :< 0d
+ # LTO :: TO ++ { ZINDENT 0 }
+ # LTO :< 180d
+ # FROM LFROM P1 LMID P2 LTO TO
+ }
+ PDF @Yield {}
+ }
+ }
+
+ import @Geometry
+ def @VHVCurvePath # still to do
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ {arrow @FromArrowLength backarrowlength}
+ {arrow @ToArrowLength arrowlength}
+ "{" from "}" "{" to "}"
+ xindent zindent hfrac hbias radius "ldiagvhvcurvepath"
+ # /FRDIRN [ { 0 dg } { 180 dg } { 180 dg } { 0 dg }
+ # { 0 dg } { 0 dg } { 180 dg } { 180 dg }
+ # from (CTR) ldiagdolabel to (CTR) ldiagdolabel
+ # ldiagangleto ldiagquadcase ] cvx def
+ # /TODIRN [ FRDIRN 180 dg add ] cvx def
+ # from (CTR) ldiagdolabel FRDIRN from (CIRCUM) ldiagdolabel ldiagpadd
+ # 0 0 fromarrowlength FRDIRN ldiagatangle ldiagpadd /FROM ldiagpointdef
+ # FRDIRN /FROM@ANGLE ldiagangledef
+ # to (CTR) ldiagdolabel TODIRN to (CIRCUM) ldiagdolabel ldiagpadd
+ # 0 0 toarrowlength TODIRN ldiagatangle ldiagpadd /TO ldiagpointdef
+ # FRDIRN /TO@ANGLE ldiagangledef
+ # /BIAS [ FROM pop TO pop sub abs hfrac mul hbias add ] cvx def
+ # /XP1 [ FROM 0 0 BIAS FRDIRN ldiagatangle ldiagpadd ] cvx def
+ # /XP2 [ XP1 pop TO exch pop ] cvx def
+ # XP1 0.5 ldiagpmul XP2 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef
+ # /VERT [ XP1 XP2 ldiagangleto round ] cvx def
+ # VERT /LMID@ANGLE ldiagangledef
+ # /XINDENT [ xindent FROM XP1 ldiagdistance ldiagmin ] cvx def
+ # /ZINDENT [ zindent XP2 TO ldiagdistance ldiagmin ] cvx def
+ # FROM 0 0 XINDENT FRDIRN ldiagatangle ldiagpadd /LFROM ldiagpointdef
+ # FRDIRN /LFROM@ANGLE ldiagangledef
+ # TO 0 0 ZINDENT TODIRN ldiagatangle ldiagpadd /LTO ldiagpointdef
+ # FRDIRN /LTO@ANGLE ldiagangledef
+ # /RADIUS [ radius XP1 XP2 ldiagdistance 2 div ldiagmin ] cvx def
+ # /XP1PRE [ XP1 0 0 RADIUS TODIRN ldiagatangle ldiagpadd ] cvx def
+ # /XP1POST [ XP1 0 0 RADIUS VERT ldiagatangle ldiagpadd ] cvx def
+ # /XP1CTR [ XP1PRE 0 0 RADIUS VERT ldiagatangle ldiagpadd ] cvx def
+ # XP1CTR 0 0 RADIUS XP1CTR XP1 ldiagangleto ldiagatangle ldiagpadd /P1 ldiagpointdef
+ # XP1PRE XP1POST ldiagangleto /P1@ANGLE ldiagangledef
+ # /XP2PRE [ 0 0 RADIUS VERT ldiagatangle XP2 ldiagpsub ] cvx def
+ # /XP2POST [ XP2 0 0 RADIUS FRDIRN ldiagatangle ldiagpadd ] cvx def
+ # /XP2CTR [ 0 0 RADIUS VERT ldiagatangle XP2POST ldiagpsub ] cvx def
+ # XP2CTR 0 0 RADIUS XP2CTR XP2 ldiagangleto ldiagatangle ldiagpadd /P2 ldiagpointdef
+ # XP2PRE XP2POST ldiagangleto /P2@ANGLE ldiagangledef
+ # VERT FRDIRN sub 90 eq
+ # { /P1GO [ anticlockwise ] cvx def /P2GO [ clockwise ] cvx def }
+ # { /P1GO [ clockwise ] cvx def /P2GO [ anticlockwise ] cvx def }
+ # ifelse
+ # FROM LFROM
+ # XP1PRE [XP1CTR P1GO] P1 [XP1CTR P1GO] XP1POST
+ # LMID
+ # XP2PRE [XP2CTR P2GO] P2 [XP2CTR P2GO] XP2POST
+ # LTO TO
+ }
+ PDF @Yield {}
+ }
+ }
+
+ import @Geometry
+ def @DWrapLinePath
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ {arrow @FromArrowLength backarrowlength}
+ {arrow @ToArrowLength arrowlength}
+ "{" from "}" "{" to "}"
+ xindent zindent bias fbias tbias "ldiagdwraplinepath"
+ # DIRN := if cond { xcoord from??CTR < xcoord to??CTR }
+ # then { 180d } else { 0d }
+ # FROM :: from boundaryatangle DIRN
+ # ++ {arrow @FromArrowLength backarrowlength} atangle DIRN
+ # FROM :< DIRN
+ # TO :: to boundaryatangle { DIRN + 180d }
+ # ++ {arrow @ToArrowLength arrowlength} atangle { DIRN + 180d }
+ # TO :< DIRN
+ # P1 :: FROM ++ {fbias max 0} atangle DIRN
+ # P1 :< if cond { DIRN = 180d } then { 225d } else { -45d }
+ # P4 :: TO ++ {tbias max 0} atangle { DIRN + 180d }
+ # P4 :< if cond { DIRN = 180d } then { 135d } else { 45d }
+ # YC := ycoord { from boundaryatangle 270d } min
+ # ycoord { to boundaryatangle 270d }
+ # - { bias max 0 }
+ # P2 :: { xcoord P1 YC }
+ # P2 :< P4@ANGLE - 180d
+ # P3 :: { xcoord P4 YC }
+ # P3 :< P1@ANGLE - 180d
+ # XINDENT := xindent min { FROM distance P1 }
+ # LFROM :: FROM ++ XINDENT atangle DIRN
+ # LFROM :< FROM@ANGLE
+ # ZINDENT := zindent min { TO distance P4 }
+ # LTO :: TO ++ ZINDENT atangle { DIRN + 180d }
+ # LTO :< TO@ANGLE
+ # LMID :: P2 ** 0.5 ++ P3 ** 0.5
+ # LMID :< DIRN - 180d
+ # FROM P1 P2 P3 P4 TO
+ }
+ PDF @Yield {}
+ }
+ }
+
+ import @Geometry
+ def @DWrapCurvePath
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ {arrow @FromArrowLength backarrowlength}
+ {arrow @ToArrowLength arrowlength}
+ "{" from "}" "{" to "}"
+ xindent zindent bias fbias tbias radius "ldiagdwrapcurvepath"
+ # DIRN := if cond { xcoord from??CTR < xcoord to??CTR }
+ # then { 180d } else { 0d }
+ # CLOCK := if cond { xcoord from??CTR < xcoord to??CTR }
+ # then { anticlockwise } else { clockwise }
+ # FROM :: from boundaryatangle DIRN
+ # ++ {arrow @FromArrowLength backarrowlength} atangle DIRN
+ # FROM :< DIRN
+ # TO :: to boundaryatangle { DIRN + 180d }
+ # ++ {arrow @ToArrowLength arrowlength} atangle { DIRN + 180d }
+ # TO :< DIRN
+ #
+ # XP1 := FROM ++ {fbias max 0} atangle DIRN
+ # XP4 := TO ++ {tbias max 0} atangle { DIRN + 180d }
+ # YC := ycoord { from boundaryatangle 270d } min
+ # ycoord { to boundaryatangle 270d }
+ # - { bias max 0 }
+ # XP2 := { xcoord XP1 YC }
+ # XP3 := { xcoord XP4 YC }
+ #
+ # RP1 := radius min { XP1 distance FROM } min
+ # { { XP1 distance XP2 } / 2 }
+ # XP1PRE := XP1 ++ RP1 atangle { XP1 angleto FROM }
+ # XP1POST := XP1 ++ RP1 atangle { XP1 angleto XP2 }
+ # XP1CTR := XP1PRE ++ RP1 atangle { XP1 angleto XP2 }
+ # P1 :: XP1CTR ++ RP1 atangle { XP1CTR angleto XP1 }
+ # P1 :< XP1CTR angleto P1 + DIRN - 90d
+ #
+ # RP2 := radius min { { XP1 distance XP2 } / 2 }
+ # min { { XP2 distance XP3 } / 2 }
+ # XP2PRE := XP2 ++ RP2 atangle { XP2 angleto XP1 }
+ # XP2POST := XP2 ++ RP2 atangle { XP2 angleto XP3 }
+ # XP2CTR := XP2PRE ++ RP2 atangle { XP2 angleto XP3 }
+ # P2 :: XP2CTR ++ RP2 atangle { XP2CTR angleto XP2 }
+ # P2 :< XP2CTR angleto P2 + DIRN - 90d
+ #
+ # RP3 := radius min { { XP2 distance XP3 } / 2 }
+ # min { { XP3 distance XP4 } / 2 }
+ # XP3PRE := XP3 ++ RP3 atangle { XP3 angleto XP2 }
+ # XP3POST := XP3 ++ RP3 atangle { XP3 angleto XP4 }
+ # XP3CTR := XP3PRE ++ RP3 atangle { XP3 angleto XP4 }
+ # P3 :: XP3CTR ++ RP3 atangle { XP3CTR angleto XP3 }
+ # P3 :< XP3CTR angleto P3 + DIRN - 90d
+ #
+ # RP4 := radius min { { XP4 distance XP3 } / 2 }
+ # min { XP4 distance TO }
+ # XP4PRE := XP4 ++ RP4 atangle { XP4 angleto XP3 }
+ # XP4POST := XP4 ++ RP4 atangle { XP4 angleto TO }
+ # XP4CTR := XP4PRE ++ RP4 atangle { XP4 angleto TO }
+ # P4 :: XP4CTR ++ RP4 atangle { XP4CTR angleto XP4 }
+ # P4 :< XP4CTR angleto P4 + DIRN - 90d
+ #
+ # XINDENT := xindent min { FROM distance XP1PRE }
+ # LFROM :: FROM ++ XINDENT atangle DIRN
+ # LFROM :< FROM@ANGLE
+ #
+ # LMID :: XP2 ** 0.5 ++ XP3 ** 0.5
+ # LMID :< DIRN - 180d
+ #
+ # ZINDENT := zindent min { TO distance XP4POST }
+ # LTO :: TO ++ ZINDENT atangle { DIRN + 180d }
+ # LTO :< TO@ANGLE
+ #
+ # FROM LFROM
+ # XP1PRE [XP1CTR CLOCK] XP1POST
+ # XP2PRE [XP2CTR CLOCK] XP2POST
+ # LMID
+ # XP3PRE [XP3CTR CLOCK] XP3POST
+ # XP4PRE [XP4CTR CLOCK] XP4POST
+ # LTO TO
+ }
+ PDF @Yield {}
+ }
+ }
+
+ import @Geometry
+ def @UWrapLinePath
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ {arrow @FromArrowLength backarrowlength}
+ {arrow @ToArrowLength arrowlength}
+ "{" from "}" "{" to "}"
+ xindent zindent bias fbias tbias "ldiaguwraplinepath"
+ # DIRN := if cond { xcoord from??CTR < xcoord to??CTR }
+ # then { 180d } else { 0d }
+ # FROM :: from boundaryatangle DIRN
+ # ++ {arrow @FromArrowLength backarrowlength} atangle DIRN
+ # FROM :< DIRN
+ # TO :: to boundaryatangle { DIRN + 180d }
+ # ++ {arrow @ToArrowLength arrowlength} atangle { DIRN + 180d }
+ # TO :< DIRN
+ # P1 :: FROM ++ {fbias max 0} atangle DIRN
+ # P1 :< if cond { DIRN = 180d } then { 135d } else { 45d }
+ # P4 :: TO ++ {tbias max 0} atangle { DIRN + 180d }
+ # P4 :< if cond { DIRN = 180d } then { 225d } else { -45d }
+ # YC := ycoord { from boundaryatangle 90d } max
+ # ycoord { to boundaryatangle 90d }
+ # + { bias max 0 }
+ # P2 :: { xcoord P1 YC }
+ # P2 :< P4@ANGLE - 180d
+ # P3 :: { xcoord P4 YC }
+ # P3 :< P1@ANGLE - 180d
+ # XINDENT := xindent min { FROM distance P1 }
+ # LFROM :: FROM ++ XINDENT atangle DIRN
+ # LFROM :< FROM@ANGLE
+ # ZINDENT := zindent min { TO distance P4 }
+ # LTO :: TO ++ ZINDENT atangle { DIRN + 180d }
+ # LTO :< TO@ANGLE
+ # LMID :: P2 ** 0.5 ++ P3 ** 0.5
+ # LMID :< DIRN - 180d
+ # FROM P1 P2 P3 P4 TO
+ }
+ PDF @Yield {}
+ }
+ }
+
+ import @Geometry
+ def @UWrapCurvePath
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ {arrow @FromArrowLength backarrowlength}
+ {arrow @ToArrowLength arrowlength}
+ "{" from "}" "{" to "}"
+ xindent zindent bias fbias tbias radius "ldiaguwrapcurvepath"
+ # DIRN := if cond { xcoord from??CTR < xcoord to??CTR }
+ # then { 180d } else { 0d }
+ # CLOCK := if cond { xcoord from??CTR < xcoord to??CTR }
+ # then { clockwise } else { anticlockwise }
+ # FROM :: from boundaryatangle DIRN
+ # ++ {arrow @FromArrowLength backarrowlength} atangle DIRN
+ # FROM :< DIRN
+ # TO :: to boundaryatangle { DIRN + 180d }
+ # ++ {arrow @ToArrowLength arrowlength} atangle { DIRN + 180d }
+ # TO :< DIRN
+ #
+ # XP1 := FROM ++ {fbias max 0} atangle DIRN
+ # XP4 := TO ++ {tbias max 0} atangle { DIRN + 180d }
+ # YC := ycoord { from boundaryatangle 90d } max
+ # ycoord { to boundaryatangle 90d }
+ # + { bias max 0 }
+ # XP2 := { xcoord XP1 YC }
+ # XP3 := { xcoord XP4 YC }
+ #
+ # RP1 := radius min { XP1 distance FROM } min
+ # { { XP1 distance XP2 } / 2 }
+ # XP1PRE := XP1 ++ RP1 atangle { XP1 angleto FROM }
+ # XP1POST := XP1 ++ RP1 atangle { XP1 angleto XP2 }
+ # XP1CTR := XP1PRE ++ RP1 atangle { XP1 angleto XP2 }
+ # P1 :: XP1CTR ++ RP1 atangle { XP1CTR angleto XP1 }
+ # P1 :< XP1CTR angleto P1 + DIRN + 90d
+ #
+ # RP2 := radius min { { XP1 distance XP2 } / 2 }
+ # min { { XP2 distance XP3 } / 2 }
+ # XP2PRE := XP2 ++ RP2 atangle { XP2 angleto XP1 }
+ # XP2POST := XP2 ++ RP2 atangle { XP2 angleto XP3 }
+ # XP2CTR := XP2PRE ++ RP2 atangle { XP2 angleto XP3 }
+ # P2 :: XP2CTR ++ RP2 atangle { XP2CTR angleto XP2 }
+ # P2 :< XP2CTR angleto P2 + DIRN + 90d
+ #
+ # RP3 := radius min { { XP2 distance XP3 } / 2 }
+ # min { { XP3 distance XP4 } / 2 }
+ # XP3PRE := XP3 ++ RP3 atangle { XP3 angleto XP2 }
+ # XP3POST := XP3 ++ RP3 atangle { XP3 angleto XP4 }
+ # XP3CTR := XP3PRE ++ RP3 atangle { XP3 angleto XP4 }
+ # P3 :: XP3CTR ++ RP3 atangle { XP3CTR angleto XP3 }
+ # P3 :< XP3CTR angleto P3 + DIRN + 90d
+ #
+ # RP4 := radius min { { XP4 distance XP3 } / 2 }
+ # min { XP4 distance TO }
+ # XP4PRE := XP4 ++ RP4 atangle { XP4 angleto XP3 }
+ # XP4POST := XP4 ++ RP4 atangle { XP4 angleto TO }
+ # XP4CTR := XP4PRE ++ RP4 atangle { XP4 angleto TO }
+ # P4 :: XP4CTR ++ RP4 atangle { XP4CTR angleto XP4 }
+ # P4 :< XP4CTR angleto P4 + DIRN + 90d
+ #
+ # XINDENT := xindent min { FROM distance XP1PRE }
+ # LFROM :: FROM ++ XINDENT atangle DIRN
+ # LFROM :< FROM@ANGLE
+ #
+ # LMID :: XP2 ** 0.5 ++ XP3 ** 0.5
+ # LMID :< DIRN - 180d
+ #
+ # ZINDENT := zindent min { TO distance XP4POST }
+ # LTO :: TO ++ ZINDENT atangle { DIRN + 180d }
+ # LTO :< TO@ANGLE
+ #
+ # FROM LFROM
+ # XP1PRE [XP1CTR CLOCK] XP1POST
+ # XP2PRE [XP2CTR CLOCK] XP2POST
+ # LMID
+ # XP3PRE [XP3CTR CLOCK] XP3POST
+ # XP4PRE [XP4CTR CLOCK] XP4POST
+ # LTO TO
+ }
+ PDF @Yield {}
+ }
+ }
+
+ import @Geometry
+ def @Path
+ {
+ path @Case {
+ line @Yield @LinePath
+ doubleline @Yield @DoubleLinePath
+ { acurve curve } @Yield @ACurvePath
+ ccurve @Yield @CCurvePath
+ bezier @Yield @BezierPath
+ vhline @Yield @VHLinePath
+ vhcurve @Yield @VHCurvePath
+ hvline @Yield @HVLinePath
+ hvcurve @Yield @HVCurvePath
+ lvrline @Yield @LVRLinePath
+ lvrcurve @Yield @LVRCurvePath
+ rvlline @Yield @RVLLinePath
+ rvlcurve @Yield @RVLCurvePath
+ dhuline @Yield @DHULinePath
+ dhucurve @Yield @DHUCurvePath
+ uhdline @Yield @UHDLinePath
+ uhdcurve @Yield @UHDCurvePath
+ hvhline @Yield @HVHLinePath
+ hvhcurve @Yield @HVHCurvePath
+ vhvline @Yield @VHVLinePath
+ vhvcurve @Yield @VHVCurvePath
+ dwrapline @Yield @DWrapLinePath
+ dwrapcurve @Yield @DWrapCurvePath
+ uwrapline @Yield @UWrapLinePath
+ uwrapcurve @Yield @UWrapCurvePath
+ else @Yield {
+ path
+ from { from }
+ to { to }
+ bias { bias }
+ fbias { fbias }
+ tbias { tbias }
+ hfrac { hfrac }
+ hbias { hbias }
+ radius { radius }
+ xindent { xindent }
+ zindent { zindent }
+ frompt { frompt }
+ topt { topt }
+ arrow { arrow }
+ arrowlength { arrowlength }
+ backarrowlength { backarrowlength }
+ }
+ }
+ }
+
+ def @FromLabel
+ {
+ @DoLabel
+ which { "f" }
+ label { fromlabel @Else @FromArrow }
+ labelmargin { fromlabelmargin }
+ labelfont { fromlabelfont }
+ labelbreak { fromlabelbreak }
+ labelformat { fromlabelformat @Body }
+ labelpos { fromlabelpos }
+ labelprox { fromlabelprox }
+ labelangle { fromlabelangle }
+ labelctr { fromlabelctr }
+ labeladjust { fromlabeladjust }
+ }
+
+ def @ToLabel
+ {
+ @DoLabel
+ which { "t" }
+ label { tolabel @Else @ToArrow }
+ labelmargin { tolabelmargin }
+ labelfont { tolabelfont }
+ labelbreak { tolabelbreak }
+ labelformat { tolabelformat @Body }
+ labelpos { tolabelpos }
+ labelprox { tolabelprox }
+ labelangle { tolabelangle }
+ labelctr { tolabelctr }
+ labeladjust { tolabeladjust }
+ }
+
+ def @Direct
+ {
+ pathstyle @Case {
+ {
+ "/ldiagsolid"
+ "/ldiagdashed"
+ "/ldiagdotted"
+ "/ldiagnoline"
+ "/ldiagcdashed"
+ "/ldiagdotdashed"
+ "/ldiagdotcdashed"
+ "/ldiagdotdotdashed"
+ "/ldiagdotdotcdashed"
+ "/ldiagdotdotdotdashed"
+ "/ldiagdotdotdotcdashed"
+ } @Yield 1
+ else @Yield 0
+ }
+ }
+
+ @BackEnd @Case {
+ PostScript @Yield {
+
+ @Null & # so that preceding space gets chewed up
+ {
+ @Direct "ldiaglinkbegin" @ColourCommand pathcolour
+ "[" @Path "]" pathdashlength "[" pathstyle "]" pathwidth "ldiaglinkend"
+ }
+ @Graphic
+ {
+ / { fromlabel @Else @FromArrow} @IfNonEmpty @FromLabel
+ / { xlabel @Else linklabel } @IfNonEmpty @XLabel
+ / { ylabel @Else linklabel } @IfNonEmpty @YLabel
+ / { zlabel @Else linklabel } @IfNonEmpty @ZLabel
+ / { tolabel @Else @ToArrow } @IfNonEmpty @ToLabel
+ }
+
+ }
+ PDF @Yield {}
+ }
+ }
+
+
+ def @ObjectLink
+ precedence 90
+ associativity left
+ left x
+ named treehsep { treehsep }
+ named treevsep { treevsep }
+ named format
+ named x {}
+ named y {}
+ named insinuatelink {}
+ named treehsep {}
+ named treevsep {}
+ { x | y | insinuatelink }
+ import @Geometry named path
+ named from {}
+ named to {}
+ named bias {}
+ named fbias {}
+ named tbias {}
+ named hfrac {}
+ named hbias {}
+ named radius {}
+ named xindent {}
+ named zindent {}
+ named frompt {}
+ named topt {}
+ named arrow {}
+ named arrowlength {}
+ named backarrowlength {}
+ { path
+ from { from }
+ to { to }
+ bias { bias }
+ fbias { fbias }
+ tbias { tbias }
+ hfrac { hfrac }
+ hbias { hbias }
+ radius { radius }
+ xindent { xindent }
+ zindent { zindent }
+ frompt { frompt }
+ topt { topt }
+ arrow { arrow }
+ arrowlength { arrowlength }
+ backarrowlength { backarrowlength }
+ }
+ import @Geometry named basefrom { }
+ import @Geometry named baseto { }
+ import @Geometry named from { }
+ import @Geometry named to { }
+ import @Geometry named bias { bias }
+ import @Geometry named fbias { fbias }
+ import @Geometry named tbias { tbias }
+ import @Geometry named hfrac { hfrac }
+ import @Geometry named hbias { hbias }
+ import @Geometry named radius { radius }
+ import @Geometry named xindent { xindent }
+ import @Geometry named zindent { zindent }
+ import @Geometry named frompt { frompt }
+ import @Geometry named topt { topt }
+ named pathstyle
+ named solid { "/ldiagsolid" }
+ named dashed { "/ldiagdashed" }
+ named cdashed { "/ldiagcdashed" }
+ named dotdashed { "/ldiagdotdashed" }
+ named dotcdashed { "/ldiagdotcdashed" }
+ named dotdotdashed { "/ldiagdotdotdashed" }
+ named dotdotcdashed { "/ldiagdotdotcdashed" }
+ named dotdotdotdashed { "/ldiagdotdotdotdashed" }
+ named dotdotdotcdashed { "/ldiagdotdotdotcdashed" }
+ named dotted { "/ldiagdotted" }
+ named noline { "/ldiagnoline" }
+ { pathstyle }
+ import @Geometry named pathdashlength { pathdashlength }
+ import @Geometry named pathwidth
+ named thin { 0.04 ft }
+ named medium { 0.08 ft }
+ named thick { 0.12 ft }
+ { pathwidth }
+ named pathcolour { pathcolour }
+ import @Geometry named pathgap
+ named thin { 0.08 ft }
+ named medium { 0.16 ft }
+ named thick { 0.24 ft }
+ { pathgap }
+
+ named arrow { arrow }
+ named arrowstyle { arrowstyle }
+ named arrowwidth { arrowwidth }
+ named arrowlength { arrowlength }
+ named backarrowstyle { backarrowstyle }
+ named backarrowwidth { backarrowwidth }
+ named backarrowlength { backarrowlength }
+
+ named linklabel { linklabel }
+ named linklabelmargin { linklabelmargin }
+ named linklabelfont { linklabelfont }
+ named linklabelbreak { linklabelbreak }
+ named linklabelformat right @Body { linklabelformat @Body }
+ import @Geometry named linklabelpos { linklabelpos }
+ named linklabelprox { linklabelprox }
+ import @Geometry named linklabelangle { linklabelangle }
+ named linklabelctr { linklabelctr }
+ import @Geometry named linklabeladjust { linklabeladjust }
+
+ named xlabel { xlabel }
+ named xlabelmargin { xlabelmargin }
+ named xlabelfont { xlabelfont }
+ named xlabelbreak { xlabelbreak }
+ named xlabelformat right @Body { xlabelformat @Body }
+ import @Geometry named xlabelpos { xlabelpos }
+ named xlabelprox { xlabelprox }
+ import @Geometry named xlabelangle { xlabelangle }
+ named xlabelctr { xlabelctr }
+ import @Geometry named xlabeladjust { xlabeladjust }
+
+ named ylabel { ylabel }
+ named ylabelmargin { ylabelmargin }
+ named ylabelfont { ylabelfont }
+ named ylabelbreak { ylabelbreak }
+ named ylabelformat right @Body { ylabelformat @Body }
+ import @Geometry named ylabelpos { ylabelpos }
+ named ylabelprox { ylabelprox }
+ import @Geometry named ylabelangle { ylabelangle }
+ named ylabelctr { ylabelctr }
+ import @Geometry named ylabeladjust { ylabeladjust }
+
+ named zlabel { zlabel }
+ named zlabelmargin { zlabelmargin }
+ named zlabelfont { zlabelfont }
+ named zlabelbreak { zlabelbreak }
+ named zlabelformat right @Body { zlabelformat @Body }
+ import @Geometry named zlabelpos { zlabelpos }
+ named zlabelprox { zlabelprox }
+ import @Geometry named zlabelangle { zlabelangle }
+ named zlabelctr { zlabelctr }
+ import @Geometry named zlabeladjust { zlabeladjust }
+
+ named fromlabel { fromlabel }
+ named fromlabelmargin { fromlabelmargin }
+ named fromlabelfont { fromlabelfont }
+ named fromlabelbreak { fromlabelbreak }
+ named fromlabelformat right @Body { fromlabelformat @Body }
+ import @Geometry named fromlabelpos { fromlabelpos }
+ named fromlabelprox { fromlabelprox }
+ import @Geometry named fromlabelangle { fromlabelangle }
+ named fromlabelctr { fromlabelctr }
+ import @Geometry named fromlabeladjust { fromlabeladjust }
+
+ named tolabel { tolabel }
+ named tolabelmargin { tolabelmargin }
+ named tolabelfont { tolabelfont }
+ named tolabelbreak { tolabelbreak }
+ named tolabelformat right @Body { tolabelformat @Body }
+ import @Geometry named tolabelpos { tolabelpos }
+ named tolabelprox { tolabelprox }
+ import @Geometry named tolabelangle { tolabelangle }
+ named tolabelctr { tolabelctr }
+ import @Geometry named tolabeladjust{ tolabeladjust }
+ right y
+
+ {
+ def @From
+ {
+ from @Case {
+ "" @Yield basefrom
+ else @Yield { basefrom"@"from }
+ }
+ }
+
+ def @To
+ {
+ to @Case {
+ "" @Yield baseto
+ else @Yield { baseto"@"to }
+ }
+ }
+
+ format
+ x { x }
+ y { y }
+ treehsep { treehsep }
+ treevsep { treevsep }
+ insinuatelink {
+ @Link
+ from { @From }
+ to { @To }
+ bias { bias }
+ fbias { fbias }
+ tbias { tbias }
+ hfrac { hfrac }
+ hbias { hbias }
+ radius { radius }
+ xindent { xindent }
+ zindent { zindent }
+ frompt { frompt }
+ topt { topt }
+ path { path
+ from { @From }
+ to { @To }
+ bias { bias }
+ fbias { fbias }
+ tbias { tbias }
+ hfrac { hfrac }
+ hbias { hbias }
+ radius { radius }
+ xindent { xindent }
+ zindent { zindent }
+ frompt { frompt }
+ topt { topt }
+ arrow { arrow }
+ arrowlength { arrowlength }
+ backarrowlength { backarrowlength }
+ }
+ pathstyle { pathstyle }
+ pathdashlength { pathdashlength }
+ pathwidth { pathwidth }
+ pathcolour { pathcolour }
+ pathgap { pathgap }
+ arrow { arrow }
+ arrowstyle { arrowstyle }
+ arrowwidth { arrowwidth }
+ arrowlength { arrowlength }
+ backarrowstyle { backarrowstyle }
+ backarrowwidth { backarrowwidth }
+ backarrowlength { backarrowlength }
+
+ linklabel { linklabel }
+ linklabelmargin { linklabelmargin }
+ linklabelfont { linklabelfont }
+ linklabelbreak { linklabelbreak }
+ linklabelformat { linklabelformat @Body }
+ linklabelpos { linklabelpos }
+ linklabelprox { linklabelprox }
+ linklabelangle { linklabelangle }
+ linklabelctr { linklabelctr }
+ linklabeladjust { linklabeladjust }
+
+ xlabel { xlabel }
+ xlabelmargin { xlabelmargin }
+ xlabelfont { xlabelfont }
+ xlabelbreak { xlabelbreak }
+ xlabelformat { xlabelformat @Body }
+ xlabelpos { xlabelpos }
+ xlabelprox { xlabelprox }
+ xlabelangle { xlabelangle }
+ xlabelctr { xlabelctr }
+ xlabeladjust { xlabeladjust }
+
+ ylabel { ylabel }
+ ylabelmargin { ylabelmargin }
+ ylabelfont { ylabelfont }
+ ylabelbreak { ylabelbreak }
+ ylabelformat { ylabelformat @Body }
+ ylabelpos { ylabelpos }
+ ylabelprox { ylabelprox }
+ ylabelangle { ylabelangle }
+ ylabelctr { ylabelctr }
+ ylabeladjust { ylabeladjust }
+
+ zlabel { zlabel }
+ zlabelmargin { zlabelmargin }
+ zlabelfont { zlabelfont }
+ zlabelbreak { zlabelbreak }
+ zlabelformat { zlabelformat @Body }
+ zlabelpos { zlabelpos }
+ zlabelprox { zlabelprox }
+ zlabelangle { zlabelangle }
+ zlabelctr { zlabelctr }
+ zlabeladjust { zlabeladjust }
+
+ fromlabel { fromlabel }
+ fromlabelmargin { fromlabelmargin }
+ fromlabelfont { fromlabelfont }
+ fromlabelbreak { fromlabelbreak }
+ fromlabelformat { fromlabelformat @Body }
+ fromlabelpos { fromlabelpos }
+ fromlabelprox { fromlabelprox }
+ fromlabelangle { fromlabelangle }
+ fromlabelctr { fromlabelctr }
+ fromlabeladjust { fromlabeladjust }
+
+ tolabel { tolabel }
+ tolabelmargin { tolabelmargin }
+ tolabelfont { tolabelfont }
+ tolabelbreak { tolabelbreak }
+ tolabelformat { tolabelformat @Body }
+ tolabelpos { tolabelpos }
+ tolabelprox { tolabelprox }
+ tolabelangle { tolabelangle }
+ tolabelctr { tolabelctr }
+ tolabeladjust { tolabeladjust }
+ }
+ }
+
+
+ #######################################################################
+ # #
+ # Abbreviations for standard link types #
+ # #
+ #######################################################################
+
+ macro @Line { @Link path { line } }
+ macro @DoubleLine { @Link path { doubleline } }
+ macro @Arrow { @Link path { line } arrow { yes } }
+ macro @DoubleArrow { @Link path {doubleline} arrow { yes } }
+ macro @Curve { @Link path { curve } }
+ macro @CurveArrow { @Link path { curve } arrow { yes } }
+ macro @ACurve { @Link path { acurve } }
+ macro @ACurveArrow { @Link path { acurve } arrow { yes } }
+ macro @CCurve { @Link path { ccurve } }
+ macro @CCurveArrow { @Link path { ccurve } arrow { yes } }
+
+ macro @Bezier { @Link path { bezier } }
+ macro @BezierArrow { @Link path { bezier } arrow { yes } }
+
+ macro @HVLine { @Link path { hvline } }
+ macro @HVArrow { @Link path { hvline } arrow { yes } }
+ macro @VHLine { @Link path { vhline } }
+ macro @VHArrow { @Link path { vhline } arrow { yes } }
+ macro @HVCurve { @Link path { hvcurve } }
+ macro @HVCurveArrow { @Link path { hvcurve } arrow { yes } }
+ macro @VHCurve { @Link path { vhcurve } }
+ macro @VHCurveArrow { @Link path { vhcurve } arrow { yes } }
+
+ macro @LVRLine { @Link path { lvrline } }
+ macro @LVRArrow { @Link path { lvrline } arrow { yes } }
+ macro @RVLLine { @Link path { rvlline } }
+ macro @RVLArrow { @Link path { rvlline } arrow { yes } }
+ macro @LVRCurve { @Link path { lvrcurve } }
+ macro @LVRCurveArrow { @Link path { lvrcurve } arrow { yes } }
+ macro @RVLCurve { @Link path { rvlcurve } }
+ macro @RVLCurveArrow { @Link path { rvlcurve } arrow { yes } }
+
+ macro @DHULine { @Link path { dhuline } }
+ macro @DHUArrow { @Link path { dhuline } arrow { yes } }
+ macro @UHDLine { @Link path { uhdline } }
+ macro @UHDArrow { @Link path { uhdline } arrow { yes } }
+ macro @DHUCurve { @Link path { dhucurve } }
+ macro @DHUCurveArrow { @Link path { dhucurve } arrow { yes } }
+ macro @UHDCurve { @Link path { uhdcurve } }
+ macro @UHDCurveArrow { @Link path { uhdcurve } arrow { yes } }
+
+ macro @HVHLine { @Link path { hvhline } }
+ macro @HVHArrow { @Link path { hvhline } arrow { yes } }
+ macro @VHVLine { @Link path { vhvline } }
+ macro @VHVArrow { @Link path { vhvline } arrow { yes } }
+ macro @HVHCurve { @Link path { hvhcurve } }
+ macro @HVHCurveArrow { @Link path { hvhcurve } arrow { yes } }
+ macro @VHVCurve { @Link path { vhvcurve } }
+ macro @VHVCurveArrow { @Link path { vhvcurve } arrow { yes } }
+
+ macro @DWrapLine { @Link path { dwrapline} }
+ macro @DWrapArrow { @Link path { dwrapline} arrow { yes } }
+ macro @UWrapLine { @Link path { uwrapline} }
+ macro @UWrapArrow { @Link path { uwrapline} arrow { yes } }
+ macro @DWrapCurve { @Link path {dwrapcurve} }
+ macro @DWrapCurveArrow { @Link path {dwrapcurve} arrow { yes } }
+ macro @UWrapCurve { @Link path {uwrapcurve} }
+ macro @UWrapCurveArrow { @Link path {uwrapcurve} arrow { yes } }
+
+
+ #######################################################################
+ # #
+ # Tree code. #
+ # #
+ #######################################################################
+
+ export
+
+ @Node @Box @CurveBox @ShadowBox @Square @Diamond
+ @Polygon @Isosceles @Ellipse @Circle
+ @LeftSub @ZeroWidthLeftSub @RightSub @ZeroWidthRightSub
+ @FirstSub @NextSub @StubSub
+
+ def @Tree
+ named treehindent
+ named left { 0.0rt }
+ named ctr { 0.5rt }
+ named right { 1.0rt }
+ { treehindent }
+ body x
+ {
+
+ macro @TNode { @@Node nodetag { T } }
+ macro @Node { @TNode }
+ macro @Box { @TNode outline { box } }
+ macro @CurveBox { @TNode outline { curvebox } }
+ macro @ShadowBox { @TNode outline { shadowbox } }
+ macro @Square { @TNode outline { square } }
+ macro @Diamond { @TNode outline { diamond } }
+ macro @Polygon { @TNode outline { polygon } }
+ macro @Isosceles { @TNode outline { isosceles } }
+ macro @Ellipse { @TNode outline { ellipse } }
+ macro @Circle { @TNode outline { circle } }
+
+ def fixroot
+ precedence 90
+ left root
+ {
+ |treehindent root
+ }
+
+ macro @LeftSub
+ {
+ @ObjectLink
+ basefrom { T }
+ baseto { L@T }
+ format { { /treevsep {L::y} } |treehsep x | insinuatelink }
+ }
+
+ macro @ZeroWidthLeftSub
+ {
+ @ObjectLink
+ basefrom { T }
+ baseto { L@T }
+ format { { /treevsep @ZeroWidth { {L::y} ^|treehsep } } |
+ x | insinuatelink }
+ }
+
+ macro @FirstSub
+ {
+ fixroot //
+ @ObjectLink
+ basefrom { T }
+ baseto { S@T }
+ format { //treevsep {S::y} | insinuatelink | }
+ }
+
+ macro @NextSub
+ {
+ @ObjectLink
+ basefrom { T }
+ baseto { S@T }
+ format { x |treehsep { / {S::y} | insinuatelink | } }
+ }
+
+ macro @RightSub
+ {
+ @ObjectLink
+ basefrom { T }
+ baseto { R@T }
+ format { x |treehsep { /treevsep {R::y} } | insinuatelink }
+ }
+
+ macro @ZeroWidthRightSub
+ {
+ @ObjectLink
+ basefrom { T }
+ baseto { R@T }
+ format { x | { /treevsep @ZeroWidth { |treehsep {R::y} } }
+ | insinuatelink }
+ }
+
+ macro @StubSub
+ {
+ @ObjectLink
+ basefrom { T }
+ baseto { T }
+ format { @VContract { |0.5rt x | // |0.5rt
+ S:: @BoxLabels @CatchTags y | } | insinuatelink }
+ # path { from S@T@SW S@T@SE to }
+ path {
+ P1:: S@SW
+ P2:: S@SE
+ FROM:: from boundaryatangle { from??CTR angleto P1 }
+ TO:: to boundaryatangle { to??CTR angleto P2 }
+ FROM P1 P2 TO
+ }
+ }
+
+ @HContract @VContract x
+ }
+
+ export
+
+ @Node @Box @CurveBox @ShadowBox @Square @Diamond
+ @Polygon @Isosceles @Ellipse @Circle
+ @LeftSub @ZeroWidthLeftSub @RightSub @ZeroWidthRightSub
+ @FirstSub @NextSub @StubSub
+
+ def @HTree
+ named treevindent
+ named top { 0.0rt }
+ named ctr { 0.5rt }
+ named foot { 1.0rt }
+ { treevindent }
+ body x
+ {
+
+ macro @TNode { @@Node nodetag { T } }
+ macro @Node { @TNode }
+ macro @Box { @TNode outline { box } }
+ macro @CurveBox { @TNode outline { curvebox } }
+ macro @ShadowBox { @TNode outline { shadowbox } }
+ macro @Square { @TNode outline { square } }
+ macro @Diamond { @TNode outline { diamond } }
+ macro @Polygon { @TNode outline { polygon } }
+ macro @Isosceles { @TNode outline { isosceles } }
+ macro @Ellipse { @TNode outline { ellipse } }
+ macro @Circle { @TNode outline { circle } }
+
+ def fixroot
+ precedence 90
+ left root
+ {
+ /treevindent root
+ }
+
+ macro @LeftSub
+ {
+ @ObjectLink
+ basefrom { T }
+ baseto { L@T }
+ format { { |treehsep {L::y} } /treevsep x / insinuatelink }
+ }
+
+ macro @ZeroWidthLeftSub
+ {
+ @ObjectLink
+ basefrom { T }
+ baseto { L@T }
+ format { { |treehsep @ZeroWidth { {L::y} ^/treevsep } } /
+ x / insinuatelink }
+ }
+
+ macro @FirstSub
+ {
+ fixroot ||
+ @ObjectLink
+ basefrom { T }
+ baseto { S@T }
+ format { ||treehsep { {S::y} / insinuatelink / } }
+ }
+
+ macro @NextSub
+ {
+ @ObjectLink
+ basefrom { T }
+ baseto { S@T }
+ format { x /treevsep { | {S::y} { / insinuatelink / } } }
+ }
+
+ macro @RightSub
+ {
+ @ObjectLink
+ basefrom { T }
+ baseto { R@T }
+ format { x /treevsep { |treehsep {R::y} } / insinuatelink }
+ }
+
+ macro @ZeroWidthRightSub
+ {
+ @ObjectLink
+ basefrom { T }
+ baseto { R@T }
+ format { x / { |treehsep @ZeroWidth { /treevsep {R::y} } }
+ / insinuatelink }
+ }
+
+ macro @StubSub
+ {
+ @ObjectLink
+ basefrom { T }
+ baseto { T }
+ format { @VContract { { /0.5rt x / } || { /0.5rt
+ S:: @BoxLabels @CatchTags y / } } / insinuatelink }
+ # path { from S@T@SW S@T@SE to }
+ path {
+ P1:: S@NE
+ P2:: S@SE
+ FROM:: from boundaryatangle { from??CTR angleto P1 }
+ TO:: to boundaryatangle { to??CTR angleto P2 }
+ FROM P1 P2 TO
+ }
+ }
+
+ @HContract @VContract x
+ }
+
+
+ #######################################################################
+ # #
+ # Syntax diagrams code #
+ # #
+ # Helper definitions; also skips #
+ # #
+ #######################################################################
+
+ def pslength right x { "("x") ldiagdecodelength" }
+ def pssyntaxgap { "("syntaxgap") ldiagdecodelength" }
+ def pssyntaxbias { "("syntaxbias") ldiagdecodelength" }
+ def pssyntaxradius { "("syntaxradius") ldiagdecodelength" }
+
+ def @ArrowLeftFrom left direction right pt
+ {
+ @Line arrow { direction } from { pt } to { pt -- { pssyntaxgap 0 } }
+ }
+
+ def @ArrowRightFrom left direction right pt
+ {
+ @Line arrow { direction } from { pt } to { pt ++ { pssyntaxgap 0 } }
+ }
+
+ def @ArrowUpFrom left direction right pt
+ {
+ @Line arrow { direction } from { pt } to { pt ++ { 0 pssyntaxgap } }
+ }
+
+ def @ArrowDownFrom left direction right pt
+ {
+ @Line arrow { direction } from { pt } to { pt -- { 0 pssyntaxgap } }
+ }
+
+ macro @LineLeftFrom { no @ArrowLeftFrom }
+ macro @LineRightFrom { no @ArrowRightFrom }
+ macro @LineUpFrom { no @ArrowUpFrom }
+ macro @LineDownFrom { no @ArrowDownFrom }
+
+ macro @Right { "right" }
+ macro @Up { "up" }
+ macro @Left { "left" }
+ macro @Down { "down" }
+
+ def @CurrDirection { @GetContext "diag_dirn" }
+
+ def @GoRight right x { {"diag_dirn" @Yield @Right} @SetContext x }
+ def @GoUp right x { {"diag_dirn" @Yield @Up } @SetContext x }
+ def @GoLeft right x { {"diag_dirn" @Yield @Left } @SetContext x }
+ def @GoDown right x { {"diag_dirn" @Yield @Down } @SetContext x }
+
+ # macro @Right { "1p" }
+ # macro @Up { "2p" }
+ # macro @Left { "3p" }
+ # macro @Down { "4p" }
+
+ # macro @CurrDirection { @CurrZUnit }
+
+ # def @GoRight right x { @Right @ZUnit x }
+ # def @GoUp right x { @Up @ZUnit x }
+ # def @GoLeft right x { @Left @ZUnit x }
+ # def @GoDown right x { @Down @ZUnit x }
+
+ def @GoReverse right x
+ {
+ @CurrDirection @Case {
+ @Right @Yield @GoLeft x
+ @Up @Yield @GoDown x
+ @Left @Yield @GoRight x
+ @Down @Yield @GoUp x
+ }
+ }
+
+
+ def @LabelMarks right x {
+ @HContract @VContract @ANode
+ outline {
+ NMK:: { xmark ysize }
+ SMK:: { xmark 0 }
+ WMK:: { 0 ymark }
+ EMK:: { xsize ymark }
+ NW:: { 0 ysize }
+ SW:: { 0 0 }
+ SE:: { xsize 0 }
+ NE:: { xsize ysize }
+ }
+ font {}
+ margin { 0c }
+ vstrut { no }
+ outlinestyle { noline }
+ halign { mark }
+ valign { mark }
+ x
+ }
+
+ def @HSkip
+ {
+ OX:: @LabelMarks { syntaxgap @Wide {} }
+ / @Line from { "OX@WMK" } to { "OX@EMK" }
+ }
+
+ def @VSkip
+ {
+ OX:: @LabelMarks { syntaxgap @High {} }
+ / @Line from { "OX@NMK" } to { "OX@SMK" }
+ }
+
+ def @Skip
+ {
+ @CurrDirection @Case {
+ { @Left @Right } @Yield @HSkip
+ { @Up @Down } @Yield @VSkip
+ }
+ }
+
+ def @LRLine right x
+ {
+ @HContract @VContract { @HSkip | x | @HSkip }
+ }
+
+ def @UDLine right x
+ {
+ @HContract @VContract { @VSkip / x / @VSkip }
+ }
+
+
+ #######################################################################
+ # #
+ # Ordinary starts: @StartRight, @StartUp, @StartLeft, @StartDown #
+ # #
+ #######################################################################
+
+ def @StartRight right x
+ {
+ @VContract {
+ @LabelMarks {
+ |syntaxgap @GoRight x |syntaxgap
+ }
+ / @LineRightFrom WMK
+ / back @ArrowLeftFrom EMK
+ }
+ }
+
+ def @StartUp right x
+ {
+ @VContract {
+ @LabelMarks {
+ ^/syntaxgap @GoUp x /syntaxgap
+ }
+ / @LineUpFrom SMK
+ / back @ArrowDownFrom NMK
+ }
+ }
+
+ def @StartLeft right x
+ {
+ @VContract {
+ @LabelMarks {
+ |syntaxgap @GoLeft x |syntaxgap
+ }
+ / @LineLeftFrom EMK
+ / back @ArrowRightFrom WMK
+ }
+ }
+
+ def @StartDown right x
+ {
+ @VContract {
+ @LabelMarks {
+ ^/syntaxgap @GoDown x /syntaxgap
+ }
+ / @LineDownFrom NMK
+ / back @ArrowUpFrom SMK
+ }
+ }
+
+
+ #######################################################################
+ # #
+ # Fancy starts: @StartRightRight, @StartRightDown #
+ # #
+ #######################################################################
+
+ def @StartRightRight
+ named A {}
+ named B {}
+ {
+ AA:: @LabelMarks { @HSkip & @GoRight A }
+ //syntaxgap
+ //syntaxgap
+ |syntaxgap |syntaxgap |syntaxgap |syntaxgap |syntaxgap |syntaxgap
+ CC:: @LabelMarks {}
+ //syntaxgap
+ //syntaxgap
+ |syntaxgap |syntaxgap |syntaxgap |syntaxgap |syntaxgap |syntaxgap
+ BB:: @LabelMarks { @GoRight B & @HSkip }
+ // @RVLCurve from { AA@EMK } to { CC@WMK }
+ bias { pssyntaxbias } radius { pssyntaxradius }
+ // @LVRCurve from { CC@WMK } to { BB@WMK }
+ bias { pssyntaxbias } radius { pssyntaxradius }
+ back @ArrowLeftFrom BB@EMK
+ }
+
+ def @StartRightRightRight
+ named A {}
+ named B {}
+ named C {}
+ {
+ AA:: @LabelMarks { @HSkip & @GoRight A }
+ //syntaxgap
+ //syntaxgap
+ |syntaxgap |syntaxgap |syntaxgap |syntaxgap |syntaxgap |syntaxgap
+ XX:: @LabelMarks {}
+ //syntaxgap
+ //syntaxgap
+ |syntaxgap |syntaxgap |syntaxgap |syntaxgap |syntaxgap |syntaxgap
+ BB:: @LabelMarks { @GoRight B & @HSkip }
+ //syntaxgap
+ //syntaxgap
+ |syntaxgap |syntaxgap |syntaxgap |syntaxgap |syntaxgap |syntaxgap
+ YY:: @LabelMarks {}
+ //syntaxgap
+ //syntaxgap
+ |syntaxgap |syntaxgap |syntaxgap |syntaxgap |syntaxgap |syntaxgap
+ CC:: @LabelMarks { @GoRight C & @HSkip }
+ //syntaxgap
+ //syntaxgap
+ // @RVLCurve from { AA@EMK } to { XX@WMK }
+ bias { pssyntaxbias } radius { pssyntaxradius }
+ // @LVRCurve from { XX@WMK } to { BB@WMK }
+ bias { pssyntaxbias } radius { pssyntaxradius }
+ // @RVLCurve from { BB@EMK } to { YY@WMK }
+ bias { pssyntaxbias } radius { pssyntaxradius }
+ // @LVRCurve from { YY@WMK } to { CC@WMK }
+ bias { pssyntaxbias } radius { pssyntaxradius }
+ back @ArrowLeftFrom CC@EMK
+ }
+
+ def @StartRightDown
+ named A {}
+ named B {}
+ {
+ @HContract @VContract {
+ / BB:: @LabelMarks |syntaxgap AA::@LabelMarks @GoRight A |syntaxbias
+ /syntaxgap | |
+ /syntaxgap | |
+ }
+ / @Line from { BB@EMK } to { AA@WMK }
+ / @RVLCurve from { AA@EMK } to { xcoord AA@EMK pssyntaxgap }
+ bias { pssyntaxbias } radius { pssyntaxradius }
+ / @HVCurve from { xcoord AA@EMK pssyntaxgap } to { 0 0 }
+ bias { pssyntaxbias } radius { pssyntaxradius }
+ / @GoDown B
+ / @VSkip
+ / CC:: @LabelMarks {}
+ / back @ArrowUpFrom CC@NMK
+ }
+
+
+ #######################################################################
+ # #
+ # Cells: @XCell, @ACell, @BCell, @CCell #
+ # #
+ #######################################################################
+
+ def @RightCell right x
+ {
+ @VContract {
+ @LabelMarks {
+ |syntaxgap x |syntaxgap
+ }
+ / forward @ArrowRightFrom WMK
+ / @LineLeftFrom EMK
+ }
+ }
+
+ def @LeftCell right x
+ {
+ @VContract {
+ @LabelMarks {
+ |syntaxgap x |syntaxgap
+ }
+ / forward @ArrowLeftFrom EMK
+ / @LineRightFrom WMK
+ }
+ }
+
+ def @DownCell right x
+ {
+ @VContract {
+ @LabelMarks {
+ ^/syntaxgap x /syntaxgap
+ }
+ / forward @ArrowDownFrom NMK
+ / @LineUpFrom SMK
+ }
+ }
+
+ def @UpCell right x
+ {
+ @VContract {
+ @LabelMarks {
+ ^/syntaxgap x /syntaxgap
+ }
+ / forward @ArrowUpFrom SMK
+ / @LineDownFrom NMK
+ }
+ }
+
+ def @XCell right x
+ {
+ @CurrDirection @Case {
+ @Right @Yield @RightCell x
+ @Up @Yield @UpCell x
+ @Left @Yield @LeftCell x
+ @Down @Yield @DownCell x
+ }
+ }
+
+ macro @ACell { @XCell @ANode }
+ macro @BCell { @XCell @BNode }
+ macro @CCell { @XCell @CNode }
+ macro @DCell { @XCell @DNode }
+ macro @ECell { @XCell @ENode }
+
+
+ #######################################################################
+ # #
+ # @Sequence #
+ # #
+ #######################################################################
+
+ def @Sequence
+ named A {}
+ named B {}
+ named C {}
+ named D {}
+ named E {}
+ named F {}
+ named G {}
+ named H {}
+ named I {}
+ named J {}
+ named K {}
+ named L {}
+ {
+
+ @CurrDirection @Case {
+ @Right @Yield
+ @HContract { A | B | C | D | E | F | G | H | I | J | K | L }
+ @Up @Yield
+ @VContract { L / K / J / I / H / G / F / E / D / C / B / A }
+ @Left @Yield
+ @HContract { L | K | J | I | H | G | F | E | D | C | B | A }
+ @Down @Yield
+ @VContract { A / B / C / D / E / F / G / H / I / J / K / L }
+ }
+ }
+
+
+ #######################################################################
+ # #
+ # @OneOrBoth #
+ # #
+ #######################################################################
+
+ def @OneOrBoth
+ named A {}
+ named B {}
+ {
+
+ def @ALH {
+ @HContract {
+ |syntaxgap
+ "AX":: restrict { "(WMK) (EMK)" } @LabelMarks A
+ |syntaxgap
+ }
+ }
+
+ def @BLH {
+ @HContract {
+ |syntaxgap
+ "BX":: restrict { "(WMK) (EMK)" } @LabelMarks B
+ |syntaxgap
+ }
+ }
+
+ def @ALV {
+ @VContract {
+ /syntaxgap
+ "AX":: restrict { "(NMK) (SMK)" } @LabelMarks A
+ /syntaxgap
+ }
+ }
+
+ def @BLV {
+ @VContract {
+ /syntaxgap
+ "BX":: restrict { "(NMK) (SMK)" } @LabelMarks B
+ /syntaxgap
+ }
+ }
+
+ def @RightOneOrBoth
+ {
+ @LRLine {
+ @HContract @VContract { @ALH | /syntaxgap | @BLH }
+ //
+ @HVCurve from { "BX@WMK" } to { 0 ycoord "AX@WMK" }
+ arrow { no } bias { pssyntaxbias } radius { pssyntaxradius }
+ //
+ @HVCurve from { "BX@EMK" } to { xsize ycoord "AX@WMK" }
+ arrow { yes } bias { pssyntaxbias } radius { pssyntaxradius }
+ //
+ @Line from { 0 ycoord "AX@WMK" } to { "AX@WMK" }
+ //
+ @Line from { "AX@EMK" } to { xsize ycoord "AX@WMK" }
+ //
+ @Arrow
+ from { {xcoord "AX@EMK" * 0.5 + xcoord "BX@WMK" * 0.5}
+ ycoord "AX@EMK" }
+ to { {xcoord "AX@EMK" * 0.5 + xcoord "BX@WMK" * 0.5}
+ ycoord "BX@WMK" }
+ }
+ }
+
+ def @LeftOneOrBoth
+ {
+ @LRLine {
+ @HContract @VContract { | @ALH /syntaxgap @BLH | }
+ //
+ @HVCurve from { "BX@WMK" } to { 0 ycoord "AX@WMK" }
+ arrow { yes } bias { pssyntaxbias } radius { pssyntaxradius }
+ //
+ @HVCurve from { "BX@EMK" } to { xsize ycoord "AX@WMK" }
+ arrow { no } bias { pssyntaxbias } radius { pssyntaxradius }
+ //
+ @Line from { 0 ycoord "AX@WMK" } to { "AX@WMK" }
+ //
+ @Line from { "AX@EMK" } to { xsize ycoord "AX@WMK" }
+ //
+ @Arrow
+ from { {xcoord "AX@WMK" * 0.5 + xcoord "BX@EMK" * 0.5}
+ ycoord "AX@WMK" }
+ to { {xcoord "AX@WMK" * 0.5 + xcoord "BX@EMK" * 0.5}
+ ycoord "BX@EMK" }
+ }
+ }
+
+ def @DownOneOrBoth
+ {
+ @UDLine {
+ @HContract @VContract { @ALV |syntaxgap / | @BLV }
+ ||
+ @VHCurve from { "BX@NMK" } to { xcoord "AX@NMK" ysize }
+ arrow { no } bias { pssyntaxbias } radius { pssyntaxradius }
+ ||
+ @VHCurve from { "BX@SMK" } to { xcoord "AX@NMK" 0 }
+ arrow { yes } bias { pssyntaxbias } radius { pssyntaxradius }
+ ||
+ @Line from { xcoord "AX@NMK" ysize } to { "AX@NMK" }
+ ||
+ @Line from { "AX@SMK" } to { xcoord "AX@SMK" 0 }
+ ||
+ @Arrow
+ from { xcoord "AX@SMK"
+ {ycoord "AX@SMK" * 0.5 + ycoord "BX@NMK" * 0.5} }
+ to { xcoord "BX@NMK"
+ {ycoord "AX@SMK" * 0.5 + ycoord "BX@NMK" * 0.5} }
+ }
+ }
+
+ def @UpOneOrBoth
+ {
+ @UDLine {
+ @HContract @VContract { |syntaxgap @BLV / @ALV | }
+ ||
+ @VHCurve from { "BX@NMK" } to { xcoord "AX@NMK" ysize }
+ arrow { yes } bias { pssyntaxbias } radius { pssyntaxradius }
+ ||
+ @VHCurve from { "BX@SMK" } to { xcoord "AX@NMK" 0 }
+ arrow { no } bias { pssyntaxbias } radius { pssyntaxradius }
+ ||
+ @Line from { xcoord "AX@NMK" ysize } to { "AX@NMK" }
+ ||
+ @Line from { "AX@SMK" } to { xcoord "AX@SMK" 0 }
+ ||
+ @Arrow
+ from { xcoord "AX@NMK"
+ {ycoord "AX@NMK" * 0.5 + ycoord "BX@SMK" * 0.5} }
+ to { xcoord "BX@SMK"
+ {ycoord "AX@NMK" * 0.5 + ycoord "BX@SMK" * 0.5} }
+ }
+ }
+
+ @CurrDirection @Case {
+ @Right @Yield @RightOneOrBoth
+ @Up @Yield @UpOneOrBoth
+ @Left @Yield @LeftOneOrBoth
+ @Down @Yield @DownOneOrBoth
+ }
+ }
+
+ #######################################################################
+ # #
+ # @Select and @Optional #
+ # #
+ #######################################################################
+
+ def @Select
+ named A {}
+ named B {}
+ named C {}
+ named D {}
+ named E {}
+ named F {}
+ named G {}
+ named H {}
+ named I {}
+ named J {}
+ named K {}
+ named L {}
+ {
+
+ def @RLFirstOrMiddle
+ left label
+ named i { 0i }
+ named al { no }
+ named ar { no }
+ right x
+ {
+ {|i @HContract { |syntaxgap label:: restrict { "(WMK) (EMK)" }
+ @LabelMarks x |syntaxgap }}
+ // @Line from { label"@WMK" } to { 0 ycoord label"@WMK" }
+ arrow { al }
+ // @Line from { label"@EMK" } to { xsize ycoord label"@EMK" }
+ arrow { ar }
+ }
+
+ def @UDFirstOrMiddle
+ left label
+ named i { 0i }
+ named au { no }
+ named ad { no }
+ right x
+ {
+ {/i @VContract { /syntaxgap label:: restrict { "(NMK) (SMK)" }
+ @LabelMarks x /syntaxgap }}
+ || @Line from { label"@NMK" } to { xcoord label"@NMK" ysize }
+ arrow { au }
+ || @Line from { label"@SMK" } to { xcoord label"@SMK" 0 }
+ arrow { ad }
+ }
+
+ def @RLLast
+ left label
+ named i { 0i }
+ named al { no }
+ named ar { no }
+ right x
+ {
+ {|i @HContract { |syntaxgap label:: restrict { "(WMK) (EMK)" }
+ @LabelMarks x |syntaxgap }}
+ // @HVCurve from { label"@WMK" } to { 0 ycoord "AX@WMK" }
+ arrow { al } bias { pssyntaxbias } radius { pssyntaxradius }
+ // @HVCurve from { label"@EMK" } to { xsize ycoord "AX@WMK" }
+ arrow { ar } bias { pssyntaxbias } radius { pssyntaxradius }
+ }
+
+ def @UDLast
+ left label
+ named i { 0i }
+ named au { no }
+ named ad { no }
+ right x
+ {
+ {/i @VContract { /syntaxgap label:: restrict { "(NMK) (SMK)" }
+ @LabelMarks x /syntaxgap }}
+ || @VHCurve from { label"@NMK" } to { xcoord "AX@NMK" ysize }
+ arrow { au } bias { pssyntaxbias } radius { pssyntaxradius }
+ || @VHCurve from { label"@SMK" } to { xcoord "AX@SMK" 0 }
+ arrow { ad } bias { pssyntaxbias } radius { pssyntaxradius }
+ }
+
+ def @DirectedSelect
+ named @First left label right x {}
+ named @Middle left label right x {}
+ named @Last left label right x {}
+ named @Join precedence 90 left x right y {}
+ {
+
+ def @LastIsA
+ {
+ A
+ }
+
+ def @LastIsB
+ {
+ AX @First A
+ @Join BX @Last B
+ }
+
+ def @LastIsC
+ {
+ AX @First A
+ @Join BX @Middle B
+ @Join CX @Last C
+ }
+
+ def @LastIsD
+ {
+ AX @First A
+ @Join BX @Middle B
+ @Join CX @Middle C
+ @Join DX @Last D
+ }
+
+ def @LastIsE
+ {
+ AX @First A
+ @Join BX @Middle B
+ @Join CX @Middle C
+ @Join DX @Middle D
+ @Join EX @Last E
+ }
+
+ def @LastIsF
+ {
+ AX @First A
+ @Join BX @Middle B
+ @Join CX @Middle C
+ @Join DX @Middle D
+ @Join EX @Middle E
+ @Join FX @Last F
+ }
+
+ def @UpToF
+ {
+ AX @First A
+ @Join BX @Middle B
+ @Join CX @Middle C
+ @Join DX @Middle D
+ @Join EX @Middle E
+ @Join FX @Middle F
+ }
+
+ def @LastIsG
+ {
+ @UpToF
+ @Join GX @Last G
+ }
+
+ def @LastIsH
+ {
+ @UpToF
+ @Join GX @Middle G
+ @Join HX @Last H
+ }
+
+ def @LastIsI
+ {
+ @UpToF
+ @Join GX @Middle G
+ @Join HX @Middle H
+ @Join IX @Last I
+ }
+
+ def @LastIsJ
+ {
+ @UpToF
+ @Join GX @Middle G
+ @Join HX @Middle H
+ @Join IX @Middle I
+ @Join JX @Last J
+ }
+
+ def @LastIsK
+ {
+ @UpToF
+ @Join GX @Middle G
+ @Join HX @Middle H
+ @Join IX @Middle I
+ @Join JX @Middle J
+ @Join KX @Last K
+ }
+
+ def @LastIsL
+ {
+ @UpToF
+ @Join GX @Middle G
+ @Join HX @Middle H
+ @Join IX @Middle I
+ @Join JX @Middle J
+ @Join KX @Middle K
+ @Join LX @Last L
+ }
+
+ def @TryA { A @Case { {} @Yield @Skip else @Yield @LastIsA } }
+ def @TryB { B @Case { {} @Yield @TryA else @Yield @LastIsB } }
+ def @TryC { C @Case { {} @Yield @TryB else @Yield @LastIsC } }
+ def @TryD { D @Case { {} @Yield @TryC else @Yield @LastIsD } }
+ def @TryE { E @Case { {} @Yield @TryD else @Yield @LastIsE } }
+ def @TryF { F @Case { {} @Yield @TryE else @Yield @LastIsF } }
+ def @TryG { G @Case { {} @Yield @TryF else @Yield @LastIsG } }
+ def @TryH { H @Case { {} @Yield @TryG else @Yield @LastIsH } }
+ def @TryI { I @Case { {} @Yield @TryH else @Yield @LastIsI } }
+ def @TryJ { J @Case { {} @Yield @TryI else @Yield @LastIsJ } }
+ def @TryK { K @Case { {} @Yield @TryJ else @Yield @LastIsK } }
+ def @TryL { L @Case { {} @Yield @TryK else @Yield @LastIsL } }
+
+ @TryL
+ }
+
+ def @RightSelect
+ {
+ @LRLine @DirectedSelect
+ @First { label @RLFirstOrMiddle x }
+ @Middle { label @RLFirstOrMiddle ar { yes } x }
+ @Last { label @RLLast ar { yes } x }
+ @Join { x //syntaxgap y }
+ }
+
+ def @UpSelect
+ {
+ @UDLine @DirectedSelect
+ @First { label @UDFirstOrMiddle i { 1r } x }
+ @Middle { label @UDFirstOrMiddle i { 1r } au { yes } x }
+ @Last { label @UDLast i { 1r } au { yes } x }
+ @Join { x ||syntaxgap y }
+ }
+
+ def @LeftSelect
+ {
+ @LRLine @DirectedSelect
+ @First { label @RLFirstOrMiddle i { 1r } x }
+ @Middle { label @RLFirstOrMiddle i { 1r } al { yes } x }
+ @Last { label @RLLast i { 1r } al { yes } x }
+ @Join { x //syntaxgap y }
+ }
+
+ def @DownSelect
+ {
+ @UDLine @DirectedSelect
+ @First { label @UDFirstOrMiddle x }
+ @Middle { label @UDFirstOrMiddle ad { yes } x }
+ @Last { label @UDLast ad { yes } x }
+ @Join { x ||syntaxgap y }
+ }
+
+ @CurrDirection @Case {
+ @Right @Yield @RightSelect
+ @Up @Yield @UpSelect
+ @Left @Yield @LeftSelect
+ @Down @Yield @DownSelect
+ }
+ }
+
+
+ def @Optional right x
+ {
+ @Select A { @Skip } B { x }
+ }
+
+
+ #######################################################################
+ # #
+ # @OptionalDiverted #
+ # #
+ #######################################################################
+
+ def @DownRightOptionalDiverted right x
+ {
+ @UDLine {
+ OX:: @LabelMarks {
+ |syntaxgap AX:: @LabelMarks @GoRight x |syntaxbias
+ /syntaxgap
+ }
+ / @Line from { "OX@NW" } to { "OX@SW" }
+ / @Line from { "OX@WMK" } to { "OX@IN@AX@WMK" }
+ / @RVLCurveArrow from { "OX@IN@AX@EMK" } to { "OX@SW" }
+ bias { pssyntaxbias } radius { pssyntaxradius }
+ }
+ }
+
+ def @UpRightOptionalDiverted right x
+ {
+ @UDLine {
+ OX:: @LabelMarks {
+ ^/syntaxgap
+ |syntaxgap AX:: @LabelMarks @GoRight x |syntaxbias
+ }
+ / @Line from { "OX@NW" } to { "OX@SW" }
+ / @Line from { "OX@WMK" } to { "OX@IN@AX@WMK" }
+ / @RVLCurveArrow from { "OX@IN@AX@EMK" } to { "OX@NW" }
+ bias { pssyntaxbias } radius { pssyntaxradius }
+ }
+ }
+
+ def @RightDownOptionalDiverted right x
+ {
+ @LRLine {
+ OX:: @LabelMarks {
+ { /syntaxgap AX:: @LabelMarks @GoDown x /syntaxbias }
+ |syntaxgap
+ }
+ / @Line from { "OX@NW" } to { "OX@NE" }
+ / @Line from { "OX@NMK" } to { "OX@IN@AX@NMK" }
+ / @VHCurve from {"OX@IN@AX@SMK"} to { "OX@SE"--{pssyntaxgap 0} }
+ bias { pssyntaxbias } radius { pssyntaxradius }
+ / @HVCurve from { "OX@SE" -- {pssyntaxgap 0} } to { "OX@NE" }
+ arrow { yes } bias { pssyntaxbias } radius { pssyntaxradius }
+ }
+ }
+
+ def @LeftDownOptionalDiverted right x
+ {
+ @LRLine {
+ OX:: @LabelMarks {
+ ^|syntaxgap
+ { /syntaxgap AX:: @LabelMarks @GoDown x /syntaxbias }
+ }
+ / @Line from { "OX@NW" } to { "OX@NE" }
+ / @Line from { "OX@NMK" } to { "OX@IN@AX@NMK" }
+ / @VHCurve from {"OX@IN@AX@SMK"} to { "OX@SW"++{pssyntaxgap 0} }
+ bias { pssyntaxbias } radius { pssyntaxradius }
+ / @HVCurve from { "OX@SW" ++ {pssyntaxgap 0} } to { "OX@NW" }
+ arrow { yes } bias { pssyntaxbias } radius { pssyntaxradius }
+ }
+ }
+
+ def @OptionalDiverted right x
+ {
+ @CurrDirection @Case {
+ @Right @Yield @RightDownOptionalDiverted x
+ @Up @Yield @UpRightOptionalDiverted x
+ @Left @Yield @LeftDownOptionalDiverted x
+ @Down @Yield @DownRightOptionalDiverted x
+ }
+ }
+
+
+ #######################################################################
+ # #
+ # @Diverted #
+ # #
+ #######################################################################
+
+ def @DownRightDiverted right x
+ {
+ @UDLine {
+ OX:: @LabelMarks {
+ |syntaxgap AX:: @LabelMarks @GoRight x |syntaxbias
+ ^/syntaxgap
+ /syntaxgap
+ }
+ / @VHCurve from { "OX@NW" } to { "OX@IN@AX@WMK" }
+ bias { pssyntaxbias } radius { pssyntaxradius }
+ / @RVLCurve from { "OX@IN@AX@EMK" }
+ to { xcoord "OX@IN@AX@WMK" ycoord "OX@EMK" }
+ bias { pssyntaxbias } radius { pssyntaxradius }
+ / @HVCurve from { xcoord "OX@IN@AX@WMK" ycoord "OX@EMK" }
+ to { "OX@SW" } bias { pssyntaxbias } radius {pssyntaxradius}
+ }
+ }
+
+ def @UpRightDiverted right x
+ {
+ @UDLine {
+ OX:: @LabelMarks {
+ ^/syntaxgap
+ /syntaxgap
+ |syntaxgap AX:: @LabelMarks @GoRight x |syntaxbias
+ }
+ / @VHCurve from { "OX@SW" } to { "OX@IN@AX@WMK" }
+ bias { pssyntaxbias } radius { pssyntaxradius }
+ / @RVLCurve from { "OX@IN@AX@EMK" }
+ to { xcoord "OX@IN@AX@WMK" ycoord "OX@EMK" }
+ bias { pssyntaxbias } radius { pssyntaxradius }
+ / @HVCurve from { xcoord "OX@IN@AX@WMK" ycoord "OX@EMK" }
+ to { "OX@NW" } bias { pssyntaxbias } radius {pssyntaxradius}
+ }
+ }
+
+ def @RightDownDiverted right x
+ {
+ @LRLine {
+ OX:: @LabelMarks {
+ { /syntaxgap AX:: @LabelMarks @GoDown x /syntaxbias }
+ ^|syntaxgap
+ |syntaxgap
+ }
+ / @HVCurve from { "OX@NW" } to { "OX@IN@AX@NMK" }
+ bias { pssyntaxbias } radius { pssyntaxradius }
+ / @VHCurve from { "OX@IN@AX@SMK" }
+ to { xcoord "OX@IN@AX@EMK" ycoord "OX@SMK" }
+ bias { pssyntaxbias } radius { pssyntaxradius }
+ / @HVCurve from { xcoord "OX@IN@AX@EMK" ycoord "OX@SMK" }
+ to { "OX@IN@AX@EMK" ++ { pssyntaxgap 0 } }
+ bias { pssyntaxbias } radius {pssyntaxradius}
+ / @VHCurve from { "OX@IN@AX@EMK" ++ { pssyntaxgap 0 } }
+ to { "OX@NE" } bias { pssyntaxbias } radius {pssyntaxradius}
+ }
+ }
+
+ def @LeftDownDiverted right x
+ {
+ @LRLine {
+ OX:: @LabelMarks {
+ |syntaxgap
+ ^|syntaxgap
+ { /syntaxgap AX:: @LabelMarks @GoDown x /syntaxbias }
+ }
+ / @HVCurve from { "OX@NE" } to { "OX@IN@AX@NMK" }
+ bias { pssyntaxbias } radius { pssyntaxradius }
+ / @VHCurve from { "OX@IN@AX@SMK" }
+ to { xcoord "OX@IN@AX@WMK" ycoord "OX@SMK" }
+ bias { pssyntaxbias } radius { pssyntaxradius }
+ / @HVCurve from { xcoord "OX@IN@AX@WMK" ycoord "OX@SMK" }
+ to { "OX@IN@AX@WMK" -- { pssyntaxgap 0 } }
+ bias { pssyntaxbias } radius {pssyntaxradius}
+ / @VHCurve from { "OX@IN@AX@WMK" -- { pssyntaxgap 0 } }
+ to { "OX@NW" } bias { pssyntaxbias } radius {pssyntaxradius}
+ }
+ }
+
+ def @Diverted right x
+ {
+ @CurrDirection @Case {
+ @Right @Yield @RightDownDiverted x
+ @Up @Yield @UpRightDiverted x
+ @Left @Yield @LeftDownDiverted x
+ @Down @Yield @DownRightDiverted x
+ }
+ }
+
+
+ #######################################################################
+ # #
+ # @RepeatDiverted #
+ # #
+ #######################################################################
+
+ def @RepeatDiverted right x
+ {
+ # this implementation exploits the coincidental similarity
+ # of @RepeatDiverted to @OptionalDiverted
+
+ @CurrDirection @Case {
+ @Right @Yield @LeftDownOptionalDiverted x
+ @Up @Yield @DownRightOptionalDiverted x
+ @Left @Yield @RightDownOptionalDiverted x
+ @Down @Yield @UpRightOptionalDiverted x
+ }
+ }
+
+
+
+ #######################################################################
+ # #
+ # @Loop and @Repeat #
+ # #
+ #######################################################################
+
+ def @Loop
+ named A {}
+ named B {}
+ {
+ def @LeftOrRightLoop
+ named al { no }
+ named ar { no }
+ {
+ @LRLine {
+ @HContract @VContract { OX:: @LabelMarks {
+ { |syntaxgap AX:: @LabelMarks A |syntaxgap }
+ //syntaxgap
+ { |0.5rt BX:: @LabelMarks @GoReverse B |syntaxgap }
+ } }
+ / @Line from { "OX@WMK" } to { "OX@IN@AX@WMK" }
+ / @Line from { "OX@EMK" } to { "OX@IN@AX@EMK" }
+ / @HVCurve from { "OX@IN@BX@EMK" } to { "OX@EMK" }
+ arrow { ar } bias {pssyntaxbias} radius {pssyntaxradius}
+ / @HVCurve from { "OX@IN@BX@WMK" } to { "OX@WMK" }
+ arrow { al } bias {pssyntaxbias} radius {pssyntaxradius}
+ }
+ }
+
+ def @UpOrDownLoop
+ named au { no }
+ named ad { no }
+ {
+ @UDLine {
+ @HContract @VContract { OX:: @LabelMarks {
+ { /syntaxgap AX:: @LabelMarks A /syntaxgap }
+ ||syntaxgap
+ { /0.5rt BX:: @LabelMarks @GoReverse B /syntaxgap }
+ } }
+ / @Line from { "OX@NMK" } to { "OX@IN@AX@NMK" }
+ / @Line from { "OX@SMK" } to { "OX@IN@AX@SMK" }
+ / @VHCurve from { "OX@IN@BX@NMK" } to { "OX@NMK" }
+ arrow { au } bias {pssyntaxbias} radius {pssyntaxradius}
+ / @VHCurve from { "OX@IN@BX@SMK" } to { "OX@SMK" }
+ arrow { ad } bias {pssyntaxbias} radius {pssyntaxradius}
+ }
+ }
+
+ @CurrDirection @Case {
+ @Right @Yield @LeftOrRightLoop al { yes }
+ @Up @Yield @UpOrDownLoop ad { yes }
+ @Left @Yield @LeftOrRightLoop ar { yes }
+ @Down @Yield @UpOrDownLoop au { yes }
+ }
+ }
+
+ def @Repeat right x
+ {
+ @Loop
+ A { x }
+ B { @Skip }
+ }
+
+
+ #######################################################################
+ # #
+ # @LoopOpposite and @RepeatOpposite #
+ # #
+ #######################################################################
+
+ def @LoopOpposite
+ named A {}
+ named B {}
+ {
+ def @LeftOrRightLoopOpposite
+ named al { no }
+ named ar { no }
+ {
+ @LRLine {
+ @HContract @VContract { OX:: @LabelMarks {
+ { |0.5rt BX:: @LabelMarks @GoReverse B |syntaxgap }
+ //syntaxgap
+ ^//syntaxgap
+ { |syntaxgap AX:: @LabelMarks A |syntaxgap }
+ } }
+ / @Line from { "OX@WMK" } to { "OX@IN@AX@WMK" }
+ / @Line from { "OX@EMK" } to { "OX@IN@AX@EMK" }
+ / @HVCurve from { "OX@IN@BX@EMK" } to { "OX@EMK" }
+ arrow { ar } bias {pssyntaxbias} radius {pssyntaxradius}
+ / @HVCurve from { "OX@IN@BX@WMK" } to { "OX@WMK" }
+ arrow { al } bias {pssyntaxbias} radius {pssyntaxradius}
+ }
+ }
+
+ def @UpOrDownLoopOpposite
+ named au { no }
+ named ad { no }
+ {
+ @UDLine {
+ @HContract @VContract { OX:: @LabelMarks {
+ { /0.5rt BX:: @LabelMarks @GoReverse B /syntaxgap }
+ ^||syntaxgap
+ { /syntaxgap AX:: @LabelMarks A /syntaxgap }
+ } }
+ / @Line from { "OX@NMK" } to { "OX@IN@AX@NMK" }
+ / @Line from { "OX@SMK" } to { "OX@IN@AX@SMK" }
+ / @VHCurve from { "OX@IN@BX@NMK" } to { "OX@NMK" }
+ arrow { au } bias {pssyntaxbias} radius {pssyntaxradius}
+ / @VHCurve from { "OX@IN@BX@SMK" } to { "OX@SMK" }
+ arrow { ad } bias {pssyntaxbias} radius {pssyntaxradius}
+ }
+ }
+
+ @CurrDirection @Case {
+ @Right @Yield @LeftOrRightLoopOpposite al { yes }
+ @Up @Yield @UpOrDownLoopOpposite ad { yes }
+ @Left @Yield @LeftOrRightLoopOpposite ar { yes }
+ @Down @Yield @UpOrDownLoopOpposite au { yes }
+ }
+ }
+
+ def @RepeatOpposite right x
+ {
+ @LoopOpposite
+ A { x }
+ B { @Skip }
+ }
+
+
+ #######################################################################
+ # #
+ # Value of whole diagram #
+ # #
+ #######################################################################
+
+ def @DiagValue right x
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ {
+ save @Case {
+ { yes Yes } @Yield "grestore save gsave"
+ else @Yield {}
+ }
+ maxlabels "ldiagbegin"
+ //
+ "ldiagend"
+ save @Case {
+ { yes Yes } @Yield "restore"
+ else @Yield {}
+ }
+ } @Graphic x }
+
+ PDF @Yield {}
+ }
+ }
+
+ title @Case {
+
+ "--titledft--" @Yield @DiagValue @Body
+
+ else @Yield { title titleformat @DiagValue @Body }
+ }
+
+ @End @Diag
+
+
+ macro @SyntaxDiag {
+ @Diag
+ avalign { mark }
+ avstrut { yes }
+ amargin { 0.2f }
+ aoutline { box }
+ afont { Slope }
+
+ bvalign { mark }
+ bvstrut { yes }
+ bmargin { 0.2f }
+ boutline { curvebox }
+ bfont { Bold }
+
+ cvalign { mark }
+ cvstrut { yes }
+ cmargin { 0.2f }
+ coutline { circle }
+ chsize { 1f }
+
+ arrowlength { 0.4f }
+ backarrowlength { 0.4f }
+ }
+}
diff --git a/include/include/diagf.etc b/include/include/diagf.etc
new file mode 100644
index 0000000..02141b6
--- /dev/null
+++ b/include/include/diagf.etc
@@ -0,0 +1,644 @@
+
+###############################################################################
+# #
+# Lout @Geometry package for algebra and geometry in PostScript #
+# Version 1.0 (June 1996) #
+# Jeffrey H. Kingston #
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either Version 3, or (at your option) #
+# any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA #
+# #
+# As a special exception, when this file is read by Lout when processing #
+# a Lout source document, you may use the result without restriction. #
+# #
+###############################################################################
+
+export
+
+ i c p m s v f d "-0" "-1" "-2" "-3" "-4" "-5" "-6" "-7" "-8" "-9" "-."
+ pi e sqrt abs ceiling floor truncate round cos sin atan
+ exp log rand max min "*" "/" idiv mod "+" "-"
+ xcoord ycoord distance angleto ":=" ":==" "::" ":<" prev "??" "?!?"
+ boundaryatangle atangle
+ "**" "++" "--" anglefix anydebug ","
+ "=" "!=" "==" "!==" "<" "<=" ">" ">=" not and xor or
+ if quadcase signcase xloop yloop zloop
+ cabout aabout
+
+def @Geometry
+{
+ def i
+ precedence 100
+ left x
+ {
+ x "in"
+ }
+
+ def c
+ precedence 100
+ left x
+ {
+ x "cm"
+ }
+
+ def p
+ precedence 100
+ left x
+ {
+ x "pt"
+ }
+
+ def m
+ precedence 100
+ left x
+ {
+ x "em"
+ }
+
+ def s
+ precedence 100
+ left x
+ {
+ x "sp"
+ }
+
+ def v
+ precedence 100
+ left x
+ {
+ x "vs"
+ }
+
+ def f
+ precedence 100
+ left x
+ {
+ x "ft"
+ }
+
+ def d
+ precedence 100
+ left x
+ {
+ x "dg"
+ }
+
+ def pi
+ {
+ "ldiagpi"
+ }
+
+ def e
+ {
+ "ldiage"
+ }
+
+ def sqrt
+ precedence 99
+ right y
+ {
+ y "sqrt"
+ }
+
+ def abs
+ precedence 99
+ right y
+ {
+ y "abs"
+ }
+
+ def anglefix
+ precedence 99
+ right y
+ {
+ y "ldiagfixangle"
+ }
+
+ def ceiling
+ precedence 99
+ right y
+ {
+ y "ceiling"
+ }
+
+ def floor
+ precedence 99
+ right y
+ {
+ y "floor"
+ }
+
+ def truncate
+ precedence 99
+ right y
+ {
+ y "truncate"
+ }
+
+ def round
+ precedence 99
+ right y
+ {
+ y "round"
+ }
+
+ def cos
+ precedence 99
+ right y
+ {
+ y "cos"
+ }
+
+ def sin
+ precedence 99
+ right y
+ {
+ y "sin"
+ }
+
+ def xcoord
+ precedence 99
+ right y
+ {
+ y "pop"
+ }
+
+ def ycoord
+ precedence 99
+ right y
+ {
+ y "exch pop"
+ }
+
+ def distance
+ precedence 98
+ left x
+ right y
+ {
+ x y "ldiagdistance"
+ }
+
+ def angleto
+ precedence 98
+ left x
+ right y
+ {
+ x y "ldiagangleto"
+ }
+
+ def atan
+ precedence 98
+ left x
+ right y
+ {
+ x y "atan"
+ }
+
+ def exp
+ precedence 98
+ left x
+ right y
+ {
+ x y "exp"
+ }
+
+ def log
+ precedence 98
+ left x
+ right y
+ {
+ x y "ldiaglog"
+ }
+
+ def rand
+ precedence 98
+ left x
+ right y
+ {
+ x y "dorand"
+ }
+
+ def max
+ precedence 98
+ left x
+ right y
+ {
+ x y "ldiagmax"
+ }
+
+ def min
+ precedence 98
+ left x
+ right y
+ {
+ x y "ldiagmin"
+ }
+
+ def "*"
+ precedence 97
+ left x
+ right y
+ {
+ x y "mul"
+ }
+
+ def "/"
+ precedence 96
+ associativity left
+ left x
+ right y
+ {
+ x y "div"
+ }
+
+ def idiv
+ precedence 96
+ associativity left
+ left x
+ right y
+ {
+ x y "idiv"
+ }
+
+ def mod
+ precedence 96
+ left x
+ right y
+ {
+ x "cvi" y "cvi mod"
+ }
+
+ def "+"
+ precedence 95
+ associativity left
+ left x
+ right y
+ {
+ x @Case {
+ "" @Yield y
+ else @Yield { x y "add" }
+ }
+ }
+
+ def "-"
+ precedence 95
+ associativity left
+ left x
+ right y
+ {
+ x @Case {
+ "" @Yield { y "neg" }
+ else @Yield { x y "sub" }
+ }
+ }
+
+ def "-0" { "-0" }
+ def "-1" { "-1" }
+ def "-2" { "-2" }
+ def "-3" { "-3" }
+ def "-4" { "-4" }
+ def "-5" { "-5" }
+ def "-6" { "-6" }
+ def "-7" { "-7" }
+ def "-8" { "-8" }
+ def "-9" { "-9" }
+ def "-." { "-." }
+
+ def prev
+ {
+ "ldiagprevious"
+ }
+
+ def "??"
+ precedence 99
+ left x
+ right y
+ {
+ "{" x "} ("y") ldiagdolabel"
+ }
+
+ def "?!?"
+ precedence 99
+ left x
+ right y
+ {
+ "{" x "} "y" ldiagdolabel"
+ }
+
+ def boundaryatangle
+ precedence 89
+ left x
+ right y
+ {
+ x??"CTR" y x??"CIRCUM" "ldiagpadd"
+ }
+
+ def atangle
+ precedence 89
+ left x
+ right y
+ {
+ 0 0 x y "ldiagatangle"
+ }
+
+ def "**"
+ precedence 88
+ left x
+ right y
+ {
+ x y "ldiagpmul"
+ }
+
+ def "++"
+ precedence 87
+ associativity left
+ left x
+ right y
+ {
+ x y "ldiagpadd"
+ }
+
+ def "--"
+ precedence 87
+ associativity left
+ left x
+ right y
+ {
+ y x "ldiagpsub"
+ }
+
+ def "="
+ precedence 79
+ left x
+ right y
+ {
+ x y "eq"
+ }
+
+ def "!="
+ precedence 79
+ left x
+ right y
+ {
+ x y "ne"
+ }
+
+ def "=="
+ precedence 79
+ left x
+ right y
+ {
+ x y "ldiagangleeq"
+ }
+
+ def "!=="
+ precedence 79
+ left x
+ right y
+ {
+ x y "ldiaganglene"
+ }
+
+ def "<"
+ precedence 79
+ left x
+ right y
+ {
+ x y "lt"
+ }
+
+ def "<="
+ precedence 79
+ left x
+ right y
+ {
+ x y "le"
+ }
+
+ def ">"
+ precedence 79
+ left x
+ right y
+ {
+ x y "gt"
+ }
+
+ def ">="
+ precedence 79
+ left x
+ right y
+ {
+ x y "ge"
+ }
+
+ def not
+ precedence 78
+ right y
+ {
+ y "not"
+ }
+
+ def and
+ precedence 77
+ left x
+ right y
+ {
+ x y "and"
+ }
+
+ def xor
+ precedence 76
+ left x
+ right y
+ {
+ x y "xor"
+ }
+
+ def or
+ precedence 76
+ left x
+ right y
+ {
+ x y "or"
+ }
+
+ def ","
+ precedence 70
+ left x
+ right y
+ {
+ OOO ++ { OOX -- OOO }**x ++ { OOY -- OOO }**y
+ }
+
+ def ":="
+ precedence 20
+ left x
+ right y
+ {
+ "/"x "[" y "] cvx def"
+ }
+
+ def ":=="
+ precedence 20
+ left x
+ right y
+ {
+ "/"x "[" y "counttomark 2 add (assigning) exch ldiagdebugprint ] cvx def"
+ }
+
+ def "::"
+ precedence 20
+ left x
+ right y
+ {
+ y "/"x "ldiagpointdef"
+ }
+
+ def ":<"
+ precedence 20
+ left x
+ right y
+ {
+ y "/"x"@ANGLE ldiagangledef"
+ }
+
+ def if
+ named cond {}
+ named then {}
+ named else {}
+ {
+ cond "{" then "} {" else "} ifelse"
+ }
+
+ def quadcase
+ precedence 10
+ left angle
+ named "0" {}
+ named "0-90" {}
+ named "90" {}
+ named "90-180" {}
+ named "180" {}
+ named "180-270" {}
+ named "270" {}
+ named "270-360" {}
+ {
+ "{" 0-90 "} {" 270 "} {" 180 "} {" 90 "}"
+ "{" 0 "} {" 270-360 "} {" 180-270 "} {" 90-180 "}" angle "ldiagquadcase"
+ }
+
+ def signcase
+ precedence 10
+ left number
+ named neg {}
+ named zero {}
+ named pos {}
+ {
+ "{" neg "} {" zero "} {" pos "}" number "ldiagsigncase"
+ }
+
+ def xloop
+ named from { 0 }
+ named to { 0 }
+ named by { 1 }
+ named do named x { "xval" } {}
+ {
+ from by to "{ /xval exch def" do "} for"
+ }
+
+ def yloop
+ named from { 0 }
+ named to { 0 }
+ named by { 1 }
+ named do named y { "yval" } {}
+ {
+ from by to "{ /yval exch def" do "} for"
+ }
+
+ def zloop
+ named from { 0 }
+ named to { 0 }
+ named by { 1 }
+ named do named z { "zval" } {}
+ {
+ from by to "{ /zval exch def" do "} for"
+ }
+
+ def anydebug
+ right tag
+ {
+ "[" tag "counttomark ("tag") exch ldiagdebugprint cleartomark"
+ }
+
+ def aabout
+ named circum {}
+ named extra {}
+ named centre {}
+ {
+ "{" circum "} cvlit" extra "[" centre "] cvx ldiagaabout"
+ # ZXCTR := centre
+ # ZFCTR := circum??CTR
+ # ZAREF := ZFCTR angleto ZXCTR
+ # ZAMIN := 0d
+ # ZPMIN := circum boundaryatangle { ZAREF - ZAMIN }
+ # ++ extra atangle { ZAREF - ZAMIN }
+ # ZAMAX := 90d
+ # ZPMAX := circum boundaryatangle { ZAREF - ZAMAX }
+ # ++ extra atangle { ZAREF - ZAMAX }
+ # xloop from { 1 } to { 12 } by { 1 } do {
+ # ZAMID := { ZAMIN + ZAMAX } * 0.5
+ # ZPMID := circum boundaryatangle { ZAREF - ZAMID }
+ # ++ extra atangle { ZAREF - ZAMID }
+ # if cond { {ZPMID distance ZXCTR} > {ZFCTR distance ZXCTR} } then {
+ # ZAMAX := ZAMID
+ # ZPMAX := ZPMID
+ # }
+ # else {
+ # ZAMIN := ZAMID
+ # ZPMIN := ZPMID
+ # }
+ # }
+ # ZPMID
+ }
+
+ def cabout
+ named circum {}
+ named extra {}
+ named centre {}
+ {
+ "{" circum "} cvlit" extra "[" centre "] cvx ldiagcabout"
+ # ZXCTR := centre
+ # ZFCTR := circum??CTR
+ # ZAREF := ZFCTR angleto ZXCTR
+ # ZAMIN := 0d
+ # ZPMIN := circum boundaryatangle { ZAREF + ZAMIN }
+ # ++ extra atangle { ZAREF + ZAMIN }
+ # ZAMAX := 90d
+ # ZPMAX := circum boundaryatangle { ZAREF + ZAMAX }
+ # ++ extra atangle { ZAREF + ZAMAX }
+ # xloop from { 1 } to { 12 } by { 1 } do {
+ # ZAMID := { ZAMIN + ZAMAX } * 0.5
+ # ZPMID := circum boundaryatangle { ZAREF + ZAMID }
+ # ++ extra atangle { ZAREF + ZAMID }
+ # if cond { {ZPMID distance ZXCTR} > {ZFCTR distance ZXCTR} } then {
+ # ZAMAX := ZAMID
+ # ZPMAX := ZPMID
+ # }
+ # else {
+ # ZAMIN := ZAMID
+ # ZPMIN := ZPMID
+ # }
+ # }
+ # ZPMID
+ }
+}
diff --git a/include/include/diagf.lpg b/include/include/diagf.lpg
new file mode 100644
index 0000000..846d510
--- /dev/null
+++ b/include/include/diagf.lpg
@@ -0,0 +1,3414 @@
+%%BeginResource: procset LoutDiagPrependGraphic
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% PostScript @SysPrependGraphic file for @Diag Jeffrey H. Kingston %
+% Version 2.0 (includes CIRCUM label) September 1996 %
+% %
+% This file has been placed in the public domain by its author, %
+% Jeffrey H. Kingston %
+% %
+% To assist in avoiding name clashes, the names of all symbols %
+% defined here begin with "ldiag". However, this is not feasible %
+% with user-defined labels and some labels used by users. %
+% %
+% <point> is two numbers, a point. %
+% <length> is one number, a length %
+% <angle> is one number, an angle in degrees %
+% <dashlength> is one number, the preferred length of a dash %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+errordict begin
+ /handleerror
+ {
+ { /Times-Roman findfont 8 pt scalefont setfont
+ 0 setgray 4 pt 4 pt moveto
+ $error /errorname get
+ dup ldiagdict exch known
+ { ldiagdict exch get }
+ { 100 string cvs } ifelse
+ show
+ ( Command: ) show
+ $error /command get 100 string cvs show
+ } stopped {} if
+ showpage stop
+ } def
+end
+
+% begin diagram: <maxlabels> ldiagbegin -
+% must be defined outside ldiagdict since it loads it
+/ldiagbegin
+{ xsize 0 0 ysize ldiagdict begin
+ 5 -1 roll /ldiagmaxlabels exch def
+ (@Diag) ldiagpushtagdict
+ /OOY ldiagpointdef /OOX ldiagpointdef 0 0 /OOO ldiagpointdef
+} def
+
+% end diagram: - ldiagend -
+/ldiagend
+{ ldiagpoptagdict end
+} def
+
+% concat strings: <string> <string> ldiagconcat <string>
+% must be defined outside ldiagdict since used in ldiagpromotelabels
+/ldiagconcat
+{ 2 copy length exch length add string
+ dup 0 4 index putinterval
+ dup 3 index length 3 index putinterval
+ 3 1 roll pop pop
+} def
+
+% mconcat strings: <string> <string> ldiagmconcat <string>
+% returns concatenation, separated by @ if first is non-empty
+% must be defined outside ldiagdict since used in ldiagpromotelabels
+/ldiagmconcat
+{
+ 2 copy length exch length add 1 add string
+ dup 0 4 index putinterval
+ dup 3 index length (@) putinterval
+ dup 3 index length 1 add 3 index putinterval
+ 3 1 roll pop pop
+} def
+
+% show string in format start ... end: <string> ldiagsends <string>
+/ldiagsends
+{
+ dup length 20 string cvs (: ) ldiagconcat exch
+ dup 0 20 getinterval ( ... ) ldiagconcat
+ 3 -1 roll exch ldiagconcat
+ exch dup length 20 sub 20 getinterval ldiagconcat
+} def
+
+/ldiagdebugposy 432 def
+/ldiagdebugposx 72 def
+
+% - ldiagdebugnextline -
+/ldiagdebugnextline
+{
+ ldiagdebugposy 72 lt
+ { /ldiagdebugposx ldiagdebugposx 144 add store
+ /ldiagdebugposy 432 store
+ }
+ {
+ /ldiagdebugposy ldiagdebugposy 12 sub store
+ } ifelse
+ ldiagdebugposx ldiagdebugposy moveto
+} def
+
+% - ldiagdebugbeginindent -
+/ldiagdebugbeginindent
+{
+ /ldiagdebugposx ldiagdebugposx 12 add store
+} def
+
+% - ldiagdebugendindent -
+/ldiagdebugendindent
+{
+ /ldiagdebugposx ldiagdebugposx 12 sub store
+} def
+
+% <string> <int> ldiagdebugprint -
+% must be defined outside ldiagdict since used in arbitrary places
+% print <string> plus count or <int> stack entries, whichever is the smaller
+/ldiagdebugprint
+{
+ exch
+ gsave
+ initgraphics
+ ldiagdebugnextline
+ /Times-Roman findfont 10 scalefont setfont
+ 0 setgray show
+ ldiagdebugbeginindent
+ count 1 sub 2 copy lt { pop } { exch pop } ifelse 1 sub
+ 0 exch 1 exch
+ {
+ ldiagdebugnextline
+ index
+ dup type (dicttype) eq
+ {
+ (begin dict) show
+ ldiagdebugbeginindent
+ {
+ ldiagdebugnextline
+ pop 100 string cvs show
+ } forall
+ ldiagdebugendindent
+ ldiagdebugnextline
+ (end dict) show
+ }
+ {
+ dup type (arraytype) eq
+ {
+ (begin array) show
+ ldiagdebugbeginindent
+ {
+ ldiagdebugnextline
+ 100 string cvs show
+ } forall
+ ldiagdebugendindent
+ ldiagdebugnextline
+ (end array) show
+ }
+ {
+ 100 string cvs show
+ } ifelse
+ } ifelse
+ } for
+ ldiagdebugendindent
+ grestore
+} def
+
+/ldiagdict 200 dict def
+ldiagdict begin
+
+% error messages
+/dictfull (dictfull error: too many labels?) def
+/dictstackoverflow (dictstackoverflow error: labels nested too deeply?) def
+/execstackoverflow (execstackoverflow error: figure nested too deeply?) def
+/limitcheck (limitcheck error: figure nested too deeply or too large?) def
+/syntaxerror (syntaxerror error: syntax error in text of figure?) def
+/typecheck (typecheck error: syntax error in text of figure?) def
+/undefined (undefined error: unknown or misspelt label?) def
+/VMError (VMError error: run out of memory?) def
+
+% push pi onto stack: - ldiagpi <num>
+/ldiagpi 3.14159 def
+
+% push e onto stack: - ldiage <num>
+/ldiage 2.71828 def
+
+% arc directions
+/clockwise false def
+/anticlockwise true def
+
+% test equality between two angles: <angle> <angle> ldiagangleeq <bool>
+/ldiagangleeq { ldiagfixangle exch ldiagfixangle eq } def
+
+% test inequality between two angles: <angle> <angle> ldiaganglene <bool>
+/ldiaganglene { ldiagangleeq not } def
+
+% maximum of two numbers: <num> <num> ldiagmax <num>
+/ldiagmax { 2 copy gt { pop } { exch pop } ifelse } def
+
+% minimum of two numbers: <num> <num> ldiagmin <num>
+/ldiagmin { 2 copy lt { pop } { exch pop } ifelse } def
+
+% add two points: <point> <point> ldiagpadd <point>
+/ldiagpadd
+{
+ % (Entering padd) 4 ldiagdebugprint
+ exch 3 1 roll add 3 1 roll add exch
+ % (Leaving padd) 2 ldiagdebugprint
+} def
+
+% subtract first point from second: <point> <point> ldiagpsub <point>
+/ldiagpsub { 3 2 roll sub 3 1 roll exch sub exch } def
+
+% max two points: <point> <point> ldiagpmax <point>
+/ldiagpmax { exch 3 1 roll ldiagmax 3 1 roll ldiagmax exch } def
+
+% min two points: <point> <point> ldiagpmin <point>
+/ldiagpmin { exch 3 1 roll ldiagmin 3 1 roll ldiagmin exch } def
+
+% scalar multiplication: <point> <num> ldiagpmul <point>
+/ldiagpmul { dup 3 1 roll mul 3 1 roll mul exch } def
+
+% point at angle and distance: <point> <length> <angle> ldiagatangle <point>
+/ldiagatangle { 2 copy cos mul 3 1 roll sin mul ldiagpadd } def
+
+% angle from one point to another: <point> <point> ldiagangleto <angle>
+/ldiagangleto { ldiagpsub 2 copy 0 eq exch 0 eq and {pop} {exch atan} ifelse } def
+
+% distance between two points: <point> <point> ldiagdistance <length>
+/ldiagdistance { ldiagpsub dup mul exch dup mul add sqrt } def
+
+% stroke a noline line: <length> <dashlength> ldiagnoline -
+/ldiagnoline
+{ pop pop
+} def
+
+% stroke a solid line: <length> <dashlength> ldiagsolid -
+/ldiagsolid
+{ pop pop [] 0 setdash 1 setlinecap stroke
+} def
+
+% stroke a dashed line: <length> <dashlength> ldiagdashed -
+/ldiagdashed
+{ 2 copy div 2 le 1 index 0 le or
+ { exch pop 1 pt ldiagmax [ exch dup ] 0 setdash }
+ { dup [ exch 4 2 roll 2 copy div
+ 1 sub 2 div ceiling dup 4 1 roll
+ 1 add mul sub exch div ] 0 setdash
+ } ifelse 0 setlinecap stroke
+} def
+
+% stroke a cdashed line: <length> <dashlength> ldiagcdashed -
+/ldiagcdashed
+{ % (Entering ldiagcdashed) 2 ldiagdebugprint
+ 2 copy le 1 index 0 le or
+ { exch pop 1 pt ldiagmax [ exch dup ] dup 0 get 2 div setdash }
+ { dup [ 4 2 roll exch 2 copy exch div
+ 2 div ceiling div 1 index sub
+ ] exch 2 div setdash
+ } ifelse 0 setlinecap stroke
+ % (Leaving ldiagcdashed) 0 ldiagdebugprint
+} def
+
+% stroke a dotted line: <length> <dashlength> ldiagdotted -
+/ldiagdotted
+{ 2 copy le 1 index 0 le or
+ { exch pop 1 pt ldiagmax [ exch 0 exch ] 0 setdash }
+ { 1 index exch div ceiling div
+ [ 0 3 2 roll ] 0 setdash
+ } ifelse 1 setlinecap stroke
+} def
+
+% scale array elements by factor: <array> <factor> ldiagscalearray <array>
+/ldiagscalearray
+{
+ [ exch 3 2 roll
+ { exch dup 3 1 roll mul exch } forall
+ pop ]
+} def
+
+% sum array elements: <array> ldiagsumarray <number>
+/ldiagsumarray
+{
+ 0 exch { add } forall
+} def
+
+% begin a more complex line: <length> <dashlength> ldiaglinebegin -
+/ldiaglinebegin
+{
+ % (Entering ldiaglinebegin) 2 ldiagdebugprint
+ 20 dict begin
+ /dashlen exch 1 pt ldiagmax def
+ /len exch def
+ /gap dashlen def
+ /halfgap dashlen 2 div def
+ /dash dashlen def
+ /halfdash dashlen 2 div def
+ /dot 0 def
+ % (Leaving ldiaglinebegin) 0 ldiagdebugprint
+} def
+
+% end a more complex line: <linecap> <cycle> <startpos> <stoppos> ldiaglineend -
+/ldiaglineend
+{
+ % (Entering ldiaglineend) 3 ldiagdebugprint
+ /stoppos exch def
+ /startpos exch def
+ /cycle exch def
+ /linecap exch def
+ /stopposlen stoppos ldiagsumarray def
+ /startposlen startpos ldiagsumarray def
+ /cyclelen cycle ldiagsumarray def
+ /effectivelen len startposlen add stopposlen sub def
+ effectivelen 0 gt cyclelen 0 gt and
+ {
+ /repeats effectivelen cyclelen div ceiling def
+ /factor len repeats cyclelen mul startposlen sub stopposlen add div def
+ cycle factor ldiagscalearray startposlen factor mul setdash
+ linecap setlinecap stroke
+ } if
+ end
+ % (Leaving ldiaglineend) 0 ldiagdebugprint
+} def
+
+% stroke a dotdashed line: <length> <dashlength> ldiagdotdashed -
+/ldiagdotdashed
+{
+ ldiaglinebegin
+ 1 [dash gap dot gap] [] [dash]
+ ldiaglineend
+} def
+
+% stroke a dotcdashed line: <length> <dashlength> ldiagdotcdashed -
+/ldiagdotcdashed
+{
+ ldiaglinebegin
+ 1 [dash gap dot gap] [halfdash] [halfdash]
+ ldiaglineend
+} def
+
+% stroke a dotdotdashed line: <length> <dashlength> ldiagdotdotdashed -
+/ldiagdotdotdashed
+{
+ ldiaglinebegin
+ 1 [dash gap dot gap dot gap] [] [dash]
+ ldiaglineend
+} def
+
+% stroke a dotdotcdashed line: <length> <dashlength> ldiagdotdotcdashed -
+/ldiagdotdotcdashed
+{
+ ldiaglinebegin
+ 1 [dash gap dot gap dot gap] [halfdash] [halfdash]
+ ldiaglineend
+} def
+
+% stroke a dotdotdotdashed line: <length> <dashlength> ldiagdotdotdotdashed -
+/ldiagdotdotdotdashed
+{
+ ldiaglinebegin
+ 1 [dash gap dot gap dot gap dot gap] [] [dash]
+ ldiaglineend
+} def
+
+% stroke a dotdotdotcdashed line: <length> <dashlength> ldiagdotdotdotcdashed -
+/ldiagdotdotdotcdashed
+{
+ ldiaglinebegin
+ 1 [dash gap dot gap dot gap dot gap] [halfdash] [halfdash]
+ ldiaglineend
+} def
+
+% shape and labels of the @Box symbol
+% ldiagbox <shape>
+/ldiagbox
+{
+ 0 0 /SW ldiagpointdef
+ xsize 0 /SE ldiagpointdef
+ xsize ysize /NE ldiagpointdef
+ 0 ysize /NW ldiagpointdef
+
+ xsize 0.25 mul ysize /NNW ldiagpointdef
+ xsize 0.75 mul ysize /NNE ldiagpointdef
+ xsize 0.25 mul 0 /SSW ldiagpointdef
+ xsize 0.75 mul 0 /SSE ldiagpointdef
+
+ SE 0.5 ldiagpmul /S ldiagpointdef
+ NW 0.5 ldiagpmul /W ldiagpointdef
+ W SE ldiagpadd /E ldiagpointdef
+ S NW ldiagpadd /N ldiagpointdef
+
+ NE 0.5 ldiagpmul /CTR ldiagpointdef
+
+ 0 dg /SSW@ANGLE ldiagangledef
+ 0 dg /S@ANGLE ldiagangledef
+ 0 dg /SSE@ANGLE ldiagangledef
+ 45 dg /SE@ANGLE ldiagangledef
+ 90 dg /E@ANGLE ldiagangledef
+ 135 dg /NE@ANGLE ldiagangledef
+ 180 dg /NNE@ANGLE ldiagangledef
+ 180 dg /N@ANGLE ldiagangledef
+ 180 dg /NNW@ANGLE ldiagangledef
+ 225 dg /NW@ANGLE ldiagangledef
+ 270 dg /W@ANGLE ldiagangledef
+ 315 dg /SW@ANGLE ldiagangledef
+
+ [ CTR NE ldiagpsub /ldiagboxcircum cvx ] ldiagcircumdef
+ SW SE NE NW SW
+} def
+
+% shape and labels of the @CurveBox symbol
+% <margin> ldiagcurvebox <shape>
+/ldiagcurvebox
+{
+
+ % (Entering ldiagcurvebox) 1 ldiagdebugprint
+ ldiagdecodelength /cbmgn exch def
+
+ xsize 0.5 mul ysize 0.5 mul /CTR ldiagpointdef
+ xsize 0.5 mul 0 /S ldiagpointdef
+ xsize ysize 0.5 mul /E ldiagpointdef
+ xsize 0.5 mul ysize /N ldiagpointdef
+ 0 ysize 0.5 mul /W ldiagpointdef
+
+ cbmgn 0.293 mul cbmgn 0.293 mul /SW ldiagpointdef
+ xsize cbmgn 0.293 mul sub cbmgn 0.293 mul /SE ldiagpointdef
+ xsize cbmgn 0.293 mul sub ysize cbmgn 0.293 mul sub /NE ldiagpointdef
+ cbmgn 0.293 mul ysize cbmgn 0.293 mul sub /NW ldiagpointdef
+
+ 0 dg /S@ANGLE ldiagangledef
+ 45 dg /SE@ANGLE ldiagangledef
+ 90 dg /E@ANGLE ldiagangledef
+ 135 dg /NE@ANGLE ldiagangledef
+ 180 dg /N@ANGLE ldiagangledef
+ 225 dg /NW@ANGLE ldiagangledef
+ 270 dg /W@ANGLE ldiagangledef
+ 315 dg /SW@ANGLE ldiagangledef
+
+ [ xsize ysize 0.5 ldiagpmul cbmgn /ldiagcurveboxcircum cvx ] ldiagcircumdef
+
+ cbmgn 0
+ xsize cbmgn sub 0
+ [ xsize cbmgn sub cbmgn ]
+ xsize cbmgn
+ xsize ysize cbmgn sub
+ [ xsize cbmgn sub ysize cbmgn sub ]
+ xsize cbmgn sub ysize
+ cbmgn ysize
+ [ cbmgn ysize cbmgn sub ]
+ 0 ysize cbmgn sub
+ 0 cbmgn
+ [ cbmgn cbmgn ]
+ cbmgn 0
+
+ % (Leaving ldiagcurvebox) 0 ldiagdebugprint
+} def
+
+% shadow of the @ShadowBox symbol
+% its shape and labels are done, somewhat inaccurately, with ldiagbox
+% <shadowmargin> ldiagshadow -
+/ldiagshadow
+{
+ /lfshm exch def
+
+ lfshm 0 moveto
+ 0 lfshm neg rlineto
+ xsize 0 rlineto
+ 0 ysize rlineto
+ lfshm neg 0 rlineto
+ xsize 0 lineto
+ closepath fill
+
+} def
+
+% shape and labels of the @Square symbol
+/ldiagsquare
+{
+ xsize ysize 0.5 ldiagpmul /CTR ldiagpointdef
+ CTR xsize xsize ysize ysize ldiagpmax 0.5 ldiagpmul ldiagpadd /NE ldiagpointdef
+ CTR 0 0 CTR NE ldiagdistance 135 ldiagatangle ldiagpadd /NW ldiagpointdef
+ CTR 0 0 CTR NE ldiagdistance 225 ldiagatangle ldiagpadd /SW ldiagpointdef
+ CTR 0 0 CTR NE ldiagdistance 315 ldiagatangle ldiagpadd /SE ldiagpointdef
+ SW 0.5 ldiagpmul SE 0.5 ldiagpmul ldiagpadd /S ldiagpointdef
+ NW 0.5 ldiagpmul NE 0.5 ldiagpmul ldiagpadd /N ldiagpointdef
+ SW 0.5 ldiagpmul NW 0.5 ldiagpmul ldiagpadd /W ldiagpointdef
+ SE 0.5 ldiagpmul NE 0.5 ldiagpmul ldiagpadd /E ldiagpointdef
+
+ 0 dg /S@ANGLE ldiagangledef
+ 45 dg /SE@ANGLE ldiagangledef
+ 90 dg /E@ANGLE ldiagangledef
+ 135 dg /NE@ANGLE ldiagangledef
+ 180 dg /N@ANGLE ldiagangledef
+ 225 dg /NW@ANGLE ldiagangledef
+ 270 dg /W@ANGLE ldiagangledef
+ 315 dg /SW@ANGLE ldiagangledef
+
+ [ CTR NE ldiagpsub /ldiagboxcircum cvx ] ldiagcircumdef
+ SW SE NE NW SW
+} def
+
+% shape and labels of the @Diamond symbol
+/ldiagdiamond
+{
+ xsize 0 0.5 ldiagpmul /S ldiagpointdef
+ 0 ysize 0.5 ldiagpmul /W ldiagpointdef
+ S W ldiagpadd /CTR ldiagpointdef
+ CTR W ldiagpadd /N ldiagpointdef
+ CTR S ldiagpadd /E ldiagpointdef
+ E N ldiagpadd 0.5 ldiagpmul /NE ldiagpointdef
+ N W ldiagpadd 0.5 ldiagpmul /NW ldiagpointdef
+ S W ldiagpadd 0.5 ldiagpmul /SW ldiagpointdef
+ S E ldiagpadd 0.5 ldiagpmul /SE ldiagpointdef
+
+ 0 dg /S@ANGLE ldiagangledef
+ 90 dg /E@ANGLE ldiagangledef
+ 180 dg /N@ANGLE ldiagangledef
+ 270 dg /W@ANGLE ldiagangledef
+ S E ldiagangleto /SE@ANGLE ldiagangledef
+ E N ldiagangleto /NE@ANGLE ldiagangledef
+ N W ldiagangleto /NW@ANGLE ldiagangledef
+ W S ldiagangleto /SW@ANGLE ldiagangledef
+
+ [ xsize ysize 0.5 ldiagpmul /ldiagdiamondcircum cvx ] ldiagcircumdef
+ S E N W S
+} def
+
+% shape and labels of the @Ellipse symbol
+/ldiagellipse
+{
+ xsize 0 0.5 ldiagpmul /S ldiagpointdef
+ 0 ysize 0.5 ldiagpmul /W ldiagpointdef
+ S W ldiagpadd /CTR ldiagpointdef
+ CTR W ldiagpadd /N ldiagpointdef
+ CTR S ldiagpadd /E ldiagpointdef
+ CTR xsize 0 0.3536 ldiagpmul ldiagpadd 0 ysize 0.3536 ldiagpmul ldiagpadd /NE ldiagpointdef
+ 0 ysize 0.3536 ldiagpmul CTR xsize 0 0.3536 ldiagpmul ldiagpadd ldiagpsub /SE ldiagpointdef
+ xsize 0 0.3536 ldiagpmul CTR ldiagpsub 0 ysize 0.3536 ldiagpmul ldiagpadd /NW ldiagpointdef
+ 0 ysize 0.3536 ldiagpmul xsize 0 0.3536 ldiagpmul CTR ldiagpsub ldiagpsub /SW ldiagpointdef
+ [ xsize ysize 0.5 ldiagpmul /ldiagellipsecircum cvx ] ldiagcircumdef
+
+ 0 dg /S@ANGLE ldiagangledef
+ 90 dg /E@ANGLE ldiagangledef
+ 180 dg /N@ANGLE ldiagangledef
+ 270 dg /W@ANGLE ldiagangledef
+
+ S E ldiagangleto /SE@ANGLE ldiagangledef
+ E N ldiagangleto /NE@ANGLE ldiagangledef
+ N W ldiagangleto /NW@ANGLE ldiagangledef
+ W S ldiagangleto /SW@ANGLE ldiagangledef
+
+ S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S
+} def
+
+% shape and labels of the @Circle symbol
+/ldiagcircle
+{
+ xsize ysize 0.5 ldiagpmul /CTR ldiagpointdef
+ CTR xsize 0 ysize 0 ldiagpmax 0.5 ldiagpmul ldiagpadd /E ldiagpointdef
+ CTR 0 0 CTR E ldiagdistance 45 ldiagatangle ldiagpadd /NE ldiagpointdef
+ CTR 0 0 CTR E ldiagdistance 90 ldiagatangle ldiagpadd /N ldiagpointdef
+ CTR 0 0 CTR E ldiagdistance 135 ldiagatangle ldiagpadd /NW ldiagpointdef
+ CTR 0 0 CTR E ldiagdistance 180 ldiagatangle ldiagpadd /W ldiagpointdef
+ CTR 0 0 CTR E ldiagdistance 225 ldiagatangle ldiagpadd /SW ldiagpointdef
+ CTR 0 0 CTR E ldiagdistance 270 ldiagatangle ldiagpadd /S ldiagpointdef
+ CTR 0 0 CTR E ldiagdistance 315 ldiagatangle ldiagpadd /SE ldiagpointdef
+ [ S E ldiagpsub /ldiagellipsecircum cvx ] ldiagcircumdef
+
+ 0 dg /S@ANGLE ldiagangledef
+ 45 dg /SE@ANGLE ldiagangledef
+ 90 dg /E@ANGLE ldiagangledef
+ 135 dg /NE@ANGLE ldiagangledef
+ 180 dg /N@ANGLE ldiagangledef
+ 225 dg /NW@ANGLE ldiagangledef
+ 270 dg /W@ANGLE ldiagangledef
+ 315 dg /SW@ANGLE ldiagangledef
+
+ S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S
+} def
+
+% shape and labels of the @VLine and @VArrow symbols
+/ldiagvline
+{
+ xmark ysize ldiagprevious /FROM ldiagpointdef
+ xmark 0 ldiagprevious /TO ldiagpointdef
+} def
+
+% points of a polygon around base with given no of sides, vert init angle:
+% <sides> <angle> ldiagpolygon <point> ... <point>
+/ldiagpolygon
+{ exch round cvi exch
+ xsize ysize 0.5 ldiagpmul /CTR ldiagpointdef
+ 90 sub CTR 2 copy ldiagmax 5 3 roll
+ [ 4 copy pop /ldiagpolycircum cvx ] ldiagcircumdef
+ exch dup 360 exch div exch
+ 1 1 3 2 roll
+ { 4 string cvs (P) exch ldiagconcat
+ 3 copy exch pop (@ANGLE) ldiagconcat cvn exch 90 add exch ldiagangledef
+ cvn 6 copy pop pop ldiagatangle 2 copy 10 2 roll
+ 3 2 roll ldiagpointdef
+ dup 3 1 roll add exch
+ } for
+ pop ldiagatangle
+} def
+
+% shape and labels of the @Isosceles triangle symbol
+/ldiagisosceles
+{
+ xsize ysize 0.5 ldiagpmul /CTR ldiagpointdef
+ 0 0 /SW ldiagpointdef
+ xsize 0 /SE ldiagpointdef
+ xsize 0.5 mul ysize /N ldiagpointdef
+ xsize 0.5 mul 0 /S ldiagpointdef
+ SE 0.5 ldiagpmul N 0.5 ldiagpmul ldiagpadd /NE ldiagpointdef
+ SW 0.5 ldiagpmul N 0.5 ldiagpmul ldiagpadd /NW ldiagpointdef
+
+ [ xsize ysize /ldiagisoscelescircum cvx ] ldiagcircumdef
+
+ 0 dg /SW@ANGLE ldiagangledef
+ 0 dg /SE@ANGLE ldiagangledef
+ 180 dg /N@ANGLE ldiagangledef
+ 0 dg /S@ANGLE ldiagangledef
+ SE N ldiagangleto /NE@ANGLE ldiagangledef
+ N SW ldiagangleto /NW@ANGLE ldiagangledef
+
+ SW SE N SW
+} def
+
+% next array element: <array> <index> ldiaggetnext <array> <index> <any> true
+% or <array> <index> false
+/ldiaggetnext
+{ 2 copy exch length ge
+ { false }
+ { 2 copy get exch 1 add exch true } ifelse
+} def
+
+% check whether thing is number: <any> ldiagisnumbertype <any> <bool>
+/ldiagisnumbertype
+{ dup type dup
+ /integertype eq exch /realtype eq or
+} def
+
+% check whether thing is an array: <any> ldiagisarraytype <any> <bool>
+/ldiagisarraytype { dup type /arraytype eq } def
+
+% check whether thing is an array: <any> ldiagisnametype <any> <bool>
+/ldiagisnametype { dup type /nametype eq } def
+
+% get next item: <array> <index> ldiaggetnextitem <array> <index> 0
+% or <array> <index> <array> 1
+% or <array> <index> <point> 2
+/ldiaggetnextitem
+{ ldiaggetnext
+ { ldiagisarraytype
+ { 1
+ }
+ { ldiagisnumbertype
+ { 3 1 roll
+ ldiaggetnext
+ { ldiagisnumbertype
+ { 4 3 roll exch 2
+ }
+ { pop 3 2 roll pop 0
+ } ifelse
+ }
+ { 3 2 roll pop 0
+ } ifelse
+ }
+ { pop 0
+ } ifelse
+ } ifelse
+ }
+ { 0
+ } ifelse
+} def
+
+% approximate equality: num1 num2 approxeq <boolean>
+/approxeq
+{ dup 0 eq
+ { pop 0 eq
+ }
+ { dup 3 1 roll sub exch div abs 0.001 lt
+ } ifelse
+} def
+
+% set arc path: bool x1 y1 x2 y2 x0 y0 ldiagsetarc <angle> <angle> <dist>
+% the path goes from x1 y1 to x2 y2 about centre x0 y0,
+% anticlockwise if bool is true else clockwise.
+% The orientations of backwards pointing and forwards pointing
+% arrowheads are returned in the two angles, and
+% the length of the arc is returned in <dist>.
+/ldiagsetarc
+{
+ % (Entering ldiagsetarc) 7 ldiagdebugprint
+ 20 dict begin
+ matrix currentmatrix 8 1 roll
+ 2 copy translate 2 copy 8 2 roll
+ 4 2 roll ldiagpsub 6 2 roll ldiagpsub
+ dup /y1 exch def dup mul /y1s exch def
+ dup /x1 exch def dup mul /x1s exch def
+ dup /y2 exch def dup mul /y2s exch def
+ dup /x2 exch def dup mul /x2s exch def
+ /dist1 0 0 x1 y1 ldiagdistance def
+ /dist2 0 0 x2 y2 ldiagdistance def
+
+ y1s y2s approxeq
+ { -1
+ }
+ { y1s x2s mul y2s x1s mul sub y1s y2s sub div
+ } ifelse
+ /da exch def
+
+ x1s x2s approxeq
+ { -1
+ }
+ { x1s y2s mul x2s y1s mul sub x1s x2s sub div
+ } ifelse
+ /db exch def
+
+ da 0 gt db 0 gt and
+ {
+ % ( case 1, ellipse) 0 ldiagdebugprint
+ /LMax da sqrt db sqrt ldiagmax def
+ /scalex da sqrt LMax div def
+ /scaley db sqrt LMax div def
+ scalex scaley scale
+ 0 0 LMax
+ 0 0 x1 scalex mul y1 scaley mul ldiagangleto
+ 0 0 x2 scalex mul y2 scaley mul ldiagangleto
+ 2 copy eq { 360 add } if
+ 2 copy 8 2 roll
+ 5 index { arc } { arcn } ifelse
+ 2 index 1 index
+ { 90 sub } { 90 add } ifelse
+ dup sin scaley mul exch cos scalex mul atan
+ 2 index 2 index
+ { 90 add } { 90 sub } ifelse
+ dup sin scaley mul exch cos scalex mul atan
+ 5 2 roll % res1 res2 ang1 ang2 anticlockwise
+ { exch sub } { sub } ifelse
+ dup 0 le { 360 add } if ldiagpi mul LMax mul 180 div
+ }
+ {
+ dist1 dist2 approxeq
+ % x1 y1 dist1 ( x1 y1, d) 3 ldiagdebugprint pop pop pop
+ % x2 y2 dist2 ( x2 y2, d) 3 ldiagdebugprint pop pop pop
+ {
+ % ( case 2, circle) 0 ldiagdebugprint
+ 0 0
+ dist1
+ 0 0 x1 y1 ldiagangleto
+ 0 0 x2 y2 ldiagangleto
+ 2 copy eq { 360 add } if
+ 2 copy 8 2 roll
+ 5 index { arc } { arcn } ifelse
+ 2 index 1 index
+ { 90 sub } { 90 add } ifelse
+ 2 index 2 index
+ { 90 add } { 90 sub } ifelse
+ 5 2 roll % res1 res2 ang1 ang2 clockwise
+ { exch sub } { sub } ifelse
+ dup 0 le { 360 add } if
+ ldiagpi mul dist1 mul 180 div
+ }
+ {
+ % ( case 3, line) 0 ldiagdebugprint
+ x2 y2 lineto pop
+ x2 y2 x1 y1 ldiagangleto
+ x1 y1 x2 y2 ldiagangleto
+ x1 y1 x2 y2 ldiagdistance
+ } ifelse
+ } ifelse
+ 4 -1 roll setmatrix
+ end
+ % (Leaving ldiagsetarc) 3 ldiagdebugprint
+} def
+
+% ldiagsetcurve: set up a Bezier curve from x0 y0 to x3 y3
+% and return arrowhead angles and length of curve (actually 0)
+% x0 y0 x1 y1 x2 y2 x3 y3 ldiagsetcurve <angle> <angle> <length>
+/ldiagsetcurve
+{ 8 copy curveto pop pop
+ ldiagangleto
+ 5 1 roll
+ 4 2 roll ldiagangleto
+ exch
+ 0
+} def
+
+% ldiagsetpath: convert a Diag path into a PostScript path
+% [ shape ] ldiagsetpath -
+/ldiagsetpath
+{
+ 10 dict begin
+ 0 newpath
+ /prevseen false def
+ /curveseen false def
+ { ldiaggetnextitem
+ dup 0 eq { pop exit }
+ { 1 eq
+ { /curveseen true def
+ /curve exch def
+ curve length 0 eq { /curveseen false def } if
+ }
+ { /ycurr exch def
+ /xcurr exch def
+ prevseen
+ { curveseen
+ { curve length 4 eq
+ { xprev yprev
+ curve 0 get curve 1 get
+ curve 2 get curve 3 get
+ xcurr ycurr
+ ldiagsetcurve pop pop pop
+ }
+ { xprev yprev xcurr ycurr
+ curve length 1 ge { curve 0 get } { 0 } ifelse
+ curve length 2 ge { curve 1 get } { 0 } ifelse
+ curve length 3 ge { curve 2 get } { true } ifelse
+ 7 1 roll
+ ldiagsetarc pop pop pop
+ } ifelse
+ }
+ { xcurr ycurr lineto
+ } ifelse
+ }
+ { xcurr ycurr moveto
+ } ifelse
+ /xprev xcurr def
+ /yprev ycurr def
+ /prevseen true def
+ /curveseen false def
+ } ifelse
+ } ifelse
+ } loop pop pop
+ end
+} def
+
+% ldiagpaintpath: paint a path of the given shape
+% /paint [ shape ] ldiagpaintpath -
+/ldiagpaintpath
+{
+ ldiagsetpath cvx exec
+} def
+
+% stroke a path of the given shape in the given linestyle and dash length.
+% Return the origin and angle of the backward and forward arrow heads.
+% dashlength /linestyle [shape] ldiagdopath [<point> <angle>] [<point> <angle>]
+/ldiagdopath
+{
+ 10 dict begin
+ 0
+ /prevseen false def
+ /curveseen false def
+ /backarrow [] def
+ /fwdarrow [] def
+ {
+ ldiaggetnextitem
+ dup 0 eq { pop exit }
+ {
+ 1 eq
+ { /curveseen true def
+ /curve exch def
+ curve length 0 eq { /prevseen false def } if
+ }
+ { /ycurr exch def
+ /xcurr exch def
+ prevseen
+ { newpath xprev yprev moveto
+ curveseen
+ { curve length 4 eq
+ { xprev yprev
+ curve 0 get curve 1 get
+ curve 2 get curve 3 get
+ xcurr ycurr ldiagsetcurve
+ }
+ { xprev yprev xcurr ycurr
+ curve length 1 ge { curve 0 get } { 0 } ifelse
+ curve length 2 ge { curve 1 get } { 0 } ifelse
+ curve length 3 ge { curve 2 get } { true } ifelse
+ 7 1 roll
+ ldiagsetarc
+ } ifelse
+ }
+ { xcurr ycurr lineto
+ xcurr ycurr xprev yprev ldiagangleto dup 180 sub
+ xprev yprev xcurr ycurr ldiagdistance
+ } ifelse
+ 6 index 6 index cvx exec
+ [ xprev yprev 5 -1 roll ]
+ backarrow length 0 eq
+ { /backarrow exch def }
+ { pop } ifelse
+ [ xcurr ycurr 4 -1 roll ] /fwdarrow exch def
+ } if
+ /xprev xcurr def
+ /yprev ycurr def
+ /prevseen true def
+ /curveseen false def
+ } ifelse
+ } ifelse
+ } loop
+ pop pop pop pop
+ backarrow length 0 eq { [ 0 0 0 ] } { backarrow } ifelse
+ fwdarrow length 0 eq { [ 0 0 0 ] } { fwdarrow } ifelse
+ end
+} def
+
+
+% stroke a path of the given shape in the given linestyle and dash length.
+% dashlength [ /linestyle ] [shape] ldiagdosegpath -
+/ldiagdosegpath
+{
+ 12 dict begin
+ 1 index /seg exch def
+ 1 index length /seglength exch def
+ 0 /segcount exch def
+ 0
+ /prevseen false def
+ /curveseen false def
+ /backarrow [] def
+ /fwdarrow [] def
+ {
+ ldiaggetnextitem
+ dup 0 eq { pop exit }
+ {
+ 1 eq
+ { /curveseen true def
+ /curve exch def
+ curve length 0 eq { /prevseen false def } if
+ }
+ { /ycurr exch def
+ /xcurr exch def
+ prevseen
+ { newpath xprev yprev moveto
+ curveseen
+ { curve length 4 eq
+ { xprev yprev
+ curve 0 get curve 1 get
+ curve 2 get curve 3 get
+ xcurr ycurr ldiagsetcurve
+ }
+ { xprev yprev xcurr ycurr
+ curve length 1 ge { curve 0 get } { 0 } ifelse
+ curve length 2 ge { curve 1 get } { 0 } ifelse
+ curve length 3 ge { curve 2 get } { true } ifelse
+ 7 1 roll
+ ldiagsetarc
+ } ifelse
+ }
+ { xcurr ycurr lineto
+ xcurr ycurr xprev yprev ldiagangleto dup 180 sub
+ xprev yprev xcurr ycurr ldiagdistance
+ } ifelse
+ 6 index seg segcount seglength mod get cvx exec
+ /segcount segcount 1 add def
+ [ xprev yprev 5 -1 roll ]
+ backarrow length 0 eq
+ { /backarrow exch def }
+ { pop } ifelse
+ [ xcurr ycurr 4 -1 roll ] /fwdarrow exch def
+ } if
+ /xprev xcurr def
+ /yprev ycurr def
+ /prevseen true def
+ /curveseen false def
+ } ifelse
+ } ifelse
+ } loop
+ pop pop pop pop
+ end
+} def
+
+% ldiagnodebegin: start of node parameters
+% ldiagnodebegin -
+/ldiagnodebegin
+{ % (Entering ldiagnodebegin) 0 ldiagdebugprint
+ ldiagmaxlabels dict begin
+} def
+
+% ldiagnodeend: end of node parameters (so do the node)
+% <outline> <dashlength> <style> <linewidth> <colour> <paint> ldiagnodeend -
+/ldiagnodeend
+{
+ % (Entering ldiagnodeend) 0 ldiagdebugprint
+ end % matches begin in ldiagnodebegin
+ 5 index gsave ldiagpaintpath grestore % <outline> <dl> <st> <lw> <cl>
+ 4 index ldiagsetpath clip newpath % <outline> <dl> <st> <lw> <cl>
+ exec % <outline> <dl> <st> <lw>
+ 2 mul setlinewidth % <outline> <dl> <st>
+ 3 -1 roll % <dashlength> <st> <outline>
+ ldiagdosegpath % -
+ % (Leaving ldiagnodeend) 0 ldiagdebugprint
+} def
+
+% ldiaglinkbegin: start of link parameters
+% <direct> ldiaglinkbegin -
+/ldiaglinkbegin
+{ ldiagmaxlabels dict begin
+ 1 eq /direct exch def
+} def
+
+% ldiaglinkend: end of link parameters (so do the link)
+% <outline> <dashlength> <style> <linewidth> ldiaglinkend -
+/ldiaglinkend
+{
+ end % matches begin in ldiaglinkbegin
+ setlinewidth
+ 3 -1 roll ldiagdosegpath
+} def
+
+% ldiagdoarrow: draw an arrow head of given form
+% dashlength /lstyle /pstyle hfrac height width [ <point> <angle> ] ldiagdoarrow -
+/ldiagdoarrow
+{ matrix currentmatrix 8 1 roll
+ dup 0 get 1 index 1 get translate
+ 2 get rotate
+ [ 2 index neg 2 index 0 0
+ 3 index 3 index neg
+ 1 index 10 index mul 0
+ 7 index 7 index ]
+ 4 1 roll pop pop pop
+ dup 3 1 roll
+ gsave ldiagpaintpath grestore ldiagdopath pop pop
+ setmatrix
+} def
+
+% arrow head styles (unused)
+% /ldiagopen 0.0 def
+% /ldiaghalfopen 0.5 def
+% /ldiagclosed 1.0 def
+
+% stroke no arrows, forward, back, and both
+/ldiagnoarrow { pop pop pop pop pop pop pop pop } def
+/ldiagforward { 7 -1 roll ldiagdoarrow pop } def
+/ldiagback { 8 -2 roll pop ldiagdoarrow } def
+/ldiagboth { 8 -1 roll 7 copy ldiagdoarrow pop 7 -1 roll ldiagdoarrow } def
+
+% ldiagprevious: return previous point on path
+/ldiagprevious
+{ ldiagisnumbertype
+ { 2 copy }
+ { ldiagisarraytype
+ { 2 index 2 index }
+ { 0 0 }
+ ifelse
+ } ifelse
+} def
+
+% Tag dictionary operators
+%
+% Diag's tag dictionaries are kept on the same stack as other dictionaries,
+% since there is nowhere else to put them. However, they are managed like
+% a separate stack using the following operators:
+%
+% <tag> ldiagpushtagdict - Push a new, empty tag dictionary
+% ldiagtoptagdict dict Find the top tag dictionary
+% ldiagpoptagdict - Pop and destroy the top tag dictionary
+% ldiagpopuptagdict - Pop top tag dict and promote its entries
+% <array> ldiagpopsometagdict - Like popuptagdict but only those promote
+% those labels listed in <array>
+% ldiagdebugtagdict - Debug print of dictionary stack
+%
+% They are distinguished from other dictionaries by containing /ldiagtagdict,
+% whose value is the <tag> which is used by ldiagpopuptagdict,
+% and they are hopefully never the target of any non-tag definition because
+% they are never the top dictionary, since push places the new dict second.
+
+/ldiagpushtagdict
+{ ldiagmaxlabels dict dup
+ currentdict end exch begin begin
+ exch /ldiagtagdict exch put
+} def
+
+/ldiagtoptagdict
+{ /ldiagtagdict where not
+ { (Diag internal error: no tag dictionary) show stop
+ } if
+} def
+
+/ldiagpoptagdict
+{
+ % (Entering poptagdict) 0 ldiagdebugprint
+ % ldiagdebugtagdict
+ mark
+ { currentdict end
+ dup /ldiagtagdict known
+ { exit
+ } if
+ } loop
+ pop
+ counttomark
+ { begin
+ } repeat
+ pop
+ % (Leaving poptagdict) 0 ldiagdebugprint
+ % ldiagdebugtagdict
+} def
+
+% promote labels from top tag dictionary to second top tag dictionary
+% each prefixed by <string>@ if <string> (value of /ldiagtagdict) is not empty
+% - ldiagpopuptagdict -
+/ldiagpopuptagdict
+{
+ ldiagtagdict
+ % (Entering ldiagpopuptagdict) 1 ldiagdebugprint
+ % ldiagdebugtagdict
+ ldiagtoptagdict ldiagpoptagdict ldiagtoptagdict exch
+ { exch dup length string cvs
+ 3 index exch ldiagmconcat
+ cvn exch 2 index 3 1 roll put
+ } forall
+ pop pop
+ % (Leaving ldiagpopuptagdict) 0 ldiagdebugprint
+ % ldiagdebugtagdict
+} def
+
+% similar to ldiagpopuptagdict but only those inner labels that are
+% present in <array> will be promoted
+% <array> ldiagpopsometagdict -
+/ldiagpopsometagdict
+{
+ ldiagtagdict
+ % (Entering ldiagpopsometagdict) 1 ldiagdebugprint
+ % ldiagdebugtagdict
+ ldiagtoptagdict
+ ldiagpoptagdict
+ ldiagtoptagdict
+ 4 -1 roll
+ { dup 3 index exch
+ get
+ exch 4 index
+ exch ldiagmconcat exch
+ 3 copy put
+ pop pop
+ } forall
+ pop pop pop
+ % (Leaving ldiagpopuptagdict) 0 ldiagdebugprint
+ % ldiagdebugtagdict
+} def
+
+% debug tag dictionary stack
+/ldiagdebugtagdict
+{ (Entering ldiagdebugtagdict) 0 ldiagdebugprint
+ 30 array dictstack
+ { dup /ldiagtagdict known
+ { dup /ldiagtagdict get 0 ldiagdebugprint
+ { pop 100 string cvs ( ) exch ldiagconcat
+ dup 0 ldiagdebugprint
+ pop
+ }
+ forall
+ }
+ { pop (other) 0 ldiagdebugprint
+ } ifelse
+ } forall
+ (Leaving ldiagdebugtagdict) 0 ldiagdebugprint
+} def
+
+% label a point in top tag dictionary: <point> /name ldiagpointdef -
+/ldiagpointdef
+{
+ % (Entering ldiagpointdef) 3 ldiagdebugprint
+ [ 4 2 roll transform /itransform cvx ] cvx
+ ldiagtoptagdict 3 1 roll put
+ % (Leaving ldiagpointdef) 0 ldiagdebugprint
+} def
+
+% label an angle in top tag dictionary: <angle> /name ldiagangledef -
+/ldiagangledef
+{
+ % (Entering ldiagangledef) 2 ldiagdebugprint
+ exch ldiagfixangle ldiagtoptagdict 3 1 roll put
+ % (Leaving ldiagangledef) 0 ldiagdebugprint
+} def
+
+% add CIRCUM operator with this body: <array> ldiagcircumdef -
+/ldiagcircumdef
+{ % (Entering ldiagcircumdef) 1 ldiagdebugprint
+ /CIRCUM exch cvx
+ ldiagtoptagdict 3 1 roll put
+ % currentdict end
+ % 3 1 roll
+ % def
+ % begin
+ % (Leaving ldiagcircumdef) 0 ldiagdebugprint
+} def
+
+% show points (except CIRCUM and ANGLE): - ldiagshowpoints -
+/ldiagshowpoints
+{
+ % (Entering ldiagshowpoints) 0 ldiagdebugprint
+ ldiagtoptagdict
+ { 1 index 100 string cvs
+ (ldiagdebugpos) search
+ { pop pop pop pop pop }
+ {
+ (CIRCUM) search % if CIRCUM in key
+ { pop pop pop pop pop }
+ {
+ (ANGLE) search % if ANGLE in key
+ {
+ pop pop pop pop pop
+ }
+ {
+ (ldiagtagdict) search
+ {
+ pop pop pop pop pop
+ }
+ {
+ pop cvx exec
+ newpath 2.0 pt 0 360 arc 0 setgray fill pop
+ } ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+ } forall
+ % (Leaving ldiagshowpoints) 0 ldiagdebugprint
+} def
+
+
+/ldiagshowtags
+{
+ % (Entering ldiagshowtags) 0 ldiagdebugprint
+ ldiagtoptagdict
+ { 1 index 100 string cvs
+ % dup 0 ldiagdebugprint
+ (ldiagdebugpos) search
+ { pop pop pop pop pop }
+ {
+ (CIRCUM) search % if CIRCUM in key
+ { pop pop pop pop pop }
+ {
+ (ANGLE) search % if ANGLE in key
+ {
+ pop pop pop pop pop
+ }
+ {
+ (ldiagtagdict) search
+ {
+ pop pop pop pop pop
+ }
+ {
+ pop cvx exec 2 copy
+ gsave
+ newpath 2.0 pt 0 360 arc 0 setgray fill
+ /Times-Roman findfont 8 pt scalefont setfont
+ translate 40 rotate 0.2 cm 0.1 cm moveto 100 string cvs show
+ grestore
+ } ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+ } forall
+ % (Leaving ldiagshowtags) 0 ldiagdebugprint
+} def
+
+
+% show angles: - ldiagshowangles -
+/ldiagshowangles
+{
+ % (Entering ldiagshowangles) 0 ldiagdebugprint
+ ldiagtoptagdict
+ { 1 index 100 string cvs
+ % dup 0 ldiagdebugprint
+ (ldiagdebugpos) search
+ { pop pop pop pop pop }
+ {
+ (ldiagtagdict) search
+ {
+ pop pop pop pop pop
+ }
+ {
+ (CIRCUM) search % if CIRCUM in key
+ { pop pop pop pop pop }
+ {
+ (@ANGLE) search % if ANGLE in key, draw the angle at the point
+ {
+ % (showing ANGLE) 5 ldiagdebugprint
+ gsave exch pop exch pop cvx
+ % (about to execute) 1 ldiagdebugprint
+ exec translate rotate 0.8 0.8 scale pop
+ newpath 0 0 2.0 pt 0 360 arc 0 setgray fill
+ newpath 4 pt 0 moveto 9 pt 0 lineto
+ 9 pt 1.5 pt lineto 11 pt 0 lineto 9 pt -1.5 pt lineto
+ 9 pt 0 lineto [] 0 setdash 4 pt setlinewidth 0 setlinejoin
+ stroke grestore
+ % (finished ANGLE) 5 ldiagdebugprint
+ }
+ {
+ % else must be a point, we aren't showing those
+ pop pop pop
+ } ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+ } forall
+ % (Leaving ldiagshowangles) 0 ldiagdebugprint
+} def
+
+% fix an angle to 0 <= res < 360: <angle> ldiagfixangle <angle>
+/ldiagfixangle
+{
+ % (Entering ldiagfixangle) 1 ldiagdebugprint
+ { dup 0 ge { exit } if
+ 360 add
+ } loop
+ { dup 360 lt { exit } if
+ 360 sub
+ } loop
+ % (Leaving ldiagfixangle) 1 ldiagdebugprint
+} def
+
+% find point on circumference of box: alpha a b ldiagboxcircum x y
+/ldiagboxcircum
+{
+ % (Entering ldiagboxcircum) 3 ldiagdebugprint
+ 4 dict begin
+ /b exch def
+ /a exch def
+ ldiagfixangle /alpha exch def
+ 0 0 a b ldiagangleto /theta exch def
+
+ % if alpha <= theta, return (a, a*tan(alpha))
+ alpha theta le
+ { a a alpha sin mul alpha cos div }
+ {
+ % else if alpha <= 180 - theta, return (b*cot(alpha), b)
+ alpha 180 theta sub le
+ { b alpha cos mul alpha sin div b }
+ {
+ % else if alpha <= 180 + theta, return (-a, -a*tan(alpha))
+ alpha 180 theta add le
+ { a neg a neg alpha sin mul alpha cos div }
+ {
+ % else if alpha <= 360 - theta, return (-b*cot(alpha), -b)
+ alpha 360 theta sub le
+ { b neg alpha cos mul alpha sin div b neg }
+ {
+ % else 360 - theta <= alpha, return (a, a*tan(alpha))
+ a a alpha sin mul alpha cos div
+ } ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+ end
+ % (Leaving ldiagboxcircum) 2 ldiagdebugprint
+} def
+
+% find quadratic roots (assume a != 0): a b c ldiagqroots x1 x2 2
+% or x2 1
+% or 0
+/ldiagqroots
+{
+ 4 dict begin
+ /c exch def
+ /b exch def
+ /a exch def
+ /disc b b mul 4 a c mul mul sub def
+ disc 0 lt
+ { 0
+ }
+ { disc 0 eq
+ { b neg 2 a mul div
+ 1
+ }
+ { b neg disc sqrt add 2 a mul div
+ b neg disc sqrt sub 2 a mul div
+ 2
+ }
+ ifelse
+ }
+ ifelse
+ end
+} def
+
+% work our which quadrant: <angle> ldiagquadrant <0-3>
+/ldiagquadrant
+{ dup 90 lt
+ { pop 0
+ }
+ { dup 180 lt
+ { pop 1
+ }
+ { 270 lt
+ { 2
+ }
+ { 3
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+
+% find curvebox circum, assuming upper right quadrant: alpha a b xmk ldiagcb x y
+/ldiagcb
+{
+ 6 dict begin
+ /xmk exch def
+ /b exch def
+ /a exch def
+ /alpha exch def
+ /theta1 0 0 a b xmk sub ldiagangleto def
+ /theta2 0 0 a xmk sub b ldiagangleto def
+ alpha theta1 le
+ { % if alpha <= theta1, return (a, a*tan(alpha))
+ a a alpha sin mul alpha cos div
+ }
+ { alpha theta2 ge
+ { % else if alpha > theta2, return (b*cot(alpha), b)
+ b alpha cos mul alpha sin div b
+ }
+ {
+ % else, return the intersection of line and circle
+ a xmk sub b xmk sub xmk 0 0 alpha ldiagcircleintersect
+ dup 0 eq
+ { % should never happen, just return any reasonable point
+ pop
+ a b 0.5 ldiagpmul
+ }
+ { 1 eq
+ { % should never happen, just return the point on top of stack
+ }
+ { % the usual case, two points on stack, return the larger
+ ldiagpmax
+ } ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+ end
+} def
+
+% find point on circumference of curvebox: alpha a b xmk ldiagcurveboxcircum x y
+/ldiagcurveboxcircum
+{
+ % (Entering ldiagcurveboxcircum) 4 ldiagdebugprint
+ 5 dict begin
+ /xmk exch def
+ /b exch def
+ /a exch def
+ ldiagfixangle /alpha exch def
+
+ % work out which quadrant we are in, and reflect accordingly
+ /quad alpha ldiagquadrant def
+ quad 0 eq
+ { alpha a b xmk ldiagcb
+ }
+ { quad 1 eq
+ { 180 alpha sub a b xmk ldiagcb exch neg exch
+ }
+ { quad 2 eq
+ { alpha 180 sub a b xmk ldiagcb neg exch neg exch
+ }
+ { 360 alpha sub a b xmk ldiagcb neg
+ } ifelse
+ } ifelse
+ } ifelse
+ end
+ % (Leaving ldiagcurveboxcircum) 2 ldiagdebugprint
+} def
+
+% find point on circumference of diamond: alpha a b ldiagdiamondcircum x y
+/ldiagdiamondcircum
+{
+ % (Entering ldiagdiamondcircum) 3 ldiagdebugprint
+ 4 dict begin
+ /b exch def
+ /a exch def
+ ldiagfixangle /alpha exch def
+ b alpha cos abs mul a alpha sin abs mul add /denom exch def
+ a b mul alpha cos mul denom div
+ a b mul alpha sin mul denom div
+ end
+ % (Leaving ldiagdiamondcircum) 2 ldiagdebugprint
+} def
+
+% find point on circumference of ellipse: alpha a b ldiagellipsecircum x y
+/ldiagellipsecircum
+{
+ % (Entering ldiagellipsecircum) 3 ldiagdebugprint
+ 4 dict begin
+ /b exch def
+ /a exch def
+ ldiagfixangle /alpha exch def
+ b alpha cos mul dup mul a alpha sin mul dup mul add sqrt /denom exch def
+ a b mul alpha cos mul denom div
+ a b mul alpha sin mul denom div
+ end
+ % (Leaving ldiagellipsecircum) 2 ldiagdebugprint
+} def
+
+% find point on circumference of isosceles: alpha a b ldiagisoscelescircum x y
+/ldiagisoscelescircum
+{
+ % (Entering ldiagisoscelescircum) 3 ldiagdebugprint
+ 7 dict begin
+ /b exch def
+ /a exch def
+ /alpha exch ldiagfixangle def
+ /theta1 90 def
+ /theta2 a b 0.5 ldiagpmul 0 0 ldiagangleto def
+ /theta3 a b 0.5 ldiagpmul a 0 ldiagangleto def
+ alpha theta1 ge alpha theta2 le and
+ { 0 0 a 2 div b
+ }
+ { alpha theta2 ge alpha theta3 le and
+ { 0 0 a 0
+ }
+ { a 0 a 2 div b
+ } ifelse
+ } ifelse
+ a 2 div b 2 div 2 copy 1 ft alpha ldiagatangle ldiaglineintersect
+ a 2 div b 2 div 4 2 roll ldiagpsub
+ end
+ % (Leaving ldiagisoscelescircum) 2 ldiagdebugprint
+} def
+
+% find point of intersection of two lines each defined by two points
+% x1 y1 x2 y2 x3 y3 x4 y4 ldiaglineintersect x y
+/ldiaglineintersect
+{
+ % (Entering ldiaglineintersect) 8 ldiagdebugprint
+ 13 dict begin
+ /y4 exch def
+ /x4 exch def
+ /y3 exch def
+ /x3 exch def
+ /y2 exch def
+ /x2 exch def
+ /y1 exch def
+ /x1 exch def
+ x2 x1 sub /x21 exch def
+ x4 x3 sub /x43 exch def
+ y2 y1 sub /y21 exch def
+ y4 y3 sub /y43 exch def
+ y21 x43 mul y43 x21 mul sub /det exch def
+
+ % calculate x
+ y21 x43 mul x1 mul
+ y43 x21 mul x3 mul sub
+ y3 y1 sub x21 mul x43 mul add
+ det div
+
+ % calculate y
+ x21 y43 mul y1 mul
+ x43 y21 mul y3 mul sub
+ x3 x1 sub y21 mul y43 mul add
+ det neg div
+
+ end
+ % (Leaving ldiaglineintersect) 2 ldiagdebugprint
+} def
+
+% find point on circumference of polygon
+% alpha radius num theta ldiagpolycircum x y
+/ldiagpolycircum
+{
+ % (Entering ldiagpolycircum) 4 ldiagdebugprint
+ 13 dict begin
+ /theta exch def
+ /num exch def
+ /radius exch def
+ /alpha exch def
+
+ % calculate delta, the angle from theta to alpha
+ alpha theta sub ldiagfixangle
+
+ % calculate the angle which is the multiple of 360/num closest to delta
+ 360 num div div truncate 360 num div mul theta add /anglea exch def
+
+ % calculate the next multiple of 360/num after anglea
+ anglea 360 num div add /angleb exch def
+
+ % intersect the line through these two points with the alpha line
+ anglea cos anglea sin angleb cos angleb sin
+ 0 0 alpha cos 2 mul alpha sin 2 mul
+ ldiaglineintersect radius ldiagpmul
+
+ end
+ % (Leaving ldiagpolycircum) 2 ldiagdebugprint
+} def
+
+% find point of intersection of a line and a circle
+% x0 y0 r x1 y1 theta ldiagcircleintersect xa ya xb yb 2
+% or xb yb 1
+% or 0
+/ldiagcircleintersect
+{
+ % (Entering ldiagcircleintersect) 6 ldiagdebugprint
+ 15 dict begin
+ /theta exch def
+ /y1 exch def
+ /x1 exch def
+ /r exch def
+ /y0 exch def
+ /x0 exch def
+
+ % if sin(theta) = 0 then line is horizontal and y must be y1
+ theta sin abs 0.00001 lt
+ {
+ /a 1 def
+ /b -2 x0 mul def
+ /c x0 dup mul y1 y0 sub dup mul add r dup mul sub def
+ a b c ldiagqroots dup
+ 0 eq
+ { pop
+ 0
+ }
+ { 1 eq
+ { y1 1
+ }
+ { y1 exch y1 2
+ } ifelse
+ } ifelse
+ }
+ {
+ /ct theta cos theta sin div def
+ /a ct ct mul 1 add def
+ /b ct x1 x0 sub mul y1 add y0 sub 2 mul def
+ /c x1 x0 sub dup mul y1 y0 sub dup mul add r dup mul sub def
+ a b c ldiagqroots dup
+ 0 eq
+ { pop
+ 0
+ }
+ { 1 eq
+ { y1 add /yb exch def
+ yb y1 sub ct mul x1 add /xb exch def
+ xb yb 1
+ }
+ { y1 add /ya exch def
+ ya y1 sub ct mul x1 add /xa exch def
+ y1 add /yb exch def
+ yb y1 sub ct mul x1 add /xb exch def
+ xa ya xb yb 2
+ } ifelse
+ } ifelse
+ } ifelse
+ end
+ % (Leaving ldiagcircleintersect) 1 ldiagdebugprint
+} def
+
+% find line which is the perpendicular bisector of two points, defined
+% by two points
+% x1 y1 x2 y2 ldiaglinebetween x3 y3 x4 y4
+/ldiaglinebetween
+{ % (Entering ldiaglinebetween) 4 ldiagdebugprint
+ /y2 exch def /x2 exch def
+ /y1 exch def /x1 exch def
+
+ % let x3, y3 be the point halfway between the two points
+ x1 y1 x2 y2 ldiagpadd 0.5 ldiagpmul
+ /y3 exch def /x3 exch def
+
+ % find a point perpendicular to x3, y3
+ x3 y3 50 x1 y1 x2 y2 ldiagangleto 90 dg add ldiagatangle
+
+ % plus x3 y3 gives the two points
+ x3 y3
+
+ % (Leaving ldiaglinebetween) 4 ldiagdebugprint
+} def
+
+% find <proc>@<string>: <proc> <string> ldiagfindlabel <any> true
+% <proc> <string> false
+/ldiagfindlabel
+{
+ % (Entering ldiagfindlabel) 2 ldiagdebugprint
+ exch dup length 1 ne
+ { exch false
+ % (Leaving ldiagfindabel (length not 1)) 3 ldiagdebugprint
+ }
+ { dup 0 get type /nametype ne
+ { exch false
+ % (Leaving ldiagfindabel (not a name)) 3 ldiagdebugprint
+ }
+ { dup 0 get dup length string cvs (@) ldiagconcat
+ 2 index ldiagconcat dup where
+ { exch get exch pop exch pop cvx exec true
+ % (Leaving ldiagfindlabel with success) 100 ldiagdebugprint
+ }
+ {
+ pop exch false
+ % (Leaving ldiagfindabel (concat not sensible)) 3 ldiagdebugprint
+ } ifelse
+ } ifelse
+ } ifelse
+} bind def
+
+% execute <proc>@<string> or else default: <proc> <string> ldiagdolabel <various>
+/ldiagdolabel
+{
+ % (Entering ldiagdolabel) 2 ldiagdebugprint
+ ldiagfindlabel not
+ {
+ dup (CIRCUM) eq
+ { pop pop pop 0 0
+ }
+ {
+ dup (ANGLE) eq
+ { pop pop 0
+ }
+ { pop cvx exec
+ } ifelse
+ } ifelse
+ } if
+ % (Leaving ldiagdolabel) 2 ldiagdebugprint
+} bind def
+
+% execute a proc depending on whether number is negative, zero, or positive
+% procneg proczero procpos number ldiagsigncase <anything>
+/ldiagsigncase
+{
+ % (Entering ldiagsigncase) 4 ldiagdebugprint
+ dup 0 lt
+ { pop pop pop exec
+ }
+ { 0 gt
+ { exch pop exch pop exec
+ }
+ { pop exch pop exec
+ } ifelse
+ } ifelse
+ % (Leaving ldiagsigncase) 0 ldiagdebugprint
+} bind def
+
+% execute proci if angle is in ith quadrant
+% proc45 proc270 proc180 proc90 proc0 proc315 proc225 proc135 angle ldiagquadcase <anything>
+/ldiagquadcase
+{
+ % (Entering ldiagquadcase) 9 ldiagdebugprint
+ round ldiagfixangle cvi dup 90 mod 0 eq
+ { 90 idiv 4 add } { 90 idiv } ifelse
+ 8 exch roll pop pop pop pop pop pop pop exec
+ % (Leaving ldiagquadcase) 0 ldiagdebugprint
+} bind def
+
+% decode Lout length into PostScript length
+% <string> ldiagdecodelength <number>
+/ldiagdecodelength
+{
+ % (Entering ldiagdecodelength) 1 ldiagdebugprint
+ (f) search
+ { exch pop exch pop cvr ft
+ }
+ { (c) search
+ { exch pop exch pop cvr cm
+ }
+ { (p) search
+ { exch pop exch pop cvr pt
+ }
+ { (m) search
+ { exch pop exch pop cvr em
+ }
+ { (s) search
+ { exch pop exch pop cvr sp
+ }
+ { (v) search
+ { exch pop exch pop cvr vs
+ }
+ { (i) search
+ { exch pop exch pop cvr in
+ }
+ { pop 0
+ } ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+ % (Leaving ldiagdecodelength) 1 ldiagdebugprint
+} def
+
+% implement aabout function
+% logical form: <circum> <extra> <centre> aabout <point>
+% actual form: { <labelorpoint> } cvlit <length> [ <point> ] cvx aabout <point>
+/ldiagaabout
+{
+ /centre exch def
+ /extra exch def
+ /circum exch def
+
+ /ZXCTR [ centre ] cvx def
+ /ZFCTR [ circum (CTR) ldiagdolabel ] cvx def
+ /ZAREF ZFCTR ZXCTR ldiagangleto def
+ /ZAMIN 0 dg def
+ /ZPMIN [ circum (CTR) ldiagdolabel ZAREF ZAMIN sub
+ circum (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 extra ZAREF ZAMIN sub ldiagatangle
+ ldiagpadd ] cvx def
+
+ /ZAMAX 90 dg def
+ /ZPMAX [ circum (CTR) ldiagdolabel ZAREF ZAMAX sub
+ circum (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 extra ZAREF ZAMAX sub ldiagatangle
+ ldiagpadd ] cvx def
+
+ 1 1 20
+ { /xval exch def
+ /ZAMID ZAMIN ZAMAX add 0.5 mul def
+ /ZPMID [ circum (CTR) ldiagdolabel ZAREF ZAMID sub
+ circum (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 extra ZAREF ZAMID sub ldiagatangle
+ ldiagpadd ] cvx def
+ ZPMID ZXCTR ldiagdistance ZFCTR ZXCTR ldiagdistance gt
+ {
+ /ZAMAX [ ZAMID ] cvx def
+ /ZPMAX [ ZPMID ] cvx def
+ }
+ {
+ /ZAMIN [ ZAMID ] cvx def
+ /ZPMIN [ ZPMID ] cvx def
+ } ifelse
+ } for
+ ZPMID
+} def
+
+% implement cabout function
+% logical form: <circum> <extra> <centre> cabout <point>
+% actual form: { <labelorpoint> } cvlit <length> [ <point> ] cvx cabout <point>
+/ldiagcabout
+{
+ /centre exch def
+ /extra exch def
+ /circum exch def
+
+ /ZXCTR [ centre ] cvx def
+ /ZFCTR [ circum (CTR) ldiagdolabel ] cvx def
+ /ZAREF ZFCTR ZXCTR ldiagangleto def
+ /ZAMIN 0 dg def
+ /ZPMIN [ circum (CTR) ldiagdolabel ZAREF ZAMIN add
+ circum (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 extra ZAREF ZAMIN add ldiagatangle
+ ldiagpadd ] cvx def
+
+ /ZAMAX 90 dg def
+ /ZPMAX [ circum (CTR) ldiagdolabel ZAREF ZAMAX add
+ circum (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 extra ZAREF ZAMAX add ldiagatangle
+ ldiagpadd ] cvx def
+
+ 1 1 20
+ { /xval exch def
+ /ZAMID ZAMIN ZAMAX add 0.5 mul def
+ /ZPMID [ circum (CTR) ldiagdolabel ZAREF ZAMID add
+ circum (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 extra ZAREF ZAMID add ldiagatangle
+ ldiagpadd ] cvx def
+ ZPMID ZXCTR ldiagdistance ZFCTR ZXCTR ldiagdistance gt
+ {
+ /ZAMAX [ ZAMID ] cvx def
+ /ZPMAX [ ZPMID ] cvx def
+ }
+ {
+ /ZAMIN [ ZAMID ] cvx def
+ /ZPMIN [ ZPMID ] cvx def
+ } ifelse
+ } for
+ ZPMID
+} def
+
+% fromarrowlength toarrowlength { from } { to } xindent zindent ldiaglinepath -
+/ldiaglinepath
+{
+ % (entering ldiaglinepath) 0 ldiagdebugprint
+ /zindent exch def
+ /xindent exch def
+ cvlit /to exch def
+ cvlit /from exch def
+ /toarrowlength exch def
+ /fromarrowlength exch def
+
+ from (CTR) ldiagdolabel to (CTR) ldiagdolabel ldiagangleto
+ /FROM@ANGLE ldiagangledef
+ from (CTR) ldiagdolabel FROM@ANGLE from (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 fromarrowlength FROM@ANGLE ldiagatangle ldiagpadd
+ /FROM ldiagpointdef
+
+ FROM@ANGLE /TO@ANGLE ldiagangledef
+ to (CTR) ldiagdolabel TO@ANGLE 180 dg sub to (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 toarrowlength TO@ANGLE 180 dg sub ldiagatangle ldiagpadd /TO ldiagpointdef
+
+ FROM 0.5 ldiagpmul TO 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef
+ FROM@ANGLE /LMID@ANGLE ldiagangledef
+
+ /XINDENT xindent FROM LMID ldiagdistance ldiagmin def
+ FROM 0 0 XINDENT FROM@ANGLE ldiagatangle ldiagpadd /LFROM ldiagpointdef
+ FROM@ANGLE /LFROM@ANGLE ldiagangledef
+
+ /ZINDENT zindent TO LMID ldiagdistance ldiagmin def
+ 0 0 ZINDENT FROM@ANGLE ldiagatangle TO ldiagpsub /LTO ldiagpointdef
+ FROM@ANGLE /LTO@ANGLE ldiagangledef
+
+ direct { FROM TO } { FROM LFROM LMID LTO TO } ifelse
+
+ % (leaving ldiaglinepath) 0 ldiagdebugprint
+} def
+
+% fromarrowlength toarrowlength { from } { to } xindent zindent pathgap ldiagdoublelinepath -
+/ldiagdoublelinepath
+{
+ % (entering ldiagdoublelinepath) 0 ldiagdebugprint
+ /pathgap exch def
+ /zindent exch def
+ /xindent exch def
+ cvlit /to exch def
+ cvlit /from exch def
+ /toarrowlength exch def
+ /fromarrowlength exch def
+
+ from (CTR) ldiagdolabel to (CTR) ldiagdolabel ldiagangleto
+ /FROM@ANGLE ldiagangledef
+ from (CTR) ldiagdolabel FROM@ANGLE from (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 fromarrowlength FROM@ANGLE ldiagatangle ldiagpadd
+ /FROM ldiagpointdef
+
+ FROM@ANGLE /TO@ANGLE ldiagangledef
+ to (CTR) ldiagdolabel TO@ANGLE 180 dg sub to (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 toarrowlength TO@ANGLE 180 dg sub ldiagatangle ldiagpadd /TO ldiagpointdef
+
+ FROM 0.5 ldiagpmul TO 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef
+ FROM@ANGLE /LMID@ANGLE ldiagangledef
+
+ /XINDENT xindent FROM LMID ldiagdistance ldiagmin def
+ FROM 0 0 XINDENT FROM@ANGLE ldiagatangle ldiagpadd /LFROM ldiagpointdef
+ FROM@ANGLE /LFROM@ANGLE ldiagangledef
+
+ /ZINDENT zindent TO LMID ldiagdistance ldiagmin def
+ 0 0 ZINDENT FROM@ANGLE ldiagatangle TO ldiagpsub /LTO ldiagpointdef
+ FROM@ANGLE /LTO@ANGLE ldiagangledef
+
+ direct {
+ FROM pathgap 2 div FROM@ANGLE 90 dg sub ldiagatangle
+ TO pathgap 2 div FROM@ANGLE 90 dg sub ldiagatangle
+ []
+ FROM pathgap 2 div FROM@ANGLE 90 dg add ldiagatangle
+ TO pathgap 2 div FROM@ANGLE 90 dg add ldiagatangle
+ }
+ {
+ FROM pathgap 2 div FROM@ANGLE 90 dg sub ldiagatangle
+ LFROM pathgap 2 div FROM@ANGLE 90 dg sub ldiagatangle
+ LMID pathgap 2 div FROM@ANGLE 90 dg sub ldiagatangle
+ LTO pathgap 2 div FROM@ANGLE 90 dg sub ldiagatangle
+ TO pathgap 2 div FROM@ANGLE 90 dg sub ldiagatangle
+ []
+ FROM pathgap 2 div FROM@ANGLE 90 dg add ldiagatangle
+ LFROM pathgap 2 div FROM@ANGLE 90 dg add ldiagatangle
+ LMID pathgap 2 div FROM@ANGLE 90 dg add ldiagatangle
+ LTO pathgap 2 div FROM@ANGLE 90 dg add ldiagatangle
+ TO pathgap 2 div FROM@ANGLE 90 dg add ldiagatangle
+ } ifelse
+
+ % (leaving ldiagdoublelinepath) 0 ldiagdebugprint
+} def
+
+% fromarrowlen toarrowlen { from } { to } xindent zindent bias ldiagacurvepath -
+/ldiagacurvepath
+{
+ % (entering ldiagacurvepath) 0 ldiagdebugprint
+ /bias exch def
+ /zindent exch def
+ /xindent exch def
+ cvlit /to exch def
+ cvlit /from exch def
+ /toarrowlength exch def
+ /fromarrowlength exch def
+
+ %/B1 bias 0.02 ft ldiagmax def
+ %/B2 from (CTR) ldiagdolabel to (CTR) ldiagdolabel ldiagdistance 0.5 mul def
+ %/BIAS B1 B2 ldiagmin def
+ /BIAS bias 0.02 ft ldiagmax def
+ /XMID [ from (CTR) ldiagdolabel 0.5 ldiagpmul
+ to (CTR) ldiagdolabel 0.5 ldiagpmul ldiagpadd ] cvx def
+ /XTOP [ XMID 0 0 BIAS from (CTR) ldiagdolabel to (CTR) ldiagdolabel
+ ldiagangleto 90 dg sub ldiagatangle ldiagpadd ] cvx def
+ /CTR [ from (CTR) ldiagdolabel XTOP ldiaglinebetween
+ to (CTR) ldiagdolabel XTOP ldiaglinebetween
+ ldiaglineintersect ] cvx def
+
+ from fromarrowlength [ CTR ] cvx ldiagaabout /FROM ldiagpointdef
+ from (CTR) ldiagdolabel FROM ldiagdistance 0 gt
+ { from (CTR) ldiagdolabel FROM ldiagangleto
+ }
+ { CTR FROM ldiagangleto 90 dg add
+ } ifelse /FROM@ANGLE ldiagangledef
+
+ to toarrowlength [ CTR ] cvx ldiagcabout /TO ldiagpointdef
+ TO to (CTR) ldiagdolabel ldiagdistance 0 gt
+ { TO to (CTR) ldiagdolabel ldiagangleto
+ }
+ { CTR TO ldiagangleto 90 dg add
+ } ifelse /TO@ANGLE ldiagangledef
+
+ /RADIUS CTR FROM ldiagdistance def
+ CTR 0 0 RADIUS CTR FROM ldiagangleto 360 dg CTR TO ldiagangleto
+ add CTR FROM ldiagangleto sub cvi 360 mod 0.5 mul add
+ ldiagatangle ldiagpadd /LMID ldiagpointdef
+ CTR LMID ldiagangleto 90 dg add /LMID@ANGLE ldiagangledef
+
+ /XINDENT xindent FROM LMID ldiagdistance ldiagmin def
+ CTR 0 0 RADIUS CTR FROM 0 0 XINDENT FROM@ANGLE ldiagatangle
+ ldiagpadd ldiagangleto ldiagatangle ldiagpadd /LFROM ldiagpointdef
+ CTR LFROM ldiagangleto 90 dg add /LFROM@ANGLE ldiagangledef
+
+ /ZINDENT zindent TO LMID ldiagdistance ldiagmin def
+ CTR 0 0 RADIUS CTR TO 0 0 ZINDENT TO@ANGLE 180 dg add
+ ldiagatangle ldiagpadd ldiagangleto ldiagatangle ldiagpadd /LTO ldiagpointdef
+ CTR LTO ldiagangleto 90 dg add /LTO@ANGLE ldiagangledef
+
+ direct
+ { FROM [CTR] TO }
+ { FROM [CTR] LFROM [CTR] LMID [CTR] LTO [CTR] TO }
+ ifelse
+
+ % (leaving ldiagacurvepath) 0 ldiagdebugprint
+} def
+
+% fromarrowlen toarrowlen { from } { to } xindent zindent bias ldiagccurvepath -
+/ldiagccurvepath
+{
+ % (entering ldiagccurvepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+ /bias exch def
+ /zindent exch def
+ /xindent exch def
+ cvlit /to exch def
+ cvlit /from exch def
+ /toarrowlength exch def
+ /fromarrowlength exch def
+
+ %/B1 bias 0.02 ft ldiagmax def
+ %/B2 from (CTR) ldiagdolabel to (CTR) ldiagdolabel ldiagdistance 0.5 mul def
+ %/BIAS B1 B2 ldiagmin def
+ /BIAS bias 0.02 ft ldiagmax def
+ /XMID [ from (CTR) ldiagdolabel 0.5 ldiagpmul
+ to (CTR) ldiagdolabel 0.5 ldiagpmul ldiagpadd ] cvx def
+ /XTOP [ XMID 0 0 BIAS from (CTR) ldiagdolabel to (CTR) ldiagdolabel
+ ldiagangleto 90 dg add ldiagatangle ldiagpadd ] cvx def
+ /CTR [ from (CTR) ldiagdolabel XTOP ldiaglinebetween
+ to (CTR) ldiagdolabel XTOP ldiaglinebetween ldiaglineintersect ] cvx def
+
+ from fromarrowlength [ CTR ] cvx ldiagcabout /FROM ldiagpointdef
+ from (CTR) ldiagdolabel FROM ldiagdistance 0 gt
+ { from (CTR) ldiagdolabel FROM ldiagangleto }
+ { CTR FROM ldiagangleto 90 dg sub }
+ ifelse /FROM@ANGLE ldiagangledef
+
+ to toarrowlength [ CTR ] cvx ldiagaabout /TO ldiagpointdef
+ TO to (CTR) ldiagdolabel ldiagdistance 0 gt
+ { TO to (CTR) ldiagdolabel ldiagangleto }
+ { CTR TO ldiagangleto 90 dg sub }
+ ifelse /TO@ANGLE ldiagangledef
+
+ /RADIUS [ CTR FROM ldiagdistance ] cvx def
+ CTR 0 0 RADIUS CTR TO ldiagangleto 360 dg CTR FROM ldiagangleto add
+ CTR TO ldiagangleto sub cvi 360 cvi mod 2 div add ldiagatangle
+ ldiagpadd /LMID ldiagpointdef
+ CTR LMID ldiagangleto 90 dg sub /LMID@ANGLE ldiagangledef
+
+ /XINDENT [ xindent FROM LMID ldiagdistance ldiagmin ] cvx def
+ CTR 0 0 RADIUS CTR FROM 0 0 XINDENT FROM@ANGLE ldiagatangle ldiagpadd
+ ldiagangleto ldiagatangle ldiagpadd /LFROM ldiagpointdef
+ CTR LFROM ldiagangleto 90 dg sub /LFROM@ANGLE ldiagangledef
+
+ /ZINDENT [ zindent TO LMID ldiagdistance ldiagmin ] cvx def
+ CTR 0 0 RADIUS CTR TO 0 0 ZINDENT TO@ANGLE 180 dg add ldiagatangle
+ ldiagpadd ldiagangleto ldiagatangle ldiagpadd /LTO ldiagpointdef
+ CTR LTO ldiagangleto 90 dg sub /LTO@ANGLE ldiagangledef
+
+ direct
+ { FROM [CTR clockwise] TO }
+ { FROM [CTR clockwise] LFROM [CTR clockwise]
+ LMID [CTR clockwise] LTO [CTR clockwise] TO }
+ ifelse
+ % (leaving ldiagccurvepath) 0 ldiagdebugprint
+} def
+
+
+% farr tarr { from } { to } xindent zindent [frompt] [topt] ldiagbezierpath -
+/ldiagbezierpath
+{
+ % (entering ldiagbezierpath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+ cvx /topt exch def
+ cvx /frompt exch def
+ /zindent exch def
+ /xindent exch def
+ cvlit /to exch def
+ cvlit /from exch def
+ /toarrowlength exch def
+ /fromarrowlength exch def
+
+ from (CTR) ldiagdolabel frompt ldiagangleto /FROM@ANGLE ldiagangledef
+ from (CTR) ldiagdolabel FROM@ANGLE from (CIRCUM) ldiagdolabel
+ ldiagpadd 0 0 fromarrowlength FROM@ANGLE ldiagatangle ldiagpadd
+ /FROM ldiagpointdef
+
+ topt to (CTR) ldiagdolabel ldiagangleto /TO@ANGLE ldiagangledef
+ to (CTR) ldiagdolabel TO@ANGLE 180 dg add to (CIRCUM) ldiagdolabel
+ ldiagpadd 0 0 toarrowlength TO@ANGLE 180 dg add ldiagatangle ldiagpadd
+ /TO ldiagpointdef
+
+ FROM 0 0 xindent FROM@ANGLE ldiagatangle ldiagpadd
+ /LFROM ldiagpointdef
+ FROM@ANGLE /LFROM@ANGLE ldiagangledef
+
+ TO 0 0 zindent TO@ANGLE 180 dg add ldiagatangle ldiagpadd
+ /LTO ldiagpointdef
+ TO@ANGLE /LTO@ANGLE ldiagangledef
+
+ FROM TO ldiagpadd frompt ldiagpadd topt ldiagpadd 0.25 ldiagpmul
+ /LMID ldiagpointdef
+
+ FROM [frompt topt] TO
+
+ % (leaving ldiagbezierpath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+} def
+
+
+% farr tarr { from } { to } xindent zindent ldiagvhlinepath -
+/ldiagvhlinepath
+{
+ % (entering ldiagvhlinepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+ /zindent exch def
+ /xindent exch def
+ cvlit /to exch def
+ cvlit /from exch def
+ /toarrowlength exch def
+ /fromarrowlength exch def
+
+ /CTR [ from (CTR) ldiagdolabel pop to (CTR) ldiagdolabel exch pop ] cvx def
+ /FANG [ from (CTR) ldiagdolabel CTR ldiagangleto ] cvx def
+ /TANG [ to (CTR) ldiagdolabel CTR ldiagangleto ] cvx def
+
+ from (CTR) ldiagdolabel FANG from (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 fromarrowlength FANG ldiagatangle ldiagpadd /FROM ldiagpointdef
+ FANG /FROM@ANGLE ldiagangledef
+
+ to (CTR) ldiagdolabel TANG to (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 toarrowlength TANG ldiagatangle ldiagpadd /TO ldiagpointdef
+ TANG 180 dg add /TO@ANGLE ldiagangledef
+
+ /FDIST [ FROM CTR ldiagdistance ] cvx def
+ /TDIST [ TO CTR ldiagdistance ] cvx def
+ /XINDENT [ xindent FDIST ldiagmin ] cvx def
+ /ZINDENT [ zindent TDIST ldiagmin ] cvx def
+ FROM 0 0 XINDENT FANG ldiagatangle ldiagpadd /LFROM ldiagpointdef
+ FROM@ANGLE /LFROM@ANGLE ldiagangledef
+ TO 0 0 ZINDENT TANG ldiagatangle ldiagpadd /LTO ldiagpointdef
+ TO@ANGLE /LTO@ANGLE ldiagangledef
+
+ CTR /LMID ldiagpointdef
+ 0 0 1 ft FANG 180 dg add ldiagatangle
+ 0 0 1 ft TANG 180 dg add ldiagatangle
+ ldiagangleto /LMID@ANGLE ldiagangledef
+
+ FROM LFROM LMID LTO TO
+
+ % (leaving ldiagvhlinepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+} def
+
+% farr tarr { from } { to } xindent zindent radius ldiagvhcurvepath -
+/ldiagvhcurvepath
+{
+ % (entering ldiagvhcurvepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+ /radius exch def
+ /zindent exch def
+ /xindent exch def
+ cvlit /to exch def
+ cvlit /from exch def
+ /toarrowlength exch def
+ /fromarrowlength exch def
+
+ /CTR [ from (CTR) ldiagdolabel pop to (CTR) ldiagdolabel exch pop ] cvx def
+ /FANG [ from (CTR) ldiagdolabel CTR ldiagangleto ] cvx def
+ /TANG [ to (CTR) ldiagdolabel CTR ldiagangleto ] cvx def
+
+ from (CTR) ldiagdolabel FANG from (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 fromarrowlength FANG ldiagatangle ldiagpadd /FROM ldiagpointdef
+ FANG /FROM@ANGLE ldiagangledef
+
+ to (CTR) ldiagdolabel TANG to (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 toarrowlength TANG ldiagatangle ldiagpadd /TO ldiagpointdef
+ TANG 180 dg add /TO@ANGLE ldiagangledef
+
+ /FDIST [ FROM CTR ldiagdistance ] cvx def
+ /TDIST [ TO CTR ldiagdistance ] cvx def
+ /RADIUS [ radius FDIST TDIST ldiagmin ldiagmin ] cvx def
+ /XINDENT [ xindent FDIST RADIUS sub ldiagmin ] cvx def
+ /ZINDENT [ zindent TDIST RADIUS sub ldiagmin ] cvx def
+
+ FROM 0 0 XINDENT FANG ldiagatangle ldiagpadd /LFROM ldiagpointdef
+ FROM@ANGLE /LFROM@ANGLE ldiagangledef
+ TO 0 0 ZINDENT TANG ldiagatangle ldiagpadd /LTO ldiagpointdef
+ TO@ANGLE /LTO@ANGLE ldiagangledef
+
+ /FCTR [ CTR 0 0 RADIUS FROM@ANGLE 180 dg add ldiagatangle ldiagpadd ] cvx def
+ /TCTR [ CTR 0 0 RADIUS TO@ANGLE ldiagatangle ldiagpadd ] cvx def
+ /XCTR [ CTR 0 0 RADIUS FROM@ANGLE 180 dg add ldiagatangle ldiagpadd
+ 0 0 RADIUS TO@ANGLE ldiagatangle ldiagpadd ] cvx def
+ XCTR 0 0 RADIUS XCTR CTR ldiagangleto ldiagatangle ldiagpadd
+ /LMID ldiagpointdef
+ FCTR TCTR ldiagangleto /LMID@ANGLE ldiagangledef
+
+ FROM LFROM FCTR
+ {[XCTR clockwise]} {} {} {} {} {[XCTR]} {[XCTR clockwise]} {[XCTR]}
+ FCTR TCTR ldiagangleto ldiagquadcase
+ TCTR LTO TO
+
+ % (leaving ldiagvhcurvepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+} def
+
+% farr tarr { from } { to } xindent zindent ldiaghvlinepath -
+/ldiaghvlinepath
+{
+ % (entering ldiaghvlinepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+ /zindent exch def
+ /xindent exch def
+ cvlit /to exch def
+ cvlit /from exch def
+ /toarrowlength exch def
+ /fromarrowlength exch def
+
+ /CTR [ to (CTR) ldiagdolabel pop from (CTR) ldiagdolabel exch pop ] cvx def
+ /FANG [ from (CTR) ldiagdolabel CTR ldiagangleto ] cvx def
+ /TANG [ to (CTR) ldiagdolabel CTR ldiagangleto ] cvx def
+
+ from (CTR) ldiagdolabel FANG from (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 fromarrowlength FANG ldiagatangle ldiagpadd /FROM ldiagpointdef
+ FANG /FROM@ANGLE ldiagangledef
+
+ to (CTR) ldiagdolabel TANG to (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 toarrowlength TANG ldiagatangle ldiagpadd /TO ldiagpointdef
+ TANG 180 dg add /TO@ANGLE ldiagangledef
+
+ /FDIST [ FROM CTR ldiagdistance ] cvx def
+ /TDIST [ TO CTR ldiagdistance ] cvx def
+ /XINDENT [ xindent FDIST ldiagmin ] cvx def
+ /ZINDENT [ zindent TDIST ldiagmin ] cvx def
+
+ FROM 0 0 XINDENT FANG ldiagatangle ldiagpadd /LFROM ldiagpointdef
+ FROM@ANGLE /LFROM@ANGLE ldiagangledef
+ TO 0 0 ZINDENT TANG ldiagatangle ldiagpadd /LTO ldiagpointdef
+ TO@ANGLE /LTO@ANGLE ldiagangledef
+
+ CTR /LMID ldiagpointdef
+ 0 0 1 ft FANG 180 dg add ldiagatangle
+ 0 0 1 ft TANG 180 dg add ldiagatangle ldiagangleto
+ /LMID@ANGLE ldiagangledef
+
+ FROM LFROM LMID LTO TO
+
+ % (leaving ldiaghvlinepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+} def
+
+% farr tarr { from } { to } xindent zindent radius ldiaghvcurvepath -
+/ldiaghvcurvepath
+{
+ % (entering ldiaghvcurvepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+ /radius exch def
+ /zindent exch def
+ /xindent exch def
+ cvlit /to exch def
+ cvlit /from exch def
+ /toarrowlength exch def
+ /fromarrowlength exch def
+
+ /CTR [ to (CTR) ldiagdolabel pop from (CTR) ldiagdolabel exch pop ] cvx def
+ /FANG [ from (CTR) ldiagdolabel CTR ldiagangleto ] cvx def
+ /TANG [ to (CTR) ldiagdolabel CTR ldiagangleto ] cvx def
+
+ from (CTR) ldiagdolabel FANG from (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 fromarrowlength FANG ldiagatangle ldiagpadd /FROM ldiagpointdef
+ FANG /FROM@ANGLE ldiagangledef
+
+ to (CTR) ldiagdolabel TANG to (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 toarrowlength TANG ldiagatangle ldiagpadd /TO ldiagpointdef
+ TANG 180 dg add /TO@ANGLE ldiagangledef
+
+ /FDIST [ FROM CTR ldiagdistance ] cvx def
+ /TDIST [ TO CTR ldiagdistance ] cvx def
+ /RADIUS [ radius FDIST TDIST ldiagmin ldiagmin ] cvx def
+ /XINDENT [ xindent FDIST RADIUS sub ldiagmin ] cvx def
+ /ZINDENT [ zindent TDIST RADIUS sub ldiagmin ] cvx def
+ FROM 0 0 XINDENT FANG ldiagatangle ldiagpadd /LFROM ldiagpointdef
+ FROM@ANGLE /LFROM@ANGLE ldiagangledef
+ TO 0 0 ZINDENT TANG ldiagatangle ldiagpadd /LTO ldiagpointdef
+ TO@ANGLE /LTO@ANGLE ldiagangledef
+
+ /FCTR [ CTR 0 0 RADIUS FROM@ANGLE 180 dg add ldiagatangle ldiagpadd ] cvx def
+ /TCTR [ CTR 0 0 RADIUS TO@ANGLE ldiagatangle ldiagpadd ] cvx def
+ /XCTR [ CTR 0 0 RADIUS FROM@ANGLE 180 dg add ldiagatangle ldiagpadd
+ 0 0 RADIUS TO@ANGLE ldiagatangle ldiagpadd ] cvx def
+ XCTR 0 0 RADIUS XCTR CTR ldiagangleto ldiagatangle ldiagpadd
+ /LMID ldiagpointdef
+ FCTR TCTR ldiagangleto /LMID@ANGLE ldiagangledef
+
+ FROM LFROM FCTR
+ {[XCTR]} {} {} {} {} {[XCTR clockwise]} {[XCTR]} {[XCTR clockwise]}
+ FCTR TCTR ldiagangleto ldiagquadcase
+ TCTR LTO TO
+
+ % (leaving ldiaghvcurvepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+} def
+
+% farr tarr { from } { to } xindent zindent bias ldiaglvrlinepath -
+/ldiaglvrlinepath
+{
+ % (entering ldiaglvrlinepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+ /bias exch def
+ /zindent exch def
+ /xindent exch def
+ cvlit /to exch def
+ cvlit /from exch def
+ /toarrowlength exch def
+ /fromarrowlength exch def
+
+ from (CTR) ldiagdolabel 180 dg from (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 fromarrowlength 180 dg ldiagatangle ldiagpadd /FROM ldiagpointdef
+ 180 dg /FROM@ANGLE ldiagangledef
+
+ to (CTR) ldiagdolabel 180 dg to (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 toarrowlength 180 dg ldiagatangle ldiagpadd /TO ldiagpointdef
+ 0 dg /TO@ANGLE ldiagangledef
+
+ /XLEFT [ FROM pop TO pop ldiagmin bias sub ] cvx def
+ XLEFT FROM exch pop /P1 ldiagpointdef
+ XLEFT TO exch pop /P2 ldiagpointdef
+ /VERT [ P1 P2 ldiagangleto ] cvx def
+ P1 P1 0 0 1 ft 180 dg ldiagatangle ldiagpadd 0 0 1 ft VERT ldiagatangle
+ ldiagpadd ldiagangleto /P1@ANGLE ldiagangledef
+ P2 P2 0 0 1 ft 0 dg ldiagatangle ldiagpadd 0 0 1 ft VERT ldiagatangle
+ ldiagpadd ldiagangleto /P2@ANGLE ldiagangledef
+
+ P1 0.5 ldiagpmul P2 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef
+ VERT /LMID@ANGLE ldiagangledef
+
+ /XINDENT [ xindent FROM P1 ldiagdistance ldiagmin ] cvx def
+ /ZINDENT [ zindent P2 TO ldiagdistance ldiagmin ] cvx def
+ XINDENT 0 FROM ldiagpsub /LFROM ldiagpointdef
+ 180 dg /LFROM@ANGLE ldiagangledef
+ ZINDENT 0 TO ldiagpsub /LTO ldiagpointdef
+ 0 dg /LTO@ANGLE ldiagangledef
+
+ FROM LFROM P1 LMID P2 LTO TO
+
+ % (leaving ldiaglvrlinepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+} def
+
+% farr tarr { from } { to } xindent zindent bias radius ldiaglvrcurvepath -
+/ldiaglvrcurvepath
+{
+ % (entering ldiaglvrcurvepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+ /radius exch def
+ /bias exch def
+ /zindent exch def
+ /xindent exch def
+ cvlit /to exch def
+ cvlit /from exch def
+ /toarrowlength exch def
+ /fromarrowlength exch def
+
+ from (CTR) ldiagdolabel 180 dg from (CIRCUM) ldiagdolabel ldiagpadd 0 0
+ fromarrowlength 180 dg ldiagatangle ldiagpadd /FROM ldiagpointdef
+ 180 dg /FROM@ANGLE ldiagangledef
+ to (CTR) ldiagdolabel 180 dg to (CIRCUM) ldiagdolabel ldiagpadd 0 0
+ toarrowlength 180 dg ldiagatangle ldiagpadd /TO ldiagpointdef
+ 0 dg /TO@ANGLE ldiagangledef
+ /XLEFT [ FROM pop TO pop ldiagmin bias sub ] cvx def
+ /XP1 [ XLEFT FROM exch pop ] cvx def
+ /XP2 [ XLEFT TO exch pop ] cvx def
+ /VERT [ XP1 XP2 ldiagangleto ] cvx def
+ XP1 0.5 ldiagpmul XP2 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef
+ VERT /LMID@ANGLE ldiagangledef
+ /XINDENT [ xindent FROM XP1 ldiagdistance ldiagmin ] cvx def
+ /ZINDENT [ zindent XP2 TO ldiagdistance ldiagmin ] cvx def
+ XINDENT 0 FROM ldiagpsub /LFROM ldiagpointdef
+ 180 dg /LFROM@ANGLE ldiagangledef
+ ZINDENT 0 TO ldiagpsub /LTO ldiagpointdef
+ 0 dg /LTO@ANGLE ldiagangledef
+ /RADIUS [ radius XP1 XP2 ldiagdistance 2 div ldiagmin ] cvx def
+ /XP1PRE [ XP1 0 0 RADIUS 0 dg ldiagatangle ldiagpadd ] cvx def
+ /XP1POST [ XP1 0 0 RADIUS VERT ldiagatangle ldiagpadd ] cvx def
+ /XP1CTR [ XP1PRE 0 0 RADIUS VERT ldiagatangle ldiagpadd ] cvx def
+ XP1CTR 0 0 RADIUS XP1CTR XP1 ldiagangleto ldiagatangle ldiagpadd
+ /P1 ldiagpointdef
+ XP1PRE XP1POST ldiagangleto /P1@ANGLE ldiagangledef
+ /XP2PRE [ 0 0 RADIUS VERT ldiagatangle XP2 ldiagpsub ] cvx def
+ /XP2POST [ XP2 0 0 RADIUS 0 dg ldiagatangle ldiagpadd ] cvx def
+ /XP2CTR [ XP2PRE 0 0 RADIUS 0 dg ldiagatangle ldiagpadd ] cvx def
+ XP2CTR 0 0 RADIUS XP2CTR XP2 ldiagangleto ldiagatangle ldiagpadd
+ /P2 ldiagpointdef
+ XP2PRE XP2POST ldiagangleto /P2@ANGLE ldiagangledef
+ FROM LFROM XP1PRE
+ { } { [XP1CTR] P1 [XP1CTR] } { } { [XP1CTR clockwise] P1 [XP1CTR clockwise] }
+ { } { } { } { } VERT round ldiagquadcase
+ XP1POST LMID XP2PRE
+ { } { [XP2CTR] P2 [XP2CTR] } { } { [XP2CTR clockwise] P2 [XP2CTR clockwise] }
+ { } { } { } { } VERT round ldiagquadcase
+ XP2POST LTO TO
+
+ % (leaving ldiaglvrcurvepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+} def
+
+% farr tarr { from } { to } xindent zindent bias ldiagrvllinepath -
+/ldiagrvllinepath
+{
+ % (entering ldiagrvllinepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+ /bias exch def
+ /zindent exch def
+ /xindent exch def
+ cvlit /to exch def
+ cvlit /from exch def
+ /toarrowlength exch def
+ /fromarrowlength exch def
+
+ from (CTR) ldiagdolabel 0 dg from (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 fromarrowlength 0 dg ldiagatangle ldiagpadd /FROM ldiagpointdef
+ 0 dg /FROM@ANGLE ldiagangledef
+ to (CTR) ldiagdolabel 0 dg to (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 toarrowlength 0 dg ldiagatangle ldiagpadd /TO ldiagpointdef
+ 180 dg /TO@ANGLE ldiagangledef
+ /XRIGHT [ FROM pop TO pop ldiagmax bias add ] cvx def
+ XRIGHT FROM exch pop /P1 ldiagpointdef
+ XRIGHT TO exch pop /P2 ldiagpointdef
+ /VERT [ P1 P2 ldiagangleto ] cvx def
+ P1 P1 0 0 1 ft 0 dg ldiagatangle ldiagpadd 0 0 1 ft VERT ldiagatangle
+ ldiagpadd ldiagangleto /P1@ANGLE ldiagangledef
+ P2 P2 0 0 1 ft 180 dg ldiagatangle ldiagpadd 0 0 1 ft VERT ldiagatangle
+ ldiagpadd ldiagangleto /P2@ANGLE ldiagangledef
+ P1 0.5 ldiagpmul P2 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef
+ VERT /LMID@ANGLE ldiagangledef
+ /XINDENT [ xindent FROM P1 ldiagdistance ldiagmin ] cvx def
+ /ZINDENT [ zindent P2 TO ldiagdistance ldiagmin ] cvx def
+ FROM XINDENT 0 ldiagpadd /LFROM ldiagpointdef
+ 0 dg /LFROM@ANGLE ldiagangledef
+ TO ZINDENT 0 ldiagpadd /LTO ldiagpointdef
+ 180 dg /LTO@ANGLE ldiagangledef
+ FROM LFROM P1 LMID P2 LTO TO
+
+ % (leaving ldiagrvllinepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+} def
+
+
+% farr tarr { from } { to } xindent zindent bias radius ldiagrvlcurvepath -
+/ldiagrvlcurvepath
+{
+ % (entering ldiagrvlcurvepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+ /radius exch def
+ /bias exch def
+ /zindent exch def
+ /xindent exch def
+ cvlit /to exch def
+ cvlit /from exch def
+ /toarrowlength exch def
+ /fromarrowlength exch def
+
+ from (CTR) ldiagdolabel 0 dg from (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 fromarrowlength 0 dg ldiagatangle ldiagpadd /FROM ldiagpointdef
+ 0 dg /FROM@ANGLE ldiagangledef
+ to (CTR) ldiagdolabel 0 dg to (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 toarrowlength 0 dg ldiagatangle ldiagpadd /TO ldiagpointdef
+ 180 dg /TO@ANGLE ldiagangledef
+ /XRIGHT [ FROM pop TO pop ldiagmax bias add ] cvx def
+ /XP1 [ XRIGHT FROM exch pop ] cvx def
+ /XP2 [ XRIGHT TO exch pop ] cvx def
+ /VERT [ XP1 XP2 ldiagangleto ] cvx def
+ XP1 0.5 ldiagpmul XP2 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef
+ VERT /LMID@ANGLE ldiagangledef
+ /XINDENT [ xindent FROM XP1 ldiagdistance ldiagmin ] cvx def
+ /ZINDENT [ zindent XP2 TO ldiagdistance ldiagmin ] cvx def
+ FROM XINDENT 0 ldiagpadd /LFROM ldiagpointdef
+ 0 dg /LFROM@ANGLE ldiagangledef
+ TO ZINDENT 0 ldiagpadd /LTO ldiagpointdef
+ 180 dg /LTO@ANGLE ldiagangledef
+ /RADIUS [ radius XP1 XP2 ldiagdistance 0.5 mul ldiagmin ] cvx def
+ /XP1PRE [ XP1 0 0 RADIUS 180 dg ldiagatangle ldiagpadd ] cvx def
+ /XP1POST [ XP1 0 0 RADIUS VERT ldiagatangle ldiagpadd ] cvx def
+ /XP1CTR [ XP1PRE 0 0 RADIUS VERT ldiagatangle ldiagpadd ] cvx def
+ XP1CTR 0 0 RADIUS XP1CTR XP1 ldiagangleto ldiagatangle ldiagpadd
+ /P1 ldiagpointdef
+ XP1PRE XP1POST ldiagangleto /P1@ANGLE ldiagangledef
+ /XP2PRE [ 0 0 RADIUS VERT ldiagatangle XP2 ldiagpsub ] cvx def
+ /XP2POST [ XP2 0 0 RADIUS 180 dg ldiagatangle ldiagpadd ] cvx def
+ /XP2CTR [ XP2PRE 0 0 RADIUS 180 dg ldiagatangle ldiagpadd ] cvx def
+ XP2CTR 0 0 RADIUS XP2CTR XP2 ldiagangleto ldiagatangle ldiagpadd
+ /P2 ldiagpointdef
+ XP2PRE XP2POST ldiagangleto /P2@ANGLE ldiagangledef
+ FROM LFROM XP1PRE
+ {} {[XP1CTR clockwise] P1 [XP1CTR clockwise]} {} {[XP1CTR] P1 [XP1CTR]}
+ {} {} {} {} VERT round ldiagquadcase
+ XP1POST LMID XP2PRE
+ {} {[XP2CTR clockwise] P2 [XP2CTR clockwise]} {} {[XP2CTR] P2 [XP2CTR]}
+ {} {} {} {} VERT round ldiagquadcase
+ XP2POST LTO TO
+
+ % (leaving ldiagrvlcurvepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+} def
+
+% farr tarr { from } { to } xindent zindent bias ldiagdhulinepath -
+/ldiagdhulinepath
+{
+ % (entering ldiagdhulinepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+ /bias exch def
+ /zindent exch def
+ /xindent exch def
+ cvlit /to exch def
+ cvlit /from exch def
+ /toarrowlength exch def
+ /fromarrowlength exch def
+
+ from (CTR) ldiagdolabel 270 dg from (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 fromarrowlength 270 dg ldiagatangle ldiagpadd /FROM ldiagpointdef
+ 270 dg /FROM@ANGLE ldiagangledef
+
+ to (CTR) ldiagdolabel 270 dg to (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 toarrowlength 270 dg ldiagatangle ldiagpadd /TO ldiagpointdef
+ 90 dg /TO@ANGLE ldiagangledef
+
+ /XDOWN [ FROM exch pop TO exch pop ldiagmin bias sub ] cvx def
+ FROM pop XDOWN /P1 ldiagpointdef
+ TO pop XDOWN /P2 ldiagpointdef
+ /HORIZ [ P1 P2 ldiagangleto ] cvx def
+ P1 P1 0 0 1 ft 270 dg ldiagatangle ldiagpadd 0 0 1 ft HORIZ ldiagatangle
+ ldiagpadd ldiagangleto /P1@ANGLE ldiagangledef
+ P2 P2 0 0 1 ft 90 dg ldiagatangle ldiagpadd 0 0 1 ft HORIZ ldiagatangle
+ ldiagpadd ldiagangleto /P2@ANGLE ldiagangledef
+
+ P1 0.5 ldiagpmul P2 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef
+ HORIZ /LMID@ANGLE ldiagangledef
+
+ /XINDENT [ xindent FROM P1 ldiagdistance ldiagmin ] cvx def
+ /ZINDENT [ zindent P2 TO ldiagdistance ldiagmin ] cvx def
+ 0 XINDENT FROM ldiagpsub /LFROM ldiagpointdef
+ 270 dg /LFROM@ANGLE ldiagangledef
+ 0 ZINDENT TO ldiagpsub /LTO ldiagpointdef
+ 90 dg /LTO@ANGLE ldiagangledef
+
+ FROM LFROM P1 LMID P2 LTO TO
+
+ % (leaving ldiagdhulinepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+} def
+
+% farr tarr { from } { to } xindent zindent bias radius ldiagdhucurvepath -
+/ldiagdhucurvepath
+{
+ % (entering ldiagdhucurvepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+ /radius exch def
+ /bias exch def
+ /zindent exch def
+ /xindent exch def
+ cvlit /to exch def
+ cvlit /from exch def
+ /toarrowlength exch def
+ /fromarrowlength exch def
+
+ from (CTR) ldiagdolabel 270 dg from (CIRCUM) ldiagdolabel ldiagpadd 0 0
+ fromarrowlength 270 dg ldiagatangle ldiagpadd /FROM ldiagpointdef
+ 270 dg /FROM@ANGLE ldiagangledef
+ to (CTR) ldiagdolabel 270 dg to (CIRCUM) ldiagdolabel ldiagpadd 0 0
+ toarrowlength 270 dg ldiagatangle ldiagpadd /TO ldiagpointdef
+ 90 dg /TO@ANGLE ldiagangledef
+ /XDOWN [ FROM exch pop TO exch pop ldiagmin bias sub ] cvx def
+ /XP1 [ FROM pop XDOWN ] cvx def
+ /XP2 [ TO pop XDOWN ] cvx def
+ /HORIZ [ XP1 XP2 ldiagangleto ] cvx def
+ XP1 0.5 ldiagpmul XP2 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef
+ HORIZ /LMID@ANGLE ldiagangledef
+ /XINDENT [ xindent FROM XP1 ldiagdistance ldiagmin ] cvx def
+ /ZINDENT [ zindent XP2 TO ldiagdistance ldiagmin ] cvx def
+ 0 XINDENT FROM ldiagpsub /LFROM ldiagpointdef
+ 270 dg /LFROM@ANGLE ldiagangledef
+ 0 ZINDENT TO ldiagpsub /LTO ldiagpointdef
+ 90 dg /LTO@ANGLE ldiagangledef
+ /RADIUS [ radius XP1 XP2 ldiagdistance 2 div ldiagmin ] cvx def
+ /XP1PRE [ XP1 0 0 RADIUS 90 dg ldiagatangle ldiagpadd ] cvx def
+ /XP1POST [ XP1 0 0 RADIUS HORIZ ldiagatangle ldiagpadd ] cvx def
+ /XP1CTR [ XP1PRE 0 0 RADIUS HORIZ ldiagatangle ldiagpadd ] cvx def
+ XP1CTR 0 0 RADIUS XP1CTR XP1 ldiagangleto ldiagatangle ldiagpadd
+ /P1 ldiagpointdef
+ XP1PRE XP1POST ldiagangleto /P1@ANGLE ldiagangledef
+ /XP2PRE [ 0 0 RADIUS HORIZ ldiagatangle XP2 ldiagpsub ] cvx def
+ /XP2POST [ XP2 0 0 RADIUS 90 dg ldiagatangle ldiagpadd ] cvx def
+ /XP2CTR [ XP2PRE 0 0 RADIUS 90 dg ldiagatangle ldiagpadd ] cvx def
+ XP2CTR 0 0 RADIUS XP2CTR XP2 ldiagangleto ldiagatangle ldiagpadd
+ /P2 ldiagpointdef
+ XP2PRE XP2POST ldiagangleto /P2@ANGLE ldiagangledef
+ FROM LFROM XP1PRE
+ {} {} { [XP1CTR clockwise] P1 [XP1CTR clockwise] } {} { [XP1CTR] P1 [XP1CTR] }
+ {} {} {} HORIZ round ldiagquadcase
+ XP1POST LMID XP2PRE
+ {} {} { [XP2CTR clockwise ] P2 [XP2CTR clockwise ] } {} { [XP2CTR] P2 [XP2CTR] }
+ {} {} {} HORIZ round ldiagquadcase
+ XP2POST LTO TO
+
+ % (leaving ldiagdhucurvepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+} def
+
+% farr tarr { from } { to } xindent zindent bias ldiaguhdlinepath -
+/ldiaguhdlinepath
+{
+ % (entering ldiaguhdlinepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+ /bias exch def
+ /zindent exch def
+ /xindent exch def
+ cvlit /to exch def
+ cvlit /from exch def
+ /toarrowlength exch def
+ /fromarrowlength exch def
+
+ from (CTR) ldiagdolabel 90 dg from (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 fromarrowlength 90 dg ldiagatangle ldiagpadd /FROM ldiagpointdef
+ 90 dg /FROM@ANGLE ldiagangledef
+ to (CTR) ldiagdolabel 90 dg to (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 toarrowlength 90 dg ldiagatangle ldiagpadd /TO ldiagpointdef
+ 270 dg /TO@ANGLE ldiagangledef
+ /XUP [ FROM exch pop TO exch pop ldiagmax bias add ] cvx def
+ FROM pop XUP /P1 ldiagpointdef
+ TO pop XUP /P2 ldiagpointdef
+ /HORIZ [ P1 P2 ldiagangleto ] cvx def
+ P1 P1 0 0 1 ft 90 dg ldiagatangle ldiagpadd 0 0 1 ft HORIZ ldiagatangle
+ ldiagpadd ldiagangleto /P1@ANGLE ldiagangledef
+ P2 P2 0 0 1 ft 270 dg ldiagatangle ldiagpadd 0 0 1 ft HORIZ ldiagatangle
+ ldiagpadd ldiagangleto /P2@ANGLE ldiagangledef
+ P1 0.5 ldiagpmul P2 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef
+ HORIZ /LMID@ANGLE ldiagangledef
+ /XINDENT [ xindent FROM P1 ldiagdistance ldiagmin ] cvx def
+ /ZINDENT [ zindent P2 TO ldiagdistance ldiagmin ] cvx def
+ FROM 0 XINDENT ldiagpadd /LFROM ldiagpointdef
+ 90 dg /LFROM@ANGLE ldiagangledef
+ TO 0 ZINDENT ldiagpadd /LTO ldiagpointdef
+ 270 dg /LTO@ANGLE ldiagangledef
+ FROM LFROM P1 LMID P2 LTO TO
+
+ % (leaving ldiaguhdlinepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+} def
+
+
+% farr tarr { from } { to } xindent zindent bias radius ldiaguhdcurvepath -
+/ldiaguhdcurvepath
+{
+ % (entering ldiaguhdcurvepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+ /radius exch def
+ /bias exch def
+ /zindent exch def
+ /xindent exch def
+ cvlit /to exch def
+ cvlit /from exch def
+ /toarrowlength exch def
+ /fromarrowlength exch def
+
+ from (CTR) ldiagdolabel 90 dg from (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 fromarrowlength 90 dg ldiagatangle ldiagpadd /FROM ldiagpointdef
+ 90 dg /FROM@ANGLE ldiagangledef
+ to (CTR) ldiagdolabel 90 dg to (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 toarrowlength 90 dg ldiagatangle ldiagpadd /TO ldiagpointdef
+ 270 dg /TO@ANGLE ldiagangledef
+ /XUP [ FROM exch pop TO exch pop ldiagmax bias add ] cvx def
+ /XP1 [ FROM pop XUP ] cvx def
+ /XP2 [ TO pop XUP ] cvx def
+ /HORIZ [ XP1 XP2 ldiagangleto ] cvx def
+ XP1 0.5 ldiagpmul XP2 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef
+ HORIZ /LMID@ANGLE ldiagangledef
+ /XINDENT [ xindent FROM XP1 ldiagdistance ldiagmin ] cvx def
+ /ZINDENT [ zindent XP2 TO ldiagdistance ldiagmin ] cvx def
+ FROM 0 XINDENT ldiagpadd /LFROM ldiagpointdef
+ 90 dg /LFROM@ANGLE ldiagangledef
+ TO 0 ZINDENT ldiagpadd /LTO ldiagpointdef
+ 270 dg /LTO@ANGLE ldiagangledef
+ /RADIUS [ radius XP1 XP2 ldiagdistance 0.5 mul ldiagmin ] cvx def
+ /XP1PRE [ XP1 0 0 RADIUS 270 dg ldiagatangle ldiagpadd ] cvx def
+ /XP1POST [ XP1 0 0 RADIUS HORIZ ldiagatangle ldiagpadd ] cvx def
+ /XP1CTR [ XP1PRE 0 0 RADIUS HORIZ ldiagatangle ldiagpadd ] cvx def
+ XP1CTR 0 0 RADIUS XP1CTR XP1 ldiagangleto ldiagatangle ldiagpadd
+ /P1 ldiagpointdef
+ XP1PRE XP1POST ldiagangleto /P1@ANGLE ldiagangledef
+ /XP2PRE [ 0 0 RADIUS HORIZ ldiagatangle XP2 ldiagpsub ] cvx def
+ /XP2POST [ XP2 0 0 RADIUS 270 dg ldiagatangle ldiagpadd ] cvx def
+ /XP2CTR [ XP2PRE 0 0 RADIUS 270 dg ldiagatangle ldiagpadd ] cvx def
+ XP2CTR 0 0 RADIUS XP2CTR XP2 ldiagangleto ldiagatangle ldiagpadd
+ /P2 ldiagpointdef
+ XP2PRE XP2POST ldiagangleto /P2@ANGLE ldiagangledef
+ FROM LFROM XP1PRE
+ {} {} {[XP1CTR] P1 [XP1CTR]} {} {[XP1CTR clockwise] P1 [XP1CTR clockwise]}
+ {} {} {} HORIZ round ldiagquadcase
+ XP1POST LMID XP2PRE
+ {} {} {[XP2CTR] P2 [XP2CTR]} {} {[XP2CTR clockwise] P2 [XP2CTR clockwise]}
+ {} {} {} HORIZ round ldiagquadcase
+ XP2POST LTO TO
+
+ % (leaving ldiaguhdcurvepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+} def
+
+% farr tarr { from } { to } xindent zindent hfrac hbias ldiaghvhlinepath -
+/ldiaghvhlinepath % still to do
+{
+ % (entering ldiaghvhlinepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+ /hbias exch def
+ /hfrac exch def
+ /zindent exch def
+ /xindent exch def
+ cvlit /to exch def
+ cvlit /from exch def
+ /toarrowlength exch def
+ /fromarrowlength exch def
+
+ /FRDIRN [ { 0 dg } { 180 dg } { 180 dg } { 0 dg }
+ { 0 dg } { 0 dg } { 180 dg } { 180 dg }
+ from (CTR) ldiagdolabel to (CTR) ldiagdolabel
+ ldiagangleto ldiagquadcase ] cvx def
+ /TODIRN [ FRDIRN 180 dg add ] cvx def
+ from (CTR) ldiagdolabel FRDIRN from (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 fromarrowlength FRDIRN ldiagatangle ldiagpadd /FROM ldiagpointdef
+ FRDIRN /FROM@ANGLE ldiagangledef
+ to (CTR) ldiagdolabel TODIRN to (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 toarrowlength TODIRN ldiagatangle ldiagpadd /TO ldiagpointdef
+ FRDIRN /TO@ANGLE ldiagangledef
+ /BIAS [ FROM pop TO pop sub abs hfrac mul hbias add ] cvx def
+ FROM 0 0 BIAS FRDIRN ldiagatangle ldiagpadd /P1 ldiagpointdef
+ P1 pop TO exch pop /P2 ldiagpointdef
+ P1 0.5 ldiagpmul P2 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef
+ P1 P2 ldiagangleto /LMID@ANGLE ldiagangledef
+ /XINDENT [ xindent FROM P1 ldiagdistance ldiagmin ] cvx def
+ /ZINDENT [ zindent P2 TO ldiagdistance ldiagmin ] cvx def
+ FROM 0 0 XINDENT FRDIRN ldiagatangle ldiagpadd /LFROM ldiagpointdef
+ FRDIRN /LFROM@ANGLE ldiagangledef
+ TO 0 0 ZINDENT TODIRN ldiagatangle ldiagpadd /LTO ldiagpointdef
+ FRDIRN /LTO@ANGLE ldiagangledef
+ FROM LFROM P1 LMID P2 LTO TO
+
+ % (leaving ldiaghvhlinepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+} def
+
+
+% farr tarr { from } { to } xindent zindent hfrac hbias radius ldiaghvhcurvepath -
+/ldiaghvhcurvepath % still to do
+{
+ % (entering ldiaghvhcurvepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+ /radius exch def
+ /hbias exch def
+ /hfrac exch def
+ /zindent exch def
+ /xindent exch def
+ cvlit /to exch def
+ cvlit /from exch def
+ /toarrowlength exch def
+ /fromarrowlength exch def
+
+ /FRDIRN [ { 0 dg } { 180 dg } { 180 dg } { 0 dg }
+ { 0 dg } { 0 dg } { 180 dg } { 180 dg }
+ from (CTR) ldiagdolabel to (CTR) ldiagdolabel
+ ldiagangleto ldiagquadcase ] cvx def
+ /TODIRN [ FRDIRN 180 dg add ] cvx def
+
+ from (CTR) ldiagdolabel FRDIRN from (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 fromarrowlength FRDIRN ldiagatangle ldiagpadd /FROM ldiagpointdef
+ FRDIRN /FROM@ANGLE ldiagangledef
+ to (CTR) ldiagdolabel TODIRN to (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 toarrowlength TODIRN ldiagatangle ldiagpadd /TO ldiagpointdef
+
+ FRDIRN /TO@ANGLE ldiagangledef
+ /BIAS [ FROM pop TO pop sub abs hfrac mul hbias add ] cvx def
+ /XP1 [ FROM 0 0 BIAS FRDIRN ldiagatangle ldiagpadd ] cvx def
+ /XP2 [ XP1 pop TO exch pop ] cvx def
+ XP1 0.5 ldiagpmul XP2 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef
+ /VERT [ XP1 XP2 ldiagangleto round ] cvx def
+ VERT /LMID@ANGLE ldiagangledef
+ /XINDENT [ xindent FROM XP1 ldiagdistance ldiagmin ] cvx def
+ /ZINDENT [ zindent XP2 TO ldiagdistance ldiagmin ] cvx def
+ FROM 0 0 XINDENT FRDIRN ldiagatangle ldiagpadd /LFROM ldiagpointdef
+ FRDIRN /LFROM@ANGLE ldiagangledef
+ TO 0 0 ZINDENT TODIRN ldiagatangle ldiagpadd /LTO ldiagpointdef
+ FRDIRN /LTO@ANGLE ldiagangledef
+ /RADIUS [ radius XP1 XP2 ldiagdistance 2 div ldiagmin ] cvx def
+ /XP1PRE [ XP1 0 0 RADIUS TODIRN ldiagatangle ldiagpadd ] cvx def
+ /XP1POST [ XP1 0 0 RADIUS VERT ldiagatangle ldiagpadd ] cvx def
+ /XP1CTR [ XP1PRE 0 0 RADIUS VERT ldiagatangle ldiagpadd ] cvx def
+ XP1CTR 0 0 RADIUS XP1CTR XP1 ldiagangleto ldiagatangle ldiagpadd /P1 ldiagpointdef
+ XP1PRE XP1POST ldiagangleto /P1@ANGLE ldiagangledef
+ /XP2PRE [ 0 0 RADIUS VERT ldiagatangle XP2 ldiagpsub ] cvx def
+ /XP2POST [ XP2 0 0 RADIUS FRDIRN ldiagatangle ldiagpadd ] cvx def
+ /XP2CTR [ 0 0 RADIUS VERT ldiagatangle XP2POST ldiagpsub ] cvx def
+ XP2CTR 0 0 RADIUS XP2CTR XP2 ldiagangleto ldiagatangle ldiagpadd /P2 ldiagpointdef
+ XP2PRE XP2POST ldiagangleto /P2@ANGLE ldiagangledef
+ VERT FRDIRN sub 90 eq
+ { /P1GO [ anticlockwise ] cvx def /P2GO [ clockwise ] cvx def }
+ { /P1GO [ clockwise ] cvx def /P2GO [ anticlockwise ] cvx def }
+ ifelse
+ FROM LFROM
+ XP1PRE [XP1CTR P1GO] P1 [XP1CTR P1GO] XP1POST
+ LMID
+ XP2PRE [XP2CTR P2GO] P2 [XP2CTR P2GO] XP2POST
+ LTO TO
+
+ % (leaving ldiaghvhcurvepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+} def
+
+% farr tarr { from } { to } xindent zindent hfrac hbias ldiagvhvlinepath -
+/ldiagvhvlinepath % still to do
+{
+ % (entering ldiagvhvlinepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+ /hbias exch def
+ /hfrac exch def
+ /zindent exch def
+ /xindent exch def
+ cvlit /to exch def
+ cvlit /from exch def
+ /toarrowlength exch def
+ /fromarrowlength exch def
+
+ /FRDIRN [ { 90 dg } { 270 dg } { 270 dg } { 0 dg }
+ { 90 dg } { 270 dg } { 270 dg } { 90 dg }
+ from (CTR) ldiagdolabel to (CTR) ldiagdolabel
+ ldiagangleto ldiagquadcase ] cvx def
+ /TODIRN [ FRDIRN 180 dg sub ] cvx def
+ from (CTR) ldiagdolabel FRDIRN from (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 fromarrowlength FRDIRN ldiagatangle ldiagpadd /FROM ldiagpointdef
+ FRDIRN /FROM@ANGLE ldiagangledef
+ to (CTR) ldiagdolabel TODIRN to (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 toarrowlength TODIRN ldiagatangle ldiagpadd /TO ldiagpointdef
+ FRDIRN /TO@ANGLE ldiagangledef
+ /BIAS [ FROM exch pop TO exch pop sub abs hfrac mul hbias ft add ] cvx def
+ FROM 0 0 BIAS FRDIRN ldiagatangle ldiagpadd /P1 ldiagpointdef
+ TO pop P1 exch pop /P2 ldiagpointdef
+ P1 0.5 ldiagpmul P2 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef
+ P1 P2 ldiagangleto /LMID@ANGLE ldiagangledef
+ /XINDENT [ xindent FROM P1 ldiagdistance ldiagmin ] cvx def
+ /ZINDENT [ zindent P2 TO ldiagdistance ldiagmin ] cvx def
+ FROM 0 0 XINDENT FRDIRN ldiagatangle ldiagpadd /LFROM ldiagpointdef
+ FRDIRN /LFROM@ANGLE ldiagangledef
+ TO 0 0 ZINDENT TODIRN ldiagatangle ldiagpadd /LTO ldiagpointdef
+ FRDIRN /LTO@ANGLE ldiagangledef
+ FROM LFROM P1 LMID P2 LTO TO
+
+ % (leaving ldiagvhvlinepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+} def
+
+
+% farr tarr { from } { to } xindent zindent hfrac hbias radius ldiagvhvcurvepath -
+/ldiagvhvcurvepath % still to do
+{
+ % (entering ldiagvhvcurvepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+ /radius exch def
+ /hbias exch def
+ /hfrac exch def
+ /zindent exch def
+ /xindent exch def
+ cvlit /to exch def
+ cvlit /from exch def
+ /toarrowlength exch def
+ /fromarrowlength exch def
+
+ /FRDIRN [ { 90 dg } { 270 dg } { 270 dg } { 0 dg }
+ { 90 dg } { 270 dg } { 270 dg } { 90 dg }
+ from (CTR) ldiagdolabel to (CTR) ldiagdolabel
+ ldiagangleto ldiagquadcase ] cvx def
+ /TODIRN [ FRDIRN 180 dg sub ] cvx def
+ from (CTR) ldiagdolabel FRDIRN from (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 fromarrowlength FRDIRN ldiagatangle ldiagpadd /FROM ldiagpointdef
+ FRDIRN /FROM@ANGLE ldiagangledef
+ to (CTR) ldiagdolabel TODIRN to (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 toarrowlength TODIRN ldiagatangle ldiagpadd /TO ldiagpointdef
+ FRDIRN /TO@ANGLE ldiagangledef
+ /BIAS [ FROM exch pop TO exch pop sub abs hfrac mul hbias add ] cvx def
+ /XP1 [ FROM 0 0 BIAS FRDIRN ldiagatangle ldiagpadd ] cvx def
+ /XP2 [ TO pop XP1 exch pop ] cvx def
+ XP1 0.5 ldiagpmul XP2 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef
+ /VERT [ XP1 XP2 ldiagangleto round ] cvx def
+ VERT /LMID@ANGLE ldiagangledef
+ /XINDENT [ xindent FROM XP1 ldiagdistance ldiagmin ] cvx def
+ /ZINDENT [ zindent XP2 TO ldiagdistance ldiagmin ] cvx def
+ FROM 0 0 XINDENT FRDIRN ldiagatangle ldiagpadd /LFROM ldiagpointdef
+ FRDIRN /LFROM@ANGLE ldiagangledef
+ TO 0 0 ZINDENT TODIRN ldiagatangle ldiagpadd /LTO ldiagpointdef
+ FRDIRN /LTO@ANGLE ldiagangledef
+ /RADIUS [ radius XP1 XP2 ldiagdistance 2 div ldiagmin ] cvx def
+ /XP1PRE [ XP1 0 0 RADIUS TODIRN ldiagatangle ldiagpadd ] cvx def
+ /XP1POST [ XP1 0 0 RADIUS VERT ldiagatangle ldiagpadd ] cvx def
+ /XP1CTR [ XP1PRE 0 0 RADIUS VERT ldiagatangle ldiagpadd ] cvx def
+ XP1CTR 0 0 RADIUS XP1CTR XP1 ldiagangleto ldiagatangle ldiagpadd /P1 ldiagpointdef
+ XP1PRE XP1POST ldiagangleto /P1@ANGLE ldiagangledef
+ /XP2PRE [ 0 0 RADIUS VERT ldiagatangle XP2 ldiagpsub ] cvx def
+ /XP2POST [ XP2 0 0 RADIUS FRDIRN ldiagatangle ldiagpadd ] cvx def
+ /XP2CTR [ 0 0 RADIUS VERT ldiagatangle XP2POST ldiagpsub ] cvx def
+ XP2CTR 0 0 RADIUS XP2CTR XP2 ldiagangleto ldiagatangle ldiagpadd /P2 ldiagpointdef
+ XP2PRE XP2POST ldiagangleto /P2@ANGLE ldiagangledef
+ FRDIRN VERT sub 90 eq
+ { /P1GO [ clockwise ] cvx def /P2GO [ anticlockwise ] cvx def }
+ { /P1GO [ anticlockwise ] cvx def /P2GO [ clockwise ] cvx def }
+ ifelse
+ FROM LFROM
+ XP1PRE [XP1CTR P1GO] P1 [XP1CTR P1GO] XP1POST
+ LMID
+ XP2PRE [XP2CTR P2GO] P2 [XP2CTR P2GO] XP2POST
+ LTO TO
+
+
+ % (leaving ldiagvhvcurvepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+} def
+
+% farr tarr { from } { to } xindent zindent bias fbias tbias ldiagdwraplinepath -
+/ldiagdwraplinepath
+{
+ % (entering ldiagdwraplinepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+ /tbias exch def
+ /fbias exch def
+ /bias exch def
+ /zindent exch def
+ /xindent exch def
+ cvlit /to exch def
+ cvlit /from exch def
+ /toarrowlength exch def
+ /fromarrowlength exch def
+
+ /DIRN [ from (CTR) ldiagdolabel pop to (CTR) ldiagdolabel pop
+ lt { 180 dg } { 0 dg } ifelse ] cvx def
+ from (CTR) ldiagdolabel DIRN from (CIRCUM) ldiagdolabel ldiagpadd 0 0
+ fromarrowlength DIRN ldiagatangle ldiagpadd /FROM ldiagpointdef
+ DIRN /FROM@ANGLE ldiagangledef
+ to (CTR) ldiagdolabel DIRN 180 dg add to (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 toarrowlength DIRN 180 dg add ldiagatangle ldiagpadd /TO ldiagpointdef
+ DIRN /TO@ANGLE ldiagangledef
+ FROM 0 0 fbias 0 ldiagmax DIRN ldiagatangle ldiagpadd /P1 ldiagpointdef
+ DIRN 180 dg eq { 225 dg } { -45 dg } ifelse /P1@ANGLE ldiagangledef
+ TO 0 0 tbias 0 ldiagmax DIRN 180 dg add ldiagatangle ldiagpadd
+ /P4 ldiagpointdef
+ DIRN 180 dg eq { 135 dg } { 45 dg } ifelse /P4@ANGLE ldiagangledef
+ /YC [ from (CTR) ldiagdolabel 270 dg from (CIRCUM) ldiagdolabel ldiagpadd
+ exch pop to (CTR) ldiagdolabel 270 dg to (CIRCUM) ldiagdolabel ldiagpadd
+ exch pop ldiagmin bias 0 ldiagmax sub ] cvx def
+ P1 pop YC /P2 ldiagpointdef
+ P4@ANGLE 180 dg sub /P2@ANGLE ldiagangledef
+ P4 pop YC /P3 ldiagpointdef
+ P1@ANGLE 180 dg sub /P3@ANGLE ldiagangledef
+ /XINDENT [ xindent FROM P1 ldiagdistance ldiagmin ] cvx def
+ FROM 0 0 XINDENT DIRN ldiagatangle ldiagpadd /LFROM ldiagpointdef
+ FROM@ANGLE /LFROM@ANGLE ldiagangledef
+ /ZINDENT [ zindent TO P4 ldiagdistance ldiagmin ] cvx def
+ TO 0 0 ZINDENT DIRN 180 dg add ldiagatangle ldiagpadd /LTO ldiagpointdef
+ TO@ANGLE /LTO@ANGLE ldiagangledef
+ P2 0.5 ldiagpmul P3 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef
+ DIRN 180 dg sub /LMID@ANGLE ldiagangledef
+ FROM P1 P2 P3 P4 TO
+
+ % (leaving ldiagdwraplinepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+} def
+
+% farr tarr { from } { to } xindent zindent bias fbias tbias radius
+% ldiagdwrapcurvepath -
+/ldiagdwrapcurvepath
+{
+ % (entering ldiagdwrapcurvepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+ /radius exch def
+ /tbias exch def
+ /fbias exch def
+ /bias exch def
+ /zindent exch def
+ /xindent exch def
+ cvlit /to exch def
+ cvlit /from exch def
+ /toarrowlength exch def
+ /fromarrowlength exch def
+
+ /DIRN [ from (CTR) ldiagdolabel pop to (CTR) ldiagdolabel pop lt
+ { 180 dg } { 0 dg } ifelse ] cvx def
+ /CLOCK [ from (CTR) ldiagdolabel pop to (CTR) ldiagdolabel pop lt
+ { anticlockwise } { clockwise } ifelse ] cvx def
+ from (CTR) ldiagdolabel DIRN from (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 fromarrowlength DIRN ldiagatangle ldiagpadd /FROM ldiagpointdef
+ DIRN /FROM@ANGLE ldiagangledef
+ to (CTR) ldiagdolabel DIRN 180 dg add to (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 toarrowlength DIRN 180 dg add ldiagatangle ldiagpadd /TO ldiagpointdef
+ DIRN /TO@ANGLE ldiagangledef
+ /XP1 [ FROM 0 0 fbias 0 ldiagmax DIRN ldiagatangle ldiagpadd ] cvx def
+ /XP4 [ TO 0 0 tbias 0 ldiagmax DIRN 180 dg add ldiagatangle ldiagpadd ] cvx def
+ /YC [ from (CTR) ldiagdolabel 270 dg from (CIRCUM) ldiagdolabel ldiagpadd
+ exch pop to (CTR) ldiagdolabel 270 dg to (CIRCUM) ldiagdolabel ldiagpadd
+ exch pop ldiagmin bias 0 ldiagmax sub ] cvx def
+ /XP2 [ XP1 pop YC ] cvx def
+ /XP3 [ XP4 pop YC ] cvx def
+ /RP1 [ radius XP1 FROM ldiagdistance XP1 XP2 ldiagdistance 2 div
+ ldiagmin ldiagmin ] cvx def
+ /XP1PRE [ XP1 0 0 RP1 XP1 FROM ldiagangleto ldiagatangle ldiagpadd ] cvx def
+ /XP1POST [ XP1 0 0 RP1 XP1 XP2 ldiagangleto ldiagatangle ldiagpadd ] cvx def
+ /XP1CTR [ XP1PRE 0 0 RP1 XP1 XP2 ldiagangleto ldiagatangle ldiagpadd ] cvx def
+ XP1CTR 0 0 RP1 XP1CTR XP1 ldiagangleto ldiagatangle ldiagpadd /P1 ldiagpointdef
+ XP1CTR P1 ldiagangleto DIRN add 90 dg sub /P1@ANGLE ldiagangledef
+ /RP2 [ radius XP1 XP2 ldiagdistance 2 div XP2 XP3 ldiagdistance 2 div
+ ldiagmin ldiagmin ] cvx def
+ /XP2PRE [ XP2 0 0 RP2 XP2 XP1 ldiagangleto ldiagatangle ldiagpadd ] cvx def
+ /XP2POST [ XP2 0 0 RP2 XP2 XP3 ldiagangleto ldiagatangle ldiagpadd ] cvx def
+ /XP2CTR [ XP2PRE 0 0 RP2 XP2 XP3 ldiagangleto ldiagatangle ldiagpadd ] cvx def
+ XP2CTR 0 0 RP2 XP2CTR XP2 ldiagangleto ldiagatangle ldiagpadd /P2 ldiagpointdef
+ XP2CTR P2 ldiagangleto DIRN add 90 dg sub /P2@ANGLE ldiagangledef
+ /RP3 [ radius XP2 XP3 ldiagdistance 2 div XP3 XP4 ldiagdistance 2 div
+ ldiagmin ldiagmin ] cvx def
+ /XP3PRE [ XP3 0 0 RP3 XP3 XP2 ldiagangleto ldiagatangle ldiagpadd ] cvx def
+ /XP3POST [ XP3 0 0 RP3 XP3 XP4 ldiagangleto ldiagatangle ldiagpadd ] cvx def
+ /XP3CTR [ XP3PRE 0 0 RP3 XP3 XP4 ldiagangleto ldiagatangle ldiagpadd ] cvx def
+ XP3CTR 0 0 RP3 XP3CTR XP3 ldiagangleto ldiagatangle ldiagpadd /P3 ldiagpointdef
+ XP3CTR P3 ldiagangleto DIRN add 90 dg sub /P3@ANGLE ldiagangledef
+ /RP4 [ radius XP4 XP3 ldiagdistance 2 div XP4 TO ldiagdistance
+ ldiagmin ldiagmin ] cvx def
+ /XP4PRE [ XP4 0 0 RP4 XP4 XP3 ldiagangleto ldiagatangle ldiagpadd ] cvx def
+ /XP4POST [ XP4 0 0 RP4 XP4 TO ldiagangleto ldiagatangle ldiagpadd ] cvx def
+ /XP4CTR [ XP4PRE 0 0 RP4 XP4 TO ldiagangleto ldiagatangle ldiagpadd ] cvx def
+ XP4CTR 0 0 RP4 XP4CTR XP4 ldiagangleto ldiagatangle ldiagpadd /P4 ldiagpointdef
+ XP4CTR P4 ldiagangleto DIRN add 90 dg sub /P4@ANGLE ldiagangledef
+ /XINDENT [ xindent FROM XP1PRE ldiagdistance ldiagmin ] cvx def
+ FROM 0 0 XINDENT DIRN ldiagatangle ldiagpadd /LFROM ldiagpointdef
+ FROM@ANGLE /LFROM@ANGLE ldiagangledef
+ XP2 0.5 ldiagpmul XP3 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef
+ DIRN 180 dg sub /LMID@ANGLE ldiagangledef
+ /ZINDENT [ zindent TO XP4POST ldiagdistance ldiagmin ] cvx def
+ TO 0 0 ZINDENT DIRN 180 dg add ldiagatangle ldiagpadd /LTO ldiagpointdef
+ TO@ANGLE /LTO@ANGLE ldiagangledef
+ FROM LFROM
+ XP1PRE [XP1CTR CLOCK] XP1POST
+ XP2PRE [XP2CTR CLOCK] XP2POST
+ LMID
+ XP3PRE [XP3CTR CLOCK] XP3POST
+ XP4PRE [XP4CTR CLOCK] XP4POST
+ LTO TO
+
+ % (leaving ldiagdwrapcurvepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+} def
+
+% farr tarr { from } { to } xindent zindent bias fbias tbias ldiaguwraplinepath -
+/ldiaguwraplinepath
+{
+ % (entering ldiaguwraplinepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+ /tbias exch def
+ /fbias exch def
+ /bias exch def
+ /zindent exch def
+ /xindent exch def
+ cvlit /to exch def
+ cvlit /from exch def
+ /toarrowlength exch def
+ /fromarrowlength exch def
+
+ /DIRN [ from (CTR) ldiagdolabel pop to (CTR) ldiagdolabel pop lt
+ { 180 dg } { 0 dg } ifelse ] cvx def
+ from (CTR) ldiagdolabel DIRN from (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 fromarrowlength DIRN ldiagatangle ldiagpadd /FROM ldiagpointdef
+ DIRN /FROM@ANGLE ldiagangledef
+ to (CTR) ldiagdolabel DIRN 180 dg add to (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 toarrowlength DIRN 180 dg add ldiagatangle ldiagpadd /TO ldiagpointdef
+ DIRN /TO@ANGLE ldiagangledef
+ FROM 0 0 fbias 0 ldiagmax DIRN ldiagatangle ldiagpadd /P1 ldiagpointdef
+ DIRN 180 dg eq { 135 dg } { 45 dg } ifelse /P1@ANGLE ldiagangledef
+ TO 0 0 tbias 0 ldiagmax DIRN 180 dg add ldiagatangle ldiagpadd
+ /P4 ldiagpointdef
+ DIRN 180 dg eq { 225 dg } { -45 dg } ifelse /P4@ANGLE ldiagangledef
+ /YC [ from (CTR) ldiagdolabel 90 dg from (CIRCUM) ldiagdolabel ldiagpadd
+ exch pop to (CTR) ldiagdolabel 90 dg to (CIRCUM) ldiagdolabel ldiagpadd
+ exch pop ldiagmax bias 0 ldiagmax add ] cvx def
+ P1 pop YC /P2 ldiagpointdef
+ P4@ANGLE 180 dg sub /P2@ANGLE ldiagangledef
+ P4 pop YC /P3 ldiagpointdef
+ P1@ANGLE 180 dg sub /P3@ANGLE ldiagangledef
+ /XINDENT [ xindent FROM P1 ldiagdistance ldiagmin ] cvx def
+ FROM 0 0 XINDENT DIRN ldiagatangle ldiagpadd /LFROM ldiagpointdef
+ FROM@ANGLE /LFROM@ANGLE ldiagangledef
+ /ZINDENT [ zindent TO P4 ldiagdistance ldiagmin ] cvx def
+ TO 0 0 ZINDENT DIRN 180 dg add ldiagatangle ldiagpadd /LTO ldiagpointdef
+ TO@ANGLE /LTO@ANGLE ldiagangledef
+ P2 0.5 ldiagpmul P3 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef
+ DIRN 180 dg sub /LMID@ANGLE ldiagangledef
+ FROM P1 P2 P3 P4 TO
+
+ % (leaving ldiaguwraplinepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+} def
+
+% farr tarr { from } { to } xindent zindent bias fbias tbias radius
+% ldiaguwrapcurvepath -
+/ldiaguwrapcurvepath
+{
+ % (entering ldiaguwrapcurvepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+ /radius exch def
+ /tbias exch def
+ /fbias exch def
+ /bias exch def
+ /zindent exch def
+ /xindent exch def
+ cvlit /to exch def
+ cvlit /from exch def
+ /toarrowlength exch def
+ /fromarrowlength exch def
+
+ /DIRN [ from (CTR) ldiagdolabel pop to (CTR) ldiagdolabel pop lt
+ { 180 dg } { 0 dg } ifelse ] cvx def
+ /CLOCK [ from (CTR) ldiagdolabel pop to (CTR) ldiagdolabel pop lt
+ { clockwise } { anticlockwise } ifelse ] cvx def
+ from (CTR) ldiagdolabel DIRN from (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 fromarrowlength DIRN ldiagatangle ldiagpadd /FROM ldiagpointdef
+ DIRN /FROM@ANGLE ldiagangledef
+ to (CTR) ldiagdolabel DIRN 180 dg add to (CIRCUM) ldiagdolabel ldiagpadd
+ 0 0 toarrowlength DIRN 180 dg add ldiagatangle ldiagpadd /TO ldiagpointdef
+ DIRN /TO@ANGLE ldiagangledef
+ /XP1 [ FROM 0 0 fbias 0 ldiagmax DIRN ldiagatangle ldiagpadd ] cvx def
+ /XP4 [ TO 0 0 tbias 0 ldiagmax DIRN 180 dg add ldiagatangle ldiagpadd ] cvx def
+ /YC [ from (CTR) ldiagdolabel 90 dg from (CIRCUM) ldiagdolabel ldiagpadd
+ exch pop to (CTR) ldiagdolabel 90 dg to (CIRCUM) ldiagdolabel ldiagpadd
+ exch pop ldiagmax bias 0 ldiagmax add ] cvx def
+ /XP2 [ XP1 pop YC ] cvx def
+ /XP3 [ XP4 pop YC ] cvx def
+ /RP1 [ radius XP1 FROM ldiagdistance XP1 XP2 ldiagdistance 2 div
+ ldiagmin ldiagmin ] cvx def
+ /XP1PRE [ XP1 0 0 RP1 XP1 FROM ldiagangleto ldiagatangle ldiagpadd ] cvx def
+ /XP1POST [ XP1 0 0 RP1 XP1 XP2 ldiagangleto ldiagatangle ldiagpadd ] cvx def
+ /XP1CTR [ XP1PRE 0 0 RP1 XP1 XP2 ldiagangleto ldiagatangle ldiagpadd ] cvx def
+ XP1CTR 0 0 RP1 XP1CTR XP1 ldiagangleto ldiagatangle ldiagpadd /P1 ldiagpointdef
+ XP1CTR P1 ldiagangleto DIRN add 90 dg add /P1@ANGLE ldiagangledef
+ /RP2 [ radius XP1 XP2 ldiagdistance 2 div XP2 XP3 ldiagdistance 2 div
+ ldiagmin ldiagmin ] cvx def
+ /XP2PRE [ XP2 0 0 RP2 XP2 XP1 ldiagangleto ldiagatangle ldiagpadd ] cvx def
+ /XP2POST [ XP2 0 0 RP2 XP2 XP3 ldiagangleto ldiagatangle ldiagpadd ] cvx def
+ /XP2CTR [ XP2PRE 0 0 RP2 XP2 XP3 ldiagangleto ldiagatangle ldiagpadd ] cvx def
+ XP2CTR 0 0 RP2 XP2CTR XP2 ldiagangleto ldiagatangle ldiagpadd /P2 ldiagpointdef
+ XP2CTR P2 ldiagangleto DIRN add 90 dg add /P2@ANGLE ldiagangledef
+ /RP3 [ radius XP2 XP3 ldiagdistance 2 div XP3 XP4 ldiagdistance 2 div
+ ldiagmin ldiagmin ] cvx def
+ /XP3PRE [ XP3 0 0 RP3 XP3 XP2 ldiagangleto ldiagatangle ldiagpadd ] cvx def
+ /XP3POST [ XP3 0 0 RP3 XP3 XP4 ldiagangleto ldiagatangle ldiagpadd ] cvx def
+ /XP3CTR [ XP3PRE 0 0 RP3 XP3 XP4 ldiagangleto ldiagatangle ldiagpadd ] cvx def
+ XP3CTR 0 0 RP3 XP3CTR XP3 ldiagangleto ldiagatangle ldiagpadd /P3 ldiagpointdef
+ XP3CTR P3 ldiagangleto DIRN add 90 dg add /P3@ANGLE ldiagangledef
+ /RP4 [ radius XP4 XP3 ldiagdistance 2 div XP4 TO ldiagdistance
+ ldiagmin ldiagmin ] cvx def
+ /XP4PRE [ XP4 0 0 RP4 XP4 XP3 ldiagangleto ldiagatangle ldiagpadd ] cvx def
+ /XP4POST [ XP4 0 0 RP4 XP4 TO ldiagangleto ldiagatangle ldiagpadd ] cvx def
+ /XP4CTR [ XP4PRE 0 0 RP4 XP4 TO ldiagangleto ldiagatangle ldiagpadd ] cvx def
+ XP4CTR 0 0 RP4 XP4CTR XP4 ldiagangleto ldiagatangle ldiagpadd /P4 ldiagpointdef
+ XP4CTR P4 ldiagangleto DIRN add 90 dg add /P4@ANGLE ldiagangledef
+ /XINDENT [ xindent FROM XP1PRE ldiagdistance ldiagmin ] cvx def
+ FROM 0 0 XINDENT DIRN ldiagatangle ldiagpadd /LFROM ldiagpointdef
+ FROM@ANGLE /LFROM@ANGLE ldiagangledef
+ XP2 0.5 ldiagpmul XP3 0.5 ldiagpmul ldiagpadd /LMID ldiagpointdef
+ DIRN 180 dg sub /LMID@ANGLE ldiagangledef
+ /ZINDENT [ zindent TO XP4POST ldiagdistance ldiagmin ] cvx def
+ TO 0 0 ZINDENT DIRN 180 dg add ldiagatangle ldiagpadd /LTO ldiagpointdef
+ TO@ANGLE /LTO@ANGLE ldiagangledef
+ FROM LFROM
+ XP1PRE [XP1CTR CLOCK] XP1POST
+ XP2PRE [XP2CTR CLOCK] XP2POST
+ LMID
+ XP3PRE [XP3CTR CLOCK] XP3POST
+ XP4PRE [XP4CTR CLOCK] XP4POST
+ LTO TO
+
+ % (leaving ldiaguwrapcurvepath) 0 ldiagdebugprint
+ % count ( stack size is) 1 ldiagdebugprint pop
+} def
+
+% shape and labels of the @SolidArrowHead symbol
+% - ldiagsolidarrowhead -
+/ldiagsolidarrowhead
+{
+ 0 0 xsize ysize 0.5 mul 0 ysize
+} def
+
+% shape and labels of the @SolidWithBarArrowHead symbol
+% <pathwidth> ldiagsolidwithbararrowhead -
+/ldiagsolidwithbararrowhead
+{
+ /pathwidth exch def
+ /XBK [ xsize pathwidth 0.5 mul sub ] cvx def
+ /XFW [ xsize pathwidth 0.5 mul add ] cvx def
+ 0 0 XBK ysize 0.5 mul XBK 0 XFW 0 XFW ysize
+ XBK ysize XBK ysize 0.5 mul 0 ysize 0 0
+} def
+
+% shape and labels of the @OpenArrowHead symbol
+% <pathwidth> <pathgap> ldiagopenarrowhead -
+/ldiagopenarrowhead
+{
+ /pathgap exch def
+ /pathwidth exch def
+ /PSW [ 0 0 ] cvx def
+ /PNW [ 0 ysize ] cvx def
+ /PE [ xsize ysize 0.5 mul ] cvx def
+ /REL [ 0 0 pathwidth PE PNW ldiagangleto 90 add ldiagatangle ] cvx def
+ pathgap 0 eq
+ {
+ /PNA [ 0 ysize 0.5 mul pathwidth 0.5 mul add ] cvx def
+ /PSA [ 0 ysize 0.5 mul pathwidth 0.5 mul sub ] cvx def
+ /PNI [ PNA PNA xsize 0 ldiagpadd PNW REL ldiagpadd
+ PE REL ldiagpadd ldiaglineintersect ] cvx def
+ /PSI [ 0 pathwidth PNI ldiagpsub ] cvx def
+
+ PSW PE PNW PNI PNA PSA PSI PSW
+ }
+ {
+ /PNA [ 0 ysize 0.5 mul pathgap 0.5 mul add pathwidth 0.5 mul add ] cvx def
+ /PSA [ 0 ysize 0.5 mul pathgap 0.5 mul sub pathwidth 0.5 mul sub ] cvx def
+ /PNI [ PNA PNA xsize 0 ldiagpadd PNW REL ldiagpadd
+ PE REL ldiagpadd ldiaglineintersect ] cvx def
+ /PSI [ 0 pathwidth pathgap add PNI ldiagpsub ] cvx def
+ /PXA [ 0 pathwidth PNA ldiagpsub ] cvx def
+ /PXI [ 0 pathwidth PNI ldiagpsub ] cvx def
+ /PYA [ 0 pathwidth PSA ldiagpadd ] cvx def
+ /PYI [ 0 pathwidth PSI ldiagpadd ] cvx def
+
+ PSW PE PNW PNI PNA PXA PXI PYI PYA PSA PSI PSW
+ } ifelse
+} def
+
+% shape and labels of the @HalfOpenArrowHead symbol
+% <pathwidth> <pathgap> ldiaghalfopenarrowhead -
+/ldiaghalfopenarrowhead
+{
+ /pathgap exch def
+ /pathwidth exch def
+ 0 0
+ xsize ysize 0.5 mul
+ 0 ysize
+ pathgap 0 eq
+ {
+ xsize 0.3 mul ysize 0.5 mul pathwidth 0.5 mul add
+ 0 ysize 0.5 mul pathwidth 0.5 mul add
+ 0 ysize 0.5 mul pathwidth 0.5 mul sub
+ xsize 0.3 mul ysize 0.5 mul pathwidth 0.5 mul sub
+ }
+ {
+ xsize 0.3 mul ysize 0.5 mul pathgap 0.5 mul add pathwidth 0.5 mul add
+ 0 ysize 0.5 mul pathgap 0.5 mul add pathwidth 0.5 mul add
+ 0 ysize 0.5 mul pathgap 0.5 mul add pathwidth 0.5 mul sub
+ xsize 0.3 mul ysize 0.5 mul pathgap 0.5 mul add pathwidth 0.5 mul sub
+ xsize 0.3 mul ysize 0.5 mul pathgap 0.5 mul sub pathwidth 0.5 mul add
+ 0 ysize 0.5 mul pathgap 0.5 mul sub pathwidth 0.5 mul add
+ 0 ysize 0.5 mul pathgap 0.5 mul sub pathwidth 0.5 mul sub
+ xsize 0.3 mul ysize 0.5 mul pathgap 0.5 mul sub pathwidth 0.5 mul sub
+ } ifelse
+ 0 0
+} def
+
+% shape and labels of the @SolidCurvedArrowHead symbol
+% - ldiagsolidcurvedarrowhead -
+/ldiagsolidcurvedarrowhead
+{
+ 0 0
+ [0 0 xsize ysize 0.5 mul ldiaglinebetween
+ xsize 0 xsize ysize ldiaglineintersect clockwise]
+ xsize ysize 0.5 mul
+ [xsize ysize 0.5 mul 0 ysize ldiaglinebetween
+ xsize 0 xsize ysize ldiaglineintersect clockwise]
+ 0 ysize
+} def
+
+% shape and labels of the @OpenCurvedArrowHead symbol
+% <pathwidth> <pathgap> ldiagopencurvedarrowhead -
+/ldiagopencurvedarrowhead
+{
+ /pathgap exch def
+ /pathwidth exch def
+ /LR [ 0 0 xsize ysize 0.5 mul ldiaglinebetween
+ xsize 0 xsize ysize ldiaglineintersect
+ ] cvx def
+ /UR [ xsize ysize 0.5 mul 0 ysize ldiaglinebetween
+ xsize 0 xsize ysize ldiaglineintersect
+ ] cvx def
+ /PW2 [ pathwidth 0.5 mul ] cvx def
+ 0 0
+ [LR clockwise]
+ xsize ysize 0.5 mul
+ [UR clockwise]
+ 0 ysize
+ pathgap 0 eq
+ {
+ /UMID [
+ 0 ysize 0.5 mul PW2 add
+ xsize ysize 0.5 mul PW2 add
+ 0 ysize 0 0 1 ft UR 0 ysize ldiagangleto 90 add ldiagatangle
+ ldiagpadd 0 ysize ldiaglineintersect
+ ] cvx def
+ /LMID [ 0 pathwidth UMID ldiagpsub ] cvx def
+ UMID
+ 0 ysize 0.5 mul PW2 add
+ 0 ysize 0.5 mul PW2 sub
+ LMID
+ }
+ {
+ /UMIDU [
+ 0 ysize 0.5 mul PW2 add pathgap 0.5 mul add
+ xsize ysize 0.5 mul PW2 add pathgap 0.5 mul add
+ 0 ysize 0 0 1 ft UR 0 ysize ldiagangleto 90 add ldiagatangle
+ ldiagpadd 0 ysize ldiaglineintersect
+ ] cvx def
+ /UMIDL [ 0 pathwidth UMIDU ldiagpsub ] cvx def
+ /LMIDL [ 0 pathgap 0 pathwidth UMIDU ldiagpsub ldiagpsub ] cvx def
+ /LMIDU [ 0 pathwidth LMIDL ldiagpadd ] cvx def
+ UMIDU
+ 0 UMIDU exch pop
+ 0 UMIDL exch pop
+ UMIDL
+ LMIDU
+ 0 LMIDU exch pop
+ 0 LMIDL exch pop
+ LMIDL
+ } ifelse
+ 0 0
+} def
+
+% shape and labels of the @HalfOpenCurvedArrowHead symbol
+% <pathwidth> <pathgap> ldiaghalfopencurvedarrowhead -
+/ldiaghalfopencurvedarrowhead
+{
+ /pathgap exch def
+ /pathwidth exch def
+ /LR [ 0 0 xsize ysize 0.5 mul ldiaglinebetween
+ xsize 0 xsize ysize ldiaglineintersect
+ ] cvx def
+ /UR [ xsize ysize 0.5 mul 0 ysize ldiaglinebetween
+ xsize 0 xsize ysize ldiaglineintersect
+ ] cvx def
+ /BR [ 0 0 LR 0 ysize UR ldiaglineintersect ] cvx def
+ /BRAD [ 0 0 BR ldiagdistance ] cvx def
+ /PW2 [ pathwidth 0.5 mul ] cvx def
+ 0 0
+ [LR clockwise]
+ xsize ysize 0.5 mul
+ [UR clockwise]
+ 0 ysize
+ [BR clockwise]
+ pathgap 0 eq
+ {
+ /XDIST [ BRAD dup mul PW2 dup mul sub sqrt ] cvx def
+ /UMID [ BR XDIST PW2 ldiagpadd ] cvx def
+ /LMID [ BR XDIST 0 PW2 sub ldiagpadd ] cvx def
+ UMID
+ 0 ysize 0.5 mul PW2 add
+ 0 ysize 0.5 mul PW2 sub
+ LMID
+ }
+ {
+ /XDIST [ BRAD dup mul PW2 dup mul sub sqrt ] cvx def
+ /UMIDU [ BR XDIST PW2 pathgap 0.5 mul add ldiagpadd ] cvx def
+ /UMIDL [ 0 pathwidth UMIDU ldiagpsub ] cvx def
+ /LMIDL [ BR XDIST 0 PW2 sub pathgap 0.5 mul sub ldiagpadd ] cvx def
+ /LMIDU [ 0 pathwidth LMIDL ldiagpadd ] cvx def
+ UMIDU
+ 0 UMIDU exch pop
+ 0 UMIDL exch pop
+ UMIDL
+ LMIDU
+ 0 LMIDU exch pop
+ 0 LMIDL exch pop
+ LMIDL
+ } ifelse
+ [BR clockwise]
+ 0 0
+} def
+
+% shape and labels of the @ManyArrowHead symbol
+% <pathwidth> ldiagmanyarrowhead -
+/ldiagmanyarrowhead
+{
+ /pathwidth exch def
+ /LL [ 0 ysize 2 div pathwidth 2 div sub ] cvx def
+ /LU [ 0 ysize 2 div pathwidth 2 div add ] cvx def
+ LL
+ xsize 0
+ xsize pathwidth
+ LU
+ LL
+ []
+ LL
+ xsize LL exch pop
+ xsize LU exch pop
+ LU
+ LL
+ []
+ LL
+ xsize ysize pathwidth sub
+ xsize ysize
+ LU
+ LL
+} def
+
+end
+%%EndResource
diff --git a/include/include/doc b/include/include/doc
new file mode 100644
index 0000000..fca8d6a
--- /dev/null
+++ b/include/include/doc
@@ -0,0 +1,466 @@
+###############################################################################
+# #
+# Lout setup file for ordinary documents #
+# #
+# Jeffrey H. Kingston #
+# #
+# This file has been placed in the public domain by its author. #
+# #
+###############################################################################
+
+
+###############################################################################
+# #
+# @SysInclude commands for standard packages. #
+# #
+###############################################################################
+
+ @SysInclude { langdefs } # language definitions
+ @SysInclude { bsf } # BasicSetup package
+ @SysInclude { dsf } # DocumentSetup package
+ @SysInclude { docf } # OrdinarySetup extension
+
+
+###############################################################################
+# #
+# @Include command for reading personal definitions from current directory. #
+# #
+###############################################################################
+
+ @Include { mydefs }
+
+
+###############################################################################
+# #
+# The @BasicSetup @Use clause - basics, lists, paragraphs, displays. #
+# #
+# To change the default value of any option, delete the # at the start of #
+# its line and change the value between braces. #
+# #
+###############################################################################
+
+@Use { @BasicSetup
+ # @InitialFont { Times Base 12p } # initial font
+ # @InitialBreak {{adjust 1.2fx hyphen} @OrIfPlain {ragged 1fx nohyphen}}
+ # @InitialOutdent { 2f @OrIfPlain 4s } # initial outdent
+ # @InitialSpace { lout } # initial space style
+ # @InitialLanguage { English } # initial language
+ # @InitialColour { black } # initial colour
+ # @InitialBackgroundColour { white } # initial background colour
+ # @OptimizePages { No } # optimize page breaks?
+ # @HeadingFont { Bold } # font for @Heading
+ # @FixedWidthFont { Courier Base -1p } # font for @F
+ # @ParaGap { 1.3vx @OrIfPlain 1f } # gap between paragraphs
+ # @ParaIndent { 2.00f @OrIfPlain 5s } # first-line indent for @PP
+ # @DisplayGap { 1.00v @OrIfPlain 1f } # gap above, below displays
+ # @DisplayIndent { 2.00f @OrIfPlain 5s } # @IndentedDisplay indent
+ # @DefaultIndent { 0.5rt } # @Display indent
+ # @DisplayNumStyle { (num) } # style of display numbers
+ # @WideIndent { 4.00f @OrIfPlain 10s } # @WideTaggedList indent
+ # @VeryWideIndent { 8.00f @OrIfPlain 20s } # @VeryWideTaggedList indent
+ # @ListOuterGap { 1.00v @OrIfPlain 1f } # gap before, after lists
+ # @ListGap { 1.00v @OrIfPlain 1f } # gap between list items
+ # @ListIndent { 0s } # indent of list items
+ # @ListRightIndent { 0s } # right indent of list items
+ # @ListLabelWidth { 2.00f @OrIfPlain 5s } # width allowed for list tags
+ # @ListLabelRight { No } # right-adjust list labels
+ # @ListLabelRightGap { 2s } # gap when right-adjusting
+ # @ListFont { } # font of list items
+ # @ListBreak { } # break style of list items
+ # @NumberSeparator { . } # separates nums like 2.3.7
+ # @CrossLinkFormat { @Body } # format of cross links
+ # @ExternalLinkFormat { @Body } # format of external links
+}
+
+
+###############################################################################
+# #
+# The @DocumentSetup @Use clause - page layout plus figures, tables, etc. #
+# #
+# To change the default value of any option, delete the # at the start of #
+# its line and change the value between braces. #
+# #
+###############################################################################
+
+@Use { @DocumentSetup
+ # @PageType { A4 @OrIfPlain Other} # page type (width, height)
+ # @PageWidth { 80s } # page width if type Other
+ # @PageHeight { 66f } # page height if type Other
+ # @PageOrientation { Portrait } # Portrait, Landscape, etc.
+ # @PageBackground { } # background of each page
+ # @TopMargin { 2.5c @OrIfPlain 6f } # top margin of all pages
+ # @FootMargin { 2.5c @OrIfPlain 6f } # bottom margin of all pages
+ # @OddLeftMargin { 2.5c @OrIfPlain 10s } # left margin of odd pages
+ # @OddRightMargin { 2.5c @OrIfPlain 10s } # right margin of odd pages
+ # @EvenLeftMargin { 2.5c @OrIfPlain 10s } # left margin of even pages
+ # @EvenRightMargin { 2.5c @OrIfPlain 10s } # right margin of even pages
+ # @OddLeftBodyMargin { 0c } # extra margin for page body
+ # @OddRightBodyMargin { 0c } # extra margin for page body
+ # @EvenLeftBodyMargin { 0c } # extra margin for page body
+ # @EvenRightBodyMargin{ 0c } # extra margin for page body
+ # @PageBoxType { None } # None Box CurveBox ShadowBox
+ # @PageBoxMargin { 1.00c } # page box margin
+ # @PageBoxLineWidth { } # page box line thickness
+ # @PageBoxPaint { none } # page box paint
+ # @PageBoxShadow { 0.60c } # shadow margin if ShadowBox
+ # @PageEnclose { @Body } # enclose every page in this
+ # @ColumnNumber { 1 } # number of columns (1 to 10)
+ # @ColumnGap { 1.00c @OrIfPlain 6s } # column gap
+
+ # @FigureLocation { PageTop } # default figure location
+ # @FigureFormat { @CC @Body } # default figure format
+ # @FigureWord { figure } # "Figure" word else anything
+ # @FigureNumbers { Arabic } # method of numbering figures
+ # @FigureCaptionPos { Below } # Above or Below
+ # @FigureCaptionFont { -2p } # figure caption font
+ # @FigureCaptionBreak { adjust hyphen 1.2fx } # figure caption break
+ # @FigureCaptionFormat{ {@B { word @NumSep number. &2s }} @Insert caption }
+ # @MakeFigureContents { No } # list of figures at start
+
+ # @TableLocation { PageTop } # default table location
+ # @TableFormat { @CC @Body } # default table format
+ # @TableWord { table } # "Table" word else anything
+ # @TableNumbers { Arabic } # method of numbering tables
+ # @TableCaptionPos { Below } # Above or Below
+ # @TableCaptionFont { -2p } # table caption font
+ # @TableCaptionBreak { adjust hyphen 1.2fx } # table caption break
+ # @TableCaptionFormat { {@B { word @NumSep number. &2s }} @Insert caption }
+ # @MakeTableContents { No } # list of tables at start
+
+ # @FloaterLocation { PageTop } # default floater location
+ # @FloaterFormat { @CC @Body } # default floater format
+ # @FloaterWord { floater } # "Floater" word else anything
+ # @FloaterNumbers { Arabic } # method of numbering floaters
+ # @FloaterCaptionPos { Below } # Above or Below
+ # @FloaterCaptionFont { -2p } # Floater caption font
+ # @FloaterCaptionBreak{ adjust hyphen 1.2fx } # floater caption break
+ # @FloaterCaptionFormat{ {@B { word @NumSep number. &2s }} @Insert caption }
+ # @MakeFloaterContents{ No } # list of floater at start
+
+ # @MakeContents { No } # make contents? Yes or No
+ # @ContentsGap { 0.20v @OrIfPlain 0f } # extra gap above minor entry
+ # @ContentsGapAbove { 0.80v @OrIfPlain 1f } # extra gap above major entry
+ # @ContentsGapBelow { 0.00v @OrIfPlain 0f } # extra gap below major entry
+ # @ContentsFont { Bold } # font for major entry
+ # @ContentsPartGapAbove { 1.00v @OrIfPlain 1f } # extra gap above `part' entry
+ # @ContentsPartGapBelow { 0.00v @OrIfPlain 0f } # extra gap below `part' entry
+ # @ContentsFormat { number @DotSep title } # contents entry format
+ # @ContentsLeader { .. } # leader symbol in contents
+ # @ContentsLeaderGap { 4s @OrIfPlain 2s } # gap between leaders
+ # @ContentsRightWidth { 3f @OrIfPlain 6s } # page numbers column width
+
+ # @MakeReferences { Yes } # make references? Yes or No
+ # @RefCiteStyle { [cite] } # citation style
+ # @RefCiteLabels { @RefNum } # citation items
+ # @RefNumbers { Arabic } # reference numbers
+ # @RefListFormat { Labels } # NoLabels, Labels, etc.
+ # @RefListLabels { [@RefNum] } # ref list label format
+ # @RefListTitle { references } # title of reference list
+ # @ChapRefListTitle { references } # title of chapter ref list
+ # @RefListIndent { 0s } # indent to left of labels
+ # @RefListRightIndent { 0s } # indent to right of items
+ # @RefListGap { @ListGap } # gap between ref list items
+ # @RefListFont { } # font used in reference list
+ # @RefListBreak { } # break style of ref list
+ # @RefListLabelWidth { @ListLabelWidth } # Labels column width
+ # @RefListSortKey { @Tag } # sorting key
+
+ # @MakeGlossary { No } # make glossary? Yes or No
+ # @GlossaryText { @Null } # glossary initial text
+ # @GlossaryFont { } # glossary entries font
+ # @GlossaryBreak { } # glossary entries break
+ # @GlossaryFormat { +3p @Font @S @Name # glossary entries format
+ # @Right @I { @Word&&page @PageNum }
+ # @DP @RawIndentedDisplay @Body }
+ # @GlossaryGap { @DisplayGap } # gap between glossary entries
+ # @GlossaryColumnNumber{ 2 } # glossary columns (1 to 10)
+ # @GlossaryColumnGap { 1.00c @OrIfPlain 6s } # glossary column gap
+ # @InGlossaryFont { smallcaps } # font for @InGlossary
+ # @InGlossaryFormat { @Body } # format for @InGlossary
+
+ # @MakeIndex { No } # make index? Yes or No
+ # @IndexText { @Null } # index initial text
+ # @IndexFont { } # index entries font
+ # @IndexBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break
+ # @IndexFormat { @Body } # @Index format
+ # @SubIndexFormat { {1f @Wide}@Body } # @SubIndex format
+ # @SubSubIndexFormat { {2f @Wide}@Body } # @SubSubIndex format
+ # @IndexTypeOrdinary { @PageNum } # Ordinary pagenum format
+ # @IndexTypeMain { @B @PageNum } # Main pagenum format
+ # @IndexTypeSpecial { @I @PageNum } # Special pagenum format
+ # @IndexRangeFormat { @From--@To } # index page range format
+ # @IndexColumnNumber { 2 } # index columns (1 to 10)
+ # @IndexColumnGap { 1.00c @OrIfPlain 6s } # index column gap
+ # @IndexCtd { Yes } # include (ctd.) lines
+ # @IndexCtdWord { continued } # "ctd." in current lang.
+ # @IndexCtdFormat { @Body @I (@CtdWord) } # format of ctd.
+ # @IndexSpacerAbove { 2v } # space above index spacer
+ # @IndexSpacerBelow { 1v } # space below index spacer
+ # @IndexSpacerFont { +3p } # font of index spacer
+ # @IndexSpacerFormat { @Body } # format of index spacer
+
+ # @MakeIndexA { No } # make index A? Yes or No
+ # @IndexAText { @Null } # index A initial text
+ # @IndexAFont { } # index A entries font
+ # @IndexABreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break
+ # @IndexAFormat { @Body } # @IndexA format
+ # @SubIndexAFormat { {1f @Wide}@Body } # @SubIndexA format
+ # @SubSubIndexAFormat { {2f @Wide}@Body } # @SubSubIndexA format
+ # @IndexATypeOrdinary { @PageNum } # Ordinary pagenum format
+ # @IndexATypeMain { @B @PageNum } # Main pagenum format
+ # @IndexATypeSpecial { @I @PageNum } # Special pagenum format
+ # @IndexARangeFormat { @From--@To } # index page range format
+ # @IndexAColumnNumber { 2 } # index A columns (1 to 10)
+ # @IndexAColumnGap { 1.00c @OrIfPlain 6s } # index A column gap
+ # @IndexACtd { Yes } # include (ctd.) lines
+ # @IndexACtdWord { continued } # "ctd." in current lang.
+ # @IndexACtdFormat { @Body @I (@CtdWord) } # format of ctd.
+ # @IndexASpacerAbove { 2v } # space above index A spacer
+ # @IndexASpacerBelow { 1v } # space below index A spacer
+ # @IndexASpacerFont { +3p } # font of index A spacer
+ # @IndexASpacerFormat { @Body } # format of index A spacer
+
+ # @MakeIndexB { No } # make index B? Yes or No
+ # @IndexBText { @Null } # index B initial text
+ # @IndexBFont { } # index B entries font
+ # @IndexBBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break
+ # @IndexBFormat { @Body } # @IndexB format
+ # @SubIndexBFormat { {1f @Wide}@Body } # @SubIndexB format
+ # @SubSubIndexBFormat { {2f @Wide}@Body } # @SubSubIndexB format
+ # @IndexBTypeOrdinary { @PageNum } # Ordinary pagenum format
+ # @IndexBTypeMain { @B @PageNum } # Main pagenum format
+ # @IndexBTypeSpecial { @I @PageNum } # Special pagenum format
+ # @IndexBRangeFormat { @From--@To } # index page range format
+ # @IndexBColumnNumber { 2 } # index B columns (1 to 10)
+ # @IndexBColumnGap { 1.00c @OrIfPlain 6s } # index B column gap
+ # @IndexBCtd { Yes } # include (ctd.) lines
+ # @IndexBCtdWord { continued } # "ctd." in current lang.
+ # @IndexBCtdFormat { @Body @I (@CtdWord) } # format of ctd.
+ # @IndexBSpacerAbove { 2v } # space above index B spacer
+ # @IndexBSpacerBelow { 1v } # space below index B spacer
+ # @IndexBSpacerFont { +3p } # font of index B spacer
+ # @IndexBSpacerFormat { @Body } # format of index B spacer
+
+ # @TopGap { 0.75c @OrIfPlain 2f } # gap between figures
+ # @MidGap { 0.75c @OrIfPlain 2f } # gap above/below body text
+
+ # @FootNoteNumbers { Arabic } # footnote numbers
+ # @FootNoteThrough { No } # numbered through chapter?
+ # @FootNoteLocation { ColFoot } # where the footnote appears
+ # @FootNoteFont { 0.80f } # font for footnotes
+ # @FootNoteBreak { 1.2fx @OrIfPlain 1fx } # break for footnotes
+ # @FootNoteFormat { { number &0.05f } @Insert body } # footnote format
+ # @FootLen { 2.00c @OrIfPlain 10s } # length of footnote line
+ # @FootAboveGap { @DisplayGap } # gap above footnote line
+ # @FootGap { 0.20c @OrIfPlain 1fx } # gap between footnotes
+ # @MarginNoteFont { 0.80f } # font of margin notes
+ # @MarginNoteBreak { ragged 1.10fx } # break style of margin notes
+ # @MarginNoteHGap { 0.5c } # horizontal gap to notes
+ # @MarginNoteVGap { @DisplayGap } # min vertical gap between
+ # @MarginNoteWidth { 1.50c } # width of margin notes
+ # @EndNoteNumbers { Arabic } # endnote numbers
+ # @EndNoteFont { 0.80f } # font of endnotes
+ # @EndNoteBreak { 1.2fx @OrIfPlain 1fx } # break for endnotes
+ # @EndNoteFormat { { number &0.05f } @Insert body } # endnote format
+ # @EndNoteGap { 0.20c @OrIfPlain 1f } # gap between endnotes
+
+ # @TheoremWord { theorem } # "Theorem" word, etc.
+ # @TheoremTitleFormat { (title) } # only if title present
+ # @TheoremFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @DefinitionWord { definition } # "Definition" word, etc.
+ # @DefinitionTitleFormat { (title) } # only if title present
+ # @DefinitionFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @ClaimWord { claim } # "Claim" word, etc.
+ # @ClaimTitleFormat { (title) } # only if title present
+ # @ClaimFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @PropositionWord { proposition } # "Proposition" word, etc.
+ # @PropositionTitleFormat { (title) } # only if title present
+ # @PropositionFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @LemmaWord { lemma } # "Lemma" word, etc.
+ # @LemmaTitleFormat { (title) } # only if title present
+ # @LemmaFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @CorollaryWord { corollary } # "Corollary" word, etc.
+ # @CorollaryTitleFormat { (title) } # only if title present
+ # @CorollaryFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @ExampleWord { example } # "Example" word, etc.
+ # @ExampleTitleFormat { (title) } # only if title present
+ # @ExampleFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @ProofWord { proof } # "Proof" word, etc.
+
+ # @PageHeaders { Simple } # None Simple Titles NoTitles
+ # @PageNumbers { Arabic } # page numbers
+ # @FirstPageNumber { 1 } # number of first page
+ # @IntroPageNumbers { Roman } # intro page numbers
+ # @IntroFirstPageNumber{ 1 } # number of first intro page
+ # @StructPageNums { No } # make structured page numbers
+ # @PageNumberFormat { number } # format of all page numbers
+
+ # @OddTop { @Centre{- @PageNum -} } # Simple page headers
+ # @OddFoot { @Null }
+ # @EvenTop { @Centre{- @PageNum -} }
+ # @EvenFoot { @Null }
+ # @StartOddTop { @Null }
+ # @StartOddFoot { @Null }
+ # @StartEvenTop { @Null }
+ # @StartEvenFoot { @Null }
+ # @IntroOddTop { @Null }
+ # @IntroOddFoot { @Centre @PageNum }
+ # @IntroEvenTop { @Null }
+ # @IntroEvenFoot { @Centre @PageNum }
+ # @IntroStartOddTop { @Null }
+ # @IntroStartOddFoot { @Null }
+ # @IntroStartEvenTop { @Null }
+ # @IntroStartEvenFoot { @Null }
+
+ # Titles, NoTitles headers
+ # @RunningOddTop { @I {@MinorNum @DotSep @MinorTitle} @Right @B @PageNum }
+ # @RunningOddFoot { @Null }
+ # @RunningEvenTop { @B @PageNum @Right @I {@MajorNum @DotSep @MajorTitle} }
+ # @RunningEvenFoot { @Null }
+ # @RunningStartOddTop { @Null }
+ # @RunningStartOddFoot { @Centre { Bold 0.8f } @Font @PageNum }
+ # @RunningStartEvenTop { @Null }
+ # @RunningStartEvenFoot { @Centre { Bold 0.8f } @Font @PageNum }
+ # @RunningIntroOddTop { @Null }
+ # @RunningIntroOddFoot { @Right @PageNum }
+ # @RunningIntroEvenTop { @Null }
+ # @RunningIntroEvenFoot { @PageNum }
+ # @RunningIntroStartOddTop { @Null }
+ # @RunningIntroStartOddFoot { @Null }
+ # @RunningIntroStartEvenTop { @Null }
+ # @RunningIntroStartEvenFoot { @Null }
+}
+
+
+###############################################################################
+# #
+# The @OrdinarySetup @Use clause - options specific to ordinary documents. #
+# #
+###############################################################################
+
+@Use { @OrdinarySetup
+ # @IndexWord { index } # word for "Index" word etc.
+ # @IndexAWord { index } # word for "Index" (A)
+ # @IndexBWord { index } # word for "Index" (B)
+ # @AppendixWord { appendix } # word for "Appendix"
+ # @SectionNumbers { Arabic } # kind of section numbers
+ # @FirstSectionNumber { 1 } # first section num (Arabic)
+ # @SubSectionNumbers { Arabic } # kind of subsection numbers
+ # @FirstSubSectionNumber { 1 } # first subsect num (Arabic)
+ # @SubSubSectionNumbers { Arabic } # kind of sub-subsect numbers
+ # @FirstSubSubSectionNumber { 1 } # first subsub. num (Arabic)
+ # @AppendixNumbers { UCAlpha } # kind of appendix numbers
+ # @FirstAppendixNumber { 1 } # first appendix num (Arabic)
+ # @SubAppendixNumbers { Arabic } # kind of subappendix numbers
+ # @FirstSubAppendixNumber { 1 } # first sub-app. num (Arabic)
+ # @SubSubAppendixNumbers { Arabic } # kind of sub-subapp. numbers
+ # @FirstSubSubAppendixNumber { 1 } # first sub-sub. num (Arabic)
+ # @SectionHeadingFont { Bold } # section head font
+ # @SectionHeadingBreak { ragged 1.2fx nohyphen } # section head break
+ # @SectionHeadingFormat { number @DotSep title } # section head fmt
+ # @SubSectionHeadingFont { Bold } # subsect head font
+ # @SubSectionHeadingBreak { ragged 1.2fx nohyphen } # subsect head break
+ # @SubSectionHeadingFormat { number @DotSep title } # subsect head fmt
+ # @SubSubSectionHeadingFont { Slope } # sub-ss. head font
+ # @SubSubSectionHeadingBreak { ragged 1.2fx nohyphen } # sub-ss. head break
+ # @SubSubSectionHeadingFormat { number @DotSep title } # sub-ss. head fmt
+ # @AppendixHeadingFont { Bold } # appendix head font
+ # @AppendixHeadingBreak { ragged 1.2fx nohyphen } # appendix head break
+ # @AppendixHeadingFormat { number @DotSep title } # appendix head fmt
+ # @SubAppendixHeadingFont { Bold } # subapp. head font
+ # @SubAppendixHeadingBreak { ragged 1.2fx nohyphen } # subapp. head break
+ # @SubAppendixHeadingFormat { number @DotSep title } # subapp. head format
+ # @SubSubAppendixHeadingFont { Slope } # sub-sa. head font
+ # @SubSubAppendixHeadingBreak { ragged 1.2fx nohyphen } # sub-sa. head break
+ # @SubSubAppendixHeadingFormat{ number @DotSep title } # sub-sa. head fmt
+ # @ReferencesHeadingFont { Bold } # refs head font
+ # @ReferencesHeadingBreak { ragged 1.2fx nohyphen } # refs head break
+ # @ReferencesHeadingFormat { title } # refs head format
+ # @IndexHeadingFont { Bold } # index head font
+ # @IndexHeadingBreak { ragged 1.2fx nohyphen } # index head break
+ # @IndexHeadingFormat { title } # index head format
+ # @IndexAHeadingFont { Bold } # index A head font
+ # @IndexAHeadingBreak { ragged 1.2fx nohyphen } # index A head break
+ # @IndexAHeadingFormat { title } # index A head fmt
+ # @IndexBHeadingFont { Bold } # index B head font
+ # @IndexBHeadingBreak { ragged 1.2fx nohyphen } # index B head break
+ # @IndexBHeadingFormat { title } # index B head fmt
+ # @SectionGap { 2.0v @OrIfPlain 3f } # between sections
+ # @SubSectionGap { 1.5v @OrIfPlain 2f } # between subsects
+ # @SubSubSectionGap { 1.5v @OrIfPlain 2f } # between sub-subs.
+ # @AppendixGap { 2.0v @OrIfPlain 3f } # between appendices
+ # @SubAppendixGap { 1.5v @OrIfPlain 2f } # between subappendices
+ # @SubSubAppendixGap { 1.5v @OrIfPlain 2f } # between sub-subapps
+ # @SectionInContents { Yes } # add sections to contents
+ # @SubSectionInContents { Yes } # add subsections to contents
+ # @SubSubSectionInContents { No } # add sub-subsects to contents
+ # @AppendixInContents { Yes } # add appendices to contents
+ # @SubAppendixInContents { Yes } # add subappendices to contents
+ # @SubSubAppendixInContents { No } # add sub-subapps to contents
+ # @ReferencesInContents { Yes } # add ref. section to contents
+ # @IndexInContents { Yes } # add index to contents
+ # @IndexAInContents { Yes } # add index A to contents
+ # @IndexBInContents { Yes } # add index B to contents
+ # @SectionContentsIndent { 0f } # contents indent of sections
+ # @SubSectionContentsIndent { 3f } # contents indent of subsections
+ # @SubSubSectionContentsIndent{ 6f } # contents indent of sub-subsections
+ # @AppendixContentsIndent { 0f } # contents indent of appendices
+ # @SubAppendixContentsIndent { 3f } # contents indent of sub-appendices
+ # @SubSubAppendixContentsIndent { 6f } # contents indent of sub-subappendices
+ # @ReferencesContentsIndent { 0f } # contents indent of references
+ # @IndexContentsIndent { 0f } # contents indent of index
+ # @IndexAContentsIndent { 0f } # contents indent of index A
+ # @IndexBContentsIndent { 0f } # contents indent of index B
+ # @SectionNumInTheorems { No } # theorem num has section num
+ # @SubSectionNumInTheorems { No } # theorem num has subsect num
+ # @SubSubSectionNumInTheorems { No } # theorem num has sub-ss. num
+ # @AppendixNumInTheorems { No } # theorem num has appendix num
+ # @SubAppendixNumInTheorems { No } # theorem num has sub-app num
+ # @SubSubAppendixNumInTheorems{ No } # theorem num has sub-sa. num
+ # @SectionNumInDisplays { Yes } # display num has section num
+ # @SubSectionNumInDisplays { No } # display num has subsect num
+ # @SubSubSectionNumInDisplays { No } # display num has sub-ss. num
+ # @AppendixNumInDisplays { Yes } # display num has appendix num
+ # @SubAppendixNumInDisplays { Yes } # display num has sub-app num
+ # @SubSubAppendixNumInDisplays{ No } # display num has sub-sa. num
+ # @SectionNumInFigures { No } # figure num has section num
+ # @SubSectionNumInFigures { No } # figure num has subsect num
+ # @SubSubSectionNumInFigures { No } # figure num has sub-ss. num
+ # @AppendixNumInFigures { No } # figure num has appendix num
+ # @SubAppendixNumInFigures { No } # figure num has sub-app num
+ # @SubSubAppendixNumInFigures { No } # figure num has sub-sa. num
+ # @SectionNumInTables { No } # table num has section num
+ # @SubSectionNumInTables { No } # table num has subsect num
+ # @SubSubSectionNumInTables { No } # table num has sub-ss. num
+ # @AppendixNumInTables { No } # table num has appendix num
+ # @SubAppendixNumInTables { No } # table num has sub-app num
+ # @SubSubAppendixNumInTables { No } # table num has sub-sa. num
+ # @SectionNumInFloaters { No } # floater num has section num
+ # @SubSectionNumInFloaters { No } # floater num has subsect num
+ # @SubSubSectionNumInFloaters { No } # floater num has sub-ss. num
+ # @AppendixNumInFloaters { No } # floater num has appendix num
+ # @SubAppendixNumInFloaters { No } # floater num has sub-app num
+ # @SubSubAppendixNumInFloaters{ No } # floater num has sub-sa. num
+ # @SectionNumInRunners { Yes } # runners have section num
+ # @SubSectionNumInRunners { No } # runners have subsect num
+ # @SubSubSectionNumInRunners { No } # runners have sub-ss. num
+ # @AppendixNumInRunners { Yes } # runners have appendix num
+ # @SubAppendixNumInRunners { No } # runners have sub-app num
+ # @SubSubAppendixNumInRunners { No } # runners have sub-sa. num
+ # @SectionPrefix { } # for structured page nums
+ # @AppendixPrefix { } # for structured page nums
+ # @ReferencesPrefix { } # for structured page nums
+ # @IndexPrefix { } # for structured page nums
+ # @IndexAPrefix { } # for structured page nums
+ # @IndexBPrefix { } # for structured page nums
+}
+
+
+###############################################################################
+# #
+# @Database (and @SysDatabase) clauses go here. #
+# #
+###############################################################################
+
+@SysDatabase @FontDef { fontdefs } # font definitions
+@SysDatabase @RefStyle { refstyle } # reference printing styles
diff --git a/include/include/docf b/include/include/docf
new file mode 100644
index 0000000..a1e64a8
--- /dev/null
+++ b/include/include/docf
@@ -0,0 +1,845 @@
+
+###########################################################################
+# #
+# @OrdinarySetup extension to @DocumentSetup. #
+# #
+# Jeffrey H. Kingston #
+# #
+# This package extends DocumentSetup for ordinary documents. #
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either Version 3, or (at your option) #
+# any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA #
+# #
+# As a special exception, when this file is read by Lout when processing #
+# a Lout source document, you may use the result without restriction. #
+# #
+###########################################################################
+
+extend @BasicSetup @DocumentSetup
+export @Doc @Document @Text
+def @OrdinarySetup
+
+ named @IndexWord { index }
+ named @IndexAWord { index }
+ named @IndexBWord { index }
+ named @AppendixWord { appendix }
+
+ named @SectionNumbers { Arabic }
+ named @FirstSectionNumber { 1 }
+ named @SubSectionNumbers { Arabic }
+ named @FirstSubSectionNumber { 1 }
+ named @SubSubSectionNumbers { Arabic }
+ named @FirstSubSubSectionNumber { 1 }
+ named @AppendixNumbers { UCAlpha }
+ named @FirstAppendixNumber { 1 }
+ named @SubAppendixNumbers { Arabic }
+ named @FirstSubAppendixNumber { 1 }
+ named @SubSubAppendixNumbers { Arabic }
+ named @FirstSubSubAppendixNumber { 1 }
+
+ named @SectionHeadingFont { Bold }
+ named @SectionHeadingBreak { ragged 1.2fx nohyphen }
+ named @SectionHeadingFormat
+ left number right title { number @Sep title }
+
+ named @SubSectionHeadingFont { Bold }
+ named @SubSectionHeadingBreak { ragged 1.2fx nohyphen }
+ named @SubSectionHeadingFormat
+ left number right title { number @Sep title }
+
+ named @SubSubSectionHeadingFont { Slope }
+ named @SubSubSectionHeadingBreak { ragged 1.2fx nohyphen }
+ named @SubSubSectionHeadingFormat
+ left number right title { number @Sep title }
+
+ named @AppendixHeadingFont { Bold }
+ named @AppendixHeadingBreak { ragged 1.2fx nohyphen }
+ named @AppendixHeadingFormat
+ left number right title { number @Sep title }
+
+ named @SubAppendixHeadingFont { Bold }
+ named @SubAppendixHeadingBreak { ragged 1.2fx nohyphen }
+ named @SubAppendixHeadingFormat
+ left number right title { number @Sep title }
+
+ named @SubSubAppendixHeadingFont { Slope }
+ named @SubSubAppendixHeadingBreak { ragged 1.2fx nohyphen }
+ named @SubSubAppendixHeadingFormat
+ left number right title { number @Sep title }
+
+ named @ReferencesHeadingFont { Bold }
+ named @ReferencesHeadingBreak { ragged 1.2fx nohyphen }
+ named @ReferencesHeadingFormat
+ right title { title }
+
+ named @IndexHeadingFont { Bold }
+ named @IndexHeadingBreak { ragged 1.2fx nohyphen }
+ named @IndexHeadingFormat
+ right title { title }
+
+ named @IndexAHeadingFont { Bold }
+ named @IndexAHeadingBreak { ragged 1.2fx nohyphen }
+ named @IndexAHeadingFormat
+ right title { title }
+
+ named @IndexBHeadingFont { Bold }
+ named @IndexBHeadingBreak { ragged 1.2fx nohyphen }
+ named @IndexBHeadingFormat
+ right title { title }
+
+ named @SectionGap { 2.0v @OrIfPlain 3f }
+ named @SubSectionGap { 1.5v @OrIfPlain 2f }
+ named @SubSubSectionGap { 1.5v @OrIfPlain 2f }
+ named @AppendixGap { 2.0v @OrIfPlain 3f }
+ named @SubAppendixGap { 1.5v @OrIfPlain 2f }
+ named @SubSubAppendixGap { 1.5v @OrIfPlain 2f }
+
+ named @SectionInContents { Yes }
+ named @SubSectionInContents { Yes }
+ named @SubSubSectionInContents { No }
+ named @AppendixInContents { Yes }
+ named @SubAppendixInContents { Yes }
+ named @SubSubAppendixInContents { No }
+ named @ReferencesInContents { Yes }
+ named @IndexInContents { Yes }
+ named @IndexAInContents { Yes }
+ named @IndexBInContents { Yes }
+
+ named @SectionContentsIndent { 0f }
+ named @SubSectionContentsIndent { 3f }
+ named @SubSubSectionContentsIndent { 6f }
+ named @AppendixContentsIndent { 0f }
+ named @SubAppendixContentsIndent { 3f }
+ named @SubSubAppendixContentsIndent { 6f }
+ named @ReferencesContentsIndent { 0f }
+ named @IndexContentsIndent { 0f }
+ named @IndexAContentsIndent { 0f }
+ named @IndexBContentsIndent { 0f }
+
+ named @SectionNumInTheorems { No }
+ named @SubSectionNumInTheorems { No }
+ named @SubSubSectionNumInTheorems { No }
+ named @AppendixNumInTheorems { No }
+ named @SubAppendixNumInTheorems { No }
+ named @SubSubAppendixNumInTheorems { No }
+
+ named @SectionNumInDisplays { Yes }
+ named @SubSectionNumInDisplays { No }
+ named @SubSubSectionNumInDisplays { No }
+ named @AppendixNumInDisplays { Yes }
+ named @SubAppendixNumInDisplays { No }
+ named @SubSubAppendixNumInDisplays { No }
+
+ named @SectionNumInFigures { No }
+ named @SubSectionNumInFigures { No }
+ named @SubSubSectionNumInFigures { No }
+ named @AppendixNumInFigures { No }
+ named @SubAppendixNumInFigures { No }
+ named @SubSubAppendixNumInFigures { No }
+
+ named @SectionNumInTables { No }
+ named @SubSectionNumInTables { No }
+ named @SubSubSectionNumInTables { No }
+ named @AppendixNumInTables { No }
+ named @SubAppendixNumInTables { No }
+ named @SubSubAppendixNumInTables { No }
+
+ named @SectionNumInFloaters { No }
+ named @SubSectionNumInFloaters { No }
+ named @SubSubSectionNumInFloaters { No }
+ named @AppendixNumInFloaters { No }
+ named @SubAppendixNumInFloaters { No }
+ named @SubSubAppendixNumInFloaters { No }
+
+ named @SectionNumInRunners { Yes }
+ named @SubSectionNumInRunners { No }
+ named @SubSubSectionNumInRunners { No }
+ named @AppendixNumInRunners { Yes }
+ named @SubAppendixNumInRunners { No }
+ named @SubSubAppendixNumInRunners { No }
+
+ named @SectionPrefix { }
+ named @AppendixPrefix { }
+ named @ReferencesPrefix { }
+ named @IndexPrefix { }
+ named @IndexAPrefix { }
+ named @IndexBPrefix { }
+@Begin
+
+ #######################################################################
+ # #
+ # Lists of sections, sub(-sub)sections, appendices, etc. #
+ # #
+ #######################################################################
+
+ def @TextPlace { @Galley }
+
+ export num
+ def @SectionList named @Tag {} right num
+ {
+ @Galley
+ //@SectionGap @SectionList @Next num
+ }
+
+ export num
+ def @SubSectionList named @Tag {} right num
+ {
+ @Galley
+ //@SubSectionGap @SubSectionList @Next num
+ }
+
+ export num
+ def @SubSubSectionList named @Tag {} right num
+ {
+ @Galley
+ //@SubSubSectionGap @SubSubSectionList @Next num
+ }
+
+ export num
+ def @AppendixList named @Tag {} right num
+ {
+ @Galley
+ //@AppendixGap @AppendixList @Next num
+ }
+
+ export num
+ def @SubAppendixList named @Tag {} right num
+ {
+ @Galley
+ //@SubAppendixGap @SubAppendixList @Next num
+ }
+
+ export num
+ def @SubSubAppendixList named @Tag {} right num
+ {
+ @Galley
+ //@SubSubAppendixGap @SubSubAppendixList @Next num
+ }
+
+
+ #######################################################################
+ # #
+ # @SendFull - send full-width text. #
+ # #
+ #######################################################################
+
+ def @SendFull force into { @FullPlace&&following }
+ right x
+ {
+ x
+ }
+
+
+ #######################################################################
+ # #
+ # Document. #
+ # #
+ #######################################################################
+
+ def @Document
+ named @InitialFont { @InitialFont }
+ named @InitialBreak { @InitialBreak }
+ named @InitialOutdent { @InitialOutdent }
+ named @InitialSpace { @InitialSpace }
+ named @InitialLanguage { @InitialLanguage }
+ named @PageOrientation { @PageOrientation }
+ named @PageHeaders { @PageHeaders }
+ named @ColumnNumber { @ColumnNumber }
+ named @FirstPageNumber { @FirstPageNumber }
+ named @OptimizePages { @OptimizePages }
+ named @Unpaginated { No }
+ named @IndexText { @IndexText }
+ named @IndexAText { @IndexAText }
+ named @IndexBText { @IndexBText }
+ {
+ def @ReferencesPart
+ named @Tag {}
+ {
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Major }
+ initiallanguage { @InitialLanguage }
+ title { @RefHeading @RefListTitle }
+ headingfont { @ReferencesHeadingFont }
+ headingbreak { @ReferencesHeadingBreak }
+ headingformat { @ReferencesHeadingFormat @Body }
+ incontents { @ReferencesInContents }
+ contentsindent { @ReferencesContentsIndent }
+ pnprefix { @ReferencesPrefix }
+ majornum {}
+ majortitle {}
+ minornum {}
+ minortitle { @RefHeading @RefListTitle }
+ inrunners { Yes }
+ sendheader { @Body }
+ aboveheadinggap { 0f }
+ { //@RefListGap @ReferencesSection }
+
+ }
+
+ def @IndexPart
+ named @Tag {}
+ {
+
+ def @Run
+ {
+ NonStart @Runner
+ @MajorNum {}
+ @MajorTitle { index @WordVal @IndexWord }
+ @MinorNum {}
+ @MinorTitle {}
+ @Owner { @Tag }
+ @Prefix { @IndexPrefix }
+ }
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Major }
+ initiallanguage { @InitialLanguage }
+ title { index @WordVal @IndexWord }
+ headingfont { @IndexHeadingFont }
+ headingbreak { @IndexHeadingBreak }
+ headingformat { @IndexHeadingFormat @Body }
+ headingtext { @IndexText }
+ incontents { @IndexInContents }
+ contentsindent { @IndexContentsIndent }
+ pnprefix { @IndexPrefix }
+ inrunners { Yes }
+ majornum {}
+ majortitle {}
+ minornum {}
+ minortitle { index @WordVal @IndexWord }
+ sendheader { @SendFull @Body }
+ innergap { @SectionGap }
+ wantindefinite { Yes }
+ @IndexSection @Run
+
+ }
+
+ def @IndexAPart
+ named @Tag {}
+ {
+ def @Run
+ {
+ NonStart @Runner
+ @MajorNum {}
+ @MajorTitle { index @WordVal @IndexAWord }
+ @MinorNum {}
+ @MinorTitle {}
+ @Owner { @Tag }
+ @Prefix { @IndexAPrefix }
+ }
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Major }
+ initiallanguage { @InitialLanguage }
+ title { index @WordVal @IndexAWord }
+ headingfont { @IndexAHeadingFont }
+ headingbreak { @IndexAHeadingBreak }
+ headingformat { @IndexAHeadingFormat @Body }
+ headingtext { @IndexAText }
+ incontents { @IndexAInContents }
+ contentsindent { @IndexAContentsIndent }
+ pnprefix { @IndexAPrefix }
+ inrunners { Yes }
+ majornum {}
+ majortitle {}
+ minornum {}
+ minortitle { index @WordVal @IndexAWord }
+ sendheader { @SendFull @Body }
+ innergap { @SectionGap }
+ wantindefinite { Yes }
+ @IndexASection @Run
+
+ }
+
+ def @IndexBPart
+ named @Tag {}
+ {
+ def @Run
+ {
+ NonStart @Runner
+ @MajorNum {}
+ @MajorTitle { index @WordVal @IndexBWord }
+ @MinorNum {}
+ @MinorTitle {}
+ @Owner { @Tag }
+ @Prefix { @IndexBPrefix }
+ }
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Major }
+ initiallanguage { @InitialLanguage }
+ title { index @WordVal @IndexBWord }
+ headingfont { @IndexBHeadingFont }
+ headingbreak { @IndexBHeadingBreak }
+ headingformat { @IndexBHeadingFormat @Body }
+ headingtext { @IndexBText }
+ incontents { @IndexBInContents }
+ contentsindent { @IndexBContentsIndent }
+ pnprefix { @IndexBPrefix }
+ inrunners { Yes }
+ majornum {}
+ majortitle {}
+ minornum {}
+ minortitle { index @WordVal @IndexBWord }
+ sendheader { @SendFull @Body }
+ innergap { @SectionGap }
+ wantindefinite { Yes }
+ @IndexBSection @Run
+
+ }
+
+ def @DocumentBody force into { @ColPlace&&preceding }
+ named @Optimize { @OptimizePages }
+ {
+ # this whole comment is now obsolete:
+ # It's important that the first component of @DocumentBody be
+ # indefinite. If it was definite, then @DocumentBody would
+ # attach immediately to the first page. This would prevent
+ # @FullWidth from attaching to that page, with the result that
+ # a document starting with @FullWidth would start on page 2!
+
+ // @FootNoteThrough @Do @BeginFootNoteCounter
+ // @TextPlace
+ //@SectionGap @EndFigureList
+ //@SectionGap @EndNoteList 1
+ //@SectionGap @MakeReferences @Do @ReferencesPart
+ // @MakeIndexA @Do @IndexAPart
+ // @MakeIndexB @Do @IndexBPart
+ // @MakeIndex @Do @IndexPart
+ // NonStart @Runner
+ }
+
+ @InitialFont @Font { @InitialBreak setoutdent @InitialOutdent } @Break
+ @InitialLanguage @Language @InitialSpace @Space
+ { @ColourCommand @InitialColour } @SetColour
+ {
+ Yes @BeginAllCounters {}
+ // Yes @BeginDisplayCounter {}
+ // Yes @BeginFigureCounter {}
+ // Yes @BeginTableCounter {}
+ // Yes @BeginFloaterCounter {}
+ // @BackEnd @Case {
+
+ PlainText @Yield {
+ @Unpaginated @Case {
+
+ { Yes yes } @Yield {
+ @ContinuousPageList
+ @Orient { @PageOrientation }
+ }
+
+ { No no } @Yield {
+ @PageList
+ @ColumnNumber { @ColumnNumber }
+ @PageHeaders { @PageHeaders }
+ @Orient { @PageOrientation }
+ extra { Yes }
+ @FirstPageNumber
+ }
+ }
+ }
+
+ else @Yield {
+ @PageList
+ @ColumnNumber { @ColumnNumber }
+ @PageHeaders { @PageHeaders }
+ @Orient { @PageOrientation }
+ extra { Yes }
+ @FirstPageNumber
+ }
+ }
+ // @DocumentBody
+ }
+ }
+
+ macro @Doc { @Document // }
+
+
+ #######################################################################
+ # #
+ # @Text containing sections, appendices, etc. #
+ # #
+ #######################################################################
+
+ export @ContentsGoesHere @FullWidth
+ @BeginSections @EndSections @Section
+ @BeginAppendices @EndAppendices @Appendix
+ def @Text force into { @TextPlace&&preceding }
+ body @Body
+ {
+
+ def @ContentsGoesHere { @ContentsSection }
+
+ export @ContentsGoesHere
+ def @FullWidth body @Body
+ {
+ def @ContentsGoesHere {}
+
+ @SendFull { Start @Runner // @Body }
+ & NonStart @Runner & &2.1b &
+ }
+
+ def @EndSectionsPlace { @Galley }
+
+ def @EndSections force into { @EndSectionsPlace&&preceding }
+ {}
+
+ macro @BeginSections
+ { //@SectionGap @SectionList @FirstSectionNumber
+ // @EndSectionsPlace //
+ }
+
+ export @BeginSubSections @EndSubSections @SubSection @Title
+ def @Section force into { @SectionList&&preceding }
+ named @Tag {}
+ named @Title {}
+ named @RunningTitle { dft }
+ named @InitialLanguage {}
+ named @BypassNumber { dft }
+ named @NewPage { No }
+ body @Body
+ {
+
+ def @EndSubSectionsPlace { @Galley }
+
+ def @EndSubSections force into { @EndSubSectionsPlace&&preceding }
+ {}
+
+ macro @BeginSubSections
+ { //@SubSectionGap @SubSectionList @FirstSubSectionNumber
+ // @EndSubSectionsPlace //
+ }
+
+ def @SectionShortNum
+ {
+ @SectionNumbers @Then {
+ @BypassNumber @Dft {
+ @SectionNumbers @Num @SectionList&&@Tag @Open { num }
+ }
+ }
+ }
+
+ export @BeginSubSubSections @EndSubSubSections @SubSubSection
+ def @SubSection force into { @SubSectionList&&preceding }
+ named @Tag {}
+ named @Title {}
+ named @RunningTitle { dft }
+ named @InitialLanguage { @InitialLanguage }
+ named @BypassNumber { dft }
+ named @NewPage { No }
+ body @Body
+ {
+
+ def @EndSubSubSectionsPlace { @Galley }
+
+ def @EndSubSubSections force into
+ { @EndSubSubSectionsPlace&&preceding }
+ {}
+
+ macro @BeginSubSubSections
+ { //@SubSubSectionGap
+ @SubSubSectionList @FirstSubSubSectionNumber
+ // @EndSubSubSectionsPlace //
+ }
+
+ def @SubSectionShortNum
+ {
+ @SubSectionNumbers @Then {
+ @BypassNumber @Dft {
+ @SectionShortNum @Join @SubSectionNumbers @Num
+ { @SubSectionList&&@Tag @Open { num } }
+ }
+ }
+ }
+
+ def @SubSubSection force into { @SubSubSectionList&&preceding }
+ named @Tag {}
+ named @Title {}
+ named @RunningTitle { dft }
+ named @InitialLanguage { @InitialLanguage }
+ named @BypassNumber { dft }
+ named @NewPage { No }
+ body @Body
+ {
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Minor }
+ initiallanguage { @InitialLanguage }
+ title { @Title }
+ runningtitle { @RunningTitle }
+ headingfont { @SubSubSectionHeadingFont }
+ headingbreak { @SubSubSectionHeadingBreak }
+ headingformat { @Num @SubSubSectionHeadingFormat @Body }
+ incontents { @SubSubSectionInContents }
+ contentsindent { @SubSubSectionContentsIndent }
+ numbers { @SubSubSectionNumbers }
+ attachnum { @SubSubSectionList&&preceding @Tagged @Tag }
+ retrievenum { @SubSubSectionList&&@Tag @Open { num } }
+ bypassnumber { @BypassNumber }
+ prefix { @SubSectionShortNum }
+ majornum {}
+ majortitle {}
+ intheorems { @SubSubSectionNumInTheorems }
+ indisplays { @SubSubSectionNumInDisplays }
+ infigures { @SubSubSectionNumInFigures }
+ intables { @SubSubSectionNumInTables }
+ infloaters { @SubSubSectionNumInFloaters }
+ inrunners { @SubSubSectionNumInRunners }
+ newpage { @NewPage }
+ @Body
+
+ }
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Minor }
+ initiallanguage { @InitialLanguage }
+ title { @Title }
+ runningtitle { @RunningTitle }
+ headingfont { @SubSectionHeadingFont }
+ headingbreak { @SubSectionHeadingBreak }
+ headingformat { @Num @SubSectionHeadingFormat @Body }
+ incontents { @SubSectionInContents }
+ contentsindent { @SubSectionContentsIndent }
+ numbers { @SubSectionNumbers }
+ attachnum { @SubSectionList&&preceding @Tagged @Tag }
+ retrievenum { @SubSectionList&&@Tag @Open { num } }
+ bypassnumber { @BypassNumber }
+ prefix { @SectionShortNum }
+ majornum {}
+ majortitle {}
+ intheorems { @SubSectionNumInTheorems }
+ indisplays { @SubSectionNumInDisplays }
+ infigures { @SubSectionNumInFigures }
+ intables { @SubSectionNumInTables }
+ infloaters { @SubSectionNumInFloaters }
+ inrunners { @SubSectionNumInRunners }
+ newpage { @NewPage }
+ @Body
+
+ }
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Minor }
+ initiallanguage { @InitialLanguage }
+ title { @Title }
+ runningtitle { @RunningTitle }
+ headingfont { @SectionHeadingFont }
+ headingbreak { @SectionHeadingBreak }
+ headingformat { @Num @SectionHeadingFormat @Body }
+ incontents { @SectionInContents }
+ contentsindent { @SectionContentsIndent }
+ numbers { @SectionNumbers }
+ attachnum { @SectionList&&preceding @Tagged @Tag }
+ retrievenum { @SectionList&&@Tag @Open { num } }
+ pnprefix { @SectionPrefix }
+ majornum {}
+ majortitle {}
+ bypassnumber { @BypassNumber }
+ intheorems { @SectionNumInTheorems }
+ indisplays { @SectionNumInDisplays }
+ infigures { @SectionNumInFigures }
+ intables { @SectionNumInTables }
+ infloaters { @SectionNumInFloaters }
+ inrunners { @SectionNumInRunners }
+ newpage { @NewPage }
+ @Body
+
+ }
+
+ def @EndAppendicesPlace { @Galley }
+
+ def @EndAppendices force into { @EndAppendicesPlace&&preceding }
+ {}
+
+ macro @BeginAppendices
+ { //@AppendixGap @AppendixList @FirstAppendixNumber
+ // @EndAppendicesPlace //
+ }
+
+ export @BeginSubAppendices @EndSubAppendices @SubAppendix
+ def @Appendix force into { @AppendixList&&preceding }
+ named @Tag {}
+ named @Title {}
+ named @RunningTitle { dft }
+ named @InitialLanguage {}
+ named @BypassNumber { dft }
+ named @NewPage { No }
+ body @Body
+ {
+
+ def @EndSubAppendicesPlace { @Galley }
+
+ def @EndSubAppendices force into
+ { @EndSubAppendicesPlace&&preceding }
+ {}
+
+ macro @BeginSubAppendices
+ { //@SubAppendixGap @SubAppendixList @FirstSubAppendixNumber
+ // @EndSubAppendicesPlace //
+ }
+
+ def @AppendixShortNum
+ {
+ @AppendixNumbers @Then {
+ @BypassNumber @Dft {
+ @AppendixNumbers @Num @AppendixList&&@Tag @Open { num }
+ }
+ }
+ }
+
+ export @BeginSubSubAppendices @EndSubSubAppendices @SubSubAppendix
+ def @SubAppendix force into { @SubAppendixList&&preceding }
+ named @Tag {}
+ named @Title {}
+ named @RunningTitle { dft }
+ named @InitialLanguage { @InitialLanguage }
+ named @BypassNumber { dft }
+ named @NewPage { No }
+ body @Body
+ {
+
+ def @EndSubSubAppendicesPlace { @Galley }
+
+ def @EndSubSubAppendices force into
+ { @EndSubSubAppendicesPlace&&preceding }
+ {}
+
+ macro @BeginSubSubAppendices
+ { //@SubSubAppendixGap
+ @SubSubAppendixList @FirstSubSubAppendixNumber
+ // @EndSubSubAppendicesPlace //
+ }
+
+ def @SubAppendixShortNum
+ {
+ @SubAppendixNumbers @Then {
+ @BypassNumber @Dft {
+ @AppendixShortNum @Join @SubAppendixNumbers @Num
+ { @SubAppendixList&&@Tag @Open { num } }
+ }
+ }
+ }
+
+ def @SubSubAppendix force into {@SubSubAppendixList&&preceding}
+ named @Tag {}
+ named @Title {}
+ named @RunningTitle { dft }
+ named @InitialLanguage { @InitialLanguage }
+ named @BypassNumber { dft }
+ named @NewPage { No }
+ body @Body
+ {
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Minor }
+ initiallanguage { @InitialLanguage }
+ title { @Title }
+ runningtitle { @RunningTitle }
+ headingfont { @SubSubAppendixHeadingFont }
+ headingbreak { @SubSubAppendixHeadingBreak }
+ headingformat { @Num @SubSubAppendixHeadingFormat @Body }
+ incontents { @SubSubAppendixInContents }
+ contentsindent { @SubSubAppendixContentsIndent }
+ numbers { @SubSubAppendixNumbers }
+ attachnum { @SubSubAppendixList&&preceding @Tagged @Tag }
+ retrievenum { @SubSubAppendixList&&@Tag @Open { num } }
+ bypassnumber { @BypassNumber }
+ prefix { @SubAppendixShortNum }
+ majornum {}
+ majortitle {}
+ intheorems { @SubSubAppendixNumInTheorems }
+ indisplays { @SubSubAppendixNumInDisplays }
+ infigures { @SubSubAppendixNumInFigures }
+ intables { @SubSubAppendixNumInTables }
+ infloaters { @SubSubAppendixNumInFloaters }
+ inrunners { @SubSubAppendixNumInRunners }
+ newpage { @NewPage }
+ @Body
+
+ }
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Minor }
+ initiallanguage { @InitialLanguage }
+ title { @Title }
+ runningtitle { @RunningTitle }
+ headingfont { @SubAppendixHeadingFont }
+ headingbreak { @SubAppendixHeadingBreak }
+ headingformat { @Num @SubAppendixHeadingFormat @Body }
+ incontents { @SubAppendixInContents }
+ contentsindent { @SubAppendixContentsIndent }
+ numbers { @SubAppendixNumbers }
+ attachnum { @SubAppendixList&&preceding @Tagged @Tag }
+ retrievenum { @SubAppendixList&&@Tag @Open { num } }
+ bypassnumber { @BypassNumber }
+ prefix { @AppendixShortNum }
+ majornum {}
+ majortitle {}
+ intheorems { @SubAppendixNumInTheorems }
+ indisplays { @SubAppendixNumInDisplays }
+ infigures { @SubAppendixNumInFigures }
+ intables { @SubAppendixNumInTables }
+ infloaters { @SubAppendixNumInFloaters }
+ inrunners { @SubAppendixNumInRunners }
+ newpage { @NewPage }
+ @Body
+ }
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Minor }
+ initiallanguage { @InitialLanguage }
+ title { @Title }
+ runningtitle { @RunningTitle }
+ headingfont { @AppendixHeadingFont }
+ headingbreak { @AppendixHeadingBreak }
+ headingformat { @Num @AppendixHeadingFormat @Body }
+ incontents { @AppendixInContents }
+ contentsindent { @AppendixContentsIndent }
+ word { appendix @WordVal @AppendixWord }
+ numbers { @AppendixNumbers }
+ attachnum { @AppendixList&&preceding @Tagged @Tag }
+ retrievenum { @AppendixList&&@Tag @Open { num } }
+ pnprefix { @AppendixPrefix }
+ majornum {}
+ majortitle {}
+ bypassnumber { @BypassNumber }
+ intheorems { @AppendixNumInTheorems }
+ indisplays { @AppendixNumInDisplays }
+ infigures { @AppendixNumInFigures }
+ intables { @AppendixNumInTables }
+ infloaters { @AppendixNumInFloaters }
+ inrunners { Yes }
+ newpage { @NewPage }
+ @Body
+
+ }
+
+ //1.1f
+ // Start @Runner
+ // @Body
+ // NonStart @Runner
+
+ }
+
+@End @OrdinarySetup
diff --git a/include/include/dsf b/include/include/dsf
new file mode 100644
index 0000000..96e115e
--- /dev/null
+++ b/include/include/dsf
@@ -0,0 +1,5426 @@
+###############################################################################
+# #
+# Lout @DocumentSetup package #
+# #
+# Version 1.0 by Jeffrey H. Kingston, 17 July 1991. #
+# Version 2.0 by Jeffrey H. Kingston, 22 December 1992. #
+# Version 3.0 by Jeffrey H. Kingston, 19 April 1994. #
+# Version 3.03 by Jeffrey H. Kingston, 6 May 1995. #
+# Versions 3.04 and 3.05 by Jeffrey H. Kingston, 11 June 1995. #
+# Version 3.05 by Jeffrey H. Kingston, 25 July 1995. #
+# Version 3.07 by Jeffrey H. Kingston, February 1996. #
+# Version 3.10 by Jeffrey H. Kingston, September 1996. #
+# Version 3.11 by Jeffrey H. Kingston, December 1996. #
+# Version 3.13 by Jeffrey H. Kingston, October 1998. #
+# Version 3.16 by Jeffrey H. Kingston, May 1999. #
+# Version 3.17 by Jeffrey H. Kingston, September 1999. #
+# Version 3.21 by Jeffrey H. Kingston, May 2000. #
+# Minor changes in later versions undated. #
+# #
+# This Lout package contains the general definitions used by all types of #
+# documents. It needs to be extended (see docf, reportf, bookf, slidesf, #
+# etc.) with definitions for particular document types. Consult "A User's #
+# Guide to the Lout Document Formatting System" for user information. #
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either Version 3, or (at your option) #
+# any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA #
+# #
+# As a special exception, when this file is read by Lout when processing #
+# a Lout source document, you may use the result without restriction. #
+# #
+###############################################################################
+
+extend @BasicSetup
+
+export
+
+ @Runner
+
+ @Figure @Table @Floater
+ @FootNote @AnotherFootNote @EndNote
+ @LeftNote @RightNote @OuterNote @InnerNote # @Place
+ @Theorem @Proof @EndProof
+ @Definition @Claim @Proposition @Lemma @Corollary @Example
+ @Reference @RefStyle @RefPrint
+ @Ref @NoRef @ChapRef @NoChapRef
+ @Cite @NoCite @ChapCite @NoChapCite
+
+ @Glossary @InGlossary
+
+ @IndexA @SubIndexA @SubSubIndexA
+ @RawIndexA @RawSubIndexA @RawSubSubIndexA
+ @IndexABlanks @IndexASpacer @InitialIndexASpacer @IndexALetters
+
+ @IndexB @SubIndexB @SubSubIndexB
+ @RawIndexB @RawSubIndexB @RawSubSubIndexB
+ @IndexBBlanks @IndexBSpacer @InitialIndexBSpacer @IndexBLetters
+
+ @Index @SubIndex @SubSubIndex
+ @RawIndex @RawSubIndex @RawSubSubIndex
+ @IndexBlanks @IndexSpacer @InitialIndexSpacer @IndexLetters
+
+ @BypassContentsEntry @BypassMajorContentsEntry
+ @BypassFigureContentsEntry @BypassTableContentsEntry @BypassFloaterContentsEntry
+ @BypassReference @BypassChapReference
+ @BypassBeginIndex @BypassRawIndex @BypassEndIndex
+ @BypassBeginIndexA @BypassRawIndexA @BypassEndIndexA
+ @BypassBeginIndexB @BypassRawIndexB @BypassEndIndexB
+
+
+def @DocumentSetup
+ named @PageType { A4 @OrIfPlain Other} # page type (width, height)
+ named @PageWidth { 80s } # page width if type Other
+ named @PageHeight { 66f } # page height if type Other
+ named @PageOrientation { Portrait } # Portrait, Landscape, etc.
+ named @PageBackground { } # background of each page
+ named @TopMargin { 2.50c @OrIfPlain 6f } # top margin of all pages
+ named @FootMargin { 2.50c @OrIfPlain 6f } # bottom margin of all pages
+ named @OddLeftMargin { 2.50c @OrIfPlain 10s } # left margin of odd pages
+ named @OddRightMargin { 2.50c @OrIfPlain 10s } # right margin of odd pages
+ named @EvenLeftMargin { 2.50c @OrIfPlain 10s } # left margin of even pages
+ named @EvenRightMargin { 2.50c @OrIfPlain 10s } # right margin of even pages
+ named @OddLeftBodyMargin { 0c } # extra margin for page body
+ named @OddRightBodyMargin { 0c } # extra margin for page body
+ named @EvenLeftBodyMargin { 0c } # extra margin for page body
+ named @EvenRightBodyMargin { 0c } # extra margin for page body
+ named @PageBoxType { None } # None Box CurveBox ShadowBox
+ named @PageBoxMargin { 1.00c } # page box margin
+ import @PSLengths named @PageBoxLineWidth
+ { } # page box line thickness
+ named @PageBoxPaint { none } # page box paint
+ named @PageBoxShadow { 0.60c } # shadow margin if ShadowBox
+ named @PageEnclose right @Body { @Body } # page enclose
+ named @ColumnNumber { 1 } # number of columns (1 to 10)
+ named @ColumnGap { 1.00c @OrIfPlain 6s } # column gap
+
+ named @FigureLocation { PageTop } # default figure location
+ named @FigureFormat
+ named @II right x { |@DisplayIndent x | }
+ named @QQ right x { |@DisplayIndent x |@DisplayIndent }
+ named @CC right x { |0.5rt x | }
+ named @RR right x { |1.0rt x | }
+ right @Body
+ { @CC @Body } # default figure format
+ named @FigureWord { figure } # "Figure" word else anything
+ named @FigureNumbers { Arabic } # method of numbering figures
+ named @FigureCaptionPos { Below } # Above or Below
+ named @FigureCaptionFont { -2p } # figure caption font
+ named @FigureCaptionBreak { adjust hyphen 1.2fx } # figure caption break
+ named @FigureCaptionFormat named word {} named number {} named caption {}
+ { {@B { word @NumSep number. &2s }} @Insert caption }
+ named @MakeFigureContents { No } # list of figures at start
+
+ named @TableLocation { PageTop } # default table location
+ named @TableFormat
+ named @II right x { |@DisplayIndent x | }
+ named @QQ right x { |@DisplayIndent x |@DisplayIndent }
+ named @CC right x { |0.5rt x | }
+ named @RR right x { |1.0rt x | }
+ right @Body
+ { @CC @Body } # default table format
+ named @TableWord { table } # "Table" word else anything
+ named @TableNumbers { Arabic } # method of numbering tables
+ named @TableCaptionPos { Below } # Above or Below
+ named @TableCaptionFont { -2p } # figure caption font
+ named @TableCaptionBreak { adjust hyphen 1.2fx } # figure caption break
+ named @TableCaptionFormat named word {} named number {} named caption {}
+ { {@B { word @NumSep number. &2s }} @Insert caption }
+ named @MakeTableContents { No } # list of tables at start
+
+ named @FloaterLocation { PageTop } # default floater location
+ named @FloaterFormat
+ named @II right x { |@DisplayIndent x | }
+ named @QQ right x { |@DisplayIndent x |@DisplayIndent }
+ named @CC right x { |0.5rt x | }
+ named @RR right x { |1.0rt x | }
+ right @Body
+ { @CC @Body } # default floater format
+ named @FloaterWord { floater } # "Floater" word else anything
+ named @FloaterNumbers { Arabic } # method of numbering floaters
+ named @FloaterCaptionPos { Below } # Above or Below
+ named @FloaterCaptionFont { -2p } # figure caption font
+ named @FloaterCaptionBreak { adjust hyphen 1.2fx } # figure caption break
+ named @FloaterCaptionFormat named word {} named number {} named caption {}
+ { {@B { word @NumSep number. &2s }} @Insert caption }
+ named @MakeFloaterContents { No } # list of floaters at start
+
+ named @MakeContents { No } # make contents? Yes or No
+ named @ContentsGap { 0.20v @OrIfPlain 0f } # extra gap above minor entry
+ named @ContentsGapAbove { 0.80v @OrIfPlain 1f } # extra gap above major entry
+ named @ContentsGapBelow { 0.00v @OrIfPlain 0f } # extra gap below major entry
+ named @ContentsFont { Bold } # font for major entry
+ named @ContentsPartGapAbove { 1.00v @OrIfPlain 1f } # extra gap above part entry
+ named @ContentsPartGapBelow { 0.00v @OrIfPlain 0f } # extra gap below part entry
+ named @ContentsFormat
+ left number
+ right title
+ { number @Sep title } # contents format
+ named @ContentsLeader { .. } # leader symbol in contents
+ named @ContentsLeaderGap { 4s @OrIfPlain 2s } # gap between leaders
+ named @ContentsRightWidth { 3f @OrIfPlain 6s } # page numbers column width
+
+ named @MakeReferences { Yes } # make references? Yes or No
+ named @RefCiteStyle right cite { [cite] } # citation style
+ named @RefCiteLabels
+ named @RefNum {}
+ named @Tag {}
+ named @Type {}
+ named @Abstract {}
+ named @Address {}
+ named @Annote {}
+ named @Author {}
+ named @Day {}
+ named @Edition {}
+ named @HowPublished {}
+ named @InAuthor {}
+ named @InTitle {}
+ named @Institution {}
+ named @Journal {}
+ named @Keywords {}
+ named @Label {}
+ named @Month {}
+ named @Note {}
+ named @Number {}
+ named @Organization {}
+ named @Page {}
+ named @Pages {}
+ named @Pinpoint {}
+ named @Publisher {}
+ named @Title {}
+ named @TitleNote {}
+ named @TRType {}
+ named @Volume {}
+ named @Year {}
+ { @RefNum } # citation items
+ named @RefNumbers { Arabic } # reference numbers
+
+ named @RefListFormat { Labels } # NoLabels, Labels,
+ # DropLabels, IntegrateLabels
+ named @RefListLabels
+ named @RefNum {}
+ named @Tag {}
+ named @Type {}
+ named @Abstract {}
+ named @Address {}
+ named @Annote {}
+ named @Author {}
+ named @Day {}
+ named @Edition {}
+ named @HowPublished {}
+ named @InAuthor {}
+ named @InTitle {}
+ named @Institution {}
+ named @Journal {}
+ named @Keywords {}
+ named @Label {}
+ named @Month {}
+ named @Note {}
+ named @Number {}
+ named @Organization {}
+ named @Page {}
+ named @Pages {}
+ named @Pinpoint {}
+ named @Publisher {}
+ named @Title {}
+ named @TitleNote {}
+ named @TRType {}
+ named @Volume {}
+ named @Year {}
+ { [@RefNum] } # ref list label format
+ named @RefListTitle { references } # title of reference list
+ named @ChapRefListTitle { references } # title of chapter ref list
+ named @RefListIndent { 0s } # indent to left of labels
+ named @RefListRightIndent { 0s } # indent to right of items
+ named @RefListGap { @ListGap } # gap between ref list items
+ named @RefListFont { } # font used in reference list
+ named @RefListBreak { } # break style of ref list
+ named @RefListLabelWidth { @ListLabelWidth } # numeric labels column width
+ named @RefListSortKey
+ named @Tag {}
+ named @Type {}
+ named @Abstract {}
+ named @Address {}
+ named @Annote {}
+ named @Author {}
+ named @CiteOrder {}
+ named @Day {}
+ named @Edition {}
+ named @HowPublished {}
+ named @InAuthor {}
+ named @InTitle {}
+ named @Institution {}
+ named @Journal {}
+ named @Keywords {}
+ named @Label {}
+ named @Month {}
+ named @Note {}
+ named @Number {}
+ named @Organization {}
+ named @Page {}
+ named @Pages {}
+ named @Pinpoint {}
+ named @Publisher {}
+ named @Title {}
+ named @TitleNote {}
+ named @TRType {}
+ named @Volume {}
+ named @Year {}
+ named ":" { "\037" }
+ { @Tag } # sorting key
+
+ named @MakeGlossary { No } # make glossary? Yes or No
+ named @GlossaryText { @Null } # initial glossary text
+ named @GlossaryFont { } # font for glossary
+ named @GlossaryBreak { } # break style for glossary
+ named @GlossaryFormat # format for glossary
+ named @Name {}
+ named @PageNum {}
+ named @Body {}
+ { +3p @Font @S @Name
+ @Right @I { @Word&&page @PageNum }
+ @DP @RawIndentedDisplay @Body }
+ named @GlossaryGap { @DisplayGap } # gap between glossary items
+ named @GlossaryColumnNumber { 2 } # glossary columns (1 to 10)
+ named @GlossaryColumnGap { 1.00c @OrIfPlain 6s } # glossary column gap
+ named @InGlossaryFont { smallcaps } # font for @InGlossary
+ named @InGlossaryFormat right @Body { @Body } # format for @InGlossary
+
+ named @MakeIndex { No } # make index? Yes or No
+ named @IndexText { @Null } # initial index text
+ named @IndexFont { } # index entries font
+ named @IndexBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # index entries break
+ named @IndexFormat
+ right @Body { @Body } # @Index format
+ named @SubIndexFormat
+ right @Body { {1f @Wide}@Body } # @SubIndex format
+ named @SubSubIndexFormat
+ right @Body { {2f @Wide}@Body } # @SubSubIndex format
+ named @IndexTypeOrdinary
+ right @PageNum { @PageNum } # ordinary page numbers
+ named @IndexTypeMain
+ right @PageNum { @B @PageNum } # main page numbers
+ named @IndexTypeSpecial
+ right @PageNum { @I @PageNum } # special page numbers
+ named @IndexRangeFormat
+ left @From
+ right @To { @From--@To }
+ named @IndexColumnNumber { 2 } # index columns (1 to 10)
+ named @IndexColumnGap { 1.00c @OrIfPlain 6s } # index column gap
+ named @IndexCtd { Yes } # include (ctd.) lines
+ named @IndexCtdWord { continued } # "ctd." in current lang
+ named @IndexCtdFormat
+ left @Body
+ right @CtdWord
+ { @Body @I (@CtdWord) } # (ctd.) format
+ named @IndexSpacerAbove { 2v } # space above index spacer
+ named @IndexSpacerBelow { 1v } # space below index spacer
+ named @IndexSpacerFont { +3p } # font of index spacer
+ named @IndexSpacerFormat
+ right @Body { @Body } # format of index spacer
+
+ named @MakeIndexA { No } # make index A? Yes or No
+ named @IndexAText { @Null } # initial index text
+ named @IndexAFont { } # index A entries font
+ named @IndexABreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # index A entries break
+ named @IndexAFormat
+ right @Body { @Body } # @IndexA format
+ named @SubIndexAFormat
+ right @Body { {1f @Wide}@Body } # @SubIndexA format
+ named @SubSubIndexAFormat
+ right @Body { {2f @Wide}@Body } # @SubSubIndexA format
+ named @IndexATypeOrdinary
+ right @PageNum { @PageNum } # ordinary page numbers
+ named @IndexATypeMain
+ right @PageNum { @B @PageNum } # main page numbers
+ named @IndexATypeSpecial
+ right @PageNum { @I @PageNum } # special page numbers
+ named @IndexARangeFormat
+ left @From
+ right @To { @From--@To }
+ named @IndexAColumnNumber { 2 } # index A columns (1 to 10)
+ named @IndexAColumnGap { 1.00c @OrIfPlain 6s } # index A column gap
+ named @IndexACtd { Yes } # include (ctd.) lines
+ named @IndexACtdWord { continued } # "ctd." in current lang
+ named @IndexACtdFormat
+ left @Body
+ right @CtdWord
+ { @Body @I (@CtdWord) } # (ctd.) format
+ named @IndexASpacerAbove { 2v } # space above index A spacer
+ named @IndexASpacerBelow { 1v } # space below index A spacer
+ named @IndexASpacerFont { +3p } # font of index A spacer
+ named @IndexASpacerFormat
+ right @Body { @Body } # format of index A spacer
+
+ named @MakeIndexB { No } # make index B? Yes or No
+ named @IndexBText { @Null } # initial index text
+ named @IndexBFont { } # index B entries font
+ named @IndexBBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # index B entries break
+ named @IndexBFormat
+ right @Body { @Body } # @IndexB format
+ named @SubIndexBFormat
+ right @Body { {1f @Wide}@Body } # @SubIndexB format
+ named @SubSubIndexBFormat
+ right @Body { {2f @Wide}@Body } # @SubSubIndexB format
+ named @IndexBTypeOrdinary
+ right @PageNum { @PageNum } # ordinary page numbers
+ named @IndexBTypeMain
+ right @PageNum { @B @PageNum } # main page numbers
+ named @IndexBTypeSpecial
+ right @PageNum { @I @PageNum } # special page numbers
+ named @IndexBRangeFormat
+ left @From
+ right @To { @From--@To }
+ named @IndexBColumnNumber { 2 } # index B columns (1 to 10)
+ named @IndexBColumnGap { 1.00c @OrIfPlain 6s } # index B column gap
+ named @IndexBCtd { Yes } # include (ctd.) lines
+ named @IndexBCtdWord { continued } # "ctd." in current lang
+ named @IndexBCtdFormat
+ left @Body
+ right @CtdWord
+ { @Body @I (@CtdWord) } # (ctd.) format
+ named @IndexBSpacerAbove { 2v } # space above index B spacer
+ named @IndexBSpacerBelow { 1v } # space below index B spacer
+ named @IndexBSpacerFont { +3p } # font of index B spacer
+ named @IndexBSpacerFormat
+ right @Body { @Body } # format of index B spacer
+
+ named @MakeColophon { No } # make colophon? Yes or No
+ named @ColophonFont { } # font for colophon
+ named @ColophonBreak { } # break style for colophon
+ named @ColophonColumnNumber { 1 } # colophon columns (1 to 10)
+ named @ColophonColumnGap { 1.00c @OrIfPlain 6s } # colophon column gap
+
+ named @TopGap { 0.75c @OrIfPlain 2f } # gap between figures
+ named @MidGap { 0.75c @OrIfPlain 2f } # gap above/below body text
+
+ named @FootNoteNumbers { Arabic } # footnote numbers
+ named @FootNoteThrough { No } # numbered through chapter?
+ named @FootNoteLocation { ColFoot } # where the footnote appears
+ named @FootNoteFont { 0.80f } # font for footnotes
+ named @FootNoteBreak { 1.2fx @OrIfPlain 1fx } # break for footnotes
+ named @FootNoteFormat left number right body
+ { { number &0.05f } @Insert body } # break for footnotes
+ named @FootLen { 2.00c @OrIfPlain 10s } # length of footnote line
+ named @FootAboveGap { @DisplayGap } # gap above footnote line
+ named @FootGap { 0.20c @OrIfPlain 1fx } # gap between footnotes
+
+ named @MarginNoteFont { 0.80f } # font of margin notes
+ named @MarginNoteBreak { ragged 1.10fx } # break style of margin notes
+ named @MarginNoteHGap { 0.5c } # horizontal gap to notes
+ named @MarginNoteVGap { @DisplayGap } # min vertical gap between
+ named @MarginNoteWidth { 1.50c } # width of margin notes
+
+ named @EndNoteNumbers { Arabic } # endnote numbers
+ named @EndNoteFont { 0.80f } # font of endnotes
+ named @EndNoteBreak { 1.2fx @OrIfPlain 1fx } # break for endnotes
+ named @EndNoteFormat left number right body
+ { { number &0.05f } @Insert body } # break for endnotes
+ named @EndNoteGap { 0.20c @OrIfPlain 1f } # gap between endnotes
+
+ named @TheoremWord { theorem } # "Theorem" word, etc.
+ named @TheoremTitleFormat right title
+ { (title) } # Theorem title format if present
+ named @TheoremFormat named word {} named number {} named title {} named body {} # theorem format
+ { { @B { word @NumSep number title: } &2s } @Insert body }
+ named @DefinitionWord { definition } # "Definition" word, etc.
+ named @DefinitionTitleFormat right title
+ { (title) } # Definition title format if present
+ named @DefinitionFormat named word {} named number {} named title {} named body {} # definition format
+ { { @B { word @NumSep number title: } &2s } @Insert body }
+ named @ClaimWord { claim } # "Claim" word, etc.
+ named @ClaimTitleFormat right title
+ { (title) } # Claim title format if present
+ named @ClaimFormat named word {} named number {} named title {} named body {} # claim format
+ { { @B { word @NumSep number title: } &2s } @Insert body }
+ named @PropositionWord { proposition } # "Proposition" word, etc.
+ named @PropositionTitleFormat right title
+ { (title) } # Proposition title format if present
+ named @PropositionFormat named word {} named number {} named title {} named body {} # proposition format
+ { { @B { word @NumSep number title: } &2s } @Insert body }
+ named @LemmaWord { lemma } # "Lemma" word, etc.
+ named @LemmaTitleFormat right title
+ { (title) } # Lemma title format if present
+ named @LemmaFormat named word {} named number {} named title {} named body {} # lemma format
+ { { @B { word @NumSep number title: } &2s } @Insert body }
+ named @CorollaryWord { corollary } # "Corollary" word, etc.
+ named @CorollaryTitleFormat right title
+ { (title) } # Corollary title format if present
+ named @CorollaryFormat named word {} named number {} named title {} named body {} # corollary format
+ { { @B { word @NumSep number title: } &2s } @Insert body }
+ named @ExampleWord { example } # "Example" word, etc.
+ named @ExampleTitleFormat right title
+ { (title) } # Example title format if present
+ named @ExampleFormat named word {} named number {} named title {} named body {} # example format
+ { { @B { word @NumSep number title: } &2s } @Insert body }
+ named @ProofWord { proof } # "Proof" word, etc.
+
+ named @PageHeaders { Simple } # None Simple Titles NoTitles
+ named @PageNumbers { Arabic } # page numbers
+ named @FirstPageNumber { 1 } # number of first page
+ named @IntroPageNumbers { Roman } # intro page numbers
+ named @IntroFirstPageNumber { 1 } # number of first intro page
+ named @StructPageNums { No } # structured page numbers
+ named @PageNumberFormat right number { number } # format of page numbers
+
+ named @OddTop right @PageNum { @Centre { - @PageNum - } }
+ named @OddFoot right @PageNum { @Null }
+ named @EvenTop right @PageNum { @Centre { - @PageNum - } }
+ named @EvenFoot right @PageNum { @Null }
+ named @StartOddTop right @PageNum { @Null }
+ named @StartOddFoot right @PageNum { @Null }
+ named @StartEvenTop right @PageNum { @Null }
+ named @StartEvenFoot right @PageNum { @Null }
+
+ named @IntroOddTop right @PageNum { @Null }
+ named @IntroOddFoot right @PageNum { @Centre @PageNum }
+ named @IntroEvenTop right @PageNum { @Null }
+ named @IntroEvenFoot right @PageNum { @Centre @PageNum }
+ named @IntroStartOddTop right @PageNum { @Null }
+ named @IntroStartOddFoot right @PageNum { @Null }
+ named @IntroStartEvenTop right @PageNum { @Null }
+ named @IntroStartEvenFoot right @PageNum { @Null }
+
+ named @RunningOddTop
+ named @MajorNum {} named @MajorTitle {}
+ named @MinorNum {} named @MinorTitle {} right @PageNum
+ { @I { @MinorNum @Sep @MinorTitle } @Right @B @PageNum }
+
+ named @RunningOddFoot
+ named @MajorNum {} named @MajorTitle {}
+ named @MinorNum {} named @MinorTitle {} right @PageNum
+ { @Null }
+
+ named @RunningEvenTop
+ named @MajorNum {} named @MajorTitle {}
+ named @MinorNum {} named @MinorTitle {} right @PageNum
+ { @B @PageNum @Right @I { @MajorNum @Sep @MajorTitle } }
+
+ named @RunningEvenFoot
+ named @MajorNum {} named @MajorTitle {}
+ named @MinorNum {} named @MinorTitle {} right @PageNum
+ { @Null }
+
+ named @RunningStartOddTop
+ named @MajorNum {} named @MajorTitle {}
+ named @MinorNum {} named @MinorTitle {} right @PageNum
+ { @Null }
+
+ named @RunningStartOddFoot
+ named @MajorNum {} named @MajorTitle {}
+ named @MinorNum {} named @MinorTitle {} right @PageNum
+ { @Centre { Bold 0.8f } @Font @PageNum }
+
+ named @RunningStartEvenTop
+ named @MajorNum {} named @MajorTitle {}
+ named @MinorNum {} named @MinorTitle {} right @PageNum
+ { @Null }
+
+ named @RunningStartEvenFoot
+ named @MajorNum {} named @MajorTitle {}
+ named @MinorNum {} named @MinorTitle {} right @PageNum
+ { @Centre { Bold 0.8f } @Font @PageNum }
+
+
+ named @RunningIntroOddTop
+ named @MajorNum {} named @MajorTitle {}
+ named @MinorNum {} named @MinorTitle {} right @PageNum
+ { @Null }
+
+ named @RunningIntroOddFoot
+ named @MajorNum {} named @MajorTitle {}
+ named @MinorNum {} named @MinorTitle {} right @PageNum
+ { @Right @PageNum }
+
+ named @RunningIntroEvenTop
+ named @MajorNum {} named @MajorTitle {}
+ named @MinorNum {} named @MinorTitle {} right @PageNum
+ { @Null }
+
+ named @RunningIntroEvenFoot
+ named @MajorNum {} named @MajorTitle {}
+ named @MinorNum {} named @MinorTitle {} right @PageNum
+ { @PageNum }
+
+ named @RunningIntroStartOddTop
+ named @MajorNum {} named @MajorTitle {}
+ named @MinorNum {} named @MinorTitle {} right @PageNum
+ { @Null }
+
+ named @RunningIntroStartOddFoot
+ named @MajorNum {} named @MajorTitle {}
+ named @MinorNum {} named @MinorTitle {} right @PageNum
+ { @Null }
+
+ named @RunningIntroStartEvenTop
+ named @MajorNum {} named @MajorTitle {}
+ named @MinorNum {} named @MinorTitle {} right @PageNum
+ { @Null }
+
+ named @RunningIntroStartEvenFoot
+ named @MajorNum {} named @MajorTitle {}
+ named @MinorNum {} named @MinorTitle {} right @PageNum
+ { @Null }
+
+
+@Begin
+
+
+ ###########################################################################
+ # #
+ # @Protect x #
+ # #
+ # Like @CNP, this reserves space on the current page or else makes sure #
+ # x appears on the following page. #
+ # #
+ # Prior to Version 3.31 the amount of lookahead was just 3.0f. But #
+ # in Version 3.31, following a suggestion of Ludovic Courtes, this #
+ # was changed to @OneRow { 1.0f @High @LP 2.0v @High }, which #
+ # approximates the height of a title line, a paragraph separator, and #
+ # the first two lines of the section, and so works somewhat better. #
+ # #
+ ###########################################################################
+
+ def @Protect right x { @OneRow { 1.0f @High @LP 2.0v @High } //0io // x }
+
+
+ ###########################################################################
+ # #
+ # @HLine #
+ # #
+ # Draws a horizontal line to fill available space. #
+ # #
+ ###########################################################################
+
+ def @HLine
+ {
+ @BackEnd @Case {
+ PlainText @Yield { "-" @PlainGraphic 1f @High }
+ PostScript @Yield { {0 0 moveto xsize 0 lineto stroke} @Graphic {} }
+ PDF @Yield { {0 0 m __xsize 0 l S} @Graphic {} }
+ }
+ }
+
+
+ ###########################################################################
+ # #
+ # x @WordVal y #
+ # #
+ # Returns @Word&&x if x == y, otherwise y. #
+ # #
+ ###########################################################################
+
+ def @WordVal
+ left x
+ right y
+ {
+ y @Case {
+ x @Yield @Word&&x
+ else @Yield y
+ }
+ }
+
+ ###########################################################################
+ # #
+ # x @Dft y #
+ # #
+ # This returns x unless its value is "dft", in which case it returns y. #
+ # Useful for defaulting the value of one parameter to another. #
+ # #
+ ###########################################################################
+
+ def @Dft
+ left x
+ right y
+ {
+ x @Case {
+ dft @Yield y
+ else @Yield x
+ }
+ }
+
+
+ ###########################################################################
+ # #
+ # x @Do y #
+ # #
+ # This returns @Null if x is No or None, otherwise y. #
+ # #
+ ###########################################################################
+
+ def @Do
+ left x
+ right y
+ {
+ x @Case {
+ { No None } @Yield @Null
+ else @Yield y
+ }
+ }
+
+
+ ###########################################################################
+ # #
+ # x @NoDo y #
+ # #
+ # Negation of @Do: This returns y if x is No or None, otherwise @Null. #
+ # #
+ ###########################################################################
+
+ def @NoDo
+ left x
+ right y
+ {
+ x @Case {
+ { No None } @Yield y
+ else @Yield @Null
+ }
+ }
+
+
+ ###########################################################################
+ # #
+ # x @Then y #
+ # #
+ # This returns the empty object if x is No or None, otherwise y. #
+ # #
+ ###########################################################################
+
+ def @Then
+ left x
+ right y
+ {
+ x @Case {
+ { No None } @Yield {}
+ else @Yield y
+ }
+ }
+
+
+ ###########################################################################
+ # #
+ # x @NoThen y #
+ # #
+ # Negation of @Then: returns y if x is No or None, otherwise empty. #
+ # #
+ ###########################################################################
+
+ def @NoThen
+ left x
+ right y
+ {
+ x @Case {
+ { No None } @Yield y
+ else @Yield {}
+ }
+ }
+
+
+ ###########################################################################
+ # #
+ # Number markers. #
+ # #
+ ###########################################################################
+
+ def @Num
+ left numtype
+ right num
+ {
+ numtype @Case {
+ None @Yield {}
+ Arabic @Yield num
+ Roman @Yield @Roman&&num
+ UCRoman @Yield @UCRoman&&num
+ Alpha @Yield @Alpha&&num
+ UCAlpha @Yield @UCAlpha&&num
+ Bullets @Yield @FnBullets&&num
+ Symbols @Yield @FnSymbols&&num
+ }
+ }
+
+
+ ###########################################################################
+ # #
+ # @MakePageNum #
+ # #
+ # Make a page number. #
+ # #
+ ###########################################################################
+
+ def @MakePageNum
+ named numbers {}
+ named rawnum {}
+ named prefix {}
+ named owner {}
+ {
+ def @OwnerNum { @PageMarker&&owner @Open { rawnum } }
+
+ def @StructNum { @FirstPageNumber @Plus rawnum @Minus @OwnerNum }
+
+ @PageHeaders.@StructPageNums @Case {
+ { Titles.Yes NoTitles.Yes } @Yield {
+ prefix @Join @PageNumberFormat { numbers @Num @StructNum } }
+ else @Yield @PageNumberFormat { numbers @Num rawnum }
+ }
+ }
+
+
+ ###########################################################################
+ # #
+ # Page size, margins, and boxes. This code culminates in @OddPage x #
+ # and @EvenPage x, which produce one odd or even page containing x. #
+ # #
+ ###########################################################################
+
+ def @Width
+ {
+ @PageType @Case {
+ Letter @Yield 612p
+ Tabloid @Yield 792p
+ Ledger @Yield 1224p
+ Legal @Yield 612p
+ Statement @Yield 396p
+ Executive @Yield 540p
+ A0 @Yield 2380p
+ A1 @Yield 1684p
+ A2 @Yield 1190p
+ A3 @Yield 842p
+ A4 @Yield 595p
+ A5 @Yield 420p
+ ISOB4 @Yield 709p
+ ISOB5 @Yield 499p
+ JISB4 @Yield 729p
+ JISB5 @Yield 516p
+ B4 @Yield 729p
+ B5 @Yield 516p
+ Folio @Yield 612p
+ Quarto @Yield 610p
+ 10x14 @Yield 720p
+ Other @Yield @PageWidth
+ }
+ }
+
+ def @Height
+ {
+ @PageType @Case {
+ Letter @Yield 792p
+ Tabloid @Yield 1224p
+ Ledger @Yield 792p
+ Legal @Yield 1008p
+ Statement @Yield 612p
+ Executive @Yield 720p
+ A0 @Yield 3368p
+ A1 @Yield 2380p
+ A2 @Yield 1684p
+ A3 @Yield 1190p
+ A4 @Yield 842p
+ A5 @Yield 595p
+ ISOB4 @Yield 1001p
+ ISOB5 @Yield 709p
+ JISB4 @Yield 1032p
+ JISB5 @Yield 729p
+ B4 @Yield 1032p
+ B5 @Yield 729p
+ Folio @Yield 936p
+ Quarto @Yield 780p
+ 10x14 @Yield 1008p
+ Other @Yield @PageHeight
+ }
+ }
+
+ def @OrientedWidth right @Orient
+ {
+ @Orient @Case {
+ { Portrait ReversePortrait } @Yield @Width
+ { Landscape ReverseLandscape } @Yield @Height
+ }
+ }
+
+ def @OrientedHeight right @Orient
+ {
+ @Orient @Case {
+ { Portrait ReversePortrait } @Yield @Height
+ { Landscape ReverseLandscape } @Yield @Width
+ }
+ }
+
+ def @OrientationAngle right @Orient
+ {
+ @Orient @Case {
+ Portrait @Yield 0d
+ Landscape @Yield 90d
+ ReversePortrait @Yield 180d
+ ReverseLandscape @Yield 270d
+ }
+ }
+
+ def @PageBox right x
+ {
+ @PageBoxType @Case {
+ None @Yield x
+ Box @Yield @Box
+ margin { @PageBoxMargin }
+ paint { @PageBoxPaint }
+ linewidth { @PageBoxLineWidth } x
+ CurveBox @Yield @CurveBox
+ margin { @PageBoxMargin }
+ paint { @PageBoxPaint }
+ linewidth { @PageBoxLineWidth } x
+ ShadowBox @Yield @ShadowBox
+ margin { @PageBoxMargin }
+ paint { @PageBoxPaint }
+ linewidth { @PageBoxLineWidth }
+ shadow { @PageBoxShadow } x
+ }
+ }
+
+ def @PageSet right x
+ {
+# "LoutPageSet" @Graphic # VT: case PDF produces nothing
+ { @BackEnd @Case {
+ PostScript @Yield "LoutPageSet"
+ else @Yield "% @DoBackground/LoutPageSet UNIMPLEMENTED"
+ }
+ } @Graphic x
+ }
+
+ def @ColouriseBackground left color right x
+ {
+ color @Colour
+ @Box margin { 0c } paint { color } linewidth { 0c }
+ @InitialColour @Colour x
+ }
+
+ def @MargSet
+ left parity
+ right x
+ {
+# { parity "LoutMargSet" } @Graphic x # VT: case PDF produces nothing
+ { @BackEnd @Case {
+ PostScript @Yield { parity "LoutMargSet" }
+ else @Yield "% @MargSet/LoutMargSet UNIMPLEMENTED"
+ }
+ } @Graphic x
+ }
+
+ def @OddPage
+ left extra
+ named @Orient {}
+ right x
+ {
+ @PageSet
+ @InitialBackgroundColour @ColouriseBackground
+ { @OrientationAngle @Orient } @Rotate
+ { @OrientedWidth @Orient } @Wide { @OrientedHeight @Orient } @High
+ { //@TopMargin ||@OddLeftMargin
+ { // || @PageBackground } @Background
+ # 1 @MargSet
+ @PageEnclose @PageBox @HExpand { extra // @VExpand x }
+ ||@OddRightMargin //@FootMargin
+ }
+ }
+
+ def @EvenPage
+ left extra
+ named @Orient {}
+ right x
+ {
+ @PageSet
+ @InitialBackgroundColour @ColouriseBackground
+ { @OrientationAngle @Orient } @Rotate
+ { @OrientedWidth @Orient } @Wide { @OrientedHeight @Orient } @High
+ { //@TopMargin ||@EvenLeftMargin
+ { // || @PageBackground } @Background
+ # 0 @MargSet
+ @PageEnclose @PageBox @HExpand { extra // @VExpand x }
+ ||@EvenRightMargin //@FootMargin
+ }
+ }
+
+
+ ###########################################################################
+ # #
+ # Definitions for page headers and footers. There are 16 symbols here, #
+ # in the following arrangement: #
+ # #
+ # @(- | Running)(- | Intro)(Odd | Even)(Top | Foot)Header #
+ # #
+ # Running means that running headers are to be used. #
+ # Intro means that the header is destined for an introductory page. #
+ # Odd or Even means whether the page number will be odd or even. #
+ # Top or Foot means whether the header is for the top or foot of page. #
+ # #
+ ###########################################################################
+
+ export @Start @MajorNum @MajorTitle @MinorNum @MinorTitle @Owner @Prefix
+ def @Runner
+ left @Start
+ named @MajorNum {}
+ named @MajorTitle {}
+ named @MinorNum {}
+ named @MinorTitle {}
+ named @Owner {}
+ named @Prefix {}
+ named @Tag {}
+ {
+ @Null
+ # red @Colour "(@Runner:"@Start":"@MajorTitle":"@MinorTitle")"
+ }
+
+ def @DupRunner # duplicate previous runner
+ {
+ @Runner&&preceding @Open {
+ NonStart @Runner
+ @MajorNum { @MajorNum }
+ @MajorTitle { @MajorTitle }
+ @MinorNum { @MinorNum }
+ @MinorTitle { @MinorTitle }
+ @Owner { @Owner }
+ @Prefix { @Prefix }
+ }
+ }
+
+ def @OddTopHeader
+ left @PageHeadersAndStart
+ right @PageNum
+ {
+ @PageHeadersAndStart @Case {
+ None.Start @Yield @Null
+ None.NonStart @Yield @Null
+ None.None @Yield @Null
+ Simple.Start @Yield @StartOddTop @PageNum
+ Simple.NonStart @Yield @OddTop @PageNum
+ Simple.None @Yield @Null
+ }
+ }
+
+ def @OddFootHeader
+ left @PageHeadersAndStart
+ right @PageNum
+ {
+ @PageHeadersAndStart @Case {
+ None.Start @Yield @Null
+ None.NonStart @Yield @Null
+ None.None @Yield @Null
+ Simple.Start @Yield @StartOddFoot @PageNum
+ Simple.NonStart @Yield @OddFoot @PageNum
+ Simple.None @Yield @Null
+ }
+ }
+
+ def @EvenTopHeader
+ left @PageHeadersAndStart
+ right @PageNum
+ {
+ @PageHeadersAndStart @Case {
+ None.Start @Yield @Null
+ None.NonStart @Yield @Null
+ None.None @Yield @Null
+ Simple.Start @Yield @StartEvenTop @PageNum
+ Simple.NonStart @Yield @EvenTop @PageNum
+ Simple.None @Yield @Null
+ }
+ }
+
+ def @EvenFootHeader
+ left @PageHeadersAndStart
+ right @PageNum
+ {
+ @PageHeadersAndStart @Case {
+ None.Start @Yield @Null
+ None.NonStart @Yield @Null
+ None.None @Yield @Null
+ Simple.Start @Yield @StartEvenFoot @PageNum
+ Simple.NonStart @Yield @EvenFoot @PageNum
+ Simple.None @Yield @Null
+ }
+ }
+
+ def @IntroOddTopHeader
+ left @PageHeadersAndStart
+ right @PageNum
+ {
+ @PageHeadersAndStart @Case {
+ None.Start @Yield @Null
+ None.NonStart @Yield @Null
+ None.None @Yield @Null
+ Simple.Start @Yield @IntroStartOddTop @PageNum
+ Simple.NonStart @Yield @IntroOddTop @PageNum
+ Simple.None @Yield @Null
+ }
+ }
+
+ def @IntroOddFootHeader
+ left @PageHeadersAndStart
+ right @PageNum
+ {
+ @PageHeadersAndStart @Case {
+ None.Start @Yield @Null
+ None.NonStart @Yield @Null
+ None.None @Yield @Null
+ Simple.Start @Yield @IntroStartOddFoot @PageNum
+ Simple.NonStart @Yield @IntroOddFoot @PageNum
+ Simple.None @Yield @Null
+ }
+ }
+
+ def @IntroEvenTopHeader
+ left @PageHeadersAndStart
+ right @PageNum
+ {
+ @PageHeadersAndStart @Case {
+ None.Start @Yield @Null
+ None.NonStart @Yield @Null
+ None.None @Yield @Null
+ Simple.Start @Yield @IntroStartEvenTop @PageNum
+ Simple.NonStart @Yield @IntroEvenTop @PageNum
+ Simple.None @Yield @Null
+ }
+ }
+
+ def @IntroEvenFootHeader
+ left @PageHeadersAndStart
+ right @PageNum
+ {
+ @PageHeadersAndStart @Case {
+ None.Start @Yield @Null
+ None.NonStart @Yield @Null
+ None.None @Yield @Null
+ Simple.Start @Yield @IntroStartEvenFoot @PageNum
+ Simple.NonStart @Yield @IntroEvenFoot @PageNum
+ Simple.None @Yield @Null
+ }
+ }
+
+
+ def @RunningOddTopHeader
+ left @PageHeadersAndStart
+ named @MajorNum {}
+ named @MajorTitle {}
+ named @MinorNum {}
+ named @MinorTitle {}
+ right @PageNum
+ {
+ @PageHeadersAndStart @Case {
+ NoTitles.?? @Yield ??
+ NoTitles.Start @Yield @RunningStartOddTop @PageNum
+ NoTitles.NonStart @Yield @RunningOddTop @PageNum
+ NoTitles.None @Yield @Null
+ Titles.?? @Yield ??
+ Titles.Start @Yield @RunningStartOddTop
+ @MajorNum { @MajorNum } @MajorTitle { @MajorTitle }
+ @MinorNum { @MinorNum } @MinorTitle { @MinorTitle }
+ @PageNum
+ Titles.NonStart @Yield @RunningOddTop
+ @MajorNum { @MajorNum } @MajorTitle { @MajorTitle }
+ @MinorNum { @MinorNum } @MinorTitle { @MinorTitle }
+ @PageNum
+ Titles.None @Yield @Null
+ }
+ }
+
+ def @RunningOddFootHeader
+ left @PageHeadersAndStart
+ named @MajorNum {}
+ named @MajorTitle {}
+ named @MinorNum {}
+ named @MinorTitle {}
+ right @PageNum
+ {
+ @PageHeadersAndStart @Case {
+ NoTitles.?? @Yield @Null
+ NoTitles.Start @Yield @RunningStartOddFoot @PageNum
+ NoTitles.NonStart @Yield @RunningOddFoot @PageNum
+ NoTitles.None @Yield @Null
+ Titles.?? @Yield @Null
+ Titles.Start @Yield @RunningStartOddFoot
+ @MajorNum { @MajorNum } @MajorTitle { @MajorTitle }
+ @MinorNum { @MinorNum } @MinorTitle { @MinorTitle }
+ @PageNum
+ Titles.NonStart @Yield @RunningOddFoot
+ @MajorNum { @MajorNum } @MajorTitle { @MajorTitle }
+ @MinorNum { @MinorNum } @MinorTitle { @MinorTitle }
+ @PageNum
+ Titles.None @Yield @Null
+ }
+ }
+
+ def @RunningEvenTopHeader
+ left @PageHeadersAndStart
+ named @MajorNum {}
+ named @MajorTitle {}
+ named @MinorNum {}
+ named @MinorTitle {}
+ right @PageNum
+ {
+ @PageHeadersAndStart @Case {
+ NoTitles.?? @Yield ??
+ NoTitles.Start @Yield @RunningStartEvenTop @PageNum
+ NoTitles.NonStart @Yield @RunningEvenTop @PageNum
+ NoTitles.None @Yield @Null
+ Titles.?? @Yield ??
+ Titles.Start @Yield @RunningStartEvenTop
+ @MajorNum { @MajorNum } @MajorTitle { @MajorTitle }
+ @MinorNum { @MinorNum } @MinorTitle { @MinorTitle }
+ @PageNum
+ Titles.NonStart @Yield @RunningEvenTop
+ @MajorNum { @MajorNum } @MajorTitle { @MajorTitle }
+ @MinorNum { @MinorNum } @MinorTitle { @MinorTitle }
+ @PageNum
+ Titles.None @Yield @Null
+ }
+ }
+
+ def @RunningEvenFootHeader
+ left @PageHeadersAndStart
+ named @MajorNum {}
+ named @MajorTitle {}
+ named @MinorNum {}
+ named @MinorTitle {}
+ right @PageNum
+ {
+ @PageHeadersAndStart @Case {
+ NoTitles.?? @Yield @Null
+ NoTitles.Start @Yield @RunningStartEvenFoot @PageNum
+ NoTitles.NonStart @Yield @RunningEvenFoot @PageNum
+ NoTitles.None @Yield @Null
+ Titles.?? @Yield @Null
+ Titles.Start @Yield @RunningStartEvenFoot
+ @MajorNum { @MajorNum } @MajorTitle { @MajorTitle }
+ @MinorNum { @MinorNum } @MinorTitle { @MinorTitle }
+ @PageNum
+ Titles.NonStart @Yield @RunningEvenFoot
+ @MajorNum { @MajorNum } @MajorTitle { @MajorTitle }
+ @MinorNum { @MinorNum } @MinorTitle { @MinorTitle }
+ @PageNum
+ Titles.None @Yield @Null
+ }
+ }
+
+ def @RunningIntroOddTopHeader
+ left @PageHeadersAndStart
+ named @MajorNum {}
+ named @MajorTitle {}
+ named @MinorNum {}
+ named @MinorTitle {}
+ right @PageNum
+ {
+ @PageHeadersAndStart @Case {
+ NoTitles.?? @Yield ??
+ NoTitles.Start @Yield @RunningIntroStartOddTop @PageNum
+ NoTitles.NonStart @Yield @RunningIntroOddTop @PageNum
+ NoTitles.None @Yield @Null
+ Titles.?? @Yield ??
+ Titles.Start @Yield @RunningIntroStartOddTop
+ @MajorNum { @MajorNum } @MajorTitle { @MajorTitle }
+ @MinorNum { @MinorNum } @MinorTitle { @MinorTitle }
+ @PageNum
+ Titles.NonStart @Yield @RunningIntroOddTop
+ @MajorNum { @MajorNum } @MajorTitle { @MajorTitle }
+ @MinorNum { @MinorNum } @MinorTitle { @MinorTitle }
+ @PageNum
+ Titles.None @Yield @Null
+ }
+ }
+
+ def @RunningIntroOddFootHeader
+ left @PageHeadersAndStart
+ named @MajorNum {}
+ named @MajorTitle {}
+ named @MinorNum {}
+ named @MinorTitle {}
+ right @PageNum
+ {
+ @PageHeadersAndStart @Case {
+ NoTitles.?? @Yield @Null
+ NoTitles.Start @Yield @RunningIntroStartOddFoot @PageNum
+ NoTitles.NonStart @Yield @RunningIntroOddFoot @PageNum
+ NoTitles.None @Yield @Null
+ Titles.?? @Yield @Null
+ Titles.Start @Yield @RunningIntroStartOddFoot
+ @MajorNum { @MajorNum } @MajorTitle { @MajorTitle }
+ @MinorNum { @MinorNum } @MinorTitle { @MinorTitle }
+ @PageNum
+ Titles.NonStart @Yield @RunningIntroOddFoot
+ @MajorNum { @MajorNum } @MajorTitle { @MajorTitle }
+ @MinorNum { @MinorNum } @MinorTitle { @MinorTitle }
+ @PageNum
+ Titles.None @Yield @Null
+ }
+ }
+
+ def @RunningIntroEvenTopHeader
+ left @PageHeadersAndStart
+ named @MajorNum {}
+ named @MajorTitle {}
+ named @MinorNum {}
+ named @MinorTitle {}
+ right @PageNum
+ {
+ @PageHeadersAndStart @Case {
+ NoTitles.?? @Yield ??
+ NoTitles.Start @Yield @RunningIntroStartEvenTop @PageNum
+ NoTitles.NonStart @Yield @RunningIntroEvenTop @PageNum
+ NoTitles.None @Yield @Null
+ Titles.?? @Yield ??
+ Titles.Start @Yield @RunningIntroStartEvenTop
+ @MajorNum { @MajorNum } @MajorTitle { @MajorTitle }
+ @MinorNum { @MinorNum } @MinorTitle { @MinorTitle }
+ @PageNum
+ Titles.NonStart @Yield @RunningIntroEvenTop
+ @MajorNum { @MajorNum } @MajorTitle { @MajorTitle }
+ @MinorNum { @MinorNum } @MinorTitle { @MinorTitle }
+ @PageNum
+ Titles.None @Yield @Null
+ }
+ }
+
+ def @RunningIntroEvenFootHeader
+ left @PageHeadersAndStart
+ named @MajorNum {}
+ named @MajorTitle {}
+ named @MinorNum {}
+ named @MinorTitle {}
+ right @PageNum
+ {
+ @PageHeadersAndStart @Case {
+ NoTitles.?? @Yield @Null
+ NoTitles.Start @Yield @RunningIntroStartEvenFoot @PageNum
+ NoTitles.NonStart @Yield @RunningIntroEvenFoot @PageNum
+ NoTitles.None @Yield @Null
+ Titles.?? @Yield @Null
+ Titles.Start @Yield @RunningIntroStartEvenFoot
+ @MajorNum { @MajorNum } @MajorTitle { @MajorTitle }
+ @MinorNum { @MinorNum } @MinorTitle { @MinorTitle }
+ @PageNum
+ Titles.NonStart @Yield @RunningIntroEvenFoot
+ @MajorNum { @MajorNum } @MajorTitle { @MajorTitle }
+ @MinorNum { @MinorNum } @MinorTitle { @MinorTitle }
+ @PageNum
+ Titles.None @Yield @Null
+ }
+ }
+
+
+ ###########################################################################
+ # #
+ # Helper definitions for laying out pages. #
+ # #
+ ###########################################################################
+
+ def @PageTopPlace { @Galley }
+ def @PageFootAndTopPlace { @Galley }
+ def @PageFootNotePlace { @Galley }
+ def @FullPlace { @Galley }
+ def @OddFullPlace { @Galley }
+ def @EvenFullPlace { @Galley }
+ def @FullPagePlace { @Galley }
+ def @EvenFullPagePlace { @Galley }
+ def @EvenPagePlace { @Galley }
+ def @OddFullPagePlace { @Galley }
+ def @ColTopPlace { @Galley }
+ def @ColFootAndTopPlace { @Galley }
+ def @ColPlace { @Galley }
+ def @ColFootNotePlace { @Galley }
+ def @IntroFullPlace { @Galley }
+ def @IntroOddFullPlace { @Galley }
+ def @IntroEvenFullPlace { @Galley }
+ def @IntroColPlace { @Galley }
+ def @GlossaryPlace { @Galley }
+ def @IndexPlace { @Galley }
+ def @IndexAPlace { @Galley }
+ def @IndexBPlace { @Galley }
+ def @ColophonPlace { @Galley }
+ def @AfterLinePlace { @ForceGalley }
+
+ def @TryAfterLinePlace right x
+ {
+ x @Case {
+ noforce @Yield @Galley
+ force @Yield @ForceGalley
+ }
+ }
+
+ def @EvenFullPageSection
+ {
+ @OneRow @EvenFullPagePlace
+ // @FullPagePlace
+ //@MidGap @EvenFullPageSection
+ }
+
+ def @OddFullPageSection
+ {
+ @OneRow @OddFullPagePlace
+ // @FullPagePlace
+ //@MidGap @OddFullPageSection
+ }
+
+ def @EvenPageTopSect
+ {
+ @OneRow @EvenPagePlace
+ // @PageTopPlace
+ //@MidGap @PageFootAndTopPlace
+ //@MidGap @EvenPageTopSect
+ }
+
+ def @OddPageTopSect
+ {
+ @PageTopPlace
+ //@MidGap @PageFootAndTopPlace
+ //@MidGap @OddPageTopSect
+ }
+
+ def @PageOddTopSection right @Orient
+ {
+ @OddPageTopSect ||{@OrientedWidth @Orient} @FullPlace
+ ||{@OrientedWidth @Orient} @OddFullPlace
+ }
+
+ def @PageEvenTopSection right @Orient
+ {
+ @EvenPageTopSect ||{@OrientedWidth @Orient} @FullPlace
+ ||{@OrientedWidth @Orient} @EvenFullPlace
+ }
+
+ def @PageIntroOddTopSection right @Orient
+ {
+ @OddPageTopSect ||{@OrientedWidth @Orient} @IntroFullPlace
+ ||{@OrientedWidth @Orient} @IntroOddFullPlace
+ }
+
+ def @PageIntroEvenTopSection right @Orient
+ {
+ @EvenPageTopSect
+ ||{@OrientedWidth @Orient} @IntroFullPlace
+ ||{@OrientedWidth @Orient} @IntroEvenFullPlace
+ }
+
+ def @PageFootNoteList
+ {
+ @PageFootNotePlace
+ //@FootGap @PageFootNoteList
+ }
+
+ def @PageFootNoteSection
+ {
+ @FootLen @Wide @HLine
+ //@FootGap @PageFootNoteList
+ }
+
+ def @PageFootAndTopSect
+ {
+ @PageFootAndTopPlace
+ //@MidGap @PageFootAndTopSect
+ }
+
+ def @PageFootSection
+ {
+ //@MidGap @PageFootAndTopSect
+ //@FootAboveGap @PageFootNoteSection
+ }
+
+ def @ColTopSection
+ {
+ @ColTopPlace
+ //@MidGap @ColFootAndTopPlace
+ //@MidGap @TryAfterLinePlace noforce
+ //@MidGap @ColTopSection
+ }
+
+ def @RestOfColSection
+ {
+ @AfterLinePlace
+ //@MidGap @TryAfterLinePlace force
+ //@MidGap @ColPlace @NotRevealed
+ //@MidGap @RestOfColSection
+ }
+
+ def @IntroRestOfColSection
+ {
+ @AfterLinePlace
+ //@MidGap @TryAfterLinePlace force
+ //@MidGap @IntroColPlace @NotRevealed
+ //@MidGap @IntroRestOfColSection
+ }
+
+ def @ColFootAndTopList { @ColFootAndTopPlace //@TopGap @ColFootAndTopList }
+
+ def @ColFootNoteList
+ {
+ @ColFootNotePlace
+ //@FootGap @ColFootNoteList
+ }
+
+ def @ColFootNoteSection
+ {
+ @FootLen @Wide @HLine
+ //@FootGap @ColFootNoteList
+ }
+
+ def @ColFootSection
+ {
+ //@TopGap @ColFootAndTopList
+ //@FootAboveGap @ColFootNoteSection
+ }
+
+ def @ColsOf
+ left num
+ named gap { @ColumnGap }
+ right x
+ {
+ def @Two { x ||gap x }
+ def @Four { @Two ||gap @Two }
+ def @Eight { @Four ||gap @Four }
+
+ num @Case {
+ 1 @Yield { x }
+ 2 @Yield { @Two }
+ 3 @Yield { @Two ||gap x }
+ 4 @Yield { @Four }
+ 5 @Yield { @Four ||gap x }
+ 6 @Yield { @Four ||gap @Two }
+ 7 @Yield { @Four ||gap @Two ||gap x }
+ 8 @Yield { @Four ||gap @Four }
+ 9 @Yield { @Four ||gap @Four ||gap x }
+ 10 @Yield { @Four ||gap @Four ||gap @Two }
+ }
+ }
+
+ def @EqualWidth right x { 500c @Wide x } # believe it or not
+
+ def @ColList right num
+ {
+ @HExpand num @ColsOf @EqualWidth @VExpand
+ {
+ @ColTopSection //@TopGap
+ @ColPlace //@MidGap @RestOfColSection // //1rt
+ @OneRow { @ColFootSection }
+
+ }
+ }
+
+ def @IntroColList right num
+ {
+ @HExpand num @ColsOf @EqualWidth @VExpand
+ {
+ @ColTopSection //@TopGap
+ @IntroColPlace //@MidGap @IntroRestOfColSection // //1rt
+ @OneRow { @ColFootSection }
+ }
+ }
+
+ def @ZeroColList right num
+ {
+ @HExpand num @ColsOf @EqualWidth 0c @High @ColPlace
+ }
+
+ def @ZeroIntroColList right num
+ {
+ @HExpand num @ColsOf @EqualWidth 0c @High @IntroColPlace
+ }
+
+ def @GlossaryColList right num
+ {
+ @HExpand num @ColsOf gap { @GlossaryColumnGap } @EqualWidth @VExpand @GlossaryPlace
+ }
+
+ def @IndexColList right num
+ {
+ @HExpand num @ColsOf gap { @IndexColumnGap } @EqualWidth @VExpand @IndexPlace
+ }
+
+ def @IndexAColList right num
+ {
+ @HExpand num @ColsOf gap { @IndexAColumnGap } @EqualWidth @VExpand @IndexAPlace
+ }
+
+ def @IndexBColList right num
+ {
+ @HExpand num @ColsOf gap { @IndexBColumnGap } @EqualWidth @VExpand @IndexBPlace
+ }
+
+ def @ColophonColList right num
+ {
+ @HExpand num @ColsOf gap { @ColophonColumnGap } @EqualWidth @VExpand @ColophonPlace
+ }
+
+
+ ###########################################################################
+ # #
+ # Footnotes. #
+ # #
+ ###########################################################################
+
+ export @Tag count
+ def @FootNoteCounterMarker
+ named @Tag {}
+ named count {}
+ {
+ @Null
+ }
+
+ def @FootNoteNum right tag
+ {
+ @FootNoteCounterMarker&&tag @Open { @Next count }
+ }
+
+ def @FootNoteCounterIncrement
+ right tag
+ {
+ @FootNoteCounterMarker&&preceding @Tagged tag
+ // @FootNoteCounterMarker count { @FootNoteNum tag }
+ // @NumberMarker @Tag { tag }
+ @Value { @FootNoteNumbers @Num @FootNoteNum tag }
+ }
+
+ def @BeginFootNoteCounter
+ {
+ @FootNoteCounterMarker count { 0 }
+ }
+
+ def @FootNote
+ named @Tag {}
+ named @Location { @FootNoteLocation }
+ named @Another { No }
+ named @Label { Numbered }
+ right x
+ {
+
+ def @FootLabelFmt
+ right x
+ {
+ @FootNoteFont @Font @FootNoteBreak @Break
+ +0.3v @VShift { Base 0.8f } @Font x
+ }
+
+ def @FootExtra
+ {
+ @BackEnd @Case {
+ PlainText @Yield ","
+ else @Yield @FootLabelFmt ","
+ }
+ }
+
+ def @FootLabel
+ {
+ @Label @Case {
+ "Numbered" @Yield { @BackEnd @Case {
+ PlainText @Yield { ({@NumberOf @Tag}) }
+ else @Yield @FootLabelFmt @NumberOf @Tag
+ } }
+ else @Yield { @BackEnd @Case {
+ PlainText @Yield @Label
+ else @Yield @FootLabelFmt @Label
+ } }
+ }
+ }
+
+ def @LongFootLabel
+ {
+ @Another @Case {
+ No @Yield { @FootLabel }
+ Yes @Yield { @FootExtra &0iu @FootLabel }
+ }
+ }
+
+ def @FootVal
+ {
+ @FootNoteFont @Font @FootNoteBreak @Break @Label @Case {
+ "Numbered" @Yield {
+ { @FootNoteCounterIncrement @Tag & @FootLabel }
+ @FootNoteFormat x
+ }
+ else @Yield { @FootLabel @FootNoteFormat x }
+ }
+ }
+
+ def @PageFootNote into { @PageFootNotePlace&&following } { @FootVal }
+ def @ColFootNote into { @ColFootNotePlace&&following } { @FootVal }
+
+ @Location @Case {
+ ColFoot @Yield { @Null &0iu @LongFootLabel & @ColFootNote }
+ PageFoot @Yield { @Null &0iu @LongFootLabel & @PageFootNote }
+ }
+ }
+
+ macro @AnotherFootNote { @FootNote @Another { Yes } }
+
+
+ ###########################################################################
+ # #
+ # Definitions for page lists. There are four symbols here, in the #
+ # following arrangement: #
+ # #
+ # @(Simple | Running)(- | Intro)PageList #
+ # #
+ # Running means that the page list is to support running headers. #
+ # Intro means that the page list is an introductory page list. #
+ # These are then packaged into @PageList and @IntroPageList. #
+ # #
+ ###########################################################################
+
+ def @SStart right @PageNum
+ {
+ @PageNum @Case {
+ { 1 0 } @Yield Start
+ else @Yield NonStart
+ }
+ }
+
+ def @ChooseColList right colnum
+ {
+ @OneOf
+ {
+ @ColList colnum
+ @GlossaryColList @GlossaryColumnNumber
+ @IndexAColList @IndexAColumnNumber
+ @IndexBColList @IndexBColumnNumber
+ @IndexColList @IndexColumnNumber
+ @ColophonColList @ColophonColumnNumber
+ }
+ }
+
+ def @ChooseIntroColList right colnum
+ {
+ @OneOf
+ {
+ @IntroColList colnum
+ @GlossaryColList @GlossaryColumnNumber
+ @IndexAColList @IndexAColumnNumber
+ @IndexBColList @IndexBColumnNumber
+ @IndexColList @IndexColumnNumber
+ @ColophonColList @ColophonColumnNumber
+ }
+ }
+
+ def @OddBodyMargins right x
+ {
+ @OddLeftBodyMargin @Wide {} || 1 @MargSet x || @OddRightBodyMargin @Wide {}
+ }
+
+ def @EvenBodyMargins right x
+ {
+ @EvenLeftBodyMargin @Wide {} || 0 @MargSet x || @EvenRightBodyMargin @Wide {}
+ }
+
+ def @SimplePageList
+ named @ColumnNumber {}
+ named @PageHeaders {}
+ named extra { No }
+ named @Orient {}
+ named @AtTop { @Null }
+ right @PageNum
+ {
+
+ def @OrdinaryOddPage
+ {
+ {@PageHeaders.{@SStart @PageNum}} @OddTopHeader
+ @PageNumberFormat { @PageNumbers @Num @PageNum }
+ //@MidGap
+ @OddBodyMargins {
+ @AtTop
+ //@MidGap @PageOddTopSection @Orient
+ //@MidGap @ChooseColList @ColumnNumber
+ }
+ //1rt @OneRow
+ { // @OddBodyMargins @PageFootSection
+ //@MidGap {@PageHeaders.{@SStart @PageNum}} @OddFootHeader
+ @PageNumberFormat { @PageNumbers @Num @PageNum }
+ }
+ }
+
+ def @FullPageOddPage
+ {
+ {@PageHeaders.{@SStart @PageNum}} @OddTopHeader
+ @PageNumberFormat { @PageNumbers @Num @PageNum }
+ //@MidGap @OddBodyMargins @OddFullPageSection
+ //1rt @OneRow
+ { //@MidGap {@PageHeaders.{@SStart @PageNum}} @OddFootHeader
+ @PageNumberFormat { @PageNumbers @Num @PageNum }
+ }
+ }
+
+ def @SimpleEvenPageList
+ named @ColumnNumber {}
+ named @PageHeaders {}
+ named extra { No }
+ right @PageNum
+ {
+
+ def @OrdinaryEvenPage
+ {
+ @PageHeaders.NonStart @EvenTopHeader
+ @PageNumberFormat { @PageNumbers @Num @PageNum }
+ //@MidGap
+ @EvenBodyMargins {
+ @PageEvenTopSection @Orient
+ //@MidGap @ChooseColList @ColumnNumber
+ }
+ //1rt @OneRow
+ { // @EvenBodyMargins @PageFootSection
+ //@MidGap @PageHeaders.NonStart @EvenFootHeader
+ @PageNumberFormat { @PageNumbers @Num @PageNum }
+ }
+ }
+
+ def @FullPageEvenPage
+ {
+ @PageHeaders.NonStart @EvenTopHeader
+ @PageNumberFormat { @PageNumbers @Num @PageNum }
+ //@MidGap @EvenBodyMargins @EvenFullPageSection
+ //1rt @OneRow
+ { //@MidGap @PageHeaders.NonStart @EvenFootHeader
+ @PageNumberFormat { @PageNumbers @Num @PageNum }
+ }
+ }
+
+ @PageMarker
+ rawnum { @PageNum }
+ num { @PageNumbers @Num @PageNum }
+ parity { "Even" }
+ // @FootNoteThrough @NoDo @BeginFootNoteCounter
+ // {} @EvenPage @Orient { @Orient }
+ {
+ @OrdinaryEvenPage ||{@OrientedWidth @Orient} @FullPageEvenPage
+ }
+ // @SimplePageList
+ @ColumnNumber { @ColumnNumber }
+ @PageHeaders { @PageHeaders }
+ @Orient { @Orient }
+ @Next @PageNum
+ }
+
+ @PageMarker
+ rawnum { @PageNum }
+ num { @PageNumbers @Num @PageNum }
+ parity { "Odd" }
+ // @FootNoteThrough @NoDo @BeginFootNoteCounter
+ // { extra @Then @OddBodyMargins @ZeroColList @ColumnNumber } @OddPage @Orient { @Orient }
+ {
+ @OrdinaryOddPage ||{@OrientedWidth @Orient} @FullPageOddPage
+ }
+ // @SimpleEvenPageList
+ @ColumnNumber { @ColumnNumber }
+ @PageHeaders { @PageHeaders }
+ @Next @PageNum
+ }
+
+ def @SimpleIntroPageList
+ named @ColumnNumber {}
+ named @PageHeaders {}
+ named @Orient {}
+ named extra { No }
+ named @AtTop { @Null }
+ right @PageNum
+ {
+ @PageMarker
+ num { @IntroPageNumbers @Num @PageNum }
+ rawnum { @PageNum }
+ parity { "Odd" }
+ // @FootNoteThrough @NoDo @BeginFootNoteCounter
+ // { extra @Then @OddBodyMargins @ZeroIntroColList @ColumnNumber } @OddPage @Orient { @Orient }
+ {
+ {@PageHeaders.{@SStart @PageNum}} @IntroOddTopHeader
+ @PageNumberFormat { @IntroPageNumbers @Num @PageNum }
+ //@MidGap
+ @OddBodyMargins {
+ @AtTop
+ //@MidGap @PageIntroOddTopSection @Orient
+ //@MidGap @ChooseIntroColList @ColumnNumber
+ }
+ //1rt @OneRow
+ { // @OddBodyMargins @PageFootSection
+ //@MidGap
+ {@PageHeaders.{@SStart @PageNum}} @IntroOddFootHeader
+ @PageNumberFormat { @IntroPageNumbers @Num @PageNum }
+ }
+ }
+ // @PageMarker
+ num { @IntroPageNumbers @Num @Next @PageNum }
+ rawnum { @Next @PageNum }
+ parity { "Even" }
+ // @FootNoteThrough @NoDo @BeginFootNoteCounter
+ // {} @EvenPage @Orient { @Orient }
+ @Runner&&following @Open
+ {
+ @PageHeaders.NonStart @IntroEvenTopHeader @PageNumberFormat { @IntroPageNumbers @Num @Next @PageNum }
+ //@MidGap
+ @EvenBodyMargins {
+ @PageIntroEvenTopSection @Orient
+ //@MidGap @ChooseIntroColList @ColumnNumber
+ }
+ //1rt @OneRow
+ { // @EvenBodyMargins @PageFootSection
+ //@MidGap @PageHeaders.NonStart @IntroEvenFootHeader
+ @PageNumberFormat { @IntroPageNumbers @Num @Next @PageNum }
+ }
+ }
+ // @SimpleIntroPageList
+ @ColumnNumber { @ColumnNumber }
+ @PageHeaders { @PageHeaders }
+ @Orient { @Orient }
+ @Next @Next @PageNum
+ }
+
+ def @SimpleOddOrEvenIntroPageList
+ named @ColumnNumber {}
+ named @PageHeaders {}
+ named @Orient {}
+ named extra { No }
+ named @AtTop { @Null }
+ right @PageNum
+ {
+
+ def @SimpleEvenIntroPageList
+ named @ColumnNumber {}
+ named @PageHeaders {}
+ named @Orient {}
+ named extra { No }
+ named @AtTop { @Null }
+ right @PageNum
+ {
+
+ @PageMarker
+ num { @IntroPageNumbers @Num @PageNum }
+ rawnum { @PageNum }
+ parity { "Even" }
+ // @FootNoteThrough @NoDo @BeginFootNoteCounter
+ // {} @EvenPage @Orient { @Orient }
+ @Runner&&following @Open
+ {
+ @PageHeaders.NonStart @IntroEvenTopHeader @PageNumberFormat { @IntroPageNumbers @Num @PageNum }
+ //@MidGap
+ @EvenBodyMargins {
+ @PageIntroEvenTopSection @Orient
+ //@MidGap @ChooseIntroColList @ColumnNumber
+ }
+ //1rt @OneRow
+ { // @EvenBodyMargins @PageFootSection
+ //@MidGap @PageHeaders.NonStart @IntroEvenFootHeader
+ @PageNumberFormat { @IntroPageNumbers @Num @PageNum }
+ }
+ }
+ // @SimpleOddOrEvenIntroPageList
+ @ColumnNumber { @ColumnNumber }
+ @PageHeaders { @PageHeaders }
+ @Orient { @Orient }
+ @Next @PageNum
+ }
+ @PageMarker
+ num { @IntroPageNumbers @Num @PageNum }
+ rawnum { @PageNum }
+ parity { "Odd" }
+ // @FootNoteThrough @NoDo @BeginFootNoteCounter
+ // { extra @Then @OddBodyMargins @ZeroIntroColList @ColumnNumber } @OddPage @Orient { @Orient }
+ {
+ {@PageHeaders.{@SStart @PageNum}} @IntroOddTopHeader
+ @PageNumberFormat { @IntroPageNumbers @Num @PageNum }
+ //@MidGap
+ @OddBodyMargins {
+ @AtTop
+ //@MidGap @PageIntroOddTopSection @Orient
+ //@MidGap @ChooseIntroColList @ColumnNumber
+ }
+ //1rt @OneRow
+ { // @OddBodyMargins @PageFootSection
+ //@MidGap
+ {@PageHeaders.{@SStart @PageNum}} @IntroOddFootHeader
+ @PageNumberFormat { @IntroPageNumbers @Num @PageNum }
+ }
+ }
+ // @SimpleEvenIntroPageList
+ @ColumnNumber { @ColumnNumber }
+ @PageHeaders { @PageHeaders }
+ @Orient { @Orient }
+ @Next @PageNum
+ }
+
+ def @RunningPageList
+ named @ColumnNumber {}
+ named @PageHeaders {}
+ named extra { No }
+ named @Orient {}
+ named @AtTop { @Null }
+ right @PageNum
+ {
+
+ def @OrdinaryOddPage
+ {
+ @Runner&&following @Open
+ {
+ @PageMarker
+ num { @MakePageNum
+ numbers { @PageNumbers }
+ rawnum { @PageNum }
+ prefix { @Prefix }
+ owner { @Owner } }
+ rawnum { @PageNum }
+ parity { "Odd" }
+ // @PageHeaders.@Start @RunningOddTopHeader
+ @MajorNum { @MajorNum } @MajorTitle { @MajorTitle }
+ @MinorNum { @MinorNum } @MinorTitle { @MinorTitle }
+ {
+ @MakePageNum
+ numbers { @PageNumbers }
+ rawnum { @PageNum }
+ prefix { @Prefix }
+ owner { @Owner }
+ }
+ //@MidGap
+ @OddBodyMargins {
+ @AtTop
+ //@MidGap @PageOddTopSection @Orient
+ //@MidGap @ChooseColList @ColumnNumber
+ }
+ //1rt @OneRow
+ { // @OddBodyMargins @PageFootSection
+ //@MidGap @PageHeaders.@Start @RunningOddFootHeader
+ @MajorNum { @MajorNum } @MajorTitle { @MajorTitle }
+ @MinorNum { @MinorNum } @MinorTitle { @MinorTitle }
+ {
+ @MakePageNum
+ numbers { @PageNumbers }
+ rawnum { @PageNum }
+ prefix { @Prefix }
+ owner { @Owner }
+ }
+ }
+ }
+ }
+
+ def @FullPageOddPage
+ {
+ @Runner&&following @Open
+ {
+ @PageMarker
+ num { @MakePageNum
+ numbers { @PageNumbers }
+ rawnum { @PageNum }
+ prefix { @Prefix }
+ owner { @Owner } }
+ rawnum { @PageNum }
+ parity { "Odd" }
+ // @PageHeaders.@Start @RunningOddTopHeader
+ @MajorNum { @MajorNum } @MajorTitle { @MajorTitle }
+ @MinorNum { @MinorNum } @MinorTitle { @MinorTitle }
+ {
+ @MakePageNum
+ numbers { @PageNumbers }
+ rawnum { @PageNum }
+ prefix { @Prefix }
+ owner { @Owner }
+ }
+ //@MidGap
+ @OddBodyMargins {
+ @AtTop
+ //@MidGap @OddFullPageSection
+ }
+ //1rt @OneRow
+ {
+ //@MidGap @PageHeaders.@Start @RunningOddFootHeader
+ @MajorNum { @MajorNum } @MajorTitle { @MajorTitle }
+ @MinorNum { @MinorNum } @MinorTitle { @MinorTitle }
+ {
+ @MakePageNum
+ numbers { @PageNumbers }
+ rawnum { @PageNum }
+ prefix { @Prefix }
+ owner { @Owner }
+ }
+ }
+ }
+ }
+
+ def @RunningEvenPageList
+ named @ColumnNumber {}
+ named @PageHeaders {}
+ right @PageNum
+ {
+
+ def @OrdinaryEvenPage
+ {
+ @Runner&&following @Open
+ {
+ @PageMarker
+ num { @MakePageNum
+ numbers { @PageNumbers }
+ rawnum { @PageNum }
+ prefix { @Prefix }
+ owner { @Owner } }
+ rawnum { @PageNum }
+ parity { "Even" }
+ // @PageHeaders.@Start @RunningEvenTopHeader
+ @MajorNum { @MajorNum } @MajorTitle { @MajorTitle }
+ @MinorNum { @MinorNum } @MinorTitle { @MinorTitle }
+ {
+ @MakePageNum
+ numbers { @PageNumbers }
+ rawnum { @PageNum }
+ prefix { @Prefix }
+ owner { @Owner }
+ }
+ //@MidGap
+ @EvenBodyMargins {
+ @PageEvenTopSection @Orient
+ //@MidGap @ChooseColList @ColumnNumber
+ }
+ //1rt @OneRow
+ { // @EvenBodyMargins @PageFootSection
+ //@MidGap @PageHeaders.@Start @RunningEvenFootHeader
+ @MajorNum { @MajorNum } @MajorTitle { @MajorTitle }
+ @MinorNum { @MinorNum } @MinorTitle { @MinorTitle }
+ {
+ @MakePageNum
+ numbers { @PageNumbers }
+ rawnum { @PageNum }
+ prefix { @Prefix }
+ owner { @Owner }
+ }
+ }
+ }
+ }
+
+ def @FullPageEvenPage
+ {
+ @Runner&&following @Open
+ {
+ @PageMarker
+ num { @MakePageNum
+ numbers { @PageNumbers }
+ rawnum { @PageNum }
+ prefix { @Prefix }
+ owner { @Owner } }
+ rawnum { @PageNum }
+ parity { "Even" }
+ // @PageHeaders.@Start @RunningEvenTopHeader
+ @MajorNum { @MajorNum } @MajorTitle { @MajorTitle }
+ @MinorNum { @MinorNum } @MinorTitle { @MinorTitle }
+ {
+ @MakePageNum
+ numbers { @PageNumbers }
+ rawnum { @PageNum }
+ prefix { @Prefix }
+ owner { @Owner }
+ }
+ //@MidGap
+ @EvenBodyMargins @EvenFullPageSection
+ //1rt @OneRow
+ {
+ //@MidGap @PageHeaders.@Start @RunningEvenFootHeader
+ @MajorNum { @MajorNum } @MajorTitle { @MajorTitle }
+ @MinorNum { @MinorNum } @MinorTitle { @MinorTitle }
+ {
+ @MakePageNum
+ numbers { @PageNumbers }
+ rawnum { @PageNum }
+ prefix { @Prefix }
+ owner { @Owner }
+ }
+ }
+ }
+ }
+
+ @FootNoteThrough @NoDo @BeginFootNoteCounter
+ // {} @EvenPage @Orient { @Orient }
+ {
+ @OrdinaryEvenPage ||{@OrientedWidth @Orient} @FullPageEvenPage
+ }
+ // @RunningPageList
+ @ColumnNumber { @ColumnNumber }
+ @PageHeaders { @PageHeaders }
+ @Orient { @Orient }
+ @Next @PageNum
+ }
+
+ @FootNoteThrough @NoDo @BeginFootNoteCounter
+ // { extra @Then @OddBodyMargins @ZeroColList @ColumnNumber } @OddPage @Orient { @Orient }
+ {
+ @OrdinaryOddPage ||{@OrientedWidth @Orient} @FullPageOddPage
+ }
+ // @RunningEvenPageList
+ @ColumnNumber { @ColumnNumber }
+ @PageHeaders { @PageHeaders }
+ @Next @PageNum
+ }
+
+ def @RunningIntroPageList
+ named @ColumnNumber {}
+ named @PageHeaders {}
+ named @AtTop { @Null }
+ named @Orient {}
+ named extra { No }
+ right @PageNum
+ {
+ @FootNoteThrough @NoDo @BeginFootNoteCounter
+ // { extra @Then @OddBodyMargins @ZeroIntroColList @ColumnNumber } @OddPage @Orient { @Orient }
+ @Runner&&following @Open
+ {
+ @PageMarker
+ num { @MakePageNum
+ numbers { @IntroPageNumbers }
+ rawnum { @PageNum }
+ prefix { @Prefix }
+ owner { @Owner } }
+ rawnum { @PageNum }
+ parity { "Odd" }
+ // @PageHeaders.@Start @RunningIntroOddTopHeader
+ @MajorNum { @MajorNum } @MajorTitle { @MajorTitle }
+ @MinorNum { @MinorNum } @MinorTitle { @MinorTitle }
+ {
+ @MakePageNum
+ numbers { @IntroPageNumbers }
+ rawnum { @PageNum }
+ prefix { @Prefix }
+ owner { @Owner }
+ }
+ //@MidGap
+ @OddBodyMargins {
+ @AtTop
+ //@MidGap @PageIntroOddTopSection @Orient
+ //@MidGap @IntroColList @ColumnNumber
+ }
+ //1rt @OneRow
+ { // @OddBodyMargins @PageFootSection
+ //@MidGap @PageHeaders.@Start @RunningIntroOddFootHeader
+ @MajorNum { @MajorNum } @MajorTitle { @MajorTitle }
+ @MinorNum { @MinorNum } @MinorTitle { @MinorTitle }
+ {
+ @MakePageNum
+ numbers { @IntroPageNumbers }
+ rawnum { @PageNum }
+ prefix { @Prefix }
+ owner { @Owner }
+ }
+ }
+ }
+ // @FootNoteThrough @NoDo @BeginFootNoteCounter
+ // {} @EvenPage @Orient { @Orient }
+ @Runner&&following @Open
+ {
+ @PageMarker
+ num { @MakePageNum
+ numbers { @IntroPageNumbers }
+ rawnum { @Next @PageNum }
+ prefix { @Prefix }
+ owner { @Owner } }
+ rawnum { @Next @PageNum }
+ parity { "Even" }
+ // @PageHeaders.@Start @RunningIntroEvenTopHeader
+ @MajorNum { @MajorNum } @MajorTitle { @MajorTitle }
+ @MinorNum { @MinorNum } @MinorTitle { @MinorTitle }
+ {
+ @MakePageNum
+ numbers { @IntroPageNumbers }
+ rawnum { @Next @PageNum }
+ prefix { @Prefix }
+ owner { @Owner }
+ }
+ //@MidGap
+ @EvenBodyMargins {
+ @PageIntroEvenTopSection @Orient
+ //@MidGap @ChooseIntroColList @ColumnNumber
+ }
+ //1rt @OneRow
+ { // @EvenBodyMargins @PageFootSection
+ //@MidGap @PageHeaders.@Start @RunningIntroEvenFootHeader
+ @MajorNum { @MajorNum } @MajorTitle { @MajorTitle }
+ @MinorNum { @MinorNum } @MinorTitle { @MinorTitle }
+ {
+ @MakePageNum
+ numbers { @IntroPageNumbers }
+ rawnum { @Next @PageNum }
+ prefix { @Prefix }
+ owner { @Owner }
+ }
+ }
+ }
+ // @RunningIntroPageList
+ @PageHeaders { @PageHeaders }
+ @ColumnNumber { @ColumnNumber }
+ @Orient { @Orient }
+ @Next @Next @PageNum
+ }
+
+ def @PageList
+ named @ColumnNumber {}
+ named @PageHeaders {}
+ named extra { No }
+ named @Orient {}
+ named @AtTop { @Null }
+ right @FirstPageNum
+ {
+ @PageHeaders @Case {
+ { None Simple } @Yield @SimplePageList
+ @ColumnNumber { @ColumnNumber }
+ @PageHeaders { @PageHeaders }
+ @Orient { @Orient }
+ extra { extra }
+ @AtTop { @AtTop }
+ @FirstPageNum
+ { Running Titles NoTitles } @Yield @RunningPageList
+ @ColumnNumber { @ColumnNumber }
+ @PageHeaders { @PageHeaders }
+ @Orient { @Orient }
+ extra { extra }
+ @AtTop { @AtTop }
+ @FirstPageNum
+ }
+ //
+ @PageMark last.page
+ }
+
+ def @IntroPageList
+ named @ColumnNumber {}
+ named @PageHeaders {}
+ named @Orient {}
+ named extra { No }
+ named @AtTop { @Null }
+ right @FirstPageNum
+ {
+ @PageHeaders @Case {
+ { None Simple } @Yield @SimpleIntroPageList
+ @ColumnNumber { @ColumnNumber }
+ @PageHeaders { @PageHeaders }
+ @Orient { @Orient }
+ extra { extra }
+ @AtTop { @AtTop }
+ @FirstPageNum
+ { Running Titles NoTitles } @Yield @RunningIntroPageList
+ @ColumnNumber { @ColumnNumber }
+ @PageHeaders { @PageHeaders }
+ @Orient { @Orient }
+ extra { extra }
+ @AtTop { @AtTop }
+ @FirstPageNum
+ }
+ }
+
+ def @ContinuousPageList
+ named @Orient {}
+ {
+ {@OrientedWidth @Orient} @Wide
+ { //@TopMargin ||@EvenLeftMargin
+ {
+ @BeginFootNoteCounter
+ // @ColPlace
+ //@FootAboveGap @ColFootNoteSection
+ //@FootAboveGap @PageFootNoteSection
+ }
+ ||@EvenRightMargin //@FootMargin
+ }
+ }
+
+
+ ###########################################################################
+ # #
+ # Table of contents (including lists of figures and tables). #
+ # #
+ ###########################################################################
+
+ def @ContentsItem
+ named indent { 0f }
+ named crosstag {}
+ named number {}
+ named title {}
+ named pagenum {}
+ named pregap { @ContentsGap }
+ named postgap { 0c }
+ named protect { No }
+ {
+# def @Leaders { @ContentsLeader &@ContentsLeaderGap @Leaders }
+
+ def @Leaders { @ContentsLeaderGap @Wide {} & @ContentsLeader & @Leaders }
+
+ def @OptionalCrossLink right x
+ {
+ crosstag @Case {
+ "" @Yield x
+ else @Yield { crosstag @CrossLink x }
+ }
+ }
+
+ def @RightPart
+ {
+ @ContentsRightWidth @Wide {
+ &1rt { @OptionalCrossLink pagenum //0.5vx }
+ }
+ }
+
+# def @Item
+# {
+# |indent @OptionalCrossLink number @ContentsFormat @HExpand {
+# title & @ContentsLeaderGap @Wide &1rt @OneCol {
+# @Leaders & @RightPart &0io
+# }
+# }
+# |@ContentsRightWidth
+# }
+
+ def @Item
+ {
+ |indent @OptionalCrossLink number @ContentsFormat @HExpand {
+ title &1rt @OneCol {
+ @Leaders & @RightPart &0io
+ }
+ }
+ |@ContentsRightWidth
+ }
+
+ //pregap
+ //0.5vx
+ protect @Case {
+ No @Yield @Item
+ Yes @Yield @Protect @Item
+ }
+ //postgap
+ }
+
+ def @ContentsPlace { @Galley }
+ def @FigureContentsPlace { @Galley }
+ def @TableContentsPlace { @Galley }
+ def @FloaterContentsPlace { @Galley }
+
+ def @SendContents into { @ContentsPlace&&foll_or_prec }
+ right x
+ {
+ x
+ }
+
+ def @SendFigureContents into { @FigureContentsPlace&&foll_or_prec }
+ right x
+ {
+ x
+ }
+
+ def @SendTableContents into { @TableContentsPlace&&foll_or_prec }
+ right x
+ {
+ x
+ }
+
+ def @SendFloaterContents into { @FloaterContentsPlace&&foll_or_prec }
+ right x
+ {
+ x
+ }
+
+ def @ContentsEntry
+ left wanted
+ named indent { 0f }
+ named crosstag {}
+ named number {}
+ named title {}
+ named pagenum {}
+ named pregap { @ContentsGap }
+ named postgap { 0c }
+ {
+ @MakeContents.wanted @Case {
+ Yes.Yes @Yield { @SendContents @ContentsItem
+ indent { indent }
+ crosstag { crosstag }
+ number { number }
+ title { title }
+ pagenum { pagenum }
+ pregap { pregap }
+ postgap { postgap }
+ }
+ else @Yield @Null
+ }
+ }
+
+ def @FigureContentsEntry
+ left wanted
+ named indent { 0f }
+ named crosstag {}
+ named number {}
+ named title {}
+ named pagenum {}
+ named pregap { @ContentsGap }
+ named postgap { 0c }
+ {
+ @MakeFigureContents.wanted @Case {
+ Yes.Yes @Yield { @SendFigureContents @ContentsItem
+ indent { indent }
+ crosstag { crosstag }
+ number { number }
+ title { title }
+ pagenum { pagenum }
+ pregap { pregap }
+ postgap { postgap }
+ }
+ else @Yield @Null
+ }
+ }
+
+ def @TableContentsEntry
+ left wanted
+ named indent { 0f }
+ named crosstag {}
+ named number {}
+ named title {}
+ named pagenum {}
+ named pregap { @ContentsGap }
+ named postgap { 0c }
+ {
+ @MakeTableContents.wanted @Case {
+ Yes.Yes @Yield { @SendTableContents @ContentsItem
+ indent { indent }
+ crosstag { crosstag }
+ number { number }
+ title { title }
+ pagenum { pagenum }
+ pregap { pregap }
+ postgap { postgap }
+ }
+ else @Yield @Null
+ }
+ }
+
+ def @FloaterContentsEntry
+ left wanted
+ named indent { 0f }
+ named crosstag {}
+ named number {}
+ named title {}
+ named pagenum {}
+ named pregap { @ContentsGap }
+ named postgap { 0c }
+ {
+ @MakeFloaterContents.wanted @Case {
+ Yes.Yes @Yield { @SendFloaterContents @ContentsItem
+ indent { indent }
+ crosstag { crosstag }
+ number { number }
+ title { title }
+ pagenum { pagenum }
+ pregap { pregap }
+ postgap { postgap }
+ }
+ else @Yield @Null
+ }
+ }
+
+ def @MajorContentsEntry
+ left wanted
+ named indent { 0f }
+ named crosstag {}
+ named number {}
+ named title {}
+ named pagenum {}
+ named pregap { @ContentsGapAbove }
+ named postgap { @ContentsGapBelow }
+ {
+ @MakeContents.wanted @Case {
+ Yes.Yes @Yield { @SendContents @ContentsItem
+ indent { indent }
+ crosstag { crosstag }
+ number { @ContentsFont @Font number }
+ title { @ContentsFont @Font title }
+ pagenum { pagenum }
+ pregap { pregap }
+ postgap { postgap }
+ protect { Yes }
+ }
+ else @Yield @Null
+ }
+ }
+
+ def @VeryMajorContentsEntry
+ left wanted
+ named indent { 0.5rt }
+ named title {}
+ named pregap { @ContentsPartGapAbove }
+ named postgap { @ContentsPartGapBelow }
+ {
+ def item
+ {
+ //pregap
+ //0.5vx
+ |indent @ContentsFont @Font @OneCol title |
+ //0.5vx
+ //postgap
+ }
+
+ @MakeContents.wanted @Case {
+ Yes.Yes @Yield @SendContents item
+ else @Yield @Null
+ }
+
+ }
+
+ def @ContentsSection
+ {
+ def @ContentsList { @ContentsPlace // @ContentsList }
+
+ @MakeContents @Case {
+ { Yes Bypass } @Yield @ContentsList
+ else @Yield @Null
+ }
+ }
+
+ def @FigureContentsSection
+ {
+ def @FigureContentsList { @FigureContentsPlace // @FigureContentsList }
+
+ @MakeFigureContents @Case {
+ { Yes Bypass } @Yield @FigureContentsList
+ else @Yield @Null
+ }
+ }
+
+ def @TableContentsSection
+ {
+ def @TableContentsList { @TableContentsPlace // @TableContentsList }
+
+ @MakeTableContents @Case {
+ { Yes Bypass } @Yield @TableContentsList
+ else @Yield @Null
+ }
+ }
+
+ def @FloaterContentsSection
+ {
+ def @FloaterContentsList { @FloaterContentsPlace // @FloaterContentsList }
+
+ @MakeFloaterContents @Case {
+ { Yes Bypass } @Yield @FloaterContentsList
+ else @Yield @Null
+ }
+ }
+
+ ###########################################################################
+ # #
+ # Bypass table of contents. #
+ # #
+ ###########################################################################
+
+ def @BypassContentsEntry into { @ContentsPlace&&preceding }
+ named indent { 0f }
+ named crosstag {}
+ named number {}
+ named title {}
+ named pagenum {}
+ {
+ @MakeContents @Case {
+ Bypass @Yield { @ContentsItem
+ indent { indent }
+ crosstag { crosstag }
+ number { number }
+ title { title }
+ pagenum { pagenum }
+ pregap { @ContentsGap }
+ postgap { 0c }
+ }
+ else @Yield @Null
+ }
+ }
+
+ def @BypassFigureContentsEntry into { @FigureContentsPlace&&preceding }
+ named indent { 0f }
+ named crosstag {}
+ named number {}
+ named title {}
+ named pagenum {}
+ {
+ @MakeFigureContents @Case {
+ Bypass @Yield { @ContentsItem
+ indent { indent }
+ crosstag { crosstag }
+ number { number }
+ title { title }
+ pagenum { pagenum }
+ pregap { @ContentsGap }
+ postgap { 0c }
+ }
+ else @Yield @Null
+ }
+ }
+
+ def @BypassTableContentsEntry into { @TableContentsPlace&&preceding }
+ named indent { 0f }
+ named crosstag {}
+ named number {}
+ named title {}
+ named pagenum {}
+ {
+ @MakeTableContents @Case {
+ Bypass @Yield { @ContentsItem
+ indent { indent }
+ crosstag { crosstag }
+ number { number }
+ title { title }
+ pagenum { pagenum }
+ pregap { @ContentsGap }
+ postgap { 0c }
+ }
+ else @Yield @Null
+ }
+ }
+
+ def @BypassFloaterContentsEntry into { @FloaterContentsPlace&&preceding }
+ named indent { 0f }
+ named crosstag {}
+ named number {}
+ named title {}
+ named pagenum {}
+ {
+ @MakeFloaterContents @Case {
+ Bypass @Yield { @ContentsItem
+ indent { indent }
+ crosstag { crosstag }
+ number { number }
+ title { title }
+ pagenum { pagenum }
+ pregap { @ContentsGap }
+ postgap { 0c }
+ }
+ else @Yield @Null
+ }
+ }
+
+ def @BypassMajorContentsEntry into { @ContentsPlace&&preceding }
+ named indent { 0f }
+ named crosstag {}
+ named number {}
+ named title {}
+ named pagenum {}
+ {
+ @MakeContents @Case {
+ Bypass @Yield { @ContentsItem
+ indent { indent }
+ crosstag { crosstag }
+ number { @B number }
+ title { @B title }
+ pagenum { pagenum }
+ pregap { @ContentsGapAbove }
+ postgap { @ContentsGapBelow }
+ }
+ else @Yield @Null
+ }
+ }
+
+
+ ###########################################################################
+ # #
+ # Endnotes. #
+ # #
+ ###########################################################################
+
+ export num
+ def @EndNoteList
+ named @Tag {}
+ right num
+ {
+ @Galley //@EndNoteGap @EndNoteList @Next num
+ }
+
+ def endtag right num
+ {
+ @BackEnd @Case {
+ PlainText @Yield {
+ ({@EndNoteNumbers @Num num})
+ }
+ else @Yield {
+ +0.3v @VShift 0.8f @Font @EndNoteNumbers @Num num
+ }
+ }
+ }
+
+ def @EndNote
+ named @Tag {}
+ right x
+ {
+ def ftag
+ {
+ @EndNoteFont @Font @EndNoteList&&@Tag @Open { endtag num }
+ }
+
+ def @ENote into { @EndNoteList&&following }
+ {
+ @EndNoteFont @Font @EndNoteBreak @Break
+ { { @EndNoteList&&preceding @Tagged @Tag ftag } @EndNoteFormat x }
+ }
+
+ @Null & @EndNoteFont @Font ftag & @ENote
+ }
+
+
+ ###########################################################################
+ # #
+ # Margin Notes. #
+ # #
+ ###########################################################################
+
+ # moved to bsf
+ #def @ZeroSize right x
+ #{
+ # @HContract @VContract { ^/0io |0io @OneCol @OneRow x |0io /0io }
+ #}
+
+ def @MargPut
+ left parity
+ right x
+ {
+ @MarginNoteFont @Font @MarginNoteBreak @Break @ZeroSize {
+ @BackEnd @Case {
+ PlainText @Yield ""
+ PostScript @Yield {
+ { parity "LoutMargShift gsave" // "grestore" } @Graphic
+ {
+ |@MarginNoteHGap @MarginNoteWidth @Wide @OneRow x
+ |@MarginNoteHGap //@MarginNoteVGap
+ }
+ }
+ PDF @Yield { "% @MargPut/LoutMargShift UNIMPLEMENTED" @Graphic {
+ |@MarginNoteHGap @MarginNoteWidth @Wide @OneRow x
+ |@MarginNoteHGap //@MarginNoteVGap
+ } # VT: PDF currently has no output
+ }
+ }
+ }
+ }
+
+ def @LeftNote right x { @Null & 0 @MargPut x }
+ def @RightNote right x { @Null & 1 @MargPut x }
+ def @OuterNote right x { @Null & 2 @MargPut x }
+ def @InnerNote right x { @Null & 3 @MargPut x }
+
+
+ ###########################################################################
+ # #
+ # @Place: places an object at an arbitrary point on the page. #
+ # #
+ ###########################################################################
+
+#
+# VT: the expressions in the braces will work for PostScript but not for PDF
+# they should be modified in the way the "named c { " cm" }" blocks were modified above
+# but since the point of @Place is to output a matrix (?), I have not implemented this change
+#
+ def @OldPlace
+ import @PSLengths named x
+ named "+" precedence 96 associativity left left a right b { a b "add" }
+ named "-" precedence 96 associativity left left a right b { a b "sub" }
+ named "/" precedence 97 associativity left left a right b { a b "div" }
+ named "*" precedence 98 associativity left left a right b { a b "mul" }
+ # named c precedence 99 left a { a "cm" }
+ # named i precedence 99 left a { a "in" }
+ # named e precedence 99 left a { a "em" }
+ # named p precedence 99 left a { a "pt" }
+ # named f precedence 99 left a { a "ft" }
+ # named s precedence 99 left a { a "sp" }
+ # named v precedence 99 left a { a "vs" }
+ # named cm precedence 99 left a { a "cm" }
+ # named in precedence 99 left a { a "in" }
+ # named em precedence 99 left a { a "em" }
+ # named pt precedence 99 left a { a "pt" }
+ # named ft precedence 99 left a { a "ft" }
+ # named sp precedence 99 left a { a "sp" }
+ # named vs precedence 99 left a { a "vs" }
+ { 0 }
+ import @PSLengths named y
+ named "+" precedence 96 associativity left left a right b { a b "add" }
+ named "-" precedence 96 associativity left left a right b { a b "sub" }
+ named "/" precedence 97 associativity left left a right b { a b "div" }
+ named "*" precedence 98 associativity left left a right b { a b "mul" }
+ # named c precedence 99 left a { a "cm" }
+ # named i precedence 99 left a { a "in" }
+ # named e precedence 99 left a { a "em" }
+ # named p precedence 99 left a { a "pt" }
+ # named f precedence 99 left a { a "ft" }
+ # named s precedence 99 left a { a "sp" }
+ # named v precedence 99 left a { a "vs" }
+ # named cm precedence 99 left a { a "cm" }
+ # named in precedence 99 left a { a "in" }
+ # named em precedence 99 left a { a "em" }
+ # named pt precedence 99 left a { a "pt" }
+ # named ft precedence 99 left a { a "ft" }
+ # named sp precedence 99 left a { a "sp" }
+ # named vs precedence 99 left a { a "vs" }
+ { 0 }
+ right val
+ {
+ @ZeroSize {
+ @BackEnd @Case {
+ PlainText @Yield ""
+ PostScript @Yield {
+ { "LoutPageDict begin matr setmatrix" x y "translate end gsave"
+ // "grestore" } @Graphic val
+ }
+ else @Yield { { "% @Place UNIMPLEMENTED" } @Graphic val # VT: PDF currently has no output
+ }
+ }
+ }
+ }
+
+
+ ###########################################################################
+ # #
+ # @Theorem, @Proof, and @EndProof #
+ # #
+ ###########################################################################
+
+ export @Tag val
+ def @TheoremCounterMarker
+ named @Tag {}
+ named val {}
+ {
+ @Null
+ }
+
+ def @BeginTheoremCounter
+ right prefix
+ {
+ @TheoremCounterMarker val { prefix @Join 0 }
+ }
+
+ def @TheoremNum right tag
+ {
+ @TheoremCounterMarker&&tag @Open { @Next val }
+ }
+
+ def @TheoremCounterIncrement
+ right tag
+ {
+ @TheoremCounterMarker&&preceding @Tagged tag
+ @TheoremCounterMarker val { @TheoremNum tag }
+ @NumberMarker @Tag { tag } @Value { @TheoremNum tag }
+ }
+
+ def @Theorem
+ named @Tag {}
+ named @Title {}
+ right x
+ {
+ def @TheoremTitle
+ {
+ @Title @Case {
+ "" @Yield @Null
+ else @Yield @TheoremTitleFormat @Title
+ }
+ }
+
+ { @PageMark @Tag & @TheoremCounterIncrement @Tag } @Insert
+ @TheoremFormat
+ word { theorem @WordVal @TheoremWord }
+ number { @TheoremNum @Tag }
+ title { @TheoremTitle }
+ body { x }
+ }
+
+ macro @Proof { @B { {proof @WordVal @ProofWord}: } &2s }
+
+ macro @EndProof { &1rt @Box {} }
+
+
+ ###########################################################################
+ # #
+ # @Definition #
+ # #
+ ###########################################################################
+
+ export @Tag val
+ def @DefinitionCounterMarker
+ named @Tag {}
+ named val {}
+ {
+ @Null
+ }
+
+ def @BeginDefinitionCounter
+ right prefix
+ {
+ @DefinitionCounterMarker val { prefix @Join 0 }
+ }
+
+ def @DefinitionNum right tag
+ {
+ @DefinitionCounterMarker&&tag @Open { @Next val }
+ }
+
+ def @DefinitionCounterIncrement
+ right tag
+ {
+ @DefinitionCounterMarker&&preceding @Tagged tag
+ @DefinitionCounterMarker val { @DefinitionNum tag }
+ @NumberMarker @Tag { tag } @Value { @DefinitionNum tag }
+ }
+
+ def @Definition
+ named @Tag {}
+ named @Title {}
+ right x
+ {
+ def @DefinitionTitle
+ {
+ @Title @Case {
+ "" @Yield @Null
+ else @Yield @DefinitionTitleFormat @Title
+ }
+ }
+
+ { @PageMark @Tag & @DefinitionCounterIncrement @Tag } @Insert
+ @DefinitionFormat
+ word { definition @WordVal @DefinitionWord }
+ number { @DefinitionNum @Tag }
+ title { @DefinitionTitle }
+ body { x }
+ }
+
+
+ ###########################################################################
+ # #
+ # @Claim #
+ # #
+ ###########################################################################
+
+ export @Tag val
+ def @ClaimCounterMarker
+ named @Tag {}
+ named val {}
+ {
+ @Null
+ }
+
+ def @BeginClaimCounter
+ right prefix
+ {
+ @ClaimCounterMarker val { prefix @Join 0 }
+ }
+
+ def @ClaimNum right tag
+ {
+ @ClaimCounterMarker&&tag @Open { @Next val }
+ }
+
+ def @ClaimCounterIncrement
+ right tag
+ {
+ @ClaimCounterMarker&&preceding @Tagged tag
+ @ClaimCounterMarker val { @ClaimNum tag }
+ @NumberMarker @Tag { tag } @Value { @ClaimNum tag }
+ }
+
+ def @Claim
+ named @Tag {}
+ named @Title {}
+ right x
+ {
+ def @ClaimTitle
+ {
+ @Title @Case {
+ "" @Yield @Null
+ else @Yield @ClaimTitleFormat @Title
+ }
+ }
+
+ { @PageMark @Tag & @ClaimCounterIncrement @Tag } @Insert
+ @ClaimFormat
+ word { claim @WordVal @ClaimWord }
+ number { @ClaimNum @Tag }
+ title { @ClaimTitle }
+ body { x }
+ }
+
+
+ ###########################################################################
+ # #
+ # @Proposition #
+ # #
+ ###########################################################################
+
+ export @Tag val
+ def @PropositionCounterMarker
+ named @Tag {}
+ named val {}
+ {
+ @Null
+ }
+
+ def @BeginPropositionCounter
+ right prefix
+ {
+ @PropositionCounterMarker val { prefix @Join 0 }
+ }
+
+ def @PropositionNum right tag
+ {
+ @PropositionCounterMarker&&tag @Open { @Next val }
+ }
+
+ def @PropositionCounterIncrement
+ right tag
+ {
+ @PropositionCounterMarker&&preceding @Tagged tag
+ @PropositionCounterMarker val { @PropositionNum tag }
+ @NumberMarker @Tag { tag } @Value { @PropositionNum tag }
+ }
+
+ def @Proposition
+ named @Tag {}
+ named @Title {}
+ right x
+ {
+ def @PropositionTitle
+ {
+ @Title @Case {
+ "" @Yield @Null
+ else @Yield @PropositionTitleFormat @Title
+ }
+ }
+
+ { @PageMark @Tag & @PropositionCounterIncrement @Tag } @Insert
+ @PropositionFormat
+ word { proposition @WordVal @PropositionWord }
+ number { @PropositionNum @Tag }
+ title { @PropositionTitle }
+ body { x }
+ }
+
+
+ ###########################################################################
+ # #
+ # @Lemma #
+ # #
+ ###########################################################################
+
+ export @Tag val
+ def @LemmaCounterMarker
+ named @Tag {}
+ named val {}
+ {
+ @Null
+ }
+
+ def @BeginLemmaCounter
+ right prefix
+ {
+ @LemmaCounterMarker val { prefix @Join 0 }
+ }
+
+ def @LemmaNum right tag
+ {
+ @LemmaCounterMarker&&tag @Open { @Next val }
+ }
+
+ def @LemmaCounterIncrement
+ right tag
+ {
+ @LemmaCounterMarker&&preceding @Tagged tag
+ @LemmaCounterMarker val { @LemmaNum tag }
+ @NumberMarker @Tag { tag } @Value { @LemmaNum tag }
+ }
+
+ def @Lemma
+ named @Tag {}
+ named @Title {}
+ right x
+ {
+ def @LemmaTitle
+ {
+ @Title @Case {
+ "" @Yield @Null
+ else @Yield @LemmaTitleFormat @Title
+ }
+ }
+
+ { @PageMark @Tag & @LemmaCounterIncrement @Tag } @Insert
+ @LemmaFormat
+ word { lemma @WordVal @LemmaWord }
+ number { @LemmaNum @Tag }
+ title { @LemmaTitle }
+ body { x }
+ }
+
+
+ ###########################################################################
+ # #
+ # @Corollary #
+ # #
+ ###########################################################################
+
+ export @Tag val
+ def @CorollaryCounterMarker
+ named @Tag {}
+ named val {}
+ {
+ @Null
+ }
+
+ def @BeginCorollaryCounter
+ right prefix
+ {
+ @CorollaryCounterMarker val { prefix @Join 0 }
+ }
+
+ def @CorollaryNum right tag
+ {
+ @CorollaryCounterMarker&&tag @Open { @Next val }
+ }
+
+ def @CorollaryCounterIncrement
+ right tag
+ {
+ @CorollaryCounterMarker&&preceding @Tagged tag
+ @CorollaryCounterMarker val { @CorollaryNum tag }
+ @NumberMarker @Tag { tag } @Value { @CorollaryNum tag }
+ }
+
+ def @Corollary
+ named @Tag {}
+ named @Title {}
+ right x
+ {
+ def @CorollaryTitle
+ {
+ @Title @Case {
+ "" @Yield @Null
+ else @Yield @CorollaryTitleFormat @Title
+ }
+ }
+
+ { @PageMark @Tag & @CorollaryCounterIncrement @Tag } @Insert
+ @CorollaryFormat
+ word { corollary @WordVal @CorollaryWord }
+ number { @CorollaryNum @Tag }
+ title { @CorollaryTitle }
+ body { x }
+ }
+
+
+ ###########################################################################
+ # #
+ # @Example #
+ # #
+ ###########################################################################
+
+ export @Tag val
+ def @ExampleCounterMarker
+ named @Tag {}
+ named val {}
+ {
+ @Null
+ }
+
+ def @BeginExampleCounter
+ right prefix
+ {
+ @ExampleCounterMarker val { prefix @Join 0 }
+ }
+
+ def @ExampleNum right tag
+ {
+ @ExampleCounterMarker&&tag @Open { @Next val }
+ }
+
+ def @ExampleCounterIncrement
+ right tag
+ {
+ @ExampleCounterMarker&&preceding @Tagged tag
+ @ExampleCounterMarker val { @ExampleNum tag }
+ @NumberMarker @Tag { tag } @Value { @ExampleNum tag }
+ }
+
+ def @Example
+ named @Tag {}
+ named @Title {}
+ right x
+ {
+ def @ExampleTitle
+ {
+ @Title @Case {
+ "" @Yield @Null
+ else @Yield @ExampleTitleFormat @Title
+ }
+ }
+
+ { @PageMark @Tag & @ExampleCounterIncrement @Tag } @Insert
+ @ExampleFormat
+ word { example @WordVal @ExampleWord }
+ number { @ExampleNum @Tag }
+ title { @ExampleTitle }
+ body { x }
+ }
+
+
+ ###########################################################################
+ # #
+ # @BeginAllCounters - begin all counters #
+ # #
+ ###########################################################################
+
+ def @BeginAllCounters
+ left condition
+ right prefix
+ {
+ condition @Do {
+ @BeginTheoremCounter prefix
+ // @BeginDefinitionCounter prefix
+ // @BeginClaimCounter prefix
+ // @BeginPropositionCounter prefix
+ // @BeginLemmaCounter prefix
+ // @BeginCorollaryCounter prefix
+ // @BeginExampleCounter prefix
+ }
+ }
+
+
+ ###########################################################################
+ # #
+ # @Reference - a reference. #
+ # #
+ ###########################################################################
+
+ export @Tag @Type @Abstract @Address @Annote @Author @Day @Edition
+ @HowPublished @InAuthor @InTitle @Institution @Journal @Keywords
+ @Label @Month @Note @Number @Organization @Page @Pages @Pinpoint
+ @Publisher @Title @TitleNote @TRType @URL @Volume @Year
+
+ def @Reference
+ named compulsory @Tag {}
+ named compulsory @Type {}
+ named @Abstract {}
+ named @Address {}
+ named @Annote {}
+ named @Author {}
+ named @Day {}
+ named @Edition {}
+ named @HowPublished {}
+ named @InAuthor {}
+ named @InTitle {}
+ named @Institution {}
+ named @Journal {}
+ named @Keywords {}
+ named @Label {}
+ named @Month {}
+ named @Note {}
+ named @Number {}
+ named @Organization {}
+ named @Page {}
+ named @Pages {}
+ named @Pinpoint {}
+ named @Publisher {}
+ named @Title {}
+ named @TitleNote {}
+ named @TRType {}
+ named @URL
+ named "~" { "~" }
+ named "/" { "/" &0p }
+ named "//" { "//" &0p } {}
+ named @Volume {}
+ named @Year {}
+ { @Null }
+
+
+ ###########################################################################
+ # #
+ # @CiteLabel - the value of the label of a reference within a citation. #
+ # #
+ ###########################################################################
+
+ def @CiteLabel
+ left label
+ right tag
+ {
+ tag @CrossLink @RefCiteLabels
+ @RefNum { @NumberOf tag }
+ @Tag { tag }
+ @Type { @Reference&&tag @Open { @Type } }
+ @Abstract { @Reference&&tag @Open { @Abstract } }
+ @Address { @Reference&&tag @Open { @Address } }
+ @Annote { @Reference&&tag @Open { @Annote } }
+ @Author { @Reference&&tag @Open { @Author } }
+ @Day { @Reference&&tag @Open { @Day } }
+ @Edition { @Reference&&tag @Open { @Edition } }
+ @HowPublished { @Reference&&tag @Open { @HowPublished } }
+ @InAuthor { @Reference&&tag @Open { @InAuthor } }
+ @InTitle { @Reference&&tag @Open { @InTitle } }
+ @Institution { @Reference&&tag @Open { @Institution } }
+ @Journal { @Reference&&tag @Open { @Journal } }
+ @Keywords { @Reference&&tag @Open { @Keywords } }
+
+ @Label { label @Case {
+ "" @Yield {@Reference&&tag @Open {@Label}}
+ else @Yield label
+ } }
+
+ @Month { @Reference&&tag @Open { @Month } }
+ @Note { @Reference&&tag @Open { @Note } }
+ @Number { @Reference&&tag @Open { @Number } }
+ @Organization { @Reference&&tag @Open { @Organization } }
+ @Page { @Reference&&tag @Open { @Page } }
+ @Pages { @Reference&&tag @Open { @Pages } }
+ @Pinpoint { @Reference&&tag @Open { @Pinpoint } }
+ @Publisher { @Reference&&tag @Open { @Publisher } }
+ @Title { @Reference&&tag @Open { @Title } }
+ @TitleNote { @Reference&&tag @Open { @TitleNote } }
+ @TRType { @Reference&&tag @Open { @TRType } }
+ @Volume { @Reference&&tag @Open { @Volume } }
+ @Year { @Reference&&tag @Open { @Year } }
+ }
+
+
+ ###########################################################################
+ # #
+ # @ListLabel - the value of the label of a reference within a ref list. #
+ # #
+ ###########################################################################
+
+ def @ListLabel
+ left label
+ right tag
+ {
+ @RefListLabels
+ @RefNum { @NumberOf tag }
+ @Tag { tag }
+ @Type { @Reference&&tag @Open { @Type } }
+ @Abstract { @Reference&&tag @Open { @Abstract } }
+ @Address { @Reference&&tag @Open { @Address } }
+ @Annote { @Reference&&tag @Open { @Annote } }
+ @Author { @Reference&&tag @Open { @Author } }
+ @Day { @Reference&&tag @Open { @Day } }
+ @Edition { @Reference&&tag @Open { @Edition } }
+ @HowPublished { @Reference&&tag @Open { @HowPublished } }
+ @InAuthor { @Reference&&tag @Open { @InAuthor } }
+ @InTitle { @Reference&&tag @Open { @InTitle } }
+ @Institution { @Reference&&tag @Open { @Institution } }
+ @Journal { @Reference&&tag @Open { @Journal } }
+ @Keywords { @Reference&&tag @Open { @Keywords } }
+
+ @Label { label @Case {
+ "" @Yield {@Reference&&tag @Open {@Label}}
+ else @Yield label
+ } }
+
+ @Month { @Reference&&tag @Open { @Month } }
+ @Note { @Reference&&tag @Open { @Note } }
+ @Number { @Reference&&tag @Open { @Number } }
+ @Organization { @Reference&&tag @Open { @Organization } }
+ @Page { @Reference&&tag @Open { @Page } }
+ @Pages { @Reference&&tag @Open { @Pages } }
+ @Pinpoint { @Reference&&tag @Open { @Pinpoint } }
+ @Publisher { @Reference&&tag @Open { @Publisher } }
+ @Title { @Reference&&tag @Open { @Title } }
+ @TitleNote { @Reference&&tag @Open { @TitleNote } }
+ @TRType { @Reference&&tag @Open { @TRType } }
+ @Volume { @Reference&&tag @Open { @Volume } }
+ @Year { @Reference&&tag @Open { @Year } }
+ }
+
+
+ ###########################################################################
+ # #
+ # @SortKey - the value of the sort key of a reference. #
+ # #
+ ###########################################################################
+
+ def @SortKey
+ left label
+ right tag
+ {
+ @RefListSortKey
+ @Tag { tag }
+ @Type { @Reference&&tag @Open { @Type } }
+ @Abstract { @Reference&&tag @Open { @Abstract } }
+ @Address { @Reference&&tag @Open { @Address } }
+ @Annote { @Reference&&tag @Open { @Annote } }
+ @Author { @Reference&&tag @Open { @Author } }
+
+ @CiteOrder { {@NumberOf tag} @Case {
+ "??" @Yield "??"
+ else @Yield { "1000" @Plus @NumberOf tag }
+ }
+ }
+
+ @Day { @Reference&&tag @Open { @Day } }
+ @Edition { @Reference&&tag @Open { @Edition } }
+ @HowPublished { @Reference&&tag @Open { @HowPublished } }
+ @InAuthor { @Reference&&tag @Open { @InAuthor } }
+ @InTitle { @Reference&&tag @Open { @InTitle } }
+ @Institution { @Reference&&tag @Open { @Institution } }
+ @Journal { @Reference&&tag @Open { @Journal } }
+ @Keywords { @Reference&&tag @Open { @Keywords } }
+
+ @Label { label @Case {
+ "" @Yield {@Reference&&tag @Open {@Label}}
+ else @Yield label
+ }
+ }
+
+ @Month { @Reference&&tag @Open { @Month } }
+ @Note { @Reference&&tag @Open { @Note } }
+ @Number { @Reference&&tag @Open { @Number } }
+ @Organization { @Reference&&tag @Open { @Organization } }
+ @Page { @Reference&&tag @Open { @Page } }
+ @Pages { @Reference&&tag @Open { @Pages } }
+ @Pinpoint { @Reference&&tag @Open { @Pinpoint } }
+ @Publisher { @Reference&&tag @Open { @Publisher } }
+ @Title { @Reference&&tag @Open { @Title } }
+ @TitleNote { @Reference&&tag @Open { @TitleNote } }
+ @TRType { @Reference&&tag @Open { @TRType } }
+ @Volume { @Reference&&tag @Open { @Volume } }
+ @Year { @Reference&&tag @Open { @Year } }
+ }
+
+
+ ###########################################################################
+ # #
+ # @RefStyle - a reference printing style. #
+ # #
+ ###########################################################################
+
+ export @Style
+ def @RefStyle
+ left @Tag
+ named @Style right reftag {}
+ {}
+
+
+ ###########################################################################
+ # #
+ # @RefPrint - prints reference with tag reftag in appropriate style. #
+ # #
+ ###########################################################################
+
+ def @RefPrint right reftag
+ { & @RefStyle&&{ @Reference&&reftag @Open { @Type } }
+ @Open { @Style reftag } &
+ }
+
+
+ ###########################################################################
+ # #
+ # @ReferencesSection and @ChapReferencesSection - a list of references. #
+ # #
+ ###########################################################################
+
+ def @RefPlace { @Galley }
+ def @ChapRefPlace { @Galley }
+
+ def @BypassRefPlace { @Galley }
+ def @BypassChapRefPlace { @Galley }
+
+ def @ReferencesSection
+ {
+ def @RefList right num
+ {
+ @NumberMarker @Value { @RefNumbers @Num num } & | @RefPlace
+ //@RefListGap @RefList @Next num
+ }
+
+ def @BypassRefList
+ {
+ @BypassRefPlace //@RefListGap @BypassRefList
+ }
+
+ @RefList 1
+ //@RefListGap
+ @BypassRefList
+ }
+
+ def @ChapReferencesSection
+ {
+ def @ChapRefList right num
+ {
+ @NumberMarker @Value { @RefNumbers @Num num } & | @ChapRefPlace
+ //@RefListGap @ChapRefList @Next num
+ }
+
+ def @BypassChapRefList
+ {
+ @BypassChapRefPlace //@RefListGap @BypassChapRefList
+ }
+
+ @ChapRefList 1
+ //@RefListGap
+ @BypassChapRefList
+ }
+
+
+ ###########################################################################
+ # #
+ # @RefHeading - heading for reference lists. #
+ # #
+ ###########################################################################
+
+ def @RefHeading right x
+ { x @Case {
+ references @Yield @Word&&references
+ bibliography @Yield @Word&&bibliography
+ else @Yield x
+ }
+ }
+
+
+ #######################################################################
+ # #
+ # @ChapRefSection #
+ # #
+ #######################################################################
+
+ def @ChapRefSection
+ {
+ @Heading @RefHeading @ChapRefListTitle
+ @DP
+ @ChapReferencesSection
+ }
+
+
+ ###########################################################################
+ # #
+ # @SendRef and @ChapSendRef - send one reference to the reference list. #
+ # #
+ ###########################################################################
+
+ def @RefItem
+ left lab
+ right ref
+ {
+ def @ZeroWidth right x { &0io @OneCol x &0io }
+
+ @RefListFormat @Case {
+ NoLabels @Yield { ref }
+ Labels @Yield { @ZeroWidth lab |@RefListLabelWidth ref }
+ DropLabels @Yield { lab //1vx |@RefListLabelWidth ref }
+ InLabels @Yield { lab & 2s @Wide & ref }
+ }
+ }
+
+
+ def @RefListItem
+ left label
+ right tag
+ {
+ @RefListFont @Font @RefListBreak @Break {
+ @NumberMarker&&preceding @Tagged tag & @PageMark tag
+ |@RefListIndent {label @ListLabel tag} @RefItem {@RefPrint tag}
+ |@RefListRightIndent
+ }
+ }
+
+
+ def @SendRef into { @RefPlace&&foll_or_prec }
+ left label
+ right tag
+ {
+ def @Key { label @SortKey tag }
+
+ # no @Merge i.e. omit duplicates
+
+ label @RefListItem tag
+ }
+
+
+ def @ChapSendRef into { @ChapRefPlace&&foll_or_prec }
+ left label
+ right tag
+ {
+ def @Key { label @SortKey tag }
+
+ # no @Merge i.e. omit duplicates
+
+ label @RefListItem tag
+ }
+
+
+ ###########################################################################
+ # #
+ # @Ref (bare citation) and its variants. #
+ # #
+ ###########################################################################
+
+ def @Ref
+ named label {}
+ right tag
+ {
+ @MakeReferences @Case {
+ Yes @Yield { label @CiteLabel tag & label @SendRef tag }
+ else @Yield @Null
+ }
+ }
+
+ def @NoRef
+ named label {}
+ right tag
+ {
+ @MakeReferences @Case {
+ Yes @Yield { label @SendRef tag }
+ else @Yield @Null
+ }
+ }
+
+ def @ChapRef
+ named label {}
+ right tag
+ {
+ @MakeReferences @Case {
+ Yes @Yield { label @CiteLabel tag & label @ChapSendRef tag }
+ else @Yield @Null
+ }
+ }
+
+ def @NoChapRef
+ named label {}
+ right tag
+ {
+ @MakeReferences @Case {
+ Yes @Yield { label @ChapSendRef tag }
+ else @Yield @Null
+ }
+ }
+
+
+ ###########################################################################
+ # #
+ # Bypass references. #
+ # #
+ ###########################################################################
+
+ def @BypassReference into { @BypassRefPlace&&preceding }
+ named label {}
+ named value {}
+ {
+ @MakeReferences @Case {
+ Bypass @Yield { label @RefItem value }
+ else @Yield @Null
+ }
+ }
+
+ def @BypassChapReference into { @BypassChapRefPlace&&preceding }
+ named label {}
+ named value {}
+ {
+ @MakeReferences @Case {
+ Bypass @Yield { label @RefItem value }
+ else @Yield @Null
+ }
+ }
+
+
+ ###########################################################################
+ # #
+ # @Cite (citation) and its variants. #
+ # #
+ ###########################################################################
+
+ export "$" "," ";"
+ def @Cite body cite
+ {
+ macro "$" { @Ref }
+ def "," precedence 90 left x { x"," }
+ def ";" precedence 90 left x { x";" }
+
+ @MakeReferences @Case {
+ Yes @Yield {
+ @RefCiteStyle cite
+ }
+ else @Yield @Null
+ }
+ }
+
+ export "$" "," ";"
+ def @NoCite body cite
+ {
+ macro "$" { @NoRef }
+ def "," precedence 90 left x { x"," }
+ def ";" precedence 90 left x { x";" }
+
+ @MakeReferences @Case {
+ Yes @Yield { cite }
+ else @Yield @Null
+ }
+ }
+
+ export "$" "," ";"
+ def @ChapCite body cite
+ {
+ macro "$" { @ChapRef }
+ def "," precedence 90 left x { x"," }
+ def ";" precedence 90 left x { x";" }
+
+ @MakeReferences @Case {
+ Yes @Yield { @RefCiteStyle cite }
+ else @Yield @Null
+ }
+ }
+
+ export "$" "," ";"
+ def @NoChapCite body cite
+ {
+ macro "$" { @NoChapRef }
+ def "," precedence 90 left x { x }
+ def ";" precedence 90 left x { x";" }
+
+ @MakeReferences @Case {
+ Yes @Yield { cite }
+ else @Yield @Null
+ }
+ }
+
+ ###########################################################################
+ # #
+ # Floating figures. #
+ # #
+ ###########################################################################
+
+ export @Tag prefix
+ def @FigurePrefixMarker
+ named @Tag {}
+ named prefix {}
+ {
+ @Null
+ }
+
+ export @Tag count
+ def @FigureCounterMarker
+ named @Tag {}
+ named count {}
+ {
+ @Null
+ }
+
+ def @RawFigureNum right tag
+ {
+ @FigureCounterMarker&&tag @Open { @Next count }
+ }
+
+ def @FigureCounterIncrement
+ right tag
+ {
+ @FigureCounterMarker&&preceding @Tagged tag
+ // @FigurePrefixMarker&&preceding @Tagged tag
+ // @FigureCounterMarker count { @RawFigureNum tag }
+ // @NumberMarker @Tag { tag }
+ @Value { { @FigurePrefixMarker&&tag @Open { prefix } }
+ @Join {@FigureNumbers @Num @RawFigureNum tag}
+ }
+ }
+
+ def @BeginFigureCounter
+ left condition
+ right prefix
+ {
+ condition @Do {
+ @FigurePrefixMarker prefix { prefix }
+ // @FigureCounterMarker count { 0 }
+ }
+ }
+
+ def @EndFigureList { @Galley //@MidGap @EndFigureList }
+
+ def @Figure
+ named @Tag {}
+ named @Caption { dft }
+ named @ShortCaption { dft }
+ named @CaptionPos { @FigureCaptionPos }
+ named @Format
+ named @II right x { |@DisplayIndent x | }
+ named @QQ right x { |@DisplayIndent x |@DisplayIndent }
+ named @CC right x { |0.5rt x | }
+ named @RR right x { |1.0rt x | }
+ right @Body { @FigureFormat @Body }
+ named @InitialLanguage { @InitialLanguage }
+ named @BypassNumber { dft }
+ named @OnePage { dft }
+ named @Location { @FigureLocation }
+ right @Body
+ {
+ def @FigureNumber
+ {
+ @BypassNumber @Dft @NumberOf @Tag
+ }
+
+ def @ContentsCaption
+ {
+ @ShortCaption @Dft @Caption
+ }
+
+ def @OnePg
+ {
+ @OnePage @Case {
+ { No no } @Yield No
+ { Yes yes } @Yield Yes
+ dft @Yield { @Location @Case {
+ PageTop @Yield No
+ EvenPageTop @Yield No
+ FullPage @Yield No
+ EvenFullPage @Yield No
+ PageFoot @Yield Yes
+ ColTop @Yield No
+ ColFoot @Yield Yes
+ ColEnd @Yield No
+ Display @Yield Yes
+ AfterLine @Yield Yes
+ TryAfterLine @Yield Yes
+ Raw @Yield No
+ }
+ }
+ }
+ }
+
+ def @CaptionState
+ {
+ @Caption @Case {
+ dft @Yield None
+ else @Yield { @CaptionPos @Case {
+ { Below below } @Yield Below
+ { Above above } @Yield Above
+ } }
+ }
+ }
+
+ #def @FigureLabel
+ #{
+ # @FigureNumbers @Case {
+ # No @Yield @Null
+ # else @Yield {
+ # @CaptionFormat { {figure @WordVal @FigureWord} @NumSep @FigureNumber }
+ # }
+ # }
+ #}
+
+ def @CaptionVal
+ {
+ @FigureCaptionFont @Font @FigureCaptionBreak @Break
+ { ||0.5rt @FigureCaptionFormat
+ word { figure @WordVal @FigureWord }
+ number { @FigureNumber }
+ caption { @Caption }
+ }
+ }
+
+ def @FigureVal
+ {
+ @InitialLanguage @Language
+ {
+ @MakeFigureContents @FigureContentsEntry
+ indent { 0f }
+ crosstag { @Tag }
+ number { @FigureNumber }
+ title { @InitialLanguage @Language @ContentsCaption }
+ pagenum { @PageOf @Tag }
+ // @FigureCounterIncrement @Tag
+ // @TitleMarker @Tag { @Tag } @Value { @Caption }
+ // @Body
+ // @PageMark @Tag
+ }
+ }
+
+ def @FigureTarget
+ {
+ @Location @Case {
+ PageTop @Yield @PageTopPlace&&following
+ EvenPageTop @Yield @PageTopPlace&&following
+ FullPage @Yield @FullPagePlace&&following
+ EvenFullPage @Yield @FullPagePlace&&following
+ PageFoot @Yield @PageFootAndTopPlace&&following
+ ColTop @Yield @ColTopPlace&&following
+ ColFoot @Yield @ColFootAndTopPlace&&following
+ ColEnd @Yield @EndFigureList&&following
+ Display @Yield @AfterLinePlace&&following
+ AfterLine @Yield @AfterLinePlace&&following
+ TryAfterLine @Yield @TryAfterLinePlace&&following
+ }
+ }
+
+ def @SendEncl into { @FigureTarget }
+ right x
+ {
+ def @Enclose right x
+ {
+ @OnePg @Case {
+ No @Yield @Format x
+ Yes @Yield x
+ }
+ }
+
+ x
+ }
+
+ def @Send into { @FigureTarget }
+ right x
+ {
+ x
+ }
+
+ def @EvenFullPageSend into { @EvenFullPagePlace&&following }
+ right x
+ {
+ @OneRow @HExpand x
+ }
+
+ def @EvenPageSend into { @EvenPagePlace&&following }
+ right x
+ {
+ @OneRow @HExpand x
+ }
+
+ def @RawFigureVal
+ {
+ @OnePg.@CaptionState @Case
+ {
+ Yes.Below @Yield @OneRow { @Format @FigureVal @DP @CaptionVal }
+ Yes.Above @Yield @OneRow { @CaptionVal @DP @Format @FigureVal }
+ Yes.None @Yield @OneRow { @Format @FigureVal }
+ No.Below @Yield { @Format @FigureVal @DP @CaptionVal }
+ No.Above @Yield { @CaptionVal @DP @Format @FigureVal }
+ No.None @Yield { @Format @FigureVal }
+ }
+ }
+
+ def @NonRawFigureVal
+ {
+ @OnePg.@CaptionState @Case
+ {
+ Yes.Below @Yield {
+ @Send @OneRow @HExpand { @Format @FigureVal @DP @CaptionVal // @DupRunner}
+ }
+ Yes.Above @Yield {
+ @Send @OneRow @HExpand { @CaptionVal @DP @Format @FigureVal // @DupRunner}
+ }
+ Yes.None @Yield {
+ @Send @OneRow @HExpand { @Format @FigureVal // @DupRunner }
+ }
+ No.Below @Yield {
+ @SendEncl { @FigureVal // @Send { @CaptionVal // @DupRunner } }
+ }
+ No.Above @Yield {
+ @Send { @CaptionVal // @SendEncl { @FigureVal // @DupRunner } }
+ }
+ No.None @Yield {
+ @SendEncl { @FigureVal // @DupRunner }
+ }
+ }
+ }
+
+ @Location @Case {
+ Raw @Yield @RawFigureVal
+ Display @Yield { @NonRawFigureVal &1rt }
+ EvenPageTop @Yield @EvenPageSend @NonRawFigureVal
+ EvenFullPage @Yield @EvenFullPageSend @NonRawFigureVal
+ else @Yield @NonRawFigureVal
+ }
+ }
+
+
+ ###########################################################################
+ # #
+ # Floating tables (exact clone of figure code immediately above). #
+ # #
+ ###########################################################################
+
+ export @Tag prefix
+ def @TablePrefixMarker
+ named @Tag {}
+ named prefix {}
+ {
+ @Null
+ }
+
+ export @Tag count
+ def @TableCounterMarker
+ named @Tag {}
+ named count {}
+ {
+ @Null
+ }
+
+ def @RawTableNum right tag
+ {
+ @TableCounterMarker&&tag @Open { @Next count }
+ }
+
+ def @TableCounterIncrement
+ right tag
+ {
+ @TableCounterMarker&&preceding @Tagged tag
+ // @TablePrefixMarker&&preceding @Tagged tag
+ // @TableCounterMarker count { @RawTableNum tag }
+ // @NumberMarker @Tag { tag }
+ @Value { { @TablePrefixMarker&&tag @Open { prefix } }
+ @Join {@TableNumbers @Num @RawTableNum tag}
+ }
+ }
+
+ def @BeginTableCounter
+ left condition
+ right prefix
+ {
+ condition @Do {
+ @TablePrefixMarker prefix { prefix }
+ // @TableCounterMarker count { 0 }
+ }
+ }
+
+ def @EndTableList { @Galley //@MidGap @EndTableList }
+
+ def @Table
+ named @Tag {}
+ named @Caption { dft }
+ named @ShortCaption { dft }
+ named @CaptionPos { @TableCaptionPos }
+ named @Format
+ named @II right x { |@DisplayIndent x | }
+ named @QQ right x { |@DisplayIndent x |@DisplayIndent }
+ named @CC right x { |0.5rt x | }
+ named @RR right x { |1.0rt x | }
+ right @Body { @TableFormat @Body }
+ named @InitialLanguage { @InitialLanguage }
+ named @BypassNumber { dft }
+ named @OnePage { dft }
+ named @Location { @TableLocation }
+ right @Body
+ {
+ def @TableNumber
+ {
+ @BypassNumber @Dft @NumberOf @Tag
+ }
+
+ def @ContentsCaption
+ {
+ @ShortCaption @Dft @Caption
+ }
+
+ def @OnePg
+ {
+ @OnePage @Case {
+ { No no } @Yield No
+ { Yes yes } @Yield Yes
+ dft @Yield { @Location @Case {
+ PageTop @Yield No
+ EvenPageTop @Yield No
+ FullPage @Yield No
+ EvenFullPage @Yield No
+ PageFoot @Yield Yes
+ ColTop @Yield No
+ ColFoot @Yield Yes
+ ColEnd @Yield No
+ Display @Yield Yes
+ AfterLine @Yield Yes
+ TryAfterLine @Yield Yes
+ Raw @Yield No
+ }
+ }
+ }
+ }
+
+ def @CaptionState
+ {
+ @Caption @Case {
+ dft @Yield None
+ else @Yield { @CaptionPos @Case {
+ { Below below } @Yield Below
+ { Above above } @Yield Above
+ } }
+ }
+ }
+
+ def @CaptionVal
+ {
+ @TableCaptionFont @Font @TableCaptionBreak @Break
+ { ||0.5rt @TableCaptionFormat
+ word { table @WordVal @TableWord }
+ number { @TableNumber }
+ caption { @Caption }
+ }
+ }
+
+ def @TableVal
+ {
+ @InitialLanguage @Language
+ {
+ @MakeTableContents @TableContentsEntry
+ indent { 0f }
+ crosstag { @Tag }
+ number { @TableNumber }
+ title { @InitialLanguage @Language @ContentsCaption }
+ pagenum { @PageOf @Tag }
+ // @TableCounterIncrement @Tag
+ // @TitleMarker @Tag { @Tag } @Value { @Caption }
+ // @Body
+ // @PageMark @Tag
+ }
+ }
+
+ def @TableTarget
+ {
+ @Location @Case {
+ PageTop @Yield @PageTopPlace&&following
+ EvenPageTop @Yield @PageTopPlace&&following
+ FullPage @Yield @FullPagePlace&&following
+ EvenFullPage @Yield @FullPagePlace&&following
+ PageFoot @Yield @PageFootAndTopPlace&&following
+ ColTop @Yield @ColTopPlace&&following
+ ColFoot @Yield @ColFootAndTopPlace&&following
+ ColEnd @Yield @EndTableList&&following
+ Display @Yield @AfterLinePlace&&following
+ AfterLine @Yield @AfterLinePlace&&following
+ TryAfterLine @Yield @TryAfterLinePlace&&following
+ }
+ }
+
+ def @SendEncl into { @TableTarget }
+ right x
+ {
+ def @Enclose right x
+ {
+ @OnePg @Case {
+ No @Yield @Format x
+ Yes @Yield x
+ }
+ }
+
+ x
+ }
+
+ def @Send into { @TableTarget }
+ right x
+ {
+ x
+ }
+
+ def @EvenFullPageSend into { @EvenFullPagePlace&&following }
+ right x
+ {
+ @OneRow @HExpand x
+ }
+
+ def @EvenPageSend into { @EvenPagePlace&&following }
+ right x
+ {
+ @OneRow @HExpand x
+ }
+
+ def @RawTableVal
+ {
+ @OnePg.@CaptionState @Case
+ {
+ Yes.Below @Yield @OneRow { @Format @TableVal @DP @CaptionVal }
+ Yes.Above @Yield @OneRow { @CaptionVal @DP @Format @TableVal }
+ Yes.None @Yield @OneRow { @Format @TableVal }
+ No.Below @Yield { @Format @TableVal @DP @CaptionVal }
+ No.Above @Yield { @CaptionVal @DP @Format @TableVal }
+ No.None @Yield { @Format @TableVal }
+ }
+ }
+
+ def @NonRawTableVal
+ {
+ @OnePg.@CaptionState @Case
+ {
+ Yes.Below @Yield {
+ @Send @OneRow @HExpand { @Format @TableVal @DP @CaptionVal // @DupRunner}
+ }
+ Yes.Above @Yield {
+ @Send @OneRow @HExpand { @CaptionVal @DP @Format @TableVal // @DupRunner}
+ }
+ Yes.None @Yield {
+ @Send @OneRow @HExpand { @Format @TableVal // @DupRunner }
+ }
+ No.Below @Yield {
+ @SendEncl { @TableVal // @Send { @CaptionVal // @DupRunner } }
+ }
+ No.Above @Yield {
+ @Send { @CaptionVal // @SendEncl { @TableVal // @DupRunner } }
+ }
+ No.None @Yield {
+ @SendEncl { @TableVal // @DupRunner }
+ }
+ }
+ }
+
+ @Location @Case {
+ Raw @Yield @RawTableVal
+ Display @Yield { @NonRawTableVal &1rt }
+ EvenPageTop @Yield @EvenPageSend @NonRawTableVal
+ EvenFullPage @Yield @EvenFullPageSend @NonRawTableVal
+ else @Yield @NonRawTableVal
+ }
+ }
+
+
+ ###########################################################################
+ # #
+ # Floating floaters (exact clone of figure and table code above). #
+ # #
+ ###########################################################################
+
+ export @Tag prefix
+ def @FloaterPrefixMarker
+ named @Tag {}
+ named prefix {}
+ {
+ @Null
+ }
+
+ export @Tag count
+ def @FloaterCounterMarker
+ named @Tag {}
+ named count {}
+ {
+ @Null
+ }
+
+ def @RawFloaterNum right tag
+ {
+ @FloaterCounterMarker&&tag @Open { @Next count }
+ }
+
+ def @FloaterCounterIncrement
+ right tag
+ {
+ @FloaterCounterMarker&&preceding @Tagged tag
+ // @FloaterPrefixMarker&&preceding @Tagged tag
+ // @FloaterCounterMarker count { @RawFloaterNum tag }
+ // @NumberMarker @Tag { tag }
+ @Value { { @FloaterPrefixMarker&&tag @Open { prefix } }
+ @Join {@FloaterNumbers @Num @RawFloaterNum tag}
+ }
+ }
+
+ def @BeginFloaterCounter
+ left condition
+ right prefix
+ {
+ condition @Do {
+ @FloaterPrefixMarker prefix { prefix }
+ // @FloaterCounterMarker count { 0 }
+ }
+ }
+
+ def @EndFloaterList { @Galley //@MidGap @EndFloaterList }
+
+ def @Floater
+ named @Tag {}
+ named @Caption { dft }
+ named @ShortCaption { dft }
+ named @CaptionPos { @FloaterCaptionPos }
+ named @Format
+ named @II right x { |@DisplayIndent x | }
+ named @QQ right x { |@DisplayIndent x |@DisplayIndent }
+ named @CC right x { |0.5rt x | }
+ named @RR right x { |1.0rt x | }
+ right @Body { @FloaterFormat @Body }
+ named @InitialLanguage { @InitialLanguage }
+ named @BypassNumber { dft }
+ named @OnePage { dft }
+ named @Location { @FloaterLocation }
+ right @Body
+ {
+ def @FloaterNumber
+ {
+ @BypassNumber @Dft @NumberOf @Tag
+ }
+
+ def @ContentsCaption
+ {
+ @ShortCaption @Dft @Caption
+ }
+
+ def @OnePg
+ {
+ @OnePage @Case {
+ { No no } @Yield No
+ { Yes yes } @Yield Yes
+ dft @Yield { @Location @Case {
+ PageTop @Yield No
+ EvenPageTop @Yield No
+ FullPage @Yield No
+ EvenFullPage @Yield No
+ PageFoot @Yield Yes
+ ColTop @Yield No
+ ColFoot @Yield Yes
+ ColEnd @Yield No
+ Display @Yield Yes
+ AfterLine @Yield Yes
+ TryAfterLine @Yield Yes
+ Raw @Yield No
+ }
+ }
+ }
+ }
+
+ def @CaptionState
+ {
+ @Caption @Case {
+ dft @Yield None
+ else @Yield { @CaptionPos @Case {
+ { Below below } @Yield Below
+ { Above above } @Yield Above
+ } }
+ }
+ }
+
+ def @CaptionVal
+ {
+ @FloaterCaptionFont @Font @FloaterCaptionBreak @Break
+ { ||0.5rt @FloaterCaptionFormat
+ word { floater @WordVal @FloaterWord }
+ number { @FloaterNumber }
+ caption { @Caption }
+ }
+ }
+
+ def @FloaterVal
+ {
+ @InitialLanguage @Language
+ {
+ @MakeFloaterContents @FloaterContentsEntry
+ indent { 0f }
+ crosstag { @Tag }
+ number { @FloaterNumber }
+ title { @InitialLanguage @Language @ContentsCaption }
+ pagenum { @PageOf @Tag }
+ // @FloaterCounterIncrement @Tag
+ // @TitleMarker @Tag { @Tag } @Value { @Caption }
+ // @Body
+ // @PageMark @Tag
+ }
+ }
+
+ def @FloaterTarget
+ {
+ @Location @Case {
+ PageTop @Yield @PageTopPlace&&following
+ EvenPageTop @Yield @PageTopPlace&&following
+ FullPage @Yield @FullPagePlace&&following
+ EvenFullPage @Yield @FullPagePlace&&following
+ PageFoot @Yield @PageFootAndTopPlace&&following
+ ColTop @Yield @ColTopPlace&&following
+ ColFoot @Yield @ColFootAndTopPlace&&following
+ ColEnd @Yield @EndFloaterList&&following
+ Display @Yield @AfterLinePlace&&following
+ AfterLine @Yield @AfterLinePlace&&following
+ TryAfterLine @Yield @TryAfterLinePlace&&following
+ }
+ }
+
+ def @SendEncl into { @FloaterTarget }
+ right x
+ {
+ def @Enclose right x
+ {
+ @OnePg @Case {
+ No @Yield @Format x
+ Yes @Yield x
+ }
+ }
+
+ x
+ }
+
+ def @Send into { @FloaterTarget }
+ right x
+ {
+ x
+ }
+
+ def @EvenFullPageSend into { @EvenFullPagePlace&&following }
+ right x
+ {
+ @OneRow @HExpand x
+ }
+
+ def @EvenPageSend into { @EvenPagePlace&&following }
+ right x
+ {
+ @OneRow @HExpand x
+ }
+
+ def @RawFloaterVal
+ {
+ @OnePg.@CaptionState @Case
+ {
+ Yes.Below @Yield @OneRow { @Format @FloaterVal @DP @CaptionVal }
+ Yes.Above @Yield @OneRow { @CaptionVal @DP @Format @FloaterVal }
+ Yes.None @Yield @OneRow { @Format @FloaterVal }
+ No.Below @Yield { @Format @FloaterVal @DP @CaptionVal }
+ No.Above @Yield { @CaptionVal @DP @Format @FloaterVal }
+ No.None @Yield { @Format @FloaterVal }
+ }
+ }
+
+ def @NonRawFloaterVal
+ {
+ @OnePg.@CaptionState @Case
+ {
+ Yes.Below @Yield {
+ @Send @OneRow @HExpand { @Format @FloaterVal @DP @CaptionVal // @DupRunner}
+ }
+ Yes.Above @Yield {
+ @Send @OneRow @HExpand { @CaptionVal @DP @Format @FloaterVal // @DupRunner}
+ }
+ Yes.None @Yield {
+ @Send @OneRow @HExpand { @Format @FloaterVal // @DupRunner }
+ }
+ No.Below @Yield {
+ @SendEncl { @FloaterVal // @Send { @CaptionVal // @DupRunner } }
+ }
+ No.Above @Yield {
+ @Send { @CaptionVal // @SendEncl { @FloaterVal // @DupRunner } }
+ }
+ No.None @Yield {
+ @SendEncl { @FloaterVal // @DupRunner }
+ }
+ }
+ }
+
+ @Location @Case {
+ Raw @Yield @RawFloaterVal
+ Display @Yield { @NonRawFloaterVal &1rt }
+ EvenPageTop @Yield @EvenPageSend @NonRawFloaterVal
+ EvenFullPage @Yield @EvenFullPageSend @NonRawFloaterVal
+ else @Yield @NonRawFloaterVal
+ }
+ }
+
+
+ ###########################################################################
+ # #
+ # Glossary. #
+ # #
+ ###########################################################################
+
+ def @GlossaryList { @Galley //@GlossaryGap @GlossaryList }
+
+ def @GlossarySection into { @GlossaryPlace&&following }
+ right etc
+ {
+ // @GlossaryList
+ // etc
+ //1rt
+ }
+
+ def @DoGlossary into { @GlossaryList&&following }
+ left @Key
+ named name {}
+ named pnum {}
+ right body
+ {
+ @GlossaryFont @Font @GlossaryBreak @Break @GlossaryFormat
+ @Name { name }
+ @PageNum { pnum }
+ @Body { body }
+ }
+
+ def @Glossary
+ left name
+ named sortkey { dft }
+ right body
+ {
+ def key { sortkey @Dft name }
+
+ @MakeGlossary @Case {
+ { Yes yes } @Yield { @PageMark key &
+ key @DoGlossary name { name } pnum { @PageOf key } body
+ }
+ else @Yield @Null
+ }
+ }
+
+ def @InGlossary
+ right x
+ {
+ @MakeGlossary @Case {
+ { Yes yes } @Yield { @InGlossaryFormat @InGlossaryFont @Font x }
+ else @Yield x
+ }
+ }
+
+
+ ###########################################################################
+ # #
+ # Index. #
+ # #
+ ###########################################################################
+
+ def @IndexList { @Galley //1vx @IndexList }
+ def @BypassIndexList { @Galley //1vx @BypassIndexList }
+
+ def @IndexSection into { @IndexPlace&&following }
+ right etc
+ {
+ // @IndexBreak @Break @IndexList
+ // @IndexBreak @Break @BypassIndexList
+ // @ClearHeaderComponent
+ // etc
+ //1rt
+ }
+
+ def @DoIndex into { @IndexList&&following }
+ left @Key # sort key
+ named pgrange {} # page numbers, or empty if none
+ named depth {} # 0, 1, or 2 (@Index, @Sub, or @SubSub)
+ right body # body, not including any prefix
+ {
+ def @Body
+ {
+ depth @Case {
+ 0 @Yield @IndexFormat body
+ 1 @Yield @SubIndexFormat body
+ 2 @Yield @SubSubIndexFormat body
+ }
+ }
+
+ def @Enclose right x
+ {
+ @IndexCtd.depth @Case {
+
+ Yes.0 @Yield {
+ @ClearHeaderComponent
+ //1vx
+ x
+ //1vx
+ 1vx @SetHeaderComponent {
+ @Body @IndexCtdFormat {continued @WordVal @IndexCtdWord}
+ }
+ //1vx
+ 1vx @BeginHeaderComponent (unused)
+ }
+
+ Yes.1 @Yield {
+ @EndHeaderComponent
+ //1vx
+ x
+ //1vx
+ 1vx @BeginHeaderComponent {
+ @Body @IndexCtdFormat {continued @WordVal @IndexCtdWord}
+ }
+ }
+
+ else @Yield x
+
+ }
+ }
+
+ def @Merge left lpart right rpart
+ {
+ { lpart @Rump { lpart @Meld rpart } } @Case
+ {
+ "" @Yield lpart
+ else @Yield { { lpart{@OneCol ,} } @Meld rpart }
+ }
+
+ }
+
+ @IndexFont @Font @IndexBreak @Break pgrange @Case {
+ "" @Yield { @Body &"0.03fu" {} }
+ else @Yield { @Body &"0.03fu" {}{@OneCol ,} pgrange }
+
+ }
+ }
+
+ def @RawIndex
+ left lpart
+ named depth { 0 }
+ right rpart
+ {
+ @MakeIndex @Case {
+ Yes @Yield { lpart @DoIndex depth { depth } rpart }
+ else @Yield @Null
+ }
+ }
+
+ macro @RawSubIndex { @RawIndex depth { 1 } }
+ macro @RawSubSubIndex { @RawIndex depth { 2 } }
+
+ def @Index
+ left lpart
+ named @Tag {}
+ named pnformat right @PageNum { Ordinary }
+ named depth { 0 }
+ named to {}
+ right rpart
+ {
+ def @PgMk right tag
+ {
+ tag @CrossLink @PageOf tag
+ }
+
+ def @Fmt right x
+ {
+ {pnformat x} @Case
+ {
+ Ordinary @Yield @IndexTypeOrdinary x
+ Main @Yield @IndexTypeMain x
+ Special @Yield @IndexTypeSpecial x
+ else @Yield {pnformat x}
+ }
+ }
+
+ def @PgRange
+ {
+ to @Case
+ {
+ "" @Yield @PgMk @Tag
+ else @Yield {
+ { @PageOf @Tag } @Case
+ {
+ { @PageOf to } @Yield { @PgMk @Tag }
+ else @Yield { {@PgMk @Tag} @IndexRangeFormat {@PgMk to} }
+ }
+ }
+ }
+ }
+
+ @MakeIndex @Case {
+ Yes @Yield {
+ @PageMark @Tag &
+ lpart @DoIndex depth { depth } pgrange { @Fmt @PgRange } rpart }
+ else @Yield @Null
+ }
+ }
+
+ macro @SubIndex { @Index depth { 1 } }
+ macro @SubSubIndex { @Index depth { 2 } }
+
+ def @IndexBlanks
+ {
+ b @RawIndex {} c @RawIndex {} d @RawIndex {} e @RawIndex {}
+ f @RawIndex {} g @RawIndex {} h @RawIndex {} i @RawIndex {}
+ j @RawIndex {} k @RawIndex {} l @RawIndex {} m @RawIndex {}
+ n @RawIndex {} o @RawIndex {} p @RawIndex {} q @RawIndex {}
+ r @RawIndex {} s @RawIndex {} t @RawIndex {} u @RawIndex {}
+ v @RawIndex {} w @RawIndex {} x @RawIndex {} y @RawIndex {}
+ z @RawIndex {}
+ }
+
+ def @IndexSpacer
+ left lpart
+ named above { @IndexSpacerAbove }
+ named below { @IndexSpacerBelow }
+ named font { @IndexSpacerFont }
+ named format right @Body { @IndexSpacerFormat @Body }
+ right rpart
+ {
+ def @Send into { @IndexList&&following }
+ right @Key
+ {
+ @ClearHeaderComponent
+ //
+ //above
+ @CNP
+ @OneRow { font @Font format rpart //below }
+ }
+
+ @MakeIndex @Case {
+ Yes @Yield @Send lpart
+ else @Yield @Null
+ }
+ }
+
+ macro @InitialIndexSpacer { @IndexSpacer above { 0i } }
+
+ def @IndexLetters
+ {
+ a @InitialIndexSpacer A
+ b @IndexSpacer B c @IndexSpacer C d @IndexSpacer D e @IndexSpacer E
+ f @IndexSpacer F g @IndexSpacer G h @IndexSpacer H i @IndexSpacer I
+ j @IndexSpacer J k @IndexSpacer K l @IndexSpacer L m @IndexSpacer M
+ n @IndexSpacer N o @IndexSpacer O p @IndexSpacer P q @IndexSpacer Q
+ r @IndexSpacer R s @IndexSpacer S t @IndexSpacer T u @IndexSpacer U
+ v @IndexSpacer V w @IndexSpacer W x @IndexSpacer X y @IndexSpacer Y
+ z @IndexSpacer Z
+ }
+
+ def @BypassBeginIndexPlace { @Galley }
+
+ def @BypassBeginIndex force into { @BypassBeginIndexPlace&&preceding } {}
+
+ def @BypassRawIndex force into { @BypassIndexList&&preceding }
+ named indent { 0f }
+ right x
+ {
+ &indent x
+ }
+
+ def @BypassEndIndex { @Null }
+
+
+ ###########################################################################
+ # #
+ # IndexA. #
+ # #
+ ###########################################################################
+
+ def @IndexAList { @Galley //1vx @IndexAList }
+ def @BypassIndexAList { @Galley //1vx @BypassIndexAList }
+
+ def @IndexASection into { @IndexAPlace&&following }
+ right etc
+ {
+ // @IndexABreak @Break @IndexAList
+ // @IndexABreak @Break @BypassIndexAList
+ // @ClearHeaderComponent
+ // etc
+ //1rt
+ }
+
+ def @DoIndexA into { @IndexAList&&following }
+ left @Key # sort key
+ named pgrange {} # page numbers, or empty if none
+ named depth {} # 0, 1, or 2 (@IndexA, @Sub, or @SubSub)
+ right body # body, not including any prefix
+ {
+ def @Body
+ {
+ depth @Case {
+ 0 @Yield @IndexAFormat body
+ 1 @Yield @SubIndexAFormat body
+ 2 @Yield @SubSubIndexAFormat body
+ }
+ }
+
+ def @Enclose right x
+ {
+ @IndexACtd.depth @Case {
+
+ Yes.0 @Yield {
+ @ClearHeaderComponent
+ //1vx
+ x
+ //1vx
+ 1vx @SetHeaderComponent {
+ @Body @IndexACtdFormat {continued @WordVal @IndexACtdWord}
+ }
+ //1vx
+ 1vx @BeginHeaderComponent (unused)
+ }
+
+ Yes.1 @Yield {
+ @EndHeaderComponent
+ //1vx
+ x
+ //1vx
+ 1vx @BeginHeaderComponent {
+ @Body @IndexACtdFormat {continued @WordVal @IndexACtdWord}
+ }
+ }
+
+ else @Yield x
+
+ }
+ }
+
+ def @Merge left lpart right rpart
+ {
+ { lpart @Rump { lpart @Meld rpart } } @Case
+ {
+ "" @Yield lpart
+ else @Yield { { lpart{@OneCol ,} } @Meld rpart }
+ }
+
+ }
+
+ @IndexAFont @Font @IndexABreak @Break pgrange @Case {
+ "" @Yield { @Body &"0.03fu" {} }
+ else @Yield { @Body &"0.03fu" {}{@OneCol ,} pgrange }
+
+ }
+ }
+
+ def @RawIndexA
+ left lpart
+ named depth { 0 }
+ right rpart
+ {
+ @MakeIndexA @Case {
+ Yes @Yield { lpart @DoIndexA depth { depth } rpart }
+ else @Yield @Null
+ }
+ }
+
+ macro @RawSubIndexA { @RawIndexA depth { 1 } }
+ macro @RawSubSubIndexA { @RawIndexA depth { 2 } }
+
+ def @IndexA
+ left lpart
+ named @Tag {}
+ named pnformat right @PageNum { Ordinary }
+ named depth { 0 }
+ named to {}
+ right rpart
+ {
+ def @PgMk right tag
+ {
+ tag @CrossLink @PageOf tag
+ }
+
+ def @Fmt right x
+ {
+ {pnformat x} @Case
+ {
+ Ordinary @Yield @IndexATypeOrdinary x
+ Main @Yield @IndexATypeMain x
+ Special @Yield @IndexATypeSpecial x
+ else @Yield {pnformat x}
+ }
+ }
+
+ def @PgRange
+ {
+ to @Case
+ {
+ "" @Yield @PgMk @Tag
+ else @Yield {
+ { @PageOf @Tag } @Case
+ {
+ { @PageOf to } @Yield { @PgMk @Tag }
+ else @Yield { {@PgMk @Tag} @IndexARangeFormat {@PgMk to} }
+ }
+ }
+ }
+ }
+
+ @MakeIndexA @Case {
+ Yes @Yield {
+ @PageMark @Tag &
+ lpart @DoIndexA depth { depth } pgrange { @Fmt @PgRange } rpart }
+ else @Yield @Null
+ }
+ }
+
+ macro @SubIndexA { @IndexA depth { 1 } }
+ macro @SubSubIndexA { @IndexA depth { 2 } }
+
+ def @IndexABlanks
+ {
+ b @RawIndexA {} c @RawIndexA {} d @RawIndexA {} e @RawIndexA {}
+ f @RawIndexA {} g @RawIndexA {} h @RawIndexA {} i @RawIndexA {}
+ j @RawIndexA {} k @RawIndexA {} l @RawIndexA {} m @RawIndexA {}
+ n @RawIndexA {} o @RawIndexA {} p @RawIndexA {} q @RawIndexA {}
+ r @RawIndexA {} s @RawIndexA {} t @RawIndexA {} u @RawIndexA {}
+ v @RawIndexA {} w @RawIndexA {} x @RawIndexA {} y @RawIndexA {}
+ z @RawIndexA {}
+ }
+
+ def @IndexASpacer
+ left lpart
+ named above { @IndexASpacerAbove }
+ named below { @IndexASpacerBelow }
+ named font { @IndexASpacerFont }
+ named format right @Body { @IndexASpacerFormat @Body }
+ right rpart
+ {
+ def @Send into { @IndexAList&&following }
+ right @Key
+ {
+ @ClearHeaderComponent
+ //
+ //above
+ @CNP
+ @OneRow { font @Font format rpart //below }
+ }
+
+ @MakeIndexA @Case {
+ Yes @Yield @Send lpart
+ else @Yield @Null
+ }
+ }
+
+ macro @InitialIndexASpacer { @IndexASpacer above { 0i } }
+
+ def @IndexALetters
+ {
+ a @InitialIndexASpacer A
+ b @IndexASpacer B c @IndexASpacer C d @IndexASpacer D e @IndexASpacer E
+ f @IndexASpacer F g @IndexASpacer G h @IndexASpacer H i @IndexASpacer I
+ j @IndexASpacer J k @IndexASpacer K l @IndexASpacer L m @IndexASpacer M
+ n @IndexASpacer N o @IndexASpacer O p @IndexASpacer P q @IndexASpacer Q
+ r @IndexASpacer R s @IndexASpacer S t @IndexASpacer T u @IndexASpacer U
+ v @IndexASpacer V w @IndexASpacer W x @IndexASpacer X y @IndexASpacer Y
+ z @IndexASpacer Z
+ }
+
+ def @BypassBeginIndexAPlace { @Galley }
+
+ def @BypassBeginIndexA force into { @BypassBeginIndexAPlace&&preceding } {}
+
+ def @BypassRawIndexA force into { @BypassIndexAList&&preceding }
+ named indent { 0f }
+ right x
+ {
+ &indent x
+ }
+
+ def @BypassEndIndexA { @Null }
+
+
+ ###########################################################################
+ # #
+ # IndexB. #
+ # #
+ ###########################################################################
+
+ def @IndexBList { @Galley //1vx @IndexBList }
+ def @BypassIndexBList { @Galley //1vx @BypassIndexBList }
+
+ def @IndexBSection into { @IndexBPlace&&following }
+ right etc
+ {
+ // @IndexBBreak @Break @IndexBList
+ // @IndexBBreak @Break @BypassIndexBList
+ // @ClearHeaderComponent
+ // etc
+ //1rt
+ }
+
+ def @DoIndexB into { @IndexBList&&following }
+ left @Key # sort key
+ named pgrange {} # page numbers, or empty if none
+ named depth {} # 0, 1, or 2 (@IndexB, @Sub, or @SubSub)
+ right body # body, not including any prefix
+ {
+ def @Body
+ {
+ depth @Case {
+ 0 @Yield @IndexBFormat body
+ 1 @Yield @SubIndexBFormat body
+ 2 @Yield @SubSubIndexBFormat body
+ }
+ }
+
+ def @Enclose right x
+ {
+ @IndexBCtd.depth @Case {
+
+ Yes.0 @Yield {
+ @ClearHeaderComponent
+ //1vx
+ x
+ //1vx
+ 1vx @SetHeaderComponent {
+ @Body @IndexBCtdFormat {continued @WordVal @IndexBCtdWord}
+ }
+ //1vx
+ 1vx @BeginHeaderComponent (unused)
+ }
+
+ Yes.1 @Yield {
+ @EndHeaderComponent
+ //1vx
+ x
+ //1vx
+ 1vx @BeginHeaderComponent {
+ @Body @IndexBCtdFormat {continued @WordVal @IndexBCtdWord}
+ }
+ }
+
+ else @Yield x
+
+ }
+ }
+
+ def @Merge left lpart right rpart
+ {
+ { lpart @Rump { lpart @Meld rpart } } @Case
+ {
+ "" @Yield lpart
+ else @Yield { { lpart{@OneCol ,} } @Meld rpart }
+ }
+
+ }
+
+ @IndexBFont @Font @IndexBBreak @Break pgrange @Case {
+ "" @Yield { @Body &"0.03fu" {} }
+ else @Yield { @Body &"0.03fu" {}{@OneCol ,} pgrange }
+
+ }
+ }
+
+ def @RawIndexB
+ left lpart
+ named depth { 0 }
+ right rpart
+ {
+ @MakeIndexB @Case {
+ Yes @Yield { lpart @DoIndexB depth { depth } rpart }
+ else @Yield @Null
+ }
+ }
+
+ macro @RawSubIndexB { @RawIndexB depth { 1 } }
+ macro @RawSubSubIndexB { @RawIndexB depth { 2 } }
+
+ def @IndexB
+ left lpart
+ named @Tag {}
+ named pnformat right @PageNum { Ordinary }
+ named depth { 0 }
+ named to {}
+ right rpart
+ {
+ def @PgMk right tag
+ {
+ tag @CrossLink @PageOf tag
+ }
+
+ def @Fmt right x
+ {
+ {pnformat x} @Case
+ {
+ Ordinary @Yield @IndexBTypeOrdinary x
+ Main @Yield @IndexBTypeMain x
+ Special @Yield @IndexBTypeSpecial x
+ else @Yield {pnformat x}
+ }
+ }
+
+ def @PgRange
+ {
+ to @Case
+ {
+ "" @Yield @PgMk @Tag
+ else @Yield {
+ { @PageOf @Tag } @Case
+ {
+ { @PageOf to } @Yield { @PgMk @Tag }
+ else @Yield { {@PgMk @Tag} @IndexBRangeFormat {@PgMk to} }
+ }
+ }
+ }
+ }
+
+ @MakeIndexB @Case {
+ Yes @Yield {
+ @PageMark @Tag &
+ lpart @DoIndexB depth { depth } pgrange { @Fmt @PgRange } rpart }
+ else @Yield @Null
+ }
+ }
+
+ macro @SubIndexB { @IndexB depth { 1 } }
+ macro @SubSubIndexB { @IndexB depth { 2 } }
+
+ def @IndexBBlanks
+ {
+ b @RawIndexB {} c @RawIndexB {} d @RawIndexB {} e @RawIndexB {}
+ f @RawIndexB {} g @RawIndexB {} h @RawIndexB {} i @RawIndexB {}
+ j @RawIndexB {} k @RawIndexB {} l @RawIndexB {} m @RawIndexB {}
+ n @RawIndexB {} o @RawIndexB {} p @RawIndexB {} q @RawIndexB {}
+ r @RawIndexB {} s @RawIndexB {} t @RawIndexB {} u @RawIndexB {}
+ v @RawIndexB {} w @RawIndexB {} x @RawIndexB {} y @RawIndexB {}
+ z @RawIndexB {}
+ }
+
+ def @IndexBSpacer
+ left lpart
+ named above { @IndexBSpacerAbove }
+ named below { @IndexBSpacerBelow }
+ named font { @IndexBSpacerFont }
+ named format right @Body { @IndexBSpacerFormat @Body }
+ right rpart
+ {
+ def @Send into { @IndexBList&&following }
+ right @Key
+ {
+ @ClearHeaderComponent
+ //
+ //above
+ @CNP
+ @OneRow { font @Font format rpart //below }
+ }
+
+ @MakeIndexB @Case {
+ Yes @Yield @Send lpart
+ else @Yield @Null
+ }
+ }
+
+ macro @InitialIndexBSpacer { @IndexBSpacer above { 0i } }
+
+ def @IndexBLetters
+ {
+ a @InitialIndexBSpacer A
+ b @IndexBSpacer B c @IndexBSpacer C d @IndexBSpacer D e @IndexBSpacer E
+ f @IndexBSpacer F g @IndexBSpacer G h @IndexBSpacer H i @IndexBSpacer I
+ j @IndexBSpacer J k @IndexBSpacer K l @IndexBSpacer L m @IndexBSpacer M
+ n @IndexBSpacer N o @IndexBSpacer O p @IndexBSpacer P q @IndexBSpacer Q
+ r @IndexBSpacer R s @IndexBSpacer S t @IndexBSpacer T u @IndexBSpacer U
+ v @IndexBSpacer V w @IndexBSpacer W x @IndexBSpacer X y @IndexBSpacer Y
+ z @IndexBSpacer Z
+ }
+
+ def @BypassBeginIndexBPlace { @Galley }
+
+ def @BypassBeginIndexB force into { @BypassBeginIndexBPlace&&preceding } {}
+
+ def @BypassRawIndexB force into { @BypassIndexBList&&preceding }
+ named indent { 0f }
+ right x
+ {
+ &indent x
+ }
+
+ def @BypassEndIndexB { @Null }
+
+
+ ###########################################################################
+ # #
+ # Colophon. #
+ # #
+ ###########################################################################
+
+ def @ColophonList { @Galley //1vx @ColophonList }
+
+ def @ColophonSection into { @ColophonPlace&&following }
+ right etc
+ {
+ // @ColophonBreak @Break @ColophonFont @Font @ColophonList
+ // etc
+ //1rt
+ }
+
+
+ ###########################################################################
+ # #
+ # @LargeScaleStructure #
+ # #
+ # The prototype for the value of each large-scale structure symbol #
+ # (@Chapter, @Section, etc.) #
+ # #
+ ###########################################################################
+
+ def @LargeScaleStructure
+ named tag {} # tag of this large-scale structure sym
+ named type {} # MajorIntro, Major, VeryMajor, or Minor
+ named initiallanguage {} # its language
+ named title {} # its full title
+ named runningtitle { dft } # its running title Jeffk 12/11/02 from {}
+ named aboveheadinggap { 0f } # gap above heading
+ named headingfont {} # its heading font
+ named headingbreak {} # its heading break
+ named headingformat # its heading format
+ left @Num right @Body {}
+ named headingtext { @Null } # heading text
+ named incontents { No } # entry in table of contents required
+ named contentsindent { 0f } # only used if type is Minor
+ named word {}
+ named numbers { None }
+ named attachnum {} # only if numbers is not None
+ named retrievenum {} # only if numbers is not None
+ named bypassnumber {} # only if numbers is not None, or VeryMajor
+ named prefix {} # prefix of number of this symbol
+ named pnprefix {} # prefix for page numbers of this sym
+ named majornum { dft }
+ named majortitle { dft }
+ named minornum { dft }
+ named minortitle { dft }
+ named intheorems { No }
+ named indisplays { No }
+ named infigures { No }
+ named intables { No }
+ named infloaters { No }
+ named inrunners { No }
+ named sendheader right @Body {}
+ named innergap {}
+ named endifmajor right innergap {
+ @EndFigureList
+ //innergap @EndNoteList 1
+ //innergap @ChapRefSection
+ }
+ named wantindefinite { No }
+ named newpage { No }
+ right @Body
+ {
+
+ def @ShortNum
+ {
+ numbers @Then {
+ bypassnumber @Dft {
+ prefix @Join { numbers @Num retrievenum }
+ }
+ }
+ }
+
+ def @LongNum
+ {
+ numbers @Then {
+ # initiallanguage @Language { word @NumSep @ShortNum }
+ @ShortNum @Case {
+ "" @Yield { } # numberless: don't produce `word'
+ else @Yield {
+ initiallanguage @Language { word @NumSep @ShortNum }
+ }
+ }
+ }
+ }
+
+ def @ShortTitle
+ {
+ initiallanguage @Language { runningtitle @Dft title }
+ }
+
+ def @IfMajor right x
+ {
+ type @Case {
+ { MajorIntro Major ExtraMajor ExtraMajorIntro } @Yield x
+ else @Yield @Null
+ }
+ }
+
+ def @StartIfMajor {
+ type @Case {
+ { MajorIntro Major ExtraMajor ExtraMajorIntro VeryMajor } @Yield Start
+ else @Yield NonStart
+ }
+ }
+
+ def @Run right start
+ {
+ inrunners @Do type @Case {
+
+ { Major MajorIntro } @Yield {
+ start @Runner
+ @MajorNum { majornum @Dft @LongNum }
+ @MajorTitle { majortitle @Dft @ShortTitle }
+ @MinorNum {}
+ @MinorTitle {}
+ @Owner { tag }
+ @Prefix { pnprefix @Join @ShortNum }
+ }
+
+ { ExtraMajor ExtraMajorIntro } @Yield {
+ start @Runner
+ @MajorNum { majornum @Dft @LongNum }
+ @MajorTitle { majortitle @Dft @ShortTitle }
+ @MinorNum { majornum @Dft @LongNum }
+ @MinorTitle { majortitle @Dft @ShortTitle }
+ @Owner { tag }
+ @Prefix { pnprefix @Join @ShortNum }
+ }
+
+ { VeryMajor } @Yield {
+ start @Runner
+ @MajorNum { majornum @Dft @LongNum }
+ @MajorTitle { majortitle @Dft @ShortTitle }
+ @MinorNum {}
+ @MinorTitle {}
+ @Owner { tag }
+ @Prefix {}
+ }
+
+ Minor @Yield {
+ start @Runner
+ @MajorNum { majornum @Dft @LongNum }
+ @MajorTitle { majortitle @Dft @ShortTitle }
+ @MinorNum { minornum @Dft @LongNum }
+ @MinorTitle { minortitle @Dft @ShortTitle }
+ @Owner { tag }
+ @Prefix { pnprefix @Join @ShortNum }
+ }
+ }
+ }
+
+ def @ContentsStuff
+ {
+ incontents.type @Case {
+
+ Yes.Minor @Yield {
+ incontents @ContentsEntry
+ indent { contentsindent }
+ crosstag { tag }
+ number { @LongNum }
+ title { initiallanguage @Language title }
+ pagenum { @PageOf tag }
+ }
+
+ { Yes.Major Yes.MajorIntro Yes.ExtraMajor Yes.ExtraMajorIntro } @Yield {
+ incontents @MajorContentsEntry
+ indent { contentsindent }
+ crosstag { tag }
+ number { @LongNum }
+ title { initiallanguage @Language title }
+ pagenum { @PageOf tag }
+ }
+
+ { Yes.VeryMajor } @Yield {
+ incontents @VeryMajorContentsEntry
+ indent { contentsindent }
+ title { initiallanguage @Language {
+ bypassnumber @ColonSep title } }
+ }
+
+ else @Yield @Null
+ }
+ }
+
+ def @MinorTitle right x
+ {
+ newpage @Case {
+ { No no } @Yield @Protect {@LongNum headingformat title}
+ { Yes yes } @Yield { @Null @NP @LongNum headingformat title }
+ }
+ }
+
+ def @Heading
+ {
+
+ type @Case {
+
+ Minor @Yield {
+ headingfont @Font headingbreak @Break
+ @MinorTitle {@LongNum headingformat title}
+ // @Run @StartIfMajor
+ // @PageMark tag
+ @DP headingtext
+ }
+
+ { Major MajorIntro ExtraMajor ExtraMajorIntro } @Yield {
+ sendheader {
+ //aboveheadinggap
+ headingfont @Font
+ headingbreak @Break { @LongNum headingformat title }
+ // @Run @StartIfMajor
+ // @PageMark tag
+ @DP headingtext
+ }
+ }
+
+ { VeryMajor } @Yield { sendheader {
+ //aboveheadinggap
+ headingfont @Font
+ headingbreak @Break { bypassnumber headingformat title }
+ // @Run @StartIfMajor
+ // @PageMark tag
+ @DP headingtext
+ }
+ }
+ }
+ }
+
+ initiallanguage @Language {
+ @Heading
+ // wantindefinite @Case {
+ Yes @Yield @Null
+ No @Yield ""
+ }
+ // numbers @Do {
+ attachnum & @NumberMarker @Tag { tag } @Value { @ShortNum }
+ }
+ // @IfMajor { @FootNoteThrough @Do @BeginFootNoteCounter }
+ # // @Run @StartIfMajor
+ // @ContentsStuff
+ // @TitleMarker @Tag { tag } @Value { title }
+ // intheorems @BeginAllCounters @ShortNum
+ // indisplays @BeginDisplayCounter @ShortNum
+ // infigures @BeginFigureCounter @ShortNum
+ // intables @BeginTableCounter @ShortNum
+ // infloaters @BeginFloaterCounter @ShortNum
+ // @Body
+ //innergap @IfMajor endifmajor innergap
+ // @Run NonStart
+ }
+ }
+
+@End @DocumentSetup
diff --git a/include/include/eiffel b/include/include/eiffel
new file mode 100644
index 0000000..4fc89ea
--- /dev/null
+++ b/include/include/eiffel
@@ -0,0 +1,118 @@
+###############################################################################
+# #
+# Lout setup file for Eiffel program printing #
+# #
+# Version 3.0 #
+# Jeffrey H. Kingston #
+# 5 April 2000 #
+# #
+# This file has been placed in the public domain by its author. #
+# #
+###############################################################################
+
+
+###############################################################################
+# #
+# @SysInclude line #
+# #
+# This line causes Lout to read the definitions for this programming #
+# language, and should not be touched. #
+# #
+###############################################################################
+
+@SysInclude { eiffelf }
+
+
+###############################################################################
+# #
+# @Use clause #
+# #
+# To change the default value of any option, delete the # at the start of #
+# its line and change the value between braces. #
+# #
+###############################################################################
+
+@Use { @EiffelSetup
+ # pipe { } # pipe source through this
+ # numbered { No } # No, Yes, or a line number
+ # numberedblanks { Yes } # No or Yes
+ # style { varying @OrIfPlain fixed } # fixed, varying, or symbol
+
+ # the following options apply when style is "fixed"
+
+ # fixedfont { Courier } # font family
+ # fixedsize { -1.0p } # font size
+ # fixedline { 1.0vx } # line-space
+ # fixedblanklinescale { 1.0 } # blank-line scale
+ # fixedspace { lout } # spacing mode
+ # fixedtabin { 8 } # tab interval
+ # fixedtabout { 8s } # tab width
+
+ # fixedidentifiers { Base } # identifier face
+ # fixedkeywords { Base } # keyword face
+ # fixedoperators { Base } # operator face
+ # fixednumbers { Base } # number face
+ # fixedstrings { Base } # string face
+ # fixedcomments { Base } # comment face
+ # fixedlinenumbers { Base } # line numbers face
+
+ # fixedidentifiersformat { @Body } # identifiers format
+ # fixedkeywordsformat { @Body } # keywords format
+ # fixedoperatorsformat { @Body } # operators format
+ # fixednumbersformat { @Body } # numbers format
+ # fixedstringsformat { @Body } # strings format
+ # fixedcommentsformat { @Body } # comments format
+ # fixedlinenumbersformat { @Body } # line numbers format
+
+ # the following options apply when style is "varying"
+
+ # varyingfont { } # font family
+ # varyingsize { 1.0f } # font size
+ # varyingline { 1.0vx } # line-space
+ # varyingblanklinescale { 1.0 } # blank-line scale
+ # varyingspace { lout } # spacing mode
+ # varyingtabin { 8 } # tab interval
+ # varyingtabout { 3f } # tab width
+
+ # varyingidentifiers { Slope } # identifier face
+ # varyingkeywords { Bold } # keyword face
+ # varyingoperators { Base } # operator face
+ # varyingnumbers { Base } # number face
+ # varyingstrings { Slope } # string face
+ # varyingcomments { Base } # comment face
+ # varyinglinenumbers { Base } # line numbers face
+
+ # varyingidentifiersformat { @Body } # identifiers format
+ # varyingkeywordsformat { @Body } # keywords format
+ # varyingoperatorsformat { @Body } # operators format
+ # varyingnumbersformat { @Body } # numbers format
+ # varyingstringsformat { @Body } # strings format
+ # varyingcommentsformat { @Body } # comments format
+ # varyinglinenumbersformat { @Body } # line numbers format
+
+ # the following options apply when style is "symbol"
+
+ # symbolfont { } # font family
+ # symbolsize { 1.0f } # font size
+ # symbolline { 1.0vx } # line-space
+ # symbolblanklinescale { 1.0 } # blank-line scale
+ # symbolspace { lout } # spacing mode
+ # symboltabin { 8 } # tab interval
+ # symboltabout { 3f } # tab width
+
+ # symbolidentifiers { Slope } # identifier face
+ # symbolkeywords { Bold } # keyword face
+ # symboloperators { Base } # operator face
+ # symbolnumbers { Base } # number face
+ # symbolstrings { Slope } # string face
+ # symbolcomments { Base } # comment face
+ # symbollinenumbers { Base } # line numbers face
+
+ # symbolidentifiersformat { @Body } # identifiers format
+ # symbolkeywordsformat { @Body } # keywords format
+ # symboloperatorsformat { @Body } # operators format
+ # symbolnumbersformat { @Body } # numbers format
+ # symbolstringsformat { @Body } # strings format
+ # symbolcommentsformat { @Body } # comments format
+ # symbollinenumbersformat { @Body } # line numbers format
+}
diff --git a/include/include/eiffelf b/include/include/eiffelf
new file mode 100644
index 0000000..b76b6bc
--- /dev/null
+++ b/include/include/eiffelf
@@ -0,0 +1,446 @@
+
+###############################################################################
+# #
+# Lout @EiffelSetup package for formatting Eiffel programs #
+# #
+# Version 3.0 #
+# Jeffrey H. Kingston #
+# 5 April 2000 #
+# #
+# This package uses a filtered body parameter to convert program source #
+# code into Lout source. The filter program is prg2lout, which is #
+# distributed with Lout and should be compiled and installed wherever #
+# Lout itself is. #
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either Version 3, or (at your option) #
+# any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA #
+# #
+# As a special exception, when this file is read by Lout when processing #
+# a Lout source document, you may use the result without restriction. #
+# #
+###############################################################################
+
+export @Eiffel
+def @EiffelSetup
+ named pipe { } # pipe through this first
+ named numbered { No } # want lines numbered?
+ named blanknumbered { Yes } # blank lines numbered?
+ named style
+ named @OrIfPlain left x right y
+ { @BackEnd @Case { PlainText @Yield y else @Yield x } }
+ { varying @OrIfPlain fixed } # print style
+
+ # the following options apply when style is "fixed"
+ named fixedfont { Courier }# font family
+ named fixedsize { -1.0p } # font size
+ named fixedline { 1.0vx } # line-space
+ named fixedblanklinescale { 1.0 } # blank-line scale
+ named fixedspace { lout } # spacing mode
+ named fixedtabin { 8 } # tab interval
+ named fixedtabout { 8s } # tab width
+
+ named fixedidentifiers { Base } # identifier face
+ named fixedkeywords { Base } # keyword face
+ named fixedoperators { Base } # operator face
+ named fixednumbers { Base } # number face
+ named fixedstrings { Base } # string face
+ named fixedcomments { Base } # comment face
+ named fixedlinenumbers { Base } # line numbers face
+
+ named fixedidentifiersformat right @Body { @Body } # identifier format
+ named fixedkeywordsformat right @Body { @Body } # keyword format
+ named fixedoperatorsformat right @Body { @Body } # operators format
+ named fixednumbersformat right @Body { @Body } # number format
+ named fixedstringsformat right @Body { @Body } # string format
+ named fixedcommentsformat right @Body { @Body } # comment format
+ named fixedlinenumbersformat right @Body { @Body } # line nums format
+
+ # the following options apply when style is "varying"
+ named varyingfont { } # font family
+ named varyingsize { 1.0f } # font size
+ named varyingline { 1.0vx } # line-space
+ named varyingblanklinescale { 1.0 } # blank-line scale
+ named varyingspace { lout } # spacing mode
+ named varyingtabin { 8 } # tab interval
+ named varyingtabout { 3f } # tab width
+
+ named varyingidentifiers { Slope } # identifier face
+ named varyingkeywords { Bold } # keyword face
+ named varyingoperators { Base } # operator face
+ named varyingnumbers { Base } # number face
+ named varyingstrings { Slope } # string face
+ named varyingcomments { Base } # comment face
+ named varyinglinenumbers { Base } # line numbers face
+
+ named varyingidentifiersformat right @Body { @Body } # identifier format
+ named varyingkeywordsformat right @Body { @Body } # keyword format
+ named varyingoperatorsformat right @Body { @Body } # operators format
+ named varyingnumbersformat right @Body { @Body } # number format
+ named varyingstringsformat right @Body { @Body } # string format
+ named varyingcommentsformat right @Body { @Body } # comment format
+ named varyinglinenumbersformat right @Body { @Body } # line nums format
+
+ # the following options apply when style is "symbol"
+ named symbolfont { } # font family
+ named symbolsize { 1.0f } # font size
+ named symbolline { 1.0vx } # line-space
+ named symbolblanklinescale { 1.0 } # blank-line scale
+ named symbolspace { lout } # spacing mode
+ named symboltabin { 8 } # tab interval
+ named symboltabout { 3f } # tab width
+
+ named symbolidentifiers { Slope } # identifier face
+ named symbolkeywords { Bold } # keyword face
+ named symboloperators { Base } # operator face
+ named symbolnumbers { Base } # number face
+ named symbolstrings { Slope } # string face
+ named symbolcomments { Base } # comment face
+ named symbollinenumbers { Base } # line numbers face
+
+ named symbolidentifiersformat right @Body { @Body } # identifier format
+ named symbolkeywordsformat right @Body { @Body } # keyword format
+ named symboloperatorsformat right @Body { @Body } # operators format
+ named symbolnumbersformat right @Body { @Body } # number format
+ named symbolstringsformat right @Body { @Body } # string format
+ named symbolcommentsformat right @Body { @Body } # comment format
+ named symbollinenumbersformat right @Body { @Body } # line nums format
+
+@Begin
+
+ export
+
+ @PI @PK @PO @PN @PS @PC @PL @PA @PM @PD
+ @A "$>"
+
+ def @Eiffel
+ named style { style } # style
+ named numbered { numbered } # want numbered lines?
+ named blanknumbered { blanknumbered } # numbered blank lines?
+ named pipe { pipe } # pipe through this first
+ named font { dft } # font family
+ named size { dft } # font size
+ named line { dft } # line-space
+ named blanklinescale { dft } # blank-line scale
+ named space { dft } # spacing mode
+ named tabin { dft } # tab interval
+ named tabout { dft } # tab width
+ named identifiers { dft } # ident. font
+ named keywords { dft } # keyword font
+ named operators { dft } # operator font
+ named numbers { dft } # number font
+ named strings { dft } # string font
+ named comments { dft } # comment font
+ named linenumbers { dft } # line numbers font
+ body @Body # filtered, see below
+ @Begin
+
+ def @Test # returns x unless x is dft
+ left x
+ named iffixed {}
+ named ifvarying {}
+ named ifsymbol {}
+ {
+ x @Case {
+ dft @Yield {
+ style @Case {
+ fixed @Yield { iffixed }
+ varying @Yield { ifvarying }
+ symbol @Yield { ifsymbol }
+ }
+ }
+ else @Yield x
+ }
+ }
+
+
+ def @Else # returns x, or y if x is dft
+ left x
+ right y
+ {
+ x @Case {
+ dft @Yield y
+ else @Yield x
+ }
+ }
+
+
+ def @InitTab
+ {
+ tabin @Test
+ iffixed { fixedtabin }
+ ifvarying { varyingtabin }
+ ifsymbol { symboltabin }
+ }
+
+
+ def @InitTabWidth
+ {
+ tabout @Test
+ iffixed { fixedtabout }
+ ifvarying { varyingtabout }
+ ifsymbol { symboltabout }
+ }
+
+
+ def @Filter
+ {
+ def wantnumbered
+ {
+ numbered @Case {
+ { No no } @Yield ""
+ { Yes yes } @Yield "-L"
+ else @Yield { "-L"numbered }
+ }
+ }
+
+ def wantblanknumbered
+ {
+ blanknumbered @Case {
+ { No no } @Yield "-M"
+ { NoPrint noprint } @Yield "-N"
+ { Yes yes } @Yield ""
+ }
+ }
+
+ pipe @Case {
+ "" @Yield {
+ "prg2lout -r -lEiffel" wantblanknumbered wantnumbered
+ -i{@FilterIn} -o{@FilterOut} -e{@FilterErr}
+ -t{@InitTab} -T{@InitTabWidth}
+ }
+ else @Yield {
+ "cat" @FilterIn "|" pipe "|"
+ "prg2lout -r -lEiffel" wantblanknumbered wantnumbered
+ -o{@FilterOut} -e{@FilterErr}
+ -t{@InitTab} -T{@InitTabWidth}
+ }
+ }
+ }
+
+
+ def @InitFontFamily
+ {
+ font @Test
+ iffixed { fixedfont }
+ ifvarying { varyingfont }
+ ifsymbol { symbolfont }
+ }
+
+
+ def @InitSize
+ {
+ size @Test
+ iffixed { fixedsize }
+ ifvarying { varyingsize }
+ ifsymbol { symbolsize }
+ }
+
+
+ def @InitLine
+ {
+ line @Test
+ iffixed { fixedline }
+ ifvarying { varyingline }
+ ifsymbol { symbolline }
+ }
+
+
+ def @InitBLS
+ {
+ blanklinescale @Test
+ iffixed { fixedblanklinescale }
+ ifvarying { varyingblanklinescale }
+ ifsymbol { symbolblanklinescale }
+ }
+
+
+ def @InitSpace
+ {
+ space @Test
+ iffixed { fixedspace }
+ ifvarying { varyingspace }
+ ifsymbol { symbolspace }
+ }
+
+
+ def @PI # for formatting identifiers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedidentifiersformat {
+ { identifiers @Else fixedidentifiers } @Font x
+ }
+ varying @Yield varyingidentifiersformat {
+ { identifiers @Else varyingidentifiers } @Font x
+ }
+ symbol @Yield symbolidentifiersformat {
+ { identifiers @Else symbolidentifiers } @Font x
+ }
+ }
+ }
+
+
+ def @PK # for formatting keywords
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedkeywordsformat {
+ { keywords @Else fixedkeywords } @Font x
+ }
+ varying @Yield varyingkeywordsformat {
+ { keywords @Else varyingkeywords } @Font x
+ }
+ symbol @Yield symbolkeywordsformat {
+ { keywords @Else symbolkeywords } @Font x
+ }
+ }
+ }
+
+
+ def @PO # for formatting operators
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedoperatorsformat {
+ { operators @Else fixedoperators } @Font x
+ }
+ varying @Yield varyingoperatorsformat {
+ { operators @Else varyingoperators } @Font x
+ }
+ symbol @Yield symboloperatorsformat {
+ { operators @Else symboloperators } @Font x
+ }
+ }
+ }
+
+
+ def @PN # for formatting numbers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixednumbersformat {
+ { numbers @Else fixednumbers } @Font x
+ }
+ varying @Yield varyingnumbersformat {
+ { numbers @Else varyingnumbers } @Font x
+ }
+ symbol @Yield symbolnumbersformat {
+ { numbers @Else symbolnumbers } @Font x
+ }
+ }
+ }
+
+
+ def @PS # for formatting strings
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedstringsformat {
+ { strings @Else fixedstrings } @Font x
+ }
+ varying @Yield varyingstringsformat {
+ { strings @Else varyingstrings } @Font x
+ }
+ symbol @Yield symbolstringsformat {
+ { strings @Else symbolstrings } @Font x
+ }
+ }
+ }
+
+
+ def @PC # for formatting comments
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedcommentsformat {
+ { comments @Else fixedcomments } @Font x
+ }
+ varying @Yield varyingcommentsformat {
+ { comments @Else varyingcomments } @Font x
+ }
+ symbol @Yield symbolcommentsformat {
+ { comments @Else symbolcomments } @Font x
+ }
+ }
+ }
+
+
+ def @PL # for formatting line numbers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedlinenumbersformat {
+ { linenumbers @Else fixedlinenumbers } @Font x
+ }
+ varying @Yield varyinglinenumbersformat {
+ { linenumbers @Else varyinglinenumbers } @Font x
+ }
+ symbol @Yield symbollinenumbersformat {
+ { linenumbers @Else symbollinenumbers } @Font x
+ }
+ }
+ }
+
+
+ def @PA # for formatting asterisks
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "*"
+ else @Yield { "0.5w" @VShift "*" }
+ }
+ }
+
+
+ def @PM # for formatting minus signs
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "-"
+ else @Yield style @Case {
+ fixed @Yield "-"
+ else @Yield { { Symbol Base } @Font @Char "minus" }
+ }
+ }
+ }
+
+
+ def @PD # for formatting dots, if wanted larger
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "."
+ else @Yield { "1.4f" @Font "+0.04f" @VShift "." &"0.05f" }
+ }
+ }
+
+
+ def @A # get characters from the Adobe Symbol font
+ named sym {}
+ right x
+ {
+ style @Case {
+ symbol @Yield { { Symbol Base } @Font @Char sym }
+ else @Yield { x }
+ }
+ }
+
+
+ macro "$>" { {} & }
+
+
+ Programming @Language
+ { @InitFontFamily Base @InitSize } @Font @InitSpace @Space
+ { @InitLine lines "blanklinescale" @InitBLS } @Break @Body
+
+ @End @Eiffel
+
+@End @EiffelSetup
diff --git a/include/include/eq b/include/include/eq
new file mode 100644
index 0000000..6d35832
--- /dev/null
+++ b/include/include/eq
@@ -0,0 +1,29 @@
+###############################################################################
+# #
+# Lout setup file for equation formatting #
+# #
+# Jeffrey H. Kingston #
+# 5 February 1999 #
+# #
+# This file has been placed in the public domain by its author. #
+# #
+###############################################################################
+
+
+###############################################################################
+# #
+# The @SysInclude { eqf } line #
+# #
+# This line causes Lout to read the definitions for equations, and should #
+# not be touched. #
+# #
+###############################################################################
+
+@SysInclude { eqf }
+
+
+###############################################################################
+# #
+# This package does not offer default options that can be changed. #
+# #
+###############################################################################
diff --git a/include/include/eqf b/include/include/eqf
new file mode 100644
index 0000000..23dd3bd
--- /dev/null
+++ b/include/include/eqf
@@ -0,0 +1,1717 @@
+
+###############################################################################
+# #
+# Lout @Eq package for equation formatting (Version 3.0) #
+# #
+# Version 1.0 by Jeffrey H. Kingston, December 1990. #
+# Version 2.0 by Jeffrey H. Kingston, 22 December 1992. #
+# Version 3.0 by Jeffrey H. Kingston and Robert Marsa, March 1996. #
+# #
+# This package makes extensive use of the Adobe Systems Symbol font, and #
+# it assumes that the font has not been recoded. It could be rewritten #
+# using the @Char symbol to be made independent of any recoding, but since #
+# there seems no reason to ever recode this font, I haven't bothered. #
+# #
+# See "Eq - a Lout package for typesetting mathematics" for user #
+# information. Acknowledgement: the @Eq language is based closely on #
+# the Eqn language of B. W. Kernighan and L. L. Cherry; the spacing rules #
+# are similar to those of the TeX system by D. E. Knuth. #
+# #
+# Version 3.0 makes use of the new x and y units of measurement to improve #
+# the spacing rules. #
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either Version 3, or (at your option) #
+# any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA #
+# #
+# As a special exception, when this file is read by Lout when processing #
+# a Lout source document, you may use the result without restriction. #
+# #
+###############################################################################
+
+export "`" "``" "```" bin rel punct non vctr big small
+
+ space exclam universal numbersign existential percent
+ ampersand suchthat parenleft parenright asteriskmath
+ plus comma minus period slash zero one two three four
+ five six seven eight nine colon semicolon less equal
+ greater question congruent Alpha Beta Chi Delta Epsilon
+ Phi Gamma Eta Iota thetaone Kappa Lambda Mu Nu Omicron
+ Pi Theta Rho Sigma Tau Upsilon sigmaone Omega Xi Psi Zeta
+ bracketleft therefore bracketright perpendicular underscore
+ radicalex alpha beta chi delta epsilon phi gamma eta iota
+ phione kappa lambda mu nu omicron pi theta rho sigma tau
+ upsilon omegaone omega xi psi zeta braceleft bar braceright
+ similar Upsilonone minute lessequal fraction infinity florin
+ club diamond heart spade arrowboth arrowleft arrowup
+ arrowright arrowdown degree plusminus second greaterequal
+ multiply proportional partialdiff bullet divide notequal
+ equivalence approxequal ellipsis arrowvertex arrowhorizex
+ carriagereturn aleph Ifraktur Rfraktur weierstrass
+ circlemultiply circleplus emptyset intersection union
+ propersuperset reflexsuperset notsubset propersubset
+ reflexsubset element notelement angle gradient registerserif
+ copyrightserif trademarkserif product radical dotmath
+ logicalnot logicaland logicalor arrowdblboth arrowdblleft
+ arrowdblup arrowdblright arrowdbldown lozenge angleleft
+ registersans copyrightsans trademarksans summation parenlefttp
+ parenleftex parenleftbt bracketlefttp bracketleftex
+ bracketleftbt bracelefttp braceleftmid braceleftbt braceex
+ angleright integral integraltp integralex integralbt
+ parenrighttp parenrightex parenrightbt bracketrighttp
+ bracketrightex bracketrightbt bracerighttp bracerightmid
+ bracerightbt
+
+ hbar Re Im partial infty prime nabla surd top bot dbar
+ triangle backslash forall exists neg
+ circle filledcircle square
+
+ sum prod coprod int oint bcap bcup bvee bwedge bodot botimes
+ boplus buplus
+
+ "+" "-" "+-" "-+" setminus cdot times "*" circ div cap cup uplus
+ sqcap sqcup triangleleft triangleright
+ wr bigcirc bigtriangleup bigtriangledown vee wedge oplus ominus
+ otimes oslash odot dagger daggerdbl amalg
+
+ "<" ">" "=" "<=" prec preceq "<<" subset subseteq sqsubseteq
+ in vdash smile frown ">=" succ succeq ">>" supset supseteq
+ sqsupseteq ni dashv mid parallel "==" "~" "-~" asymp "~~"
+ "=~" bowtie propto models doteq trieq perp notsub notin "!=" not
+ "<->" "<--" "-->" up down "<=>" "<==" "==>" dblup dbldown
+ ":" "::" ":="
+
+ lpar blpar rpar brpar lbrack blbrack rbrack brbrack lbrace blbrace
+ rbrace brbrace lfloor blfloor rfloor brfloor lceil blceil
+ rceil brceil langle blangle rangle brangle
+
+ ";" "," col
+
+ "!" "?" "%" "(" ")" "[" "]"
+
+ arccos arcsin arctan arg cos cosh cot coth csc deg det dim exp
+ gcd hom inf ker lg lim liminf limsup ln log max min Pr sec sin
+ sinh supr tan tanh mod ldots cdots vdots ddots del grad
+ "..." ",...," "'" "''" "'''" "''''" empty
+
+ triangleup triangledown
+
+ leftarrow longleftarrow dblleftarrow dbllongleftarrow
+ rightarrow longrightarrow dblrightarrow dbllongrightarrow
+ leftrightarrow longleftrightarrow dblleftrightarrow dbllongleftrightarrow
+ mapsto longmapsto hookleftarrow hookrightarrow leadsto
+ leftharpoonup rightharpoonup leftharpoondown rightharpoondown
+ rightleftharpoons
+ uparrow dbluparrow downarrow dbldownarrow updownarrow dblupdownarrow
+ nearrow searrow swarrow nwarrow
+
+ sup sub tsub supp on ton frac half third over from to widefrom wideto
+ dot dotdot hat tilde vec dyad overbar underbar sqrt root zroot
+ nextcol above labove cabove rabove mabove
+ matrix pmatrix bmatrix brmatrix fmatrix cmatrix amatrix
+
+ "0" "1" "2" "3" "4" "5" "6" "7" "8" "9"
+
+def @Eq
+ named initzunit { 1f }
+ body @Body
+@Begin
+
+
+ ###################################################################
+ # #
+ # Context-sensitive format changes. #
+ # #
+ # Equation formatting (according to Knuth) demands changes in #
+ # the appearance of equations depending on context. These are: #
+ # #
+ # @Smaller x Superscripts and subscripts are to be set #
+ # in a smaller font size. The @Smaller #
+ # symbol implements this by changing the #
+ # f unit. #
+ # #
+ # @HSqueeze x The horizontal space surrounding binary #
+ # operators and relations is to be reduced #
+ # within superscripts and subscripts, etc. #
+ # The @HSqueeze symbol implements this by #
+ # changing the y unit, which is not used by #
+ # Lout but which is used by symbols @ThinGap, #
+ # @MedGap and @ThickGap. #
+ # #
+ # @VSqueeze x The vertical space taken by superscripts #
+ # and subscripts is to be reduced within #
+ # built-up fractions and under root signs. #
+ # The @VSqueeze symbol implements this by #
+ # changing the z unit, which is not used by #
+ # Lout but is used by the @SupGap symbol. #
+ # #
+ # Knuth also recommends some changes that depend on whether the #
+ # equation is displayed or inline; these are not implemented, #
+ # except that the @E symbol for inline equations (defined as #
+ # a macro at the bottom of this file) includes a @VSqueeze. #
+ # #
+ ###################################################################
+
+ def @SpaceGap { 0.05f }
+
+ def @Smaller right x { 0.7f @Font @SpaceGap @Space x }
+
+ def @HSqueeze right x { 0.2f @YUnit x }
+
+ def @VSqueeze right x { 0.7f @ZUnit x }
+
+ def @SkewGap { 0.05f }
+ def @SupGap { 0.43zk }
+ def @ThinGap { 0.15y }
+ def @MedGap { 0.20y }
+ def @ThickGap { 0.25y }
+ def @ColGap { 0.8f }
+ def @RowGap { 0.5f }
+
+ def "`" { &@ThinGap }
+ def "``" { &@MedGap }
+ def "```" { &@ThickGap }
+
+ def bin right x { `` x `` }
+ def rel right x { ``` x ``` }
+ def punct right x { x ` }
+ def non right x { 0c @YUnit x }
+ def big right x { 1.3f @Font @SpaceGap @Space x }
+ def small right x { 0.6f @Font @SpaceGap @Space x }
+
+ def @Base right x { Base @Font x }
+ def @Sym right x { {Symbol Base} @Font x }
+
+ def @HLine
+ named line { @BackEnd @Case { PostScript @Yield { "0.05 ft setlinewidth" } PDF @Yield { "__mul(__loutf, 0.05) w" } } }
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ { "0 0 moveto xsize 0 lineto" line "stroke" } @Graphic {}
+ }
+ PDF @Yield { # note re-arrangement of commands (setlinewidth (='w') not allowed in a path)
+ { line "0 0 m __xsize 0 l s" } @Graphic {}
+ }
+ }
+ }
+
+ def @VLine
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ "0 0 moveto 0 ysize lineto 0.05 ft setlinewidth stroke" @Graphic {}
+ }
+ PDF @Yield {
+ "__mul(__loutf, 0.05) w 0 0 m 0 __ysize l s" @Graphic {}
+ }
+ }
+ }
+
+ def vctr
+ right x
+ {
+ 0.5w @VShift x
+ }
+
+ def @Strut right x
+ {
+ @OneCol { x | @OneRow { 0.5f @High ^/ 0.5f @High } }
+ }
+
+ ###################################################################
+ # #
+ # Full names #
+ # #
+ # These symbols and their names are taken directly from the #
+ # Adobe Systems Inc. Symbol font (see PostScript Language #
+ # Reference Manual, pp. 256-257). The only differences are: #
+ # #
+ # Adobe: theta1 Eq: thetaone #
+ # sigma1 sigmaone #
+ # phi1 phione #
+ # omega1 omegaone #
+ # #
+ # These were needed since Lout identifiers do not have digits. #
+ # #
+ ###################################################################
+
+ def space { @Sym "\040" }
+ def exclam { @Sym "\041" }
+ def universal { @Sym "\042" }
+ def numbersign { @Sym "\043" }
+ def existential { @Sym "\044" }
+ def percent { @Sym "\045" }
+ def ampersand { @Sym "\046" }
+ def suchthat { @Sym "\047" }
+ def parenleft { @Sym "\050" }
+ def parenright { @Sym "\051" }
+ def asteriskmath { @Sym "\052" }
+ def plus { @Sym "+" }
+ def comma { @Sym "\054" }
+ def minus { @Sym "-" }
+ def period { @Sym "\056" }
+ def slash { @Sym "\057" }
+ def zero { @Sym "\060" }
+ def one { @Sym "\061" }
+ def two { @Sym "\062" }
+ def three { @Sym "\063" }
+ def four { @Sym "\064" }
+ def five { @Sym "\065" }
+ def six { @Sym "\066" }
+ def seven { @Sym "\067" }
+ def eight { @Sym "\070" }
+ def nine { @Sym "\071" }
+ def colon { @Sym "\072" }
+ def semicolon { @Sym "\073" }
+ def less { @Sym "\074" }
+ def equal { @Sym "\075" }
+ def greater { @Sym "\076" }
+ def question { @Sym "\077" }
+ def congruent { @Sym "\100" }
+ def Alpha { @Sym "\101" }
+ def Beta { @Sym "\102" }
+ def Chi { @Sym "\103" }
+ def Delta { @Sym "\104" }
+ def Epsilon { @Sym "\105" }
+ def Phi { @Sym "\106" }
+ def Gamma { @Sym "\107" }
+ def Eta { @Sym "\110" }
+ def Iota { @Sym "\111" }
+ def thetaone { @Sym "\112" }
+ def Kappa { @Sym "\113" }
+
+ def Lambda { @Sym "\114" }
+ def Mu { @Sym "\115" }
+ def Nu { @Sym "\116" }
+ def Omicron { @Sym "\117" }
+ def Pi { @Sym "\120" }
+ def Theta { @Sym "\121" }
+ def Rho { @Sym "\122" }
+ def Sigma { @Sym "\123" }
+ def Tau { @Sym "\124" }
+ def Upsilon { @Sym "\125" }
+ def sigmaone { @Sym "\126" }
+ def Omega { @Sym "\127" }
+ def Xi { @Sym "\130" }
+ def Psi { @Sym "\131" }
+ def Zeta { @Sym "\132" }
+ def bracketleft { @Sym "\133" }
+ def therefore { @Sym "\134" }
+ def bracketright { @Sym "\135" }
+ def perpendicular { @Sym "\136" }
+ def underscore { @Sym "\137" }
+ def radicalex { @Sym "\140" }
+ def alpha { @Sym "\141" }
+ def beta { @Sym "\142" }
+ def chi { @Sym "\143" }
+ def delta { @Sym "\144" }
+ def epsilon { @Sym "\145" }
+ def phi { @Sym "\146" }
+ def gamma { @Sym "\147" }
+ def eta { @Sym "\150" }
+ def iota { @Sym "\151" }
+ def phione { @Sym "\152" }
+ def kappa { @Sym "\153" }
+ def lambda { @Sym "\154" }
+ def mu { @Sym "\155" }
+ def nu { @Sym "\156" }
+
+ def omicron { @Sym "\157" }
+ def pi { @Sym "\160" }
+ def theta { @Sym "\161" }
+ def rho { @Sym "\162" }
+ def sigma { @Sym "\163" }
+ def tau { @Sym "\164" }
+ def upsilon { @Sym "\165" }
+ def omegaone { @Sym "\166" }
+ def omega { @Sym "\167" }
+ def xi { @Sym "\170" }
+ def psi { @Sym "\171" }
+ def zeta { @Sym "\172" }
+ def braceleft { @Sym "\173" }
+ def bar { @Sym "\174" }
+ def braceright { @Sym "\175" }
+ def similar { @Sym "\176" }
+ def Upsilonone { @Sym "\241" }
+ def minute { @Sym "\242" }
+ def lessequal { @Sym "\243" }
+ def fraction { @Sym "\244" }
+ def infinity { "1.2f" @Font @Sym "\245" }
+ def florin { @Sym "\246" }
+ def club { @Sym "\247" }
+ def diamond { @Sym "\250" }
+ def heart { @Sym "\251" }
+ def spade { @Sym "\252" }
+ def arrowboth { @Sym "\253" }
+ def arrowleft { @Sym "\254" }
+ def arrowup { @Sym "\255" }
+ def arrowright { @Sym "\256" }
+ def arrowdown { @Sym "\257" }
+ def degree { @Sym "\260" }
+ def plusminus { @Sym "\261" }
+ def second { @Sym "\262" }
+ def greaterequal { @Sym "\263" }
+
+ def multiply { @Sym "\264" }
+ def proportional { @Sym "\265" }
+ def partialdiff { @Sym "\266" }
+ def bullet { @Sym "\267" }
+ def divide { @Sym "\270" }
+ def notequal { @Sym "\271" }
+ def equivalence { @Sym "\272" }
+ def approxequal { @Sym "\273" }
+ def ellipsis { @Sym "\274" }
+ def arrowvertex { @Sym "\275" }
+ def arrowhorizex { @Sym "\276" }
+ def carriagereturn { @Sym "\277" }
+ def aleph { @Sym "\300" }
+ def Ifraktur { @Sym "\301" }
+ def Rfraktur { @Sym "\302" }
+ def weierstrass { @Sym "\303" }
+ def circlemultiply { @Sym "\304" }
+ def circleplus { @Sym "\305" }
+ def emptyset { @Sym "\306" }
+ def intersection { @Sym "\307" }
+ def union { @Sym "\310" }
+ def propersuperset { @Sym "\311" }
+ def reflexsuperset { @Sym "\312" }
+ def notsubset { @Sym "\313" }
+ def propersubset { @Sym "\314" }
+ def reflexsubset { @Sym "\315" }
+ def element { @Sym "\316" }
+ def notelement { @Sym "\317" }
+ def angle { @Sym "\320" }
+ def gradient { @Sym "\321" }
+ def registerserif { @Sym "\322" }
+ def copyrightserif { @Sym "\323" }
+ def trademarkserif { @Sym "\324" }
+ def product { @Sym "\325" }
+ def radical { @Sym "\326" }
+ def dotmath { @Sym "\327" }
+
+ def @PureDot # dot with no extra space
+ {
+ @HContract { &0io 0.4w @HShift dotmath }
+ }
+
+ def logicalnot { @Sym "\330" }
+ def logicaland { @Sym "\331" }
+ def logicalor { @Sym "\332" }
+ def arrowdblboth { @Sym "\333" }
+ def arrowdblleft { @Sym "\334" }
+ def arrowdblup { @Sym "\335" }
+ def arrowdblright { @Sym "\336" }
+ def arrowdbldown { @Sym "\337" }
+ def lozenge { @Sym "\340" }
+ def angleleft { @Sym "\341" }
+ def registersans { @Sym "\342" }
+ def copyrightsans { @Sym "\343" }
+ def trademarksans { @Sym "\344" }
+ def summation { @Sym "\345" }
+ def parenlefttp { @Sym "\346" }
+ def parenleftex { @Sym "\347" }
+ def parenleftbt { @Sym "\350" }
+ def bracketlefttp { @Sym "\351" }
+ def bracketleftex { @Sym "\352" }
+ def bracketleftbt { @Sym "\353" }
+ def bracelefttp { @Sym "\354" }
+ def braceleftmid { @Sym "\355" }
+ def braceleftbt { @Sym "\356" }
+ def braceex { @Sym "\357" }
+ def angleright { @Sym "\361" }
+ def integral { @Sym "\362" }
+ def integraltp { @Sym "\363" }
+ def integralex { @Sym "\364" }
+ def integralbt { @Sym "\365" }
+ def parenrighttp { @Sym "\366" }
+ def parenrightex { @Sym "\367" }
+ def parenrightbt { @Sym "\370" }
+ def bracketrighttp { @Sym "\371" }
+ def bracketrightex { @Sym "\372" }
+ def bracketrightbt { @Sym "\373" }
+ def bracerighttp { @Sym "\374" }
+ def bracerightmid { @Sym "\375" }
+ def bracerightbt { @Sym "\376" }
+
+
+ ###################################################################
+ # #
+ # Short names #
+ # #
+ # These symbols, their names, and their spacing, are based on #
+ # the list in Appendix F of Donald E. Knuth's The TeXBook. #
+ # #
+ # Group 1 (lowercase Greek letters): see full names above #
+ # Group 2 (uppercase Greek letters): see full names above #
+ # Group 3 (calligraphic capitals): not provided by Eq #
+ # #
+ ###################################################################
+
+ ###################################################################
+ # #
+ # Group 4 (miscellaneous Ord symbols) #
+ # #
+ # Not all of Knuth's symbols are available. The four suits #
+ # (heartsuit, etc.), have definitions above. #
+ # #
+ ###################################################################
+
+ def hbar { @OneCol { &0.1f @Base "-" ^/0.25fo h } }
+ def Re { Rfraktur }
+ def Im { Ifraktur }
+ def partial { partialdiff }
+ def infty { infinity }
+ def prime { minute }
+ #def emptyset { defined above }
+ def nabla { gradient }
+ def surd { radical }
+ def top { 180d @Rotate perpendicular }
+ def bot { perpendicular }
+ def dbar { @Base "||" }
+ #def angle { defined above }
+ def backslash { "\\" }
+ def forall { universal }
+ def exists { existential }
+ def neg { logicalnot }
+
+ def circle
+ { @HContract @VContract @BackEnd @Case {
+ PostScript @Yield {
+ {
+ "xsize ysize 2 div moveto"
+ "xsize 2 div ysize 2 div xsize 2 div 0 360 arc"
+ "0.04 ft setlinewidth stroke"
+ } @Graphic { 0.7f @Wide 0.3f @High ^/ 0.3f @High }
+ }
+ PDF @Yield {
+ #
+ # VT: draws a counterclockwise 360 degree arc from 0 to +360
+ # degree positions (straight right to straight right) with
+ # centre = (xsize/2, ysize/2) and radius = xsize/2,
+ # implemented as two counterclockwise 180 degree arcs.
+ # start at (xsize, ysize/2); the control points are:
+ #
+ # pt1 = (xsize, ysize/2 + (4/3 * xsize/2))
+ # pt2 = (0, ysize/2 + (4/3 * xsize/2))
+ #
+ # end at (0, ysize/2). Then start at (0, ysize/2); control points
+ #
+ # pt1 = (0, ysize/2 - (4/3 * xsize/2))
+ # pt2 = (xsize, ysize/2 - (4/3 * xsize/2))
+ #
+ # and end at (xsize, ysize/2).
+
+ {
+ "__mul(0.04, __loutf) w"
+ "__xsize __div(__ysize, 2) m"
+ "__xsize __add(__div(__ysize, 2), __div(__mul(2, __xsize), 3))"
+ "0 __add(__div(__ysize, 2), __div(__mul(2, __xsize), 3))"
+ "0 __div(__ysize, 2) c"
+ "0 __sub(__div(__ysize, 2), __div(__mul(2, __xsize), 3))"
+ "__xsize __sub(__div(__ysize, 2), __div(__mul(2, __xsize), 3))"
+ "__xsize __div(__ysize, 2) c S"
+ } @Graphic { 0.7f @Wide 0.3f @High ^/ 0.3f @High }
+ }
+ }
+ }
+
+ def filledcircle
+ { @HContract @VContract @BackEnd @Case {
+ PostScript @Yield {
+ {
+ "xsize ysize 2 div moveto"
+ "xsize 2 div ysize 2 div xsize 2 div 0 360 arc"
+ "0.04 ft setlinewidth fill"
+ } @Graphic { 0.7f @Wide 0.3f @High ^/ 0.3f @High }
+ }
+ PDF @Yield {
+ #
+ # JK: I don't know how to fill in PDF, so this doesn't!
+ #
+ # VT: draws a counterclockwise 360 degree arc from 0 to +360
+ # degree positions (straight right to straight right) with
+ # centre = (xsize/2, ysize/2) and radius = xsize/2,
+ # implemented as two counterclockwise 180 degree arcs.
+ # start at (xsize, ysize/2); the control points are:
+ #
+ # pt1 = (xsize, ysize/2 + (4/3 * xsize/2))
+ # pt2 = (0, ysize/2 + (4/3 * xsize/2))
+ #
+ # end at (0, ysize/2). Then start at (0, ysize/2); control points
+ #
+ # pt1 = (0, ysize/2 - (4/3 * xsize/2))
+ # pt2 = (xsize, ysize/2 - (4/3 * xsize/2))
+ #
+ # and end at (xsize, ysize/2).
+
+ {
+ "__mul(0.04, __loutf) w"
+ "__xsize __div(__ysize, 2) m"
+ "__xsize __add(__div(__ysize, 2), __div(__mul(2, __xsize), 3))"
+ "0 __add(__div(__ysize, 2), __div(__mul(2, __xsize), 3))"
+ "0 __div(__ysize, 2) c"
+ "0 __sub(__div(__ysize, 2), __div(__mul(2, __xsize), 3))"
+ "__xsize __sub(__div(__ysize, 2), __div(__mul(2, __xsize), 3))"
+ "__xsize __div(__ysize, 2) c S"
+ } @Graphic { 0.7f @Wide 0.3f @High ^/ 0.3f @High }
+ }
+ }
+ }
+
+ def square
+ { @HContract @VContract @BackEnd @Case {
+ PostScript @Yield {
+ {
+ "0 0 moveto xsize 0 lineto xsize ysize lineto"
+ "0 ysize lineto closepath"
+ "0.04 ft setlinewidth stroke"
+ } @Graphic { 0.6f @Wide 0.3f @High ^/ 0.3f @High }
+ }
+ PDF @Yield {
+ {
+ "__mul(__loutf, 0.04) w"
+ "0 0 m __xsize 0 l __xsize __ysize l"
+ "0 __ysize l s"
+ } @Graphic { 0.6f @Wide 0.3f @High ^/ 0.3f @High }
+ }
+ }
+ }
+
+ def triangle
+ { @HContract @VContract @BackEnd @Case {
+ PostScript @Yield {
+ {
+ "0 0 moveto xsize 0 lineto"
+ "xsize 2 div ysize lineto closepath"
+ "0.04 ft setlinewidth stroke"
+ } @Graphic { 0.3f @Wide 0.3f @High ^| ^/ 0.3f @Wide 0.3f @High }
+ }
+ PDF @Yield {
+ {
+ "__mul(__loutf, 0.04) w"
+ "0 0 m __xsize 0 l"
+ "__div(__xsize, 2) __ysize l s"
+ } @Graphic { 0.3f @Wide 0.3f @High ^| ^/ 0.3f @Wide 0.3f @High }
+ }
+ }
+ }
+
+
+ ###################################################################
+ # #
+ # Group 6 ("Large" operators) #
+ # #
+ # Knuth's large operators automatically change size depending #
+ # on whether the equation is display or inline. Eq does not #
+ # do this; instead, the `big' operator must be used. #
+ # #
+ ###################################################################
+
+ def sum { summation }
+ def prod { product }
+ def coprod { 180d @Rotate vctr product }
+ def int { 1.3f @Font vctr integral }
+ def oint { @OneCol { vctr degree |0.015fo int } }
+ def bcap { 1.3f @Font intersection }
+ def bcup { 1.3f @Font union }
+ def bvee { 1.3f @Font logicalor }
+ def bwedge { 1.3f @Font logicaland }
+ def bodot { & 1.3f @Font @HContract { circle /0io &0.5rt @PureDot } }
+ def botimes { 1.3f @Font circlemultiply }
+ def boplus { 1.3f @Font circleplus }
+ def buplus { & 1.3f @Font @HContract { &0.5rt 0.7f @Font plus ^/0.2fo union } }
+
+ ###################################################################
+ # #
+ # Group 7 (binary operations) #
+ # #
+ # All of Knuth's symbols are available except \star, \diamond #
+ # and \bullet; a few have been given more mnemonic names. #
+ # #
+ ###################################################################
+
+ def "+" { bin plus }
+ def "-" { bin minus }
+ def "+-" { bin plusminus }
+ def "-+" { bin 180d @Rotate plusminus }
+ def setminus { bin backslash }
+ def cdot { bin dotmath }
+ def times { bin multiply }
+ def "*" { bin asteriskmath }
+ #def diamond { name used above }
+ def circ { bin circle }
+ #def bullet { name used above }
+ def div { bin divide }
+ def cap { bin intersection }
+ def cup { bin union }
+ def uplus { bin @OneRow @HContract { &0.5rt 0.7f @Font plus ^/0.2fo union}}
+ def sqcap { bin
+ { @HContract @VContract
+ @BackEnd @Case {
+ PostScript @Yield {
+ { "0 0 moveto 0 ysize lineto xsize ysize lineto"
+ "xsize 0 lineto"
+ "0.04 ft setlinewidth stroke"
+ }
+ @Graphic
+ { 0.3f @Wide 0.3f @High ^| ^/
+ 0.3f @Wide 0.3f @High
+ }
+ }
+ PDF @Yield {
+ { "__mul(__loutf, 0.04) w"
+ "0 0 m 0 __ysize l __xsize __ysize l"
+ "__xsize 0 l s"
+ }
+ @Graphic
+ { 0.3f @Wide 0.3f @High ^| ^/
+ 0.3f @Wide 0.3f @High
+ }
+ }
+ }
+ }
+ }
+ def sqcup { 180d @Rotate sqcap }
+ def triangleleft { bin 90d @Rotate 0.8f @Font triangle }
+ def triangleright { bin "-90d" @Rotate 0.8f @Font triangle}
+ def wr { bin vctr {90d @Rotate similar} }
+ def bigcirc { bin 1.2f @Font circle }
+ def bigtriangleup { bin 1.2f @Font triangle }
+ def bigtriangledown { bin 180d @Rotate 1.2f @Font triangle }
+ def vee { bin logicalor }
+ def wedge { bin logicaland }
+ def oplus { bin circleplus }
+ def ominus { bin @OneRow @HContract { circle /0io &0.5rt minus}}
+ def otimes { bin circlemultiply }
+ def oslash {`vctr 60d @Rotate @HContract {circle /0io &0.5rt minus`}}
+ def odot { bin @OneRow @HContract {circle /0io &0.5rt @PureDot }}
+ def dagger { bin @Base @Char "dagger" }
+ def daggerdbl { bin @Base @Char "daggerdbl" }
+ def amalg { bin 180d @Rotate vctr product }
+
+ ###################################################################
+ # #
+ # Group 8 (relations) #
+ # #
+ # All Knuth's operators are available, but many have been #
+ # given different, more mnemonic names. Also included is #
+ # a not operator for negating the relations. #
+ # #
+ ###################################################################
+
+ def "<" { rel less }
+ def ">" { rel greater }
+ def "=" { rel equal }
+ def "<=" { rel lessequal }
+ def prec { rel { 0.45f @Font "-90d" @Rotate
+ { parenrighttp ^| parenlefttp }
+ }
+ }
+ def preceq { rel { @OneRow non prec /0.1f minus } }
+ def "<<" { rel {less less} }
+ def subset { rel propersubset }
+ def subseteq { rel reflexsubset }
+ def sqsubseteq { rel @HContract @VContract
+ @BackEnd @Case {
+ PostScript @Yield {
+ { { "xsize 0 moveto"
+ "0 0 lineto"
+ "0 ysize lineto"
+ "xsize ysize lineto"
+ "0.04 ft setlinewidth stroke"
+ }
+ @Graphic
+ { 0.5f @Wide 0.25f @High ^/
+ 0.25f @High
+ }
+ /0.1f minus
+ }
+ }
+ PDF @Yield {
+ { { "__mul(__loutf, 0.04) w"
+ "__xsize 0 m"
+ "0 0 l"
+ "0 __ysize l"
+ "__xsize __ysize l s"
+ }
+ @Graphic
+ { 0.5f @Wide 0.25f @High ^/
+ 0.25f @High
+ }
+ /0.1f minus
+ }
+ }
+ }
+ }
+
+ def in { rel element }
+ def vdash { rel vctr{"-90d" @Rotate perpendicular}}
+ def smile { rel vctr 90d @Rotate parenleft }
+ def frown { rel vctr 90d @Rotate parenright }
+
+ def ">=" { rel greaterequal }
+ def succ { rel { 0.45f @Font 90d @Rotate
+ { parenrighttp ^| parenlefttp }
+ }
+ }
+ def succeq { rel { @OneRow non succ /0.1f minus } }
+ def ">>" { rel {greater greater} }
+ def supset { rel propersuperset }
+ def supseteq { rel reflexsuperset }
+ def sqsupseteq { rel @HContract @VContract
+ @BackEnd @Case {
+ PostScript @Yield {
+ { { "0 0 moveto xsize 0 lineto"
+ "xsize ysize lineto"
+ "0 ysize lineto"
+ "0.04 ft setlinewidth stroke"
+ }
+ @Graphic
+ { 0.5f @Wide 0.25f @High ^/
+ 0.25f @High
+ }
+ /0.1f minus
+ }
+ }
+ PDF @Yield {
+ { { "__mul(__loutf, 0.04) w"
+ "0 0 m __xsize 0 l"
+ "__xsize __ysize l"
+ "0 __ysize l s"
+ }
+ @Graphic
+ { 0.5f @Wide 0.25f @High ^/
+ 0.25f @High
+ }
+ /0.1f minus
+ }
+ }
+ }
+ }
+ def ni { rel 180d @Rotate element }
+ def dashv { rel vctr {90d @Rotate perpendicular} }
+ def mid { rel @Base "|" }
+ def parallel { rel @Base "||" }
+
+ def "==" { rel equivalence }
+ def "~" { rel similar }
+ def "-~" { rel @OneRow{similar^/0.07f/0.07f minus}}
+ def asymp { rel 0.7f @Font @OneRow
+ { 90d @Rotate parenleft ^/0.008f
+ /0.008f 90d @Rotate parenright }
+ }
+ def "~~" { rel approxequal }
+ def "=~" { rel congruent }
+ def bowtie { rel{non triangleright non triangleleft}}
+ def propto { rel proportional }
+ def models { rel{@Base vctr "|" &0.05fo vctr equal}}
+ def trieq { rel @OneRow @HContract {&0.5rt small triangle^/0.15f equal}}
+ def doteq { rel @OneRow @HContract {&0.5rt dotmath^/0.15f equal}}
+ def perp { rel perpendicular }
+
+ def notsub { rel notsubset }
+ def notin { rel notelement }
+ def "!=" { rel notequal }
+
+ def "<->" { rel arrowboth }
+ def "<--" { rel arrowleft }
+ def "-->" { rel arrowright }
+ def up { rel arrowup }
+ def down { rel arrowdown }
+ def "<=>" { rel arrowdblboth }
+ def "<==" { rel arrowdblleft }
+ def "==>" { rel arrowdblright }
+ def dblup { rel arrowdblup }
+ def dbldown { rel arrowdbldown }
+
+ def ":" { rel colon }
+ def "::" { rel @OneCol {colon ` colon} }
+ def ":=" { rel { colon{ //0.05fo equal} } }
+
+ def not right x { @HContract {@OneCol x /0co &0.5rt slash}}
+
+
+ ###################################################################
+ # #
+ # Groups 11 and 12 - openings and closings. #
+ # #
+ ###################################################################
+
+ def lpar { parenleft }
+ def rpar { parenright }
+ def lbrack { bracketleft }
+ def rbrack { bracketright }
+ def lbrace { braceleft }
+ def rbrace { braceright }
+ def lfloor { ` "-0.15f" @VShift bracketleftbt }
+ def rfloor { "-0.15f" @VShift bracketrightbt ` }
+ def lceil { ` "-0.1f" @VShift bracketlefttp }
+ def rceil { "-0.1f" @VShift bracketrighttp ` }
+ def langle { angleleft }
+ def rangle { angleright }
+
+ def blpar { @OneRow {parenlefttp ^/ parenleftex / parenleftbt } }
+ def brpar { @OneRow {parenrighttp ^/ parenrightex / parenrightbt } }
+ def blbrack { @OneRow {bracketlefttp ^/ bracketleftex / bracketleftbt } }
+ def brbrack { @OneRow {bracketrighttp ^/ bracketrightex / bracketrightbt} }
+ def blbrace { @OneRow {bracelefttp ^/ braceleftmid / braceleftbt } }
+ def brbrace { @OneRow {bracerighttp ^/ bracerightmid / bracerightbt } }
+ def blfloor { @OneRow {bracketleftex ^/ bracketleftex / bracketleftbt } }
+ def brfloor { @OneRow {bracketrightex ^/ bracketrightex / bracketrightbt} }
+ def blceil { @OneRow {bracketlefttp ^/ bracketleftex / bracketleftex } }
+ def brceil { @OneRow {bracketrighttp ^/ bracketrightex / bracketrightex} }
+ def blangle { @HContract @VContract
+ @BackEnd @Case {
+ PostScript @Yield {
+ { "xsize 0 moveto"
+ "0 ysize 2 div lineto"
+ "xsize ysize lineto"
+ "0.04 ft setlinewidth stroke"
+ }
+ @Graphic { 0.5f @Wide 2f @High ^/ 2f @High }
+ }
+ PDF @Yield {
+ { "__mul(__loutf, 0.04) w"
+ "__xsize 0 m"
+ "0 __div(__ysize, 2) l"
+ "__xsize __ysize l S"
+ }
+ @Graphic { 0.5f @Wide 2f @High ^/ 2f @High }
+ }
+ }
+ }
+ def brangle { @HContract @VContract
+ @BackEnd @Case {
+ PostScript @Yield {
+ { "0 0 moveto"
+ "xsize ysize 2 div lineto"
+ "0 ysize lineto"
+ "0.04 ft setlinewidth stroke"
+ }
+ @Graphic { 0.5f @Wide 2f @High ^/ 2f @High }
+ }
+ PDF @Yield {
+ { "__mul(__loutf, 0.04) w"
+ "0 0 m"
+ "__xsize __div(__ysize, 2) l"
+ "0 __ysize l S"
+ }
+ @Graphic { 0.5f @Wide 2f @High ^/ 2f @High }
+ }
+ }
+ }
+
+
+ ###################################################################
+ # #
+ # Group 13 - punctuation. #
+ # #
+ ###################################################################
+
+ def ";" { punct semicolon }
+ def "," { punct comma }
+ def col { punct colon }
+
+
+ ###################################################################
+ # #
+ # Additional short symbols (Knuth p. 132) #
+ # #
+ ###################################################################
+
+ def "!" { exclam }
+ def "?" { question }
+ def "%" { percent }
+ def "(" { parenleft }
+ def ")" { parenright }
+ def "[" { bracketleft }
+ def "]" { bracketright }
+
+
+ ###################################################################
+ # #
+ # Common mathematical functions (from Knuth p. 162). #
+ # mod is included, since @Rel mod is easily typed if needed. #
+ # #
+ ###################################################################
+
+ def arccos { @Base "arccos" }
+ def arcsin { @Base "arcsin" }
+ def arctan { @Base "arctan" }
+ def arg { @Base "arg" }
+ def cos { @Base "cos" }
+ def cosh { @Base "cosh" }
+ def cot { @Base "cot" }
+ def coth { @Base "coth" }
+ def csc { @Base "csc" }
+ def deg { @Base "deg" }
+ def det { @Base "det" }
+ def dim { @Base "dim" }
+ def exp { @Base "exp" }
+ def gcd { @Base "gcd" }
+ def hom { @Base "hom" }
+ def inf { @Base "inf" }
+ def ker { @Base "ker" }
+ def lg { @Base "lg" }
+ def lim { @Base "lim" }
+ def liminf { @OneCol { @Base "lim" ` @Base "inf" } }
+ def limsup { @OneCol { @Base "lim" ` @Base "sup" } }
+ def ln { @Base "ln" }
+ def log { @Base "log" }
+ def max { @Base "max" }
+ def min { @Base "min" }
+ def Pr { @Base "Pr" }
+ def sec { @Base "sec" }
+ def sin { @Base "sin" }
+ def sinh { @Base "sinh" }
+ def supr { @Base "sup" }
+ def tan { @Base "tan" }
+ def tanh { @Base "tanh" }
+ def mod { @Base "mod" }
+
+
+ ###################################################################
+ # #
+ # Arrow symbols. #
+ # #
+ ###################################################################
+
+ def leftarrow { arrowleft }
+ def longleftarrow { { 1.6 1 } @Scale arrowleft }
+ def dblleftarrow { arrowdblleft }
+ def dbllongleftarrow { { 1.6 1 } @Scale arrowdblleft }
+ def rightarrow { arrowright }
+ def longrightarrow { { 1.6 1 } @Scale arrowright }
+ def dblrightarrow { arrowdblright }
+ def dbllongrightarrow { { 1.6 1 } @Scale arrowdblright }
+ def leftrightarrow { arrowboth }
+ def longleftrightarrow { { 1.6 1 } @Scale arrowboth }
+ def dblleftrightarrow { arrowdblboth }
+ def dbllongleftrightarrow { { 1.6 1 } @Scale arrowdblboth }
+
+ def mapsto
+ {
+ @HContract @VContract {
+ @BackEnd @Case {
+ PostScript @Yield {
+ "0 ymark 0.16 ft sub moveto 0 ymark 0.16 ft add lineto stroke"
+ @Graphic arrowright
+ }
+ PDF @Yield {
+ "0 __sub(__ymark, __mul(__loutf, 0.16)) m 0 __add(__ymark, __mul(__loutf, 0.16)) l S"
+ @Graphic arrowright
+ }
+ }
+ }
+ }
+
+ def longmapsto
+ {
+ @HContract @VContract {
+ @BackEnd @Case {
+ PostScript @Yield {
+ "0 ymark 0.16 ft sub moveto 0 ymark 0.16 ft add lineto stroke"
+ @Graphic { { 1.6 1 } @Scale arrowright }
+ }
+ PDF @Yield {
+ "0 __sub(__ymark, __mul(__loutf, 0.16)) m 0 __add(__ymark, __mul(__loutf, 0.16)) l S"
+ @Graphic { { 1.6 1 } @Scale arrowright }
+ }
+ }
+ }
+ }
+
+ def hookleftarrow
+ {
+ @HContract @VContract {
+ @BackEnd @Case {
+
+ PostScript @Yield {
+ "xsize ymark moveto xsize ymark 0.1 ft add 0.1 ft -90 90 arc stroke"
+ @Graphic leftarrow
+ }
+
+ PDF @Yield {
+#
+# VT: draws a counterclockwise 180 degree arc from -90 to +90 degree positions
+# (straight down to straight up) with centre = (xsize, ymark + 0.1 ft)
+# and radius = 0.1 ft
+#
+# the control points therefore are:
+# pt1 = (xsize + (4/3 * 0.1 ft), ymark) and pt2 = (xsize + (4/3 * 0.1 ft), ymark + 0.2 ft)
+#
+ {
+ "__xsize __ymark m" # pt0
+ "__add(__xsize, __div(__mul(0.4, __loutf), 3)) __ymark" # pt1
+ "__add(__xsize, __div(__mul(0.4, __loutf), 3)) __add(__ymark, __mul(0.2, __loutf))" # pt2
+ "__xsize __add(__ymark, __mul(0.2, __loutf)) c S" # pt3
+ }
+ @Graphic leftarrow
+ }
+
+ }
+ }
+ }
+
+ def hookrightarrow
+ {
+ @HContract @VContract {
+ @BackEnd @Case {
+
+ PostScript @Yield {
+ "0 ymark moveto 0 0.1 ft ymark add 0.1 ft -90 90 arcn stroke"
+ @Graphic rightarrow
+ }
+
+ PDF @Yield {
+#
+# VT: draws a clockwise 180 degree arc from -90 to +90 degree positions
+# (straight down to straight up) with centre = (0, ymark + 0.1 ft)
+# and radius = 0.1 ft
+#
+# the control points therefore are:
+# pt1 = (-4/3 * 0.1 ft, ymark) and pt2 = (-4/3 * 0.1 ft, ymark + 0.2 ft)
+#
+ {
+ "0 __ymark m" # pt0
+ "__div(__mul(-0.4, __loutf), 3) __ymark" # pt1
+ "__div(__mul(-0.4, __loutf), 3) __add(__ymark, __mul(0.2, __loutf))" # pt2
+ "0 __add(__ymark, __mul(0.2, __loutf)) c S" # pt3
+ }
+ @Graphic rightarrow
+ }
+
+ }
+ }
+ }
+
+ def @ClipToSize right x
+ {
+ @HContract @VContract
+ @BackEnd @Case {
+ PostScript @Yield {
+ {
+ "grestore newpath 0 0 moveto xsize 0 lineto xsize ysize lineto"
+ "0 ysize lineto closepath clip gsave"
+ } @Graphic x
+ }
+ PDF @Yield {
+ "Q n 0 0 __xsize __ysize re W n q" @Graphic x
+ }
+ }
+ }
+
+ def @ClipAboveMark
+ left amount
+ right x
+ {
+ @ClipToSize { ^//{{amount}o} x }
+ }
+
+ def @ClipBelowMark
+ left amount
+ right x
+ {
+ @ClipToSize { x //{{amount}o} }
+ }
+
+ def leftharpoonup
+ {
+ 0.04f @ClipBelowMark leftarrow
+ }
+
+ def rightharpoonup
+ {
+ 0.04f @ClipBelowMark rightarrow
+ }
+
+ def leftharpoondown
+ {
+ 0.02f @ClipAboveMark leftarrow
+ }
+
+ def rightharpoondown
+ {
+ 0.02f @ClipAboveMark rightarrow
+ }
+
+ def rightleftharpoons
+ {
+ @HContract @VContract {
+ rightharpoonup
+ ^//0.1fo
+ //0.1fo
+ leftharpoondown
+ }
+ }
+
+ def leadsto { @HContract { similar &0.4fo arrowright } }
+
+ def uparrow { arrowup }
+ def dbluparrow { arrowdblup }
+ def downarrow { arrowdown }
+ def dbldownarrow { arrowdbldown }
+ def updownarrow { @HContract { arrowup &0io arrowdown } }
+ def dblupdownarrow { @VContract { arrowdblup ^//0.2fo arrowdbldown } }
+ def nearrow { 0.5w @VShift 0.5w @HShift 45d @Rotate arrowright }
+ def searrow { 0.5w @VShift 0.5w @HShift 315d @Rotate arrowright }
+ def swarrow { 0.5w @VShift 0.5w @HShift 225d @Rotate arrowright }
+ def nwarrow { 0.5w @VShift 0.5w @HShift 135d @Rotate arrowright }
+
+
+ ###################################################################
+ # #
+ # Other symbols taken from TeX. #
+ # #
+ ###################################################################
+
+ def ldots { . &0.3f . &0.3f . }
+ def cdots { dotmath &0.3f dotmath &0.3f dotmath }
+ def vdots { @OneRow { dotmath ^/0.3f dotmath /0.3f dotmath } }
+ def ddots { @OneCol @OneRow
+ { dotmath
+ ^/0.3f |0.3f dotmath
+ /0.3f | |0.3f dotmath
+ }
+ }
+
+
+ ###################################################################
+ # #
+ # Symbols taken from eqn (Kernighan and Cherry 1975). #
+ # #
+ ###################################################################
+
+ def del { gradient }
+ def grad { gradient }
+ def "..." { ellipsis }
+ def ",...," { , ellipsis ``` , }
+ def "'" { minute }
+ def "''" { minute minute }
+ def "'''" { minute minute minute }
+ def "''''" { minute minute minute minute }
+ def empty { emptyset }
+
+
+
+ ###################################################################
+ # #
+ # Miscellaneous #
+ # #
+ ###################################################################
+
+ def triangleup { 0.8f @Font triangle }
+ def triangledown { 180d @Rotate 0.8f @Font triangle }
+
+ ###################################################################
+ # #
+ # Symbols with parameters. #
+ # #
+ # These symbols are essentially those of eqn, with some #
+ # changes and additions. #
+ # #
+ ###################################################################
+
+ def sup
+ precedence 60
+ associativity left
+ left x
+ named gap { @SupGap }
+ right y
+ {
+ @HContract @VContract
+ { | 0.45w @VShift @Smaller @HSqueeze @VSqueeze y
+ ^/gap x
+ }
+ }
+
+ def sub
+ precedence 60
+ associativity left
+ left x
+ named gap { @SupGap }
+ right y
+ {
+ @HContract @VContract
+ {
+ # x
+ "." @KernShrink x
+ /gap | @Smaller @HSqueeze @VSqueeze y
+ }
+ }
+
+ def tsub
+ precedence 60
+ associativity left
+ left x
+ named gap { @SupGap }
+ right y
+ {
+ @HContract @VContract
+ {
+ x
+ /gap | &0io 0.2f @HShift @Smaller @HSqueeze @VSqueeze y
+ }
+ }
+
+ def supp
+ precedence 60
+ associativity left
+ left x
+ named gap { @SupGap }
+ right y
+ {
+ @HContract @VContract
+ {
+ { ^/gap x /gap } | y
+ }
+ }
+
+ def on
+ precedence 61
+ associativity left
+ left x
+ named gap { @SupGap }
+ right y
+ {
+ @Smaller @HSqueeze @VSqueeze x ^/ /
+ @Smaller @HSqueeze @VSqueeze y
+ }
+
+ def ton
+ precedence 61
+ associativity left
+ left x
+ named gap { @SupGap }
+ right y
+ {
+ @Smaller @HSqueeze @VSqueeze x ^/ /
+ &0io 0.3f @HShift @Smaller @HSqueeze @VSqueeze y
+ }
+
+ def frac
+ precedence 54
+ associativity left
+ left x
+ named gap { 0.2f }
+ right y
+ {
+ @HContract @VContract @Smaller @HSqueeze @VSqueeze
+ { 1w @VShift { x /gap } | fraction &0io | 0w @VShift { |gap y }
+ }
+ }
+
+ def half { 1 frac 2 }
+ def third { 1 frac 3 }
+
+ def over
+ precedence 54
+ associativity left
+ left x
+ named gap { 0.2f }
+ right y
+ {
+ @HContract @VContract
+ { |0.5rt @OneCol @VSqueeze x
+ ^//gap @HLine
+ //gap |0.5rt @OneCol @VSqueeze @Strut y
+ }
+ }
+
+ def from
+ precedence 58
+ associativity left
+ left x
+ named gap { @ThinGap }
+ named skew { 0c }
+ right y
+ {
+ @HContract @VContract
+ { |0.5rt x
+ //gap |0.5rt &skew @Smaller @HSqueeze @VSqueeze y
+ }
+ }
+
+ def to
+ precedence 58
+ associativity left
+ left x
+ named gap { @ThinGap }
+ named skew { 0c }
+ right y
+ {
+ @HContract @VContract
+ { |0.5rt &skew @Smaller @HSqueeze @VSqueeze y
+ ^//gap |0.5rt x
+ }
+ }
+
+ def widefrom
+ precedence 58
+ associativity left
+ left x
+ named gap { @ThinGap }
+ right y
+ {
+ @HContract @VContract
+ {
+ x //gap @HScale y
+ }
+ }
+
+ def wideto
+ precedence 58
+ associativity left
+ left x
+ named gap { @ThinGap }
+ right y
+ {
+ @HContract @VContract
+ {
+ @HScale y ^//gap x
+ }
+ }
+
+ def dot
+ precedence 62
+ left x
+ named gap { @ThinGap }
+ {
+ x to gap { gap } skew { @SkewGap } .
+ }
+
+ def dotdot
+ precedence 62
+ left x
+ named gap { @ThinGap }
+ {
+ x to gap { gap } skew { @SkewGap } ..
+ }
+
+ def hat
+ precedence 62
+ left x
+ named gap { @ThinGap }
+ {
+ x to gap { gap } skew { @SkewGap } @Base "^"
+ }
+
+ def tilde
+ precedence 62
+ left x
+ named gap { @ThinGap }
+ {
+ x to gap { gap } skew { @SkewGap } @Base "~"
+ }
+
+ def vec
+ precedence 62
+ left x
+ named gap { @ThinGap }
+ {
+ x to gap { gap } skew { @SkewGap } arrowright
+ }
+
+ def dyad
+ precedence 62
+ left x
+ named gap { @ThinGap }
+ {
+ x to gap { gap } skew { @SkewGap } arrowboth
+ }
+
+ def overbar
+ precedence 62
+ left x
+ named gap { @ThinGap }
+ {
+ x wideto gap { gap } minus
+ }
+
+ def underbar
+ precedence 62
+ left x
+ named gap { @ThinGap }
+ {
+ x widefrom gap { gap } minus
+ }
+
+ def sqrt
+ precedence 56
+ named gap { @ThinGap }
+ right x
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ @HContract @VContract
+ {
+ @VScale surd | @OneRow
+ {
+ @HLine line { "0.03 ft setlinewidth 2 setlinecap" }
+ ^//gap |gap @VSqueeze @Strut x # //gap
+ }
+ }
+ }
+ PDF @Yield {
+ @HContract @VContract
+ {
+#
+# VT: this PDF is correct but it renders badly in Acrobat (?problem
+# with scaling by fractional factors)
+# In other words, the @VScale value comes through correctly but it
+# looks ugly; GhostScript's translation actually expands the
+# "draw surd" instruction into raw moveto's and lineto's which
+# it presumably gets from the font's definition of the glyph!
+#
+ @VScale surd | @OneRow
+ {
+ @HLine line { "__mul(__loutf, 0.03) w 2 J" }
+ ^//gap |gap @VSqueeze @Strut x # //gap
+ }
+ }
+ }
+ }
+ }
+
+ def root
+ precedence 56
+ left x
+ right y
+ {
+ "" sup x &0io sqrt y
+ }
+
+ def zroot
+ precedence 56
+ left x
+ right y
+ {
+ def zsup right x { "+0.3f" @VShift 0.5f @Font @Space x }
+
+ "-0.4f" @HShift { 1w @HShift { zsup x } } &0co sqrt y
+ }
+
+ def above
+ precedence 52
+ left x
+ named gap { @RowGap }
+ right y
+ {
+ |0.5rt x //gap |0.5rt y
+ }
+
+ def labove
+ precedence 52
+ left x
+ named gap { @RowGap }
+ right y
+ {
+ x //gap y
+ }
+
+ def cabove
+ precedence 52
+ left x
+ named gap { @RowGap }
+ right y
+ {
+ |0.5rt x //gap |0.5rt y
+ }
+
+ def rabove
+ precedence 52
+ left x
+ named gap { @RowGap }
+ right y
+ {
+ |1rt x //gap |1rt y
+ }
+
+ def mabove
+ precedence 52
+ left x
+ named gap { @RowGap }
+ right y
+ {
+ x /gap y
+ }
+
+ def nextcol
+ precedence 50
+ left x
+ named gap { @ColGap }
+ right y
+ {
+ x |gap y
+ }
+
+ export row axisrow col lcol ccol rcol mcol
+ def matrix
+ precedence 100
+ named gap { @MedGap }
+ named strut
+ named no { }
+ named No { }
+ named yes { 0.5f }
+ named Yes { 0.5f }
+ { No }
+ named atleft {}
+ named atright {}
+ named userow { No }
+ named shiftdelim { Yes }
+ body x
+ {
+ def @Strut
+ {
+ strut @Case {
+ "" @Yield {}
+ else @Yield { @OneRow { strut @High ^/ strut @High } }
+ }
+ }
+
+ def newrow
+ precedence 50
+ associativity left
+ left x
+ right y
+ {
+ x @Case {
+ "" @Yield { y | @Strut }
+ else @Yield { x /@RowGap y | @Strut }
+ }
+ }
+
+ macro row { newrow "" }
+
+ def newaxisrow
+ precedence 50
+ associativity left
+ left x
+ right y
+ {
+ x @Case {
+ "" @Yield { y | @Strut }
+ else @Yield { x ^/@RowGap y | @Strut }
+ }
+ }
+
+ macro axisrow { newaxisrow "" }
+
+ def col
+ precedence 52
+ associativity left
+ left x
+ named indent { 0.5rt }
+ right y
+ {
+ x @Case {
+ "" @Yield { &indent @OneCol y }
+ else @Yield { x |@ColGap &indent @OneCol y }
+ }
+ }
+
+ def lcol
+ precedence 52
+ associativity left
+ left x
+ right y
+ {
+ x col indent { 0i } y
+ }
+
+ def ccol
+ precedence 52
+ associativity left
+ left x
+ right y
+ {
+ x col indent { 0.5rt } y
+ }
+
+ def rcol
+ precedence 52
+ associativity left
+ left x
+ right y
+ {
+ x col indent { 1rt } y
+ }
+
+ def mcol
+ precedence 52
+ associativity left
+ left x
+ right y
+ {
+ x @Case {
+ "" @Yield { @OneCol y }
+ else @Yield { x |@ColGap @OneCol y }
+ }
+ }
+
+ def delim right x
+ {
+ x @Case
+ {
+ "" @Yield @Null
+ else @Yield
+ {
+ shiftdelim @Case {
+ { Yes yes } @Yield { @VScale x }
+ else @Yield { @VCover x }
+ }
+ }
+ }
+ }
+
+ @HContract @VContract {
+ delim atleft &@ThinGap
+ userow @Case {
+ {Yes yes} @Yield @HContract @VContract {^//gap @OneRow x //gap}
+ else @Yield vctr @HContract @VContract { //gap x //gap }
+ }
+ &@ThinGap delim atright
+ }
+ }
+
+ macro pmatrix { matrix atleft { "1.5f" @Font ( } atright { "1.5f" @Font ) }}
+ macro bmatrix { matrix atleft { blbrack } atright { brbrack } }
+ macro brmatrix { matrix atleft { blbrace } atright { brbrace } }
+ macro fmatrix { matrix atleft { blfloor } atright { brfloor } }
+ macro cmatrix { matrix atleft { blceil } atright { brceil } }
+ macro amatrix { matrix atleft { blangle } atright { brangle } }
+
+ ###################################################################
+ # #
+ # Group 5 (digits) #
+ # #
+ ###################################################################
+
+ def "0" { zero }
+ def "1" { one }
+ def "2" { two }
+ def "3" { three }
+ def "4" { four }
+ def "5" { five }
+ def "6" { six }
+ def "7" { seven }
+ def "8" { eight }
+ def "9" { nine }
+
+
+ { Slope xheight2mark nostrut } @Font { separate @SpaceGap } @Space
+ initzunit @ZUnit 1f @YUnit @Body
+
+@End @Eq
+
+macro @E { @OneCol @Eq initzunit { 0.7f } }
diff --git a/include/include/fig b/include/include/fig
new file mode 100644
index 0000000..60395ae
--- /dev/null
+++ b/include/include/fig
@@ -0,0 +1,29 @@
+###############################################################################
+# #
+# Lout setup file for figure drawing (OBSOLETE: use @Diag instead) #
+# #
+# Jeffrey H. Kingston #
+# 5 February 1999 #
+# #
+# This file has been placed in the public domain by its author. #
+# #
+###############################################################################
+
+
+###############################################################################
+# #
+# The @SysInclude { figf } line #
+# #
+# This line causes Lout to read the definitions for equations, and should #
+# not be touched. #
+# #
+###############################################################################
+
+@SysInclude { figf }
+
+
+###############################################################################
+# #
+# This package does not offer the ability to change default options. #
+# #
+###############################################################################
diff --git a/include/include/figf b/include/include/figf
new file mode 100644
index 0000000..0fd060f
--- /dev/null
+++ b/include/include/figf
@@ -0,0 +1,926 @@
+
+###############################################################################
+# #
+# Lout @Fig package for drawing figures (Version 2.0) #
+# #
+# Version 1.0 by Jeffrey H. Kingston, October 1991. #
+# Version 2.0 by Jeffrey H. Kingston, 22 December 1992. #
+# Symbol names changed by JHK 5 March 1993 to avoid clashes with EPS files. #
+# @CurveBox and @ShadowBox added by JHK April 1995. #
+# #
+# See "Fig - a Lout package for drawing figures" for user information. #
+# #
+# This package is now obsolete, having been replaced by @Diag. #
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either Version 3, or (at your option) #
+# any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA #
+# #
+# As a special exception, when this file is read by Lout when processing #
+# a Lout source document, you may use the result without restriction. #
+# #
+###############################################################################
+
+@SysPrependGraphic { "figf.lpg" }
+
+export in cm pt em sp vs ft dg
+ "<<" "**" "++" "--" @Max @Min
+ @Distance @XDistance @YDistance @Angle
+ @Prev "::" @Label @BaseOf @MarkOf @ShowLabels @Figure
+ @Frame @Box @CurveBox @ShadowBox @Square @Diamond @Polygon @Ellipse
+ @Circle @HLine @VLine @Line @HArrow @VArrow @Arrow @Arc
+
+def @Fig
+ named maxlabels { 200 }
+ named linestyle { solid }
+ named linewidth { 0.5 pt }
+ named linecap { round }
+ named dashlength { 0.15 cm }
+ named paint { nopaint }
+ named margin { 0.4c }
+ named arrow { noarrow }
+ named headstyle { open }
+ named headwidth { 0.05 cm }
+ named headlength { 0.15 cm }
+ body @Body
+@Begin
+
+ # Like @Graphic, but affects the graphics state of right parameter
+ def @InnerGraphic
+ left ps
+ right x
+ {
+ @BackEnd @Case {
+ PostScript @Yield { { ps gsave // grestore } @Graphic x }
+ PDF @Yield { }
+ }
+ }
+
+ def in precedence 39 left x {
+ @BackEnd @Case {
+ PostScript @Yield { x "in" }
+ PDF @Yield { "__mul(__in, "x")" }
+ }
+ }
+
+ def cm precedence 39 left x {
+ @BackEnd @Case {
+ PostScript @Yield { x "cm" }
+ PDF @Yield { "__mul(__cm, "x")" }
+ }
+ }
+
+ def pt precedence 39 left x {
+ @BackEnd @Case {
+ PostScript @Yield { x "pt" }
+ PDF @Yield { "__mul(__pt, "x")" }
+ }
+ }
+
+ def em precedence 39 left x {
+ @BackEnd @Case {
+ PostScript @Yield { x "em" }
+ PDF @Yield { "__mul(__em, "x")" }
+ }
+ }
+
+ def sp precedence 39 left x {
+ @BackEnd @Case {
+ PostScript @Yield { x "sp" }
+ PDF @Yield { "__mul(__louts, "x")" }
+ }
+ }
+
+ def vs precedence 39 left x {
+ @BackEnd @Case {
+ PostScript @Yield { x "vs" }
+ PDF @Yield { "__mul(__loutv, "x")" }
+ }
+ }
+
+ def ft precedence 39 left x {
+ @BackEnd @Case {
+ PostScript @Yield { x "ft" }
+ PDF @Yield { "__mul(__loutf, "x")" }
+ }
+ }
+
+ def dg precedence 39 left x {
+ @BackEnd @Case {
+ PostScript @Yield { x "dg" }
+ PDF @Yield { }
+ }
+ }
+
+ def "<<"
+ precedence 38
+ left length
+ right angle
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ 0 0 length angle "lfigatangle"
+ }
+ PDF @Yield {
+ }
+ }
+ }
+
+ def "**"
+ precedence 37
+ left point
+ right length
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ point length "lfigpmul"
+ }
+ PDF @Yield {
+ }
+ }
+ }
+
+ def "++"
+ precedence 36
+ associativity left
+ left x
+ right y
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ x y "lfigpadd"
+ }
+ PDF @Yield {
+ }
+ }
+ }
+
+ def "--"
+ precedence 36
+ associativity left
+ left x
+ right y
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ y x "lfigpsub"
+ }
+ PDF @Yield {
+ }
+ }
+ }
+
+ def @Max
+ precedence 36
+ left x
+ right y
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ x y "lfigpmax"
+ }
+ PDF @Yield {
+ }
+ }
+ }
+
+ def @Min
+ precedence 36
+ left x
+ right y
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ x y "lfigpmin"
+ }
+ PDF @Yield {
+ }
+ }
+ }
+
+ def @Distance
+ precedence 35
+ left x
+ right y
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ x y "lfigdistance"
+ }
+ PDF @Yield {
+ }
+ }
+ }
+
+ def @XDistance
+ precedence 35
+ left x
+ right y
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ x y "lfigxdistance"
+ }
+ PDF @Yield {
+ }
+ }
+ }
+
+ def @YDistance
+ precedence 35
+ left x
+ right y
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ x y "lfigydistance"
+ }
+ PDF @Yield {
+ }
+ }
+ }
+
+ def @Angle
+ precedence 35
+ left x
+ right y
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ x y "lfigangle"
+ }
+ PDF @Yield {
+ }
+ }
+ }
+
+ def @Prev
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ "lfigprevious"
+ }
+ PDF @Yield {
+ }
+ }
+ }
+
+ def "::"
+ precedence 33
+ left name
+ right x
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ { "currentdict end" maxlabels "dict begin begin"
+ // "("name") lfigpromotelabels" } @Graphic x
+ }
+ PDF @Yield {
+ }
+ }
+ }
+
+ def @Label
+ right name
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ "/"name "lfigpointdef"
+ }
+ PDF @Yield {
+ }
+ }
+ }
+
+ def @MarkOf
+ precedence 32
+ left point
+ right x
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ { point "translate" } @InnerGraphic
+ {
+ /0io |0io @OneCol @OneRow x |0io /0io
+ }
+ }
+ PDF @Yield {
+ }
+ }
+ }
+
+ def @BaseOf
+ precedence 32
+ left point
+ right x
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ { point "translate" } @InnerGraphic
+ {
+ /0io |0io @OneRow @OneCol {
+ | @OneCol @OneRow x ^/
+ } |0io /0io
+ }
+ }
+ PDF @Yield {
+ }
+ }
+ }
+
+ def @ShowLabels
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ "lfigshowlabels" @Graphic
+ }
+ PDF @Yield {
+ }
+ }
+ }
+
+ def @Figure
+ named shape { }
+ named linestyle { linestyle }
+ named linewidth { linewidth }
+ named linecap { linecap }
+ named dashlength { dashlength }
+ named arrow { arrow }
+ named headstyle { headstyle }
+ named headwidth { headwidth }
+ named headlength { headlength }
+ named paint { paint }
+ named margin { 0c }
+ right x
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ @HContract @VContract
+ {
+ #fill the shape
+ paint @Case
+ {
+ nopaint @Yield {}
+
+ { nochange darkblue blue lightblue darkgreen green lightgreen
+ darkred red lightred darkcyan cyan lightcyan darkmagenta
+ magenta lightmagenta darkyellow yellow lightyellow darkgray
+ gray lightgray darkgrey grey lightgrey black white }
+ @Yield
+ { "/lfig"paint "[" shape "] gsave lfigpaintpath grestore" }
+ }
+
+ # stroke the path and add any arrowheads
+ linestyle @Case
+ {
+ { solid dashed cdashed dotted noline } @Yield
+ {
+ linewidth "setlinewidth" "lfig"linecap "setlinecap"
+ dashlength "/lfig"linestyle "[" shape "] lfigdopath"
+ arrow @Case
+ {
+ noarrow @Yield { pop pop }
+ { forward back both } @Yield
+ { dashlength "/lfig"linestyle "/"lfigblack
+ headstyle @Case
+ { { open halfopen closed } @Yield "lfig"headstyle }
+ headlength headwidth "lfig"arrow
+ }
+ }
+ }
+ }
+ }
+ @Graphic
+ {
+ ^/margin ^|margin @OneCol @OneRow x |margin
+ /margin
+ }
+ }
+
+ PDF @Yield {
+ }
+ }
+ }
+
+ def @Frame
+ right x
+ {
+ @Figure
+ shape {xsize 0 @Label X 0 ysize @Label Y}
+ { x }
+ }
+
+ def @Box
+ named linestyle { linestyle }
+ named linewidth { linewidth }
+ named linecap { linecap }
+ named dashlength { dashlength }
+ named paint { paint }
+ named margin { margin }
+ right x
+ {
+ @Figure
+ shape {
+ # 0 0 @Label SW
+ # xsize 0 @Label SE
+ # xsize ysize @Label NE
+ # 0 ysize @Label NW
+ # SE ** 0.5 @Label S
+ # NW ** 0.5 @Label W
+ # W ++ SE @Label E
+ # S ++ NW @Label N
+ # NE ** 0.5 @Label CTR
+ # SW SE NE NW SW
+ lfigbox
+ }
+ linestyle { linestyle }
+ linewidth { linewidth }
+ linecap { linecap }
+ dashlength { dashlength }
+ paint { paint }
+ margin { margin }
+ x
+ }
+
+
+ def @CurveBox
+ named linestyle { linestyle }
+ named linewidth { linewidth }
+ named linecap { linecap }
+ named dashlength { dashlength }
+ named paint { paint }
+ named margin { margin }
+ right x
+ {
+ @Figure
+ shape {
+ lfigcurvebox
+ }
+ linestyle { linestyle }
+ linewidth { linewidth }
+ linecap { linecap }
+ dashlength { dashlength }
+ paint { paint }
+ margin { margin }
+ { 0c @HShift x }
+ }
+
+ def @ShadowBox
+ named linestyle { linestyle }
+ named linewidth { linewidth }
+ named linecap { linecap }
+ named dashlength { dashlength }
+ named paint { paint }
+ named margin { margin }
+ named shadow { 0.2f }
+ right x
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ @VContract @HContract 0c @HShift "lfigshadow" @Graphic
+ {
+ ^/shadow ^|shadow 0c @HShift
+ @Figure
+ shape {
+ lfigbox
+ }
+ linestyle { linestyle }
+ linewidth { linewidth }
+ linecap { linecap }
+ dashlength { dashlength }
+ paint { paint }
+ margin { margin }
+ 0c @HShift x
+ |shadow /shadow
+ }
+ }
+ PDF @Yield {
+ @VContract @HContract 0c @HShift
+
+# "lfigshadow" @Graphic is this:
+ { "__mul(__xmark, 2) 0 m __xsize 0 l" # xmark 2 mul 0 moveto xsize 0 lineto
+ "__xsize __sub(__ysize, __mul(__xmark, 2)) l" # xsize ysize xmark 2 mul sub lineto
+ "__sub(__xsize, __xmark) __sub(ysize, __mul(__xmark, 2)) l" # xsize xmark sub ysize xmark 2 mul sub lineto
+ "__sub(__xsize, __xmark) __xmark l" # xsize xmark sub xmark lineto
+ "__mul(__xmark, 2) __xmark l h f" # xmark 2 mul xmark lineto closepath fill
+ } @Graphic
+
+ {
+ ^/shadow ^|shadow 0c @HShift
+ @Figure
+ shape {
+ lfigbox
+ }
+ linestyle { linestyle }
+ linewidth { linewidth }
+ linecap { linecap }
+ dashlength { dashlength }
+ paint { paint }
+ margin { margin }
+ 0c @HShift x
+ |shadow /shadow
+ }
+ }
+ }
+ }
+
+ def @Square
+ named linestyle { linestyle }
+ named linewidth { linewidth }
+ named linecap { linecap }
+ named dashlength { dashlength }
+ named paint { paint }
+ named margin { margin }
+ right x
+ {
+ @Figure
+ shape {
+ # {xsize ysize} ** 0.5 @Label CTR
+ # CTR ++ {{xsize xsize} @Max {ysize ysize}}**0.5 @Label NE
+ # CTR ++ { {CTR @Distance NE} << 135 } @Label NW
+ # CTR ++ { {CTR @Distance NE} << 225 } @Label SW
+ # CTR ++ { {CTR @Distance NE} << 315 } @Label SE
+ # SW ** 0.5 ++ SE ** 0.5 @Label S
+ # NW ** 0.5 ++ NE ** 0.5 @Label N
+ # SW ** 0.5 ++ NW ** 0.5 @Label W
+ # SE ** 0.5 ++ NE ** 0.5 @Label E
+ # SW SE NE NW SW
+ lfigsquare
+ }
+ linestyle { linestyle }
+ linewidth { linewidth }
+ linecap { linecap }
+ dashlength { dashlength }
+ paint { paint }
+ margin { margin }
+ x
+ }
+
+ def @Diamond
+ named linestyle { linestyle }
+ named linewidth { linewidth }
+ named linecap { linecap }
+ named dashlength { dashlength }
+ named paint { paint }
+ named margin { margin }
+ right x
+ {
+ @Figure
+ shape {
+ # {xsize 0} ** 0.5 @Label S
+ # {0 ysize} ** 0.5 @Label W
+ # S ++ W @Label CTR
+ # CTR ++ W @Label N
+ # CTR ++ S @Label E
+ # S E N W S
+ lfigdiamond
+ }
+ linestyle { linestyle }
+ linewidth { linewidth }
+ linecap { linecap }
+ dashlength { dashlength }
+ paint { paint }
+ margin { margin }
+ x
+ }
+
+ def @Polygon
+ named linestyle { linestyle }
+ named linewidth { linewidth }
+ named linecap { linecap }
+ named dashlength { dashlength }
+ named paint { paint }
+ named margin { margin }
+ named sides { 3 }
+ named angle { "dup 180 exch div" }
+ right x
+ {
+ @Figure
+ shape { sides angle lfigpolygon }
+ linestyle { linestyle }
+ linewidth { linewidth }
+ linecap { linecap }
+ dashlength { dashlength }
+ paint { paint }
+ margin { margin }
+ x
+ }
+
+ def @Ellipse
+ named linestyle { linestyle }
+ named linewidth { linewidth }
+ named linecap { linecap }
+ named dashlength { dashlength }
+ named paint { paint }
+ named margin { margin }
+ right x
+ {
+ @Figure
+ shape {
+ # {xsize 0} ** 0.5 @Label S
+ # {0 ysize} ** 0.5 @Label W
+ # S ++ W @Label CTR
+ # CTR ++ W @Label N
+ # CTR ++ S @Label E
+ # CTR ++ {xsize 0} ** 0.3536 ++ {0 ysize} ** 0.3536 @Label NE
+ # CTR ++ {xsize 0} ** 0.3536 -- {0 ysize} ** 0.3536 @Label SE
+ # CTR -- {xsize 0} ** 0.3536 ++ {0 ysize} ** 0.3536 @Label NW
+ # CTR -- {xsize 0} ** 0.3536 -- {0 ysize} ** 0.3536 @Label SW
+ # S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S
+ lfigellipse
+ }
+ linestyle { linestyle }
+ linewidth { linewidth }
+ linecap { linecap }
+ dashlength { dashlength }
+ paint { paint }
+ margin { margin }
+ x
+ }
+
+ def @Circle
+ named linestyle { linestyle }
+ named linewidth { linewidth }
+ named linecap { linecap }
+ named dashlength { dashlength }
+ named paint { paint }
+ named margin { margin }
+ right x
+ {
+ @Figure
+ shape {
+ # {xsize ysize} **0.5 @Label CTR
+ # CTR ++ {{xsize 0} @Max {ysize 0}}**0.5 @Label E
+ # CTR ++ { {CTR @Distance E} << 45 } @Label NE
+ # CTR ++ { {CTR @Distance E} << 90 } @Label N
+ # CTR ++ { {CTR @Distance E} << 135 } @Label NW
+ # CTR ++ { {CTR @Distance E} << 180 } @Label W
+ # CTR ++ { {CTR @Distance E} << 225 } @Label SW
+ # CTR ++ { {CTR @Distance E} << 270 } @Label S
+ # CTR ++ { {CTR @Distance E} << 315 } @Label SE
+ # S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S
+ lfigcircle
+ }
+ linestyle { linestyle }
+ linewidth { linewidth }
+ linecap { linecap }
+ dashlength { dashlength }
+ paint { paint }
+ margin { margin }
+ x
+ }
+
+ def @HLine
+ named linestyle { linestyle }
+ named linewidth { linewidth }
+ named linecap { linecap }
+ named dashlength { dashlength }
+ named paint { paint }
+ named margin { 0c }
+ named arrow { arrow }
+ named headstyle { headstyle }
+ named headwidth { headwidth }
+ named headlength { headlength }
+ right x
+ {
+ @Figure
+ shape {
+ # 0 ymark @Prev @Label FROM
+ # xsize ymark @Prev @Label TO
+ lfighline
+ }
+ linestyle { linestyle }
+ linewidth { linewidth }
+ linecap { linecap }
+ dashlength { dashlength }
+ paint { paint }
+ margin { margin }
+ arrow { arrow }
+ headstyle { headstyle }
+ headwidth { headwidth }
+ headlength { headlength }
+ x
+ }
+
+ def @VLine
+ named linestyle { linestyle }
+ named linewidth { linewidth }
+ named linecap { linecap }
+ named dashlength { dashlength }
+ named paint { paint }
+ named margin { 0c }
+ named arrow { arrow }
+ named headstyle { headstyle }
+ named headwidth { headwidth }
+ named headlength { headlength }
+ right x
+ {
+ @Figure
+ shape {
+ # xmark ysize @Prev @Label FROM
+ # xmark 0 @Prev @Label TO
+ lfigvline
+ }
+ linestyle { linestyle }
+ linewidth { linewidth }
+ linecap { linecap }
+ dashlength { dashlength }
+ paint { paint }
+ margin { margin }
+ arrow { arrow }
+ headstyle { headstyle }
+ headwidth { headwidth }
+ headlength { headlength }
+ x
+ }
+
+ def @HArrow
+ named linestyle { linestyle }
+ named linewidth { linewidth }
+ named linecap { linecap }
+ named dashlength { dashlength }
+ named paint { paint }
+ named margin { 0c }
+ named arrow { forward }
+ named headstyle { headstyle }
+ named headwidth { headwidth }
+ named headlength { headlength }
+ right x
+ {
+ @Figure
+ shape {
+ # 0 ymark @Prev @Label FROM
+ # xsize ymark @Prev @Label TO
+ lfighline
+ }
+ linestyle { linestyle }
+ linewidth { linewidth }
+ linecap { linecap }
+ dashlength { dashlength }
+ paint { paint }
+ margin { margin }
+ arrow { arrow }
+ headstyle { headstyle }
+ headwidth { headwidth }
+ headlength { headlength }
+ x
+ }
+
+ def @VArrow
+ named linestyle { linestyle }
+ named linewidth { linewidth }
+ named linecap { linecap }
+ named dashlength { dashlength }
+ named paint { paint }
+ named margin { 0c }
+ named arrow { forward }
+ named headstyle { headstyle }
+ named headwidth { headwidth }
+ named headlength { headlength }
+ right x
+ {
+ @Figure
+ shape {
+ # xmark ysize @Prev @Label FROM
+ # xmark 0 @Prev @Label TO
+ lfigvline
+ }
+ linestyle { linestyle }
+ linewidth { linewidth }
+ linecap { linecap }
+ dashlength { dashlength }
+ paint { paint }
+ margin { margin }
+ arrow { arrow }
+ headstyle { headstyle }
+ headwidth { headwidth }
+ headlength { headlength }
+ x
+ }
+
+ def @Line
+ named from { 0 ysize }
+ named to { xsize 0 }
+ named linestyle { linestyle }
+ named linewidth { linewidth }
+ named linecap { linecap }
+ named dashlength { dashlength }
+ named paint { paint }
+ named margin { 0c }
+ named arrow { arrow }
+ named headstyle { headstyle }
+ named headwidth { headwidth }
+ named headlength { headlength }
+ right x
+ {
+ @Figure
+ shape {
+ from @Prev @Label FROM
+ to @Prev @Label TO
+ }
+ linestyle { linestyle }
+ linewidth { linewidth }
+ linecap { linecap }
+ dashlength { dashlength }
+ paint { paint }
+ margin { margin }
+ arrow { arrow }
+ headstyle { headstyle }
+ headwidth { headwidth }
+ headlength { headlength }
+ x
+ }
+
+ def @Arrow
+ named from { 0 ysize }
+ named to { xsize 0 }
+ named linestyle { linestyle }
+ named linewidth { linewidth }
+ named linecap { linecap }
+ named dashlength { dashlength }
+ named paint { paint }
+ named margin { 0c }
+ named arrow { forward }
+ named headstyle { headstyle }
+ named headwidth { headwidth }
+ named headlength { headlength }
+ right x
+ {
+ @Figure
+ shape {
+ from @Prev @Label FROM
+ to @Prev @Label TO
+ }
+ linestyle { linestyle }
+ linewidth { linewidth }
+ linecap { linecap }
+ dashlength { dashlength }
+ paint { paint }
+ margin { margin }
+ arrow { arrow }
+ headstyle { headstyle }
+ headwidth { headwidth }
+ headlength { headlength }
+ x
+ }
+
+ def @Arc
+ named from { 0 ysize }
+ named to { xsize 0 }
+ named ctr { 0 0 }
+ named direction { clockwise }
+ named linestyle { linestyle }
+ named linewidth { linewidth }
+ named linecap { linecap }
+ named dashlength { dashlength }
+ named paint { paint }
+ named margin { 0c }
+ named arrow { noarrow }
+ named headstyle { headstyle }
+ named headwidth { headwidth }
+ named headlength { headlength }
+ right x
+ {
+ @Figure
+ shape {
+ from @Label FROM
+ to @Label TO
+ ctr @Label CTR
+ FROM [ CTR
+ direction @Case { {clockwise anticlockwise} @Yield direction }
+ ] TO
+ }
+ linestyle { linestyle }
+ linewidth { linewidth }
+ linecap { linecap }
+ dashlength { dashlength }
+ paint { paint }
+ margin { margin }
+ arrow { arrow }
+ headstyle { headstyle }
+ headwidth { headwidth }
+ headlength { headlength }
+ x
+ }
+
+ @BackEnd @Case {
+ PostScript @Yield {
+ { "grestore save gsave" maxlabels "dict begin lfigdict begin"
+ // "end end restore"
+ } @Graphic @Body
+ }
+ PDF @Yield {
+ }
+ }
+
+@End @Fig
diff --git a/include/include/figf.lpg b/include/include/figf.lpg
new file mode 100644
index 0000000..7465cef
--- /dev/null
+++ b/include/include/figf.lpg
@@ -0,0 +1,1010 @@
+%%BeginResource: procset LoutFigPrependGraphic
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% PostScript @SysPrependGraphic file for @Fig Jeffrey H. Kingston %
+% Version 2.0 (includes CIRCUM label) January 1992 %
+% %
+% This file has been placed in the public domain by its author, %
+% Jeffrey H. Kingston %
+% %
+% Although Fig is now obsolete I have updated it 20 October 2002 %
+% to work with textures, i.e. replacing setrgbcolor with %
+% LoutSetRGBColor. %
+% %
+% To assist in avoiding name clashes, the names of all symbols %
+% defined here begin with "lfig". However, this is not feasible %
+% with user-defined labels and some labels used by users. %
+% %
+% <point> is two numbers, a point. %
+% <length> is one number, a length %
+% <angle> is one number, an angle in degrees %
+% <dashlength> is one number, the preferred length of a dash %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+errordict begin
+ /handleerror
+ {
+ { /Times-Roman findfont 8 pt scalefont setfont
+ 0 setgray 4 pt 4 pt moveto
+ $error /errorname get
+ dup lfigdict exch known
+ { lfigdict exch get }
+ { 30 string cvs } ifelse
+ show
+ ( Command: ) show
+ $error /command get 30 string cvs show
+ } stopped {} if
+ showpage stop
+ } def
+end
+
+% concat strings: <string> <string> lfigconcat <string>
+% must be defined outside lfigdict since used in lfigpromotelabels
+/lfigconcat
+{ 2 copy length exch length add string
+ dup 0 4 index putinterval
+ dup 3 index length 3 index putinterval
+ 3 1 roll pop pop
+} def
+
+% <string> lfigdebugprint -
+% must be defined outside lfigdict since used in arbitrary places
+% /lfigdebugprint
+% { print
+% (; operand stack:\n) print
+% count copy
+% count 2 idiv
+% { ==
+% (\n) print
+% } repeat
+% (\n) print
+% } def
+
+/lfigdict 120 dict def
+lfigdict begin
+
+% error messages
+/dictfull (dictfull error: too many labels?) def
+/dictstackoverflow (dictstackoverflow error: labels nested too deeply?) def
+/execstackoverflow (execstackoverflow error: figure nested too deeply?) def
+/limitcheck (limitcheck error: figure nested too deeply or too large?) def
+/syntaxerror (syntaxerror error: syntax error in text of figure?) def
+/typecheck (typecheck error: syntax error in text of figure?) def
+/undefined (undefined error: unknown or misspelt label?) def
+/VMError (VMError error: run out of memory?) def
+
+% push pi onto stack: - lfigpi <num>
+/lfigpi 3.14159 def
+
+% arc directions
+/clockwise false def
+/anticlockwise true def
+
+% maximum of two numbers: <num> <num> lfigmax <num>
+/lfigmax { 2 copy gt { pop } { exch pop } ifelse } def
+
+% minimum of two numbers: <num> <num> lfigmin <num>
+/lfigmin { 2 copy lt { pop } { exch pop } ifelse } def
+
+% add two points: <point> <point> lfigpadd <point>
+/lfigpadd { exch 3 1 roll add 3 1 roll add exch } def
+
+% subtract first point from second: <point> <point> lfigpsub <point>
+/lfigpsub { 3 2 roll sub 3 1 roll exch sub exch } def
+
+% max two points: <point> <point> lfigpmax <point>
+/lfigpmax { exch 3 1 roll lfigmax 3 1 roll lfigmax exch } def
+
+% min two points: <point> <point> lfigpmin <point>
+/lfigpmin { exch 3 1 roll lfigmin 3 1 roll lfigmin exch } def
+
+% scalar multiplication: <point> <num> lfigpmul <point>
+/lfigpmul { dup 3 1 roll mul 3 1 roll mul exch } def
+
+% point at angle and distance: <point> <length> <angle> lfigatangle <point>
+/lfigatangle { 2 copy cos mul 3 1 roll sin mul lfigpadd } def
+
+% angle from one point to another: <point> <point> lfigangle <angle>
+/lfigangle { lfigpsub 2 copy 0 eq exch 0 eq and {pop} {exch atan} ifelse } def
+
+% distance between two points: <point> <point> lfigdistance <length>
+/lfigdistance { lfigpsub dup mul exch dup mul add sqrt } def
+
+% difference in x coords: <point> <point> lfigxdistance <length>
+/lfigxdistance { pop 3 1 roll pop sub } def
+
+%difference in y coords: <point> <point> lfigydistance <length>
+/lfigydistance { 3 1 roll pop sub exch pop } def
+
+% stroke a solid line: <length> <dashlength> lfigsolid -
+/lfigsolid
+{ pop pop [] 0 setdash stroke
+} def
+
+% stroke a lfigdashed line: <length> <dashlength> lfigdashed -
+/lfigdashed
+{ 2 copy div 2 le 1 index 0 le or
+ { exch pop 1 pt lfigmax [ exch dup ] 0 setdash }
+ { dup [ exch 4 2 roll 2 copy div
+ 1 sub 2 div ceiling dup 4 1 roll
+ 1 add mul sub exch div ] 0 setdash
+ } ifelse stroke
+} def
+
+% stroke a lfigcdashed line: <length> <dashlength> lfigcdashed -
+/lfigcdashed
+{ 2 copy le 1 index 0 le or
+ { exch pop 1 pt lfigmax [ exch dup ] dup 0 get 2 div setdash }
+ { dup [ 4 2 roll exch 2 copy exch div
+ 2 div ceiling div 1 index sub
+ ] exch 2 div setdash
+ } ifelse stroke
+} def
+
+% stroke a dotted line: <length> <dashlength> lfigdotted -
+/lfigdotted
+{ 2 copy le 1 index 0 le or
+ { exch pop 1 pt lfigmax [ exch 0 exch ] 0 setdash }
+ { 1 index exch div ceiling div
+ [ 0 3 2 roll ] 0 setdash
+ } ifelse stroke
+} def
+
+% stroke a noline line: <length> <dashlength> lfignoline -
+/lfignoline
+{ pop pop
+} def
+
+% painting (i.e. filling): - lfigwhite - (etc.)
+/lfignopaint { } def
+/lfignochange { fill } def
+/lfigdarkblue { 0.0 0.0 0.5 LoutSetRGBColor fill } def
+/lfigblue { 0.0 0.0 1.0 LoutSetRGBColor fill } def
+/lfiglightblue { 0.5 0.5 1.0 LoutSetRGBColor fill } def
+/lfigdarkgreen { 0.0 0.5 0.0 LoutSetRGBColor fill } def
+/lfiggreen { 0.0 1.0 0.0 LoutSetRGBColor fill } def
+/lfiglightgreen { 0.5 1.0 0.5 LoutSetRGBColor fill } def
+/lfigdarkred { 0.5 0.0 0.0 LoutSetRGBColor fill } def
+/lfigred { 1.0 0.0 0.0 LoutSetRGBColor fill } def
+/lfiglightred { 1.0 0.5 0.5 LoutSetRGBColor fill } def
+/lfigdarkcyan { 0.0 0.5 0.5 LoutSetRGBColor fill } def
+/lfigcyan { 0.0 1.0 1.0 LoutSetRGBColor fill } def
+/lfiglightcyan { 0.5 1.0 1.0 LoutSetRGBColor fill } def
+/lfigdarkmagenta { 0.5 0.0 0.5 LoutSetRGBColor fill } def
+/lfigmagenta { 1.0 0.0 1.0 LoutSetRGBColor fill } def
+/lfiglightmagenta { 1.0 0.5 1.0 LoutSetRGBColor fill } def
+/lfigdarkyellow { 0.5 0.5 0.0 LoutSetRGBColor fill } def
+/lfigyellow { 1.0 1.0 0.0 LoutSetRGBColor fill } def
+/lfiglightyellow { 1.0 1.0 0.5 LoutSetRGBColor fill } def
+/lfigdarkgray { 0.2 0.2 0.2 LoutSetRGBColor fill } def
+/lfiggray { 0.5 0.5 0.5 LoutSetRGBColor fill } def
+/lfiglightgray { 0.8 0.8 0.8 LoutSetRGBColor fill } def
+/lfigdarkgrey { 0.2 0.2 0.2 LoutSetRGBColor fill } def
+/lfiggrey { 0.5 0.5 0.5 LoutSetRGBColor fill } def
+/lfiglightgrey { 0.8 0.8 0.8 LoutSetRGBColor fill } def
+/lfigblack { 0.0 0.0 0.0 LoutSetRGBColor fill } def
+/lfigwhite { 1.0 1.0 1.0 LoutSetRGBColor fill } def
+
+% line caps (and joins, not currently used)
+/lfigbutt 0 def
+/lfiground 1 def
+/lfigprojecting 2 def
+/lfigmiter 0 def
+/lfigbevel 2 def
+
+% shape and labels of the @Box symbol
+/lfigbox
+{
+ 0 0 /SW lfigpointdef
+ xsize 0 /SE lfigpointdef
+ xsize ysize /NE lfigpointdef
+ 0 ysize /NW lfigpointdef
+ SE 0.5 lfigpmul /S lfigpointdef
+ NW 0.5 lfigpmul /W lfigpointdef
+ W SE lfigpadd /E lfigpointdef
+ S NW lfigpadd /N lfigpointdef
+ NE 0.5 lfigpmul /CTR lfigpointdef
+ [ CTR NE lfigpsub /lfigboxcircum cvx ] lfigcircumdef
+ SW SE NE NW SW
+} def
+
+% shape and labels of the @CurveBox symbol
+/lfigcurvebox
+{
+
+ xsize 0.5 mul ysize 0.5 mul /CTR lfigpointdef
+ xsize 0.5 mul 0 /S lfigpointdef
+ xsize ysize 0.5 mul /E lfigpointdef
+ xsize 0.5 mul ysize /N lfigpointdef
+ 0 ysize 0.5 mul /W lfigpointdef
+
+ xmark 0.293 mul xmark 0.293 mul /SW lfigpointdef
+ xsize xmark 0.293 mul sub xmark 0.293 mul /SE lfigpointdef
+ xsize xmark 0.293 mul sub ysize xmark 0.293 mul sub /NE lfigpointdef
+ xmark 0.293 mul ysize xmark 0.293 mul sub /NW lfigpointdef
+
+ [ xsize ysize 0.5 lfigpmul xmark /lfigcurveboxcircum cvx ] lfigcircumdef
+
+ xmark 0
+ xsize xmark sub 0
+ [ xsize xmark sub xmark ]
+ xsize xmark
+ xsize ysize xmark sub
+ [ xsize xmark sub ysize xmark sub ]
+ xsize xmark sub ysize
+ xmark ysize
+ [ xmark ysize xmark sub ]
+ 0 ysize xmark sub
+ 0 xmark
+ [ xmark xmark ]
+ xmark 0
+} def
+
+% shadow of the @ShadowBox symbol
+% its shape and labels are done, somewhat inaccurately, with lfigbox
+/lfigshadow
+{ xmark 2 mul 0 moveto xsize 0 lineto
+ xsize ysize xmark 2 mul sub lineto
+ xsize xmark sub ysize xmark 2 mul sub lineto
+ xsize xmark sub xmark lineto
+ xmark 2 mul xmark lineto closepath fill
+} def
+
+% shape and labels of the @Square symbol
+/lfigsquare
+{
+ xsize ysize 0.5 lfigpmul /CTR lfigpointdef
+ CTR xsize xsize ysize ysize lfigpmax 0.5 lfigpmul lfigpadd /NE lfigpointdef
+ CTR 0 0 CTR NE lfigdistance 135 lfigatangle lfigpadd /NW lfigpointdef
+ CTR 0 0 CTR NE lfigdistance 225 lfigatangle lfigpadd /SW lfigpointdef
+ CTR 0 0 CTR NE lfigdistance 315 lfigatangle lfigpadd /SE lfigpointdef
+ SW 0.5 lfigpmul SE 0.5 lfigpmul lfigpadd /S lfigpointdef
+ NW 0.5 lfigpmul NE 0.5 lfigpmul lfigpadd /N lfigpointdef
+ SW 0.5 lfigpmul NW 0.5 lfigpmul lfigpadd /W lfigpointdef
+ SE 0.5 lfigpmul NE 0.5 lfigpmul lfigpadd /E lfigpointdef
+ [ CTR NE lfigpsub /lfigboxcircum cvx ] lfigcircumdef
+ SW SE NE NW SW
+} def
+
+% shape and labels of the @Diamond symbol
+/lfigdiamond
+{
+ xsize 0 0.5 lfigpmul /S lfigpointdef
+ 0 ysize 0.5 lfigpmul /W lfigpointdef
+ S W lfigpadd /CTR lfigpointdef
+ CTR W lfigpadd /N lfigpointdef
+ CTR S lfigpadd /E lfigpointdef
+ [ xsize ysize 0.5 lfigpmul /lfigdiamondcircum cvx ] lfigcircumdef
+ S E N W S
+} def
+
+% shape and labels of the @Ellipse symbol
+/lfigellipse
+{
+ xsize 0 0.5 lfigpmul /S lfigpointdef
+ 0 ysize 0.5 lfigpmul /W lfigpointdef
+ S W lfigpadd /CTR lfigpointdef
+ CTR W lfigpadd /N lfigpointdef
+ CTR S lfigpadd /E lfigpointdef
+ CTR xsize 0 0.3536 lfigpmul lfigpadd 0 ysize 0.3536 lfigpmul lfigpadd /NE lfigpointdef
+ 0 ysize 0.3536 lfigpmul CTR xsize 0 0.3536 lfigpmul lfigpadd lfigpsub /SE lfigpointdef
+ xsize 0 0.3536 lfigpmul CTR lfigpsub 0 ysize 0.3536 lfigpmul lfigpadd /NW lfigpointdef
+ 0 ysize 0.3536 lfigpmul xsize 0 0.3536 lfigpmul CTR lfigpsub lfigpsub /SW lfigpointdef
+ [ xsize ysize 0.5 lfigpmul /lfigellipsecircum cvx ] lfigcircumdef
+ S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S
+} def
+
+% shape and labels of the @Circle symbol
+/lfigcircle
+{
+ xsize ysize 0.5 lfigpmul /CTR lfigpointdef
+ CTR xsize 0 ysize 0 lfigpmax 0.5 lfigpmul lfigpadd /E lfigpointdef
+ CTR 0 0 CTR E lfigdistance 45 lfigatangle lfigpadd /NE lfigpointdef
+ CTR 0 0 CTR E lfigdistance 90 lfigatangle lfigpadd /N lfigpointdef
+ CTR 0 0 CTR E lfigdistance 135 lfigatangle lfigpadd /NW lfigpointdef
+ CTR 0 0 CTR E lfigdistance 180 lfigatangle lfigpadd /W lfigpointdef
+ CTR 0 0 CTR E lfigdistance 225 lfigatangle lfigpadd /SW lfigpointdef
+ CTR 0 0 CTR E lfigdistance 270 lfigatangle lfigpadd /S lfigpointdef
+ CTR 0 0 CTR E lfigdistance 315 lfigatangle lfigpadd /SE lfigpointdef
+ [ S E lfigpsub /lfigellipsecircum cvx ] lfigcircumdef
+ S [ CTR ] E [ CTR ] N [ CTR ] W [ CTR ] S
+} def
+
+% shape and labels of the @HLine and @HArrow symbols
+/lfighline
+{
+ 0 ymark lfigprevious /FROM lfigpointdef
+ xsize ymark lfigprevious /TO lfigpointdef
+} def
+
+% shape and labels of the @VLine and @VArrow symbols
+/lfigvline
+{
+ xmark ysize lfigprevious /FROM lfigpointdef
+ xmark 0 lfigprevious /TO lfigpointdef
+} def
+
+% points of a polygon around base with given no of sides, vert init angle:
+% <sides> <angle> figpolygon <point> ... <point>
+/lfigpolygon
+{ xsize ysize 0.5 lfigpmul /CTR lfigpointdef
+ 90 sub CTR 2 copy lfigmax 5 3 roll
+ [ 4 copy pop /lfigpolycircum cvx ] lfigcircumdef
+ exch dup 360 exch div exch
+ 1 1 3 2 roll
+ { 4 string cvs (P) exch lfigconcat cvn
+ 6 copy pop pop lfigatangle 2 copy 10 2 roll
+ 3 2 roll lfigpointdef
+ dup 3 1 roll add exch
+ } for
+ pop lfigatangle
+} def
+
+% next array element: <array> <index> lfiggetnext <array> <index> <any> true
+% or <array> <index> false
+/lfiggetnext
+{ 2 copy exch length ge
+ { false }
+ { 2 copy get exch 1 add exch true } ifelse
+} def
+
+% check whether thing is number: <any> lfigisnumbertype <any> <bool>
+/lfigisnumbertype
+{ dup type dup
+ /integertype eq exch /realtype eq or
+} def
+
+% check whether thing is an array: <any> lfigisarraytype <any> <bool>
+/lfigisarraytype { dup type /arraytype eq } def
+
+% get next item: <array> <index> lfiggetnextitem <array> <index> 0
+% or <array> <index> <array> 1
+% or <array> <index> <point> 2
+/lfiggetnextitem
+{ lfiggetnext
+ { lfigisarraytype
+ { 1
+ }
+ { lfigisnumbertype
+ { 3 1 roll
+ lfiggetnext
+ { lfigisnumbertype
+ { 4 3 roll exch 2
+ }
+ { pop 3 2 roll pop 0
+ } ifelse
+ }
+ { 3 2 roll pop 0
+ } ifelse
+ }
+ { pop 0
+ } ifelse
+ } ifelse
+ }
+ { 0
+ } ifelse
+} def
+
+% set arc path: bool x1 y1 x2 y2 x0 y0 lfigsetarc <angle> <angle> <dist>
+% the path goes from x1 y1 to x2 y2 about centre x0 y0,
+% anticlockwise if bool is true else clockwise.
+% The orientations of backwards pointing and forwards pointing
+% arrowheads are returned in the two angles, and
+% the length of the arc is returned in <dist>.
+/lfigsetarc
+{
+ 20 dict begin
+ matrix currentmatrix 8 1 roll
+ 2 copy translate 2 copy 8 2 roll
+ 4 2 roll lfigpsub 6 2 roll lfigpsub
+ dup /y1 exch def dup mul /y1s exch def
+ dup /x1 exch def dup mul /x1s exch def
+ dup /y2 exch def dup mul /y2s exch def
+ dup /x2 exch def dup mul /x2s exch def
+
+ y1s y2s eq
+ { -1
+ }
+ { y1s x2s mul y2s x1s mul sub y1s y2s sub div
+ } ifelse
+ /da exch def
+
+ x1s x2s eq
+ { -1
+ }
+ { x1s y2s mul x2s y1s mul sub x1s x2s sub div
+ } ifelse
+ /db exch def
+
+ da 0 gt db 0 gt and
+ { /LMax da sqrt db sqrt lfigmax def
+ /scalex da sqrt LMax div def
+ /scaley db sqrt LMax div def
+ scalex scaley scale
+ 0 0 LMax
+ 0 0 x1 scalex mul y1 scaley mul lfigangle
+ 0 0 x2 scalex mul y2 scaley mul lfigangle
+ 2 copy eq { 360 add } if
+ 2 copy 8 2 roll
+ 5 index { arc } { arcn } ifelse
+ 2 index 1 index
+ { 90 sub } { 90 add } ifelse
+ dup sin scaley mul exch cos scalex mul atan
+ 2 index 2 index
+ { 90 add } { 90 sub } ifelse
+ dup sin scaley mul exch cos scalex mul atan
+ 5 2 roll % res1 res2 ang1 ang2 anticlockwise
+ { exch sub } { sub } ifelse
+ dup 0 le { 360 add } if lfigpi mul LMax mul 180 div
+ }
+ { 0 0 x1 y1 lfigdistance 0 0 x2 y2 lfigdistance eq
+ 0 0 x1 y1 lfigdistance 0 gt and
+ { 0 0
+ 0 0 x1 y1 lfigdistance
+ 0 0 x1 y1 lfigangle
+ 0 0 x2 y2 lfigangle
+ 2 copy eq { 360 add } if
+ 2 copy 8 2 roll
+ 5 index { arc } { arcn } ifelse
+ 2 index 1 index
+ { 90 sub } { 90 add } ifelse
+ 2 index 2 index
+ { 90 add } { 90 sub } ifelse
+ 5 2 roll % res1 res2 ang1 ang2 clockwise
+ { exch sub } { sub } ifelse
+ dup 0 le { 360 add } if lfigpi mul 0 0 x1 y1 lfigdistance mul 180 div
+ }
+ { x2 y2 lineto pop
+ x2 y2 x1 y1 lfigangle
+ x1 y1 x2 y2 lfigangle
+ x1 y1 x2 y2 lfigdistance
+ } ifelse
+ } ifelse
+ 4 -1 roll setmatrix
+ end
+} def
+
+% lfigsetcurve: set up a Bezier curve from x0 y0 to x3 y3
+% and return arrowhead angles and length of curve (actually 0)
+% x0 y0 x1 y1 x2 y2 x3 y3 lfigsetcurve <angle> <angle> <length>
+/lfigsetcurve
+{ 8 copy curveto pop pop
+ lfigangle
+ 5 1 roll
+ 4 2 roll lfigangle
+ exch
+ 0
+} def
+
+% lfigpaintpath: paint a path of the given shape
+% /paint [ shape ] lfigpaintpath -
+/lfigpaintpath
+{
+ 10 dict begin
+ 0 newpath
+ /prevseen false def
+ /curveseen false def
+ { lfiggetnextitem
+ dup 0 eq { pop exit }
+ { 1 eq
+ { /curveseen true def
+ /curve exch def
+ curve length 0 eq { /curveseen false def } if
+ }
+ { /ycurr exch def
+ /xcurr exch def
+ prevseen
+ { curveseen
+ { curve length 4 eq
+ { xprev yprev
+ curve 0 get curve 1 get
+ curve 2 get curve 3 get
+ xcurr ycurr
+ lfigsetcurve pop pop pop
+ }
+ { xprev yprev xcurr ycurr
+ curve length 1 ge { curve 0 get } { 0 } ifelse
+ curve length 2 ge { curve 1 get } { 0 } ifelse
+ curve length 3 ge { curve 2 get } { true } ifelse
+ 7 1 roll
+ lfigsetarc pop pop pop
+ } ifelse
+ }
+ { xcurr ycurr lineto
+ } ifelse
+ }
+ { xcurr ycurr moveto
+ } ifelse
+ /xprev xcurr def
+ /yprev ycurr def
+ /prevseen true def
+ /curveseen false def
+ } ifelse
+ } ifelse
+ } loop pop pop cvx exec
+ end
+} def
+
+% stroke a path of the given shape in the given linestyle and dash length.
+% Return the origin and angle of the backward and forward arrow heads.
+% dashlength /linestyle [shape] lfigdopath [<point> <angle>] [<point> <angle>]
+/lfigdopath
+{
+ 10 dict begin
+ 0
+ /prevseen false def
+ /curveseen false def
+ /backarrow [] def
+ /fwdarrow [] def
+ {
+ lfiggetnextitem
+ dup 0 eq { pop exit }
+ {
+ 1 eq
+ { /curveseen true def
+ /curve exch def
+ curve length 0 eq { /prevseen false def } if
+ }
+ { /ycurr exch def
+ /xcurr exch def
+ prevseen
+ { newpath xprev yprev moveto
+ curveseen
+ { curve length 4 eq
+ { xprev yprev
+ curve 0 get curve 1 get
+ curve 2 get curve 3 get
+ xcurr ycurr lfigsetcurve
+ }
+ { xprev yprev xcurr ycurr
+ curve length 1 ge { curve 0 get } { 0 } ifelse
+ curve length 2 ge { curve 1 get } { 0 } ifelse
+ curve length 3 ge { curve 2 get } { true } ifelse
+ 7 1 roll
+ lfigsetarc
+ } ifelse
+ }
+ { xcurr ycurr lineto
+ xcurr ycurr xprev yprev lfigangle dup 180 sub
+ xprev yprev xcurr ycurr lfigdistance
+ } ifelse
+ 6 index 6 index cvx exec
+ [ xprev yprev 5 -1 roll ]
+ backarrow length 0 eq
+ { /backarrow exch def }
+ { pop } ifelse
+ [ xcurr ycurr 4 -1 roll ] /fwdarrow exch def
+ } if
+ /xprev xcurr def
+ /yprev ycurr def
+ /prevseen true def
+ /curveseen false def
+ } ifelse
+ } ifelse
+ } loop
+ pop pop pop pop
+ backarrow length 0 eq { [ 0 0 0 ] } { backarrow } ifelse
+ fwdarrow length 0 eq { [ 0 0 0 ] } { fwdarrow } ifelse
+ end
+} def
+
+% lfigdoarrow: draw an arrow head of given form
+% dashlength /lstyle /pstyle hfrac height width [ <point> <angle> ] lfigdoarrow -
+/lfigdoarrow
+{ matrix currentmatrix 8 1 roll
+ dup 0 get 1 index 1 get translate
+ 2 get rotate
+ [ 2 index neg 2 index 0 0
+ 3 index 3 index neg
+ 1 index 10 index mul 0
+ 7 index 7 index ]
+ 4 1 roll pop pop pop
+ dup 3 1 roll
+ gsave lfigpaintpath grestore lfigdopath pop pop
+ setmatrix
+} def
+
+% arrow head styles
+/lfigopen 0.0 def
+/lfighalfopen 0.5 def
+/lfigclosed 1.0 def
+
+% stroke no arrows, forward, back, and both
+/lfignoarrow { pop pop pop pop pop pop pop pop } def
+/lfigforward { 7 -1 roll lfigdoarrow pop } def
+/lfigback { 8 -2 roll pop lfigdoarrow } def
+/lfigboth { 8 -1 roll 7 copy lfigdoarrow pop 7 -1 roll lfigdoarrow } def
+
+% lfigprevious: return previous point on path
+/lfigprevious
+{ lfigisnumbertype
+ { 2 copy }
+ { lfigisarraytype
+ { 2 index 2 index }
+ { 0 0 }
+ ifelse
+ } ifelse
+} def
+
+% label a point in 2nd top dictionary: <point> /name lfigpointdef -
+/lfigpointdef
+{
+ % (Entering lfigpointdef) lfigdebugprint
+ [ 4 2 roll transform
+ /itransform cvx ] cvx
+ currentdict end
+ 3 1 roll
+ % currentdict length currentdict maxlength lt
+ % { def }
+ % { exec moveto (too many labels) show stop }
+ % ifelse
+ def
+ begin
+ % (Leaving lfigpointdef) lfigdebugprint
+} def
+
+% promote labels from second top to third top dictionary
+% <string> lfigpromotelabels -
+/lfigpromotelabels
+{
+ % (Entering lfigpromotelabels) lfigdebugprint
+ currentdict end exch currentdict end
+ { exch 20 string cvs 2 index
+ (@) lfigconcat exch lfigconcat cvn exch def
+ } forall pop begin
+ % (Leaving lfigpromotelabels) lfigdebugprint
+} def
+
+% show labels (except CIRCUM): - lfigshowlabels -
+/lfigshowlabels
+{
+ % (Entering lfigshowlabels) lfigdebugprint
+ currentdict end
+ currentdict
+ { 1 index 20 string cvs (CIRCUM) search % if CIRCUM in key
+ { pop pop pop pop pop }
+ { pop cvx exec 2 copy
+ newpath 1.5 pt 0 360 arc
+ 0 setgray fill
+ /Times-Roman findfont 8 pt scalefont setfont
+ moveto 0.2 cm 0.1 cm rmoveto 20 string cvs show
+ }
+ ifelse
+ } forall
+ begin
+ % (Leaving lfigshowlabels) lfigdebugprint
+} def
+
+% fix an angle to 0 <= res < 360: <angle> lfigfixangle <angle>
+/lfigfixangle
+{
+ % (Entering lfigfixangle) lfigdebugprint
+ { dup 0 ge { exit } if
+ 360 add
+ } loop
+ { dup 360 lt { exit } if
+ 360 sub
+ } loop
+ % (Leaving lfigfixangle) lfigdebugprint
+} def
+
+% find point on circumference of box: alpha a b lfigboxcircum x y
+/lfigboxcircum
+{
+ % (Entering lfigboxcircum) lfigdebugprint
+ 4 dict begin
+ /b exch def
+ /a exch def
+ lfigfixangle /alpha exch def
+ 0 0 a b lfigangle /theta exch def
+
+ % if alpha <= theta, return (a, a*tan(alpha))
+ alpha theta le
+ { a a alpha sin mul alpha cos div }
+ {
+ % else if alpha <= 180 - theta, return (b*cot(alpha), b)
+ alpha 180 theta sub le
+ { b alpha cos mul alpha sin div b }
+ {
+ % else if alpha <= 180 + theta, return (-a, -a*tan(alpha))
+ alpha 180 theta add le
+ { a neg a neg alpha sin mul alpha cos div }
+ {
+ % else if alpha <= 360 - theta, return (-b*cot(alpha), -b)
+ alpha 360 theta sub le
+ { b neg alpha cos mul alpha sin div b neg }
+ {
+ % else 360 - theta <= alpha, return (a, a*tan(alpha))
+ a a alpha sin mul alpha cos div
+ } ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+ end
+ % (Leaving lfigboxcircum) lfigdebugprint
+} def
+
+% find quadratic roots (assume a != 0): a b c lfigqroots x1 x2 2
+% or x2 1
+% or 0
+/lfigqroots
+{
+ 4 dict begin
+ /c exch def
+ /b exch def
+ /a exch def
+ /disc b b mul 4 a c mul mul sub def
+ disc 0 lt
+ { 0
+ }
+ { disc 0 eq
+ { b neg 2 a mul div
+ 1
+ }
+ { b neg disc sqrt add 2 a mul div
+ b neg disc sqrt sub 2 a mul div
+ 2
+ }
+ ifelse
+ }
+ ifelse
+ end
+} def
+
+% work our which quadrant: <angle> lfigquadrant <0-3>
+/lfigquadrant
+{ dup 90 lt
+ { pop 0
+ }
+ { dup 180 lt
+ { pop 1
+ }
+ { 270 lt
+ { 2
+ }
+ { 3
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+
+% find curvebox circum, assuming upper right quadrant: alpha a b xmk lfigcb x y
+/lfigcb
+{
+ 6 dict begin
+ /xmk exch def
+ /b exch def
+ /a exch def
+ /alpha exch def
+ /theta1 0 0 a b xmk sub lfigangle def
+ /theta2 0 0 a xmk sub b lfigangle def
+ alpha theta1 le
+ { % if alpha <= theta1, return (a, a*tan(alpha))
+ a a alpha sin mul alpha cos div
+ }
+ { alpha theta2 ge
+ { % else if alpha > theta2, return (b*cot(alpha), b)
+ b alpha cos mul alpha sin div b
+ }
+ {
+ % else, return the intersection of line and circle
+ a xmk sub b xmk sub xmk 0 0 alpha lfigcircleintersect
+ dup 0 eq
+ { % should never happen, just return any reasonable point
+ pop
+ a b 0.5 lfigpmul
+ }
+ { 1 eq
+ { % should never happen, just return the point on top of stack
+ }
+ { % the usual case, two points on stack, return the larger
+ lfigpmax
+ } ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+ end
+} def
+
+% find point on circumference of curvebox: alpha a b xmk lfigcurveboxcircum x y
+/lfigcurveboxcircum
+{
+ % (Entering lfigcurveboxcircum) lfigdebugprint
+ 5 dict begin
+ /xmk exch def
+ /b exch def
+ /a exch def
+ lfigfixangle /alpha exch def
+
+ % work out which quadrant we are in, and reflect accordingly
+ /quad alpha lfigquadrant def
+ quad 0 eq
+ { alpha a b xmk lfigcb
+ }
+ { quad 1 eq
+ { 180 alpha sub a b xmk lfigcb exch neg exch
+ }
+ { quad 2 eq
+ { alpha 180 sub a b xmk lfigcb neg exch neg exch
+ }
+ { 360 alpha sub a b xmk lfigcb neg
+ } ifelse
+ } ifelse
+ } ifelse
+ end
+ % (Leaving lfigcurveboxcircum) lfigdebugprint
+} def
+
+% find point on circumference of diamond: alpha a b lfigdiamondcircum x y
+/lfigdiamondcircum
+{
+ % (Entering lfigdiamondcircum) lfigdebugprint
+ 4 dict begin
+ /b exch def
+ /a exch def
+ lfigfixangle /alpha exch def
+ b alpha cos abs mul a alpha sin abs mul add /denom exch def
+ a b mul alpha cos mul denom div
+ a b mul alpha sin mul denom div
+ end
+ % (Leaving lfigdiamondcircum) lfigdebugprint
+} def
+
+% find point on circumference of ellipse: alpha a b lfigellipsecircum x y
+/lfigellipsecircum
+{
+ % (Entering lfigellipsecircum) lfigdebugprint
+ 4 dict begin
+ /b exch def
+ /a exch def
+ lfigfixangle /alpha exch def
+ b alpha cos mul dup mul a alpha sin mul dup mul add sqrt /denom exch def
+ a b mul alpha cos mul denom div
+ a b mul alpha sin mul denom div
+ end
+ % (Leaving lfigellipsecircum) lfigdebugprint
+} def
+
+% find point of intersection of two lines each defined by two points
+% x1 y1 x2 y2 x3 y3 x4 y4 lfiglineintersect x y
+/lfiglineintersect
+{
+ % (Entering lfiglineintersect) lfigdebugprint
+ 13 dict begin
+ /y4 exch def
+ /x4 exch def
+ /y3 exch def
+ /x3 exch def
+ /y2 exch def
+ /x2 exch def
+ /y1 exch def
+ /x1 exch def
+ x2 x1 sub /x21 exch def
+ x4 x3 sub /x43 exch def
+ y2 y1 sub /y21 exch def
+ y4 y3 sub /y43 exch def
+ y21 x43 mul y43 x21 mul sub /det exch def
+
+ % calculate x
+ y21 x43 mul x1 mul
+ y43 x21 mul x3 mul sub
+ y3 y1 sub x21 mul x43 mul add
+ det div
+
+ % calculate y
+ x21 y43 mul y1 mul
+ x43 y21 mul y3 mul sub
+ x3 x1 sub y21 mul y43 mul add
+ det neg div
+
+ end
+ % (Leaving lfiglineintersect) lfigdebugprint
+} def
+
+% find point on circumference of polygon
+% alpha radius num theta lfigpolycircum x y
+/lfigpolycircum
+{
+ % (Entering lfigpolycircum) lfigdebugprint
+ 13 dict begin
+ /theta exch def
+ /num exch def
+ /radius exch def
+ /alpha exch def
+
+ % calculate delta, the angle from theta to alpha
+ alpha theta sub lfigfixangle
+
+ % calculate the angle which is the multiple of 360/num closest to delta
+ 360 num div div truncate 360 num div mul theta add /anglea exch def
+
+ % calculate the next multiple of 360/num after anglea
+ anglea 360 num div add /angleb exch def
+
+ % intersect the line through these two points with the alpha line
+ anglea cos anglea sin angleb cos angleb sin
+ 0 0 alpha cos 2 mul alpha sin 2 mul
+ lfiglineintersect radius lfigpmul
+
+ end
+ % (Leaving lfigpolycircum) lfigdebugprint
+} def
+
+% find point of intersection of a point and a circle
+% x0 y0 r x1 y1 theta lfigcircleintersect xa ya xb yb 2
+% or xb yb 1
+% or 0
+/lfigcircleintersect
+{
+ % (Entering lfigcircleintersect) lfigdebugprint
+ 15 dict begin
+ /theta exch def
+ /y1 exch def
+ /x1 exch def
+ /r exch def
+ /y0 exch def
+ /x0 exch def
+
+ % if sin(theta) = 0 then line is horizontal and y must be y1
+ theta sin abs 0.00001 lt
+ {
+ /a 1 def
+ /b -2 x0 mul def
+ /c x0 dup mul y1 y0 sub dup mul add r dup mul sub def
+ a b c lfigqroots dup
+ 0 eq
+ { pop
+ 0
+ }
+ { 1 eq
+ { y1 1
+ }
+ { y1 exch y1 2
+ } ifelse
+ } ifelse
+ }
+ {
+ /ct theta cos theta sin div def
+ /a ct ct mul 1 add def
+ /b ct x1 x0 sub mul y1 add y0 sub 2 mul def
+ /c x1 x0 sub dup mul y1 y0 sub dup mul add r dup mul sub def
+ a b c lfigqroots dup
+ 0 eq
+ { pop
+ 0
+ }
+ { 1 eq
+ { y1 add /yb exch def
+ yb y1 sub ct mul x1 add /xb exch def
+ xb yb 1
+ }
+ { y1 add /ya exch def
+ ya y1 sub ct mul x1 add /xa exch def
+ y1 add /yb exch def
+ yb y1 sub ct mul x1 add /xb exch def
+ xa ya xb yb 2
+ } ifelse
+ } ifelse
+ } ifelse
+ end
+ % (Leaving lfigcircleintersect) lfigdebugprint
+} def
+
+% add CIRCUM operator with this body: <array> lfigcircumdef -
+/lfigcircumdef
+{ % (Entering lfigcircumdef) lfigdebugprint
+ /CIRCUM exch cvx
+ currentdict end
+ 3 1 roll
+ % currentdict length currentdict maxlength lt
+ % { def }
+ % { exec moveto (too many labels) show stop }
+ % ifelse
+ def
+ begin
+ % (Leaving lfigcircumdef) lfigdebugprint
+} def
+
+end
+%%EndResource
diff --git a/include/include/graph b/include/include/graph
new file mode 100644
index 0000000..8f6c2a2
--- /dev/null
+++ b/include/include/graph
@@ -0,0 +1,112 @@
+###############################################################################
+# #
+# Lout setup file for graph drawing #
+# #
+# Jeffrey H. Kingston #
+# 5 February 1999 #
+# 21 June 2013 #
+# #
+# This file has been placed in the public domain by its author. #
+# #
+###############################################################################
+
+
+###############################################################################
+# #
+# The @SysInclude { graphf } line #
+# #
+# This line causes Lout to read the definitions for graphs, and should #
+# not be touched. #
+# #
+###############################################################################
+
+@SysInclude { graphf }
+
+
+###############################################################################
+# #
+# The @GraphSetup @Use clause #
+# #
+# To change the default value of any option, delete the # at the start of #
+# its line and change the value between braces. #
+# #
+###############################################################################
+
+@Use { @GraphSetup
+
+ #############################################################################
+ # #
+ # Options for @Graph only #
+ # #
+ #############################################################################
+
+ # style { frame }
+ # font { }
+ # named xorigin { none }
+ # named yorigin { none }
+ # named xlog { none }
+ # named ylog { none }
+ # width { 6.0c }
+ # height { 4.0c }
+ # xextra { auto }
+ # yextra { auto }
+ # xdecreasing { no }
+ # ydecreasing { no }
+ # leftcaption { }
+ # rightcaption { }
+ # abovecaption { }
+ # belowcaption { }
+ # leftgap { 1.5c }
+ # rightgap { 0.5c }
+ # abovegap { 0.5c }
+ # belowgap { 0.5c }
+ # hidecaptions { yes }
+ # xmin { none }
+ # xmax { none }
+ # ymin { none }
+ # ymax { none }
+ # xticksep { none }
+ # yticksep { none }
+ # rticksep { none }
+ # xticks { auto }
+ # yticks { auto }
+ # rticks { }
+ # xticklength { 0.5f }
+ # yticklength { 0.5f }
+ # rticklength { 0.5f }
+ # objects { }
+ # save { no }
+
+ #############################################################################
+ # #
+ # Options for @Graph and @Data #
+ # #
+ #############################################################################
+
+ # points { none }
+ # symbolsize { 0.15f }
+ # symbollinewidth { currentlinewidth }
+ # pairs { none }
+ # dashlength { 0.2f }
+ # linewidth { currentlinewidth }
+ # colour { none }
+ # paint { no }
+ # texture { solid }
+ # dataformat { xandy }
+
+ #############################################################################
+ # #
+ # Options for @GraphCross etc. and @GraphNoLine etc. #
+ # #
+ # Owing to clashes the names of these options differ slightly from the #
+ # names of the corresponding options of @GraphCross etc. and @GraphNoLine #
+ # etc. whose default values they are, in being prefixed by an "o". #
+ # #
+ #############################################################################
+
+ # osymbolsize { 0.15f }
+ # osymbollinewidth { currentlinewidth }
+ # odashlength { 0.2f }
+ # olinewidth { currentlinewidth }
+ # olength { 1.0f }
+}
diff --git a/include/include/graphf b/include/include/graphf
new file mode 100644
index 0000000..fad552f
--- /dev/null
+++ b/include/include/graphf
@@ -0,0 +1,1097 @@
+
+###############################################################################
+# #
+# Lout @Graph package for drawing graphs (Version 1.1) #
+# #
+# Version 1.0 (December 1993). #
+# Version 1.1 (adds @GraphSetup, June 2013) #
+# Jeffrey H. Kingston #
+# #
+# This package draws graphs, the statistical kind not the graph-theoretical #
+# kind. See the User's Guide for user info. #
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either Version 3, or (at your option) #
+# any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA #
+# #
+# As a special exception, when this file is read by Lout when processing #
+# a Lout source document, you may use the result without restriction. #
+# #
+###############################################################################
+
+@SysInclude { graphf.etc } # @GraphMath
+@SysInclude { lengths } # @LoutLengths
+@SysInclude { coltex } # @ColourCommand and @TextureCommand
+@SysPrependGraphic { graphf.lpg }
+
+
+###############################################################################
+# #
+# @GraphZZZ symbol - not for ordinary use #
+# #
+###############################################################################
+
+def @GraphZZZ
+ left p
+ named margin { 0c }
+ named adj { 0 0 }
+ right x
+{
+ @BackEnd @Case {
+ PostScript @Yield {
+ @Null & # kills previous white space
+ @HContract @VContract {
+ //0io ||0io @HContract @VContract
+ { p "trpoint translate" adj "translate gsave" // "grestore" }
+ @Graphic { //margin ||margin x ||margin //margin }
+ ||0io //0io
+ }
+ }
+ # VT: PDF does nothing
+ PDF @Yield {
+ @Null & # kills previous white space
+ @HContract @VContract {
+ //0io ||0io @HContract @VContract
+ { "% @GraphZZZ UNIMPLEMENTED" }
+ @Graphic { //margin ||margin x ||margin //margin }
+ ||0io //0io
+ }
+ }
+ }
+}
+
+
+###############################################################################
+# #
+# @GraphSetup symbol #
+# #
+###############################################################################
+
+export @GraphCross @GraphPlus @GraphSquare @GraphFilledSquare
+ @GraphDiamond @GraphFilledDiamond @GraphCircle @GraphFilledCircle
+ @GraphTriangle @GraphFilledTriangle
+
+ @GraphNoLine @GraphSolid @GraphDashed @GraphDotted @GraphDotDashed
+ @GraphDotDotDashed @GraphDotDotDotDashed
+
+ @Graph
+
+def @GraphSetup
+ named style { frame }
+ named font { }
+ named xorigin named none { "false" } { none }
+ named yorigin named none { "false" } { none }
+ named xlog named none { "0" } { none }
+ named ylog named none { "0" } { none }
+ import @LoutLengths named width { 6.0c }
+ import @LoutLengths named height { 4.0c }
+ import @PSLengths named xextra { auto }
+ import @PSLengths named yextra { auto }
+ named xdecreasing { no }
+ named ydecreasing { no }
+ named leftcaption { }
+ named rightcaption { }
+ named abovecaption { }
+ named belowcaption { }
+ import @LoutLengths named leftgap { 1.5c }
+ import @LoutLengths named rightgap { 0.5c }
+ import @LoutLengths named abovegap { 0.5c }
+ import @LoutLengths named belowgap { 0.5c }
+ named hidecaptions { yes }
+ named xmin named none { "false" } { none }
+ named xmax named none { "false" } { none }
+ named ymin named none { "false" } { none }
+ named ymax named none { "false" } { none }
+ named xticksep named none { "0" } { none }
+ named yticksep named none { "0" } { none }
+ named rticksep named none { "0" } { none }
+ import @GraphMath named xticks
+ named none { "false" }
+ named auto { "false" }
+ named "@" { " lgen" }
+ named "^" { "^" }
+ { auto }
+ import @GraphMath named yticks
+ named none { "false" }
+ named auto { "false" }
+ named "@" { " lgen" }
+ named "^" { "^" }
+ { auto }
+ import @GraphMath named rticks
+ named none { "false" }
+ named auto { "false" }
+ named "@" { " lgen" }
+ named "^" { "^" }
+ { }
+ import @PSLengths named xticklength { 0.5f }
+ import @PSLengths named yticklength { 0.5f }
+ import @PSLengths named rticklength { 0.5f }
+ named objects
+ named @NW
+ import @GraphMath named at { 0 0 }
+ import @LoutLengths named margin { 0.3f }
+ right x
+ { at @GraphZZZ adj { "xsize neg ysize" } margin { margin } x }
+ named @SW
+ import @GraphMath named at { 0 0 }
+ import @LoutLengths named margin { 0.3f }
+ right x
+ { at @GraphZZZ adj { "xsize neg 0" } margin { margin } x }
+ named @SE
+ import @GraphMath named at { 0 0 }
+ import @LoutLengths named margin { 0.3f }
+ right x
+ { at @GraphZZZ adj { "0 0" } margin { margin } x }
+ named @NE
+ import @GraphMath named at { 0 0 }
+ import @LoutLengths named margin { 0.3f }
+ right x
+ { at @GraphZZZ adj { "0 ysize" } margin { margin } x }
+ named @W
+ import @GraphMath named at { 0 0 }
+ import @LoutLengths named margin { 0.3f }
+ right x
+ { at @GraphZZZ adj { "xsize neg ysize 2 div" } margin { margin } x }
+ named @S
+ import @GraphMath named at { 0 0 }
+ import @LoutLengths named margin { 0.3f }
+ right x
+ { at @GraphZZZ adj { "xsize neg 2 div 0" } margin { margin } x }
+ named @E
+ import @GraphMath named at { 0 0 }
+ import @LoutLengths named margin { 0.3f }
+ right x
+ { at @GraphZZZ adj { "0 ysize 2 div" } margin { margin } x }
+ named @N
+ import @GraphMath named at { 0 0 }
+ import @LoutLengths named margin { 0.3f }
+ right x
+ { at @GraphZZZ adj { "xsize neg 2 div ysize" } margin { margin } x }
+ named @CTR
+ import @GraphMath named at { 0 0 }
+ import @LoutLengths named margin { 0.3f }
+ right x
+ {at @GraphZZZ adj {"xsize neg 2 div ysize 2 div"} margin {margin} x}
+ {}
+ named save { no }
+ named points named none { "none" } { none }
+ import @PSLengths named symbolsize { 0.15f }
+ import @PSLengths named symbollinewidth { "currentlinewidth" }
+ named pairs named none { "none" } { none }
+ import @PSLengths named dashlength { 0.2f }
+ import @PSLengths named linewidth { "currentlinewidth" }
+ named colour color named none { "none" } { none }
+ named paint { no }
+ import @TextureImport named texture { solid }
+ named dataformat { xandy }
+ import @LoutLengths named osymbolsize { 0.15f }
+ import @PSLengths named osymbollinewidth { "currentlinewidth" }
+ import @PSLengths named odashlength { 0.2f }
+ import @PSLengths named olinewidth { "currentlinewidth" }
+ import @LoutLengths named olength { 1.0f }
+{
+ def @GraphCross
+ import @LoutLengths named symbolsize { osymbolsize }
+ import @PSLengths named symbollinewidth { osymbollinewidth }
+ {
+ @BackEnd @Case {
+
+ PostScript @Yield {
+ @HContract @VContract
+ {
+ # "newpath 0 0 moveto xsize ysize lineto 0 ysize moveto"
+ # "xsize 0 lineto [] 0 setdash stroke"
+ "lgraphdict begin xmark ymark xmark" symbollinewidth "docross"
+ // "end"
+ }
+ @Graphic {symbolsize @High symbolsize @Wide ^|
+ symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ PDF @Yield {
+ @HContract @VContract
+ { "n [] 0 d 0 0 m __xsize __ysize l 0 __ysize m __xsize 0 l S"}
+ # uses S because PostScript version does NOT use closepath
+ @Graphic {symbolsize @High symbolsize @Wide ^|
+ symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ }
+ }
+
+ def @GraphPlus
+ import @LoutLengths named symbolsize { osymbolsize }
+ import @PSLengths named symbollinewidth { osymbollinewidth }
+ {
+ @BackEnd @Case {
+
+ PostScript @Yield {
+ @HContract @VContract
+ {
+ # "newpath xmark 0 moveto xmark ysize lineto 0 ymark moveto"
+ # "xsize ymark lineto [] 0 setdash stroke"
+ "lgraphdict begin xmark ymark xmark" symbollinewidth "doplus"
+ // "end"
+ }
+ @Graphic {symbolsize @High symbolsize @Wide ^|
+ symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ PDF @Yield {
+ @HContract @VContract
+ { "n [] 0 d __xmark 0 m __xmark __ysize l 0 __ymark m __xsize __ymark l S"}
+ # uses S because PostScript version does NOT use closepath
+ @Graphic {symbolsize @High symbolsize @Wide ^|
+ symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ }
+ }
+
+ def @GraphSquare
+ import @LoutLengths named symbolsize { osymbolsize }
+ import @PSLengths named symbollinewidth { osymbollinewidth }
+ {
+ @BackEnd @Case {
+
+ PostScript @Yield {
+ @HContract @VContract
+ {
+ # "newpath 0 0 moveto xsize 0 lineto xsize ysize lineto"
+ # "0 ysize lineto closepath [] 0 setdash stroke"
+ "lgraphdict begin xmark ymark xmark" symbollinewidth "dosquare"
+ // "end"
+ }
+ @Graphic {symbolsize @High symbolsize @Wide ^|
+ symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ PDF @Yield {
+ @HContract @VContract
+ {"n [] 0 d 0 0 __xsize __ysize re s"}
+ @Graphic {symbolsize @High symbolsize @Wide ^|
+ symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ }
+ }
+
+ def @GraphFilledSquare
+ import @LoutLengths named symbolsize { osymbolsize }
+ import @PSLengths named symbollinewidth { osymbollinewidth }
+ {
+ @BackEnd @Case {
+
+ PostScript @Yield {
+ @HContract @VContract
+ {
+ # "newpath 0 0 moveto xsize 0 lineto xsize ysize lineto 0 ysize"
+ # "lineto closepath gsave [] 0 setdash stroke grestore fill"
+ "lgraphdict begin xmark ymark xmark"
+ symbollinewidth "dofilledsquare" // "end"
+ }
+ @Graphic {symbolsize @High symbolsize @Wide ^|
+ symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ PDF @Yield {
+ @HContract @VContract
+ {"n [] 0 d 0 0 __xsize __ysize re b"}
+ @Graphic {symbolsize @High symbolsize @Wide ^|
+ symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ }
+ }
+
+ def @GraphDiamond
+ import @LoutLengths named symbolsize { osymbolsize }
+ import @PSLengths named symbollinewidth { osymbollinewidth }
+ {
+ @BackEnd @Case {
+
+ PostScript @Yield {
+ @HContract @VContract
+ {
+ # "newpath 0 ymark moveto xmark 0 lineto xsize ymark lineto"
+ # "xmark ysize lineto closepath [] 0 setdash stroke"
+ "lgraphdict begin xmark ymark xmark" symbollinewidth "dodiamond"
+ // "end"
+ }
+ @Graphic {symbolsize @High symbolsize @Wide ^|
+ symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ PDF @Yield {
+ @HContract @VContract
+ {"n [] 0 d 0 __ymark m __xmark 0 l __xsize __ymark l __xmark __ysize l s"}
+ @Graphic {symbolsize @High symbolsize @Wide ^|
+ symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ }
+ }
+
+ def @GraphFilledDiamond
+ import @LoutLengths named symbolsize { osymbolsize }
+ import @PSLengths named symbollinewidth { osymbollinewidth }
+ {
+ @BackEnd @Case {
+
+ PostScript @Yield {
+ @HContract @VContract
+ {
+ # "newpath 0 ymark moveto xmark 0 lineto xsize ymark lineto"
+ # "xmark ysize lineto closepath gsave [] 0 setdash stroke
+ # grestore fill"
+ "lgraphdict begin xmark ymark xmark"
+ symbollinewidth "dofilleddiamond" // "end"
+ }
+ @Graphic {symbolsize @High symbolsize @Wide ^|
+ symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ PDF @Yield {
+ @HContract @VContract
+ {"n [] 0 d 0 __ymark m __xmark 0 l __xsize __ymark l __xmark __ysize l b"
+ }
+ @Graphic {symbolsize @High symbolsize @Wide ^|
+ symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ }
+ }
+
+ def @GraphCircle
+ import @LoutLengths named symbolsize { osymbolsize }
+ import @PSLengths named symbollinewidth { osymbollinewidth }
+ {
+ @BackEnd @Case {
+
+ PostScript @Yield {
+ @HContract @VContract
+ {
+ # "newpath xmark ymark xmark 0 360 arc"
+ # "[] 0 setdash stroke"
+ "lgraphdict begin xmark ymark xmark" symbollinewidth "docircle"
+ // "end"
+ }
+ @Graphic {symbolsize @High symbolsize @Wide ^|
+ symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ PDF @Yield {
+ @HContract @VContract
+#
+# draw a circle whose centre is at (xmark, ymark) and whose radius is xmark units;
+#
+# for curveto to work, we need to calculate the control points of the Bezier curve
+# as well as move the pen to the correct initial point. The circle is drawn as two
+# arcs of 180 degrees
+#
+# pt0 = (xmark + xmark, ymark)
+# pt1 = (xmark + xmark, ymark + 4/3 * xmark)
+# pt2 = (0, ymark + 4/3 * xmark)
+# pt3 = (0, ymark)
+#
+# pt0 = (0, ymark)
+# pt1 = (0, ymark - 4/3 * xmark)
+# pt2 = (xmark + xmark, ymark - 4/3 * xmark)
+# pt3 = (xmark + xmark, ymark)
+#
+ {"n [] 0 d"
+ "__mul(2, __xmark) __ymark m"
+ "__mul(2, __xmark) __add(__ymark, __div(__mul(4, __xmark), 3))" # pt1
+ "0 __add(__ymark, __div(__mul(4, __xmark), 3))" # pt2
+ "0 __ymark c" # pt3
+
+ "0 __sub(__ymark, __div(__mul(4, __xmark), 3))" # pt1
+ "__mul(2, __xmark) __sub(__ymark, __div(__mul(4, __xmark), 3))" # pt2
+ "__mul(2, __xmark) __ymark c S" # pt3
+ }
+ @Graphic {symbolsize @High symbolsize @Wide ^|
+ symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ }
+ }
+
+ def @GraphFilledCircle
+ import @LoutLengths named symbolsize { osymbolsize }
+ import @PSLengths named symbollinewidth { osymbollinewidth }
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ @HContract @VContract
+ {
+ # "newpath xmark ymark xmark 0 360 arc"
+ # "gsave [] 0 setdash stroke grestore fill"
+ "lgraphdict begin xmark ymark xmark"
+ symbollinewidth "dofilledcircle" // "end"
+ }
+ @Graphic {symbolsize @High symbolsize @Wide ^|
+ symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ PDF @Yield {
+ @HContract @VContract
+#
+# draw a filled circle whose centre is at (xmark, ymark) and whose radius is xmark units;
+#
+# for curveto to work, we need to calculate the control points of the Bezier curve
+# as well as move the pen to the correct initial point. The circle is drawn as two
+# arcs of 180 degrees
+#
+# pt0 = (xmark + xmark, ymark)
+# pt1 = (xmark + xmark, ymark + 4/3 * xmark)
+# pt2 = (0, ymark + 4/3 * xmark)
+# pt3 = (0, ymark)
+#
+# pt0 = (0, ymark)
+# pt1 = (0, ymark - 4/3 * xmark)
+# pt2 = (xmark + xmark, ymark - 4/3 * xmark)
+# pt3 = (xmark + xmark, ymark)
+#
+# Note: this is not a strict translation because there is a setdash bracketed by
+# gsave/grestore in the above PostScript but there is no closepath before it;
+# but in PDF, it is not possible to execute a setdash within a path definition.
+#
+ {"n [] 0 d"
+ "__mul(2, __xmark) __ymark m"
+ "__mul(2, __xmark) __add(__ymark, __div(__mul(4, __xmark), 3))" # pt1
+ "0 __add(__ymark, __div(__mul(4, __xmark), 3))" # pt2
+ "0 __ymark c" # pt3
+
+ "0 __sub(__ymark, __div(__mul(4, __xmark), 3))" # pt1
+ "__mul(2, __xmark) __sub(__ymark, __div(__mul(4, __xmark), 3))" # pt2
+ "__mul(2, __xmark) __ymark c b" # pt3
+ }
+ @Graphic {symbolsize @High symbolsize @Wide ^|
+ symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ }
+ }
+
+ def @GraphTriangle
+ import @LoutLengths named symbolsize { osymbolsize }
+ import @PSLengths named symbollinewidth { osymbollinewidth }
+ {
+ @BackEnd @Case {
+
+ PostScript @Yield {
+ @HContract @VContract
+ {
+ # "newpath 0 0 moveto xsize 0 lineto xmark ysize 1.25 mul lineto"
+ # "closepath [] 0 setdash stroke"
+ "lgraphdict begin xmark ymark xmark" symbollinewidth "dotriangle"
+ // "end"
+ }
+ @Graphic {symbolsize @High symbolsize @Wide ^|
+ symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ PDF @Yield {
+ @HContract @VContract
+ {"n [] 0 d 0 0 m __xsize 0 l __xmark __mul(__ysize, 1.25) l s"}
+ @Graphic {symbolsize @High symbolsize @Wide ^|
+ symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ }
+ }
+
+ def @GraphFilledTriangle
+ import @LoutLengths named symbolsize { osymbolsize }
+ import @PSLengths named symbollinewidth { osymbollinewidth }
+ {
+ @BackEnd @Case {
+
+ PostScript @Yield {
+ @HContract @VContract
+ {
+ # "newpath 0 0 moveto xsize 0 lineto xmark ysize 1.25 mul lineto"
+ # "closepath gsave [] 0 setdash stroke grestore fill"
+ "lgraphdict begin xmark ymark xmark"
+ symbollinewidth "dofilledtriangle" // "end"
+ }
+ @Graphic {symbolsize @High symbolsize @Wide ^|
+ symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ PDF @Yield {
+ @HContract @VContract
+ {"n [] 0 d 0 0 m __xsize 0 l __xmark __mul(__ysize, 1.25) l h b"}
+ @Graphic {symbolsize @High symbolsize @Wide ^|
+ symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ }
+ }
+
+ def @GraphNoLine
+ import @PSLengths named dashlength { odashlength }
+ import @PSLengths named linewidth { olinewidth }
+ import @LoutLengths named length { olength }
+ {
+ length @Wide {}
+ }
+
+ def @GraphSolid
+ import @PSLengths named dashlength { odashlength }
+ import @PSLengths named linewidth { olinewidth }
+ import @LoutLengths named length { olength }
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ @HContract @VContract
+ { "xsize 0 lgraphdict begin newpath 0 0 moveto lineto"
+ "/linewidth" linewidth "def xsize" dashlength "solid end"
+ } @Graphic { length @Wide }
+ }
+ # VT: PDF does nothing
+ PDF @Yield {
+ @HContract @VContract
+ { "% @GraphSolid UNIMPLEMENTED" } @Graphic { length @Wide }
+ }
+ }
+ }
+
+ def @GraphDashed
+ import @PSLengths named dashlength { odashlength }
+ import @PSLengths named linewidth { olinewidth }
+ import @LoutLengths named length { olength }
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ @HContract @VContract
+ { "xsize 0 lgraphdict begin newpath 0 0 moveto lineto"
+ "/linewidth" linewidth "def xsize" dashlength "dashed end"
+ } @Graphic { length @Wide }
+ }
+ # VT: PDF does nothing
+ PDF @Yield {
+ @HContract @VContract
+ { "% @GraphDashed UNIMPLEMENTED" } @Graphic { olength @Wide }
+ }
+ }
+ }
+
+ def @GraphDotted
+ import @PSLengths named dashlength { odashlength }
+ import @PSLengths named linewidth { olinewidth }
+ import @LoutLengths named length { olength }
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ @HContract @VContract
+ { "xsize 0 lgraphdict begin newpath 0 0 moveto lineto"
+ "/linewidth" linewidth "def xsize" dashlength "dotted end"
+ } @Graphic { length @Wide }
+ }
+ # VT: PDF does nothing
+ PDF @Yield {
+ @HContract @VContract
+ { "% @GraphDotted UNIMPLEMENTED" } @Graphic { olength @Wide }
+ }
+ }
+ }
+
+ def @GraphDotDashed
+ import @PSLengths named dashlength { odashlength }
+ import @PSLengths named linewidth { olinewidth }
+ import @LoutLengths named length { olength }
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ @HContract @VContract
+ { "xsize 0 lgraphdict begin newpath 0 0 moveto lineto"
+ "/linewidth" linewidth "def xsize" dashlength "dotdashed end"
+ } @Graphic { length @Wide }
+ }
+ # VT: PDF does nothing
+ PDF @Yield {
+ @HContract @VContract
+ { "% @GraphDotDashed UNIMPLEMENTED" } @Graphic { length @Wide }
+ }
+ }
+ }
+
+ def @GraphDotDotDashed
+ import @PSLengths named dashlength { odashlength }
+ import @PSLengths named linewidth { olinewidth }
+ import @LoutLengths named length { olength }
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ @HContract @VContract
+ { "xsize 0 lgraphdict begin newpath 0 0 moveto lineto"
+ "/linewidth" linewidth "def xsize" dashlength "dotdotdashed end"
+ } @Graphic { length @Wide }
+ }
+ # VT: PDF does nothing
+ PDF @Yield {
+ @HContract @VContract
+ { "% @GraphDotDotDashed UNIMPLEMENTED" } @Graphic { length @Wide }
+ }
+ }
+ }
+
+ def @GraphDotDotDotDashed
+ import @PSLengths named dashlength { odashlength }
+ import @PSLengths named linewidth { olinewidth }
+ import @LoutLengths named length { olength }
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ @HContract @VContract
+ { "xsize 0 lgraphdict begin newpath 0 0 moveto lineto /linewidth"
+ linewidth "def xsize" dashlength "dotdotdotdashed end"
+ } @Graphic { length @Wide }
+ }
+ # VT: PDF does nothing
+ PDF @Yield {
+ @HContract @VContract
+ { "% @GraphDotDotDotDashed UNIMPLEMENTED" } @Graphic { length @Wide }
+ }
+ }
+ }
+
+
+ export @Data
+ def @Graph
+ named style { style }
+ named font { font }
+ named xorigin named none { "false" } { xorigin }
+ named yorigin named none { "false" } { yorigin }
+ named xlog named none { "0" } { xlog }
+ named ylog named none { "0" } { ylog }
+ import @LoutLengths named width { width }
+ import @LoutLengths named height { height }
+ import @PSLengths named xextra { xextra }
+ import @PSLengths named yextra { yextra }
+ named xdecreasing { xdecreasing }
+ named ydecreasing { ydecreasing }
+ named leftcaption { leftcaption }
+ named rightcaption { rightcaption }
+ named abovecaption { abovecaption }
+ named belowcaption { belowcaption }
+ import @LoutLengths named leftgap { leftgap }
+ import @LoutLengths named rightgap { rightgap }
+ import @LoutLengths named abovegap { abovegap }
+ import @LoutLengths named belowgap { belowgap }
+ named hidecaptions { hidecaptions }
+ named xmin named none { "false" } { xmin }
+ named xmax named none { "false" } { xmax }
+ named ymin named none { "false" } { ymin }
+ named ymax named none { "false" } { ymax }
+ named xticksep named none { "0" } { xticksep }
+ named yticksep named none { "0" } { yticksep }
+ named rticksep named none { "0" } { rticksep }
+ import @GraphMath named xticks
+ named none { "false" }
+ named auto { "false" }
+ named "@" { " lgen" }
+ named "^" { "^" }
+ { xticks }
+ import @GraphMath named yticks
+ named none { "false" }
+ named auto { "false" }
+ named "@" { " lgen" }
+ named "^" { "^" }
+ { yticks }
+ import @GraphMath named rticks
+ named none { "false" }
+ named auto { "false" }
+ named "@" { " lgen" }
+ named "^" { "^" }
+ { rticks }
+ import @PSLengths named xticklength { xticklength }
+ import @PSLengths named yticklength { yticklength }
+ import @PSLengths named rticklength { rticklength }
+ named objects
+ named @NW
+ import @GraphMath named at { 0 0 }
+ import @LoutLengths named margin { 0.3f }
+ right x
+ { at @GraphZZZ adj { "xsize neg ysize" } margin { margin } x }
+ named @SW
+ import @GraphMath named at { 0 0 }
+ import @LoutLengths named margin { 0.3f }
+ right x
+ { at @GraphZZZ adj { "xsize neg 0" } margin { margin } x }
+ named @SE
+ import @GraphMath named at { 0 0 }
+ import @LoutLengths named margin { 0.3f }
+ right x
+ { at @GraphZZZ adj { "0 0" } margin { margin } x }
+ named @NE
+ import @GraphMath named at { 0 0 }
+ import @LoutLengths named margin { 0.3f }
+ right x
+ { at @GraphZZZ adj { "0 ysize" } margin { margin } x }
+ named @W
+ import @GraphMath named at { 0 0 }
+ import @LoutLengths named margin { 0.3f }
+ right x
+ { at @GraphZZZ adj { "xsize neg ysize 2 div" } margin { margin } x }
+ named @S
+ import @GraphMath named at { 0 0 }
+ import @LoutLengths named margin { 0.3f }
+ right x
+ { at @GraphZZZ adj { "xsize neg 2 div 0" } margin { margin } x }
+ named @E
+ import @GraphMath named at { 0 0 }
+ import @LoutLengths named margin { 0.3f }
+ right x
+ { at @GraphZZZ adj { "0 ysize 2 div" } margin { margin } x }
+ named @N
+ import @GraphMath named at { 0 0 }
+ import @LoutLengths named margin { 0.3f }
+ right x
+ { at @GraphZZZ adj { "xsize neg 2 div ysize" } margin { margin } x }
+ named @CTR
+ import @GraphMath named at { 0 0 }
+ import @LoutLengths named margin { 0.3f }
+ right x
+ {at @GraphZZZ adj {"xsize neg 2 div ysize 2 div"} margin {margin} x}
+ { objects }
+ named save { save }
+ named points named none { "none" } { points }
+ import @PSLengths named symbolsize { symbolsize }
+ import @PSLengths named symbollinewidth { symbollinewidth }
+ named pairs named none { "none" } { pairs }
+ import @PSLengths named dashlength { dashlength }
+ import @PSLengths named linewidth { linewidth }
+ named colour color named none { "none" } { colour }
+ named paint { paint }
+ import @TextureImport named texture { texture }
+ named dataformat { dataformat }
+ body @Body
+ {
+
+ def @Above
+ {
+ abovecaption @Case {
+ "" @Yield {}
+ else @Yield @OneCol {
+ ||0.5rt clines @Break abovecaption || //abovegap }
+ }
+ }
+
+ def @Below
+ {
+ belowcaption @Case {
+ "" @Yield {}
+ else @Yield @OneCol {
+ //belowgap ||0.5rt clines @Break belowcaption || }
+ }
+ }
+
+ def @Left
+ {
+ leftcaption @Case {
+ "" @Yield {}
+ else @Yield @OneCol @OneRow {
+ { //0.5rt @OneRow clines @Break leftcaption // } ^||leftgap }
+ }
+ }
+
+ def @Right
+ {
+ rightcaption @Case {
+ "" @Yield {}
+ else @Yield @OneCol @OneRow {
+ ||rightgap { //0.5rt @OneRow lines @Break rightcaption // } }
+ }
+ }
+
+ def @ZeroWidth
+ right x
+ {
+ hidecaptions @Case {
+ { No no } @Yield x
+ { Yes yes } @Yield @OneCol { ||0io x ||0io }
+ }
+ }
+
+ def @AddCaptions right x
+ {
+ def belowextra
+ {
+ xticks @Case {
+ "" @Yield { 0i }
+ else @Yield { 1.7f }
+ }
+ }
+
+ @HContract @VContract
+ {
+ | @Above |
+ / @ZeroWidth @Left | &0.5rt x | @ZeroWidth @Right
+ /belowextra | @Below |
+ }
+ }
+
+ export pi e sqrt abs ceiling floor truncate round cos sin atan
+ exp log rand "*" "/" idiv mod "-" "-0" "-1" "-2" "-3" "-4"
+ "-5" "-6" "-7" "-8" "-9" "-." "+" "=" "!=" "<" "<=" ">" ">="
+ not and xor or if xloop yloop zloop
+
+ def @Data
+ named points named none { "none" } { points }
+ import @PSLengths named symbolsize { symbolsize }
+ import @PSLengths named symbollinewidth { symbollinewidth }
+ named pairs named none { "none" } { pairs }
+ import @PSLengths named dashlength { dashlength }
+ import @PSLengths named linewidth { linewidth }
+ named colour color named none { "none" } { colour }
+ named paint { paint }
+ import @TextureImport named texture { texture }
+ named dataformat { dataformat }
+ body data
+ {
+ def pi { "3.14159" }
+ def e { "2.71828" }
+ def sqrt precedence 40 right y { y "sqrt" }
+ def abs precedence 40 right y { y "abs" }
+ def ceiling precedence 40 right y { y "ceiling" }
+ def floor precedence 40 right y { y "floor" }
+ def truncate precedence 40 right y { y "truncate" }
+ def round precedence 40 right y { y "round" }
+ def cos precedence 40 right y { y "cos" }
+ def sin precedence 40 right y { y "sin" }
+ def atan precedence 39 left x right y { x y "atan" }
+ def exp precedence 38 left x right y { x y "exp" }
+ def log precedence 37 left x right y { x y "dolog" }
+ def rand precedence 36 left x right y { x y "dorand" }
+ def "*" precedence 35 left x right y { x y "mul" }
+ def "/" precedence 34 left x right y { x y "div" }
+ def idiv precedence 34 left x right y { x y "idiv" }
+ def mod precedence 34 left x right y { x y "mod" }
+ def "-" precedence 33 left x right y
+ { x @Case { "" @Yield {y "neg"} else @Yield { x y "sub" } } }
+ def "-0" { "-0" }
+ def "-1" { "-1" }
+ def "-2" { "-2" }
+ def "-3" { "-3" }
+ def "-4" { "-4" }
+ def "-5" { "-5" }
+ def "-6" { "-6" }
+ def "-7" { "-7" }
+ def "-8" { "-8" }
+ def "-9" { "-9" }
+ def "-." { "-." }
+ def "+" precedence 32 left x right y
+ { x @Case { "" @Yield { y } else @Yield { x y "add" } } }
+ def "=" precedence 30 left x right y { x y "eq" }
+ def "!=" precedence 30 left x right y { x y "ne" }
+ def "<" precedence 30 left x right y { x y "lt" }
+ def "<=" precedence 30 left x right y { x y "le" }
+ def ">" precedence 30 left x right y { x y "gt" }
+ def ">=" precedence 30 left x right y { x y "ge" }
+ def not precedence 25 right y { y "not" }
+ def and precedence 24 left x right y { x y "and" }
+ def xor precedence 23 left x right y { x y "xor" }
+ def or precedence 22 left x right y { x y "or" }
+ def if
+ named cond { true }
+ named then {}
+ named else {}
+ { cond "{" then "} {" else "} ifelse" }
+ def xloop
+ named from { 0 }
+ named to { 0 }
+ named by { 1 }
+ named do named x { "xval" } {}
+ { from by to "{ /xval exch def" do "} for" }
+ def yloop
+ named from { 0 }
+ named to { 0 }
+ named by { 1 }
+ named do named y { "yval" } {}
+ { from by to "{ /yval exch def" do "} for" }
+ def zloop
+ named from { 0 }
+ named to { 0 }
+ named by { 1 }
+ named do named z { "zval" } {}
+ { from by to "{ /zval exch def" do "} for" }
+
+ def @IfPt
+ left no
+ right yes
+ {
+ points @Case {
+ none @Yield no
+ else @Yield yes
+ }
+ }
+
+ def @Points
+ {
+ points @Case {
+ none @Yield ""
+ plus @Yield "plus"
+ cross @Yield "cross"
+ square @Yield "square"
+ filledsquare @Yield "filledsquare"
+ diamond @Yield "diamond"
+ filleddiamond @Yield "filleddiamond"
+ circle @Yield "circle"
+ filledcircle @Yield "filledcircle"
+ triangle @Yield "triangle"
+ filledtriangle @Yield "filledtriangle"
+ }
+ }
+
+ def @Pairs
+ {
+ pairs @Case {
+ none @Yield {}
+ solid @Yield { "linesetup solid" @IfPt "ilinesetup solid" }
+ dashed @Yield { "linesetup cdashed" @IfPt "ilinesetup dashed" }
+ dotted @Yield { "linesetup dotted" @IfPt "ilinesetup dotted" }
+ dotdashed @Yield { "linesetup dotcdashed" @IfPt
+ "ilinesetup dotdashed" }
+ dotdotdashed @Yield { "linesetup dotdotcdashed" @IfPt
+ "ilinesetup dotdotdashed" }
+ dotdotdotdashed @Yield { "linesetup dotdotdotcdashed" @IfPt
+ "ilinesetup dotdotdotdashed" }
+ surfacexhisto @Yield { "surfacexhisto" }
+ surfaceyhisto @Yield { "surfaceyhisto" }
+ xhisto @Yield { "xhisto" }
+ yhisto @Yield { "yhisto" }
+ filledxhisto @Yield { "filledxhisto" }
+ filledyhisto @Yield { "filledyhisto" }
+ }
+ }
+
+ def @DataFormat
+ {
+ dataformat @Case {
+ xandy @Yield xandy
+ swapxandy @Yield swapxandy
+ yonly @Yield yonly
+ xonly @Yield xonly
+ }
+ }
+
+ def @Paint
+ {
+ paint @Case {
+ { none no No } @Yield "false"
+ { yes Yes } @Yield "true"
+ }
+ }
+
+ "[ [" data "]" dataformat
+ "{" @Points "}"
+ "{" @Pairs "}"
+ "{ /dashlength" dashlength "def"
+ " /linewidth" linewidth "def" @ColourCommand colour
+ " /symbolsize" symbolsize "def"
+ " /symbollinewidth" symbollinewidth "def }"
+ "{" @Paint "}"
+ "{" texture "}"
+ "]"
+ }
+
+ def @Style
+ {
+ style @Case {
+ frame @Yield { "framestyle" }
+ grid @Yield { "gridstyle" }
+ none @Yield { "nonestyle" }
+ axes @Yield { "axesstyle" }
+ }
+ }
+
+ def @XExtra
+ {
+ xextra @Case {
+ "auto" @Yield {
+ style @Case {
+ frame @Yield { "0.5 cm" }
+ grid @Yield { "0" }
+ none @Yield { "0" }
+ axes @Yield { "0" }
+ }
+ }
+ else @Yield xextra
+ }
+ }
+
+ def @YExtra
+ {
+ yextra @Case {
+ "auto" @Yield {
+ style @Case {
+ frame @Yield { "0.5 cm" }
+ grid @Yield { "0" }
+ none @Yield { "0" }
+ axes @Yield { "0" }
+ }
+ }
+ else @Yield yextra
+ }
+ }
+
+ def @XDecreasing
+ {
+ xdecreasing @Case {
+ { No no } @Yield "false"
+ { Yes yes } @Yield "true"
+ }
+ }
+
+ def @YDecreasing
+ {
+ ydecreasing @Case {
+ { No no } @Yield "false"
+ { Yes yes } @Yield "true"
+ }
+ }
+
+ font @Font @AddCaptions width @Wide height @High
+ @BackEnd @Case {
+ PostScript @Yield {
+ {
+ "grestore"
+ save @Case { { Yes yes } @Yield "save" else @Yield {} }
+ "gsave xsize ysize lgraphdict begin /ysize exch def"
+ "/xsize exch def /alldata [" @Body "] def"
+ xticksep "[" xticks "] 0 alldata" xmin xmax xlog
+ @XExtra @XDecreasing xorigin xticklength "xset"
+ yticksep "[" yticks "] 1 alldata" ymin ymax ylog
+ @YExtra @YDecreasing yorigin yticklength "yset"
+
+ rticks @Case {
+
+ "" @Yield "norset"
+
+ else @Yield {
+ rticksep "[" rticks "] 1 alldata" ymin ymax ylog
+ @YExtra @YDecreasing yorigin rticklength "rset"
+ }
+ }
+
+ "rundata" @Style // "end"
+ save @Case { { Yes yes } @Yield "restore" else @Yield {} }
+ } @Graphic { //1rt objects }
+ }
+ PDF @Yield { {"% @Graph UNIMPLEMENTED"} @Graphic { //1rt objects } }
+ }
+
+ }
+}
diff --git a/include/include/graphf.etc b/include/include/graphf.etc
new file mode 100644
index 0000000..d01734d
--- /dev/null
+++ b/include/include/graphf.etc
@@ -0,0 +1,312 @@
+
+###############################################################################
+# #
+# Lout @GraphMath package for @Graph (Version 1.1) #
+# #
+# Version 1.0 by Jeffrey H. Kingston, December 1993. #
+# Version 1.1 by Jeffrey H. Kingston, October 1996. #
+# #
+# This package provides mathematics for the @Graph graph drawing package. #
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either Version 3, or (at your option) #
+# any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA #
+# #
+# As a special exception, when this file is read by Lout when processing #
+# a Lout source document, you may use the result without restriction. #
+# #
+###############################################################################
+
+export
+
+ "-0" "-1" "-2" "-3" "-4" "-5" "-6" "-7" "-8" "-9" "-."
+ pi e sqrt abs ceiling floor truncate round cos sin atan
+ exp log rand "*" "/" idiv mod "+" "-"
+ "=" "!=" "<" "<=" ">" ">=" not and xor or
+ if xloop yloop zloop
+
+def @GraphMath
+{
+ def "-0" { "-0" }
+ def "-1" { "-1" }
+ def "-2" { "-2" }
+ def "-3" { "-3" }
+ def "-4" { "-4" }
+ def "-5" { "-5" }
+ def "-6" { "-6" }
+ def "-7" { "-7" }
+ def "-8" { "-8" }
+ def "-9" { "-9" }
+ def "-." { "-." }
+
+ def pi { "3.14159" }
+
+ def e { "2.71828" }
+
+ def sqrt
+ precedence 40
+ right y
+ {
+ y "sqrt"
+ }
+
+ def abs
+ precedence 40
+ right y
+ {
+ y "abs"
+ }
+
+ def ceiling
+ precedence 40
+ right y
+ {
+ y "ceiling"
+ }
+
+ def floor
+ precedence 40
+ right y
+ {
+ y "floor"
+ }
+
+ def truncate
+ precedence 40
+ right y
+ {
+ y "truncate"
+ }
+
+ def round
+ precedence 40
+ right y
+ {
+ y "round"
+ }
+
+ def cos
+ precedence 40
+ right y
+ {
+ y "cos"
+ }
+
+ def sin
+ precedence 40
+ right y
+ {
+ y "sin"
+ }
+
+ def atan
+ precedence 39
+ left x
+ right y
+ {
+ x y "atan"
+ }
+
+ def exp
+ precedence 38
+ left x
+ right y
+ {
+ x y "exp"
+ }
+
+ def log
+ precedence 37
+ left x
+ right y
+ {
+ x y "dolog"
+ }
+
+ def rand
+ precedence 36
+ left x
+ right y
+ {
+ x y "dorand"
+ }
+
+ def "*"
+ precedence 35
+ left x
+ right y
+ {
+ x y "mul"
+ }
+
+ def "/"
+ precedence 35
+ left x
+ right y
+ {
+ x y "div"
+ }
+
+ def "idiv"
+ precedence 34
+ left x
+ right y
+ {
+ x y "idiv"
+ }
+
+ def "mod"
+ precedence 34
+ left x
+ right y
+ {
+ x y "mod"
+ }
+
+ def "-"
+ precedence 33
+ left x
+ right y
+ {
+ x @Case {
+ "" @Yield { y "neg" }
+ else @Yield { x y "sub" }
+ }
+ }
+
+ def "+"
+ precedence 32
+ left x
+ right y
+ {
+ x @Case {
+ "" @Yield { y }
+ else @Yield { x y "add" }
+ }
+ }
+
+ def "="
+ precedence 30
+ left x
+ right y
+ {
+ x y "eq"
+ }
+
+ def "!="
+ precedence 30
+ left x
+ right y
+ {
+ x y "ne"
+ }
+
+ def "<"
+ precedence 30
+ left x
+ right y
+ {
+ x y "lt"
+ }
+
+ def "<="
+ precedence 30
+ left x
+ right y
+ {
+ x y "le"
+ }
+
+ def ">"
+ precedence 30
+ left x
+ right y
+ {
+ x y "gt"
+ }
+
+ def ">="
+ precedence 30
+ left x
+ right y
+ {
+ x y "ge"
+ }
+
+ def "not"
+ precedence 25
+ right y
+ {
+ y "not"
+ }
+
+ def "and"
+ precedence 24
+ left x
+ right y
+ {
+ x y "and"
+ }
+
+ def "xor"
+ precedence 23
+ left x
+ right y
+ {
+ x y "xor"
+ }
+
+ def "or"
+ precedence 22
+ left x
+ right y
+ {
+ x y "or"
+ }
+
+ def if
+ named cond { true }
+ named then {}
+ named else {}
+ {
+ cond "{" then "} {" else "} ifelse"
+ }
+
+ def xloop
+ named from { 0 }
+ named to { 0 }
+ named by { 1 }
+ named do named x { "xval" } {}
+ {
+ from by to "{ /xval exch def" do "} for"
+ }
+
+ def yloop
+ named from { 0 }
+ named to { 0 }
+ named by { 1 }
+ named do named y { "yval" } {}
+ {
+ from by to "{ /yval exch def" do "} for"
+ }
+
+ def zloop
+ named from { 0 }
+ named to { 0 }
+ named by { 1 }
+ named do named z { "zval" } {}
+ {
+ from by to "{ /zval exch def" do "} for"
+ }
+
+}
diff --git a/include/include/graphf.lpg b/include/include/graphf.lpg
new file mode 100644
index 0000000..a0137a4
--- /dev/null
+++ b/include/include/graphf.lpg
@@ -0,0 +1,1091 @@
+%%BeginResource: procset LoutGraphPrependGraphic
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% PostScript @SysPrependGraphic file for @Graph (Version 1.0) %
+% %
+% Version 1.0 by Jeffrey H. Kingston, December 1993. %
+% swapxandy added September 2001 by JHK. %
+% %
+% This file has been placed in the public domain by its author, %
+% Jeffrey H. Kingston %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+errordict begin
+ /handleerror
+ {
+ { /Times-Roman findfont 8 pt scalefont setfont
+ 0 setgray 4 pt 4 pt moveto
+ $error /errorname get
+ dup lgraphdict exch known
+ { lgraphdict exch get }
+ { 30 string cvs } ifelse
+ show
+ ( Command: ) show
+ $error /command get 30 string cvs show
+ } stopped {} if
+ showpage stop
+ } def
+end
+
+/lgraphdebugposy 432 def
+/lgraphdebugposx 72 def
+
+% - lgraphdebugnextline -
+/lgraphdebugnextline
+{
+ lgraphdebugposy 72 lt
+ { /lgraphdebugposx lgraphdebugposx 144 add store
+ /lgraphdebugposy 432 store
+ }
+ {
+ /lgraphdebugposy lgraphdebugposy 12 sub store
+ } ifelse
+ lgraphdebugposx lgraphdebugposy moveto
+} def
+
+% - lgraphdebugbeginindent -
+/lgraphdebugbeginindent
+{
+ /lgraphdebugposx lgraphdebugposx 12 add store
+} def
+
+% - lgraphdebugendindent -
+/lgraphdebugendindent
+{
+ /lgraphdebugposx lgraphdebugposx 12 sub store
+} def
+
+% <string> <int> lgraphdebugprint -
+% must be defined outside lgraphdict since used in arbitrary places
+% print <string> plus count or <int> stack entries, whichever is the smaller
+/lgraphdebugprint
+{
+ exch
+ gsave
+ initgraphics
+ lgraphdebugnextline
+ /Times-Roman findfont 10 scalefont setfont
+ 0 setgray show
+ lgraphdebugbeginindent
+ count 1 sub 2 copy lt { pop } { exch pop } ifelse 1 sub
+ 0 exch 1 exch
+ {
+ lgraphdebugnextline
+ index
+ dup type (dicttype) eq
+ {
+ (begin dict) show
+ lgraphdebugbeginindent
+ {
+ lgraphdebugnextline
+ pop 100 string cvs show
+ } forall
+ lgraphdebugendindent
+ lgraphdebugnextline
+ (end dict) show
+ }
+ {
+ dup type (arraytype) eq
+ {
+ (begin array) show
+ lgraphdebugbeginindent
+ {
+ lgraphdebugnextline
+ 100 string cvs show
+ } forall
+ lgraphdebugendindent
+ lgraphdebugnextline
+ (end array) show
+ }
+ {
+ 100 string cvs show
+ } ifelse
+ } ifelse
+ } for
+ lgraphdebugendindent
+ grestore
+} def
+
+
+/lgraphdict 200 dict def
+lgraphdict begin
+
+% error messages
+/dictfull (dictfull error) def
+/dictstackoverflow (dictstackoverflow error) def
+/execstackoverflow (execstackoverflow error: expression too complex?) def
+/limitcheck (limitcheck error: graph too complex or too large?) def
+/syntaxerror (syntaxerror error: syntax error in text of graph?) def
+/typecheck (typecheck error: syntax error in text of graph?) def
+/undefined (undefined error: unknown or misspelt symbol?) def
+/rangecheck (rangecheck error: undefined expression (e.g. divide by zero)?) def
+/VMError (VMError error: run out of memory?) def
+
+% random number between x and y inclusive: x y dorand num
+/dorand { 1 index sub 1 add rand exch mod add } def
+
+% log to given base: base num dolog num
+/dolog { ln exch ln div } def
+
+% maximum of two numbers: <num> <num> max <num>
+/max { 2 copy gt { pop } { exch pop } ifelse } def
+
+% add two points: <point> <point> padd <point>
+/padd { exch 3 1 roll add 3 1 roll add exch } def
+
+% subtract first point from second: <point> <point> psub <point>
+/psub { 3 2 roll sub 3 1 roll exch sub exch } def
+
+% distance between two points: <point> <point> distance <length>
+/distance { psub dup mul exch dup mul add sqrt } def
+
+% point at angle and distance: <point> <length> <angle> atangle <point>
+/atangle { 2 copy cos mul 3 1 roll sin mul padd } def
+
+% angle from one point to another: <point> <point> angle <angle>
+/angle { psub 2 copy 0 eq exch 0 eq and {pop} {exch atan} ifelse } def
+
+
+% set up for line
+% - linesetup <length> <dashlength>
+/linesetup
+{ newpath
+ xcurr ycurr trpoint xprev yprev trpoint
+ 4 copy moveto lineto distance dashlength
+} def
+
+% set up for icon-avoiding line
+% - ilinesetup <length> <dashlength>
+/ilinesetup
+{ newpath
+ xprev yprev trpoint xcurr ycurr trpoint 4 copy
+ 4 copy angle symbolsize 1.5 mul exch 4 2 roll pop pop atangle
+ 6 2 roll 4 2 roll
+ 4 copy angle symbolsize 1.5 mul exch 4 2 roll pop pop atangle
+ 4 copy moveto lineto distance dashlength
+} def
+
+
+% stroke a solid line: <length> <dashlength> solid -
+/solid
+{ pop pop [] 0 setdash linewidth setlinewidth stroke
+} def
+
+% stroke a dashed line: <length> <dashlength> dashed -
+/dashed
+{ 2 copy 2 mul le 1 index 0 le or
+ { exch pop 1 pt max [ exch dup ] 0 setdash }
+ { dup [ exch 4 2 roll 2 copy div
+ 1 sub 2 div ceiling dup 4 1 roll
+ 1 add mul sub exch div ] 0 setdash
+ } ifelse linewidth setlinewidth stroke
+} def
+
+% stroke a cdashed line: <length> <dashlength> cdashed -
+/cdashed
+{ 2 copy le 1 index 0 le or
+ { exch pop 1 pt max [ exch dup ] dup 0 get 2 div setdash }
+ { dup [ 4 2 roll exch 2 copy exch div
+ 2 div ceiling div 1 index sub
+ ] exch 2 div setdash
+ } ifelse linewidth setlinewidth stroke
+} def
+
+% stroke a dotted line: <length> <dashlength> dotted -
+/dotted
+{ 2 copy le 1 index 0 le or
+ { exch pop 1 pt max [ exch 0 exch ] 0 setdash }
+ { 1 index exch div ceiling div 0.99999 mul
+ [ 0 3 2 roll ] 0 setdash
+ } ifelse gsave 1 setlinecap linewidth setlinewidth stroke grestore newpath
+} def
+
+% stroke a noline line: <length> <dashlength> noline -
+/noline
+{ pop pop
+} def
+
+% scale array elements by factor: <array> <factor> scalearray <array>
+/scalearray
+{
+ [ exch 3 2 roll
+ { exch dup 3 1 roll mul exch } forall
+ pop ]
+} def
+
+% sum array elements: <array> sumarray <number>
+/sumarray
+{
+ 0 exch { add } forall
+} def
+
+% begin a more complex line: <length> <dashlength> linebegin -
+/linebegin
+{
+ % (Entering linebegin) 2 debugprint
+ 20 dict begin
+ /dashlen exch 1 pt max def
+ /len exch def
+ /gap dashlen def
+ /halfgap dashlen 2 div def
+ /dash dashlen def
+ /halfdash dashlen 2 div def
+ /dot 0 def
+ % (Leaving linebegin) 0 debugprint
+} def
+% end a more complex line: <linecap> <cycle> <startpos> <stoppos> lineend -
+/lineend
+{
+ % (Entering lineend) 3 debugprint
+ /stoppos exch def
+ /startpos exch def
+ /cycle exch def
+ /linecap exch def
+ /stopposlen stoppos sumarray def
+ /startposlen startpos sumarray def
+ /cyclelen cycle sumarray def
+ /effectivelen len startposlen add stopposlen sub def
+ effectivelen 0 gt cyclelen 0 gt and
+ {
+ /repeats effectivelen cyclelen div ceiling def
+ /factor len repeats cyclelen mul startposlen sub stopposlen add div def
+ cycle factor scalearray startposlen factor mul setdash
+ linecap setlinecap stroke
+ } if
+ end
+ % (Leaving lineend) 0 debugprint
+} def
+
+% stroke a dotdashed line: <length> <dashlength> dotdashed -
+/dotdashed
+{
+ linebegin
+ 1 [dash gap dot gap] [] [dash]
+ lineend
+} def
+
+% stroke a dotcdashed line: <length> <dashlength> dotcdashed -
+/dotcdashed
+{
+ linebegin
+ 1 [dash gap dot gap] [halfdash] [halfdash]
+ lineend
+} def
+
+% stroke a dotdotdashed line: <length> <dashlength> dotdotdashed -
+/dotdotdashed
+{
+ linebegin
+ 1 [dash gap dot gap dot gap] [] [dash]
+ lineend
+} def
+
+% stroke a dotdotcdashed line: <length> <dashlength> dotdotcdashed -
+/dotdotcdashed
+{
+ linebegin
+ 1 [dash gap dot gap dot gap] [halfdash] [halfdash]
+ lineend
+} def
+
+% stroke a dotdotdotdashed line: <length> <dashlength> dotdotdotdashed -
+/dotdotdotdashed
+{
+ linebegin
+ 1 [dash gap dot gap dot gap dot gap] [] [dash]
+ lineend
+} def
+
+% stroke a dotdotdotcdashed line: <length> <dashlength> dotdotdotcdashed -
+/dotdotdotcdashed
+{
+ linebegin
+ 1 [dash gap dot gap dot gap dot gap] [halfdash] [halfdash]
+ lineend
+} def
+
+
+% stroke a y histogram: - yhisto -
+/yhisto
+{ xprev yleft trpoint yextra sub moveto
+ xprev yprev trpoint lineto
+ xcurr yprev trpoint lineto
+ xcurr yleft trpoint yextra sub lineto
+ linewidth setlinewidth stroke
+} def
+
+% stroke an x histogram: - xhisto -
+/xhisto
+{ xleft yprev trpoint exch xextra sub exch moveto
+ xcurr yprev trpoint lineto
+ xcurr ycurr trpoint lineto
+ xleft ycurr trpoint exch xextra sub exch lineto
+ linewidth setlinewidth stroke
+} def
+
+% stroke a surface y histogram: - surfaceyhisto -
+/surfaceyhisto
+{ firstpair
+ { xprev yleft trpoint yextra sub moveto
+ xprev yprev trpoint lineto
+ }
+ { xprev yprev trpoint moveto
+ } ifelse
+ xcurr yprev trpoint lineto
+ lastpair
+ { xcurr yleft trpoint yextra sub lineto
+ }
+ { xcurr ycurr trpoint lineto
+ } ifelse
+ linewidth setlinewidth stroke
+} def
+
+% stroke a surface x histogram: - surfacexhisto -
+/surfacexhisto
+{ firstpair
+ { xleft yprev trpoint exch xextra sub exch moveto
+ }
+ { xprev yprev trpoint moveto
+ } ifelse
+ xcurr yprev trpoint lineto
+ xcurr ycurr trpoint lineto
+ lastpair
+ { xleft ycurr trpoint exch xextra sub exch lineto
+ } if
+ linewidth setlinewidth stroke
+} def
+
+% % pre-texture versions
+% % stroke a filled y histogram: - filledyhisto -
+% /filledyhisto
+% {
+% linewidth setlinewidth
+% xprev yleft trpoint exch currentlinewidth 2 div add exch yextra sub moveto
+% xprev yprev trpoint exch currentlinewidth 2 div add exch lineto
+% xcurr yprev trpoint exch currentlinewidth 2 div sub exch lineto
+% xcurr yleft trpoint exch currentlinewidth 2 div sub exch yextra sub lineto
+% closepath fill
+% } def
+
+% % stroke a filled x histogram: - filledxhisto -
+% /filledxhisto
+% {
+% linewidth setlinewidth
+% xleft yprev trpoint currentlinewidth 2 div add exch xextra sub exch moveto
+% xcurr yprev trpoint currentlinewidth 2 div add lineto
+% xcurr ycurr trpoint currentlinewidth 2 div sub lineto
+% xleft ycurr trpoint currentlinewidth 2 div sub exch xextra sub exch lineto
+% closepath fill
+% } def
+
+% stroke a filled y histogram: - filledyhisto -
+/filledyhisto
+{
+ linewidth setlinewidth
+ xprev yleft trpoint exch currentlinewidth 1.3 mul add exch yextra sub moveto
+ xprev yprev trpoint exch currentlinewidth 1.3 mul add exch lineto
+ xcurr yprev trpoint exch currentlinewidth 1.3 mul sub exch lineto
+ xcurr yleft trpoint exch currentlinewidth 1.3 mul sub exch yextra sub lineto
+ gsave texture fill grestore stroke
+} def
+
+% stroke a filled x histogram: - filledxhisto -
+/filledxhisto
+{
+ linewidth setlinewidth
+ xleft yprev trpoint currentlinewidth 1.3 mul add exch xextra sub exch moveto
+ xcurr yprev trpoint currentlinewidth 1.3 mul add lineto
+ xcurr ycurr trpoint currentlinewidth 1.3 mul sub lineto
+ xleft ycurr trpoint currentlinewidth 1.3 mul sub exch xextra sub exch lineto
+ gsave texture fill grestore stroke
+} def
+
+
+% docross: show a cross with a given symbolsize and symbollinewidth
+% <x> <y> <symbolsize> <symbollinewidth> docross -
+/docross
+{
+ setlinewidth
+ /ss exch def
+ newpath
+ moveto
+ ss neg ss neg rmoveto
+ ss 2 mul ss 2 mul rlineto
+ 0 ss -2 mul rmoveto
+ ss -2 mul ss 2 mul rlineto
+ [] 0 setdash 0 setlinecap stroke
+} def
+
+% cross: show a cross
+% - cross -
+/cross { xcurr ycurr trpoint symbolsize symbollinewidth docross } def
+
+% doplus: show a plus with a given symbolsize and symbollinewidth
+% <x> <y> <symbolsize> <symbollinewidth> doplus -
+/doplus
+{
+ setlinewidth
+ /ss exch def
+ newpath
+ moveto
+ ss neg 0 rmoveto
+ ss 2 mul 0 rlineto
+ ss neg ss neg rmoveto
+ 0 ss 2 mul rlineto
+ [] 0 setdash 0 setlinecap stroke
+} def
+
+% plus: show a plus
+% - plus -
+/plus { xcurr ycurr trpoint symbolsize symbollinewidth doplus } def
+
+% dosquare: show an open square with a given symbolsize and symbollinewidth
+% NB symbolsize is reduced by half the line width to get size exactly right
+% <x> <y> <symbolsize> <symbollinewidth> dosquare -
+/dosquare
+{
+ dup setlinewidth
+ 0.5 mul sub 0 max /ss exch def
+ newpath
+ moveto
+ ss neg ss neg rmoveto
+ ss 2 mul 0 rlineto
+ 0 ss 2 mul rlineto
+ ss -2 mul 0 rlineto
+ closepath [] 0 setdash stroke
+} def
+
+% square: show an open square
+% - square -
+/square { xcurr ycurr trpoint symbolsize symbollinewidth dosquare } def
+
+% dofilledsquare: show filled square with given symbolsize and symbollinewidth
+% NB symbollinewidth is not used
+% <x> <y> <symbolsize> <symbollinewidth> dofilledsquare -
+/dofilledsquare
+{
+ pop /ss exch def
+ newpath
+ moveto
+ ss neg ss neg rmoveto
+ ss 2 mul 0 rlineto
+ 0 ss 2 mul rlineto
+ ss -2 mul 0 rlineto
+ closepath fill
+} def
+
+% filledsquare: show a filled square
+% - filledsquare -
+/filledsquare { xcurr ycurr trpoint symbolsize symbollinewidth dofilledsquare } def
+
+% dodiamond: show an open diamond with a given symbolsize and symbollinewidth
+% NB symbolsize is reduced by half the line width to get size exactly right
+% <x> <y> <symbolsize> <symbollinewidth> dodiamond -
+/dodiamond
+{
+ dup setlinewidth
+ 0.5 mul sub 0 max /ss exch def
+ newpath
+ moveto
+ ss neg 0 rmoveto
+ ss ss neg rlineto
+ ss ss rlineto
+ ss neg ss rlineto
+ closepath [] 0 setdash stroke
+} def
+
+% diamond: show an open diamond
+% - diamond -
+/diamond { xcurr ycurr trpoint symbolsize symbollinewidth dodiamond } def
+
+% dofilleddiamond: show filled diamond with given symbolsize and symbollinewidth
+% NB symbollinewidth is not used
+% <x> <y> <symbolsize> <symbollinewidth> dofilleddiamond -
+/dofilleddiamond
+{
+ pop /ss exch def
+ newpath
+ moveto
+ ss neg 0 rmoveto
+ ss ss neg rlineto
+ ss ss rlineto
+ ss neg ss rlineto
+ closepath fill
+} def
+
+% filleddiamond: show a filled diamond
+% - filleddiamond -
+/filleddiamond { xcurr ycurr trpoint symbolsize symbollinewidth dofilleddiamond } def
+
+% docircle: show an open circle with a given symbolsize and symbollinewidth
+% NB symbolsize is reduced by half the line width to get size exactly right
+% <x> <y> <symbolsize> <symbollinewidth> docircle -
+/docircle
+{
+ dup setlinewidth
+ 0.5 mul sub 0 max /ss exch def
+ newpath
+ ss 0 360 arc [] 0 setdash stroke
+} def
+
+% circle: show an open circle
+% - circle -
+/circle { xcurr ycurr trpoint symbolsize symbollinewidth docircle } def
+
+% dofilledcircle: show filled circle with given symbolsize and symbollinewidth
+% NB symbollinewidth is not used
+% <x> <y> <symbolsize> <symbollinewidth> dofilledcircle -
+/dofilledcircle
+{
+ pop /ss exch def
+ newpath
+ ss 0 360 arc fill
+} def
+
+% filledcircle: show a filled circle
+% - filledcircle -
+/filledcircle { xcurr ycurr trpoint symbolsize symbollinewidth dofilledcircle } def
+
+% dotriangle: show an open triangle with a given symbolsize and symbollinewidth
+% NB symbolsize is reduced by half the line width to get size exactly right
+% <x> <y> <symbolsize> <symbollinewidth> dotriangle -
+/dotriangle
+{
+ dup setlinewidth
+ 0.5 mul sub 0 max /ss exch def
+ newpath
+ moveto
+ 0 ss 1.5 mul rmoveto
+ ss neg ss -2.5 mul rlineto
+ ss 2 mul 0 rlineto
+ closepath [] 0 setdash stroke
+} def
+
+% triangle: show an open triangle
+% - triangle -
+/triangle { xcurr ycurr trpoint symbolsize symbollinewidth dotriangle } def
+
+% dofilledtriangle: show filled triangle with symbolsize and symbollinewidth
+% NB symbollinewidth is not used
+% <x> <y> <symbolsize> <symbollinewidth> dofilledtriangle -
+/dofilledtriangle
+{
+ pop /ss exch def
+ newpath
+ moveto
+ 0 ss 1.5 mul rmoveto
+ ss neg ss -2.5 mul rlineto
+ ss 2 mul 0 rlineto
+ closepath fill
+} def
+
+% filledtriangle: show a filled triangle
+% - filledtriangle -
+/filledtriangle { symbolsize symbollinewidth dofilledtriangle } def
+
+
+%plog: like log only with a base, and protected from failing if <= 0
+% base x plog res
+/plog { dup 0 le { pop pop 0 } { ln exch ln div } ifelse } def
+
+% xtr: transform one x value logarithmically if xlog > 1
+% <num> xtr <num>
+/xtr
+{ xlog 1 gt
+ { xlog exch plog
+ } if
+} def
+
+% ytr: transform one y value logarithmically if ylog > 1
+% <num> ytr <num>
+/ytr
+{ ylog 1 gt
+ { ylog exch plog
+ } if
+} def
+
+
+% trpoint: transform (x, y) in graph space into (x', y') in print space
+% x y trpoint x' y'
+/trpoint
+{ exch xtr xdecr { trxmax exch sub } { trxmin sub } ifelse
+ trxmax trxmin sub div xwidth mul xextra add
+
+ exch ytr ydecr { trymax exch sub } { trymin sub } ifelse
+ trymax trymin sub div ywidth mul yextra add
+} def
+
+
+% yonly: interpolate x values 1, 2, ... into data
+% [ data ] yonly [ newdata ]
+/yonly
+{ dup /tmp exch def
+ length [ exch 1 exch 1 exch
+ { dup tmp exch 1 sub get
+ } for
+ ]
+} def
+
+% xonly: interpolate y values 1, 2, ... into data
+% [ data ] yonly [ newdata ]
+/xonly
+{ dup /tmp exch def
+ length [ exch 1 exch 1 exch
+ { dup tmp exch 1 sub get exch
+ } for
+ ]
+} def
+
+% xandy: no interpolation of x or y values
+% [ data ] xandy [ data ]
+/xandy {} def
+
+% swapxandy: swap x and y values
+% [ data ] swapxandy [ data ]
+/swapxandy
+{ dup /tmp exch def
+ length [ exch 2 exch 2 exch
+ { dup tmp exch 1 sub get exch 2 sub tmp exch get
+ } for
+ ]
+} def
+
+
+% expstringwidth: calculate width of string containing optional exponent
+% <string> expstringwidth <width>
+/expstringwidth
+{ (^) search
+ { exch pop stringwidth pop exch stringwidth pop 0.7 mul add }
+ { stringwidth pop }
+ ifelse
+} def
+
+% expstringshow: show string containing optional exponent
+% <string> expstringshow -
+/expstringshow
+{ (^) search
+ { exch pop show 0 0.5 ft rmoveto
+ gsave currentfont 0.7 scalefont setfont show grestore
+ }
+ { show
+ }
+ ifelse
+} def
+
+% concatenate two strings: <string> <string> strconcat <string>
+/strconcat
+{ 2 copy length exch length add string
+ dup 0 4 index putinterval
+ dup 3 index length 3 index putinterval
+ 3 1 roll pop pop
+} def
+
+% lgen: generate one label automatically
+% num lgen num string
+/lgen { dup 20 string cvs } def
+
+% loglgen: generate one logarithmic label (with exponent)
+% <base> <exponent> loglgen <string>
+/loglgen
+{ 20 string cvs exch 20 string cvs
+ (^) strconcat exch strconcat
+} def
+
+
+% printxtick: print one x tick
+% xpos printxtick -
+/printxtick
+{ newpath
+ yleft trpoint moveto 0 yextra neg rmoveto
+ 0 xticklength neg rlineto [] 0 setdash stroke
+} def
+
+% printxgrid: print one x grid line
+% xpos printxgrid -
+/printxgrid
+{ dup newpath
+ yleft trpoint moveto 0 yextra neg rmoveto
+ yright trpoint lineto 0 yextra rlineto [] 0 setdash stroke
+} def
+
+% printxlabel: print one x label
+% (xlabel) xpos printxlabel -
+/printxlabel
+{ yleft trpoint moveto 0 yextra neg rmoveto
+ 0 xticklength neg rmoveto 0 0.9 ft neg rmoveto
+ xlog 1 gt { 0 0.3 ft neg rmoveto } if
+ dup expstringwidth -2 div 0 rmoveto expstringshow
+} def
+
+% printytick: print one y tick
+% ypos printytick -
+/printytick
+{ newpath
+ xleft exch trpoint moveto xextra neg 0 rmoveto
+ yticklength neg 0 rlineto [] 0 setdash stroke
+} def
+
+% printygrid: print one y grid line
+% ypos printygrid -
+/printygrid
+{ dup newpath
+ xleft exch trpoint moveto xextra neg 0 rmoveto
+ xright exch trpoint lineto xextra 0 rlineto [] 0 setdash stroke
+} def
+
+% printylabel: print one y label
+% (ylabel) ypos printylabel -
+/printylabel
+{ xleft exch trpoint moveto xextra neg 0 rmoveto
+ yticklength neg 0 rmoveto -0.3 ft -0.3 ft rmoveto
+ dup expstringwidth neg 0 rmoveto expstringshow
+} def
+
+% printrtick: print one r tick
+% ypos printrtick -
+/printrtick
+{ newpath
+ xright exch trpoint moveto xextra 0 rmoveto
+ rticklength 0 rlineto [] 0 setdash stroke
+} def
+
+% printrlabel: print one r label
+% (rlabel) ypos printrlabel -
+/printrlabel
+{ xright exch trpoint moveto xextra 0 rmoveto
+ rticklength 0 rmoveto 0.3 ft -0.3 ft rmoveto
+ expstringshow
+} def
+
+% printticks: print ticks and labels
+% /tickproc /labelproc [ tickandlabeldata ] min printticks -
+/printticks
+{ /prev exch def
+ { dup type dup dup /integertype eq exch /realtype eq or
+ { pop dup /prev exch def 2 index cvx exec
+ }
+ { /stringtype eq
+ { prev 2 index cvx exec
+ }
+ { pop
+ } ifelse
+ } ifelse
+ } forall
+ pop pop
+} def
+
+
+% printxaxistick: print one x axis tick
+% xpos printxaxistick -
+/printxaxistick
+{ newpath
+ yaxis trpoint moveto 0 xticklength -2 div rmoveto
+ 0 xticklength rlineto [] 0 setdash stroke
+} def
+
+% printxaxislabel: print one x axis label
+% (xlabel) xpos printxaxislabel -
+/printxaxislabel
+{ yaxis trpoint moveto
+ 0 xticklength -2 div rmoveto 0 0.9 ft neg rmoveto
+ xlog 1 gt { 0 0.3 ft neg rmoveto } if
+ dup expstringwidth -2 div 0 rmoveto expstringshow
+} def
+
+% printyaxistick: print one y axis tick
+% ypos printyaxistick -
+/printyaxistick
+{ newpath
+ xaxis exch trpoint moveto
+ yticklength -2 div 0 rmoveto
+ yticklength 0 rlineto [] 0 setdash stroke
+} def
+
+% printyaxislabel: print one y axis label
+% (ylabel) ypos printyaxislabel -
+/printyaxislabel
+{ xaxis exch trpoint moveto
+ yticklength -2 div 0 rmoveto -0.3 ft -0.3 ft rmoveto
+ dup expstringwidth neg 0 rmoveto expstringshow
+} def
+
+
+% <val> minmax -
+% perform minv := min(minv, val); maxv := max(maxv, val)
+% allowing for the possibility of minv, maxv, val being false (undefined)
+/minmax
+{ dup false eq
+ { pop }
+ { minv false eq
+ { dup /minv exch def /maxv exch def }
+ { dup minv lt
+ { /minv exch def }
+ { dup maxv gt
+ { /maxv exch def }
+ { pop }
+ ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+
+% <ticks> ticksundef <ticks> <bool>
+% returns true iff the ticks array is undefined (one false entry)
+/ticksundef
+{ dup length 1 eq
+ { dup 0 get false eq
+ }
+ { false }
+ ifelse
+} def
+
+% <number> integral <boolean>
+% true if the number has an integral value
+/integral { dup round eq } def
+
+% ticksep ticks xory alldata minval maxval axis base ticksandlimits ticks min max base
+% ticksandlimits: sort out value of x or y ticks and limits and log base
+/ticksandlimits
+{ /base exch def
+ /minv false def
+ /maxv false def
+
+ % min and max of user-supplied minval, maxval, and axis
+ minmax minmax minmax
+
+ % min and max of data points
+ { 0 get dup dup length 1 sub 3 index exch 2 exch
+ { get minmax dup
+ } for pop pop
+ } forall
+ pop dup
+
+ % min and max of tick values
+ { dup type /stringtype eq
+ { pop } { minmax } ifelse
+ } forall
+
+ % fix minv and maxv if undefined (false) or equal
+ minv false eq
+ { /minv -1 def /maxv 1 def }
+ { minv maxv eq
+ { minv 0 lt
+ { /minv 2 minv mul def /maxv 0 def
+ }
+ { minv 0 eq
+ { /minv -1 def /maxv 1 def
+ }
+ { /minv 0 def /maxv 2 maxv mul def
+ } ifelse
+ } ifelse
+ } if
+ } ifelse
+
+ % invent ticks if undefined
+ ticksundef
+ { pop /ticksep exch def
+
+ % if base is reasonable and minv is positive, logarithmic ticks
+ base 1 gt minv 0 gt and
+ {
+ % get integral log of minv and maxv
+ /logminv base minv plog floor cvi def
+ /logmaxv base maxv plog ceiling cvi def
+
+ % if minv close to base, make it 1; reset minv and maxv
+ logminv 1 eq logmaxv 4 ge and { /logminv 0 def } if
+ /minv base logminv exp def
+ /maxv base logmaxv exp def
+
+ % ticks := [ base**logminv, ... , base**logmaxv ]
+ [ logminv 1 logmaxv
+ { dup base exch exp
+ exch base exch loglgen
+ } for
+ ]
+ }
+ { % non-logarithmic ticks
+ {
+ % fix tick separation if undefined (0) or too small
+ /base 0 def
+ /delta maxv minv sub def
+ ticksep delta 30 div le
+ { /ticksep 10 delta log 1 sub ceiling exp def
+ ticksep delta 2 div ge
+ { /ticksep ticksep 2 div def }
+ { ticksep delta 5 div lt
+ { /ticksep 2 ticksep mul def
+ } if
+ } ifelse
+ } if
+
+ % adjust minv and maxv to be multiples of ticksep
+ /minv minv ticksep div floor ticksep mul def
+ /maxv maxv ticksep div ceiling ticksep mul def
+ /delta maxv minv sub def
+
+ % if minv or maxv near zero, move to zero and redo
+ minv ticksep eq
+ { /minv 0 def }
+ { maxv ticksep neg eq { /maxv 0 def } { exit } ifelse
+ } ifelse
+ } loop
+
+ % if minv, maxv, and ticksep are all integral, set "makeint" to true
+ /makeint minv integral maxv integral ticksep integral and and def
+
+ % ticks := [ minv, minv+ticksep, ... , maxv ]
+ [ 0 1 delta ticksep div round
+ { ticksep mul minv add makeint { cvi } if lgen }
+ for
+ ]
+ } ifelse
+ }
+ { exch pop
+ } ifelse
+ minv maxv base
+} def
+
+% xset: set up all data for x axis, including limits and ticks
+% xticksep xticks 0 alldata xmin xmax xlog xextra xdecr xaxis xticklength xset -
+/xset
+{ /xticklength exch def
+ /xaxis exch def
+ /xdecr exch def
+ /xextra exch def
+ xaxis exch ticksandlimits
+ /xlog exch def /xmax exch def /xmin exch def /xticks exch def
+ /xleft xdecr { xmax } { xmin } ifelse def
+ /xright xdecr { xmin } { xmax } ifelse def
+ /xwidth xsize xextra 2 mul sub def
+ /trxmin xmin xtr def /trxmax xmax xtr def
+} def
+
+% yset: set up all data for y axis, including limits and yticks
+% yticksep yticks 0 alldata ymin ymax ylog yextra ydecr yaxis yticklength yset -
+/yset
+{ /yticklength exch def
+ /yaxis exch def
+ /ydecr exch def
+ /yextra exch def
+ yaxis exch ticksandlimits
+ /ylog exch def /ymax exch def /ymin exch def /yticks exch def
+ /yleft ydecr { ymax } { ymin } ifelse def
+ /yright ydecr { ymin } { ymax } ifelse def
+ /ywidth ysize yextra 2 mul sub def
+ /trymin ymin ytr def /trymax ymax ytr def
+} def
+
+% rset: set up all data for y axis (again), but including limits and rticks
+% rticksep rticks 0 alldata ymin ymax ylog yextra ydecr yaxis rticklength rset -
+/rset
+{ /rticklength exch def
+ /yaxis exch def
+ /ydecr exch def
+ /yextra exch def
+ yaxis exch ticksandlimits
+ /ylog exch def /ymax exch def /ymin exch def /rticks exch def
+ /yleft ydecr { ymax } { ymin } ifelse def
+ /yright ydecr { ymin } { ymax } ifelse def
+ /ywidth ysize yextra 2 mul sub def
+ /trymin ymin ytr def /trymax ymax ytr def
+} def
+
+% norset: set up data for no rticks
+% - norset -
+/norset
+{ /rticklength 0 def
+ /rticks [] def
+} def
+
+% framestyle: print a frame around the graph
+/framestyle
+{ 0 0 moveto xsize 0 lineto xsize ysize lineto
+ 0 ysize lineto closepath stroke
+ /printxtick /printxlabel xticks xleft printticks
+ /printytick /printylabel yticks ymin printticks
+ /printrtick /printrlabel rticks ymin printticks
+} def
+
+% gridstyle: print a frame around the graph, plus a grid
+/gridstyle
+{ 0 0 moveto xsize 0 lineto xsize ysize lineto
+ 0 ysize lineto closepath stroke
+ /printxgrid /printxlabel xticks xleft printticks
+ /printygrid /printylabel yticks ymin printticks
+ /printrtick /printrlabel rticks ymin printticks
+} def
+
+% nonestyle: print nothing around the graph
+/nonestyle
+{
+} def
+
+% axesstyle: print axes for the graph (unless axis values missing)
+/axesstyle
+{
+ xaxis false eq yaxis false eq or
+ { framestyle }
+ { xaxis yaxis trpoint dup 0 exch moveto xsize exch lineto
+ dup 0 moveto ysize lineto stroke
+ /printxaxistick /printxaxislabel xticks xleft printticks
+ /printyaxistick /printyaxislabel yticks ymin printticks
+ } ifelse
+} def
+
+% rundata: run all data sets
+/rundata
+{ alldata
+ { gsave
+ dup dup dup dup dup
+ 5 get /texture exch def
+ 4 get /dopaint exch def
+ 3 get /initrun exch def
+ 2 get /pairs exch def
+ 1 get /points exch def
+ 0 get /data exch def
+ dopaint
+ { data length 4 ge
+ {
+ gsave
+ initrun
+ newpath
+ data 0 get ymin trpoint yextra sub moveto
+ 0 2 data length 2 sub
+ { dup 1 add
+ data exch get /ycurr exch def
+ data exch get /xcurr exch def
+ xcurr ycurr trpoint lineto
+ } for
+ data dup length 2 sub get ymin trpoint yextra sub lineto
+ closepath texture fill
+ grestore
+ } if
+ } if
+ initrun
+ data length 2 ge
+ {
+ /xcurr data 0 get def
+ /ycurr data 1 get def
+ points
+ data length 4 ge
+ { 2 2 data length 2 sub
+ { /xprev xcurr def
+ /yprev ycurr def
+ dup dup 2 eq /firstpair exch def
+ data length 2 sub eq /lastpair exch def
+ dup 1 add
+ data exch get /ycurr exch def
+ data exch get /xcurr exch def
+ pairs
+ points
+ } for
+ } if
+ } if
+ grestore
+ } forall
+} def
+
+end
+%%EndResource
diff --git a/include/include/haskell b/include/include/haskell
new file mode 100644
index 0000000..de5e589
--- /dev/null
+++ b/include/include/haskell
@@ -0,0 +1,118 @@
+###############################################################################
+# #
+# Lout setup file for Haskell program printing #
+# #
+# Version 1.0 #
+# Thorsten Seitz #
+# 17 December 2001 #
+# #
+# This file has been placed in the public domain by its author. #
+# #
+###############################################################################
+
+
+###############################################################################
+# #
+# @SysInclude line #
+# #
+# This line causes Lout to read the definitions for this programming #
+# language, and should not be touched. #
+# #
+###############################################################################
+
+@SysInclude { haskellf }
+
+
+###############################################################################
+# #
+# @Use clause #
+# #
+# To change the default value of any option, delete the # at the start of #
+# its line and change the value between braces. #
+# #
+###############################################################################
+
+@Use { @HaskellSetup
+ # pipe { } # pipe source through this
+ # numbered { No } # No, Yes, or a line number
+ # numberedblanks { Yes } # No or Yes
+ # style { symbol @OrIfPlain fixed } # fixed, varying, or symbol
+
+ # the following options apply when style is "fixed"
+
+ # fixedfont { Courier } # font family
+ # fixedsize { -1.0p } # font size
+ # fixedline { 1.0vx } # line-space
+ # fixedblanklinescale { 1.0 } # blank-line scale
+ # fixedspace { lout } # spacing mode
+ # fixedtabin { 8 } # tab interval
+ # fixedtabout { 8s } # tab width
+
+ # fixedidentifiers { Base } # identifier face
+ # fixedkeywords { Base } # keyword face
+ # fixedoperators { Base } # operator face
+ # fixednumbers { Base } # number face
+ # fixedstrings { Base } # string face
+ # fixedcomments { Base } # comment face
+ # fixedlinenumbers { Base } # line numbers face
+
+ # fixedidentifiersformat { @Body } # identifiers format
+ # fixedkeywordsformat { @Body } # keywords format
+ # fixedoperatorsformat { @Body } # operators format
+ # fixednumbersformat { @Body } # numbers format
+ # fixedstringsformat { @Body } # strings format
+ # fixedcommentsformat { @Body } # comments format
+ # fixedlinenumbersformat { @Body } # line numbers format
+
+ # the following options apply when style is "varying"
+
+ # varyingfont { } # font family
+ # varyingsize { 1.0f } # font size
+ # varyingline { 1.0vx } # line-space
+ # varyingblanklinescale { 1.0 } # blank-line scale
+ # varyingspace { lout } # spacing mode
+ # varyingtabin { 8 } # tab interval
+ # varyingtabout { 3f } # tab width
+
+ # varyingidentifiers { Slope } # identifier face
+ # varyingkeywords { Bold } # keyword face
+ # varyingoperators { Base } # operator face
+ # varyingnumbers { Base } # number face
+ # varyingstrings { Slope } # string face
+ # varyingcomments { Base } # comment face
+ # varyinglinenumbers { Base } # line numbers face
+
+ # varyingidentifiersformat { @Body } # identifiers format
+ # varyingkeywordsformat { @Body } # keywords format
+ # varyingoperatorsformat { @Body } # operators format
+ # varyingnumbersformat { @Body } # numbers format
+ # varyingstringsformat { @Body } # strings format
+ # varyingcommentsformat { @Body } # comments format
+ # varyinglinenumbersformat { @Body } # line numbers format
+
+ # the following options apply when style is "symbol"
+
+ # symbolfont { } # font family
+ # symbolsize { 1.0f } # font size
+ # symbolline { 1.0vx } # line-space
+ # symbolblanklinescale { 1.0 } # blank-line scale
+ # symbolspace { lout } # spacing mode
+ # symboltabin { 8 } # tab interval
+ # symboltabout { 3f } # tab width
+
+ # symbolidentifiers { Slope } # identifier face
+ # symbolkeywords { Bold } # keyword face
+ # symboloperators { Base } # operator face
+ # symbolnumbers { Base } # number face
+ # symbolstrings { Slope } # string face
+ # symbolcomments { Base } # comment face
+ # symbollinenumbers { Base } # line numbers face
+
+ # symbolidentifiersformat { @Body } # identifiers format
+ # symbolkeywordsformat { @Body } # keywords format
+ # symboloperatorsformat { @Body } # operators format
+ # symbolnumbersformat { @Body } # numbers format
+ # symbolstringsformat { @Body } # strings format
+ # symbolcommentsformat { @Body } # comments format
+ # symbollinenumbersformat { @Body } # line numbers format
+}
diff --git a/include/include/haskellf b/include/include/haskellf
new file mode 100644
index 0000000..f2b9130
--- /dev/null
+++ b/include/include/haskellf
@@ -0,0 +1,527 @@
+
+###############################################################################
+# #
+# Lout @HaskellSetup package for formatting Haskell programs #
+# #
+# Version 1.0 #
+# Thorsten Seitz #
+# 17 December 2001 #
+# #
+# Version 1.1 (bug fixes) #
+# Gabor Greif #
+# 29 June 2007 #
+# #
+# This package uses a filtered body parameter to convert program source #
+# code into Lout source. The filter program is prg2lout, which is #
+# distributed with Lout and should be compiled and installed wherever #
+# Lout itself is. #
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either Version 3, or (at your option) #
+# any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA #
+# #
+# As a special exception, when this file is read by Lout when processing #
+# a Lout source document, you may use the result without restriction. #
+# #
+###############################################################################
+
+export @Haskell
+def @HaskellSetup
+ named pipe { } # pipe through this first
+ named numbered { No } # want lines numbered?
+ named blanknumbered { Yes } # blank lines numbered?
+ named style
+ named @OrIfPlain left x right y
+ { @BackEnd @Case { PlainText @Yield y else @Yield x } }
+ { symbol @OrIfPlain fixed } # print style
+
+ # the following options apply when style is "fixed"
+ named fixedfont { Courier }# font family
+ named fixedsize { -1.0p } # font size
+ named fixedline { 1.0vx } # line-space
+ named fixedblanklinescale { 1.0 } # blank-line scale
+ named fixedspace { lout } # spacing mode
+ named fixedtabin { 4 } # tab interval
+ named fixedtabout { 4s } # tab width
+
+ named fixedbraces { Base } # braces face
+ named fixedidentifiers { Base } # identifier face
+ named fixedkeywords { Base } # keyword face
+ named fixedoperators { Base } # operator face
+ named fixednumbers { Base } # number face
+ named fixedstrings { Base } # string face
+ named fixedcomments { Base } # comment face
+ named fixedlinenumbers { Base } # line numbers face
+
+ named fixedleftbracesformat right @Body { @Body } # left braces format
+ named fixedrightbracesformat right @Body { @Body } # right braces format
+ named fixedidentifiersformat right @Body { @Body } # identifier format
+ named fixedkeywordsformat right @Body { @Body } # keyword format
+ named fixedoperatorsformat right @Body { @Body } # operators format
+ named fixednumbersformat right @Body { @Body } # number format
+ named fixedstringsformat right @Body { @Body } # string format
+ named fixedcommentsformat right @Body { @Body } # comment format
+ named fixedlinenumbersformat right @Body { @Body } # line nums format
+
+ # the following options apply when style is "varying"
+ named varyingfont { } # font family
+ named varyingsize { 1.0f } # font size
+ named varyingline { 1.0vx } # line-space
+ named varyingblanklinescale { 1.0 } # blank-line scale
+ named varyingspace { lout } # spacing mode
+ named varyingtabin { 4 } # tab interval
+ named varyingtabout { 1.5f } # tab width
+
+ named varyingbraces { Base } # braces face
+ named varyingidentifiers { Slope } # identifier face
+ named varyingkeywords { Bold } # keyword face
+ named varyingoperators { Base } # operator face
+ named varyingnumbers { Base } # number face
+ named varyingstrings { Slope } # string face
+ named varyingcomments { Base } # comment face
+ named varyinglinenumbers { Base } # line numbers face
+
+ named varyingleftbracesformat right @Body { @Body } # left braces format
+ named varyingrightbracesformat right @Body { @Body } # right braces format
+ named varyingidentifiersformat right @Body { @Body } # identifier format
+ named varyingkeywordsformat right @Body { @Body } # keyword format
+ named varyingoperatorsformat right @Body { @Body } # operators format
+ named varyingnumbersformat right @Body { @Body } # number format
+ named varyingstringsformat right @Body { @Body } # string format
+ named varyingcommentsformat right @Body { @Body } # comment format
+ named varyinglinenumbersformat right @Body { @Body } # line nums format
+
+ # the following options apply when style is "symbol"
+ named symbolfont { } # font family
+ named symbolsize { 1f } # font size
+ named symbolline { 1.0vx } # line-space
+ named symbolblanklinescale { 1.0 } # blank-line scale
+ named symbolspace { lout } # spacing mode
+ named symboltabin { 4 } # tab interval
+ named symboltabout { 1.7f } # tab width
+
+ named symbolbraces { Base } # braces face
+ named symbolidentifiers { Slope } # identifier face
+ named symbolkeywords { Bold } # keyword face
+ named symboloperators { Slope } # operator face
+ named symbolnumbers { Base } # number face
+ named symbolstrings { Slope } # string face
+ named symbolcomments { Base } # comment face
+ named symbollinenumbers { Base } # line numbers face
+
+ named symbolidentifiersformat right @Body { 0.3s @Space {"" @Body} } # identifier format (with italic correction)
+ named symbolkeywordsformat right @Body { @Body } # keyword format
+ named symboloperatorsformat right @Body { 0.5s @Space {"" @Body ""}} # operators format
+ named symbolnumbersformat right @Body { @Body } # number format
+ named symbolstringsformat right @Body { @Body } # string format
+ named symbolcommentsformat right @Body { @Body } # comment format
+ named symbollinenumbersformat right @Body { @Body } # line nums format
+
+@Begin
+
+ export
+
+ @PI @PK @PO @PN @PS @PC @PCL @PL @PA @PM @PD
+ @PLAMBDA @PCIRC @PPLUSPLUS @PCOLON @PDOUBLECOLON
+
+ @A "$>"
+
+ def @Haskell
+ named style { style } # style
+ named numbered { numbered } # want numbered lines?
+ named blanknumbered { blanknumbered } # numbered blank lines?
+ named pipe { pipe } # pipe through this first
+ named font { dft } # font family
+ named size { dft } # font size
+ named line { dft } # line-space
+ named blanklinescale { dft } # blank-line scale
+ named space { dft } # spacing mode
+ named tabin { dft } # tab interval
+ named tabout { dft } # tab width
+ named braces { dft } # braces font
+ named identifiers { dft } # ident. font
+ named keywords { dft } # keyword font
+ named operators { dft } # operator font
+ named numbers { dft } # number font
+ named strings { dft } # string font
+ named comments { dft } # comment font
+ named linenumbers { dft } # line numbers font
+ body @Body # filtered, see below
+ @Begin
+
+ def @Test # returns x unless x is dft
+ left x
+ named iffixed {}
+ named ifvarying {}
+ named ifsymbol {}
+ {
+ x @Case {
+ dft @Yield {
+ style @Case {
+ fixed @Yield { iffixed }
+ varying @Yield { ifvarying }
+ symbol @Yield { ifsymbol }
+ }
+ }
+ else @Yield x
+ }
+ }
+
+
+ def @Else # returns x, or y if x is dft
+ left x
+ right y
+ {
+ x @Case {
+ dft @Yield y
+ else @Yield x
+ }
+ }
+
+
+ def @InitTab
+ {
+ tabin @Test
+ iffixed { fixedtabin }
+ ifvarying { varyingtabin }
+ ifsymbol { symboltabin }
+ }
+
+
+ def @InitTabWidth
+ {
+ tabout @Test
+ iffixed { fixedtabout }
+ ifvarying { varyingtabout }
+ ifsymbol { symboltabout }
+ }
+
+
+ def @Filter
+ {
+ def wantnumbered
+ {
+ numbered @Case {
+ { No no } @Yield ""
+ { Yes yes } @Yield "-L"
+ else @Yield { "-L"numbered }
+ }
+ }
+
+ def wantblanknumbered
+ {
+ blanknumbered @Case {
+ { No no } @Yield "-M"
+ { NoPrint noprint } @Yield "-N"
+ { Yes yes } @Yield ""
+ }
+ }
+
+ pipe @Case {
+ "" @Yield {
+ "prg2lout -r -lHaskell" wantblanknumbered wantnumbered
+ -i{@FilterIn} -o{@FilterOut} -e{@FilterErr}
+ -t{@InitTab} -T{@InitTabWidth}
+ }
+ else @Yield {
+ "cat" @FilterIn "|" pipe "|"
+ "prg2lout -r -lHaskell" wantblanknumbered wantnumbered
+ -o{@FilterOut} -e{@FilterErr}
+ -t{@InitTab} -T{@InitTabWidth}
+ }
+ }
+ }
+
+
+ def @InitFontFamily
+ {
+ font @Test
+ iffixed { fixedfont }
+ ifvarying { varyingfont }
+ ifsymbol { symbolfont }
+ }
+
+
+ def @InitSize
+ {
+ size @Test
+ iffixed { fixedsize }
+ ifvarying { varyingsize }
+ ifsymbol { symbolsize }
+ }
+
+
+ def @InitLine
+ {
+ line @Test
+ iffixed { fixedline }
+ ifvarying { varyingline }
+ ifsymbol { symbolline }
+ }
+
+
+ def @InitBLS
+ {
+ blanklinescale @Test
+ iffixed { fixedblanklinescale }
+ ifvarying { varyingblanklinescale }
+ ifsymbol { symbolblanklinescale }
+ }
+
+
+ def @InitSpace
+ {
+ space @Test
+ iffixed { fixedspace }
+ ifvarying { varyingspace }
+ ifsymbol { symbolspace }
+ }
+
+
+ def @PO # for formatting operators
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedoperatorsformat {
+ { operators @Else fixedoperators } @Font x
+ }
+ varying @Yield varyingoperatorsformat {
+ { operators @Else varyingoperators } @Font x
+ }
+ symbol @Yield symboloperatorsformat {
+ { operators @Else symboloperators } @Font x
+ }
+ }
+ }
+
+
+ def @A # get characters from the Adobe Symbol font
+ named sym {}
+ right x
+ {
+ style @Case {
+ symbol @Yield { { Symbol Base } @Font @Char sym }
+ else @Yield { x }
+ }
+ }
+
+ # deleted by JeffK here and in prg2lout.c, who could not see the point
+ #def @APO
+ # left sym
+ # right x
+ #{
+ # @PO sym @A x
+ #}
+
+
+
+ def @PI # for formatting identifiers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedidentifiersformat {
+ { identifiers @Else fixedidentifiers } @Font x
+ }
+ varying @Yield varyingidentifiersformat {
+ { identifiers @Else varyingidentifiers } @Font x
+ }
+ symbol @Yield symbolidentifiersformat {
+ { identifiers @Else symbolidentifiers } @Font x
+ }
+ }
+ }
+
+
+ def @PK # for formatting keywords
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedkeywordsformat {
+ { keywords @Else fixedkeywords } @Font x
+ }
+ varying @Yield varyingkeywordsformat {
+ { keywords @Else varyingkeywords } @Font x
+ }
+ symbol @Yield symbolkeywordsformat {
+ { keywords @Else symbolkeywords } @Font x
+ }
+ }
+ }
+
+
+ def @PN # for formatting numbers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixednumbersformat {
+ { numbers @Else fixednumbers } @Font x
+ }
+ varying @Yield varyingnumbersformat {
+ { numbers @Else varyingnumbers } @Font x
+ }
+ symbol @Yield symbolnumbersformat {
+ { numbers @Else symbolnumbers } @Font x
+ }
+ }
+ }
+
+
+ def @PS # for formatting strings
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedstringsformat {
+ { strings @Else fixedstrings } @Font x
+ }
+ varying @Yield varyingstringsformat {
+ { strings @Else varyingstrings } @Font x
+ }
+ symbol @Yield symbolstringsformat {
+ { strings @Else symbolstrings } @Font x
+ }
+ }
+ }
+
+
+ def @PCnoDelim
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedcommentsformat {
+ { comments @Else fixedcomments } @Font x
+ }
+ varying @Yield varyingcommentsformat {
+ { comments @Else varyingcomments } @Font x
+ }
+ symbol @Yield symbolcommentsformat {
+ { comments @Else symbolcomments } @Font x
+ }
+ }
+ }
+
+
+ def @Symb right x { { Symbol Base } @Font @Char x }
+
+
+ def @PC # for formatting comments
+ right x
+ {
+ @PCnoDelim { "{"{@Symb minus}x{@Symb minus}"}" }
+ }
+
+
+ def @PCL # for formatting line comments
+ right x
+ {
+ @PCnoDelim { {@Symb minus} &0.5s {@Symb minus}{x} }
+ }
+
+
+ def @PL # for formatting line numbers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedlinenumbersformat {
+ { linenumbers @Else fixedlinenumbers } @Font x
+ }
+ varying @Yield varyinglinenumbersformat {
+ { linenumbers @Else varyinglinenumbers } @Font x
+ }
+ symbol @Yield symbollinenumbersformat {
+ { linenumbers @Else symbollinenumbers } @Font x
+ }
+ }
+ }
+
+
+ def @PA # for formatting asterisks
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "*"
+ else @Yield { @Symb asteriskmath }
+ }
+ }
+
+
+ def @PM # for formatting minus signs
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "-"
+ else @Yield style @Case {
+ fixed @Yield "-"
+ else @Yield { { Symbol Base } @Font @Char "minus" }
+ }
+ }
+ }
+
+
+ def @PD # for formatting dots, if wanted larger
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "."
+ else @Yield { "1.4f" @Font "." &"0.05f" }
+ }
+ }
+
+
+ def @PLAMBDA
+ right x
+ {
+ style @Case {
+ symbol @Yield { { Symbol Base } @Font @Char lambda |0.5s }
+ else @Yield { x }
+ }
+ }
+
+ def @PCIRC
+ right x
+ {
+ style @Case {
+ symbol @Yield { @PO {/0.3fo 0i @Space {"" @Symb degree } } }
+ else @Yield { @PO x }
+ }
+ }
+
+ def @PPLUSPLUS
+ right x
+ {
+ style @Case {
+ symbol @Yield { @PO {@Symb plus |0.3fo @Symb plus} }
+ else @Yield { @PO x }
+ }
+ }
+
+ def @PCOLON
+ {
+ @PO ":"
+ }
+
+ def @PDOUBLECOLON
+ right x
+ {
+ style @Case {
+ symbol @Yield { @PO {: |0.8s :} }
+ else @Yield { @PO x }
+ }
+ }
+
+ macro "$>" { {} & }
+
+
+ Programming @Language
+ { @InitFontFamily Base @InitSize } @Font @InitSpace @Space
+ { @InitLine lines "blanklinescale" @InitBLS } @Break @Body
+
+ @End @Haskell
+
+@End @HaskellSetup
diff --git a/include/include/init b/include/include/init
new file mode 100644
index 0000000..3ca62df
--- /dev/null
+++ b/include/include/init
@@ -0,0 +1,37 @@
+
+###############################################################################
+# #
+# init #
+# #
+# Lout file for initializing run. #
+# #
+# Jeffrey H. Kingston #
+# 21 September 1994 #
+# #
+# This file has been placed in the public domain by its author. #
+# #
+###############################################################################
+
+
+@SysInclude { langdefs } # language definitions
+@SysInclude { bsf } # BasicSetup package
+@SysInclude { dsf } # DocumentSetup package
+ # including standard.ld
+def @TeX
+{
+ @OneCol { T &0.4fo {-0.2f @VShift E} &0.45fo X }
+}
+
+def @LaTeX
+{
+ @OneCol { L &0.3fo { +0.1f @VShift 0.8f @Font A } &0.4fo @TeX }
+}
+
+@Use { @BasicSetup }
+@Use { @DocumentSetup }
+
+@SysDatabase @Reference { loutrefs } # references about Lout
+@SysDatabase @Reference { oldrefs } # old references about Lout
+@SysDatabase @RefStyle { refstyle } # reference printing styles
+@SysDatabase @FontDef { fontdefs } # font definitions
+@SysDatabase @FontDef { latin2 } # more font definitions
diff --git a/include/include/java b/include/include/java
new file mode 100644
index 0000000..5a8849c
--- /dev/null
+++ b/include/include/java
@@ -0,0 +1,118 @@
+###############################################################################
+# #
+# Lout setup file for Java program printing #
+# #
+# Version 3.0 #
+# Jeffrey H. Kingston #
+# 6 April 2001 #
+# #
+# This file has been placed in the public domain by its author. #
+# #
+###############################################################################
+
+
+###############################################################################
+# #
+# @SysInclude line #
+# #
+# This line causes Lout to read the definitions for this programming #
+# language, and should not be touched. #
+# #
+###############################################################################
+
+@SysInclude { javaf }
+
+
+###############################################################################
+# #
+# @Use clause #
+# #
+# To change the default value of any option, delete the # at the start of #
+# its line and change the value between braces. #
+# #
+###############################################################################
+
+@Use { @JavaSetup
+ # pipe { } # pipe source through this
+ # numbered { No } # No, Yes, or a line number
+ # numberedblanks { Yes } # No or Yes
+ # style { fixed } # fixed, varying, or symbol
+
+ # the following options apply when style is "fixed"
+
+ # fixedfont { Courier } # font family
+ # fixedsize { -1.0p } # font size
+ # fixedline { 1.0vx } # line-space
+ # fixedblanklinescale { 1.0 } # blank-line scale
+ # fixedspace { lout } # spacing mode
+ # fixedtabin { 8 } # tab interval
+ # fixedtabout { 8s } # tab width
+
+ # fixedidentifiers { Base } # identifier face
+ # fixedkeywords { Base } # keyword face
+ # fixedoperators { Base } # operator face
+ # fixednumbers { Base } # number face
+ # fixedstrings { Base } # string face
+ # fixedcomments { Base } # comment face
+ # fixedlinenumbers { Base } # line numbers face
+
+ # fixedidentifiersformat { @Body } # identifiers format
+ # fixedkeywordsformat { @Body } # keywords format
+ # fixedoperatorsformat { @Body } # operators format
+ # fixednumbersformat { @Body } # numbers format
+ # fixedstringsformat { @Body } # strings format
+ # fixedcommentsformat { @Body } # comments format
+ # fixedlinenumbersformat { @Body } # line numbers format
+
+ # the following options apply when style is "varying"
+
+ # varyingfont { } # font family
+ # varyingsize { 1.0f } # font size
+ # varyingline { 1.0vx } # line-space
+ # varyingblanklinescale { 1.0 } # blank-line scale
+ # varyingspace { lout } # spacing mode
+ # varyingtabin { 8 } # tab interval
+ # varyingtabout { 3f } # tab width
+
+ # varyingidentifiers { Slope } # identifier face
+ # varyingkeywords { Bold } # keyword face
+ # varyingoperators { Base } # operator face
+ # varyingnumbers { Base } # number face
+ # varyingstrings { Slope } # string face
+ # varyingcomments { Base } # comment face
+ # varyinglinenumbers { Base } # line numbers face
+
+ # varyingidentifiersformat { @Body } # identifiers format
+ # varyingkeywordsformat { @Body } # keywords format
+ # varyingoperatorsformat { @Body } # operators format
+ # varyingnumbersformat { @Body } # numbers format
+ # varyingstringsformat { @Body } # strings format
+ # varyingcommentsformat { @Body } # comments format
+ # varyinglinenumbersformat { @Body } # line numbers format
+
+ # the following options apply when style is "symbol"
+
+ # symbolfont { } # font family
+ # symbolsize { 1.0f } # font size
+ # symbolline { 1.0vx } # line-space
+ # symbolblanklinescale { 1.0 } # blank-line scale
+ # symbolspace { lout } # spacing mode
+ # symboltabin { 8 } # tab interval
+ # symboltabout { 3f } # tab width
+
+ # symbolidentifiers { Slope } # identifier face
+ # symbolkeywords { Bold } # keyword face
+ # symboloperators { Base } # operator face
+ # symbolnumbers { Base } # number face
+ # symbolstrings { Slope } # string face
+ # symbolcomments { Base } # comment face
+ # symbollinenumbers { Base } # line numbers face
+
+ # symbolidentifiersformat { @Body } # identifiers format
+ # symbolkeywordsformat { @Body } # keywords format
+ # symboloperatorsformat { @Body } # operators format
+ # symbolnumbersformat { @Body } # numbers format
+ # symbolstringsformat { @Body } # strings format
+ # symbolcommentsformat { @Body } # comments format
+ # symbollinenumbersformat { @Body } # line numbers format
+}
diff --git a/include/include/javaf b/include/include/javaf
new file mode 100644
index 0000000..cd4f944
--- /dev/null
+++ b/include/include/javaf
@@ -0,0 +1,446 @@
+
+###############################################################################
+# #
+# Lout @JavaSetup package for formatting Java programs #
+# #
+# Version 3.0 #
+# Jeffrey H. Kingston #
+# 6 April 2001 #
+# #
+# This package uses a filtered body parameter to convert program source #
+# code into Lout source. The filter program is prg2lout, which is #
+# distributed with Lout and should be compiled and installed wherever #
+# Lout itself is. #
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either Version 3, or (at your option) #
+# any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA #
+# #
+# As a special exception, when this file is read by Lout when processing #
+# a Lout source document, you may use the result without restriction. #
+# #
+###############################################################################
+
+export @Java
+def @JavaSetup
+ named pipe { } # pipe through this first
+ named numbered { No } # want lines numbered?
+ named blanknumbered { Yes } # blank lines numbered?
+ named style
+ named @OrIfPlain left x right y
+ { @BackEnd @Case { PlainText @Yield y else @Yield x } }
+ { fixed } # print style
+
+ # the following options apply when style is "fixed"
+ named fixedfont { Courier }# font family
+ named fixedsize { -1.0p } # font size
+ named fixedline { 1.0vx } # line-space
+ named fixedblanklinescale { 1.0 } # blank-line scale
+ named fixedspace { lout } # spacing mode
+ named fixedtabin { 8 } # tab interval
+ named fixedtabout { 8s } # tab width
+
+ named fixedidentifiers { Base } # identifier face
+ named fixedkeywords { Base } # keyword face
+ named fixedoperators { Base } # operator face
+ named fixednumbers { Base } # number face
+ named fixedstrings { Base } # string face
+ named fixedcomments { Base } # comment face
+ named fixedlinenumbers { Base } # line numbers face
+
+ named fixedidentifiersformat right @Body { @Body } # identifier format
+ named fixedkeywordsformat right @Body { @Body } # keyword format
+ named fixedoperatorsformat right @Body { @Body } # operators format
+ named fixednumbersformat right @Body { @Body } # number format
+ named fixedstringsformat right @Body { @Body } # string format
+ named fixedcommentsformat right @Body { @Body } # comment format
+ named fixedlinenumbersformat right @Body { @Body } # line nums format
+
+ # the following options apply when style is "varying"
+ named varyingfont { } # font family
+ named varyingsize { 1.0f } # font size
+ named varyingline { 1.0vx } # line-space
+ named varyingblanklinescale { 1.0 } # blank-line scale
+ named varyingspace { lout } # spacing mode
+ named varyingtabin { 8 } # tab interval
+ named varyingtabout { 3f } # tab width
+
+ named varyingidentifiers { Slope } # identifier face
+ named varyingkeywords { Bold } # keyword face
+ named varyingoperators { Base } # operator face
+ named varyingnumbers { Base } # number face
+ named varyingstrings { Slope } # string face
+ named varyingcomments { Base } # comment face
+ named varyinglinenumbers { Base } # line numbers face
+
+ named varyingidentifiersformat right @Body { @Body } # identifier format
+ named varyingkeywordsformat right @Body { @Body } # keyword format
+ named varyingoperatorsformat right @Body { @Body } # operators format
+ named varyingnumbersformat right @Body { @Body } # number format
+ named varyingstringsformat right @Body { @Body } # string format
+ named varyingcommentsformat right @Body { @Body } # comment format
+ named varyinglinenumbersformat right @Body { @Body } # line nums format
+
+ # the following options apply when style is "symbol"
+ named symbolfont { } # font family
+ named symbolsize { 1.0f } # font size
+ named symbolline { 1.0vx } # line-space
+ named symbolblanklinescale { 1.0 } # blank-line scale
+ named symbolspace { lout } # spacing mode
+ named symboltabin { 8 } # tab interval
+ named symboltabout { 3f } # tab width
+
+ named symbolidentifiers { Slope } # identifier face
+ named symbolkeywords { Bold } # keyword face
+ named symboloperators { Base } # operator face
+ named symbolnumbers { Base } # number face
+ named symbolstrings { Slope } # string face
+ named symbolcomments { Base } # comment face
+ named symbollinenumbers { Base } # line numbers face
+
+ named symbolidentifiersformat right @Body { @Body } # identifier format
+ named symbolkeywordsformat right @Body { @Body } # keyword format
+ named symboloperatorsformat right @Body { @Body } # operators format
+ named symbolnumbersformat right @Body { @Body } # number format
+ named symbolstringsformat right @Body { @Body } # string format
+ named symbolcommentsformat right @Body { @Body } # comment format
+ named symbollinenumbersformat right @Body { @Body } # line nums format
+
+@Begin
+
+ export
+
+ @PI @PK @PO @PN @PS @PC @PL @PA @PM @PD
+ @A "$>"
+
+ def @Java
+ named style { style } # style
+ named numbered { numbered } # want numbered lines?
+ named blanknumbered { blanknumbered } # numbered blank lines?
+ named pipe { pipe } # pipe through this first
+ named font { dft } # font family
+ named size { dft } # font size
+ named line { dft } # line-space
+ named blanklinescale { dft } # blank-line scale
+ named space { dft } # spacing mode
+ named tabin { dft } # tab interval
+ named tabout { dft } # tab width
+ named identifiers { dft } # ident. font
+ named keywords { dft } # keyword font
+ named operators { dft } # operator font
+ named numbers { dft } # number font
+ named strings { dft } # string font
+ named comments { dft } # comment font
+ named linenumbers { dft } # line numbers font
+ body @Body # filtered, see below
+ @Begin
+
+ def @Test # returns x unless x is dft
+ left x
+ named iffixed {}
+ named ifvarying {}
+ named ifsymbol {}
+ {
+ x @Case {
+ dft @Yield {
+ style @Case {
+ fixed @Yield { iffixed }
+ varying @Yield { ifvarying }
+ symbol @Yield { ifsymbol }
+ }
+ }
+ else @Yield x
+ }
+ }
+
+
+ def @Else # returns x, or y if x is dft
+ left x
+ right y
+ {
+ x @Case {
+ dft @Yield y
+ else @Yield x
+ }
+ }
+
+
+ def @InitTab
+ {
+ tabin @Test
+ iffixed { fixedtabin }
+ ifvarying { varyingtabin }
+ ifsymbol { symboltabin }
+ }
+
+
+ def @InitTabWidth
+ {
+ tabout @Test
+ iffixed { fixedtabout }
+ ifvarying { varyingtabout }
+ ifsymbol { symboltabout }
+ }
+
+
+ def @Filter
+ {
+ def wantnumbered
+ {
+ numbered @Case {
+ { No no } @Yield ""
+ { Yes yes } @Yield "-L"
+ else @Yield { "-L"numbered }
+ }
+ }
+
+ def wantblanknumbered
+ {
+ blanknumbered @Case {
+ { No no } @Yield "-M"
+ { NoPrint noprint } @Yield "-N"
+ { Yes yes } @Yield ""
+ }
+ }
+
+ pipe @Case {
+ "" @Yield {
+ "prg2lout -r -lJava" wantblanknumbered wantnumbered
+ -i{@FilterIn} -o{@FilterOut} -e{@FilterErr}
+ -t{@InitTab} -T{@InitTabWidth}
+ }
+ else @Yield {
+ "cat" @FilterIn "|" pipe "|"
+ "prg2lout -r -lJava" wantblanknumbered wantnumbered
+ -o{@FilterOut} -e{@FilterErr}
+ -t{@InitTab} -T{@InitTabWidth}
+ }
+ }
+ }
+
+
+ def @InitFontFamily
+ {
+ font @Test
+ iffixed { fixedfont }
+ ifvarying { varyingfont }
+ ifsymbol { symbolfont }
+ }
+
+
+ def @InitSize
+ {
+ size @Test
+ iffixed { fixedsize }
+ ifvarying { varyingsize }
+ ifsymbol { symbolsize }
+ }
+
+
+ def @InitLine
+ {
+ line @Test
+ iffixed { fixedline }
+ ifvarying { varyingline }
+ ifsymbol { symbolline }
+ }
+
+
+ def @InitBLS
+ {
+ blanklinescale @Test
+ iffixed { fixedblanklinescale }
+ ifvarying { varyingblanklinescale }
+ ifsymbol { symbolblanklinescale }
+ }
+
+
+ def @InitSpace
+ {
+ space @Test
+ iffixed { fixedspace }
+ ifvarying { varyingspace }
+ ifsymbol { symbolspace }
+ }
+
+
+ def @PI # for formatting identifiers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedidentifiersformat {
+ { identifiers @Else fixedidentifiers } @Font x
+ }
+ varying @Yield varyingidentifiersformat {
+ { identifiers @Else varyingidentifiers } @Font x
+ }
+ symbol @Yield symbolidentifiersformat {
+ { identifiers @Else symbolidentifiers } @Font x
+ }
+ }
+ }
+
+
+ def @PK # for formatting keywords
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedkeywordsformat {
+ { keywords @Else fixedkeywords } @Font x
+ }
+ varying @Yield varyingkeywordsformat {
+ { keywords @Else varyingkeywords } @Font x
+ }
+ symbol @Yield symbolkeywordsformat {
+ { keywords @Else symbolkeywords } @Font x
+ }
+ }
+ }
+
+
+ def @PO # for formatting operators
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedoperatorsformat {
+ { operators @Else fixedoperators } @Font x
+ }
+ varying @Yield varyingoperatorsformat {
+ { operators @Else varyingoperators } @Font x
+ }
+ symbol @Yield symboloperatorsformat {
+ { operators @Else symboloperators } @Font x
+ }
+ }
+ }
+
+
+ def @PN # for formatting numbers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixednumbersformat {
+ { numbers @Else fixednumbers } @Font x
+ }
+ varying @Yield varyingnumbersformat {
+ { numbers @Else varyingnumbers } @Font x
+ }
+ symbol @Yield symbolnumbersformat {
+ { numbers @Else symbolnumbers } @Font x
+ }
+ }
+ }
+
+
+ def @PS # for formatting strings
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedstringsformat {
+ { strings @Else fixedstrings } @Font x
+ }
+ varying @Yield varyingstringsformat {
+ { strings @Else varyingstrings } @Font x
+ }
+ symbol @Yield symbolstringsformat {
+ { strings @Else symbolstrings } @Font x
+ }
+ }
+ }
+
+
+ def @PC # for formatting comments
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedcommentsformat {
+ { comments @Else fixedcomments } @Font x
+ }
+ varying @Yield varyingcommentsformat {
+ { comments @Else varyingcomments } @Font x
+ }
+ symbol @Yield symbolcommentsformat {
+ { comments @Else symbolcomments } @Font x
+ }
+ }
+ }
+
+
+ def @PL # for formatting line numbers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedlinenumbersformat {
+ { linenumbers @Else fixedlinenumbers } @Font x
+ }
+ varying @Yield varyinglinenumbersformat {
+ { linenumbers @Else varyinglinenumbers } @Font x
+ }
+ symbol @Yield symbollinenumbersformat {
+ { linenumbers @Else symbollinenumbers } @Font x
+ }
+ }
+ }
+
+
+ def @PA # for formatting asterisks
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "*"
+ else @Yield { "0.5w" @VShift "*" }
+ }
+ }
+
+
+ def @PM # for formatting minus signs
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "-"
+ else @Yield style @Case {
+ fixed @Yield "-"
+ else @Yield { { Symbol Base } @Font @Char "minus" }
+ }
+ }
+ }
+
+
+ def @PD # for formatting dots, if wanted larger
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "."
+ else @Yield { "1.4f" @Font "+0.04f" @VShift "." &"0.05f" }
+ }
+ }
+
+
+ def @A # get characters from the Adobe Symbol font
+ named sym {}
+ right x
+ {
+ style @Case {
+ symbol @Yield { { Symbol Base } @Font @Char sym }
+ else @Yield { x }
+ }
+ }
+
+
+ macro "$>" { {} & }
+
+
+ Programming @Language
+ { @InitFontFamily Base @InitSize } @Font @InitSpace @Space
+ { @InitLine lines "blanklinescale" @InitBLS } @Break @Body
+
+ @End @Java
+
+@End @JavaSetup
diff --git a/include/include/javascript b/include/include/javascript
new file mode 100644
index 0000000..30ef871
--- /dev/null
+++ b/include/include/javascript
@@ -0,0 +1,118 @@
+###############################################################################
+# #
+# Lout setup file for JavaScript program printing #
+# #
+# Version 3.0 #
+# Jeffrey H. Kingston #
+# 6 April 2001 #
+# #
+# This file has been placed in the public domain by its author. #
+# #
+###############################################################################
+
+
+###############################################################################
+# #
+# @SysInclude line #
+# #
+# This line causes Lout to read the definitions for this programming #
+# language, and should not be touched. #
+# #
+###############################################################################
+
+@SysInclude { javascriptf }
+
+
+###############################################################################
+# #
+# @Use clause #
+# #
+# To change the default value of any option, delete the # at the start of #
+# its line and change the value between braces. #
+# #
+###############################################################################
+
+@Use { @JavaScriptSetup
+ # pipe { } # pipe source through this
+ # numbered { No } # No, Yes, or a line number
+ # numberedblanks { Yes } # No or Yes
+ # style { fixed } # fixed, varying, or symbol
+
+ # the following options apply when style is "fixed"
+
+ # fixedfont { Courier } # font family
+ # fixedsize { -1.0p } # font size
+ # fixedline { 1.0vx } # line-space
+ # fixedblanklinescale { 1.0 } # blank-line scale
+ # fixedspace { lout } # spacing mode
+ # fixedtabin { 8 } # tab interval
+ # fixedtabout { 8s } # tab width
+
+ # fixedidentifiers { Base } # identifier face
+ # fixedkeywords { Base } # keyword face
+ # fixedoperators { Base } # operator face
+ # fixednumbers { Base } # number face
+ # fixedstrings { Base } # string face
+ # fixedcomments { Base } # comment face
+ # fixedlinenumbers { Base } # line numbers face
+
+ # fixedidentifiersformat { @Body } # identifiers format
+ # fixedkeywordsformat { @Body } # keywords format
+ # fixedoperatorsformat { @Body } # operators format
+ # fixednumbersformat { @Body } # numbers format
+ # fixedstringsformat { @Body } # strings format
+ # fixedcommentsformat { @Body } # comments format
+ # fixedlinenumbersformat { @Body } # line numbers format
+
+ # the following options apply when style is "varying"
+
+ # varyingfont { } # font family
+ # varyingsize { 1.0f } # font size
+ # varyingline { 1.0vx } # line-space
+ # varyingblanklinescale { 1.0 } # blank-line scale
+ # varyingspace { lout } # spacing mode
+ # varyingtabin { 8 } # tab interval
+ # varyingtabout { 3f } # tab width
+
+ # varyingidentifiers { Slope } # identifier face
+ # varyingkeywords { Bold } # keyword face
+ # varyingoperators { Base } # operator face
+ # varyingnumbers { Base } # number face
+ # varyingstrings { Slope } # string face
+ # varyingcomments { Base } # comment face
+ # varyinglinenumbers { Base } # line numbers face
+
+ # varyingidentifiersformat { @Body } # identifiers format
+ # varyingkeywordsformat { @Body } # keywords format
+ # varyingoperatorsformat { @Body } # operators format
+ # varyingnumbersformat { @Body } # numbers format
+ # varyingstringsformat { @Body } # strings format
+ # varyingcommentsformat { @Body } # comments format
+ # varyinglinenumbersformat { @Body } # line numbers format
+
+ # the following options apply when style is "symbol"
+
+ # symbolfont { } # font family
+ # symbolsize { 1.0f } # font size
+ # symbolline { 1.0vx } # line-space
+ # symbolblanklinescale { 1.0 } # blank-line scale
+ # symbolspace { lout } # spacing mode
+ # symboltabin { 8 } # tab interval
+ # symboltabout { 3f } # tab width
+
+ # symbolidentifiers { Slope } # identifier face
+ # symbolkeywords { Bold } # keyword face
+ # symboloperators { Base } # operator face
+ # symbolnumbers { Base } # number face
+ # symbolstrings { Slope } # string face
+ # symbolcomments { Base } # comment face
+ # symbollinenumbers { Base } # line numbers face
+
+ # symbolidentifiersformat { @Body } # identifiers format
+ # symbolkeywordsformat { @Body } # keywords format
+ # symboloperatorsformat { @Body } # operators format
+ # symbolnumbersformat { @Body } # numbers format
+ # symbolstringsformat { @Body } # strings format
+ # symbolcommentsformat { @Body } # comments format
+ # symbollinenumbersformat { @Body } # line numbers format
+}
diff --git a/include/include/javascriptf b/include/include/javascriptf
new file mode 100644
index 0000000..a0bde1e
--- /dev/null
+++ b/include/include/javascriptf
@@ -0,0 +1,446 @@
+
+###############################################################################
+# #
+# Lout @JavaScriptSetup package for formatting JavaScript programs #
+# #
+# Version 3.0 #
+# Jeffrey H. Kingston #
+# 6 April 2001 #
+# #
+# This package uses a filtered body parameter to convert program source #
+# code into Lout source. The filter program is prg2lout, which is #
+# distributed with Lout and should be compiled and installed wherever #
+# Lout itself is. #
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either Version 3, or (at your option) #
+# any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA #
+# #
+# As a special exception, when this file is read by Lout when processing #
+# a Lout source document, you may use the result without restriction. #
+# #
+###############################################################################
+
+export @JavaScript
+def @JavaScriptSetup
+ named pipe { } # pipe through this first
+ named numbered { No } # want lines numbered?
+ named blanknumbered { Yes } # blank lines numbered?
+ named style
+ named @OrIfPlain left x right y
+ { @BackEnd @Case { PlainText @Yield y else @Yield x } }
+ { fixed } # print style
+
+ # the following options apply when style is "fixed"
+ named fixedfont { Courier }# font family
+ named fixedsize { -1.0p } # font size
+ named fixedline { 1.0vx } # line-space
+ named fixedblanklinescale { 1.0 } # blank-line scale
+ named fixedspace { lout } # spacing mode
+ named fixedtabin { 8 } # tab interval
+ named fixedtabout { 8s } # tab width
+
+ named fixedidentifiers { Base } # identifier face
+ named fixedkeywords { Base } # keyword face
+ named fixedoperators { Base } # operator face
+ named fixednumbers { Base } # number face
+ named fixedstrings { Base } # string face
+ named fixedcomments { Base } # comment face
+ named fixedlinenumbers { Base } # line numbers face
+
+ named fixedidentifiersformat right @Body { @Body } # identifier format
+ named fixedkeywordsformat right @Body { @Body } # keyword format
+ named fixedoperatorsformat right @Body { @Body } # operators format
+ named fixednumbersformat right @Body { @Body } # number format
+ named fixedstringsformat right @Body { @Body } # string format
+ named fixedcommentsformat right @Body { @Body } # comment format
+ named fixedlinenumbersformat right @Body { @Body } # line nums format
+
+ # the following options apply when style is "varying"
+ named varyingfont { } # font family
+ named varyingsize { 1.0f } # font size
+ named varyingline { 1.0vx } # line-space
+ named varyingblanklinescale { 1.0 } # blank-line scale
+ named varyingspace { lout } # spacing mode
+ named varyingtabin { 8 } # tab interval
+ named varyingtabout { 3f } # tab width
+
+ named varyingidentifiers { Slope } # identifier face
+ named varyingkeywords { Bold } # keyword face
+ named varyingoperators { Base } # operator face
+ named varyingnumbers { Base } # number face
+ named varyingstrings { Slope } # string face
+ named varyingcomments { Base } # comment face
+ named varyinglinenumbers { Base } # line numbers face
+
+ named varyingidentifiersformat right @Body { @Body } # identifier format
+ named varyingkeywordsformat right @Body { @Body } # keyword format
+ named varyingoperatorsformat right @Body { @Body } # operators format
+ named varyingnumbersformat right @Body { @Body } # number format
+ named varyingstringsformat right @Body { @Body } # string format
+ named varyingcommentsformat right @Body { @Body } # comment format
+ named varyinglinenumbersformat right @Body { @Body } # line nums format
+
+ # the following options apply when style is "symbol"
+ named symbolfont { } # font family
+ named symbolsize { 1.0f } # font size
+ named symbolline { 1.0vx } # line-space
+ named symbolblanklinescale { 1.0 } # blank-line scale
+ named symbolspace { lout } # spacing mode
+ named symboltabin { 8 } # tab interval
+ named symboltabout { 3f } # tab width
+
+ named symbolidentifiers { Slope } # identifier face
+ named symbolkeywords { Bold } # keyword face
+ named symboloperators { Base } # operator face
+ named symbolnumbers { Base } # number face
+ named symbolstrings { Slope } # string face
+ named symbolcomments { Base } # comment face
+ named symbollinenumbers { Base } # line numbers face
+
+ named symbolidentifiersformat right @Body { @Body } # identifier format
+ named symbolkeywordsformat right @Body { @Body } # keyword format
+ named symboloperatorsformat right @Body { @Body } # operators format
+ named symbolnumbersformat right @Body { @Body } # number format
+ named symbolstringsformat right @Body { @Body } # string format
+ named symbolcommentsformat right @Body { @Body } # comment format
+ named symbollinenumbersformat right @Body { @Body } # line nums format
+
+@Begin
+
+ export
+
+ @PI @PK @PO @PN @PS @PC @PL @PA @PM @PD
+ @A "$>"
+
+ def @JavaScript
+ named style { style } # style
+ named numbered { numbered } # want numbered lines?
+ named blanknumbered { blanknumbered } # numbered blank lines?
+ named pipe { pipe } # pipe through this first
+ named font { dft } # font family
+ named size { dft } # font size
+ named line { dft } # line-space
+ named blanklinescale { dft } # blank-line scale
+ named space { dft } # spacing mode
+ named tabin { dft } # tab interval
+ named tabout { dft } # tab width
+ named identifiers { dft } # ident. font
+ named keywords { dft } # keyword font
+ named operators { dft } # operator font
+ named numbers { dft } # number font
+ named strings { dft } # string font
+ named comments { dft } # comment font
+ named linenumbers { dft } # line numbers font
+ body @Body # filtered, see below
+ @Begin
+
+ def @Test # returns x unless x is dft
+ left x
+ named iffixed {}
+ named ifvarying {}
+ named ifsymbol {}
+ {
+ x @Case {
+ dft @Yield {
+ style @Case {
+ fixed @Yield { iffixed }
+ varying @Yield { ifvarying }
+ symbol @Yield { ifsymbol }
+ }
+ }
+ else @Yield x
+ }
+ }
+
+
+ def @Else # returns x, or y if x is dft
+ left x
+ right y
+ {
+ x @Case {
+ dft @Yield y
+ else @Yield x
+ }
+ }
+
+
+ def @InitTab
+ {
+ tabin @Test
+ iffixed { fixedtabin }
+ ifvarying { varyingtabin }
+ ifsymbol { symboltabin }
+ }
+
+
+ def @InitTabWidth
+ {
+ tabout @Test
+ iffixed { fixedtabout }
+ ifvarying { varyingtabout }
+ ifsymbol { symboltabout }
+ }
+
+
+ def @Filter
+ {
+ def wantnumbered
+ {
+ numbered @Case {
+ { No no } @Yield ""
+ { Yes yes } @Yield "-L"
+ else @Yield { "-L"numbered }
+ }
+ }
+
+ def wantblanknumbered
+ {
+ blanknumbered @Case {
+ { No no } @Yield "-M"
+ { NoPrint noprint } @Yield "-N"
+ { Yes yes } @Yield ""
+ }
+ }
+
+ pipe @Case {
+ "" @Yield {
+ "prg2lout -r -lJavaScript" wantblanknumbered wantnumbered
+ -i{@FilterIn} -o{@FilterOut} -e{@FilterErr}
+ -t{@InitTab} -T{@InitTabWidth}
+ }
+ else @Yield {
+ "cat" @FilterIn "|" pipe "|"
+ "prg2lout -r -lJavaScript" wantblanknumbered wantnumbered
+ -o{@FilterOut} -e{@FilterErr}
+ -t{@InitTab} -T{@InitTabWidth}
+ }
+ }
+ }
+
+
+ def @InitFontFamily
+ {
+ font @Test
+ iffixed { fixedfont }
+ ifvarying { varyingfont }
+ ifsymbol { symbolfont }
+ }
+
+
+ def @InitSize
+ {
+ size @Test
+ iffixed { fixedsize }
+ ifvarying { varyingsize }
+ ifsymbol { symbolsize }
+ }
+
+
+ def @InitLine
+ {
+ line @Test
+ iffixed { fixedline }
+ ifvarying { varyingline }
+ ifsymbol { symbolline }
+ }
+
+
+ def @InitBLS
+ {
+ blanklinescale @Test
+ iffixed { fixedblanklinescale }
+ ifvarying { varyingblanklinescale }
+ ifsymbol { symbolblanklinescale }
+ }
+
+
+ def @InitSpace
+ {
+ space @Test
+ iffixed { fixedspace }
+ ifvarying { varyingspace }
+ ifsymbol { symbolspace }
+ }
+
+
+ def @PI # for formatting identifiers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedidentifiersformat {
+ { identifiers @Else fixedidentifiers } @Font x
+ }
+ varying @Yield varyingidentifiersformat {
+ { identifiers @Else varyingidentifiers } @Font x
+ }
+ symbol @Yield symbolidentifiersformat {
+ { identifiers @Else symbolidentifiers } @Font x
+ }
+ }
+ }
+
+
+ def @PK # for formatting keywords
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedkeywordsformat {
+ { keywords @Else fixedkeywords } @Font x
+ }
+ varying @Yield varyingkeywordsformat {
+ { keywords @Else varyingkeywords } @Font x
+ }
+ symbol @Yield symbolkeywordsformat {
+ { keywords @Else symbolkeywords } @Font x
+ }
+ }
+ }
+
+
+ def @PO # for formatting operators
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedoperatorsformat {
+ { operators @Else fixedoperators } @Font x
+ }
+ varying @Yield varyingoperatorsformat {
+ { operators @Else varyingoperators } @Font x
+ }
+ symbol @Yield symboloperatorsformat {
+ { operators @Else symboloperators } @Font x
+ }
+ }
+ }
+
+
+ def @PN # for formatting numbers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixednumbersformat {
+ { numbers @Else fixednumbers } @Font x
+ }
+ varying @Yield varyingnumbersformat {
+ { numbers @Else varyingnumbers } @Font x
+ }
+ symbol @Yield symbolnumbersformat {
+ { numbers @Else symbolnumbers } @Font x
+ }
+ }
+ }
+
+
+ def @PS # for formatting strings
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedstringsformat {
+ { strings @Else fixedstrings } @Font x
+ }
+ varying @Yield varyingstringsformat {
+ { strings @Else varyingstrings } @Font x
+ }
+ symbol @Yield symbolstringsformat {
+ { strings @Else symbolstrings } @Font x
+ }
+ }
+ }
+
+
+ def @PC # for formatting comments
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedcommentsformat {
+ { comments @Else fixedcomments } @Font x
+ }
+ varying @Yield varyingcommentsformat {
+ { comments @Else varyingcomments } @Font x
+ }
+ symbol @Yield symbolcommentsformat {
+ { comments @Else symbolcomments } @Font x
+ }
+ }
+ }
+
+
+ def @PL # for formatting line numbers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedlinenumbersformat {
+ { linenumbers @Else fixedlinenumbers } @Font x
+ }
+ varying @Yield varyinglinenumbersformat {
+ { linenumbers @Else varyinglinenumbers } @Font x
+ }
+ symbol @Yield symbollinenumbersformat {
+ { linenumbers @Else symbollinenumbers } @Font x
+ }
+ }
+ }
+
+
+ def @PA # for formatting asterisks
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "*"
+ else @Yield { "0.5w" @VShift "*" }
+ }
+ }
+
+
+ def @PM # for formatting minus signs
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "-"
+ else @Yield style @Case {
+ fixed @Yield "-"
+ else @Yield { { Symbol Base } @Font @Char "minus" }
+ }
+ }
+ }
+
+
+ def @PD # for formatting dots, if wanted larger
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "."
+ else @Yield { "1.4f" @Font "+0.04f" @VShift "." &"0.05f" }
+ }
+ }
+
+
+ def @A # get characters from the Adobe Symbol font
+ named sym {}
+ right x
+ {
+ style @Case {
+ symbol @Yield { { Symbol Base } @Font @Char sym }
+ else @Yield { x }
+ }
+ }
+
+
+ macro "$>" { {} & }
+
+
+ Programming @Language
+ { @InitFontFamily Base @InitSize } @Font @InitSpace @Space
+ { @InitLine lines "blanklinescale" @InitBLS } @Break @Body
+
+ @End @JavaScript
+
+@End @JavaScriptSetup
diff --git a/include/include/langdefs b/include/include/langdefs
new file mode 100644
index 0000000..4d6e11a
--- /dev/null
+++ b/include/include/langdefs
@@ -0,0 +1,31 @@
+###############################################################################
+# #
+# Language definitions #
+# Jeffrey H. Kingston #
+# #
+# This file has been placed in the public domain by its author. #
+# #
+###############################################################################
+
+langdef Croatian Hrvatski hr { croatian . : ! ? .) ?) !) .' !' ?' }
+langdef Czech Cesky Cestina cs { czech . : ! ? .) ?) !) .' !' ?' }
+langdef Danish Dansk da { danish . : ! ? .) ?) !) .' !' ?' }
+langdef Dutch Nederlands nl { dutch . : ! ? .) ?) !) .' !' ?' }
+langdef English en { english . : ! ? .) ?) !) .' !' ?' }
+langdef EnglishUK "en-GB" { engluk . : ! ? .) ?) !) .' !' ?' }
+langdef Esperanto eo { esperanto . : ! ? .) ?) !) .' !' ?' }
+langdef Finnish Suomi fi { finnish }
+langdef French Francais "Fran\347ais" fr { french }
+langdef German Deutsch de { german }
+langdef Hungarian Magyar hu { magyar . : ! ? .) ?) !) .' !' ?' }
+langdef Italian Italiano it { italian }
+langdef Norwegian Norsk no { norweg . : ! ? .) ?) !) .' !' ?' }
+langdef Polish Polski pl { polish . : ! ? .) ?) !) .' !' ?' }
+langdef Portuguese "Português" pt { portugal . : ! ? .) ?) !) .' !' ?' }
+langdef Programming pr { programming }
+langdef Russian "\362\325\323\323\313\311\312" ru { russian . : ! ? .) ?) !) .' !' ?' }
+langdef Slovak Slovensky Slovencina sk { slovak . : ! ? .) ?) !) .' !' ?' }
+langdef Slovenian Slovenia Slovenija sl { slovenia . : ! ? .) ?) !) .' !' ?' }
+langdef Spanish "Espa\361ol" es { spanish }
+langdef Swedish Svenska sv { swedish . : ! ? .) ?) !) .' !' ?' }
+langdef UpperSorbian hornjoserbsce serbsce wen { uppersorbian . : ! ? .) ?) !) .' !' ?' }
diff --git a/include/include/latin2 b/include/include/latin2
new file mode 100644
index 0000000..29883f2
--- /dev/null
+++ b/include/include/latin2
@@ -0,0 +1,9 @@
+#################################################################
+# #
+# latin2 #
+# #
+# This file includes everything you need for Latin2. #
+# #
+#################################################################
+
+@SysDatabase @FontDef { latin2 }
diff --git a/include/include/lengths b/include/include/lengths
new file mode 100644
index 0000000..3d698de
--- /dev/null
+++ b/include/include/lengths
@@ -0,0 +1,167 @@
+
+###########################################################################
+# #
+# lengths #
+# #
+# Jeffrey H. Kingston #
+# 30 October 2002 #
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either Version 3, or (at your option) #
+# any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA #
+# #
+# As a special exception, when this file is read by Lout when processing #
+# a Lout source document, you may use the result without restriction. #
+# #
+# This file offers two symbols for converting between PostScript #
+# lengths and Lout lengths. This has been a messy area and the two #
+# symbols in this file, @LoutLengths and @PSLengths, are my attempt #
+# to put a final end to the mess. #
+# #
+# A Lout length is, and has always been, a number followed by #
+# a one-letter unit of measurement: i c p m s v f d. #
+# #
+# A PostScript length is, and has always been, a number followed #
+# by a space followed by a two-letter unit of measurement, one of #
+# in cm pt em sp vs ft dg. #
+# #
+# To the ordinary user who reads the User's Guide, all lengths #
+# now look like Lout lengths. However, internally some of these #
+# lengths are used by Lout and others are passed to PostScript. #
+# Based on the two symbols @PSLengths and @LoutLengths defined #
+# below, an option x which could contain a length of either kind #
+# can be classified as one of three types: #
+# #
+# Type of option How to handle it #
+# ------------------------------------------------------------------- #
+# Option was never advertised named x { ... } #
+# as taking a PostScript length #
+# #
+# Option was advertised as import @LoutLengths named x { ... } #
+# possibly taking a PostScript #
+# length, but its value is used #
+# by Lout #
+# #
+# Option whose value has to be import @PSLengths named x { ... } #
+# passed to PostScript #
+# ------------------------------------------------------------------- #
+# #
+# Either kind of import allows either kind of length to be given; #
+# @LoutLengths makes sure the final result is suitable for passing #
+# to Lout, while @PSLengths makes sure the final result is suitable #
+# for passing to PostScript. If things had been done right from the #
+# start, there would be no need for @LoutLengths, but for backward #
+# compatibility we will continue to use it basically forever. #
+# #
+###########################################################################
+
+
+###########################################################################
+# #
+# @LoutLengths #
+# #
+# Convert PostScript lengths into Lout lengths. #
+# #
+###########################################################################
+
+export in cm pt em sp vs ft dg
+def @LoutLengths
+{
+ def in left x { x"i" }
+ def cm left x { x"c" }
+ def pt left x { x"p" }
+ def em left x { x"m" }
+ def sp left x { x"s" }
+ def vs left x { x"b" }
+ def ft left x { x"f" }
+ def dg left x { x"d" }
+}
+
+
+###########################################################################
+# #
+# @PSLengths #
+# #
+# Convert Lout lengths into PostScript (also PDF) lengths. #
+# PDF is no longer supported but this code was there already so #
+# it's been carried over. #
+# #
+###########################################################################
+
+export i c p m s v f d
+def @PSLengths
+{
+ def i left x {
+ @BackEnd @Case {
+ PostScript @Yield { x" in" }
+ PDF @Yield { "__mul(__in, "x")" }
+ PlainText @Yield ""
+ }
+ }
+
+ def c left x {
+ @BackEnd @Case {
+ PostScript @Yield { x" cm" }
+ PDF @Yield { "__mul(__cm, "x")" }
+ PlainText @Yield ""
+ }
+ }
+
+ def p left x {
+ @BackEnd @Case {
+ PostScript @Yield { x" pt" }
+ PDF @Yield { "__mul(__pt, "x")" }
+ PlainText @Yield ""
+ }
+ }
+
+ def m left x {
+ @BackEnd @Case {
+ PostScript @Yield { x" em" }
+ PDF @Yield { "__mul(__em, "x")" }
+ PlainText @Yield ""
+ }
+ }
+
+ def s left x {
+ @BackEnd @Case {
+ PostScript @Yield { x" sp" }
+ PDF @Yield { "__mul(__louts, "x")" }
+ PlainText @Yield ""
+ }
+ }
+
+ def v left x {
+ @BackEnd @Case {
+ PostScript @Yield { x" vs" }
+ PDF @Yield { "__mul(__loutv, "x")" }
+ PlainText @Yield ""
+ }
+ }
+
+ def f left x {
+ @BackEnd @Case {
+ PostScript @Yield { x" ft" }
+ PDF @Yield { "__mul(__loutf, "x")" }
+ PlainText @Yield ""
+ }
+ }
+
+ def d left x {
+ @BackEnd @Case {
+ PostScript @Yield { x" dg" }
+ PDF @Yield { "__mul(__loutd, "x")" }
+ PlainText @Yield ""
+ }
+ }
+}
diff --git a/include/include/math b/include/include/math
new file mode 100644
index 0000000..345db84
--- /dev/null
+++ b/include/include/math
@@ -0,0 +1,32 @@
+###############################################################################
+# #
+# Lout setup file for equation formatting, based on `eq'. #
+# #
+# Jeffrey H. Kingston #
+# 5 February 1999 #
+# #
+# Ludovic Courtès #
+# June 2007 #
+# #
+# This file has been placed in the public domain by its authors. #
+# #
+###############################################################################
+
+
+###############################################################################
+# #
+# The @SysInclude { mathf } line #
+# #
+# This line causes Lout to read the definitions for equations, and should #
+# not be touched. #
+# #
+###############################################################################
+
+@SysInclude { mathf }
+
+
+###############################################################################
+# #
+# This package does not offer default options that can be changed. #
+# #
+###############################################################################
diff --git a/include/include/mathf b/include/include/mathf
new file mode 100644
index 0000000..523504a
--- /dev/null
+++ b/include/include/mathf
@@ -0,0 +1,2944 @@
+
+###############################################################################
+# #
+# Lout @Math package for formatting mathematics #
+# #
+# @Math is based on the earlier @Eq package. @Eq revision history: #
+# #
+# Version 1.0 by Jeffrey H. Kingston, December 1990. #
+# Version 2.0 by Jeffrey H. Kingston, 22 December 1992. #
+# Version 3.0 by Jeffrey H. Kingston and Robert Marsa, March 1996. #
+# #
+# @Math revision history: #
+# #
+# Version 4.0 by Ludovic Courtès, June 2007. #
+# Version 5.0 by Jeffrey H. Kingston, September 2008. #
+# #
+# Acknowledgement: @Eq and @Math are based closely on the Eqn language #
+# of B. W. Kernighan and L. L. Cherry; the spacing rules are similar to #
+# those of the TeX system by D. E. Knuth. #
+# #
+# Version 4.0 makes use of `@SetContext' and `@GetContext' (introduced in #
+# Lout 3.34) to better honor the typesetting conventions outlined by Knuth. #
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either Version 3, or (at your option) #
+# any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA #
+# #
+# As a special exception, when this file is read by Lout when processing #
+# a Lout source document, you may use the result without restriction. #
+# #
+###############################################################################
+
+export
+
+ # Helper symbols
+ above below wideabove widebelow
+ "`" "``" "```" non big small vctr
+ @SuperScriptStyle @SubScriptStyle @NumeratorStyle
+ @DenominatorStyle @SquareRootStyle
+
+ # Ordinary symbols (Symbol font)
+ space exclam universal numbersign existential percent
+ ampersand suchthat parenleft parenright asteriskmath
+ plus comma minus period slash zero one two three four
+ five six seven eight nine colon semicolon less equal
+ greater question congruent Alpha Beta Chi Delta Epsilon
+ Phi Gamma Eta Iota thetaone Kappa Lambda Mu Nu Omicron
+ Pi Theta Rho Sigma Tau Upsilon sigmaone Omega Xi Psi Zeta
+ bracketleft therefore bracketright perpendicular underscore
+ radicalex alpha beta chi delta epsilon phi gamma eta iota
+ phione kappa lambda mu nu omicron pi theta rho sigma tau
+ upsilon omegaone omega xi psi zeta braceleft bar braceright
+ similar Upsilonone minute lessequal fraction infinity florin
+ club diamond heart spade arrowboth arrowleft arrowup
+ arrowright arrowdown degree plusminus second greaterequal
+ multiply proportional partialdiff bullet divide notequal
+ equivalence approxequal ellipsis arrowvertex arrowhorizex
+ carriagereturn aleph Ifraktur Rfraktur weierstrass
+ circlemultiply circleplus emptyset intersection union
+ propersuperset reflexsuperset notsubset propersubset
+ reflexsubset element notelement angle gradient registerserif
+ copyrightserif trademarkserif product radical dotmath
+ logicalnot logicaland logicalor arrowdblboth arrowdblleft
+ arrowdblup arrowdblright arrowdbldown lozenge angleleft
+ registersans copyrightsans trademarksans summation parenlefttp
+ parenleftex parenleftbt bracketlefttp bracketleftex
+ bracketleftbt bracelefttp braceleftmid braceleftbt braceex
+ angleright integral integraltp integralex integralbt
+ parenrighttp parenrightex parenrightbt bracketrighttp
+ bracketrightex bracketrightbt bracerighttp bracerightmid
+ bracerightbt
+
+ # Ordinary symbols (arrows)
+ leftarrow longleftarrow dblleftarrow dbllongleftarrow
+ rightarrow longrightarrow dblrightarrow dbllongrightarrow
+ leftrightarrow longleftrightarrow dblleftrightarrow
+ dbllongleftrightarrow mapsto longmapsto hookleftarrow
+ hookrightarrow leadsto leftharpoonup rightharpoonup
+ leftharpoondown rightharpoondown rightleftharpoons
+ uparrow dbluparrow downarrow dbldownarrow updownarrow
+ dblupdownarrow nearrow searrow swarrow nwarrow
+
+ # Ordinary symbols (to get Roman font)
+ arccos arcsin arctan arg cos cosh cot coth csc deg det dim exp
+ gcd hom inf ker lg lim liminf limsup ln log max min Pr sec sin
+ sinh supr tan tanh mod "0" "1" "2" "3" "4" "5" "6" "7" "8" "9"
+ "!" "?" "%" "(" ")" "[" "]"
+
+ # Ordinary symbols (for atleft and atright)
+ lpar blpar rpar brpar lbrack blbrack rbrack brbrack lbrace blbrace
+ rbrace brbrace lfloor blfloor rfloor brfloor lceil blceil
+ rceil brceil langle blangle rangle brangle
+
+ # Ordinary symbols (miscellaneous)
+ hbar Re Im partial infty prime nabla surd top bot dbar triangle
+ backslash forall exists neg circle filledcircle square ldots cdots
+ vdots ddots del grad "..." ",...," "'" "''" "'''" "''''" empty
+ triangleup triangledown half third
+
+ # Variable-building symbols
+ dot dotdot hat tilde vec dyad overbar underbar
+ sup sub tsub supp on ton
+
+ # Large operator symbols
+ largeop sum prod coprod bcap bcup bvee bwedge bodot botimes
+ boplus buplus int oint
+
+ # Unary operator symbols
+ sqrt root zroot
+ matrix pmatrix bmatrix brmatrix fmatrix cmatrix amatrix
+
+ # Binary operator symbols
+ over frac
+ bin "+" "-" "+-" "-+" setminus cdot times "*" circ div
+ cap cup uplus sqcap sqcup triangleleft triangleright
+ wr bigcirc bigtriangleup bigtriangledown vee wedge oplus ominus
+ otimes oslash odot dagger daggerdbl amalg
+
+ # Relation symbols
+ rel "<" ">" "=" "<=" prec preceq "<<" subset subseteq sqsubseteq
+ in vdash smile frown ">=" succ succeq ">>" supset supseteq
+ sqsupseteq ni dashv mid parallel "==" "~" "-~" asymp "~~"
+ "=~" bowtie propto models doteq trieq perp notsub notin "!="
+ "<->" "<--" "-->" up down "<=>" "<==" "==>" dblup dbldown
+ ":" "::" ":="
+ # not
+
+ # Punctuation symbols
+ punct ";" "," col
+
+def @Math
+ named symbolfont { Symbol Base }
+ named basefont { Times Base }
+ named initialstyle { "display" }
+ named initiallycramped { "No" }
+ named initialspace { separate 0.05f }
+ body @Body
+@Begin
+
+ ###################################################################
+ # #
+ # Operator Precedences (private) #
+ # #
+ # All @Math symbols with parameters have explicit precedences #
+ # defined by invoking one of the following macros. Symbols #
+ # that are typically used to build variables have high #
+ # precedence (84-80), then come unary operators (70), then #
+ # binary operators (66-60), then relations and the rest. #
+ # See also http://en.wikipedia.org/wiki/Order_of_operations . #
+ # #
+ ###################################################################
+
+ macro @MaxPrec { 100 }
+ macro @HatPrec { 84 }
+ macro @SubPrec { 82 }
+ macro @SupPrec { 80 }
+ macro @UnaryOpPrec { 70 }
+ macro @BinaryOpTimesPrec { 64 }
+ macro @BinaryOpDividePrec { 62 }
+ macro @BinaryOpPrec { 60 }
+ macro @RelationPrec { 50 }
+ macro @PunctuationPrec { 40 }
+ macro @HelperNonPrec { 26 }
+ macro @HelperAbovePrec { 24 }
+ macro @HelperColPrec { 22 }
+ macro @HelperRowPrec { 20 }
+
+
+ ###################################################################
+ # #
+ # Context-sensitive format changes (private) #
+ # #
+ # Equation formatting (according to Knuth) demands changes in #
+ # the appearance of equations depending on context. Knuth #
+ # distinguishes four major styles (the TeXbook, Ch. 17): #
+ # #
+ # display formulas displayed on lines by themselves #
+ # text formulas embedded in the text #
+ # script formulas used as superscripts or subscripts #
+ # scriptscript second-order superscripts or subscripts #
+ # #
+ # Each style has its own font size and spacing rules. #
+ # Additionally, each of these styles can be ``cramped'', #
+ # meaning that exponents are not raised as much. To these #
+ # four styles @Math adds a fifth: #
+ # #
+ # nohspace formulas enclosed in "non" #
+ # #
+ # which implements the "non" operator by causing all #
+ # style-dependent horizontal space to be 0. #
+ # #
+ ###################################################################
+
+ macro @CurrStyleVar { "EqCurrStyle" }
+ macro @CrampedVar { "EqCramped?" }
+
+ def @CurrStyle { @GetContext @CurrStyleVar }
+ def @Cramped { @GetContext @CrampedVar }
+
+ def @EqDebug
+ {
+ # Uncomment the following line to get debugging information.
+ #{ { Helvetica Base 0.7f } @Font @CurrStyle } |0.2f
+ @Null
+ }
+
+ def @WithStyle
+ named style { "display" }
+ named cramped { "No" }
+ right x
+ {
+ def @NewFontSize
+ {
+ @CurrStyle @Case {
+ "scriptscript" @Yield 1.0f # can't be smaller
+ "script" @Yield {
+ style @Case {
+ "script" @Yield 1.0f
+ else @Yield 0.8f } }
+ "text" @Yield {
+ style @Case {
+ "text" @Yield 1.0f
+ else @Yield 0.7f } }
+ "display" @Yield {
+ style @Case {
+ # display and text styles yield the same font size
+ { "display" "text" } @Yield 1.0f
+ else @Yield 0.7f } }
+ "nohspace" @Yield 1.0f
+ }
+ }
+
+
+ #{ Helvetica Base 0.4f } @Font { @CurrStyle -> style } |0.2f
+ @NewFontSize @Font
+ { @CurrStyleVar @Yield style } @SetContext {
+ { @CrampedVar @Yield cramped } @SetContext {
+ # FIXME: Space is not properly inherited, hence this
+ # `@Space' invocation.
+ { initialspace @Space x }
+ }
+ }
+ }
+
+ def @CurrSuperScriptGap
+ {
+ @Cramped @Case {
+ "Yes" @Yield 0.23fk
+ "No" @Yield 0.35fk
+ }
+ }
+
+ def @SubScriptGap { 0.35fk }
+
+ # Space around relational operators.
+ def @CurrRelSpaceGap
+ {
+ @CurrStyle @Case {
+ { "display" "text" } @Yield 0.300fe
+ "nohspace" @Yield 0i
+ else @Yield 0.030ce
+ }
+ }
+
+ # Space around binary operators.
+ def @CurrBinarySpaceGap
+ {
+ @CurrStyle @Case {
+ { "display" "text" } @Yield 0.240fe
+ "nohspace" @Yield 0i
+ else @Yield 0.024ce
+ }
+ }
+
+ # Space around punctuation marks, including matrix braces.
+ def @CurrPunctSpaceGap
+ {
+ @CurrStyle @Case {
+ { "display" "text" } @Yield 0.180fe
+ "nohspace" @Yield 0i
+ else @Yield 0.018ce
+ }
+ }
+
+ # Gap above/below math expressions (see, e.g., `to' and `from').
+ def @AboveGap { 0.15f }
+ def @BelowGap { 0.15f }
+
+ def @SkewGap { 0.05f }
+ def @ColGap { 0.8f }
+ def @RowGap { 0.5f }
+
+
+ ###################################################################
+ # #
+ # Miscellaneous helper definitions (private) #
+ # #
+ ###################################################################
+
+ def @Base precedence @MaxPrec right x { basefont @Font x }
+ def @Sym precedence @MaxPrec right x { symbolfont @Font x }
+
+ def @HLine
+ named line { @BackEnd @Case { PostScript @Yield { "0.05 ft setlinewidth" } PDF @Yield { "__mul(__loutf, 0.05) w" } } }
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ { "0 0 moveto xsize 0 lineto" line "stroke" } @Graphic {}
+ }
+ PDF @Yield { # note re-arrangement of commands (setlinewidth (='w') not allowed in a path)
+ { line "0 0 m __xsize 0 l s" } @Graphic {}
+ }
+ }
+ }
+
+ def @VLine
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ "0 0 moveto 0 ysize lineto 0.05 ft setlinewidth stroke" @Graphic {}
+ }
+ PDF @Yield {
+ "__mul(__loutf, 0.05) w 0 0 m 0 __ysize l s" @Graphic {}
+ }
+ }
+ }
+
+ def @Strut
+ precedence @MaxPrec
+ right x
+ {
+ @OneCol { x | @OneRow { 0.5f @High ^/ 0.5f @High } }
+ }
+
+ def @OrDefault
+ left l
+ right r
+ {
+ l @Case {
+ "dft" @Yield r
+ else @Yield l
+ }
+ }
+
+
+ ###################################################################
+ # #
+ # Helper symbols (public, exc @ScriptStyle and @FractionStyle) #
+ # #
+ ###################################################################
+
+ def above
+ precedence @HelperAbovePrec
+ associativity left
+ left x
+ named gap { @BelowGap }
+ named skew { 0c }
+ right y
+ {
+ @HContract @VContract
+ { |0.5rt x
+ //gap |0.5rt &skew y
+ }
+ }
+
+ def below
+ precedence @HelperAbovePrec
+ associativity left
+ left x
+ named gap { @AboveGap }
+ named skew { 0c }
+ right y
+ {
+ @HContract @VContract
+ { |0.5rt &skew y
+ ^//gap |0.5rt x
+ }
+ }
+
+ def wideabove
+ precedence @HelperAbovePrec
+ associativity left
+ left x
+ named gap { @BelowGap }
+ right y
+ {
+ @HContract @VContract
+ {
+ x //gap @HScale y
+ }
+ }
+
+ def widebelow
+ precedence @HelperAbovePrec
+ associativity left
+ left x
+ named gap { @AboveGap }
+ right y
+ {
+ @HContract @VContract
+ {
+ @HScale y ^//gap x
+ }
+ }
+
+ def "`" { &@CurrPunctSpaceGap }
+ def "``" { &@CurrBinarySpaceGap }
+ def "```" { &@CurrRelSpaceGap }
+
+ def non
+ precedence @HelperNonPrec
+ right x
+ {
+ { @CurrStyleVar @Yield "nohspace" } @SetContext x
+ }
+
+ def big
+ precedence @MaxPrec
+ right x
+ {
+ 1.3f @Font x
+ }
+
+ def small
+ precedence @MaxPrec
+ right x
+ {
+ 0.6f @Font x
+ }
+
+ def vctr
+ precedence @MaxPrec
+ right x
+ {
+ 0.5w @VShift x
+ }
+
+ def @ScriptStyle
+ named level { "sup" }
+ right script
+ {
+ @WithStyle
+ style { @CurrStyle @Case {
+ { "display" "text" } @Yield "script"
+ { "script" "scriptscript" } @Yield "scriptscript"
+ "nohspace" @Yield "nohspace"
+ } }
+ cramped { level @Case {
+ "sub" @Yield "Yes"
+ "sup" @Yield @Cramped
+ } }
+ { script }
+ }
+
+ def @SuperScriptStyle right superscript
+ {
+ @ScriptStyle level { "sup" } superscript
+ }
+
+ def @SubScriptStyle right subscript
+ {
+ @ScriptStyle level { "sub" } subscript
+ }
+
+ def @FractionStyle
+ named level { "numerator" }
+ right x
+ {
+ @WithStyle
+ style { @CurrStyle @Case {
+ "display" @Yield "text"
+ "text" @Yield "script"
+ { "script" "scriptscript" } @Yield "scriptscript"
+ "nohspace" @Yield "nohspace"
+ } }
+ cramped { level @Case {
+ "numerator" @Yield @Cramped
+ "denominator" @Yield "Yes"
+ } }
+ { x }
+ }
+
+ def @NumeratorStyle right x
+ {
+ @FractionStyle level { "numerator" } x
+ }
+
+ def @DenominatorStyle right x
+ {
+ @FractionStyle level { "denominator" } x
+ }
+
+ def @SquareRootStyle right x
+ {
+ @WithStyle style { @CurrStyle } cramped { "Yes" } x
+ }
+
+ ###################################################################
+ # #
+ # Ordinary symbols (Symbol font) #
+ # #
+ # These symbols and their names are taken directly from the #
+ # Adobe Systems Inc. Symbol font (see PostScript Language #
+ # Reference Manual, pp. 256-257). The only differences are: #
+ # #
+ # Adobe: theta1 @Math: thetaone #
+ # sigma1 sigmaone #
+ # phi1 phione #
+ # omega1 omegaone #
+ # Upsilon1 Upsilonone #
+ # #
+ # These were needed since Lout identifiers do not have digits. #
+ # #
+ ###################################################################
+
+ def space { @Sym @Char "space" }
+ def exclam { @Sym @Char "exclam" }
+ def universal { @Sym @Char "universal" }
+ def numbersign { @Sym @Char "numbersign" }
+ def existential { @Sym @Char "existential" }
+ def percent { @Sym @Char "percent" }
+ def ampersand { @Sym @Char "ampersand" }
+ def suchthat { @Sym @Char "suchthat" }
+ def parenleft { @Sym @Char "parenleft" }
+ def parenright { @Sym @Char "parenright" }
+ def asteriskmath { @Sym @Char "asteriskmath" }
+ def plus { @Sym @Char "plus" }
+ def comma { @Sym @Char "comma" }
+ def minus { @Sym @Char "minus" }
+ def period { @Sym @Char "period" }
+ def slash { @Sym @Char "slash" }
+ def zero { @Sym @Char "zero" }
+ def one { @Sym @Char "one" }
+ def two { @Sym @Char "two" }
+ def three { @Sym @Char "three" }
+ def four { @Sym @Char "four" }
+ def five { @Sym @Char "five" }
+ def six { @Sym @Char "six" }
+ def seven { @Sym @Char "seven" }
+ def eight { @Sym @Char "eight" }
+ def nine { @Sym @Char "nine" }
+ def colon { @Sym @Char "colon" }
+ def semicolon { @Sym @Char "semicolon" }
+ def less { @Sym @Char "less" }
+ def equal { @Sym @Char "equal" }
+ def greater { @Sym @Char "greater" }
+ def question { @Sym @Char "question" }
+ def congruent { @Sym @Char "congruent" }
+ def Alpha { @Sym @Char "Alpha" }
+ def Beta { @Sym @Char "Beta" }
+ def Chi { @Sym @Char "Chi" }
+ def Delta { @Sym @Char "Delta" }
+ def Epsilon { @Sym @Char "Epsilon" }
+ def Phi { @Sym @Char "Phi" }
+ def Gamma { @Sym @Char "Gamma" }
+ def Eta { @Sym @Char "Eta" }
+ def Iota { @Sym @Char "Iota" }
+ def thetaone { @Sym @Char "theta1" }
+ def Kappa { @Sym @Char "Kappa" }
+
+ def Lambda { @Sym @Char "Lambda" }
+ def Mu { @Sym @Char "Mu" }
+ def Nu { @Sym @Char "Nu" }
+ def Omicron { @Sym @Char "Omicron" }
+ def Pi { @Sym @Char "Pi" }
+ def Theta { @Sym @Char "Theta" }
+ def Rho { @Sym @Char "Rho" }
+ def Sigma { @Sym @Char "Sigma" }
+ def Tau { @Sym @Char "Tau" }
+ def Upsilon { @Sym @Char "Upsilon" }
+ def sigmaone { @Sym @Char "sigma1" }
+ def Omega { @Sym @Char "Omega" }
+ def Xi { @Sym @Char "Xi" }
+ def Psi { @Sym @Char "Psi" }
+ def Zeta { @Sym @Char "Zeta" }
+ def bracketleft { @Sym @Char "bracketleft" }
+ def therefore { @Sym @Char "therefore" }
+ def bracketright { @Sym @Char "bracketright" }
+ def perpendicular { @Sym @Char "perpendicular" }
+ def underscore { @Sym @Char "underscore" }
+ def radicalex { @Sym @Char "radicalex" }
+ def alpha { @Sym @Char "alpha" }
+ def beta { @Sym @Char "beta" }
+ def chi { @Sym @Char "chi" }
+ def delta { @Sym @Char "delta" }
+ def epsilon { @Sym @Char "epsilon" }
+ def phi { @Sym @Char "phi" }
+ def gamma { @Sym @Char "gamma" }
+ def eta { @Sym @Char "eta" }
+ def iota { @Sym @Char "iota" }
+ def phione { @Sym @Char "phi1" }
+ def kappa { @Sym @Char "kappa" }
+ def lambda { @Sym @Char "lambda" }
+ def mu { @Sym @Char "mu" }
+ def nu { @Sym @Char "nu" }
+
+ def omicron { @Sym @Char "omicron" }
+ def pi { @Sym @Char "pi" }
+ def theta { @Sym @Char "theta" }
+ def rho { @Sym @Char "rho" }
+ def sigma { @Sym @Char "sigma" }
+ def tau { @Sym @Char "tau" }
+ def upsilon { @Sym @Char "upsilon" }
+ def omegaone { @Sym @Char "omega1" }
+ def omega { @Sym @Char "omega" }
+ def xi { @Sym @Char "xi" }
+ def psi { @Sym @Char "psi" }
+ def zeta { @Sym @Char "zeta" }
+ def braceleft { @Sym @Char "braceleft" }
+ def bar { @Sym @Char "bar" }
+ def braceright { @Sym @Char "braceright" }
+ def similar { @Sym @Char "similar" }
+ def Upsilonone { @Sym @Char "Upsilon1" }
+ def minute { @Sym @Char "minute" }
+ def lessequal { @Sym @Char "lessequal" }
+ def fraction { @Sym @Char "fraction" }
+ # For Adobe Symbol, `infinity' used to be "1.2f @Font { ... }"
+ def infinity { @Sym @Char "infinity" }
+ def florin { @Sym @Char "florin" }
+ def club { @Sym @Char "club" }
+ def diamond { @Sym @Char "diamond" }
+ def heart { @Sym @Char "heart" }
+ def spade { @Sym @Char "spade" }
+ def arrowboth { @Sym @Char "arrowboth" }
+ def arrowleft { @Sym @Char "arrowleft" }
+ def arrowup { @Sym @Char "arrowup" }
+ def arrowright { @Sym @Char "arrowright" }
+ def arrowdown { @Sym @Char "arrowdown" }
+ def degree { @Sym @Char "degree" }
+ def plusminus { @Sym @Char "plusminus" }
+ def second { @Sym @Char "second" }
+ def greaterequal { @Sym @Char "greaterequal" }
+
+ def multiply { @Sym @Char "multiply" }
+ def proportional { @Sym @Char "proportional" }
+ def partialdiff { @Sym @Char "partialdiff" }
+ def bullet { @Sym @Char "bullet" }
+ def divide { @Sym @Char "divide" }
+ def notequal { @Sym @Char "notequal" }
+ def equivalence { @Sym @Char "equivalence" }
+ def approxequal { @Sym @Char "approxequal" }
+ def ellipsis { @Sym @Char "ellipsis" }
+ def arrowvertex { @Sym @Char "arrowvertex" }
+ def arrowhorizex { @Sym @Char "arrowhorizex" }
+ def carriagereturn { @Sym @Char "carriagereturn" }
+ def aleph { @Sym @Char "aleph" }
+ def Ifraktur { @Sym @Char "Ifraktur" }
+ def Rfraktur { @Sym @Char "Rfraktur" }
+ def weierstrass { @Sym @Char "weierstrass" }
+ def circlemultiply { @Sym @Char "circlemultiply" }
+ def circleplus { @Sym @Char "circleplus" }
+ def emptyset { @Sym @Char "emptyset" }
+ def intersection { @Sym @Char "intersection" }
+ def union { @Sym @Char "union" }
+ def propersuperset { @Sym @Char "propersuperset" }
+ def reflexsuperset { @Sym @Char "reflexsuperset" }
+ def notsubset { @Sym @Char "notsubset" }
+ def propersubset { @Sym @Char "propersubset" }
+ def reflexsubset { @Sym @Char "reflexsubset" }
+ def element { @Sym @Char "element" }
+ def notelement { @Sym @Char "notelement" }
+ def angle { @Sym @Char "angle" }
+ def gradient { @Sym @Char "gradient" }
+ def registerserif { @Sym @Char "registerserif" }
+ def copyrightserif { @Sym @Char "copyrightserif" }
+ def trademarkserif { @Sym @Char "trademarkserif" }
+ def product { @Sym @Char "product" }
+ def radical { @Sym @Char "radical" }
+ def dotmath { @Sym @Char "dotmath" }
+ def logicalnot { @Sym @Char "logicalnot" }
+ def logicaland { @Sym @Char "logicaland" }
+ def logicalor { @Sym @Char "logicalor" }
+ def arrowdblboth { @Sym @Char "arrowdblboth" }
+ def arrowdblleft { @Sym @Char "arrowdblleft" }
+ def arrowdblup { @Sym @Char "arrowdblup" }
+ def arrowdblright { @Sym @Char "arrowdblright" }
+ def arrowdbldown { @Sym @Char "arrowdbldown" }
+ def lozenge { @Sym @Char "lozenge" }
+ def angleleft { @Sym @Char "angleleft" }
+ def registersans { @Sym @Char "registersans" }
+ def copyrightsans { @Sym @Char "copyrightsans" }
+ def trademarksans { @Sym @Char "trademarksans" }
+ def summation { @Sym @Char "summation" }
+ def parenlefttp { @Sym @Char "parenlefttp" }
+ def parenleftex { @Sym @Char "parenleftex" }
+ def parenleftbt { @Sym @Char "parenleftbt" }
+ def bracketlefttp { @Sym @Char "bracketlefttp" }
+ def bracketleftex { @Sym @Char "bracketleftex" }
+ def bracketleftbt { @Sym @Char "bracketleftbt" }
+ def bracelefttp { @Sym @Char "bracelefttp" }
+ def braceleftmid { @Sym @Char "braceleftmid" }
+ def braceleftbt { @Sym @Char "braceleftbt" }
+ def braceex { @Sym @Char "braceex" }
+ def angleright { @Sym @Char "angleright" }
+ def integral { @Sym @Char "integral" }
+ def integraltp { @Sym @Char "integraltp" }
+ def integralex { @Sym @Char "integralex" }
+ def integralbt { @Sym @Char "integralbt" }
+ def parenrighttp { @Sym @Char "parenrighttp" }
+ def parenrightex { @Sym @Char "parenrightex" }
+ def parenrightbt { @Sym @Char "parenrightbt" }
+ def bracketrighttp { @Sym @Char "bracketrighttp" }
+ def bracketrightex { @Sym @Char "bracketrightex" }
+ def bracketrightbt { @Sym @Char "bracketrightbt" }
+ def bracerighttp { @Sym @Char "bracerighttp" }
+ def bracerightmid { @Sym @Char "bracerightmid" }
+ def bracerightbt { @Sym @Char "bracerightbt" }
+
+
+ ###################################################################
+ # #
+ # Ordinary symbols (arrows) #
+ # #
+ ###################################################################
+
+ def leftarrow { arrowleft }
+ def longleftarrow { { 1.6 1 } @Scale arrowleft }
+ def dblleftarrow { arrowdblleft }
+ def dbllongleftarrow { { 1.6 1 } @Scale arrowdblleft }
+ def rightarrow { arrowright }
+ def longrightarrow { { 1.6 1 } @Scale arrowright }
+ def dblrightarrow { arrowdblright }
+ def dbllongrightarrow { { 1.6 1 } @Scale arrowdblright }
+ def leftrightarrow { arrowboth }
+ def longleftrightarrow { { 1.6 1 } @Scale arrowboth }
+ def dblleftrightarrow { arrowdblboth }
+ def dbllongleftrightarrow { { 1.6 1 } @Scale arrowdblboth }
+
+ def mapsto
+ {
+ @HContract @VContract {
+ @BackEnd @Case {
+ PostScript @Yield {
+ "0 ymark 0.16 ft sub moveto 0 ymark 0.16 ft add lineto stroke"
+ @Graphic arrowright
+ }
+ PDF @Yield {
+ "0 __sub(__ymark, __mul(__loutf, 0.16)) m 0 __add(__ymark, __mul(__loutf, 0.16)) l S"
+ @Graphic arrowright
+ }
+ }
+ }
+ }
+
+ def longmapsto
+ {
+ @HContract @VContract {
+ @BackEnd @Case {
+ PostScript @Yield {
+ "0 ymark 0.16 ft sub moveto 0 ymark 0.16 ft add lineto stroke"
+ @Graphic { { 1.6 1 } @Scale arrowright }
+ }
+ PDF @Yield {
+ "0 __sub(__ymark, __mul(__loutf, 0.16)) m 0 __add(__ymark, __mul(__loutf, 0.16)) l S"
+ @Graphic { { 1.6 1 } @Scale arrowright }
+ }
+ }
+ }
+ }
+
+ def hookleftarrow
+ {
+ @HContract @VContract {
+ @BackEnd @Case {
+
+ PostScript @Yield {
+ "xsize ymark moveto xsize ymark 0.1 ft add 0.1 ft -90 90 arc stroke"
+ @Graphic leftarrow
+ }
+
+ PDF @Yield {
+#
+# VT: draws a counterclockwise 180 degree arc from -90 to +90 degree positions
+# (straight down to straight up) with centre = (xsize, ymark + 0.1 ft)
+# and radius = 0.1 ft
+#
+# the control points therefore are:
+# pt1 = (xsize + (4/3 * 0.1 ft), ymark) and pt2 = (xsize + (4/3 * 0.1 ft), ymark + 0.2 ft)
+#
+ {
+ "__xsize __ymark m" # pt0
+ "__add(__xsize, __div(__mul(0.4, __loutf), 3)) __ymark" # pt1
+ "__add(__xsize, __div(__mul(0.4, __loutf), 3)) __add(__ymark, __mul(0.2, __loutf))" # pt2
+ "__xsize __add(__ymark, __mul(0.2, __loutf)) c S" # pt3
+ }
+ @Graphic leftarrow
+ }
+
+ }
+ }
+ }
+
+ def hookrightarrow
+ {
+ @HContract @VContract {
+ @BackEnd @Case {
+
+ PostScript @Yield {
+ "0 ymark moveto 0 0.1 ft ymark add 0.1 ft -90 90 arcn stroke"
+ @Graphic rightarrow
+ }
+
+ PDF @Yield {
+#
+# VT: draws a clockwise 180 degree arc from -90 to +90 degree positions
+# (straight down to straight up) with centre = (0, ymark + 0.1 ft)
+# and radius = 0.1 ft
+#
+# the control points therefore are:
+# pt1 = (-4/3 * 0.1 ft, ymark) and pt2 = (-4/3 * 0.1 ft, ymark + 0.2 ft)
+#
+ {
+ "0 __ymark m" # pt0
+ "__div(__mul(-0.4, __loutf), 3) __ymark" # pt1
+ "__div(__mul(-0.4, __loutf), 3) __add(__ymark, __mul(0.2, __loutf))" # pt2
+ "0 __add(__ymark, __mul(0.2, __loutf)) c S" # pt3
+ }
+ @Graphic rightarrow
+ }
+
+ }
+ }
+ }
+
+ def @ClipToSize right x
+ {
+ @HContract @VContract
+ @BackEnd @Case {
+ PostScript @Yield {
+ {
+ "grestore newpath 0 0 moveto xsize 0 lineto xsize ysize lineto"
+ "0 ysize lineto closepath clip gsave"
+ } @Graphic x
+ }
+ PDF @Yield {
+ "Q n 0 0 __xsize __ysize re W n q" @Graphic x
+ }
+ }
+ }
+
+ def @ClipAboveMark
+ left amount
+ right x
+ {
+ @ClipToSize { ^//{{amount}o} x }
+ }
+
+ def @ClipBelowMark
+ left amount
+ right x
+ {
+ @ClipToSize { x //{{amount}o} }
+ }
+
+ def leftharpoonup
+ {
+ 0.04f @ClipBelowMark leftarrow
+ }
+
+ def rightharpoonup
+ {
+ 0.04f @ClipBelowMark rightarrow
+ }
+
+ def leftharpoondown
+ {
+ 0.02f @ClipAboveMark leftarrow
+ }
+
+ def rightharpoondown
+ {
+ 0.02f @ClipAboveMark rightarrow
+ }
+
+ def rightleftharpoons
+ {
+ @HContract @VContract {
+ rightharpoonup
+ ^//0.1fo
+ //0.1fo
+ leftharpoondown
+ }
+ }
+
+ def leadsto { @HContract { similar &0.4fo arrowright } }
+
+ def uparrow { arrowup }
+ def dbluparrow { arrowdblup }
+ def downarrow { arrowdown }
+ def dbldownarrow { arrowdbldown }
+ def updownarrow { @HContract { arrowup &0io arrowdown } }
+ def dblupdownarrow { @VContract { arrowdblup ^//0.2fo arrowdbldown } }
+ def nearrow { 0.5w @VShift 0.5w @HShift 45d @Rotate arrowright }
+ def searrow { 0.5w @VShift 0.5w @HShift 315d @Rotate arrowright }
+ def swarrow { 0.5w @VShift 0.5w @HShift 225d @Rotate arrowright }
+ def nwarrow { 0.5w @VShift 0.5w @HShift 135d @Rotate arrowright }
+
+
+ ###################################################################
+ # #
+ # Ordinary symbols (to get Roman font) #
+ # #
+ # These symbols are defined to yield themselves, but in Roman #
+ # font rather than the Italic that would otherwise be used. #
+ # See Knuth p. 162 and 132. The definitions of "0" ... "9" #
+ # should logically appear here, but they have been moved to #
+ # the end since it is awkward to enter numeric lengths after #
+ # they are defined. #
+ # #
+ ###################################################################
+
+ def arccos { @Base "arccos" }
+ def arcsin { @Base "arcsin" }
+ def arctan { @Base "arctan" }
+ def arg { @Base "arg" }
+ def cos { @Base "cos" }
+ def cosh { @Base "cosh" }
+ def cot { @Base "cot" }
+ def coth { @Base "coth" }
+ def csc { @Base "csc" }
+ def deg { @Base "deg" }
+ def det { @Base "det" }
+ def dim { @Base "dim" }
+ def exp { @Base "exp" }
+ def gcd { @Base "gcd" }
+ def hom { @Base "hom" }
+ def inf { @Base "inf" }
+ def ker { @Base "ker" }
+ def lg { @Base "lg" }
+ def lim { @Base "lim" }
+ def liminf { @OneCol { @Base "lim" ` @Base "inf" } }
+ def limsup { @OneCol { @Base "lim" ` @Base "sup" } }
+ def ln { @Base "ln" }
+ def log { @Base "log" }
+ def max { @Base "max" }
+ def min { @Base "min" }
+ def Pr { @Base "Pr" }
+ def sec { @Base "sec" }
+ def sin { @Base "sin" }
+ def sinh { @Base "sinh" }
+ def supr { @Base "sup" }
+ def tan { @Base "tan" }
+ def tanh { @Base "tanh" }
+ def mod { @Base "mod" }
+ def "!" { exclam }
+ def "?" { question }
+ def "%" { percent }
+ def "(" { parenleft }
+ def ")" { parenright }
+ def "[" { bracketleft }
+ def "]" { bracketright }
+
+
+ ###################################################################
+ # #
+ # Ordinary symbols (for atleft and atright) #
+ # These are Knuth's Groups 11 and 12 - openings and closings. #
+ # #
+ ###################################################################
+
+ def lpar { parenleft }
+ def rpar { parenright }
+ def lbrack { bracketleft }
+ def rbrack { bracketright }
+ def lbrace { braceleft }
+ def rbrace { braceright }
+ def lfloor { ` "-0.15f" @VShift bracketleftbt }
+ def rfloor { "-0.15f" @VShift bracketrightbt ` }
+ def lceil { ` "-0.1f" @VShift bracketlefttp }
+ def rceil { "-0.1f" @VShift bracketrighttp ` }
+ def langle { angleleft }
+ def rangle { angleright }
+
+ def blpar { @OneRow {parenlefttp ^/ parenleftex / parenleftbt } }
+ def brpar { @OneRow {parenrighttp ^/ parenrightex / parenrightbt } }
+ def blbrack { @OneRow {bracketlefttp ^/ bracketleftex / bracketleftbt } }
+ def brbrack { @OneRow {bracketrighttp ^/ bracketrightex / bracketrightbt} }
+ def blbrace { @OneRow {bracelefttp ^/ braceleftmid / braceleftbt } }
+ def brbrace { @OneRow {bracerighttp ^/ bracerightmid / bracerightbt } }
+ def blfloor { @OneRow {bracketleftex ^/ bracketleftex / bracketleftbt } }
+ def brfloor { @OneRow {bracketrightex ^/ bracketrightex / bracketrightbt} }
+ def blceil { @OneRow {bracketlefttp ^/ bracketleftex / bracketleftex } }
+ def brceil { @OneRow {bracketrighttp ^/ bracketrightex / bracketrightex} }
+
+ def blangle
+ {
+ @HContract @VContract @BackEnd @Case {
+ PostScript @Yield {
+ { "xsize 0 moveto 0 ysize 2 div lineto"
+ "xsize ysize lineto 0.04 ft setlinewidth stroke"
+ } @Graphic { 0.5f @Wide 2f @High ^/ 2f @High }
+ }
+ PDF @Yield {
+ { "__mul(__loutf, 0.04) w __xsize 0 m"
+ "0 __div(__ysize, 2) l __xsize __ysize l S"
+ } @Graphic { 0.5f @Wide 2f @High ^/ 2f @High }
+ }
+ }
+ }
+
+ def brangle
+ {
+ @HContract @VContract @BackEnd @Case {
+ PostScript @Yield {
+ { "0 0 moveto xsize ysize 2 div lineto"
+ "0 ysize lineto 0.04 ft setlinewidth stroke"
+ } @Graphic { 0.5f @Wide 2f @High ^/ 2f @High }
+ }
+ PDF @Yield {
+ { "__mul(__loutf, 0.04) w 0 0 m"
+ "__xsize __div(__ysize, 2) l 0 __ysize l S"
+ } @Graphic { 0.5f @Wide 2f @High ^/ 2f @High }
+ }
+ }
+ }
+
+
+ ###################################################################
+ # #
+ # Ordinary symbols (miscellaneous) #
+ # #
+ # Not all of Knuth's symbols are available. The four suits #
+ # (heartsuit, etc.), have definitions above. #
+ # #
+ ###################################################################
+
+ def hbar { @HContract @VContract {&0.1f @Base "-" ^/0.30fo h }}
+ def Re { Rfraktur }
+ def Im { Ifraktur }
+ def partial { partialdiff }
+ def infty { infinity }
+ def prime { minute }
+ #def emptyset { defined above }
+ def nabla { gradient }
+ def surd { radical }
+ def top { 180d @Rotate perpendicular }
+ def bot { perpendicular }
+ def dbar { @Base "||" }
+ #def angle { defined above }
+ def backslash { "\\" }
+ def forall { universal }
+ def exists { existential }
+ def neg { logicalnot }
+
+ def circle
+ { @HContract @VContract @BackEnd @Case {
+ PostScript @Yield {
+ {
+ "xsize ysize 2 div moveto"
+ "xsize 2 div ysize 2 div xsize 2 div 0 360 arc"
+ "0.04 ft setlinewidth stroke"
+ } @Graphic { 0.7f @Wide 0.3f @High ^/ 0.3f @High }
+ }
+ PDF @Yield {
+ #
+ # VT: draws a counterclockwise 360 degree arc from 0 to +360
+ # degree positions (straight right to straight right) with
+ # centre = (xsize/2, ysize/2) and radius = xsize/2,
+ # implemented as two counterclockwise 180 degree arcs.
+ # start at (xsize, ysize/2); the control points are:
+ #
+ # pt1 = (xsize, ysize/2 + (4/3 * xsize/2))
+ # pt2 = (0, ysize/2 + (4/3 * xsize/2))
+ #
+ # end at (0, ysize/2). Then start at (0, ysize/2); control points
+ #
+ # pt1 = (0, ysize/2 - (4/3 * xsize/2))
+ # pt2 = (xsize, ysize/2 - (4/3 * xsize/2))
+ #
+ # and end at (xsize, ysize/2).
+
+ {
+ "__mul(0.04, __loutf) w"
+ "__xsize __div(__ysize, 2) m"
+ "__xsize __add(__div(__ysize, 2), __div(__mul(2, __xsize), 3))"
+ "0 __add(__div(__ysize, 2), __div(__mul(2, __xsize), 3))"
+ "0 __div(__ysize, 2) c"
+ "0 __sub(__div(__ysize, 2), __div(__mul(2, __xsize), 3))"
+ "__xsize __sub(__div(__ysize, 2), __div(__mul(2, __xsize), 3))"
+ "__xsize __div(__ysize, 2) c S"
+ } @Graphic { 0.7f @Wide 0.3f @High ^/ 0.3f @High }
+ }
+ }
+ }
+
+ def filledcircle
+ { @HContract @VContract @BackEnd @Case {
+ PostScript @Yield {
+ {
+ "xsize ysize 2 div moveto"
+ "xsize 2 div ysize 2 div xsize 2 div 0 360 arc"
+ "0.04 ft setlinewidth fill"
+ } @Graphic { 0.7f @Wide 0.3f @High ^/ 0.3f @High }
+ }
+ PDF @Yield {
+ #
+ # JK: I don't know how to fill in PDF, so this doesn't!
+ #
+ # VT: draws a counterclockwise 360 degree arc from 0 to +360
+ # degree positions (straight right to straight right) with
+ # centre = (xsize/2, ysize/2) and radius = xsize/2,
+ # implemented as two counterclockwise 180 degree arcs.
+ # start at (xsize, ysize/2); the control points are:
+ #
+ # pt1 = (xsize, ysize/2 + (4/3 * xsize/2))
+ # pt2 = (0, ysize/2 + (4/3 * xsize/2))
+ #
+ # end at (0, ysize/2). Then start at (0, ysize/2); control points
+ #
+ # pt1 = (0, ysize/2 - (4/3 * xsize/2))
+ # pt2 = (xsize, ysize/2 - (4/3 * xsize/2))
+ #
+ # and end at (xsize, ysize/2).
+
+ {
+ "__mul(0.04, __loutf) w"
+ "__xsize __div(__ysize, 2) m"
+ "__xsize __add(__div(__ysize, 2), __div(__mul(2, __xsize), 3))"
+ "0 __add(__div(__ysize, 2), __div(__mul(2, __xsize), 3))"
+ "0 __div(__ysize, 2) c"
+ "0 __sub(__div(__ysize, 2), __div(__mul(2, __xsize), 3))"
+ "__xsize __sub(__div(__ysize, 2), __div(__mul(2, __xsize), 3))"
+ "__xsize __div(__ysize, 2) c S"
+ } @Graphic { 0.7f @Wide 0.3f @High ^/ 0.3f @High }
+ }
+ }
+ }
+
+ def square
+ { @HContract @VContract @BackEnd @Case {
+ PostScript @Yield {
+ {
+ "0 0 moveto xsize 0 lineto xsize ysize lineto"
+ "0 ysize lineto closepath"
+ "0.04 ft setlinewidth stroke"
+ } @Graphic { 0.6f @Wide 0.3f @High ^/ 0.3f @High }
+ }
+ PDF @Yield {
+ {
+ "__mul(__loutf, 0.04) w"
+ "0 0 m __xsize 0 l __xsize __ysize l"
+ "0 __ysize l s"
+ } @Graphic { 0.6f @Wide 0.3f @High ^/ 0.3f @High }
+ }
+ }
+ }
+
+ def triangle
+ { @HContract @VContract @BackEnd @Case {
+ PostScript @Yield {
+ {
+ "0 0 moveto xsize 0 lineto"
+ "xsize 2 div ysize lineto closepath"
+ "0.04 ft setlinewidth stroke"
+ } @Graphic { 0.3f @Wide 0.3f @High ^| ^/ 0.3f @Wide 0.3f @High }
+ }
+ PDF @Yield {
+ {
+ "__mul(__loutf, 0.04) w"
+ "0 0 m __xsize 0 l"
+ "__div(__xsize, 2) __ysize l s"
+ } @Graphic { 0.3f @Wide 0.3f @High ^| ^/ 0.3f @Wide 0.3f @High }
+ }
+ }
+ }
+
+ # other symbols taken from TeX
+ def ldots { . &0.3f . &0.3f . }
+ def cdots { dotmath &0.3f dotmath &0.3f dotmath }
+ def vdots { @OneRow { dotmath ^/0.3f dotmath /0.3f dotmath } }
+ def ddots { @OneCol @OneRow
+ { dotmath
+ ^/0.3f |0.3f dotmath
+ /0.3f | |0.3f dotmath
+ }
+ }
+
+ # symbols taken from eqn (Kernighan and Cherry 1975). #
+ def del { gradient }
+ def grad { gradient }
+ def "..." { ellipsis }
+ def ",...," { , ellipsis ``` , }
+ def "'" { minute }
+ def "''" { minute minute }
+ def "'''" { minute minute minute }
+ def "''''" { minute minute minute minute }
+ def empty { emptyset }
+
+ # forget where these are from
+ def triangleup { 0.8f @Font triangle }
+ def triangledown { 180d @Rotate 0.8f @Font triangle }
+
+ # half and third defined later, since they use frac
+
+
+ ###################################################################
+ # #
+ # Variable-building symbols #
+ # #
+ # These symbols are essentially those of eqn, with some #
+ # changes and additions. #
+ # #
+ ###################################################################
+
+ def dot
+ precedence @HatPrec
+ left x
+ named gap { @AboveGap }
+ {
+ x below gap { gap } skew { @SkewGap } @SuperScriptStyle .
+ }
+
+ def dotdot
+ precedence @HatPrec
+ left x
+ named gap { @AboveGap }
+ {
+ x below gap { gap } skew { @SkewGap } @SuperScriptStyle ..
+ }
+
+ def hat
+ precedence @HatPrec
+ left x
+ named gap { @AboveGap }
+ {
+ x below gap { gap } skew { @SkewGap } @SuperScriptStyle @Base "^"
+ }
+
+ def tilde
+ precedence @HatPrec
+ left x
+ named gap { @AboveGap }
+ {
+ x below gap { gap } skew { @SkewGap } @SuperScriptStyle @Base "~"
+ }
+
+ def vec
+ precedence @HatPrec
+ left x
+ named gap { @AboveGap }
+ {
+ x below gap { gap } skew { @SkewGap } @SuperScriptStyle arrowright
+ }
+
+ def dyad
+ precedence @HatPrec
+ left x
+ named gap { @AboveGap }
+ {
+ x below gap { gap } skew { @SkewGap } @SuperScriptStyle arrowboth
+ }
+
+ def overbar
+ precedence @HatPrec
+ left x
+ named gap { @AboveGap }
+ {
+ { @WithStyle style { @CurrStyle } cramped { "Yes" } x }
+ widebelow gap { gap } @SuperScriptStyle minus
+ }
+
+ def underbar
+ precedence @HatPrec
+ left x
+ named gap { @BelowGap }
+ {
+ x wideabove gap { gap } @SuperScriptStyle minus
+ }
+
+ def sup
+ precedence @SupPrec
+ associativity left
+ left x
+ named gap { "dft" }
+ right y
+ {
+ @HContract @VContract
+ { | @SuperScriptStyle y
+ ^/{ gap @OrDefault @CurrSuperScriptGap } x
+ }
+ }
+
+ def sub
+ precedence @SubPrec
+ associativity left
+ left x
+ named gap { @SubScriptGap }
+ right y
+ {
+ @HContract @VContract
+ {
+ "." @KernShrink x
+ /gap | @SubScriptStyle y
+ }
+ }
+
+ def tsub
+ precedence @SubPrec
+ associativity left
+ left x
+ named gap { @SubScriptGap }
+ right y
+ {
+ @HContract @VContract
+ {
+ x
+ /gap | &0io 0.2f @HShift @SubScriptStyle y
+ }
+ }
+
+ def supp
+ precedence @SupPrec
+ associativity left
+ left x
+ named gap { "dft" }
+ right y
+ {
+ @HContract @VContract
+ {
+ { ^/{ gap @OrDefault @CurrSuperScriptGap } x
+ /{ gap @OrDefault @CurrSuperScriptGap } }
+ | y
+ }
+ }
+
+ def on
+ precedence @SubPrec
+ associativity left
+ left x
+ right y
+ {
+ { @SuperScriptStyle x } ^/ /
+ { @SubScriptStyle y }
+ }
+
+ def ton
+ precedence @SubPrec
+ associativity left
+ left x
+ right y
+ {
+ @SuperScriptStyle x ^/ /
+ &0io 0.3f @HShift @SubScriptStyle y
+ }
+
+
+ ###################################################################
+ # #
+ # Large operator symbols (Knuth's Group 6 "Large" operators) #
+ # #
+ # Layout of large operators differs in several ways, depending #
+ # on whether they are in display mode or not. #
+ # #
+ # 1. The operator itself is larger in display mode. We #
+ # achieve this by automatically prepending `big' to the #
+ # operator's symbol when in display mode. #
+ # #
+ # 2. The "bounds" of these operators (i.e., `from' and `to') #
+ # are set as limits (i.e., above and below the operator #
+ # symbol) when in display mode, and displayed to the #
+ # right of the symbol otherwise. Integrations are an #
+ # exception (the only exception?). #
+ # #
+ # See ``The TeXbook'', Chapter 17. #
+ # #
+ ###################################################################
+
+ def largeop
+ named symbol { "largeop" }
+ named limits { "dft" } # whether to set `from' and `to' as limits
+ named from { "" }
+ named to { "" }
+ {
+ def @Symbol
+ {
+ @CurrStyle @Case {
+ "display" @Yield { big symbol }
+ else @Yield symbol
+ }
+ }
+
+ def @Limits
+ {
+ limits @OrDefault {
+ @CurrStyle @Case {
+ "display" @Yield "Yes"
+ else @Yield "No" }
+ }
+ }
+
+ def @LimitsBody
+ {
+ @Symbol above { @SuperScriptStyle from }
+ below { @SubScriptStyle to }
+ }
+
+ def @NoLimitsBody
+ {
+ 0.5w @VShift {
+ 1.0w @VShift @OneRow {
+ { | 0.3w @VShift @SuperScriptStyle to }
+ ^/0.0fo { 0w @VShift @Symbol | }
+ }
+
+ /0.0fo
+
+ { | 0.7w @VShift @SubScriptStyle from }
+ }
+ |{ @CurrPunctSpaceGap }
+ }
+
+ @Limits @Case {
+ { "Yes" "yes" } @Yield @LimitsBody
+ { "No" "no" } @Yield @NoLimitsBody
+ }
+ }
+
+ # Ludovic's symbol, no longer used
+ def largeoperator
+ named symbol { "largeop" }
+ named from { "" }
+ named to { "" }
+ named limits { "Yes" } # whether to set `from' and `to' as limits
+ {
+ def @NoLimitsBody {
+ 0.5w @VShift {
+ 1.0w @VShift @OneRow {
+ { | 0.3w @VShift @SuperScriptStyle to }
+ ^/0.0fo { 0w @VShift symbol | }
+ }
+
+ /0.0fo
+
+ { | 0.7w @VShift @SubScriptStyle from }
+ }
+ |{ @CurrPunctSpaceGap }
+ }
+
+ def @LimitsBody {
+ symbol above { @SuperScriptStyle from }
+ below { @SubScriptStyle to }
+ }
+
+ limits @Case {
+ { "Yes" "yes" } @Yield @LimitsBody
+ { "No" "no" } @Yield @NoLimitsBody
+ }
+ }
+
+ # Ludovic's symbol, no longer used
+ def simplelargeoperator
+ named symbol { "simplelargeop" }
+ named limits { "dft" }
+ named from { }
+ named to { }
+ {
+ largeoperator
+ symbol { @CurrStyle @Case {
+ "display" @Yield { big symbol }
+ else @Yield symbol }
+ }
+ limits { limits @OrDefault {
+ @CurrStyle @Case {
+ "display" @Yield "Yes"
+ else @Yield "No" }
+ }
+ }
+ from { from }
+ to { to }
+ }
+
+ def sum
+ named limits { "dft" }
+ named from {}
+ named to {}
+ {
+ largeop
+ symbol { summation } limits { limits } from { from } to { to }
+ }
+
+ def prod
+ named limits { "dft" }
+ named from {}
+ named to {}
+ {
+ largeop
+ symbol { product } limits { limits } from { from } to { to }
+ }
+
+ def coprod
+ named limits { "dft" }
+ named from {}
+ named to {}
+ {
+ largeop
+ symbol { 180d @Rotate vctr product }
+ limits { limits } from { from } to { to }
+ }
+
+ def bcap
+ named limits { "dft" }
+ named from {}
+ named to {}
+ {
+ largeop
+ symbol { big intersection } limits { limits } from { from } to { to }
+ }
+
+ def bcup
+ named limits { "dft" }
+ named from {}
+ named to {}
+ {
+ largeop
+ symbol { big union } limits { limits } from { from } to { to }
+ }
+
+ def bvee
+ named limits { "dft" }
+ named from {}
+ named to {}
+ {
+ largeop
+ symbol { big logicalor } limits { limits } from { from } to { to }
+ }
+
+ def bwedge
+ named limits { "dft" }
+ named from {}
+ named to {}
+ {
+ largeop
+ symbol { big logicaland } limits { limits } from { from } to { to }
+ }
+
+ def circledot
+ {
+ def @PureDot # dot with no extra space
+ {
+ @HContract { &0io 0.4w @HShift dotmath }
+ }
+
+ @OneRow @HContract { circle /0io &0.5rt @PureDot /0io circle }
+ }
+
+
+ def bodot
+ named limits { "dft" }
+ named from {}
+ named to {}
+ {
+ largeop
+ symbol { circledot }
+ limits { limits } from { from } to { to }
+ }
+
+ def botimes
+ named limits { "dft" }
+ named from {}
+ named to {}
+ {
+ largeop
+ symbol { circlemultiply } limits { limits } from { from } to { to }
+ }
+
+ def boplus
+ named limits { "dft" }
+ named from {}
+ named to {}
+ {
+ largeop
+ symbol { circleplus } limits { limits } from { from } to { to }
+ }
+
+ def buplus
+ named limits { "dft" }
+ named from {}
+ named to {}
+ {
+ largeop
+ symbol { & big @HContract { &0.5rt 0.7f @Font plus ^/0.2fo union } }
+ limits { limits } from { from } to { to }
+ }
+
+
+ ###################################################################
+ # #
+ # Integrations are slightly different in that, according to #
+ # Knuth (Chapter 17, p. 144), ``superscripts and subscripts #
+ # are not set as limits, even in display style''. Still, as #
+ # in TeX, we give users the possibility to override this. #
+ # #
+ ###################################################################
+
+ # Ludovic's symbol, no longer used
+ def integration
+ named symbol { "integration" }
+ named limits { "No" }
+ named from { }
+ named to { }
+ {
+ largeoperator
+ symbol { @CurrStyle @Case {
+ "display" @Yield { big symbol }
+ else @Yield symbol }
+ }
+ limits { limits } from { from } to { to }
+ }
+
+ def int
+ named limits { "No" }
+ named from { }
+ named to { }
+ {
+ largeop
+ symbol { vctr big integral } limits { limits } from { from } to { to }
+ }
+
+ def oint
+ named limits { "No" }
+ named from { }
+ named to { }
+ {
+ largeop
+ symbol { @OneCol { vctr degree |0.015fo big integral } }
+ limits { limits } from { from } to { to }
+ }
+
+
+ ###################################################################
+ # #
+ # Unary operator symbols #
+ # #
+ ###################################################################
+
+ def sqrt
+ precedence @UnaryOpPrec
+ named gap { @AboveGap }
+ right x
+ {
+ @BackEnd @Case {
+ PostScript @Yield {
+ @HContract @VContract
+ {
+ @VScale surd | @OneRow
+ {
+ @HLine line { "0.03 ft setlinewidth 2 setlinecap" }
+ ^//gap |gap @SquareRootStyle @Strut x # //gap
+ }
+ }
+ }
+ PDF @Yield {
+ @HContract @VContract
+ {
+#
+# VT: this PDF is correct but it renders badly in Acrobat (?problem
+# with scaling by fractional factors)
+# In other words, the @VScale value comes through correctly but it
+# looks ugly; GhostScript's translation actually expands the
+# "draw surd" instruction into raw moveto's and lineto's which
+# it presumably gets from the font's definition of the glyph!
+#
+ @VScale surd | @OneRow
+ {
+ @HLine line { "__mul(__loutf, 0.03) w 2 J" }
+ ^//gap |gap @SquareRootStyle @Strut x # //gap
+ }
+ }
+ }
+ }
+ }
+
+ def root
+ precedence @UnaryOpPrec
+ associativity left
+ left x
+ right y
+ {
+ "" sup x &0io sqrt y
+ }
+
+ def zroot
+ precedence @UnaryOpPrec
+ associativity left
+ left x
+ right y
+ {
+ def zsup right x { "+0.3f" @VShift 0.5f @Font x }
+
+ "-0.4f" @HShift { 1w @HShift { zsup x } } &0co sqrt y
+ }
+
+ export row axisrow col lcol ccol rcol mcol
+ def matrix
+ precedence @UnaryOpPrec
+ named gap { @CurrBinarySpaceGap }
+ named strut
+ named no { }
+ named No { }
+ named yes { 0.5f }
+ named Yes { 0.5f }
+ { No }
+ named atleft {}
+ named atright {}
+ named userow { No }
+ named shiftdelim { Yes }
+ body x
+ {
+ def @Strut
+ {
+ strut @Case {
+ "" @Yield {}
+ else @Yield { @OneRow { strut @High ^/ strut @High } }
+ }
+ }
+
+ def newrow
+ precedence @HelperRowPrec
+ associativity left
+ left x
+ right y
+ {
+ x @Case {
+ "" @Yield { y | @Strut }
+ else @Yield { x /@RowGap y | @Strut }
+ }
+ }
+
+ macro row { newrow "" }
+
+ def newaxisrow
+ precedence @HelperRowPrec
+ associativity left
+ left x
+ right y
+ {
+ x @Case {
+ "" @Yield { y | @Strut }
+ else @Yield { x ^/@RowGap y | @Strut }
+ }
+ }
+
+ macro axisrow { newaxisrow "" }
+
+ def col
+ precedence @HelperColPrec
+ associativity left
+ left x
+ named indent { 0.5rt }
+ right y
+ {
+ x @Case {
+ "" @Yield { &indent @OneCol y }
+ else @Yield { x |@ColGap &indent @OneCol y }
+ }
+ }
+
+ def lcol
+ precedence @HelperColPrec
+ associativity left
+ left x
+ right y
+ {
+ x col indent { 0i } y
+ }
+
+ def ccol
+ precedence @HelperColPrec
+ associativity left
+ left x
+ right y
+ {
+ x col indent { 0.5rt } y
+ }
+
+ def rcol
+ precedence @HelperColPrec
+ associativity left
+ left x
+ right y
+ {
+ x col indent { 1rt } y
+ }
+
+ def mcol
+ precedence @HelperColPrec
+ associativity left
+ left x
+ right y
+ {
+ x @Case {
+ "" @Yield { @OneCol y }
+ else @Yield { x |@ColGap @OneCol y }
+ }
+ }
+
+ def delim right x
+ {
+ x @Case
+ {
+ "" @Yield @Null
+ else @Yield
+ {
+ shiftdelim @Case {
+ { Yes yes } @Yield { @VScale x }
+ else @Yield { @VCover x }
+ }
+ }
+ }
+ }
+
+ @HContract @VContract {
+ delim atleft &@CurrPunctSpaceGap
+ userow @Case {
+ {Yes yes} @Yield @HContract @VContract {^//gap @OneRow x //gap}
+ else @Yield vctr @HContract @VContract { //gap x //gap }
+ }
+ &@CurrPunctSpaceGap delim atright
+ }
+ }
+
+ macro pmatrix { matrix atleft {1.5f @Font (} atright {1.5f @Font )} }
+ macro bmatrix { matrix atleft { blbrack } atright { brbrack } }
+ macro brmatrix { matrix atleft { blbrace } atright { brbrace } }
+ macro fmatrix { matrix atleft { blfloor } atright { brfloor } }
+ macro cmatrix { matrix atleft { blceil } atright { brceil } }
+ macro amatrix { matrix atleft { blangle } atright { brangle } }
+
+
+ ###################################################################
+ # #
+ # Binary operator symbols #
+ # #
+ ###################################################################
+
+ ###################################################################
+ # #
+ # over and frac (also half and third) #
+ # #
+ ###################################################################
+
+ def over
+ precedence @BinaryOpDividePrec
+ associativity left
+ left x
+ named gap { "dft" }
+ named belowgap { "dft" }
+ right y
+ {
+ def @AboveLineGap
+ {
+ gap @Case {
+ "dft" @Yield {
+ @CurrStyle @Case {
+ "display" @Yield 0.20f
+ else @Yield 0.10f
+ }
+ }
+ else @Yield gap
+ }
+ }
+
+ def @BelowLineGap
+ {
+ belowgap @Case {
+ "dft" @Yield {
+ @CurrStyle @Case {
+ "display" @Yield 0.15f
+ else @Yield 0.09f
+ }
+ }
+ else @Yield belowgap
+ }
+ }
+
+ @HContract @VContract
+ { |0.5rt @OneCol @NumeratorStyle x
+ ^//@AboveLineGap @HLine
+ //@BelowLineGap |0.5rt @OneCol @DenominatorStyle @Strut y
+ }
+ }
+
+ def frac
+ precedence @BinaryOpDividePrec
+ associativity left
+ left x
+ named gap { 0.2f }
+ right y
+ {
+ @HContract @VContract
+ { 1w @VShift { @SuperScriptStyle { x } /gap }
+ | fraction &0io
+ | 0w @VShift { |gap @SubScriptStyle { y } }
+ }
+ }
+
+ def half { one frac two }
+ def third { one frac three }
+
+
+ ###################################################################
+ # #
+ # Knuth's Group 7 (binary operations) #
+ # #
+ # All of Knuth's symbols are available except \star, \diamond #
+ # and \bullet; a few have been given more mnemonic names. #
+ # #
+ ###################################################################
+
+ def bin
+ precedence @BinaryOpPrec
+ associativity left
+ left l
+ named op { "binop" }
+ right r
+ {
+ l &@CurrBinarySpaceGap op &@CurrBinarySpaceGap r
+ }
+
+ def "+"
+ precedence @BinaryOpPrec
+ associativity left
+ left l
+ right r
+ {
+ l bin op { plus } r
+ }
+
+ def "-"
+ precedence @BinaryOpPrec
+ associativity left
+ left l
+ right r
+ {
+ l bin op { minus } r
+ }
+
+ def "+-"
+ precedence @BinaryOpPrec
+ associativity left
+ left l
+ right r
+ {
+ l bin op { plusminus } r
+ }
+
+ def "-+"
+ precedence @BinaryOpPrec
+ associativity left
+ left l
+ right r
+ {
+ l bin op { 180d @Rotate plusminus } r
+ }
+
+ def setminus
+ precedence @BinaryOpPrec
+ associativity left
+ left l
+ right r
+ {
+ l bin op { backslash } r
+ }
+
+ def cdot
+ precedence @BinaryOpPrec
+ associativity left
+ left l
+ right r
+ {
+ l bin op { dotmath } r
+ }
+
+ def times
+ precedence @BinaryOpTimesPrec
+ associativity left
+ left l
+ right r
+ {
+ l bin op { multiply } r
+ }
+
+ def "*"
+ precedence @BinaryOpTimesPrec
+ associativity left
+ left l
+ right r
+ {
+ l bin op { asteriskmath } r
+ }
+
+ #def diamond { name used above }
+
+ def circ
+ precedence @BinaryOpPrec
+ associativity left
+ left l
+ right r
+ {
+ l bin op { circle } r
+ }
+
+ #def bullet { name used above }
+
+ def div
+ precedence @BinaryOpDividePrec
+ associativity left
+ left l
+ right r
+ {
+ l bin op { divide } r
+ }
+
+ def cap
+ precedence @BinaryOpPrec
+ associativity left
+ left l
+ right r
+ {
+ l bin op { intersection } r
+ }
+
+ def cup
+ precedence @BinaryOpPrec
+ associativity left
+ left l
+ right r
+ {
+ l bin op { union } r
+ }
+
+ def uplus
+ precedence @BinaryOpPrec
+ associativity left
+ left l
+ right r
+ {
+ l bin op {@OneRow @HContract { &0.5rt 0.7f @Font plus ^/0.2fo union}} r
+ }
+
+ def sqcapshape
+ {
+ @HContract @VContract @BackEnd @Case {
+ PostScript @Yield {
+ { "0 0 moveto 0 ysize lineto xsize ysize lineto"
+ "xsize 0 lineto 0.04 ft setlinewidth stroke"
+ }
+ @Graphic { 0.3f @Wide 0.3f @High ^| ^/ 0.3f @Wide 0.3f @High }
+ }
+ PDF @Yield {
+ { "__mul(__loutf, 0.04) w"
+ "0 0 m 0 __ysize l __xsize __ysize l __xsize 0 l s"
+ }
+ @Graphic { 0.3f @Wide 0.3f @High ^| ^/ 0.3f @Wide 0.3f @High }
+ }
+ }
+ }
+
+ def sqcap
+ precedence @BinaryOpPrec
+ associativity left
+ left l
+ right r
+ {
+ l bin op { sqcapshape } r
+ }
+
+ def sqcup
+ precedence @BinaryOpPrec
+ associativity left
+ left l
+ right r
+ {
+ l bin op { "180d" @Rotate sqcapshape } r
+ }
+
+ def triangleleft
+ precedence @BinaryOpPrec
+ associativity left
+ left l
+ right r
+ {
+ l bin op { "90d" @Rotate 0.8f @Font triangle } r
+ }
+
+ def triangleright
+ precedence @BinaryOpPrec
+ associativity left
+ left l
+ right r
+ {
+ l bin op { "-90d" @Rotate 0.8f @Font triangle } r
+ }
+
+ def wr
+ precedence @BinaryOpPrec
+ associativity left
+ left l
+ right r
+ {
+ l bin op { vctr {90d @Rotate similar } } r
+ }
+
+ def bigcirc
+ precedence @BinaryOpPrec
+ associativity left
+ left l
+ right r
+ {
+ l bin op { 1.2f @Font circle} r
+ }
+
+ def bigtriangleup
+ precedence @BinaryOpPrec
+ associativity left
+ left l
+ right r
+ {
+ l bin op { 1.2f @Font triangle } r
+ }
+
+ def bigtriangledown
+ precedence @BinaryOpPrec
+ associativity left
+ left l
+ right r
+ {
+ l bin op { 180d @Rotate 1.2f @Font triangle } r
+ }
+
+ def vee
+ precedence @BinaryOpPrec
+ associativity left
+ left l
+ right r
+ {
+ l bin op { logicalor } r
+ }
+
+ def wedge
+ precedence @BinaryOpPrec
+ associativity left
+ left l
+ right r
+ {
+ l bin op { logicaland } r
+ }
+
+ def oplus
+ precedence @BinaryOpPrec
+ associativity left
+ left l
+ right r
+ {
+ l bin op { circleplus } r
+ }
+
+ def ominus
+ precedence @BinaryOpPrec
+ associativity left
+ left l
+ right r
+ {
+ l bin op { @OneRow @HContract { circle /0io &0.5rt minus } } r
+ }
+
+ def otimes
+ precedence @BinaryOpPrec
+ associativity left
+ left l
+ right r
+ {
+ l bin op { circlemultiply } r
+ }
+
+ def oslash
+ precedence @BinaryOpPrec
+ associativity left
+ left l
+ right r
+ {
+ #l bin op { `vctr 60d @Rotate @HContract {circle /0io &0.5rt minus`} } r
+ l bin op {@OneRow @HContract {circle /0io &0.5rt "-0.1f" @VShift slash}} r
+ }
+
+ def odot
+ precedence @BinaryOpPrec
+ associativity left
+ left l
+ right r
+ {
+ l bin op { circledot } r
+ }
+
+ def dagger
+ precedence @BinaryOpPrec
+ associativity left
+ left l
+ right r
+ {
+ l bin op { @Base @Char "dagger" } r
+ }
+
+ def daggerdbl
+ precedence @BinaryOpPrec
+ associativity left
+ left l
+ right r
+ {
+ l bin op { @Base @Char "daggerdbl" } r
+ }
+
+ def amalg
+ precedence @BinaryOpPrec
+ associativity left
+ left l
+ right r
+ {
+ l bin op { 180d @Rotate vctr product } r
+ }
+
+
+ ###################################################################
+ # #
+ # Group 8 (relations) #
+ # #
+ # All Knuth's operators are available, but many have been #
+ # given different, more mnemonic names. Also included is #
+ # a not operator for negating the relations. #
+ # #
+ ###################################################################
+
+ # "not" done by an option now
+ # def not right x { @HContract {@OneCol x /0co &0.5rt slash}}
+
+ def rel
+ precedence @RelationPrec
+ associativity left
+ left l
+ named op { "relop" }
+ named neg { "no" }
+ right r
+ {
+
+ def @Op
+ {
+ neg @Case {
+ { "No" "no" } @Yield op
+ { "Yes" "yes" } @Yield
+ { @HContract {@OneCol { & op } /0co &0.5rt slash} }
+ }
+ }
+
+ l &@CurrRelSpaceGap @Op &@CurrRelSpaceGap r
+ }
+
+ def "<"
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { less } r
+ }
+
+ def ">"
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { greater } r
+ }
+
+ def "="
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { equal } r
+ }
+
+ def "<="
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { lessequal } r
+ }
+
+ def precsym
+ {
+ 0i @HShift 0.45f @Font "-90d" @Rotate {parenrighttp ^| parenlefttp}
+ }
+
+ def prec
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { precsym } r
+ }
+
+ def preceq
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { @VContract { precsym /0.1f minus } } r
+ }
+
+ def "<<"
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { less less } r
+ }
+
+ def subset
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { propersubset } r
+ }
+
+ def subseteq
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { reflexsubset } r
+ }
+
+ def sqsubsetshape
+ {
+ @HContract @VContract @BackEnd @Case {
+ PostScript @Yield {
+ { "xsize 0 moveto 0 0 lineto 0 ysize lineto"
+ "xsize ysize lineto 0.04 ft setlinewidth stroke"
+ }
+ @Graphic { 0.5f @Wide 0.25f @High ^/ 0.25f @High }
+ /0.1f minus
+ }
+ PDF @Yield {
+ { "__mul(__loutf, 0.04) w __xsize 0 m 0 0 l"
+ "0 __ysize l __xsize __ysize l s"
+ }
+ @Graphic { 0.5f @Wide 0.25f @High ^/ 0.25f @High }
+ /0.1f minus
+ }
+ }
+ }
+
+ def sqsubseteq
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { sqsubsetshape } r
+ }
+
+ def in
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { element } r
+ }
+
+ def vdash
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { vctr {"-90d" @Rotate perpendicular} } r
+ }
+
+ def smile
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { vctr 90d @Rotate parenleft } r
+ }
+
+ def frown
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { vctr 90d @Rotate parenright } r
+ }
+
+ def ">="
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { greaterequal } r
+ }
+
+ def succsym
+ {
+ 0.45f @Font 90d @Rotate { parenrighttp ^| parenlefttp }
+ }
+
+ def succ
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { succsym } r
+ }
+
+ def succeq
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { @OneRow non succ /0.1f minus } r
+ }
+
+ def ">>"
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { greater greater } r
+ }
+
+ def supset
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { propersuperset } r
+ }
+
+ def supseteq
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { reflexsuperset } r
+ }
+
+ def sqsupseteqshape
+ {
+ @HContract @VContract @BackEnd @Case {
+ PostScript @Yield {
+ { "0 0 moveto xsize 0 lineto xsize ysize lineto"
+ "0 ysize lineto 0.04 ft setlinewidth stroke"
+ } @Graphic { 0.5f @Wide 0.25f @High ^/ 0.25f @High }
+ /0.1f minus
+ }
+ PDF @Yield {
+ { "__mul(__loutf, 0.04) w 0 0 m __xsize 0 l"
+ "__xsize __ysize l 0 __ysize l s"
+ } @Graphic { 0.5f @Wide 0.25f @High ^/ 0.25f @High }
+ /0.1f minus
+ }
+ }
+ }
+
+ def sqsupseteq
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { sqsupseteqshape } r
+ }
+
+ def ni
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { 180d @Rotate element } r
+ }
+
+ def dashv
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { vctr {90d @Rotate perpendicular} } r
+ }
+
+ def mid
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { @Base "|" } r
+ }
+
+ def parallel
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { @Base "||" } r
+ }
+
+ def "=="
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { equivalence } r
+ }
+
+ def "~"
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { similar } r
+ }
+
+ def "-~"
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { @OneRow { similar ^/0.07f /0.07f minus } } r
+ }
+
+ def asymp
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ { l
+ rel neg { neg } op { 0.7f @Font @OneRow
+ { 90d @Rotate parenleft ^/0.008f
+ /0.008f 90d @Rotate parenright } }
+ r
+ }
+
+ def "~~"
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { approxequal } r
+ }
+
+ def "=~"
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { congruent } r
+ }
+
+ def bowtie
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { non triangleright non triangleleft } r
+ }
+
+ def propto
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { proportional } r
+ }
+
+ def models
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { @Base vctr "|" &0.05fo vctr equal } r
+ }
+
+ def trieqsym
+ {
+ @OneRow @HContract {&0.5rt small triangle^/0.15f equal}
+ }
+
+ def trieq
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { trieqsym } r
+ }
+
+ def doteqsym
+ {
+ @OneRow @HContract { &0.5rt dotmath^/0.15f equal }
+ }
+
+ def doteq
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { doteqsym } r
+ }
+
+ def perp
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { perpendicular } r
+ }
+
+ def notsub
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { notsubset } r
+ }
+
+ def notin
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { notelement } r
+ }
+
+ def "!="
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { notequal } r
+ }
+
+ def "<->"
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { arrowboth } r
+ }
+
+ def "<--"
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { arrowleft } r
+ }
+
+ def "-->"
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { arrowright } r
+ }
+
+ def up
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { arrowup } r
+ }
+
+ def down
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { arrowdown } r
+ }
+
+ def "<=>"
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { arrowdblboth } r
+ }
+
+ def "<=="
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { arrowdblleft } r
+ }
+
+ def "==>"
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { arrowdblright } r
+ }
+
+ def dblup
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { arrowdblup } r
+ }
+
+ def dbldown
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { arrowdbldown } r
+ }
+
+ def ":"
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { colon } r
+ }
+
+ def "::"
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { @OneCol {colon ` colon} } r
+ }
+
+ def ":="
+ precedence @RelationPrec
+ associativity left
+ left l
+ named neg { "no" }
+ right r
+ {
+ l rel neg { neg } op { colon{ //0.05fo equal } } r
+ }
+
+
+ ###################################################################
+ # #
+ # Punctuation symbols (Knuth's Group 13) #
+ # #
+ ###################################################################
+
+ def punct
+ precedence @PunctuationPrec
+ associativity left
+ left l
+ named symbol { "punct" }
+ right r
+ {
+ l &0.0ce symbol &@CurrPunctSpaceGap r
+ }
+
+ def ";"
+ precedence @PunctuationPrec
+ associativity left
+ left l
+ right r
+ {
+ l punct symbol { semicolon } r
+ }
+
+ def ","
+ precedence @PunctuationPrec
+ associativity left
+ left l
+ right r
+ {
+ l punct symbol { comma } r
+ }
+
+ def col
+ precedence @PunctuationPrec
+ associativity left
+ left l
+ right r
+ {
+ l punct symbol { colon } r
+ }
+
+
+ ###################################################################
+ # #
+ # Ordinary symbols (to get Roman font) - continued #
+ # #
+ ###################################################################
+
+ def "0" { zero }
+ def "1" { one }
+ def "2" { two }
+ def "3" { three }
+ def "4" { four }
+ def "5" { five }
+ def "6" { six }
+ def "7" { seven }
+ def "8" { eight }
+ def "9" { nine }
+
+
+ ###################################################################
+ # #
+ # The result object #
+ # #
+ ###################################################################
+
+ basefont @Font
+ { Slope xheight2mark nostrut } @Font { initialspace } @Space
+ { @CurrStyleVar @Yield initialstyle } @SetContext {
+ { @CrampedVar @Yield initiallycramped } @SetContext {
+ @Body
+ }
+ }
+
+@End @Math
+
+
+###############################################################################
+# #
+# In-line equations #
+# #
+###############################################################################
+
+macro @M { @HContract @VContract @Math initialstyle { "text" } }
diff --git a/include/include/modula b/include/include/modula
new file mode 100644
index 0000000..c6a9a2f
--- /dev/null
+++ b/include/include/modula
@@ -0,0 +1,29 @@
+###############################################################################
+# #
+# Lout setup file for Modula-2 program printing #
+# #
+# Jeffrey H. Kingston #
+# 5 February 1999 #
+# #
+# This file has been placed in the public domain by its author. #
+# #
+###############################################################################
+
+
+###############################################################################
+# #
+# The @SysInclude { modulaf } line #
+# #
+# This line causes Lout to read the definitions for Modula-2, and should #
+# not be touched. #
+# #
+###############################################################################
+
+@SysInclude { modulaf }
+
+
+###############################################################################
+# #
+# This package does not offer the ability to change default options. #
+# #
+###############################################################################
diff --git a/include/include/modulaf b/include/include/modulaf
new file mode 100644
index 0000000..66ffa5e
--- /dev/null
+++ b/include/include/modulaf
@@ -0,0 +1,154 @@
+
+###############################################################################
+# #
+# Lout @Modula package for formatting Modula-2 programs (Version 1.0) #
+# #
+# Version 1.0 by Jeffrey H. Kingston, September 1993. #
+# #
+# This package implements the complete Modula-2 language (in a style which #
+# claims only to reflect its author's taste) with the following caveats: #
+# #
+# * The symbol { must be given as lbrace #
+# #
+# * The symbol } must be given as rbrace #
+# #
+# * The symbol # must be given as numbersign #
+# #
+# * Double quotes are used by Lout to delimit literal strings, so they #
+# need to be quoted (Modula-2 allows single quoted strings wherever #
+# double quoted strings can go; we recommend these be used) #
+# #
+# * Literal strings should be enclosed in double quotes #
+# #
+# * The symbols B, H, C, and E as used in numeric literals will appear #
+# in italic font #
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either Version 3, or (at your option) #
+# any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA #
+# #
+# As a special exception, when this file is read by Lout when processing #
+# a Lout source document, you may use the result without restriction. #
+# #
+###############################################################################
+
+export "0" "1" "2" "3" "4" "5" "6" "7" "8" "9"
+
+ "*" "/" "~" "+" "-" "=" "<>" ">" ">=" "<" "<=" "("
+ ")" "[" "]" "," ";" "." ":" "..." ".." "|" "^" ":=" "'" "`"
+ "&"
+
+ lbrace rbrace numbersign
+
+ AND ARRAY BEGIN BY CASE CONST DEFINITION DIV DO ELSE ELSIF
+ END EXPORT EXIT FOR FROM IF IMPLEMENTATION IMPORT IN LOOP
+ MOD MODULE NOT OF OR POINTER PROCEDURE QUALIFIED RECORD
+ REPEAT RETURN SET TO THEN TYPE UNTIL VAR WHILE WITH @Com
+
+def @Modula
+ body @Body
+@Begin
+
+ def @R right x { Base @Font x }
+ def @B right x { Bold @Font x }
+ def @S right x { { Symbol Base } @Font x }
+
+ def "0" { @R "0" }
+ def "1" { @R "1" }
+ def "2" { @R "2" }
+ def "3" { @R "3" }
+ def "4" { @R "4" }
+ def "5" { @R "5" }
+ def "6" { @R "6" }
+ def "7" { @R "7" }
+ def "8" { @R "8" }
+ def "9" { @R "9" }
+
+ def "*" { @S @Char "asteriskmath" }
+ def "/" { @R @Char "fraction" }
+ def "~" { @R "~" }
+ def "+" { @S "+" }
+ def "-" { @S "-" }
+ def "=" { @S @Char "equal" }
+ def "<>" { @S @Char "notequal" }
+ def ">" { @S @Char "greater" }
+ def ">=" { @S @Char "greaterequal" }
+ def "<" { @S @Char "less" }
+ def "<=" { @S @Char "lessequal" }
+ def "(" { @R "(" }
+ def ")" { @R ")" }
+ def "[" { @R "[" }
+ def "]" { @R "]" }
+ def "," { @R "," }
+ def ";" { @R ";" }
+ def "." { @R "." }
+ def ":" { @R ":" }
+ def ".." { @R ".." &0.1f }
+ def "..." { @R "..." }
+ def "|" { @R "|" }
+ def "^" { @S 0.8f @Font @Char "arrowup" }
+ def ":=" { :{//0.03fo =} }
+ def "'" { @R "'" }
+ def "`" { @R "`" }
+ def "&" { @R "&" }
+
+ def lbrace { @R "{" }
+ def rbrace { @R "}" }
+ def numbersign { @R "#" }
+
+ def AND { @B "and" }
+ def ARRAY { @B "array" }
+ def BEGIN { @B "begin" }
+ def BY { @B "by" }
+ def CASE { @B "case" }
+ def CONST { @B "const" }
+ def DEFINITION { @B "definition" }
+ def DIV { @B "div" }
+ def DO { @B "do" }
+ def ELSE { @B "else" }
+ def ELSIF { @B "elsif" }
+ def END { @B "end" }
+ def EXPORT { @B "export" }
+ def EXIT { @B "exit" }
+ def FOR { @B "for" }
+ def FROM { @B "from" }
+ def IF { @B "if" }
+ def IMPLEMENTATION { @B "implementation" }
+ def IMPORT { @B "import" }
+ def IN { @B "in" }
+ def LOOP { @B "loop" }
+ def MOD { @B "mod" }
+ def MODULE { @B "module" }
+ def NOT { @B "not" }
+ def OF { @B "of" }
+ def OR { @B "or" }
+ def POINTER { @B "pointer" }
+ def PROCEDURE { @B "procedure" }
+ def QUALIFIED { @B "qualified" }
+ def RECORD { @B "record" }
+ def REPEAT { @B "repeat" }
+ def RETURN { @B "return" }
+ def SET { @B "set" }
+ def TO { @B "to" }
+ def THEN { @B "then" }
+ def TYPE { @B "type" }
+ def UNTIL { @B "until" }
+ def VAR { @B "var" }
+ def WHILE { @B "while" }
+ def WITH { @B "with" }
+
+ def @Com right x { @R "{" x @R "}" }
+
+ Slope @Font lines @Break @Body
+
+@End @Modula
diff --git a/include/include/mydefs b/include/include/mydefs
new file mode 100644
index 0000000..247457e
--- /dev/null
+++ b/include/include/mydefs
@@ -0,0 +1,11 @@
+
+###############################################################################
+# #
+# mydefs #
+# #
+# This empty Lout file is a placeholder which is read by the standard setup #
+# files when there is no mydefs file in the user's current directory. #
+# #
+# This file has been placed in the public domain by its author. #
+# #
+###############################################################################
diff --git a/include/include/np b/include/include/np
new file mode 100644
index 0000000..716b8ad
--- /dev/null
+++ b/include/include/np
@@ -0,0 +1,117 @@
+###############################################################################
+# #
+# Lout setup file for Nonpareil program printing #
+# #
+# Jeffrey H. Kingston #
+# 3 December 2002 #
+# #
+# This file has been placed in the public domain by its author. #
+# #
+###############################################################################
+
+
+###############################################################################
+# #
+# @SysInclude line #
+# #
+# This line causes Lout to read the definitions for this programming #
+# language, and should not be touched. #
+# #
+###############################################################################
+
+@SysInclude { npf }
+
+
+###############################################################################
+# #
+# @Use clause #
+# #
+# To change the default value of any option, delete the # at the start of #
+# its line and change the value between braces. #
+# #
+###############################################################################
+
+@Use { @NonpareilSetup
+ # pipe { } # pipe source through this
+ # numbered { No } # No, Yes, or a line number
+ # numberedblanks { Yes } # No or Yes
+ # style { symbol @OrIfPlain fixed } # fixed, varying, or symbol
+
+ # the following options apply when style is "fixed"
+
+ # fixedfont { Courier } # font family
+ # fixedsize { -1.0p } # font size
+ # fixedline { 1.0vx } # line-space
+ # fixedblanklinescale { 1.0 } # blank-line scale
+ # fixedspace { lout } # spacing mode
+ # fixedtabin { 8 } # tab interval
+ # fixedtabout { 8s } # tab width
+
+ # fixedidentifiers { Base } # identifier face
+ # fixedkeywords { Base } # keyword face
+ # fixedoperators { Base } # operator face
+ # fixednumbers { Base } # number face
+ # fixedstrings { Base } # string face
+ # fixedcomments { Base } # comment face
+ # fixedlinenumbers { Base } # line numbers face
+
+ # fixedidentifiersformat { @Body } # identifiers format
+ # fixedkeywordsformat { @Body } # keywords format
+ # fixedoperatorsformat { @Body } # operators format
+ # fixednumbersformat { @Body } # numbers format
+ # fixedstringsformat { @Body } # strings format
+ # fixedcommentsformat { @Body } # comments format
+ # fixedlinenumbersformat { @Body } # line numbers format
+
+ # the following options apply when style is "varying"
+
+ # varyingfont { } # font family
+ # varyingsize { 1.0f } # font size
+ # varyingline { 1.0vx } # line-space
+ # varyingblanklinescale { 1.0 } # blank-line scale
+ # varyingspace { lout } # varying mode
+ # varyingtabin { 8 } # tab interval
+ # varyingtabout { 3f } # tab width
+
+ # varyingidentifiers { Slope } # identifier face
+ # varyingkeywords { Bold } # keyword face
+ # varyingoperators { Base } # operator face
+ # varyingnumbers { Base } # number face
+ # varyingstrings { Slope } # string face
+ # varyingcomments { Base } # comment face
+ # varyinglinenumbers { Base } # line numbers face
+
+ # varyingidentifiersformat { @Body } # identifiers format
+ # varyingkeywordsformat { @Body } # keywords format
+ # varyingoperatorsformat { @Body } # operators format
+ # varyingnumbersformat { @Body } # numbers format
+ # varyingstringsformat { @Body } # strings format
+ # varyingcommentsformat { @Body } # comments format
+ # varyinglinenumbersformat { @Body } # line numbers format
+
+ # the following options apply when style is "symbol"
+
+ # symbolfont { } # font family
+ # symbolsize { 1.0f } # font size
+ # symbolline { 1.0vx } # line-space
+ # symbolblanklinescale { 1.0 } # blank-line scale
+ # symbolspace { lout } # spacing mode
+ # symboltabin { 8 } # tab interval
+ # symboltabout { 3f } # tab width
+
+ # symbolidentifiers { Slope } # identifier face
+ # symbolkeywords { Bold } # keyword face
+ # symboloperators { Base } # operator face
+ # symbolnumbers { Base } # number face
+ # symbolstrings { Slope } # string face
+ # symbolcomments { Base } # comment face
+ # symbollinenumbers { Base } # line numbers face
+
+ # symbolidentifiersformat { @Body } # identifiers format
+ # symbolkeywordsformat { @Body } # keywords format
+ # symboloperatorsformat { @Body } # operators format
+ # symbolnumbersformat { @Body } # numbers format
+ # symbolstringsformat { @Body } # strings format
+ # symbolcommentsformat { @Body } # comments format
+ # symbollinenumbersformat { @Body } # line numbers format
+}
diff --git a/include/include/npf b/include/include/npf
new file mode 100644
index 0000000..f7512ad
--- /dev/null
+++ b/include/include/npf
@@ -0,0 +1,460 @@
+
+###############################################################################
+# #
+# Lout @NonpareilSetup package for formatting Nonpareil programs #
+# #
+# Jeffrey H. Kingston #
+# 3 December 2002 #
+# #
+# This package uses a filtered body parameter to convert program source #
+# code into Lout source. The filter program is prg2lout, which is #
+# distributed with Lout and should be compiled and installed wherever #
+# Lout itself is. #
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either Version 3, or (at your option) #
+# any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA #
+# #
+# As a special exception, when this file is read by Lout when processing #
+# a Lout source document, you may use the result without restriction. #
+# #
+###############################################################################
+
+export @Nonpareil
+def @NonpareilSetup
+ named pipe { } # pipe through this
+ named numbered { No } # numbered lines?
+ named blanknumbered { Yes } # blanks numbered?
+ named style
+ named @OrIfPlain left x right y
+ { @BackEnd @Case { PlainText @Yield y else @Yield x } }
+ { fixed } # print style
+
+ # the following options apply when style is "fixed"
+ named fixedfont { Courier }# font family
+ named fixedsize { -1.0p } # font size
+ named fixedline { 1.0vx } # line-space
+ named fixedblanklinescale { 1.0 } # blank-line scale
+ named fixedspace { lout } # spacing mode
+ named fixedtabin { 8 } # tab interval
+ named fixedtabout { 4s } # tab width
+
+ named fixedidentifiers { Base } # identifier face
+ named fixedkeywords { Base } # keyword face
+ named fixedoperators { Base } # operator face
+ named fixednumbers { Base } # number face
+ named fixedstrings { Base } # string face
+ named fixedcomments { Base } # comment face
+ named fixedlinenumbers { Base } # line numbers face
+
+ named fixedidentifiersformat right @Body { @Body } # identifier format
+ named fixedkeywordsformat right @Body { @Body } # keyword format
+ named fixedoperatorsformat right @Body { @Body } # operators format
+ named fixednumbersformat right @Body { @Body } # number format
+ named fixedstringsformat right @Body { @Body } # string format
+ named fixedcommentsformat right @Body { @Body } # comment format
+ named fixedlinenumbersformat right @Body { @Body } # line nums format
+
+ # the following options apply when style is "varying"
+ named varyingfont { } # font family
+ named varyingsize { 1.0f } # font size
+ named varyingline { 1.0vx } # line-space
+ named varyingblanklinescale { 1.0 } # blank-line scale
+ named varyingspace { lout } # spacing mode
+ named varyingtabin { 8 } # tab interval
+ named varyingtabout { 3f } # tab width
+
+ named varyingidentifiers { Slope } # identifier face
+ named varyingkeywords { Bold } # keyword face
+ named varyingoperators { Base } # operator face
+ named varyingnumbers { Base } # number face
+ named varyingstrings { Slope } # string face
+ named varyingcomments { Base } # comment face
+ named varyinglinenumbers { Base } # line numbers face
+
+ named varyingidentifiersformat right @Body { @Body } # identifier format
+ named varyingkeywordsformat right @Body { @Body } # keyword format
+ named varyingoperatorsformat right @Body { @Body } # operators format
+ named varyingnumbersformat right @Body { @Body } # number format
+ named varyingstringsformat right @Body { @Body } # string format
+ named varyingcommentsformat right @Body { @Body } # comment format
+ named varyinglinenumbersformat right @Body { @Body } # line nums format
+
+ # the following options apply when style is "symbol"
+ named symbolfont { } # font family
+ named symbolsize { 1.0f } # font size
+ named symbolline { 1.0vx } # line-space
+ named symbolblanklinescale { 1.0 } # blank-line scale
+ named symbolspace { lout } # spacing mode
+ named symboltabin { 8 } # tab interval
+ named symboltabout { 3f } # tab width
+
+ named symbolidentifiers { Slope } # identifier face
+ named symbolkeywords { Bold } # keyword face
+ named symboloperators { Base } # operator face
+ named symbolnumbers { Base } # number face
+ named symbolstrings { Slope } # string face
+ named symbolcomments { Base } # comment face
+ named symbollinenumbers { Base } # line numbers face
+
+ named symbolidentifiersformat right @Body { @Body } # identifier format
+ named symbolkeywordsformat right @Body { @Body } # keyword format
+ named symboloperatorsformat right @Body { @Body } # operators format
+ named symbolnumbersformat right @Body { @Body } # number format
+ named symbolstringsformat right @Body { @Body } # string format
+ named symbolcommentsformat right @Body { @Body } # comment format
+ named symbollinenumbersformat right @Body { @Body } # line nums format
+
+@Begin
+
+ export
+
+ @PI @PK @PO @PN @PS @PC @PL @PA @PM @PD @PDD
+ @A "$>"
+
+ def @Nonpareil
+ named style { style } # style
+ named numbered { numbered } # want numbered lines?
+ named blanknumbered { blanknumbered } # numbered blank lines?
+ named pipe { pipe } # pipe through this first
+ named font { dft } # font family
+ named size { dft } # font size
+ named line { dft } # line-space
+ named blanklinescale { dft } # blank-line scale
+ named space { dft } # spacing mode
+ named tabin { dft } # tab interval
+ named tabout { dft } # tab width
+ named identifiers { dft } # ident. font
+ named keywords { dft } # keyword font
+ named operators { dft } # operator font
+ named numbers { dft } # number font
+ named strings { dft } # string font
+ named comments { dft } # comment font
+ named linenumbers { dft } # line numbers font
+ body @Body # filtered, see below
+ @Begin
+
+ def @Test # returns x unless x is dft
+ left x
+ named iffixed {}
+ named ifvarying {}
+ named ifsymbol {}
+ {
+ x @Case {
+ dft @Yield {
+ style @Case {
+ fixed @Yield { iffixed }
+ varying @Yield { ifvarying }
+ symbol @Yield { ifsymbol }
+ }
+ }
+ else @Yield x
+ }
+ }
+
+
+ def @Else # returns x, or y if x is dft
+ left x
+ right y
+ {
+ x @Case {
+ dft @Yield y
+ else @Yield x
+ }
+ }
+
+
+ def @InitTab
+ {
+ tabin @Test
+ iffixed { fixedtabin }
+ ifvarying { varyingtabin }
+ ifsymbol { symboltabin }
+ }
+
+
+ def @InitTabWidth
+ {
+ tabout @Test
+ iffixed { fixedtabout }
+ ifvarying { varyingtabout }
+ ifsymbol { symboltabout }
+ }
+
+
+ def @Filter
+ {
+ def wantnumbered
+ {
+ numbered @Case {
+ { No no } @Yield ""
+ { Yes yes } @Yield "-L"
+ else @Yield { "-L"numbered }
+ }
+ }
+
+ def wantblanknumbered
+ {
+ blanknumbered @Case {
+ { No no } @Yield "-M"
+ { NoPrint noprint } @Yield "-N"
+ { Yes yes } @Yield ""
+ }
+ }
+
+ pipe @Case {
+ "" @Yield {
+ "prg2lout -r -lNonpareil" wantblanknumbered wantnumbered
+ -i{@FilterIn} -o{@FilterOut} -e{@FilterErr}
+ -t{@InitTab} -T{@InitTabWidth}
+ }
+ else @Yield {
+ "cat" @FilterIn "|" pipe "|"
+ "prg2lout -r -lNonpareil" wantblanknumbered wantnumbered
+ -o{@FilterOut} -e{@FilterErr}
+ -t{@InitTab} -T{@InitTabWidth}
+ }
+ }
+ }
+
+
+ def @InitFontFamily
+ {
+ font @Test
+ iffixed { fixedfont }
+ ifvarying { varyingfont }
+ ifsymbol { symbolfont }
+ }
+
+
+ def @InitSize
+ {
+ size @Test
+ iffixed { fixedsize }
+ ifvarying { varyingsize }
+ ifsymbol { symbolsize }
+ }
+
+
+ def @InitLine
+ {
+ line @Test
+ iffixed { fixedline }
+ ifvarying { varyingline }
+ ifsymbol { symbolline }
+ }
+
+
+ def @InitBLS
+ {
+ blanklinescale @Test
+ iffixed { fixedblanklinescale }
+ ifvarying { varyingblanklinescale }
+ ifsymbol { symbolblanklinescale }
+ }
+
+
+ def @InitSpace
+ {
+ space @Test
+ iffixed { fixedspace }
+ ifvarying { varyingspace }
+ ifsymbol { symbolspace }
+ }
+
+
+ def @PI # for formatting identifiers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedidentifiersformat {
+ { identifiers @Else fixedidentifiers } @Font x
+ }
+ varying @Yield varyingidentifiersformat {
+ { identifiers @Else varyingidentifiers } @Font x
+ }
+ symbol @Yield symbolidentifiersformat {
+ { identifiers @Else symbolidentifiers } @Font x
+ }
+ }
+ }
+
+
+ def @PK # for formatting keywords
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedkeywordsformat {
+ { keywords @Else fixedkeywords } @Font x
+ }
+ varying @Yield varyingkeywordsformat {
+ { keywords @Else varyingkeywords } @Font x
+ }
+ symbol @Yield symbolkeywordsformat {
+ { keywords @Else symbolkeywords } @Font x
+ }
+ }
+ }
+
+
+ def @PO # for formatting operators
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedoperatorsformat {
+ { operators @Else fixedoperators } @Font x
+ }
+ varying @Yield varyingoperatorsformat {
+ { operators @Else varyingoperators } @Font x
+ }
+ symbol @Yield symboloperatorsformat {
+ { operators @Else symboloperators } @Font x
+ }
+ }
+ }
+
+
+ def @PN # for formatting numbers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixednumbersformat {
+ { numbers @Else fixednumbers } @Font x
+ }
+ varying @Yield varyingnumbersformat {
+ { numbers @Else varyingnumbers } @Font x
+ }
+ symbol @Yield symbolnumbersformat {
+ { numbers @Else symbolnumbers } @Font x
+ }
+ }
+ }
+
+
+ def @PS # for formatting strings
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedstringsformat {
+ { strings @Else fixedstrings } @Font x
+ }
+ varying @Yield varyingstringsformat {
+ { strings @Else varyingstrings } @Font x
+ }
+ symbol @Yield symbolstringsformat {
+ { strings @Else symbolstrings } @Font x
+ }
+ }
+ }
+
+
+ def @PC # for formatting comments
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedcommentsformat {
+ { comments @Else fixedcomments } @Font x
+ }
+ varying @Yield varyingcommentsformat {
+ { comments @Else varyingcomments } @Font x
+ }
+ symbol @Yield symbolcommentsformat {
+ { comments @Else symbolcomments } @Font x
+ }
+ }
+ }
+
+
+ def @PL # for formatting line numbers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedlinenumbersformat {
+ { linenumbers @Else fixedlinenumbers } @Font x
+ }
+ varying @Yield varyinglinenumbersformat {
+ { linenumbers @Else varyinglinenumbers } @Font x
+ }
+ symbol @Yield symbollinenumbersformat {
+ { linenumbers @Else symbollinenumbers } @Font x
+ }
+ }
+ }
+
+
+ def @PA # for formatting asterisks
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "*"
+ else @Yield { "0.5w" @VShift "*" }
+ }
+ }
+
+
+ def @PM # for formatting minus signs
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "-"
+ else @Yield style @Case {
+ fixed @Yield "-"
+ else @Yield { { Symbol Base } @Font @Char "minus" }
+ }
+ }
+ }
+
+
+ def @PD # for formatting dots, if wanted larger
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "."
+ else @Yield style @Case {
+ fixed @Yield "."
+ else @Yield { "1.4f" @Font "+0.04f" @VShift "." &"0.05f" }
+ }
+ }
+ }
+
+
+ def @PDD # for formatting double dots, if wanted larger
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield ".."
+ else @Yield style @Case {
+ fixed @Yield ".."
+ else @Yield { "1.4f" @Font "+0.04f" @VShift ".." &"0.05f" }
+ }
+ }
+ }
+
+
+ def @A # get characters from the Adobe Symbol font
+ named sym {}
+ right x
+ {
+ style @Case {
+ symbol @Yield { { Symbol Base } @Font @Char sym }
+ else @Yield { x }
+ }
+ }
+
+
+ macro "$>" { {} & }
+
+
+ Programming @Language
+ { @InitFontFamily Base @InitSize } @Font @InitSpace @Space
+ { @InitLine lines "blanklinescale" @InitBLS } @Break @Body
+
+ @End @Nonpareil
+
+@End @NonpareilSetup
diff --git a/include/include/old_graph b/include/include/old_graph
new file mode 100644
index 0000000..87ebae3
--- /dev/null
+++ b/include/include/old_graph
@@ -0,0 +1,29 @@
+###############################################################################
+# #
+# Lout setup file for graph drawing (old version) #
+# #
+# Jeffrey H. Kingston #
+# 5 February 1999 #
+# #
+# This file has been placed in the public domain by its author. #
+# #
+###############################################################################
+
+
+###############################################################################
+# #
+# The @SysInclude { old_graphf } line #
+# #
+# This line causes Lout to read the definitions for graphs, and should #
+# not be touched. #
+# #
+###############################################################################
+
+@SysInclude { old_graphf }
+
+
+###############################################################################
+# #
+# This package does not offer default options that can be changed. #
+# #
+###############################################################################
diff --git a/include/include/old_graphf b/include/include/old_graphf
new file mode 100644
index 0000000..4106555
--- /dev/null
+++ b/include/include/old_graphf
@@ -0,0 +1,954 @@
+
+###############################################################################
+# #
+# Lout @Graph package for drawing graphs (Version 1.0) #
+# #
+# Version 1.0 by Jeffrey H. Kingston, December 1993. #
+# #
+# This package draws graphs, the statistical kind not the graph-theoretical #
+# kind. See the User's Guide (Advanced Graphics) for user info. #
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either Version 3, or (at your option) #
+# any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA #
+# #
+# As a special exception, when this file is read by Lout when processing #
+# a Lout source document, you may use the result without restriction. #
+# #
+###############################################################################
+
+@SysInclude { graphf.etc } # @GraphMath
+@SysInclude { lengths } # @LoutLengths
+@SysInclude { coltex } # @ColourCommand and @TextureCommand
+@SysPrependGraphic { graphf.lpg }
+
+
+def @GraphObj
+ left p
+ named margin { 0c }
+ named adj { 0 0 }
+ right x
+{
+ @BackEnd @Case {
+ PostScript @Yield {
+ @Null & # kills previous white space
+ @HContract @VContract {
+ //0io ||0io @HContract @VContract
+ { p "trpoint translate" adj "translate gsave" // "grestore" }
+ @Graphic { //margin ||margin x ||margin //margin }
+ ||0io //0io
+ }
+ }
+# VT: PDF does nothing
+ PDF @Yield {
+ @Null & # kills previous white space
+ @HContract @VContract {
+ //0io ||0io @HContract @VContract
+ { "% @GraphObj UNIMPLEMENTED" }
+ @Graphic { //margin ||margin x ||margin //margin }
+ ||0io //0io
+ }
+ }
+ }
+}
+
+def @GraphCross
+ import @LoutLengths named symbolsize { 0.15f }
+ import @PSLengths named symbollinewidth { 0.5p }
+{
+ @BackEnd @Case {
+
+ PostScript @Yield {
+ @HContract @VContract
+ {
+ # "newpath 0 0 moveto xsize ysize lineto 0 ysize moveto"
+ # "xsize 0 lineto [] 0 setdash stroke"
+ "lgraphdict begin xmark ymark xmark" symbollinewidth "docross"
+ // "end"
+ }
+ @Graphic
+ {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ PDF @Yield {
+ @HContract @VContract
+ { "n [] 0 d 0 0 m __xsize __ysize l 0 __ysize m __xsize 0 l S"}
+ # uses S because PostScript version does NOT use closepath
+ @Graphic
+ {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ }
+}
+
+def @GraphPlus
+ import @LoutLengths named symbolsize { 0.15f }
+ import @PSLengths named symbollinewidth { 0.5p }
+{
+ @BackEnd @Case {
+
+ PostScript @Yield {
+ @HContract @VContract
+ {
+ # "newpath xmark 0 moveto xmark ysize lineto 0 ymark moveto"
+ # "xsize ymark lineto [] 0 setdash stroke"
+ "lgraphdict begin xmark ymark xmark" symbollinewidth "doplus"
+ // "end"
+ }
+ @Graphic
+ {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ PDF @Yield {
+ @HContract @VContract
+ { "n [] 0 d __xmark 0 m __xmark __ysize l 0 __ymark m __xsize __ymark l S"}
+ # uses S because PostScript version does NOT use closepath
+ @Graphic
+ {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ }
+}
+
+def @GraphSquare
+ import @LoutLengths named symbolsize { 0.15f }
+ import @PSLengths named symbollinewidth { 0.5p }
+{
+ @BackEnd @Case {
+
+ PostScript @Yield {
+ @HContract @VContract
+ {
+ # "newpath 0 0 moveto xsize 0 lineto xsize ysize lineto"
+ # "0 ysize lineto closepath [] 0 setdash stroke"
+ "lgraphdict begin xmark ymark xmark" symbollinewidth "dosquare"
+ // "end"
+ }
+ @Graphic
+ {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ PDF @Yield {
+ @HContract @VContract
+ {"n [] 0 d 0 0 __xsize __ysize re s"}
+ @Graphic
+ {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ }
+}
+
+def @GraphFilledSquare
+ import @LoutLengths named symbolsize { 0.15f }
+ import @PSLengths named symbollinewidth { 0.5p }
+{
+ @BackEnd @Case {
+
+ PostScript @Yield {
+ @HContract @VContract
+ {
+ # "newpath 0 0 moveto xsize 0 lineto xsize ysize lineto"
+ # "0 ysize lineto closepath gsave [] 0 setdash stroke grestore fill"
+ "lgraphdict begin xmark ymark xmark" symbollinewidth "dofilledsquare"
+ // "end"
+ }
+ @Graphic
+ {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ PDF @Yield {
+ @HContract @VContract
+ {"n [] 0 d 0 0 __xsize __ysize re b"}
+ @Graphic
+ {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ }
+}
+
+def @GraphDiamond
+ import @LoutLengths named symbolsize { 0.15f }
+ import @PSLengths named symbollinewidth { 0.5p }
+{
+ @BackEnd @Case {
+
+ PostScript @Yield {
+ @HContract @VContract
+ {
+ # "newpath 0 ymark moveto xmark 0 lineto xsize ymark lineto"
+ # "xmark ysize lineto closepath [] 0 setdash stroke"
+ "lgraphdict begin xmark ymark xmark" symbollinewidth "dodiamond"
+ // "end"
+ }
+ @Graphic
+ {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ PDF @Yield {
+ @HContract @VContract
+ {"n [] 0 d 0 __ymark m __xmark 0 l __xsize __ymark l __xmark __ysize l s"}
+ @Graphic
+ {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ }
+}
+
+def @GraphFilledDiamond
+ import @LoutLengths named symbolsize { 0.15f }
+ import @PSLengths named symbollinewidth { 0.5p }
+{
+ @BackEnd @Case {
+
+ PostScript @Yield {
+ @HContract @VContract
+ {
+ # "newpath 0 ymark moveto xmark 0 lineto xsize ymark lineto"
+ # "xmark ysize lineto closepath gsave [] 0 setdash stroke grestore fill"
+ "lgraphdict begin xmark ymark xmark" symbollinewidth "dofilleddiamond"
+ // "end"
+ }
+ @Graphic
+ {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ PDF @Yield {
+ @HContract @VContract
+ {"n [] 0 d 0 __ymark m __xmark 0 l __xsize __ymark l __xmark __ysize l b"
+ }
+ @Graphic
+ {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ }
+}
+
+def @GraphCircle
+ import @LoutLengths named symbolsize { 0.15f }
+ import @PSLengths named symbollinewidth { 0.5p }
+{
+ @BackEnd @Case {
+
+ PostScript @Yield {
+ @HContract @VContract
+ {
+ # "newpath xmark ymark xmark 0 360 arc"
+ # "[] 0 setdash stroke"
+ "lgraphdict begin xmark ymark xmark" symbollinewidth "docircle"
+ // "end"
+ }
+ @Graphic
+ {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ PDF @Yield {
+ @HContract @VContract
+#
+# draw a circle whose centre is at (xmark, ymark) and whose radius is xmark units;
+#
+# for curveto to work, we need to calculate the control points of the Bezier curve
+# as well as move the pen to the correct initial point. The circle is drawn as two
+# arcs of 180 degrees
+#
+# pt0 = (xmark + xmark, ymark)
+# pt1 = (xmark + xmark, ymark + 4/3 * xmark)
+# pt2 = (0, ymark + 4/3 * xmark)
+# pt3 = (0, ymark)
+#
+# pt0 = (0, ymark)
+# pt1 = (0, ymark - 4/3 * xmark)
+# pt2 = (xmark + xmark, ymark - 4/3 * xmark)
+# pt3 = (xmark + xmark, ymark)
+#
+ {"n [] 0 d"
+ "__mul(2, __xmark) __ymark m"
+ "__mul(2, __xmark) __add(__ymark, __div(__mul(4, __xmark), 3))" # pt1
+ "0 __add(__ymark, __div(__mul(4, __xmark), 3))" # pt2
+ "0 __ymark c" # pt3
+
+ "0 __sub(__ymark, __div(__mul(4, __xmark), 3))" # pt1
+ "__mul(2, __xmark) __sub(__ymark, __div(__mul(4, __xmark), 3))" # pt2
+ "__mul(2, __xmark) __ymark c S" # pt3
+ }
+ @Graphic
+ {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ }
+}
+
+def @GraphFilledCircle
+ import @LoutLengths named symbolsize { 0.15f }
+ import @PSLengths named symbollinewidth { 0.5p }
+{
+ @BackEnd @Case {
+ PostScript @Yield {
+ @HContract @VContract
+ {
+ # "newpath xmark ymark xmark 0 360 arc"
+ # "gsave [] 0 setdash stroke grestore fill"
+ "lgraphdict begin xmark ymark xmark" symbollinewidth "dofilledcircle"
+ // "end"
+ }
+ @Graphic
+ {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ PDF @Yield {
+ @HContract @VContract
+#
+# draw a filled circle whose centre is at (xmark, ymark) and whose radius is xmark units;
+#
+# for curveto to work, we need to calculate the control points of the Bezier curve
+# as well as move the pen to the correct initial point. The circle is drawn as two
+# arcs of 180 degrees
+#
+# pt0 = (xmark + xmark, ymark)
+# pt1 = (xmark + xmark, ymark + 4/3 * xmark)
+# pt2 = (0, ymark + 4/3 * xmark)
+# pt3 = (0, ymark)
+#
+# pt0 = (0, ymark)
+# pt1 = (0, ymark - 4/3 * xmark)
+# pt2 = (xmark + xmark, ymark - 4/3 * xmark)
+# pt3 = (xmark + xmark, ymark)
+#
+# Note: this is not a strict translation because there is a setdash bracketed by
+# gsave/grestore in the above PostScript but there is no closepath before it;
+# but in PDF, it is not possible to execute a setdash within a path definition.
+#
+ {"n [] 0 d"
+ "__mul(2, __xmark) __ymark m"
+ "__mul(2, __xmark) __add(__ymark, __div(__mul(4, __xmark), 3))" # pt1
+ "0 __add(__ymark, __div(__mul(4, __xmark), 3))" # pt2
+ "0 __ymark c" # pt3
+
+ "0 __sub(__ymark, __div(__mul(4, __xmark), 3))" # pt1
+ "__mul(2, __xmark) __sub(__ymark, __div(__mul(4, __xmark), 3))" # pt2
+ "__mul(2, __xmark) __ymark c b" # pt3
+ }
+ @Graphic
+ {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ }
+}
+
+def @GraphTriangle
+ import @LoutLengths named symbolsize { 0.15f }
+ import @PSLengths named symbollinewidth { 0.5p }
+{
+ @BackEnd @Case {
+
+ PostScript @Yield {
+ @HContract @VContract
+ {
+ # "newpath 0 0 moveto xsize 0 lineto xmark ysize 1.25 mul lineto"
+ # "closepath [] 0 setdash stroke"
+ "lgraphdict begin xmark ymark xmark" symbollinewidth "dotriangle"
+ // "end"
+ }
+ @Graphic
+ {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ PDF @Yield {
+ @HContract @VContract
+ {"n [] 0 d 0 0 m __xsize 0 l __xmark __mul(__ysize, 1.25) l s"}
+ @Graphic
+ {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ }
+}
+
+def @GraphFilledTriangle
+ import @LoutLengths named symbolsize { 0.15f }
+ import @PSLengths named symbollinewidth { 0.5p }
+{
+ @BackEnd @Case {
+
+ PostScript @Yield {
+ @HContract @VContract
+ {
+ # "newpath 0 0 moveto xsize 0 lineto xmark ysize 1.25 mul lineto"
+ # "closepath gsave [] 0 setdash stroke grestore fill"
+ "lgraphdict begin xmark ymark xmark" symbollinewidth "dofilledtriangle"
+ // "end"
+ }
+ @Graphic
+ {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ PDF @Yield {
+ @HContract @VContract
+ {"n [] 0 d 0 0 m __xsize 0 l __xmark __mul(__ysize, 1.25) l h b"}
+ @Graphic
+ {symbolsize @High symbolsize @Wide ^| symbolsize @Wide ^/ symbolsize @High}
+ }
+
+ }
+}
+
+def @GraphNoLine
+ import @PSLengths named dashlength { 0.2f }
+ import @PSLengths named linewidth { "currentlinewidth" }
+ import @LoutLengths named length { 1.0f }
+{
+ length @Wide {}
+}
+
+def @GraphSolid
+ import @PSLengths named dashlength { 0.2f }
+ import @PSLengths named linewidth { "currentlinewidth" }
+ import @LoutLengths named length { 1.0f }
+{
+ @BackEnd @Case {
+ PostScript @Yield {
+ @HContract @VContract
+ { "xsize 0 lgraphdict begin newpath 0 0 moveto lineto"
+ "/linewidth" linewidth "def xsize" dashlength "solid end"
+ } @Graphic { length @Wide }
+ }
+# VT: PDF does nothing
+ PDF @Yield {
+ @HContract @VContract
+ { "% @GraphSolid UNIMPLEMENTED" } @Graphic { length @Wide }
+ }
+ }
+}
+
+def @GraphDashed
+ import @PSLengths named dashlength { 0.2f }
+ import @PSLengths named linewidth { "currentlinewidth" }
+ import @LoutLengths named length { 1.0f }
+{
+ @BackEnd @Case {
+ PostScript @Yield {
+ @HContract @VContract
+ { "xsize 0 lgraphdict begin newpath 0 0 moveto lineto"
+ "/linewidth" linewidth "def xsize" dashlength "dashed end"
+ } @Graphic { length @Wide }
+ }
+# VT: PDF does nothing
+ PDF @Yield {
+ @HContract @VContract
+ { "% @GraphDashed UNIMPLEMENTED" } @Graphic { length @Wide }
+ }
+ }
+}
+
+def @GraphDotted
+ import @PSLengths named dashlength { 0.2f }
+ import @PSLengths named linewidth { "currentlinewidth" }
+ import @LoutLengths named length { 1.0f }
+{
+ @BackEnd @Case {
+ PostScript @Yield {
+ @HContract @VContract
+ { "xsize 0 lgraphdict begin newpath 0 0 moveto lineto"
+ "/linewidth" linewidth "def xsize" dashlength "dotted end"
+ } @Graphic { length @Wide }
+ }
+# VT: PDF does nothing
+ PDF @Yield {
+ @HContract @VContract
+ { "% @GraphDotted UNIMPLEMENTED" } @Graphic { length @Wide }
+ }
+ }
+}
+
+def @GraphDotDashed
+ import @PSLengths named dashlength { 0.2f }
+ import @PSLengths named linewidth { "currentlinewidth" }
+ import @LoutLengths named length { 1.0f }
+{
+ @BackEnd @Case {
+ PostScript @Yield {
+ @HContract @VContract
+ { "xsize 0 lgraphdict begin newpath 0 0 moveto lineto"
+ "/linewidth" linewidth "def xsize" dashlength "dotdashed end"
+ } @Graphic { length @Wide }
+ }
+# VT: PDF does nothing
+ PDF @Yield {
+ @HContract @VContract
+ { "% @GraphDotDashed UNIMPLEMENTED" } @Graphic { length @Wide }
+ }
+ }
+}
+
+def @GraphDotDotDashed
+ import @PSLengths named dashlength { 0.2f }
+ import @PSLengths named linewidth { "currentlinewidth" }
+ import @LoutLengths named length { 1.0f }
+{
+ @BackEnd @Case {
+ PostScript @Yield {
+ @HContract @VContract
+ { "xsize 0 lgraphdict begin newpath 0 0 moveto lineto"
+ "/linewidth" linewidth "def xsize" dashlength "dotdotdashed end"
+ } @Graphic { length @Wide }
+ }
+# VT: PDF does nothing
+ PDF @Yield {
+ @HContract @VContract
+ { "% @GraphDotDotDashed UNIMPLEMENTED" } @Graphic { length @Wide }
+ }
+ }
+}
+
+def @GraphDotDotDotDashed
+ import @PSLengths named dashlength { 0.2f }
+ import @PSLengths named linewidth { "currentlinewidth" }
+ import @LoutLengths named length { 1.0f }
+{
+ @BackEnd @Case {
+ PostScript @Yield {
+ @HContract @VContract
+ { "xsize 0 lgraphdict begin newpath 0 0 moveto lineto"
+ "/linewidth" linewidth "def xsize" dashlength "dotdotdotdashed end"
+ } @Graphic { length @Wide }
+ }
+# VT: PDF does nothing
+ PDF @Yield {
+ @HContract @VContract
+ { "% @GraphDotDotDotDashed UNIMPLEMENTED" } @Graphic { length @Wide }
+ }
+ }
+}
+
+
+export @Data
+def @Graph
+ named save { no }
+ named style { frame }
+ import @LoutLengths named width { 6.0c }
+ import @LoutLengths named height { 4.0c }
+ import @PSLengths named xextra { "none" }
+ import @PSLengths named yextra { "none" }
+ named xdecreasing { no }
+ named ydecreasing { no }
+ named leftcaption { }
+ named rightcaption { }
+ named abovecaption { }
+ named belowcaption { }
+ import @LoutLengths named leftgap { 1.5c }
+ import @LoutLengths named rightgap { 0.5c }
+ import @LoutLengths named abovegap { 0.5c }
+ import @LoutLengths named belowgap { 0.5c }
+ named hidecaptions { yes }
+ named objects
+ named @NW
+ import @GraphMath named at { 0 0 }
+ import @LoutLengths named margin { 0.3f }
+ right x
+ { at @GraphObj adj { "xsize neg ysize" } margin { margin } x }
+ named @SW
+ import @GraphMath named at { 0 0 }
+ import @LoutLengths named margin { 0.3f }
+ right x
+ { at @GraphObj adj { "xsize neg 0" } margin { margin } x }
+ named @SE
+ import @GraphMath named at { 0 0 }
+ import @LoutLengths named margin { 0.3f }
+ right x
+ { at @GraphObj adj { "0 0" } margin { margin } x }
+ named @NE
+ import @GraphMath named at { 0 0 }
+ import @LoutLengths named margin { 0.3f }
+ right x
+ { at @GraphObj adj { "0 ysize" } margin { margin } x }
+ named @W
+ import @GraphMath named at { 0 0 }
+ import @LoutLengths named margin { 0.3f }
+ right x
+ { at @GraphObj adj { "xsize neg ysize 2 div" } margin { margin } x }
+ named @S
+ import @GraphMath named at { 0 0 }
+ import @LoutLengths named margin { 0.3f }
+ right x
+ { at @GraphObj adj { "xsize neg 2 div 0" } margin { margin } x }
+ named @E
+ import @GraphMath named at { 0 0 }
+ import @LoutLengths named margin { 0.3f }
+ right x
+ { at @GraphObj adj { "0 ysize 2 div" } margin { margin } x }
+ named @N
+ import @GraphMath named at { 0 0 }
+ import @LoutLengths named margin { 0.3f }
+ right x
+ { at @GraphObj adj { "xsize neg 2 div ysize" } margin { margin } x }
+ named @CTR
+ import @GraphMath named at { 0 0 }
+ import @LoutLengths named margin { 0.3f }
+ right x
+ { at @GraphObj adj { "xsize neg 2 div ysize 2 div" } margin {margin} x }
+ {}
+ named xorigin named none { "false" } { none }
+ named yorigin named none { "false" } { none }
+ named xlog named none { "0" } { none }
+ named ylog named none { "0" } { none }
+ named points named none { "none" } { none }
+ named pairs named none { "none" } { none }
+ named colour color named none { "none" } { none }
+ named paint named none { "none" } { none }
+ import @TextureImport named texture { solid }
+ named xmin named none { "false" } { none }
+ named xmax named none { "false" } { none }
+ named ymin named none { "false" } { none }
+ named ymax named none { "false" } { none }
+ named xticksep named none { "0" } { none }
+ named yticksep named none { "0" } { none }
+ named rticksep named none { "0" } { none }
+ import @GraphMath named xticks
+ named none { "false" }
+ named auto { "false" }
+ named "@" { " lgen" }
+ named "^" { "^" }
+ { false }
+ import @GraphMath named yticks
+ named none { "false" }
+ named auto { "false" }
+ named "@" { " lgen" }
+ named "^" { "^" }
+ { false }
+ import @GraphMath named rticks
+ named none { "false" }
+ named auto { "false" }
+ named "@" { " lgen" }
+ named "^" { "^" }
+ { }
+ import @PSLengths named xticklength { 0.5f }
+ import @PSLengths named yticklength { 0.5f }
+ import @PSLengths named rticklength { 0.5f }
+ named dataformat { xandy }
+ import @PSLengths named dashlength { 0.2f }
+ import @PSLengths named linewidth { "currentlinewidth" }
+ import @PSLengths named symbolsize { 0.15f }
+ import @PSLengths named symbollinewidth { "currentlinewidth" }
+ body @Body
+@Begin
+
+ def @Above
+ {
+ abovecaption @Case {
+ "" @Yield {}
+ else @Yield @OneCol { ||0.5rt clines @Break abovecaption || //abovegap }
+ }
+ }
+
+ def @Below
+ {
+ belowcaption @Case {
+ "" @Yield {}
+ else @Yield @OneCol { //belowgap ||0.5rt clines @Break belowcaption || }
+ }
+ }
+
+ def @Left
+ {
+ leftcaption @Case {
+ "" @Yield {}
+ else @Yield @OneCol @OneRow {
+ { //0.5rt @OneRow clines @Break leftcaption // } ^||leftgap }
+ }
+ }
+
+ def @Right
+ {
+ rightcaption @Case {
+ "" @Yield {}
+ else @Yield @OneCol @OneRow {
+ ||rightgap { //0.5rt @OneRow lines @Break rightcaption // } }
+ }
+ }
+
+ def @ZeroWidth
+ right x
+ {
+ hidecaptions @Case {
+ { No no } @Yield x
+ { Yes yes } @Yield @OneCol { ||0io x ||0io }
+ }
+ }
+
+ def @AddCaptions right x
+ {
+ def belowextra
+ {
+ xticks @Case {
+ "" @Yield { 0i }
+ else @Yield { 1.7f }
+ }
+ }
+
+ @HContract @VContract
+ {
+ | @Above |
+ / @ZeroWidth @Left | &0.5rt x | @ZeroWidth @Right
+ /belowextra | @Below |
+ }
+ }
+
+ export pi e sqrt abs ceiling floor truncate round cos sin atan exp log rand
+ "*" "/" idiv mod "-" "-0" "-1" "-2" "-3" "-4" "-5" "-6" "-7" "-8"
+ "-9" "-." "+" "=" "!=" "<" "<=" ">" ">=" not and xor or
+ if xloop yloop zloop
+
+ def @Data
+ named points named none { "none" } { points }
+ named pairs named none { "none" } { pairs }
+ named colour color named none { "none" } { colour }
+ named paint named none { "none" } { paint }
+ import @TextureImport named texture { texture }
+ import @PSLengths named dashlength { dashlength }
+ import @PSLengths named linewidth { linewidth }
+ import @PSLengths named symbolsize { symbolsize }
+ import @PSLengths named symbollinewidth { symbollinewidth }
+ named dataformat { dataformat }
+ body data
+ {
+ def pi { "3.14159" }
+ def e { "2.71828" }
+ def sqrt precedence 40 right y { y "sqrt" }
+ def abs precedence 40 right y { y "abs" }
+ def ceiling precedence 40 right y { y "ceiling" }
+ def floor precedence 40 right y { y "floor" }
+ def truncate precedence 40 right y { y "truncate" }
+ def round precedence 40 right y { y "round" }
+ def cos precedence 40 right y { y "cos" }
+ def sin precedence 40 right y { y "sin" }
+ def atan precedence 39 left x right y { x y "atan" }
+ def exp precedence 38 left x right y { x y "exp" }
+ def log precedence 37 left x right y { x y "dolog" }
+ def rand precedence 36 left x right y { x y "dorand" }
+ def "*" precedence 35 left x right y { x y "mul" }
+ def "/" precedence 34 left x right y { x y "div" }
+ def idiv precedence 34 left x right y { x y "idiv" }
+ def mod precedence 34 left x right y { x y "mod" }
+ def "-" precedence 33 left x right y
+ { x @Case { "" @Yield {y "neg"} else @Yield { x y "sub" } } }
+ def "-0" { "-0" }
+ def "-1" { "-1" }
+ def "-2" { "-2" }
+ def "-3" { "-3" }
+ def "-4" { "-4" }
+ def "-5" { "-5" }
+ def "-6" { "-6" }
+ def "-7" { "-7" }
+ def "-8" { "-8" }
+ def "-9" { "-9" }
+ def "-." { "-." }
+ def "+" precedence 32 left x right y
+ { x @Case { "" @Yield { y } else @Yield { x y "add" } } }
+ def "=" precedence 30 left x right y { x y "eq" }
+ def "!=" precedence 30 left x right y { x y "ne" }
+ def "<" precedence 30 left x right y { x y "lt" }
+ def "<=" precedence 30 left x right y { x y "le" }
+ def ">" precedence 30 left x right y { x y "gt" }
+ def ">=" precedence 30 left x right y { x y "ge" }
+ def not precedence 25 right y { y "not" }
+ def and precedence 24 left x right y { x y "and" }
+ def xor precedence 23 left x right y { x y "xor" }
+ def or precedence 22 left x right y { x y "or" }
+ def if
+ named cond { true }
+ named then {}
+ named else {}
+ { cond "{" then "} {" else "} ifelse" }
+ def xloop
+ named from { 0 }
+ named to { 0 }
+ named by { 1 }
+ named do named x { "xval" } {}
+ { from by to "{ /xval exch def" do "} for" }
+ def yloop
+ named from { 0 }
+ named to { 0 }
+ named by { 1 }
+ named do named y { "yval" } {}
+ { from by to "{ /yval exch def" do "} for" }
+ def zloop
+ named from { 0 }
+ named to { 0 }
+ named by { 1 }
+ named do named z { "zval" } {}
+ { from by to "{ /zval exch def" do "} for" }
+
+ def @IfPt
+ left no
+ right yes
+ {
+ points @Case {
+ none @Yield no
+ else @Yield yes
+ }
+ }
+
+ def @Points
+ {
+ points @Case {
+ none @Yield ""
+ plus @Yield "plus"
+ cross @Yield "cross"
+ square @Yield "square"
+ filledsquare @Yield "filledsquare"
+ diamond @Yield "diamond"
+ filleddiamond @Yield "filleddiamond"
+ circle @Yield "circle"
+ filledcircle @Yield "filledcircle"
+ triangle @Yield "triangle"
+ filledtriangle @Yield "filledtriangle"
+ }
+ }
+
+ def @Pairs
+ {
+ pairs @Case {
+ none @Yield {}
+ solid @Yield { "linesetup solid" @IfPt "ilinesetup solid" }
+ dashed @Yield { "linesetup cdashed" @IfPt "ilinesetup dashed" }
+ dotted @Yield { "linesetup dotted" @IfPt "ilinesetup dotted" }
+ dotdashed @Yield { "linesetup dotcdashed" @IfPt
+ "ilinesetup dotdashed" }
+ dotdotdashed @Yield { "linesetup dotdotcdashed" @IfPt
+ "ilinesetup dotdotdashed" }
+ dotdotdotdashed @Yield { "linesetup dotdotdotcdashed" @IfPt
+ "ilinesetup dotdotdotdashed" }
+ surfacexhisto @Yield { "surfacexhisto" }
+ surfaceyhisto @Yield { "surfaceyhisto" }
+ xhisto @Yield { "xhisto" }
+ yhisto @Yield { "yhisto" }
+ filledxhisto @Yield { "filledxhisto" }
+ filledyhisto @Yield { "filledyhisto" }
+ }
+ }
+
+ def @DataFormat
+ {
+ dataformat @Case {
+ xandy @Yield xandy
+ swapxandy @Yield swapxandy
+ yonly @Yield yonly
+ xonly @Yield xonly
+ }
+ }
+
+ def @Paint
+ {
+ paint @Case {
+ { none no No } @Yield "false"
+ { yes Yes } @Yield "true"
+ }
+ }
+
+ "[ [" data "]" dataformat
+ "{" @Points "}"
+ "{" @Pairs "}"
+ "{ /dashlength" dashlength "def"
+ " /linewidth" linewidth "def" @ColourCommand colour
+ " /symbolsize" symbolsize "def"
+ " /symbollinewidth" symbollinewidth "def }"
+ "{" @Paint "}"
+ "{" texture "}"
+ "]"
+ }
+
+ def @Style
+ {
+ style @Case {
+ frame @Yield { "framestyle" }
+ grid @Yield { "gridstyle" }
+ none @Yield { "nonestyle" }
+ axes @Yield { "axesstyle" }
+ }
+ }
+
+ def @XExtra
+ {
+ xextra @Case {
+ "none" @Yield {
+ style @Case {
+ frame @Yield { "0.5 cm" }
+ grid @Yield { "0" }
+ none @Yield { "0" }
+ axes @Yield { "0" }
+ }
+ }
+ else @Yield xextra
+ }
+ }
+
+ def @YExtra
+ {
+ yextra @Case {
+ "none" @Yield {
+ style @Case {
+ frame @Yield { "0.5 cm" }
+ grid @Yield { "0" }
+ none @Yield { "0" }
+ axes @Yield { "0" }
+ }
+ }
+ else @Yield yextra
+ }
+ }
+
+ def @XDecreasing
+ {
+ xdecreasing @Case {
+ { No no } @Yield "false"
+ { Yes yes } @Yield "true"
+ }
+ }
+
+ def @YDecreasing
+ {
+ ydecreasing @Case {
+ { No no } @Yield "false"
+ { Yes yes } @Yield "true"
+ }
+ }
+
+ @AddCaptions width @Wide height @High
+ @BackEnd @Case {
+ PostScript @Yield {
+ {
+ "grestore"
+ save @Case { { Yes yes } @Yield "save" else @Yield {} }
+ "gsave xsize ysize lgraphdict begin /ysize exch def /xsize exch def"
+ "/alldata [" @Body "] def"
+ xticksep "[" xticks "] 0 alldata" xmin xmax xlog
+ @XExtra @XDecreasing xorigin xticklength "xset"
+ yticksep "[" yticks "] 1 alldata" ymin ymax ylog
+ @YExtra @YDecreasing yorigin yticklength "yset"
+
+ rticks @Case {
+
+ "" @Yield "norset"
+
+ else @Yield {
+ rticksep "[" rticks "] 1 alldata" ymin ymax ylog
+ @YExtra @YDecreasing yorigin rticklength "rset"
+ }
+ }
+
+ "rundata" @Style // "end"
+ save @Case { { Yes yes } @Yield "restore" else @Yield {} }
+ } @Graphic { //1rt objects }
+ }
+ PDF @Yield { {"% @Graph UNIMPLEMENTED"} @Graphic { //1rt objects } }
+ }
+
+@End @Graph
diff --git a/include/include/pas b/include/include/pas
new file mode 100644
index 0000000..0154ed5
--- /dev/null
+++ b/include/include/pas
@@ -0,0 +1,29 @@
+###############################################################################
+# #
+# Lout setup file for Pascal program printing #
+# #
+# Jeffrey H. Kingston #
+# 5 February 1999 #
+# #
+# This file has been placed in the public domain by its author. #
+# #
+###############################################################################
+
+
+###############################################################################
+# #
+# The @SysInclude { pasf } line #
+# #
+# This line causes Lout to read the definitions for Pascal, and should #
+# not be touched. #
+# #
+###############################################################################
+
+@SysInclude { pasf }
+
+
+###############################################################################
+# #
+# This package does not offer default options that can be changed. #
+# #
+###############################################################################
diff --git a/include/include/pasf b/include/include/pasf
new file mode 100644
index 0000000..34ebd29
--- /dev/null
+++ b/include/include/pasf
@@ -0,0 +1,127 @@
+
+###############################################################################
+# #
+# Lout @Pas package for formatting Pascal programs (Version 2.0) #
+# #
+# Version 1.0 by Jeffrey H. Kingston, June 1991. #
+# Version 2.0 by Jeffrey H. Kingston, 22 December 1992. #
+# #
+# See "Eq - a Lout package for typesetting mathematics" for user #
+# information. #
+# #
+# Reference: Jensen, K. and Wirth, N. Pascal User Manual and Report. #
+# Second Edition, Springer-Verlag, 1975. #
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either Version 3, or (at your option) #
+# any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA #
+# #
+# As a special exception, when this file is read by Lout when processing #
+# a Lout source document, you may use the result without restriction. #
+# #
+###############################################################################
+
+export "0" "1" "2" "3" "4" "5" "6" "7" "8" "9"
+ "." "," ":" ";" "'" "`" "+" "-" "*" "/" "(" ")"
+ "[" "]" "^" ".." "=" "<" ">" "<>" "<=" ">=" ":="
+
+ and array begin case const div do downto else end
+ file for forward function goto if in label mod nil not
+ of or otherwise packed procedure program record repeat
+ set then to type until var while with @Com
+
+def @Pas
+ body @Body
+@Begin
+
+ def @R right x { Base @Font x }
+ def @B right x { Bold @Font x }
+ def @S right x { { Symbol Base } @Font x }
+
+ def "0" { @R "0" }
+ def "1" { @R "1" }
+ def "2" { @R "2" }
+ def "3" { @R "3" }
+ def "4" { @R "4" }
+ def "5" { @R "5" }
+ def "6" { @R "6" }
+ def "7" { @R "7" }
+ def "8" { @R "8" }
+ def "9" { @R "9" }
+ def "." { @R "." }
+ def "," { @R "," }
+ def ":" { @R ":" }
+ def ";" { @R ";" }
+ def "'" { @R "'" }
+ def "`" { @R "`" }
+ def "+" { @S "+" }
+ def "-" { @S "-" }
+ def "*" { @S @Char "asteriskmath" }
+ def "/" { @R @Char "fraction" }
+ def "(" { @R "(" }
+ def ")" { @R ")" }
+ def "[" { @R "[" }
+ def "]" { @R "]" }
+ def "^" { @S 0.8f @Font @Char "arrowup" }
+ def ".." { @R ".." &0.1f }
+ def "=" { @S @Char "equal" }
+ def "<" { @S @Char "less" }
+ def ">" { @S @Char "greater" }
+ def "<>" { @S @Char "notequal" }
+ def "<=" { @S @Char "lessequal" }
+ def ">=" { @S @Char "greaterequal" }
+ def ":=" { :{//0.03fo &0.1f =} }
+
+ def and { @B "and" }
+ def array { @B "array" }
+ def begin { @B "begin" }
+ def case { @B "case" }
+ def const { @B "const" }
+ def div { @B "div" }
+ def do { @B "do" }
+ def downto { @B "downto" }
+ def else { @B "else" }
+ def end { @B "end" }
+ def file { @B "file" }
+ def for { @B "for" }
+ def forward { @B "forward" }
+ def function { @B "function" }
+ def goto { @B "goto" }
+ def if { @B "if" }
+ def in { @B "in" }
+ def label { @B "label" }
+ def mod { @B "mod" }
+ def nil { @B "nil" }
+ def not { @B "not" }
+ def of { @B "of" }
+ def or { @B "or" }
+ def otherwise { @B "otherwise" }
+ def packed { @B "packed" }
+ def procedure { @B "procedure" }
+ def program { @B "program" }
+ def record { @B "record" }
+ def repeat { @B "repeat" }
+ def set { @B "set" }
+ def then { @B "then" }
+ def to { @B "to" }
+ def type { @B "type" }
+ def until { @B "until" }
+ def var { @B "var" }
+ def while { @B "while" }
+ def with { @B "with" }
+
+ def @Com right x { @R "{" x @R "}" }
+
+ Slope @Font lines @Break @Body
+
+@End @Pas
diff --git a/include/include/perl b/include/include/perl
new file mode 100644
index 0000000..7544e3f
--- /dev/null
+++ b/include/include/perl
@@ -0,0 +1,136 @@
+###############################################################################
+# #
+# Lout setup file for Perl program printing #
+# #
+# Version 3.0 #
+# Jeffrey H. Kingston #
+# 10 April 2000 #
+# #
+# This file has been placed in the public domain by its author. #
+# #
+###############################################################################
+
+
+###############################################################################
+# #
+# @SysInclude { pod } #
+# #
+# This line causes Lout to read the default setup file for the Pod #
+# documentation language that goes with Perl. If you want your own #
+# Pod setup file, it is probably best to delete this line and place #
+# #
+# @Include { mypod } #
+# @Include { myperl } #
+# #
+# at the start of your document in the usual way. #
+# #
+###############################################################################
+
+@SysInclude { pod }
+
+
+###############################################################################
+# #
+# @SysInclude line #
+# #
+# This line causes Lout to read the definitions for this programming #
+# language, and should not be touched. #
+# #
+###############################################################################
+
+@SysInclude { perlf }
+
+
+###############################################################################
+# #
+# @Use clause #
+# #
+# To change the default value of any option, delete the # at the start of #
+# its line and change the value between braces. #
+# #
+###############################################################################
+
+@Use { @PerlSetup
+ # pipe { } # pipe source through this
+ # numbered { No } # No, Yes, or a line number
+ # numberedblanks { Yes } # No or Yes
+ # style { fixed } # fixed, varying, or symbol
+
+ # the following options apply when style is "fixed"
+
+ # fixedfont { Courier } # font family
+ # fixedsize { -1.0p } # font size
+ # fixedline { 1.0vx } # line-space
+ # fixedblanklinescale { 1.0 } # blank-line scale
+ # fixedspace { lout } # spacing mode
+ # fixedtabin { 8 } # tab interval
+ # fixedtabout { 8s } # tab width
+
+ # fixedidentifiers { Base } # identifier face
+ # fixedkeywords { Base } # keyword face
+ # fixedoperators { Base } # operator face
+ # fixednumbers { Base } # number face
+ # fixedstrings { Base } # string face
+ # fixedcomments { Base } # comment face
+ # fixedlinenumbers { Base } # line numbers face
+
+ # fixedidentifiersformat { @Body } # identifiers format
+ # fixedkeywordsformat { @Body } # keywords format
+ # fixedoperatorsformat { @Body } # operators format
+ # fixednumbersformat { @Body } # numbers format
+ # fixedstringsformat { @Body } # strings format
+ # fixedcommentsformat { @Body } # comments format
+ # fixedlinenumbersformat { @Body } # line numbers format
+
+ # the following options apply when style is "varying"
+
+ # varyingfont { } # font family
+ # varyingsize { 1.0f } # font size
+ # varyingline { 1.0vx } # line-space
+ # varyingblanklinescale { 1.0 } # blank-line scale
+ # varyingtabin { 8 } # tab interval
+ # varyingspace { lout } # spacing mode
+ # varyingtabout { 3f } # tab width
+
+ # varyingidentifiers { Slope } # identifier face
+ # varyingkeywords { Bold } # keyword face
+ # varyingoperators { Base } # operator face
+ # varyingnumbers { Base } # number face
+ # varyingstrings { Slope } # string face
+ # varyingcomments { Base } # comment face
+ # varyinglinenumbers { Base } # line numbers face
+
+ # varyingidentifiersformat { @Body } # identifiers format
+ # varyingkeywordsformat { @Body } # keywords format
+ # varyingoperatorsformat { @Body } # operators format
+ # varyingnumbersformat { @Body } # numbers format
+ # varyingstringsformat { @Body } # strings format
+ # varyingcommentsformat { @Body } # comments format
+ # varyinglinenumbersformat { @Body } # line numbers format
+
+ # the following options apply when style is "symbol"
+
+ # symbolfont { } # font family
+ # symbolsize { 1.0f } # font size
+ # symbolline { 1.0vx } # line-space
+ # symbolblanklinescale { 1.0 } # blank-line scale
+ # symbolspace { lout } # spacing mode
+ # symboltabin { 8 } # tab interval
+ # symboltabout { 3f } # tab width
+
+ # symbolidentifiers { Slope } # identifier face
+ # symbolkeywords { Bold } # keyword face
+ # symboloperators { Base } # operator face
+ # symbolnumbers { Base } # number face
+ # symbolstrings { Slope } # string face
+ # symbolcomments { Base } # comment face
+ # symbollinenumbers { Base } # line numbers face
+
+ # symbolidentifiersformat { @Body } # identifiers format
+ # symbolkeywordsformat { @Body } # keywords format
+ # symboloperatorsformat { @Body } # operators format
+ # symbolnumbersformat { @Body } # numbers format
+ # symbolstringsformat { @Body } # strings format
+ # symbolcommentsformat { @Body } # comments format
+ # symbollinenumbersformat { @Body } # line numbers format
+}
diff --git a/include/include/perlf b/include/include/perlf
new file mode 100644
index 0000000..7e5d414
--- /dev/null
+++ b/include/include/perlf
@@ -0,0 +1,446 @@
+
+###############################################################################
+# #
+# Lout @PerlSetup package for formatting Perl programs #
+# #
+# Version 3.0 #
+# Jeffrey H. Kingston #
+# 10 April 2000 #
+# #
+# This package uses a filtered body parameter to convert program source #
+# code into Lout source. The filter program is prg2lout, which is #
+# distributed with Lout and should be compiled and installed wherever #
+# Lout itself is. #
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either Version 3, or (at your option) #
+# any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA #
+# #
+# As a special exception, when this file is read by Lout when processing #
+# a Lout source document, you may use the result without restriction. #
+# #
+###############################################################################
+
+export @Perl
+def @PerlSetup
+ named pipe { } # pipe through this
+ named numbered { No } # numbered lines?
+ named blanknumbered { Yes } # blanks numbered?
+ named style
+ named @OrIfPlain left x right y
+ { @BackEnd @Case { PlainText @Yield y else @Yield x } }
+ { fixed } # print style
+
+ # the following options apply when style is "fixed"
+ named fixedfont { Courier }# font family
+ named fixedsize { -1.0p } # font size
+ named fixedline { 1.0vx } # line-space
+ named fixedblanklinescale { 1.0 } # blank-line scale
+ named fixedspace { lout } # spacing mode
+ named fixedtabin { 8 } # tab interval
+ named fixedtabout { 8s } # tab width
+
+ named fixedidentifiers { Base } # identifier face
+ named fixedkeywords { Base } # keyword face
+ named fixedoperators { Base } # operator face
+ named fixednumbers { Base } # number face
+ named fixedstrings { Base } # string face
+ named fixedcomments { Base } # comment face
+ named fixedlinenumbers { Base } # line numbers face
+
+ named fixedidentifiersformat right @Body { @Body } # identifier format
+ named fixedkeywordsformat right @Body { @Body } # keyword format
+ named fixedoperatorsformat right @Body { @Body } # operators format
+ named fixednumbersformat right @Body { @Body } # number format
+ named fixedstringsformat right @Body { @Body } # string format
+ named fixedcommentsformat right @Body { @Body } # comment format
+ named fixedlinenumbersformat right @Body { @Body } # line nums format
+
+ # the following options apply when style is "varying"
+ named varyingfont { } # font family
+ named varyingsize { 1.0f } # font size
+ named varyingline { 1.0vx } # line-space
+ named varyingblanklinescale { 1.0 } # blank-line scale
+ named varyingspace { lout } # spacing mode
+ named varyingtabin { 8 } # tab interval
+ named varyingtabout { 3f } # tab width
+
+ named varyingidentifiers { Slope } # identifier face
+ named varyingkeywords { Bold } # keyword face
+ named varyingoperators { Base } # operator face
+ named varyingnumbers { Base } # number face
+ named varyingstrings { Slope } # string face
+ named varyingcomments { Base } # comment face
+ named varyinglinenumbers { Base } # line numbers face
+
+ named varyingidentifiersformat right @Body { @Body } # identifier format
+ named varyingkeywordsformat right @Body { @Body } # keyword format
+ named varyingoperatorsformat right @Body { @Body } # operators format
+ named varyingnumbersformat right @Body { @Body } # number format
+ named varyingstringsformat right @Body { @Body } # string format
+ named varyingcommentsformat right @Body { @Body } # comment format
+ named varyinglinenumbersformat right @Body { @Body } # line nums format
+
+ # the following options apply when style is "symbol"
+ named symbolfont { } # font family
+ named symbolsize { 1.0f } # font size
+ named symbolline { 1.0vx } # line-space
+ named symbolblanklinescale { 1.0 } # blank-line scale
+ named symbolspace { lout } # spacing mode
+ named symboltabin { 8 } # tab interval
+ named symboltabout { 3f } # tab width
+
+ named symbolidentifiers { Slope } # identifier face
+ named symbolkeywords { Bold } # keyword face
+ named symboloperators { Base } # operator face
+ named symbolnumbers { Base } # number face
+ named symbolstrings { Slope } # string face
+ named symbolcomments { Base } # comment face
+ named symbollinenumbers { Base } # line numbers face
+
+ named symbolidentifiersformat right @Body { @Body } # identifier format
+ named symbolkeywordsformat right @Body { @Body } # keyword format
+ named symboloperatorsformat right @Body { @Body } # operators format
+ named symbolnumbersformat right @Body { @Body } # number format
+ named symbolstringsformat right @Body { @Body } # string format
+ named symbolcommentsformat right @Body { @Body } # comment format
+ named symbollinenumbersformat right @Body { @Body } # line nums format
+
+@Begin
+
+ export
+
+ @PI @PK @PO @PN @PS @PC @PL @PA @PM @PD
+ @A "$>"
+
+ def @Perl
+ named style { style } # style
+ named numbered { numbered } # want numbered lines?
+ named blanknumbered { blanknumbered } # numbered blank lines?
+ named pipe { pipe } # pipe through this first
+ named font { dft } # font family
+ named size { dft } # font size
+ named line { dft } # line-space
+ named blanklinescale { dft } # blank-line scale
+ named space { dft } # spacing mode
+ named tabin { dft } # tab interval
+ named tabout { dft } # tab width
+ named identifiers { dft } # ident. font
+ named keywords { dft } # keyword font
+ named operators { dft } # operator font
+ named numbers { dft } # number font
+ named strings { dft } # string font
+ named comments { dft } # comment font
+ named linenumbers { dft } # line numbers font
+ body @Body # filtered, see below
+ @Begin
+
+ def @Test # returns x unless x is dft
+ left x
+ named iffixed {}
+ named ifvarying {}
+ named ifsymbol {}
+ {
+ x @Case {
+ dft @Yield {
+ style @Case {
+ fixed @Yield { iffixed }
+ varying @Yield { ifvarying }
+ symbol @Yield { ifsymbol }
+ }
+ }
+ else @Yield x
+ }
+ }
+
+
+ def @Else # returns x, or y if x is dft
+ left x
+ right y
+ {
+ x @Case {
+ dft @Yield y
+ else @Yield x
+ }
+ }
+
+
+ def @InitTab
+ {
+ tabin @Test
+ iffixed { fixedtabin }
+ ifvarying { varyingtabin }
+ ifsymbol { symboltabin }
+ }
+
+
+ def @InitTabWidth
+ {
+ tabout @Test
+ iffixed { fixedtabout }
+ ifvarying { varyingtabout }
+ ifsymbol { symboltabout }
+ }
+
+
+ def @Filter
+ {
+ def wantnumbered
+ {
+ numbered @Case {
+ { No no } @Yield ""
+ { Yes yes } @Yield "-L"
+ else @Yield { "-L"numbered }
+ }
+ }
+
+ def wantblanknumbered
+ {
+ blanknumbered @Case {
+ { No no } @Yield "-M"
+ { NoPrint noprint } @Yield "-N"
+ { Yes yes } @Yield ""
+ }
+ }
+
+ pipe @Case {
+ "" @Yield {
+ "prg2lout -r -lPerl" wantblanknumbered wantnumbered
+ -i{@FilterIn} -o{@FilterOut} -e{@FilterErr}
+ -t{@InitTab} -T{@InitTabWidth}
+ }
+ else @Yield {
+ "cat" @FilterIn "|" pipe "|"
+ "prg2lout -r -lPerl" wantblanknumbered wantnumbered
+ -o{@FilterOut} -e{@FilterErr}
+ -t{@InitTab} -T{@InitTabWidth}
+ }
+ }
+ }
+
+
+ def @InitFontFamily
+ {
+ font @Test
+ iffixed { fixedfont }
+ ifvarying { varyingfont }
+ ifsymbol { symbolfont }
+ }
+
+
+ def @InitSize
+ {
+ size @Test
+ iffixed { fixedsize }
+ ifvarying { varyingsize }
+ ifsymbol { symbolsize }
+ }
+
+
+ def @InitLine
+ {
+ line @Test
+ iffixed { fixedline }
+ ifvarying { varyingline }
+ ifsymbol { symbolline }
+ }
+
+
+ def @InitBLS
+ {
+ blanklinescale @Test
+ iffixed { fixedblanklinescale }
+ ifvarying { varyingblanklinescale }
+ ifsymbol { symbolblanklinescale }
+ }
+
+
+ def @InitSpace
+ {
+ space @Test
+ iffixed { fixedspace }
+ ifvarying { varyingspace }
+ ifsymbol { symbolspace }
+ }
+
+
+ def @PI # for formatting identifiers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedidentifiersformat {
+ { identifiers @Else fixedidentifiers } @Font x
+ }
+ varying @Yield varyingidentifiersformat {
+ { identifiers @Else varyingidentifiers } @Font x
+ }
+ symbol @Yield symbolidentifiersformat {
+ { identifiers @Else symbolidentifiers } @Font x
+ }
+ }
+ }
+
+
+ def @PK # for formatting keywords
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedkeywordsformat {
+ { keywords @Else fixedkeywords } @Font x
+ }
+ varying @Yield varyingkeywordsformat {
+ { keywords @Else varyingkeywords } @Font x
+ }
+ symbol @Yield symbolkeywordsformat {
+ { keywords @Else symbolkeywords } @Font x
+ }
+ }
+ }
+
+
+ def @PO # for formatting operators
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedoperatorsformat {
+ { operators @Else fixedoperators } @Font x
+ }
+ varying @Yield varyingoperatorsformat {
+ { operators @Else varyingoperators } @Font x
+ }
+ symbol @Yield symboloperatorsformat {
+ { operators @Else symboloperators } @Font x
+ }
+ }
+ }
+
+
+ def @PN # for formatting numbers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixednumbersformat {
+ { numbers @Else fixednumbers } @Font x
+ }
+ varying @Yield varyingnumbersformat {
+ { numbers @Else varyingnumbers } @Font x
+ }
+ symbol @Yield symbolnumbersformat {
+ { numbers @Else symbolnumbers } @Font x
+ }
+ }
+ }
+
+
+ def @PS # for formatting strings
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedstringsformat {
+ { strings @Else fixedstrings } @Font x
+ }
+ varying @Yield varyingstringsformat {
+ { strings @Else varyingstrings } @Font x
+ }
+ symbol @Yield symbolstringsformat {
+ { strings @Else symbolstrings } @Font x
+ }
+ }
+ }
+
+
+ def @PC # for formatting comments
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedcommentsformat {
+ { comments @Else fixedcomments } @Font x
+ }
+ varying @Yield varyingcommentsformat {
+ { comments @Else varyingcomments } @Font x
+ }
+ symbol @Yield symbolcommentsformat {
+ { comments @Else symbolcomments } @Font x
+ }
+ }
+ }
+
+
+ def @PL # for formatting line numbers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedlinenumbersformat {
+ { linenumbers @Else fixedlinenumbers } @Font x
+ }
+ varying @Yield varyinglinenumbersformat {
+ { linenumbers @Else varyinglinenumbers } @Font x
+ }
+ symbol @Yield symbollinenumbersformat {
+ { linenumbers @Else symbollinenumbers } @Font x
+ }
+ }
+ }
+
+
+ def @PA # for formatting asterisks
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "*"
+ else @Yield { "0.5w" @VShift "*" }
+ }
+ }
+
+
+ def @PM # for formatting minus signs
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "-"
+ else @Yield style @Case {
+ fixed @Yield "-"
+ else @Yield { { Symbol Base } @Font @Char "minus" }
+ }
+ }
+ }
+
+
+ def @PD # for formatting dots, if wanted larger
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "."
+ else @Yield { "1.4f" @Font "+0.04f" @VShift "." &"0.05f" }
+ }
+ }
+
+
+ def @A # get characters from the Adobe Symbol font
+ named sym {}
+ right x
+ {
+ style @Case {
+ symbol @Yield { { Symbol Base } @Font @Char sym }
+ else @Yield { x }
+ }
+ }
+
+
+ macro "$>" { {} & }
+
+
+ Programming @Language
+ { @InitFontFamily Base @InitSize } @Font @InitSpace @Space
+ { @InitLine lines "blanklinescale" @InitBLS } @Break @Body
+
+ @End @Perl
+
+@End @PerlSetup
diff --git a/include/include/picture b/include/include/picture
new file mode 100644
index 0000000..ab889ab
--- /dev/null
+++ b/include/include/picture
@@ -0,0 +1,352 @@
+###############################################################################
+# #
+# Lout setup file for stand-alone illustrations #
+# #
+# Jeffrey H. Kingston #
+# #
+# This file has been placed in the public domain by its author. #
+# #
+###############################################################################
+
+
+###############################################################################
+# #
+# @SysInclude commands for standard packages. #
+# #
+###############################################################################
+
+ @SysInclude { langdefs } # language definitions
+ @SysInclude { bsf } # BasicSetup package
+ @SysInclude { dsf } # DocumentSetup package
+ @SysInclude { picturef } # IllustrationSetup extension
+
+
+###############################################################################
+# #
+# @Include command for reading personal definitions from current directory. #
+# #
+###############################################################################
+
+ @Include { mydefs }
+
+
+###############################################################################
+# #
+# The @BasicSetup @Use clause - basics, lists, paragraphs, displays. #
+# #
+# To change the default value of any option, delete the # at the start of #
+# its line and change the value between braces. #
+# #
+###############################################################################
+
+@Use { @BasicSetup
+ # @InitialFont { Times Base 12p } # initial font
+ # @InitialBreak {{adjust 1.2fx hyphen} @OrIfPlain {ragged 1fx nohyphen}}
+ # @InitialOutdent { 2f @OrIfPlain 4s } # initial outdent
+ # @InitialSpace { lout } # initial space style
+ # @InitialLanguage { English } # initial language
+ # @InitialColour { black } # initial colour
+ # @InitialBackgroundColour { white } # initial background colour
+ # @OptimizePages { No } # optimize page breaks?
+ # @HeadingFont { Bold } # font for @Heading
+ # @FixedWidthFont { Courier Base -1p } # font for @F
+ # @ParaGap { 1.3vx @OrIfPlain 1f } # gap between paragraphs
+ # @ParaIndent { 2.00f @OrIfPlain 5s } # first-line indent for @PP
+ # @DisplayGap { 1.00v @OrIfPlain 1f } # gap above, below displays
+ # @DisplayIndent { 2.00f @OrIfPlain 5s } # @IndentedDisplay indent
+ # @DefaultIndent { 0.5rt } # @Display indent
+ # @DisplayNumStyle { (num) } # style of display numbers
+ # @WideIndent { 4.00f @OrIfPlain 10s } # @WideTaggedList indent
+ # @VeryWideIndent { 8.00f @OrIfPlain 20s } # @VeryWideTaggedList indent
+ # @ListOuterGap { 1.00v @OrIfPlain 1f } # gap before, after lists
+ # @ListGap { 1.00v @OrIfPlain 1f } # gap between list items
+ # @ListIndent { 0s } # indent of list items
+ # @ListRightIndent { 0s } # right indent of list items
+ # @ListLabelWidth { 2.00f @OrIfPlain 5s } # width allowed for list tags
+ # @ListLabelRight { No } # right-adjust list labels
+ # @ListLabelRightGap { 2s } # gap when right-adjusting
+ # @ListFont { } # font of list items
+ # @ListBreak { } # break style of list items
+ # @NumberSeparator { . } # separates nums like 2.3.7
+ # @CrossLinkFormat { @Body } # format of cross links
+ # @ExternalLinkFormat { @Body } # format of external links
+}
+
+
+###############################################################################
+# #
+# The @DocumentSetup @Use clause - page layout plus figures, tables, etc. #
+# #
+# To change the default value of any option, delete the # at the start of #
+# its line and change the value between braces. #
+# #
+###############################################################################
+
+@Use { @DocumentSetup
+ # @PageType { A4 @OrIfPlain Other} # page type (width, height)
+ # @PageWidth { 80s } # page width if type Other
+ # @PageHeight { 66f } # page height if type Other
+ # @PageOrientation { Portrait } # Portrait, Landscape, etc.
+ # @PageBackground { } # background of each page
+ # @TopMargin { 2.5c @OrIfPlain 6f } # top margin of all pages
+ # @FootMargin { 2.5c @OrIfPlain 6f } # bottom margin of all pages
+ # @OddLeftMargin { 2.5c @OrIfPlain 10s } # left margin of odd pages
+ # @OddRightMargin { 2.5c @OrIfPlain 10s } # right margin of odd pages
+ # @EvenLeftMargin { 2.5c @OrIfPlain 10s } # left margin of even pages
+ # @EvenRightMargin { 2.5c @OrIfPlain 10s } # right margin of even pages
+ # @OddLeftBodyMargin { 0c } # extra margin for page body
+ # @OddRightBodyMargin { 0c } # extra margin for page body
+ # @EvenLeftBodyMargin { 0c } # extra margin for page body
+ # @EvenRightBodyMargin{ 0c } # extra margin for page body
+ # @PageBoxType { None } # None Box CurveBox ShadowBox
+ # @PageBoxMargin { 1.00c } # page box margin
+ # @PageBoxLineWidth { } # page box line thickness
+ # @PageBoxPaint { none } # page box paint
+ # @PageBoxShadow { 0.60c } # shadow margin if ShadowBox
+ # @PageEnclose { @Body } # enclose every page in this
+ # @ColumnNumber { 1 } # number of columns (1 to 10)
+ # @ColumnGap { 1.00c @OrIfPlain 6s } # column gap
+
+ # @FigureLocation { PageTop } # default figure location
+ # @FigureFormat { @CC @Body } # default figure format
+ # @FigureWord { figure } # "Figure" word else anything
+ # @FigureNumbers { Arabic } # method of numbering figures
+ # @FigureCaptionPos { Below } # Above or Below
+ # @FigureCaptionFont { -2p } # figure caption font
+ # @FigureCaptionBreak { adjust hyphen 1.2fx } # figure caption break
+ # @FigureCaptionFormat{ {@B { word @NumSep number. &2s }} @Insert caption }
+ # @MakeFigureContents { No } # list of figures at start
+
+ # @TableLocation { PageTop } # default table location
+ # @TableFormat { @CC @Body } # default table format
+ # @TableWord { table } # "Table" word else anything
+ # @TableNumbers { Arabic } # method of numbering tables
+ # @TableCaptionPos { Below } # Above or Below
+ # @TableCaptionFont { -2p } # table caption font
+ # @TableCaptionBreak { adjust hyphen 1.2fx } # table caption break
+ # @TableCaptionFormat { {@B { word @NumSep number. &2s }} @Insert caption }
+ # @MakeTableContents { No } # list of tables at start
+
+ # @FloaterLocation { PageTop } # default floater location
+ # @FloaterFormat { @CC @Body } # default floater format
+ # @FloaterWord { floater } # "Floater" word else anything
+ # @FloaterNumbers { Arabic } # method of numbering floaters
+ # @FloaterCaptionPos { Below } # Above or Below
+ # @FloaterCaptionFont { -2p } # floater caption font
+ # @FloaterCaptionBreak{ adjust hyphen 1.2fx } # floater caption break
+ # @FloaterCaptionFormat{ {@B { word @NumSep number. &2s }} @Insert caption }
+ # @MakeFloaterContents{ No } # list of floaters at start
+
+ # @MakeContents { No } # make contents? Yes or No
+ # @ContentsGap { 0.20v @OrIfPlain 0f } # extra gap above minor entry
+ # @ContentsGapAbove { 0.80v @OrIfPlain 1f } # extra gap above major entry
+ # @ContentsGapBelow { 0.00v @OrIfPlain 0f } # extra gap below major entry
+ # @ContentsFont { Bold } # font for major entry
+ # @ContentsPartGapAbove { 1.00v @OrIfPlain 1f } # extra gap above `part' entry
+ # @ContentsPartGapBelow { 0.00v @OrIfPlain 0f } # extra gap below `part' entry
+ # @ContentsFormat { number @DotSep title } # contents entry format
+ # @ContentsLeader { .. } # leader symbol in contents
+ # @ContentsLeaderGap { 4s @OrIfPlain 2s } # gap between leaders
+ # @ContentsRightWidth { 3f @OrIfPlain 6s } # page numbers column width
+
+ # @MakeReferences { Yes } # make references? Yes or No
+ # @RefCiteStyle { [cite] } # citation style
+ # @RefCiteLabels { @RefNum } # citation items
+ # @RefNumbers { Arabic } # reference numbers
+ # @RefListFormat { Labels } # NoLabels, Labels, etc.
+ # @RefListLabels { [@RefNum] } # ref list label format
+ # @RefListTitle { references } # title of reference list
+ # @ChapRefListTitle { references } # title of chapter ref list
+ # @RefListIndent { 0s } # indent to left of labels
+ # @RefListRightIndent { 0s } # indent to right of items
+ # @RefListGap { @ListGap } # gap between ref list items
+ # @RefListFont { } # font used in reference list
+ # @RefListBreak { } # break style of ref list
+ # @RefListLabelWidth { @ListLabelWidth } # Labels column width
+ # @RefListSortKey { @Tag } # sorting key
+
+ # @MakeGlossary { No } # make glossary? Yes or No
+ # @GlossaryText { @Null } # glossary initial text
+ # @GlossaryFont { } # glossary entries font
+ # @GlossaryBreak { } # glossary entries break
+ # @GlossaryFormat { +3p @Font @S @Name # glossary entries format
+ # @Right @I { @Word&&page @PageNum }
+ # @DP @RawIndentedDisplay @Body }
+ # @GlossaryGap { @DisplayGap } # gap between glossary entries
+ # @GlossaryColumnNumber{ 2 } # glossary columns (1 to 10)
+ # @GlossaryColumnGap { 1.00c @OrIfPlain 6s } # glossary column gap
+ # @InGlossaryFont { smallcaps } # font for @InGlossary
+ # @InGlossaryFormat { @Body } # format for @InGlossary
+
+ # @MakeIndex { No } # make index? Yes or No
+ # @IndexText { @Null } # index initial text
+ # @IndexFont { } # index entries font
+ # @IndexBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break
+ # @IndexFormat { @Body } # @Index format
+ # @SubIndexFormat { {1f @Wide}@Body } # @SubIndex format
+ # @SubSubIndexFormat { {2f @Wide}@Body } # @SubSubIndex format
+ # @IndexTypeOrdinary { @PageNum } # Ordinary pagenum format
+ # @IndexTypeMain { @B @PageNum } # Main pagenum format
+ # @IndexTypeSpecial { @I @PageNum } # Special pagenum format
+ # @IndexRangeFormat { @From--@To } # index page range format
+ # @IndexColumnNumber { 2 } # index columns (1 to 10)
+ # @IndexColumnGap { 1.00c @OrIfPlain 6s } # index column gap
+ # @IndexCtd { Yes } # include (ctd.) lines
+ # @IndexCtdWord { continued } # "ctd." in current lang.
+ # @IndexCtdFormat { @Body @I (@CtdWord) } # format of ctd.
+ # @IndexSpacerAbove { 2v } # space above index spacer
+ # @IndexSpacerBelow { 1v } # space below index spacer
+ # @IndexSpacerFont { +3p } # font of index spacer
+ # @IndexSpacerFormat { @Body } # format of index spacer
+
+ # @MakeIndexA { No } # make index A? Yes or No
+ # @IndexAText { @Null } # index A initial text
+ # @IndexAFont { } # index A entries font
+ # @IndexABreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break
+ # @IndexAFormat { @Body } # @IndexA format
+ # @SubIndexAFormat { {1f @Wide}@Body } # @SubIndexA format
+ # @SubSubIndexAFormat { {2f @Wide}@Body } # @SubSubIndexA format
+ # @IndexATypeOrdinary { @PageNum } # Ordinary pagenum format
+ # @IndexATypeMain { @B @PageNum } # Main pagenum format
+ # @IndexATypeSpecial { @I @PageNum } # Special pagenum format
+ # @IndexARangeFormat { @From--@To } # index page range format
+ # @IndexAColumnNumber { 2 } # index A columns (1 to 10)
+ # @IndexAColumnGap { 1.00c @OrIfPlain 6s } # index A column gap
+ # @IndexACtd { Yes } # include (ctd.) lines
+ # @IndexACtdWord { continued } # "ctd." in current lang.
+ # @IndexACtdFormat { @Body @I (@CtdWord) } # format of ctd.
+ # @IndexASpacerAbove { 2v } # space above index A spacer
+ # @IndexASpacerBelow { 1v } # space below index A spacer
+ # @IndexASpacerFont { +3p } # font of index A spacer
+ # @IndexASpacerFormat { @Body } # format of index A spacer
+
+ # @MakeIndexB { No } # make index B? Yes or No
+ # @IndexBText { @Null } # index B initial text
+ # @IndexBFont { } # index B entries font
+ # @IndexBBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break
+ # @IndexBFormat { @Body } # @IndexB format
+ # @SubIndexBFormat { {1f @Wide}@Body } # @SubIndexB format
+ # @SubSubIndexBFormat { {2f @Wide}@Body } # @SubSubIndexB format
+ # @IndexBTypeOrdinary { @PageNum } # Ordinary pagenum format
+ # @IndexBTypeMain { @B @PageNum } # Main pagenum format
+ # @IndexBTypeSpecial { @I @PageNum } # Special pagenum format
+ # @IndexBRangeFormat { @From--@To } # index page range format
+ # @IndexBColumnNumber { 2 } # index B columns (1 to 10)
+ # @IndexBColumnGap { 1.00c @OrIfPlain 6s } # index B column gap
+ # @IndexBCtd { Yes } # include (ctd.) lines
+ # @IndexBCtdWord { continued } # "ctd." in current lang.
+ # @IndexBCtdFormat { @Body @I (@CtdWord) } # format of ctd.
+ # @IndexBSpacerAbove { 2v } # space above index B spacer
+ # @IndexBSpacerBelow { 1v } # space below index B spacer
+ # @IndexBSpacerFont { +3p } # font of index B spacer
+ # @IndexBSpacerFormat { @Body } # format of index B spacer
+
+ # @TopGap { 0.75c @OrIfPlain 2f } # gap between figures
+ # @MidGap { 0.75c @OrIfPlain 2f } # gap above/below body text
+
+ # @FootNoteNumbers { Arabic } # footnote numbers
+ # @FootNoteThrough { No } # numbered through chapter?
+ # @FootNoteLocation { ColFoot } # where the footnote appears
+ # @FootNoteFont { 0.80f } # font for footnotes
+ # @FootNoteBreak { 1.2fx @OrIfPlain 1fx } # break for footnotes
+ # @FootNoteFormat { { number &0.05f } @Insert body } # footnote format
+ # @FootLen { 2.00c @OrIfPlain 10s } # length of footnote line
+ # @FootAboveGap { @DisplayGap } # gap above footnote line
+ # @FootGap { 0.20c @OrIfPlain 1fx } # gap between footnotes
+ # @MarginNoteFont { 0.80f } # font of margin notes
+ # @MarginNoteBreak { ragged 1.10fx } # break style of margin notes
+ # @MarginNoteHGap { 0.5c } # horizontal gap to notes
+ # @MarginNoteVGap { @DisplayGap } # min vertical gap between
+ # @MarginNoteWidth { 1.50c } # width of margin notes
+ # @EndNoteNumbers { Arabic } # endnote numbers
+ # @EndNoteFont { 0.80f } # font of endnotes
+ # @EndNoteBreak { 1.2fx @OrIfPlain 1fx } # break for endnotes
+ # @EndNoteFormat { { number &0.05f } @Insert body } # endnote format
+ # @EndNoteGap { 0.20c @OrIfPlain 1f } # gap between endnotes
+
+ # @TheoremWord { theorem } # "Theorem" word, etc.
+ # @TheoremTitleFormat { (title) } # only if title present
+ # @TheoremFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @DefinitionWord { definition } # "Definition" word, etc.
+ # @DefinitionTitleFormat { (title) } # only if title present
+ # @DefinitionFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @ClaimWord { claim } # "Claim" word, etc.
+ # @ClaimTitleFormat { (title) } # only if title present
+ # @ClaimFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @PropositionWord { proposition } # "Proposition" word, etc.
+ # @PropositionTitleFormat { (title) } # only if title present
+ # @PropositionFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @LemmaWord { lemma } # "Lemma" word, etc.
+ # @LemmaTitleFormat { (title) } # only if title present
+ # @LemmaFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @CorollaryWord { corollary } # "Corollary" word, etc.
+ # @CorollaryTitleFormat { (title) } # only if title present
+ # @CorollaryFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @ExampleWord { example } # "Example" word, etc.
+ # @ExampleTitleFormat { (title) } # only if title present
+ # @ExampleFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @ProofWord { proof } # "Proof" word, etc.
+
+ # @PageHeaders { Simple } # None Simple Titles NoTitles
+ # @PageNumbers { Arabic } # page numbers
+ # @FirstPageNumber { 1 } # number of first page
+ # @IntroPageNumbers { Roman } # intro page numbers
+ # @IntroFirstPageNumber{ 1 } # number of first intro page
+ # @StructPageNums { No } # make structured page numbers
+ # @PageNumberFormat { number } # format of all page numbers
+
+ # @OddTop { @Centre{- @PageNum -} } # Simple page headers
+ # @OddFoot { @Null }
+ # @EvenTop { @Centre{- @PageNum -} }
+ # @EvenFoot { @Null }
+ # @StartOddTop { @Null }
+ # @StartOddFoot { @Null }
+ # @StartEvenTop { @Null }
+ # @StartEvenFoot { @Null }
+ # @IntroOddTop { @Null }
+ # @IntroOddFoot { @Centre @PageNum }
+ # @IntroEvenTop { @Null }
+ # @IntroEvenFoot { @Centre @PageNum }
+ # @IntroStartOddTop { @Null }
+ # @IntroStartOddFoot { @Null }
+ # @IntroStartEvenTop { @Null }
+ # @IntroStartEvenFoot { @Null }
+
+ # Titles, NoTitles headers
+ # @RunningOddTop { @I {@MinorNum @DotSep @MinorTitle} @Right @B @PageNum }
+ # @RunningOddFoot { @Null }
+ # @RunningEvenTop { @B @PageNum @Right @I {@MajorNum @DotSep @MajorTitle} }
+ # @RunningEvenFoot { @Null }
+ # @RunningStartOddTop { @Null }
+ # @RunningStartOddFoot { @Centre { Bold 0.8f } @Font @PageNum }
+ # @RunningStartEvenTop { @Null }
+ # @RunningStartEvenFoot { @Centre { Bold 0.8f } @Font @PageNum }
+ # @RunningIntroOddTop { @Null }
+ # @RunningIntroOddFoot { @Right @PageNum }
+ # @RunningIntroEvenTop { @Null }
+ # @RunningIntroEvenFoot { @PageNum }
+ # @RunningIntroStartOddTop { @Null }
+ # @RunningIntroStartOddFoot { @Null }
+ # @RunningIntroStartEvenTop { @Null }
+ # @RunningIntroStartEvenFoot { @Null }
+}
+
+
+###############################################################################
+# #
+# The @IllustrationSetup @Use clause - there are no options for this. #
+# #
+###############################################################################
+
+@Use { @IllustrationSetup
+}
+
+
+###############################################################################
+# #
+# @Database (and @SysDatabase) clauses go here. #
+# #
+###############################################################################
+
+@SysDatabase @FontDef { fontdefs } # font definitions
+@SysDatabase @RefStyle { refstyle } # reference printing styles
diff --git a/include/include/picturef b/include/include/picturef
new file mode 100644
index 0000000..8f8fc26
--- /dev/null
+++ b/include/include/picturef
@@ -0,0 +1,55 @@
+
+###########################################################################
+# #
+# @IllustrationSetup extension to @DocumentSetup. #
+# #
+# Jeffrey H. Kingston #
+# #
+# This package extends DocumentSetup for illustrations. #
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either Version 3, or (at your option) #
+# any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA #
+# #
+# As a special exception, when this file is read by Lout when processing #
+# a Lout source document, you may use the result without restriction. #
+# #
+###########################################################################
+
+extend @BasicSetup @DocumentSetup
+export @Illustration
+def @IllustrationSetup
+@Begin
+
+ #######################################################################
+ # #
+ # @Illustration #
+ # #
+ #######################################################################
+
+ def @Illustration
+ named @InitialFont { @InitialFont }
+ named @InitialBreak { @InitialBreak }
+ named @InitialOutdent { @InitialOutdent }
+ named @InitialSpace { @InitialSpace }
+ named @InitialLanguage { @InitialLanguage }
+ named @InitialColour { @InitialColour }
+ right x
+ {
+ @InitialFont @Font { @InitialBreak setoutdent @InitialOutdent } @Break
+ @InitialLanguage @Language @InitialSpace @Space
+ { @ColourCommand @InitialColour } @SetColour
+ @OneCol @OneRow x
+ }
+
+@End @IllustrationSetup
diff --git a/include/include/pie b/include/include/pie
new file mode 100644
index 0000000..a688feb
--- /dev/null
+++ b/include/include/pie
@@ -0,0 +1,111 @@
+###############################################################################
+# #
+# Lout setup file for pie charts #
+# #
+# Jeffrey H. Kingston #
+# 16 October 2002 #
+# #
+# This file has been placed in the public domain by its author. #
+# #
+###############################################################################
+
+
+###############################################################################
+# #
+# The @SysInclude { pief } line #
+# #
+# This line causes Lout to read the definitions for pie charts, and should #
+# not be touched. #
+# #
+###############################################################################
+
+@SysInclude { pief }
+
+
+###############################################################################
+# #
+# The @PieSetup @Use clause #
+# #
+# To change the default value of any option, delete the # at the start of #
+# its line and change the value between braces. #
+# #
+###############################################################################
+
+@Use { @PieSetup
+
+ #############################################################################
+ # #
+ # General options #
+ # #
+ #############################################################################
+
+ # save { no }
+ # totalweight { 100 }
+ # radius { 2.5c }
+ # initialangle { 0d }
+ # leftextra { 0i }
+ # rightextra { 0i }
+ # aboveextra { 0i }
+ # belowextra { 0i }
+
+ #############################################################################
+ # #
+ # Caption options #
+ # #
+ #############################################################################
+
+ # leftcaption { }
+ # rightcaption { }
+ # abovecaption { }
+ # belowcaption { }
+ # leftgap { 0.5c }
+ # rightgap { 0.5c }
+ # abovegap { 0.5c }
+ # belowgap { 0.5c }
+ # hidecaptions { yes }
+
+ #############################################################################
+ # #
+ # Slice options #
+ # #
+ #############################################################################
+
+ # weight { 1 }
+ # paint { none }
+ # texture { solid }
+ # outlinestyle { solid }
+ # outlinedashlength { 0.2f }
+ # outlinewidth { thin }
+ # detach { no }
+
+ #############################################################################
+ # #
+ # Label options #
+ # #
+ #############################################################################
+
+ # label { }
+ # labelfont { -2p }
+ # labelbreak { clines }
+ # labelmargin { 0.2f }
+ # labelformat { @Body }
+ # labelradius { internal }
+ # labeladjust { 0 0 }
+
+ #############################################################################
+ # #
+ # finger options #
+ # #
+ #############################################################################
+
+ # finger { no }
+ # fingerstyle { solid }
+ # fingerdashlength { 0.2f }
+ # fingerwidth { thin }
+ # fingerradius { 0.7 }
+ # fingeradjust { 0 0 }
+ # fingerarrow { no }
+ # fingerarrowlength { 0.6f }
+ # fingerarrowwidth { 0.45f }
+
+}
diff --git a/include/include/pief b/include/include/pief
new file mode 100644
index 0000000..2bb0001
--- /dev/null
+++ b/include/include/pief
@@ -0,0 +1,426 @@
+
+###############################################################################
+# #
+# Lout @Pie package for drawing pie charts #
+# Version 1.0 (October 2002) #
+# Jeffrey H. Kingston #
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either Version 3, or (at your option) #
+# any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA #
+# #
+# As a special exception, when this file is read by Lout when processing #
+# a Lout source document, you may use the result without restriction. #
+# #
+###############################################################################
+
+@SysPrependGraphic { pief.lpg }
+@SysInclude { lengths } # @PSLengths and @LoutLengths
+@SysInclude { coltex } # @ColourCommand and @TextureCommand
+
+
+###############################################################################
+# #
+# @PieSetup symbol #
+# #
+###############################################################################
+
+export @Pie
+def @PieSetup
+ named save { no }
+ named totalweight { 100 }
+ named radius { 2.5c }
+ import @PSLengths named initialangle{ 0d }
+ named leftextra { 0i }
+ named rightextra { 0i }
+ named aboveextra { 0i }
+ named belowextra { 0i }
+ named leftcaption { }
+ named rightcaption { }
+ named abovecaption { }
+ named belowcaption { }
+ named leftgap { 0.5c }
+ named rightgap { 0.5c }
+ named abovegap { 0.5c }
+ named belowgap { 0.5c }
+ named hidecaptions { yes }
+ named weight { 1 }
+ named paint { none }
+ import @TextureImport named texture { solid }
+ named outlinestyle
+ named solid { "/lpiesolid" }
+ named dashed { "/lpiedashed" }
+ named cdashed { "/lpiecdashed" }
+ named dotted { "/lpiedotted" }
+ named noline { "/lpienoline" }
+ { solid }
+ import @PSLengths named outlinedashlength { 0.2f }
+ import @PSLengths named outlinewidth
+ named thin { 0.04f }
+ named medium { 0.08f }
+ named thick { 0.12f }
+ { thin }
+ named detach
+ named yes Yes { 0.5 }
+ named no No { 0.0 }
+ { no }
+ named label { }
+ named labelfont { -2p }
+ named labelbreak { clines }
+ named labelmargin { 0.2f }
+ named labelformat right @Body { @Body }
+ named labelradius
+ named internal { 0.6 }
+ named external { 1.4 }
+ { internal }
+ import @PSLengths named labeladjust { 0 0 }
+ named finger { no }
+ named fingerstyle
+ named solid { "/lpiesolid" }
+ named dashed { "/lpiedashed" }
+ named cdashed { "/lpiecdashed" }
+ named dotted { "/lpiedotted" }
+ named noline { "/lpienoline" }
+ { solid }
+ import @PSLengths named fingerdashlength { 0.2f }
+ import @PSLengths named fingerwidth
+ named thin { 0.04f }
+ named medium { 0.08f }
+ named thick { 0.12f }
+ { thin }
+ named fingerradius { 0.7 }
+ import @PSLengths named fingeradjust{ 0 0 }
+ named fingerarrow { no }
+ import @PSLengths named fingerarrowlength { 0.6f }
+ import @PSLengths named fingerarrowwidth { 0.45f }
+{
+
+ ###########################################################################
+ # #
+ # @Pie symbol #
+ # #
+ ###########################################################################
+
+ export @Slice
+ def @Pie
+ named save { save }
+ named totalweight { totalweight }
+ named radius { radius }
+ import @PSLengths named initialangle { initialangle }
+ named leftextra { leftextra }
+ named rightextra { rightextra }
+ named aboveextra { aboveextra }
+ named belowextra { belowextra }
+ named leftcaption { leftcaption }
+ named rightcaption { rightcaption }
+ named abovecaption { abovecaption }
+ named belowcaption { belowcaption }
+ named leftgap { leftgap }
+ named rightgap { rightgap }
+ named abovegap { abovegap }
+ named belowgap { belowgap }
+ named hidecaptions { hidecaptions }
+ named weight { weight }
+ named paint { paint }
+ import @TextureImport named texture { texture }
+ named outlinestyle
+ named solid { "/lpiesolid" }
+ named dashed { "/lpiedashed" }
+ named cdashed { "/lpiecdashed" }
+ named dotted { "/lpiedotted" }
+ named noline { "/lpienoline" }
+ { outlinestyle }
+ import @PSLengths named outlinedashlength{ outlinedashlength }
+ import @PSLengths named outlinewidth
+ named thin { 0.04f }
+ named medium { 0.08f }
+ named thick { 0.12f }
+ { outlinewidth }
+ named detach
+ named yes Yes { 0.5 }
+ named no No { 0.0 }
+ { detach }
+ named label { label }
+ named labelfont { labelfont }
+ named labelbreak { labelbreak }
+ named labelmargin { labelmargin }
+ named labelformat right @Body { labelformat @Body }
+ named labelradius
+ named internal { 0.6 }
+ named external { 1.4 }
+ { labelradius }
+ import @PSLengths named labeladjust { labeladjust }
+ named finger { finger }
+ named fingerstyle
+ named solid { "/lpiesolid" }
+ named dashed { "/lpiedashed" }
+ named cdashed { "/lpiecdashed" }
+ named dotted { "/lpiedotted" }
+ named noline { "/lpienoline" }
+ { fingerstyle }
+ import @PSLengths named fingerdashlength{ fingerdashlength }
+ import @PSLengths named fingerwidth
+ named thin { 0.04f }
+ named medium { 0.08f }
+ named thick { 0.12f }
+ { fingerwidth }
+ named fingerradius { fingerradius }
+ import @PSLengths named fingeradjust { fingeradjust }
+ named fingerarrow { fingerarrow }
+ import @PSLengths named fingerarrowlength { fingerarrowlength }
+ import @PSLengths named fingerarrowwidth { fingerarrowwidth }
+
+ body @Body
+ {
+
+
+ #######################################################################
+ # #
+ # Miscellaneous helper definitions #
+ # #
+ #######################################################################
+
+ def @AddPaint left col right texture
+ {
+ col @Case {
+ { "no" "none" "nopaint" } @Yield "{}"
+ else @Yield { "{" @ColourCommand col texture "fill }" }
+ }
+ }
+
+ # Like @Graphic, but affects the graphics state of right parameter
+ def @InnerGraphic
+ left ps
+ right x
+ {
+ { ps gsave // grestore } @Graphic x
+ }
+
+ def @ZeroWidth right x
+ {
+ @HContract @VContract {
+ ^|0io @HContract @VContract x |0io
+ }
+ }
+
+ def @ZeroSize right x
+ {
+ @HContract @VContract {
+ ^/0io ^|0io @HContract @VContract x |0io /0io
+ }
+ }
+
+
+ #######################################################################
+ # #
+ # @Slice #
+ # #
+ #######################################################################
+
+ def @Slice
+ named weight { weight }
+ named paint { paint }
+ import @TextureImport named texture { texture }
+ named outlinestyle
+ named solid { "/lpiesolid" }
+ named dashed { "/lpiedashed" }
+ named cdashed { "/lpiecdashed" }
+ named dotted { "/lpiedotted" }
+ named noline { "/lpienoline" }
+ { outlinestyle }
+ import @PSLengths named outlinedashlength { outlinedashlength }
+ import @PSLengths named outlinewidth
+ named thin { 0.04f }
+ named medium { 0.08f }
+ named thick { 0.12f }
+ { outlinewidth }
+ named detach
+ named yes Yes { 0.5 }
+ named no No { 0.0 }
+ { detach }
+ named label { label }
+ named labelfont { labelfont }
+ named labelbreak { labelbreak }
+ named labelmargin { labelmargin }
+ named labelformat right @Body { labelformat @Body }
+ named labelradius
+ named internal { 0.6 }
+ named external { 1.4 }
+ { labelradius }
+ import @PSLengths named labeladjust { labeladjust }
+ named finger { finger }
+ named fingerstyle
+ named solid { "/lpiesolid" }
+ named dashed { "/lpiedashed" }
+ named cdashed { "/lpiecdashed" }
+ named dotted { "/lpiedotted" }
+ named noline { "/lpienoline" }
+ { fingerstyle }
+ import @PSLengths named fingerdashlength { fingerdashlength }
+ import @PSLengths named fingerwidth
+ named thin { 0.04 ft }
+ named medium { 0.08 ft }
+ named thick { 0.12 ft }
+ { fingerwidth }
+ named fingerradius { fingerradius }
+ import @PSLengths named fingeradjust{ fingeradjust }
+ named fingerarrow { fingerarrow }
+ import @PSLengths named fingerarrowlength { fingerarrowlength }
+ import @PSLengths named fingerarrowwidth { fingerarrowwidth }
+ {
+
+ def @DrawSlice
+ {
+ outlinedashlength "[" outlinestyle "]"
+ outlinewidth paint @AddPaint texture
+ weight detach
+ "lpiebeginslice"
+ //
+ "lpieendslice"
+ }
+
+ def @TranslateLabelAndDrawFinger
+ { labeladjust labelradius "lpietranslatelabel"
+ finger @Case {
+ { no No } @Yield ""
+ { yes Yes } @Yield {
+ fingerdashlength "[" fingerstyle "]"
+ fingerwidth fingeradjust fingerradius
+ "lpiedrawfinger"
+ fingerarrow @Case {
+ { no No } @Yield ""
+ { yes Yes } @Yield {
+ fingerarrowlength fingerarrowwidth
+ "lpiedrawarrowhead"
+ }
+ }
+ }
+ }
+ }
+
+ def @AddMargins right x
+ {
+ @HContract @VContract {
+ //labelmargin ||labelmargin x ||labelmargin //labelmargin
+ }
+ }
+
+ @Null @ZeroSize @DrawSlice @Graphic
+ @TranslateLabelAndDrawFinger @InnerGraphic {
+ @AddMargins labelfont @Font labelbreak @Break labelformat label
+ } @Null
+
+ }
+
+ def @Above
+ {
+ abovecaption @Case {
+ "" @Yield ""
+ else @Yield @OneCol {
+ ||0.5rt clines @Break abovecaption || //abovegap
+ }
+ }
+ }
+
+ def @Below
+ {
+ belowcaption @Case {
+ "" @Yield ""
+ else @Yield @OneCol {
+ //belowgap ||0.5rt clines @Break belowcaption ||
+ }
+ }
+ }
+
+ def @Left
+ {
+ leftcaption @Case {
+ "" @Yield ""
+ else @Yield @OneRow {
+ { //0.5rt clines @Break leftcaption // } ^||leftgap
+ }
+ }
+ }
+
+ def @Right
+ {
+ rightcaption @Case {
+ "" @Yield ""
+ else @Yield @OneRow {
+ ||rightgap { //0.5rt lines @Break rightcaption // }
+ }
+ }
+ }
+
+ def @HideWidth right x
+ {
+ hidecaptions @Case {
+ { No no } @Yield x
+ { Yes yes } @Yield @OneCol { ||0io x ||0io }
+ }
+ }
+
+ def @AddCaptions right x
+ {
+
+ @HContract @VContract
+ {
+ | @Above |
+ / @HideWidth @Left | &0.5rt x | @HideWidth @Right
+ / | @Below |
+ }
+ }
+
+ def @AddExtra right x
+ {
+ @HContract @VContract
+ {
+ /aboveextra |leftextra x |rightextra /belowextra
+ }
+ }
+
+ def @GraphicSetup right x
+ {
+ {
+ save @Case {
+ { yes Yes } @Yield {
+ "grestore save gsave" totalweight initialangle "lpiebegin"
+ //
+ "lpieend restore"
+ }
+ { no No } @Yield {
+ totalweight initialangle "lpiebegin"
+ //
+ "lpieend"
+ }
+ }
+ } @Graphic x
+ }
+
+ def @Base right x
+ {
+ def @Square { radius @Wide radius @High {} }
+
+ @HContract @VContract {
+ @Square ^| @Square
+ ^/
+ @Square | @Square
+ /
+ x
+ }
+ }
+
+ @AddCaptions @AddExtra @GraphicSetup @Base @Body
+
+ }
+}
diff --git a/include/include/pief.lpg b/include/include/pief.lpg
new file mode 100644
index 0000000..8350659
--- /dev/null
+++ b/include/include/pief.lpg
@@ -0,0 +1,488 @@
+%%BeginResource: procset LoutPiePrependGraphic
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% PostScript @SysPrependGraphic file for @Pie Jeffrey H. Kingston %
+% Version 1.0 %
+% %
+% Jeffrey H. Kingston %
+% October 2002 %
+% %
+% This file has been placed in the public domain by its author, %
+% Jeffrey H. Kingston %
+% %
+% To assist in avoiding name clashes, the names of all symbols %
+% defined here begin with "lpie". %
+% %
+% <point> is two numbers, a point. %
+% <length> is one number, a length %
+% <angle> is one number, an angle in degrees %
+% <dashlength> is one number, the preferred length of a dash %
+% %
+% The following invariant is maintained from the end of the %
+% call to lpiebegin to the beginning of the call to lpieend: %
+% %
+% lpiecentre is an executable function which leaves the two %
+% coordinates of the centre of the pie on the %
+% operand stack (signature - lpiectr <x> <y>) %
+% %
+% lpieradius is the radius of the pie %
+% %
+% lpieinitangle is the initial angle %
+% %
+% lpietotalweight is the total weight of all slices %
+% %
+% lpiecurrentweight is the total weight of all slices so far %
+% %
+% The first four are constants set by lpiebegin; the last is %
+% updated as each slice is printed. %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% install error handler into error dictionary
+errordict begin
+ /handleerror
+ {
+ { /Times-Roman findfont 8 pt scalefont setfont
+ 0 setgray 4 pt 4 pt moveto
+ $error /errorname get
+ dup lpiedict exch known
+ { lpiedict exch get }
+ { 100 string cvs } ifelse
+ show
+ ( Command: ) show
+ $error /command get 100 string cvs show
+ } stopped {} if
+ showpage stop
+ } def
+end
+
+% initial coordinates of debug output
+/lpiedebugposy 432 def
+/lpiedebugposx 72 def
+
+% <string> <int> lpiedebugprint -
+% must be defined outside lpiedict since used in arbitrary places
+% print <string> plus count or <int> stack entries, whichever is the smaller
+/lpiedebugprint
+{
+ exch
+ gsave
+ initgraphics
+ lpiedebugposy 72 lt
+ { /lpiedebugposx lpiedebugposx 144 add store
+ /lpiedebugposy 432 store
+ }
+ {
+ /lpiedebugposy lpiedebugposy 12 sub store
+ } ifelse
+ lpiedebugposx lpiedebugposy moveto
+ /Times-Roman findfont 10 scalefont setfont
+ 0 setgray show
+ count 1 sub 2 copy lt { pop } { exch pop } ifelse 1 sub
+ 0 exch 1 exch
+ {
+ /lpiedebugposy lpiedebugposy 12 sub store
+ lpiedebugposx 12 add lpiedebugposy moveto
+ index
+ dup type (dicttype) eq
+ {
+ (begin dict) show
+ {
+ /lpiedebugposy lpiedebugposy 12 sub store
+ lpiedebugposx 24 add lpiedebugposy moveto
+ pop 100 string cvs show
+ } forall
+ /lpiedebugposy lpiedebugposy 12 sub store
+ lpiedebugposx 12 add lpiedebugposy moveto
+ (end dict) show
+ }
+ {
+ dup type (arraytype) eq
+ {
+ dup xcheck { (executable array) } { (literal array) } ifelse show
+ {
+ /lpiedebugposy lpiedebugposy 12 sub store
+ lpiedebugposx 24 add lpiedebugposy moveto
+ 100 string cvs show
+ } forall
+ /lpiedebugposy lpiedebugposy 12 sub store
+ lpiedebugposx 12 add lpiedebugposy moveto
+ (end array) show
+ }
+ {
+ dup xcheck { (ex: ) } { (lit: ) } ifelse show
+ 100 string cvs show
+ } ifelse
+ } ifelse
+ } for
+ grestore
+} def
+
+% name lpiedebugpoint -
+/lpieshowpoint
+{
+ dup cvx exec moveto 20 string cvs show newpath
+} def
+
+% begin pie: <totalweight> <initialangle> lpiebegin -
+% must be defined outside lpiedict since it loads it
+/lpiebegin
+{ lpiedict begin
+ 20 dict begin
+ xmark ymark /lpiecentre lpiepointdef
+ /lpieradius xmark def
+ /lpieinitialangle exch def
+ /lpietotalweight exch def
+ /lpiecurrentweight 0 def
+} def
+
+% end pie: - lpieend -
+/lpieend
+{
+ end
+ end
+} def
+
+% pie dictionary
+/lpiedict 200 dict def
+
+% subsequent definitions are held within the pie dictionary
+lpiedict begin
+
+% error messages
+/syntaxerror (syntaxerror error: syntax error in text of pie chart?) def
+/typecheck (typecheck error: syntax error in text of pie chart?) def
+/undefined (undefined error: unknown or misspelt label?) def
+/VMError (VMError error: run out of memory?) def
+
+% maximum of two numbers: <num> <num> lpiemax <num>
+/lpiemax { 2 copy gt { pop } { exch pop } ifelse } def
+
+% minimum of two numbers: <num> <num> lpiemin <num>
+/lpiemin { 2 copy lt { pop } { exch pop } ifelse } def
+
+% add two points: <point> <point> lpiepadd <point>
+/lpiepadd
+{
+ % (Entering padd) 4 lpiedebugprint
+ exch 3 1 roll add 3 1 roll add exch
+ % (Leaving padd) 2 lpiedebugprint
+} def
+
+% subtract first point from second: <point> <point> lpiepsub <point>
+/lpiepsub { 3 2 roll sub 3 1 roll exch sub exch } def
+
+% max two points: <point> <point> lpiepmax <point>
+/lpiepmax { exch 3 1 roll lpiemax 3 1 roll lpiemax exch } def
+
+% min two points: <point> <point> lpiepmin <point>
+/lpiepmin { exch 3 1 roll lpiemin 3 1 roll lpiemin exch } def
+
+% scalar multiplication: <point> <num> lpiepmul <point>
+/lpiepmul { dup 3 1 roll mul 3 1 roll mul exch } def
+
+% distance between two points: <point> <point> lpiedistance <length>
+/lpiedistance { lpiepsub dup mul exch dup mul add sqrt } def
+
+% point at angle and distance
+% <point> <length> <angle> lpieatangle <point>
+/lpieatangle { 2 copy cos mul 3 1 roll sin mul lpiepadd } def
+
+% stroke a solid line: <length> <dashlength> lpiesolid -
+/lpiesolid
+{ % (Entering lpiesolid) 2 lpiedebugprint
+ gsave pop pop [] 0 setdash 1 setlinecap stroke grestore newpath
+ % (Leaving lpiesolid) 0 lpiedebugprint
+} def
+
+% stroke a dashed line: <length> <dashlength> lpiedashed -
+/lpiedashed
+{ gsave
+ 2 copy div 2 le 1 index 0 le or
+ { exch pop 1 pt lpiemax [ exch dup ] 0 setdash }
+ { dup [ exch 4 2 roll 2 copy div
+ 1 sub 2 div ceiling dup 4 1 roll
+ 1 add mul sub exch div ] 0 setdash
+ } ifelse 0 setlinecap stroke
+ grestore newpath
+} def
+
+% stroke a cdashed line: <length> <dashlength> lpiecdashed -
+/lpiecdashed
+{ % (Entering lpiecdashed) 2 lpiedebugprint
+ gsave
+ 2 copy le 1 index 0 le or
+ { exch pop 1 pt lpiemax [ exch dup ] dup 0 get 2 div setdash }
+ { dup [ 4 2 roll exch 2 copy exch div
+ 2 div ceiling div 1 index sub
+ ] exch 2 div setdash
+ } ifelse 0 setlinecap stroke
+ grestore newpath
+ % (Leaving lpiecdashed) 0 lpiedebugprint
+} def
+
+% stroke a dotted line: <length> <dashlength> lpiedotted -
+/lpiedotted
+{ gsave
+ 2 copy le 1 index 0 le or
+ { exch pop 1 pt lpiemax [ exch 0 exch ] 0 setdash }
+ { 1 index exch div ceiling div
+ [ 0 3 2 roll ] 0 setdash
+ } ifelse 1 setlinecap stroke
+ grestore newpath
+} def
+
+% stroke a noline line: <length> <dashlength> lpienoline -
+/lpienoline
+{ pop pop
+} def
+
+% label a point in current dictionary: <point> /name lpiepointdef -
+/lpiepointdef
+{
+ % (Entering lpiepointdef) 3 lpiedebugprint
+ [ 4 2 roll transform /itransform cvx ] cvx def
+ % (Leaving lpiepointdef) 0 lpiedebugprint
+} def
+
+% find the angle that the current slice starts at
+% - lpiesliceangle1 <angle>
+/lpiesliceangle1
+{ lpiecurrentweight lpietotalweight div 360 mul lpieinitialangle add
+} def
+
+% find the angle that the current slice stops at
+% - lpiesliceangle2 <angle>
+/lpiesliceangle2
+{ weight lpiecurrentweight add lpietotalweight div 360 mul lpieinitialangle add
+} def
+
+% find the angle that bisects the current slice
+% - lpieslicemidangle <angle>
+/lpieslicemidangle
+{ weight 2 div lpiecurrentweight add lpietotalweight div 360 mul lpieinitialangle add
+} def
+
+% update the total weight
+% - lpieupdateweight -
+/lpieupdateweight
+{ weight lpiecurrentweight add /lpiecurrentweight exch def
+} def
+
+% find the apex of the slice
+% - lpiesliceapex <x> <y>
+/lpiesliceapex
+{ lpiecentre lpieradius detach mul lpieslicemidangle lpieatangle
+} def
+
+% find the end of the first arm of the slice
+% - lpieslicearm1 <x> <y>
+/lpieslicearm1
+{ lpiesliceapex lpieradius lpiesliceangle1 lpieatangle
+} def
+
+% find the end of the second arm of the slice
+% - lpieslicearm2 <x> <y>
+/lpieslicearm2
+{ lpiesliceapex lpieradius lpiesliceangle2 lpieatangle
+} def
+
+% set the whole closed path for the current slice
+% - lpiesetslicepath -
+/lpiesetslicepath
+{ newpath lpiesliceapex moveto
+ currentpoint lpieradius lpiesliceangle1 lpiesliceangle2 arc
+ closepath
+} def
+
+% set the first segment of the current slice and return its length
+% - lpiesetsegment1 <length>
+/lpiesetsegment1
+{ newpath lpiesliceapex moveto lpieslicearm1 lineto
+ lpieradius
+} def
+
+% set the second segment of the current slice and return its length
+% - lpiesetsegment2 <length>
+/lpiesetsegment2
+{ newpath lpiesliceapex moveto lpieslicearm2 lineto
+ lpieradius
+} def
+
+% set the arc segment of the current slice and return its length
+% - lpiesetarcsegment <length>
+/lpiesetarcsegment
+{ newpath
+ lpiesliceapex lpieradius lpiesliceangle1 lpiesliceangle2 arc
+ lpiesliceangle2 lpiesliceangle1 sub 180 div 3.14159 mul lpieradius mul
+} def
+
+% draw one slice
+% <dashlength> [ <outlinecommand> ] <outlinewidth> { <paintcommand> }
+% <weight> <detach> lpiedrawslice -
+/lpiebeginslice
+{
+ % (Entering lpiebeginslice) 6 lpiedebugprint
+ /detach exch def
+ /weight exch def
+
+ % paint the slice
+ gsave lpiesetslicepath exec grestore
+
+ % set the line width
+ setlinewidth
+
+ % stroke each segment separately to get dashes right
+ 2 copy lpiesetsegment1 3 1 roll
+ dup length 0 exch mod get cvx
+ % (Stroking segment1) count 1 sub lpiedebugprint
+ exec
+
+ 2 copy lpiesetarcsegment 3 1 roll
+ dup length 1 exch mod get cvx
+ % (Stroking arc segment) count 1 sub lpiedebugprint
+ exec
+
+ lpiesetsegment2 3 1 roll
+ dup length 2 exch mod get cvx
+ % (Stroking segment2) count 1 sub lpiedebugprint
+ exec
+
+ % (Leaving lpiebeginslice) 0 lpiedebugprint
+} def
+
+% finish off one slice
+/lpieendslice
+{
+ % (Entering lpieendslice) 0 lpiedebugprint
+
+ % update current weight ready for next slice
+ lpieupdateweight
+
+ % (Leaving lpieendslice) 0 lpiedebugprint
+} def
+
+% translate label
+% <xadjust> <yadjust> <labelradius> lpietranslatelabel -
+/lpietranslatelabel
+{
+ % (Entering lpietranslatelabel) 3 lpiedebugprint
+ /labelradius exch def
+ % lpiecentre (lpiecentre:) 2 lpiedebugprint pop pop
+ % lpieradius (lpieradius:) 1 lpiedebugprint pop
+ % labelradius (labelradius:) 1 lpiedebugprint pop
+ % lpieslicemidangle (lpieslicemidangle:) 1 lpiedebugprint pop
+ xsize 2 div ysize 2 div /labelcentre lpiepointdef
+ labelcentre
+ lpiesliceapex lpieradius labelradius mul lpieslicemidangle lpieatangle lpiepsub
+ lpiepadd
+ translate
+ % (Leaving lpietranslatelabel) 0 lpiedebugprint
+} def
+
+% fix an angle to 0 <= res < 360: <angle> lpiefixangle <angle>
+/lpiefixangle
+{
+ % (Entering lpiefixangle) 1 lpiedebugprint
+ { dup 0 ge { exit } if
+ 360 add
+ } loop
+ { dup 360 lt { exit } if
+ 360 sub
+ } loop
+ % (Leaving lpiefixangle) 1 lpiedebugprint
+} def
+
+% angle from one point to another
+% <point> <point> lpieangleto <angle>
+/lpieangleto {
+ lpiepsub 2 copy 0 eq exch 0 eq and {pop} {exch atan} ifelse
+} def
+
+% find point on circumference of box: alpha a b lpieboxcircum x y
+/lpieboxcircum
+{
+ % (Entering lpieboxcircum) 3 lpiedebugprint
+ 4 dict begin
+ /b exch def
+ /a exch def
+ lpiefixangle /alpha exch def
+ 0 0 a b lpieangleto /theta exch def
+ % a (a:) 1 lpiedebugprint pop
+ % b (b:) 1 lpiedebugprint pop
+ % theta (theta:) 1 lpiedebugprint pop
+ % alpha (alpha:) 1 lpiedebugprint pop
+
+ % if alpha <= theta, return (a, a*tan(alpha))
+ alpha theta le
+ { a a alpha sin mul alpha cos div }
+ {
+ % else if alpha <= 180 - theta, return (b*cot(alpha), b)
+ alpha 180 theta sub le
+ { b alpha cos mul alpha sin div b }
+ {
+ % else if alpha <= 180 + theta, return (-a, -a*tan(alpha))
+ alpha 180 theta add le
+ { a neg a neg alpha sin mul alpha cos div }
+ {
+ % else if alpha <= 360 - theta, return (-b*cot(alpha), -b)
+ alpha 360 theta sub le
+ { b neg alpha cos mul alpha sin div b neg }
+ {
+ % else 360 - theta <= alpha, return (a, a*tan(alpha))
+ a a alpha sin mul alpha cos div
+ } ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+ end
+ % (Leaving lpieboxcircum) 2 lpiedebugprint
+} def
+
+
+% draw finger (will immediately follow lpietranslatelabel)
+% <fingerdashlength> "[" <fingerstyle> "]" fingerwidth
+% <fingeradjustx> <fingeradjusty> <fingerradius> lpiedrawfinger -
+/lpiedrawfinger
+{
+ % (Entering lpidrawfinger) 6 lpiedebugprint
+ % find inner endpoint of finger
+ /fingerradius exch def
+ lpiesliceapex lpieradius fingerradius mul
+ lpieslicemidangle lpieatangle lpiepadd
+ /fingerinner lpiepointdef
+ xsize 2 div ysize 2 div /labelcentre lpiepointdef
+ 0 0 /labelorigin lpiepointdef
+
+ % find outer endpoint of finger, on circumference of label
+ labelcentre fingerinner lpieangleto
+ xsize 2 div ysize 2 div
+ lpieboxcircum labelcentre lpiepadd
+ /fingerouter lpiepointdef
+
+ % set the line width
+ setlinewidth
+
+ % draw line
+ newpath fingerinner moveto fingerouter lineto
+ fingerinner fingerouter lpiedistance 3 1 roll 0 get cvx exec
+ % (Leaving lpiedrawfinger) 0 lpiedebugprint
+} def
+
+% draw arrowhead (will immediately follow lpiedrawfinger if reqd)
+% <headlength> <headwidth> lpiedrawarrowhead
+/lpiedrawarrowhead
+{
+ gsave
+ /headwidth exch def
+ /headlength exch def
+ fingerinner translate
+ fingerouter fingerinner lpieangleto rotate
+ 0 0 moveto
+ headlength neg headwidth 2 div lineto
+ 0 headwidth neg rlineto
+ closepath fill
+ grestore
+} def
+end
+%%EndResource
diff --git a/include/include/pod b/include/include/pod
new file mode 100644
index 0000000..9bfd373
--- /dev/null
+++ b/include/include/pod
@@ -0,0 +1,178 @@
+###############################################################################
+# #
+# Lout setup file for Pod documentation printing #
+# #
+# Version 3.0 #
+# Jeffrey H. Kingston #
+# 5 April 2000 #
+# #
+# This file has been placed in the public domain by its author. #
+# #
+# Note: although Pod is treated like a programming language in some #
+# respects, the setup file options below are largely unrelated to #
+# the setup file options for other languages. #
+# #
+###############################################################################
+
+
+###############################################################################
+# #
+# @SysInclude line #
+# #
+# This line causes Lout to read the definitions for this programming #
+# language, and should not be touched. #
+# #
+###############################################################################
+
+@SysInclude { podf }
+
+
+###############################################################################
+# #
+# @Use clause #
+# #
+# To change the default value of any option, delete the # at the start of #
+# its line and change the value between braces. #
+# #
+# Pod has two quite different kinds of paragraphs: verbatim and non- #
+# verbatim. When we say "verbatim" and "text" below we refer to these. #
+# There is no paragraph breaking option for verbatim since line breaks #
+# are honoured. #
+# #
+# As you can see below, we have been obliged to give "Times Base" as #
+# the default text font for varying style, rather than the usual empty, #
+# to get a varying-width font when Pod is embedded in fixed-width Perl. If #
+# you are using a different text font family in your document you will have #
+# to change this option if you want your varying-width Pod in that family. #
+# #
+###############################################################################
+
+@Use { @PodSetup
+ # pipe { } # pipe source through this
+ # style { varying @OrIfPlain fixed } # fixed, varying, or symbol
+
+ # the following options apply when style is "fixed"
+
+ # fixedtextfont { Courier Base -1p } # text font
+ # fixedtextbreak { adjust 1.0vx hyphen } # text para breaking
+ # fixedverbatimfont { Courier Base } # verbatim font
+ # fixedtabin { 8 } # tab interval
+ # fixedtabout { 8s } # tab width
+ # fixedlinenumbersfont { } # line numbers font
+ # fixedlinenumbersformat { @Body } # line numbers format
+
+ # fixedparagap { 1.0v } # gap between paras
+ # fixedlistgap { 1.0v } # gap within lists
+ # fixedlistindent { 0s } # list label indent
+ # fixedlistrightindent { 0s } # list right indent
+ # fixedlistlabelwidth { 2.0f } # default label space
+ # fixedlistlabelfont { } # list label font
+ # fixedlistlabelformat { @Body } # list label format
+
+ # fixedaheadfont { Bold +4p } # =head1 font
+ # fixedaheadbreak { lines 1.1vx } # =head1 para break
+ # fixedaheadformat { @DP @Body } # =head1 format
+ # fixedbheadfont { Bold +2p } # =head2 font
+ # fixedbheadbreak { lines 1.1vx } # =head2 para break
+ # fixedbheadformat { @Body } # =head2 format
+ # fixedcheadfont { Bold } # =head3 font
+ # fixedcheadbreak { lines 1.1vx } # =head3 para break
+ # fixedcheadformat { @Body } # =head3 format
+
+ # fixeditalicfont { Slope } # font of I<>
+ # fixeditalicformat { @Body } # format of I<>
+ # fixedboldfont { Bold } # font of B<>
+ # fixedboldformat { @Body } # format of B<>
+ # fixedcodefont { Base } # font of C<>
+ # fixedcodeformat { @Body } # format of C<>
+ # fixedfilefont { Slope } # font of F<>
+ # fixedfileformat { @Body } # format of F<>
+ # fixedlinkfont { Slope } # font of L<>
+ # fixedlinkformat { @Underline @Body } # format of L<>
+ # fixedindexfont { Slope } # font of X<>
+ # fixedindexformat { @Body } # format of X<>
+
+
+ # the following options apply when style is "varying"
+
+ # varyingtextfont { Times Base } # text font
+ # varyingtextbreak { adjust 1.0vx hyphen } # text para breaking
+ # varyingverbatimfont { Courier Base -1p } # verbatim font
+ # varyingtabin { 8 } # tab interval
+ # varyingtabout { 8s } # tab width
+ # varyinglinenumbersfont { } # line numbers font
+ # varyinglinenumbersformat { @Body } # line numbers format
+
+ # varyingparagap { 1.0v } # gap between paras
+ # varyinglistgap { 1.0v } # gap within lists
+ # varyinglistindent { 0s } # list label indent
+ # varyinglistrightindent { 0s } # list right indent
+ # varyinglistlabelwidth { 2.0f } # default label space
+ # varyinglistlabelfont { } # list label font
+ # varyinglistlabelformat { @Body } # list label format
+
+ # varyingaheadfont { Bold +4p } # =head1 font
+ # varyingaheadbreak { lines 1.1vx } # =head1 para break
+ # varyingaheadformat { @DP @Body } # =head1 format
+ # varyingbheadfont { Bold +2p } # =head2 font
+ # varyingbheadbreak { lines 1.1vx } # =head2 para break
+ # varyingbheadformat { @Body } # =head2 format
+ # varyingcheadfont { Bold } # =head3 font
+ # varyingcheadbreak { lines 1.1vx } # =head3 para break
+ # varyingcheadformat { @Body } # =head3 format
+
+ # varyingitalicfont { Slope } # font of I<>
+ # varyingitalicformat { @Body } # format of I<>
+ # varyingboldfont { Bold } # font of B<>
+ # varyingboldformat { @Body } # format of B<>
+ # varyingcodefont { Courier Base -1p } # font of C<>
+ # varyingcodeformat { @Body } # format of C<>
+ # varyingfilefont { Slope } # font of F<>
+ # varyingfileformat { @Body } # format of F<>
+ # varyinglinkfont { Slope } # font of L<>
+ # varyinglinkformat { @Underline @Body } # format of L<>
+ # varyingindexfont { Slope } # font of X<>
+ # varyingindexformat { @Body } # format of X<>
+
+ # the following options apply when style is "symbol"
+
+ # symboltextfont { Times Base } # text font
+ # symboltextbreak { adjust 1.0vx hyphen } # text para breaking
+ # symbolverbatimfont { Courier Base -1p } # verbatim font
+ # symboltabin { 8 } # tab interval
+ # symboltabout { 8s } # tab width
+ # symbollinenumbersfont { } # line numbers font
+ # symbollinenumbersformat { @Body } # line numbers format
+
+ # symbolparagap { 1.0v } # gap between paras
+ # symbollistgap { 1.0v } # gap within lists
+ # symbollistindent { 0s } # list label indent
+ # symbollistrightindent { 0s } # list right indent
+ # symbollistlabelwidth { 2.0f } # default label space
+ # symbollistlabelfont { } # list label font
+ # symbollistlabelformat { @Body } # list label format
+
+ # symbolaheadfont { Bold +4p } # =head1 font
+ # symbolaheadbreak { lines 1.1vx } # =head1 para break
+ # symbolaheadformat { @DP @Body } # =head1 format
+ # symbolbheadfont { Bold +2p } # =head2 font
+ # symbolbheadbreak { lines 1.1vx } # =head2 para break
+ # symbolbheadformat { @Body } # =head2 format
+ # symbolcheadfont { Bold } # =head3 font
+ # symbolcheadbreak { lines 1.1vx } # =head3 para break
+ # symbolcheadformat { @Body } # =head3 format
+
+ # symbolitalicfont { Slope } # font of I<>
+ # symbolitalicformat { @Body } # format of I<>
+ # symbolboldfont { Bold } # font of B<>
+ # symbolboldformat { @Body } # format of B<>
+ # symbolcodefont { Courier Base -1p } # font of C<>
+ # symbolcodeformat { @Body } # format of C<>
+ # symbolfilefont { Slope } # font of F<>
+ # symbolfileformat { @Body } # format of F<>
+ # symbollinkfont { Slope } # font of L<>
+ # symbollinkformat { @Underline @Body } # format of L<>
+ # symbolindexfont { Slope } # font of X<>
+ # symbolindexformat { @Body } # format of X<>
+
+}
diff --git a/include/include/podf b/include/include/podf
new file mode 100644
index 0000000..062c09b
--- /dev/null
+++ b/include/include/podf
@@ -0,0 +1,567 @@
+
+###############################################################################
+# #
+# Lout @PodSetup package for formatting Pod programs #
+# #
+# Jeffrey H. Kingston #
+# 25 March 2000 #
+# #
+# This package uses a filtered body parameter to convert Pod source #
+# code into Lout source. The filter program is prg2lout, which is #
+# distributed with Lout and should be compiled and installed wherever #
+# Lout itself is. #
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either Version 3, or (at your option) #
+# any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA #
+# #
+# As a special exception, when this file is read by Lout when processing #
+# a Lout source document, you may use the result without restriction. #
+# #
+###############################################################################
+
+export @Pod
+def @PodSetup
+ named pipe { } # pipe through this first
+ named style
+ named @OrIfPlain left x right y
+ { @BackEnd @Case { PlainText @Yield y else @Yield x } }
+ { varying @OrIfPlain fixed } # print style
+
+
+ # the following options apply when style is "fixed"
+
+ named fixedtextfont { Courier Base -1p } # text font
+ named fixedtextbreak { adjust 1.0vx hyphen } # text para breaking
+ named fixedverbatimfont { Courier Base } # verbatim font
+ named fixedtabin { 8 } # tab interval
+ named fixedtabout { 8s } # tab width
+ named fixedlinenumbersfont { } # line numbers font
+ named fixedlinenumbersformat right @Body{ @Body } # line numbers format
+
+ named fixedparagap { 1.0v } # gap between paras
+ named fixedlistgap { 1.0v } # gap within lists
+ named fixedlistindent { 0s } # list label indent
+ named fixedlistrightindent { 0s } # list right indent
+ named fixedlistlabelwidth { 2.0f } # default label space
+ named fixedlistlabelfont { } # list label font
+ named fixedlistlabelformat right @Body { @Body } # list label format
+
+ named fixedaheadfont { Bold +4p } # =head1 font
+ named fixedaheadbreak { lines 1.1vx } # =head1 para break
+ named fixedaheadformat right @Body { //1v @Body } # =head1 format
+ named fixedbheadfont { Bold +2p } # =head2 font
+ named fixedbheadbreak { lines 1.1vx } # =head2 para break
+ named fixedbheadformat right @Body { @Body } # =head2 format
+ named fixedcheadfont { Bold } # =head3 font
+ named fixedcheadbreak { lines 1.1vx } # =head3 para break
+ named fixedcheadformat right @Body { @Body } # =head3 format
+
+ named fixeditalicfont { Slope } # font of I<>
+ named fixeditalicformat right @Body { @Body } # format of I<>
+ named fixedboldfont { Bold } # font of B<>
+ named fixedboldformat right @Body { @Body } # format of B<>
+ named fixedcodefont { Base } # font of C<>
+ named fixedcodeformat right @Body { @Body } # format of C<>
+ named fixedfilefont { Slope } # font of F<>
+ named fixedfileformat right @Body { @Body } # format of F<>
+ named fixedlinkfont { Slope } # font of L<>
+ named fixedlinkformat right @Body { @Underline @Body } # format of L<>
+ named fixedindexfont { Slope } # font of X<>
+ named fixedindexformat right @Body { @Body } # format of X<>
+
+
+ # the following options apply when style is "varying"
+
+ named varyingtextfont { Times Base } # text font
+ named varyingtextbreak { adjust 1.0vx hyphen } # text para breaking
+ named varyingverbatimfont { Courier Base -1p } # verbatim font
+ named varyingtabin { 8 } # tab interval
+ named varyingtabout { 8s } # tab width
+ named varyinglinenumbersfont { } # line numbers font
+ named varyinglinenumbersformat right @Body{ @Body } # line numbers format
+
+ named varyingparagap { 1.0v } # gap between paras
+ named varyinglistgap { 1.0v } # gap within lists
+ named varyinglistindent { 0s } # list label indent
+ named varyinglistrightindent { 0s } # list right indent
+ named varyinglistlabelwidth { 2.0f } # default label space
+ named varyinglistlabelfont { } # list label font
+ named varyinglistlabelformat right @Body { @Body } # list label format
+
+ named varyingaheadfont { Bold +4p } # =head1 font
+ named varyingaheadbreak { lines 1.1vx } # =head1 para break
+ named varyingaheadformat right @Body{ //1v @Body } # =head1 format
+ named varyingbheadfont { Bold +2p } # =head2 font
+ named varyingbheadbreak { lines 1.1vx } # =head2 para break
+ named varyingbheadformat right @Body{ @Body } # =head2 format
+ named varyingcheadfont { Bold } # =head3 font
+ named varyingcheadbreak { lines 1.1vx } # =head3 para break
+ named varyingcheadformat right @Body{ @Body } # =head3 format
+
+ named varyingitalicfont { Slope } # font of I<>
+ named varyingitalicformat right @Body { @Body } # format of I<>
+ named varyingboldfont { Bold } # font of B<>
+ named varyingboldformat right @Body { @Body } # format of B<>
+ named varyingcodefont { Courier Base -1p } # font of C<>
+ named varyingcodeformat right @Body { @Body } # format of C<>
+ named varyingfilefont { Slope } # font of F<>
+ named varyingfileformat right @Body { @Body } # format of F<>
+ named varyinglinkfont { Slope } # font of L<>
+ named varyinglinkformat right @Body { @Underline @Body } # format of L<>
+ named varyingindexfont { Slope } # font of X<>
+ named varyingindexformat right @Body{ @Body } # format of X<>
+
+ # the following options apply when style is "symbol"
+
+ named symboltextfont { Times Base } # text font
+ named symboltextbreak { adjust 1.0vx hyphen } # text para breaking
+ named symbolverbatimfont { Courier Base -1p } # verbatim font
+ named symboltabin { 8 } # tab interval
+ named symboltabout { 8s } # tab width
+ named symbollinenumbersfont { } # line numbers font
+ named symbollinenumbersformat right @Body { @Body } # line numbers format
+
+ named symbolparagap { 1.0v } # gap between paras
+ named symbollistgap { 1.0v } # gap within lists
+ named symbollistindent { 0s } # list label indent
+ named symbollistrightindent { 0s } # list right indent
+ named symbollistlabelwidth { 2.0f } # default label space
+ named symbollistlabelfont { } # list label font
+ named symbollistlabelformat right @Body { @Body } # list label format
+
+ named symbolaheadfont { Bold +4p } # =head1 font
+ named symbolaheadbreak { lines 1.1vx } # =head1 para break
+ named symbolaheadformat right @Body { //1v @Body } # =head1 format
+ named symbolbheadfont { Bold +2p } # =head2 font
+ named symbolbheadbreak { lines 1.1vx } # =head2 para break
+ named symbolbheadformat right @Body { @Body } # =head2 format
+ named symbolcheadfont { Bold } # =head3 font
+ named symbolcheadbreak { lines 1.1vx } # =head3 para break
+ named symbolcheadformat right @Body { @Body } # =head3 format
+
+ named symbolitalicfont { Slope } # font of I<>
+ named symbolitalicformat right @Body{ @Body } # format of I<>
+ named symbolboldfont { Bold } # font of B<>
+ named symbolboldformat right @Body { @Body } # format of B<>
+ named symbolcodefont { Courier Base -1p } # font of C<>
+ named symbolcodeformat right @Body { @Body } # format of C<>
+ named symbolfilefont { Slope } # font of F<>
+ named symbolfileformat right @Body { @Body } # format of F<>
+ named symbollinkfont { Slope } # font of L<>
+ named symbollinkformat right @Body { @Underline @Body } # format of L<>
+ named symbolindexfont { Slope } # font of X<>
+ named symbolindexformat right @Body { @Body } # format of X<>
+
+@Begin
+
+
+ export
+
+ @PV @PPG @PLG @PLI @PLRI @PLLW @PLL @PHA @PHB @PHC
+ @PFI @PFB @PFC @PFF @PFL @PFX @A "$>" @PL
+
+ def @Pod
+ named style { style } # style
+ named pipe { pipe } # pipe through this
+ named textfont { dft } # text font
+ named textbreak { dft } # text para breaking
+ named verbatimfont { dft } # verbatim font
+ named tabin { dft } # tab interval
+ named tabout { dft } # tab width
+ named linenumbersfont { dft } # line numbers font
+ named paragap { dft } # gap between paras
+ named listgap { dft } # gap within lists
+ named listindent { dft } # list label indent
+ named listrightindent { dft } # list right indent
+ named listlabelwidth { dft } # default label space
+ named listlabelfont { dft } # list label font
+ named aheadfont { dft } # =head1 font
+ named aheadbreak { dft } # =head1 para break
+ named bheadfont { dft } # =head2 font
+ named bheadbreak { dft } # =head2 para break
+ named cheadfont { dft } # =head3 font
+ named cheadbreak { dft } # =head3 para break
+ named italicfont { dft } # font of I<>
+ named boldfont { dft } # font of B<>
+ named codefont { dft } # font of C<>
+ named filefont { dft } # font of F<>
+ named linkfont { dft } # font of L<>
+ named indexfont { dft } # font of X<>
+ body @Body # filtered, see below
+ @Begin
+
+ def @Test # returns x unless x is dft
+ left x
+ named iffixed {}
+ named ifvarying {}
+ named ifsymbol {}
+ {
+ x @Case {
+ dft @Yield {
+ style @Case {
+ fixed @Yield { iffixed }
+ varying @Yield { ifvarying }
+ symbol @Yield { ifsymbol }
+ }
+ }
+ else @Yield x
+ }
+ }
+
+
+ def @Else # returns x, or y if x is dft
+ left x
+ right y
+ {
+ x @Case {
+ dft @Yield y
+ else @Yield x
+ }
+ }
+
+
+ def @InitTab
+ {
+ tabin @Test
+ iffixed { fixedtabin }
+ ifvarying { varyingtabin }
+ ifsymbol { symboltabin }
+ }
+
+
+ def @InitTabWidth
+ {
+ tabout @Test
+ iffixed { fixedtabout }
+ ifvarying { varyingtabout }
+ ifsymbol { symboltabout }
+ }
+
+
+ def @Filter
+ {
+ pipe @Case {
+ "" @Yield {
+ "prg2lout -r -lPod" -i{@FilterIn} -o{@FilterOut} -e{@FilterErr}
+ -t{@InitTab} -T{@InitTabWidth}
+ }
+ else @Yield {
+ "cat" @FilterIn "|" pipe "|"
+ "prg2lout -r -lPod" -o{@FilterOut}
+ -e{@FilterErr} -t{@InitTab} -T{@InitTabWidth}
+ }
+ }
+ }
+
+
+ def @InitFont
+ {
+ textfont @Test
+ iffixed { fixedtextfont }
+ ifvarying { varyingtextfont }
+ ifsymbol { symboltextfont }
+ }
+
+
+
+ def @InitBreak
+ {
+ textbreak @Test
+ iffixed { fixedtextbreak }
+ ifvarying { varyingtextbreak }
+ ifsymbol { symboltextbreak }
+ }
+
+
+ def printverbatim
+ right x
+ {
+ def verbfont
+ {
+ verbatimfont @Test
+ iffixed { fixedverbatimfont }
+ ifvarying { varyingverbatimfont }
+ ifsymbol { symbolverbatimfont }
+ }
+
+ def verbatimstrut { @VContract { 0.5v @High ^/ / 0.5v @High } }
+
+ @OneCol verbfont @Font x |0io verbatimstrut
+ }
+
+
+ macro @PV { // printverbatim }
+
+
+ def paragraphgap
+ {
+ paragap @Test
+ iffixed { fixedparagap }
+ ifvarying { varyingparagap }
+ ifsymbol { symbolparagap }
+ }
+
+
+ macro @PPG { //paragraphgap }
+
+
+ def @PLG
+ {
+ listgap @Test
+ iffixed { fixedlistgap }
+ ifvarying { varyinglistgap }
+ ifsymbol { symbollistgap }
+ }
+
+
+ def @PLI
+ {
+ listindent @Test
+ iffixed { fixedlistindent }
+ ifvarying { varyinglistindent }
+ ifsymbol { symbollistindent }
+ }
+
+
+ def @PLRI
+ {
+ listrightindent @Test
+ iffixed { fixedlistrightindent }
+ ifvarying { varyinglistrightindent }
+ ifsymbol { symbollistrightindent }
+ }
+
+
+ def @PLLW right x
+ {
+ def defaultwidth
+ {
+ listlabelwidth @Test
+ iffixed { fixedlistlabelwidth }
+ ifvarying { varyinglistlabelwidth }
+ ifsymbol { symbollistlabelwidth }
+ }
+
+ def givenwidth
+ {
+ style @Case {
+ fixed @Yield { x"s" }
+ varying @Yield { x"f" }
+ symbol @Yield { x"f" }
+ }
+ }
+
+ x @Case {
+ "" @Yield defaultwidth
+ else @Yield givenwidth
+ }
+ }
+
+
+ def @PLL right x
+ {
+ def bullet
+ {
+ @BackEnd @Case {
+ PlainText @Yield "*"
+ else @Yield @Char "bullet"
+ }
+ }
+
+ def value
+ {
+ x @Case {
+ "*" @Yield bullet
+ else @Yield x
+ }
+ }
+
+ style @Case {
+ fixed @Yield fixedlistlabelformat {
+ { listlabelfont @Else fixedlistlabelfont } @Font value }
+ varying @Yield varyinglistlabelformat {
+ { listlabelfont @Else varyinglistlabelfont } @Font value }
+ symbol @Yield symbollistlabelformat {
+ { listlabelfont @Else symbollistlabelfont } @Font value }
+ }
+ }
+
+
+ def @PHA right x
+ {
+ style @Case {
+ fixed @Yield fixedaheadformat {
+ { aheadfont @Else fixedaheadfont } @Font
+ { aheadbreak @Else fixedaheadbreak } @Break x }
+ varying @Yield varyingaheadformat {
+ { aheadfont @Else varyingaheadfont } @Font
+ { aheadbreak @Else varyingaheadbreak } @Break x }
+ symbol @Yield symbolaheadformat {
+ { aheadfont @Else symbolaheadfont } @Font
+ { aheadbreak @Else varyingaheadbreak } @Break x }
+ }
+ }
+
+
+ def @PHB right x
+ {
+ style @Case {
+ fixed @Yield fixedbheadformat {
+ { bheadfont @Else fixedbheadfont } @Font
+ { bheadbreak @Else fixedbheadbreak } @Break x }
+ varying @Yield varyingbheadformat {
+ { bheadfont @Else varyingbheadfont } @Font
+ { bheadbreak @Else varyingbheadbreak } @Break x }
+ symbol @Yield symbolbheadformat {
+ { bheadfont @Else symbolbheadfont } @Font
+ { bheadbreak @Else varyingbheadbreak } @Break x }
+ }
+ }
+
+
+ def @PHC right x
+ {
+ style @Case {
+ fixed @Yield fixedcheadformat {
+ { cheadfont @Else fixedcheadfont } @Font
+ { cheadbreak @Else fixedcheadbreak } @Break x }
+ varying @Yield varyingcheadformat {
+ { cheadfont @Else varyingcheadfont } @Font
+ { cheadbreak @Else varyingcheadbreak } @Break x }
+ symbol @Yield symbolcheadformat {
+ { cheadfont @Else symbolcheadfont } @Font
+ { cheadbreak @Else varyingcheadbreak } @Break x }
+ }
+ }
+
+
+ def @PFI right x
+ {
+ style @Case {
+ fixed @Yield fixeditalicformat {
+ { italicfont @Else fixeditalicfont } @Font x }
+ varying @Yield varyingitalicformat {
+ { italicfont @Else varyingitalicfont } @Font x }
+ symbol @Yield symbolitalicformat {
+ { italicfont @Else symbolitalicfont } @Font x }
+ }
+ }
+
+
+ def @PFB right x
+ {
+ style @Case {
+ fixed @Yield fixedboldformat {
+ { boldfont @Else fixedboldfont } @Font x }
+ varying @Yield varyingboldformat {
+ { boldfont @Else varyingboldfont } @Font x }
+ symbol @Yield symbolboldformat {
+ { boldfont @Else symbolboldfont } @Font x }
+ }
+ }
+
+
+ def @PFC right x
+ {
+ style @Case {
+ fixed @Yield fixedcodeformat {
+ { codefont @Else fixedcodefont } @Font x }
+ varying @Yield varyingcodeformat {
+ { codefont @Else varyingcodefont } @Font x }
+ symbol @Yield symbolcodeformat {
+ { codefont @Else symbolcodefont } @Font x }
+ }
+ }
+
+
+ def @PFF right x
+ {
+ style @Case {
+ fixed @Yield fixedfileformat {
+ { filefont @Else fixedfilefont } @Font x }
+ varying @Yield varyingfileformat {
+ { filefont @Else varyingfilefont } @Font x }
+ symbol @Yield symbolfileformat {
+ { filefont @Else symbolfilefont } @Font x }
+ }
+ }
+
+
+ def @PFL right x
+ {
+ style @Case {
+ fixed @Yield fixedlinkformat {
+ { linkfont @Else fixedlinkfont } @Font x }
+ varying @Yield varyinglinkformat {
+ { linkfont @Else varyinglinkfont } @Font x }
+ symbol @Yield symbollinkformat {
+ { linkfont @Else symbollinkfont } @Font x }
+ }
+ }
+
+
+ def @PFX right x
+ {
+ style @Case {
+ fixed @Yield fixedindexformat {
+ { indexfont @Else fixedindexfont } @Font x }
+ varying @Yield varyingindexformat {
+ { indexfont @Else varyingindexfont } @Font x }
+ symbol @Yield symbolindexformat {
+ { indexfont @Else symbolindexfont } @Font x }
+ }
+ }
+
+
+ def @A # get characters from the Adobe Symbol font
+ named sym {}
+ right x
+ {
+ style @Case {
+ symbol @Yield { { Symbol Base } @Font @Char sym }
+ else @Yield { x }
+ }
+ }
+
+
+ macro "$>" { {} & }
+
+
+ def pl # for formatting line numbers
+ right x
+ {
+ def strut { @VContract { 0.5v @High ^/ / 0.5v @High } }
+
+ strut & style @Case {
+ fixed @Yield fixedlinenumbersformat {
+ { linenumbersfont @Else fixedlinenumbersfont } @Font x
+ }
+ varying @Yield varyinglinenumbersformat {
+ { linenumbersfont @Else varyinglinenumbersfont } @Font x
+ }
+ symbol @Yield symbollinenumbersformat {
+ { linenumbersfont @Else symbollinenumbersfont } @Font x
+ }
+ }
+ }
+
+
+ macro @PL { // pl }
+
+
+ @InitFont @Font @InitBreak @Break @Body
+
+ @End @Pod
+
+@End @PodSetup
diff --git a/include/include/python b/include/include/python
new file mode 100644
index 0000000..c39284c
--- /dev/null
+++ b/include/include/python
@@ -0,0 +1,118 @@
+###############################################################################
+# #
+# Lout setup file for Python program printing #
+# #
+# Version 3.0 #
+# Jeffrey H. Kingston #
+# 5 April 2000 #
+# #
+# This file has been placed in the public domain by its author. #
+# #
+###############################################################################
+
+
+###############################################################################
+# #
+# @SysInclude line #
+# #
+# This line causes Lout to read the definitions for this programming #
+# language, and should not be touched. #
+# #
+###############################################################################
+
+@SysInclude { pythonf }
+
+
+###############################################################################
+# #
+# @Use clause #
+# #
+# To change the default value of any option, delete the # at the start of #
+# its line and change the value between braces. #
+# #
+###############################################################################
+
+@Use { @PythonSetup
+ # pipe { } # pipe source through this
+ # numbered { No } # No, Yes, or a line number
+ # numberedblanks { Yes } # No or Yes
+ # style { varying @OrIfPlain fixed } # fixed, varying, or symbol
+
+ # the following options apply when style is "fixed"
+
+ # fixedfont { Courier } # font family
+ # fixedsize { -1.0p } # font size
+ # fixedline { 1.0vx } # line-space
+ # fixedblanklinescale { 1.0 } # blank-line scale
+ # fixedspace { lout } # spacing mode
+ # fixedtabin { 8 } # tab interval
+ # fixedtabout { 8s } # tab width
+
+ # fixedidentifiers { Base } # identifier face
+ # fixedkeywords { Base } # keyword face
+ # fixedoperators { Base } # operator face
+ # fixednumbers { Base } # number face
+ # fixedstrings { Base } # string face
+ # fixedcomments { Base } # comment face
+ # fixedlinenumbers { Base } # line numbers face
+
+ # fixedidentifiersformat { @Body } # identifiers format
+ # fixedkeywordsformat { @Body } # keywords format
+ # fixedoperatorsformat { @Body } # operators format
+ # fixednumbersformat { @Body } # numbers format
+ # fixedstringsformat { @Body } # strings format
+ # fixedcommentsformat { @Body } # comments format
+ # fixedlinenumbersformat { @Body } # line numbers format
+
+ # the following options apply when style is "varying"
+
+ # varyingfont { } # font family
+ # varyingsize { 1.0f } # font size
+ # varyingline { 1.0vx } # line-space
+ # varyingblanklinescale { 1.0 } # blank-line scale
+ # varyingspace { lout } # spacing mode
+ # varyingtabin { 8 } # tab interval
+ # varyingtabout { 3f } # tab width
+
+ # varyingidentifiers { Slope } # identifier face
+ # varyingkeywords { Bold } # keyword face
+ # varyingoperators { Base } # operator face
+ # varyingnumbers { Base } # number face
+ # varyingstrings { Slope } # string face
+ # varyingcomments { Base } # comment face
+ # varyinglinenumbers { Base } # line numbers face
+
+ # varyingidentifiersformat { @Body } # identifiers format
+ # varyingkeywordsformat { @Body } # keywords format
+ # varyingoperatorsformat { @Body } # operators format
+ # varyingnumbersformat { @Body } # numbers format
+ # varyingstringsformat { @Body } # strings format
+ # varyingcommentsformat { @Body } # comments format
+ # varyinglinenumbersformat { @Body } # line numbers format
+
+ # the following options apply when style is "symbol"
+
+ # symbolfont { } # font family
+ # symbolsize { 1.0f } # font size
+ # symbolline { 1.0vx } # line-space
+ # symbolblanklinescale { 1.0 } # blank-line scale
+ # symbolspace { lout } # spacing mode
+ # symboltabin { 8 } # tab interval
+ # symboltabout { 3f } # tab width
+
+ # symbolidentifiers { Slope } # identifier face
+ # symbolkeywords { Bold } # keyword face
+ # symboloperators { Base } # operator face
+ # symbolnumbers { Base } # number face
+ # symbolstrings { Slope } # string face
+ # symbolcomments { Base } # comment face
+ # symbollinenumbers { Base } # line numbers face
+
+ # symbolidentifiersformat { @Body } # identifiers format
+ # symbolkeywordsformat { @Body } # keywords format
+ # symboloperatorsformat { @Body } # operators format
+ # symbolnumbersformat { @Body } # numbers format
+ # symbolstringsformat { @Body } # strings format
+ # symbolcommentsformat { @Body } # comments format
+ # symbollinenumbersformat { @Body } # line numbers format
+}
diff --git a/include/include/pythonf b/include/include/pythonf
new file mode 100644
index 0000000..2d3f77f
--- /dev/null
+++ b/include/include/pythonf
@@ -0,0 +1,450 @@
+
+###############################################################################
+# #
+# Lout @PythonSetup package for formatting Python programs #
+# #
+# Version 3.0 #
+# Jeffrey H. Kingston #
+# 5 April 2000 #
+# #
+# This package uses a filtered body parameter to convert program source #
+# code into Lout source. The filter program is prg2lout, which is #
+# distributed with Lout and should be compiled and installed wherever #
+# Lout itself is. #
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either Version 3, or (at your option) #
+# any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA #
+# #
+# As a special exception, when this file is read by Lout when processing #
+# a Lout source document, you may use the result without restriction. #
+# #
+###############################################################################
+
+export @Python
+def @PythonSetup
+ named pipe { } # pipe through this first
+ named numbered { No } # want lines numbered?
+ named blanknumbered { Yes } # blank lines numbered?
+ named style
+ named @OrIfPlain left x right y
+ { @BackEnd @Case { PlainText @Yield y else @Yield x } }
+ { varying @OrIfPlain fixed } # print style
+
+ # the following options apply when style is "fixed"
+ named fixedfont { Courier }# font family
+ named fixedsize { -1.0p } # font size
+ named fixedline { 1.0vx } # line-space
+ named fixedblanklinescale { 1.0 } # blank-line scale
+ named fixedspace { lout } # spacing mode
+ named fixedtabin { 8 } # tab interval
+ named fixedtabout { 8s } # tab width
+
+ named fixedidentifiers { Base } # identifier face
+ named fixedkeywords { Base } # keyword face
+ named fixedoperators { Base } # operator face
+ named fixednumbers { Base } # number face
+ named fixedstrings { Base } # string face
+ named fixedcomments { Base } # comment face
+ named fixedlinenumbers { Base } # line numbers face
+
+ named fixedidentifiersformat right @Body { @Body } # identifier format
+ named fixedkeywordsformat right @Body { @Body } # keyword format
+ named fixedoperatorsformat right @Body { @Body } # operators format
+ named fixednumbersformat right @Body { @Body } # number format
+ named fixedstringsformat right @Body { @Body } # string format
+ named fixedcommentsformat right @Body { @Body } # comment format
+ named fixedlinenumbersformat right @Body { @Body } # line nums format
+
+ # the following options apply when style is "varying"
+ named varyingfont { } # font family
+ named varyingsize { 1.0f } # font size
+ named varyingline { 1.0vx } # line-space
+ named varyingblanklinescale { 1.0 } # blank-line scale
+ named varyingspace { lout } # spacing mode
+ named varyingtabin { 8 } # tab interval
+ named varyingtabout { 3f } # tab width
+
+ named varyingidentifiers { Slope } # identifier face
+ named varyingkeywords { Bold } # keyword face
+ named varyingoperators { Base } # operator face
+ named varyingnumbers { Base } # number face
+ named varyingstrings { Slope } # string face
+ named varyingcomments { Base } # comment face
+ named varyinglinenumbers { Base } # line numbers face
+
+ named varyingidentifiersformat right @Body { @Body } # identifier format
+ named varyingkeywordsformat right @Body { @Body } # keyword format
+ named varyingoperatorsformat right @Body { @Body } # operators format
+ named varyingnumbersformat right @Body { @Body } # number format
+ named varyingstringsformat right @Body { @Body } # string format
+ named varyingcommentsformat right @Body { @Body } # comment format
+ named varyinglinenumbersformat right @Body { @Body } # line nums format
+
+ # the following options apply when style is "symbol"
+ named symbolfont { } # font family
+ named symbolsize { 1.0f } # font size
+ named symbolline { 1.0vx } # line-space
+ named symbolblanklinescale { 1.0 } # blank-line scale
+ named symbolspace { lout } # spacing mode
+ named symboltabin { 8 } # tab interval
+ named symboltabout { 3f } # tab width
+
+ named symbolidentifiers { Slope } # identifier face
+ named symbolkeywords { Bold } # keyword face
+ named symboloperators { Base } # operator face
+ named symbolnumbers { Base } # number face
+ named symbolstrings { Slope } # string face
+ named symbolcomments { Base } # comment face
+ named symbollinenumbers { Base } # line numbers face
+
+ named symbolidentifiersformat right @Body { @Body } # identifier format
+ named symbolkeywordsformat right @Body { @Body } # keyword format
+ named symboloperatorsformat right @Body { @Body } # operators format
+ named symbolnumbersformat right @Body { @Body } # number format
+ named symbolstringsformat right @Body { @Body } # string format
+ named symbolcommentsformat right @Body { @Body } # comment format
+ named symbollinenumbersformat right @Body { @Body } # line nums format
+
+@Begin
+
+ export
+
+ @PI @PK @PO @PN @PS @PC @PL @PA @PM @PD
+ @A "$>" "''"
+
+ def @Python
+ named style { style } # style
+ named numbered { numbered } # want numbered lines?
+ named blanknumbered { blanknumbered } # numbered blank lines?
+ named pipe { pipe } # pipe through this first
+ named font { dft } # font family
+ named size { dft } # font size
+ named line { dft } # line-space
+ named blanklinescale { dft } # blank-line scale
+ named space { dft } # spacing mode
+ named tabin { dft } # tab interval
+ named tabout { dft } # tab width
+ named identifiers { dft } # ident. font
+ named keywords { dft } # keyword font
+ named operators { dft } # operator font
+ named numbers { dft } # number font
+ named strings { dft } # string font
+ named comments { dft } # comment font
+ named linenumbers { dft } # line numbers font
+ body @Body # filtered, see below
+ @Begin
+
+ def @Test # returns x unless x is dft
+ left x
+ named iffixed {}
+ named ifvarying {}
+ named ifsymbol {}
+ {
+ x @Case {
+ dft @Yield {
+ style @Case {
+ fixed @Yield { iffixed }
+ varying @Yield { ifvarying }
+ symbol @Yield { ifsymbol }
+ }
+ }
+ else @Yield x
+ }
+ }
+
+
+ def @Else # returns x, or y if x is dft
+ left x
+ right y
+ {
+ x @Case {
+ dft @Yield y
+ else @Yield x
+ }
+ }
+
+
+ def @InitTab
+ {
+ tabin @Test
+ iffixed { fixedtabin }
+ ifvarying { varyingtabin }
+ ifsymbol { symboltabin }
+ }
+
+
+ def @InitTabWidth
+ {
+ tabout @Test
+ iffixed { fixedtabout }
+ ifvarying { varyingtabout }
+ ifsymbol { symboltabout }
+ }
+
+
+ def @Filter
+ {
+ def wantnumbered
+ {
+ numbered @Case {
+ { No no } @Yield ""
+ { Yes yes } @Yield "-L"
+ else @Yield { "-L"numbered }
+ }
+ }
+
+ def wantblanknumbered
+ {
+ blanknumbered @Case {
+ { No no } @Yield "-M"
+ { NoPrint noprint } @Yield "-N"
+ { Yes yes } @Yield ""
+ }
+ }
+
+ pipe @Case {
+ "" @Yield {
+ "prg2lout -r -lPython" wantblanknumbered wantnumbered
+ -i{@FilterIn} -o{@FilterOut} -e{@FilterErr}
+ -t{@InitTab} -T{@InitTabWidth}
+ }
+ else @Yield {
+ "cat" @FilterIn "|" pipe "|"
+ "prg2lout -r -lPython" wantblanknumbered wantnumbered
+ -o{@FilterOut} -e{@FilterErr}
+ -t{@InitTab} -T{@InitTabWidth}
+ }
+ }
+ }
+
+
+ def @InitFontFamily
+ {
+ font @Test
+ iffixed { fixedfont }
+ ifvarying { varyingfont }
+ ifsymbol { symbolfont }
+ }
+
+
+ def @InitSize
+ {
+ size @Test
+ iffixed { fixedsize }
+ ifvarying { varyingsize }
+ ifsymbol { symbolsize }
+ }
+
+
+ def @InitLine
+ {
+ line @Test
+ iffixed { fixedline }
+ ifvarying { varyingline }
+ ifsymbol { symbolline }
+ }
+
+
+ def @InitBLS
+ {
+ blanklinescale @Test
+ iffixed { fixedblanklinescale }
+ ifvarying { varyingblanklinescale }
+ ifsymbol { symbolblanklinescale }
+ }
+
+
+ def @InitSpace
+ {
+ space @Test
+ iffixed { fixedspace }
+ ifvarying { varyingspace }
+ ifsymbol { symbolspace }
+ }
+
+
+ def @PI # for formatting identifiers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedidentifiersformat {
+ { identifiers @Else fixedidentifiers } @Font x
+ }
+ varying @Yield varyingidentifiersformat {
+ { identifiers @Else varyingidentifiers } @Font x
+ }
+ symbol @Yield symbolidentifiersformat {
+ { identifiers @Else symbolidentifiers } @Font x
+ }
+ }
+ }
+
+
+ def @PK # for formatting keywords
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedkeywordsformat {
+ { keywords @Else fixedkeywords } @Font x
+ }
+ varying @Yield varyingkeywordsformat {
+ { keywords @Else varyingkeywords } @Font x
+ }
+ symbol @Yield symbolkeywordsformat {
+ { keywords @Else symbolkeywords } @Font x
+ }
+ }
+ }
+
+
+ def @PO # for formatting operators
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedoperatorsformat {
+ { operators @Else fixedoperators } @Font x
+ }
+ varying @Yield varyingoperatorsformat {
+ { operators @Else varyingoperators } @Font x
+ }
+ symbol @Yield symboloperatorsformat {
+ { operators @Else symboloperators } @Font x
+ }
+ }
+ }
+
+
+ def @PN # for formatting numbers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixednumbersformat {
+ { numbers @Else fixednumbers } @Font x
+ }
+ varying @Yield varyingnumbersformat {
+ { numbers @Else varyingnumbers } @Font x
+ }
+ symbol @Yield symbolnumbersformat {
+ { numbers @Else symbolnumbers } @Font x
+ }
+ }
+ }
+
+
+ export "'''"
+ def @PS # for formatting strings
+ body x
+ {
+ def "'''" { "'''" }
+
+ style @Case {
+ fixed @Yield fixedstringsformat {
+ { strings @Else fixedstrings } @Font x
+ }
+ varying @Yield varyingstringsformat {
+ { strings @Else varyingstrings } @Font x
+ }
+ symbol @Yield symbolstringsformat {
+ { strings @Else symbolstrings } @Font x
+ }
+ }
+ }
+
+
+ def @PC # for formatting comments
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedcommentsformat {
+ { comments @Else fixedcomments } @Font x
+ }
+ varying @Yield varyingcommentsformat {
+ { comments @Else varyingcomments } @Font x
+ }
+ symbol @Yield symbolcommentsformat {
+ { comments @Else symbolcomments } @Font x
+ }
+ }
+ }
+
+
+ def @PL # for formatting line numbers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedlinenumbersformat {
+ { linenumbers @Else fixedlinenumbers } @Font x
+ }
+ varying @Yield varyinglinenumbersformat {
+ { linenumbers @Else varyinglinenumbers } @Font x
+ }
+ symbol @Yield symbollinenumbersformat {
+ { linenumbers @Else symbollinenumbers } @Font x
+ }
+ }
+ }
+
+
+ def @PA # for formatting asterisks
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "*"
+ else @Yield { "0.5w" @VShift "*" }
+ }
+ }
+
+
+ def @PM # for formatting minus signs
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "-"
+ else @Yield style @Case {
+ fixed @Yield "-"
+ else @Yield { { Symbol Base } @Font @Char "minus" }
+ }
+ }
+ }
+
+
+ def @PD # for formatting dots, if wanted larger
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "."
+ else @Yield { "1.4f" @Font "+0.04f" @VShift "." &"0.05f" }
+ }
+ }
+
+
+ def @A # get characters from the Adobe Symbol font
+ named sym {}
+ right x
+ {
+ style @Case {
+ symbol @Yield { { Symbol Base } @Font @Char sym }
+ else @Yield { x }
+ }
+ }
+
+
+ macro "$>" { {} & }
+
+ def "''" { "''" }
+
+ Programming @Language
+ { @InitFontFamily Base @InitSize } @Font @InitSpace @Space
+ { @InitLine lines "blanklinescale" @InitBLS } @Break @Body
+
+ @End @Python
+
+@End @PythonSetup
diff --git a/include/include/report b/include/include/report
new file mode 100644
index 0000000..9f58ae5
--- /dev/null
+++ b/include/include/report
@@ -0,0 +1,506 @@
+###############################################################################
+# #
+# Lout setup file for technical reports #
+# #
+# Jeffrey H. Kingston #
+# #
+# This file has been placed in the public domain by its author. #
+# #
+# Note: this version, released with Lout Version 3.13, is not upwardly #
+# compatible with previous versions: the @Abstract symbol must now #
+# be placed before the //, not after. #
+# #
+###############################################################################
+
+
+###############################################################################
+# #
+# @SysInclude commands for standard packages. #
+# #
+###############################################################################
+
+ @SysInclude { langdefs } # language definitions
+ @SysInclude { bsf } # BasicSetup package
+ @SysInclude { dsf } # DocumentSetup package
+ @SysInclude { reportf } # ReportSetup extension
+
+
+###############################################################################
+# #
+# @Include command for reading personal definitions from current directory. #
+# #
+###############################################################################
+
+ @Include { mydefs }
+
+
+###############################################################################
+# #
+# The @BasicSetup @Use clause - basics, lists, paragraphs, displays. #
+# #
+# To change the default value of any option, delete the # at the start of #
+# its line and change the value between braces. #
+# #
+###############################################################################
+
+@Use { @BasicSetup
+ # @InitialFont { Times Base 12p } # initial font
+ # @InitialBreak {{adjust 1.2fx hyphen} @OrIfPlain {ragged 1fx nohyphen}}
+ # @InitialOutdent { 2f @OrIfPlain 4s } # initial outdent
+ # @InitialSpace { lout } # initial space style
+ # @InitialLanguage { English } # initial language
+ # @InitialColour { black } # initial colour
+ # @InitialBackgroundColour { white } # initial background colour
+ # @OptimizePages { No } # optimize page breaks?
+ # @HeadingFont { Bold } # font for @Heading
+ # @FixedWidthFont { Courier Base -1p } # font for @F
+ # @ParaGap { 1.3vx @OrIfPlain 1f } # gap between paragraphs
+ # @ParaIndent { 2.00f @OrIfPlain 5s } # first-line indent for @PP
+ # @DisplayGap { 1.00v @OrIfPlain 1f } # gap above, below displays
+ # @DisplayIndent { 2.00f @OrIfPlain 5s } # @IndentedDisplay indent
+ # @DefaultIndent { 0.5rt } # @Display indent
+ # @DisplayNumStyle { (num) } # style of display numbers
+ # @WideIndent { 4.00f @OrIfPlain 10s } # @WideTaggedList indent
+ # @VeryWideIndent { 8.00f @OrIfPlain 20s } # @VeryWideTaggedList indent
+ # @ListOuterGap { 1.00v @OrIfPlain 1f } # gap before, after lists
+ # @ListGap { 1.00v @OrIfPlain 1f } # gap between list items
+ # @ListIndent { 0s } # indent of list items
+ # @ListRightIndent { 0s } # right indent of list items
+ # @ListLabelWidth { 2.00f @OrIfPlain 5s } # width allowed for list tags
+ # @ListLabelRight { No } # right-adjust list labels
+ # @ListLabelRightGap { 2s } # gap when right-adjusting
+ # @ListFont { } # font of list items
+ # @ListBreak { } # break style of list items
+ # @NumberSeparator { . } # separates nums like 2.3.7
+ # @CrossLinkFormat { @Body } # format of cross links
+ # @ExternalLinkFormat { @Body } # format of external links
+}
+
+
+###############################################################################
+# #
+# The @DocumentSetup @Use clause - page layout plus figures, tables, etc. #
+# #
+# To change the default value of any option, delete the # at the start of #
+# its line and change the value between braces. #
+# #
+###############################################################################
+
+@Use { @DocumentSetup
+ # @PageType { A4 @OrIfPlain Other} # page type (width, height)
+ # @PageWidth { 80s } # page width if type Other
+ # @PageHeight { 66f } # page height if type Other
+ # @PageOrientation { Portrait } # Portrait, Landscape, etc.
+ # @PageBackground { } # background of each page
+ # @TopMargin { 2.5c @OrIfPlain 6f } # top margin of all pages
+ # @FootMargin { 2.5c @OrIfPlain 6f } # bottom margin of all pages
+ # @OddLeftMargin { 2.5c @OrIfPlain 10s } # left margin of odd pages
+ # @OddRightMargin { 2.5c @OrIfPlain 10s } # right margin of odd pages
+ # @EvenLeftMargin { 2.5c @OrIfPlain 10s } # left margin of even pages
+ # @EvenRightMargin { 2.5c @OrIfPlain 10s } # right margin of even pages
+ # @OddLeftBodyMargin { 0c } # extra margin for page body
+ # @OddRightBodyMargin { 0c } # extra margin for page body
+ # @EvenLeftBodyMargin { 0c } # extra margin for page body
+ # @EvenRightBodyMargin{ 0c } # extra margin for page body
+ # @PageBoxType { None } # None Box CurveBox ShadowBox
+ # @PageBoxMargin { 1.00c } # page box margin
+ # @PageBoxLineWidth { } # page box line thickness
+ # @PageBoxPaint { none } # page box paint
+ # @PageBoxShadow { 0.60c } # shadow margin if ShadowBox
+ # @PageEnclose { @Body } # enclose every page in this
+ # @ColumnNumber { 1 } # number of columns (1 to 10)
+ # @ColumnGap { 1.00c @OrIfPlain 6s } # column gap
+
+ # @FigureLocation { PageTop } # default figure location
+ # @FigureFormat { @CC @Body } # default figure format
+ # @FigureWord { figure } # "Figure" word else anything
+ # @FigureNumbers { Arabic } # method of numbering figures
+ # @FigureCaptionPos { Below } # Above or Below
+ # @FigureCaptionFont { -2p } # figure caption font
+ # @FigureCaptionBreak { adjust hyphen 1.2fx } # figure caption break
+ # @FigureCaptionFormat{ {@B { word @NumSep number. &2s }} @Insert caption }
+ # @MakeFigureContents { No } # list of figures at start
+
+ # @TableLocation { PageTop } # default table location
+ # @TableFormat { @CC @Body } # default table format
+ # @TableWord { table } # "Table" word else anything
+ # @TableNumbers { Arabic } # method of numbering tables
+ # @TableCaptionPos { Below } # Above or Below
+ # @TableCaptionFont { -2p } # table caption font
+ # @TableCaptionBreak { adjust hyphen 1.2fx } # table caption break
+ # @TableCaptionFormat { {@B { word @NumSep number. &2s }} @Insert caption }
+ # @MakeTableContents { No } # list of tables at start
+
+ # @FloaterLocation { PageTop } # default floater location
+ # @FloaterFormat { @CC @Body } # default floater format
+ # @FloaterWord { floater } # "Floater" word else anything
+ # @FloaterNumbers { Arabic } # method of numbering floaters
+ # @FloaterCaptionPos { Below } # Above or Below
+ # @FloaterCaptionFont { -2p } # floater caption font
+ # @FloaterCaptionBreak{ adjust hyphen 1.2fx } # floater caption break
+ # @FloaterCaptionFormat{ {@B { word @NumSep number. &2s }} @Insert caption }
+ # @MakeFloaterContents{ No } # list of floaters at start
+
+ # @MakeContents { No } # make contents? Yes or No
+ # @ContentsGap { 0.20v @OrIfPlain 0f } # extra gap above minor entry
+ # @ContentsGapAbove { 0.80v @OrIfPlain 1f } # extra gap above major entry
+ # @ContentsGapBelow { 0.00v @OrIfPlain 0f } # extra gap below major entry
+ # @ContentsFont { Bold } # font for major entry
+ # @ContentsPartGapAbove { 1.00v @OrIfPlain 1f } # extra gap above `part' entry
+ # @ContentsPartGapBelow { 0.00v @OrIfPlain 0f } # extra gap below `part' entry
+ # @ContentsFormat { number @DotSep title } # contents entry format
+ # @ContentsLeader { .. } # leader symbol in contents
+ # @ContentsLeaderGap { 4s @OrIfPlain 2s } # gap between leaders
+ # @ContentsRightWidth { 3f @OrIfPlain 6s } # page numbers column width
+
+ # @MakeReferences { Yes } # make references? Yes or No
+ # @RefCiteStyle { [cite] } # citation style
+ # @RefCiteLabels { @RefNum } # citation items
+ # @RefNumbers { Arabic } # reference numbers
+ # @RefListFormat { Labels } # NoLabels, Labels, etc.
+ # @RefListLabels { [@RefNum] } # ref list label format
+ # @RefListTitle { references } # title of reference list
+ # @ChapRefListTitle { references } # title of chapter ref list
+ # @RefListIndent { 0s } # indent to left of labels
+ # @RefListRightIndent { 0s } # indent to right of items
+ # @RefListGap { @ListGap } # gap between ref list items
+ # @RefListFont { } # font used in reference list
+ # @RefListBreak { } # break style of ref list
+ # @RefListLabelWidth { @ListLabelWidth } # Labels column width
+ # @RefListSortKey { @Tag } # sorting key
+
+ # @MakeGlossary { No } # make glossary? Yes or No
+ # @GlossaryText { @Null } # glossary initial text
+ # @GlossaryFont { } # glossary entries font
+ # @GlossaryBreak { } # glossary entries break
+ # @GlossaryFormat { +3p @Font @S @Name # glossary entries format
+ # @Right @I { @Word&&page @PageNum }
+ # @DP @RawIndentedDisplay @Body }
+ # @GlossaryGap { @DisplayGap } # gap between glossary entries
+ # @GlossaryColumnNumber{ 2 } # glossary columns (1 to 10)
+ # @GlossaryColumnGap { 1.00c @OrIfPlain 6s } # glossary column gap
+ # @InGlossaryFont { smallcaps } # font for @InGlossary
+ # @InGlossaryFormat { @Body } # format for @InGlossary
+
+ # @MakeIndex { No } # make index? Yes or No
+ # @IndexText { @Null } # index initial text
+ # @IndexFont { } # index entries font
+ # @IndexBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break
+ # @IndexFormat { @Body } # @Index format
+ # @SubIndexFormat { {1f @Wide}@Body } # @SubIndex format
+ # @SubSubIndexFormat { {2f @Wide}@Body } # @SubSubIndex format
+ # @IndexTypeOrdinary { @PageNum } # Ordinary pagenum format
+ # @IndexTypeMain { @B @PageNum } # Main pagenum format
+ # @IndexTypeSpecial { @I @PageNum } # Special pagenum format
+ # @IndexRangeFormat { @From--@To } # index page range format
+ # @IndexColumnNumber { 2 } # index columns (1 to 10)
+ # @IndexColumnGap { 1.00c @OrIfPlain 6s } # index column gap
+ # @IndexCtd { Yes } # include (ctd.) lines
+ # @IndexCtdWord { continued } # "ctd." in current lang.
+ # @IndexCtdFormat { @Body @I (@CtdWord) } # format of ctd.
+ # @IndexSpacerAbove { 2v } # space above index spacer
+ # @IndexSpacerBelow { 1v } # space below index spacer
+ # @IndexSpacerFont { +3p } # font of index spacer
+ # @IndexSpacerFormat { @Body } # format of index spacer
+
+ # @MakeIndexA { No } # make index A? Yes or No
+ # @IndexAText { @Null } # index A initial text
+ # @IndexAFont { } # index A entries font
+ # @IndexABreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break
+ # @IndexAFormat { @Body } # @IndexA format
+ # @SubIndexAFormat { {1f @Wide}@Body } # @SubIndexA format
+ # @SubSubIndexAFormat { {2f @Wide}@Body } # @SubSubIndexA format
+ # @IndexATypeOrdinary { @PageNum } # Ordinary pagenum format
+ # @IndexATypeMain { @B @PageNum } # Main pagenum format
+ # @IndexATypeSpecial { @I @PageNum } # Special pagenum format
+ # @IndexARangeFormat { @From--@To } # index page range format
+ # @IndexAColumnNumber { 2 } # index A columns (1 to 10)
+ # @IndexAColumnGap { 1.00c @OrIfPlain 6s } # index A column gap
+ # @IndexACtd { Yes } # include (ctd.) lines
+ # @IndexACtdWord { continued } # "ctd." in current lang.
+ # @IndexACtdFormat { @Body @I (@CtdWord) } # format of ctd.
+ # @IndexASpacerAbove { 2v } # space above index A spacer
+ # @IndexASpacerBelow { 1v } # space below index A spacer
+ # @IndexASpacerFont { +3p } # font of index A spacer
+ # @IndexASpacerFormat { @Body } # format of index A spacer
+
+ # @MakeIndexB { No } # make index B? Yes or No
+ # @IndexBText { @Null } # index B initial text
+ # @IndexBFont { } # index B entries font
+ # @IndexBBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break
+ # @IndexBFormat { @Body } # @IndexB format
+ # @SubIndexBFormat { {1f @Wide}@Body } # @SubIndexB format
+ # @SubSubIndexBFormat { {2f @Wide}@Body } # @SubSubIndexB format
+ # @IndexBTypeOrdinary { @PageNum } # Ordinary pagenum format
+ # @IndexBTypeMain { @B @PageNum } # Main pagenum format
+ # @IndexBTypeSpecial { @I @PageNum } # Special pagenum format
+ # @IndexBRangeFormat { @From--@To } # index page range format
+ # @IndexBColumnNumber { 2 } # index B columns (1 to 10)
+ # @IndexBColumnGap { 1.00c @OrIfPlain 6s } # index B column gap
+ # @IndexBCtd { Yes } # include (ctd.) lines
+ # @IndexBCtdWord { continued } # "ctd." in current lang.
+ # @IndexBCtdFormat { @Body @I (@CtdWord) } # format of ctd.
+ # @IndexBSpacerAbove { 2v } # space above index B spacer
+ # @IndexBSpacerBelow { 1v } # space below index B spacer
+ # @IndexBSpacerFont { +3p } # font of index B spacer
+ # @IndexBSpacerFormat { @Body } # format of index B spacer
+
+ # @TopGap { 0.75c @OrIfPlain 2f } # gap between figures
+ # @MidGap { 0.75c @OrIfPlain 2f } # gap above/below body text
+
+ # @FootNoteNumbers { Arabic } # footnote numbers
+ # @FootNoteThrough { No } # numbered through chapter?
+ # @FootNoteLocation { ColFoot } # where the footnote appears
+ # @FootNoteFont { 0.80f } # font for footnotes
+ # @FootNoteBreak { 1.2fx @OrIfPlain 1fx } # break for footnotes
+ # @FootNoteFormat { { number &0.05f } @Insert body } # footnote format
+ # @FootLen { 2.00c @OrIfPlain 10s } # length of footnote line
+ # @FootAboveGap { @DisplayGap } # gap above footnote line
+ # @FootGap { 0.20c @OrIfPlain 1fx } # gap between footnotes
+ # @MarginNoteFont { 0.80f } # font of margin notes
+ # @MarginNoteBreak { ragged 1.10fx } # break style of margin notes
+ # @MarginNoteHGap { 0.5c } # horizontal gap to notes
+ # @MarginNoteVGap { @DisplayGap } # min vertical gap between
+ # @MarginNoteWidth { 1.50c } # width of margin notes
+ # @EndNoteNumbers { Arabic } # endnote numbers
+ # @EndNoteFont { 0.80f } # font of endnotes
+ # @EndNoteBreak { 1.2fx @OrIfPlain 1fx } # break for endnotes
+ # @EndNoteFormat { { number &0.05f } @Insert body } # endnote format
+ # @EndNoteGap { 0.20c @OrIfPlain 1f } # gap between endnotes
+
+ # @TheoremWord { theorem } # "Theorem" word, etc.
+ # @TheoremTitleFormat { (title) } # only if title present
+ # @TheoremFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @DefinitionWord { definition } # "Definition" word, etc.
+ # @DefinitionTitleFormat { (title) } # only if title present
+ # @DefinitionFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @ClaimWord { claim } # "Claim" word, etc.
+ # @ClaimTitleFormat { (title) } # only if title present
+ # @ClaimFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @PropositionWord { proposition } # "Proposition" word, etc.
+ # @PropositionTitleFormat { (title) } # only if title present
+ # @PropositionFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @LemmaWord { lemma } # "Lemma" word, etc.
+ # @LemmaTitleFormat { (title) } # only if title present
+ # @LemmaFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @CorollaryWord { corollary } # "Corollary" word, etc.
+ # @CorollaryTitleFormat { (title) } # only if title present
+ # @CorollaryFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @ExampleWord { example } # "Example" word, etc.
+ # @ExampleTitleFormat { (title) } # only if title present
+ # @ExampleFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @ProofWord { proof } # "Proof" word, etc.
+
+ # @PageHeaders { Simple } # None Simple Titles NoTitles
+ # @PageNumbers { Arabic } # page numbers
+ # @FirstPageNumber { 1 } # number of first page
+ # @IntroPageNumbers { Roman } # intro page numbers
+ # @IntroFirstPageNumber{ 1 } # number of first intro page
+ # @StructPageNums { No } # make structured page numbers
+ # @PageNumberFormat { number } # format of all page numbers
+
+ # @OddTop { @Centre{- @PageNum -} } # Simple page headers
+ # @OddFoot { @Null }
+ # @EvenTop { @Centre{- @PageNum -} }
+ # @EvenFoot { @Null }
+ # @StartOddTop { @Null }
+ # @StartOddFoot { @Null }
+ # @StartEvenTop { @Null }
+ # @StartEvenFoot { @Null }
+ # @IntroOddTop { @Null }
+ # @IntroOddFoot { @Centre @PageNum }
+ # @IntroEvenTop { @Null }
+ # @IntroEvenFoot { @Centre @PageNum }
+ # @IntroStartOddTop { @Null }
+ # @IntroStartOddFoot { @Null }
+ # @IntroStartEvenTop { @Null }
+ # @IntroStartEvenFoot { @Null }
+
+ # Titles, NoTitles headers
+ # @RunningOddTop { @I {@MinorNum @DotSep @MinorTitle} @Right @B @PageNum }
+ # @RunningOddFoot { @Null }
+ # @RunningEvenTop { @B @PageNum @Right @I {@MajorNum @DotSep @MajorTitle} }
+ # @RunningEvenFoot { @Null }
+ # @RunningStartOddTop { @Null }
+ # @RunningStartOddFoot { @Centre { Bold 0.8f } @Font @PageNum }
+ # @RunningStartEvenTop { @Null }
+ # @RunningStartEvenFoot { @Centre { Bold 0.8f } @Font @PageNum }
+ # @RunningIntroOddTop { @Null }
+ # @RunningIntroOddFoot { @Right @PageNum }
+ # @RunningIntroEvenTop { @Null }
+ # @RunningIntroEvenFoot { @PageNum }
+ # @RunningIntroStartOddTop { @Null }
+ # @RunningIntroStartOddFoot { @Null }
+ # @RunningIntroStartEvenTop { @Null }
+ # @RunningIntroStartEvenFoot { @Null }
+}
+
+
+###############################################################################
+# #
+# The @ReportSetup @Use clause - options specific to technical reports. #
+# #
+###############################################################################
+
+@Use { @ReportSetup
+ # @CoverSheet { Yes } # make cover sheet
+ # @ContentsSeparate { No } # contents on separate pages
+ # @DateLine { No } # Yes, No, or a date
+ # @AboveTitleGap { 1i } # space above title
+ # @TitleFont { Bold } # title font
+ # @TitleBreak { clines 1.4vx } # title break
+ # @AuthorFont { Slope } # author font
+ # @AuthorBreak { clines } # author break
+ # @InstitutionFont { } # institution font
+ # @InstitutionBreak { clines } # institution break
+ # @DateLineFont { } # dateline font
+ # @DateLineBreak { } # dateline break
+ # @AbstractDisplay { No } # abstract full width display
+ # @AbstractFont { } # font of abstract
+ # @AbstractBreak { } # break style of abstract
+ # @AbstractFormat { @Centre @Title @DP @Body } # abstract format
+ # @AbstractTitle { dft } # abstract title (dft is @AbstractWord)
+ # @ReferencesBeforeAppendices { No } # references before appendices
+ # @AbstractWord { abstract } # word for "Abstract"
+ # @ContentsWord { contents } # word for "Contents"
+ # @AppendixWord { appendix } # word for "Appendix"
+ # @GlossaryWord { glossary } # word for "Glossary"
+ # @IndexWord { index } # word for "Index"
+ # @IndexAWord { index } # word for "Index" (A)
+ # @IndexBWord { index } # word for "Index" (B)
+ # @SectionNumbers { Arabic } # kind of section numbers
+ # @FirstSectionNumber { 1 } # first section num (Arabic)
+ # @SubSectionNumbers { Arabic } # kind of subsection numbers
+ # @FirstSubSectionNumber { 1 } # first subsect num (Arabic)
+ # @SubSubSectionNumbers { Arabic } # kind of sub-subsect numbers
+ # @FirstSubSubSectionNumber { 1 } # first subsub. num (Arabic)
+ # @AppendixNumbers { UCAlpha } # kind of appendix numbers
+ # @FirstAppendixNumber { 1 } # first appendix num (Arabic)
+ # @SubAppendixNumbers { Arabic } # kind of subappendix numbers
+ # @FirstSubAppendixNumber { 1 } # first sub-app. num (Arabic)
+ # @SubSubAppendixNumbers { Arabic } # kind of sub-subapp. numbers
+ # @FirstSubSubAppendixNumber { 1 } # first sub-sub. num (Arabic)
+ # @AbstractHeadingFont { Bold } # abstract head font
+ # @AbstractHeadingBreak { ragged 1.2fx nohyphen } # abstract head break
+ # @AbstractHeadingFormat { @Centre title } # abstract head fmt
+ # @ContentsHeadingFont { Bold } # contents head font
+ # @ContentsHeadingBreak { ragged 1.2fx nohyphen } # contents head break
+ # @ContentsHeadingFormat { title } # contents head fmt
+ # @SectionHeadingFont { Bold } # section head font
+ # @SectionHeadingBreak { ragged 1.2fx nohyphen } # section head break
+ # @SectionHeadingFormat { number @DotSep title } # section head fmt
+ # @SubSectionHeadingFont { Bold } # subsection head font
+ # @SubSectionHeadingBreak { ragged 1.2fx nohyphen } # subsection head break
+ # @SubSectionHeadingFormat { number @DotSep title } # subsection head fmt
+ # @SubSubSectionHeadingFont { Slope } # sub-subs. head font
+ # @SubSubSectionHeadingBreak { ragged 1.2fx nohyphen } # sub-subs. head break
+ # @SubSubSectionHeadingFormat { number @DotSep title } # sub-subs. head fmt
+ # @AppendixHeadingFont { Bold } # appendix head font
+ # @AppendixHeadingBreak { ragged 1.2fx nohyphen } # appendix head break
+ # @AppendixHeadingFormat { number @DotSep title } # appendix head fmt
+ # @SubAppendixHeadingFont { Bold } # subapp. head font
+ # @SubAppendixHeadingBreak { ragged 1.2fx nohyphen } # subapp. head break
+ # @SubAppendixHeadingFormat { number @DotSep title } # subapp. head fmt
+ # @SubSubAppendixHeadingFont { Slope } # sub-subapp. head font
+ # @SubSubAppendixHeadingBreak { ragged 1.2fx nohyphen } # sub-subapp head break
+ # @SubSubAppendixHeadingFormat{ number @DotSep title } # sub-subapp. head fmt
+ # @ReferencesHeadingFont { Bold } # references head font
+ # @ReferencesHeadingBreak { ragged 1.2fx nohyphen } # references head break
+ # @ReferencesHeadingFormat { title } # references head fmt
+ # @GlossaryHeadingFont { Bold } # glossary head font
+ # @GlossaryHeadingBreak { ragged 1.2fx nohyphen } # glossary head break
+ # @GlossaryHeadingFormat { title } # glossary head fmt
+ # @IndexHeadingFont { Bold } # index head font
+ # @IndexHeadingBreak { ragged 1.2fx nohyphen } # index head break
+ # @IndexHeadingFormat { title } # index head fmt
+ # @IndexAHeadingFont { Bold } # index A head font
+ # @IndexAHeadingBreak { ragged 1.2fx nohyphen } # index A head break
+ # @IndexAHeadingFormat { title } # index A head fmt
+ # @IndexBHeadingFont { Bold } # index B head font
+ # @IndexBHeadingBreak { ragged 1.2fx nohyphen } # index B head break
+ # @IndexBHeadingFormat { title } # index B head fmt
+ # @SectionGap { 2.0v @OrIfPlain 3f } # between sections
+ # @SubSectionGap { 1.5v @OrIfPlain 2f } # between subsects
+ # @SubSubSectionGap { 1.5v @OrIfPlain 2f } # between sub-subs.
+ # @AppendixGap { 2.0v @OrIfPlain 3f } # between appendices
+ # @SubAppendixGap { 1.5v @OrIfPlain 2f } # between subappendices
+ # @SubSubAppendixGap { 1.5v @OrIfPlain 2f } # between sub-subapps
+ # @SectionInContents { Yes } # add sections to contents
+ # @SubSectionInContents { Yes } # add subsections to contents
+ # @SubSubSectionInContents { No } # add sub-subsects to contents
+ # @AppendixInContents { Yes } # add appendices to contents
+ # @SubAppendixInContents { Yes } # add subappendices to contents
+ # @SubSubAppendixInContents { No } # add sub-subapps to contents
+ # @ReferencesInContents { Yes } # add references to contents
+ # @GlossaryInContents { Yes } # add glossary to contents
+ # @IndexInContents { Yes } # add index to contents
+ # @IndexAInContents { Yes } # add index A to contents
+ # @IndexBInContents { Yes } # add index B to contents
+ # @SectionContentsIndent { 0f } # contents indent of sections
+ # @SubSectionContentsIndent { 3f } # contents indent of subsections
+ # @SubSubSectionContentsIndent{ 6f } # contents indent of sub-subsections
+ # @AppendixContentsIndent { 0f } # contents indent of appendices
+ # @SubAppendixContentsIndent { 3f } # contents indent of sub-appendices
+ # @SubSubAppendixContentsIndent { 6f } # contents indent of sub-sub-appendices
+ # @ReferencesContentsIndent { 0f } # contents indent of references
+ # @GlossaryContentsIndent { 0f } # contents indent of glossary
+ # @IndexContentsIndent { 0f } # contents indent of index
+ # @IndexAContentsIndent { 0f } # contents indent of index A
+ # @IndexBContentsIndent { 0f } # contents indent of index B
+ # @SectionNumInTheorems { No } # theorem num has section num
+ # @SubSectionNumInTheorems { No } # theorem num has subsect num
+ # @SubSubSectionNumInTheorems { No } # theorem num has sub-ss. num
+ # @AppendixNumInTheorems { No } # theorem num has appendix num
+ # @SubAppendixNumInTheorems { No } # theorem num has sub-app num
+ # @SubSubAppendixNumInTheorems{ No } # theorem num has sub-sa. num
+ # @SectionNumInDisplays { Yes } # display num has section num
+ # @SubSectionNumInDisplays { No } # display num has subsect num
+ # @SubSubSectionNumInDisplays { No } # display num has sub-ss. num
+ # @AppendixNumInDisplays { Yes } # display num has appendix num
+ # @SubAppendixNumInDisplays { No } # display num has sub-app num
+ # @SubSubAppendixNumInDisplays{ No } # display num has sub-sa. num
+ # @SectionNumInFigures { No } # figure num has section num
+ # @SubSectionNumInFigures { No } # figure num has subsect num
+ # @SubSubSectionNumInFigures { No } # figure num has sub-ss. num
+ # @AppendixNumInFigures { No } # figure num has appendix num
+ # @SubAppendixNumInFigures { No } # figure num has sub-app num
+ # @SubSubAppendixNumInFigures { No } # figure num has sub-sa. num
+ # @SectionNumInTables { No } # table num has section num
+ # @SubSectionNumInTables { No } # table num has subsect num
+ # @SubSubSectionNumInTables { No } # table num has sub-ss. num
+ # @AppendixNumInTables { No } # table num has appendix num
+ # @SubAppendixNumInTables { No } # table num has sub-app num
+ # @SubSubAppendixNumInTables { No } # table num has sub-sa. num
+ # @SectionNumInFloaters { No } # floater num has section num
+ # @SubSectionNumInFloaters { No } # floater num has subsect num
+ # @SubSubSectionNumInFloaters { No } # floater num has sub-ss. num
+ # @AppendixNumInFloaters { No } # floater num has appendix num
+ # @SubAppendixNumInFloaters { No } # floater num has sub-app num
+ # @SubSubAppendixNumInFloaters{ No } # floater num has sub-sa. num
+ # @SectionNumInRunners { Yes } # runners have section num
+ # @SubSectionNumInRunners { No } # runners have subsect num
+ # @SubSubSectionNumInRunners { No } # runners have sub-ss. num
+ # @AppendixNumInRunners { Yes } # runners have appendix num
+ # @SubAppendixNumInRunners { No } # runners have sub-app num
+ # @SubSubAppendixNumInRunners { No } # runners have sub-sa. num
+ # @FigureContentsPrefix { } # for structured page nums
+ # @TableContentsPrefix { } # for structured page nums
+ # @FloaterContentsPrefix { } # for structured page nums
+ # @SectionPrefix { } # for structured page nums
+ # @AppendixPrefix { } # for structured page nums
+ # @ReferencesPrefix { } # for structured page nums
+ # @GlossaryPrefix { } # for structured page nums
+ # @IndexPrefix { } # for structured page nums
+ # @IndexAPrefix { } # for structured page nums
+ # @IndexBPrefix { } # for structured page nums
+}
+
+
+###############################################################################
+# #
+# @Database (and @SysDatabase) clauses go here. #
+# #
+###############################################################################
+
+@SysDatabase @FontDef { fontdefs } # font definitions
+@SysDatabase @RefStyle { refstyle } # reference printing styles
diff --git a/include/include/reportf b/include/include/reportf
new file mode 100644
index 0000000..fceb63a
--- /dev/null
+++ b/include/include/reportf
@@ -0,0 +1,1030 @@
+
+###########################################################################
+# #
+# @ReportSetup extension to @DocumentSetup. #
+# #
+# Jeffrey H. Kingston #
+# #
+# This package extends DocumentSetup with definitions for reports. #
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either Version 3, or (at your option) #
+# any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA #
+# #
+# As a special exception, when this file is read by Lout when processing #
+# a Lout source document, you may use the result without restriction. #
+# #
+###########################################################################
+
+extend @BasicSetup @DocumentSetup
+export @Report @Section @Appendix
+def @ReportSetup
+ named @CoverSheet { Yes }
+ named @ContentsSeparate { No }
+ named @DateLine { No }
+ named @AboveTitleGap { 1i }
+ named @TitleFont { Bold }
+ named @TitleBreak { clines 1.4vx }
+ named @AuthorFont { Slope }
+ named @AuthorBreak { clines }
+ named @InstitutionFont { }
+ named @InstitutionBreak { clines }
+ named @DateLineFont { }
+ named @DateLineBreak { }
+ named @AbstractDisplay { No }
+ named @AbstractFont { }
+ named @AbstractBreak { }
+ named @AbstractFormat
+ left @Title
+ right @Body { @Centre @Title @DP @Body }
+ named @AbstractTitle { dft }
+ named @ReferencesBeforeAppendices { No }
+
+ named @AbstractWord { abstract }
+ named @ContentsWord { contents }
+ named @AppendixWord { appendix }
+ named @GlossaryWord { glossary }
+ named @IndexWord { index }
+ named @IndexAWord { index }
+ named @IndexBWord { index }
+
+ named @SectionNumbers { Arabic }
+ named @FirstSectionNumber { 1 }
+ named @SubSectionNumbers { Arabic }
+ named @FirstSubSectionNumber { 1 }
+ named @SubSubSectionNumbers { Arabic }
+ named @FirstSubSubSectionNumber { 1 }
+ named @AppendixNumbers { UCAlpha }
+ named @FirstAppendixNumber { 1 }
+ named @SubAppendixNumbers { Arabic }
+ named @FirstSubAppendixNumber { 1 }
+ named @SubSubAppendixNumbers { Arabic }
+ named @FirstSubSubAppendixNumber { 1 }
+
+ named @AbstractHeadingFont { Bold }
+ named @AbstractHeadingBreak { ragged 1.2fx nohyphen }
+ named @AbstractHeadingFormat
+ right title { @Centre title }
+
+ named @ContentsHeadingFont { Bold }
+ named @ContentsHeadingBreak { ragged 1.2fx nohyphen }
+ named @ContentsHeadingFormat
+ right title { title }
+
+ named @SectionHeadingFont { Bold }
+ named @SectionHeadingBreak { ragged 1.2fx nohyphen }
+ named @SectionHeadingFormat
+ left number right title { number @DotSep title }
+
+ named @SubSectionHeadingFont { Bold }
+ named @SubSectionHeadingBreak { ragged 1.2fx nohyphen }
+ named @SubSectionHeadingFormat
+ left number right title { number @DotSep title }
+
+ named @SubSubSectionHeadingFont { Slope }
+ named @SubSubSectionHeadingBreak { ragged 1.2fx nohyphen }
+ named @SubSubSectionHeadingFormat
+ left number right title { number @DotSep title }
+
+ named @AppendixHeadingFont { Bold }
+ named @AppendixHeadingBreak { ragged 1.2fx nohyphen }
+ named @AppendixHeadingFormat
+ left number right title { number @DotSep title }
+
+ named @SubAppendixHeadingFont { Bold }
+ named @SubAppendixHeadingBreak { ragged 1.2fx nohyphen }
+ named @SubAppendixHeadingFormat
+ left number right title { number @DotSep title }
+
+ named @SubSubAppendixHeadingFont { Slope }
+ named @SubSubAppendixHeadingBreak { ragged 1.2fx nohyphen }
+ named @SubSubAppendixHeadingFormat
+ left number right title { number @DotSep title }
+
+ named @ReferencesHeadingFont { Bold }
+ named @ReferencesHeadingBreak { ragged 1.2fx nohyphen }
+ named @ReferencesHeadingFormat
+ right title { title }
+
+ named @GlossaryHeadingFont { Bold }
+ named @GlossaryHeadingBreak { ragged 1.2fx nohyphen }
+ named @GlossaryHeadingFormat
+ right title { title }
+
+ named @IndexHeadingFont { Bold }
+ named @IndexHeadingBreak { ragged 1.2fx nohyphen }
+ named @IndexHeadingFormat
+ right title { title }
+
+ named @IndexAHeadingFont { Bold }
+ named @IndexAHeadingBreak { ragged 1.2fx nohyphen }
+ named @IndexAHeadingFormat
+ right title { title }
+
+ named @IndexBHeadingFont { Bold }
+ named @IndexBHeadingBreak { ragged 1.2fx nohyphen }
+ named @IndexBHeadingFormat
+ right title { title }
+
+ named @SectionGap { 2.0v @OrIfPlain 3f }
+ named @SubSectionGap { 1.5v @OrIfPlain 2f }
+ named @SubSubSectionGap { 1.5v @OrIfPlain 2f }
+ named @AppendixGap { 2.0v @OrIfPlain 3f }
+ named @SubAppendixGap { 1.5v @OrIfPlain 2f }
+ named @SubSubAppendixGap { 1.5v @OrIfPlain 2f }
+
+ named @SectionInContents { Yes }
+ named @SubSectionInContents { Yes }
+ named @SubSubSectionInContents { No }
+ named @AppendixInContents { Yes }
+ named @SubAppendixInContents { Yes }
+ named @SubSubAppendixInContents { No }
+ named @ReferencesInContents { Yes }
+ named @GlossaryInContents { Yes }
+ named @IndexInContents { Yes }
+ named @IndexAInContents { Yes }
+ named @IndexBInContents { Yes }
+
+ named @SectionContentsIndent { 0f }
+ named @SubSectionContentsIndent { 3f }
+ named @SubSubSectionContentsIndent { 6f }
+ named @AppendixContentsIndent { 0f }
+ named @SubAppendixContentsIndent { 3f }
+ named @SubSubAppendixContentsIndent { 6f }
+ named @ReferencesContentsIndent { 0f }
+ named @GlossaryContentsIndent { 0f }
+ named @IndexContentsIndent { 0f }
+ named @IndexAContentsIndent { 0f }
+ named @IndexBContentsIndent { 0f }
+
+ named @SectionNumInTheorems { No }
+ named @SubSectionNumInTheorems { No }
+ named @SubSubSectionNumInTheorems { No }
+ named @AppendixNumInTheorems { No }
+ named @SubAppendixNumInTheorems { No }
+ named @SubSubAppendixNumInTheorems { No }
+
+ named @SectionNumInDisplays { Yes }
+ named @SubSectionNumInDisplays { No }
+ named @SubSubSectionNumInDisplays { No }
+ named @AppendixNumInDisplays { Yes }
+ named @SubAppendixNumInDisplays { No }
+ named @SubSubAppendixNumInDisplays { No }
+
+ named @SectionNumInFigures { No }
+ named @SubSectionNumInFigures { No }
+ named @SubSubSectionNumInFigures { No }
+ named @AppendixNumInFigures { No }
+ named @SubAppendixNumInFigures { No }
+ named @SubSubAppendixNumInFigures { No }
+
+ named @SectionNumInTables { No }
+ named @SubSectionNumInTables { No }
+ named @SubSubSectionNumInTables { No }
+ named @AppendixNumInTables { No }
+ named @SubAppendixNumInTables { No }
+ named @SubSubAppendixNumInTables { No }
+
+ named @SectionNumInFloaters { No }
+ named @SubSectionNumInFloaters { No }
+ named @SubSubSectionNumInFloaters { No }
+ named @AppendixNumInFloaters { No }
+ named @SubAppendixNumInFloaters { No }
+ named @SubSubAppendixNumInFloaters { No }
+
+ named @SectionNumInRunners { Yes }
+ named @SubSectionNumInRunners { No }
+ named @SubSubSectionNumInRunners { No }
+ named @AppendixNumInRunners { Yes }
+ named @SubAppendixNumInRunners { No }
+ named @SubSubAppendixNumInRunners { No }
+
+ named @FigureContentsPrefix { }
+ named @TableContentsPrefix { }
+ named @FloaterContentsPrefix { }
+ named @SectionPrefix { }
+ named @AppendixPrefix { }
+ named @ReferencesPrefix { }
+ named @GlossaryPrefix { }
+ named @IndexPrefix { }
+ named @IndexAPrefix { }
+ named @IndexBPrefix { }
+@Begin
+
+ #######################################################################
+ # #
+ # Lists of sections, subsections, etc. #
+ # #
+ #######################################################################
+
+ export num
+ def @SectionList named @Tag {} right num
+ {
+ @Galley
+ //@SectionGap @SectionList @Next num
+ }
+
+ export num
+ def @SubSectionList named @Tag {} right num
+ {
+ @Galley
+ //@SubSectionGap @SubSectionList @Next num
+ }
+
+ export num
+ def @SubSubSectionList named @Tag {} right num
+ {
+ @Galley
+ //@SubSubSectionGap @SubSubSectionList @Next num
+ }
+
+ export num
+ def @AppendixList named @Tag {} right num
+ {
+ @Galley
+ //@AppendixGap @AppendixList @Next num
+ }
+
+ export num
+ def @SubAppendixList named @Tag {} right num
+ {
+ @Galley
+ //@SubAppendixGap @SubAppendixList @Next num
+ }
+
+ export num
+ def @SubSubAppendixList named @Tag {} right num
+ {
+ @Galley
+ //@SubSubAppendixGap @SubSubAppendixList @Next num
+ }
+
+
+ #######################################################################
+ # #
+ # @Full - this sends text to a full-width place. #
+ # #
+ #######################################################################
+
+ def @Full force into { @FullPlace&&following } right x
+ {
+ x
+ }
+
+ def @NoForceFull into { @FullPlace&&following } right x
+ {
+ x
+ }
+
+
+ #######################################################################
+ # #
+ # @Report #
+ # #
+ #######################################################################
+
+ def @Report
+ named @Title {}
+ named @Author {}
+ named @Institution {}
+ named @DateLine { @DateLine }
+ named @CoverSheet { @CoverSheet }
+ named @ContentsSeparate { @ContentsSeparate }
+ named @AtEnd { dft }
+ named @InitialFont { @InitialFont }
+ named @InitialBreak { @InitialBreak }
+ named @InitialOutdent { @InitialOutdent }
+ named @InitialSpace { @InitialSpace }
+ named @InitialLanguage { @InitialLanguage }
+ named @PageOrientation { @PageOrientation }
+ named @PageHeaders { @PageHeaders }
+ named @ColumnNumber { @ColumnNumber }
+ named @FirstPageNumber { @FirstPageNumber }
+ named @OptimizePages { @OptimizePages }
+ named @AbstractDisplay { @AbstractDisplay }
+ named @AbstractTitle { @AbstractTitle }
+ named @Abstract {}
+ named @GlossaryText { @GlossaryText }
+ named @IndexText { @IndexText }
+ named @IndexAText { @IndexAText }
+ named @IndexBText { @IndexBText }
+ {
+
+ def @Cntr right x
+ {
+ x @Case {
+ "" @Yield @Null
+ else @Yield { |0.5rt x | }
+ }
+ }
+
+ def @DateValue right indent
+ {
+ @DateLine @Case {
+ No @Yield @Null
+ Yes @Yield @Date
+ else @Yield @DateLine
+ }
+ }
+
+ def @TitleMaterial
+ {
+ //@AboveTitleGap
+ @TitleFont @Font @TitleBreak @Break @Cntr @Title
+ //1.00v @AuthorFont @Font @AuthorBreak @Break @Cntr @Author
+ //1.00v @InstitutionFont @Font @InstitutionBreak @Break @Cntr @Institution
+ //1.00v @DateLineFont @Font @DateLineBreak @Break @Cntr @DateValue
+ }
+
+ def @AbstractPart
+ {
+ def @Title
+ {
+ @AbstractHeadingFont @Font @AbstractHeadingBreak @Break
+ @AbstractHeadingFormat {
+ @AbstractTitle @Dft { abstract @WordVal @AbstractWord }
+ }
+ }
+
+ @Abstract @Case {
+
+ "" @Yield @Null
+
+ else @Yield
+ {
+ @AbstractFont @Font @AbstractBreak @Break
+ @AbstractDisplay @Case {
+
+ No @Yield { @Title @AbstractFormat @Abstract }
+
+ Yes @Yield { |@DisplayIndent
+ @Title @AbstractFormat @Abstract |@DisplayIndent }
+ }
+ }
+ }
+ }
+
+ def @ContentsPart
+ {
+ // |0.5rt @ContentsHeadingFont @Font @ContentsHeadingBreak @Break
+ @ContentsHeadingFormat { contents @WordVal @ContentsWord } |
+ //@DisplayGap @ContentsSection
+ // NonStart @Runner @MajorTitle {contents @WordVal @ContentsWord}
+ }
+
+ def @ReferencesPart
+ named @Tag {}
+ {
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Major }
+ initiallanguage { @InitialLanguage }
+ title { @RefHeading @RefListTitle }
+ sendheader { @Body }
+ headingfont { @ReferencesHeadingFont }
+ headingbreak { @ReferencesHeadingBreak }
+ headingformat { @ReferencesHeadingFormat @Body }
+ incontents { @ReferencesInContents }
+ contentsindent { @ReferencesContentsIndent }
+ majornum {}
+ majortitle {}
+ minornum {}
+ minortitle { @RefHeading @RefListTitle }
+ prefix { @ReferencesPrefix }
+ inrunners { Yes }
+ { //@RefListGap @ReferencesSection }
+ }
+
+ def @GlossaryPart
+ named @Tag {}
+ {
+
+ def @Run
+ {
+ NonStart @Runner
+ @MajorNum {}
+ @MajorTitle { glossary @WordVal @GlossaryWord }
+ @MinorNum {}
+ @MinorTitle {}
+ @Owner { @Tag }
+ @Prefix { @GlossaryPrefix }
+ }
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Major }
+ initiallanguage { @InitialLanguage }
+ title { glossary @WordVal @GlossaryWord }
+ headingfont { @GlossaryHeadingFont }
+ headingbreak { @GlossaryHeadingBreak }
+ headingformat { @GlossaryHeadingFormat @Body }
+ headingtext { @GlossaryText }
+ incontents { @GlossaryInContents }
+ contentsindent { @GlossaryContentsIndent }
+ prefix { @GlossaryPrefix }
+ inrunners { Yes }
+ majornum {}
+ majortitle {}
+ minornum {}
+ minortitle { glossary @WordVal @GlossaryWord }
+ sendheader { @Full @Body }
+ innergap { @SectionGap }
+ wantindefinite { Yes }
+ @GlossarySection @Run
+
+ }
+
+ def @IndexPart
+ named @Tag {}
+ {
+
+ def @Run
+ {
+ NonStart @Runner
+ @MajorNum {}
+ @MajorTitle { index @WordVal @IndexWord }
+ @MinorNum {}
+ @MinorTitle {}
+ @Owner { @Tag }
+ @Prefix { @IndexPrefix }
+ }
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Major }
+ initiallanguage { @InitialLanguage }
+ title { index @WordVal @IndexWord }
+ headingfont { @IndexHeadingFont }
+ headingbreak { @IndexHeadingBreak }
+ headingformat { @IndexHeadingFormat @Body }
+ headingtext { @IndexText }
+ incontents { @IndexInContents }
+ contentsindent { @IndexContentsIndent }
+ prefix { @IndexPrefix }
+ inrunners { Yes }
+ majornum {}
+ majortitle {}
+ minornum {}
+ minortitle { index @WordVal @IndexWord }
+ sendheader { @Full @Body }
+ innergap { @SectionGap }
+ wantindefinite { Yes }
+ @IndexSection @Run
+
+ }
+
+ def @IndexAPart
+ named @Tag {}
+ {
+ def @Run
+ {
+ NonStart @Runner
+ @MajorNum {}
+ @MajorTitle { index @WordVal @IndexAWord }
+ @MinorNum {}
+ @MinorTitle {}
+ @Owner { @Tag }
+ @Prefix { @IndexAPrefix }
+ }
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Major }
+ initiallanguage { @InitialLanguage }
+ title { index @WordVal @IndexAWord }
+ headingfont { @IndexAHeadingFont }
+ headingbreak { @IndexAHeadingBreak }
+ headingformat { @IndexAHeadingFormat @Body }
+ headingtext { @IndexAText }
+ incontents { @IndexAInContents }
+ contentsindent { @IndexAContentsIndent }
+ prefix { @IndexAPrefix }
+ inrunners { Yes }
+ majornum {}
+ majortitle {}
+ minornum {}
+ minortitle { index @WordVal @IndexAWord }
+ sendheader { @Full @Body }
+ innergap { @SectionGap }
+ wantindefinite { Yes }
+ @IndexASection @Run
+
+ }
+
+ def @IndexBPart
+ named @Tag {}
+ {
+ def @Run
+ {
+ NonStart @Runner
+ @MajorNum {}
+ @MajorTitle { index @WordVal @IndexBWord }
+ @MinorNum {}
+ @MinorTitle {}
+ @Owner { @Tag }
+ @Prefix { @IndexBPrefix }
+ }
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Major }
+ initiallanguage { @InitialLanguage }
+ title { index @WordVal @IndexBWord }
+ headingfont { @IndexBHeadingFont }
+ headingbreak { @IndexBHeadingBreak }
+ headingformat { @IndexBHeadingFormat @Body }
+ headingtext { @IndexBText }
+ incontents { @IndexBInContents }
+ contentsindent { @IndexBContentsIndent }
+ prefix { @IndexBPrefix }
+ inrunners { Yes }
+ majornum {}
+ majortitle {}
+ minornum {}
+ minortitle { index @WordVal @IndexBWord }
+ sendheader { @Full @Body }
+ innergap { @SectionGap }
+ wantindefinite { Yes }
+ @IndexBSection @Run
+
+ }
+
+ def @ContentsGap
+ {
+ @ContentsSeparate @Case {
+ No @Yield @SectionGap
+ Yes @Yield 2b
+ }
+ }
+
+ def @ReportBodyWithoutCoverSheet force into { @ColPlace&&following }
+ named @Optimize { @OptimizePages }
+ {
+
+ Start @Runner
+ // @AbstractDisplay @NoDo @AbstractPart
+ //@ContentsGap @ContentsPart
+ //@ContentsGap @SectionList @FirstSectionNumber
+ //@SectionGap @ReferencesBeforeAppendices @Do {
+ @MakeReferences @Do @ReferencesPart
+ }
+ //@AppendixGap @AppendixList @FirstAppendixNumber
+ //@SectionGap @EndFigureList
+ //@SectionGap @EndNoteList 1
+ //@SectionGap @ReferencesBeforeAppendices @NoDo {
+ @MakeReferences @Do @ReferencesPart
+ }
+ // @MakeGlossary @Do @GlossaryPart
+ // @MakeIndexA @Do @IndexAPart
+ // @MakeIndexB @Do @IndexBPart
+ // @MakeIndex @Do @IndexPart
+ }
+
+ def @ReportCoverSheet into { @IntroColPlace&&preceding }
+ named @Optimize { @OptimizePages }
+ {
+ // Start @Runner
+ // @TitleMaterial
+ //@DisplayGap @DP @AbstractPart
+ }
+
+ def @ReportBodyWithCoverSheet force into { @ColPlace&&preceding }
+ named @Optimize { @OptimizePages }
+ {
+
+ Start @Runner
+ //@ContentsGap @ContentsPart
+ //@ContentsGap @SectionList @FirstSectionNumber
+ //@SectionGap @ReferencesBeforeAppendices @Do {
+ @MakeReferences @Do @ReferencesPart
+ }
+ //@AppendixGap @AppendixList @FirstAppendixNumber
+ //@SectionGap @ReferencesBeforeAppendices @NoDo {
+ @MakeReferences @Do @ReferencesPart
+ }
+ //@SectionGap @EndFigureList
+ //@SectionGap @EndNoteList 1
+ // @MakeGlossary @Do @GlossaryPart
+ // @MakeIndexA @Do @IndexAPart
+ // @MakeIndexB @Do @IndexBPart
+ // @MakeIndex @Do @IndexPart
+ }
+
+ @InitialFont @Font { @InitialBreak setoutdent @InitialOutdent } @Break
+ @InitialLanguage @Language @InitialSpace @Space
+ { @ColourCommand @InitialColour } @SetColour
+ {
+ @CoverSheet @Case {
+
+ No @Yield {
+ @FootNoteThrough @Do @BeginFootNoteCounter
+ // Yes @BeginAllCounters {}
+ // Yes @BeginDisplayCounter {}
+ // Yes @BeginFigureCounter {}
+ // Yes @BeginTableCounter {}
+ // Yes @BeginFloaterCounter {}
+ // @AbstractDisplay @Do { @NoForceFull @AbstractPart }
+ // @ReportBodyWithoutCoverSheet
+ // @PageList
+ @ColumnNumber { @ColumnNumber }
+ @PageHeaders { @PageHeaders }
+ @Orient { @PageOrientation }
+ # extra { Yes }
+ @AtTop { @TitleMaterial }
+ @FirstPageNumber
+ // NonStart @Runner
+ // @AtEnd @Case {
+ dft @Yield @Null
+ else @Yield
+ @EvenPage @Orient { @PageOrientation } @AtEnd
+ }
+ }
+
+ Yes @Yield {
+ @FootNoteThrough @Do @BeginFootNoteCounter
+ // Yes @BeginAllCounters {}
+ // Yes @BeginDisplayCounter {}
+ // Yes @BeginFigureCounter {}
+ // Yes @BeginTableCounter {}
+ // Yes @BeginFloaterCounter {}
+ // @SimpleOddOrEvenIntroPageList
+ @ColumnNumber { 1 }
+ @PageHeaders { Simple }
+ @Orient { @PageOrientation }
+ 1
+ // @ReportCoverSheet
+ // @PageList
+ @ColumnNumber { @ColumnNumber }
+ @PageHeaders { @PageHeaders }
+ @Orient { @PageOrientation }
+ # extra { Yes }
+ @AtTop { @TitleMaterial }
+ @FirstPageNumber
+ // @ReportBodyWithCoverSheet
+ // NonStart @Runner
+ // @AtEnd @Case {
+ dft @Yield @Null
+ else @Yield
+ @EvenPage @Orient { @PageOrientation } @AtEnd
+ }
+ }
+ }
+ }
+ }
+
+
+ #######################################################################
+ # #
+ # Sections. #
+ # #
+ #######################################################################
+
+ export @BeginSubSections @EndSubSections @SubSection
+ def @Section force into { @SectionList&&preceding }
+ named @Tag {}
+ named @Title {}
+ named @RunningTitle { dft }
+ named @InitialLanguage {}
+ named @BypassNumber { dft }
+ named @NewPage { No }
+ body @Body
+ {
+
+ def @EndSubSectionsPlace { @Galley }
+
+ def @EndSubSections force into { @EndSubSectionsPlace&&preceding }
+ {}
+
+ macro @BeginSubSections
+ {
+ //@SubSectionGap @SubSectionList @FirstSubSectionNumber
+ // @EndSubSectionsPlace //
+ }
+
+ def @SectionShortNum
+ {
+ @SectionNumbers @Then {
+ @BypassNumber @Dft {
+ @SectionNumbers @Num @SectionList&&@Tag @Open { num }
+ }
+ }
+ }
+
+ export @BeginSubSubSections @EndSubSubSections @SubSubSection
+ def @SubSection force into { @SubSectionList&&preceding }
+ named @Tag {}
+ named @Title {}
+ named @RunningTitle { dft }
+ named @InitialLanguage { @InitialLanguage }
+ named @BypassNumber { dft }
+ named @NewPage { No }
+ body @Body
+ {
+
+ def @EndSubSubSectionsPlace { @Galley }
+
+ def @EndSubSubSections force into
+ { @EndSubSubSectionsPlace&&preceding }
+ {}
+
+ macro @BeginSubSubSections
+ {
+ //@SubSubSectionGap @SubSubSectionList @FirstSubSubSectionNumber
+ // @EndSubSubSectionsPlace //
+ }
+
+ def @SubSectionShortNum
+ {
+ @SubSectionNumbers @Then {
+ @BypassNumber @Dft {
+ @SectionShortNum @Join @SubSectionNumbers @Num
+ { @SubSectionList&&@Tag @Open { num } }
+ }
+ }
+ }
+
+ def @SubSubSection force into { @SubSubSectionList&&preceding }
+ named @Tag {}
+ named @Title {}
+ named @RunningTitle { dft }
+ named @InitialLanguage { @InitialLanguage }
+ named @BypassNumber { dft }
+ named @NewPage { No }
+ body @Body
+ {
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Minor }
+ initiallanguage { @InitialLanguage }
+ title { @Title }
+ runningtitle { @RunningTitle }
+ headingfont { @SubSubSectionHeadingFont }
+ headingbreak { @SubSubSectionHeadingBreak }
+ headingformat { @Num @SubSubSectionHeadingFormat @Body }
+ incontents { @SubSubSectionInContents }
+ contentsindent { @SubSubSectionContentsIndent }
+ numbers { @SubSubSectionNumbers }
+ attachnum { @SubSubSectionList&&preceding @Tagged @Tag }
+ retrievenum { @SubSubSectionList&&@Tag @Open { num } }
+ bypassnumber { @BypassNumber }
+ prefix { @SubSectionShortNum }
+ majornum {}
+ majortitle {}
+ intheorems { @SubSubSectionNumInTheorems }
+ indisplays { @SubSubSectionNumInDisplays }
+ infigures { @SubSubSectionNumInFigures }
+ intables { @SubSubSectionNumInTables }
+ infloaters { @SubSubSectionNumInFloaters }
+ inrunners { @SubSubSectionNumInRunners }
+ newpage { @NewPage }
+ @Body
+
+ }
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Minor }
+ initiallanguage { @InitialLanguage }
+ title { @Title }
+ runningtitle { @RunningTitle }
+ headingfont { @SubSectionHeadingFont }
+ headingbreak { @SubSectionHeadingBreak }
+ headingformat { @Num @SubSectionHeadingFormat @Body }
+ incontents { @SubSectionInContents }
+ contentsindent { @SubSectionContentsIndent }
+ numbers { @SubSectionNumbers }
+ attachnum { @SubSectionList&&preceding @Tagged @Tag }
+ retrievenum { @SubSectionList&&@Tag @Open { num } }
+ bypassnumber { @BypassNumber }
+ prefix { @SectionShortNum }
+ majornum {}
+ majortitle {}
+ intheorems { @SubSectionNumInTheorems }
+ indisplays { @SubSectionNumInDisplays }
+ infigures { @SubSectionNumInFigures }
+ intables { @SubSectionNumInTables }
+ infloaters { @SubSectionNumInFloaters }
+ inrunners { @SubSectionNumInRunners }
+ newpage { @NewPage }
+ @Body
+ }
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Minor }
+ initiallanguage { @InitialLanguage }
+ title { @Title }
+ runningtitle { @RunningTitle }
+ headingfont { @SectionHeadingFont }
+ headingbreak { @SectionHeadingBreak }
+ headingformat { @Num @SectionHeadingFormat @Body }
+ incontents { @SectionInContents }
+ contentsindent { @SectionContentsIndent }
+ numbers { @SectionNumbers }
+ attachnum { @SectionList&&preceding @Tagged @Tag }
+ retrievenum { @SectionList&&@Tag @Open { num } }
+ bypassnumber { @BypassNumber }
+ prefix { @SectionPrefix }
+ majornum {}
+ majortitle {}
+ intheorems { @SectionNumInTheorems }
+ indisplays { @SectionNumInDisplays }
+ infigures { @SectionNumInFigures }
+ intables { @SectionNumInTables }
+ infloaters { @SectionNumInFloaters }
+ inrunners { @SectionNumInRunners }
+ newpage { @NewPage }
+ @Body
+
+ }
+
+
+ #######################################################################
+ # #
+ # Appendices. #
+ # #
+ #######################################################################
+
+ export @BeginSubAppendices @EndSubAppendices @SubAppendix
+ def @Appendix force into { @AppendixList&&preceding }
+ named @Tag {}
+ named @Title {}
+ named @RunningTitle { dft }
+ named @InitialLanguage {}
+ named @BypassNumber { dft }
+ named @NewPage { No }
+ body @Body
+ {
+ def @EndSubAppendicesPlace { @Galley }
+
+ def @EndSubAppendices force into { @EndSubAppendicesPlace&&preceding }
+ {}
+
+ macro @BeginSubAppendices
+ {
+ //@SubAppendixGap @SubAppendixList @FirstSubAppendixNumber
+ // @EndSubAppendicesPlace //
+ }
+
+ def @AppendixShortNum
+ {
+ @AppendixNumbers @Then {
+ @BypassNumber @Dft {
+ @AppendixNumbers @Num @AppendixList&&@Tag @Open { num }
+ }
+ }
+ }
+
+ def @AppendixLongNum
+ {
+ @AppendixNumbers @Then {
+ @InitialLanguage @Language {
+ appendix @WordVal @AppendixWord @AppendixShortNum
+ }
+ }
+ }
+
+ export @BeginSubSubAppendices @EndSubSubAppendices @SubSubAppendix
+ def @SubAppendix force into { @SubAppendixList&&preceding }
+ named @Tag {}
+ named @Title {}
+ named @RunningTitle { dft }
+ named @InitialLanguage { @InitialLanguage }
+ named @BypassNumber { dft }
+ named @NewPage { No }
+ body @Body
+ {
+
+ def @EndSubSubAppendicesPlace { @Galley }
+
+ def @EndSubSubAppendices force into
+ { @EndSubSubAppendicesPlace&&preceding }
+ {}
+
+ macro @BeginSubSubAppendices
+ {
+ //@SubSubAppendixGap
+ @SubSubAppendixList @FirstSubSubAppendixNumber
+ // @EndSubSubAppendicesPlace //
+ }
+
+ def @SubAppendixShortNum
+ {
+ @SubAppendixNumbers @Then {
+ @BypassNumber @Dft {
+ @AppendixShortNum @Join @SubAppendixNumbers @Num
+ { @SubAppendixList&&@Tag @Open { num } }
+ }
+ }
+ }
+
+ def @SubSubAppendix force into { @SubSubAppendixList&&preceding }
+ named @Tag {}
+ named @Title {}
+ named @RunningTitle { dft }
+ named @InitialLanguage { @InitialLanguage }
+ named @BypassNumber { dft }
+ named @NewPage { No }
+ body @Body
+ {
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Minor }
+ initiallanguage { @InitialLanguage }
+ title { @Title }
+ runningtitle { @RunningTitle }
+ headingfont { @SubSubAppendixHeadingFont }
+ headingbreak { @SubSubAppendixHeadingBreak }
+ headingformat { @Num @SubSubAppendixHeadingFormat @Body }
+ incontents { @SubSubAppendixInContents }
+ contentsindent { @SubSubAppendixContentsIndent }
+ numbers { @SubSubAppendixNumbers }
+ attachnum { @SubSubAppendixList&&preceding @Tagged @Tag }
+ retrievenum { @SubSubAppendixList&&@Tag @Open { num } }
+ bypassnumber { @BypassNumber }
+ prefix { @SubAppendixShortNum }
+ majornum {}
+ majortitle {}
+ intheorems { @SubSubAppendixNumInTheorems }
+ indisplays { @SubSubAppendixNumInDisplays }
+ infigures { @SubSubAppendixNumInFigures }
+ intables { @SubSubAppendixNumInTables }
+ infloaters { @SubSubAppendixNumInFloaters }
+ inrunners { @SubSubAppendixNumInRunners }
+ newpage { @NewPage }
+ @Body
+
+ }
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Minor }
+ initiallanguage { @InitialLanguage }
+ title { @Title }
+ runningtitle { @RunningTitle }
+ headingfont { @SubAppendixHeadingFont }
+ headingbreak { @SubAppendixHeadingBreak }
+ headingformat { @Num @SubAppendixHeadingFormat @Body }
+ incontents { @SubAppendixInContents }
+ contentsindent { @SubAppendixContentsIndent }
+ numbers { @SubAppendixNumbers }
+ attachnum { @SubAppendixList&&preceding @Tagged @Tag }
+ retrievenum { @SubAppendixList&&@Tag @Open { num } }
+ bypassnumber { @BypassNumber }
+ prefix { @AppendixShortNum }
+ majornum {}
+ majortitle {}
+ intheorems { @SubAppendixNumInTheorems }
+ indisplays { @SubAppendixNumInDisplays }
+ infigures { @SubAppendixNumInFigures }
+ intables { @SubAppendixNumInTables }
+ infloaters { @SubAppendixNumInFloaters }
+ inrunners { @SubAppendixNumInRunners }
+ newpage { @NewPage }
+ @Body
+
+ }
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Minor }
+ initiallanguage { @InitialLanguage }
+ title { @Title }
+ runningtitle { @RunningTitle }
+ headingfont { @AppendixHeadingFont }
+ headingbreak { @AppendixHeadingBreak }
+ headingformat { @Num @AppendixHeadingFormat @Body }
+ incontents { @AppendixInContents }
+ contentsindent { @AppendixContentsIndent }
+ word { appendix @WordVal @AppendixWord }
+ numbers { @AppendixNumbers }
+ attachnum { @AppendixList&&preceding @Tagged @Tag }
+ retrievenum { @AppendixList&&@Tag @Open { num } }
+ bypassnumber { @BypassNumber }
+ prefix { @AppendixPrefix }
+ majornum {}
+ majortitle {}
+ intheorems { @AppendixNumInTheorems }
+ indisplays { @AppendixNumInDisplays }
+ infigures { @AppendixNumInFigures }
+ intables { @AppendixNumInTables }
+ infloaters { @AppendixNumInFloaters }
+ inrunners { Yes }
+ newpage { @NewPage }
+ @Body
+ }
+
+@End @ReportSetup
diff --git a/include/include/rsl b/include/include/rsl
new file mode 100644
index 0000000..0bfa138
--- /dev/null
+++ b/include/include/rsl
@@ -0,0 +1,119 @@
+# Hey Emacs, this is -*- lout -*- !
+###############################################################################
+# #
+# Lout setup file for RSL program printing #
+# #
+# Version 1.0 #
+# Darren Bane #
+# 18 February 2003 #
+# #
+# This file has been placed in the public domain by its author. #
+# #
+###############################################################################
+
+
+###############################################################################
+# #
+# @SysInclude line #
+# #
+# This line causes Lout to read the definitions for this programming #
+# language, and should not be touched. #
+# #
+###############################################################################
+
+@SysInclude { rslf }
+
+
+###############################################################################
+# #
+# @Use clause #
+# #
+# To change the default value of any option, delete the # at the start of #
+# its line and change the value between braces. #
+# #
+###############################################################################
+
+@Use { @RSLSetup
+ # pipe { } # pipe source through this
+ # numbered { No } # No, Yes, or a line number
+ # numberedblanks { Yes } # No or Yes
+ # style { symbol @OrIfPlain fixed } # fixed, varying, or symbol
+
+ # the following options apply when style is "fixed"
+
+ # fixedfont { Courier } # font family
+ # fixedsize { -1.0p } # font size
+ # fixedline { 1.0vx } # line-space
+ # fixedblanklinescale { 1.0 } # blank-line scale
+ # fixedspace { lout } # spacing mode
+ # fixedtabin { 8 } # tab interval
+ # fixedtabout { 8s } # tab width
+
+ # fixedidentifiers { Base } # identifier face
+ # fixedkeywords { Base } # keyword face
+ # fixedoperators { Base } # operator face
+ # fixednumbers { Base } # number face
+ # fixedstrings { Base } # string face
+ # fixedcomments { Base } # comment face
+ # fixedlinenumbers { Base } # line numbers face
+
+ # fixedidentifiersformat { @Body } # identifiers format
+ # fixedkeywordsformat { @Body } # keywords format
+ # fixedoperatorsformat { @Body } # operators format
+ # fixednumbersformat { @Body } # numbers format
+ # fixedstringsformat { @Body } # strings format
+ # fixedcommentsformat { @Body } # comments format
+ # fixedlinenumbersformat { @Body } # line numbers format
+
+ # the following options apply when style is "varying"
+
+ # varyingfont { } # font family
+ # varyingsize { 1.0f } # font size
+ # varyingline { 1.0vx } # line-space
+ # varyingblanklinescale { 1.0 } # blank-line scale
+ # varyingspace { lout } # spacing mode
+ # varyingtabin { 8 } # tab interval
+ # varyingtabout { 3f } # tab width
+
+ # varyingidentifiers { Slope } # identifier face
+ # varyingkeywords { Bold } # keyword face
+ # varyingoperators { Base } # operator face
+ # varyingnumbers { Base } # number face
+ # varyingstrings { Slope } # string face
+ # varyingcomments { Base } # comment face
+ # varyinglinenumbers { Base } # line numbers face
+
+ # varyingidentifiersformat { @Body } # identifiers format
+ # varyingkeywordsformat { @Body } # keywords format
+ # varyingoperatorsformat { @Body } # operators format
+ # varyingnumbersformat { @Body } # numbers format
+ # varyingstringsformat { @Body } # strings format
+ # varyingcommentsformat { @Body } # comments format
+ # varyinglinenumbersformat { @Body } # line numbers format
+
+ # the following options apply when style is "symbol"
+
+ # symbolfont { } # font family
+ # symbolsize { 1.0f } # font size
+ # symbolline { 1.0vx } # line-space
+ # symbolblanklinescale { 1.0 } # blank-line scale
+ # symbolspace { lout } # spacing mode
+ # symboltabin { 8 } # tab interval
+ # symboltabout { 3f } # tab width
+
+ # symbolidentifiers { Slope } # identifier face
+ # symbolkeywords { Bold } # keyword face
+ # symboloperators { Base } # operator face
+ # symbolnumbers { Base } # number face
+ # symbolstrings { Slope } # string face
+ # symbolcomments { Base } # comment face
+ # symbollinenumbers { Base } # line numbers face
+
+ # symbolidentifiersformat { @Body } # identifiers format
+ # symbolkeywordsformat { @Body } # keywords format
+ # symboloperatorsformat { @Body } # operators format
+ # symbolnumbersformat { @Body } # numbers format
+ # symbolstringsformat { @Body } # strings format
+ # symbolcommentsformat { @Body } # comments format
+ # symbollinenumbersformat { @Body } # line numbers format
+}
diff --git a/include/include/rslf b/include/include/rslf
new file mode 100644
index 0000000..1d8e937
--- /dev/null
+++ b/include/include/rslf
@@ -0,0 +1,504 @@
+# Hey Emacs, this is -*- lout -*- !
+###############################################################################
+# #
+# Lout @RSLSetup package for formatting RSL programs #
+# #
+# Version 1.0 #
+# Darren Bane #
+# 18 February 2003 #
+# #
+# This package uses a filtered body parameter to convert program source #
+# code into Lout source. The filter program is prg2lout, which is #
+# distributed with Lout and should be compiled and installed wherever #
+# Lout itself is. #
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either Version 3, or (at your option) #
+# any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA #
+# #
+# As a special exception, when this file is read by Lout when processing #
+# a Lout source document, you may use the result without restriction. #
+# #
+###############################################################################
+
+export @RSL
+def @RSLSetup
+ named pipe { } # pipe through this first
+ named numbered { No } # want lines numbered?
+ named blanknumbered { Yes } # blank lines numbered?
+ named style
+ named @OrIfPlain left x right y
+ { @BackEnd @Case { PlainText @Yield y else @Yield x } }
+ { symbol @OrIfPlain fixed } # print style
+
+ # the following options apply when style is "fixed"
+ named fixedfont { Courier }# font family
+ named fixedsize { -1.0p } # font size
+ named fixedline { 1.0vx } # line-space
+ named fixedblanklinescale { 1.0 } # blank-line scale
+ named fixedspace { lout } # spacing mode
+ named fixedtabin { 8 } # tab interval
+ named fixedtabout { 8s } # tab width
+
+ named fixedidentifiers { Base } # identifier face
+ named fixedkeywords { Base } # keyword face
+ named fixedoperators { Base } # operator face
+ named fixednumbers { Base } # number face
+ named fixedstrings { Base } # string face
+ named fixedcomments { Base } # comment face
+ named fixedlinenumbers { Base } # line numbers face
+
+ named fixedidentifiersformat right @Body { @Body } # identifier format
+ named fixedkeywordsformat right @Body { @Body } # keyword format
+ named fixedoperatorsformat right @Body { @Body } # operators format
+ named fixednumbersformat right @Body { @Body } # number format
+ named fixedstringsformat right @Body { @Body } # string format
+ named fixedcommentsformat right @Body { @Body } # comment format
+ named fixedlinenumbersformat right @Body { @Body } # line nums format
+
+ # the following options apply when style is "varying"
+ named varyingfont { } # font family
+ named varyingsize { 1.0f } # font size
+ named varyingline { 1.0vx } # line-space
+ named varyingblanklinescale { 1.0 } # blank-line scale
+ named varyingspace { lout } # spacing mode
+ named varyingtabin { 8 } # tab interval
+ named varyingtabout { 3f } # tab width
+
+ named varyingidentifiers { Slope } # identifier face
+ named varyingkeywords { Bold } # keyword face
+ named varyingoperators { Base } # operator face
+ named varyingnumbers { Base } # number face
+ named varyingstrings { Slope } # string face
+ named varyingcomments { Base } # comment face
+ named varyinglinenumbers { Base } # line numbers face
+
+ named varyingidentifiersformat right @Body { @Body } # identifier format
+ named varyingkeywordsformat right @Body { @Body } # keyword format
+ named varyingoperatorsformat right @Body { @Body } # operators format
+ named varyingnumbersformat right @Body { @Body } # number format
+ named varyingstringsformat right @Body { @Body } # string format
+ named varyingcommentsformat right @Body { @Body } # comment format
+ named varyinglinenumbersformat right @Body { @Body } # line nums format
+
+ # the following options apply when style is "symbol"
+ named symbolfont { } # font family
+ named symbolsize { 1.0f } # font size
+ named symbolline { 1.0vx } # line-space
+ named symbolblanklinescale { 1.0 } # blank-line scale
+ named symbolspace { lout } # spacing mode
+ named symboltabin { 8 } # tab interval
+ named symboltabout { 3f } # tab width
+
+ named symbolidentifiers { Slope } # identifier face
+ named symbolkeywords { Bold } # keyword face
+ named symboloperators { Base } # operator face
+ named symbolnumbers { Base } # number face
+ named symbolstrings { Slope } # string face
+ named symbolcomments { Base } # comment face
+ named symbollinenumbers { Base } # line numbers face
+
+ named symbolidentifiersformat right @Body { @Body } # identifier format
+ named symbolkeywordsformat right @Body { @Body } # keyword format
+ named symboloperatorsformat right @Body { @Body } # operators format
+ named symbolnumbersformat right @Body { @Body } # number format
+ named symbolstringsformat right @Body { @Body } # string format
+ named symbolcommentsformat right @Body { @Body } # comment format
+ named symbollinenumbersformat right @Body { @Body } # line nums format
+
+@Begin
+
+ export
+
+ @PI @PK @PO @PN @PS @PC @PL @PA @PM @PD
+ @FA @A @PartialFn @Map @PartialMap @IntChoice @ExtChoice @InfList @Interlock "$>"
+
+ def @RSL
+ named style { style } # style
+ named numbered { numbered } # want numbered lines?
+ named blanknumbered { blanknumbered } # numbered blank lines?
+ named pipe { pipe } # pipe through this first
+ named font { dft } # font family
+ named size { dft } # font size
+ named line { dft } # line-space
+ named blanklinescale { dft } # blank-line scale
+ named space { dft } # spacing mode
+ named tabin { dft } # tab interval
+ named tabout { dft } # tab width
+ named identifiers { dft } # ident. font
+ named keywords { dft } # keyword font
+ named operators { dft } # operator font
+ named numbers { dft } # number font
+ named strings { dft } # string font
+ named comments { dft } # comment font
+ named linenumbers { dft } # line numbers font
+ body @Body # filtered, see below
+ @Begin
+
+ def @Test # returns x unless x is dft
+ left x
+ named iffixed {}
+ named ifvarying {}
+ named ifsymbol {}
+ {
+ x @Case {
+ dft @Yield {
+ style @Case {
+ fixed @Yield { iffixed }
+ varying @Yield { ifvarying }
+ symbol @Yield { ifsymbol }
+ }
+ }
+ else @Yield x
+ }
+ }
+
+
+ def @Else # returns x, or y if x is dft
+ left x
+ right y
+ {
+ x @Case {
+ dft @Yield y
+ else @Yield x
+ }
+ }
+
+
+ def @InitTab
+ {
+ tabin @Test
+ iffixed { fixedtabin }
+ ifvarying { varyingtabin }
+ ifsymbol { symboltabin }
+ }
+
+
+ def @InitTabWidth
+ {
+ tabout @Test
+ iffixed { fixedtabout }
+ ifvarying { varyingtabout }
+ ifsymbol { symboltabout }
+ }
+
+
+ def @Filter
+ {
+ def wantnumbered
+ {
+ numbered @Case {
+ { No no } @Yield ""
+ { Yes yes } @Yield "-L"
+ else @Yield { "-L"numbered }
+ }
+ }
+
+ def wantblanknumbered
+ {
+ blanknumbered @Case {
+ { No no } @Yield "-M"
+ { NoPrint noprint } @Yield "-N"
+ { Yes yes } @Yield ""
+ }
+ }
+
+ pipe @Case {
+ "" @Yield {
+ "prg2lout -r -lRSL" wantblanknumbered wantnumbered
+ -i{@FilterIn} -o{@FilterOut} -e{@FilterErr}
+ -t{@InitTab} -T{@InitTabWidth}
+ }
+ else @Yield {
+ "cat" @FilterIn "|" pipe "|"
+ "prg2lout -r -lRSL" wantblanknumbered wantnumbered
+ -o{@FilterOut} -e{@FilterErr}
+ -t{@InitTab} -T{@InitTabWidth}
+ }
+ }
+ }
+
+
+ def @InitFontFamily
+ {
+ font @Test
+ iffixed { fixedfont }
+ ifvarying { varyingfont }
+ ifsymbol { symbolfont }
+ }
+
+
+ def @InitSize
+ {
+ size @Test
+ iffixed { fixedsize }
+ ifvarying { varyingsize }
+ ifsymbol { symbolsize }
+ }
+
+
+ def @InitLine
+ {
+ line @Test
+ iffixed { fixedline }
+ ifvarying { varyingline }
+ ifsymbol { symbolline }
+ }
+
+
+ def @InitBLS
+ {
+ blanklinescale @Test
+ iffixed { fixedblanklinescale }
+ ifvarying { varyingblanklinescale }
+ ifsymbol { symbolblanklinescale }
+ }
+
+
+ def @InitSpace
+ {
+ space @Test
+ iffixed { fixedspace }
+ ifvarying { varyingspace }
+ ifsymbol { symbolspace }
+ }
+
+
+ def @PI # for formatting identifiers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedidentifiersformat {
+ { identifiers @Else fixedidentifiers } @Font x
+ }
+ varying @Yield varyingidentifiersformat {
+ { identifiers @Else varyingidentifiers } @Font x
+ }
+ symbol @Yield symbolidentifiersformat {
+ { identifiers @Else symbolidentifiers } @Font x
+ }
+ }
+ }
+
+
+ def @PK # for formatting keywords
+ right x
+ {
+ x @Case {
+ "is" @Yield @Sym equivalence
+ "exists" @Yield @Sym existential
+ "all" @Yield @Sym universal
+ else @Yield style @Case {
+ fixed @Yield fixedkeywordsformat {
+ { keywords @Else fixedkeywords } @Font x
+ }
+ varying @Yield varyingkeywordsformat {
+ { keywords @Else varyingkeywords } @Font x
+ }
+ symbol @Yield symbolkeywordsformat {
+ { keywords @Else symbolkeywords } @Font x
+ }
+ }
+ }
+ }
+
+
+ def @PO # for formatting operators
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedoperatorsformat {
+ { operators @Else fixedoperators } @Font x
+ }
+ varying @Yield varyingoperatorsformat {
+ { operators @Else varyingoperators } @Font x
+ }
+ symbol @Yield symboloperatorsformat {
+ { operators @Else symboloperators } @Font x
+ }
+ }
+ }
+
+
+ def @PN # for formatting numbers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixednumbersformat {
+ { numbers @Else fixednumbers } @Font x
+ }
+ varying @Yield varyingnumbersformat {
+ { numbers @Else varyingnumbers } @Font x
+ }
+ symbol @Yield symbolnumbersformat {
+ { numbers @Else symbolnumbers } @Font x
+ }
+ }
+ }
+
+
+ def @PS # for formatting strings
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedstringsformat {
+ { strings @Else fixedstrings } @Font x
+ }
+ varying @Yield varyingstringsformat {
+ { strings @Else varyingstrings } @Font x
+ }
+ symbol @Yield symbolstringsformat {
+ { strings @Else symbolstrings } @Font x
+ }
+ }
+ }
+
+
+ def @PC # for formatting comments
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedcommentsformat {
+ { comments @Else fixedcomments } @Font x
+ }
+ varying @Yield varyingcommentsformat {
+ { comments @Else varyingcomments } @Font x
+ }
+ symbol @Yield symbolcommentsformat {
+ { comments @Else symbolcomments } @Font x
+ }
+ }
+ }
+
+
+ def @PL # for formatting line numbers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedlinenumbersformat {
+ { linenumbers @Else fixedlinenumbers } @Font x
+ }
+ varying @Yield varyinglinenumbersformat {
+ { linenumbers @Else varyinglinenumbers } @Font x
+ }
+ symbol @Yield symbollinenumbersformat {
+ { linenumbers @Else symbollinenumbers } @Font x
+ }
+ }
+ }
+
+
+ def @PA # for formatting asterisks
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "*"
+ else @Yield { "0.5w" @VShift "*" }
+ }
+ }
+
+
+ def @PM # for formatting minus signs
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "-"
+ else @Yield style @Case {
+ fixed @Yield "-"
+ else @Yield { { Symbol Base } @Font @Char "minus" }
+ }
+ }
+ }
+
+
+ def @PD # for formatting dots, if wanted larger
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "."
+ else @Yield { "1.4f" @Font "+0.04f" @VShift "." &"0.05f" }
+ }
+ }
+
+
+ def @FA # for formatting characters from the Adobe Symbol font
+ left sym
+ right x
+ {
+ style @Case {
+ symbol @Yield { sym }
+ else @Yield { x }
+ }
+ }
+
+
+ def @A # get characters from the Adobe Symbol font
+ named sym {}
+ right x
+ {
+ { { Symbol Base } @Font @Char sym } @FA x
+ }
+
+
+ # the following are any sizeable symbols for RSL
+ # i figure they're easier to maintain here than in prg2lout.c
+ def @PartialFn # -~->
+ {
+ @OneRow { &0.2fo @Sym similar ^/0.07f @Sym arrowright }
+ }
+
+
+ def @Map # -m->
+ {
+ @OneRow { @Sym arrowright ^/0.07f &0.2fo 0.7f @Font @I m }
+ }
+
+
+ def @PartialMap # -~m->
+ {
+ @OneRow { &0.2fo @Sym similar ^/0.07f @Sym arrowright /0.07f &0.2fo 0.7f @Font @I m }
+ }
+
+
+ def @IntChoice # |^|
+ {
+ @Sym bracketlefttp &0.5wo @Sym bracketrighttp
+ }
+
+
+ def @ExtChoice # |=|
+ {
+ { @Sym bracketlefttp &0.0fo @Sym bracketleftbt } &0.5wo
+ { @Sym bracketrighttp &0.0fo @Sym bracketrightbt }
+ }
+
+
+ def @InfList # -inflist
+ {
+ @Sup { @Sym omega }
+ }
+
+
+ def @Interlock # ++
+ {
+ { -- } &0.1fo { "||" }
+ }
+
+
+ macro "$>" { {} & }
+
+
+ Programming @Language
+ { @InitFontFamily Base @InitSize } @Font @InitSpace @Space
+ { @InitLine lines "blanklinescale" @InitBLS } @Break @Body
+
+ @End @RSL
+
+@End @RSLSetup
diff --git a/include/include/ruby b/include/include/ruby
new file mode 100644
index 0000000..76ae107
--- /dev/null
+++ b/include/include/ruby
@@ -0,0 +1,118 @@
+###############################################################################
+# #
+# Lout setup file for Ruby program printing #
+# #
+# Version 3.0 #
+# Jeffrey H. Kingston #
+# 5 April 2000 #
+# #
+# This file has been placed in the public domain by its author. #
+# #
+###############################################################################
+
+
+###############################################################################
+# #
+# @SysInclude line #
+# #
+# This line causes Lout to read the definitions for this programming #
+# language, and should not be touched. #
+# #
+###############################################################################
+
+@SysInclude { rubyf }
+
+
+###############################################################################
+# #
+# @Use clause #
+# #
+# To change the default value of any option, delete the # at the start of #
+# its line and change the value between braces. #
+# #
+###############################################################################
+
+@Use { @RubySetup
+ # pipe { } # pipe source through this
+ # numbered { No } # No, Yes, or a line number
+ # numberedblanks { Yes } # No or Yes
+ style { fixed @OrIfPlain fixed } # fixed, varying, or symbol
+
+ # the following options apply when style is "fixed"
+
+ # fixedfont { LetterGothic } # font family
+ # fixedsize { -1.0p } # font size
+ # fixedline { 1.0vx } # line-space
+ # fixedblanklinescale { 1.0 } # blank-line scale
+ # fixedspace { lout } # spacing mode
+ # fixedtabin { 8 } # tab interval
+ # fixedtabout { 8s } # tab width
+
+ # fixedidentifiers { Base } # identifier face
+ # fixedkeywords { Bold } # keyword face
+ # fixedoperators { Base } # operator face
+ # fixednumbers { Base } # number face
+ # fixedstrings { Base } # string face
+ # fixedcomments { Slope } # comment face
+ # fixedlinenumbers { Base } # line numbers face
+
+ # fixedidentifiersformat { @Body } # identifiers format
+ # fixedkeywordsformat { @Body } # keywords format
+ # fixedoperatorsformat { @Body } # operators format
+ # fixednumbersformat { @Body } # numbers format
+ # fixedstringsformat { @Body } # strings format
+ # fixedcommentsformat { @Body } # comments format
+ # fixedlinenumbersformat { @Body } # line numbers format
+
+ # the following options apply when style is "varying"
+
+ # varyingfont { } # font family
+ # varyingsize { 1.0f } # font size
+ # varyingline { 1.0vx } # line-space
+ # varyingblanklinescale { 1.0 } # blank-line scale
+ # varyingspace { lout } # spacing mode
+ # varyingtabin { 8 } # tab interval
+ # varyingtabout { 3f } # tab width
+
+ # varyingidentifiers { Slope } # identifier face
+ # varyingkeywords { Bold } # keyword face
+ # varyingoperators { Base } # operator face
+ # varyingnumbers { Base } # number face
+ # varyingstrings { Slope } # string face
+ # varyingcomments { Base } # comment face
+ # varyinglinenumbers { Base } # line numbers face
+
+ # varyingidentifiersformat { @Body } # identifiers format
+ # varyingkeywordsformat { @Body } # keywords format
+ # varyingoperatorsformat { @Body } # operators format
+ # varyingnumbersformat { @Body } # numbers format
+ # varyingstringsformat { @Body } # strings format
+ # varyingcommentsformat { @Body } # comments format
+ # varyinglinenumbersformat { @Body } # line numbers format
+
+ # the following options apply when style is "symbol"
+
+ # symbolfont { } # font family
+ # symbolsize { 1.0f } # font size
+ # symbolline { 1.0vx } # line-space
+ # symbolblanklinescale { 1.0 } # blank-line scale
+ # symbolspace { lout } # spacing mode
+ # symboltabin { 8 } # tab interval
+ # symboltabout { 3f } # tab width
+
+ # symbolidentifiers { Slope } # identifier face
+ # symbolkeywords { Bold } # keyword face
+ # symboloperators { Base } # operator face
+ # symbolnumbers { Base } # number face
+ # symbolstrings { Slope } # string face
+ # symbolcomments { Base } # comment face
+ # symbollinenumbers { Base } # line numbers face
+
+ # symbolidentifiersformat { @Body } # identifiers format
+ # symbolkeywordsformat { @Body } # keywords format
+ # symboloperatorsformat { @Body } # operators format
+ # symbolnumbersformat { @Body } # numbers format
+ # symbolstringsformat { @Body } # strings format
+ # symbolcommentsformat { @Body } # comments format
+ # symbollinenumbersformat { @Body } # line numbers format
+}
diff --git a/include/include/rubyf b/include/include/rubyf
new file mode 100644
index 0000000..e4636d7
--- /dev/null
+++ b/include/include/rubyf
@@ -0,0 +1,449 @@
+
+###############################################################################
+# #
+# Lout @RubySetup package for formatting Ruby programs #
+# #
+# Version 3.0 #
+# Jeffrey H. Kingston #
+# 5 April 2000 #
+# #
+# This package uses a filtered body parameter to convert program source #
+# code into Lout source. The filter program is prg2lout, which is #
+# distributed with Lout and should be compiled and installed wherever #
+# Lout itself is. #
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either Version 3, or (at your option) #
+# any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA #
+# #
+# As a special exception, when this file is read by Lout when processing #
+# a Lout source document, you may use the result without restriction. #
+# #
+###############################################################################
+
+export @Ruby
+def @RubySetup
+ named pipe { } # pipe through this first
+ named numbered { No } # want lines numbered?
+ named blanknumbered { Yes } # blank lines numbered?
+ named style
+ named @OrIfPlain left x right y
+ { @BackEnd @Case { PlainText @Yield y else @Yield x } }
+ { varying @OrIfPlain fixed } # print style
+
+ # the following options apply when style is "fixed"
+ named fixedfont { Courier }# font family
+ named fixedsize { -1.0p } # font size
+ named fixedline { 1.0vx } # line-space
+ named fixedblanklinescale { 1.0 } # blank-line scale
+ named fixedspace { lout } # spacing mode
+ named fixedtabin { 8 } # tab interval
+ named fixedtabout { 8s } # tab width
+
+ named fixedidentifiers { Base } # identifier face
+ named fixedkeywords { Bold } # keyword face
+ named fixedoperators { Base } # operator face
+ named fixednumbers { Base } # number face
+ named fixedstrings { Base } # string face
+ named fixedcomments { Slope } # comment face
+ named fixedlinenumbers { Base } # line numbers face
+
+ named fixedidentifiersformat right @Body { @Body } # identifier format
+ named fixedkeywordsformat right @Body { @Body } # keyword format
+ named fixedoperatorsformat right @Body { @Body } # operators format
+ named fixednumbersformat right @Body { @Body } # number format
+ named fixedstringsformat right @Body { @Body } # string format
+ named fixedcommentsformat right @Body { @Body } # comment format
+ named fixedlinenumbersformat right @Body { @Body } # line nums format
+
+ # the following options apply when style is "varying"
+ named varyingfont { } # font family
+ named varyingsize { 1.0f } # font size
+ named varyingline { 1.0vx } # line-space
+ named varyingblanklinescale { 1.0 } # blank-line scale
+ named varyingspace { lout } # spacing mode
+ named varyingtabin { 8 } # tab interval
+ named varyingtabout { 3f } # tab width
+
+ named varyingidentifiers { Slope } # identifier face
+ named varyingkeywords { Bold } # keyword face
+ named varyingoperators { Base } # operator face
+ named varyingnumbers { Base } # number face
+ named varyingstrings { Slope } # string face
+ named varyingcomments { Base } # comment face
+ named varyinglinenumbers { Base } # line numbers face
+
+ named varyingidentifiersformat right @Body { @Body } # identifier format
+ named varyingkeywordsformat right @Body { @Body } # keyword format
+ named varyingoperatorsformat right @Body { @Body } # operators format
+ named varyingnumbersformat right @Body { @Body } # number format
+ named varyingstringsformat right @Body { @Body } # string format
+ named varyingcommentsformat right @Body { @Body } # comment format
+ named varyinglinenumbersformat right @Body { @Body } # line nums format
+
+ # the following options apply when style is "symbol"
+ named symbolfont { } # font family
+ named symbolsize { 1.0f } # font size
+ named symbolline { 1.0vx } # line-space
+ named symbolblanklinescale { 1.0 } # blank-line scale
+ named symbolspace { lout } # spacing mode
+ named symboltabin { 8 } # tab interval
+ named symboltabout { 3f } # tab width
+
+ named symbolidentifiers { Slope } # identifier face
+ named symbolkeywords { Bold } # keyword face
+ named symboloperators { Base } # operator face
+ named symbolnumbers { Base } # number face
+ named symbolstrings { Slope } # string face
+ named symbolcomments { Base } # comment face
+ named symbollinenumbers { Base } # line numbers face
+
+ named symbolidentifiersformat right @Body { @Body } # identifier format
+ named symbolkeywordsformat right @Body { @Body } # keyword format
+ named symboloperatorsformat right @Body { @Body } # operators format
+ named symbolnumbersformat right @Body { @Body } # number format
+ named symbolstringsformat right @Body { @Body } # string format
+ named symbolcommentsformat right @Body { @Body } # comment format
+ named symbollinenumbersformat right @Body { @Body } # line nums format
+
+@Begin
+
+ export
+
+ @PI @PK @PO @PN @PS @PC @PL @PA @PM @PD
+ @A "$>"
+
+ def @Ruby
+ named style { style } # style
+ named numbered { numbered } # want numbered lines?
+ named blanknumbered { blanknumbered } # numbered blank lines?
+ named pipe { pipe } # pipe through this first
+ named font { dft } # font family
+ named size { dft } # font size
+ named line { dft } # line-space
+ named blanklinescale { dft } # blank-line scale
+ named space { dft } # spacing mode
+ named tabin { dft } # tab interval
+ named tabout { dft } # tab width
+ named identifiers { dft } # ident. font
+ named keywords { dft } # keyword font
+ named operators { dft } # operator font
+ named numbers { dft } # number font
+ named strings { dft } # string font
+ named comments { dft } # comment font
+ named linenumbers { dft } # line numbers font
+ body @Body # filtered, see below
+ @Begin
+
+ def @Test # returns x unless x is dft
+ left x
+ named iffixed {}
+ named ifvarying {}
+ named ifsymbol {}
+ {
+ x @Case {
+ dft @Yield {
+ style @Case {
+ fixed @Yield { iffixed }
+ varying @Yield { ifvarying }
+ symbol @Yield { ifsymbol }
+ }
+ }
+ else @Yield x
+ }
+ }
+
+
+ def @Else # returns x, or y if x is dft
+ left x
+ right y
+ {
+ x @Case {
+ dft @Yield y
+ else @Yield x
+ }
+ }
+
+
+ def @InitTab
+ {
+ tabin @Test
+ iffixed { fixedtabin }
+ ifvarying { varyingtabin }
+ ifsymbol { symboltabin }
+ }
+
+
+ def @InitTabWidth
+ {
+ tabout @Test
+ iffixed { fixedtabout }
+ ifvarying { varyingtabout }
+ ifsymbol { symboltabout }
+ }
+
+
+ def @Filter
+ {
+ def wantnumbered
+ {
+ numbered @Case {
+ { No no } @Yield ""
+ { Yes yes } @Yield "-L"
+ else @Yield { "-L"numbered }
+ }
+ }
+
+ def wantblanknumbered
+ {
+ blanknumbered @Case {
+ { No no } @Yield "-M"
+ { NoPrint noprint } @Yield "-N"
+ { Yes yes } @Yield ""
+ }
+ }
+
+ pipe @Case {
+ "" @Yield {
+ "prg2lout -r -lRuby" wantblanknumbered wantnumbered
+ -i{@FilterIn} -o{@FilterOut} -e{@FilterErr}
+ -t{@InitTab} -T{@InitTabWidth}
+ }
+ else @Yield {
+ "cat" @FilterIn "|" pipe "|"
+ "prg2lout -r -lRuby" wantblanknumbered wantnumbered
+ -o{@FilterOut} -e{@FilterErr}
+ -t{@InitTab} -T{@InitTabWidth}
+ }
+ }
+ }
+
+
+ def @InitFontFamily
+ {
+ font @Test
+ iffixed { fixedfont }
+ ifvarying { varyingfont }
+ ifsymbol { symbolfont }
+ }
+
+
+ def @InitSize
+ {
+ size @Test
+ iffixed { fixedsize }
+ ifvarying { varyingsize }
+ ifsymbol { symbolsize }
+ }
+
+
+ def @InitLine
+ {
+ line @Test
+ iffixed { fixedline }
+ ifvarying { varyingline }
+ ifsymbol { symbolline }
+ }
+
+
+ def @InitBLS
+ {
+ blanklinescale @Test
+ iffixed { fixedblanklinescale }
+ ifvarying { varyingblanklinescale }
+ ifsymbol { symbolblanklinescale }
+ }
+
+
+ def @InitSpace
+ {
+ space @Test
+ iffixed { fixedspace }
+ ifvarying { varyingspace }
+ ifsymbol { symbolspace }
+ }
+
+
+ def @PI # for formatting identifiers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedidentifiersformat {
+ { identifiers @Else fixedidentifiers } @Font x
+ }
+ varying @Yield varyingidentifiersformat {
+ { identifiers @Else varyingidentifiers } @Font x
+ }
+ symbol @Yield symbolidentifiersformat {
+ { identifiers @Else symbolidentifiers } @Font x
+ }
+ }
+ }
+
+
+ def @PK # for formatting keywords
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedkeywordsformat {
+ { keywords @Else fixedkeywords } @Font x
+ }
+ varying @Yield varyingkeywordsformat {
+ { keywords @Else varyingkeywords } @Font x
+ }
+ symbol @Yield symbolkeywordsformat {
+ { keywords @Else symbolkeywords } @Font x
+ }
+ }
+ }
+
+
+ def @PO # for formatting operators
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedoperatorsformat {
+ { operators @Else fixedoperators } @Font x
+ }
+ varying @Yield varyingoperatorsformat {
+ { operators @Else varyingoperators } @Font x
+ }
+ symbol @Yield symboloperatorsformat {
+ { operators @Else symboloperators } @Font x
+ }
+ }
+ }
+
+
+ def @PN # for formatting numbers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixednumbersformat {
+ { numbers @Else fixednumbers } @Font x
+ }
+ varying @Yield varyingnumbersformat {
+ { numbers @Else varyingnumbers } @Font x
+ }
+ symbol @Yield symbolnumbersformat {
+ { numbers @Else symbolnumbers } @Font x
+ }
+ }
+ }
+
+
+ export "'''"
+ def @PS # for formatting strings
+ body x
+ {
+ def "'''" { "'''" }
+
+ style @Case {
+ fixed @Yield fixedstringsformat {
+ { strings @Else fixedstrings } @Font x
+ }
+ varying @Yield varyingstringsformat {
+ { strings @Else varyingstrings } @Font x
+ }
+ symbol @Yield symbolstringsformat {
+ { strings @Else symbolstrings } @Font x
+ }
+ }
+ }
+
+
+ def @PC # for formatting comments
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedcommentsformat {
+ { comments @Else fixedcomments } @Font x
+ }
+ varying @Yield varyingcommentsformat {
+ { comments @Else varyingcomments } @Font x
+ }
+ symbol @Yield symbolcommentsformat {
+ { comments @Else symbolcomments } @Font x
+ }
+ }
+ }
+
+
+ def @PL # for formatting line numbers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedlinenumbersformat {
+ { linenumbers @Else fixedlinenumbers } @Font x
+ }
+ varying @Yield varyinglinenumbersformat {
+ { linenumbers @Else varyinglinenumbers } @Font x
+ }
+ symbol @Yield symbollinenumbersformat {
+ { linenumbers @Else symbollinenumbers } @Font x
+ }
+ }
+ }
+
+
+ def @PA # for formatting asterisks
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "*"
+ else @Yield { "0.5w" @VShift "*" }
+ }
+ }
+
+
+ def @PM # for formatting minus signs
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "-"
+ else @Yield style @Case {
+ fixed @Yield "-"
+ else @Yield { { Symbol Base } @Font @Char "minus" }
+ }
+ }
+ }
+
+
+ def @PD # for formatting dots, if wanted larger
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "."
+ else @Yield { "1.4f" @Font "+0.04f" @VShift "." &"0.05f" }
+ }
+ }
+
+
+ def @A # get characters from the Adobe Symbol font
+ named sym {}
+ right x
+ {
+ style @Case {
+ symbol @Yield { { Symbol Base } @Font @Char sym }
+ else @Yield { x }
+ }
+ }
+
+
+ macro "$>" { {} & }
+
+
+ Programming @Language
+ { @InitFontFamily Base @InitSize } @Font @InitSpace @Space
+ { @InitLine lines "blanklinescale" @InitBLS } @Break @Body
+
+ @End @Ruby
+
+@End @RubySetup
diff --git a/include/include/russian b/include/include/russian
new file mode 100644
index 0000000..0652a61
--- /dev/null
+++ b/include/include/russian
@@ -0,0 +1,12 @@
+#################################################################
+# #
+# russian #
+# #
+# This file includes everything you need for Russian. #
+# #
+# This file has been placed in the public domain. #
+# #
+#################################################################
+
+# Commented out because these fonts are not distributed with Lout.
+# @SysInclude { russian.fd }
diff --git a/include/include/russian.fd b/include/include/russian.fd
new file mode 100644
index 0000000..5a790cb
--- /dev/null
+++ b/include/include/russian.fd
@@ -0,0 +1,40 @@
+##################################################################################################################
+# #
+# Russian font definitions. Use a very wide window to see them clearly. #
+# #
+# This file has been placed in the public domain by its author. #
+# #
+# Lout font Lout font PostScript PostScript font metrics Lout character Recode/ #
+# family name face name font name (formerly .AFM) file name mapping file NoRecode #
+# #
+##################################################################################################################
+
+fontdef Academy Base { Academy Aca koi8r.LCM Recode }
+fontdef Academy Slope { Academy-Italic Aca-It koi8r.LCM Recode }
+fontdef Academy Bold { Academy-Bold Aca-Bd koi8r.LCM Recode }
+fontdef Academy BoldSlope { Academy-Italic Aca-It koi8r.LCM Recode }
+fontdef Academy Italic { Academy-Italic Aca-It koi8r.LCM Recode }
+
+fontdef Antiqua Base { Antiqua Ant koi8r.LCM Recode }
+fontdef Antiqua Slope { Antiqua-Italic Ant-It koi8r.LCM Recode }
+fontdef Antiqua Bold { Antiqua-Bold Ant-Bd koi8r.LCM Recode }
+fontdef Antiqua BoldSlope { Antiqua-Italic Ant-It koi8r.LCM Recode }
+fontdef Antiqua Italic { Antiqua-Italic Ant-It koi8r.LCM Recode }
+
+fontdef College Base { College Col koi8r.LCM Recode }
+fontdef College Slope { College-Italic Col-It koi8r.LCM Recode }
+fontdef College Bold { College-Bold Col-Bd koi8r.LCM Recode }
+fontdef College BoldSlope { College-Italic Col-It koi8r.LCM Recode }
+fontdef College Italic { College-Italic Col-It koi8r.LCM Recode }
+
+fontdef Magazine Base { Magazine Mag koi8r.LCM Recode }
+fontdef Magazine Slope { Magazine-Italic Mag-It koi8r.LCM Recode }
+fontdef Magazine Bold { Magazine-Bold Mag-Bd koi8r.LCM Recode }
+fontdef Magazine BoldSlope { Magazine-Italic Mag-It koi8r.LCM Recode }
+fontdef Magazine Italic { Magazine-Italic Mag-It koi8r.LCM Recode }
+
+fontdef Textbook Base { Textbook Txt koi8r.LCM Recode }
+fontdef Textbook Slope { Textbook-Italic Txt-It koi8r.LCM Recode }
+fontdef Textbook Bold { Textbook-Bold Txt-Bd koi8r.LCM Recode }
+fontdef Textbook BoldSlope { Textbook-Italic Txt-It koi8r.LCM Recode }
+fontdef Textbook Italic { Textbook-Italic Txt-It koi8r.LCM Recode }
diff --git a/include/include/slides b/include/include/slides
new file mode 100644
index 0000000..d1136fb
--- /dev/null
+++ b/include/include/slides
@@ -0,0 +1,412 @@
+###############################################################################
+# #
+# Lout setup file for overhead transparencies #
+# #
+# Jeffrey H. Kingston #
+# #
+# This file has been placed in the public domain by its author. #
+# #
+###############################################################################
+
+
+###############################################################################
+# #
+# @SysInclude commands for standard packages. #
+# #
+###############################################################################
+
+ @SysInclude { langdefs } # language definitions
+ @SysInclude { bsf } # BasicSetup package
+ @SysInclude { dsf } # DocumentSetup package
+ @SysInclude { slidesf } # OverheadSetup extension
+
+
+###############################################################################
+# #
+# @Include command for reading personal definitions from current directory. #
+# #
+###############################################################################
+
+ @Include { mydefs }
+
+
+###############################################################################
+# #
+# The @BasicSetup @Use clause - basics, lists, paragraphs, displays. #
+# #
+# To change the default value of any option, delete the # at the start of #
+# its line and change the value between braces. #
+# #
+###############################################################################
+
+@Use { @BasicSetup
+ # @InitialFont { Times Base 12p } # initial font
+ @InitialFont { Times Base 20p } # initial font
+ # @InitialBreak {{adjust 1.2fx hyphen} @OrIfPlain {ragged 1fx nohyphen}}
+ @InitialBreak { ragged 1.2fx nohyphen } # initial break
+ # @InitialOutdent { 2f @OrIfPlain 4s } # initial outdent
+ # @InitialSpace { lout } # initial space style
+ # @InitialLanguage { English } # initial language
+ # @InitialColour { black } # initial colour
+ # @InitialBackgroundColour { white } # initial background colour
+ # @OptimizePages { No } # optimize page breaks?
+ # @HeadingFont { Bold } # font for @Heading
+ # @FixedWidthFont { Courier Base -1p } # font for @F
+ # @ParaGap { 1.3vx @OrIfPlain 1f } # gap between paragraphs
+ # @ParaIndent { 2.00f @OrIfPlain 5s } # first-line indent for @PP
+ # @DisplayGap { 1.00v @OrIfPlain 1f } # gap above, below displays
+ # @DisplayIndent { 2.00f @OrIfPlain 5s } # @IndentedDisplay indent
+ # @DefaultIndent { 0.5rt } # @Display indent
+ # @DisplayNumStyle { (num) } # style of display numbers
+ # @WideIndent { 4.00f @OrIfPlain 10s } # @WideTaggedList indent
+ # @VeryWideIndent { 8.00f @OrIfPlain 20s } # @VeryWideTaggedList indent
+ # @ListOuterGap { 1.00v @OrIfPlain 1f } # gap before, after lists
+ # @ListGap { 1.00v @OrIfPlain 1f } # gap between list items
+ # @ListIndent { 0s } # indent of list items
+ # @ListRightIndent { 0s } # right indent of list items
+ # @ListLabelWidth { 2.00f @OrIfPlain 5s } # width allowed for list tags
+ # @ListLabelRight { No } # right-adjust list labels
+ # @ListLabelRightGap { 2s } # gap when right-adjusting
+ # @ListFont { } # font of list items
+ # @ListBreak { } # break style of list items
+ # @NumberSeparator { . } # separates nums like 2.3.7
+ # @CrossLinkFormat { @Body } # format of cross links
+ # @ExternalLinkFormat { @Body } # format of external links
+}
+
+
+###############################################################################
+# #
+# The @DocumentSetup @Use clause - page layout plus figures, tables, etc. #
+# #
+# To change the default value of any option, delete the # at the start of #
+# its line and change the value between braces. #
+# #
+###############################################################################
+
+@Use { @DocumentSetup
+ # @PageType { A4 @OrIfPlain Other} # page type (width, height)
+ # @PageWidth { 80s } # page width if type Other
+ # @PageHeight { 66f } # page height if type Other
+ # @PageOrientation { Portrait } # Portrait, Landscape, etc.
+ # @PageBackground { } # background of each page
+ # @TopMargin { 2.5c @OrIfPlain 6f } # top margin of all pages
+ # @FootMargin { 2.5c @OrIfPlain 6f } # bottom margin of all pages
+ @FootMargin { 5.00c } # bottom margin of all pages
+ # @OddLeftMargin { 2.5c @OrIfPlain 10s } # left margin of odd pages
+ # @OddRightMargin { 2.5c @OrIfPlain 10s } # right margin of odd pages
+ # @EvenLeftMargin { 2.5c @OrIfPlain 10s } # left margin of even pages
+ # @EvenRightMargin { 2.5c @OrIfPlain 10s } # right margin of even pages
+ # @OddLeftBodyMargin { 0c } # extra margin for page body
+ # @OddRightBodyMargin { 0c } # extra margin for page body
+ # @EvenLeftBodyMargin { 0c } # extra margin for page body
+ # @EvenRightBodyMargin{ 0c } # extra margin for page body
+ # @PageBoxType { None } # None Box CurveBox ShadowBox
+ # @PageBoxMargin { 1.00c } # page box margin
+ # @PageBoxLineWidth { } # page box line thickness
+ # @PageBoxPaint { none } # page box paint
+ # @PageBoxShadow { 0.60c } # shadow margin if ShadowBox
+ # @PageEnclose { @Body } # enclose every page in this
+ # @ColumnNumber { 1 } # number of columns (1 to 10)
+ # @ColumnGap { 1.00c @OrIfPlain 6s } # column gap
+
+ # @FigureLocation { PageTop } # default figure location
+ # @FigureFormat { @CC @Body } # default figure format
+ # @FigureWord { figure } # "Figure" word else anything
+ # @FigureNumbers { Arabic } # method of numbering figures
+ # @FigureCaptionPos { Below } # Above or Below
+ # @FigureCaptionFont { -2p } # figure caption font
+ # @FigureCaptionBreak { adjust hyphen 1.2fx } # figure caption break
+ # @FigureCaptionFormat{ {@B { word @NumSep number. &2s }} @Insert caption }
+ # @MakeFigureContents { No } # list of figures at start
+
+ # @TableLocation { PageTop } # default table location
+ # @TableFormat { @CC @Body } # default table format
+ # @TableWord { table } # "Table" word else anything
+ # @TableNumbers { Arabic } # method of numbering tables
+ # @TableCaptionPos { Below } # Above or Below
+ # @TableCaptionFont { -2p } # table caption font
+ # @TableCaptionBreak { adjust hyphen 1.2fx } # table caption break
+ # @TableCaptionFormat { {@B { word @NumSep number. &2s }} @Insert caption }
+ # @MakeTableContents { No } # list of tables at start
+
+ # @FloaterLocation { PageTop } # default floater location
+ # @FloaterFormat { @CC @Body } # default floater format
+ # @FloaterWord { floater } # "Floater" word else anything
+ # @FloaterNumbers { Arabic } # method of numbering floaters
+ # @FloaterCaptionPos { Below } # Above or Below
+ # @FloaterCaptionFont { -2p } # floater caption font
+ # @FloaterCaptionBreak{ adjust hyphen 1.2fx } # floater caption break
+ # @FloaterCaptionFormat{ {@B { word @NumSep number. &2s }} @Insert caption }
+ # @MakeFloaterContents{ No } # list of floaters at start
+
+ # @MakeContents { No } # make contents? Yes or No
+ # @ContentsGap { 0.20v @OrIfPlain 0f } # extra gap above minor entry
+ @ContentsGapAbove { 0.00v @OrIfPlain 1f } # extra gap above major entry
+ # @ContentsGapBelow { 0.00v @OrIfPlain 0f } # extra gap below major entry
+ @ContentsFont { Base } # font for major entry
+ # @ContentsPartGapAbove { 1.00v @OrIfPlain 1f } # extra gap above `part' entry
+ # @ContentsPartGapBelow { 0.00v @OrIfPlain 0f } # extra gap below `part' entry
+ # @ContentsFormat { number @DotSep title } # contents entry format
+ # @ContentsLeader { .. } # leader symbol in contents
+ # @ContentsLeaderGap { 4s @OrIfPlain 2s } # gap between leaders
+ # @ContentsRightWidth { 3f @OrIfPlain 6s } # page numbers column width
+
+ # @MakeReferences { Yes } # make references? Yes or No
+ # @RefCiteStyle { [cite] } # citation style
+ # @RefCiteLabels { @RefNum } # citation items
+ # @RefNumbers { Arabic } # reference numbers
+ # @RefListFormat { Labels } # NoLabels, Labels, etc.
+ # @RefListLabels { [@RefNum] } # ref list label format
+ # @RefListTitle { references } # title of reference list
+ # @ChapRefListTitle { references } # title of chapter ref list
+ # @RefListIndent { 0s } # indent to left of labels
+ # @RefListRightIndent { 0s } # indent to right of items
+ # @RefListGap { @ListGap } # gap between ref list items
+ # @RefListFont { } # font used in reference list
+ # @RefListBreak { } # break style of ref list
+ # @RefListLabelWidth { @ListLabelWidth } # Labels column width
+ # @RefListSortKey { @Tag } # sorting key
+
+ # @MakeGlossary { No } # make glossary? Yes or No
+ # @GlossaryText { @Null } # glossary initial text
+ # @GlossaryFont { } # glossary entries font
+ # @GlossaryBreak { } # glossary entries break
+ # @GlossaryFormat { +3p @Font @S @Name # glossary entries format
+ # @Right @I { @Word&&page @PageNum }
+ # @DP @RawIndentedDisplay @Body }
+ # @GlossaryGap { @DisplayGap } # gap between glossary entries
+ # @GlossaryColumnNumber{ 2 } # glossary columns (1 to 10)
+ # @GlossaryColumnGap { 1.00c @OrIfPlain 6s } # glossary column gap
+ # @InGlossaryFont { smallcaps } # font for @InGlossary
+ # @InGlossaryFormat { @Body } # format for @InGlossary
+
+ # @MakeIndex { No } # make index? Yes or No
+ # @MakeIndex { No } # make index? Yes or No
+ # @IndexText { @Null } # index initial text
+ # @IndexFont { } # index entries font
+ # @IndexBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break
+ # @IndexFormat { @Body } # @Index format
+ # @SubIndexFormat { {1f @Wide}@Body } # @SubIndex format
+ # @SubSubIndexFormat { {2f @Wide}@Body } # @SubSubIndex format
+ # @IndexTypeOrdinary { @PageNum } # Ordinary pagenum format
+ # @IndexTypeMain { @B @PageNum } # Main pagenum format
+ # @IndexTypeSpecial { @I @PageNum } # Special pagenum format
+ # @IndexRangeFormat { @From--@To } # index page range format
+ # @IndexColumnNumber { 2 } # index columns (1 to 10)
+ # @IndexColumnGap { 1.00c @OrIfPlain 6s } # index column gap
+ # @IndexCtd { Yes } # include (ctd.) lines
+ # @IndexCtdWord { continued } # "ctd." in current lang.
+ # @IndexCtdFormat { @Body @I (@CtdWord) } # format of ctd.
+ # @IndexSpacerAbove { 2v } # space above index spacer
+ # @IndexSpacerBelow { 1v } # space below index spacer
+ # @IndexSpacerFont { +3p } # font of index spacer
+ # @IndexSpacerFormat { @Body } # format of index spacer
+
+ # @MakeIndexA { No } # make index A? Yes or No
+ # @IndexAText { @Null } # index A initial text
+ # @IndexAFont { } # index A entries font
+ # @IndexABreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break
+ # @IndexAFormat { @Body } # @IndexA format
+ # @SubIndexAFormat { {1f @Wide}@Body } # @SubIndexA format
+ # @SubSubIndexAFormat { {2f @Wide}@Body } # @SubSubIndexA format
+ # @IndexATypeOrdinary { @PageNum } # Ordinary pagenum format
+ # @IndexATypeMain { @B @PageNum } # Main pagenum format
+ # @IndexATypeSpecial { @I @PageNum } # Special pagenum format
+ # @IndexARangeFormat { @From--@To } # index page range format
+ # @IndexAColumnNumber { 2 } # index A columns (1 to 10)
+ # @IndexAColumnGap { 1.00c @OrIfPlain 6s } # index A column gap
+ # @IndexACtd { Yes } # include (ctd.) lines
+ # @IndexACtdWord { continued } # "ctd." in current lang.
+ # @IndexACtdFormat { @Body @I (@CtdWord) } # format of ctd.
+ # @IndexASpacerAbove { 2v } # space above index A spacer
+ # @IndexASpacerBelow { 1v } # space below index A spacer
+ # @IndexASpacerFont { +3p } # font of index A spacer
+ # @IndexASpacerFormat { @Body } # format of index A spacer
+
+ # @MakeIndexB { No } # make index B? Yes or No
+ # @IndexBText { @Null } # index B initial text
+ # @IndexBFont { } # index B entries font
+ # @IndexBBreak { {oragged 1.2fx} @OrIfPlain {oragged 1fx} } # and break
+ # @IndexBFormat { @Body } # @IndexB format
+ # @SubIndexBFormat { {1f @Wide}@Body } # @SubIndexB format
+ # @SubSubIndexBFormat { {2f @Wide}@Body } # @SubSubIndexB format
+ # @IndexBTypeOrdinary { @PageNum } # Ordinary pagenum format
+ # @IndexBTypeMain { @B @PageNum } # Main pagenum format
+ # @IndexBTypeSpecial { @I @PageNum } # Special pagenum format
+ # @IndexBRangeFormat { @From--@To } # index page range format
+ # @IndexBColumnNumber { 2 } # index B columns (1 to 10)
+ # @IndexBColumnGap { 1.00c @OrIfPlain 6s } # index B column gap
+ # @IndexBCtd { Yes } # include (ctd.) lines
+ # @IndexBCtdWord { continued } # "ctd." in current lang.
+ # @IndexBCtdFormat { @Body @I (@CtdWord) } # format of ctd.
+ # @IndexBSpacerAbove { 2v } # space above index B spacer
+ # @IndexBSpacerBelow { 1v } # space below index B spacer
+ # @IndexBSpacerFont { +3p } # font of index B spacer
+ # @IndexBSpacerFormat { @Body } # format of index B spacer
+
+ # @TopGap { 0.75c @OrIfPlain 2f } # gap between figures
+ # @MidGap { 0.75c @OrIfPlain 2f } # gap above/below body text
+
+ # @FootNoteNumbers { Arabic } # footnote numbers
+ # @FootNoteThrough { No } # numbered through chapter?
+ # @FootNoteLocation { ColFoot } # where the footnote appears
+ # @FootNoteFont { 0.80f } # font for footnotes
+ # @FootNoteBreak { 1.2fx @OrIfPlain 1fx } # break for footnotes
+ # @FootNoteFormat { { number &0.05f } @Insert body } # footnote format
+ # @FootLen { 2.00c @OrIfPlain 10s } # length of footnote line
+ # @FootAboveGap { @DisplayGap } # gap above footnote line
+ # @FootGap { 0.20c @OrIfPlain 1fx } # gap between footnotes
+ # @MarginNoteFont { 0.80f } # font of margin notes
+ # @MarginNoteBreak { ragged 1.10fx } # break style of margin notes
+ # @MarginNoteHGap { 0.5c } # horizontal gap to notes
+ # @MarginNoteVGap { @DisplayGap } # min vertical gap between
+ # @MarginNoteWidth { 1.50c } # width of margin notes
+ # @EndNoteNumbers { Arabic } # endnote numbers
+ # @EndNoteFont { 0.80f } # font of endnotes
+ # @EndNoteBreak { 1.2fx @OrIfPlain 1fx } # break for endnotes
+ # @EndNoteFormat { { number &0.05f } @Insert body } # endnote format
+ # @EndNoteGap { 0.20c @OrIfPlain 1f } # gap between endnotes
+
+ # @TheoremWord { theorem } # "Theorem" word, etc.
+ # @TheoremTitleFormat { (title) } # only if title present
+ # @TheoremFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @DefinitionWord { definition } # "Definition" word, etc.
+ # @DefinitionTitleFormat { (title) } # only if title present
+ # @DefinitionFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @ClaimWord { claim } # "Claim" word, etc.
+ # @ClaimTitleFormat { (title) } # only if title present
+ # @ClaimFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @PropositionWord { proposition } # "Proposition" word, etc.
+ # @PropositionTitleFormat { (title) } # only if title present
+ # @PropositionFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @LemmaWord { lemma } # "Lemma" word, etc.
+ # @LemmaTitleFormat { (title) } # only if title present
+ # @LemmaFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @CorollaryWord { corollary } # "Corollary" word, etc.
+ # @CorollaryTitleFormat { (title) } # only if title present
+ # @CorollaryFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @ExampleWord { example } # "Example" word, etc.
+ # @ExampleTitleFormat { (title) } # only if title present
+ # @ExampleFormat { {@B { word @NumSep number title: } &2s} @Insert body }
+ # @ProofWord { proof } # "Proof" word, etc.
+
+ # @PageHeaders { Simple } # None Simple Titles NoTitles
+ @PageHeaders { Titles } # None Simple Titles NoTitles
+ # @PageNumbers { Arabic } # page numbers
+ # @FirstPageNumber { 1 } # number of first page
+ # @IntroPageNumbers { Roman } # intro page numbers
+ # @IntroFirstPageNumber{ 1 } # number of first intro page
+ # @StructPageNums { No } # make structured page numbers
+ # @PageNumberFormat { number } # format of all page numbers
+
+ # @OddTop { @Centre{- @PageNum -} } # Simple page headers
+ # @OddFoot { @Null }
+ # @EvenTop { @Centre{- @PageNum -} }
+ # @EvenFoot { @Null }
+ # @StartOddTop { @Null }
+ # @StartOddFoot { @Null }
+ # @StartEvenTop { @Null }
+ # @StartEvenFoot { @Null }
+ # @IntroOddTop { @Null }
+ # @IntroOddFoot { @Centre @PageNum }
+ # @IntroEvenTop { @Null }
+ # @IntroEvenFoot { @Centre @PageNum }
+ # @IntroStartOddTop { @Null }
+ # @IntroStartOddFoot { @Null }
+ # @IntroStartEvenTop { @Null }
+ # @IntroStartEvenFoot { @Null }
+
+ # Titles, NoTitles headers
+ # @RunningOddTop { @I {@MinorNum @DotSep @MinorTitle} @Right @B @PageNum }
+ @RunningOddTop { 8p @Font {@MajorTitle @MinorNum @Right @PageNum} }
+ # @RunningOddFoot { @Null }
+ @RunningOddFoot { @Null }
+ # @RunningEvenTop { @B @PageNum @Right @I {@MajorNum @DotSep @MajorTitle} }
+ @RunningEvenTop { 8p @Font {@MajorTitle @MinorNum @Right @PageNum} }
+ # @RunningEvenFoot { @Null }
+ @RunningEvenFoot { @Null }
+ # @RunningStartOddTop { @Null }
+ @RunningStartOddTop { 8p @Font { @MajorTitle @MinorNum @Right @PageNum } }
+ # @RunningStartOddFoot { @Centre { Bold 0.8f } @Font @PageNum }
+ @RunningStartOddFoot { @Null }
+ # @RunningStartEvenTop { @Null }
+ @RunningStartEvenTop { 8p @Font { @MajorTitle @MinorNum @Right @PageNum } }
+ # @RunningStartEvenFoot { @Centre { Bold 0.8f } @Font @PageNum }
+ @RunningStartEvenFoot { @Null }
+ # @RunningIntroOddTop { @Null }
+ # @RunningIntroOddFoot { @Right @PageNum }
+ # @RunningIntroEvenTop { @Null }
+ # @RunningIntroEvenFoot { @PageNum }
+ # @RunningIntroStartOddTop { @Null }
+ # @RunningIntroStartOddFoot { @Null }
+ # @RunningIntroStartEvenTop { @Null }
+ # @RunningIntroStartEvenFoot { @Null }
+}
+
+
+###############################################################################
+# #
+# The @OverheadSetup @Use clause - options specific to overheads. #
+# #
+###############################################################################
+
+@Use { @OverheadSetup
+ # @DateLine { No } # No, Yes, or a date
+ # @ContentsWord { contents } # word for "Contents"
+ # @LectureWord { lecture } # word for "Lecture"
+ # @OverheadWord { } # word for "Overhead"
+ # @LectureNumbers { Arabic } # kind of lecture numbers
+ # @FirstLectureNumber { 1 } # first lecture num
+ # @OverheadNumbers { Arabic } # kind of overhead numbers
+ # @FirstOverheadNumber { 1 } # first overhead num
+ # @TitlePageFont { Helvetica Base 1.5f } # title page font
+ # @TitleFormat { @Center clines @Break title } # title line
+ # @AuthorFormat { @Center clines @Break author } # author line
+ # @InstitutionFormat { @Center clines @Break @I institution } # inst
+ # @DateLineFormat { @Center date } # date line
+ # @AboveTitleGap { 0.5i } # gap above title
+ # @AboveAuthorGap { 1.0i } # gap above author
+ # @AboveInstitutionGap { 0.5i } # gap above inst
+ # @AboveDateLineGap { 0.5i } # gap above date
+ # @LectureHeadingFont { Bold 1.2f } # lecture head font
+ # @LectureHeadingBreak { clines 1.2fx nohyphen } # lecture head break
+ # @LectureHeadingFormat { @Centre number @DP @Centre title @DP }
+ # @AboveLectureGap { 3.0f } # gap above lec head
+ # @OverheadHeadingFont { Bold } # overhead head font
+ # @OverheadHeadingBreak { 1.2fx nohyphen } # overhead head break
+ # @OverheadHeadingFormat { @Centre title @DP } # overhead head format
+ # @OverheadFormat { @Body } # overhead body format
+ # @AboveOverheadGap { 1.0f } # gap above over head
+ # @LectureInContents { Yes } # add lectures to contents
+ # @OverheadInContents { No } # add overheads to contents
+ # @ReferencesInContents { Yes } # add references to contents
+ # @LectureContentsIndent { 0f } # contents indent of lectures
+ # @OverheadInLectureContentsIndent { 2f } # .. of overhead within lec
+ # @OverheadContentsIndent { 0f } # .. of stand-alone overhead
+ # @ReferencesContentsIndent { 0f } # .. of references
+ # @LectureNumInTheorems { Yes } # theorem num has lecture num
+ # @OverheadNumInTheorems { No } # theorem num has overhead num
+ # @LectureNumInDisplays { Yes } # display num has lecture num
+ # @OverheadNumInDisplays { No } # display num has overhead num
+ # @LectureNumInFigures { Yes } # figure num has lecture num
+ # @OverheadNumInFigures { No } # figure num has overhead num
+ # @LectureNumInTables { Yes } # table num has lecture num
+ # @OverheadNumInTables { No } # table num has overhead num
+ # @LectureNumInFloaters { Yes } # floater num has lecture num
+ # @OverheadNumInFloaters { No } # floater num has overhead num
+ # @LectureNumInRunners { Yes } # running head has lecture num
+ # @OverheadNumInRunners { Yes } # running head has overhd num
+ # @LecturePrefix { } # for structured page nums
+ # @OverheadPrefix { } # for structured page nums
+}
+
+
+###############################################################################
+# #
+# @Database (and @SysDatabase) clauses go here. #
+# #
+###############################################################################
+
+@SysDatabase @FontDef { fontdefs } # font definitions
+@SysDatabase @RefStyle { refstyle } # reference printing styles
diff --git a/include/include/slidesf b/include/include/slidesf
new file mode 100644
index 0000000..0759817
--- /dev/null
+++ b/include/include/slidesf
@@ -0,0 +1,414 @@
+
+###########################################################################
+# #
+# @OverheadSetup extension to @DocumentSetup. #
+# #
+# Jeffrey H. Kingston #
+# #
+# This package extends DocumentSetup with definitions for overheads. #
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either Version 3, or (at your option) #
+# any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA #
+# #
+# As a special exception, when this file is read by Lout when processing #
+# a Lout source document, you may use the result without restriction. #
+# #
+###########################################################################
+
+extend @BasicSetup @DocumentSetup
+export @OverheadTransparencies @Lecture @Overhead
+def @OverheadSetup
+ named @DateLine { No }
+ named @ContentsWord { contents }
+ named @LectureWord { lecture }
+ named @OverheadWord { }
+ named @LectureNumbers { Arabic }
+ named @FirstLectureNumber { 1 }
+ named @OverheadNumbers { Arabic }
+ named @FirstOverheadNumber { 1 }
+ named @TitlePageFont { Helvetica Base }
+ named @TitleFormat
+ right title { @Center clines @Break title }
+ named @AuthorFormat
+ right author { @Center clines @Break author }
+ named @InstitutionFormat
+ right institution { @Center clines @Break @I institution }
+ named @DateLineFormat
+ right date { @Center date }
+ named @AboveTitleGap { 0.5i }
+ named @AboveAuthorGap { 1.0i }
+ named @AboveInstitutionGap { 0.5i }
+ named @AboveDateLineGap { 0.5i }
+ named @LectureHeadingFont { Bold 1.2f }
+ named @LectureHeadingBreak { 1.2fx nohyphen }
+ named @LectureHeadingFormat
+ left number right title { @Centre number @DP @Centre title @DP }
+ named @AboveLectureGap { 3.0f }
+ named @OverheadHeadingFont { Bold }
+ named @OverheadHeadingBreak { 1.2fx nohyphen }
+ named @OverheadHeadingFormat
+ left number right title { @Centre title @DP }
+ named @OverheadFormat
+ named @II right x { |@DisplayIndent x | }
+ named @QQ right x { |@DisplayIndent x |@DisplayIndent }
+ named @CC right x { |0.5rt x | }
+ named @RR right x { |1.0rt x | }
+ right @Body
+ { @Body }
+ named @AboveOverheadGap { 1.0f }
+ named @LectureInContents { Yes }
+ named @OverheadInContents { No }
+ named @ReferencesInContents { Yes }
+ named @LectureContentsIndent { 0f }
+ named @OverheadContentsIndent { 0f }
+ named @OverheadInLectureContentsIndent { 2f }
+ named @ReferencesContentsIndent { 0f }
+ named @LectureNumInTheorems { Yes }
+ named @OverheadNumInTheorems { No }
+ named @LectureNumInDisplays { Yes }
+ named @OverheadNumInDisplays { No }
+ named @LectureNumInFigures { Yes }
+ named @OverheadNumInFigures { No }
+ named @LectureNumInTables { Yes }
+ named @OverheadNumInTables { No }
+ named @LectureNumInFloaters { Yes }
+ named @OverheadNumInFloaters { No }
+ named @LectureNumInRunners { Yes }
+ named @OverheadNumInRunners { Yes }
+ named @LecturePrefix { }
+ named @OverheadPrefix { }
+@Begin
+
+ #######################################################################
+ # #
+ # Symbols for passing full title to running headers. #
+ # #
+ #######################################################################
+
+ export @Val
+ def @StoreTitle left @Tag named @Val {} { @Null }
+
+ def @SaveTitle right x { save @StoreTitle @Val { x } }
+
+ def @GetTitle { @StoreTitle&&save @Open { @Val } }
+
+
+ #######################################################################
+ # #
+ # Lists of lectures and overheads. #
+ # #
+ #######################################################################
+
+ export num
+ def @LectureList named @Tag {} named num {}
+ {
+ @Galley
+ //1.1b @LectureList num { @Next num }
+ }
+
+ export num
+ def @OverheadsList named @Tag {} named num {}
+ {
+ @Galley
+ //1.1b @OverheadsList num { @Next num }
+ }
+
+ export num
+ def @LecOverheadsList named @Tag {} right num
+ {
+ @Galley
+ //1.1b @LecOverheadsList @Next num
+ }
+
+
+ #######################################################################
+ # #
+ # @Full - this sends text to a full-width place. #
+ # #
+ #######################################################################
+
+ def @Full force into { @FullPlace&&following } right x { x }
+
+
+ #######################################################################
+ # #
+ # @OverheadTransparencies. #
+ # #
+ #######################################################################
+
+ def @OverheadTransparencies
+ named @Title {}
+ named @RunningTitle { dft }
+ named @Author {}
+ named @Institution {}
+ named @DateLine { @DateLine }
+ named @InitialFont { @InitialFont }
+ named @InitialBreak { @InitialBreak }
+ named @InitialOutdent { @InitialOutdent }
+ named @InitialSpace { @InitialSpace }
+ named @InitialLanguage { @InitialLanguage }
+ named @PageOrientation { @PageOrientation }
+ named @PageHeaders { @PageHeaders }
+ named @FirstPageNumber { @FirstPageNumber }
+ named @FirstOverheadNumber { @FirstOverheadNumber }
+ named @FirstLectureNumber { @FirstLectureNumber }
+ named @OptimizePages { @OptimizePages }
+ {
+
+ def @DatePart
+ {
+ @DateLine @Case {
+ No @Yield { @Null }
+ Yes @Yield { @Date }
+ else @Yield { @DateLine }
+ }
+ }
+
+ def @TitlePart
+ {
+ @TitlePageFont @Font @InitialBreak @Break
+ @InitialSpace @Space clines @Break {
+ //0.5i
+ //@AboveTitleGap 1.5f @Font @InitialBreak @Break
+ @InitialSpace @Space @TitleFormat @Title |
+ //@AboveAuthorGap @AuthorFormat @Author |
+ //@AboveInstitutionGap @InstitutionFormat @Institution |
+ //@AboveDateLineGap @DateLineFormat @DatePart |
+ }
+ }
+
+ def @ContentsPart
+ {
+ @DP |0.5rt @LectureHeadingFont @Font @LectureHeadingBreak @Break
+ @LectureHeadingFormat { contents @WordVal @ContentsWord } |
+ @DP @ContentsSection
+ }
+
+ def @ReferencesPart
+ named @Tag {}
+ {
+ @DP |0.5rt @LectureHeadingFont @Font @LectureHeadingBreak @Break
+ @LectureHeadingFormat { @RefHeading @RefListTitle } |
+ // @PageMark @Tag
+ // @ReferencesInContents @ContentsEntry
+ indent { @ReferencesContentsIndent }
+ title { @RefHeading @RefListTitle }
+ pagenum { @PageOf @Tag }
+ // Start @Runner @MajorTitle { @GetTitle }
+ @DP @ReferencesSection
+ // NonStart @Runner @MajorTitle { @GetTitle }
+ }
+
+ def @OverheadsBody force into { @ColPlace&&preceding }
+ named @Optimize { @OptimizePages }
+ {
+ @Title @Case {
+ "" @Yield @Null
+ else @Yield @TitlePart
+ }
+ //1.1b @MakeContents @Case {
+ { Yes Bypass } @Yield @ContentsPart
+ else @Yield @Null
+ }
+ // Start @Runner @MajorTitle { @GetTitle }
+ //1.1b @OverheadsList num { @FirstOverheadNumber }
+ //1.1b @LectureList num { @FirstLectureNumber }
+ //1.1b @ReferencesPart
+ }
+
+ @InitialFont @Font { @InitialBreak setoutdent @InitialOutdent } @Break
+ @InitialLanguage @Language @InitialSpace @Space
+ { @ColourCommand @InitialColour } @SetColour
+ {
+ @SaveTitle {
+ @InitialLanguage @Language { @RunningTitle @Dft @Title }
+ }
+
+ // Yes @BeginAllCounters {}
+ // Yes @BeginDisplayCounter {}
+ // Yes @BeginFigureCounter {}
+ // Yes @BeginFigureCounter {}
+ // @PageList
+ @ColumnNumber { 1 }
+ @PageHeaders { @PageHeaders }
+ @Orient { @PageOrientation }
+ extra { Yes }
+ @FirstPageNumber
+ // @OverheadsBody
+ // Start @Runner
+ }
+ }
+
+
+ #######################################################################
+ # #
+ # Overheads. #
+ # #
+ #######################################################################
+
+ def @Overhead force into { @OverheadsList&&preceding }
+ named @Tag {}
+ named @Title {}
+ named @RunningTitle { dft }
+ named @Format
+ named @II right x { |@DisplayIndent x | }
+ named @QQ right x { |@DisplayIndent x |@DisplayIndent }
+ named @CC right x { |0.5rt x | }
+ named @RR right x { |1.0rt x | }
+ right @Body { @OverheadFormat @Body }
+ named @InitialLanguage {}
+ named @BypassNumber { dft }
+ body @Body
+ {
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Major }
+ initiallanguage { @InitialLanguage }
+ title { @Title }
+ majortitle { @GetTitle }
+ runningtitle { @RunningTitle }
+ aboveheadinggap { @AboveOverheadGap }
+ headingfont { @OverheadHeadingFont }
+ headingbreak { @OverheadHeadingBreak }
+ headingformat { @Num @OverheadHeadingFormat @Body }
+ incontents { @OverheadInContents }
+ contentsindent { @OverheadContentsIndent }
+ numbers { @OverheadNumbers }
+ attachnum { @OverheadsList&&preceding @Tagged @Tag }
+ retrievenum { @OverheadsList&&@Tag @Open { num } }
+ bypassnumber { @BypassNumber }
+ pnprefix { @OverheadPrefix }
+ intheorems { @OverheadNumInTheorems }
+ indisplays { @OverheadNumInDisplays }
+ infigures { @OverheadNumInFigures }
+ intables { @OverheadNumInTables }
+ infloaters { @OverheadNumInFloaters }
+ sendheader { @Full @Body }
+ innergap { @DisplayGap }
+ inrunners { @OverheadNumInRunners }
+ @Format @Body
+ }
+
+
+ #######################################################################
+ # #
+ # Lectures containing overheads. #
+ # #
+ #######################################################################
+
+ export @BeginOverheads @EndOverheads @Overhead
+ def @Lecture force into { @LectureList&&preceding }
+ named @Tag {}
+ named @Title {}
+ named @RunningTitle { dft }
+ named @InitialLanguage {}
+ named @BypassNumber { dft }
+ body @Body
+ {
+ def @SaveTitle { @Title }
+
+ def @EndOverheadsPlace { @Galley }
+
+ def @EndOverheads force into { @EndOverheadsPlace&&preceding }
+ {}
+
+ macro @BeginOverheads
+ { //1.1b @LecOverheadsList 1
+ // @EndOverheadsPlace //
+ }
+
+ def @LectureNum
+ {
+ @LectureNumbers @Then {
+ @BypassNumber @Dft {
+ @LectureNumbers @Num @LectureList&&@Tag @Open { num }
+ }
+ }
+ }
+
+ def @Overhead force into { @LecOverheadsList&&preceding }
+ named @Tag {}
+ named @Title {}
+ named @RunningTitle { dft }
+ named @Format
+ named @II right x { |@DisplayIndent x | }
+ named @QQ right x { |@DisplayIndent x |@DisplayIndent }
+ named @CC right x { |0.5rt x | }
+ named @RR right x { |1.0rt x | }
+ right @Body { @OverheadFormat @Body }
+ named @InitialLanguage { @InitialLanguage }
+ named @BypassNumber { dft }
+ body @Body
+ {
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Minor }
+ initiallanguage { @InitialLanguage }
+ title { @Title }
+ runningtitle { @RunningTitle }
+ headingfont { @OverheadHeadingFont }
+ headingbreak { @OverheadHeadingBreak }
+ headingformat { @Num @OverheadHeadingFormat @Body }
+ incontents { @OverheadInContents }
+ contentsindent { @OverheadInLectureContentsIndent }
+ numbers { @OverheadNumbers }
+ attachnum { @LecOverheadsList&&preceding @Tagged @Tag }
+ retrievenum { @LecOverheadsList&&@Tag @Open { num } }
+ bypassnumber { @BypassNumber }
+ prefix { @LectureNum }
+ majornum { @LectureNum }
+ majortitle { @GetTitle }
+ minortitle { @SaveTitle }
+ intheorems { @OverheadNumInTheorems }
+ indisplays { @OverheadNumInDisplays }
+ infigures { @OverheadNumInFigures }
+ inrunners { @OverheadNumInRunners }
+ @Format @Body
+
+ }
+
+ @LargeScaleStructure
+ tag { @Tag }
+ type { Major }
+ initiallanguage { @InitialLanguage }
+ title { @Title }
+ runningtitle { @RunningTitle }
+ aboveheadinggap { @AboveLectureGap }
+ headingfont { @LectureHeadingFont }
+ headingbreak { @LectureHeadingBreak }
+ headingformat { @Num @LectureHeadingFormat @Body }
+ incontents { @LectureInContents }
+ contentsindent { @LectureContentsIndent }
+ word { lecture @WordVal @LectureWord }
+ numbers { @LectureNumbers }
+ attachnum { @LectureList&&preceding @Tagged @Tag }
+ retrievenum { @LectureList&&@Tag @Open { num } }
+ bypassnumber { @BypassNumber }
+ pnprefix { @LecturePrefix }
+ majortitle { @GetTitle }
+ intheorems { @LectureNumInTheorems }
+ indisplays { @LectureNumInDisplays }
+ infigures { @LectureNumInFigures }
+ intables { @LectureNumInTables }
+ infloaters { @LectureNumInFloaters }
+ sendheader { @Full @Body }
+ innergap { @DisplayGap }
+ inrunners { @LectureNumInRunners }
+ @Body
+
+ }
+
+@End @OverheadSetup
diff --git a/include/include/tab b/include/include/tab
new file mode 100644
index 0000000..3c30de5
--- /dev/null
+++ b/include/include/tab
@@ -0,0 +1,31 @@
+###############################################################################
+# #
+# Lout setup file for table printing #
+# #
+# Jeffrey H. Kingston #
+# 5 February 1999 #
+# #
+# This file has been placed in the public domain by its author. #
+# #
+# This package is OBSOLETE; use tbl instead. #
+# #
+###############################################################################
+
+
+###############################################################################
+# #
+# The @SysInclude { tabf } line #
+# #
+# This line causes Lout to read the definitions for tables, and should #
+# not be touched. #
+# #
+###############################################################################
+
+@SysInclude { tabf }
+
+
+###############################################################################
+# #
+# This package does not offer default options that can be changed. #
+# #
+###############################################################################
diff --git a/include/include/tabf b/include/include/tabf
new file mode 100644
index 0000000..219afd0
--- /dev/null
+++ b/include/include/tabf
@@ -0,0 +1,953 @@
+
+###############################################################################
+# #
+# Lout @Tab package for formatting tables (Version 2.0) #
+# #
+# Version 1.0 by Jeffrey H. Kingston, September 1991. #
+# Version 2.0 by Jeffrey H. Kingston, 22 December 1992. #
+# Version 3.0 by Jeffrey H. Kingston, 13 September 1993. #
+# #
+# The only change between Versions 2 and 3 is to make the linewidth #
+# option accept a Lout length rather than a Fig length. See the User's #
+# Guide for user information. #
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either Version 3, or (at your option) #
+# any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA #
+# #
+# As a special exception, when this file is read by Lout when processing #
+# a Lout source document, you may use the result without restriction. #
+# #
+###############################################################################
+
+@SysPrependGraphic { "tabf.lpg" }
+
+export @CC @RR @Rule @DoubleRule @Line @DoubleLine @NP
+ @Rowa @Rowb @Rowc @Rowd @Rowe @Rowf @Rowg @Rowh @Rowi @Rowj
+ @MarkRowa @MarkRowb @MarkRowc @MarkRowd @MarkRowe @MarkRowf
+ @MarkRowg @MarkRowh @MarkRowi @MarkRowj
+ @FirstRowa @FirstRowb @FirstRowc @FirstRowd @FirstRowe @FirstRowf
+ @FirstRowg @FirstRowh @FirstRowi @FirstRowj
+
+def @Tab
+
+ named above { no }
+ named below { no }
+ named between { no }
+ named side { no }
+ named hmargin { 0.3c }
+ named vmargin {
+ @BackEnd @Case {
+ PostScript @Yield 0.2v
+ PDF @Yield 0.2v # VT: PDF case added
+ PlainText @Yield 0.5v
+ }
+ }
+
+ named linewidth
+ named c left x {
+ @BackEnd @Case {
+ PostScript @Yield { x" cm" }
+ PDF @Yield { "__mul(__cm, "x")" }
+ }
+ }
+ named i left x {
+ @BackEnd @Case {
+ PostScript @Yield { x" in" }
+ PDF @Yield { "__mul(__in, "x")" }
+ }
+ }
+ named e left x {
+ @BackEnd @Case {
+ PostScript @Yield { x" em" }
+ PDF @Yield { "__mul(__em, "x")" }
+ }
+ }
+ named p left x {
+ @BackEnd @Case {
+ PostScript @Yield { x" pt" }
+ PDF @Yield { "__mul(__pt, "x")" }
+ }
+ }
+ named f left x {
+ @BackEnd @Case {
+ PostScript @Yield { x" ft" }
+ PDF @Yield { "__mul(__loutf, "x")" }
+ }
+ }
+ named s left x {
+ @BackEnd @Case {
+ PostScript @Yield { x" sp" }
+ PDF @Yield { "__mul(__louts, "x")" }
+ }
+ }
+ named v left x {
+ @BackEnd @Case {
+ PostScript @Yield { x" vs" }
+ PDF @Yield { "__mul(__loutv, "x")" }
+ }
+ }
+ { 0.5p }
+
+ named @Fmta
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ named "!" precedence 10 left x named between { dft } right y {}
+ named "!!" precedence 10 left x right y {}
+ named "!!!" precedence 10 left x right y {}
+ named "@Over" precedence 11 left x right y { x // y }
+ named "," precedence 12 left x right y {}
+ named @Col precedence 12 right x {}
+ named @CC right x { clines @Break { & x & } }
+ named @RR right x { rlines @Break { & x & } }
+ {}
+
+ named @Fmtb
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ named "!" precedence 10 left x named between { dft } right y {}
+ named "!!" precedence 10 left x right y {}
+ named "!!!" precedence 10 left x right y {}
+ named "@Over" precedence 11 left x right y { x // y }
+ named "," precedence 12 left x right y {}
+ named @Col precedence 12 right x {}
+ named @CC right x { clines @Break { & x & } }
+ named @RR right x { rlines @Break { & x & } }
+ {}
+
+ named @Fmtc
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ named "!" precedence 10 left x named between { dft } right y {}
+ named "!!" precedence 10 left x right y {}
+ named "!!!" precedence 10 left x right y {}
+ named "@Over" precedence 11 left x right y { x // y }
+ named "," precedence 12 left x right y {}
+ named @Col precedence 12 right x {}
+ named @CC right x { clines @Break { & x & } }
+ named @RR right x { rlines @Break { & x & } }
+ {}
+
+ named @Fmtd
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ named "!" precedence 10 left x named between { dft } right y {}
+ named "!!" precedence 10 left x right y {}
+ named "!!!" precedence 10 left x right y {}
+ named "@Over" precedence 11 left x right y { x // y }
+ named "," precedence 12 left x right y {}
+ named @Col precedence 12 right x {}
+ named @CC right x { clines @Break { & x & } }
+ named @RR right x { rlines @Break { & x & } }
+ {}
+
+ named @Fmte
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ named "!" precedence 10 left x named between { dft } right y {}
+ named "!!" precedence 10 left x right y {}
+ named "!!!" precedence 10 left x right y {}
+ named "@Over" precedence 11 left x right y { x // y }
+ named "," precedence 12 left x right y {}
+ named @Col precedence 12 right x {}
+ named @CC right x { clines @Break { & x & } }
+ named @RR right x { rlines @Break { & x & } }
+ {}
+
+ named @Fmtf
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ named "!" precedence 10 left x named between { dft } right y {}
+ named "!!" precedence 10 left x right y {}
+ named "!!!" precedence 10 left x right y {}
+ named "@Over" precedence 11 left x right y { x // y }
+ named "," precedence 12 left x right y {}
+ named @Col precedence 12 right x {}
+ named @CC right x { clines @Break { & x & } }
+ named @RR right x { rlines @Break { & x & } }
+ {}
+
+ named @Fmtg
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ named "!" precedence 10 left x named between { dft } right y {}
+ named "!!" precedence 10 left x right y {}
+ named "!!!" precedence 10 left x right y {}
+ named "@Over" precedence 11 left x right y { x // y }
+ named "," precedence 12 left x right y {}
+ named @Col precedence 12 right x {}
+ named @CC right x { clines @Break { & x & } }
+ named @RR right x { rlines @Break { & x & } }
+ {}
+
+ named @Fmth
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ named "!" precedence 10 left x named between { dft } right y {}
+ named "!!" precedence 10 left x right y {}
+ named "!!!" precedence 10 left x right y {}
+ named "@Over" precedence 11 left x right y { x // y }
+ named "," precedence 12 left x right y {}
+ named @Col precedence 12 right x {}
+ named @CC right x { clines @Break { & x & } }
+ named @RR right x { rlines @Break { & x & } }
+ {}
+
+ named @Fmti
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ named "!" precedence 10 left x named between { dft } right y {}
+ named "!!" precedence 10 left x right y {}
+ named "!!!" precedence 10 left x right y {}
+ named "@Over" precedence 11 left x right y { x // y }
+ named "," precedence 12 left x right y {}
+ named @Col precedence 12 right x {}
+ named @CC right x { clines @Break { & x & } }
+ named @RR right x { rlines @Break { & x & } }
+ {}
+
+ named @Fmtj
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ named "!" precedence 10 left x named between { dft } right y {}
+ named "!!" precedence 10 left x right y {}
+ named "!!!" precedence 10 left x right y {}
+ named "@Over" precedence 11 left x right y { x // y }
+ named "," precedence 12 left x right y {}
+ named @Col precedence 12 right x {}
+ named @CC right x { clines @Break { & x & } }
+ named @RR right x { rlines @Break { & x & } }
+ {}
+
+ body @Body
+
+@Begin
+
+ macro @NP { /1.1b }
+
+ def @CC right x { clines @Break { & x & } }
+ def @RR right x { rlines @Break { & x & } }
+#
+# VT: these definitions have been modified for PDF support
+#
+ def @HSingle {
+ @BackEnd @Case {
+ PostScript @Yield { linewidth ltabhs }
+ PDF @Yield { "0 0 m __xsize 0 l" linewidth "w 0 J S" }
+ }
+ }
+
+ def @HSingleProject {
+ @BackEnd @Case {
+ PostScript @Yield { linewidth ltabhsp }
+ PDF @Yield { "0 0 m __xsize 0 l" linewidth "w 2 J S" }
+ }
+ }
+
+ def @HDouble {
+ @BackEnd @Case {
+ PostScript @Yield { linewidth ltabhd }
+ PDF @Yield { # dup dup
+ "0 0 m __xsize 0 l" # 0 0 moveto xsize 0 lineto
+ "0 __mul(3, " linewidth ") m __xsize __mul(3, " linewidth ") l" # 0 exch 3 mul moveto xsize exch 3 mul lineto
+ linewidth "w 0 J S" # setlinewidth 0 setlinecap stroke
+ }
+ }
+ }
+
+ def @HDoubleBelow {
+ @BackEnd @Case {
+ PostScript @Yield { linewidth ltabhdb }
+ PDF @Yield { # dup dup
+ "0 0 m __xsize 0 l" # 0 0 moveto xsize 0 lineto
+ "0 __mul(-3, "linewidth") m __xsize __mul(-3, "linewidth") l" # 0 exch -3 mul moveto xsize exch -3 mul lineto
+ linewidth "w 0 J S" # setlinewidth 0 setlinecap stroke
+ }
+ }
+ }
+
+ def @HDoubleNW {
+ @BackEnd @Case {
+ PostScript @Yield { linewidth ltabhdnw }
+ PDF @Yield { # dup dup dup dup
+ "0 0 m __xsize 0 l" # 0 0 moveto xsize 0 lineto
+ "__xsize __mul(3, "linewidth") m" # xsize exch 3 mul moveto
+ "__mul(-3, "linewidth") __mul(3, "linewidth") l" # -3 mul exch 3 mul lineto
+ "__mul(-3, "linewidth") 0 l" # -3 mul 0 lineto
+ linewidth "w 0 j 2 J S" # setlinewidth 0 setlinejoin 2 setlinecap stroke
+ }
+ }
+ }
+
+ def @HDoubleNE {
+ @BackEnd @Case {
+ PostScript @Yield { linewidth ltabhdne }
+ PDF @Yield { # dup dup dup dup
+ "0 0 m __xsize 0 l" # 0 0 moveto xsize 0 lineto
+ "0 __mul(3, "linewidth") m" # 0 exch 3 mul moveto
+ "__add(__xsize, __mul(3, "linewidth")) __mul(3, "linewidth") l" # 3 mul xsize add exch 3 mul lineto
+ "__add(__xsize, __mul(3, "linewidth")) 0 l" # 3 mul xsize add 0 lineto
+ linewidth "w 0 j 2 J S" # setlinewidth 0 setlinejoin 2 setlinecap stroke
+ }
+ }
+ }
+
+ def @HDoubleSW {
+ @BackEnd @Case {
+ PostScript @Yield { linewidth ltabhdsw }
+ PDF @Yield { # dup dup dup dup
+ "0 0 m __xsize 0 l" # 0 0 moveto xsize 0 lineto
+ "__xsize __mul(-3, "linewidth") m" # xsize exch -3 mul moveto
+ "__mul(-3, "linewidth") __mul(-3, "linewidth") l" # -3 mul exch -3 mul lineto
+ "__mul(-3, "linewidth") 0 l" # -3 mul 0 lineto
+ linewidth "w 0 j 2 J S" # setlinewidth 0 setlinejoin 2 setlinecap stroke
+ }
+ }
+ }
+
+ def @HDoubleSE {
+ @BackEnd @Case {
+ PostScript @Yield { linewidth ltabhdse }
+ PDF @Yield { # dup dup dup dup
+ "0 0 m __xsize 0 l" # 0 0 moveto xsize 0 lineto
+ "0 __mul(-3, "linewidth") m" # 0 exch -3 mul moveto
+ "__add(__xsize, __mul(-3, "linewidth")) __mul(-3, "linewidth") l" # 3 mul xsize add exch -3 mul lineto
+ "__add(__xsize, __mul( 3, "linewidth")) 0 l" # 3 mul xsize add 0 lineto
+ linewidth "w 0 j 2 J S" # setlinewidth 0 setlinejoin 2 setlinecap stroke
+ }
+ }
+ }
+
+ def @VSingle {
+ @BackEnd @Case {
+ PostScript @Yield { linewidth ltabvs }
+ PDF @Yield {
+ "0 0 m 0 __ysize l" # 0 0 moveto 0 ysize lineto
+ linewidth "w 0 J S" # setlinewidth 0 setlinecap stroke
+ }
+ }
+ }
+
+ def @VDouble {
+ @BackEnd @Case {
+ PostScript @Yield { linewidth ltabvd }
+ PDF @Yield { # dup dup
+ "0 0 m 0 __ysize l" # 0 0 moveto 0 ysize lineto
+ "__mul(-3, "linewidth") 0 m __mul(-3, "linewidth") __ysize l" # -3 mul 0 moveto -3 mul ysize lineto
+ linewidth "w 0 J S" # setlinewidth 0 setlinecap stroke
+ }
+ }
+ }
+
+ def @VDoubleRight {
+ @BackEnd @Case {
+ PostScript @Yield { linewidth ltabvdr }
+ PDF @Yield { # dup dup
+ "0 0 m 0 __ysize l" # 0 0 moveto 0 ysize lineto
+ "__mul(3, "linewidth") 0 m __mul(3, "linewidth") __ysize l" # 3 mul 0 moveto 3 mul ysize lineto
+ linewidth "w 0 J S" # setlinewidth 0 setlinecap stroke
+ }
+ }
+ }
+
+ def @MidHRule
+ left rule
+ right x
+ {
+ rule @Case
+ {
+ no @Yield { @OneCol x }
+ { yes single } @Yield { @HSingle @Graphic x }
+ { double doubleboxabove } @Yield { @HDouble @Graphic x }
+ doubleboxbelow @Yield { @HDoubleBelow @Graphic x }
+ }
+ }
+
+ def @LeftHRule
+ left rule
+ right x
+ {
+ rule @Case
+ {
+ no @Yield { @OneCol x }
+ { yes single } @Yield { @HSingleProject @Graphic x }
+ double @Yield { @HDouble @Graphic x }
+ doubleboxabove @Yield { @HDoubleNW @Graphic x }
+ doubleboxbelow @Yield { @HDoubleSW @Graphic x }
+ }
+ }
+
+ def @RightHRule
+ left rule
+ right x
+ {
+ rule @Case
+ {
+ no @Yield { @OneCol x }
+ { yes single } @Yield { @HSingleProject @Graphic x }
+ double @Yield { @HDouble @Graphic x }
+ doubleboxabove @Yield { @HDoubleNE @Graphic x }
+ doubleboxbelow @Yield { @HDoubleSE @Graphic x }
+ }
+ }
+
+ def @HSRule
+ left rule
+ {
+ rule @Case
+ {
+ no @Yield {}
+ { yes single } @Yield { @HSingle @Graphic {} }
+ double @Yield { @HDouble @Graphic {} }
+ doubleboxabove @Yield { @HDouble @Graphic {} }
+ doubleboxbelow @Yield { @HDoubleBelow @Graphic {} }
+ }
+ }
+
+ def @ZeroWidth
+ right x
+ { @OneCol { |0io x |0io }
+ }
+
+ def @Line
+ { single @HSRule
+ }
+
+ def @DoubleLine
+ { double @HSRule
+ }
+
+ def @Rule
+ {
+ @OneRow
+ {
+ @ZeroWidth @HSingle @Graphic { ^|hmargin }
+ / @Line /
+ &1rt @ZeroWidth @HSingle @Graphic { |hmargin }
+ }
+ }
+
+ def @DoubleRule
+ {
+ @OneRow
+ {
+ @ZeroWidth @HDouble @Graphic { ^|hmargin }
+ / @DoubleLine /
+ &1rt @ZeroWidth @HDouble @Graphic { |hmargin }
+ }
+ }
+
+ def @VRule
+ left rule
+ right x
+ {
+ rule @Case
+ {
+ no @Yield {}
+ { yes single } @Yield @OneRow { /0io @VSingle @Graphic x /0io }
+ double @Yield @OneRow { /0io @VDouble @Graphic x /0io }
+ }
+ }
+
+ def @VRuleRight
+ left rule
+ right x
+ {
+ rule @Case
+ {
+ no @Yield {}
+ {yes single} @Yield @OneRow { /0io @VSingle @Graphic x /0io }
+ double @Yield @OneRow { /0io @VDoubleRight @Graphic x /0io }
+ }
+ }
+
+ def @VSRule
+ left rule
+ {
+ rule @Case
+ {
+ no @Yield {}
+ { yes single } @Yield { @VSingle @Graphic {} }
+ double @Yield { @VDouble @Graphic {} }
+ }
+ }
+
+ def @VSRuleRight
+ left rule
+ {
+ rule @Case
+ {
+ no @Yield {}
+ {yes single} @Yield { @VSingle @Graphic {} }
+ double @Yield { @VDoubleRight @Graphic {} }
+ }
+ }
+
+ def @Wrap
+ named ur { no } # Rule up above entry
+ named dr { no } # Rule down below entry
+ named vm { vmargin } # Vertical margin
+ right x # The object to be wrapped
+ {
+ ur @HSRule
+ ^/vm @OneCol @OneRow x
+ /vm dr @HSRule
+ }
+
+ def @Sep
+ left x
+ named ur { no } # Rule up above entry
+ named dr { no } # Rule down below entry
+ named sr { no } # Rule separating x from y
+ named hm { hmargin } # Horizontal margin
+ named vm { vmargin } # Vertical margin
+ right y
+ {
+ def vr
+ {
+ sr @Case
+ { dft @Yield between
+ else @Yield sr
+ }
+ }
+
+ x | @OneCol
+ { ur @MidHRule {|hm}
+ /vm
+ /vm dr @MidHRule {|hm}
+ }
+ | @OneCol
+ { vr @VRule { /vm } | ur @MidHRule {|hm}
+ /vm vr @VSRule |
+ /vm vr @VRule {^/vm } | dr @MidHRule {|hm}
+ }
+ | y
+ }
+
+ def @NSep
+ left x
+ named hm { hmargin }
+ right y
+ {
+ x | @OneCol { |hm } | @OneCol { |hm } | y
+ }
+
+ def @LeftEdge
+ named ur { no } # Rule up above entry
+ named dr { no } # Rule down below entry
+ named sr { no } # Rule separating x from y
+ named hm { hmargin } # Horizontal margin
+ named vm { vmargin } # Vertical margin
+ right x
+ {
+ sr @Case
+ {
+ no @Yield { x }
+ else @Yield
+ { @OneCol
+ {
+ sr @VRule { /vm } | ur @LeftHRule { |hm }
+ ^/vm sr @VSRule |
+ /vm sr @VRule { ^/vm } | dr @LeftHRule { |hm }
+ }
+ | x
+ }
+ }
+ }
+
+ def @RightEdge
+ left x
+ named ur { no } # Rule up above entry
+ named dr { no } # Rule down below entry
+ named sr { no } # Rule separating x from y
+ named hm { hmargin } # Horizontal margin
+ named vm { vmargin } # Vertical margin
+ {
+ sr @Case
+ {
+ no @Yield { x }
+ else @Yield
+ {
+ x | @OneCol
+ {
+ ur @RightHRule { |hm }
+ /vm
+ /vm dr @RightHRule { |hm }
+ }
+ | @OneCol
+ {
+ sr @VRuleRight { /vm }
+ /vm sr @VSRuleRight
+ /vm sr @VRuleRight { ^/vm }
+ }
+ }
+ }
+ }
+
+ def @DoRowa
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ named above { above }
+ named below { below }
+ named side { side }
+ named vmargin { vmargin }
+ {
+ @LeftEdge ur { above } dr { below } sr { side } vm { vmargin }
+ @Fmta
+ A { A } B { B } C { C } D { D } E { E }
+ F { F } G { G } H { H } I { I } J { J }
+ K { K } L { L } M { M } N { N } O { O }
+ P { P } Q { Q } R { R } S { S } T { T }
+ U { U } V { V } W { W } X { X } Y { Y }
+ Z { Z }
+ @Col { @Wrap ur {above} dr {below} vm {vmargin} x}
+ ! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y}
+ !! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y}
+ !!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y}
+ , { x @NSep y }
+ @RightEdge ur { above } dr { below } sr { side } vm { vmargin }
+ }
+
+ def @DoRowb
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ named above { above }
+ named below { below }
+ named side { side }
+ named vmargin { vmargin }
+ {
+ @LeftEdge ur { above } dr { below } sr { side } vm { vmargin }
+ @Fmtb
+ A { A } B { B } C { C } D { D } E { E }
+ F { F } G { G } H { H } I { I } J { J }
+ K { K } L { L } M { M } N { N } O { O }
+ P { P } Q { Q } R { R } S { S } T { T }
+ U { U } V { V } W { W } X { X } Y { Y }
+ Z { Z }
+ @Col { @Wrap ur {above} dr {below} vm {vmargin} x}
+ ! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y}
+ !! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y}
+ !!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y}
+ , { x @NSep y }
+ @RightEdge ur { above } dr { below } sr { side } vm { vmargin }
+ }
+
+ def @DoRowc
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ named above { above }
+ named below { below }
+ named side { side }
+ named vmargin { vmargin }
+ {
+ @LeftEdge ur { above } dr { below } sr { side } vm { vmargin }
+ @Fmtc
+ A { A } B { B } C { C } D { D } E { E }
+ F { F } G { G } H { H } I { I } J { J }
+ K { K } L { L } M { M } N { N } O { O }
+ P { P } Q { Q } R { R } S { S } T { T }
+ U { U } V { V } W { W } X { X } Y { Y }
+ Z { Z }
+ @Col { @Wrap ur {above} dr {below} vm {vmargin} x}
+ ! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y}
+ !! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y}
+ !!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y}
+ , { x @NSep y }
+ @RightEdge ur { above } dr { below } sr { side } vm { vmargin }
+ }
+
+ def @DoRowd
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ named above { above }
+ named below { below }
+ named side { side }
+ named vmargin { vmargin }
+ {
+ @LeftEdge ur { above } dr { below } sr { side } vm { vmargin }
+ @Fmtd
+ A { A } B { B } C { C } D { D } E { E }
+ F { F } G { G } H { H } I { I } J { J }
+ K { K } L { L } M { M } N { N } O { O }
+ P { P } Q { Q } R { R } S { S } T { T }
+ U { U } V { V } W { W } X { X } Y { Y }
+ Z { Z }
+ @Col { @Wrap ur {above} dr {below} vm {vmargin} x}
+ ! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y}
+ !! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y}
+ !!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y}
+ , { x @NSep y }
+ @RightEdge ur { above } dr { below } sr { side } vm { vmargin }
+ }
+
+ def @DoRowe
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ named above { above }
+ named below { below }
+ named side { side }
+ named vmargin { vmargin }
+ {
+ @LeftEdge ur { above } dr { below } sr { side } vm { vmargin }
+ @Fmte
+ A { A } B { B } C { C } D { D } E { E }
+ F { F } G { G } H { H } I { I } J { J }
+ K { K } L { L } M { M } N { N } O { O }
+ P { P } Q { Q } R { R } S { S } T { T }
+ U { U } V { V } W { W } X { X } Y { Y }
+ Z { Z }
+ @Col { @Wrap ur {above} dr {below} vm {vmargin} x}
+ ! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y}
+ !! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y}
+ !!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y}
+ , { x @NSep y }
+ @RightEdge ur { above } dr { below } sr { side } vm { vmargin }
+ }
+
+ def @DoRowf
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ named above { above }
+ named below { below }
+ named side { side }
+ named vmargin { vmargin }
+ {
+ @LeftEdge ur { above } dr { below } sr { side } vm { vmargin }
+ @Fmtf
+ A { A } B { B } C { C } D { D } E { E }
+ F { F } G { G } H { H } I { I } J { J }
+ K { K } L { L } M { M } N { N } O { O }
+ P { P } Q { Q } R { R } S { S } T { T }
+ U { U } V { V } W { W } X { X } Y { Y }
+ Z { Z }
+ @Col { @Wrap ur {above} dr {below} vm {vmargin} x}
+ ! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y}
+ !! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y}
+ !!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y}
+ , { x @NSep y }
+ @RightEdge ur { above } dr { below } sr { side } vm { vmargin }
+ }
+
+ def @DoRowg
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ named above { above }
+ named below { below }
+ named side { side }
+ named vmargin { vmargin }
+ {
+ @LeftEdge ur { above } dr { below } sr { side } vm { vmargin }
+ @Fmtg
+ A { A } B { B } C { C } D { D } E { E }
+ F { F } G { G } H { H } I { I } J { J }
+ K { K } L { L } M { M } N { N } O { O }
+ P { P } Q { Q } R { R } S { S } T { T }
+ U { U } V { V } W { W } X { X } Y { Y }
+ Z { Z }
+ @Col { @Wrap ur {above} dr {below} vm {vmargin} x}
+ ! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y}
+ !! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y}
+ !!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y}
+ , { x @NSep y }
+ @RightEdge ur { above } dr { below } sr { side } vm { vmargin }
+ }
+
+ def @DoRowh
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ named above { above }
+ named below { below }
+ named side { side }
+ named vmargin { vmargin }
+ {
+ @LeftEdge ur { above } dr { below } sr { side } vm { vmargin }
+ @Fmth
+ A { A } B { B } C { C } D { D } E { E }
+ F { F } G { G } H { H } I { I } J { J }
+ K { K } L { L } M { M } N { N } O { O }
+ P { P } Q { Q } R { R } S { S } T { T }
+ U { U } V { V } W { W } X { X } Y { Y }
+ Z { Z }
+ @Col { @Wrap ur {above} dr {below} vm {vmargin} x}
+ ! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y}
+ !! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y}
+ !!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y}
+ , { x @NSep y }
+ @RightEdge ur { above } dr { below } sr { side } vm { vmargin }
+ }
+
+ def @DoRowi
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ named above { above }
+ named below { below }
+ named side { side }
+ named vmargin { vmargin }
+ {
+ @LeftEdge ur { above } dr { below } sr { side } vm { vmargin }
+ @Fmti
+ A { A } B { B } C { C } D { D } E { E }
+ F { F } G { G } H { H } I { I } J { J }
+ K { K } L { L } M { M } N { N } O { O }
+ P { P } Q { Q } R { R } S { S } T { T }
+ U { U } V { V } W { W } X { X } Y { Y }
+ Z { Z }
+ @Col { @Wrap ur {above} dr {below} vm {vmargin} x}
+ ! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y}
+ !! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y}
+ !!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y}
+ , { x @NSep y }
+ @RightEdge ur { above } dr { below } sr { side } vm { vmargin }
+ }
+
+ def @DoRowj
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ named above { above }
+ named below { below }
+ named side { side }
+ named vmargin { vmargin }
+ {
+ @LeftEdge ur { above } dr { below } sr { side } vm { vmargin }
+ @Fmtj
+ A { A } B { B } C { C } D { D } E { E }
+ F { F } G { G } H { H } I { I } J { J }
+ K { K } L { L } M { M } N { N } O { O }
+ P { P } Q { Q } R { R } S { S } T { T }
+ U { U } V { V } W { W } X { X } Y { Y }
+ Z { Z }
+ @Col { @Wrap ur {above} dr {below} vm {vmargin} x}
+ ! { x @Sep ur {above} dr {below} sr { between } vm {vmargin} y}
+ !! { x @Sep ur {above} dr {below} sr { single } vm {vmargin} y}
+ !!! { x @Sep ur {above} dr {below} sr { double } vm {vmargin} y}
+ , { x @NSep y }
+ @RightEdge ur { above } dr { below } sr { side } vm { vmargin }
+ }
+
+ macro @Rowa { / @DoRowa }
+ macro @Rowb { / @DoRowb }
+ macro @Rowc { / @DoRowc }
+ macro @Rowd { / @DoRowd }
+ macro @Rowe { / @DoRowe }
+ macro @Rowf { / @DoRowf }
+ macro @Rowg { / @DoRowg }
+ macro @Rowh { / @DoRowh }
+ macro @Rowi { / @DoRowi }
+ macro @Rowj { / @DoRowj }
+
+ macro @FirstRowa { @DoRowa }
+ macro @FirstRowb { @DoRowb }
+ macro @FirstRowc { @DoRowc }
+ macro @FirstRowd { @DoRowd }
+ macro @FirstRowe { @DoRowe }
+ macro @FirstRowf { @DoRowf }
+ macro @FirstRowg { @DoRowg }
+ macro @FirstRowh { @DoRowh }
+ macro @FirstRowi { @DoRowi }
+ macro @FirstRowj { @DoRowj }
+
+ macro @MarkRowa { ^/ @DoRowa }
+ macro @MarkRowb { ^/ @DoRowb }
+ macro @MarkRowc { ^/ @DoRowc }
+ macro @MarkRowd { ^/ @DoRowd }
+ macro @MarkRowe { ^/ @DoRowe }
+ macro @MarkRowf { ^/ @DoRowf }
+ macro @MarkRowg { ^/ @DoRowg }
+ macro @MarkRowh { ^/ @DoRowh }
+ macro @MarkRowi { ^/ @DoRowi }
+ macro @MarkRowj { ^/ @DoRowj }
+
+
+ @Body
+
+@End @Tab
diff --git a/include/include/tabf.lpg b/include/include/tabf.lpg
new file mode 100644
index 0000000..0094114
--- /dev/null
+++ b/include/include/tabf.lpg
@@ -0,0 +1,118 @@
+%%BeginResource: procset LoutTabPrependGraphic
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% PostScript @SysPrependGraphic file for @Tab %
+% %
+% This file has been placed in the public domain %
+% by its author, Jeffrey H. Kingston %
+% %
+% To assist in avoiding name clashes, the names %
+% of all these symbols begin with "ltab". %
+% %
+% Jeffrey H. Kingston %
+% 24 September 1991 %
+% 22 December 1992 %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% linewidth ltabhs -
+% horizontal single line
+/ltabhs
+{ 0 0 moveto xsize 0 lineto
+ setlinewidth 0 setlinecap stroke
+} def
+
+% linewidth ltabhsp -
+% horizontal single line with projecting ends
+/ltabhsp
+{ 0 0 moveto xsize 0 lineto
+ setlinewidth 2 setlinecap stroke
+} def
+
+% linewidth ltabhd -
+% horizontal double line
+/ltabhd
+{ dup dup
+ 0 0 moveto xsize 0 lineto
+ 0 exch 3 mul moveto xsize exch 3 mul lineto
+ setlinewidth 0 setlinecap stroke
+} def
+
+% linewidth ltabhdb -
+% horizontal double line below mark
+/ltabhdb
+{ dup dup
+ 0 0 moveto xsize 0 lineto
+ 0 exch -3 mul moveto xsize exch -3 mul lineto
+ setlinewidth 0 setlinecap stroke
+} def
+
+% linewidth ltabhdnw -
+% horizontal double line with northwest corner
+/ltabhdnw
+{ dup dup dup dup
+ 0 0 moveto xsize 0 lineto
+ xsize exch 3 mul moveto
+ -3 mul exch 3 mul lineto
+ -3 mul 0 lineto
+ setlinewidth 0 setlinejoin 2 setlinecap stroke
+} def
+
+% linewidth ltabhdne -
+% horizontal double line with northeast corner
+/ltabhdne
+{ dup dup dup dup
+ 0 0 moveto xsize 0 lineto
+ 0 exch 3 mul moveto
+ 3 mul xsize add exch 3 mul lineto
+ 3 mul xsize add 0 lineto
+ setlinewidth 0 setlinejoin 2 setlinecap stroke
+} def
+
+% linewidth ltabhdsw -
+% horizontal double line with southwest corner
+/ltabhdsw
+{ dup dup dup dup
+ 0 0 moveto xsize 0 lineto
+ xsize exch -3 mul moveto
+ -3 mul exch -3 mul lineto
+ -3 mul 0 lineto
+ setlinewidth 0 setlinejoin 2 setlinecap stroke
+} def
+
+% linewidth ltabhdse -
+% horizontal double line with southeast corner
+/ltabhdse
+{ dup dup dup dup
+ 0 0 moveto xsize 0 lineto
+ 0 exch -3 mul moveto
+ 3 mul xsize add exch -3 mul lineto
+ 3 mul xsize add 0 lineto
+ setlinewidth 0 setlinejoin 2 setlinecap stroke
+} def
+
+% linewidth ltabvs -
+% vertical single line
+/ltabvs
+{ 0 0 moveto 0 ysize lineto
+ setlinewidth 0 setlinecap stroke
+} def
+
+% linewidth ltabvd -
+% vertical double line
+/ltabvd
+{ dup dup
+ 0 0 moveto 0 ysize lineto
+ -3 mul 0 moveto -3 mul ysize lineto
+ setlinewidth 0 setlinecap stroke
+} def
+
+% linewidth ltabvdr -
+% vertical double line to right of mark
+/ltabvdr
+{ dup dup
+ 0 0 moveto 0 ysize lineto
+ 3 mul 0 moveto 3 mul ysize lineto
+ setlinewidth 0 setlinecap stroke
+} def
+%%EndResource
diff --git a/include/include/tbl b/include/include/tbl
new file mode 100644
index 0000000..4e73092
--- /dev/null
+++ b/include/include/tbl
@@ -0,0 +1,82 @@
+
+###############################################################################
+# #
+# Lout setup file for table printing #
+# #
+# Jeffrey H. Kingston #
+# 5 February 1999 #
+# #
+# This file has been placed in the public domain by its author. #
+# #
+###############################################################################
+
+###############################################################################
+# #
+# The @SysInclude { tblf } line #
+# #
+# This line causes Lout to read the definitions for tables, and should #
+# not be touched. #
+# #
+###############################################################################
+
+@SysInclude { tblf }
+
+
+###############################################################################
+# #
+# The @TbleSetup @Use clause #
+# #
+# To change the default value of any option, delete the # at the start of #
+# its line and change the value between braces. #
+# #
+###############################################################################
+
+@Use { @TblSetup
+ # paint { none } # colour of background
+ # texture { solid } # texture of paint background
+ # background { } # object in background
+ # font { } # font
+ # break { } # paragraph breaking style
+ # width { } # fixed width or "expand"
+ # height { } # fixed height
+ # indent { } # horizontal indent
+ # indentvertical { } # vertical indent
+ # strut { yes } # vertical strut
+ # struthorizontal { no } # horizontal strut
+ # margin { } # margin all round
+ # marginhorizontal { 0.6f @OrIfPlain 2s } # margin left, right of entry
+ # marginleft { } # margin left of entry
+ # marginright { } # margin right of entry
+ # marginvertical { 0.3f @OrIfPlain 2f } # margin above, below entry
+ # marginabove { } # margin above entry
+ # marginbelow { } # margin below entry
+ # rule { no } # rule all round cell
+ # rulehorizontal { } # rule above and below cell
+ # ruleabove { } # rule above cell
+ # rulebelow { } # rule below cell
+ # rulevertical { } # rule left and right of cell
+ # ruleleft { } # rule left of cell
+ # ruleright { } # rule right of cell
+ # rulewidth { 0.05f } # width (thickness) of rule
+ # rulehorizontalwidth { {} @OrIfPlain 1f } # width of above, below rules
+ # ruleabovewidth { } # width of above rule
+ # rulebelowwidth { } # width of below rule
+ # ruleverticalwidth { {} @OrIfPlain 1s } # width of left, right rules
+ # ruleleftwidth { } # width of left rule
+ # rulerightwidth { } # width of right rule
+ # rulegap { 0.15f } # gap between double rules
+ # rulehorizontalgap { {} @OrIfPlain 0f } # gap between dbl a&b rules
+ # ruleabovegap { } # gap between dbl above rules
+ # rulebelowgap { } # gap between dbl below rules
+ # ruleverticalgap { {} @OrIfPlain 0s } # gap between dbl l&r rules
+ # ruleleftgap { } # gap between dbl left rules
+ # rulerightgap { } # gap between dbl right rules
+ # rulecolour { black } # color of rules
+ # rulehorizontalcolour { } # color of above, below rules
+ # ruleabovecolour { } # color of above rules
+ # rulebelowcolour { } # color of below rules
+ # ruleverticalcolour { } # color of left, right rules
+ # ruleleftcolour { } # color of left rules
+ # rulerightcolour { } # color of right rules
+ # ruleplainchar { . } # plain text rule characters
+}
diff --git a/include/include/tblf b/include/include/tblf
new file mode 100644
index 0000000..e01fd16
--- /dev/null
+++ b/include/include/tblf
@@ -0,0 +1,3218 @@
+
+###############################################################################
+# #
+# Lout @Tbl package for tables #
+# #
+# Version 1.0 (22 November 1998) #
+# Version 1.1 (21 October 2001: improvements to handling of colour) #
+# Jeffrey H. Kingston #
+# #
+# Based on the @Tab package (Jeffrey H. Kingston, September 1991). #
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either Version 3, or (at your option) #
+# any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA #
+# #
+# As a special exception, when this file is read by Lout when processing #
+# a Lout source document, you may use the result without restriction. #
+# #
+###############################################################################
+
+@SysInclude { coltex }
+
+export @OrIfPlain
+def @TOIP {
+
+ def @OrIfPlain
+ left ps
+ right plain
+ {
+ @BackEnd @Case {
+ PlainText @Yield plain
+ else @Yield ps
+ }
+ }
+}
+
+export @Tbl
+def @TblSetup
+ import @TOIP named paint p { none }
+ import @TextureImport named texture t { solid }
+ import @TOIP named background bg {}
+ import @TOIP named font f {}
+ import @TOIP named break b {}
+ import @TOIP named width w {}
+ import @TOIP named height h {}
+ import @TOIP named indent i {}
+ import @TOIP named indentvertical iv {}
+ import @TOIP named strut s { yes }
+ import @TOIP named struthorizontal sh { no }
+ import @TOIP named margin m {}
+ import @TOIP named marginhorizontal mh { 0.6f @OrIfPlain 2s }
+ import @TOIP named marginleft ml {}
+ import @TOIP named marginright mr {}
+ import @TOIP named marginvertical mv { 0.3f @OrIfPlain 2f }
+ import @TOIP named marginabove ma {}
+ import @TOIP named marginbelow mb {}
+ import @TOIP named rule r { no }
+ import @TOIP named rulehorizontal rh {}
+ import @TOIP named ruleabove ra {}
+ import @TOIP named rulebelow rb {}
+ import @TOIP named rulevertical rv {}
+ import @TOIP named ruleleft rl {}
+ import @TOIP named ruleright rr {}
+ import @TOIP named rulewidth rw { 0.05f }
+ import @TOIP named rulehorizontalwidth rhw { {} @OrIfPlain 1f }
+ import @TOIP named ruleabovewidth raw {}
+ import @TOIP named rulebelowwidth rbw {}
+ import @TOIP named ruleverticalwidth rvw { {} @OrIfPlain 1s }
+ import @TOIP named ruleleftwidth rlw {}
+ import @TOIP named rulerightwidth rrw {}
+ import @TOIP named rulegap rg { 0.15f }
+ import @TOIP named rulehorizontalgap rhg { {} @OrIfPlain 0f }
+ import @TOIP named ruleabovegap rag {}
+ import @TOIP named rulebelowgap rbg {}
+ import @TOIP named ruleverticalgap rvg { {} @OrIfPlain 0s }
+ import @TOIP named ruleleftgap rlg {}
+ import @TOIP named rulerightgap rrg {}
+ import @TOIP named rulecolour rulecolor rc { black }
+ import @TOIP named rulehorizontalcolour rulehorizontalcolor rhc {}
+ import @TOIP named ruleabovecolour ruleabovecolor rac {}
+ import @TOIP named rulebelowcolour rulebelowcolor rbc {}
+ import @TOIP named ruleverticalcolour ruleverticalcolor rvc {}
+ import @TOIP named ruleleftcolour ruleleftcolor rlc {}
+ import @TOIP named rulerightcolour rulerightcolor rrc {}
+ import @TOIP named ruleplainchar rpc { . }
+
+@Begin
+
+ def @Else
+ precedence 20
+ associativity right
+ left x
+ right y
+ {
+ x @Case {
+ "" @Yield y
+ else @Yield x
+ }
+ }
+
+
+ ###########################################################################
+ # #
+ # Specific option values as the setup file knows them (i.e. Level 1) #
+ # #
+ ###########################################################################
+
+ def setupp { p }
+ def setupt { t }
+ def setupbg { bg }
+ def setupf { f }
+ def setupb { b }
+ def setupw { w }
+ def setuph { h }
+ def setupi { i }
+ def setupiv { iv }
+ def setups { s }
+ def setupsh { sh }
+ def setupml { ml @Else mh @Else m }
+ def setupmr { mr @Else mh @Else m }
+ def setupma { ma @Else mv @Else m }
+ def setupmb { mb @Else mv @Else m }
+ def setupra { ra @Else rh @Else r }
+ def setuprb { rb @Else rh @Else r }
+ def setuprl { rl @Else rv @Else r }
+ def setuprr { rr @Else rv @Else r }
+ def setupraw { raw @Else rhw @Else rw }
+ def setuprbw { rbw @Else rhw @Else rw }
+ def setuprlw { rlw @Else rvw @Else rw }
+ def setuprrw { rrw @Else rvw @Else rw }
+ def setuprag { rag @Else rhg @Else rg }
+ def setuprbg { rbg @Else rhg @Else rg }
+ def setuprlg { rlg @Else rvg @Else rg }
+ def setuprrg { rrg @Else rvg @Else rg }
+ def setuprac { rac @Else rhc @Else rc }
+ def setuprbc { rbc @Else rhc @Else rc }
+ def setuprlc { rlc @Else rvc @Else rc }
+ def setuprrc { rrc @Else rvc @Else rc }
+ def setuprpc { rpc }
+
+
+ ###########################################################################
+ # #
+ # @Tbl symbol #
+ # #
+ ###########################################################################
+
+ export
+
+ @Row
+ @Rowa
+ @Rowb
+ @Rowc
+ @Rowd
+ @Rowe
+ @Rowf
+ @Rowg
+ @Rowh
+
+ @FirstRow
+ @FirstRowa
+ @FirstRowb
+ @FirstRowc
+ @FirstRowd
+ @FirstRowe
+ @FirstRowf
+ @FirstRowg
+ @FirstRowh
+
+ @MarkRow
+ @MarkRowa
+ @MarkRowb
+ @MarkRowc
+ @MarkRowd
+ @MarkRowe
+ @MarkRowf
+ @MarkRowg
+ @MarkRowh
+
+ @NoBreakRow
+ @NoBreakRowa
+ @NoBreakRowb
+ @NoBreakRowc
+ @NoBreakRowd
+ @NoBreakRowe
+ @NoBreakRowf
+ @NoBreakRowg
+ @NoBreakRowh
+
+ @HeaderRow
+ @HeaderRowa
+ @HeaderRowb
+ @HeaderRowc
+ @HeaderRowd
+ @HeaderRowe
+ @HeaderRowf
+ @HeaderRowg
+ @HeaderRowh
+
+ @HeaderFirstRow
+ @HeaderFirstRowa
+ @HeaderFirstRowb
+ @HeaderFirstRowc
+ @HeaderFirstRowd
+ @HeaderFirstRowe
+ @HeaderFirstRowf
+ @HeaderFirstRowg
+ @HeaderFirstRowh
+
+ @EndHeaderRow
+
+ @NP
+
+ def @Tbl
+
+ # parameters for formatting the entire table
+ named paint p {}
+ import @TextureImport named texture t {}
+ named background bg {}
+ named font f {}
+ named break b {}
+ named width w {}
+ named height h {}
+ named indent i {}
+ named indentvertical iv {}
+ named strut s {}
+ named struthorizontal sh {}
+ named margin m {}
+ named marginhorizontal mh {}
+ named marginleft ml {}
+ named marginright mr {}
+ named marginvertical mv {}
+ named marginabove ma {}
+ named marginbelow mb {}
+ named rule r {}
+ named rulehorizontal rh {}
+ named ruleabove ra {}
+ named rulebelow rb {}
+ named rulevertical rv {}
+ named ruleleft rl {}
+ named ruleright rr {}
+ named rulewidth rw {}
+ named rulehorizontalwidth rhw {}
+ named ruleabovewidth raw {}
+ named rulebelowwidth rbw {}
+ named ruleverticalwidth rvw {}
+ named ruleleftwidth rlw {}
+ named rulerightwidth rrw {}
+ named rulegap rg {}
+ named rulehorizontalgap rhg {}
+ named ruleabovegap rag {}
+ named rulebelowgap rbg {}
+ named ruleverticalgap rvg {}
+ named ruleleftgap rlg {}
+ named rulerightgap rrg {}
+ named rulecolour rulecolor rc {}
+ named rulehorizontalcolour rulehorizontalcolor rhc {}
+ named ruleabovecolour ruleabovecolor rac {}
+ named rulebelowcolour rulebelowcolor rbc {}
+ named ruleverticalcolour ruleverticalcolor rvc {}
+ named ruleleftcolour ruleleftcolor rlc {}
+ named rulerightcolour rulerightcolor rrc {}
+ named ruleplainchar rpc {}
+
+ # parameters for formatting @Rowa rows
+ named apaint ap {}
+ import @TextureImport named atexture at {}
+ named abackground abg {}
+ named afont af {}
+ named abreak ab {}
+ named awidth aw {}
+ named aheight ah {}
+ named aindent ai {}
+ named aindentvertical aiv {}
+ named astrut as {}
+ named astruthorizontal ash {}
+ named amargin am {}
+ named amarginhorizontal amh {}
+ named amarginleft aml {}
+ named amarginright amr {}
+ named amarginvertical amv {}
+ named amarginabove ama {}
+ named amarginbelow amb {}
+ named arule ar {}
+ named arulehorizontal arh {}
+ named aruleabove ara {}
+ named arulebelow arb {}
+ named arulevertical arv {}
+ named aruleleft arl {}
+ named aruleright arr {}
+ named arulewidth arw {}
+ named arulehorizontalwidth arhw {}
+ named aruleabovewidth araw {}
+ named arulebelowwidth arbw {}
+ named aruleverticalwidth arvw {}
+ named aruleleftwidth arlw {}
+ named arulerightwidth arrw {}
+ named arulegap arg {}
+ named arulehorizontalgap arhg {}
+ named aruleabovegap arag {}
+ named arulebelowgap arbg {}
+ named aruleverticalgap arvg {}
+ named aruleleftgap arlg {}
+ named arulerightgap arrg {}
+ named arulecolour arulecolor arc {}
+ named arulehorizontalcolour arulehorizontalcolor arhc {}
+ named aruleabovecolour aruleabovecolor arac {}
+ named arulebelowcolour arulebelowcolor arbc {}
+ named aruleverticalcolour aruleverticalcolor arvc {}
+ named aruleleftcolour aruleleftcolor arlc {}
+ named arulerightcolour arulerightcolor arrc {}
+ named aruleplainchar arpc {}
+ named aformat
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ named @Cell
+ named paint p {}
+ import @TextureImport named texture t {}
+ named background bg {}
+ named font f {}
+ named break b {}
+ named width w {}
+ named height h {}
+ named indent i {}
+ named indentvertical iv {}
+ named strut s {}
+ named struthorizontal sh {}
+ named margin m {}
+ named marginhorizontal mh {}
+ named marginleft ml {}
+ named marginright mr {}
+ named marginvertical mv {}
+ named marginabove ma {}
+ named marginbelow mb {}
+ named rule r {}
+ named rulehorizontal rh {}
+ named ruleabove ra {}
+ named rulebelow rb {}
+ named rulevertical rv {}
+ named ruleleft rl {}
+ named ruleright rr {}
+ named rulewidth rw {}
+ named rulehorizontalwidth rhw {}
+ named ruleabovewidth raw {}
+ named rulebelowwidth rbw {}
+ named ruleverticalwidth rvw {}
+ named ruleleftwidth rlw {}
+ named rulerightwidth rrw {}
+ named rulegap rg {}
+ named rulehorizontalgap rhg {}
+ named ruleabovegap rag {}
+ named rulebelowgap rbg {}
+ named ruleverticalgap rvg {}
+ named ruleleftgap rlg {}
+ named rulerightgap rrg {}
+ named rulecolour rulecolor rc {}
+ named rulehorizontalcolour rulehorizontalcolor rhc {}
+ named ruleabovecolour ruleabovecolor rac {}
+ named rulebelowcolour rulebelowcolor rbc {}
+ named ruleverticalcolour ruleverticalcolor rvc {}
+ named ruleleftcolour ruleleftcolor rlc {}
+ named rulerightcolour rulerightcolor rrc {}
+ named ruleplainchar rpc {}
+ right x
+ {}
+ {}
+
+ # parameters for formatting @Rowb rows
+ named bpaint bp {}
+ import @TextureImport named btexture bt {}
+ named bbackground bbg {}
+ named bfont bf {}
+ named bbreak bb {}
+ named bwidth bw {}
+ named bheight bh {}
+ named bindent bi {}
+ named bindentvertical biv {}
+ named bstrut bs {}
+ named bstruthorizontal bsh {}
+ named bmargin bm {}
+ named bmarginhorizontal bmh {}
+ named bmarginleft bml {}
+ named bmarginright bmr {}
+ named bmarginvertical bmv {}
+ named bmarginabove bma {}
+ named bmarginbelow bmb {}
+ named brule br {}
+ named brulehorizontal brh {}
+ named bruleabove bra {}
+ named brulebelow brb {}
+ named brulevertical brv {}
+ named bruleleft brl {}
+ named bruleright brr {}
+ named brulewidth brw {}
+ named brulehorizontalwidth brhw {}
+ named bruleabovewidth braw {}
+ named brulebelowwidth brbw {}
+ named bruleverticalwidth brvw {}
+ named bruleleftwidth brlw {}
+ named brulerightwidth brrw {}
+ named brulegap brg {}
+ named brulehorizontalgap brhg {}
+ named bruleabovegap brag {}
+ named brulebelowgap brbg {}
+ named bruleverticalgap brvg {}
+ named bruleleftgap brlg {}
+ named brulerightgap brrg {}
+ named brulecolour brulecolor brc {}
+ named brulehorizontalcolour brulehorizontalcolor brhc {}
+ named bruleabovecolour bruleabovecolor brac {}
+ named brulebelowcolour brulebelowcolor brbc {}
+ named bruleverticalcolour bruleverticalcolor brvc {}
+ named bruleleftcolour bruleleftcolor brlc {}
+ named brulerightcolour brulerightcolor brrc {}
+ named bruleplainchar brpc {}
+ named bformat
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ named @Cell
+ named paint p {}
+ import @TextureImport named texture t {}
+ named background bg {}
+ named font f {}
+ named break b {}
+ named width w {}
+ named height h {}
+ named indent i {}
+ named indentvertical iv {}
+ named strut s {}
+ named struthorizontal sh {}
+ named margin m {}
+ named marginhorizontal mh {}
+ named marginleft ml {}
+ named marginright mr {}
+ named marginvertical mv {}
+ named marginabove ma {}
+ named marginbelow mb {}
+ named rule r {}
+ named rulehorizontal rh {}
+ named ruleabove ra {}
+ named rulebelow rb {}
+ named rulevertical rv {}
+ named ruleleft rl {}
+ named ruleright rr {}
+ named rulewidth rw {}
+ named rulehorizontalwidth rhw {}
+ named ruleabovewidth raw {}
+ named rulebelowwidth rbw {}
+ named ruleverticalwidth rvw {}
+ named ruleleftwidth rlw {}
+ named rulerightwidth rrw {}
+ named rulegap rg {}
+ named rulehorizontalgap rhg {}
+ named ruleabovegap rag {}
+ named rulebelowgap rbg {}
+ named ruleverticalgap rvg {}
+ named ruleleftgap rlg {}
+ named rulerightgap rrg {}
+ named rulecolour rulecolor rc {}
+ named rulehorizontalcolour rulehorizontalcolor rhc {}
+ named ruleabovecolour ruleabovecolor rac {}
+ named rulebelowcolour rulebelowcolor rbc {}
+ named ruleverticalcolour ruleverticalcolor rvc {}
+ named ruleleftcolour ruleleftcolor rlc {}
+ named rulerightcolour rulerightcolor rrc {}
+ named ruleplainchar rpc {}
+ right x
+ {}
+ {}
+
+ # parameters for formatting @Rowc rows
+ named cpaint cp {}
+ import @TextureImport named ctexture ct {}
+ named cbackground cbg {}
+ named cfont cf {}
+ named cbreak cb {}
+ named cwidth cw {}
+ named cheight ch {}
+ named cindent ci {}
+ named cindentvertical civ {}
+ named cstrut cs {}
+ named cstruthorizontal csh {}
+ named cmargin cm {}
+ named cmarginhorizontal cmh {}
+ named cmarginleft cml {}
+ named cmarginright cmr {}
+ named cmarginvertical cmv {}
+ named cmarginabove cma {}
+ named cmarginbelow cmb {}
+ named crule cr {}
+ named crulehorizontal crh {}
+ named cruleabove cra {}
+ named crulebelow crb {}
+ named crulevertical crv {}
+ named cruleleft crl {}
+ named cruleright crr {}
+ named crulewidth crw {}
+ named crulehorizontalwidth crhw {}
+ named cruleabovewidth craw {}
+ named crulebelowwidth crbw {}
+ named cruleverticalwidth crvw {}
+ named cruleleftwidth crlw {}
+ named crulerightwidth crrw {}
+ named crulegap crg {}
+ named crulehorizontalgap crhg {}
+ named cruleabovegap crag {}
+ named crulebelowgap crbg {}
+ named cruleverticalgap crvg {}
+ named cruleleftgap crlg {}
+ named crulerightgap crrg {}
+ named crulecolour crulecolor crc {}
+ named crulehorizontalcolour crulehorizontalcolor crhc {}
+ named cruleabovecolour cruleabovecolor crac {}
+ named crulebelowcolour crulebelowcolor crbc {}
+ named cruleverticalcolour cruleverticalcolor crvc {}
+ named cruleleftcolour cruleleftcolor crlc {}
+ named crulerightcolour crulerightcolor crrc {}
+ named cruleplainchar crpc {}
+ named cformat
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ named @Cell
+ named paint p {}
+ import @TextureImport named texture t {}
+ named background bg {}
+ named font f {}
+ named break b {}
+ named width w {}
+ named height h {}
+ named indent i {}
+ named indentvertical iv {}
+ named strut s {}
+ named struthorizontal sh {}
+ named margin m {}
+ named marginhorizontal mh {}
+ named marginleft ml {}
+ named marginright mr {}
+ named marginvertical mv {}
+ named marginabove ma {}
+ named marginbelow mb {}
+ named rule r {}
+ named rulehorizontal rh {}
+ named ruleabove ra {}
+ named rulebelow rb {}
+ named rulevertical rv {}
+ named ruleleft rl {}
+ named ruleright rr {}
+ named rulewidth rw {}
+ named rulehorizontalwidth rhw {}
+ named ruleabovewidth raw {}
+ named rulebelowwidth rbw {}
+ named ruleverticalwidth rvw {}
+ named ruleleftwidth rlw {}
+ named rulerightwidth rrw {}
+ named rulegap rg {}
+ named rulehorizontalgap rhg {}
+ named ruleabovegap rag {}
+ named rulebelowgap rbg {}
+ named ruleverticalgap rvg {}
+ named ruleleftgap rlg {}
+ named rulerightgap rrg {}
+ named rulecolour rulecolor rc {}
+ named rulehorizontalcolour rulehorizontalcolor rhc {}
+ named ruleabovecolour ruleabovecolor rac {}
+ named rulebelowcolour rulebelowcolor rbc {}
+ named ruleverticalcolour ruleverticalcolor rvc {}
+ named ruleleftcolour ruleleftcolor rlc {}
+ named rulerightcolour rulerightcolor rrc {}
+ named ruleplainchar rpc {}
+ right x
+ {}
+ {}
+
+ # parameters for formatting @Rowd rows
+ named dpaint dp {}
+ import @TextureImport named dtexture dt {}
+ named dbackground dbg {}
+ named dfont df {}
+ named dbreak db {}
+ named dwidth dw {}
+ named dheight dh {}
+ named dindent di {}
+ named dindentvertical div {}
+ named dstrut ds {}
+ named dstruthorizontal dsh {}
+ named dmargin dm {}
+ named dmarginhorizontal dmh {}
+ named dmarginleft dml {}
+ named dmarginright dmr {}
+ named dmarginvertical dmv {}
+ named dmarginabove dma {}
+ named dmarginbelow dmb {}
+ named drule dr {}
+ named drulehorizontal drh {}
+ named druleabove dra {}
+ named drulebelow drb {}
+ named drulevertical drv {}
+ named druleleft drl {}
+ named druleright drr {}
+ named drulewidth drw {}
+ named drulehorizontalwidth drhw {}
+ named druleabovewidth draw {}
+ named drulebelowwidth drbw {}
+ named druleverticalwidth drvw {}
+ named druleleftwidth drlw {}
+ named drulerightwidth drrw {}
+ named drulegap drg {}
+ named drulehorizontalgap drhg {}
+ named druleabovegap drag {}
+ named drulebelowgap drbg {}
+ named druleverticalgap drvg {}
+ named druleleftgap drlg {}
+ named drulerightgap drrg {}
+ named drulecolour drulecolor drc {}
+ named drulehorizontalcolour drulehorizontalcolor drhc {}
+ named druleabovecolour druleabovecolor drac {}
+ named drulebelowcolour drulebelowcolor drbc {}
+ named druleverticalcolour druleverticalcolor drvc {}
+ named druleleftcolour druleleftcolor drlc {}
+ named drulerightcolour drulerightcolor drrc {}
+ named druleplainchar drpc {}
+ named dformat
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ named @Cell
+ named paint p {}
+ import @TextureImport named texture t {}
+ named background bg {}
+ named font f {}
+ named break b {}
+ named width w {}
+ named height h {}
+ named indent i {}
+ named indentvertical iv {}
+ named strut s {}
+ named struthorizontal sh {}
+ named margin m {}
+ named marginhorizontal mh {}
+ named marginleft ml {}
+ named marginright mr {}
+ named marginvertical mv {}
+ named marginabove ma {}
+ named marginbelow mb {}
+ named rule r {}
+ named rulehorizontal rh {}
+ named ruleabove ra {}
+ named rulebelow rb {}
+ named rulevertical rv {}
+ named ruleleft rl {}
+ named ruleright rr {}
+ named rulewidth rw {}
+ named rulehorizontalwidth rhw {}
+ named ruleabovewidth raw {}
+ named rulebelowwidth rbw {}
+ named ruleverticalwidth rvw {}
+ named ruleleftwidth rlw {}
+ named rulerightwidth rrw {}
+ named rulegap rg {}
+ named rulehorizontalgap rhg {}
+ named ruleabovegap rag {}
+ named rulebelowgap rbg {}
+ named ruleverticalgap rvg {}
+ named ruleleftgap rlg {}
+ named rulerightgap rrg {}
+ named rulecolour rulecolor rc {}
+ named rulehorizontalcolour rulehorizontalcolor rhc {}
+ named ruleabovecolour ruleabovecolor rac {}
+ named rulebelowcolour rulebelowcolor rbc {}
+ named ruleverticalcolour ruleverticalcolor rvc {}
+ named ruleleftcolour ruleleftcolor rlc {}
+ named rulerightcolour rulerightcolor rrc {}
+ named ruleplainchar rpc {}
+ right x
+ {}
+ {}
+
+ # parameters for formatting @Rowe rows
+ named epaint ep {}
+ import @TextureImport named etexture et {}
+ named ebackground ebg {}
+ named efont ef {}
+ named ebreak eb {}
+ named ewidth ew {}
+ named eheight eh {}
+ named eindent ei {}
+ named eindentvertical eiv {}
+ named estrut es {}
+ named estruthorizontal esh {}
+ named emargin em {}
+ named emarginhorizontal emh {}
+ named emarginleft eml {}
+ named emarginright emr {}
+ named emarginvertical emv {}
+ named emarginabove ema {}
+ named emarginbelow emb {}
+ named erule er {}
+ named erulehorizontal erh {}
+ named eruleabove era {}
+ named erulebelow erb {}
+ named erulevertical erv {}
+ named eruleleft erl {}
+ named eruleright err {}
+ named erulewidth erw {}
+ named erulehorizontalwidth erhw {}
+ named eruleabovewidth eraw {}
+ named erulebelowwidth erbw {}
+ named eruleverticalwidth ervw {}
+ named eruleleftwidth erlw {}
+ named erulerightwidth errw {}
+ named erulegap erg {}
+ named erulehorizontalgap erhg {}
+ named eruleabovegap erag {}
+ named erulebelowgap erbg {}
+ named eruleverticalgap ervg {}
+ named eruleleftgap erlg {}
+ named erulerightgap errg {}
+ named erulecolour erulecolor erc {}
+ named erulehorizontalcolour erulehorizontalcolor erhc {}
+ named eruleabovecolour eruleabovecolor erac {}
+ named erulebelowcolour erulebelowcolor erbc {}
+ named eruleverticalcolour eruleverticalcolor ervc {}
+ named eruleleftcolour eruleleftcolor erlc {}
+ named erulerightcolour erulerightcolor errc {}
+ named eruleplainchar erpc {}
+ named eformat
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ named @Cell
+ named paint p {}
+ import @TextureImport named texture t {}
+ named background bg {}
+ named font f {}
+ named break b {}
+ named width w {}
+ named height h {}
+ named indent i {}
+ named indentvertical iv {}
+ named strut s {}
+ named struthorizontal sh {}
+ named margin m {}
+ named marginhorizontal mh {}
+ named marginleft ml {}
+ named marginright mr {}
+ named marginvertical mv {}
+ named marginabove ma {}
+ named marginbelow mb {}
+ named rule r {}
+ named rulehorizontal rh {}
+ named ruleabove ra {}
+ named rulebelow rb {}
+ named rulevertical rv {}
+ named ruleleft rl {}
+ named ruleright rr {}
+ named rulewidth rw {}
+ named rulehorizontalwidth rhw {}
+ named ruleabovewidth raw {}
+ named rulebelowwidth rbw {}
+ named ruleverticalwidth rvw {}
+ named ruleleftwidth rlw {}
+ named rulerightwidth rrw {}
+ named rulegap rg {}
+ named rulehorizontalgap rhg {}
+ named ruleabovegap rag {}
+ named rulebelowgap rbg {}
+ named ruleverticalgap rvg {}
+ named ruleleftgap rlg {}
+ named rulerightgap rrg {}
+ named rulecolour rulecolor rc {}
+ named rulehorizontalcolour rulehorizontalcolor rhc {}
+ named ruleabovecolour ruleabovecolor rac {}
+ named rulebelowcolour rulebelowcolor rbc {}
+ named ruleverticalcolour ruleverticalcolor rvc {}
+ named ruleleftcolour ruleleftcolor rlc {}
+ named rulerightcolour rulerightcolor rrc {}
+ named ruleplainchar rpc {}
+ right x
+ {}
+ {}
+
+ # parameters for formatting @Rowf rows
+ named fpaint fp {}
+ import @TextureImport named ftexture ft {}
+ named fbackground fbg {}
+ named ffont ff {}
+ named fbreak fb {}
+ named fwidth fw {}
+ named fheight fh {}
+ named findent fi {}
+ named findentvertical fiv {}
+ named fstrut fs {}
+ named fstruthorizontal fsh {}
+ named fmargin fm {}
+ named fmarginhorizontal fmh {}
+ named fmarginleft fml {}
+ named fmarginright fmr {}
+ named fmarginvertical fmv {}
+ named fmarginabove fma {}
+ named fmarginbelow fmb {}
+ named frule fr {}
+ named frulehorizontal frh {}
+ named fruleabove fra {}
+ named frulebelow frb {}
+ named frulevertical frv {}
+ named fruleleft frl {}
+ named fruleright frr {}
+ named frulewidth frw {}
+ named frulehorizontalwidth frhw {}
+ named fruleabovewidth fraw {}
+ named frulebelowwidth frbw {}
+ named fruleverticalwidth frvw {}
+ named fruleleftwidth frlw {}
+ named frulerightwidth frrw {}
+ named frulegap frg {}
+ named frulehorizontalgap frhg {}
+ named fruleabovegap frag {}
+ named frulebelowgap frbg {}
+ named fruleverticalgap frvg {}
+ named fruleleftgap frlg {}
+ named frulerightgap frrg {}
+ named frulecolour frulecolor frc {}
+ named frulehorizontalcolour frulehorizontalcolor frhc {}
+ named fruleabovecolour fruleabovecolor frac {}
+ named frulebelowcolour frulebelowcolor frbc {}
+ named fruleverticalcolour fruleverticalcolor frvc {}
+ named fruleleftcolour fruleleftcolor frlc {}
+ named frulerightcolour frulerightcolor frrc {}
+ named fruleplainchar frpc {}
+ named fformat
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ named @Cell
+ named paint p {}
+ import @TextureImport named texture t {}
+ named background bg {}
+ named font f {}
+ named break b {}
+ named width w {}
+ named height h {}
+ named indent i {}
+ named indentvertical iv {}
+ named strut s {}
+ named struthorizontal sh {}
+ named margin m {}
+ named marginhorizontal mh {}
+ named marginleft ml {}
+ named marginright mr {}
+ named marginvertical mv {}
+ named marginabove ma {}
+ named marginbelow mb {}
+ named rule r {}
+ named rulehorizontal rh {}
+ named ruleabove ra {}
+ named rulebelow rb {}
+ named rulevertical rv {}
+ named ruleleft rl {}
+ named ruleright rr {}
+ named rulewidth rw {}
+ named rulehorizontalwidth rhw {}
+ named ruleabovewidth raw {}
+ named rulebelowwidth rbw {}
+ named ruleverticalwidth rvw {}
+ named ruleleftwidth rlw {}
+ named rulerightwidth rrw {}
+ named rulegap rg {}
+ named rulehorizontalgap rhg {}
+ named ruleabovegap rag {}
+ named rulebelowgap rbg {}
+ named ruleverticalgap rvg {}
+ named ruleleftgap rlg {}
+ named rulerightgap rrg {}
+ named rulecolour rulecolor rc {}
+ named rulehorizontalcolour rulehorizontalcolor rhc {}
+ named ruleabovecolour ruleabovecolor rac {}
+ named rulebelowcolour rulebelowcolor rbc {}
+ named ruleverticalcolour ruleverticalcolor rvc {}
+ named ruleleftcolour ruleleftcolor rlc {}
+ named rulerightcolour rulerightcolor rrc {}
+ named ruleplainchar rpc {}
+ right x
+ {}
+ {}
+
+ # parameters for formatting @Rowg rows
+ named gpaint gp {}
+ import @TextureImport named gtexture gt {}
+ named gbackground gbg {}
+ named gfont gf {}
+ named gbreak gb {}
+ named gwidth gw {}
+ named gheight gh {}
+ named gindent gi {}
+ named gindentvertical giv {}
+ named gstrut gs {}
+ named gstruthorizontal gsh {}
+ named gmargin gm {}
+ named gmarginhorizontal gmh {}
+ named gmarginleft gml {}
+ named gmarginright gmr {}
+ named gmarginvertical gmv {}
+ named gmarginabove gma {}
+ named gmarginbelow gmb {}
+ named grule gr {}
+ named grulehorizontal grh {}
+ named gruleabove gra {}
+ named grulebelow grb {}
+ named grulevertical grv {}
+ named gruleleft grl {}
+ named gruleright grr {}
+ named grulewidth grw {}
+ named grulehorizontalwidth grhw {}
+ named gruleabovewidth graw {}
+ named grulebelowwidth grbw {}
+ named gruleverticalwidth grvw {}
+ named gruleleftwidth grlw {}
+ named grulerightwidth grrw {}
+ named grulegap grg {}
+ named grulehorizontalgap grhg {}
+ named gruleabovegap grag {}
+ named grulebelowgap grbg {}
+ named gruleverticalgap grvg {}
+ named gruleleftgap grlg {}
+ named grulerightgap grrg {}
+ named grulecolour grulecolor grc {}
+ named grulehorizontalcolour grulehorizontalcolor grhc {}
+ named gruleabovecolour gruleabovecolor grac {}
+ named grulebelowcolour grulebelowcolor grbc {}
+ named gruleverticalcolour gruleverticalcolor grvc {}
+ named gruleleftcolour gruleleftcolor grlc {}
+ named grulerightcolour grulerightcolor grrc {}
+ named gruleplainchar grpc {}
+ named gformat
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ named @Cell
+ named paint p {}
+ import @TextureImport named texture t {}
+ named background bg {}
+ named font f {}
+ named break b {}
+ named width w {}
+ named height h {}
+ named indent i {}
+ named indentvertical iv {}
+ named strut s {}
+ named struthorizontal sh {}
+ named margin m {}
+ named marginhorizontal mh {}
+ named marginleft ml {}
+ named marginright mr {}
+ named marginvertical mv {}
+ named marginabove ma {}
+ named marginbelow mb {}
+ named rule r {}
+ named rulehorizontal rh {}
+ named ruleabove ra {}
+ named rulebelow rb {}
+ named rulevertical rv {}
+ named ruleleft rl {}
+ named ruleright rr {}
+ named rulewidth rw {}
+ named rulehorizontalwidth rhw {}
+ named ruleabovewidth raw {}
+ named rulebelowwidth rbw {}
+ named ruleverticalwidth rvw {}
+ named ruleleftwidth rlw {}
+ named rulerightwidth rrw {}
+ named rulegap rg {}
+ named rulehorizontalgap rhg {}
+ named ruleabovegap rag {}
+ named rulebelowgap rbg {}
+ named ruleverticalgap rvg {}
+ named ruleleftgap rlg {}
+ named rulerightgap rrg {}
+ named rulecolour rulecolor rc {}
+ named rulehorizontalcolour rulehorizontalcolor rhc {}
+ named ruleabovecolour ruleabovecolor rac {}
+ named rulebelowcolour rulebelowcolor rbc {}
+ named ruleverticalcolour ruleverticalcolor rvc {}
+ named ruleleftcolour ruleleftcolor rlc {}
+ named rulerightcolour rulerightcolor rrc {}
+ named ruleplainchar rpc {}
+ right x
+ {}
+ {}
+
+ # parameters for formatting @Rowh rows
+ named hpaint hp {}
+ import @TextureImport named htexture ht {}
+ named hbackground hbg {}
+ named hfont hf {}
+ named hbreak hb {}
+ named hwidth hw {}
+ named hheight hh {}
+ named hindent hi {}
+ named hindentvertical hiv {}
+ named hstrut hs {}
+ named hstruthorizontal hsh {}
+ named hmargin hm {}
+ named hmarginhorizontal hmh {}
+ named hmarginleft hml {}
+ named hmarginright hmr {}
+ named hmarginvertical hmv {}
+ named hmarginabove hma {}
+ named hmarginbelow hmb {}
+ named hrule hr {}
+ named hrulehorizontal hrh {}
+ named hruleabove hra {}
+ named hrulebelow hrb {}
+ named hrulevertical hrv {}
+ named hruleleft hrl {}
+ named hruleright hrr {}
+ named hrulewidth hrw {}
+ named hrulehorizontalwidth hrhw {}
+ named hruleabovewidth hraw {}
+ named hrulebelowwidth hrbw {}
+ named hruleverticalwidth hrvw {}
+ named hruleleftwidth hrlw {}
+ named hrulerightwidth hrrw {}
+ named hrulegap hrg {}
+ named hrulehorizontalgap hrhg {}
+ named hruleabovegap hrag {}
+ named hrulebelowgap hrbg {}
+ named hruleverticalgap hrvg {}
+ named hruleleftgap hrlg {}
+ named hrulerightgap hrrg {}
+ named hrulecolour hrulecolor hrc {}
+ named hrulehorizontalcolour hrulehorizontalcolor hrhc {}
+ named hruleabovecolour hruleabovecolor hrac {}
+ named hrulebelowcolour hrulebelowcolor hrbc {}
+ named hruleverticalcolour hruleverticalcolor hrvc {}
+ named hruleleftcolour hruleleftcolor hrlc {}
+ named hrulerightcolour hrulerightcolor hrrc {}
+ named hruleplainchar hrpc {}
+ named hformat
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ named @Cell
+ named paint p {}
+ import @TextureImport named texture t {}
+ named background bg {}
+ named font f {}
+ named break b {}
+ named width w {}
+ named height h {}
+ named indent i {}
+ named indentvertical iv {}
+ named strut s {}
+ named struthorizontal sh {}
+ named margin m {}
+ named marginhorizontal mh {}
+ named marginleft ml {}
+ named marginright mr {}
+ named marginvertical mv {}
+ named marginabove ma {}
+ named marginbelow mb {}
+ named rule r {}
+ named rulehorizontal rh {}
+ named ruleabove ra {}
+ named rulebelow rb {}
+ named rulevertical rv {}
+ named ruleleft rl {}
+ named ruleright rr {}
+ named rulewidth rw {}
+ named rulehorizontalwidth rhw {}
+ named ruleabovewidth raw {}
+ named rulebelowwidth rbw {}
+ named ruleverticalwidth rvw {}
+ named ruleleftwidth rlw {}
+ named rulerightwidth rrw {}
+ named rulegap rg {}
+ named rulehorizontalgap rhg {}
+ named ruleabovegap rag {}
+ named rulebelowgap rbg {}
+ named ruleverticalgap rvg {}
+ named ruleleftgap rlg {}
+ named rulerightgap rrg {}
+ named rulecolour rulecolor rc {}
+ named rulehorizontalcolour rulehorizontalcolor rhc {}
+ named ruleabovecolour ruleabovecolor rac {}
+ named rulebelowcolour rulebelowcolor rbc {}
+ named ruleverticalcolour ruleverticalcolor rvc {}
+ named ruleleftcolour ruleleftcolor rlc {}
+ named rulerightcolour rulerightcolor rrc {}
+ named ruleplainchar rpc {}
+ right x
+ {}
+ {}
+
+ body @Body # this is the right parameter of @Tbl
+
+ {
+
+ #######################################################################
+ # #
+ # Specific option values as @Tbl knows them (i.e. Level 2) #
+ # #
+ #######################################################################
+
+ def tblp { p @Else setupp }
+ def tblt { t @Else setupt }
+ def tblbg { bg @Else setupbg }
+ def tblf { f @Else setupf }
+ def tblb { b @Else setupb }
+ def tblw { w @Else setupw }
+ def tblh { h @Else setuph }
+ def tbli { i @Else setupi }
+ def tbliv { iv @Else setupiv }
+ def tbls { s @Else setups }
+ def tblsh { sh @Else setupsh }
+ def tblml { ml @Else mh @Else m @Else setupml }
+ def tblmr { mr @Else mh @Else m @Else setupmr }
+ def tblma { ma @Else mv @Else m @Else setupma }
+ def tblmb { mb @Else mv @Else m @Else setupmb }
+ def tblra { ra @Else rh @Else r @Else setupra }
+ def tblrb { rb @Else rh @Else r @Else setuprb }
+ def tblrl { rl @Else rv @Else r @Else setuprl }
+ def tblrr { rr @Else rv @Else r @Else setuprr }
+ def tblraw { raw @Else rhw @Else rw @Else setupraw }
+ def tblrbw { rbw @Else rhw @Else rw @Else setuprbw }
+ def tblrlw { rlw @Else rvw @Else rw @Else setuprlw }
+ def tblrrw { rrw @Else rvw @Else rw @Else setuprrw }
+ def tblrag { rag @Else rhg @Else rg @Else setuprag }
+ def tblrbg { rbg @Else rhg @Else rg @Else setuprbg }
+ def tblrlg { rlg @Else rvg @Else rg @Else setuprlg }
+ def tblrrg { rrg @Else rvg @Else rg @Else setuprrg }
+ def tblrac { rac @Else rhc @Else rc @Else setuprac }
+ def tblrbc { rbc @Else rhc @Else rc @Else setuprbc }
+ def tblrlc { rlc @Else rvc @Else rc @Else setuprlc }
+ def tblrrc { rrc @Else rvc @Else rc @Else setuprrc }
+ def tblrpc { rpc @Else setuprpc }
+
+
+ def @DoCell
+ named compulsory p {}
+ named compulsory t {}
+ named compulsory bg {}
+ named compulsory f {}
+ named compulsory b {}
+ named compulsory w {}
+ named compulsory h {}
+ named compulsory i {}
+ named compulsory iv {}
+ named compulsory s {}
+ named compulsory sh {}
+ named compulsory ml {}
+ named compulsory mr {}
+ named compulsory ma {}
+ named compulsory mb {}
+ named compulsory ra {}
+ named compulsory rb {}
+ named compulsory rl {}
+ named compulsory rr {}
+ named compulsory raw {}
+ named compulsory rbw {}
+ named compulsory rlw {}
+ named compulsory rrw {}
+ named compulsory rag {}
+ named compulsory rbg {}
+ named compulsory rlg {}
+ named compulsory rrg {}
+ named compulsory rac {}
+ named compulsory rbc {}
+ named compulsory rlc {}
+ named compulsory rrc {}
+ named compulsory rpc {}
+ right @Body
+ {
+
+ def @ZeroWidth right x
+ {
+ @OneCol { |0io x |0io }
+ }
+
+ def @ZeroHeight right x
+ {
+ @OneRow { /0io x /0io }
+ }
+
+ def @PDFBox
+ {
+ "0 0 m __xsize 0 l __xsize __ysize l 0 __ysize l h"
+ }
+
+ def @PDFAddPaint right col
+ {
+ col @Case {
+ none @Yield ""
+ else @Yield { "q" @ColourCommand col "f Q" }
+ }
+ }
+
+ def @PSAddPaint right col
+ {
+ col @Case {
+ none @Yield ""
+ else @Yield { @ColourCommand col "fill" }
+ }
+ }
+
+ def @FillBox left col right x
+ {
+ @BackEnd @Case {
+ PostScript @Yield { {"LoutBox" @PSAddPaint col } @Graphic x }
+ PDF @Yield { { @PDFBox @PDFAddPaint col "S" } @Graphic x }
+ PlainText @Yield { rpc @PlainGraphic x }
+ }
+ }
+
+ def @HRule left col right thick
+ {
+ @ZeroHeight thick @High col @FillBox {}
+ # thick @High col @FillBox {}
+ }
+
+ def @VRule left col right thick
+ {
+ @ZeroWidth thick @Wide col @FillBox {}
+ # thick @Wide col @FillBox {}
+ }
+
+ def @DoubleHRule
+ left col
+ named gap {}
+ right thick
+ {
+ @OneCol { col @HRule thick /gap col @HRule thick }
+ }
+
+ def @DoubleVRule
+ left col
+ named gap {}
+ right thick
+ {
+ @OneRow { col @VRule thick |gap col @VRule thick }
+ }
+
+ def @MakeHRule
+ left col
+ named thick {}
+ named gap {}
+ right type
+ {
+ type @Case {
+ { none "" no } @Yield {}
+ { yes single } @Yield col @HRule thick
+ { double } @Yield col @DoubleHRule gap { gap } thick
+ }
+ }
+
+ def @MakeVRule
+ left col
+ named thick {}
+ named gap {}
+ right type
+ {
+ type @Case {
+ { none "" no } @Yield {}
+ { yes single } @Yield col @VRule thick
+ { double } @Yield col @DoubleVRule gap { gap } thick
+ }
+ }
+
+ def @RuleBox
+ left col
+ named hthick {}
+ named vthick {}
+ named htype {}
+ named vtype {}
+ {
+ htype @Case {
+ { none "" no } @Yield {}
+ else @Yield vtype @Case {
+ { none "" no } @Yield {}
+ else @Yield {
+ @ZeroWidth @ZeroHeight hthick @Wide vthick @High
+ col @FillBox {}
+ }
+ }
+ }
+ }
+
+ def @AddRules
+ right x
+ {
+ {
+ rlc @MakeVRule thick { rlw } gap { rlg } rl
+ |0rt |1rt
+ rrc @MakeVRule thick { rrw } gap { rrg } rr
+ } @Background
+ { rac @MakeHRule thick { raw } gap { rag } ra
+ /0rt
+ /1rt
+ rbc @MakeHRule thick { rbw } gap { rbg } rb
+ } @Background
+ {
+ |1rt rac @RuleBox hthick { rrw } vthick { raw } htype { rr } vtype { ra }
+ /0rt
+ /1rt |1rt
+ rbc @RuleBox hthick { rrw } vthick { rbw } htype { rr } vtype { rb }
+ } @Background x
+
+ }
+
+ def @AddMargins
+ right x
+ {
+ @OneCol @OneRow {
+ ^|ml |mr
+ ^/ma | x |
+ /mb | |
+ }
+ }
+
+ def @PaintBox right x
+ {
+ @BackEnd @Case {
+ PostScript @Yield { {"LoutBox" @ColourCommand p t "fill"} @Graphic x }
+ PDF @Yield { { @PDFBox @PDFAddPaint col "S" } @Graphic x }
+ PlainText @Yield { x }
+ }
+ }
+
+ def @AddPaint
+ right x
+ {
+ p @Case {
+ { none nopaint no } @Yield x
+ else @Yield { @PaintBox x }
+ }
+ }
+
+ def @Strut right x
+ {
+ def strutval right x
+ {
+ x @Case {
+ { no No "" } @Yield "0.0f"
+ { yes Yes } @Yield "1.0f"
+ else @Yield x
+ }
+ }
+
+ def vs { "0.5w" @VShift { { strutval s } @High } }
+ def hs { { strutval sh } @Wide }
+
+ @OneCol @OneRow { ^| hs ^/ vs | x }
+ }
+
+ def @VSize right x
+ {
+ h @Case {
+ "" @Yield x
+ else @Yield { h @High x }
+ }
+ }
+
+ def @HSize right x
+ {
+ w @Case {
+ "" @Yield x
+ "expand" @Yield { "40c" @Wide x }
+ else @Yield { w @Wide x }
+ }
+ }
+
+ def @HIndent right x
+ {
+ i @Case {
+ left @Yield @OneCol { | x }
+ ctr @Yield @OneCol { |"0.5rt" x }
+ right @Yield @OneCol { |"1.0rt" x }
+ mctr @Yield @OneCol { |"0.5bx" x }
+ align @Yield @OneCol x
+ else @Yield @OneCol { |i x }
+ }
+ }
+
+ def @VIndent right x
+ {
+ # note: the default value "" gives top alignment,
+ # but that is not a problem because we are by
+ # default putting in a vertical strut
+
+ iv @Case {
+ top @Yield @OneRow { / x }
+ ctr @Yield @OneRow { /"0.5rt" x }
+ foot @Yield @OneRow { /"1.0rt" x }
+ mctr @Yield @OneRow { /"0.5bx" x }
+ align @Yield @OneRow x
+ else @Yield @OneRow { /iv x }
+ }
+ }
+
+ @HSize @VSize @AddPaint bg @Background @AddRules
+ @HIndent @VIndent @AddMargins f @Font b @Break @Strut @Body
+ }
+
+ # symbol for producing @Row rows
+ def @DoRow
+ named paint p {}
+ import @TextureImport named texture t {}
+ named background bg {}
+ named font f {}
+ named break b {}
+ named width w {}
+ named height h {}
+ named indent i {}
+ named indentvertical iv {}
+ named strut s {}
+ named struthorizontal sh {}
+ named margin m {}
+ named marginhorizontal mh {}
+ named marginleft ml {}
+ named marginright mr {}
+ named marginvertical mv {}
+ named marginabove ma {}
+ named marginbelow mb {}
+ named rule r {}
+ named rulehorizontal rh {}
+ named ruleabove ra {}
+ named rulebelow rb {}
+ named rulevertical rv {}
+ named ruleleft rl {}
+ named ruleright rr {}
+ named rulewidth rw {}
+ named rulehorizontalwidth rhw {}
+ named ruleabovewidth raw {}
+ named rulebelowwidth rbw {}
+ named ruleverticalwidth rvw {}
+ named ruleleftwidth rlw {}
+ named rulerightwidth rrw {}
+ named rulegap rg {}
+ named rulehorizontalgap rhg {}
+ named ruleabovegap rag {}
+ named rulebelowgap rbg {}
+ named ruleverticalgap rvg {}
+ named ruleleftgap rlg {}
+ named rulerightgap rrg {}
+ named rulecolour rulecolor rc {}
+ named rulehorizontalcolour rulehorizontalcolor rhc {}
+ named ruleabovecolour ruleabovecolor rac {}
+ named rulebelowcolour rulebelowcolor rbc {}
+ named ruleverticalcolour ruleverticalcolor rvc {}
+ named ruleleftcolour ruleleftcolor rlc {}
+ named rulerightcolour rulerightcolor rrc {}
+ named ruleplainchar rpc {}
+ named compulsory format
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ named @Cell
+ named paint p {}
+ import @TextureImport named texture t {}
+ named background bg {}
+ named font f {}
+ named break b {}
+ named width w {}
+ named height h {}
+ named indent i {}
+ named indentvertical iv {}
+ named strut s {}
+ named struthorizontal sh {}
+ named margin m {}
+ named marginhorizontal mh {}
+ named marginleft ml {}
+ named marginright mr {}
+ named marginvertical mv {}
+ named marginabove ma {}
+ named marginbelow mb {}
+ named rule r {}
+ named rulehorizontal rh {}
+ named ruleabove ra {}
+ named rulebelow rb {}
+ named rulevertical rv {}
+ named ruleleft rl {}
+ named ruleright rr {}
+ named rulewidth rw {}
+ named rulehorizontalwidth rhw {}
+ named ruleabovewidth raw {}
+ named rulebelowwidth rbw {}
+ named ruleverticalwidth rvw {}
+ named ruleleftwidth rlw {}
+ named rulerightwidth rrw {}
+ named rulegap rg {}
+ named rulehorizontalgap rhg {}
+ named ruleabovegap rag {}
+ named rulebelowgap rbg {}
+ named ruleverticalgap rvg {}
+ named ruleleftgap rlg {}
+ named rulerightgap rrg {}
+ named rulecolour rulecolor rc {}
+ named rulehorizontalcolour rulehorizontalcolor rhc {}
+ named ruleabovecolour ruleabovecolor rac {}
+ named rulebelowcolour rulebelowcolor rbc {}
+ named ruleverticalcolour ruleverticalcolor rvc {}
+ named ruleleftcolour ruleleftcolor rlc {}
+ named rulerightcolour rulerightcolor rrc {}
+ named ruleplainchar rpc {}
+ right x
+ {}
+ {}
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ {
+
+ ###################################################################
+ # #
+ # Specific option values as @Row knows them (i.e. Level 6) #
+ # #
+ ###################################################################
+
+ def rowp { p @Else tblp }
+ def rowt { t @Else tblt }
+ def rowbg { bg @Else tblbg }
+ def rowf { f @Else tblf }
+ def rowb { b @Else tblb }
+ def roww { w @Else tblw }
+ def rowh { h @Else tblh }
+ def rowi { i @Else tbli }
+ def rowiv { iv @Else tbliv }
+ def rows { s @Else tbls }
+ def rowsh { sh @Else tblsh }
+ def rowml { ml @Else mh @Else m @Else tblml }
+ def rowmr { mr @Else mh @Else m @Else tblmr }
+ def rowma { ma @Else mv @Else m @Else tblma }
+ def rowmb { mb @Else mv @Else m @Else tblmb }
+ def rowra { ra @Else rh @Else r @Else tblra }
+ def rowrb { rb @Else rh @Else r @Else tblrb }
+ def rowrl { rl @Else rv @Else r @Else tblrl }
+ def rowrr { rr @Else rv @Else r @Else tblrr }
+ def rowraw { raw @Else rhw @Else rw @Else tblraw }
+ def rowrbw { rbw @Else rhw @Else rw @Else tblrbw }
+ def rowrlw { rlw @Else rvw @Else rw @Else tblrlw }
+ def rowrrw { rrw @Else rvw @Else rw @Else tblrrw }
+ def rowrag { rag @Else rhg @Else rg @Else tblrag }
+ def rowrbg { rbg @Else rhg @Else rg @Else tblrbg }
+ def rowrlg { rlg @Else rvg @Else rg @Else tblrlg }
+ def rowrrg { rrg @Else rvg @Else rg @Else tblrrg }
+ def rowrac { rac @Else rhc @Else rc @Else tblrac }
+ def rowrbc { rbc @Else rhc @Else rc @Else tblrbc }
+ def rowrlc { rlc @Else rvc @Else rc @Else tblrlc }
+ def rowrrc { rrc @Else rvc @Else rc @Else tblrrc }
+ def rowrpc { rpc @Else tblrpc }
+
+ format
+ A { A } B { B } C { C } D { D } E { E } F { F }
+ G { G } H { H } I { I } J { J } K { K } L { L }
+ M { M } N { N } O { O } P { P } Q { Q } R { R }
+ S { S } T { T } U { U } V { V } W { W } X { X }
+ Y { Y } Z { Z }
+ @Cell {
+
+ @DoCell
+
+ #######################################################
+ # #
+ # Specific option values to @Cell (i.e. Level 7) #
+ # #
+ #######################################################
+
+ p { p @Else rowp }
+ t { t @Else rowt }
+ bg { bg @Else rowbg }
+ f { f @Else rowf }
+ b { b @Else rowb }
+ w { w @Else roww }
+ h { h @Else rowh }
+ i { i @Else rowi }
+ iv { iv @Else rowiv }
+ s { s @Else rows }
+ sh { sh @Else rowsh }
+ ml { ml @Else mh @Else m @Else rowml }
+ mr { mr @Else mh @Else m @Else rowmr }
+ ma { ma @Else mv @Else m @Else rowma }
+ mb { mb @Else mv @Else m @Else rowmb }
+ ra { ra @Else rh @Else r @Else rowra }
+ rb { rb @Else rh @Else r @Else rowrb }
+ rl { rl @Else rv @Else r @Else rowrl }
+ rr { rr @Else rv @Else r @Else rowrr }
+ raw { raw @Else rhw @Else rw @Else rowraw }
+ rbw { rbw @Else rhw @Else rw @Else rowrbw }
+ rlw { rlw @Else rvw @Else rw @Else rowrlw }
+ rrw { rrw @Else rvw @Else rw @Else rowrrw }
+ rag { rag @Else rhg @Else rg @Else rowrag }
+ rbg { rbg @Else rhg @Else rg @Else rowrbg }
+ rlg { rlg @Else rvg @Else rg @Else rowrlg }
+ rrg { rrg @Else rvg @Else rg @Else rowrrg }
+ rac { rac @Else rhc @Else rc @Else rowrac }
+ rbc { rbc @Else rhc @Else rc @Else rowrbc }
+ rlc { rlc @Else rvc @Else rc @Else rowrlc }
+ rrc { rrc @Else rvc @Else rc @Else rowrrc }
+ rpc { rpc @Else rowrpc }
+
+ x
+ }
+ }
+
+ # symbol for producing @Rowa rows
+ def @DoRowa
+ named paint p {}
+ import @TextureImport named texture t {}
+ named background bg {}
+ named font f {}
+ named break b {}
+ named width w {}
+ named height h {}
+ named indent i {}
+ named indentvertical iv {}
+ named strut s {}
+ named struthorizontal sh {}
+ named margin m {}
+ named marginhorizontal mh {}
+ named marginleft ml {}
+ named marginright mr {}
+ named marginvertical mv {}
+ named marginabove ma {}
+ named marginbelow mb {}
+ named rule r {}
+ named rulehorizontal rh {}
+ named ruleabove ra {}
+ named rulebelow rb {}
+ named rulevertical rv {}
+ named ruleleft rl {}
+ named ruleright rr {}
+ named rulewidth rw {}
+ named rulehorizontalwidth rhw {}
+ named ruleabovewidth raw {}
+ named rulebelowwidth rbw {}
+ named ruleverticalwidth rvw {}
+ named ruleleftwidth rlw {}
+ named rulerightwidth rrw {}
+ named rulegap rg {}
+ named rulehorizontalgap rhg {}
+ named ruleabovegap rag {}
+ named rulebelowgap rbg {}
+ named ruleverticalgap rvg {}
+ named ruleleftgap rlg {}
+ named rulerightgap rrg {}
+ named rulecolour rulecolor rc {}
+ named rulehorizontalcolour rulehorizontalcolor rhc {}
+ named ruleabovecolour ruleabovecolor rac {}
+ named rulebelowcolour rulebelowcolor rbc {}
+ named ruleverticalcolour ruleverticalcolor rvc {}
+ named ruleleftcolour ruleleftcolor rlc {}
+ named rulerightcolour rulerightcolor rrc {}
+ named ruleplainchar rpc {}
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ {
+
+ ###################################################################
+ # #
+ # Specific option values at "aoption" level (i.e. Level 3) #
+ # #
+ ###################################################################
+
+ def tbxp { ap @Else tblp }
+ def tbxt { at @Else tblt }
+ def tbxbg { abg @Else tblbg }
+ def tbxf { af @Else tblf }
+ def tbxb { ab @Else tblb }
+ def tbxw { aw @Else tblw }
+ def tbxh { ah @Else tblh }
+ def tbxi { ai @Else tbli }
+ def tbxiv { aiv @Else tbliv }
+ def tbxs { as @Else tbls }
+ def tbxsh { ash @Else tblsh }
+ def tbxml { aml @Else amh @Else am @Else tblml }
+ def tbxmr { amr @Else amh @Else am @Else tblmr }
+ def tbxma { ama @Else amv @Else am @Else tblma }
+ def tbxmb { amb @Else amv @Else am @Else tblmb }
+ def tbxra { ara @Else arh @Else ar @Else tblra }
+ def tbxrb { arb @Else arh @Else ar @Else tblrb }
+ def tbxrl { arl @Else arv @Else ar @Else tblrl }
+ def tbxrr { arr @Else arv @Else ar @Else tblrr }
+ def tbxraw { araw @Else arhw @Else arw @Else tblraw }
+ def tbxrbw { arbw @Else arhw @Else arw @Else tblrbw }
+ def tbxrlw { arlw @Else arvw @Else arw @Else tblrlw }
+ def tbxrrw { arrw @Else arvw @Else arw @Else tblrrw }
+ def tbxrag { arag @Else arhg @Else arg @Else tblrag }
+ def tbxrbg { arbg @Else arhg @Else arg @Else tblrbg }
+ def tbxrlg { arlg @Else arvg @Else arg @Else tblrlg }
+ def tbxrrg { arrg @Else arvg @Else arg @Else tblrrg }
+ def tbxrac { arac @Else arhc @Else arc @Else tblrac }
+ def tbxrbc { arbc @Else arhc @Else arc @Else tblrbc }
+ def tbxrlc { arlc @Else arvc @Else arc @Else tblrlc }
+ def tbxrrc { arrc @Else arvc @Else arc @Else tblrrc }
+ def tbxrpc { arpc @Else tblrpc }
+
+ ###################################################################
+ # #
+ # Specific option values at @Rowa level (i.e. Level 4) #
+ # #
+ ###################################################################
+
+ def rowp { p @Else tbxp }
+ def rowt { t @Else tblt }
+ def rowbg { bg @Else tbxbg }
+ def rowf { f @Else tbxf }
+ def rowb { b @Else tbxb }
+ def roww { w @Else tbxw }
+ def rowh { h @Else tbxh }
+ def rowi { i @Else tbxi }
+ def rowiv { iv @Else tbxiv }
+ def rows { s @Else tbxs }
+ def rowsh { sh @Else tbxsh }
+ def rowml { ml @Else mh @Else m @Else tbxml }
+ def rowmr { mr @Else mh @Else m @Else tbxmr }
+ def rowma { ma @Else mv @Else m @Else tbxma }
+ def rowmb { mb @Else mv @Else m @Else tbxmb }
+ def rowra { ra @Else rh @Else r @Else tbxra }
+ def rowrb { rb @Else rh @Else r @Else tbxrb }
+ def rowrl { rl @Else rv @Else r @Else tbxrl }
+ def rowrr { rr @Else rv @Else r @Else tbxrr }
+ def rowraw { raw @Else rhw @Else rw @Else tbxraw }
+ def rowrbw { rbw @Else rhw @Else rw @Else tbxrbw }
+ def rowrlw { rlw @Else rvw @Else rw @Else tbxrlw }
+ def rowrrw { rrw @Else rvw @Else rw @Else tbxrrw }
+ def rowrag { rag @Else rhg @Else rg @Else tbxrag }
+ def rowrbg { rbg @Else rhg @Else rg @Else tbxrbg }
+ def rowrlg { rlg @Else rvg @Else rg @Else tbxrlg }
+ def rowrrg { rrg @Else rvg @Else rg @Else tbxrrg }
+ def rowrac { rac @Else rhc @Else rc @Else tbxrac }
+ def rowrbc { rbc @Else rhc @Else rc @Else tbxrbc }
+ def rowrlc { rlc @Else rvc @Else rc @Else tbxrlc }
+ def rowrrc { rrc @Else rvc @Else rc @Else tbxrrc }
+ def rowrpc { rpc @Else tbxrpc }
+
+ aformat
+ A { A } B { B } C { C } D { D } E { E } F { F }
+ G { G } H { H } I { I } J { J } K { K } L { L }
+ M { M } N { N } O { O } P { P } Q { Q } R { R }
+ S { S } T { T } U { U } V { V } W { W } X { X }
+ Y { Y } Z { Z }
+ @Cell {
+
+ @DoCell
+
+ #######################################################
+ # #
+ # Specific option values to @Cell (i.e. Level 5) #
+ # #
+ #######################################################
+
+ p { p @Else rowp }
+ t { t @Else rowt }
+ bg { bg @Else rowbg }
+ f { f @Else rowf }
+ b { b @Else rowb }
+ w { w @Else roww }
+ h { h @Else rowh }
+ i { i @Else rowi }
+ iv { iv @Else rowiv }
+ s { s @Else rows }
+ sh { sh @Else rowsh }
+ ml { ml @Else mh @Else m @Else rowml }
+ mr { mr @Else mh @Else m @Else rowmr }
+ ma { ma @Else mv @Else m @Else rowma }
+ mb { mb @Else mv @Else m @Else rowmb }
+ ra { ra @Else rh @Else r @Else rowra }
+ rb { rb @Else rh @Else r @Else rowrb }
+ rl { rl @Else rv @Else r @Else rowrl }
+ rr { rr @Else rv @Else r @Else rowrr }
+ raw { raw @Else rhw @Else rw @Else rowraw }
+ rbw { rbw @Else rhw @Else rw @Else rowrbw }
+ rlw { rlw @Else rvw @Else rw @Else rowrlw }
+ rrw { rrw @Else rvw @Else rw @Else rowrrw }
+ rag { rag @Else rhg @Else rg @Else rowrag }
+ rbg { rbg @Else rhg @Else rg @Else rowrbg }
+ rlg { rlg @Else rvg @Else rg @Else rowrlg }
+ rrg { rrg @Else rvg @Else rg @Else rowrrg }
+ rac { rac @Else rhc @Else rc @Else rowrac }
+ rbc { rbc @Else rhc @Else rc @Else rowrbc }
+ rlc { rlc @Else rvc @Else rc @Else rowrlc }
+ rrc { rrc @Else rvc @Else rc @Else rowrrc }
+ rpc { rpc @Else rowrpc }
+
+ x
+ }
+ }
+
+ # symbol for producing @Rowb rows
+ def @DoRowb
+ named paint p {}
+ import @TextureImport named texture t {}
+ named background bg {}
+ named font f {}
+ named break b {}
+ named width w {}
+ named height h {}
+ named indent i {}
+ named indentvertical iv {}
+ named strut s {}
+ named struthorizontal sh {}
+ named margin m {}
+ named marginhorizontal mh {}
+ named marginleft ml {}
+ named marginright mr {}
+ named marginvertical mv {}
+ named marginabove ma {}
+ named marginbelow mb {}
+ named rule r {}
+ named rulehorizontal rh {}
+ named ruleabove ra {}
+ named rulebelow rb {}
+ named rulevertical rv {}
+ named ruleleft rl {}
+ named ruleright rr {}
+ named rulewidth rw {}
+ named rulehorizontalwidth rhw {}
+ named ruleabovewidth raw {}
+ named rulebelowwidth rbw {}
+ named ruleverticalwidth rvw {}
+ named ruleleftwidth rlw {}
+ named rulerightwidth rrw {}
+ named rulegap rg {}
+ named rulehorizontalgap rhg {}
+ named ruleabovegap rag {}
+ named rulebelowgap rbg {}
+ named ruleverticalgap rvg {}
+ named ruleleftgap rlg {}
+ named rulerightgap rrg {}
+ named rulecolour rulecolor rc {}
+ named rulehorizontalcolour rulehorizontalcolor rhc {}
+ named ruleabovecolour ruleabovecolor rac {}
+ named rulebelowcolour rulebelowcolor rbc {}
+ named ruleverticalcolour ruleverticalcolor rvc {}
+ named ruleleftcolour ruleleftcolor rlc {}
+ named rulerightcolour rulerightcolor rrc {}
+ named ruleplainchar rpc {}
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ {
+
+ ###################################################################
+ # #
+ # Specific option values at "boption" level (i.e. Level 3) #
+ # #
+ ###################################################################
+
+ def tbxp { bp @Else tblp }
+ def tbxt { bt @Else tblt }
+ def tbxbg { bbg @Else tblbg }
+ def tbxf { bf @Else tblf }
+ def tbxb { bb @Else tblb }
+ def tbxw { bw @Else tblw }
+ def tbxh { bh @Else tblh }
+ def tbxi { bi @Else tbli }
+ def tbxiv { biv @Else tbliv }
+ def tbxs { bs @Else tbls }
+ def tbxsh { bsh @Else tblsh }
+ def tbxml { bml @Else bmh @Else bm @Else tblml }
+ def tbxmr { bmr @Else bmh @Else bm @Else tblmr }
+ def tbxma { bma @Else bmv @Else bm @Else tblma }
+ def tbxmb { bmb @Else bmv @Else bm @Else tblmb }
+ def tbxra { bra @Else brh @Else br @Else tblra }
+ def tbxrb { brb @Else brh @Else br @Else tblrb }
+ def tbxrl { brl @Else brv @Else br @Else tblrl }
+ def tbxrr { brr @Else brv @Else br @Else tblrr }
+ def tbxraw { braw @Else brhw @Else brw @Else tblraw }
+ def tbxrbw { brbw @Else brhw @Else brw @Else tblrbw }
+ def tbxrlw { brlw @Else brvw @Else brw @Else tblrlw }
+ def tbxrrw { brrw @Else brvw @Else brw @Else tblrrw }
+ def tbxrag { brag @Else brhg @Else brg @Else tblrag }
+ def tbxrbg { brbg @Else brhg @Else brg @Else tblrbg }
+ def tbxrlg { brlg @Else brvg @Else brg @Else tblrlg }
+ def tbxrrg { brrg @Else brvg @Else brg @Else tblrrg }
+ def tbxrac { brac @Else brhc @Else brc @Else tblrac }
+ def tbxrbc { brbc @Else brhc @Else brc @Else tblrbc }
+ def tbxrlc { brlc @Else brvc @Else brc @Else tblrlc }
+ def tbxrrc { brrc @Else brvc @Else brc @Else tblrrc }
+ def tbxrpc { brpc @Else tblrpc }
+
+ ###################################################################
+ # #
+ # Specific option values at @Rowb level (i.e. Level 4) #
+ # #
+ ###################################################################
+
+ def rowp { p @Else tbxp }
+ def rowt { t @Else tblt }
+ def rowbg { bg @Else tbxbg }
+ def rowf { f @Else tbxf }
+ def rowb { b @Else tbxb }
+ def roww { w @Else tbxw }
+ def rowh { h @Else tbxh }
+ def rowi { i @Else tbxi }
+ def rowiv { iv @Else tbxiv }
+ def rows { s @Else tbxs }
+ def rowsh { sh @Else tbxsh }
+ def rowml { ml @Else mh @Else m @Else tbxml }
+ def rowmr { mr @Else mh @Else m @Else tbxmr }
+ def rowma { ma @Else mv @Else m @Else tbxma }
+ def rowmb { mb @Else mv @Else m @Else tbxmb }
+ def rowra { ra @Else rh @Else r @Else tbxra }
+ def rowrb { rb @Else rh @Else r @Else tbxrb }
+ def rowrl { rl @Else rv @Else r @Else tbxrl }
+ def rowrr { rr @Else rv @Else r @Else tbxrr }
+ def rowraw { raw @Else rhw @Else rw @Else tbxraw }
+ def rowrbw { rbw @Else rhw @Else rw @Else tbxrbw }
+ def rowrlw { rlw @Else rvw @Else rw @Else tbxrlw }
+ def rowrrw { rrw @Else rvw @Else rw @Else tbxrrw }
+ def rowrag { rag @Else rhg @Else rg @Else tbxrag }
+ def rowrbg { rbg @Else rhg @Else rg @Else tbxrbg }
+ def rowrlg { rlg @Else rvg @Else rg @Else tbxrlg }
+ def rowrrg { rrg @Else rvg @Else rg @Else tbxrrg }
+ def rowrac { rac @Else rhc @Else rc @Else tbxrac }
+ def rowrbc { rbc @Else rhc @Else rc @Else tbxrbc }
+ def rowrlc { rlc @Else rvc @Else rc @Else tbxrlc }
+ def rowrrc { rrc @Else rvc @Else rc @Else tbxrrc }
+ def rowrpc { rpc @Else tbxrpc }
+
+ bformat
+ A { A } B { B } C { C } D { D } E { E } F { F }
+ G { G } H { H } I { I } J { J } K { K } L { L }
+ M { M } N { N } O { O } P { P } Q { Q } R { R }
+ S { S } T { T } U { U } V { V } W { W } X { X }
+ Y { Y } Z { Z }
+ @Cell {
+
+ @DoCell
+
+ #######################################################
+ # #
+ # Specific option values to @Cell (i.e. Level 5) #
+ # #
+ #######################################################
+
+ p { p @Else rowp }
+ t { t @Else rowt }
+ bg { bg @Else rowbg }
+ f { f @Else rowf }
+ b { b @Else rowb }
+ w { w @Else roww }
+ h { h @Else rowh }
+ i { i @Else rowi }
+ iv { iv @Else rowiv }
+ s { s @Else rows }
+ sh { sh @Else rowsh }
+ ml { ml @Else mh @Else m @Else rowml }
+ mr { mr @Else mh @Else m @Else rowmr }
+ ma { ma @Else mv @Else m @Else rowma }
+ mb { mb @Else mv @Else m @Else rowmb }
+ ra { ra @Else rh @Else r @Else rowra }
+ rb { rb @Else rh @Else r @Else rowrb }
+ rl { rl @Else rv @Else r @Else rowrl }
+ rr { rr @Else rv @Else r @Else rowrr }
+ raw { raw @Else rhw @Else rw @Else rowraw }
+ rbw { rbw @Else rhw @Else rw @Else rowrbw }
+ rlw { rlw @Else rvw @Else rw @Else rowrlw }
+ rrw { rrw @Else rvw @Else rw @Else rowrrw }
+ rag { rag @Else rhg @Else rg @Else rowrag }
+ rbg { rbg @Else rhg @Else rg @Else rowrbg }
+ rlg { rlg @Else rvg @Else rg @Else rowrlg }
+ rrg { rrg @Else rvg @Else rg @Else rowrrg }
+ rac { rac @Else rhc @Else rc @Else rowrac }
+ rbc { rbc @Else rhc @Else rc @Else rowrbc }
+ rlc { rlc @Else rvc @Else rc @Else rowrlc }
+ rrc { rrc @Else rvc @Else rc @Else rowrrc }
+ rpc { rpc @Else rowrpc }
+
+ x
+ }
+ }
+
+ # symbol for producing @Rowc rows
+ def @DoRowc
+ named paint p {}
+ import @TextureImport named texture t {}
+ named background bg {}
+ named font f {}
+ named break b {}
+ named width w {}
+ named height h {}
+ named indent i {}
+ named indentvertical iv {}
+ named strut s {}
+ named struthorizontal sh {}
+ named margin m {}
+ named marginhorizontal mh {}
+ named marginleft ml {}
+ named marginright mr {}
+ named marginvertical mv {}
+ named marginabove ma {}
+ named marginbelow mb {}
+ named rule r {}
+ named rulehorizontal rh {}
+ named ruleabove ra {}
+ named rulebelow rb {}
+ named rulevertical rv {}
+ named ruleleft rl {}
+ named ruleright rr {}
+ named rulewidth rw {}
+ named rulehorizontalwidth rhw {}
+ named ruleabovewidth raw {}
+ named rulebelowwidth rbw {}
+ named ruleverticalwidth rvw {}
+ named ruleleftwidth rlw {}
+ named rulerightwidth rrw {}
+ named rulegap rg {}
+ named rulehorizontalgap rhg {}
+ named ruleabovegap rag {}
+ named rulebelowgap rbg {}
+ named ruleverticalgap rvg {}
+ named ruleleftgap rlg {}
+ named rulerightgap rrg {}
+ named rulecolour rulecolor rc {}
+ named rulehorizontalcolour rulehorizontalcolor rhc {}
+ named ruleabovecolour ruleabovecolor rac {}
+ named rulebelowcolour rulebelowcolor rbc {}
+ named ruleverticalcolour ruleverticalcolor rvc {}
+ named ruleleftcolour ruleleftcolor rlc {}
+ named rulerightcolour rulerightcolor rrc {}
+ named ruleplainchar rpc {}
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ {
+
+ ###################################################################
+ # #
+ # Specific option values at "coption" level (i.e. Level 3) #
+ # #
+ ###################################################################
+
+ def tbxp { cp @Else tblp }
+ def tbxt { ct @Else tblt }
+ def tbxbg { cbg @Else tblbg }
+ def tbxf { cf @Else tblf }
+ def tbxb { cb @Else tblb }
+ def tbxw { cw @Else tblw }
+ def tbxh { ch @Else tblh }
+ def tbxi { ci @Else tbli }
+ def tbxiv { civ @Else tbliv }
+ def tbxs { cs @Else tbls }
+ def tbxsh { csh @Else tblsh }
+ def tbxml { cml @Else cmh @Else cm @Else tblml }
+ def tbxmr { cmr @Else cmh @Else cm @Else tblmr }
+ def tbxma { cma @Else cmv @Else cm @Else tblma }
+ def tbxmb { cmb @Else cmv @Else cm @Else tblmb }
+ def tbxra { cra @Else crh @Else cr @Else tblra }
+ def tbxrb { crb @Else crh @Else cr @Else tblrb }
+ def tbxrl { crl @Else crv @Else cr @Else tblrl }
+ def tbxrr { crr @Else crv @Else cr @Else tblrr }
+ def tbxraw { craw @Else crhw @Else crw @Else tblraw }
+ def tbxrbw { crbw @Else crhw @Else crw @Else tblrbw }
+ def tbxrlw { crlw @Else crvw @Else crw @Else tblrlw }
+ def tbxrrw { crrw @Else crvw @Else crw @Else tblrrw }
+ def tbxrag { crag @Else crhg @Else crg @Else tblrag }
+ def tbxrbg { crbg @Else crhg @Else crg @Else tblrbg }
+ def tbxrlg { crlg @Else crvg @Else crg @Else tblrlg }
+ def tbxrrg { crrg @Else crvg @Else crg @Else tblrrg }
+ def tbxrac { crac @Else crhc @Else crc @Else tblrac }
+ def tbxrbc { crbc @Else crhc @Else crc @Else tblrbc }
+ def tbxrlc { crlc @Else crvc @Else crc @Else tblrlc }
+ def tbxrrc { crrc @Else crvc @Else crc @Else tblrrc }
+ def tbxrpc { crpc @Else tblrpc }
+
+ ###################################################################
+ # #
+ # Specific option values at @Rowc level (i.e. Level 4) #
+ # #
+ ###################################################################
+
+ def rowp { p @Else tbxp }
+ def rowt { t @Else tblt }
+ def rowbg { bg @Else tbxbg }
+ def rowf { f @Else tbxf }
+ def rowb { b @Else tbxb }
+ def roww { w @Else tbxw }
+ def rowh { h @Else tbxh }
+ def rowi { i @Else tbxi }
+ def rowiv { iv @Else tbxiv }
+ def rows { s @Else tbxs }
+ def rowsh { sh @Else tbxsh }
+ def rowml { ml @Else mh @Else m @Else tbxml }
+ def rowmr { mr @Else mh @Else m @Else tbxmr }
+ def rowma { ma @Else mv @Else m @Else tbxma }
+ def rowmb { mb @Else mv @Else m @Else tbxmb }
+ def rowra { ra @Else rh @Else r @Else tbxra }
+ def rowrb { rb @Else rh @Else r @Else tbxrb }
+ def rowrl { rl @Else rv @Else r @Else tbxrl }
+ def rowrr { rr @Else rv @Else r @Else tbxrr }
+ def rowraw { raw @Else rhw @Else rw @Else tbxraw }
+ def rowrbw { rbw @Else rhw @Else rw @Else tbxrbw }
+ def rowrlw { rlw @Else rvw @Else rw @Else tbxrlw }
+ def rowrrw { rrw @Else rvw @Else rw @Else tbxrrw }
+ def rowrag { rag @Else rhg @Else rg @Else tbxrag }
+ def rowrbg { rbg @Else rhg @Else rg @Else tbxrbg }
+ def rowrlg { rlg @Else rvg @Else rg @Else tbxrlg }
+ def rowrrg { rrg @Else rvg @Else rg @Else tbxrrg }
+ def rowrac { rac @Else rhc @Else rc @Else tbxrac }
+ def rowrbc { rbc @Else rhc @Else rc @Else tbxrbc }
+ def rowrlc { rlc @Else rvc @Else rc @Else tbxrlc }
+ def rowrrc { rrc @Else rvc @Else rc @Else tbxrrc }
+ def rowrpc { rpc @Else tbxrpc }
+
+ cformat
+ A { A } B { B } C { C } D { D } E { E } F { F }
+ G { G } H { H } I { I } J { J } K { K } L { L }
+ M { M } N { N } O { O } P { P } Q { Q } R { R }
+ S { S } T { T } U { U } V { V } W { W } X { X }
+ Y { Y } Z { Z }
+ @Cell {
+
+ @DoCell
+
+ #######################################################
+ # #
+ # Specific option values to @Cell (i.e. Level 5) #
+ # #
+ #######################################################
+
+ p { p @Else rowp }
+ t { t @Else rowt }
+ bg { bg @Else rowbg }
+ f { f @Else rowf }
+ b { b @Else rowb }
+ w { w @Else roww }
+ h { h @Else rowh }
+ i { i @Else rowi }
+ iv { iv @Else rowiv }
+ s { s @Else rows }
+ sh { sh @Else rowsh }
+ ml { ml @Else mh @Else m @Else rowml }
+ mr { mr @Else mh @Else m @Else rowmr }
+ ma { ma @Else mv @Else m @Else rowma }
+ mb { mb @Else mv @Else m @Else rowmb }
+ ra { ra @Else rh @Else r @Else rowra }
+ rb { rb @Else rh @Else r @Else rowrb }
+ rl { rl @Else rv @Else r @Else rowrl }
+ rr { rr @Else rv @Else r @Else rowrr }
+ raw { raw @Else rhw @Else rw @Else rowraw }
+ rbw { rbw @Else rhw @Else rw @Else rowrbw }
+ rlw { rlw @Else rvw @Else rw @Else rowrlw }
+ rrw { rrw @Else rvw @Else rw @Else rowrrw }
+ rag { rag @Else rhg @Else rg @Else rowrag }
+ rbg { rbg @Else rhg @Else rg @Else rowrbg }
+ rlg { rlg @Else rvg @Else rg @Else rowrlg }
+ rrg { rrg @Else rvg @Else rg @Else rowrrg }
+ rac { rac @Else rhc @Else rc @Else rowrac }
+ rbc { rbc @Else rhc @Else rc @Else rowrbc }
+ rlc { rlc @Else rvc @Else rc @Else rowrlc }
+ rrc { rrc @Else rvc @Else rc @Else rowrrc }
+ rpc { rpc @Else rowrpc }
+
+ x
+ }
+ }
+
+ # symbol for producing @Rowd rows
+ def @DoRowd
+ named paint p {}
+ import @TextureImport named texture t {}
+ named background bg {}
+ named font f {}
+ named break b {}
+ named width w {}
+ named height h {}
+ named indent i {}
+ named indentvertical iv {}
+ named strut s {}
+ named struthorizontal sh {}
+ named margin m {}
+ named marginhorizontal mh {}
+ named marginleft ml {}
+ named marginright mr {}
+ named marginvertical mv {}
+ named marginabove ma {}
+ named marginbelow mb {}
+ named rule r {}
+ named rulehorizontal rh {}
+ named ruleabove ra {}
+ named rulebelow rb {}
+ named rulevertical rv {}
+ named ruleleft rl {}
+ named ruleright rr {}
+ named rulewidth rw {}
+ named rulehorizontalwidth rhw {}
+ named ruleabovewidth raw {}
+ named rulebelowwidth rbw {}
+ named ruleverticalwidth rvw {}
+ named ruleleftwidth rlw {}
+ named rulerightwidth rrw {}
+ named rulegap rg {}
+ named rulehorizontalgap rhg {}
+ named ruleabovegap rag {}
+ named rulebelowgap rbg {}
+ named ruleverticalgap rvg {}
+ named ruleleftgap rlg {}
+ named rulerightgap rrg {}
+ named rulecolour rulecolor rc {}
+ named rulehorizontalcolour rulehorizontalcolor rhc {}
+ named ruleabovecolour ruleabovecolor rac {}
+ named rulebelowcolour rulebelowcolor rbc {}
+ named ruleverticalcolour ruleverticalcolor rvc {}
+ named ruleleftcolour ruleleftcolor rlc {}
+ named rulerightcolour rulerightcolor rrc {}
+ named ruleplainchar rpc {}
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ {
+
+ ###################################################################
+ # #
+ # Specific option values at "doption" level (i.e. Level 3) #
+ # #
+ ###################################################################
+
+ def tbxp { dp @Else tblp }
+ def tbxt { dt @Else tblt }
+ def tbxbg { dbg @Else tblbg }
+ def tbxf { df @Else tblf }
+ def tbxb { db @Else tblb }
+ def tbxw { dw @Else tblw }
+ def tbxh { dh @Else tblh }
+ def tbxi { di @Else tbli }
+ def tbxiv { div @Else tbliv }
+ def tbxs { ds @Else tbls }
+ def tbxsh { dsh @Else tblsh }
+ def tbxml { dml @Else dmh @Else dm @Else tblml }
+ def tbxmr { dmr @Else dmh @Else dm @Else tblmr }
+ def tbxma { dma @Else dmv @Else dm @Else tblma }
+ def tbxmb { dmb @Else dmv @Else dm @Else tblmb }
+ def tbxra { dra @Else drh @Else dr @Else tblra }
+ def tbxrb { drb @Else drh @Else dr @Else tblrb }
+ def tbxrl { drl @Else drv @Else dr @Else tblrl }
+ def tbxrr { drr @Else drv @Else dr @Else tblrr }
+ def tbxraw { draw @Else drhw @Else drw @Else tblraw }
+ def tbxrbw { drbw @Else drhw @Else drw @Else tblrbw }
+ def tbxrlw { drlw @Else drvw @Else drw @Else tblrlw }
+ def tbxrrw { drrw @Else drvw @Else drw @Else tblrrw }
+ def tbxrag { drag @Else drhg @Else drg @Else tblrag }
+ def tbxrbg { drbg @Else drhg @Else drg @Else tblrbg }
+ def tbxrlg { drlg @Else drvg @Else drg @Else tblrlg }
+ def tbxrrg { drrg @Else drvg @Else drg @Else tblrrg }
+ def tbxrac { drac @Else drhc @Else drc @Else tblrac }
+ def tbxrbc { drbc @Else drhc @Else drc @Else tblrbc }
+ def tbxrlc { drlc @Else drvc @Else drc @Else tblrlc }
+ def tbxrrc { drrc @Else drvc @Else drc @Else tblrrc }
+ def tbxrpc { drpc @Else tblrpc }
+
+ ###################################################################
+ # #
+ # Specific option values at @Rowd level (i.e. Level 4) #
+ # #
+ ###################################################################
+
+ def rowp { p @Else tbxp }
+ def rowt { t @Else tblt }
+ def rowbg { bg @Else tbxbg }
+ def rowf { f @Else tbxf }
+ def rowb { b @Else tbxb }
+ def roww { w @Else tbxw }
+ def rowh { h @Else tbxh }
+ def rowi { i @Else tbxi }
+ def rowiv { iv @Else tbxiv }
+ def rows { s @Else tbxs }
+ def rowsh { sh @Else tbxsh }
+ def rowml { ml @Else mh @Else m @Else tbxml }
+ def rowmr { mr @Else mh @Else m @Else tbxmr }
+ def rowma { ma @Else mv @Else m @Else tbxma }
+ def rowmb { mb @Else mv @Else m @Else tbxmb }
+ def rowra { ra @Else rh @Else r @Else tbxra }
+ def rowrb { rb @Else rh @Else r @Else tbxrb }
+ def rowrl { rl @Else rv @Else r @Else tbxrl }
+ def rowrr { rr @Else rv @Else r @Else tbxrr }
+ def rowraw { raw @Else rhw @Else rw @Else tbxraw }
+ def rowrbw { rbw @Else rhw @Else rw @Else tbxrbw }
+ def rowrlw { rlw @Else rvw @Else rw @Else tbxrlw }
+ def rowrrw { rrw @Else rvw @Else rw @Else tbxrrw }
+ def rowrag { rag @Else rhg @Else rg @Else tbxrag }
+ def rowrbg { rbg @Else rhg @Else rg @Else tbxrbg }
+ def rowrlg { rlg @Else rvg @Else rg @Else tbxrlg }
+ def rowrrg { rrg @Else rvg @Else rg @Else tbxrrg }
+ def rowrac { rac @Else rhc @Else rc @Else tbxrac }
+ def rowrbc { rbc @Else rhc @Else rc @Else tbxrbc }
+ def rowrlc { rlc @Else rvc @Else rc @Else tbxrlc }
+ def rowrrc { rrc @Else rvc @Else rc @Else tbxrrc }
+ def rowrpc { rpc @Else tbxrpc }
+
+ dformat
+ A { A } B { B } C { C } D { D } E { E } F { F }
+ G { G } H { H } I { I } J { J } K { K } L { L }
+ M { M } N { N } O { O } P { P } Q { Q } R { R }
+ S { S } T { T } U { U } V { V } W { W } X { X }
+ Y { Y } Z { Z }
+ @Cell {
+
+ @DoCell
+
+ #######################################################
+ # #
+ # Specific option values to @Cell (i.e. Level 5) #
+ # #
+ #######################################################
+
+ p { p @Else rowp }
+ t { t @Else rowt }
+ bg { bg @Else rowbg }
+ f { f @Else rowf }
+ b { b @Else rowb }
+ w { w @Else roww }
+ h { h @Else rowh }
+ i { i @Else rowi }
+ iv { iv @Else rowiv }
+ s { s @Else rows }
+ sh { sh @Else rowsh }
+ ml { ml @Else mh @Else m @Else rowml }
+ mr { mr @Else mh @Else m @Else rowmr }
+ ma { ma @Else mv @Else m @Else rowma }
+ mb { mb @Else mv @Else m @Else rowmb }
+ ra { ra @Else rh @Else r @Else rowra }
+ rb { rb @Else rh @Else r @Else rowrb }
+ rl { rl @Else rv @Else r @Else rowrl }
+ rr { rr @Else rv @Else r @Else rowrr }
+ raw { raw @Else rhw @Else rw @Else rowraw }
+ rbw { rbw @Else rhw @Else rw @Else rowrbw }
+ rlw { rlw @Else rvw @Else rw @Else rowrlw }
+ rrw { rrw @Else rvw @Else rw @Else rowrrw }
+ rag { rag @Else rhg @Else rg @Else rowrag }
+ rbg { rbg @Else rhg @Else rg @Else rowrbg }
+ rlg { rlg @Else rvg @Else rg @Else rowrlg }
+ rrg { rrg @Else rvg @Else rg @Else rowrrg }
+ rac { rac @Else rhc @Else rc @Else rowrac }
+ rbc { rbc @Else rhc @Else rc @Else rowrbc }
+ rlc { rlc @Else rvc @Else rc @Else rowrlc }
+ rrc { rrc @Else rvc @Else rc @Else rowrrc }
+ rpc { rpc @Else rowrpc }
+
+ x
+ }
+ }
+
+ # symbol for producing @Rowe rows
+ def @DoRowe
+ named paint p {}
+ import @TextureImport named texture t {}
+ named background bg {}
+ named font f {}
+ named break b {}
+ named width w {}
+ named height h {}
+ named indent i {}
+ named indentvertical iv {}
+ named strut s {}
+ named struthorizontal sh {}
+ named margin m {}
+ named marginhorizontal mh {}
+ named marginleft ml {}
+ named marginright mr {}
+ named marginvertical mv {}
+ named marginabove ma {}
+ named marginbelow mb {}
+ named rule r {}
+ named rulehorizontal rh {}
+ named ruleabove ra {}
+ named rulebelow rb {}
+ named rulevertical rv {}
+ named ruleleft rl {}
+ named ruleright rr {}
+ named rulewidth rw {}
+ named rulehorizontalwidth rhw {}
+ named ruleabovewidth raw {}
+ named rulebelowwidth rbw {}
+ named ruleverticalwidth rvw {}
+ named ruleleftwidth rlw {}
+ named rulerightwidth rrw {}
+ named rulegap rg {}
+ named rulehorizontalgap rhg {}
+ named ruleabovegap rag {}
+ named rulebelowgap rbg {}
+ named ruleverticalgap rvg {}
+ named ruleleftgap rlg {}
+ named rulerightgap rrg {}
+ named rulecolour rulecolor rc {}
+ named rulehorizontalcolour rulehorizontalcolor rhc {}
+ named ruleabovecolour ruleabovecolor rac {}
+ named rulebelowcolour rulebelowcolor rbc {}
+ named ruleverticalcolour ruleverticalcolor rvc {}
+ named ruleleftcolour ruleleftcolor rlc {}
+ named rulerightcolour rulerightcolor rrc {}
+ named ruleplainchar rpc {}
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ {
+
+ ###################################################################
+ # #
+ # Specific option values at "eoption" level (i.e. Level 3) #
+ # #
+ ###################################################################
+
+ def tbxp { ep @Else tblp }
+ def tbxt { et @Else tblt }
+ def tbxbg { ebg @Else tblbg }
+ def tbxf { ef @Else tblf }
+ def tbxb { eb @Else tblb }
+ def tbxw { ew @Else tblw }
+ def tbxh { eh @Else tblh }
+ def tbxi { ei @Else tbli }
+ def tbxiv { eiv @Else tbliv }
+ def tbxs { es @Else tbls }
+ def tbxsh { esh @Else tblsh }
+ def tbxml { eml @Else emh @Else em @Else tblml }
+ def tbxmr { emr @Else emh @Else em @Else tblmr }
+ def tbxma { ema @Else emv @Else em @Else tblma }
+ def tbxmb { emb @Else emv @Else em @Else tblmb }
+ def tbxra { era @Else erh @Else er @Else tblra }
+ def tbxrb { erb @Else erh @Else er @Else tblrb }
+ def tbxrl { erl @Else erv @Else er @Else tblrl }
+ def tbxrr { err @Else erv @Else er @Else tblrr }
+ def tbxraw { eraw @Else erhw @Else erw @Else tblraw }
+ def tbxrbw { erbw @Else erhw @Else erw @Else tblrbw }
+ def tbxrlw { erlw @Else ervw @Else erw @Else tblrlw }
+ def tbxrrw { errw @Else ervw @Else erw @Else tblrrw }
+ def tbxrag { erag @Else erhg @Else erg @Else tblrag }
+ def tbxrbg { erbg @Else erhg @Else erg @Else tblrbg }
+ def tbxrlg { erlg @Else ervg @Else erg @Else tblrlg }
+ def tbxrrg { errg @Else ervg @Else erg @Else tblrrg }
+ def tbxrac { erac @Else erhc @Else erc @Else tblrac }
+ def tbxrbc { erbc @Else erhc @Else erc @Else tblrbc }
+ def tbxrlc { erlc @Else ervc @Else erc @Else tblrlc }
+ def tbxrrc { errc @Else ervc @Else erc @Else tblrrc }
+ def tbxrpc { erpc @Else tblrpc }
+
+ ###################################################################
+ # #
+ # Specific option values at @Rowe level (i.e. Level 4) #
+ # #
+ ###################################################################
+
+ def rowp { p @Else tbxp }
+ def rowt { t @Else tblt }
+ def rowbg { bg @Else tbxbg }
+ def rowf { f @Else tbxf }
+ def rowb { b @Else tbxb }
+ def roww { w @Else tbxw }
+ def rowh { h @Else tbxh }
+ def rowi { i @Else tbxi }
+ def rowiv { iv @Else tbxiv }
+ def rows { s @Else tbxs }
+ def rowsh { sh @Else tbxsh }
+ def rowml { ml @Else mh @Else m @Else tbxml }
+ def rowmr { mr @Else mh @Else m @Else tbxmr }
+ def rowma { ma @Else mv @Else m @Else tbxma }
+ def rowmb { mb @Else mv @Else m @Else tbxmb }
+ def rowra { ra @Else rh @Else r @Else tbxra }
+ def rowrb { rb @Else rh @Else r @Else tbxrb }
+ def rowrl { rl @Else rv @Else r @Else tbxrl }
+ def rowrr { rr @Else rv @Else r @Else tbxrr }
+ def rowraw { raw @Else rhw @Else rw @Else tbxraw }
+ def rowrbw { rbw @Else rhw @Else rw @Else tbxrbw }
+ def rowrlw { rlw @Else rvw @Else rw @Else tbxrlw }
+ def rowrrw { rrw @Else rvw @Else rw @Else tbxrrw }
+ def rowrag { rag @Else rhg @Else rg @Else tbxrag }
+ def rowrbg { rbg @Else rhg @Else rg @Else tbxrbg }
+ def rowrlg { rlg @Else rvg @Else rg @Else tbxrlg }
+ def rowrrg { rrg @Else rvg @Else rg @Else tbxrrg }
+ def rowrac { rac @Else rhc @Else rc @Else tbxrac }
+ def rowrbc { rbc @Else rhc @Else rc @Else tbxrbc }
+ def rowrlc { rlc @Else rvc @Else rc @Else tbxrlc }
+ def rowrrc { rrc @Else rvc @Else rc @Else tbxrrc }
+ def rowrpc { rpc @Else tbxrpc }
+
+ eformat
+ A { A } B { B } C { C } D { D } E { E } F { F }
+ G { G } H { H } I { I } J { J } K { K } L { L }
+ M { M } N { N } O { O } P { P } Q { Q } R { R }
+ S { S } T { T } U { U } V { V } W { W } X { X }
+ Y { Y } Z { Z }
+ @Cell {
+
+ @DoCell
+
+ #######################################################
+ # #
+ # Specific option values to @Cell (i.e. Level 5) #
+ # #
+ #######################################################
+
+ p { p @Else rowp }
+ t { t @Else rowt }
+ bg { bg @Else rowbg }
+ f { f @Else rowf }
+ b { b @Else rowb }
+ w { w @Else roww }
+ h { h @Else rowh }
+ i { i @Else rowi }
+ iv { iv @Else rowiv }
+ s { s @Else rows }
+ sh { sh @Else rowsh }
+ ml { ml @Else mh @Else m @Else rowml }
+ mr { mr @Else mh @Else m @Else rowmr }
+ ma { ma @Else mv @Else m @Else rowma }
+ mb { mb @Else mv @Else m @Else rowmb }
+ ra { ra @Else rh @Else r @Else rowra }
+ rb { rb @Else rh @Else r @Else rowrb }
+ rl { rl @Else rv @Else r @Else rowrl }
+ rr { rr @Else rv @Else r @Else rowrr }
+ raw { raw @Else rhw @Else rw @Else rowraw }
+ rbw { rbw @Else rhw @Else rw @Else rowrbw }
+ rlw { rlw @Else rvw @Else rw @Else rowrlw }
+ rrw { rrw @Else rvw @Else rw @Else rowrrw }
+ rag { rag @Else rhg @Else rg @Else rowrag }
+ rbg { rbg @Else rhg @Else rg @Else rowrbg }
+ rlg { rlg @Else rvg @Else rg @Else rowrlg }
+ rrg { rrg @Else rvg @Else rg @Else rowrrg }
+ rac { rac @Else rhc @Else rc @Else rowrac }
+ rbc { rbc @Else rhc @Else rc @Else rowrbc }
+ rlc { rlc @Else rvc @Else rc @Else rowrlc }
+ rrc { rrc @Else rvc @Else rc @Else rowrrc }
+ rpc { rpc @Else rowrpc }
+
+ x
+ }
+ }
+
+ # symbol for producing @Rowf rows
+ def @DoRowf
+ named paint p {}
+ import @TextureImport named texture t {}
+ named background bg {}
+ named font f {}
+ named break b {}
+ named width w {}
+ named height h {}
+ named indent i {}
+ named indentvertical iv {}
+ named strut s {}
+ named struthorizontal sh {}
+ named margin m {}
+ named marginhorizontal mh {}
+ named marginleft ml {}
+ named marginright mr {}
+ named marginvertical mv {}
+ named marginabove ma {}
+ named marginbelow mb {}
+ named rule r {}
+ named rulehorizontal rh {}
+ named ruleabove ra {}
+ named rulebelow rb {}
+ named rulevertical rv {}
+ named ruleleft rl {}
+ named ruleright rr {}
+ named rulewidth rw {}
+ named rulehorizontalwidth rhw {}
+ named ruleabovewidth raw {}
+ named rulebelowwidth rbw {}
+ named ruleverticalwidth rvw {}
+ named ruleleftwidth rlw {}
+ named rulerightwidth rrw {}
+ named rulegap rg {}
+ named rulehorizontalgap rhg {}
+ named ruleabovegap rag {}
+ named rulebelowgap rbg {}
+ named ruleverticalgap rvg {}
+ named ruleleftgap rlg {}
+ named rulerightgap rrg {}
+ named rulecolour rulecolor rc {}
+ named rulehorizontalcolour rulehorizontalcolor rhc {}
+ named ruleabovecolour ruleabovecolor rac {}
+ named rulebelowcolour rulebelowcolor rbc {}
+ named ruleverticalcolour ruleverticalcolor rvc {}
+ named ruleleftcolour ruleleftcolor rlc {}
+ named rulerightcolour rulerightcolor rrc {}
+ named ruleplainchar rpc {}
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ {
+
+ ###################################################################
+ # #
+ # Specific option values at "foption" level (i.e. Level 3) #
+ # #
+ ###################################################################
+
+ def tbxp { fp @Else tblp }
+ def tbxt { ft @Else tblt }
+ def tbxbg { fbg @Else tblbg }
+ def tbxf { ff @Else tblf }
+ def tbxb { fb @Else tblb }
+ def tbxw { fw @Else tblw }
+ def tbxh { fh @Else tblh }
+ def tbxi { fi @Else tbli }
+ def tbxiv { fiv @Else tbliv }
+ def tbxs { fs @Else tbls }
+ def tbxsh { fsh @Else tblsh }
+ def tbxml { fml @Else fmh @Else fm @Else tblml }
+ def tbxmr { fmr @Else fmh @Else fm @Else tblmr }
+ def tbxma { fma @Else fmv @Else fm @Else tblma }
+ def tbxmb { fmb @Else fmv @Else fm @Else tblmb }
+ def tbxra { fra @Else frh @Else fr @Else tblra }
+ def tbxrb { frb @Else frh @Else fr @Else tblrb }
+ def tbxrl { frl @Else frv @Else fr @Else tblrl }
+ def tbxrr { frr @Else frv @Else fr @Else tblrr }
+ def tbxraw { fraw @Else frhw @Else frw @Else tblraw }
+ def tbxrbw { frbw @Else frhw @Else frw @Else tblrbw }
+ def tbxrlw { frlw @Else frvw @Else frw @Else tblrlw }
+ def tbxrrw { frrw @Else frvw @Else frw @Else tblrrw }
+ def tbxrag { frag @Else frhg @Else frg @Else tblrag }
+ def tbxrbg { frbg @Else frhg @Else frg @Else tblrbg }
+ def tbxrlg { frlg @Else frvg @Else frg @Else tblrlg }
+ def tbxrrg { frrg @Else frvg @Else frg @Else tblrrg }
+ def tbxrac { frac @Else frhc @Else frc @Else tblrac }
+ def tbxrbc { frbc @Else frhc @Else frc @Else tblrbc }
+ def tbxrlc { frlc @Else frvc @Else frc @Else tblrlc }
+ def tbxrrc { frrc @Else frvc @Else frc @Else tblrrc }
+ def tbxrpc { frpc @Else tblrpc }
+
+ ###################################################################
+ # #
+ # Specific option values at @Rowf level (i.e. Level 4) #
+ # #
+ ###################################################################
+
+ def rowp { p @Else tbxp }
+ def rowt { t @Else tblt }
+ def rowbg { bg @Else tbxbg }
+ def rowf { f @Else tbxf }
+ def rowb { b @Else tbxb }
+ def roww { w @Else tbxw }
+ def rowh { h @Else tbxh }
+ def rowi { i @Else tbxi }
+ def rowiv { iv @Else tbxiv }
+ def rows { s @Else tbxs }
+ def rowsh { sh @Else tbxsh }
+ def rowml { ml @Else mh @Else m @Else tbxml }
+ def rowmr { mr @Else mh @Else m @Else tbxmr }
+ def rowma { ma @Else mv @Else m @Else tbxma }
+ def rowmb { mb @Else mv @Else m @Else tbxmb }
+ def rowra { ra @Else rh @Else r @Else tbxra }
+ def rowrb { rb @Else rh @Else r @Else tbxrb }
+ def rowrl { rl @Else rv @Else r @Else tbxrl }
+ def rowrr { rr @Else rv @Else r @Else tbxrr }
+ def rowraw { raw @Else rhw @Else rw @Else tbxraw }
+ def rowrbw { rbw @Else rhw @Else rw @Else tbxrbw }
+ def rowrlw { rlw @Else rvw @Else rw @Else tbxrlw }
+ def rowrrw { rrw @Else rvw @Else rw @Else tbxrrw }
+ def rowrag { rag @Else rhg @Else rg @Else tbxrag }
+ def rowrbg { rbg @Else rhg @Else rg @Else tbxrbg }
+ def rowrlg { rlg @Else rvg @Else rg @Else tbxrlg }
+ def rowrrg { rrg @Else rvg @Else rg @Else tbxrrg }
+ def rowrac { rac @Else rhc @Else rc @Else tbxrac }
+ def rowrbc { rbc @Else rhc @Else rc @Else tbxrbc }
+ def rowrlc { rlc @Else rvc @Else rc @Else tbxrlc }
+ def rowrrc { rrc @Else rvc @Else rc @Else tbxrrc }
+ def rowrpc { rpc @Else tbxrpc }
+
+ fformat
+ A { A } B { B } C { C } D { D } E { E } F { F }
+ G { G } H { H } I { I } J { J } K { K } L { L }
+ M { M } N { N } O { O } P { P } Q { Q } R { R }
+ S { S } T { T } U { U } V { V } W { W } X { X }
+ Y { Y } Z { Z }
+ @Cell {
+
+ @DoCell
+
+ #######################################################
+ # #
+ # Specific option values to @Cell (i.e. Level 5) #
+ # #
+ #######################################################
+
+ p { p @Else rowp }
+ t { t @Else rowt }
+ bg { bg @Else rowbg }
+ f { f @Else rowf }
+ b { b @Else rowb }
+ w { w @Else roww }
+ h { h @Else rowh }
+ i { i @Else rowi }
+ iv { iv @Else rowiv }
+ s { s @Else rows }
+ sh { sh @Else rowsh }
+ ml { ml @Else mh @Else m @Else rowml }
+ mr { mr @Else mh @Else m @Else rowmr }
+ ma { ma @Else mv @Else m @Else rowma }
+ mb { mb @Else mv @Else m @Else rowmb }
+ ra { ra @Else rh @Else r @Else rowra }
+ rb { rb @Else rh @Else r @Else rowrb }
+ rl { rl @Else rv @Else r @Else rowrl }
+ rr { rr @Else rv @Else r @Else rowrr }
+ raw { raw @Else rhw @Else rw @Else rowraw }
+ rbw { rbw @Else rhw @Else rw @Else rowrbw }
+ rlw { rlw @Else rvw @Else rw @Else rowrlw }
+ rrw { rrw @Else rvw @Else rw @Else rowrrw }
+ rag { rag @Else rhg @Else rg @Else rowrag }
+ rbg { rbg @Else rhg @Else rg @Else rowrbg }
+ rlg { rlg @Else rvg @Else rg @Else rowrlg }
+ rrg { rrg @Else rvg @Else rg @Else rowrrg }
+ rac { rac @Else rhc @Else rc @Else rowrac }
+ rbc { rbc @Else rhc @Else rc @Else rowrbc }
+ rlc { rlc @Else rvc @Else rc @Else rowrlc }
+ rrc { rrc @Else rvc @Else rc @Else rowrrc }
+ rpc { rpc @Else rowrpc }
+
+ x
+ }
+ }
+
+ # symbol for producing @Rowg rows
+ def @DoRowg
+ named paint p {}
+ import @TextureImport named texture t {}
+ named background bg {}
+ named font f {}
+ named break b {}
+ named width w {}
+ named height h {}
+ named indent i {}
+ named indentvertical iv {}
+ named strut s {}
+ named struthorizontal sh {}
+ named margin m {}
+ named marginhorizontal mh {}
+ named marginleft ml {}
+ named marginright mr {}
+ named marginvertical mv {}
+ named marginabove ma {}
+ named marginbelow mb {}
+ named rule r {}
+ named rulehorizontal rh {}
+ named ruleabove ra {}
+ named rulebelow rb {}
+ named rulevertical rv {}
+ named ruleleft rl {}
+ named ruleright rr {}
+ named rulewidth rw {}
+ named rulehorizontalwidth rhw {}
+ named ruleabovewidth raw {}
+ named rulebelowwidth rbw {}
+ named ruleverticalwidth rvw {}
+ named ruleleftwidth rlw {}
+ named rulerightwidth rrw {}
+ named rulegap rg {}
+ named rulehorizontalgap rhg {}
+ named ruleabovegap rag {}
+ named rulebelowgap rbg {}
+ named ruleverticalgap rvg {}
+ named ruleleftgap rlg {}
+ named rulerightgap rrg {}
+ named rulecolour rulecolor rc {}
+ named rulehorizontalcolour rulehorizontalcolor rhc {}
+ named ruleabovecolour ruleabovecolor rac {}
+ named rulebelowcolour rulebelowcolor rbc {}
+ named ruleverticalcolour ruleverticalcolor rvc {}
+ named ruleleftcolour ruleleftcolor rlc {}
+ named rulerightcolour rulerightcolor rrc {}
+ named ruleplainchar rpc {}
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ {
+
+ ###################################################################
+ # #
+ # Specific option values at "doption" level (i.e. Level 3) #
+ # #
+ ###################################################################
+
+ def tbxp { gp @Else tblp }
+ def tbxt { gt @Else tblt }
+ def tbxbg { gbg @Else tblbg }
+ def tbxf { gf @Else tblf }
+ def tbxb { gb @Else tblb }
+ def tbxw { gw @Else tblw }
+ def tbxh { gh @Else tblh }
+ def tbxi { gi @Else tbli }
+ def tbxiv { giv @Else tbliv }
+ def tbxs { gs @Else tbls }
+ def tbxsh { gsh @Else tblsh }
+ def tbxml { gml @Else gmh @Else gm @Else tblml }
+ def tbxmr { gmr @Else gmh @Else gm @Else tblmr }
+ def tbxma { gma @Else gmv @Else gm @Else tblma }
+ def tbxmb { gmb @Else gmv @Else gm @Else tblmb }
+ def tbxra { gra @Else grh @Else gr @Else tblra }
+ def tbxrb { grb @Else grh @Else gr @Else tblrb }
+ def tbxrl { grl @Else grv @Else gr @Else tblrl }
+ def tbxrr { grr @Else grv @Else gr @Else tblrr }
+ def tbxraw { graw @Else grhw @Else grw @Else tblraw }
+ def tbxrbw { grbw @Else grhw @Else grw @Else tblrbw }
+ def tbxrlw { grlw @Else grvw @Else grw @Else tblrlw }
+ def tbxrrw { grrw @Else grvw @Else grw @Else tblrrw }
+ def tbxrag { grag @Else grhg @Else grg @Else tblrag }
+ def tbxrbg { grbg @Else grhg @Else grg @Else tblrbg }
+ def tbxrlg { grlg @Else grvg @Else grg @Else tblrlg }
+ def tbxrrg { grrg @Else grvg @Else grg @Else tblrrg }
+ def tbxrac { grac @Else grhc @Else grc @Else tblrac }
+ def tbxrbc { grbc @Else grhc @Else grc @Else tblrbc }
+ def tbxrlc { grlc @Else grvc @Else grc @Else tblrlc }
+ def tbxrrc { grrc @Else grvc @Else grc @Else tblrrc }
+ def tbxrpc { grpc @Else tblrpc }
+
+ ###################################################################
+ # #
+ # Specific option values at @Rowg level (i.e. Level 4) #
+ # #
+ ###################################################################
+
+ def rowp { p @Else tbxp }
+ def rowt { t @Else tblt }
+ def rowbg { bg @Else tbxbg }
+ def rowf { f @Else tbxf }
+ def rowb { b @Else tbxb }
+ def roww { w @Else tbxw }
+ def rowh { h @Else tbxh }
+ def rowi { i @Else tbxi }
+ def rowiv { iv @Else tbxiv }
+ def rows { s @Else tbxs }
+ def rowsh { sh @Else tbxsh }
+ def rowml { ml @Else mh @Else m @Else tbxml }
+ def rowmr { mr @Else mh @Else m @Else tbxmr }
+ def rowma { ma @Else mv @Else m @Else tbxma }
+ def rowmb { mb @Else mv @Else m @Else tbxmb }
+ def rowra { ra @Else rh @Else r @Else tbxra }
+ def rowrb { rb @Else rh @Else r @Else tbxrb }
+ def rowrl { rl @Else rv @Else r @Else tbxrl }
+ def rowrr { rr @Else rv @Else r @Else tbxrr }
+ def rowraw { raw @Else rhw @Else rw @Else tbxraw }
+ def rowrbw { rbw @Else rhw @Else rw @Else tbxrbw }
+ def rowrlw { rlw @Else rvw @Else rw @Else tbxrlw }
+ def rowrrw { rrw @Else rvw @Else rw @Else tbxrrw }
+ def rowrag { rag @Else rhg @Else rg @Else tbxrag }
+ def rowrbg { rbg @Else rhg @Else rg @Else tbxrbg }
+ def rowrlg { rlg @Else rvg @Else rg @Else tbxrlg }
+ def rowrrg { rrg @Else rvg @Else rg @Else tbxrrg }
+ def rowrac { rac @Else rhc @Else rc @Else tbxrac }
+ def rowrbc { rbc @Else rhc @Else rc @Else tbxrbc }
+ def rowrlc { rlc @Else rvc @Else rc @Else tbxrlc }
+ def rowrrc { rrc @Else rvc @Else rc @Else tbxrrc }
+ def rowrpc { rpc @Else tbxrpc }
+
+ gformat
+ A { A } B { B } C { C } D { D } E { E } F { F }
+ G { G } H { H } I { I } J { J } K { K } L { L }
+ M { M } N { N } O { O } P { P } Q { Q } R { R }
+ S { S } T { T } U { U } V { V } W { W } X { X }
+ Y { Y } Z { Z }
+ @Cell {
+
+ @DoCell
+
+ #######################################################
+ # #
+ # Specific option values to @Cell (i.e. Level 5) #
+ # #
+ #######################################################
+
+ p { p @Else rowp }
+ t { t @Else rowt }
+ bg { bg @Else rowbg }
+ f { f @Else rowf }
+ b { b @Else rowb }
+ w { w @Else roww }
+ h { h @Else rowh }
+ i { i @Else rowi }
+ iv { iv @Else rowiv }
+ s { s @Else rows }
+ sh { sh @Else rowsh }
+ ml { ml @Else mh @Else m @Else rowml }
+ mr { mr @Else mh @Else m @Else rowmr }
+ ma { ma @Else mv @Else m @Else rowma }
+ mb { mb @Else mv @Else m @Else rowmb }
+ ra { ra @Else rh @Else r @Else rowra }
+ rb { rb @Else rh @Else r @Else rowrb }
+ rl { rl @Else rv @Else r @Else rowrl }
+ rr { rr @Else rv @Else r @Else rowrr }
+ raw { raw @Else rhw @Else rw @Else rowraw }
+ rbw { rbw @Else rhw @Else rw @Else rowrbw }
+ rlw { rlw @Else rvw @Else rw @Else rowrlw }
+ rrw { rrw @Else rvw @Else rw @Else rowrrw }
+ rag { rag @Else rhg @Else rg @Else rowrag }
+ rbg { rbg @Else rhg @Else rg @Else rowrbg }
+ rlg { rlg @Else rvg @Else rg @Else rowrlg }
+ rrg { rrg @Else rvg @Else rg @Else rowrrg }
+ rac { rac @Else rhc @Else rc @Else rowrac }
+ rbc { rbc @Else rhc @Else rc @Else rowrbc }
+ rlc { rlc @Else rvc @Else rc @Else rowrlc }
+ rrc { rrc @Else rvc @Else rc @Else rowrrc }
+ rpc { rpc @Else rowrpc }
+
+ x
+ }
+ }
+
+ # symbol for producing @Rowh rows
+ def @DoRowh
+ named paint p {}
+ import @TextureImport named texture t {}
+ named background bg {}
+ named font f {}
+ named break b {}
+ named width w {}
+ named height h {}
+ named indent i {}
+ named indentvertical iv {}
+ named strut s {}
+ named struthorizontal sh {}
+ named margin m {}
+ named marginhorizontal mh {}
+ named marginleft ml {}
+ named marginright mr {}
+ named marginvertical mv {}
+ named marginabove ma {}
+ named marginbelow mb {}
+ named rule r {}
+ named rulehorizontal rh {}
+ named ruleabove ra {}
+ named rulebelow rb {}
+ named rulevertical rv {}
+ named ruleleft rl {}
+ named ruleright rr {}
+ named rulewidth rw {}
+ named rulehorizontalwidth rhw {}
+ named ruleabovewidth raw {}
+ named rulebelowwidth rbw {}
+ named ruleverticalwidth rvw {}
+ named ruleleftwidth rlw {}
+ named rulerightwidth rrw {}
+ named rulegap rg {}
+ named rulehorizontalgap rhg {}
+ named ruleabovegap rag {}
+ named rulebelowgap rbg {}
+ named ruleverticalgap rvg {}
+ named ruleleftgap rlg {}
+ named rulerightgap rrg {}
+ named rulecolour rulecolor rc {}
+ named rulehorizontalcolour rulehorizontalcolor rhc {}
+ named ruleabovecolour ruleabovecolor rac {}
+ named rulebelowcolour rulebelowcolor rbc {}
+ named ruleverticalcolour ruleverticalcolor rvc {}
+ named ruleleftcolour ruleleftcolor rlc {}
+ named rulerightcolour rulerightcolor rrc {}
+ named ruleplainchar rpc {}
+ named A {} named B {} named C {} named D {} named E {}
+ named F {} named G {} named H {} named I {} named J {}
+ named K {} named L {} named M {} named N {} named O {}
+ named P {} named Q {} named R {} named S {} named T {}
+ named U {} named V {} named W {} named X {} named Y {}
+ named Z {}
+ {
+
+ ###################################################################
+ # #
+ # Specific option values at "hoption" level (i.e. Level 3) #
+ # #
+ ###################################################################
+
+ def tbxp { hp @Else tblp }
+ def tbxt { ht @Else tblt }
+ def tbxbg { hbg @Else tblbg }
+ def tbxf { hf @Else tblf }
+ def tbxb { hb @Else tblb }
+ def tbxw { hw @Else tblw }
+ def tbxh { hh @Else tblh }
+ def tbxi { hi @Else tbli }
+ def tbxiv { hiv @Else tbliv }
+ def tbxs { hs @Else tbls }
+ def tbxsh { hsh @Else tblsh }
+ def tbxml { hml @Else hmh @Else hm @Else tblml }
+ def tbxmr { hmr @Else hmh @Else hm @Else tblmr }
+ def tbxma { hma @Else hmv @Else hm @Else tblma }
+ def tbxmb { hmb @Else hmv @Else hm @Else tblmb }
+ def tbxra { hra @Else hrh @Else hr @Else tblra }
+ def tbxrb { hrb @Else hrh @Else hr @Else tblrb }
+ def tbxrl { hrl @Else hrv @Else hr @Else tblrl }
+ def tbxrr { hrr @Else hrv @Else hr @Else tblrr }
+ def tbxraw { hraw @Else hrhw @Else hrw @Else tblraw }
+ def tbxrbw { hrbw @Else hrhw @Else hrw @Else tblrbw }
+ def tbxrlw { hrlw @Else hrvw @Else hrw @Else tblrlw }
+ def tbxrrw { hrrw @Else hrvw @Else hrw @Else tblrrw }
+ def tbxrag { hrag @Else hrhg @Else hrg @Else tblrag }
+ def tbxrbg { hrbg @Else hrhg @Else hrg @Else tblrbg }
+ def tbxrlg { hrlg @Else hrvg @Else hrg @Else tblrlg }
+ def tbxrrg { hrrg @Else hrvg @Else hrg @Else tblrrg }
+ def tbxrac { hrac @Else hrhc @Else hrc @Else tblrac }
+ def tbxrbc { hrbc @Else hrhc @Else hrc @Else tblrbc }
+ def tbxrlc { hrlc @Else hrvc @Else hrc @Else tblrlc }
+ def tbxrrc { hrrc @Else hrvc @Else hrc @Else tblrrc }
+ def tbxrpc { hrpc @Else tblrpc }
+
+ ###################################################################
+ # #
+ # Specific option values at @Rowh level (i.e. Level 4) #
+ # #
+ ###################################################################
+
+ def rowp { p @Else tbxp }
+ def rowt { t @Else tblt }
+ def rowbg { bg @Else tbxbg }
+ def rowf { f @Else tbxf }
+ def rowb { b @Else tbxb }
+ def roww { w @Else tbxw }
+ def rowh { h @Else tbxh }
+ def rowi { i @Else tbxi }
+ def rowiv { iv @Else tbxiv }
+ def rows { s @Else tbxs }
+ def rowsh { sh @Else tbxsh }
+ def rowml { ml @Else mh @Else m @Else tbxml }
+ def rowmr { mr @Else mh @Else m @Else tbxmr }
+ def rowma { ma @Else mv @Else m @Else tbxma }
+ def rowmb { mb @Else mv @Else m @Else tbxmb }
+ def rowra { ra @Else rh @Else r @Else tbxra }
+ def rowrb { rb @Else rh @Else r @Else tbxrb }
+ def rowrl { rl @Else rv @Else r @Else tbxrl }
+ def rowrr { rr @Else rv @Else r @Else tbxrr }
+ def rowraw { raw @Else rhw @Else rw @Else tbxraw }
+ def rowrbw { rbw @Else rhw @Else rw @Else tbxrbw }
+ def rowrlw { rlw @Else rvw @Else rw @Else tbxrlw }
+ def rowrrw { rrw @Else rvw @Else rw @Else tbxrrw }
+ def rowrag { rag @Else rhg @Else rg @Else tbxrag }
+ def rowrbg { rbg @Else rhg @Else rg @Else tbxrbg }
+ def rowrlg { rlg @Else rvg @Else rg @Else tbxrlg }
+ def rowrrg { rrg @Else rvg @Else rg @Else tbxrrg }
+ def rowrac { rac @Else rhc @Else rc @Else tbxrac }
+ def rowrbc { rbc @Else rhc @Else rc @Else tbxrbc }
+ def rowrlc { rlc @Else rvc @Else rc @Else tbxrlc }
+ def rowrrc { rrc @Else rvc @Else rc @Else tbxrrc }
+ def rowrpc { rpc @Else tbxrpc }
+
+ hformat
+ A { A } B { B } C { C } D { D } E { E } F { F }
+ G { G } H { H } I { I } J { J } K { K } L { L }
+ M { M } N { N } O { O } P { P } Q { Q } R { R }
+ S { S } T { T } U { U } V { V } W { W } X { X }
+ Y { Y } Z { Z }
+ @Cell {
+
+ @DoCell
+
+ #######################################################
+ # #
+ # Specific option values to @Cell (i.e. Level 5) #
+ # #
+ #######################################################
+
+ p { p @Else rowp }
+ t { t @Else rowt }
+ bg { bg @Else rowbg }
+ f { f @Else rowf }
+ b { b @Else rowb }
+ w { w @Else roww }
+ h { h @Else rowh }
+ i { i @Else rowi }
+ iv { iv @Else rowiv }
+ s { s @Else rows }
+ sh { sh @Else rowsh }
+ ml { ml @Else mh @Else m @Else rowml }
+ mr { mr @Else mh @Else m @Else rowmr }
+ ma { ma @Else mv @Else m @Else rowma }
+ mb { mb @Else mv @Else m @Else rowmb }
+ ra { ra @Else rh @Else r @Else rowra }
+ rb { rb @Else rh @Else r @Else rowrb }
+ rl { rl @Else rv @Else r @Else rowrl }
+ rr { rr @Else rv @Else r @Else rowrr }
+ raw { raw @Else rhw @Else rw @Else rowraw }
+ rbw { rbw @Else rhw @Else rw @Else rowrbw }
+ rlw { rlw @Else rvw @Else rw @Else rowrlw }
+ rrw { rrw @Else rvw @Else rw @Else rowrrw }
+ rag { rag @Else rhg @Else rg @Else rowrag }
+ rbg { rbg @Else rhg @Else rg @Else rowrbg }
+ rlg { rlg @Else rvg @Else rg @Else rowrlg }
+ rrg { rrg @Else rvg @Else rg @Else rowrrg }
+ rac { rac @Else rhc @Else rc @Else rowrac }
+ rbc { rbc @Else rhc @Else rc @Else rowrbc }
+ rlc { rlc @Else rvc @Else rc @Else rowrlc }
+ rrc { rrc @Else rvc @Else rc @Else rowrrc }
+ rpc { rpc @Else rowrpc }
+
+ x
+ }
+ }
+
+ macro @Row { / @DoRow }
+ macro @Rowa { / @DoRowa }
+ macro @Rowb { / @DoRowb }
+ macro @Rowc { / @DoRowc }
+ macro @Rowd { / @DoRowd }
+ macro @Rowe { / @DoRowe }
+ macro @Rowf { / @DoRowf }
+ macro @Rowg { / @DoRowg }
+ macro @Rowh { / @DoRowh }
+
+ macro @FirstRow { @DoRow }
+ macro @FirstRowa { @DoRowa }
+ macro @FirstRowb { @DoRowb }
+ macro @FirstRowc { @DoRowc }
+ macro @FirstRowd { @DoRowd }
+ macro @FirstRowe { @DoRowe }
+ macro @FirstRowf { @DoRowf }
+ macro @FirstRowg { @DoRowg }
+ macro @FirstRowh { @DoRowh }
+
+ macro @MarkRow { ^/ @DoRow }
+ macro @MarkRowa { ^/ @DoRowa }
+ macro @MarkRowb { ^/ @DoRowb }
+ macro @MarkRowc { ^/ @DoRowc }
+ macro @MarkRowd { ^/ @DoRowd }
+ macro @MarkRowe { ^/ @DoRowe }
+ macro @MarkRowf { ^/ @DoRowf }
+ macro @MarkRowg { ^/ @DoRowg }
+ macro @MarkRowh { ^/ @DoRowh }
+
+ macro @NoBreakRow { /0iu @DoRow }
+ macro @NoBreakRowa { /0iu @DoRowa }
+ macro @NoBreakRowb { /0iu @DoRowb }
+ macro @NoBreakRowc { /0iu @DoRowc }
+ macro @NoBreakRowd { /0iu @DoRowd }
+ macro @NoBreakRowe { /0iu @DoRowe }
+ macro @NoBreakRowf { /0iu @DoRowf }
+ macro @NoBreakRowg { /0iu @DoRowg }
+ macro @NoBreakRowh { /0iu @DoRowh }
+
+ macro @HeaderRow { / @BeginHeaderComponent @DoRow }
+ macro @HeaderRowa { / @BeginHeaderComponent @DoRowa }
+ macro @HeaderRowb { / @BeginHeaderComponent @DoRowb }
+ macro @HeaderRowc { / @BeginHeaderComponent @DoRowc }
+ macro @HeaderRowd { / @BeginHeaderComponent @DoRowd }
+ macro @HeaderRowe { / @BeginHeaderComponent @DoRowe }
+ macro @HeaderRowf { / @BeginHeaderComponent @DoRowf }
+ macro @HeaderRowg { / @BeginHeaderComponent @DoRowg }
+ macro @HeaderRowh { / @BeginHeaderComponent @DoRowh }
+
+ macro @HeaderFirstRow { @BeginHeaderComponent @DoRow }
+ macro @HeaderFirstRowa { @BeginHeaderComponent @DoRowa }
+ macro @HeaderFirstRowb { @BeginHeaderComponent @DoRowb }
+ macro @HeaderFirstRowc { @BeginHeaderComponent @DoRowc }
+ macro @HeaderFirstRowd { @BeginHeaderComponent @DoRowd }
+ macro @HeaderFirstRowe { @BeginHeaderComponent @DoRowe }
+ macro @HeaderFirstRowf { @BeginHeaderComponent @DoRowf }
+ macro @HeaderFirstRowg { @BeginHeaderComponent @DoRowg }
+ macro @HeaderFirstRowh { @BeginHeaderComponent @DoRowh }
+
+ macro @EndHeaderRow { / @EndHeaderComponent }
+
+ macro @NP { /"1.1b" }
+
+ @Body
+ }
+
+@End @TblSetup
diff --git a/include/include/tcl b/include/include/tcl
new file mode 100644
index 0000000..d54defe
--- /dev/null
+++ b/include/include/tcl
@@ -0,0 +1,118 @@
+###############################################################################
+# #
+# Lout setup file for Tcl program printing #
+# #
+# Version 3.0 #
+# Jeffrey H. Kingston #
+# 6 April 2001 #
+# #
+# This file has been placed in the public domain by its author. #
+# #
+###############################################################################
+
+
+###############################################################################
+# #
+# @SysInclude line #
+# #
+# This line causes Lout to read the definitions for this programming #
+# language, and should not be touched. #
+# #
+###############################################################################
+
+@SysInclude { tclf }
+
+
+###############################################################################
+# #
+# @Use clause #
+# #
+# To change the default value of any option, delete the # at the start of #
+# its line and change the value between braces. #
+# #
+###############################################################################
+
+@Use { @TclSetup
+ # pipe { } # pipe source through this
+ # numbered { No } # No, Yes, or a line number
+ # numberedblanks { Yes } # No or Yes
+ # style { fixed } # fixed, varying, or symbol
+
+ # the following options apply when style is "fixed"
+
+ # fixedfont { Courier } # font family
+ # fixedsize { -1.0p } # font size
+ # fixedline { 1.0vx } # line-space
+ # fixedblanklinescale { 1.0 } # blank-line scale
+ # fixedspace { lout } # spacing mode
+ # fixedtabin { 8 } # tab interval
+ # fixedtabout { 8s } # tab width
+
+ # fixedidentifiers { Base } # identifier face
+ # fixedkeywords { Base } # keyword face
+ # fixedoperators { Base } # operator face
+ # fixednumbers { Base } # number face
+ # fixedstrings { Base } # string face
+ # fixedcomments { Base } # comment face
+ # fixedlinenumbers { Base } # line numbers face
+
+ # fixedidentifiersformat { @Body } # identifiers format
+ # fixedkeywordsformat { @Body } # keywords format
+ # fixedoperatorsformat { @Body } # operators format
+ # fixednumbersformat { @Body } # numbers format
+ # fixedstringsformat { @Body } # strings format
+ # fixedcommentsformat { @Body } # comments format
+ # fixedlinenumbersformat { @Body } # line numbers format
+
+ # the following options apply when style is "varying"
+
+ # varyingfont { } # font family
+ # varyingsize { 1.0f } # font size
+ # varyingline { 1.0vx } # line-space
+ # varyingblanklinescale { 1.0 } # blank-line scale
+ # varyingspace { lout } # spacing mode
+ # varyingtabin { 8 } # tab interval
+ # varyingtabout { 3f } # tab width
+
+ # varyingidentifiers { Slope } # identifier face
+ # varyingkeywords { Bold } # keyword face
+ # varyingoperators { Base } # operator face
+ # varyingnumbers { Base } # number face
+ # varyingstrings { Slope } # string face
+ # varyingcomments { Base } # comment face
+ # varyinglinenumbers { Base } # line numbers face
+
+ # varyingidentifiersformat { @Body } # identifiers format
+ # varyingkeywordsformat { @Body } # keywords format
+ # varyingoperatorsformat { @Body } # operators format
+ # varyingnumbersformat { @Body } # numbers format
+ # varyingstringsformat { @Body } # strings format
+ # varyingcommentsformat { @Body } # comments format
+ # varyinglinenumbersformat { @Body } # line numbers format
+
+ # the following options apply when style is "symbol"
+
+ # symbolfont { } # font family
+ # symbolsize { 1.0f } # font size
+ # symbolline { 1.0vx } # line-space
+ # symbolblanklinescale { 1.0 } # blank-line scale
+ # symbolspace { lout } # spacing mode
+ # symboltabin { 8 } # tab interval
+ # symboltabout { 3f } # tab width
+
+ # symbolidentifiers { Slope } # identifier face
+ # symbolkeywords { Bold } # keyword face
+ # symboloperators { Base } # operator face
+ # symbolnumbers { Base } # number face
+ # symbolstrings { Slope } # string face
+ # symbolcomments { Base } # comment face
+ # symbollinenumbers { Base } # line numbers face
+
+ # symbolidentifiersformat { @Body } # identifiers format
+ # symbolkeywordsformat { @Body } # keywords format
+ # symboloperatorsformat { @Body } # operators format
+ # symbolnumbersformat { @Body } # numbers format
+ # symbolstringsformat { @Body } # strings format
+ # symbolcommentsformat { @Body } # comments format
+ # symbollinenumbersformat { @Body } # line numbers format
+}
diff --git a/include/include/tclf b/include/include/tclf
new file mode 100644
index 0000000..fd83271
--- /dev/null
+++ b/include/include/tclf
@@ -0,0 +1,446 @@
+
+###############################################################################
+# #
+# Lout @TclSetup package for formatting Tcl programs #
+# #
+# Version 3.0 #
+# Jeffrey H. Kingston #
+# 6 April 2001 #
+# #
+# This package uses a filtered body parameter to convert program source #
+# code into Lout source. The filter program is prg2lout, which is #
+# distributed with Lout and should be compiled and installed wherever #
+# Lout itself is. #
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either Version 3, or (at your option) #
+# any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA #
+# #
+# As a special exception, when this file is read by Lout when processing #
+# a Lout source document, you may use the result without restriction. #
+# #
+###############################################################################
+
+export @Tcl
+def @TclSetup
+ named pipe { } # pipe through this first
+ named numbered { No } # want lines numbered?
+ named blanknumbered { Yes } # blank lines numbered?
+ named style
+ named @OrIfPlain left x right y
+ { @BackEnd @Case { PlainText @Yield y else @Yield x } }
+ { fixed } # print style
+
+ # the following options apply when style is "fixed"
+ named fixedfont { Courier }# font family
+ named fixedsize { -1.0p } # font size
+ named fixedline { 1.0vx } # line-space
+ named fixedblanklinescale { 1.0 } # blank-line scale
+ named fixedspace { lout } # spacing mode
+ named fixedtabin { 8 } # tab interval
+ named fixedtabout { 8s } # tab width
+
+ named fixedidentifiers { Base } # identifier face
+ named fixedkeywords { Base } # keyword face
+ named fixedoperators { Base } # operator face
+ named fixednumbers { Base } # number face
+ named fixedstrings { Base } # string face
+ named fixedcomments { Base } # comment face
+ named fixedlinenumbers { Base } # line numbers face
+
+ named fixedidentifiersformat right @Body { @Body } # identifier format
+ named fixedkeywordsformat right @Body { @Body } # keyword format
+ named fixedoperatorsformat right @Body { @Body } # operators format
+ named fixednumbersformat right @Body { @Body } # number format
+ named fixedstringsformat right @Body { @Body } # string format
+ named fixedcommentsformat right @Body { @Body } # comment format
+ named fixedlinenumbersformat right @Body { @Body } # line nums format
+
+ # the following options apply when style is "varying"
+ named varyingfont { } # font family
+ named varyingsize { 1.0f } # font size
+ named varyingline { 1.0vx } # line-space
+ named varyingblanklinescale { 1.0 } # blank-line scale
+ named varyingspace { lout } # spacing mode
+ named varyingtabin { 8 } # tab interval
+ named varyingtabout { 3f } # tab width
+
+ named varyingidentifiers { Slope } # identifier face
+ named varyingkeywords { Bold } # keyword face
+ named varyingoperators { Base } # operator face
+ named varyingnumbers { Base } # number face
+ named varyingstrings { Slope } # string face
+ named varyingcomments { Base } # comment face
+ named varyinglinenumbers { Base } # line numbers face
+
+ named varyingidentifiersformat right @Body { @Body } # identifier format
+ named varyingkeywordsformat right @Body { @Body } # keyword format
+ named varyingoperatorsformat right @Body { @Body } # operators format
+ named varyingnumbersformat right @Body { @Body } # number format
+ named varyingstringsformat right @Body { @Body } # string format
+ named varyingcommentsformat right @Body { @Body } # comment format
+ named varyinglinenumbersformat right @Body { @Body } # line nums format
+
+ # the following options apply when style is "symbol"
+ named symbolfont { } # font family
+ named symbolsize { 1.0f } # font size
+ named symbolline { 1.0vx } # line-space
+ named symbolblanklinescale { 1.0 } # blank-line scale
+ named symbolspace { lout } # spacing mode
+ named symboltabin { 8 } # tab interval
+ named symboltabout { 3f } # tab width
+
+ named symbolidentifiers { Slope } # identifier face
+ named symbolkeywords { Bold } # keyword face
+ named symboloperators { Base } # operator face
+ named symbolnumbers { Base } # number face
+ named symbolstrings { Slope } # string face
+ named symbolcomments { Base } # comment face
+ named symbollinenumbers { Base } # line numbers face
+
+ named symbolidentifiersformat right @Body { @Body } # identifier format
+ named symbolkeywordsformat right @Body { @Body } # keyword format
+ named symboloperatorsformat right @Body { @Body } # operators format
+ named symbolnumbersformat right @Body { @Body } # number format
+ named symbolstringsformat right @Body { @Body } # string format
+ named symbolcommentsformat right @Body { @Body } # comment format
+ named symbollinenumbersformat right @Body { @Body } # line nums format
+
+@Begin
+
+ export
+
+ @PI @PK @PO @PN @PS @PC @PL @PA @PM @PD
+ @A "$>"
+
+ def @Tcl
+ named style { style } # style
+ named numbered { numbered } # want numbered lines?
+ named blanknumbered { blanknumbered } # numbered blank lines?
+ named pipe { pipe } # pipe through this first
+ named font { dft } # font family
+ named size { dft } # font size
+ named line { dft } # line-space
+ named blanklinescale { dft } # blank-line scale
+ named space { dft } # spacing mode
+ named tabin { dft } # tab interval
+ named tabout { dft } # tab width
+ named identifiers { dft } # ident. font
+ named keywords { dft } # keyword font
+ named operators { dft } # operator font
+ named numbers { dft } # number font
+ named strings { dft } # string font
+ named comments { dft } # comment font
+ named linenumbers { dft } # line numbers font
+ body @Body # filtered, see below
+ @Begin
+
+ def @Test # returns x unless x is dft
+ left x
+ named iffixed {}
+ named ifvarying {}
+ named ifsymbol {}
+ {
+ x @Case {
+ dft @Yield {
+ style @Case {
+ fixed @Yield { iffixed }
+ varying @Yield { ifvarying }
+ symbol @Yield { ifsymbol }
+ }
+ }
+ else @Yield x
+ }
+ }
+
+
+ def @Else # returns x, or y if x is dft
+ left x
+ right y
+ {
+ x @Case {
+ dft @Yield y
+ else @Yield x
+ }
+ }
+
+
+ def @InitTab
+ {
+ tabin @Test
+ iffixed { fixedtabin }
+ ifvarying { varyingtabin }
+ ifsymbol { symboltabin }
+ }
+
+
+ def @InitTabWidth
+ {
+ tabout @Test
+ iffixed { fixedtabout }
+ ifvarying { varyingtabout }
+ ifsymbol { symboltabout }
+ }
+
+
+ def @Filter
+ {
+ def wantnumbered
+ {
+ numbered @Case {
+ { No no } @Yield ""
+ { Yes yes } @Yield "-L"
+ else @Yield { "-L"numbered }
+ }
+ }
+
+ def wantblanknumbered
+ {
+ blanknumbered @Case {
+ { No no } @Yield "-M"
+ { NoPrint noprint } @Yield "-N"
+ { Yes yes } @Yield ""
+ }
+ }
+
+ pipe @Case {
+ "" @Yield {
+ "prg2lout -r -lTcl" wantblanknumbered wantnumbered
+ -i{@FilterIn} -o{@FilterOut} -e{@FilterErr}
+ -t{@InitTab} -T{@InitTabWidth}
+ }
+ else @Yield {
+ "cat" @FilterIn "|" pipe "|"
+ "prg2lout -r -lTcl" wantblanknumbered wantnumbered
+ -o{@FilterOut} -e{@FilterErr}
+ -t{@InitTab} -T{@InitTabWidth}
+ }
+ }
+ }
+
+
+ def @InitFontFamily
+ {
+ font @Test
+ iffixed { fixedfont }
+ ifvarying { varyingfont }
+ ifsymbol { symbolfont }
+ }
+
+
+ def @InitSize
+ {
+ size @Test
+ iffixed { fixedsize }
+ ifvarying { varyingsize }
+ ifsymbol { symbolsize }
+ }
+
+
+ def @InitLine
+ {
+ line @Test
+ iffixed { fixedline }
+ ifvarying { varyingline }
+ ifsymbol { symbolline }
+ }
+
+
+ def @InitBLS
+ {
+ blanklinescale @Test
+ iffixed { fixedblanklinescale }
+ ifvarying { varyingblanklinescale }
+ ifsymbol { symbolblanklinescale }
+ }
+
+
+ def @InitSpace
+ {
+ space @Test
+ iffixed { fixedspace }
+ ifvarying { varyingspace }
+ ifsymbol { symbolspace }
+ }
+
+
+ def @PI # for formatting identifiers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedidentifiersformat {
+ { identifiers @Else fixedidentifiers } @Font x
+ }
+ varying @Yield varyingidentifiersformat {
+ { identifiers @Else varyingidentifiers } @Font x
+ }
+ symbol @Yield symbolidentifiersformat {
+ { identifiers @Else symbolidentifiers } @Font x
+ }
+ }
+ }
+
+
+ def @PK # for formatting keywords
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedkeywordsformat {
+ { keywords @Else fixedkeywords } @Font x
+ }
+ varying @Yield varyingkeywordsformat {
+ { keywords @Else varyingkeywords } @Font x
+ }
+ symbol @Yield symbolkeywordsformat {
+ { keywords @Else symbolkeywords } @Font x
+ }
+ }
+ }
+
+
+ def @PO # for formatting operators
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedoperatorsformat {
+ { operators @Else fixedoperators } @Font x
+ }
+ varying @Yield varyingoperatorsformat {
+ { operators @Else varyingoperators } @Font x
+ }
+ symbol @Yield symboloperatorsformat {
+ { operators @Else symboloperators } @Font x
+ }
+ }
+ }
+
+
+ def @PN # for formatting numbers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixednumbersformat {
+ { numbers @Else fixednumbers } @Font x
+ }
+ varying @Yield varyingnumbersformat {
+ { numbers @Else varyingnumbers } @Font x
+ }
+ symbol @Yield symbolnumbersformat {
+ { numbers @Else symbolnumbers } @Font x
+ }
+ }
+ }
+
+
+ def @PS # for formatting strings
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedstringsformat {
+ { strings @Else fixedstrings } @Font x
+ }
+ varying @Yield varyingstringsformat {
+ { strings @Else varyingstrings } @Font x
+ }
+ symbol @Yield symbolstringsformat {
+ { strings @Else symbolstrings } @Font x
+ }
+ }
+ }
+
+
+ def @PC # for formatting comments
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedcommentsformat {
+ { comments @Else fixedcomments } @Font x
+ }
+ varying @Yield varyingcommentsformat {
+ { comments @Else varyingcomments } @Font x
+ }
+ symbol @Yield symbolcommentsformat {
+ { comments @Else symbolcomments } @Font x
+ }
+ }
+ }
+
+
+ def @PL # for formatting line numbers
+ right x
+ {
+ style @Case {
+ fixed @Yield fixedlinenumbersformat {
+ { linenumbers @Else fixedlinenumbers } @Font x
+ }
+ varying @Yield varyinglinenumbersformat {
+ { linenumbers @Else varyinglinenumbers } @Font x
+ }
+ symbol @Yield symbollinenumbersformat {
+ { linenumbers @Else symbollinenumbers } @Font x
+ }
+ }
+ }
+
+
+ def @PA # for formatting asterisks
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "*"
+ else @Yield { "0.5w" @VShift "*" }
+ }
+ }
+
+
+ def @PM # for formatting minus signs
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "-"
+ else @Yield style @Case {
+ fixed @Yield "-"
+ else @Yield { { Symbol Base } @Font @Char "minus" }
+ }
+ }
+ }
+
+
+ def @PD # for formatting dots, if wanted larger
+ {
+ @PO @BackEnd @Case {
+ PlainText @Yield "."
+ else @Yield { "1.4f" @Font "+0.04f" @VShift "." &"0.05f" }
+ }
+ }
+
+
+ def @A # get characters from the Adobe Symbol font
+ named sym {}
+ right x
+ {
+ style @Case {
+ symbol @Yield { { Symbol Base } @Font @Char sym }
+ else @Yield { x }
+ }
+ }
+
+
+ macro "$>" { {} & }
+
+
+ Programming @Language
+ { @InitFontFamily Base @InitSize } @Font @InitSpace @Space
+ { @InitLine lines "blanklinescale" @InitBLS } @Break @Body
+
+ @End @Tcl
+
+@End @TclSetup
diff --git a/include/include/ts b/include/include/ts
new file mode 100644
index 0000000..2711633
--- /dev/null
+++ b/include/include/ts
@@ -0,0 +1,108 @@
+
+###############################################################################
+# #
+# Lout @ToySetup package (Jeff Kingston, July 1993, updated October 1994) #
+# #
+# This file has been placed in the public domain by its author. #
+# #
+# In response to a user request I have put together this tiny package for #
+# people to play with who want to start learning how to do page layout and #
+# galleys with Lout. It produces a very simple sequence of pages. To #
+# invoke the package, run "lout myfile > op" where myfile looks like this: #
+# #
+# @SysInclude { ts } #
+# @Use { @ToySetup } #
+# @Document #
+# // #
+# @Text { #
+# Any text you like here, using @I, @B, @Heading, @PP, @LP, @DP, #
+# @LeftDisplay, @IndentedDisplay, and @CenteredDisplay just as in #
+# DocumentSetup. #
+# } #
+# #
+###############################################################################
+
+@SysInclude { langdefs }
+
+export @I @B @Heading @PP @LP @DP @NP
+ @LeftDisplay @IndentedDisplay @CenteredDisplay
+ @Text @Document
+
+def @ToySetup
+ named @PageWidth { 21.0c }
+ named @PageHeight { 29.7c }
+@Begin
+
+ ###########################################################################
+ # #
+ # Font changes, headings, and paragraphs. #
+ # #
+ ###########################################################################
+
+ def @I right x { Slope @Font x }
+ def @B right x { Bold @Font x }
+ def @Heading right x { ragged @Break @B x }
+
+ macro @PP { //1.3vx 1.0f @Wide &0i }
+ macro @LP { //1.3vx }
+ macro @DP { //0.5v }
+ macro @NP { //1.1b }
+
+
+ ###########################################################################
+ # #
+ # Displays. #
+ # #
+ ###########################################################################
+
+ def @DispPlace { @Galley }
+
+ def @Disp into { @DispPlace&&preceding }
+ right x
+ {
+ @OneRow x
+ }
+
+ macro @LeftDisplay { @DP | @DispPlace | @DP // @Disp }
+ macro @IndentedDisplay { @DP |2f @DispPlace | @DP // @Disp }
+ macro @CenteredDisplay { @DP |0.5rt @DispPlace | @DP // @Disp }
+
+
+ ###########################################################################
+ # #
+ # Page layout. #
+ # #
+ ###########################################################################
+
+ def @TextPlace { @Galley }
+
+ def @Text force into { @TextPlace&&preceding }
+ right x
+ {
+ x
+ }
+
+ def @Page right x
+ {
+ @PageWidth @Wide @PageHeight @High
+ { Times Base 12p } @Font
+ { adjust nohyphen 14px } @Break
+ English @Language { 0 0 0 } @SetColour
+ { //1i ||1i
+ @HExpand @VExpand x
+ ||1i //1i
+ }
+ }
+
+ def @PageList right num
+ {
+ @Page { |0.5rt - num - //0.4i @TextPlace }
+ //
+ @PageList @Next num
+ }
+
+ def @Document { @PageList 1 }
+
+@End @ToySetup
+
+@SysDatabase @FontDef { fontdefs } # font definitions
diff --git a/include/include/xrgb b/include/include/xrgb
new file mode 100644
index 0000000..478f626
--- /dev/null
+++ b/include/include/xrgb
@@ -0,0 +1,697 @@
+###############################################################################
+# #
+# @Xrgb symbol #
+# #
+# Contributed by Mark Summerfield #
+# Tested and installed by Jeff Kingston, 18 November 2002 #
+# November 2002 #
+# #
+# Said to be the list of named colours known to the X-windows #
+# system. There are 752 colours here, but many are listed twice #
+# under different spellings of their names. #
+# #
+# I've deleted the else clause and moved "black" to the top. #
+# This will ensure that if the user mis-types the colour, an #
+# error message will be printed and "black" substituted. #
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either Version 3, or (at your option) #
+# any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program; if not, write to the Free Software #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston MA 02111-1307 USA #
+# #
+# As a special exception, when this file is read by Lout when processing #
+# a Lout source document, you may use the result without restriction. #
+# #
+###############################################################################
+
+def @Xrgb right x {
+ x @Case {
+ { black } @Yield { rgb "0.000 0.000 0.000" }
+ { snow } @Yield { rgb "1.000 0.980 0.980" }
+ { ghostwhite } @Yield { rgb "0.973 0.973 1.000" }
+ { whitesmoke } @Yield { rgb "0.961 0.961 0.961" }
+ { gainsboro } @Yield { rgb "0.863 0.863 0.863" }
+ { floralwhite } @Yield { rgb "1.000 0.980 0.941" }
+ { oldlace } @Yield { rgb "0.992 0.961 0.902" }
+ { linen } @Yield { rgb "0.980 0.941 0.902" }
+ { antiquewhite } @Yield { rgb "0.980 0.922 0.843" }
+ { papayawhip } @Yield { rgb "1.000 0.937 0.835" }
+ { blanchedalmond } @Yield { rgb "1.000 0.922 0.804" }
+ { bisque } @Yield { rgb "1.000 0.894 0.769" }
+ { peachpuff } @Yield { rgb "1.000 0.855 0.725" }
+ { navajowhite } @Yield { rgb "1.000 0.871 0.678" }
+ { moccasin } @Yield { rgb "1.000 0.894 0.710" }
+ { cornsilk } @Yield { rgb "1.000 0.973 0.863" }
+ { ivory } @Yield { rgb "1.000 1.000 0.941" }
+ { lemonchiffon } @Yield { rgb "1.000 0.980 0.804" }
+ { seashell } @Yield { rgb "1.000 0.961 0.933" }
+ { honeydew } @Yield { rgb "0.941 1.000 0.941" }
+ { mintcream } @Yield { rgb "0.961 1.000 0.980" }
+ { azure } @Yield { rgb "0.941 1.000 1.000" }
+ { aliceblue } @Yield { rgb "0.941 0.973 1.000" }
+ { lavender } @Yield { rgb "0.902 0.902 0.980" }
+ { lavenderblush } @Yield { rgb "1.000 0.941 0.961" }
+ { mistyrose } @Yield { rgb "1.000 0.894 0.882" }
+ { white } @Yield { rgb "1.000 1.000 1.000" }
+ { darkslategray } @Yield { rgb "0.184 0.310 0.310" }
+ { darkslategrey } @Yield { rgb "0.184 0.310 0.310" }
+ { dimgray } @Yield { rgb "0.412 0.412 0.412" }
+ { dimgrey } @Yield { rgb "0.412 0.412 0.412" }
+ { slategray } @Yield { rgb "0.439 0.502 0.565" }
+ { slategrey } @Yield { rgb "0.439 0.502 0.565" }
+ { lightslategray } @Yield { rgb "0.467 0.533 0.600" }
+ { lightslategrey } @Yield { rgb "0.467 0.533 0.600" }
+ { gray } @Yield { rgb "0.745 0.745 0.745" }
+ { grey } @Yield { rgb "0.745 0.745 0.745" }
+ { lightgrey } @Yield { rgb "0.827 0.827 0.827" }
+ { lightgray } @Yield { rgb "0.827 0.827 0.827" }
+ { midnightblue } @Yield { rgb "0.098 0.098 0.439" }
+ { navy } @Yield { rgb "0.000 0.000 0.502" }
+ { navyblue } @Yield { rgb "0.000 0.000 0.502" }
+ { cornflowerblue } @Yield { rgb "0.392 0.584 0.929" }
+ { darkslateblue } @Yield { rgb "0.282 0.239 0.545" }
+ { slateblue } @Yield { rgb "0.416 0.353 0.804" }
+ { mediumslateblue } @Yield { rgb "0.482 0.408 0.933" }
+ { lightslateblue } @Yield { rgb "0.518 0.439 1.000" }
+ { mediumblue } @Yield { rgb "0.000 0.000 0.804" }
+ { royalblue } @Yield { rgb "0.255 0.412 0.882" }
+ { blue } @Yield { rgb "0.000 0.000 1.000" }
+ { dodgerblue } @Yield { rgb "0.118 0.565 1.000" }
+ { deepskyblue } @Yield { rgb "0.000 0.749 1.000" }
+ { skyblue } @Yield { rgb "0.529 0.808 0.922" }
+ { lightskyblue } @Yield { rgb "0.529 0.808 0.980" }
+ { steelblue } @Yield { rgb "0.275 0.510 0.706" }
+ { lightsteelblue } @Yield { rgb "0.690 0.769 0.871" }
+ { lightblue } @Yield { rgb "0.678 0.847 0.902" }
+ { powderblue } @Yield { rgb "0.690 0.878 0.902" }
+ { paleturquoise } @Yield { rgb "0.686 0.933 0.933" }
+ { darkturquoise } @Yield { rgb "0.000 0.808 0.820" }
+ { mediumturquoise } @Yield { rgb "0.282 0.820 0.800" }
+ { turquoise } @Yield { rgb "0.251 0.878 0.816" }
+ { cyan } @Yield { rgb "0.000 1.000 1.000" }
+ { lightcyan } @Yield { rgb "0.878 1.000 1.000" }
+ { cadetblue } @Yield { rgb "0.373 0.620 0.627" }
+ { mediumaquamarine } @Yield { rgb "0.400 0.804 0.667" }
+ { aquamarine } @Yield { rgb "0.498 1.000 0.831" }
+ { darkgreen } @Yield { rgb "0.000 0.392 0.000" }
+ { darkolivegreen } @Yield { rgb "0.333 0.420 0.184" }
+ { darkseagreen } @Yield { rgb "0.561 0.737 0.561" }
+ { seagreen } @Yield { rgb "0.180 0.545 0.341" }
+ { mediumseagreen } @Yield { rgb "0.235 0.702 0.443" }
+ { lightseagreen } @Yield { rgb "0.125 0.698 0.667" }
+ { palegreen } @Yield { rgb "0.596 0.984 0.596" }
+ { springgreen } @Yield { rgb "0.000 1.000 0.498" }
+ { lawngreen } @Yield { rgb "0.486 0.988 0.000" }
+ { green } @Yield { rgb "0.000 1.000 0.000" }
+ { chartreuse } @Yield { rgb "0.498 1.000 0.000" }
+ { mediumspringgreen } @Yield { rgb "0.000 0.980 0.604" }
+ { greenyellow } @Yield { rgb "0.678 1.000 0.184" }
+ { limegreen } @Yield { rgb "0.196 0.804 0.196" }
+ { yellowgreen } @Yield { rgb "0.604 0.804 0.196" }
+ { forestgreen } @Yield { rgb "0.133 0.545 0.133" }
+ { olivedrab } @Yield { rgb "0.420 0.557 0.137" }
+ { darkkhaki } @Yield { rgb "0.741 0.718 0.420" }
+ { khaki } @Yield { rgb "0.941 0.902 0.549" }
+ { palegoldenrod } @Yield { rgb "0.933 0.910 0.667" }
+ { lightgoldenrodyellow }@Yield{ rgb "0.980 0.980 0.824" }
+ { lightyellow } @Yield { rgb "1.000 1.000 0.878" }
+ { yellow } @Yield { rgb "1.000 1.000 0.000" }
+ { gold } @Yield { rgb "1.000 0.843 0.000" }
+ { lightgoldenrod } @Yield { rgb "0.933 0.867 0.510" }
+ { goldenrod } @Yield { rgb "0.855 0.647 0.125" }
+ { darkgoldenrod } @Yield { rgb "0.722 0.525 0.043" }
+ { rosybrown } @Yield { rgb "0.737 0.561 0.561" }
+ { indianred } @Yield { rgb "0.804 0.361 0.361" }
+ { saddlebrown } @Yield { rgb "0.545 0.271 0.075" }
+ { sienna } @Yield { rgb "0.627 0.322 0.176" }
+ { peru } @Yield { rgb "0.804 0.522 0.247" }
+ { burlywood } @Yield { rgb "0.871 0.722 0.529" }
+ { beige } @Yield { rgb "0.961 0.961 0.863" }
+ { wheat } @Yield { rgb "0.961 0.871 0.702" }
+ { sandybrown } @Yield { rgb "0.957 0.643 0.376" }
+ { tan } @Yield { rgb "0.824 0.706 0.549" }
+ { chocolate } @Yield { rgb "0.824 0.412 0.118" }
+ { firebrick } @Yield { rgb "0.698 0.133 0.133" }
+ { brown } @Yield { rgb "0.647 0.165 0.165" }
+ { darksalmon } @Yield { rgb "0.914 0.588 0.478" }
+ { salmon } @Yield { rgb "0.980 0.502 0.447" }
+ { lightsalmon } @Yield { rgb "1.000 0.627 0.478" }
+ { orange } @Yield { rgb "1.000 0.647 0.000" }
+ { darkorange } @Yield { rgb "1.000 0.549 0.000" }
+ { coral } @Yield { rgb "1.000 0.498 0.314" }
+ { lightcoral } @Yield { rgb "0.941 0.502 0.502" }
+ { tomato } @Yield { rgb "1.000 0.388 0.278" }
+ { orangered } @Yield { rgb "1.000 0.271 0.000" }
+ { red } @Yield { rgb "1.000 0.000 0.000" }
+ { hotpink } @Yield { rgb "1.000 0.412 0.706" }
+ { deeppink } @Yield { rgb "1.000 0.078 0.576" }
+ { pink } @Yield { rgb "1.000 0.753 0.796" }
+ { lightpink } @Yield { rgb "1.000 0.714 0.757" }
+ { palevioletred } @Yield { rgb "0.859 0.439 0.576" }
+ { maroon } @Yield { rgb "0.690 0.188 0.376" }
+ { mediumvioletred } @Yield { rgb "0.780 0.082 0.522" }
+ { violetred } @Yield { rgb "0.816 0.125 0.565" }
+ { magenta } @Yield { rgb "1.000 0.000 1.000" }
+ { violet } @Yield { rgb "0.933 0.510 0.933" }
+ { plum } @Yield { rgb "0.867 0.627 0.867" }
+ { orchid } @Yield { rgb "0.855 0.439 0.839" }
+ { mediumorchid } @Yield { rgb "0.729 0.333 0.827" }
+ { darkorchid } @Yield { rgb "0.600 0.196 0.800" }
+ { darkviolet } @Yield { rgb "0.580 0.000 0.827" }
+ { blueviolet } @Yield { rgb "0.541 0.169 0.886" }
+ { purple } @Yield { rgb "0.627 0.125 0.941" }
+ { mediumpurple } @Yield { rgb "0.576 0.439 0.859" }
+ { thistle } @Yield { rgb "0.847 0.749 0.847" }
+ { snow1 } @Yield { rgb "1.000 0.980 0.980" }
+ { snow2 } @Yield { rgb "0.933 0.914 0.914" }
+ { snow3 } @Yield { rgb "0.804 0.788 0.788" }
+ { snow4 } @Yield { rgb "0.545 0.537 0.537" }
+ { seashell1 } @Yield { rgb "1.000 0.961 0.933" }
+ { seashell2 } @Yield { rgb "0.933 0.898 0.871" }
+ { seashell3 } @Yield { rgb "0.804 0.773 0.749" }
+ { seashell4 } @Yield { rgb "0.545 0.525 0.510" }
+ { antiquewhite1 } @Yield { rgb "1.000 0.937 0.859" }
+ { antiquewhite2 } @Yield { rgb "0.933 0.875 0.800" }
+ { antiquewhite3 } @Yield { rgb "0.804 0.753 0.690" }
+ { antiquewhite4 } @Yield { rgb "0.545 0.514 0.471" }
+ { bisque1 } @Yield { rgb "1.000 0.894 0.769" }
+ { bisque2 } @Yield { rgb "0.933 0.835 0.718" }
+ { bisque3 } @Yield { rgb "0.804 0.718 0.620" }
+ { bisque4 } @Yield { rgb "0.545 0.490 0.420" }
+ { peachpuff1 } @Yield { rgb "1.000 0.855 0.725" }
+ { peachpuff2 } @Yield { rgb "0.933 0.796 0.678" }
+ { peachpuff3 } @Yield { rgb "0.804 0.686 0.584" }
+ { peachpuff4 } @Yield { rgb "0.545 0.467 0.396" }
+ { navajowhite1 } @Yield { rgb "1.000 0.871 0.678" }
+ { navajowhite2 } @Yield { rgb "0.933 0.812 0.631" }
+ { navajowhite3 } @Yield { rgb "0.804 0.702 0.545" }
+ { navajowhite4 } @Yield { rgb "0.545 0.475 0.369" }
+ { lemonchiffon1 } @Yield { rgb "1.000 0.980 0.804" }
+ { lemonchiffon2 } @Yield { rgb "0.933 0.914 0.749" }
+ { lemonchiffon3 } @Yield { rgb "0.804 0.788 0.647" }
+ { lemonchiffon4 } @Yield { rgb "0.545 0.537 0.439" }
+ { cornsilk1 } @Yield { rgb "1.000 0.973 0.863" }
+ { cornsilk2 } @Yield { rgb "0.933 0.910 0.804" }
+ { cornsilk3 } @Yield { rgb "0.804 0.784 0.694" }
+ { cornsilk4 } @Yield { rgb "0.545 0.533 0.471" }
+ { ivory1 } @Yield { rgb "1.000 1.000 0.941" }
+ { ivory2 } @Yield { rgb "0.933 0.933 0.878" }
+ { ivory3 } @Yield { rgb "0.804 0.804 0.757" }
+ { ivory4 } @Yield { rgb "0.545 0.545 0.514" }
+ { honeydew1 } @Yield { rgb "0.941 1.000 0.941" }
+ { honeydew2 } @Yield { rgb "0.878 0.933 0.878" }
+ { honeydew3 } @Yield { rgb "0.757 0.804 0.757" }
+ { honeydew4 } @Yield { rgb "0.514 0.545 0.514" }
+ { lavenderblush1 } @Yield { rgb "1.000 0.941 0.961" }
+ { lavenderblush2 } @Yield { rgb "0.933 0.878 0.898" }
+ { lavenderblush3 } @Yield { rgb "0.804 0.757 0.773" }
+ { lavenderblush4 } @Yield { rgb "0.545 0.514 0.525" }
+ { mistyrose1 } @Yield { rgb "1.000 0.894 0.882" }
+ { mistyrose2 } @Yield { rgb "0.933 0.835 0.824" }
+ { mistyrose3 } @Yield { rgb "0.804 0.718 0.710" }
+ { mistyrose4 } @Yield { rgb "0.545 0.490 0.482" }
+ { azure1 } @Yield { rgb "0.941 1.000 1.000" }
+ { azure2 } @Yield { rgb "0.878 0.933 0.933" }
+ { azure3 } @Yield { rgb "0.757 0.804 0.804" }
+ { azure4 } @Yield { rgb "0.514 0.545 0.545" }
+ { slateblue1 } @Yield { rgb "0.514 0.435 1.000" }
+ { slateblue2 } @Yield { rgb "0.478 0.404 0.933" }
+ { slateblue3 } @Yield { rgb "0.412 0.349 0.804" }
+ { slateblue4 } @Yield { rgb "0.278 0.235 0.545" }
+ { royalblue1 } @Yield { rgb "0.282 0.463 1.000" }
+ { royalblue2 } @Yield { rgb "0.263 0.431 0.933" }
+ { royalblue3 } @Yield { rgb "0.227 0.373 0.804" }
+ { royalblue4 } @Yield { rgb "0.153 0.251 0.545" }
+ { blue1 } @Yield { rgb "0.000 0.000 1.000" }
+ { blue2 } @Yield { rgb "0.000 0.000 0.933" }
+ { blue3 } @Yield { rgb "0.000 0.000 0.804" }
+ { blue4 } @Yield { rgb "0.000 0.000 0.545" }
+ { dodgerblue1 } @Yield { rgb "0.118 0.565 1.000" }
+ { dodgerblue2 } @Yield { rgb "0.110 0.525 0.933" }
+ { dodgerblue3 } @Yield { rgb "0.094 0.455 0.804" }
+ { dodgerblue4 } @Yield { rgb "0.063 0.306 0.545" }
+ { steelblue1 } @Yield { rgb "0.388 0.722 1.000" }
+ { steelblue2 } @Yield { rgb "0.361 0.675 0.933" }
+ { steelblue3 } @Yield { rgb "0.310 0.580 0.804" }
+ { steelblue4 } @Yield { rgb "0.212 0.392 0.545" }
+ { deepskyblue1 } @Yield { rgb "0.000 0.749 1.000" }
+ { deepskyblue2 } @Yield { rgb "0.000 0.698 0.933" }
+ { deepskyblue3 } @Yield { rgb "0.000 0.604 0.804" }
+ { deepskyblue4 } @Yield { rgb "0.000 0.408 0.545" }
+ { skyblue1 } @Yield { rgb "0.529 0.808 1.000" }
+ { skyblue2 } @Yield { rgb "0.494 0.753 0.933" }
+ { skyblue3 } @Yield { rgb "0.424 0.651 0.804" }
+ { skyblue4 } @Yield { rgb "0.290 0.439 0.545" }
+ { lightskyblue1 } @Yield { rgb "0.690 0.886 1.000" }
+ { lightskyblue2 } @Yield { rgb "0.643 0.827 0.933" }
+ { lightskyblue3 } @Yield { rgb "0.553 0.714 0.804" }
+ { lightskyblue4 } @Yield { rgb "0.376 0.482 0.545" }
+ { slategray1 } @Yield { rgb "0.776 0.886 1.000" }
+ { slategray2 } @Yield { rgb "0.725 0.827 0.933" }
+ { slategray3 } @Yield { rgb "0.624 0.714 0.804" }
+ { slategray4 } @Yield { rgb "0.424 0.482 0.545" }
+ { lightsteelblue1 } @Yield { rgb "0.792 0.882 1.000" }
+ { lightsteelblue2 } @Yield { rgb "0.737 0.824 0.933" }
+ { lightsteelblue3 } @Yield { rgb "0.635 0.710 0.804" }
+ { lightsteelblue4 } @Yield { rgb "0.431 0.482 0.545" }
+ { lightblue1 } @Yield { rgb "0.749 0.937 1.000" }
+ { lightblue2 } @Yield { rgb "0.698 0.875 0.933" }
+ { lightblue3 } @Yield { rgb "0.604 0.753 0.804" }
+ { lightblue4 } @Yield { rgb "0.408 0.514 0.545" }
+ { lightcyan1 } @Yield { rgb "0.878 1.000 1.000" }
+ { lightcyan2 } @Yield { rgb "0.820 0.933 0.933" }
+ { lightcyan3 } @Yield { rgb "0.706 0.804 0.804" }
+ { lightcyan4 } @Yield { rgb "0.478 0.545 0.545" }
+ { paleturquoise1 } @Yield { rgb "0.733 1.000 1.000" }
+ { paleturquoise2 } @Yield { rgb "0.682 0.933 0.933" }
+ { paleturquoise3 } @Yield { rgb "0.588 0.804 0.804" }
+ { paleturquoise4 } @Yield { rgb "0.400 0.545 0.545" }
+ { cadetblue1 } @Yield { rgb "0.596 0.961 1.000" }
+ { cadetblue2 } @Yield { rgb "0.557 0.898 0.933" }
+ { cadetblue3 } @Yield { rgb "0.478 0.773 0.804" }
+ { cadetblue4 } @Yield { rgb "0.325 0.525 0.545" }
+ { turquoise1 } @Yield { rgb "0.000 0.961 1.000" }
+ { turquoise2 } @Yield { rgb "0.000 0.898 0.933" }
+ { turquoise3 } @Yield { rgb "0.000 0.773 0.804" }
+ { turquoise4 } @Yield { rgb "0.000 0.525 0.545" }
+ { cyan1 } @Yield { rgb "0.000 1.000 1.000" }
+ { cyan2 } @Yield { rgb "0.000 0.933 0.933" }
+ { cyan3 } @Yield { rgb "0.000 0.804 0.804" }
+ { cyan4 } @Yield { rgb "0.000 0.545 0.545" }
+ { darkslategray1 } @Yield { rgb "0.592 1.000 1.000" }
+ { darkslategray2 } @Yield { rgb "0.553 0.933 0.933" }
+ { darkslategray3 } @Yield { rgb "0.475 0.804 0.804" }
+ { darkslategray4 } @Yield { rgb "0.322 0.545 0.545" }
+ { aquamarine1 } @Yield { rgb "0.498 1.000 0.831" }
+ { aquamarine2 } @Yield { rgb "0.463 0.933 0.776" }
+ { aquamarine3 } @Yield { rgb "0.400 0.804 0.667" }
+ { aquamarine4 } @Yield { rgb "0.271 0.545 0.455" }
+ { darkseagreen1 } @Yield { rgb "0.757 1.000 0.757" }
+ { darkseagreen2 } @Yield { rgb "0.706 0.933 0.706" }
+ { darkseagreen3 } @Yield { rgb "0.608 0.804 0.608" }
+ { darkseagreen4 } @Yield { rgb "0.412 0.545 0.412" }
+ { seagreen1 } @Yield { rgb "0.329 1.000 0.624" }
+ { seagreen2 } @Yield { rgb "0.306 0.933 0.580" }
+ { seagreen3 } @Yield { rgb "0.263 0.804 0.502" }
+ { seagreen4 } @Yield { rgb "0.180 0.545 0.341" }
+ { palegreen1 } @Yield { rgb "0.604 1.000 0.604" }
+ { palegreen2 } @Yield { rgb "0.565 0.933 0.565" }
+ { palegreen3 } @Yield { rgb "0.486 0.804 0.486" }
+ { palegreen4 } @Yield { rgb "0.329 0.545 0.329" }
+ { springgreen1 } @Yield { rgb "0.000 1.000 0.498" }
+ { springgreen2 } @Yield { rgb "0.000 0.933 0.463" }
+ { springgreen3 } @Yield { rgb "0.000 0.804 0.400" }
+ { springgreen4 } @Yield { rgb "0.000 0.545 0.271" }
+ { green1 } @Yield { rgb "0.000 1.000 0.000" }
+ { green2 } @Yield { rgb "0.000 0.933 0.000" }
+ { green3 } @Yield { rgb "0.000 0.804 0.000" }
+ { green4 } @Yield { rgb "0.000 0.545 0.000" }
+ { chartreuse1 } @Yield { rgb "0.498 1.000 0.000" }
+ { chartreuse2 } @Yield { rgb "0.463 0.933 0.000" }
+ { chartreuse3 } @Yield { rgb "0.400 0.804 0.000" }
+ { chartreuse4 } @Yield { rgb "0.271 0.545 0.000" }
+ { olivedrab1 } @Yield { rgb "0.753 1.000 0.243" }
+ { olivedrab2 } @Yield { rgb "0.702 0.933 0.227" }
+ { olivedrab3 } @Yield { rgb "0.604 0.804 0.196" }
+ { olivedrab4 } @Yield { rgb "0.412 0.545 0.133" }
+ { darkolivegreen1 } @Yield { rgb "0.792 1.000 0.439" }
+ { darkolivegreen2 } @Yield { rgb "0.737 0.933 0.408" }
+ { darkolivegreen3 } @Yield { rgb "0.635 0.804 0.353" }
+ { darkolivegreen4 } @Yield { rgb "0.431 0.545 0.239" }
+ { khaki1 } @Yield { rgb "1.000 0.965 0.561" }
+ { khaki2 } @Yield { rgb "0.933 0.902 0.522" }
+ { khaki3 } @Yield { rgb "0.804 0.776 0.451" }
+ { khaki4 } @Yield { rgb "0.545 0.525 0.306" }
+ { lightgoldenrod1 } @Yield { rgb "1.000 0.925 0.545" }
+ { lightgoldenrod2 } @Yield { rgb "0.933 0.863 0.510" }
+ { lightgoldenrod3 } @Yield { rgb "0.804 0.745 0.439" }
+ { lightgoldenrod4 } @Yield { rgb "0.545 0.506 0.298" }
+ { lightyellow1 } @Yield { rgb "1.000 1.000 0.878" }
+ { lightyellow2 } @Yield { rgb "0.933 0.933 0.820" }
+ { lightyellow3 } @Yield { rgb "0.804 0.804 0.706" }
+ { lightyellow4 } @Yield { rgb "0.545 0.545 0.478" }
+ { yellow1 } @Yield { rgb "1.000 1.000 0.000" }
+ { yellow2 } @Yield { rgb "0.933 0.933 0.000" }
+ { yellow3 } @Yield { rgb "0.804 0.804 0.000" }
+ { yellow4 } @Yield { rgb "0.545 0.545 0.000" }
+ { gold1 } @Yield { rgb "1.000 0.843 0.000" }
+ { gold2 } @Yield { rgb "0.933 0.788 0.000" }
+ { gold3 } @Yield { rgb "0.804 0.678 0.000" }
+ { gold4 } @Yield { rgb "0.545 0.459 0.000" }
+ { goldenrod1 } @Yield { rgb "1.000 0.757 0.145" }
+ { goldenrod2 } @Yield { rgb "0.933 0.706 0.133" }
+ { goldenrod3 } @Yield { rgb "0.804 0.608 0.114" }
+ { goldenrod4 } @Yield { rgb "0.545 0.412 0.078" }
+ { darkgoldenrod1 } @Yield { rgb "1.000 0.725 0.059" }
+ { darkgoldenrod2 } @Yield { rgb "0.933 0.678 0.055" }
+ { darkgoldenrod3 } @Yield { rgb "0.804 0.584 0.047" }
+ { darkgoldenrod4 } @Yield { rgb "0.545 0.396 0.031" }
+ { rosybrown1 } @Yield { rgb "1.000 0.757 0.757" }
+ { rosybrown2 } @Yield { rgb "0.933 0.706 0.706" }
+ { rosybrown3 } @Yield { rgb "0.804 0.608 0.608" }
+ { rosybrown4 } @Yield { rgb "0.545 0.412 0.412" }
+ { indianred1 } @Yield { rgb "1.000 0.416 0.416" }
+ { indianred2 } @Yield { rgb "0.933 0.388 0.388" }
+ { indianred3 } @Yield { rgb "0.804 0.333 0.333" }
+ { indianred4 } @Yield { rgb "0.545 0.227 0.227" }
+ { sienna1 } @Yield { rgb "1.000 0.510 0.278" }
+ { sienna2 } @Yield { rgb "0.933 0.475 0.259" }
+ { sienna3 } @Yield { rgb "0.804 0.408 0.224" }
+ { sienna4 } @Yield { rgb "0.545 0.278 0.149" }
+ { burlywood1 } @Yield { rgb "1.000 0.827 0.608" }
+ { burlywood2 } @Yield { rgb "0.933 0.773 0.569" }
+ { burlywood3 } @Yield { rgb "0.804 0.667 0.490" }
+ { burlywood4 } @Yield { rgb "0.545 0.451 0.333" }
+ { wheat1 } @Yield { rgb "1.000 0.906 0.729" }
+ { wheat2 } @Yield { rgb "0.933 0.847 0.682" }
+ { wheat3 } @Yield { rgb "0.804 0.729 0.588" }
+ { wheat4 } @Yield { rgb "0.545 0.494 0.400" }
+ { tan1 } @Yield { rgb "1.000 0.647 0.310" }
+ { tan2 } @Yield { rgb "0.933 0.604 0.286" }
+ { tan3 } @Yield { rgb "0.804 0.522 0.247" }
+ { tan4 } @Yield { rgb "0.545 0.353 0.169" }
+ { chocolate1 } @Yield { rgb "1.000 0.498 0.141" }
+ { chocolate2 } @Yield { rgb "0.933 0.463 0.129" }
+ { chocolate3 } @Yield { rgb "0.804 0.400 0.114" }
+ { chocolate4 } @Yield { rgb "0.545 0.271 0.075" }
+ { firebrick1 } @Yield { rgb "1.000 0.188 0.188" }
+ { firebrick2 } @Yield { rgb "0.933 0.173 0.173" }
+ { firebrick3 } @Yield { rgb "0.804 0.149 0.149" }
+ { firebrick4 } @Yield { rgb "0.545 0.102 0.102" }
+ { brown1 } @Yield { rgb "1.000 0.251 0.251" }
+ { brown2 } @Yield { rgb "0.933 0.231 0.231" }
+ { brown3 } @Yield { rgb "0.804 0.200 0.200" }
+ { brown4 } @Yield { rgb "0.545 0.137 0.137" }
+ { salmon1 } @Yield { rgb "1.000 0.549 0.412" }
+ { salmon2 } @Yield { rgb "0.933 0.510 0.384" }
+ { salmon3 } @Yield { rgb "0.804 0.439 0.329" }
+ { salmon4 } @Yield { rgb "0.545 0.298 0.224" }
+ { lightsalmon1 } @Yield { rgb "1.000 0.627 0.478" }
+ { lightsalmon2 } @Yield { rgb "0.933 0.584 0.447" }
+ { lightsalmon3 } @Yield { rgb "0.804 0.506 0.384" }
+ { lightsalmon4 } @Yield { rgb "0.545 0.341 0.259" }
+ { orange1 } @Yield { rgb "1.000 0.647 0.000" }
+ { orange2 } @Yield { rgb "0.933 0.604 0.000" }
+ { orange3 } @Yield { rgb "0.804 0.522 0.000" }
+ { orange4 } @Yield { rgb "0.545 0.353 0.000" }
+ { darkorange1 } @Yield { rgb "1.000 0.498 0.000" }
+ { darkorange2 } @Yield { rgb "0.933 0.463 0.000" }
+ { darkorange3 } @Yield { rgb "0.804 0.400 0.000" }
+ { darkorange4 } @Yield { rgb "0.545 0.271 0.000" }
+ { coral1 } @Yield { rgb "1.000 0.447 0.337" }
+ { coral2 } @Yield { rgb "0.933 0.416 0.314" }
+ { coral3 } @Yield { rgb "0.804 0.357 0.271" }
+ { coral4 } @Yield { rgb "0.545 0.243 0.184" }
+ { tomato1 } @Yield { rgb "1.000 0.388 0.278" }
+ { tomato2 } @Yield { rgb "0.933 0.361 0.259" }
+ { tomato3 } @Yield { rgb "0.804 0.310 0.224" }
+ { tomato4 } @Yield { rgb "0.545 0.212 0.149" }
+ { orangered1 } @Yield { rgb "1.000 0.271 0.000" }
+ { orangered2 } @Yield { rgb "0.933 0.251 0.000" }
+ { orangered3 } @Yield { rgb "0.804 0.216 0.000" }
+ { orangered4 } @Yield { rgb "0.545 0.145 0.000" }
+ { red1 } @Yield { rgb "1.000 0.000 0.000" }
+ { red2 } @Yield { rgb "0.933 0.000 0.000" }
+ { red3 } @Yield { rgb "0.804 0.000 0.000" }
+ { red4 } @Yield { rgb "0.545 0.000 0.000" }
+ { deeppink1 } @Yield { rgb "1.000 0.078 0.576" }
+ { deeppink2 } @Yield { rgb "0.933 0.071 0.537" }
+ { deeppink3 } @Yield { rgb "0.804 0.063 0.463" }
+ { deeppink4 } @Yield { rgb "0.545 0.039 0.314" }
+ { hotpink1 } @Yield { rgb "1.000 0.431 0.706" }
+ { hotpink2 } @Yield { rgb "0.933 0.416 0.655" }
+ { hotpink3 } @Yield { rgb "0.804 0.376 0.565" }
+ { hotpink4 } @Yield { rgb "0.545 0.227 0.384" }
+ { pink1 } @Yield { rgb "1.000 0.710 0.773" }
+ { pink2 } @Yield { rgb "0.933 0.663 0.722" }
+ { pink3 } @Yield { rgb "0.804 0.569 0.620" }
+ { pink4 } @Yield { rgb "0.545 0.388 0.424" }
+ { lightpink1 } @Yield { rgb "1.000 0.682 0.725" }
+ { lightpink2 } @Yield { rgb "0.933 0.635 0.678" }
+ { lightpink3 } @Yield { rgb "0.804 0.549 0.584" }
+ { lightpink4 } @Yield { rgb "0.545 0.373 0.396" }
+ { palevioletred1 } @Yield { rgb "1.000 0.510 0.671" }
+ { palevioletred2 } @Yield { rgb "0.933 0.475 0.624" }
+ { palevioletred3 } @Yield { rgb "0.804 0.408 0.537" }
+ { palevioletred4 } @Yield { rgb "0.545 0.278 0.365" }
+ { maroon1 } @Yield { rgb "1.000 0.204 0.702" }
+ { maroon2 } @Yield { rgb "0.933 0.188 0.655" }
+ { maroon3 } @Yield { rgb "0.804 0.161 0.565" }
+ { maroon4 } @Yield { rgb "0.545 0.110 0.384" }
+ { violetred1 } @Yield { rgb "1.000 0.243 0.588" }
+ { violetred2 } @Yield { rgb "0.933 0.227 0.549" }
+ { violetred3 } @Yield { rgb "0.804 0.196 0.471" }
+ { violetred4 } @Yield { rgb "0.545 0.133 0.322" }
+ { magenta1 } @Yield { rgb "1.000 0.000 1.000" }
+ { magenta2 } @Yield { rgb "0.933 0.000 0.933" }
+ { magenta3 } @Yield { rgb "0.804 0.000 0.804" }
+ { magenta4 } @Yield { rgb "0.545 0.000 0.545" }
+ { orchid1 } @Yield { rgb "1.000 0.514 0.980" }
+ { orchid2 } @Yield { rgb "0.933 0.478 0.914" }
+ { orchid3 } @Yield { rgb "0.804 0.412 0.788" }
+ { orchid4 } @Yield { rgb "0.545 0.278 0.537" }
+ { plum1 } @Yield { rgb "1.000 0.733 1.000" }
+ { plum2 } @Yield { rgb "0.933 0.682 0.933" }
+ { plum3 } @Yield { rgb "0.804 0.588 0.804" }
+ { plum4 } @Yield { rgb "0.545 0.400 0.545" }
+ { mediumorchid1 } @Yield { rgb "0.878 0.400 1.000" }
+ { mediumorchid2 } @Yield { rgb "0.820 0.373 0.933" }
+ { mediumorchid3 } @Yield { rgb "0.706 0.322 0.804" }
+ { mediumorchid4 } @Yield { rgb "0.478 0.216 0.545" }
+ { darkorchid1 } @Yield { rgb "0.749 0.243 1.000" }
+ { darkorchid2 } @Yield { rgb "0.698 0.227 0.933" }
+ { darkorchid3 } @Yield { rgb "0.604 0.196 0.804" }
+ { darkorchid4 } @Yield { rgb "0.408 0.133 0.545" }
+ { purple1 } @Yield { rgb "0.608 0.188 1.000" }
+ { purple2 } @Yield { rgb "0.569 0.173 0.933" }
+ { purple3 } @Yield { rgb "0.490 0.149 0.804" }
+ { purple4 } @Yield { rgb "0.333 0.102 0.545" }
+ { mediumpurple1 } @Yield { rgb "0.671 0.510 1.000" }
+ { mediumpurple2 } @Yield { rgb "0.624 0.475 0.933" }
+ { mediumpurple3 } @Yield { rgb "0.537 0.408 0.804" }
+ { mediumpurple4 } @Yield { rgb "0.365 0.278 0.545" }
+ { thistle1 } @Yield { rgb "1.000 0.882 1.000" }
+ { thistle2 } @Yield { rgb "0.933 0.824 0.933" }
+ { thistle3 } @Yield { rgb "0.804 0.710 0.804" }
+ { thistle4 } @Yield { rgb "0.545 0.482 0.545" }
+ { gray0 } @Yield { rgb "0.000 0.000 0.000" }
+ { grey0 } @Yield { rgb "0.000 0.000 0.000" }
+ { gray1 } @Yield { rgb "0.012 0.012 0.012" }
+ { grey1 } @Yield { rgb "0.012 0.012 0.012" }
+ { gray2 } @Yield { rgb "0.020 0.020 0.020" }
+ { grey2 } @Yield { rgb "0.020 0.020 0.020" }
+ { gray3 } @Yield { rgb "0.031 0.031 0.031" }
+ { grey3 } @Yield { rgb "0.031 0.031 0.031" }
+ { gray4 } @Yield { rgb "0.039 0.039 0.039" }
+ { grey4 } @Yield { rgb "0.039 0.039 0.039" }
+ { gray5 } @Yield { rgb "0.051 0.051 0.051" }
+ { grey5 } @Yield { rgb "0.051 0.051 0.051" }
+ { gray6 } @Yield { rgb "0.059 0.059 0.059" }
+ { grey6 } @Yield { rgb "0.059 0.059 0.059" }
+ { gray7 } @Yield { rgb "0.071 0.071 0.071" }
+ { grey7 } @Yield { rgb "0.071 0.071 0.071" }
+ { gray8 } @Yield { rgb "0.078 0.078 0.078" }
+ { grey8 } @Yield { rgb "0.078 0.078 0.078" }
+ { gray9 } @Yield { rgb "0.090 0.090 0.090" }
+ { grey9 } @Yield { rgb "0.090 0.090 0.090" }
+ { gray10 } @Yield { rgb "0.102 0.102 0.102" }
+ { grey10 } @Yield { rgb "0.102 0.102 0.102" }
+ { gray11 } @Yield { rgb "0.110 0.110 0.110" }
+ { grey11 } @Yield { rgb "0.110 0.110 0.110" }
+ { gray12 } @Yield { rgb "0.122 0.122 0.122" }
+ { grey12 } @Yield { rgb "0.122 0.122 0.122" }
+ { gray13 } @Yield { rgb "0.129 0.129 0.129" }
+ { grey13 } @Yield { rgb "0.129 0.129 0.129" }
+ { gray14 } @Yield { rgb "0.141 0.141 0.141" }
+ { grey14 } @Yield { rgb "0.141 0.141 0.141" }
+ { gray15 } @Yield { rgb "0.149 0.149 0.149" }
+ { grey15 } @Yield { rgb "0.149 0.149 0.149" }
+ { gray16 } @Yield { rgb "0.161 0.161 0.161" }
+ { grey16 } @Yield { rgb "0.161 0.161 0.161" }
+ { gray17 } @Yield { rgb "0.169 0.169 0.169" }
+ { grey17 } @Yield { rgb "0.169 0.169 0.169" }
+ { gray18 } @Yield { rgb "0.180 0.180 0.180" }
+ { grey18 } @Yield { rgb "0.180 0.180 0.180" }
+ { gray19 } @Yield { rgb "0.188 0.188 0.188" }
+ { grey19 } @Yield { rgb "0.188 0.188 0.188" }
+ { gray20 } @Yield { rgb "0.200 0.200 0.200" }
+ { grey20 } @Yield { rgb "0.200 0.200 0.200" }
+ { gray21 } @Yield { rgb "0.212 0.212 0.212" }
+ { grey21 } @Yield { rgb "0.212 0.212 0.212" }
+ { gray22 } @Yield { rgb "0.220 0.220 0.220" }
+ { grey22 } @Yield { rgb "0.220 0.220 0.220" }
+ { gray23 } @Yield { rgb "0.231 0.231 0.231" }
+ { grey23 } @Yield { rgb "0.231 0.231 0.231" }
+ { gray24 } @Yield { rgb "0.239 0.239 0.239" }
+ { grey24 } @Yield { rgb "0.239 0.239 0.239" }
+ { gray25 } @Yield { rgb "0.251 0.251 0.251" }
+ { grey25 } @Yield { rgb "0.251 0.251 0.251" }
+ { gray26 } @Yield { rgb "0.259 0.259 0.259" }
+ { grey26 } @Yield { rgb "0.259 0.259 0.259" }
+ { gray27 } @Yield { rgb "0.271 0.271 0.271" }
+ { grey27 } @Yield { rgb "0.271 0.271 0.271" }
+ { gray28 } @Yield { rgb "0.278 0.278 0.278" }
+ { grey28 } @Yield { rgb "0.278 0.278 0.278" }
+ { gray29 } @Yield { rgb "0.290 0.290 0.290" }
+ { grey29 } @Yield { rgb "0.290 0.290 0.290" }
+ { gray30 } @Yield { rgb "0.302 0.302 0.302" }
+ { grey30 } @Yield { rgb "0.302 0.302 0.302" }
+ { gray31 } @Yield { rgb "0.310 0.310 0.310" }
+ { grey31 } @Yield { rgb "0.310 0.310 0.310" }
+ { gray32 } @Yield { rgb "0.322 0.322 0.322" }
+ { grey32 } @Yield { rgb "0.322 0.322 0.322" }
+ { gray33 } @Yield { rgb "0.329 0.329 0.329" }
+ { grey33 } @Yield { rgb "0.329 0.329 0.329" }
+ { gray34 } @Yield { rgb "0.341 0.341 0.341" }
+ { grey34 } @Yield { rgb "0.341 0.341 0.341" }
+ { gray35 } @Yield { rgb "0.349 0.349 0.349" }
+ { grey35 } @Yield { rgb "0.349 0.349 0.349" }
+ { gray36 } @Yield { rgb "0.361 0.361 0.361" }
+ { grey36 } @Yield { rgb "0.361 0.361 0.361" }
+ { gray37 } @Yield { rgb "0.369 0.369 0.369" }
+ { grey37 } @Yield { rgb "0.369 0.369 0.369" }
+ { gray38 } @Yield { rgb "0.380 0.380 0.380" }
+ { grey38 } @Yield { rgb "0.380 0.380 0.380" }
+ { gray39 } @Yield { rgb "0.388 0.388 0.388" }
+ { grey39 } @Yield { rgb "0.388 0.388 0.388" }
+ { gray40 } @Yield { rgb "0.400 0.400 0.400" }
+ { grey40 } @Yield { rgb "0.400 0.400 0.400" }
+ { gray41 } @Yield { rgb "0.412 0.412 0.412" }
+ { grey41 } @Yield { rgb "0.412 0.412 0.412" }
+ { gray42 } @Yield { rgb "0.420 0.420 0.420" }
+ { grey42 } @Yield { rgb "0.420 0.420 0.420" }
+ { gray43 } @Yield { rgb "0.431 0.431 0.431" }
+ { grey43 } @Yield { rgb "0.431 0.431 0.431" }
+ { gray44 } @Yield { rgb "0.439 0.439 0.439" }
+ { grey44 } @Yield { rgb "0.439 0.439 0.439" }
+ { gray45 } @Yield { rgb "0.451 0.451 0.451" }
+ { grey45 } @Yield { rgb "0.451 0.451 0.451" }
+ { gray46 } @Yield { rgb "0.459 0.459 0.459" }
+ { grey46 } @Yield { rgb "0.459 0.459 0.459" }
+ { gray47 } @Yield { rgb "0.471 0.471 0.471" }
+ { grey47 } @Yield { rgb "0.471 0.471 0.471" }
+ { gray48 } @Yield { rgb "0.478 0.478 0.478" }
+ { grey48 } @Yield { rgb "0.478 0.478 0.478" }
+ { gray49 } @Yield { rgb "0.490 0.490 0.490" }
+ { grey49 } @Yield { rgb "0.490 0.490 0.490" }
+ { gray50 } @Yield { rgb "0.498 0.498 0.498" }
+ { grey50 } @Yield { rgb "0.498 0.498 0.498" }
+ { gray51 } @Yield { rgb "0.510 0.510 0.510" }
+ { grey51 } @Yield { rgb "0.510 0.510 0.510" }
+ { gray52 } @Yield { rgb "0.522 0.522 0.522" }
+ { grey52 } @Yield { rgb "0.522 0.522 0.522" }
+ { gray53 } @Yield { rgb "0.529 0.529 0.529" }
+ { grey53 } @Yield { rgb "0.529 0.529 0.529" }
+ { gray54 } @Yield { rgb "0.541 0.541 0.541" }
+ { grey54 } @Yield { rgb "0.541 0.541 0.541" }
+ { gray55 } @Yield { rgb "0.549 0.549 0.549" }
+ { grey55 } @Yield { rgb "0.549 0.549 0.549" }
+ { gray56 } @Yield { rgb "0.561 0.561 0.561" }
+ { grey56 } @Yield { rgb "0.561 0.561 0.561" }
+ { gray57 } @Yield { rgb "0.569 0.569 0.569" }
+ { grey57 } @Yield { rgb "0.569 0.569 0.569" }
+ { gray58 } @Yield { rgb "0.580 0.580 0.580" }
+ { grey58 } @Yield { rgb "0.580 0.580 0.580" }
+ { gray59 } @Yield { rgb "0.588 0.588 0.588" }
+ { grey59 } @Yield { rgb "0.588 0.588 0.588" }
+ { gray60 } @Yield { rgb "0.600 0.600 0.600" }
+ { grey60 } @Yield { rgb "0.600 0.600 0.600" }
+ { gray61 } @Yield { rgb "0.612 0.612 0.612" }
+ { grey61 } @Yield { rgb "0.612 0.612 0.612" }
+ { gray62 } @Yield { rgb "0.620 0.620 0.620" }
+ { grey62 } @Yield { rgb "0.620 0.620 0.620" }
+ { gray63 } @Yield { rgb "0.631 0.631 0.631" }
+ { grey63 } @Yield { rgb "0.631 0.631 0.631" }
+ { gray64 } @Yield { rgb "0.639 0.639 0.639" }
+ { grey64 } @Yield { rgb "0.639 0.639 0.639" }
+ { gray65 } @Yield { rgb "0.651 0.651 0.651" }
+ { grey65 } @Yield { rgb "0.651 0.651 0.651" }
+ { gray66 } @Yield { rgb "0.659 0.659 0.659" }
+ { grey66 } @Yield { rgb "0.659 0.659 0.659" }
+ { gray67 } @Yield { rgb "0.671 0.671 0.671" }
+ { grey67 } @Yield { rgb "0.671 0.671 0.671" }
+ { gray68 } @Yield { rgb "0.678 0.678 0.678" }
+ { grey68 } @Yield { rgb "0.678 0.678 0.678" }
+ { gray69 } @Yield { rgb "0.690 0.690 0.690" }
+ { grey69 } @Yield { rgb "0.690 0.690 0.690" }
+ { gray70 } @Yield { rgb "0.702 0.702 0.702" }
+ { grey70 } @Yield { rgb "0.702 0.702 0.702" }
+ { gray71 } @Yield { rgb "0.710 0.710 0.710" }
+ { grey71 } @Yield { rgb "0.710 0.710 0.710" }
+ { gray72 } @Yield { rgb "0.722 0.722 0.722" }
+ { grey72 } @Yield { rgb "0.722 0.722 0.722" }
+ { gray73 } @Yield { rgb "0.729 0.729 0.729" }
+ { grey73 } @Yield { rgb "0.729 0.729 0.729" }
+ { gray74 } @Yield { rgb "0.741 0.741 0.741" }
+ { grey74 } @Yield { rgb "0.741 0.741 0.741" }
+ { gray75 } @Yield { rgb "0.749 0.749 0.749" }
+ { grey75 } @Yield { rgb "0.749 0.749 0.749" }
+ { gray76 } @Yield { rgb "0.761 0.761 0.761" }
+ { grey76 } @Yield { rgb "0.761 0.761 0.761" }
+ { gray77 } @Yield { rgb "0.769 0.769 0.769" }
+ { grey77 } @Yield { rgb "0.769 0.769 0.769" }
+ { gray78 } @Yield { rgb "0.780 0.780 0.780" }
+ { grey78 } @Yield { rgb "0.780 0.780 0.780" }
+ { gray79 } @Yield { rgb "0.788 0.788 0.788" }
+ { grey79 } @Yield { rgb "0.788 0.788 0.788" }
+ { gray80 } @Yield { rgb "0.800 0.800 0.800" }
+ { grey80 } @Yield { rgb "0.800 0.800 0.800" }
+ { gray81 } @Yield { rgb "0.812 0.812 0.812" }
+ { grey81 } @Yield { rgb "0.812 0.812 0.812" }
+ { gray82 } @Yield { rgb "0.820 0.820 0.820" }
+ { grey82 } @Yield { rgb "0.820 0.820 0.820" }
+ { gray83 } @Yield { rgb "0.831 0.831 0.831" }
+ { grey83 } @Yield { rgb "0.831 0.831 0.831" }
+ { gray84 } @Yield { rgb "0.839 0.839 0.839" }
+ { grey84 } @Yield { rgb "0.839 0.839 0.839" }
+ { gray85 } @Yield { rgb "0.851 0.851 0.851" }
+ { grey85 } @Yield { rgb "0.851 0.851 0.851" }
+ { gray86 } @Yield { rgb "0.859 0.859 0.859" }
+ { grey86 } @Yield { rgb "0.859 0.859 0.859" }
+ { gray87 } @Yield { rgb "0.871 0.871 0.871" }
+ { grey87 } @Yield { rgb "0.871 0.871 0.871" }
+ { gray88 } @Yield { rgb "0.878 0.878 0.878" }
+ { grey88 } @Yield { rgb "0.878 0.878 0.878" }
+ { gray89 } @Yield { rgb "0.890 0.890 0.890" }
+ { grey89 } @Yield { rgb "0.890 0.890 0.890" }
+ { gray90 } @Yield { rgb "0.898 0.898 0.898" }
+ { grey90 } @Yield { rgb "0.898 0.898 0.898" }
+ { gray91 } @Yield { rgb "0.910 0.910 0.910" }
+ { grey91 } @Yield { rgb "0.910 0.910 0.910" }
+ { gray92 } @Yield { rgb "0.922 0.922 0.922" }
+ { grey92 } @Yield { rgb "0.922 0.922 0.922" }
+ { gray93 } @Yield { rgb "0.929 0.929 0.929" }
+ { grey93 } @Yield { rgb "0.929 0.929 0.929" }
+ { gray94 } @Yield { rgb "0.941 0.941 0.941" }
+ { grey94 } @Yield { rgb "0.941 0.941 0.941" }
+ { gray95 } @Yield { rgb "0.949 0.949 0.949" }
+ { grey95 } @Yield { rgb "0.949 0.949 0.949" }
+ { gray96 } @Yield { rgb "0.961 0.961 0.961" }
+ { grey96 } @Yield { rgb "0.961 0.961 0.961" }
+ { gray97 } @Yield { rgb "0.969 0.969 0.969" }
+ { grey97 } @Yield { rgb "0.969 0.969 0.969" }
+ { gray98 } @Yield { rgb "0.980 0.980 0.980" }
+ { grey98 } @Yield { rgb "0.980 0.980 0.980" }
+ { gray99 } @Yield { rgb "0.988 0.988 0.988" }
+ { grey99 } @Yield { rgb "0.988 0.988 0.988" }
+ { gray100 } @Yield { rgb "1.000 1.000 1.000" }
+ { grey100 } @Yield { rgb "1.000 1.000 1.000" }
+ { darkgrey } @Yield { rgb "0.663 0.663 0.663" }
+ { darkgray } @Yield { rgb "0.663 0.663 0.663" }
+ { darkblue } @Yield { rgb "0.000 0.000 0.545" }
+ { darkcyan } @Yield { rgb "0.000 0.545 0.545" }
+ { darkmagenta } @Yield { rgb "0.545 0.000 0.545" }
+ { darkred } @Yield { rgb "0.545 0.000 0.000" }
+ { lightgreen } @Yield { rgb "0.565 0.933 0.565" }
+ # else @Yield { rgb "0.000 0.000 0.000" }
+ }
+}
diff --git a/locale/locale/README b/locale/locale/README
new file mode 100644
index 0000000..8db8468
--- /dev/null
+++ b/locale/locale/README
@@ -0,0 +1,20 @@
+Locale-specific error messages
+
+Lout offers the option of locale-specific error messages. To
+get them, install with USELOC set to 1 in the make file, as
+described in detail there. If USELOC is set to 1 when installing,
+Lout will look for a file called $(LIBDIR)/locale/msgs.<loc>
+where <loc> stands for the current locale, for its error messages.
+
+At present we have
+
+ msgs.english.3.16 The up-to-date messages list, in English
+ old.msgs.fr French messages from Version 3.05, out of date
+ old.msgs.de German messages from Version 3.05, out of date
+
+Someone needs to translate the new errors list into these languages
+(and others) and send it to me. Please send me any translations you
+do (perhaps ask first) so that I can stop people doing duplicate work.
+
+Jeffrey H. Kingston
+26 May 1999
diff --git a/locale/locale/msgs.english.3.16 b/locale/locale/msgs.english.3.16
new file mode 100644
index 0000000..ca9549b
--- /dev/null
+++ b/locale/locale/msgs.english.3.16
@@ -0,0 +1,581 @@
+$set 1
+1 word is too long
+2 assert failed in %s
+3 assert failed in %s %s
+4 %s - debug flags not implemented
+6 unable to initialize locale
+7 usage: -o <filename>
+8 usage: -c <filename>
+9 usage: -e <filename>
+10 usage: -EPS
+11 usage: -D <directoryname>
+12 usage: -C <directoryname>
+13 usage: -F <directoryname>
+14 usage: -H <directoryname>
+15 usage: -I <directoryname>
+16 usage: -i <filename>
+17 two -h options illegal
+18 usage: -h <filename>
+19 usage: lout -%c<length><length>
+20 lout -%c: units must be c, i, p, or m
+21 lout -%c: units must be c, i, p, or m
+23 standard input specified twice
+24 error in command-line option %s
+25 error in command-line option %s
+26 unknown command line flag %s
+27 cannot open output file %s
+28 -o: output file name %s ends with %s
+29 total of all words printed: %d
+30 unable to initialize collation
+31 cannot set binary mode on stdout
+$set 2
+1 too many open files when opening include file %s; open files are:
+2 too many open files when opening database file %s; open files are:
+3 run out of memory when opening file %s
+4 illegal macro invocation in database
+5 line is too long (or final newline missing)
+6 character %c outside quoted string
+7 cannot open file %s
+8 recursion in macro
+9 %s expected (after %s)
+10 name of include file expected here
+11 unterminated string
+12 unterminated string
+13 skipping null character in string
+14 LexGetToken: error in quoted string
+15 line is too long (or final newline missing)
+16 filter parameter in macro
+17 end of file reached while reading filter parameter
+18 expected %s here (after %s)
+19 expected file name here
+20 cannot open include file %s
+21 line is too long (or final newline missing)
+22 end of file reached while reading %s
+23 %s
+24 exiting now
+$set 3
+1 run out of memory when enlarging file table
+2 too many files (maximum is %d)
+3 database file %s where source file expected
+4 database index file %s where source file expected
+5 file name %s%s is too long
+6 file name %s%s is too long
+7 DatabaseFileNum: filter file position unknown
+8 DatabaseFileNum: unexpected file type
+9 file position %s... is too long to print
+10 file position %s... is too long to print
+11 filter
+12 file
+13 from
+14 line
+15 file path name %s%s%s is too long
+16 files %s and %s both exist
+17 safe execution prohibiting command: %s
+18 DatabaseFileNum: database file position unknown
+$set 5
+1 expected font family name here
+2 expected font face name here
+3 expected opening %s of fontdef here
+4 expected opening %s of langdef here
+5 left brace expected here in %s declaration
+6 name of %s file expected here
+7 unknown or misspelt symbol %s
+8 symbol name or %s expected here (%s declaration)
+9 symbol names missing in %s declaration
+10 name of %s file expected here
+11 symbol %s unknown or misspelt
+12 symbol %s not allowed in macro
+13 unexpected end of input
+14 %s not expected here
+15 unmatched %s in macro
+16 unmatched %s in macro
+17 symbol %s unknown or misspelt
+18 symbol name expected after %s
+19 %s %s does not match %s %s
+20 unmatched %s in macro
+21 %s must follow named parameter %s
+22 right parameter of %s must begin with %s
+23 ReadTokenList: %s
+24 %s ignored (name is missing)
+25 %s ignored (opening %s is missing)
+26 import name expected here
+27 import %s not in scope
+28 %s symbol name expected here
+29 extend symbol %s not in scope
+30 keyword %s or %s expected here
+31 keyword %s expected here
+32 ignoring export list of macro
+33 symbol name expected here
+34 %s expected here
+35 %s expected here
+36 %s expected here
+37 precedence is too low (%d substituted)
+38 precedence is too high (%d substituted)
+39 associativity altered to %s
+40 cannot find %s parameter name
+41 cannot find %s parameter name
+42 opening left brace or @Begin of %s expected
+43 exported symbol %s is not defined in %s
+44 body parameter %s may not be exported
+45 symbol %s exported twice
+46 named parameter import %s has parameters
+47 %s suffix should be omitted in %s clause
+48 %s has %s clause, so cannot be extended
+$set 6
+1 expression is too deeply nested
+2 expression is too deeply nested
+3 left parameter of %s is not a symbol (or not visible)
+4 unmatched %s (inserted %s)
+5 unmatched %s; inserted %s at%s (after %s)
+6 unmatched %s not enclosed in anything
+7 %s %s appended at end of file to match %s at%s
+8 %s replaced by %s %s to match %s at%s
+9 %s %s replaced by %s %s to match %s at%s
+10 cross reference database file name %s is too long
+11 syntax error in cross reference database
+12 error in cross reference database
+13 error in cross reference database
+14 exiting now
+15 %s expected after %s
+16 %s or %s tag not allowed here
+17 invalid parameter of %s
+18 symbol %s occurs in two %s clauses
+19 invalid parameter of %s
+20 symbol %s unknown or misspelt
+21 too many errors (%s lines missing or out of order?)
+22 unexpected end of input
+23 %s replaced by %s
+24 unknown or misspelt symbol %s after %s deleted
+25 symbol expected after %s
+26 %s symbol out of place
+27 symbol expected following %s
+28 %s clause(s) changed from previous run
+29 symbol expected following %s
+30 %s must follow named parameter %s
+31 named parameter %s of %s appears twice
+32 %s out of place here (%s has no right parameter)
+33 right parameter of %s must be enclosed in braces
+34 body parameter of %s must be enclosed in braces
+35 invalid left parameter of %s
+36 right parameter of %s must be enclosed in braces
+37 error in cross reference database
+38 compulsory option %s missing from %s
+39 exiting now
+40 right parameter of %s or %s must be enclosed in braces
+$set 7
+1 %s: maximum paragraph length (%d) exceeded
+1 %s: maximum paragraph length (%d) exceeded
+$set 8
+1 word is too long
+2 word is too long
+3 replacing invalid scale factor by 1.0
+4 replacing invalid scale factor %s by 1.0
+5 replacing undersized scale factor %s by 1.0
+6 replacing oversized scale factor %s by 1.0
+7 %s deleted (right parameter is malformed)
+8 %s expected here
+9 error in left parameter of %s
+10 error in left parameter of %s
+11 replacing unknown %s option %s by %s
+12 %s deleted (choice %s unknown)
+13 left parameter of %s is not a cross reference
+14 left parameter of %s must be a symbol
+15 symbol %s not allowed here (it has no %s)
+16 %s, %s or %s expected in left parameter of %s
+17 right parameter of %s must be a simple word
+18 symbol %s used outside %s
+19 filter parameter of %s symbol is not simple
+20 maximum depth of symbol expansion (%d) reached
+21 the symbols currently being expanded are:
+22 at %d: %d %s %s
+23 exiting now
+24 word %s%s is too long
+25 missing %s symbol or option
+26 replacing invalid left parameter of %s by 2i
+27 replacing invalid left parameter of %s by +0i
+28 replacing invalid left parameter of %s by 0d
+29 %s not expected here
+30 %s dropped (parameter is not a simple word)
+31 %s dropped (no current font at this point)
+32 %s dropped (character %s unknown in font %s)
+33 no current language at this point, using %s
+34 object dropped by %s: no suitable insert point
+35 invalid left parameter of %s
+36 invalid left parameter of %s
+37 %s deleted (invalid right parameter)
+38 no current font at this point, using %s
+39 %s ignored: no choices in right parameter
+40 maximum depth of symbol expansion (%d) reached
+41 this %s is not a sequence of one or more words
+$set 9
+1 symbol with import list misused
+2 no value for parameter %s of symbol %s:
+$set 10
+1 run out of memory enlarging crossref table
+2 automatically generated tag %s&%d is too long
+3 automatically generated tag %s.%s.%d is too long
+4 value of right parameter of %s is not a simple word
+5 value of right parameter of %s is an empty word
+6 symbol %s used in cross reference has no %s parameter
+7 automatically generated tag %s_%d is too long
+8 symbol %s used in cross reference has no %s parameter
+9 unresolved cross reference %s%s%s
+10 %s parameter is not a word
+11 %s parameter is an empty word
+12 no %s precedes this %s%s%s
+13 no %s precedes this %s%s%s
+14 tag of %s is not a simple word
+15 tag of %s is not a simple word
+16 no %s follows this %s%s%s
+17 and more undefined %s%s%s
+18 no %s follows or precedes this %s%s%s
+19 no %s follows this %s%s%s
+20 and more undefined %s%s%s
+21 no %s precedes or follows this %s%s%s
+$set 11
+1 unknown option to %s symbol (%s)
+2 spacing %s is not compatible with current spacing
+3 invalid left parameter of %s
+4 invalid left parameter of %s
+5 unknown option to %s symbol (%s)
+6 line spacing %s is not compatible with current spacing
+7 invalid left parameter of %s
+8 invalid left parameter of %s
+9 this unit not allowed with %s symbol
+10 this unit not allowed with %s symbol
+$set 12
+1 forced to enlarge %s from %s to %s
+2 word %s%s is too long
+3 ^ deleted (it may not precede this object)
+4 gap replaced by 0i (%c unit not allowed here)
+5 %s deleted (cannot open file %s)
+6 %s given zero size (no BoundingBox line in file %s)
+7 %s deleted (bad first line in file %s)
+8 %s given zero size (bad BoundingBox line in file %s)
+9 mark alignment incompatible with centring or right justification
+10 %s deleted (not in column)
+11 %s symbol out of place
+12 %s deleted (not in row)
+13 search for gap preceding %s failed, using zero
+14 %s deleted (out of place)
+15 %s replaced by empty object (out of place)
+$set 13
+1 failed to break column to fit into its available space
+2 reducing column gaps to 0i (object is too wide)
+3 %s object scaled horizontally by factor %.2f (too wide)
+4 %s deleted (too wide; cannot break %s)
+5 word %s scaled horizontally by factor %.2f (too wide)
+6 word %s deleted (too wide)
+7 %s scaled horizontally by factor %.2f (too wide)
+8 %s deleted (too wide)
+9 column mark of unbroken paragraph moved left
+10 column mark of paragraph moved left before breaking
+11 replacing with empty object: negative size constraint %s,%s,%s
+$set 14
+6 paragraph deleted (assigned width %s is too narrow)
+7 hyphen or nohyphen option missing
+$set 16
+2 size constraint %s,%s,%s broken by %s,%s
+3 %s of size %s,%s broken by %s,%s
+4 size adjustment of %s not implemented
+4 size adjustment of %s not implemented
+4 size adjustment of %s not implemented
+5 cannot recover from earlier errors
+$set 17
+1 gap is not a simple word
+2 width missing from %s
+3 %s, %s and %s must be enclosed in double quotes
+4 units letter missing from %s
+5 %.1fr too large (1.0r substituted)
+7 unknown gap mode in %s
+8 invalid width or gap %s
+9 replacing self-contradictory gap %s by breakable version
+10 cannot continue after previous error(s)
+$set 18
+1 cannot attach galley %s
+2 galley nested too deeply (max is %d)
+3 galley %s deleted (insufficient width at target)
+4 right parameter of %s is vertically constrained
+$set 19
+1 galley %s deleted from here (no target)
+2 receptive symbol %s has unconstrained width
+3 too little horizontal space for galley %s at %s
+4 %s object too high for %s space; %s inserted
+5 %s object too wide for %s space; %s inserted
+6 %s object too high for %s space; %s inserted
+7 %s object too wide for %s space; %s inserted
+8 %s object too high for %s space; %s inserted
+9 %s object too wide for %s space; %s inserted
+10 %s object too high for %s space; %s inserted
+11 %s object too wide for %s space; %s inserted
+$set 20
+1 error in database file %s
+2 error in database file %s
+3 component too wide for available space
+$set 21
+1 galley %s must have just one column mark
+2 %s with unspecified scale factor in horizontal galley
+3 replacing infinite scale factor (unconstrained width) by 1.0
+4 replacing infinite scale factor (zero width object) by 1.0
+5 replacing very large scale factor (over 100) by 1.0
+6 object deleted (scale factor is zero)
+7 object deleted (scale factor is smaller than 0.01)
+8 %s replaced by %s (mark not shared)
+9 %s replaced by %s (infinite scale factor)
+10 %s replaced by %s (zero scale factor)
+11 %s replaced by %s (insufficient space)
+12 unexpected absence of %s from the body of %s
+13 %s,%s object too wide for available space
+$set 22
+1 FindSplit: missing galley component
+2 FindSplitInGalley failed
+3 galley %s must have a single column mark
+4 galley %s deleted (never attached)
+5 forcing galley after input point
+6 target of %s is not a cross reference
+7 left parameter of %s is not a symbol
+8 replacing %s%s? by %s%s%s
+9 replacing %s%s%s by %s%s%s
+$set 23
+1 object deleted (it cannot be scaled vertically)
+2 object deleted (it cannot be scaled horizontally)
+3 word %s horizontally scaled by factor %.2f (too wide for %s paragraph)
+4 %s object horizontally scaled by factor %.2f (too wide for %s paragraph)
+5 oversize object has size 0 or less
+6 word %s deleted (too wide for %s paragraph)
+7 %s object deleted (too wide for %s paragraph)
+$set 24
+1 cannot open %s file %s
+2 %s file %s is empty
+3 %s file %s lacks PostScript BeginResource comment
+4 truncating -EPS document at end of first page
+5 rotations, graphics etc. too deeply nested (max is %d)
+6 error in left parameter of %s
+7 error in left parameter of %s
+8 PrintGraphicInclude: cannot include EPSF in a PDF file. File ignored.
+9 ignoring LanguageLevel comment in %s file %s
+10 ignoring Extensions comment in %s file %s
+11 word %s deleted (internal error, off page at %d,%d)
+12 left parameter of %s must be a simple word
+13 left parameter of %s must be a non-empty word
+14 fill %s deleted (internal error, off page at %d,%d)
+$set 26
+1 AppendString abort
+$set 27
+1 unknown debug flag %s
+$set 28
+1 -e argument appears twice in command line
+2 cannot open error file %s
+3 too many levels of error messages
+4 %6s internal error: %s\n
+5 %6s fatal error: %s\n
+6 too many error messages
+7 %s internal error: %s\n
+8 %s fatal error: %s\n
+$set 29
+1 scope[%2d] = %s
+2 scope depth limit exceeded
+3 invalid symbol name %s
+4 %s must be a local definition
+5 a body parameter may not be named %s
+6 the right parameter of a galley may not be called %s
+7 symbol %s previously defined at%s
+8 full name of symbol is too long
+9 full name of symbol is too long
+10 symbol %s has missing %s
+11 symbol %s has erroneous code %c (database out of date?)
+12 symbol name %s previously defined at%s
+13 symbol %s previously defined here
+14 %s must lie within a symbol with a right parameter
+$set 31
+1 exiting now (run out of memory)
+$set 32
+1 word %s is too long
+$set 33
+1 run out of memory enlarging dbcheck table
+2 database file name %s%s is too long
+3 cannot write to database file %s
+4 cross reference %s&&%s used previously, at%s
+5 cross reference %s&&%s used previously
+6 syntax error in database file %s
+7 %s found in database but not declared in %s line
+8 database symbol %s has no tag
+9 database symbol tag is not a simple word
+10 database symbol tag is an empty word
+11 %s or end of file expected here
+12 cannot open database file %s
+13 undefined symbol in database file %s (line %d)
+$set 35
+1 unable to obtain the current time
+$set 36
+1 in hyphenation file %s, unknown escape sequence (line %d)
+2 in hyphenation file %s, line %d: character (octal %o) is not in any class
+3 DoTriePrint: findrep failed
+4 run out of memory while constructing hyphenation table
+5 hyphenation trie node limit exceeded
+6 hyphenation class of %c may not be changed
+7 hyphenation string %s already inserted
+8 cannot open hyphenation file %s
+9 header line of hyphenation file %s missing
+10 Classes heading of hyphenation file %s missing
+11 hyphenation file %s%s is too large (at line %d)
+12 hyphenation file %s%s is too large (at line %d)
+13 format error in hyphenation file %s
+14 cannot write to hyphenation file %s
+15 cannot open hyphenation file %s
+16 run out of memory while reading hyphenation table
+17 error on read from packed hyphenation file %s
+18 bad magic number in hyphenation file %s
+19 no current language for word %s
+20 bad LengthLimit in hyphenation file %s%s (line %d)
+$set 37
+1 font definition does not contain a sequence of words
+2 font definition contains a non-word
+3 font definition does not contain exactly four words
+4 font %s %s already defined at%s
+5 expecting either Recode or NoRecode here
+6 too many different fonts and sizes (maximum is %d)
+7 run out of memory when increasing font table size
+8 cannot open font file %s
+9 font file %s does not begin with StartFontMetrics
+10 run out of memory while reading font file %s
+11 run out of memory while reading font file %s
+12 run out of memory while reading font file %s
+13 UnderlinePosition found twice in font file (line %d)
+14 UnderlineThickness found twice in font file (line %d)
+15 XHeight found twice in font file (line %d)
+16 FontName found twice in font file %s (line %d)
+17 FontName empty in font file %s (line %d)
+18 FontName in font file (%s) and fontdef (%s) disagree
+19 FontName missing in file %s
+20 ignoring unencoded ligature character %s in font file %s (line %d)
+21 too many ligature characters in font file %s (line %d)
+22 WX missing in font file %s (line %d)
+23 B missing in font file %s (line %d)
+24 syntax error on StartKernPairs line in font file %s (line %d)
+25 syntax error in font file %s (line %d): %s
+26 unencoded kern character %s in font file %s (line %d)
+27 unencoded kern character %s in font file %s (line %d)
+28 non-contiguous kerning pair %s %s in font file %s (line %d)
+29 too many kerning pairs in font file %s (line %d)
+30 kerning pair %s %s appears twice in font file %s (line %d)
+31 font %s %s has no glyph for character %s
+32 EndFontMetrics missing from font file %s
+33 error in left parameter of %s
+34 error in left parameter of %s
+35 error in left parameter of %s
+36 initial font must have family, face and size
+37 font family %s not defined
+38 there are no fonts
+39 font family name %s must be accompanied by a face name
+40 font face name %s not defined in font family %s
+41 no current font on which to base size change %s
+42 FontChange: %d
+43 %s %s ignored (result is not positive)
+44 too many different fonts and sizes (max is %d)
+45 run out of memory when increasing font table size
+46 run out of memory when changing font or font size
+47 run out of memory when changing font or font size
+48 no current font at word %s
+49 no current colour at word %s
+50 no current language at word %s
+51 accent dropped from character %s (it has no glyph in font %s)
+52 character %s replaced by space (it has no glyph in font %s)
+53 no current font at this point
+54 no current font at this point
+55 family and face names %s %s are too long
+56 syntax error in font size %s; ignoring it
+$set 38
+1 too many character mappings
+2 run out of memory when loading character mapping
+3 cannot open character mapping file %s
+4 character code(s) missing in mapping file (line %d)
+5 decimal and octal codes disagree in mapping file (line %d)
+6 code %d too small (min is 1) in mapping file (line %d)
+7 code %d out of order in mapping file (line %d)
+8 code %d repeated in mapping file (line %d)
+9 code %d too large (max is %d) in mapping file (line %d)
+10 unknown mapping name %s in mapping file %s (line %d)
+11 unknown character %s in mapping file %s (line %d)
+$set 40
+1 cannot open temporary filter file %s
+2 safe execution prohibiting command: %s
+3 %s
+4 failure (non-zero status) of filter: %s
+5 cannot read filter temporary file %s
+$set 41
+1 database index file seems to be out of date
+2 syntax error in database file
+3 file name %s%s is too long
+4 cannot append to database file %s
+5 rename(%s, %s) failed
+$set 42
+1 ran out of memory when enlarging colour table
+2 too many colours (maximum is %d)
+3 %s ignored (illegal left parameter)
+4 %s ignored (empty left parameter)
+$set 43
+1 run out of memory enlarging language table
+2 language name %s used twice (first at%s)
+3 hyphenation file name expected here
+4 expected word ending pattern here
+5 empty word ending pattern
+6 %s ignored (illegal left parameter)
+7 %s ignored (unknown language %s)
+$set 44
+1 %s may not have a left or named parameter
+2 %s may not have a body parameter
+3 %s must have a right parameter
+$set 45
+1 run out of memory when reading index file %s
+2 run out of memory when reading index file %s
+3 line too long when reading index file %s
+4 run out of memory when reading index file %s
+5 cannot open index file %s for reading
+6 cannot open index file %s for writing
+$set 46
+1 unable to evaluate %s parameter, assuming value is No
+2 value of %s operator is neither Yes nor No, assuming No
+$set 47
+28 PDFPage_ProcessDocInfoKeyword: no memory for __subject=
+$set 48
+1 PDFObject_New: run out of memory
+2 PDFFile_BeginFontEncoding: run out of memory
+3 PDFFile_BeginFontEncoding: out of memory
+4 PDFFont_NewListEntry: run out of memory
+5 PDFFont_NewListEntry: run out of memory
+6 PDFFont_NewListEntry: run out of memory
+7 PDFFont_NewListEntry: run out of memory
+8 PDFFont_WriteFontResource: a font has no encoding
+9 PDFPage_FlushCompressedBuffer: zlib error occurred
+10 PDFPage_FlushCompressedBuffer: zlib error occurred
+11 PDFPage_FlushRawBuffer: zlib error occurred
+12 PDFPage_FlushRawBuffer: write error occurred
+13 PDFPage_Begin: zlib error occurred
+14 PDFPage_Push: run out of memory
+15 PDFPage_Push: run out of memory
+16 PDFTargetAnnot_New: run out of memory
+17 PDFTargetAnnot_New: run out of memory
+18 PDFSourceAnnot_Write: invalid link dest option
+19 PDFSourceAnnot_New: run out of memory
+20 PDFSourceAnnot_New: run out of memory
+21 PDFPage_GetFloat: unable to evaluate number for Lout graphic keyword processing
+22 PDFPage_ProcessLinkKeyword: empty link-name / URI; ignored.
+24 PDFPage_ProcessLinkKeyword: empty file spec
+25 PDFPage_ProcessLinkKeyword: out of memory
+26 PDFPage_ProcessDocInfoKeyword: no memory for __author=
+27 PDFPage_ProcessDocInfoKeyword: no memory for __title=
+29 PDFPage_ProcessDocInfoKeyword: no memory for __keywords=
+30 PDFPage_EvalExpr: '(' expected
+31 PDFPage_EvalExpr: ',' expected
+32 PDFPage_EvalExpr: ')' expected
+33 PDFPage_EvalExpr: __add, __sub, __mul, __div, or a unit keyword was expected
+34 PDFPage_CollectExpr: expression too long (max. 512 chars)
+35 PDFPage_CollectLink: link too long (max. 512 chars)
+36 PDFPage_WriteGraphic: '(' expected
+37 PDFPage_WriteGraphic: '__' encountered while processing @Graphic
+38 PDFPage_Cleanup: run out of memory
+39 %s
+40 %s
+41 The largest page object is %u bytes long.
+42 cannot find font entry for name %s
diff --git a/locale/locale/old.msgs.de b/locale/locale/old.msgs.de
new file mode 100644
index 0000000..84fa8f4
--- /dev/null
+++ b/locale/locale/old.msgs.de
@@ -0,0 +1,497 @@
+$set 1
+1 Wort ist zu lang
+2 Neu: typ %s
+3 Neu: Länge Null!
+4 assert failed in %s
+5 %s - Debug Schalter nicht implementiert
+6 kann locale nicht initialisieren
+7 Nutzung: -o <Filename>
+8 Nutzung: -c <Filename>
+9 Nutzung: -e <Filename>
+10 Nutzung: -EPS
+11 Nutzung: -D <Verzeichnisname>
+12 Nutzung: -C <Verzeichnisname>
+13 Nutzung: -F <Verzeichnisname>
+14 Nutzung: -H <Verzeichnisname>
+15 Nutzung: -I <Verzeichnisname>
+16 Nutzung: -i <Filename>
+17 zwei -h Schalter illegal
+18 Nutzung: -h <Filename>
+21 Nutzung: lout -%c<Länge><Länge>
+22 lout -%c: Einheit muß c, i, p, or m sein
+23 lout -%c: Einheit muß c, i, p, or m sein
+24 Nutzung: lout [ -i <Filename> ] Files
+25 Standardeingabe zweifach angegeben
+26 unbekannter Komandoschalter %s
+27 kann Ausgabefile %s nicht öffnen
+$set 2
+1 Include-File %s zu tief geschachtelt
+2 Datenbankfile %s zu tief geschachtelt
+3 Beim öffnen des File %s ging der Speicher aus
+4 unerlaubte Macroausführung in Datenbank
+5 Zeile ist zu lang (oder abschließendes Zeilenende vermißt)
+6 Zeichen %c außerhalb einer angeführten Zeichenkette
+7 kann File %s nicht öffnen
+8 unbekannter Filetyp
+9 Rekursion im Macro
+10 %s erwartet (nach %s)
+11 Name eines Include-File wird hier erwartet
+12 unbeendete Zeichenkette
+13 unbeendete Zeichenkette
+14 überspringe Null-Zeichen in Zeichenkette
+15 LexGetToken: Fehler in angeführter Zeichenkette
+16 LexGetToken: bad chtbl[]
+17 Zeile ist zu lang (oder abschließendes Zeilenende vermißt)
+18 Filterparameter im Macro
+19 Fileende beim Lesen von Filterparametern erreicht
+20 erwarte hier %s (nach %s)
+21 erwarte hier Filename
+22 kann Include-File %s nicht öffnen
+23 %s in Filterparameter nicht implementiert
+24 LexScanFilter: bad chtbl[]
+25 Zeile ist zu lang (oder abschließendes Zeilenende vermißt)
+$set 3
+1 Beim Erweitern der Filetabelle ging der Speicher aus
+2 zu viele Files (Maximum ist %d)
+3 Datenbank File %s wo Source-File erwartet wird
+4 Datenbank Index-File %s wo Source-File erwartet wird
+5 Filename %s%s ist zu lang
+6 Filename %s%s ist zu lang
+7 Fileposition %s... is zu lang zum ausgeben
+8 Fileposition %s... is zu lang zum ausgeben
+9 File
+10 von
+11 Zeile
+12 Files %s und %s existieren beide
+13 Filepfadname %s/%s ist zu lang
+14 Files %s und %s%s existieren beide
+$set 4
+1 EchoCatOp: %d
+2 EchoToken: %s
+$set 5
+1 erwarte hier Font-Familiennamen
+2 erwarte hier Font-Familiennamen
+3 erwarte hier Anfang %s des fontdef
+4 erwarte hier Anfang %s des langdef
+5 in Deklaration %s linke geschweifte Klammer erwartet
+6 erwarte hier Name des %s File
+7 erwarte hier Symbolnamen oder %s (%s Deklaration)
+8 Symbolnamen vermißt in %s Deklaration
+9 erwarte hier Namen des %s File
+10 Symbol %s unbekannt or falsch buchstabiert
+11 Symbol %s in Macro nicht erlaubt
+12 unerwartees Ende der Eingabe
+13 %s hier nicht erwartet
+14 ungepaartes %s in Macro
+15 ungepaartes %s in Macro
+16 Symbol %s unbekannt oder falsch buchstabiert
+17 Symbolname erwartet nach %s
+18 %s %s paart sich nicht mit %s %s
+19 ungepaartes %s in Macro
+20 %s muß benanntem Parameter folgen %s
+21 rechter Parameter von %s muß mit %s beginnen
+22 ReadTokenList: %s
+23 %s ignoriert (Name vermißt)
+24 %s ignoriert (Anfang %s vermißt)
+25 Import-Name hier erwartet
+26 Import %s nicht im Scope
+27 %s Symbolname hier erwartet
+28 erweitertes Symbol %s nicht im Scope
+29 Schlüsselwort %s oder %s hier erwartet
+30 Schlüsselwort %s hier erwartet
+31 ignoriere Exportliste des Macro
+32 Symbolname hier erwartet
+33 %s hier erwartet
+34 %s hier erwartet
+35 Präzedenz ist zu gering (%d ersetzt)
+36 Präzedenz ist zu hoch (%d ersetzt)
+37 Assoziativität geändert zu %s
+38 kann Parameternamen %s nicht finden
+39 kann Parameternamen %s nicht finden
+40 öffnende linke geschweifte Klammer oder @Begin von %s erwartet
+41 exportiertes Symbol %s ist nicht definiert in %s
+42 Körperparameter %s kann nicht exportiert werden
+43 Symbol %s zweifach exportiert
+44 unbekanntes oder falsch buchstabiertes Symbol %s
+$set 6
+1 Ausdruck ist zu tief geschachtelt
+2 Ausdruck ist zu tief geschachtelt
+3 linker Parameter von %s ist kein Symbol (oder nicht sichtbar)
+4 ungepaartes %s (%s eingefügt)
+5 reduziere: ungepaartes %s
+6 ungepaartes %s; %s bei %s eingefügt (nach %s)
+7 ungepaartes %s in gar nichts eingeschlossen
+8 reduziere: ungepaartes %s
+9 reduziere: ungepaartes %s
+10 %s %s angefügt am Fileende um %s bei %s zu paaren
+11 %s ersetzt durch %s %s um %s bei %s zu paaren
+12 %s %s ersetzt durch %s %s um %s bei %s
+13 reduziere: %s
+14 Kreuzreferenz Datenbank-Filename %s ist zu lang
+15 Syntaxfehler in Kreuzreferenz Datenbank
+16 Fehler in Kreuzreferenz Datenbank
+17 Fehler in Kreuzreferenz Datenbank
+18 beende nun
+19 %s erwartet nach %s
+20 Symbol %s erscheint in zwei %s Klauseln
+21 ungültiger Parameter von %s
+22 Symbol %s unbekannt oder falsch buchstabiert
+23 unerwartes Ende der Eingabe
+24 %s ersetzt durch %s
+25 unbekanntes oder fasch buchstabiertes Symbol %s nach %s entfernt
+26 Symbol erwartet nach %s
+27 %s Symbol deplaziert
+28 %s folgend Symbol erwartet
+29 %s Klausel(n) verändert seit vorherigem Lauf
+30 %s folgend Symbol erwartet
+31 %s muß benanntem Parameter %s folgen
+32 benannter Parameter %s von %s erscheint doppelt
+33 %s hier deplaziert (%s hat keinen rechten Parameter)
+34 rechter Parameter von %s muß in geschweifte Klammern eingeschlossen sein
+35 Körperparameter von %s muß in geschweifte Klammern eingeschlossen sein
+36 ungültiger linker Parameter von %s
+37 rechter Parameter von %s muß in geschweifte Klammern eingeschlossen sein
+38 Parse: %s
+$set 7
+1 CopyObject: %s
+$set 8
+1 Wort ist zu lang
+2 Wort ist zu lang
+3 ersetze ungültigen Skalierungsfaktor durch 1.0
+4 ersetze ungültigen Skalierungsfaktor %s durch 1.0
+5 ersetze zu kleinen Skalierungsfaktor %s durch 1.0
+6 ersetze zu großen Skalierungsfaktor %s durch 1.0
+7 %s entfernt (rechter Parameter ist schlecht)
+8 erwarte %s hier
+9 Fehler in linkem Parameter von %s
+10 Fehler in linkem Parameter von %s
+11 ersetze unbekannten %s Schalter %s durch %s
+12 %s gelöscht (Auswahl %s unbekannt)
+13 linker Parameter von %s ist keine Kreuzreferenz
+14 linker Parameter von %s muß ein Symbol sein
+15 Symbol %s hier nicht erlaubt (es hat kein %s)
+16 %s oder %s im linken Parameter von %s erwartet
+17 rechter Parameter von %s muß ein einfaches Wort sein
+18 maximale Tiefe der Symbolerweiterung (%d) erreicht
+19 die momentan erweiterten Symbole sind:
+20 bei %d: %s
+21 beende nun
+22 Symbol %s außerhalb von %s benutzt
+23 Filterparameter des %s Symbol ist nicht einfach
+24 Word %s%s ist zu lang
+25 vermisse %s Symbol oder Schalter
+26 ersetze ungültigen linken Parameter von %s durch 2i
+27 ersetze ungültigen linken Parameter von %s durch +0i
+28 ersetze ungültigen linken Parameter von %s durch 0d
+29 %s hier nicht erwartet
+30 %s ausgelassen (Parameter ist kein einfaches Wort)
+31 %s ausgelassen (Kein aktueller Font an dieser Stelle)
+32 %s ausgelassen (Zeichen %s unbekannt in Font %s)
+33 keine aktuelle Sprache an dieser Stelle, benutze %s
+34 ungültiger linker Parameter von %s
+35 %s geslöscht (ungültiger rechter Parameter)
+36 Manifest: %s
+$set 9
+1 Symbol mit Importliste mißbraucht
+$set 10
+1 Beim Erweitern der Kreuzreferenztabelle ging der Speicher aus.
+2 automatisch generierte Marke %s&%d ist zu lang
+3 automatisch generierte Marke %s.%s.%d ist zu lang
+5 Wert des rechten Parameters von %s ist kein einfaches Wort
+6 Wert des rechten Parameters von %s ist ein leeres Wort
+7 in Kreuzreferenz benutzes Symbol %s hat keinen %s Parameter
+8 automatisch generierte Marke %s_%d ist zu lang
+9 %s oder %s Marke hier nicht erlaubt
+10 in Kreuzreferenz benutzes Symbol %s hat keinen %s Parameter
+11 CrossExpand: %d
+12 nicht aufgelößte Kreuzreferenz %s%s%s
+13 %s Parameter ist kein Wort
+14 %s Parameter ist ein leeres Wort
+15 es kommt kein %s vor diesem %s%s%s
+16 es kommt kein %s vor diesem %s%s%s
+17 Marke von %s ist kein einfaches Wort
+18 Marke von %s ist kein einfaches Wort
+19 CrossSequence: %s
+20 es folgt kein %s nach diesem %s%s%s
+21 und mehr undefiniert %s%s%s
+$set 11
+1 ungültiger Parameter von %s
+2 abstellen %s ist mit momentanem Abstellen nicht kompatibel
+3 unbekannter Schalter zu %s Symbol (%s)
+4 Zeilenabstellen %s ist mit momentanem Abstellen nicht kompatibel
+5 ungültiger linker Parameter von %s
+6 ungültiger linker Parameter von %s
+$set 12
+1 MinSize: %s
+2 gezwungen %s zu vergrößern
+3 ^ gelöscht (es darf diesem Objekt nicht voranstehen)
+4 Lücke ersetzt durch 0i (Einheit %c hier nicht erlaubt)
+5 %s gelöscht (kann File %s nicht öffnen)
+6 %s bekam Null-Größe (keine BoundingBox Zeile im File %s)
+7 %s gelöscht (erste Zeile im File %s falsch)
+8 %s bekam Null-Größe (falsche BoundingBox-Zeile im File %s)
+9 MinSize: %s
+10 MinSize: back(x, dim) < 0!
+11 MinSize: fwd(x, dim) < 0!
+$set 13
+1 reduziere Spaltenabstand auf 0i (Objekt ist zu weit)
+2 BreakTable: %d
+3 BreakTable: %d
+4 %s gelöscht (zu weit; kann %s nicht umbrechen)
+5 Wort %s gelöscht (zu weit)
+6 %s %s reduziert (zu weit)
+7 %s oder %s gelöscht (zu weit)
+8 Spaltenmarke des nicht umgebrochenen Abschnitts nach links bewegt
+9 Spaltenmarke des Abschnitts vor Umbruch nach links bewegt
+10 BreakObject: %s
+$set 14
+1 %s Objekt gelöscht (zu weit für %s Paragraph)
+2 %s Objekt gelöscht (zu weit für %s Paragraph)
+3 übergroßes Objekt hat Größe Null oder weniger
+4 %s Objekt gelöscht (zu weit für %s Paragraph)
+5 Paragraph gelöscht (zugewiesene Weite %s ist zu schmal)
+6 hyphen oder nohyphen Option vermißt
+7 FillObject: %d
+$set 15
+1 Beschränkt: %s
+2 DebugBeschränkt: %s
+$set 16
+1 FindShift: %s", INTERN,&fpos(x),"units
+2 FindShift: %s", INTERN, &fpos(x),"type
+3 maximale Größe %s überschritten
+4 Größenbeschränkung %s,%s,%s gebrochen durch %s,%s
+5 AdjustSize: %s
+$set 17
+1 Lücke ist kein einfaches Wort
+2 vermisse Weite von %s
+3 %s, %s und %s muß in doppelte Anführungszeichen eingeschlossen sein
+4 vermisse Einheits-Buchstabe von %s
+5 %.1fr zu groß (1.0r substituiert)
+6 Länge %s ist zu groß (Maximum %dc substituiert)
+7 unbekannter Lücken Modus in %s
+8 ungültige Weite oder Lücke in %s
+9 MinGap: units %d
+10 MinGap: NO_MODE
+11 MinGap: mode %d
+12 ExtraGap: NO_MODE
+13 ExtraGap: %d
+14 ActualGap: units %d
+15 ActualGap: NO_MODE
+16 ActualGap: mode %d
+17 EchoGap: %d
+$set 18
+1 kann Galley %s nicht anhängen
+2 Galley zu tief geschachtelt (max ist %d)
+3 Galley %s gelöscht (unzureichende Weite am Ziel)
+4 rechter Parameter von %s ist vertikal begrenzt
+$set 19
+1 Galley %s von hier gelöscht (kein Ziel)
+2 rezeptives Symbol %s hat unbegrenzte Weite
+3 zu wenig horizontaler Platz für Galley %s bei %s
+4 diese Komponente von %s paßte nicht in nächstes Ziel
+5 diese Komponente von %s paßte nicht in nächstes Ziel
+6 AttachGalley: %s
+7 %s Objekt zu groß für %s Platz; %s eingefügt
+$set 20
+1 DebugInnersNames: %s
+2 FlushGalley: attach_status %d
+3 FlushGalley: dest_index %s
+4 FlushGalley: %s
+5 Fehler in Datenbank-File %s
+$set 21
+1 Galley %s darf nur eine Spaltenmarke haben
+2 ersetze unendlichen Skalierungsfaktor (unbegrenzte Weite) durch 1.0
+3 ersetze unendlichen Skalierungsfaktor (Null-weites Objekt) durch 1.0
+4 ersetze sehr großen Skalierungsfaktor (über 100) durch 1.0
+5 Objekt gelöscht (Skalierungsfaktor ist Null)
+6 Objekt gelöscht (Skalierungsfaktor ist kleiner als 0.01)
+7 SizeGalley: %s
+8 %s fehlt unerwarteter Weise im Körper von %s
+$set 22
+1 FlushInners: %s
+2 FindSplit: missing galley component
+3 FindSplitInGalley failed
+4 FindSplitInGalley: %s
+5 Galley %s muß eine einzige Spaltenmarke haben
+6 Galley %s gelöscht (niemals angehängt)
+7 unterstütze: %s
+8 KillGalley: head
+9 zwinge Galley an Eingabepunkt
+10 Ziel von %s ist keine Kreuzreferenz
+11 linker Parameter von %s ist kein Symbol
+12 ersetze %s%s? durch %s%s%s
+13 TargetSymbol: vermisse Ziel von x
+$set 23
+1 Objekt gelöscht (es kann nicht vertikal skaliert werden)
+2 Objekt gelöscht (es kann nicht horizontal skaliert werden)
+3 FixAndPrintObject: %s
+$set 24
+1 kann %s File %s nicht öffnen
+2 %s File %s ist leer
+3 %s File %s hat keinen PostScript BeginResource Komentar
+4 schneide -EPS Dokument am Ende der ersten Seite ab
+5 Fehler im linken Parameter von %s
+6 Fehler im linken Parameter von %s
+7 ignoriere LanguageLevel Komentar in %s File %s
+8 ignoriere Extensions Kommentar in %s File %s
+$set 25
+1 echo: %s
+2 echo: %s
+3 echo: %s
+$set 26
+1 BeginZeichenkette: momentan in Zeichenkette
+2 AppendZeichenkette: keine aktuelle Zeichenkette
+3 AppendZeichenkette Abbruch
+4 EndZeichenkette: keine Zeichenkette
+$set 27
+1 unbekanntes Debug Flag %s
+2 ProFileOn: %s nochmals gestartet
+3 ProFileOn: Überlauf
+4 ProFileOff: %s ist nicht aktuell
+5 ProFileOff: Überlauf
+$set 28
+1 -e Argument erscheint zweifach in der Komandozeile
+2 kann Fehler-File %s nicht öffnen
+3 zu viele Ebenen von Fehlermeldungen
+4 %6s interner Fehler: %s\n
+5 %6s schlimmer Fehler: %s\n
+6 zu viele Fehlermeldungen
+7 ungültiger Fehlertyp
+$set 29
+1 Scope[%2d] = %s
+2 Scopetiefenlimit überschritten
+3 ungültiger Symbolname %s
+4 %s muß eine lokale Definition sein
+5 ein Körperparameter kann nicht %s benannt werden
+6 der rechte Parameter eines Galley darf nicht %s genannt werden
+7 Symbol %s bereits definiert bei %s
+8 voller Symbolname ist zu lang
+9 voller Symbolname ist zu lang
+10 in Symbol %s wird %s vermißt
+11 DeleteSymBody: %s
+$set 31
+1 beende nun (es ging der Speicher aus)
+$set 32
+1 Wort %s ist zu lang
+2 Nächstes: %s
+$set 33
+1 beim Vergrößern der dbcheck-Tabelle ging der Speicher aus
+2 Dbcheck: Eintrag zweifach eingetragen
+3 NumToSym: no sym
+4 einfügen in gelesene Datenbank
+5 Datenbank Filename %s%s ist zu lang
+6 kann nicht auf Datenbankfile %s schreiben
+7 Kreuzreferenz %s&&%s bereits benutzt bei %s
+8 Kreuzreferenz %s&&%s bereits benutzt
+9 DbConvert: lese Datenbank
+10 Syntaxfehler in Datenbankfile %s
+11 %s in Datenbank gefunden aber nicht in Zeile %s deklariert
+12 Datenbanksymbol %s hat keine Marke
+13 Marke des Datenbanksymbol ist kein einfaches Wort
+14 Marke des Datenbanksymbol ist ein leeres Wort
+15 erwarte hier %s oder Ende des File
+16 kann Datenbankfile %s nicht öffnen
+17 undefiniertes Symbol in Datenbankfile %s (Zeile %d)
+18 DbRetrieveNext: writing
+$set 35
+1 unable to obtain the current time
+$set 36
+1 in Trennungsfile: '%c' ist in keiner Klasse
+2 DoTriePrint: findrep failed
+3 beim Aufbauen der Trenntabelle ging der Speicher aus
+4 hyphenation trie Zeichenkette Limit überschritten
+5 hyphenation trie Knotenlimit überschritten
+6 Trennungsklasse von %c kann nicht geändert werden
+7 Trennungszeichenkette %s bereits vorhanden
+8 kann Trennungsfile %s nicht öffnen
+9 vermisse Kopfzeile des Trennungsfile %s
+10 vermisse Klassenkopf des Trennungsfile %s
+11 TrieRead: %d
+12 Formatfehler in Trennungsfile %s
+13 kann Trennugsfile %s nicht schreiben
+14 kann Trennungsfile %s nich öffnen
+15 beim lesen des Trennungsfiles ging der Speicher aus
+16 Fehler beim Lesen des gepackten Trennungsfiles %s
+17 Falsche magische Nummer im Trennungsfile %s
+18 keine aktuelle Sprache für Wort %s
+$set 37
+1 Fontdefinition enthält keine Folge von Worten
+2 Fontdefinition enthält ein Nicht-Wort
+3 Fontdefinition enthält nicht exakt vier Wörter
+4 Font %s %s bereits definiert bei%s
+5 erwate hier entweder Recode oder NoRecode
+6 zu viele verschiedene Fonts und Größen (Maximum ist %d)
+7 beim Vergrößern der Fonttabelle ging der Speicher aus
+8 kann Fontfile %s nicht öffnen
+9 Fontfile %s beginnt nicht mit StartFontMetrics
+10 beim Lesen des Fontfile %s ging der Speicher aus
+11 beim Lesen des Fontfile %s ging der Speicher aus
+12 beim Lesen des Fontfile %s ging der Speicher aus
+13 XHeight im Fontfile zweifach gefunden (Zeile %d)
+14 FontName im Fontfile %s zweifach gefunden %s (Zeile %d)
+15 FontName Fontfile %s (Zeile %d) leer
+16 FontName im Fontfile (%s) und fontdef (%s) stimmen nicht überein
+17 vermisse FontName im File %s
+18 ignoriere nicht kodierte Ligatur %s in Fontfile %s (Zeile %d)
+19 zu viele Ligaturen in Fontfile %s (Zeile %d)
+20 vermisse WX im Fontfile %s (Zeile %d)
+21 vermisse B im Fontfile %s (Zeile %d)
+22 Syntaxfehler an StartKernPairs Zeile im Fontfile %s (Zeile %d)
+23 Syntaxfehler im Fontfile %s (Zeile %d): %s
+24 nicht kodiertes Kernzeichen %s im Fontfile %s (Zeile %d)
+25 nicht kodiertes Kernzeichen %s im Fontfile %s (Zeile %d)
+26 nicht anschließendes Kerning Paar %s %s im Fontfile %s (Zeile %d)
+27 zu viele Kerning Paare im Fontfile %s (Zeile %d)
+28 Kerning Paar %s %s erscheint zweifach im Fontfile %s (Zeile %d)
+29 vermisse EndFontMetrics im Fontfile %s
+30 Fehler im linken Parameter von %s
+31 Fehler im linken Parameter von %s
+32 Anfangsfont muß Familie, Schnitt und Größe haben
+33 Fontfamilie %s nicht definiert
+34 es existieren keine Fonts
+35 Fontfamilienname %s muß von Schnittnamen begleidet werden
+36 Fontschnittname %s in Fontfamilie %s nicht definiert
+37 kein aktueller Font an dem Basisgröße %s geändert werden könnte
+38 FontChange: %d
+39 %s %s ignoriert (Ergebnis nicht positiv)
+40 zu viele verschiedene Fonts und Größen (maximal %d)
+41 beim Vergrößern der Fonttabelle ging der Speicher aus
+42 beim Ändern des Font oder der Fontgröße ging der Speicher aus
+43 beim Ändern des Font oder der Fontgröße ging der Speicher aus
+44 kein aktueller Font beim Wort %s
+45 keine aktuelle Farbe beim Wort %s
+46 keine aktuelle Sprache beim Wort %s
+47 Zeichen %s ausgelassen (es hat keinen Glyph im Font %s)
+48 kein aktueller Font an diesem Punkt
+49 Familien- und Schnittnamen %s %s sind zu lang
+$set 38
+1 zu viele Kodierungsvektoren
+2 beim Laden des Kodierungsvektors ging der Speicher aus
+3 kann Kodierungsvektorfile %s nicht öffnen
+4 zu viele Zeichennamen im Kodierungsvektorfile %s
+5 zu wenige Zeichennamen im Kodierungsvektorfile %s
+$set 40
+1 kann temporäres Filterfile %s nicht öffnen
+2 %s
+3 Versagen (Nicht-Null-Status) des Filter: %s
+4 kann temporäres Filterfile %s nicht lesen
+$set 41
+1 Datenbankindexfile scheint veraltet zu sein
+2 Syntaxfehler im Datenbankfile
+3 WriteClosure: %s
+4 WriteObject: %s
+5 Filename %s%s ist zu lang
+6 kann nicht an Datenbankfile %s anhängen
+7 Link(%s, %s) versagt
+8 unlink(%s) versagt
+$set 42
+1 beim Vergrößern der Farbtabelle ging der Speicher aus
+2 zu viele Farben (Maximum ist %d)
+3 %s ignoriert (ungültiger linker Parameter)
+4 %s ignoriert (leerer linker Parameter)
+$set 43
+1 beim Vergrößern der Sprachtabelle ging der Speicher aus
+2 Sprachname %s doppelt benutzt (zuerst bei %s)
+3 erwarte hier Trennungsfilenamen
+4 %s ignoriert (ungültiger linker Parameter)
+5 %s ignoriert (unbekannte Sprache %s)
diff --git a/locale/locale/old.msgs.fr b/locale/locale/old.msgs.fr
new file mode 100644
index 0000000..05e40c0
--- /dev/null
+++ b/locale/locale/old.msgs.fr
@@ -0,0 +1,503 @@
+$set 1
+1 mot trop long
+2 Noveau: type %s
+3 Nouveau: longueur nulle!
+4 assertion échoue dans %s
+5 %s - drapeaux de déboguage non implantés
+7 usage: -o <fichier>
+8 usage: -c <fichier>
+9 usage: -e <filename>
+10 usage: -EPS
+11 usage: -D <répertoire>
+12 usage: -C <répertoire>
+13 usage: -F <répertoire>
+14 usage: -H <répertoire>
+15 usage: -I <répertoire>
+16 usage: -i <fichier>
+17 interdit: deux options -h
+18 usage: -h <fichier>
+19 répertoire d'inclusion système: %s
+20 répertoire des bases de données système: %s
+21 usage: lout -%c<longueur><longueur>
+22 lout -%c: unité doit être c, i, p ou m
+23 lout -%c: unité doit être c, i, p ou m
+24 usage: lout [ -i <fichier> ] fichiers...
+25 entrée standard spécifiée deux fois
+26 option de ligne de commande inconnue %s
+27 impossible d'ouvrir le fichier de sortie %s
+$set 2
+1 fichier inclus %s trop imbriqué
+2 fichier de base de données %s trop imbriqué
+3 manque de mémoire en ouvrant le fichier %s
+4 appel de macro interdit dans base de données
+5 ligne trop longue (ou sans fin de ligne)
+6 caractère %c en dehors d'une chaine entre guillemets
+7 impossible d'ouvrir le fichier %s
+8 type de fichier inconnu
+9 macro récursive
+10 %s attendu (après %s)
+11 nom de fichier à inclure attendu ici
+12 chaîne non terminée
+13 chaîne non terminée
+14 caractère nul ignoré dans chaîne
+15 LexGetToken: erreur dans chaîne entre guillemets
+16 LexGetToken: mauvais chtbl[]
+17 ligne trop longue (ou sans fin de ligne)
+18 paramètre de filtre dans macro
+19 fin de fichier en lisant paramètre de filtre
+20 %s attendu ici (après %s)
+21 nom de fichier attendu ici
+22 impossible d'ouvrir le fichier inclus %s
+23 %s dans paramètre de filtre non implémenté
+24 LexScanFilter: mauvais chtbl[]
+25 ligne trop longue (ou sans fin de ligne)
+$set 3
+1 manque de mémoire en agrandissant la table des fichiers
+2 trop de fichiers (maximum=%d)
+3 fichier de base de données %s quand un fichier source est attendu
+4 fichier d'index de base de données %s quand un fichier source est attendu
+5 nom de fichier %s%s trop long
+6 nom de fichier %s%s trop long
+7 position de fichier %s... trop longue à imprimer
+8 position de fichier %s... trop longue à imprimer
+9 fichier
+10 depuis
+11 ligne
+12 les fichiers %s et %s existent tous les deux
+13 chemin de fichier %s/%s trop long
+14 les fichiers %s et %s%s existent tous les deux
+$set 4
+1 EchoCatOp: %d
+2 EchoToken: %s
+$set 5
+1 nom de famille de police attendu ici
+2 nom de genre de police attendu ici
+3 ouverture %s de def.police (fontdef) attendue ici
+4 ouverture %s de def.langage (langdef) attendue ici
+5 accolade ouvrante attendue ici dans declaration %s
+6 nom de fichier %s attendu ici
+7 nom de symbol ou %s attendu ici (déclaration de %s)
+8 noms de symbole manquants dans déclaration %s
+9 nom de fichier %s attendu ici
+10 symbole %s inconnu ou mal epelé
+11 symbole %s interdit dans macro
+12 fin de fichier inattendue
+13 %s inattendu ici
+14 %s non apparié dans macro
+15 %s non apparié dans macro
+16 symbole %s inconnu ou mal epelé
+17 nom de symbole attendu après %s
+18 %s %s ne s'apparie pas avec %s %s
+19 %s non apparié dans macro
+20 %s doit suivre paramètre nommé %s
+21 paramètre droit de %s doit commencer par %s
+22 ReadTokenList: %s
+23 %s ignoré (nom manquant)
+24 %s ignoré (%s ouvrant manquant)
+25 nom d'importation attendu ici
+26 importation %s hors de portée
+27 %s nom de symbole attendu ici
+28 extension de symbole %s hors de portée
+29 mot clé %s ou %s attendu ici
+30 mot clé %s attendu ici
+31 liste d'exportation de macro ignorée
+32 nom de symbole attendu ici
+33 %s attendu ici
+34 %s attendu ici
+35 précédence trop petite (remplacée par %d)
+36 précédence trop grande (remplacée par %d)
+37 associativité changée en %s
+38 impossible de trouver nom de paramètre %s
+39 impossible de trouver nom de paramètre %s
+40 accolade ouvrante ou @Begin de %s attendu
+41 symbole exporté %s n'est pas défini dans %s
+42 paramètre de corps %s ne peut pas être exporté
+43 symbole %s exporté deux fois
+44 symbole %s inconnu ou mal epellé
+$set 6
+1 expression trop fortement imbriquée
+2 expression trop fortement imbriquée
+3 paramètre gauche de %s n'est pas un symbole (ou n'est pas visible)
+4 %s non apparié (%s est inseré)
+5 Reduce: %s non apparié
+6 %s non apparié; %s est inseré en %s (après %s)
+7 %s non apparié n'est contenu dans rien
+8 Reduce: %s non apparié
+9 Reduce: %s non apparié
+10 %s %s ajouté en fin de fichier pour apparier %s en %s
+11 %s remplacé par %s %s pour apparier %s en %s
+12 %s %s remplacé par %s %s pour apparier %s en %s
+13 Reduce: %s
+14 le nom %s de fichier base de donnée de reférences croisées est trop long
+15 erreur de syntaxe dans fichier base de donnée de reférences croisées
+16 erreur dans fichier base de donnée de reférences croisées
+17 erreur dans fichier base de donnée de reférences croisées
+18 arrêt immédiat
+19 %s attendu après %s
+20 le symbole %s apparait dans deux clauses %s
+21 paramètre incorrect de %s
+22 symbole %s inconnu ou mal epelé
+23 fin de fichier inattendue
+24 %s remplacé par %s
+25 symbole inconnu ou mal epelé %s après %s supprimé
+26 symbole attendu après %s
+27 symbole %s mal placé
+28 symbole attendu à la suite de %s
+29 les clause(s) %s changée(s) depuis l'exécution précédentes
+30 symbole attendu à la suite de %s
+31 %s doit suivre paramètre nommé %s
+32 paramètre nommé %s de %s apparait deux fois
+33 %s mal placé ici (%s n'a pas de paramètre droit)
+34 paramètre droit de %s doit être entre accolades
+35 paramètre corps de %s doit être entre accolades
+36 paramètre gauche de %s incorrect
+37 paramètre droit de %s doit être entre accolades
+38 Parse: %s
+$set 7
+1 CopyObject: %s
+$set 8
+1 mot trop long
+2 mot trop long
+3 facteur d'echelle incorrect remplacé par 1.0
+4 facteur d'echelle incorrect %s remplacé par 1.0
+5 facteur d'echelle trop petit %s remplacé par 1.0
+6 facteur d'echelle trop grand %s remplacé par 1.0
+7 %s supprimé (paramètre droit mal construit)
+8 %s attendu ici
+9 erreur dans paramètre gauche de %s
+10 erreur dans paramètre gauche de %s
+11 remplace option inconnue %s de %s par %s
+12 %s supprimé (choix %s inconnu)
+13 paramètre gauche de %s n'est pas une référence croisée
+14 paramètre gauche de %s doit être un symbole
+15 symbole %s interdit ici (il n'a pas de %s)
+16 %s ou %s attendu dans paramètre gauche de %s
+17 paramètre droit de %s doit être un mot simple
+18 profondeur maximale (%d) d'expansion de symbole atteinte
+19 les symboles actuellement expansés sont:
+20 en %d: %s
+21 arrêt immédiat
+22 symbole %s utilisé en dehors de %s
+23 paramètre de filtre du symbole %s n'est pas simple
+24 mot %s%s trop long
+25 symbole %s manquant ou option
+26 paramètre gauche incorrect de %s remplacé par 2i
+27 paramètre gauche incorrect de %s remplacé par +0i
+28 paramètre gauche incorrect de %s remplacé par 0d
+29 %s inattendu ici
+30 %s abandonné (paramètre n'est pas un mot simple)
+31 %s abandonné (pas de police courante en ce point)
+32 %s abandonné (caractère %s inconnu dans la police %s)
+33 pas de langue courante en ce point, %s utilisé
+34 paramètre gauche incorrect de %s
+35 %s supprimé (paramètre droit incorrect)
+36 Manifest: %s
+$set 9
+1 mauvaise utilisation de symbole avec list d'importation
+$set 10
+1 manque de mémoire pour agrandir table de références croisées
+2 étiquette %s&%d générée automatiquement trop longue
+3 étiquette %s.%s.%d générée automatiquement trop longue
+4 paramètre gauche de %s n'est pas un symbole
+5 la valeur de paramètre droit de %s n'est pas un mot simple
+6 la valeur du paramètre droit de %s est un mot vide
+7 symbole %s utilisé en référence croisé n'a pas de paramètre %s
+8 étiquette %s_%d générée automatiquement trop longue
+9 %s ou étiquette %s interdit ici
+10 symbole %s utilisé en référence croisée n'a pas de paramètre %s
+11 CrossExpand: %d
+12 référence croisée non résolue %s%s%s
+13 paramètre %s n'est pas un mot
+14 paramètre %s est un mot vide
+15 aucun %s ne précède ce %s%s%s
+16 aucun %s ne précède ce %s%s%s
+17 étiquette de %s n'est pas un mot simple
+18 étiquette de %s n'est pas un mot simple
+19 CrossSequence: %s
+20 aucun %s ne suit ce %s%s%S
+21 et d'autre %s%s%s indéfinis
+$set 11
+1 paramètre gauche de %s incorrect
+2 espacement %s incompatible avec espacement courant
+3 option inconnue du symbole %s (%s)
+4 interligne %s incompatible avec interligne courant
+5 paramètre gauche de %s incorrect
+6 paramètre gauche de %s incorrect
+$set 12
+1 MinSize: %s
+2 obligé d'agrandir %s
+3 ^ supprimé (il ne peut précéder cet objet)
+4 espacement remplacé par 0i (unité %c interdite ici)
+5 %s supprimé (ne peut ouvrir fichier %s)
+6 %s prend une taille nulle (pas de ligne BoundingBox dans fichier %s)
+7 %s supprimé (mauvaise première ligne dans fichier %s)
+8 %s prend une taille nulle (pas de ligne BoundingBox dans fichier %s)
+9 MinSize: %s
+10 MinSize: back(x, dim) < 0!
+11 MinSize: fwd(x, dim) < 0!
+$set 13
+1 espace entre colonne réduit à 0i (objet trop large)
+2 BreakTable: %d
+3 BreakTable: %d
+4 %s supprimé (trop large; ne peut césurer %s)
+5 mot %s supprimé (trop large)
+6 %s %s réduit (trop large)
+7 %s ou %s supprimé (trop large)
+8 marque de colonne de paragraphe incassable bougée à gauche
+9 marque de colonne de paragraphe bougée à gauche avant césure
+10 BreakObject: %s
+10 BreakObject: %s
+$set 14
+1 objet %s supprimé (trop large pour un paragraphe de %s)
+2 objet %s supprimé (trop large pour un paragraphe de %s)
+3 objet surdimensionné a une taille négative ou nulle
+4 objet %s supprimé (trop large pour un paragraphe de %s)
+5 paragraphe supprimé (largeur affectée %s trop étroite)
+6 option avec ou sans césure manquante
+7 FillObject: %d
+$set 15
+1 Constrained: %s
+2 DebugConstrained: %s
+$set 16
+1 FindShift: %s
+2 FindShift: %s
+3 taille maximale %s dépassée
+4 contrainte de taille %s,%s,%s violée par %s,%s
+5 AdjustSize: %s
+5 AdjustSize: %s
+$set 17
+1 espacement n'est pas un mot simple
+2 largeur manquante de %s
+3 %s, %s et %s doivent être entre guillemets
+4 lettre d'unité manquante dans %s
+{4 units letter missing from %s
+{5 %.1fr too large (1.0r substituted)
+5 %.1fr trop grand (remplacé par 1.Or)
+6 longueur %s trop grande (remplacée par le maximum %dc)
+7 mode d'espacement inconnu dans %s
+8 largeur ou espacement %s incorrect
+9 MinGap: units %d
+10 MinGap: NO_MODE
+11 MinGap: mode %d
+12 ExtraGap: NO_MODE
+13 ExtraGap: %d
+14 ActualGap: unités %d
+15 ActualGap: NO_MODE
+16 ActualGap: mode %d
+17 EchoGap: %d
+$set 18
+1 ne peut attacher une galée
+2 galée trop imbriquée (maximum %d)
+3 galée %s supprimée (largeur insuffisante à la cible)
+4 paramètre droit de %s contraint verticalement
+$set 19
+1 galée %s supprimée ici (sans cible)
+2 symbole réceptif %s a une largeur incontrainte
+3 espacement horizontal trop petit pour galée %s en %s
+4 ce composant de %s ne rentre pas dans sa plus proche cible
+5 ce composant de %s ne rentre pas dans sa plus proche cible
+6 AttachGalley: %s
+7 objet de %s trop haut pour un espace de %s %s inseré
+$set 20
+1 DebugInnersNames: %s
+2 FlushGalley: attach_status %d
+3 FlushGalley: dest_index %s
+4 FlushGalley: %s
+5 erreur dans fichier de base de donnée %s
+$set 21
+1 galée %s doit avoir une seule marque de colonne
+2 remplace facteur d'echelle par 1.0 et non infinie (%s a une largeur incontrainte)
+3 remplace facteur d'echelle par 1.0 et non infinie (%s a une largeur nulle)
+4 remplace facteur d'echelle trop grand (> 100) par 1.0
+5 objet supprimé (facteur d'echelle nul)
+6 objet supprimé (facteur d'echelle <0.01)
+7 SizeGalley: %s
+8 absence inattendue de %s dans le corps de %s
+$set 22
+1 FlushInners: %s
+2 FindSplit: composant de galée manquant
+3 FindSplitInGalley échoue
+4 FindSplitInGalley: %s
+5 galée %s doit avoir une seule marque de colonne
+6 galée %s supprimée (n'a jamais été attachée)
+7 Promote: %s
+7 Promote: %s
+8 KillGalley: head
+9 galée forcée après point d'entrée
+10 la cible de %s n'est pas une référence croisée
+11 paramètre gauche de %s n'est pas un symbole
+12 remplace %s%s? par %s%s%s
+13 TargetSymbol: cible manquante de x
+$set 23
+1 objet supprimé (ne peut être mis à l'echelle verticalement)
+2 objet supprimé (ne peut être mis à l'echelle horizontalement)
+3 FixAndPrintObject: %s
+$set 24
+1 impossible d'ouvrir %s fichier %s
+2 %s fichier %s est vide
+3 %s fichier %s sans commentaire PostScript BeginResource
+4 document -EPS tronqué en fin de première page
+5 erreur dans paramètre gauche de %s
+6 erreur dans paramètre gauche de %s
+7 commentaire LanguageLevel ignoré dans %s fichier %s
+8 commentaire Extensions ignoré dans %s fichier %s
+$set 25
+1 echo: %s
+2 echo: %s
+3 echo: %s
+$set 26
+1 BeginString: actuellement dans chaîne
+2 AppendString: pas de chaîne courante
+3 AppendString avorte
+4 EndString: pas de chaîne
+$set 27
+1 drapeau de déboguage %s inconnu
+2 ProfileOn: %s redémarré
+3 ProfileOn: débordement
+4 ProfileOff: %s n'est pas courant
+5 ProfileOff: débordement
+$set 28
+1 argument -e apparaît deux fois dans ligne de commande
+2 impossible d'ouvrir le fichier d'erreur %s
+3 trop de niveaux de message d'erreur
+4 %6s erreur interne: %s\n
+5 %6s erreur fatale: %s\n
+6 trop de messages d'erreur
+7 type d'erreur incorrect
+$set 29
+1 scope[%2d] = %s
+2 profondeur de portée - limite dépassée
+3 nom de symbole %s incorrect
+4 %s doit être une définition locale
+5 un paramètre de corps ne peut être nommé %s
+6 le paramètre droit d'une galée ne peut être nommé %s
+7 symbole %s déjà défini en %s
+8 le nom complet du symbole est trop long
+9 le nom complet du symbole est trop long
+10 symbole %s manque de %s
+11 DeleteSymBody: %s
+$set 31
+1 arrêt immédiat (manque de mémoire)
+$set 32
+1 mot %s trop long
+2 Next: %s
+$set 33
+1 manque de mémoire en agrandissant table dbcheck
+2 Dbcheck: entrée insérée deux fois
+3 NumToSym: pas de symbole
+4 inseré dans base de donnée en cours de lecture
+5 fichier de base de donnée a un nom %s%s trop long
+6 ne peut écrire dans fichier de base de donnée %s
+7 référence croisée %s&%s déjà utilisée, en %s
+8 référence croisée %s&%s déjà utilisée
+9 DbConvert: lecture de la base de donnée
+10 erreur de syntaxe dans fichier de base de donnée %s
+11 %s trouvé dans base de donnée mais non déclaré dans ligne %s
+12 symbole %s de base de donnée sans étiquette
+13 l'étiquette du symbole %s de base de donnée n'est pas un mot simple
+14 l'étiquette du symbole %s de base de donnée est un mot vide
+15 %s ou fin de fichier attendu ici
+16 impossible d'ouvrir fichier de base de donnée %s
+17 symbole indéfini dans fichier de base de donnée %s (ligne %d)
+18 DbRetrieveNext: écriture
+$set 35
+1 impossible d'obtenir le temps à l'horloge
+$set 36
+1 dans fichier de césure: '%c' n'est dans aucune classe
+2 DoTriePrint: findrep échoue
+3 manque de mémoire en construisant la table de césure
+4 chaine de trie de césure - limite dépassée
+5 noeud de trie de césure - limite dépassée
+6 classe de césure de %c ne peut être modifiée
+7 chaîne de césure %s déjà insérée
+8 impossible d'ouvrir le fichier de césure %s
+9 ligne d'entête de fichier de césure %s manquante
+10 entête des classes de fichier de césure %s manquante
+11 TrieRead: %d
+12 erreur de format dans fichier de césure %s
+13 ne peut écrire dans fichier de césure %s
+14 impossible d'ouvrir le fichier de césure %s
+15 manque de mémoire en lisant la table de césure
+16 erreur en lecture du fichier de césure comprimé %s
+17 mauvais nombre magique dans fichier de césure %s
+18 pas de langage courant pour le mot %s
+$set 37
+1 définition de police ne contient pas une suite de mot
+2 définition de police contient un non-mot
+3 définition de police ne contient pas exactement quatre mots
+4 police %s %s déjà définie en %s
+5 Recode ou NoRecode attendu ici
+6 trop de polices et tailles différentes (maximum=%d)
+7 manque de mémoire en agrandissant la table des polices
+8 impossible d'ouvrir fichier de police %s
+9 fichier de police %s ne commence pas par StartFontMetrics
+10 manque de mémoire en lisant fichier de police %s
+11 manque de mémoire en lisant fichier de police %s
+12 manque de mémoire en lisant fichier de police %s
+13 XHeight apparait deux fois dans fichier de police (ligne %d)
+14 FontName apparait deux fois dans fichier de police %s (ligne %d)
+15 FontName vide dans fichier de police %s (ligne %d)
+16 FontName dans fichier de police %s ne correspond pas à fontdef (%s)
+17 FontName manque dans fichier de police %s
+18 caractère non codé de ligature %s ignoré dans fichier de police %s (ligne %d)
+19 trop de caractère de ligature dans fichier de police %s (ligne %d)
+20 WX manquant dans fichier de police %s (ligne %d)
+21 B manquant dans fichier de police %s (ligne %d)
+22 erreur de syntaxe dans StartKernPairs dans fichier de police %s (ligne %d)
+23 erreur de syntaxe dans fichier de police %s (ligne %d): %s
+24 caractère de crénage non codé %s dans fichier de police %s (ligne %d)
+25 caractère de crénage non codé %s dans fichier de police %s (ligne %d)
+26 paire de crénage non contigüe %s %s dans fichier de police %s (ligne %d)
+27 trop de paires de crénage dans fichier de police %s (ligne %d)
+28 paire de crénage en double %s %s dans fichier de police %s (ligne %d)
+29 EndFontMetrics manquant dans fichier de police %s
+30 erreur dans paramètre gauche de %s
+31 erreur dans paramètre gauche de %s
+32 police initiale doit avoir une famille, un genre et une taille
+33 famille de police %s indéfinie
+34 il n'y a pas de polices
+35 nom de famille de police %s doit être accompagné par un nom de genre
+36 nom de genre de police %s indéfini dans famille de police %s
+37 pas de police courant sur laquelle fonder le changement de taille %s
+38 FontChange: %d
+39 %S %S ignoré (résultat non positif)
+40 trop de polices et tailles différentes (max= %d)
+41 manque de mémoire en agrandissant table de taille de police
+42 manque de mémoire en changant de police ou de taille
+43 manque de mémoire en changant de police ou de taille
+44 pas de police courant sur le mot %s
+45 pas de couleur courante sur le mot %s
+46 pas de langage courant sur le mot %s
+47 caractère %s omis (sans graphie dans police %s)
+48 pas de police courante en ce point
+49 noms de famille et de genre de police %s %s trop longs
+$set 38
+1 trop de vecteur d'encodage
+2 manque de mémoire en chargeant les vecteurs d'encodage
+3 impossible d'ouvrir le fichier de vecteur d'encodage %s
+4 trop de noms de caractère dans le fichier de vecteur d'encodage %s
+5 trop peu de noms de caractère dans le fichier de vecteur d'encodage %s
+$set 40
+1 impossible d'ouvrir le fichier temporaire de filtre %s
+2 %s
+3 filtre échoue (status non nul): %s
+4 impossible de lire le fichier temporaire de filtre %s
+$set 41
+1 erreur de syntaxe (%s manquant) dans fichier de base de données
+2 erreur de syntaxe dans fichier de base de données
+3 WriteClosure: %s
+4 WriteObject: %s
+5 nom de fichier %s%s trop long
+6 impossible d'ajouter au fichier de base de donnée %s
+7 appel système link(%s, %s) échoue
+8 appel système unlink(%s) échoue
+$set 42
+1 manque de mémoire en agrandissant la table des couleurs
+2 trop de couleurs (max=%d)
+3 %s ignoré (paramètre gauche illégal)
+4 %s ignoré (paramètre gauche vide)
+$set 43
+1 manque de mémoire en agrandissant la table des langages
+2 nom de langage %s utilisé deux fois (la première fois en %s)
+3 nom de fichier de césure attendu ici
+4 %s ignoré (paramètre gauche illégal)
diff --git a/man/man/lout.1 b/man/man/lout.1
new file mode 100644
index 0000000..3bfc2c9
--- /dev/null
+++ b/man/man/lout.1
@@ -0,0 +1,269 @@
+.\" Use default p.i., so commented out here and in .TP
+.\" .nr oi 16 \" Prevailing indentation for options' .TP request
+.\" .de Sp
+.\" .if n .sp
+.\" .if t .sp 0.4
+.\" ..
+.TH LOUT 1
+.SH NAME
+lout - prepare Lout document for printing
+.SH SYNOPSIS
+\fBlout\fR [ \fIoptions\fR ] \fIfile\fR...
+.SH DESCRIPTION
+Invoke the Basser Lout interpreter on the concatenation of the named
+files, producing a PostScript file on standard output suitable for
+printing on PostScript printers using
+.IR lpr (1).
+If no files are named, stdin is used instead. The special file name
+.RB ` \|\-\| '
+may be used to denote standard input. White space between flags
+and their associated option values is optional.
+.LP
+An optional
+.B .lt
+suffix may be used for Lout source and include files. When invoking
+files ending in this suffix the suffix may be omitted.
+.SH OPTIONS
+.SS Output
+.TP \" \n(oi
+.BI \-o " filename"
+Direct output to
+.I filename
+instead of to stdout.
+.TP
+.BI \-e " filename"
+Direct error messages to
+.I filename
+instead of to stderr.
+.TP
+.B \-a
+Use "\c
+.IR filename :\c
+.IR linenum :\c
+.IR colnum :\c
+.I message\c
+\&" alternative error message format (useful with Emacs compilation
+mode and other tools).
+.SS Output format
+.TP \" \n(oi
+.B \-EPS
+Produce output in the form of an EPS (Encapsulated PostScript) file,
+suitable for inclusion in another document. Useful with stand-alone
+illustrations.
+.TP
+.B \-p
+Produce plain text output instead of PostScript.
+.TP
+.B \-P
+Like
+.BR \-p ,
+but with a form-feed character between pages.
+.TP
+.B \-Z
+Produce Adobe Portable Document Format (PDF) output. This includes
+links, but the more advanced graphics packages of Lout are not supported.
+.TP
+.B \-PDF
+Synonym for
+.BR \-Z.
+.TP
+.B \-t
+Ignore texture-changing options; everything that would otherwise have
+been printed using a texture will be printed in solid colour.
+.SS Cross-reference database
+.TP \" \n(oi
+.B \-s
+Suppress all reading and writing of the cross reference database;
+other databases are not affected. Useful when many simple documents
+that don't do any cross referencing are stored in one directory.
+.TP
+.B \-l
+Use ASCII order when sorting index entries etc.; the default depends on
+the COLLATE compilation option (use
+.B \-V
+option to find out your default value).
+.TP
+.B \-L
+Use your locale's order when sorting index entries etc.; the default
+depends on the COLLATE compilation option (use
+.B \-V
+option to find out your default value).
+.SS Execution of filters
+.TP \" \n(oi
+.B \-S
+Safe execution: disable all calls to
+.IR system (3),
+instead echoing the commands that would have been executed. Although
+this makes the Lout run certainly safe, the PostScript output file may
+not be.
+.TP
+.B \-U
+Unsafe execution: allow calls to
+.IR system (3).
+This is usually the default behavior, but it is possible to make safe
+execution the default during installation (use
+.B \-V
+option to find out whether this was done or not), hence the need for
+this flag.
+.SS Changing document setup options
+.TP \" \n(oi
+.BI \-\- option { value }
+Set setup file
+.I option
+to
+.IR value ,
+overriding any value assigned to
+.I option
+in the setup file. For example,
+.B \-\-@PageType{Letter}
+will set the
+.B @PageType
+setup file option to
+.BR Letter .
+The value may be a sequence of words but not an arbitrary Lout object.
+If there are spaces you must ensure that it is passed to Lout as a
+single option; the usual way to do this is to enclose it in quotes.
+.SS Searching for files
+.TP \" \n(oi
+.BI \-i " filename"
+Search the directories of the include file path (see below) for
+.I filename
+or
+.IR filename .lt
+and include it. There may be multiple
+.B \-i
+options.
+.TP
+.BI \-I " dirname"
+Add
+.I dirname
+to the list of directories searched for
+.B @Include
+files and
+.B \-i
+option files.
+There may be multiple
+.B \-I
+options.
+.B @Include
+first searches the current directory, then searches the
+.B \-I
+directories in the order given, and finally searches the default
+include file directory (see below).
+.B @SysInclude
+and the
+.B \-i
+option omit the search of the current directory.
+.TP
+.BI \-C " dirname"
+Add
+.I dirname
+to the list of directories searched for Lout character mapping (\c
+.BR .LCM )
+files.
+There may be multiple
+.B \-C
+options; the directories are searched in the order given, and finally
+the default character mappings directory is searched (see below).
+.TP
+.BI -F " dirname"
+Add
+.I dirname
+to the list of directories searched for font metrics (formerly
+.BR .AFM )
+files. There may be multiple
+.B \-F
+options; the directories are searched in the order given, and finally
+the default font metrics directory is searched (see below).
+.TP
+.BI \-H " dirname"
+Add
+.I dirname
+to the list of directories searched for hyphenation patterns files,
+both unpacked
+.RB ( .lh )
+and packed
+.RB ( .lp ).
+There may be multiple
+.B \-H
+options; the directories are searched in the order given, and finally
+the default hyphenation directory is searched (see below).
+.TP
+.BI -D " dirname"
+Add
+.I dirname
+to the list of directories searched for Lout database files. There
+may be multiple
+.B \-D
+options.
+.B @Database
+searches the current directory, then the
+.B \-D
+directories in the order given, and finally searches the default
+databases directory (see below).
+.B @SysDatabase
+omits the search of the current directory.
+.SS Miscellaneous options
+.TP \" \n(oi
+.B \-r num
+Run Lout num times, producing output only on the last run. Useful for
+bringing cross references up to date quickly.
+.TP
+.B \-x
+Initializing run, not for ordinary use: read and check all font files
+mentioned in font definitions, read and check all hyphenation files
+mentioned in language definitions and build compressed versions, read
+and check all database files mentioned in database clauses and build
+index files.
+.TP
+.B \-u
+Print usage information on stderr and exit.
+.TP
+.B \-V
+Print version information on stderr and exit.
+.TP
+.B \-M
+Use less memory and run more slowly (the cross reference database index
+will be kept in a file rather than in memory).
+.TP
+.B \-w
+Show the total number of non-empty words printed in the output file.
+This includes words and numbers in page headers and footers; section
+numbers and other numbers; every punctuation character in a font
+different from its adjacent word; and every little fragment of every
+equation; so it will always somewhat overestimate the true number.
+.SH FILES AND ENVIRONMENT VARIABLE
+.LP
+.\" NB: be careful with tabs in the table below
+.nf
+.ta \w'Default character mappings dir.: 'u
+\&Default include file directory: \fILOUTLIB\fP/include
+\&Default databases directory: \fILOUTLIB\fP/data
+\&Default font metrics directory: \fILOUTLIB\fP/font
+\&Default hyphenation directory: \fILOUTLIB\fP/hyph
+\&Default character mappings dir.: \fILOUTLIB\fP/maps
+\&Default locales directory: \fILOUTLIB\fP/locale
+.fi
+.LP
+The default library directory, usually
+.BR /usr/local/lib/lout ,
+can be changed by setting environment variable
+.SB LOUTLIB
+to an alternative directory name.
+.SH SEE ALSO
+.LP
+.BR prg2lout (1),
+.BR lpr (1),
+.BR ghostview (1)
+.SH REFERENCES
+.LP
+Jeffrey H. Kingston,
+.I
+\(lq\&A User's Guide to the Lout Document Formatting System\(rq\c
+\&, and
+.I
+\(lq\&An Expert's Guide to the Lout Document Formatting System\(rq\c
+\&.
+.SH AUTHOR
+.LP
+Jeffrey H. Kingston
diff --git a/man/man/lout.txt b/man/man/lout.txt
new file mode 100644
index 0000000..d8d3c7c
--- /dev/null
+++ b/man/man/lout.txt
@@ -0,0 +1,196 @@
+LOUT(1) LOUT(1)
+
+
+
+NAME
+ lout - prepare Lout document for printing
+
+SYNOPSIS
+ lout [ options ] file...
+
+DESCRIPTION
+ Invoke the Basser Lout interpreter on the concatenation of
+ the named files, producing a PostScript file on standard
+ output suitable for printing on PostScript printers using
+ lpr(1). If no files are named, stdin is used instead.
+ The special file name `-' may be used to denote standard
+ input. White space between flags and their associated
+ option values is optional.
+
+ An optional .lt suffix may be used for Lout source and
+ include files. When invoking files ending in this suffix
+ the suffix may be omitted.
+
+OPTIONS
+ Output
+ -o filename
+ Direct output to filename instead of to stdout.
+
+ -e filename
+ Direct error messages to filename instead of to
+ stderr.
+
+ -a Use "filename:linenum:colnum:message" alternative
+ error message format (useful with Emacs compilation
+ mode and other tools).
+
+ Output format
+ -EPS Produce output in the form of an EPS (Encapsulated
+ PostScript) file, suitable for inclusion in another
+ document. Useful with stand-alone illustrations.
+
+ -p Produce plain text output instead of PostScript.
+
+ -P Like -p, but with a form-feed character between
+ pages.
+
+ -Z Produce Adobe Portable Document Format (PDF) out­
+ put. This includes links, but the more advanced
+ graphics packages of Lout are not supported.
+
+ -PDF Synonym for -Z.
+
+ -t Ignore texture-changing options; everything that
+ would otherwise have been printed using a texture
+ will be printed in solid colour.
+
+ Cross-reference database
+ -s Suppress all reading and writing of the cross ref­
+ erence database; other databases are not affected.
+ Useful when many simple documents that don't do any
+ cross referencing are stored in one directory.
+
+ -l Use ASCII order when sorting index entries etc.;
+ the default depends on the COLLATE compilation
+ option (use -V option to find out your default
+ value).
+
+ -L Use your locale's order when sorting index entries
+ etc.; the default depends on the COLLATE compila­
+ tion option (use -V option to find out your default
+ value).
+
+ Execution of filters
+ -S Safe execution: disable all calls to system(3),
+ instead echoing the commands that would have been
+ executed. Although this makes the Lout run cer­
+ tainly safe, the PostScript output file may not be.
+
+ -U Unsafe execution: allow calls to system(3). This
+ is usually the default behavior, but it is possible
+ to make safe execution the default during installa­
+ tion (use -V option to find out whether this was
+ done or not), hence the need for this flag.
+
+ Changing document setup options
+ --option{value}
+ Set setup file option to value, overriding any
+ value assigned to option in the setup file. For
+ example, --@PageType{Letter} will set the @PageType
+ setup file option to Letter. The value may be a
+ sequence of words but not an arbitrary Lout object.
+ If there are spaces you must ensure that it is
+ passed to Lout as a single option; the usual way to
+ do this is to enclose it in quotes.
+
+ Searching for files
+ -i filename
+ Search the directories of the include file path
+ (see below) for filename or filename.lt and include
+ it. There may be multiple -i options.
+
+ -I dirname
+ Add dirname to the list of directories searched for
+ @Include files and -i option files. There may be
+ multiple -I options. @Include first searches the
+ current directory, then searches the -I directories
+ in the order given, and finally searches the
+ default include file directory (see below). @Sys­
+ Include and the -i option omit the search of the
+ current directory.
+
+ -C dirname
+ Add dirname to the list of directories searched for
+ Lout character mapping (.LCM) files. There may be
+ multiple -C options; the directories are searched
+ in the order given, and finally the default charac­
+ ter mappings directory is searched (see below).
+
+ -F dirname
+ Add dirname to the list of directories searched for
+ font metrics (formerly .AFM) files. There may be
+ multiple -F options; the directories are searched
+ in the order given, and finally the default font
+ metrics directory is searched (see below).
+
+ -H dirname
+ Add dirname to the list of directories searched for
+ hyphenation patterns files, both unpacked (.lh) and
+ packed (.lp). There may be multiple -H options;
+ the directories are searched in the order given,
+ and finally the default hyphenation directory is
+ searched (see below).
+
+ -D dirname
+ Add dirname to the list of directories searched for
+ Lout database files. There may be multiple -D
+ options. @Database searches the current directory,
+ then the -D directories in the order given, and
+ finally searches the default databases directory
+ (see below). @SysDatabase omits the search of the
+ current directory.
+
+ Miscellaneous options
+ -r num Run Lout num times, producing output only on the
+ last run. Useful for bringing cross references up
+ to date quickly.
+
+ -x Initializing run, not for ordinary use: read and
+ check all font files mentioned in font definitions,
+ read and check all hyphenation files mentioned in
+ language definitions and build compressed versions,
+ read and check all database files mentioned in
+ database clauses and build index files.
+
+ -u Print usage information on stderr and exit.
+
+ -V Print version information on stderr and exit.
+
+ -M Use less memory and run more slowly (the cross ref­
+ erence database index will be kept in a file rather
+ than in memory).
+
+ -w Show the total number of non-empty words printed in
+ the output file. This includes words and numbers
+ in page headers and footers; section numbers and
+ other numbers; every punctuation character in a
+ font different from its adjacent word; and every
+ little fragment of every equation; so it will
+ always somewhat overestimate the true number.
+
+FILES AND ENVIRONMENT VARIABLE
+ Default include file directory: LOUTLIB/include
+ Default databases directory: LOUTLIB/data
+ Default font metrics directory: LOUTLIB/font
+ Default hyphenation directory: LOUTLIB/hyph
+ Default character mappings dir.: LOUTLIB/maps
+ Default locales directory: LOUTLIB/locale
+
+ The default library directory, usually
+ /usr/local/lib/lout, can be changed by setting environment
+ variable LOUTLIB to an alternative directory name.
+
+SEE ALSO
+ prg2lout(1), lpr(1), ghostview(1)
+
+REFERENCES
+ Jeffrey H. Kingston, "A User's Guide to the Lout Document
+ Formatting System", and "An Expert's Guide to the Lout
+ Document Formatting System".
+
+AUTHOR
+ Jeffrey H. Kingston
+
+
+
+ LOUT(1)
diff --git a/man/man/prg2lout.1 b/man/man/prg2lout.1
new file mode 100644
index 0000000..2598cae
--- /dev/null
+++ b/man/man/prg2lout.1
@@ -0,0 +1,160 @@
+.TH PRG2LOUT 1
+.SH NAME
+prg2lout - convert computer program text into Lout
+.SH SYNOPSIS
+\fBprg2lout\fR -l \fIlanguage\fR [ \fIoptions\fR ] \fIfiles\fR...
+.SH DESCRIPTION
+Reformat computer program text for input to the Lout document formatting
+system, taking care of comments, character strings, tab characters, etc.
+.LP
+.B prg2lout
+reads the named program source files and produces output
+suitable for input to
+.BR "lout -s" .
+Thus,
+.LP
+.RS
+.B "prg2lout -l C foo.c | lout -s | lpr"
+.RE
+.LP
+will print the C program
+.B foo.c
+on a PostScript printer. Each file will start on a new page, preceded
+by its name in bold.
+.SH OPTIONS
+.TP
+.B \-llanguage
+(Compulsory.) Files are written in this programmming language. Run
+\fIprg2lout -u\fR to see the list of languages available.
+.TP
+.B \-pfixed
+Use a fixed width font (the default for C).
+.TP
+.B \-pvarying
+Use a varying-width italic font with non-italic bold keywords (the
+default for Eiffel).
+.TP
+.B \-psymbol
+Use a varying-width italic font with mathematical symbols and
+non-italic bold keywords.
+.TP
+.B \-n
+Do not print the file name before each source file.
+.TP
+.BI \-f " font"
+Select a font family.
+The default is
+.B \-fCourier
+for
+.BR \-pfixed ,
+and
+.B \-fTimes
+for
+.B \-pvarying
+and
+.BR \-psymbol .
+.TP
+.BI \-s " size"
+Select a Lout font size. The default is
+.B -s9p
+(meaning 9 points) for
+.BR \-pfixed ,
+and
+.B \-s10p
+for
+.B \-pvarying
+and
+.BR \-psymbol .
+These work well with 80-character-wide programs.
+.TP
+.BI \-v " vsize"
+Select a Lout vertical inter-line gap. The default is
+.B -v1.1fx
+meaning 1.1 times the font size measured from baseline to baseline.
+.TP
+.BI \-b " num"
+Select a blank line scale factor. The default is
+.B -b1.0
+meaning no scaling. A good alternative is 0.6.
+.TP
+.BI \-t " num"
+Set the tab interval to
+.I num
+characters (default is
+.BR \-t8 ).
+.TP
+.BI \-T " width"
+Without this option,
+.B prg2lout
+simulates tabs with spaces. With this option,
+.B prg2lout
+simulates tabs with Lout tabulation operators;
+.I width
+is the width of one tab interval in the final print, measured in Lout
+units. This guarantees alignment of characters following tabs even
+with varying-width fonts, provided
+.I width
+is sufficiently large. For example,
+.B -T0.5i
+produces half-inch tab intervals.
+.TP
+.BI \-L " number"
+Attach line numbers to the program text, beginning with
+.I number
+or 1 if number is not given. You may need to give the 1 anyway to
+prevent .I prg2lout from taking a following file name as a number.
+.TP
+.BI \-N
+Do not print line numbers on blank lines.
+.TP
+.BI \-M
+Like \-N but do not assign line numbers to blank lines.
+.TP
+.BI \-S " filename"
+Use
+.I filename
+as the setup file instead of the system default setup file. The setup
+file determines the value of all formatting options not given to
+.I prg2lout
+as command line arguments.
+.TP
+.B \-u
+Print usage information on stderr, including available languages, and exit.
+.TP
+.B \-V
+Print version information on stderr and exit.
+.SS Raw Mode
+There is a \(lq\&raw mode\(rq usage of
+.B prg2lout
+invoked by a
+.B -r
+flag (must be the first argument). This converts one program file into
+Lout-readable source without any heading or trailing information.
+Synopsis:
+.LP
+.RS
+.B prg2lout
+.B \-r
+.BI \-i \ infile
+.BI \-o \ out
+.BI \-e \ err
+.BI \-t \ num
+.BI \-T \ width
+.RE
+.LP
+Users should never need this mode; it is invoked automatically
+from within Lout by symbols supplied with the standard configuration
+(see reference).
+.SH SEE ALSO
+.BR lout (1),
+.BR lpr (1),
+.BR ghostview (1).
+.SH REFERENCES
+.LP
+Jeffrey H. Kingston,
+.I
+\(lq\&A User's Guide to the Lout Document Formatting System\(rq\c
+\&, Chapter 11.
+.SH AUTHOR
+.LP
+Jeffrey H. Kingston
diff --git a/man/man/prg2lout.txt b/man/man/prg2lout.txt
new file mode 100644
index 0000000..0ed3d11
--- /dev/null
+++ b/man/man/prg2lout.txt
@@ -0,0 +1,116 @@
+
+
+NAME
+ prg2lout - convert computer program text into Lout
+
+SYNOPSIS
+ prg2lout -l language [ options ] files...
+
+DESCRIPTION
+ Reformat computer program text for input to the Lout docu-
+ ment formatting system, taking care of comments, character
+ strings, tab characters, etc.
+
+ prg2lout reads the named program source files and produces
+ output suitable for input to lout -s. Thus,
+
+ prg2lout -l C foo.c | lout -s | lpr
+
+ will print the C program foo.c on a PostScript printer.
+ Each file will start on a new page, preceded by its name in
+ bold.
+
+OPTIONS
+ -llanguage
+ (Compulsory.) Files are written in this programmming
+ language. Run prg2lout -u to see the list of languages
+ available.
+
+ -pfixed
+ Use a fixed width font (the default for C).
+
+ -pvarying
+ Use a varying-width italic font with non-italic bold
+ keywords (the default for Eiffel).
+
+ -psymbol
+ Use a varying-width italic font with mathematical sym-
+ bols and non-italic bold keywords.
+
+ -n Do not print the file name before each source file.
+
+ -f font
+ Select a font family. The default is -fCourier for
+ -pfixed, and -fTimes for -pvarying and -psymbol.
+
+ -s size
+ Select a Lout font size. The default is -s9p (meaning
+ 9 points) for -pfixed, and -s10p for -pvarying and
+ -psymbol. These work well with 80-character-wide pro-
+ grams.
+
+ -v vsize
+ Select a Lout vertical inter-line gap. The default is
+ -v1.1fx meaning 1.1 times the font size measured from
+ baseline to baseline.
+
+ -b num
+ Select a blank line scale factor. The default is -b1.0
+ meaning no scaling. A good alternative is 0.6.
+
+ -t num
+ Set the tab interval to num characters (default is
+ -t8).
+
+ -T width
+ Without this option, prg2lout simulates tabs with
+ spaces. With this option, prg2lout simulates tabs with
+ Lout tabulation operators; width is the width of one
+ tab interval in the final print, measured in Lout
+ units. This guarantees alignment of characters follow-
+ ing tabs even with varying-width fonts, provided width
+ is sufficiently large. For example, -T0.5i produces
+ half-inch tab intervals.
+
+ -L number
+ Attach line numbers to the program text, beginning with
+ number or 1 if number is not given. You may need to
+ give the 1 anyway to prevent prg2lout from taking a
+ following file name as a number.
+
+ -N Do not print line numbers on blank lines.
+
+ -M Like -N but do not assign line numbers to blank lines.
+
+ -S filename
+ Use filename as the setup file instead of the system
+ default setup file. The setup file determines the
+ value of all formatting options not given to prg2lout
+ as command line arguments.
+
+ -u Print usage information on stderr, including available
+ languages, and exit.
+
+ -V Print version information on stderr and exit.
+
+ Raw Mode
+ There is a raw mode usage of prg2lout invoked by a -r flag
+ (must be the first argument). This converts one program
+ file into Lout-readable source without any heading or trail-
+ ing information. Synopsis:
+
+ prg2lout -r -i infile -o out -e err -t num -T width
+
+ Users should never need this mode; it is invoked automati-
+ cally from within Lout by symbols supplied with the standard
+ configuration (see reference).
+
+SEE ALSO
+ lout(1), lpr(1), ghostview(1).
+
+REFERENCES
+ Jeffrey H. Kingston, A User's Guide to the Lout Document
+ Formatting System, Chapter 11.
+
+AUTHOR
+ Jeffrey H. Kingston
diff --git a/maps/maps/00README b/maps/maps/00README
new file mode 100644
index 0000000..1bfc83e
--- /dev/null
+++ b/maps/maps/00README
@@ -0,0 +1,107 @@
+Directory lout/maps - Lout Character Mapping (LCM) files
+
+Jeffrey H. Kingston
+14 March 1996
+
+This directory contains Lout Character Mapping (LCM) files, which define
+the names and codes of all characters known to Lout, plus various mappings.
+Lout works with all characters via their codes, so it is not possible to
+have an unencoded character.
+
+LCM files replace the CEV and CMA files of previous versions of Lout. The
+format has changed but the information in the files is consistent with the
+old CEV and CMA files (no changes to the encodings, etc.). The format
+change was needed to implement kerning of accented characters.
+
+LCM files may contain blank lines and comment lines (which begin with #).
+Each of the remaining lines defines one character, and must contain the
+following entries, in order, separated by white space:
+
+(1) Decimal character code, which must be unique in this file. These codes
+ must appear sorted into increasing order. Codes not mentioned in this
+ file have no associated character.
+
+(2) Octal value of the decimal code, written in ASCII.
+
+(3) Character name. Width and height information for a character with this
+ name must exist in every PostScript font metrics file that shares a Lout
+ fontdef with this file, but the character name need not be encoded in the
+ font metrics file, nor need any character code there agree with the
+ character code here. Lout will ensure (by including encoding vectors
+ in its output) that the character codes defined in this file apply, not
+ the codes in font metrics files.
+
+ The character name may be -none-, and this is equivalent to omitting the
+ line. There must be no subsequent entries on the line in this case.
+
+ If the character has entry UA below, and there is no kerning information
+ for the character in the font metrics file, Lout will apply the kerning
+ information for the corresponding unaccented character to the accented
+ character. This is always a good thing to do.
+
+ If the character has entry UA below, and there is no entry in some
+ font metrics file for the character, then (contrary to the above)
+ instead of complaining that the character is missing from the font
+ metrics file, Lout will silently apply the size information for
+ the corresponding unaccented character to the accented character.
+ Lout will still print the character code for the accented character,
+ however. This is always good horizontally but occasionally not
+ enough space is allowed for the character vertically.
+
+(4) Zero or more functions, each beginning with a string identifying which
+ function it is, and followed by function-dependent information ending
+ in a semicolon. Functions may appear in any order; omitting a function
+ is fine and means that the function does not apply to that character.
+ At present the functions are
+
+ UC <charname>; Corresponding upper-case character (must be the
+ name of a character appearing elsewhere in the
+ same file). This entry is used by Lout when
+ producing small capitals.
+
+ LC <charname>; Corresponding lower-case character (must be the
+ name of a character appearing elsewhere in the
+ same file). This entry is not currently used.
+
+ UA <charname>; Corresponding unaccented character (must be the
+ name of a character appearing elsewhere in the
+ same file). This entry is used by Lout to
+ guess size and kerning information for accented
+ characters (when this information is missing from
+ some font metrics file) by using the size and
+ kerning information of the corresponding unaccented
+ character.
+
+ AC <charname>; Name of the accent character (acute, ogonek, etc.)
+ that forms the accent of this character (must be the
+ name of a character appearing elsewhere in the
+ same file). This entry is not currently used.
+
+The particular LCM files in this directory are:
+
+ Std.LCM The StandardEncoding encoding vector, exactly as on page
+ 598 of the PostScript LRM 2nd Ed., plus the mappings.
+
+ Latin1.LCM The ISOLatin1Encoding encoding vector, exactly as on page
+ 599 of the PostScript LRM 2nd Ed., plus the mappings.
+ This is not usable with Lout as is because the ligature
+ characters fi and fl have no encoding, and because the
+ standard packages use characters not in this encoding.
+
+ LtLatin1.LCM Equal to Latin1.LCM augmented with some other characters
+ used by Lout and its standard packages. See the header
+ in the file for the details.
+
+ LtLatin2.LCM Similar to LtLatin1.LCM but uses the Latin2 character set.
+
+ koi8r.LCM For Russian (obsolete)
+ KOI8-R.LCM For Russian
+ LtKOI8.LCM For Russian
+
+ Symb.LCM The Symbol encoding vector, exactly as on page 606 of the
+ PostScript LRM 2nd Ed., plus mappings.
+
+ Ding.LCM The Zapf Dingbats encoding vector, taken from the Zapf
+ Dingbats font metrics file, plus mappings.
+
+ null.LCM Useful skeleton file for building LCM files.
diff --git a/maps/maps/Ding.LCM b/maps/maps/Ding.LCM
new file mode 100644
index 0000000..4160581
--- /dev/null
+++ b/maps/maps/Ding.LCM
@@ -0,0 +1,275 @@
+###############################################################
+# #
+# Ding.LCM #
+# #
+# LCM (Lout Character Mapping) file for Dingbats #
+# Taken from the Dingbats metrics file. #
+# #
+# Jeffrey H. Kingston #
+# 14 March 1996 #
+# #
+# This file has been placed in the public domain by its #
+# author. #
+# #
+# Dec- Octal Character #
+# imal code name #
+# code #
+# #
+###############################################################
+
+000 000 -none-
+001 001 -none-
+002 002 -none-
+003 003 -none-
+004 004 -none-
+005 005 -none-
+006 006 -none-
+007 007 -none-
+008 010 -none-
+009 011 -none-
+010 012 -none-
+011 013 -none-
+012 014 -none-
+013 015 -none-
+014 016 -none-
+015 017 -none-
+016 020 -none-
+017 021 -none-
+018 022 -none-
+019 023 -none-
+020 024 -none-
+021 025 -none-
+022 026 -none-
+023 027 -none-
+024 030 -none-
+025 031 -none-
+026 032 -none-
+027 033 -none-
+028 034 -none-
+029 035 -none-
+030 036 -none-
+031 037 -none-
+032 040 space
+033 041 a1
+034 042 a2
+035 043 a202
+036 044 a3
+037 045 a4
+038 046 a5
+039 047 a119
+040 050 a118
+041 051 a117
+042 052 a11
+043 053 a12
+044 054 a13
+045 055 a14
+046 056 a15
+047 057 a16
+048 060 a105
+049 061 a17
+050 062 a18
+051 063 a19
+052 064 a20
+053 065 a21
+054 066 a22
+055 067 a23
+056 070 a24
+057 071 a25
+058 072 a26
+059 073 a27
+060 074 a28
+061 075 a6
+062 076 a7
+063 077 a8
+064 100 a9
+065 101 a10
+066 102 a29
+067 103 a30
+068 104 a31
+069 105 a32
+070 106 a33
+071 107 a34
+072 110 a35
+073 111 a36
+074 112 a37
+075 113 a38
+076 114 a39
+077 115 a40
+078 116 a41
+079 117 a42
+080 120 a43
+081 121 a44
+082 122 a45
+083 123 a46
+084 124 a47
+085 125 a48
+086 126 a49
+087 127 a50
+088 130 a51
+089 131 a52
+090 132 a53
+091 133 a54
+092 134 a55
+093 135 a56
+094 136 a57
+095 137 a58
+096 140 a59
+097 141 a60
+098 142 a61
+099 143 a62
+100 144 a63
+101 145 a64
+102 146 a65
+103 147 a66
+104 150 a67
+105 151 a68
+106 152 a69
+107 153 a70
+108 154 a71
+109 155 a72
+110 156 a73
+111 157 a74
+112 160 a203
+113 161 a75
+114 162 a204
+115 163 a76
+116 164 a77
+117 165 a78
+118 166 a79
+119 167 a81
+120 170 a82
+121 171 a83
+122 172 a84
+123 173 a97
+124 174 a98
+125 175 a99
+126 176 a100
+127 177 -none-
+128 200 -none-
+129 201 -none-
+130 202 -none-
+131 203 -none-
+132 204 -none-
+133 205 -none-
+134 206 -none-
+135 207 -none-
+136 210 -none-
+137 211 -none-
+138 212 -none-
+139 213 -none-
+140 214 -none-
+141 215 -none-
+142 216 -none-
+143 217 -none-
+144 220 -none-
+145 221 -none-
+146 222 -none-
+147 223 -none-
+148 224 -none-
+149 225 -none-
+150 226 -none-
+151 227 -none-
+152 230 -none-
+153 231 -none-
+154 232 -none-
+155 233 -none-
+156 234 -none-
+157 235 -none-
+158 236 -none-
+159 237 -none-
+160 240 -none-
+161 241 a101
+162 242 a102
+163 243 a103
+164 244 a104
+165 245 a106
+166 246 a107
+167 247 a108
+168 250 a112
+169 251 a111
+170 252 a110
+171 253 a109
+172 254 a120
+173 255 a121
+174 256 a122
+175 257 a123
+176 260 a124
+177 261 a125
+178 262 a126
+179 263 a127
+180 264 a128
+181 265 a129
+182 266 a130
+183 267 a131
+184 270 a132
+185 271 a133
+186 272 a134
+187 273 a135
+188 274 a136
+189 275 a137
+190 276 a138
+191 277 a139
+192 300 a140
+193 301 a141
+194 302 a142
+195 303 a143
+196 304 a144
+197 305 a145
+198 306 a146
+199 307 a147
+200 310 a148
+201 311 a149
+202 312 a150
+203 313 a151
+204 314 a152
+205 315 a153
+206 316 a154
+207 317 a155
+208 320 a156
+209 321 a157
+210 322 a158
+211 323 a159
+212 324 a160
+213 325 a161
+214 326 a163
+215 327 a164
+216 330 a196
+217 331 a165
+218 332 a192
+219 333 a166
+220 334 a167
+221 335 a168
+222 336 a169
+223 337 a170
+224 340 a171
+225 341 a172
+226 342 a173
+227 343 a162
+228 344 a174
+229 345 a175
+230 346 a176
+231 347 a177
+232 350 a178
+233 351 a179
+234 352 a193
+235 353 a180
+236 354 a199
+237 355 a181
+238 356 a200
+239 357 a182
+240 360 -none-
+241 361 a201
+242 362 a183
+243 363 a184
+244 364 a197
+245 365 a185
+246 366 a194
+247 367 a198
+248 370 a186
+249 371 a195
+250 372 a187
+251 373 a188
+252 374 a189
+253 375 a190
+254 376 a191
+255 377 -none-
diff --git a/maps/maps/KOI8-R.LCM b/maps/maps/KOI8-R.LCM
new file mode 100644
index 0000000..00288d6
--- /dev/null
+++ b/maps/maps/KOI8-R.LCM
@@ -0,0 +1,288 @@
+###############################################################
+# #
+# KOI8-R.LCM #
+# #
+# LCM (Lout Character Mapping) file for RFC1489 KOI8-R. #
+# #
+# This is verbatim KOI8-R mapping primary useful for #
+# monospaced fonts like Courier intended for screenshots. #
+# All the line-drawing characters are mapped; additional #
+# typographic niceties (e.g. guillemot) are stuffed into C0. #
+# #
+# RFC1489 encodes U+2219 BULLET OPERATOR at 149 and that #
+# maps to "periodcentered" glyph, but "periodcentered" is #
+# also a glyph for U+00B7 MIDDLE DOT that RFC1489 has #
+# encoded at 158. I think this is a bug in RFC1489. So I #
+# map "bullet" glyph (for U+2022 BULLET) at 149 instead. #
+# #
+# Valeriy Ushakov <uwe@ptc.spb.ru> #
+# 24 December 2000 #
+# #
+# This file has been placed in the public domain by its #
+# author. #
+# #
+# Dec- Octal Character Functions ... #
+# imal code name #
+# code #
+# #
+###############################################################
+
+000 000 -none-
+001 001 ellipsis
+002 002 quotesinglbase
+003 003 quoteleft
+004 004 quoteright
+005 005 quotedblbase
+006 006 quotedblleft
+007 007 quotedblright
+008 010 guilsinglleft
+009 011 guilsinglright
+010 012 -none-
+011 013 guillemotleft
+012 014 guillemotright
+013 015 -none-
+014 016 endash
+015 017 emdash
+016 020 dagger
+017 021 daggerdbl
+018 022 perthousand
+019 023 registered
+020 024 trademark
+021 025 paragraph
+022 026 section
+023 027 afii61352
+024 030 florin
+025 031 currency
+026 032 logicalnot
+027 033 minus
+028 034 plusminus
+029 035 notequal
+030 036 brokenbar
+031 037 infinity
+
+032 040 space
+033 041 exclam
+034 042 quotedbl
+035 043 numbersign
+036 044 dollar
+037 045 percent
+038 046 ampersand
+039 047 quotesingle
+040 050 parenleft
+041 051 parenright
+042 052 asterisk
+043 053 plus
+044 054 comma
+045 055 hyphen
+046 056 period
+047 057 slash
+048 060 zero
+049 061 one
+050 062 two
+051 063 three
+052 064 four
+053 065 five
+054 066 six
+055 067 seven
+056 070 eight
+057 071 nine
+058 072 colon
+059 073 semicolon
+060 074 less
+061 075 equal
+062 076 greater
+063 077 question
+064 100 at
+065 101 A LC a;
+066 102 B LC b;
+067 103 C LC c;
+068 104 D LC d;
+069 105 E LC e;
+070 106 F LC f;
+071 107 G LC g;
+072 110 H LC h;
+073 111 I LC i;
+074 112 J LC j;
+075 113 K LC k;
+076 114 L LC l;
+077 115 M LC m;
+078 116 N LC n;
+079 117 O LC o;
+080 120 P LC p;
+081 121 Q LC q;
+082 122 R LC r;
+083 123 S LC s;
+084 124 T LC t;
+085 125 U LC u;
+086 126 V LC v;
+087 127 W LC w;
+088 130 X LC x;
+089 131 Y LC y;
+090 132 Z LC z;
+091 133 bracketleft
+092 134 backslash
+093 135 bracketright
+094 136 asciicircum
+095 137 underscore
+096 140 grave
+097 141 a UC A;
+098 142 b UC B;
+099 143 c UC C;
+100 144 d UC D;
+101 145 e UC E;
+102 146 f UC F;
+103 147 g UC G;
+104 150 h UC H;
+105 151 i UC I;
+106 152 j UC J;
+107 153 k UC K;
+108 154 l UC L;
+109 155 m UC M;
+110 156 n UC N;
+111 157 o UC O;
+112 160 p UC P;
+113 161 q UC Q;
+114 162 r UC R;
+115 163 s UC S;
+116 164 t UC T;
+117 165 u UC U;
+118 166 v UC V;
+119 167 w UC W;
+120 170 x UC X;
+121 171 y UC Y;
+122 172 z UC Z;
+123 173 braceleft
+124 174 bar
+125 175 braceright
+126 176 asciitilde
+127 177 -none-
+
+128 200 SF100000
+129 201 SF110000
+130 202 SF010000
+131 203 SF030000
+132 204 SF020000
+133 205 SF040000
+134 206 SF080000
+135 207 SF090000
+136 210 SF060000
+137 211 SF070000
+138 212 SF050000
+139 213 upblock
+140 214 dnblock
+141 215 block
+142 216 lfblock
+143 217 rtblock
+144 220 ltshade
+145 221 shade
+146 222 dkshade
+147 223 integraltp
+148 224 filledbox
+149 225 bullet
+150 226 radical
+151 227 approxequal
+152 230 lessequal
+153 231 greaterequal
+154 232 space
+155 233 integralbt
+156 234 degree
+157 235 twosuperior
+158 236 periodcentered
+159 237 divide
+
+160 240 SF430000
+161 241 SF240000
+162 242 SF510000
+163 243 afii10071 UC afii10023;
+164 244 SF520000
+165 245 SF390000
+166 246 SF220000
+167 247 SF210000
+168 250 SF250000
+169 251 SF500000
+170 252 SF490000
+171 253 SF380000
+172 254 SF280000
+173 255 SF270000
+174 256 SF260000
+175 257 SF360000
+176 260 SF370000
+177 261 SF420000
+178 262 SF190000
+179 263 afii10023 LC afii10071;
+180 264 SF200000
+181 265 SF230000
+182 266 SF470000
+183 267 SF480000
+184 270 SF410000
+185 271 SF450000
+186 272 SF460000
+187 273 SF400000
+188 274 SF540000
+189 275 SF530000
+190 276 SF440000
+191 277 copyright
+192 300 afii10096 UC afii10048;
+193 301 afii10065 UC afii10017;
+194 302 afii10066 UC afii10018;
+195 303 afii10088 UC afii10040;
+196 304 afii10069 UC afii10021;
+197 305 afii10070 UC afii10022;
+198 306 afii10086 UC afii10038;
+199 307 afii10068 UC afii10020;
+200 310 afii10087 UC afii10039;
+201 311 afii10074 UC afii10026;
+202 312 afii10075 UC afii10027;
+203 313 afii10076 UC afii10028;
+204 314 afii10077 UC afii10029;
+205 315 afii10078 UC afii10030;
+206 316 afii10079 UC afii10031;
+207 317 afii10080 UC afii10032;
+208 320 afii10081 UC afii10033;
+209 321 afii10097 UC afii10049;
+210 322 afii10082 UC afii10034;
+211 323 afii10083 UC afii10035;
+212 324 afii10084 UC afii10036;
+213 325 afii10085 UC afii10037;
+214 326 afii10072 UC afii10024;
+215 327 afii10067 UC afii10019;
+216 330 afii10094 UC afii10046;
+217 331 afii10093 UC afii10045;
+218 332 afii10073 UC afii10025;
+219 333 afii10090 UC afii10042;
+220 334 afii10095 UC afii10047;
+221 335 afii10091 UC afii10043;
+222 336 afii10089 UC afii10041;
+223 337 afii10092 UC afii10044;
+224 340 afii10048 LC afii10096;
+225 341 afii10017 LC afii10065;
+226 342 afii10018 LC afii10066;
+227 343 afii10040 LC afii10088;
+228 344 afii10021 LC afii10069;
+229 345 afii10022 LC afii10070;
+230 346 afii10038 LC afii10086;
+231 347 afii10020 LC afii10068;
+232 350 afii10039 LC afii10087;
+233 351 afii10026 LC afii10074;
+234 352 afii10027 LC afii10075;
+235 353 afii10028 LC afii10076;
+236 354 afii10029 LC afii10077;
+237 355 afii10030 LC afii10078;
+238 356 afii10031 LC afii10079;
+239 357 afii10032 LC afii10080;
+240 360 afii10033 LC afii10081;
+241 361 afii10049 LC afii10097;
+242 362 afii10034 LC afii10082;
+243 363 afii10035 LC afii10083;
+244 364 afii10036 LC afii10084;
+245 365 afii10037 LC afii10085;
+246 366 afii10024 LC afii10072;
+247 367 afii10019 LC afii10067;
+248 370 afii10046 LC afii10094;
+249 371 afii10045 LC afii10093;
+250 372 afii10025 LC afii10073;
+251 373 afii10042 LC afii10090;
+252 374 afii10047 LC afii10095;
+253 375 afii10043 LC afii10091;
+254 376 afii10041 LC afii10089;
+255 377 afii10044 LC afii10092;
diff --git a/maps/maps/Latin1.LCM b/maps/maps/Latin1.LCM
new file mode 100644
index 0000000..9809859
--- /dev/null
+++ b/maps/maps/Latin1.LCM
@@ -0,0 +1,276 @@
+###############################################################
+# #
+# Latin1.LCM #
+# #
+# LCM (Lout Character Mapping) file for Adobe Latin-1 #
+# Encoding (PostScript Language Reference Manual, 2nd Ed., #
+# page 599). #
+# #
+# Jeffrey H. Kingston #
+# 14 March 1996 #
+# #
+# This file has been placed in the public domain by its #
+# author. #
+# #
+# Dec- Octal Character Functions ... #
+# imal code name #
+# code #
+# #
+###############################################################
+
+000 000 -none-
+001 001 -none-
+002 002 -none-
+003 003 -none-
+004 004 -none-
+005 005 -none-
+006 006 -none-
+007 007 -none-
+008 010 -none-
+009 011 -none-
+010 012 -none-
+011 013 -none-
+012 014 -none-
+013 015 -none-
+014 016 -none-
+015 017 -none-
+016 020 -none-
+017 021 -none-
+018 022 -none-
+019 023 -none-
+020 024 -none-
+021 025 -none-
+022 026 -none-
+023 027 -none-
+024 030 -none-
+025 031 -none-
+026 032 -none-
+027 033 -none-
+028 034 -none-
+029 035 -none-
+030 036 -none-
+031 037 -none-
+032 040 space
+033 041 exclam
+034 042 quotedbl
+035 043 numbersign
+036 044 dollar
+037 045 percent
+038 046 ampersand
+039 047 quoteright
+040 050 parenleft
+041 051 parenright
+042 052 asterisk
+043 053 plus
+044 054 comma
+045 055 hyphen
+046 056 period
+047 057 slash
+048 060 zero
+049 061 one
+050 062 two
+051 063 three
+052 064 four
+053 065 five
+054 066 six
+055 067 seven
+056 070 eight
+057 071 nine
+058 072 colon
+059 073 semicolon
+060 074 less
+061 075 equal
+062 076 greater
+063 077 question
+064 100 at
+065 101 A LC a;
+066 102 B LC b;
+067 103 C LC c;
+068 104 D LC d;
+069 105 E LC e;
+070 106 F LC f;
+071 107 G LC g;
+072 110 H LC h;
+073 111 I LC i;
+074 112 J LC j;
+075 113 K LC k;
+076 114 L LC l;
+077 115 M LC m;
+078 116 N LC n;
+079 117 O LC o;
+080 120 P LC p;
+081 121 Q LC q;
+082 122 R LC r;
+083 123 S LC s;
+084 124 T LC t;
+085 125 U LC u;
+086 126 V LC v;
+087 127 W LC w;
+088 130 X LC x;
+089 131 Y LC y;
+090 132 Z LC z;
+091 133 bracketleft
+092 134 backslash
+093 135 bracketright
+094 136 asciicircum
+095 137 underscore
+096 140 quoteleft
+097 141 a UC A;
+098 142 b UC B;
+099 143 c UC C;
+100 144 d UC D;
+101 145 e UC E;
+102 146 f UC F;
+103 147 g UC G;
+104 150 h UC H;
+105 151 i UC I;
+106 152 j UC J;
+107 153 k UC K;
+108 154 l UC L;
+109 155 m UC M;
+110 156 n UC N;
+111 157 o UC O;
+112 160 p UC P;
+113 161 q UC Q;
+114 162 r UC R;
+115 163 s UC S;
+116 164 t UC T;
+117 165 u UC U;
+118 166 v UC V;
+119 167 w UC W;
+120 170 x UC X;
+121 171 y UC Y;
+122 172 z UC Z;
+123 173 braceleft
+124 174 bar
+125 175 braceright
+126 176 asciitilde
+127 177 -none-
+128 200 -none-
+129 201 -none-
+130 202 -none-
+131 203 -none-
+132 204 -none-
+133 205 -none-
+134 206 -none-
+135 207 -none-
+136 210 -none-
+137 211 -none-
+138 212 -none-
+139 213 -none-
+140 214 -none-
+141 215 -none-
+142 216 -none-
+143 217 -none-
+144 220 dotlessi
+145 221 grave
+146 222 acute
+147 223 circumflex
+148 224 tilde
+149 225 macron
+150 226 breve
+151 227 dotaccent
+152 230 dieresis
+153 231 -none-
+154 232 ring
+155 233 cedilla
+156 234 -none-
+157 235 hungarumlaut
+158 236 ogonek
+159 237 caron
+160 240 space
+161 241 exclamdown
+162 242 cent
+163 243 sterling
+164 244 currency
+165 245 yen
+166 246 brokenbar
+167 247 section
+168 250 dieresis
+169 251 copyright
+170 252 ordfeminine
+171 253 guillemotleft
+172 254 logicalnot
+173 255 hyphen
+174 256 registered
+175 257 macron
+176 260 degree
+177 261 plusminus
+178 262 twosuperior
+179 263 threesuperior
+180 264 acute
+181 265 mu
+182 266 paragraph
+183 267 periodcentered
+184 270 cedilla
+185 271 onesuperior
+186 272 ordmasculine
+187 273 guillemotright
+188 274 onequarter
+189 275 onehalf
+190 276 threequarters
+191 277 questiondown
+192 300 Agrave LC agrave; UA A; AC grave;
+193 301 Aacute LC aacute; UA A; AC acute;
+194 302 Acircumflex LC acircumflex; UA A; AC circumflex;
+195 303 Atilde LC atilde; UA A; AC tilde;
+196 304 Adieresis LC adieresis; UA A; AC dieresis;
+197 305 Aring LC aring; UA A; AC ring;
+198 306 AE LC ae;
+199 307 Ccedilla LC ccedilla; UA C; AC cedilla;
+200 310 Egrave LC egrave; UA E; AC grave;
+201 311 Eacute LC eacute; UA E; AC acute;
+202 312 Ecircumflex LC ecircumflex; UA E; AC circumflex;
+203 313 Edieresis LC edieresis; UA E; AC dieresis;
+204 314 Igrave LC igrave; UA I; AC grave;
+205 315 Iacute LC iacute; UA I; AC acute;
+206 316 Icircumflex LC icircumflex; UA I; AC circumflex;
+207 317 Idieresis LC idieresis; UA I; AC dieresis;
+208 320 Eth LC eth;
+209 321 Ntilde LC ntilde; UA N; AC tilde;
+210 322 Ograve LC ograve; UA O; AC grave;
+211 323 Oacute LC oacute; UA O; AC acute;
+212 324 Ocircumflex LC ocircumflex; UA O; AC circumflex;
+213 325 Otilde LC otilde; UA O; AC tilde;
+214 326 Odieresis LC odieresis; UA O; AC dieresis;
+215 327 multiply
+216 330 Oslash LC oslash;
+217 331 Ugrave LC ugrave; UA U; AC grave;
+218 332 Uacute LC uacute; UA U; AC acute;
+219 333 Ucircumflex LC ucircumflex; UA U; AC circumflex;
+220 334 Udieresis LC udieresis; UA U; AC dieresis;
+221 335 Yacute LC yacute; UA Y; AC acute;
+222 336 Thorn LC thorn;
+223 337 germandbls
+224 340 agrave UC Agrave; UA a; AC grave;
+225 341 aacute UC Aacute; UA a; AC acute;
+226 342 acircumflex UC Acircumflex; UA a; AC circumflex;
+227 343 atilde UC Atilde; UA a; AC tilde;
+228 344 adieresis UC Adieresis; UA a; AC dieresis;
+229 345 aring UC Aring; UA a; AC ring;
+230 346 ae UC AE;
+231 347 ccedilla UC Ccedilla; UA c; AC cedilla;
+232 350 egrave UC Egrave; UA e; AC grave;
+233 351 eacute UC Eacute; UA e; AC acute;
+234 352 ecircumflex UC Ecircumflex; UA e; AC circumflex;
+235 353 edieresis UC Edieresis; UA e; AC dieresis;
+236 354 igrave UC Igrave; UA dotlessi; AC grave;
+237 355 iacute UC Iacute; UA dotlessi; AC acute;
+238 356 icircumflex UC Icircumflex; UA dotlessi; AC circumflex;
+239 357 idieresis UC Idieresis; UA dotlessi; AC dieresis;
+240 360 eth UC Eth;
+241 361 ntilde UC Ntilde; UA n; AC tilde;
+242 362 ograve UC Ograve; UA o; AC grave;
+243 363 oacute UC Oacute; UA o; AC acute;
+244 364 ocircumflex UC Ocircumflex; UA o; AC circumflex;
+245 365 otilde UC Otilde; UA o; AC tilde;
+246 366 odieresis UC Odieresis; UA o; AC dieresis;
+247 367 divide
+248 370 oslash UC Oslash;
+249 371 ugrave UC Ugrave; UA u; AC grave;
+250 372 uacute UC Uacute; UA u; AC acute;
+251 373 ucircumflex UC Ucircumflex; UA u; AC circumflex;
+252 374 udieresis UC Udieresis; UA u; AC dieresis;
+253 375 yacute UC Yacute; UA y; AC acute;
+254 376 thorn UC Thorn;
+255 377 ydieresis UA y; AC dieresis;
diff --git a/maps/maps/LtKOI8.LCM b/maps/maps/LtKOI8.LCM
new file mode 100644
index 0000000..10b0c18
--- /dev/null
+++ b/maps/maps/LtKOI8.LCM
@@ -0,0 +1,280 @@
+###############################################################
+# #
+# LtKOI8.LCM #
+# #
+# LCM (Lout Character Mapping) file for KOI8-* family. #
+# Based on KOI8-C (of which -U and -R are subsets). #
+# http://members.linuxstart.com/~winitzki/koi8-extended.html #
+# #
+# Valeriy Ushakov <uwe@ptc.spb.ru> #
+# 24 December 2000 #
+# #
+# This file has been placed in the public domain by its #
+# author. #
+# #
+# Dec- Octal Character Functions ... #
+# imal code name #
+# code #
+# #
+###############################################################
+
+000 000 -none-
+001 001 ff
+002 002 fi
+003 003 fl
+004 004 ffi
+005 005 ffl
+006 006 dotlessi
+007 007 dotlessj
+008 010 breve
+009 011 caron
+010 012 -none-
+011 013 cedilla
+012 014 circumflex
+013 015 -none-
+014 016 dotaccent
+015 017 grave
+016 020 hungarumlaut
+017 021 macron
+018 022 ogonek
+019 023 ring
+020 024 tilde
+021 025 -none-
+022 026 -none-
+023 027 -none-
+024 030 minus
+025 031 quotesingle
+026 032 daggerdbl
+027 033 paragraph
+028 034 perthousand
+029 035 trademark
+030 036 florin
+031 037 currency
+
+032 040 space
+033 041 exclam
+034 042 quotedbl
+035 043 numbersign
+036 044 dollar
+037 045 percent
+038 046 ampersand
+039 047 quoteright
+040 050 parenleft
+041 051 parenright
+042 052 asterisk
+043 053 plus
+044 054 comma
+045 055 hyphen
+046 056 period
+047 057 slash
+048 060 zero
+049 061 one
+050 062 two
+051 063 three
+052 064 four
+053 065 five
+054 066 six
+055 067 seven
+056 070 eight
+057 071 nine
+058 072 colon
+059 073 semicolon
+060 074 less
+061 075 equal
+062 076 greater
+063 077 question
+064 100 at
+065 101 A LC a;
+066 102 B LC b;
+067 103 C LC c;
+068 104 D LC d;
+069 105 E LC e;
+070 106 F LC f;
+071 107 G LC g;
+072 110 H LC h;
+073 111 I LC i;
+074 112 J LC j;
+075 113 K LC k;
+076 114 L LC l;
+077 115 M LC m;
+078 116 N LC n;
+079 117 O LC o;
+080 120 P LC p;
+081 121 Q LC q;
+082 122 R LC r;
+083 123 S LC s;
+084 124 T LC t;
+085 125 U LC u;
+086 126 V LC v;
+087 127 W LC w;
+088 130 X LC x;
+089 131 Y LC y;
+090 132 Z LC z;
+091 133 bracketleft
+092 134 backslash
+093 135 bracketright
+094 136 asciicircum
+095 137 underscore
+096 140 quoteleft
+097 141 a UC A;
+098 142 b UC B;
+099 143 c UC C;
+100 144 d UC D;
+101 145 e UC E;
+102 146 f UC F;
+103 147 g UC G;
+104 150 h UC H;
+105 151 i UC I;
+106 152 j UC J;
+107 153 k UC K;
+108 154 l UC L;
+109 155 m UC M;
+110 156 n UC N;
+111 157 o UC O;
+112 160 p UC P;
+113 161 q UC Q;
+114 162 r UC R;
+115 163 s UC S;
+116 164 t UC T;
+117 165 u UC U;
+118 166 v UC V;
+119 167 w UC W;
+120 170 x UC X;
+121 171 y UC Y;
+122 172 z UC Z;
+123 173 braceleft
+124 174 bar
+125 175 braceright
+126 176 asciitilde
+127 177 -none-
+
+128 200 afii10051 LC afii10099;
+129 201 afii10052 LC afii10100;
+130 202 quotesinglbase
+131 203 afii10100 UC afii10052;
+132 204 quotedblbase
+133 205 ellipsis
+134 206 dagger
+135 207 section
+136 210 Euro
+137 211 dieresis
+138 212 afii10058 LC afii10106;
+139 213 guilsinglleft
+140 214 afii10059 LC afii10107;
+141 215 afii10061 LC afii10109;
+142 216 afii10060 LC afii10108;
+143 217 afii10145 LC afii10193;
+144 220 afii10099 UC afii10051;
+145 221 -none-
+146 222 -none-
+147 223 quotedblleft
+148 224 quotedblright
+149 225 bullet
+150 226 endash
+151 227 emdash
+152 230 sterling
+153 231 periodcentered
+154 232 afii10106 UC afii10058;
+155 233 guilsinglright
+156 234 afii10107 UC afii10059;
+157 235 afii10109 UC afii10061;
+158 236 afii10108 UC afii10060;
+159 237 afii10193 UC afii10145;
+
+160 240 space
+161 241 afii10196 UC afii10148;
+162 242 afii10194 UC afii10146;
+163 243 afii10071 UC afii10023;
+164 244 afii10101 UC afii10053;
+165 245 afii10102 UC afii10054;
+166 246 afii10103 UC afii10055;
+167 247 afii10104 UC afii10056;
+168 250 afii10105 UC afii10057;
+169 251 registered
+170 252 psi UC Psi;
+171 253 guillemotleft
+172 254 afii10195 UC afii10147;
+173 255 afii10098 UC afii10050;
+174 256 afii10110 UC afii10062;
+175 257 acute
+176 260 degree
+177 261 afii10148 LC afii10196;
+178 262 afii10146 LC afii10194;
+179 263 afii10023 LC afii10071;
+180 264 afii10053 LC afii10101;
+181 265 afii10054 LC afii10102;
+182 266 afii10055 LC afii10103;
+183 267 afii10056 LC afii10104;
+184 270 afii10057 LC afii10105;
+185 271 afii61352
+186 272 Psi LC psi;
+187 273 guillemotright
+188 274 afii10147 LC afii10195;
+189 275 afii10050 LC afii10098;
+190 276 afii10062 LC afii10110;
+191 277 copyright
+
+192 300 afii10096 UC afii10048;
+193 301 afii10065 UC afii10017;
+194 302 afii10066 UC afii10018;
+195 303 afii10088 UC afii10040;
+196 304 afii10069 UC afii10021;
+197 305 afii10070 UC afii10022;
+198 306 afii10086 UC afii10038;
+199 307 afii10068 UC afii10020;
+200 310 afii10087 UC afii10039;
+201 311 afii10074 UC afii10026;
+202 312 afii10075 UC afii10027;
+203 313 afii10076 UC afii10028;
+204 314 afii10077 UC afii10029;
+205 315 afii10078 UC afii10030;
+206 316 afii10079 UC afii10031;
+207 317 afii10080 UC afii10032;
+208 320 afii10081 UC afii10033;
+209 321 afii10097 UC afii10049;
+210 322 afii10082 UC afii10034;
+211 323 afii10083 UC afii10035;
+212 324 afii10084 UC afii10036;
+213 325 afii10085 UC afii10037;
+214 326 afii10072 UC afii10024;
+215 327 afii10067 UC afii10019;
+216 330 afii10094 UC afii10046;
+217 331 afii10093 UC afii10045;
+218 332 afii10073 UC afii10025;
+219 333 afii10090 UC afii10042;
+220 334 afii10095 UC afii10047;
+221 335 afii10091 UC afii10043;
+222 336 afii10089 UC afii10041;
+223 337 afii10092 UC afii10044;
+224 340 afii10048 LC afii10096;
+225 341 afii10017 LC afii10065;
+226 342 afii10018 LC afii10066;
+227 343 afii10040 LC afii10088;
+228 344 afii10021 LC afii10069;
+229 345 afii10022 LC afii10070;
+230 346 afii10038 LC afii10086;
+231 347 afii10020 LC afii10068;
+232 350 afii10039 LC afii10087;
+233 351 afii10026 LC afii10074;
+234 352 afii10027 LC afii10075;
+235 353 afii10028 LC afii10076;
+236 354 afii10029 LC afii10077;
+237 355 afii10030 LC afii10078;
+238 356 afii10031 LC afii10079;
+239 357 afii10032 LC afii10080;
+240 360 afii10033 LC afii10081;
+241 361 afii10049 LC afii10097;
+242 362 afii10034 LC afii10082;
+243 363 afii10035 LC afii10083;
+244 364 afii10036 LC afii10084;
+245 365 afii10037 LC afii10085;
+246 366 afii10024 LC afii10072;
+247 367 afii10019 LC afii10067;
+248 370 afii10046 LC afii10094;
+249 371 afii10045 LC afii10093;
+250 372 afii10025 LC afii10073;
+251 373 afii10042 LC afii10090;
+252 374 afii10047 LC afii10095;
+253 375 afii10043 LC afii10091;
+254 376 afii10041 LC afii10089;
+255 377 afii10044 LC afii10092;
diff --git a/maps/maps/LtLatin1.LCM b/maps/maps/LtLatin1.LCM
new file mode 100644
index 0000000..d6a439a
--- /dev/null
+++ b/maps/maps/LtLatin1.LCM
@@ -0,0 +1,294 @@
+###############################################################
+# #
+# LtLatin1.LCM #
+# #
+# LCM (Lout Character Mapping) file for Adobe Latin-1 #
+# Encoding (PostScript Language Reference Manual, 2nd Ed., #
+# page 599) with the following additional entries: #
+# #
+# 128 200 quotesinglbase #
+# 129 201 quotedblbase #
+# 130 202 ellipsis #
+# 131 203 OE (added in Version 3.09) #
+# 132 204 oe (added in Version 3.09) #
+# 133 205 quotedblleft #
+# 134 206 quotedblright #
+# 135 207 fi #
+# 136 210 fl #
+# 137 211 endash #
+# 138 212 emdash #
+# 139 213 bullet #
+# 140 214 dagger #
+# 141 215 daggerdbl #
+# 142 216 florin #
+# 143 217 fraction #
+# #
+# Jeffrey H. Kingston #
+# 14 March 1996 #
+# 19 May 1996 #
+# #
+# This file has been placed in the public domain by its #
+# author. #
+# #
+# Dec- Octal Character Functions ... #
+# imal code name #
+# code #
+# #
+###############################################################
+
+000 000 -none-
+001 001 -none-
+002 002 -none-
+003 003 -none-
+004 004 -none-
+005 005 -none-
+006 006 -none-
+007 007 -none-
+008 010 -none-
+009 011 -none-
+010 012 -none-
+011 013 -none-
+012 014 -none-
+013 015 -none-
+014 016 -none-
+015 017 -none-
+016 020 -none-
+017 021 -none-
+018 022 -none-
+019 023 -none-
+020 024 -none-
+021 025 -none-
+022 026 -none-
+023 027 -none-
+024 030 -none-
+025 031 -none-
+026 032 -none-
+027 033 -none-
+028 034 -none-
+029 035 -none-
+030 036 -none-
+031 037 -none-
+032 040 space
+033 041 exclam
+034 042 quotedbl
+035 043 numbersign
+036 044 dollar
+037 045 percent
+038 046 ampersand
+039 047 quoteright
+040 050 parenleft
+041 051 parenright
+042 052 asterisk
+043 053 plus
+044 054 comma
+045 055 hyphen
+046 056 period
+047 057 slash
+048 060 zero
+049 061 one
+050 062 two
+051 063 three
+052 064 four
+053 065 five
+054 066 six
+055 067 seven
+056 070 eight
+057 071 nine
+058 072 colon
+059 073 semicolon
+060 074 less
+061 075 equal
+062 076 greater
+063 077 question
+064 100 at
+065 101 A LC a;
+066 102 B LC b;
+067 103 C LC c;
+068 104 D LC d;
+069 105 E LC e;
+070 106 F LC f;
+071 107 G LC g;
+072 110 H LC h;
+073 111 I LC i;
+074 112 J LC j;
+075 113 K LC k;
+076 114 L LC l;
+077 115 M LC m;
+078 116 N LC n;
+079 117 O LC o;
+080 120 P LC p;
+081 121 Q LC q;
+082 122 R LC r;
+083 123 S LC s;
+084 124 T LC t;
+085 125 U LC u;
+086 126 V LC v;
+087 127 W LC w;
+088 130 X LC x;
+089 131 Y LC y;
+090 132 Z LC z;
+091 133 bracketleft
+092 134 backslash
+093 135 bracketright
+094 136 asciicircum
+095 137 underscore
+096 140 quoteleft
+097 141 a UC A;
+098 142 b UC B;
+099 143 c UC C;
+100 144 d UC D;
+101 145 e UC E;
+102 146 f UC F;
+103 147 g UC G;
+104 150 h UC H;
+105 151 i UC I;
+106 152 j UC J;
+107 153 k UC K;
+108 154 l UC L;
+109 155 m UC M;
+110 156 n UC N;
+111 157 o UC O;
+112 160 p UC P;
+113 161 q UC Q;
+114 162 r UC R;
+115 163 s UC S;
+116 164 t UC T;
+117 165 u UC U;
+118 166 v UC V;
+119 167 w UC W;
+120 170 x UC X;
+121 171 y UC Y;
+122 172 z UC Z;
+123 173 braceleft
+124 174 bar
+125 175 braceright
+126 176 asciitilde
+127 177 -none-
+128 200 quotesinglbase
+129 201 quotedblbase
+130 202 ellipsis
+131 203 OE
+132 204 oe
+133 205 quotedblleft
+134 206 quotedblright
+135 207 fi
+136 210 fl
+137 211 endash
+138 212 emdash
+139 213 bullet
+140 214 dagger
+141 215 daggerdbl
+142 216 florin
+143 217 fraction
+144 220 dotlessi
+145 221 grave
+146 222 acute
+147 223 circumflex
+148 224 tilde
+149 225 macron
+150 226 breve
+151 227 dotaccent
+152 230 dieresis
+153 231 -none-
+154 232 ring
+155 233 cedilla
+156 234 -none-
+157 235 hungarumlaut
+158 236 ogonek
+159 237 caron
+160 240 space
+161 241 exclamdown
+162 242 cent
+163 243 sterling
+164 244 currency
+165 245 yen
+166 246 brokenbar
+167 247 section
+168 250 dieresis
+169 251 copyright
+170 252 ordfeminine
+171 253 guillemotleft
+172 254 logicalnot
+173 255 hyphen
+174 256 registered
+175 257 macron
+176 260 degree
+177 261 plusminus
+178 262 twosuperior
+179 263 threesuperior
+180 264 acute
+181 265 mu
+182 266 paragraph
+183 267 periodcentered
+184 270 cedilla
+185 271 onesuperior
+186 272 ordmasculine
+187 273 guillemotright
+188 274 onequarter
+189 275 onehalf
+190 276 threequarters
+191 277 questiondown
+192 300 Agrave LC agrave; UA A; AC grave;
+193 301 Aacute LC aacute; UA A; AC acute;
+194 302 Acircumflex LC acircumflex; UA A; AC circumflex;
+195 303 Atilde LC atilde; UA A; AC tilde;
+196 304 Adieresis LC adieresis; UA A; AC dieresis;
+197 305 Aring LC aring; UA A; AC ring;
+198 306 AE LC ae;
+199 307 Ccedilla LC ccedilla; UA C; AC cedilla;
+200 310 Egrave LC egrave; UA E; AC grave;
+201 311 Eacute LC eacute; UA E; AC acute;
+202 312 Ecircumflex LC ecircumflex; UA E; AC circumflex;
+203 313 Edieresis LC edieresis; UA E; AC dieresis;
+204 314 Igrave LC igrave; UA I; AC grave;
+205 315 Iacute LC iacute; UA I; AC acute;
+206 316 Icircumflex LC icircumflex; UA I; AC circumflex;
+207 317 Idieresis LC idieresis; UA I; AC dieresis;
+208 320 Eth LC eth;
+209 321 Ntilde LC ntilde; UA N; AC tilde;
+210 322 Ograve LC ograve; UA O; AC grave;
+211 323 Oacute LC oacute; UA O; AC acute;
+212 324 Ocircumflex LC ocircumflex; UA O; AC circumflex;
+213 325 Otilde LC otilde; UA O; AC tilde;
+214 326 Odieresis LC odieresis; UA O; AC dieresis;
+215 327 multiply
+216 330 Oslash LC oslash;
+217 331 Ugrave LC ugrave; UA U; AC grave;
+218 332 Uacute LC uacute; UA U; AC acute;
+219 333 Ucircumflex LC ucircumflex; UA U; AC circumflex;
+220 334 Udieresis LC udieresis; UA U; AC dieresis;
+221 335 Yacute LC yacute; UA Y; AC acute;
+222 336 Thorn LC thorn;
+223 337 germandbls
+224 340 agrave UC Agrave; UA a; AC grave;
+225 341 aacute UC Aacute; UA a; AC acute;
+226 342 acircumflex UC Acircumflex; UA a; AC circumflex;
+227 343 atilde UC Atilde; UA a; AC tilde;
+228 344 adieresis UC Adieresis; UA a; AC dieresis;
+229 345 aring UC Aring; UA a; AC ring;
+230 346 ae UC AE;
+231 347 ccedilla UC Ccedilla; UA c; AC cedilla;
+232 350 egrave UC Egrave; UA e; AC grave;
+233 351 eacute UC Eacute; UA e; AC acute;
+234 352 ecircumflex UC Ecircumflex; UA e; AC circumflex;
+235 353 edieresis UC Edieresis; UA e; AC dieresis;
+236 354 igrave UC Igrave; UA dotlessi; AC grave;
+237 355 iacute UC Iacute; UA dotlessi; AC acute;
+238 356 icircumflex UC Icircumflex; UA dotlessi; AC circumflex;
+239 357 idieresis UC Idieresis; UA dotlessi; AC dieresis;
+240 360 eth UC Eth;
+241 361 ntilde UC Ntilde; UA n; AC tilde;
+242 362 ograve UC Ograve; UA o; AC grave;
+243 363 oacute UC Oacute; UA o; AC acute;
+244 364 ocircumflex UC Ocircumflex; UA o; AC circumflex;
+245 365 otilde UC Otilde; UA o; AC tilde;
+246 366 odieresis UC Odieresis; UA o; AC dieresis;
+247 367 divide
+248 370 oslash UC Oslash;
+249 371 ugrave UC Ugrave; UA u; AC grave;
+250 372 uacute UC Uacute; UA u; AC acute;
+251 373 ucircumflex UC Ucircumflex; UA u; AC circumflex;
+252 374 udieresis UC Udieresis; UA u; AC dieresis;
+253 375 yacute UC Yacute; UA y; AC acute;
+254 376 thorn UC Thorn;
+255 377 ydieresis UA y; AC dieresis;
diff --git a/maps/maps/LtLatin2.LCM b/maps/maps/LtLatin2.LCM
new file mode 100644
index 0000000..690949e
--- /dev/null
+++ b/maps/maps/LtLatin2.LCM
@@ -0,0 +1,305 @@
+###############################################################
+# #
+# LtLatin2.LCM #
+# #
+# LCM (Lout Character Mapping) file for the ISO Latin-2 #
+# Encoding (sorry, no reference) with additional entries: #
+# #
+# 133 205 quotedblleft #
+# 134 206 quotedblright #
+# 135 207 fi #
+# 136 210 fl #
+# 137 211 endash #
+# 138 212 emdash #
+# 139 213 bullet #
+# 140 214 dagger #
+# 141 215 daggerdbl #
+# 142 216 florin #
+# 143 217 fraction #
+# #
+# The author has been unable to obtain font metrics files #
+# containing the sizes of the complete set of Latin-2 #
+# characters. Thus, strictly speaking it is not possible #
+# to use Latin-2, since Lout does not know these sizes. #
+# #
+# However, this file tells Lout for each accented character #
+# what the corresponding unaccented character is. If Lout #
+# ever comes upon a character in some font whose size in #
+# that font is undefined, and the character is an accented #
+# character (i.e. has a UA entry below), then Lout will #
+# use the size of the unaccented character in place of the #
+# accented character. Lout will still print the character #
+# code for the accented character, so if your printing #
+# device understands it, you can still get it; but the #
+# vertical space Lout leaves for the character will not #
+# take its accent into account. #
+# #
+# Jeffrey H. Kingston #
+# 17 March 1996 #
+# Modified dcroat/Dcroat 5/11/02 thanks marko@fly.srk.fer.hr #
+# #
+# This file has been placed in the public domain by its #
+# author. #
+# #
+# Dec- Octal Character Functions ... #
+# imal code name #
+# code #
+# #
+###############################################################
+
+000 000 -none-
+001 001 -none-
+002 002 -none-
+003 003 -none-
+004 004 -none-
+005 005 -none-
+006 006 -none-
+007 007 -none-
+008 010 -none-
+009 011 -none-
+010 012 -none-
+011 013 -none-
+012 014 -none-
+013 015 -none-
+014 016 -none-
+015 017 -none-
+016 020 -none-
+017 021 -none-
+018 022 -none-
+019 023 -none-
+020 024 -none-
+021 025 -none-
+022 026 -none-
+023 027 -none-
+024 030 -none-
+025 031 -none-
+026 032 -none-
+027 033 -none-
+028 034 -none-
+029 035 -none-
+030 036 -none-
+031 037 -none-
+032 040 space
+033 041 exclam
+034 042 quotedbl
+035 043 numbersign
+036 044 dollar
+037 045 percent
+038 046 ampersand
+039 047 quoteright
+040 050 parenleft
+041 051 parenright
+042 052 asterisk
+043 053 plus
+044 054 comma
+045 055 hyphen
+046 056 period
+047 057 slash
+048 060 zero
+049 061 one
+050 062 two
+051 063 three
+052 064 four
+053 065 five
+054 066 six
+055 067 seven
+056 070 eight
+057 071 nine
+058 072 colon
+059 073 semicolon
+060 074 less
+061 075 equal
+062 076 greater
+063 077 question
+064 100 at
+065 101 A LC a;
+066 102 B LC b;
+067 103 C LC c;
+068 104 D LC d;
+069 105 E LC e;
+070 106 F LC f;
+071 107 G LC g;
+072 110 H LC h;
+073 111 I LC i;
+074 112 J LC j;
+075 113 K LC k;
+076 114 L LC l;
+077 115 M LC m;
+078 116 N LC n;
+079 117 O LC o;
+080 120 P LC p;
+081 121 Q LC q;
+082 122 R LC r;
+083 123 S LC s;
+084 124 T LC t;
+085 125 U LC u;
+086 126 V LC v;
+087 127 W LC w;
+088 130 X LC x;
+089 131 Y LC y;
+090 132 Z LC z;
+091 133 bracketleft
+092 134 backslash
+093 135 bracketright
+094 136 asciicircum
+095 137 underscore
+096 140 quoteleft
+097 141 a UC A;
+098 142 b UC B;
+099 143 c UC C;
+100 144 d UC D;
+101 145 e UC E;
+102 146 f UC F;
+103 147 g UC G;
+104 150 h UC H;
+105 151 i UC I;
+106 152 j UC J;
+107 153 k UC K;
+108 154 l UC L;
+109 155 m UC M;
+110 156 n UC N;
+111 157 o UC O;
+112 160 p UC P;
+113 161 q UC Q;
+114 162 r UC R;
+115 163 s UC S;
+116 164 t UC T;
+117 165 u UC U;
+118 166 v UC V;
+119 167 w UC W;
+120 170 x UC X;
+121 171 y UC Y;
+122 172 z UC Z;
+123 173 braceleft
+124 174 bar
+125 175 braceright
+126 176 asciitilde
+127 177 -none-
+128 200 quotesinglebase
+129 201 quotedblbase
+130 202 ellipsis
+131 203 -none-
+132 204 -none-
+133 205 quotedblleft
+134 206 quotedblright
+135 207 fi
+136 210 fl
+137 211 endash
+138 212 emdash
+139 213 bullet
+140 214 dagger
+141 215 daggerdbl
+142 216 florin
+143 217 fraction
+144 220 dotlessi
+145 221 grave
+146 222 acute
+147 223 circumflex
+148 224 tilde
+149 225 macron
+150 226 breve
+151 227 dotaccent
+152 230 dieresis
+153 231 -none-
+154 232 ring
+155 233 cedilla
+156 234 -none-
+157 235 -none-
+158 236 ogonek
+159 237 caron
+160 240 space
+161 241 Aogonek LC aogonek; UA A; AC ogonek;
+162 242 breve
+163 243 Lslash LC lslash;
+164 244 currency
+165 245 Lcaron LC lcaron; UA L; AC caron;
+166 246 Sacute LC sacute; UA S; AC acute;
+167 247 section
+168 250 dieresis
+169 251 Scaron LC scaron; UA S; AC caron;
+170 252 Scedilla LC scedilla; UA S; AC cedilla;
+171 253 Tcaron LC tcaron; UA T; AC caron;
+172 254 Zacute LC zacute; UA Z; AC acute;
+173 255 hyphen
+174 256 Zcaron LC zcaron; UA Z; AC caron;
+175 257 Zdotaccent LC zdotaccent; UA Z; AC dotaccent;
+176 260 degree
+177 261 aogonek UC Aogonek; UA a; AC ogonek;
+178 262 ogonek
+179 263 lslash UC Lslash;
+180 264 acute
+181 265 lcaron UC Lcaron; UA l; AC caron;
+182 266 sacute UC Sacute; UA s; AC acute;
+183 267 caron
+184 270 cedilla
+185 271 scaron UC Scaron; UA s; AC caron;
+186 272 scedilla UC Scedilla; UA s; AC cedilla;
+187 273 tcaron UC Tcaron; UA t; AC caron;
+188 274 zacute UC Zacute; UA z; AC acute;
+189 275 hungarumlaut
+190 276 zcaron UC Zcaron; UA z; AC caron;
+191 277 zdotaccent UC Zdotaccent; UA z; AC dotaccent;
+192 300 Racute LC racute; UA R; AC acute;
+193 301 Aacute LC aacute; UA A; AC acute;
+194 302 Acircumflex LC acircumflex; UA A; AC circumflex;
+195 303 Abreve LC abreve; UA A; AC breve;
+196 304 Adieresis LC adieresis; UA A; AC dieresis;
+197 305 Lacute LC lacute; UA L; AC acute;
+198 306 Cacute LC cacute; UA C; AC acute;
+199 307 Ccedilla LC ccedilla; UA C; AC cedilla;
+200 310 Ccaron LC ccaron; UA C; AC caron;
+201 311 Eacute LC eacute; UA E; AC acute;
+202 312 Eogonek LC eogonek; UA E; AC ogonek;
+203 313 Edieresis LC edieresis; UA E; AC dieresis;
+204 314 Ecaron LC ecaron; UA E; AC caron;
+205 315 Iacute LC iacute; UA I; AC acute;
+206 316 Icircumflex LC icircumflex; UA I; AC circumflex;
+207 317 Dcaron LC dcaron; UA D; AC caron;
+208 320 Dcroat LC dcroat; UA D;
+209 321 Nacute LC nacute; UA N; AC acute;
+210 322 Ncaron LC ncaron; UA N; AC caron;
+211 323 Oacute LC oacute; UA O; AC acute;
+212 324 Ocircumflex LC ocircumflex; UA O; AC circumflex;
+213 325 Odblacute LC odblacute; UA O; AC hungarumlaut;
+214 326 Odieresis LC odieresis; UA O; AC dieresis;
+215 327 multiply
+216 330 Rcaron LC rcaron; UA R; AC caron;
+217 331 Uring LC uring; UA U; AC ring;
+218 332 Uacute LC uacute; UA U; AC acute;
+219 333 Udblacute LC udblacute; UA U; AC hungarumlaut;
+220 334 Udieresis LC udieresis; UA U; AC dieresis;
+221 335 Yacute LC yacute; UA Y; AC acute;
+222 336 Tcedilla LC tcedilla; UA T; AC cedilla;
+223 337 germandbls
+224 340 racute UC Racute; UA r; AC acute;
+225 341 aacute UC Aacute; UA a; AC acute;
+226 342 acircumflex UC Acircumflex; UA a; AC circumflex;
+227 343 abreve UC Abreve; UA a; AC breve;
+228 344 adieresis UC Adieresis; UA a; AC dieresis;
+229 345 lacute UC Lacute; UA l; AC acute;
+230 346 cacute UC Cacute; UA c; AC acute;
+231 347 ccedilla UC Ccedilla; UA c; AC cedilla;
+232 350 ccaron UC Ccaron; UA c; AC caron;
+233 351 eacute UC Eacute; UA e; AC acute;
+234 352 eogonek UC Eogonek; UA e; AC ogonek;
+235 353 edieresis UC Edieresis; UA e; AC dieresis;
+236 354 ecaron UC Ecaron; UA e; AC caron;
+237 355 iacute UC Iacute; UA dotlessi; AC acute;
+238 356 icircumflex UC Icircumflex; UA dotlessi; AC circumflex;
+239 357 dcaron UC Dcaron; UA d; AC caron;
+240 360 dcroat UC Dcroat; UA d;
+241 361 nacute UC Nacute; UA n; AC acute;
+242 362 ncaron UC Ncaron; UA n; AC caron;
+243 363 oacute UC Oacute; UA o; AC acute;
+244 364 ocircumflex UC Ocircumflex; UA o; AC circumflex;
+245 365 odblacute UC Odblacute; UA o; AC hungarumlaut;
+246 366 odieresis UC Odieresis; UA o; AC dieresis;
+247 367 divide
+248 370 rcaron UC Rcaron; UA r; AC caron;
+249 371 uring UC Uring; UA u; AC ring;
+250 372 uacute UC Uacute; UA u; AC acute;
+251 373 udblacute UC Udblacute; UA u; AC hungarumlaut;
+252 374 udieresis UC Udieresis; UA u; AC dieresis;
+253 375 yacute UC Yacute; UA y; AC acute;
+254 376 tcedilla UC Tcedilla; UA t; AC cedilla;
+255 377 dotaccent
diff --git a/maps/maps/LtLatin3.LCM b/maps/maps/LtLatin3.LCM
new file mode 100644
index 0000000..f7c9098
--- /dev/null
+++ b/maps/maps/LtLatin3.LCM
@@ -0,0 +1,294 @@
+###############################################################
+# #
+# LtLatin3.LCM #
+# #
+# LCM (Lout Character Mapping) file for the ISO Latin-3 #
+# Encoding. #
+# #
+# This covers mostly Esperanto and Maltese, and it covered #
+# Turkish before the introduction of Latin5 in 1988. #
+# #
+# Six (!) character codes are unused in Latin-3. I re-used #
+# three of them (i.e. in a non-standard fashion) to #
+# incorporate useful characters such as the Euro symbol and #
+# French "guillemets" (quotation marks). Suggestions for #
+# remaining codes are welcome. #
+# #
+# Ludovic Courtès <ludo@chbouib.org>. #
+# #
+# This file has been placed in the public domain by its #
+# author. #
+# #
+# Dec- Octal Character Functions ... #
+# imal code name #
+# code #
+# #
+###############################################################
+
+000 000 -none-
+001 001 -none-
+002 002 -none-
+003 003 -none-
+004 004 -none-
+005 005 -none-
+006 006 -none-
+007 007 -none-
+008 010 -none-
+009 011 -none-
+010 012 -none-
+011 013 -none-
+012 014 -none-
+013 015 -none-
+014 016 -none-
+015 017 -none-
+016 020 -none-
+017 021 -none-
+018 022 -none-
+019 023 -none-
+020 024 -none-
+021 025 -none-
+022 026 -none-
+023 027 -none-
+024 030 -none-
+025 031 -none-
+026 032 -none-
+027 033 -none-
+028 034 -none-
+029 035 -none-
+030 036 -none-
+031 037 -none-
+032 040 space
+033 041 exclam
+034 042 quotedbl
+035 043 numbersign
+036 044 dollar
+037 045 percent
+038 046 ampersand
+039 047 quoteright
+040 050 parenleft
+041 051 parenright
+042 052 asterisk
+043 053 plus
+044 054 comma
+045 055 hyphen
+046 056 period
+047 057 slash
+048 060 zero
+049 061 one
+050 062 two
+051 063 three
+052 064 four
+053 065 five
+054 066 six
+055 067 seven
+056 070 eight
+057 071 nine
+058 072 colon
+059 073 semicolon
+060 074 less
+061 075 equal
+062 076 greater
+063 077 question
+064 100 at
+065 101 A LC a;
+066 102 B LC b;
+067 103 C LC c;
+068 104 D LC d;
+069 105 E LC e;
+070 106 F LC f;
+071 107 G LC g;
+072 110 H LC h;
+073 111 I LC i;
+074 112 J LC j;
+075 113 K LC k;
+076 114 L LC l;
+077 115 M LC m;
+078 116 N LC n;
+079 117 O LC o;
+080 120 P LC p;
+081 121 Q LC q;
+082 122 R LC r;
+083 123 S LC s;
+084 124 T LC t;
+085 125 U LC u;
+086 126 V LC v;
+087 127 W LC w;
+088 130 X LC x;
+089 131 Y LC y;
+090 132 Z LC z;
+091 133 bracketleft
+092 134 backslash
+093 135 bracketright
+094 136 asciicircum
+095 137 underscore
+096 140 quoteleft
+097 141 a UC A;
+098 142 b UC B;
+099 143 c UC C;
+100 144 d UC D;
+101 145 e UC E;
+102 146 f UC F;
+103 147 g UC G;
+104 150 h UC H;
+105 151 i UC I;
+106 152 j UC J;
+107 153 k UC K;
+108 154 l UC L;
+109 155 m UC M;
+110 156 n UC N;
+111 157 o UC O;
+112 160 p UC P;
+113 161 q UC Q;
+114 162 r UC R;
+115 163 s UC S;
+116 164 t UC T;
+117 165 u UC U;
+118 166 v UC V;
+119 167 w UC W;
+120 170 x UC X;
+121 171 y UC Y;
+122 172 z UC Z;
+123 173 braceleft
+124 174 bar
+125 175 braceright
+126 176 asciitilde
+127 177 -none-
+128 200 quotesinglebase
+129 201 quotedblbase
+130 202 ellipsis
+131 203 -none-
+132 204 -none-
+133 205 quotedblleft
+134 206 quotedblright
+135 207 fi
+136 210 fl
+137 211 endash
+138 212 emdash
+139 213 bullet
+140 214 dagger
+141 215 daggerdbl
+142 216 florin
+143 217 fraction
+144 220 dotlessi
+145 221 grave
+146 222 acute
+147 223 circumflex
+148 224 tilde
+149 225 macron
+150 226 breve
+151 227 dotaccent
+152 230 dieresis
+153 231 -none-
+154 232 ring
+155 233 cedilla
+156 234 -none-
+157 235 -none-
+158 236 ogonek
+159 237 caron
+160 240 space
+161 241 Hbar LC hbar; UA H; AC bar;
+162 242 breve
+163 243 sterling
+164 244 currency
+# Char #165 is unused in Latin-3. So we use it for the Euro sign.
+# In Latin-9 (ISO-8859-15), the Euro symbol sits at char #164, and the
+# currency sign is removed. But we want to keep the latter for real
+# Latin-3 compatibility.
+165 245 euro
+166 246 Hcircumflex LC hcircumflex; UA H; AC circumflex;
+167 247 section
+168 250 dieresis
+169 251 Idot LC i; UA I;
+170 252 Scedilla LC scedilla; UA S; AC cedilla;
+171 253 Gbreve LC gbreve; UA G; AC breve;
+172 254 Jcircumflex LC jcircumflex; UA J; AC circumflex;
+173 255 hyphen
+# Char #174 is unused in Latin-3. We use it for French guillemet.
+174 256 guillemotleft
+175 257 Zdotaccent LC zdotaccent; UA Z; AC dotaccent;
+176 260 degree
+177 261 hbar UC Hbar; UA h; AC bar;
+178 262 twosuperior
+179 263 threesuperior
+180 264 acute
+181 265 mu
+182 266 hcircumflex UC Hcircumflex; UA h; AC circumflex;
+# FIXME: Char #183 should be "middle dot".
+183 267 dotaccent
+184 270 cedilla
+185 271 dotlessi UC I;
+186 272 scedilla UC Scedilla; UA s; AC cedilla;
+187 273 gbreve UC Gbreve; UA g; AC breve;
+188 274 jcircumflex UC Jcircumflex; UA j; AC circumflex;
+189 275 onehalf
+# Char #190 is unused in Latin-3. We use it for French guillemet.
+190 276 guillemotright
+191 277 zdotaccent UC Zdotaccent; UA z; AC dotaccent;
+192 300 Agrave LC agrave; UA A; AC grave;
+193 301 Aacute LC aacute; UA A; AC acute;
+194 302 Acircumflex LC acircumflex; UA A; AC circumflex;
+# Char #195 is unused.
+195 303 Abreve LC abreve; UA A; AC breve;
+196 304 Adieresis LC adieresis; UA A; AC dieresis;
+197 305 Cdotaccent LC cdotaccent; UA C; AC dotaccent;
+198 306 Ccircumflex LC ccircumflex; UA C; AC circumflex;
+199 307 Ccedilla LC ccedilla; UA C; AC cedilla;
+200 310 Egrave LC egrave; UA E; AC grave;
+201 311 Eacute LC eacute; UA E; AC acute;
+202 312 Ecircumflex LC ecircumflex; UA E; AC circumflex;
+203 313 Edieresis LC edieresis; UA E; AC dieresis;
+204 314 Igrave LC igrave; UA I; AC grave;
+205 315 Iacute LC iacute; UA I; AC acute;
+206 316 Icircumflex LC icircumflex; UA I; AC circumflex;
+207 317 Idieresis LC idieresis; UA I; AC dieresis;
+# Char #208 is unused.
+208 320 Dcroat LC dcroat; UA D;
+209 321 Ntilde LC ntilde; UA N; AC tilde;
+210 322 Ograve LC ograve; UA O; AC grave;
+211 323 Oacute LC oacute; UA O; AC acute;
+212 324 Ocircumflex LC ocircumflex; UA O; AC circumflex;
+213 325 Gdotaccent LC gdotaccent; UA G; AC dotaccent;
+214 326 Odieresis LC odieresis; UA O; AC dieresis;
+215 327 multiply
+216 330 Gcircumflex LC gcircumflex; UA G; AC circumflex;
+217 331 Ugrave LC ugrave; UA U; AC grave;
+218 332 Uacute LC uacute; UA U; AC acute;
+219 333 Ucircumflex LC ucircumflex; UA U; AC circumflex;
+220 334 Udieresis LC udieresis; UA U; AC dieresis;
+221 335 Ubreve LC ubreve; UA U; AC breve;
+222 336 Scircumflex LC scircumflex; UA S; AC circumflex;
+223 337 germandbls
+224 340 agrave UC Agrave; UA a; AC grave;
+225 341 aacute UC Aacute; UA a; AC acute;
+226 342 acircumflex UC Acircumflex; UA a; AC circumflex;
+# Char #227 is unused.
+227 343 abreve UC Abreve; UA a; AC breve;
+228 344 adieresis UC Adieresis; UA a; AC dieresis;
+229 345 cdotaccent UC Cdotaccent; UA c; AC dotaccent;
+230 346 ccircumflex UC Ccircumflex; UA c; AC circumflex;
+231 347 ccedilla UC Ccedilla; UA c; AC cedilla;
+232 350 egrave UC Egrave; UA e; AC grave
+233 351 eacute UC Eacute; UA e; AC acute;
+234 352 ecircumflex UC Ecircumflex; UA e; AC circumflex;
+235 353 edieresis UC Edieresis; UA e; AC dieresis;
+236 354 igrave UC Igrave; UA i; AC grave;
+237 355 iacute UC Iacute; UA dotlessi; AC acute;
+238 356 icircumflex UC Icircumflex; UA dotlessi; AC circumflex;
+239 357 idieresis UC Idieresis; UA i; AC dieresis;
+# Char #240 is unused.
+240 360 dcroat UC Dcroat; UA d;
+241 361 ntilde UC Ntilde; UA n; AC tilde;
+242 362 ograve UC Ograve; UA o; AC grave;
+243 363 oacute UC Oacute; UA o; AC acute;
+244 364 ocircumflex UC Ocircumflex; UA o; AC circumflex;
+245 365 gdotaccent UC Gdotaccent; UA g; AC dotaccent;
+246 366 odieresis UC Odieresis; UA o; AC dieresis;
+247 367 divide
+248 370 gcircumflex UC Gcircumflex; UA g; AC circumflex;
+249 371 ugrave UC Ugrave; UA u; AC grave;
+250 372 uacute UC Uacute; UA u; AC acute;
+251 373 ucircumflex UC Ucircumflex; UA u; AC circumflex;
+252 374 udieresis UC Udieresis; UA u; AC dieresis;
+253 375 ubreve UC Ubreve; UA u; AC breve;
+254 376 scircumflex UC Scircumflex; UA s; AC circumflex;
+255 377 dotaccent
diff --git a/maps/maps/Std.LCM b/maps/maps/Std.LCM
new file mode 100644
index 0000000..aaa6f55
--- /dev/null
+++ b/maps/maps/Std.LCM
@@ -0,0 +1,276 @@
+###############################################################
+# #
+# Std.LCM #
+# #
+# LCM (Lout Character Mapping) file for Adobe Standard #
+# Encoding (PostScript Language Reference Manual, 2nd Ed., #
+# page 598). #
+# #
+# Jeffrey H. Kingston #
+# 14 March 1996 #
+# #
+# This file has been placed in the public domain by its #
+# author. #
+# #
+# Dec- Octal Character Functions ... #
+# imal code name #
+# code #
+# #
+###############################################################
+
+000 000 -none-
+001 001 -none-
+002 002 -none-
+003 003 -none-
+004 004 -none-
+005 005 -none-
+006 006 -none-
+007 007 -none-
+008 010 -none-
+009 011 -none-
+010 012 -none-
+011 013 -none-
+012 014 -none-
+013 015 -none-
+014 016 -none-
+015 017 -none-
+016 020 -none-
+017 021 -none-
+018 022 -none-
+019 023 -none-
+020 024 -none-
+021 025 -none-
+022 026 -none-
+023 027 -none-
+024 030 -none-
+025 031 -none-
+026 032 -none-
+027 033 -none-
+028 034 -none-
+029 035 -none-
+030 036 -none-
+031 037 -none-
+032 040 space
+033 041 exclam
+034 042 quotedbl
+035 043 numbersign
+036 044 dollar
+037 045 percent
+038 046 ampersand
+039 047 quoteright
+040 050 parenleft
+041 051 parenright
+042 052 asterisk
+043 053 plus
+044 054 comma
+045 055 hyphen
+046 056 period
+047 057 slash
+048 060 zero
+049 061 one
+050 062 two
+051 063 three
+052 064 four
+053 065 five
+054 066 six
+055 067 seven
+056 070 eight
+057 071 nine
+058 072 colon
+059 073 semicolon
+060 074 less
+061 075 equal
+062 076 greater
+063 077 question
+064 100 at
+065 101 A LC a;
+066 102 B LC b;
+067 103 C LC c;
+068 104 D LC d;
+069 105 E LC e;
+070 106 F LC f;
+071 107 G LC g;
+072 110 H LC h;
+073 111 I LC i;
+074 112 J LC j;
+075 113 K LC k;
+076 114 L LC l;
+077 115 M LC m;
+078 116 N LC n;
+079 117 O LC o;
+080 120 P LC p;
+081 121 Q LC q;
+082 122 R LC r;
+083 123 S LC s;
+084 124 T LC t;
+085 125 U LC u;
+086 126 V LC v;
+087 127 W LC w;
+088 130 X LC x;
+089 131 Y LC y;
+090 132 Z LC z;
+091 133 bracketleft
+092 134 backslash
+093 135 bracketright
+094 136 asciicircum
+095 137 underscore
+096 140 quoteleft
+097 141 a UC A;
+098 142 b UC B;
+099 143 c UC C;
+100 144 d UC D;
+101 145 e UC E;
+102 146 f UC F;
+103 147 g UC G;
+104 150 h UC H;
+105 151 i UC I;
+106 152 j UC J;
+107 153 k UC K;
+108 154 l UC L;
+109 155 m UC M;
+110 156 n UC N;
+111 157 o UC O;
+112 160 p UC P;
+113 161 q UC Q;
+114 162 r UC R;
+115 163 s UC S;
+116 164 t UC T;
+117 165 u UC U;
+118 166 v UC V;
+119 167 w UC W;
+120 170 x UC X;
+121 171 y UC Y;
+122 172 z UC Z;
+123 173 braceleft
+124 174 bar
+125 175 braceright
+126 176 asciitilde
+127 177 -none-
+128 200 -none-
+129 201 -none-
+130 202 -none-
+131 203 -none-
+132 204 -none-
+133 205 -none-
+134 206 -none-
+135 207 -none-
+136 210 -none-
+137 211 -none-
+138 212 -none-
+139 213 -none-
+140 214 -none-
+141 215 -none-
+142 216 -none-
+143 217 -none-
+144 220 -none-
+145 221 -none-
+146 222 -none-
+147 223 -none-
+148 224 -none-
+149 225 -none-
+150 226 -none-
+151 227 -none-
+152 230 -none-
+153 231 -none-
+154 232 -none-
+155 233 -none-
+156 234 -none-
+157 235 -none-
+158 236 -none-
+159 237 -none-
+160 240 -none-
+161 241 exclamdown
+162 242 cent
+163 243 sterling
+164 244 fraction
+165 245 yen
+166 246 florin
+167 247 section
+168 250 currency
+169 251 quotesingle
+170 252 quotedblleft
+171 253 guillemotleft
+172 254 guilsinglleft
+173 255 guilsinglright
+174 256 fi
+175 257 fl
+176 260 -none-
+177 261 endash
+178 262 dagger
+179 263 daggerdbl
+180 264 periodcentered
+181 265 -none-
+182 266 paragraph
+183 267 bullet
+184 270 quotesinglbase
+185 271 quotedblbase
+186 272 quotedblright
+187 273 guillemotright
+188 274 ellipsis
+189 275 perthousand
+190 276 -none-
+191 277 questiondown
+192 300 -none-
+193 301 grave
+194 302 acute
+195 303 circumflex
+196 304 tilde
+197 305 macron
+198 306 breve
+199 307 dotaccent
+200 310 dieresis
+201 311 -none-
+202 312 ring
+203 313 cedilla
+204 314 -none-
+205 315 hungarumlaut
+206 316 ogonek
+207 317 caron
+208 320 emdash
+209 321 -none-
+210 322 -none-
+211 323 -none-
+212 324 -none-
+213 325 -none-
+214 326 -none-
+215 327 -none-
+216 330 -none-
+217 331 -none-
+218 332 -none-
+219 333 -none-
+220 334 -none-
+221 335 -none-
+222 336 -none-
+223 337 -none-
+224 340 -none-
+225 341 AE
+226 342 -none-
+227 343 ordfeminine
+228 344 -none-
+229 345 -none-
+230 346 -none-
+231 347 -none-
+232 350 Lslash
+233 351 Oslash
+234 352 OE
+235 353 ordmasculine
+236 354 -none-
+237 355 -none-
+238 356 -none-
+239 357 -none-
+240 360 -none-
+241 361 ae
+242 362 -none-
+243 363 -none-
+244 364 -none-
+245 365 dotlessi
+246 366 -none-
+247 367 -none-
+248 370 lslash
+249 371 oslash
+250 372 oe
+251 373 germandbls
+252 374 -none-
+253 375 -none-
+254 376 -none-
+255 377 -none-
diff --git a/maps/maps/Symb.LCM b/maps/maps/Symb.LCM
new file mode 100644
index 0000000..3daafbe
--- /dev/null
+++ b/maps/maps/Symb.LCM
@@ -0,0 +1,275 @@
+###############################################################
+# #
+# Symb.LCM #
+# #
+# LCM (Lout Character Mapping) file for the Adobe #
+# Symbol font. #
+# #
+# Jeffrey H. Kingston #
+# 14 March 1996 #
+# #
+# This file has been placed in the public domain by its #
+# author. #
+# #
+# Dec- Octal Character Functions ... #
+# imal code name #
+# code #
+# #
+###############################################################
+
+000 000 -none-
+001 001 -none-
+002 002 -none-
+003 003 -none-
+004 004 -none-
+005 005 -none-
+006 006 -none-
+007 007 -none-
+008 010 -none-
+009 011 -none-
+010 012 -none-
+011 013 -none-
+012 014 -none-
+013 015 -none-
+014 016 -none-
+015 017 -none-
+016 020 -none-
+017 021 -none-
+018 022 -none-
+019 023 -none-
+020 024 -none-
+021 025 -none-
+022 026 -none-
+023 027 -none-
+024 030 -none-
+025 031 -none-
+026 032 -none-
+027 033 -none-
+028 034 -none-
+029 035 -none-
+030 036 -none-
+031 037 -none-
+032 040 space
+033 041 exclam
+034 042 universal
+035 043 numbersign
+036 044 existential
+037 045 percent
+038 046 ampersand
+039 047 suchthat
+040 050 parenleft
+041 051 parenright
+042 052 asteriskmath
+043 053 plus
+044 054 comma
+045 055 minus
+046 056 period
+047 057 slash
+048 060 zero
+049 061 one
+050 062 two
+051 063 three
+052 064 four
+053 065 five
+054 066 six
+055 067 seven
+056 070 eight
+057 071 nine
+058 072 colon
+059 073 semicolon
+060 074 less
+061 075 equal
+062 076 greater
+063 077 question
+064 100 congruent
+065 101 Alpha LC alpha;
+066 102 Beta LC beta;
+067 103 Chi LC chi;
+068 104 Delta LC delta;
+069 105 Epsilon LC epsilon;
+070 106 Phi LC phi;
+071 107 Gamma LC gamma;
+072 110 Eta LC eta;
+073 111 Iota LC iota;
+074 112 theta1 UC Theta;
+075 113 Kappa LC kappa;
+076 114 Lambda LC lambda;
+077 115 Mu LC mu;
+078 116 Nu LC nu;
+079 117 Omicron LC omicron;
+080 120 Pi LC pi;
+081 121 Theta LC theta;
+082 122 Rho LC rho;
+083 123 Sigma LC sigma;
+084 124 Tau LC tau;
+085 125 Upsilon LC upsilon;
+086 126 sigma1 UC Sigma;
+087 127 Omega LC omega;
+088 130 Xi LC xi;
+089 131 Psi LC psi;
+090 132 Zeta LC zeta;
+091 133 bracketleft
+092 134 therefore
+093 135 bracketright
+094 136 perpendicular
+095 137 underscore
+096 140 radicalex
+097 141 alpha UC Alpha;
+098 142 beta UC Beta;
+099 143 chi UC Chi;
+100 144 delta UC Delta;
+101 145 epsilon UC Epsilon;
+102 146 phi UC Phi;
+103 147 gamma UC Gamma;
+104 150 eta UC Eta;
+105 151 iota UC Iota;
+106 152 phi1 UC Phi;
+107 153 kappa UC Kappa;
+108 154 lambda UC Lambda;
+109 155 mu UC Mu;
+110 156 nu UC Nu;
+111 157 omicron UC Omicron;
+112 160 pi UC Pi;
+113 161 theta UC Theta;
+114 162 rho UC Rho;
+115 163 sigma UC Sigma;
+116 164 tau UC Tau;
+117 165 upsilon UC Upsilon;
+118 166 omega1 UC Omega;
+119 167 omega UC Omega;
+120 170 xi UC Xi;
+121 171 psi UC Psi;
+122 172 zeta UC Zeta;
+123 173 braceleft
+124 174 bar
+125 175 braceright
+126 176 similar
+127 177 -none-
+128 200 -none-
+129 201 -none-
+130 202 -none-
+131 203 -none-
+132 204 -none-
+133 205 -none-
+134 206 -none-
+135 207 -none-
+136 210 -none-
+137 211 -none-
+138 212 -none-
+139 213 -none-
+140 214 -none-
+141 215 -none-
+142 216 -none-
+143 217 -none-
+144 220 -none-
+145 221 -none-
+146 222 -none-
+147 223 -none-
+148 224 -none-
+149 225 -none-
+150 226 -none-
+151 227 -none-
+152 230 -none-
+153 231 -none-
+154 232 -none-
+155 233 -none-
+156 234 -none-
+157 235 -none-
+158 236 -none-
+159 237 -none-
+160 240 -none-
+161 241 Upsilon1 LC upsilon;
+162 242 minute
+163 243 lessequal
+164 244 fraction
+165 245 infinity
+166 246 florin
+167 247 club
+168 250 diamond
+169 251 heart
+170 252 spade
+171 253 arrowboth
+172 254 arrowleft
+173 255 arrowup
+174 256 arrowright
+175 257 arrowdown
+176 260 degree
+177 261 plusminus
+178 262 second
+179 263 greaterequal
+180 264 multiply
+181 265 proportional
+182 266 partialdiff
+183 267 bullet
+184 270 divide
+185 271 notequal
+186 272 equivalence
+187 273 approxequal
+188 274 ellipsis
+189 275 arrowvertex
+190 276 arrowhorizex
+191 277 carriagereturn
+192 300 aleph
+193 301 Ifraktur
+194 302 Rfraktur
+195 303 weierstrass
+196 304 circlemultiply
+197 305 circleplus
+198 306 emptyset
+199 307 intersection
+200 310 union
+201 311 propersuperset
+202 312 reflexsuperset
+203 313 notsubset
+204 314 propersubset
+205 315 reflexsubset
+206 316 element
+207 317 notelement
+208 320 angle
+209 321 gradient
+210 322 registerserif
+211 323 copyrightserif
+212 324 trademarkserif
+213 325 product
+214 326 radical
+215 327 dotmath
+216 330 logicalnot
+217 331 logicaland
+218 332 logicalor
+219 333 arrowdblboth
+220 334 arrowdblleft
+221 335 arrowdblup
+222 336 arrowdblright
+223 337 arrowdbldown
+224 340 lozenge
+225 341 angleleft
+226 342 registersans
+227 343 copyrightsans
+228 344 trademarksans
+229 345 summation
+230 346 parenlefttp
+231 347 parenleftex
+232 350 parenleftbt
+233 351 bracketlefttp
+234 352 bracketleftex
+235 353 bracketleftbt
+236 354 bracelefttp
+237 355 braceleftmid
+238 356 braceleftbt
+239 357 braceex
+240 360 -none-
+241 361 angleright
+242 362 integral
+243 363 integraltp
+244 364 integralex
+245 365 integralbt
+246 366 parenrighttp
+247 367 parenrightex
+248 370 parenrightbt
+249 371 bracketrighttp
+250 372 bracketrightex
+251 373 bracketrightbt
+252 374 bracerighttp
+253 375 bracerightmid
+254 376 bracerightbt
+255 377 -none-
diff --git a/maps/maps/koi8r.LCM b/maps/maps/koi8r.LCM
new file mode 100644
index 0000000..3bbe55e
--- /dev/null
+++ b/maps/maps/koi8r.LCM
@@ -0,0 +1,263 @@
+# Lout Char Map for Russian koi8-r fonts #
+# Valeriy Ushakov <uwe@niif.spb.su> #
+# #
+# This file has been placed in the public domain by its #
+# author. #
+# #
+
+000 000 -none-
+001 001 -none-
+002 002 -none-
+003 003 -none-
+004 004 -none-
+005 005 -none-
+006 006 -none-
+007 007 -none-
+008 010 -none-
+009 011 -none-
+010 012 -none-
+011 013 -none-
+012 014 -none-
+013 015 quotesingle
+014 016 -none-
+015 017 -none-
+016 020 -none-
+017 021 -none-
+018 022 grave
+019 023 -none-
+020 024 -none-
+021 025 -none-
+022 026 -none-
+023 027 -none-
+024 030 -none-
+025 031 -none-
+026 032 -none-
+027 033 -none-
+028 034 -none-
+029 035 -none-
+030 036 -none-
+031 037 -none-
+032 040 space
+033 041 exclam
+034 042 quotedblright
+035 043 numbersign
+036 044 dollar
+037 045 percent
+038 046 ampersand
+039 047 quoteright
+040 050 parenleft
+041 051 parenright
+042 052 asterisk
+043 053 plus
+044 054 comma
+045 055 hyphen
+046 056 period
+047 057 slash
+048 060 zero
+049 061 one
+050 062 two
+051 063 three
+052 064 four
+053 065 five
+054 066 six
+055 067 seven
+056 070 eight
+057 071 nine
+058 072 colon
+059 073 semicolon
+060 074 guillemotleft
+061 075 equal
+062 076 guillemotright
+063 077 question
+064 100 at
+065 101 A LC a;
+066 102 B LC b;
+067 103 C LC c;
+068 104 D LC d;
+069 105 E LC e;
+070 106 F LC f;
+071 107 G LC g;
+072 110 H LC h;
+073 111 I LC i;
+074 112 J LC j;
+075 113 K LC k;
+076 114 L LC l;
+077 115 M LC m;
+078 116 N LC n;
+079 117 O LC o;
+080 120 P LC p;
+081 121 Q LC q;
+082 122 R LC r;
+083 123 S LC s;
+084 124 T LC t;
+085 125 U LC u;
+086 126 V LC v;
+087 127 W LC w;
+088 130 X LC x;
+089 131 Y LC y;
+090 132 Z LC z;
+091 133 bracketleft
+092 134 quotedblleft
+093 135 bracketright
+094 136 asciicircum
+095 137 underscore
+096 140 quoteleft
+097 141 a UC A;
+098 142 b UC B;
+099 143 c UC C;
+100 144 d UC D;
+101 145 e UC E;
+102 146 f UC F;
+103 147 g UC G;
+104 150 h UC H;
+105 151 i UC I;
+106 152 j UC J;
+107 153 k UC K;
+108 154 l UC L;
+109 155 m UC M;
+110 156 n UC N;
+111 157 o UC O;
+112 160 p UC P;
+113 161 q UC Q;
+114 162 r UC R;
+115 163 s UC S;
+116 164 t UC T;
+117 165 u UC U;
+118 166 v UC V;
+119 167 w UC W;
+120 170 x UC X;
+121 171 y UC Y;
+122 172 z UC Z;
+123 173 endash
+124 174 emdash
+125 175 quotedbl
+126 176 asciitilde
+127 177 -none-
+128 200 -none-
+129 201 -none-
+130 202 -none-
+131 203 -none-
+132 204 -none-
+133 205 -none-
+134 206 -none-
+135 207 -none-
+136 210 -none-
+137 211 -none-
+138 212 -none-
+139 213 -none-
+140 214 -none-
+141 215 -none-
+142 216 -none-
+143 217 -none-
+144 220 -none-
+145 221 -none-
+146 222 -none-
+147 223 -none-
+148 224 -none-
+149 225 -none-
+150 226 -none-
+151 227 -none-
+152 230 -none-
+153 231 -none-
+154 232 -none-
+155 233 -none-
+156 234 -none-
+157 235 -none-
+158 236 -none-
+159 237 -none-
+160 240 -none-
+161 241 -none-
+162 242 -none-
+163 243 afii10071 UC afii10023;
+164 244 -none-
+165 245 -none-
+166 246 -none-
+167 247 -none-
+168 250 -none-
+169 251 -none-
+170 252 -none-
+171 253 -none-
+172 254 -none-
+173 255 -none-
+174 256 -none-
+175 257 -none-
+176 260 -none-
+177 261 -none-
+178 262 -none-
+179 263 afii10023 LC afii10071;
+180 264 -none-
+181 265 -none-
+182 266 -none-
+183 267 -none-
+184 270 afii61352
+185 271 -none-
+186 272 -none-
+187 273 -none-
+188 274 -none-
+189 275 -none-
+190 276 -none-
+191 277 -none-
+192 300 afii10096 UC afii10048;
+193 301 afii10065 UC afii10017;
+194 302 afii10066 UC afii10018;
+195 303 afii10088 UC afii10040;
+196 304 afii10069 UC afii10021;
+197 305 afii10070 UC afii10022;
+198 306 afii10086 UC afii10038;
+199 307 afii10068 UC afii10020;
+200 310 afii10087 UC afii10039;
+201 311 afii10074 UC afii10026;
+202 312 afii10075 UC afii10027;
+203 313 afii10076 UC afii10028;
+204 314 afii10077 UC afii10029;
+205 315 afii10078 UC afii10030;
+206 316 afii10079 UC afii10031;
+207 317 afii10080 UC afii10032;
+208 320 afii10081 UC afii10033;
+209 321 afii10097 UC afii10049;
+210 322 afii10082 UC afii10034;
+211 323 afii10083 UC afii10035;
+212 324 afii10084 UC afii10036;
+213 325 afii10085 UC afii10037;
+214 326 afii10072 UC afii10024;
+215 327 afii10067 UC afii10019;
+216 330 afii10094 UC afii10046;
+217 331 afii10093 UC afii10045;
+218 332 afii10073 UC afii10025;
+219 333 afii10090 UC afii10042;
+220 334 afii10095 UC afii10047;
+221 335 afii10091 UC afii10043;
+222 336 afii10089 UC afii10041;
+223 337 afii10092 UC afii10044;
+224 340 afii10048 LC afii10096;
+225 341 afii10017 LC afii10065;
+226 342 afii10018 LC afii10066;
+227 343 afii10040 LC afii10088;
+228 344 afii10021 LC afii10069;
+229 345 afii10022 LC afii10070;
+230 346 afii10038 LC afii10086;
+231 347 afii10020 LC afii10068;
+232 350 afii10039 LC afii10087;
+233 351 afii10026 LC afii10074;
+234 352 afii10027 LC afii10075;
+235 353 afii10028 LC afii10076;
+236 354 afii10029 LC afii10077;
+237 355 afii10030 LC afii10078;
+238 356 afii10031 LC afii10079;
+239 357 afii10032 LC afii10080;
+240 360 afii10033 LC afii10081;
+241 361 afii10049 LC afii10097;
+242 362 afii10034 LC afii10082;
+243 363 afii10035 LC afii10083;
+244 364 afii10036 LC afii10084;
+245 365 afii10037 LC afii10085;
+246 366 afii10024 LC afii10072;
+247 367 afii10019 LC afii10067;
+248 370 afii10046 LC afii10094;
+249 371 afii10045 LC afii10093;
+250 372 afii10025 LC afii10073;
+251 373 afii10042 LC afii10090;
+252 374 afii10047 LC afii10095;
+253 375 afii10043 LC afii10091;
+254 376 afii10041 LC afii10089;
+255 377 afii10044 LC afii10092;
diff --git a/maps/maps/null.LCM b/maps/maps/null.LCM
new file mode 100644
index 0000000..1495fe3
--- /dev/null
+++ b/maps/maps/null.LCM
@@ -0,0 +1,274 @@
+###############################################################
+# #
+# null.LCM #
+# #
+# Skeleton LCM (Lout Character Mapping) file #
+# #
+# Jeffrey H. Kingston #
+# 14 March 1996 #
+# #
+# This file has been placed in the public domain by its #
+# author. #
+# #
+# Dec- Octal Character Functions ... #
+# imal code name #
+# code #
+# #
+###############################################################
+
+000 000 -none-
+001 001 -none-
+002 002 -none-
+003 003 -none-
+004 004 -none-
+005 005 -none-
+006 006 -none-
+007 007 -none-
+008 010 -none-
+009 011 -none-
+010 012 -none-
+011 013 -none-
+012 014 -none-
+013 015 -none-
+014 016 -none-
+015 017 -none-
+016 020 -none-
+017 021 -none-
+018 022 -none-
+019 023 -none-
+020 024 -none-
+021 025 -none-
+022 026 -none-
+023 027 -none-
+024 030 -none-
+025 031 -none-
+026 032 -none-
+027 033 -none-
+028 034 -none-
+029 035 -none-
+030 036 -none-
+031 037 -none-
+032 040 -none-
+033 041 -none-
+034 042 -none-
+035 043 -none-
+036 044 -none-
+037 045 -none-
+038 046 -none-
+039 047 -none-
+040 050 -none-
+041 051 -none-
+042 052 -none-
+043 053 -none-
+044 054 -none-
+045 055 -none-
+046 056 -none-
+047 057 -none-
+048 060 -none-
+049 061 -none-
+050 062 -none-
+051 063 -none-
+052 064 -none-
+053 065 -none-
+054 066 -none-
+055 067 -none-
+056 070 -none-
+057 071 -none-
+058 072 -none-
+059 073 -none-
+060 074 -none-
+061 075 -none-
+062 076 -none-
+063 077 -none-
+064 100 -none-
+065 101 -none-
+066 102 -none-
+067 103 -none-
+068 104 -none-
+069 105 -none-
+070 106 -none-
+071 107 -none-
+072 110 -none-
+073 111 -none-
+074 112 -none-
+075 113 -none-
+076 114 -none-
+077 115 -none-
+078 116 -none-
+079 117 -none-
+080 120 -none-
+081 121 -none-
+082 122 -none-
+083 123 -none-
+084 124 -none-
+085 125 -none-
+086 126 -none-
+087 127 -none-
+088 130 -none-
+089 131 -none-
+090 132 -none-
+091 133 -none-
+092 134 -none-
+093 135 -none-
+094 136 -none-
+095 137 -none-
+096 140 -none-
+097 141 -none-
+098 142 -none-
+099 143 -none-
+100 144 -none-
+101 145 -none-
+102 146 -none-
+103 147 -none-
+104 150 -none-
+105 151 -none-
+106 152 -none-
+107 153 -none-
+108 154 -none-
+109 155 -none-
+110 156 -none-
+111 157 -none-
+112 160 -none-
+113 161 -none-
+114 162 -none-
+115 163 -none-
+116 164 -none-
+117 165 -none-
+118 166 -none-
+119 167 -none-
+120 170 -none-
+121 171 -none-
+122 172 -none-
+123 173 -none-
+124 174 -none-
+125 175 -none-
+126 176 -none-
+127 177 -none-
+128 200 -none-
+129 201 -none-
+130 202 -none-
+131 203 -none-
+132 204 -none-
+133 205 -none-
+134 206 -none-
+135 207 -none-
+136 210 -none-
+137 211 -none-
+138 212 -none-
+139 213 -none-
+140 214 -none-
+141 215 -none-
+142 216 -none-
+143 217 -none-
+144 220 -none-
+145 221 -none-
+146 222 -none-
+147 223 -none-
+148 224 -none-
+149 225 -none-
+150 226 -none-
+151 227 -none-
+152 230 -none-
+153 231 -none-
+154 232 -none-
+155 233 -none-
+156 234 -none-
+157 235 -none-
+158 236 -none-
+159 237 -none-
+160 240 -none-
+161 241 -none-
+162 242 -none-
+163 243 -none-
+164 244 -none-
+165 245 -none-
+166 246 -none-
+167 247 -none-
+168 250 -none-
+169 251 -none-
+170 252 -none-
+171 253 -none-
+172 254 -none-
+173 255 -none-
+174 256 -none-
+175 257 -none-
+176 260 -none-
+177 261 -none-
+178 262 -none-
+179 263 -none-
+180 264 -none-
+181 265 -none-
+182 266 -none-
+183 267 -none-
+184 270 -none-
+185 271 -none-
+186 272 -none-
+187 273 -none-
+188 274 -none-
+189 275 -none-
+190 276 -none-
+191 277 -none-
+192 300 -none-
+193 301 -none-
+194 302 -none-
+195 303 -none-
+196 304 -none-
+197 305 -none-
+198 306 -none-
+199 307 -none-
+200 310 -none-
+201 311 -none-
+202 312 -none-
+203 313 -none-
+204 314 -none-
+205 315 -none-
+206 316 -none-
+207 317 -none-
+208 320 -none-
+209 321 -none-
+210 322 -none-
+211 323 -none-
+212 324 -none-
+213 325 -none-
+214 326 -none-
+215 327 -none-
+216 330 -none-
+217 331 -none-
+218 332 -none-
+219 333 -none-
+220 334 -none-
+221 335 -none-
+222 336 -none-
+223 337 -none-
+224 340 -none-
+225 341 -none-
+226 342 -none-
+227 343 -none-
+228 344 -none-
+229 345 -none-
+230 346 -none-
+231 347 -none-
+232 350 -none-
+233 351 -none-
+234 352 -none-
+235 353 -none-
+236 354 -none-
+237 355 -none-
+238 356 -none-
+239 357 -none-
+240 360 -none-
+241 361 -none-
+242 362 -none-
+243 363 -none-
+244 364 -none-
+245 365 -none-
+246 366 -none-
+247 367 -none-
+248 370 -none-
+249 371 -none-
+250 372 -none-
+251 373 -none-
+252 374 -none-
+253 375 -none-
+254 376 -none-
+255 377 -none-
diff --git a/prg2lout.c b/prg2lout.c
index b45fad2..44fddd6 100644
--- a/prg2lout.c
+++ b/prg2lout.c
@@ -17,6 +17,8 @@
/* Ruby by Michael Piotrowski */
/* Haskell by Thorsten Seitz (Nov 2002), mods by Gabor Greif */
/* RSL by Darren Bane (February 2003) */
+/* JavaScript by Mark Summerfield (Nov 2010) */
+/* Tcl by Mark Summerfield (Nov 2010) */
/* */
/* This program is free software; you can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
@@ -238,7 +240,7 @@ unsigned char Letter_Digit_Quotes[] =
unsigned char HaskellOpCharacters[] = "!#$%&*+./<=>?^|:-~";
-unsigned char NonpareilOperatorPunct[] = "@$%^&*=+|;<>/?`";
+unsigned char NonpareilOperatorPunct[] = "@$%^&*=+|<>/?`";
unsigned char Ruby_Methodname[] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789?!=" ;
@@ -280,7 +282,7 @@ U "~", U "'", U "@", U "?", U ".", U "`"
#define SepNonpareilOperatorPunct \
U "@", U "$", U "%", U "^", U "&", U "*", U "=", U "+", U "|", \
-U ";", U "<", U ">", U "/", U "?", U "`"
+U "<", U ">", U "/", U "?", U "`"
#define HaskellOpChars \
U "!", U "#", U "$", U "%", U "&", U "*", U "+", U ".", U "/", \
@@ -3084,7 +3086,7 @@ LANGUAGE NonpareilLanguage = {
NO_MATCH_ERROR,
{
&CStringToken, &CCharacterToken, &IdentifierToken, &NumberToken,
- &NonpareilCommentToken, &PythonCommentEscapeToken,
+ &CCommentToken, &CPPCommentToken, &PythonCommentEscapeToken,
&MinusToken,
&LeftBraceToken,
&RightBraceToken,
@@ -3102,17 +3104,22 @@ LANGUAGE NonpareilLanguage = {
&NonpareilDotDotToken,
&DotDotDotToken,
&NonpareilOperatorToken,
+ &SemicolonToken
},
{
- "abstract", "as", "builtin", "case", "class", "coerce", "else",
- "elsif", "end", "enum", "extend", "extension", "filter", "fun",
- "if", "import", "infix", "inherit", "introduce", "invariant",
- "is", "meet", "module", "noncreation", "operators", "predefined",
- "prefix", "prefun", "private", "postfix", "rename", "require",
- "system", "then", "typeobj", "upto", "when", "yield",
+ "abstract", "break", "builtin", "case",
+ "class", "coerce", "cometo", "continue", "default",
+ "do", "else", "enum", "extension",
+ "filter", "for", "fun", "goto",
+ "if", "import", "include", "infix",
+ "inherit", "is", "meet",
+ "methods", "module", "operator", "postfix",
+ "predefined", "prefix", "prefun", "private",
+ "renames", "return", "self", "switch",
+ "typedef", "typeobj", "upto", "while",
/* not keywords, but conventionally set like them */
- "false", "true", "self", "and", "or", "not", "div", "mod"
+ "false", "true",
}
};
@@ -3380,6 +3387,91 @@ LANGUAGE PodLanguage = {
{ NULL },
};
+/*****************************************************************************/
+/* */
+/* JavaScript */
+/* */
+/* Based on ECMA-262 5th Edition December 2009 */
+/* */
+/*****************************************************************************/
+
+LANGUAGE JavaScriptLanguage = {
+ { "JavaScript", "javascript" },
+ "javascript", "@JavaScript",
+ NO_MATCH_ERROR,
+ {
+ &CStringToken, /* "..." strings */
+ &PythonSnglStringToken, /* '...' strings */
+ &IdentifierToken, &MinusToken,
+ &NumberToken, &CCommentToken, &CPPCommentToken,
+ &CPPCommentEscapeToken, &AmpersandToken,
+ &ExclamationToken, &PercentToken, &HatToken, &SlashToken,
+ &BackSlashToken, &LeftParenToken, &RightParenToken, &LeftBraceToken,
+ &RightBraceToken, &BarToken, &LeftBracketToken, &RightBracketToken,
+ &SemicolonToken, &ColonToken, &CommaToken, &DotToken, &DollarToken,
+ &PythonBitLeftShiftToken, &PythonBitRightShiftToken,
+ &PlusToken, &EqualToken, &LessToken, &GreaterToken, &LessEqualToken,
+ &GreaterEqualToken, &CNotEqualToken, &QuestionToken,
+ },
+
+ /* This includes Future Reserved Words */
+ {"break", "case", "catch", "class", "const", "continue", "debugger", "default",
+ "delete", "do", "else", "enum", "export", "extends", "finally", "for",
+ "function", "if", "implements", "import", "in", "instanceof", "interface",
+ "let", "new", "package", "private", "protected", "public", "return", "static",
+ "super", "switch", "this", "throw", "try", "typeof", "var", "void", "while",
+ "with", "yield",
+ }
+};
+
+
+
+/*****************************************************************************/
+/* */
+/* Tcl */
+/* */
+/*****************************************************************************/
+
+LANGUAGE TclLanguage = {
+ { "Tcl", "tcl" },
+ "tcl", "@Tcl",
+ NO_MATCH_ERROR,
+ {
+ &CStringToken, /* "..." strings */
+ &PythonSnglStringToken, /* '...' strings */
+ &IdentifierToken, &MinusToken,
+ &NumberToken, &PythonCommentToken, &PythonCommentEscapeToken,
+ &ExclamationToken, &PercentToken, &HatToken, &AmpersandToken,
+ &SlashToken, &BackSlashToken, &LeftParenToken, &RightParenToken,
+ &LeftBraceToken, &RightBraceToken,
+ &BarToken, &CircumToken, &LeftBracketToken, &RightBracketToken,
+ &DollarToken, &CommaToken,
+ &PlusToken, &EqualToken, &LessToken, &GreaterToken, &LessEqualToken,
+ &GreaterEqualToken, &CNotEqualToken, &QuestionToken, &ColonToken,
+ &DotToken,
+ },
+
+ /* Tcl has no reserved words, so we'll colour the same ones vim does */
+ {"after", "append", "apply", "array", "auto_execok", "auto_import",
+ "auto_load", "auto_mkindex", "auto_mkindex_old", "auto_qualify",
+ "auto_reset", "bgerror", "binary", "catch", "cd", "chan", "clock",
+ "close", "concat", "coroutine", "dde", "dict", "encoding", "eof",
+ "error", "eval", "exec", "exit", "expr", "fblocked", "fconfigure",
+ "fcopy", "file", "fileevent", "filename", "flush", "format", "gets",
+ "glob", "global", "history", "incr", "info", "interp", "join",
+ "lappend", "lassign", "lindex", "linsert", "list", "llength", "load",
+ "lrange", "lrepeat", "lreplace", "lreverse", "lsearch", "lset", "lsort",
+ "memory", "my", "namespace", "oo::copy", "oo::define", "oo::objdefine",
+ "open", "package", "parray", "pid", "proc", "puts", "pwd", "read",
+ "regexp", "registry", "regsub", "rename", "return", "scan", "seek",
+ "self", "set", "socket", "source", "split", "string", "subst",
+ "tailcall", "tcl_endOfWord", "tcl_findLibrary", "tcl_startOfNextWord",
+ "tcl_startOfPreviousWord", "tcl_wordBreakAfter", "tcl_wordBreakBefore",
+ "tell", "throw", "time", "trace", "unknown", "unload", "unset",
+ "update", "uplevel", "upvar", "variable", "vwait", "yield",}
+};
+
+
/*****************************************************************************/
/* */
@@ -3394,12 +3486,14 @@ LANGUAGE *languages[] = {
& EiffelLanguage,
& HaskellLanguage,
& JavaLanguage,
+ & JavaScriptLanguage,
& NonpareilLanguage,
& PerlLanguage,
& PodLanguage,
& PythonLanguage,
& RSLLanguage,
& RubyLanguage,
+ & TclLanguage,
NO_LANGUAGE
};
diff --git a/software/software/README b/software/software/README
new file mode 100644
index 0000000..b2dee3a
--- /dev/null
+++ b/software/software/README
@@ -0,0 +1,16 @@
+
+Lout-related software form elsewhere
+====================================
+
+This directory contains information about software related to
+Lout but not distributed with Lout. For various practical
+reasons, such as size, licenses, version control, etc., it was
+considered better not to bundle this with Lout itself. This
+directory is maintained by Jeff Kingston, but he exercises no
+editorial control over it beyond checking that the software
+advertised in it appears to have some connection with Lout. In
+particular, there is no guarantee that the stuff exists, works,
+is compatible, is supported by its author, etc. Use at own risk.
+
+Jeff Kingston
+12 April 1995
diff --git a/software/software/lout.barcodes b/software/software/lout.barcodes
new file mode 100644
index 0000000..66133c1
--- /dev/null
+++ b/software/software/lout.barcodes
@@ -0,0 +1,28 @@
+I've developed a little Lout package that will enable you to generate
+barcodes from lout.3.04 (or later).
+
+Usage is very simple. Add the following line to the include portion of
+your lout file
+
+ @SysInclude { barcodes }
+
+and every time you wish to use the barcode font use the following
+syntax
+
+ {BarCode Base} @Font { object }
+
+
+The font is a 3 of 9 barcode font developed by Willem van Schaik.
+
+The package is available as lout.barcodes.1.0.tar.gz and can be found
+with the rest of the Lout distribution at
+
+ ftp://ftp.cs.su.oz.au/jeff/
+
+Regards
+Peter
+----------
+Peter Samuel peter@uniq.com.au
+Technical Consultant or at present:
+Uniq Professional Services Peter.Samuel@nms.otc.com.au
+Phone: +61 2 287 4647 Fax: +61 2 287 5754
diff --git a/software/software/lout.eiffel b/software/software/lout.eiffel
new file mode 100644
index 0000000..5247607
--- /dev/null
+++ b/software/software/lout.eiffel
@@ -0,0 +1,8 @@
+LOUT.EIFFEL - EIFFEL PROGRAM PRINTING IN LOUT DOCUMENTS (VERSION 1.1)
+
+The package known as lout.eiffel has now been folded into the main
+distribution. If you have Version 3.18 of Lout you can already
+format Eiffel.
+
+Jeff Kingston
+26 February 2000
diff --git a/software/software/lout.latin2 b/software/software/lout.latin2
new file mode 100644
index 0000000..29fa82d
--- /dev/null
+++ b/software/software/lout.latin2
@@ -0,0 +1,3 @@
+LOUT.LATIN2 - LATIN-2 LANGUAGE FORMATTING IN LOUT DOCUMENTS (VERSION 2.0)
+
+This software is now included with the main Lout distribution.
diff --git a/software/software/lout.russian b/software/software/lout.russian
new file mode 100644
index 0000000..bc4be6f
--- /dev/null
+++ b/software/software/lout.russian
@@ -0,0 +1,5 @@
+LOUT.RUSSIAN - RUSSIAN LANGUAGE FORMATTING IN LOUT DOCUMENTS
+
+This software is now included in the main Lout distribution,
+except that there is a problem with the fonts, which are
+accordingly not being distributed.
diff --git a/software/software/lout.teq b/software/software/lout.teq
new file mode 100644
index 0000000..b9f53c6
--- /dev/null
+++ b/software/software/lout.teq
@@ -0,0 +1,40 @@
+LOUT.TEQ - TEX MATHEMATICS IN LOUT DOCUMENTS (VERSION 2.0)
+
+Jeffrey H. Kingston
+jeff@cs.su.oz.au
+
+This software allows you to produce mathematics using the TeX
+mathematical fonts, which are considered to produce better-looking
+mathematics than the Adobe Systems Symbol font used by standard Lout.
+
+When installed, the only change you have to make is to replace the
+@SysInclude { eq } at the top of the document by @SysInclude { teq }.
+Everything else is automatic. You do not have to have TeX on your
+system for this to work. The cost is an extra 252 KB in the PostScript
+output file (because the TeX fonts have to be included in it).
+
+Lout.teq is distributed as follows:
+
+ ftp://ftp.cs.su.oz.au/jeff/lout.teq.2.0.tar.gz
+
+In other words, in a gzipped tar file called "lout.teq.2.0.tar.gz"
+in the "jeff" subdirectory of the home directory of "ftp ftp.cs.su.oz.au"
+with login name "ftp" or "anonymous" using any non-empty password.
+The distribution contains
+
+ * License information (non-commercial only owing to license
+ restrictions on the fonts used)
+
+ * Five TeX mathematical font metrics and encoding vector files
+
+ * The teq and teq.lpg source files
+
+ * A makefile and installation instructions (very easy)
+
+User documentation is contained in the Lout User's Guide distributed
+with Lout itself (Section 7.8).
+
+Lout.teq was designed and implemented by Jeffrey H. Kingston
+(jeff@cs.su.oz.au) of the Basser Department of Computer Science at the
+University of Sydney. The fonts were converted to PostScript from
+D. E. Knuth's METAFONT by Basil Malyshev.
diff --git a/software/software/lout.tib b/software/software/lout.tib
new file mode 100644
index 0000000..a99d0f2
--- /dev/null
+++ b/software/software/lout.tib
@@ -0,0 +1,26 @@
+ LoutTib v1.0 Alpha
+ now available
+
+
+LoutTib is a tool to typeset Tibetan with Lout (batch) document
+formatter. This is an *ALPHA* release (it is only a month old). I
+wrote it as I need Tibetan excerpts in my paper. I find it useful, may
+be you'll find it useful too.
+
+The LoutTib distribution contains
+
+ o Type1 Tibetan font (modified version of Tibetan-ModernA by
+ Christopher Fynn)
+
+ o Transliteration utility called `louttib', that translate
+ romanized Tibetan into glyph codes.
+
+ o Supporting Lout code
+
+
+You can get LoutTib (gzipped tar archive) and preformatted PostScript
+documentation (A4, Tibetan font included) from
+
+ ftp://ftp.ptc.spbu.ru/pub/tibet/software/typeset/louttib-1.0alpha.tgz
+ ftp://ftp.ptc.spbu.ru/pub/tibet/software/typeset/louttib-doc.ps.gz
+
diff --git a/whatsnew b/whatsnew
index ce4cf23..0496afe 100644
--- a/whatsnew
+++ b/whatsnew
@@ -568,4 +568,40 @@ Changes and new features introduced in Version 3.39 [September 2010]
it but decided that there was too little change going on
to make it worth my while, at the moment anyway.
+Changes and new features introduced in Version 3.40 [June 2013]
+
+ Bug fixes:
+ MAX_STACK in z06.c increased (again) to 250.
+ Rare crash at "env = SetEnv(res, env);" given truly horrible patch.
+ @Pie totalweight default was not inherited from @PieSetup; fixed now.
+ @DefinitionTitleFormat, @ClaimTitleFormat, @PropositionTitleFormat,
+ @LemmaTitleFormat, @CorollaryTitleFormat, @ExampleTitleFormat fixed.
+ Problem with eogonek in titles (Kamil Rytarowski, Uwe) fixed.
+ JavaScript and Tcl languages added to prg2lout.c (Mark Summerfield).
+ @Place symbol now available when setting setup file options.
+ New version of @Graph with @GraphSetup symbol in setup file. Should
+ be 100% backward compatible, if not use @SysInclude { old_graph }.
+ New ISOB4, ISOB5, JISB4, and JISB5 paper sizes. The old B4 and B5
+ sizes are still available unchanged, though now deprecated.
+ New @Diag options: outlinecolour for nodes, pathcolour for links.
+ I've also lightly revised the User's Guide, to remove some bad
+ line and page breaks that had crept into the A4 version.
+
+ Things not done
+
+ Still no move to a version control system. It just isn't worth my
+ time. If anyone wants to take it on, you have my blessing, but
+ be warned that the copyright of hyphenation files is a swamp.
+
+ Forematter (@Preface etc.) in books. I have a suggestion from
+ Joerg Jung about moving the @Abbreviations section into the
+ forematter, and another from Mark Summerfield for a generic
+ scheme (@ForeMatterA ... @ForeMatterE with user-selectable
+ titles). Rather than do that I would prefer one @ForeMatter
+ symbol but allow a sequence of invocations of it, like we
+ have now for @Chapter and @Appendix. There is already an
+ @AfterTitlePage symbol that can be used as a workaround. I'm
+ a bit at a loss so I've decided to do nothing for now. However
+ this could be looked at again. Some discussion might help.
+
Jeff Kingston
diff --git a/z06.c b/z06.c
index 01b35eb..d49cf30 100644
--- a/z06.c
+++ b/z06.c
@@ -38,7 +38,7 @@
static OBJECT cross_name; /* name of the cr database */
-#define MAX_STACK 200 /* size of parser stacks */
+#define MAX_STACK 250 /* size of parser stacks */
static OBJECT obj_stack[MAX_STACK]; /* stack of objects */
static int otop; /* top of obj_stack */
static OBJECT tok_stack[MAX_STACK]; /* stack of tokens */
@@ -1233,7 +1233,8 @@ BOOLEAN defs_allowed, BOOLEAN transfer_allowed)
env = Parse(&t, encl, FALSE, FALSE);
t = LexGetToken();
res = Parse(&t, encl, FALSE, FALSE);
- env = SetEnv(res, env);
+ /* env = SetEnv(res, env); fails sometimes, below is yukky patch JK */
+ env = SetEnv(res, type(env) == ENV ? env : NULL);
ShiftObj(env, PREV_OBJ);
t = LexGetToken();
EnvReadInsert(file_num(fpos(t)), offset, env);
diff --git a/z08.c b/z08.c
index b07bee4..fabbfff 100644
--- a/z08.c
+++ b/z08.c
@@ -769,6 +769,7 @@ OBJECT *enclose, BOOLEAN fcr)
ready_galls(hd) = nilobj;
must_expand(hd) = TRUE;
sized(hd) = FALSE;
+ seen_nojoin(hd) = FALSE;
ReplaceNode(hd, x);
Link(hd, x);
AttachEnv(env, x);
@@ -778,6 +779,9 @@ OBJECT *enclose, BOOLEAN fcr)
x = hd;
threaded(x) = bthr[COLM] != nilobj || fthr[COLM] != nilobj;
ReplaceWithSplit(x, bthr, fthr);
+ debug3(DGA, D, " manifesting %sgalley %s at %s",
+ force_gall(hd) ? "force " : "", SymName(actual(hd)),
+ EchoFilePos(&fpos(hd)));
}
else if(
*target == sym ? (*target = nilobj, TRUE) :
diff --git a/z12.c b/z12.c
index d78fd96..699c5f7 100644
--- a/z12.c
+++ b/z12.c
@@ -445,9 +445,14 @@ OBJECT MinSize(OBJECT x, int dim, OBJECT *extras)
{
/* galley is following, make UNATTACHED */
New(z, UNATTACHED); Link(z, x);
+ actual(z) = nilobj;
+ non_blocking(z) = TRUE;
+ blocked(z) = FALSE;
pinpoint(z) = y;
Link(*extras, z);
debug1(DCR, DDD, " MinSize: %s", EchoObject(z));
+ debug2(DGA, D, " MinSize UNATTACHED %s at %s",
+ SymName(actual(x)), EchoFilePos(&fpos(x)));
}
x = y; /* now sizing y, not x */
back(x, COLM) = fwd(x, COLM) = 0; /* fix non-zero size @Null bug!! */
diff --git a/z17.c b/z17.c
index e63d741..10dfc2e 100644
--- a/z17.c
+++ b/z17.c
@@ -150,7 +150,7 @@ int GetWidth(OBJECT x, STYLE *style)
case CH_UNIT_DG:
Error(17, 17, "'%c' unit not allowed in width (5c substituted)",
- WARN, &fpos(x), *--str);
+ WARN, &fpos(x), *str);
res = 5 * CM;
break;
diff --git a/z18.c b/z18.c
index c357113..cc5fcfb 100644
--- a/z18.c
+++ b/z18.c
@@ -101,11 +101,16 @@ void TransferInit(OBJECT InitEnv)
/* construct destination for root galley */
New(up_hd, HEAD);
+ FposCopy(fpos(up_hd), *no_fpos);
force_gall(up_hd) = FALSE;
actual(up_hd) = enclose_obj(up_hd) = limiter(up_hd) = nilobj;
ClearHeaders(up_hd);
opt_components(up_hd) = opt_constraints(up_hd) = nilobj;
gall_dir(up_hd) = ROWM;
+ ready_galls(up_hd) = nilobj;
+ seen_nojoin(up_hd) = must_expand(up_hd) = sized(up_hd) = FALSE;
+ foll_or_prec(up_hd) = GALL_FOLL;
+ whereto(up_hd) = nilobj;
New(dest_index, RECEIVING);
New(dest, CLOSURE); actual(dest) = PrintSym;
actual(dest_index) = dest;
@@ -119,20 +124,23 @@ void TransferInit(OBJECT InitEnv)
/* construct root galley */
New(root_galley, HEAD);
+ FposCopy(fpos(root_galley), *no_fpos);
force_gall(root_galley) = FALSE;
+ actual(root_galley) = nilobj;
enclose_obj(root_galley) = limiter(root_galley) = nilobj;
ClearHeaders(root_galley);
opt_components(root_galley) = opt_constraints(root_galley) = nilobj;
gall_dir(root_galley) = ROWM;
- FposCopy(fpos(root_galley), *no_fpos);
- actual(root_galley) = whereto(root_galley) = nilobj;
ready_galls(root_galley) = nilobj;
must_expand(root_galley) = sized(root_galley) =FALSE;
foll_or_prec(root_galley) = GALL_FOLL;
+ whereto(root_galley) = nilobj;
+ seen_nojoin(root_galley) = FALSE;
New(x, CLOSURE); actual(x) = InputSym;
Link(root_galley, x);
SizeGalley(root_galley, InitEnv, TRUE, FALSE, FALSE, FALSE, &InitialStyle,
&initial_constraint, nilobj, &nothing, &recs, &inners, nilobj);
+ debug1(DGA, D, " TransferInit inners: %s", DebugInnersNames(inners));
assert( recs == nilobj , "TransferInit: recs != nilobj!" );
assert( inners == nilobj , "TransferInit: inners != nilobj!" );
Link(dest_index, root_galley);
@@ -199,6 +207,9 @@ OBJECT TransferBegin(OBJECT x)
/* convert x into an unsized galley called hd */
New(index, UNATTACHED);
+ actual(index) = nilobj;
+ non_blocking(index) = TRUE;
+ blocked(index) = FALSE;
pinpoint(index) = nilobj;
New(hd, HEAD);
FposCopy(fpos(hd), fpos(x));
@@ -208,6 +219,7 @@ OBJECT TransferBegin(OBJECT x)
ready_galls(hd) = nilobj;
must_expand(hd) = TRUE;
sized(hd) = FALSE;
+ seen_nojoin(hd) = FALSE;
Link(index, hd);
Link(hd, x);
AttachEnv(env, x);
@@ -311,21 +323,23 @@ void TransferComponent(OBJECT x)
/* make the component into a galley */
New(hd, HEAD);
+ FposCopy(fpos(hd), fpos(x));
force_gall(hd) = FALSE;
ClearHeaders(hd);
enclose_obj(hd) = limiter(hd) = nilobj;
opt_components(hd) = opt_constraints(hd) = nilobj;
gall_dir(hd) = ROWM;
- FposCopy(fpos(hd), fpos(x));
actual(hd) = whereto(hd) = ready_galls(hd) = nilobj;
- foll_or_prec(hd) = GALL_FOLL;
must_expand(hd) = sized(hd) = FALSE;
+ seen_nojoin(hd) = FALSE;
+ foll_or_prec(hd) = GALL_FOLL;
Link(hd, x);
dest = actual(dest_index);
env = GetEnv(dest);
debug1(DGT, DD, " current env chain: %s", EchoObject(env));
SizeGalley(hd, env, TRUE, threaded(dest), FALSE, TRUE, &save_style(dest),
&constraints[itop], nilobj, &nothing, &recs, &inners, nilobj);
+ debug1(DGA, D, " TransferComponent inners: %s", DebugInnersNames(inners));
if( recs != nilobj ) ExpandRecursives(recs);
debug3(DSA, D, "after SizeGalley, hd width is (%s,%s), constraint was %s",
EchoLength(back(hd, COLM)), EchoLength(fwd(hd, COLM)),
@@ -423,12 +437,13 @@ void TransferEnd(OBJECT x)
gall_dir(hd) = ROWM;
actual(hd) = whereto(hd) = ready_galls(hd) = nilobj;
foll_or_prec(hd) = GALL_FOLL;
- must_expand(hd) = sized(hd) = FALSE;
+ seen_nojoin(hd) = must_expand(hd) = sized(hd) = FALSE;
Link(hd, x); dest = actual(dest_index); env = GetEnv(dest);
debug1(DGT, DD, " current env chain: %s", EchoObject(env));
SizeGalley(hd, env, external_ver(dest), threaded(dest), FALSE, TRUE,
&save_style(dest), &constraints[itop], nilobj, &nothing, &recs, &inners,
nilobj);
+ debug1(DGA, D, " TransferEnd inners: %s", DebugInnersNames(inners));
if( recs != nilobj ) ExpandRecursives(recs);
debug3(DSA, D, "after SizeGalley, hd width is (%s,%s), constraint was %s",
EchoLength(back(hd, COLM)), EchoLength(fwd(hd, COLM)),
diff --git a/z19.c b/z19.c
index 2acccd8..8cb20e4 100644
--- a/z19.c
+++ b/z19.c
@@ -99,6 +99,9 @@ void DetachGalley(OBJECT hd)
Parent(prnt, Up(hd));
assert( Up(prnt) != prnt, "DetachGalley: parent!" );
New(index, UNATTACHED);
+ actual(index) = nilobj;
+ non_blocking(index) = TRUE;
+ blocked(index) = FALSE;
pinpoint(index) = nilobj;
MoveLink(Up(hd), index, PARENT);
Link(NextDown(Up(prnt)), index);
@@ -124,7 +127,11 @@ void DetachGalley(OBJECT hd)
OBJECT SearchGalley(OBJECT start, OBJECT sym, BOOLEAN forwards,
BOOLEAN subgalleys, BOOLEAN closures, BOOLEAN input)
{ OBJECT y, res, z, zlink, link;
- debug5(DGA, DD, "[ SearchGalley(start, %s, %s, %s, %s, %s)", SymName(sym),
+ ifdebug(DGA, D, Parent(y, start));
+ debug6(DGA, D, "[ SearchGalley(%s, %s, %s, %s, %s, %s)",
+ type(start) == HEAD ? (char *) SymName(actual(start)) :
+ type(y) == HEAD ? (char *) SymName(actual(y)) : "link",
+ SymName(sym),
forwards ? "fwd" : "back", subgalleys ? "subgalleys" : "nosubgalleys",
closures ? "closures" : "noclosures", input ? "input" : "noinput");
assert( type(start) == LINK || type(start) == HEAD, "SearchGalley: start!" );
@@ -138,7 +145,7 @@ BOOLEAN subgalleys, BOOLEAN closures, BOOLEAN input)
case UNATTACHED:
case RECEIVING:
- debug1(DGA, DD, " examining %s", EchoIndex(y));
+ debug1(DGA, D, " examining %s", EchoIndex(y));
if( subgalleys )
for( zlink = Down(y); zlink!=y && res==nilobj; zlink=NextDown(zlink) )
{ Child(z, zlink);
@@ -152,7 +159,7 @@ BOOLEAN subgalleys, BOOLEAN closures, BOOLEAN input)
case RECEPTIVE:
- debug1(DGA, DD, " examining %s", EchoIndex(y));
+ debug1(DGA, D, " examining %s", EchoIndex(y));
if( closures && type(actual(y)) == CLOSURE
&& SearchUses(actual(actual(y)), sym) ) res = y;
else if( input && actual(actual(y)) == InputSym ) res = y;
@@ -166,7 +173,7 @@ BOOLEAN subgalleys, BOOLEAN closures, BOOLEAN input)
}
link = forwards ? NextDown(link) : PrevDown(link);
}
- debug1(DGA, DD, "] SearchGalley returning %s", EchoIndex(res));
+ debug1(DGA, D, "] SearchGalley returning %s", EchoIndex(res));
return res;
} /* end SearchGalley */
@@ -322,16 +329,17 @@ int AttachGalley(OBJECT hd, OBJECT *inners, OBJECT *suspend_pt)
EnterErrorBlock(FALSE);
New(target_galley, HEAD);
force_gall(target_galley) = FALSE;
+ actual(target_galley) = actual(target);
enclose_obj(target_galley) = limiter(target_galley) = nilobj;
ClearHeaders(target_galley);
opt_components(target_galley) = opt_constraints(target_galley) = nilobj;
gall_dir(target_galley) = external_hor(target) ? COLM : ROWM;
FposCopy(fpos(target_galley), fpos(target));
- actual(target_galley) = actual(target);
whereto(target_galley) = ready_galls(target_galley) = nilobj;
foll_or_prec(target_galley) = GALL_FOLL;
must_expand(target_galley) = FALSE;
sized(target_galley) = FALSE;
+ seen_nojoin(target_galley) = FALSE;
/* get perpendicular constraint (none if horizontal galley) */
if( dim == ROWM )
@@ -364,7 +372,7 @@ int AttachGalley(OBJECT hd, OBJECT *inners, OBJECT *suspend_pt)
trigger_externs(target_index), &save_style(target),
&c, whereto(hd), &dest_index, &recs, &tg_inners,
enclose_obj(hd) != nilobj ? CopyObject(enclose_obj(hd), no_fpos):nilobj);
- debug1(DGA, DD, " SizeGalley tg_inners: %s", DebugInnersNames(tg_inners));
+ debug1(DGA, D, " AttachGalley tg_inners: %s", DebugInnersNames(tg_inners));
if( recs != nilobj ) ExpandRecursives(recs);
dest = actual(dest_index);
if( underline(dest) == UNDER_UNDEF ) underline(dest) = UNDER_OFF;
@@ -400,7 +408,7 @@ int AttachGalley(OBJECT hd, OBJECT *inners, OBJECT *suspend_pt)
SizeGalley(hd, env, TRUE, dim == ROWM ? threaded(dest) : FALSE,
non_blocking(target_index), TRUE, &save_style(dest), &c, nilobj,
&n1, &recs, &hd_inners, nilobj);
- debug1(DGA,DD," SizeGalley hd_inners: %s", DebugInnersNames(hd_inners));
+ debug1(DGA, D," AttachGalley hd_inners: %s",DebugInnersNames(hd_inners));
if( recs != nilobj ) ExpandRecursives(recs);
if( need_precedes ) /* need an ordering constraint */
{ OBJECT index1, index2;
@@ -670,7 +678,7 @@ int AttachGalley(OBJECT hd, OBJECT *inners, OBJECT *suspend_pt)
debug3(DGA, D, " reject: vsize %s,%s in %s; y=",
EchoLength(back(y, dim)), EchoLength(fwd(y, dim)),
EchoConstraint(&c));
- ifdebug(DGA, D, DebugObject(y));
+ ifdebug(DGA, DD, DebugObject(y));
if( size(y, dim) > 0 )
{ sprintf(num1, "%.1fc", (float) size(y, dim) / CM);
sprintf(num2, "%.1fc", (float) bfc(c) / CM);
@@ -725,7 +733,7 @@ int AttachGalley(OBJECT hd, OBJECT *inners, OBJECT *suspend_pt)
debug3(DGA, D, " reject: vsize %s,%s in %s; y=",
EchoLength(perp_back), EchoLength(perp_fwd),
EchoConstraint(&c));
- ifdebug(DGA, D, DebugObject(y));
+ ifdebug(DGA, DD, DebugObject(y));
goto REJECT;
}
@@ -748,8 +756,8 @@ int AttachGalley(OBJECT hd, OBJECT *inners, OBJECT *suspend_pt)
if( !FitsConstraint(back(z, dim), fwd(z, dim), c) )
{ BOOLEAN scaled;
- debug2(DGA, D, " why = %d %s", (int) why, EchoObject(why));
- debug2(DGA, D, " limiter = %d %s", (int) limiter(hd),
+ debug2(DGA, DD, " why = %d %s", (int) why, EchoObject(why));
+ debug2(DGA, DD, " limiter = %d %s", (int) limiter(hd),
EchoObject(limiter(hd)));
/* if forcing galley doesn't fit, try scaling z */
@@ -781,7 +789,7 @@ int AttachGalley(OBJECT hd, OBJECT *inners, OBJECT *suspend_pt)
debug3(DGA, D, " reject: size was %s,%s in %s; y =",
EchoLength(back(z, dim)), EchoLength(fwd(z, dim)),
EchoConstraint(&c));
- ifdebug(DGA, D, DebugObject(y));
+ ifdebug(DGA, DD, DebugObject(y));
if( size(z, dim) > 0 )
{ sprintf(num1, "%.1fc", (float) size(z, dim) / CM);
sprintf(num2, "%.1fc", (float) bfc(c) / CM);
@@ -796,7 +804,7 @@ int AttachGalley(OBJECT hd, OBJECT *inners, OBJECT *suspend_pt)
}
}
limiter(hd) = why;
- debug3(DGA, D, " set limiter(%s) = %d %s", SymName(actual(hd)),
+ debug3(DGA, DD, " set limiter(%s) = %d %s", SymName(actual(hd)),
(int) limiter(hd), EchoObject(limiter(hd)));
/* now check perpendicular space for target_galley in target */
@@ -836,7 +844,7 @@ int AttachGalley(OBJECT hd, OBJECT *inners, OBJECT *suspend_pt)
debug3(DGA, D, " reject: size was %s,%s in %s; y =",
EchoLength(back(z, 1-dim)), EchoLength(fwd(z, 1-dim)),
EchoConstraint(&c));
- ifdebug(DGA, D, DebugObject(y));
+ ifdebug(DGA, DD, DebugObject(y));
goto REJECT;
}
}
@@ -971,8 +979,12 @@ int AttachGalley(OBJECT hd, OBJECT *inners, OBJECT *suspend_pt)
ACCEPT:
/* accept first component; now committed to the attach */
- debug3(DGA, D, " accept %s %s %s", Image(type(y)), EchoObject(y),
+ debug2(DGA, D, " accept first component %s %s", Image(type(y)),
EchoFilePos(&fpos(y)));
+ /* ***
+ debug3(DGA, DD, " accept %s %s %s", Image(type(y)), EchoObject(y),
+ EchoFilePos(&fpos(y)));
+ *** */
LeaveErrorBlock(TRUE);
debug0(DYY, D, "] LeaveErrorBlock(TRUE) (ACCEPT)");
@@ -1019,7 +1031,8 @@ int AttachGalley(OBJECT hd, OBJECT *inners, OBJECT *suspend_pt)
DeleteNode(hd_inners);
*inners = tg_inners;
}
- debug0(DGA, D, "] AttachGalley returning ATTACH_ACCEPT");
+ debug1(DGA, D, "] AttachGalley returning ATTACH_ACCEPT (inners %s)",
+ DebugInnersNames(*inners));
ifdebug(DGA, D,
if( dim == COLM && !external_hor(dest) )
{ OBJECT z;
diff --git a/z20.c b/z20.c
index 8786ce7..d6f3a84 100644
--- a/z20.c
+++ b/z20.c
@@ -51,6 +51,7 @@ FULL_CHAR *DebugInnersNames(OBJECT inners)
case PRECEDES:
+ case GALL_FOLL_OR_PREC:
case GALL_PREC:
case DEAD:
@@ -907,6 +908,9 @@ void FlushGalley(OBJECT hd)
FATAL, &fpos(y), FileName(eg_fnum(eg)));
assert( type(val) == CLOSURE, "AttachG: db CLOSURE!" );
New(index2, UNATTACHED);
+ actual(index2) = nilobj;
+ non_blocking(index2) = TRUE;
+ blocked(index2) = FALSE;
pinpoint(index2) = nilobj;
New(hd2, HEAD);
FposCopy(fpos(hd2), fpos(val));
@@ -914,9 +918,10 @@ void FlushGalley(OBJECT hd)
limiter(hd2) = nilobj;
opt_components(hd2) = opt_constraints(hd2) = nilobj;
gall_dir(hd2) = horiz_galley(actual(val));
- sized(hd2) = FALSE;
ready_galls(hd2) = nilobj;
+ sized(hd2) = FALSE;
must_expand(hd2) = TRUE;
+ seen_nojoin(hd2) = FALSE;
Link(index2, hd2);
Link(hd2, val);
SetTarget(hd2);
diff --git a/z21.c b/z21.c
index 2f70b8f..eefb665 100644
--- a/z21.c
+++ b/z21.c
@@ -404,6 +404,9 @@ OBJECT *dest_index, OBJECT *recs, OBJECT *inners, OBJECT enclose)
{ if( *inners == nilobj ) New(*inners, ACAT);
Link(*inners, z);
}
+ Child(tmp, Down(z));
+ debug2(DGA, D, "SizeGalley %s%s", actual(tmp) == NULL ? "null" :
+ SymName(actual(tmp)), after_target ? " (after_target)" : "");
break;
diff --git a/z22.c b/z22.c
index 178f31f..cdc6cbb 100644
--- a/z22.c
+++ b/z22.c
@@ -88,6 +88,7 @@ void Interpose(OBJECT z, int typ, OBJECT x, OBJECT y)
void FlushInners(OBJECT inners, OBJECT hd)
{ OBJECT y, z, tmp, dest_index;
+ debug1(DGA, D, "[ FlushInners(%s, -)", DebugInnersNames(inners));
ifdebug(DGF, D,
OBJECT link;
fprintf(stderr, "dgf: [ FlushInners(");
@@ -139,6 +140,7 @@ void FlushInners(OBJECT inners, OBJECT hd)
Parent(dest_index, Up(hd));
if( actual(actual(dest_index)) == PrintSym )
{ DisposeObject(inners);
+ debug0(DGA, D, "] FlushInners returning (PrintSym)");
debug0(DGF, D, "] FlushInners returning (PrintSym)");
return;
}
@@ -147,6 +149,8 @@ void FlushInners(OBJECT inners, OBJECT hd)
while( Down(inners) != inners )
{ Child(y, Down(inners));
DeleteLink(Down(inners));
+ debug2(DGA, D, "FlushInners at %s (remainder %s)", Image(type(y)),
+ DebugInnersNames(inners));
switch( type(y) )
{
@@ -161,8 +165,11 @@ void FlushInners(OBJECT inners, OBJECT hd)
if( Down(y) != y ) /* bug fix (was assert before) */
{ assert( Down(y) != y, "FlushInners: UNATTACHED!");
Child(z, Down(y));
- debug1(DGF,D," possibly calling FlushGalley %s from FlushInners (a)",
+ debug1(DGA,D," possibly calling FlushGalley %s from FlushInners (a)",
SymName(actual(z)));
+ if( whereto(z) != nilobj )
+ debug2(DGA,D," (whereto(z) = %s, uses_extern_target = %s)",
+ SymName(whereto(z)), bool(uses_extern_target(whereto(z))));
if( whereto(z)==nilobj || !uses_extern_target(whereto(z)) ) /* &&& */
FlushGalley(z);
}
@@ -199,6 +206,7 @@ void FlushInners(OBJECT inners, OBJECT hd)
}
}
Dispose(inners);
+ debug0(DGA, D, "] FlushInners returning");
debug0(DGF, D, "] FlushInners returning");
} /* end FlushInners */
@@ -235,11 +243,13 @@ void ExpandRecursives(OBJECT recs)
whereto(hd) = ready_galls(hd) = nilobj;
foll_or_prec(hd) = GALL_FOLL;
sized(hd) = FALSE;
+ seen_nojoin(hd) = FALSE;
tmp = CopyObject(target, &fpos(target)); env = DetachEnv(tmp);
Link(hd, tmp); Link(target_index, hd);
SizeGalley(hd, env, external_ver(target),
gall_dir(hd) == ROWM ? threaded(target) : FALSE, FALSE, FALSE,
&save_style(target), &non_c, nilobj, &n1, &newrecs, &inners, nilobj);
+ debug1(DGA, D, " ExpandRecursives inners: %s", DebugInnersNames(inners));
debug0(DCR, DDD, " as galley:");
ifdebug(DCR, DDD, DebugObject(hd));
debug1(DGS, DD, "[ ExpandRecursives calling Constrained(%s, COLM)",
diff --git a/z37.c b/z37.c
index 914ba5c..85b3ccf 100644
--- a/z37.c
+++ b/z37.c
@@ -1091,7 +1091,7 @@ void FontChange(STYLE *style, OBJECT x)
OBJECT par[3], family, face, fsize, y = nilobj, link, new, old, tmpf;
GAP gp; FULL_LENGTH flen = 0; int num, c; unsigned inc;
struct metrics *newfnt, *oldfnt;
- FULL_CHAR *lig;
+ FULL_CHAR *lig, *old_lig;
int cmptop;
COMPOSITE *oldcmp, *newcmp;
FULL_LENGTH *oldks, *newks; int klen;
@@ -1467,7 +1467,16 @@ void FontChange(STYLE *style, OBJECT x)
if( finfo[font_count].size_table == (struct metrics *) NULL )
Error(37, 53, "run out of memory when changing font or font size",
FATAL, &fpos(x));
- finfo[font_count].lig_table = lig = finfo[font_num(old)].lig_table;
+
+ /* copy lig_table (sharing it is not safe) bug fix JeffK 25/06/13 */
+ lig = (FULL_CHAR *) malloc(2*MAX_CHARS*sizeof(FULL_CHAR));
+ old_lig = finfo[font_num(old)].lig_table;
+ if( lig == (FULL_CHAR *) NULL )
+ Error(37, 54, "run out of memory when changing font or font size",
+ FATAL, &fpos(x));
+ for( i = 0; i < 2*MAX_CHARS; i++ )
+ lig[i] = old_lig[i];
+ finfo[font_count].lig_table = lig;
/* scale old font to new size */
newfnt = finfo[font_num(new)].size_table;
diff --git a/z47.c b/z47.c
index 2ce949f..855f74e 100644
--- a/z47.c
+++ b/z47.c
@@ -48,7 +48,7 @@ static OBJECT tab[TAB_SIZE];
#define hash1(pos, env, fnum) \
{ \
- pos = ( (unsigned int) env + fnum ) % TAB_SIZE; \
+ pos = ( (unsigned long) env + fnum ) % TAB_SIZE; \
}
#define hash2(pos, fnum, offset) \
diff --git a/z50.c b/z50.c
index 3d73c85..22f63a6 100644
--- a/z50.c
+++ b/z50.c
@@ -265,6 +265,7 @@ static void PDF_PrintBetweenPages(FULL_LENGTH h, FULL_LENGTH v,
/* */
/*****************************************************************************/
+/* ***
static void PrintComposite(COMPOSITE *cp, BOOLEAN outline, FILE *fp)
{ debug1(DPF, D, "PrintComposite(cp, %s, fp)", bool(outline));
while( cp->char_code != '\0' )
@@ -275,7 +276,8 @@ static void PrintComposite(COMPOSITE *cp, BOOLEAN outline, FILE *fp)
cp->char_code, outline ? "co" : "c");
cp++;
}
-} /* end PrintComposite */
+} ** end PrintComposite **
+*** */
/*****************************************************************************/